diff --git a/src/generated/resources/.cache/ad795fb8576279849034d802e60366ec43bb396a b/src/generated/resources/.cache/ad795fb8576279849034d802e60366ec43bb396a new file mode 100644 index 00000000..447524d1 --- /dev/null +++ b/src/generated/resources/.cache/ad795fb8576279849034d802e60366ec43bb396a @@ -0,0 +1,38 @@ +// 1.19.2 2023-08-30T12:58:15.3014071 Registrate Provider for tfmg [Recipes, Advancements, Loot tables, Tags (blocks), Tags (items), Tags (fluids), Tags (entity_types), Blockstates, Item models, Lang (en_us/en_ud)] +9ca537517fb8baeff3d4e4137c93aebd6b874c81 assets/tfmg/blockstates/cast_iron_block.json +c7aa764cc11ee837deeed68c9c2d8567ea078f5c assets/tfmg/blockstates/heavy_machinery_casing.json +0f33dc6b2a736164b17f416ce7d127c87bfb6441 assets/tfmg/blockstates/napalm_bomb.json +e6983072149d1a9a2f4d39e4e1feac599ff7413e assets/tfmg/blockstates/steel_block.json +df44115876045e6f863de2f8be6a9166b336a2f1 assets/tfmg/blockstates/steel_casing.json +a7cd711917057f78c673c344fa3d5ed9da99538f assets/tfmg/lang/en_ud.json +f3eb466b0b241c6d1bf5f84b37ad3c2f9d486c4c assets/tfmg/lang/en_us.json +37789d06ec6cfc0312be7b1b66ac1ec6403d4516 assets/tfmg/models/block/cast_iron_block.json +717ee09803cb584062c9717f45475fbd15673cde assets/tfmg/models/block/heavy_machinery_casing.json +b541c0cab9298f1d2578639349755b93f1019621 assets/tfmg/models/block/napalm_bomb.json +0ceb30eaff16a495c9a165ca16c925cbff836755 assets/tfmg/models/block/steel_block.json +465b1fed10d06090e5e8d19457f9fa48fe890bb4 assets/tfmg/models/block/steel_casing.json +ec38882fb9010884823d6d6afa604f8a6512d279 assets/tfmg/models/item/cast_iron_block.json +df4e7fa8f3f60908f58794528a8db60dce7d0135 assets/tfmg/models/item/copper_grenade.json +3fdff9e88db39939ee31968358eb51c060006766 assets/tfmg/models/item/heavy_machinery_casing.json +afac1fce0904a0df4e68d731b897ff1be6c68766 assets/tfmg/models/item/napalm_bomb.json +57bf86df814741f846feb8be4a10afe633f51721 assets/tfmg/models/item/steel_block.json +d34ca92f5288cbb5cecee06f046a072763b2926c assets/tfmg/models/item/steel_casing.json +72da5f91f1992b502e90c8fc84d654e075163eb7 assets/tfmg/models/item/thermite_grenade.json +f189171410564631c6074593da126b8d13fe9f8b assets/tfmg/models/item/zinc_grenade.json +2b45163d462fba0e86bb1ac8fc299509fbe1e58d data/create/tags/blocks/casing.json +2b45163d462fba0e86bb1ac8fc299509fbe1e58d data/create/tags/items/casing.json +c98956ac34e02a8c1c801122486771ef89fb640b data/forge/tags/blocks/storage_blocks.json +7c5615c56bb169570a061f052ebb1f5115760c16 data/forge/tags/blocks/storage_blocks/cast_iron.json +37b1c9c3ae722d8110db48015993ede3e194c0a0 data/forge/tags/blocks/storage_blocks/steel.json +c98956ac34e02a8c1c801122486771ef89fb640b data/forge/tags/items/storage_blocks.json +7c5615c56bb169570a061f052ebb1f5115760c16 data/forge/tags/items/storage_blocks/cast_iron.json +37b1c9c3ae722d8110db48015993ede3e194c0a0 data/forge/tags/items/storage_blocks/steel.json +c98956ac34e02a8c1c801122486771ef89fb640b data/minecraft/tags/blocks/beacon_base_blocks.json +2b45163d462fba0e86bb1ac8fc299509fbe1e58d data/minecraft/tags/blocks/mineable/axe.json +cd26fa5d063cde156d1b1b165bccc033f784c23c data/minecraft/tags/blocks/mineable/pickaxe.json +c98956ac34e02a8c1c801122486771ef89fb640b data/minecraft/tags/blocks/needs_iron_tool.json +60857d034446187e758de87644a80a7bc4d6b150 data/tfmg/loot_tables/blocks/cast_iron_block.json +661cc61f9c13ddf8c6bf06470defa93170e8ee7f data/tfmg/loot_tables/blocks/heavy_machinery_casing.json +7da9b20012e584104331da961756d6c1d02682b5 data/tfmg/loot_tables/blocks/napalm_bomb.json +01298989d0fe79936cdfa1e6cc07fd05f143ae09 data/tfmg/loot_tables/blocks/steel_block.json +62cd229b00eb2c95187d1b7b8e968aa26e54c412 data/tfmg/loot_tables/blocks/steel_casing.json diff --git a/src/generated/resources/assets/tfmg/blockstates/cast_iron_block.json b/src/generated/resources/assets/tfmg/blockstates/cast_iron_block.json new file mode 100644 index 00000000..1d0fa4af --- /dev/null +++ b/src/generated/resources/assets/tfmg/blockstates/cast_iron_block.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "tfmg:block/cast_iron_block" + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/tfmg/blockstates/heavy_machinery_casing.json b/src/generated/resources/assets/tfmg/blockstates/heavy_machinery_casing.json new file mode 100644 index 00000000..d539ef15 --- /dev/null +++ b/src/generated/resources/assets/tfmg/blockstates/heavy_machinery_casing.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "tfmg:block/heavy_machinery_casing" + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/tfmg/blockstates/napalm_bomb.json b/src/generated/resources/assets/tfmg/blockstates/napalm_bomb.json new file mode 100644 index 00000000..f4e6a2fb --- /dev/null +++ b/src/generated/resources/assets/tfmg/blockstates/napalm_bomb.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "tfmg:block/napalm_bomb" + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/tfmg/blockstates/steel_block.json b/src/generated/resources/assets/tfmg/blockstates/steel_block.json new file mode 100644 index 00000000..5894d5d6 --- /dev/null +++ b/src/generated/resources/assets/tfmg/blockstates/steel_block.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "tfmg:block/steel_block" + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/tfmg/blockstates/steel_casing.json b/src/generated/resources/assets/tfmg/blockstates/steel_casing.json new file mode 100644 index 00000000..65f1b899 --- /dev/null +++ b/src/generated/resources/assets/tfmg/blockstates/steel_casing.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "tfmg:block/steel_casing" + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/tfmg/lang/en_ud.json b/src/generated/resources/assets/tfmg/lang/en_ud.json new file mode 100644 index 00000000..3d6cd9ac --- /dev/null +++ b/src/generated/resources/assets/tfmg/lang/en_ud.json @@ -0,0 +1,17 @@ +{ + "block.tfmg.cast_iron_block": "uoɹI ʇsɐƆ ɟo ʞɔoןᗺ", + "block.tfmg.heavy_machinery_casing": "buısɐƆ ʎɹǝuıɥɔɐW ʎʌɐǝH", + "block.tfmg.napalm_bomb": "qɯoᗺ ɯןɐdɐN", + "block.tfmg.steel_block": "ןǝǝʇS ɟo ʞɔoןᗺ", + "block.tfmg.steel_casing": "buısɐƆ ןǝǝʇS", + "entity.tfmg.blue_spark": "ʞɹɐdS ǝnןᗺ", + "entity.tfmg.copper_grenade": "ǝpɐuǝɹ⅁ ɹǝddoƆ", + "entity.tfmg.green_spark": "ʞɹɐdS uǝǝɹ⅁", + "entity.tfmg.napalm_bomb_entity": "ʎʇıʇuƎ qɯoᗺ ɯןɐdɐN", + "entity.tfmg.spark": "ʞɹɐdS", + "entity.tfmg.thermite_grenade": "ǝpɐuǝɹ⅁ ǝʇıɯɹǝɥ⟘", + "entity.tfmg.zin_grenade": "ǝpɐuǝɹ⅁ uıZ", + "item.tfmg.copper_grenade": "ǝpɐuǝɹ⅁ ɹǝddoƆ", + "item.tfmg.thermite_grenade": "ǝpɐuǝɹ⅁ ǝʇıɯɹǝɥ⟘", + "item.tfmg.zinc_grenade": "ǝpɐuǝɹ⅁ ɔuıZ" +} \ No newline at end of file diff --git a/src/generated/resources/assets/tfmg/lang/en_us.json b/src/generated/resources/assets/tfmg/lang/en_us.json new file mode 100644 index 00000000..54907648 --- /dev/null +++ b/src/generated/resources/assets/tfmg/lang/en_us.json @@ -0,0 +1,20 @@ +{ + "block.tfmg.cast_iron_block": "Block of Cast Iron", + "block.tfmg.heavy_machinery_casing": "Heavy Machinery Casing", + "block.tfmg.napalm_bomb": "Napalm Bomb", + "block.tfmg.steel_block": "Block of Steel", + "block.tfmg.steel_casing": "Steel Casing", + "entity.tfmg.blue_spark": "Blue Spark", + "entity.tfmg.copper_grenade": "Copper Grenade", + "entity.tfmg.green_spark": "Green Spark", + "entity.tfmg.napalm_bomb_entity": "Napalm Bomb Entity", + "entity.tfmg.spark": "Spark", + "entity.tfmg.thermite_grenade": "Thermite Grenade", + "entity.tfmg.zin_grenade": "Zin Grenade", + "item.tfmg.copper_grenade": "Copper Grenade", + "item.tfmg.thermite_grenade": "Thermite Grenade", + "item.tfmg.zinc_grenade": "Zinc Grenade", + + "itemGroup.tfmg.base": "Create: The Factory Must Grow", + "itemGroup.tfmg.concrete": "Create: TFMG: Concrete" +} \ No newline at end of file diff --git a/src/generated/resources/assets/tfmg/models/block/cast_iron_block.json b/src/generated/resources/assets/tfmg/models/block/cast_iron_block.json new file mode 100644 index 00000000..b76ef3d9 --- /dev/null +++ b/src/generated/resources/assets/tfmg/models/block/cast_iron_block.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/cube_all", + "textures": { + "all": "tfmg:block/cast_iron_block" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/tfmg/models/block/heavy_machinery_casing.json b/src/generated/resources/assets/tfmg/models/block/heavy_machinery_casing.json new file mode 100644 index 00000000..10f4f1c2 --- /dev/null +++ b/src/generated/resources/assets/tfmg/models/block/heavy_machinery_casing.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/cube_all", + "textures": { + "all": "tfmg:block/heavy_machinery_casing" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/tfmg/models/block/napalm_bomb.json b/src/generated/resources/assets/tfmg/models/block/napalm_bomb.json new file mode 100644 index 00000000..999816ef --- /dev/null +++ b/src/generated/resources/assets/tfmg/models/block/napalm_bomb.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/cube_all", + "textures": { + "all": "tfmg:block/napalm_bomb" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/tfmg/models/block/steel_block.json b/src/generated/resources/assets/tfmg/models/block/steel_block.json new file mode 100644 index 00000000..f6c7c1b3 --- /dev/null +++ b/src/generated/resources/assets/tfmg/models/block/steel_block.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/cube_all", + "textures": { + "all": "tfmg:block/steel_block" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/tfmg/models/block/steel_casing.json b/src/generated/resources/assets/tfmg/models/block/steel_casing.json new file mode 100644 index 00000000..fd90632b --- /dev/null +++ b/src/generated/resources/assets/tfmg/models/block/steel_casing.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/cube_all", + "textures": { + "all": "tfmg:block/steel_casing" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/tfmg/models/item/cast_iron_block.json b/src/generated/resources/assets/tfmg/models/item/cast_iron_block.json new file mode 100644 index 00000000..2c0d95b0 --- /dev/null +++ b/src/generated/resources/assets/tfmg/models/item/cast_iron_block.json @@ -0,0 +1,3 @@ +{ + "parent": "tfmg:block/cast_iron_block" +} \ No newline at end of file diff --git a/src/generated/resources/assets/tfmg/models/item/copper_grenade.json b/src/generated/resources/assets/tfmg/models/item/copper_grenade.json new file mode 100644 index 00000000..56a0a703 --- /dev/null +++ b/src/generated/resources/assets/tfmg/models/item/copper_grenade.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "tfmg:item/copper_grenade" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/tfmg/models/item/heavy_machinery_casing.json b/src/generated/resources/assets/tfmg/models/item/heavy_machinery_casing.json new file mode 100644 index 00000000..73b12767 --- /dev/null +++ b/src/generated/resources/assets/tfmg/models/item/heavy_machinery_casing.json @@ -0,0 +1,3 @@ +{ + "parent": "tfmg:block/heavy_machinery_casing" +} \ No newline at end of file diff --git a/src/generated/resources/assets/tfmg/models/item/napalm_bomb.json b/src/generated/resources/assets/tfmg/models/item/napalm_bomb.json new file mode 100644 index 00000000..5e951828 --- /dev/null +++ b/src/generated/resources/assets/tfmg/models/item/napalm_bomb.json @@ -0,0 +1,3 @@ +{ + "parent": "tfmg:block/napalm_bomb" +} \ No newline at end of file diff --git a/src/generated/resources/assets/tfmg/models/item/steel_block.json b/src/generated/resources/assets/tfmg/models/item/steel_block.json new file mode 100644 index 00000000..66066a02 --- /dev/null +++ b/src/generated/resources/assets/tfmg/models/item/steel_block.json @@ -0,0 +1,3 @@ +{ + "parent": "tfmg:block/steel_block" +} \ No newline at end of file diff --git a/src/generated/resources/assets/tfmg/models/item/steel_casing.json b/src/generated/resources/assets/tfmg/models/item/steel_casing.json new file mode 100644 index 00000000..2368c472 --- /dev/null +++ b/src/generated/resources/assets/tfmg/models/item/steel_casing.json @@ -0,0 +1,3 @@ +{ + "parent": "tfmg:block/steel_casing" +} \ No newline at end of file diff --git a/src/generated/resources/assets/tfmg/models/item/thermite_grenade.json b/src/generated/resources/assets/tfmg/models/item/thermite_grenade.json new file mode 100644 index 00000000..b1d03422 --- /dev/null +++ b/src/generated/resources/assets/tfmg/models/item/thermite_grenade.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "tfmg:item/thermite_grenade" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/tfmg/models/item/zinc_grenade.json b/src/generated/resources/assets/tfmg/models/item/zinc_grenade.json new file mode 100644 index 00000000..2b57c349 --- /dev/null +++ b/src/generated/resources/assets/tfmg/models/item/zinc_grenade.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "tfmg:item/zinc_grenade" + } +} \ No newline at end of file diff --git a/src/generated/resources/data/create/tags/blocks/casing.json b/src/generated/resources/data/create/tags/blocks/casing.json new file mode 100644 index 00000000..bbe4537f --- /dev/null +++ b/src/generated/resources/data/create/tags/blocks/casing.json @@ -0,0 +1,6 @@ +{ + "values": [ + "tfmg:steel_casing", + "tfmg:heavy_machinery_casing" + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/tags/items/casing.json b/src/generated/resources/data/create/tags/items/casing.json new file mode 100644 index 00000000..bbe4537f --- /dev/null +++ b/src/generated/resources/data/create/tags/items/casing.json @@ -0,0 +1,6 @@ +{ + "values": [ + "tfmg:steel_casing", + "tfmg:heavy_machinery_casing" + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/forge/tags/blocks/storage_blocks.json b/src/generated/resources/data/forge/tags/blocks/storage_blocks.json new file mode 100644 index 00000000..45444180 --- /dev/null +++ b/src/generated/resources/data/forge/tags/blocks/storage_blocks.json @@ -0,0 +1,6 @@ +{ + "values": [ + "tfmg:steel_block", + "tfmg:cast_iron_block" + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/forge/tags/blocks/storage_blocks/cast_iron.json b/src/generated/resources/data/forge/tags/blocks/storage_blocks/cast_iron.json new file mode 100644 index 00000000..498da03a --- /dev/null +++ b/src/generated/resources/data/forge/tags/blocks/storage_blocks/cast_iron.json @@ -0,0 +1,5 @@ +{ + "values": [ + "tfmg:cast_iron_block" + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/forge/tags/blocks/storage_blocks/steel.json b/src/generated/resources/data/forge/tags/blocks/storage_blocks/steel.json new file mode 100644 index 00000000..72a5c238 --- /dev/null +++ b/src/generated/resources/data/forge/tags/blocks/storage_blocks/steel.json @@ -0,0 +1,5 @@ +{ + "values": [ + "tfmg:steel_block" + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/forge/tags/items/storage_blocks.json b/src/generated/resources/data/forge/tags/items/storage_blocks.json new file mode 100644 index 00000000..45444180 --- /dev/null +++ b/src/generated/resources/data/forge/tags/items/storage_blocks.json @@ -0,0 +1,6 @@ +{ + "values": [ + "tfmg:steel_block", + "tfmg:cast_iron_block" + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/forge/tags/items/storage_blocks/cast_iron.json b/src/generated/resources/data/forge/tags/items/storage_blocks/cast_iron.json new file mode 100644 index 00000000..498da03a --- /dev/null +++ b/src/generated/resources/data/forge/tags/items/storage_blocks/cast_iron.json @@ -0,0 +1,5 @@ +{ + "values": [ + "tfmg:cast_iron_block" + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/forge/tags/items/storage_blocks/steel.json b/src/generated/resources/data/forge/tags/items/storage_blocks/steel.json new file mode 100644 index 00000000..72a5c238 --- /dev/null +++ b/src/generated/resources/data/forge/tags/items/storage_blocks/steel.json @@ -0,0 +1,5 @@ +{ + "values": [ + "tfmg:steel_block" + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/minecraft/tags/blocks/beacon_base_blocks.json b/src/generated/resources/data/minecraft/tags/blocks/beacon_base_blocks.json new file mode 100644 index 00000000..45444180 --- /dev/null +++ b/src/generated/resources/data/minecraft/tags/blocks/beacon_base_blocks.json @@ -0,0 +1,6 @@ +{ + "values": [ + "tfmg:steel_block", + "tfmg:cast_iron_block" + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/minecraft/tags/blocks/mineable/axe.json b/src/generated/resources/data/minecraft/tags/blocks/mineable/axe.json new file mode 100644 index 00000000..bbe4537f --- /dev/null +++ b/src/generated/resources/data/minecraft/tags/blocks/mineable/axe.json @@ -0,0 +1,6 @@ +{ + "values": [ + "tfmg:steel_casing", + "tfmg:heavy_machinery_casing" + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/minecraft/tags/blocks/mineable/pickaxe.json b/src/generated/resources/data/minecraft/tags/blocks/mineable/pickaxe.json new file mode 100644 index 00000000..4d4a1f18 --- /dev/null +++ b/src/generated/resources/data/minecraft/tags/blocks/mineable/pickaxe.json @@ -0,0 +1,9 @@ +{ + "values": [ + "tfmg:napalm_bomb", + "tfmg:steel_casing", + "tfmg:heavy_machinery_casing", + "tfmg:steel_block", + "tfmg:cast_iron_block" + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/minecraft/tags/blocks/needs_iron_tool.json b/src/generated/resources/data/minecraft/tags/blocks/needs_iron_tool.json new file mode 100644 index 00000000..45444180 --- /dev/null +++ b/src/generated/resources/data/minecraft/tags/blocks/needs_iron_tool.json @@ -0,0 +1,6 @@ +{ + "values": [ + "tfmg:steel_block", + "tfmg:cast_iron_block" + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/tfmg/loot_tables/blocks/cast_iron_block.json b/src/generated/resources/data/tfmg/loot_tables/blocks/cast_iron_block.json new file mode 100644 index 00000000..e62ba2ab --- /dev/null +++ b/src/generated/resources/data/tfmg/loot_tables/blocks/cast_iron_block.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "tfmg:cast_iron_block" + } + ], + "rolls": 1.0 + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/tfmg/loot_tables/blocks/heavy_machinery_casing.json b/src/generated/resources/data/tfmg/loot_tables/blocks/heavy_machinery_casing.json new file mode 100644 index 00000000..74714f18 --- /dev/null +++ b/src/generated/resources/data/tfmg/loot_tables/blocks/heavy_machinery_casing.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "tfmg:heavy_machinery_casing" + } + ], + "rolls": 1.0 + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/tfmg/loot_tables/blocks/napalm_bomb.json b/src/generated/resources/data/tfmg/loot_tables/blocks/napalm_bomb.json new file mode 100644 index 00000000..dbc085ca --- /dev/null +++ b/src/generated/resources/data/tfmg/loot_tables/blocks/napalm_bomb.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "tfmg:napalm_bomb" + } + ], + "rolls": 1.0 + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/tfmg/loot_tables/blocks/steel_block.json b/src/generated/resources/data/tfmg/loot_tables/blocks/steel_block.json new file mode 100644 index 00000000..c31e5117 --- /dev/null +++ b/src/generated/resources/data/tfmg/loot_tables/blocks/steel_block.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "tfmg:steel_block" + } + ], + "rolls": 1.0 + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/tfmg/loot_tables/blocks/steel_casing.json b/src/generated/resources/data/tfmg/loot_tables/blocks/steel_casing.json new file mode 100644 index 00000000..36a4dbba --- /dev/null +++ b/src/generated/resources/data/tfmg/loot_tables/blocks/steel_casing.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "tfmg:steel_casing" + } + ], + "rolls": 1.0 + } + ] +} \ No newline at end of file diff --git a/src/main/java/com/drmangotea/tfmg/CreateTFMG.java b/src/main/java/com/drmangotea/tfmg/CreateTFMG.java index 46116baf..b921b07d 100644 --- a/src/main/java/com/drmangotea/tfmg/CreateTFMG.java +++ b/src/main/java/com/drmangotea/tfmg/CreateTFMG.java @@ -1,11 +1,20 @@ package com.drmangotea.tfmg; +import com.drmangotea.tfmg.content.gadgets.explosives.thermite_grenades.fire.TFMGColoredFires; +import com.drmangotea.tfmg.registry.*; import com.mojang.logging.LogUtils; +import com.simibubi.create.foundation.data.CreateRegistrate; +import net.minecraft.client.renderer.ItemBlockRenderTypes; +import net.minecraft.client.renderer.RenderType; +import net.minecraft.resources.ResourceLocation; +import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.common.MinecraftForge; import net.minecraftforge.eventbus.api.IEventBus; import net.minecraftforge.eventbus.api.SubscribeEvent; +import net.minecraftforge.fml.DistExecutor; import net.minecraftforge.fml.common.Mod; import net.minecraftforge.event.server.ServerStartingEvent; +import net.minecraftforge.fml.event.lifecycle.FMLClientSetupEvent; import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext; import org.slf4j.Logger; @@ -15,23 +24,38 @@ public class CreateTFMG { public static final String MOD_ID = "tfmg"; + public static final CreateRegistrate REGISTRATE = CreateRegistrate.create(MOD_ID); private static final Logger LOGGER = LogUtils.getLogger(); public CreateTFMG() { IEventBus modEventBus = FMLJavaModLoadingContext.get().getModEventBus(); + REGISTRATE.registerEventListeners(FMLJavaModLoadingContext.get().getModEventBus()); // + TFMGBlocks.register(); + TFMGItems.register(); + TFMGEntityTypes.register(); + TFMGCreativeModeTabs.init(); + DistExecutor.safeRunWhenOn(Dist.CLIENT, () -> CreateTFMGClient::new); + TFMGColoredFires.register(modEventBus); + modEventBus.addListener(this::clientSetup); // MinecraftForge.EVENT_BUS.register(this); } - + private void clientSetup(final FMLClientSetupEvent event) { + ItemBlockRenderTypes.setRenderLayer(TFMGColoredFires.GREEN_FIRE.get(), RenderType.cutout()); + ItemBlockRenderTypes.setRenderLayer(TFMGColoredFires.BLUE_FIRE.get(), RenderType.cutout()); + } @SubscribeEvent public void onServerStarting(ServerStartingEvent event) { LOGGER.info("YEEEHAAW"); } + public static ResourceLocation asResource(String path) { + return new ResourceLocation(MOD_ID, path); + } } diff --git a/src/main/java/com/drmangotea/tfmg/CreateTFMGClient.java b/src/main/java/com/drmangotea/tfmg/CreateTFMGClient.java new file mode 100644 index 00000000..9c4935ef --- /dev/null +++ b/src/main/java/com/drmangotea/tfmg/CreateTFMGClient.java @@ -0,0 +1,30 @@ +package com.drmangotea.tfmg; + + +import net.minecraftforge.eventbus.api.IEventBus; +import net.minecraftforge.eventbus.api.SubscribeEvent; +import net.minecraftforge.fml.event.lifecycle.FMLClientSetupEvent; +import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext; + +public class CreateTFMGClient { + + public CreateTFMGClient() { + IEventBus modEventBus = FMLJavaModLoadingContext.get().getModEventBus(); + //CIPartialModels.init(); + modEventBus.register(this); + + } + + + @SubscribeEvent + public void setup(final FMLClientSetupEvent event) { + // CIPonderIndex.register(); + //CIPonderIndex.registerTags(); + } + + +} + + + + diff --git a/src/main/java/com/drmangotea/tfmg/base/TFMGSpriteShifts.java b/src/main/java/com/drmangotea/tfmg/base/TFMGSpriteShifts.java new file mode 100644 index 00000000..e00cffb4 --- /dev/null +++ b/src/main/java/com/drmangotea/tfmg/base/TFMGSpriteShifts.java @@ -0,0 +1,62 @@ +package com.drmangotea.tfmg.base; + +import com.drmangotea.tfmg.CreateTFMG; +import com.simibubi.create.foundation.block.connected.AllCTTypes; +import com.simibubi.create.foundation.block.connected.CTSpriteShiftEntry; +import com.simibubi.create.foundation.block.connected.CTSpriteShifter; +import com.simibubi.create.foundation.block.connected.CTType; + +public class TFMGSpriteShifts { + + public static final CTSpriteShiftEntry + CAST_IRON_BLOCK = omni("cast_iron_block"), + STEEL_BLOCK = omni("steel_block"); + public static final CTSpriteShiftEntry + STEEL_CASING = omni("steel_casing"); + + public static final CTSpriteShiftEntry + ALUMINUM_SCAFFOLD_TOP = omni("scaffold/aluminum_scaffold_top"); + + public static final CTSpriteShiftEntry + HEAVY_MACHINERY_CASING = omni("heavy_machinery_casing"); + + public static final CTSpriteShiftEntry + STEEL_FLUID_TANK = getCT(AllCTTypes.RECTANGLE, "steel_fluid_tank"), + STEEL_FLUID_TANK_TOP = getCT(AllCTTypes.RECTANGLE, "steel_fluid_tank_top"), + STEEL_FLUID_TANK_INNER = getCT(AllCTTypes.RECTANGLE, "steel_fluid_tank_inner"); + + public static final CTSpriteShiftEntry STEEL_SCAFFOLD_INSIDE = horizontal("scaffold/steel_scaffold_inside"), + ALUMINUM_SCAFFOLD_INSIDE = horizontal("scaffold/aluminum_scaffold_inside"); + + + + public static final CTSpriteShiftEntry STEEL_SCAFFOLD = horizontal("scaffold/steel_scaffold"), + ALUMINUM_SCAFFOLD = horizontal("scaffold/aluminum_scaffold"); + + public static final CTSpriteShiftEntry + STEEL_ENCASED_COGWHEEL_SIDE = vertical("steel_encased_cogwheel_side"), + STEEL_ENCASED_COGWHEEL_OTHERSIDE = horizontal("steel_encased_cogwheel_side"), + HEAVY_CASING_ENCASED_COGWHEEL_SIDE = vertical("heavy_casing_encased_cogwheel_side"), + HEAVY_CASING_ENCASED_COGWHEEL_OTHERSIDE = horizontal("heavy_casing_encased_cogwheel_side"); + + ////////////////////// + public static CTSpriteShiftEntry omni(String name) { + return getCT(AllCTTypes.OMNIDIRECTIONAL, name); + } + public static CTSpriteShiftEntry horizontal(String name) { + return getCT(AllCTTypes.HORIZONTAL_KRYPPERS, name); + } + private static CTSpriteShiftEntry vertical(String name) { + return getCT(AllCTTypes.VERTICAL, name); + } + + ///// + + private static CTSpriteShiftEntry getCT(CTType type, String blockTextureName, String connectedTextureName) { + return CTSpriteShifter.getCT(type, CreateTFMG.asResource("block/" + blockTextureName), CreateTFMG.asResource("block/" + connectedTextureName + "_connected")); + } + + private static CTSpriteShiftEntry getCT(CTType type, String blockTextureName) { + return getCT(type, blockTextureName, blockTextureName); + } +} diff --git a/src/main/java/com/drmangotea/tfmg/base/creative_mode_tabs/BaseTFMGCreativeModeTab.java b/src/main/java/com/drmangotea/tfmg/base/creative_mode_tabs/BaseTFMGCreativeModeTab.java new file mode 100644 index 00000000..da625c80 --- /dev/null +++ b/src/main/java/com/drmangotea/tfmg/base/creative_mode_tabs/BaseTFMGCreativeModeTab.java @@ -0,0 +1,18 @@ +package com.drmangotea.tfmg.base.creative_mode_tabs; + +import com.drmangotea.tfmg.registry.TFMGCreativeModeTabs; +import com.drmangotea.tfmg.registry.TFMGItems; +import com.simibubi.create.AllBlocks; +import com.simibubi.create.infrastructure.item.CreateCreativeModeTab; +import net.minecraft.world.item.ItemStack; + +public class BaseTFMGCreativeModeTab extends TFMGCreativeModeTab { + public BaseTFMGCreativeModeTab() { + super("base"); + } + + @Override + public ItemStack makeIcon() { + return TFMGItems.ZINC_GRENADE.asStack(); + } +} diff --git a/src/main/java/com/drmangotea/tfmg/base/creative_mode_tabs/ConcreteCreativeModeTab.java b/src/main/java/com/drmangotea/tfmg/base/creative_mode_tabs/ConcreteCreativeModeTab.java new file mode 100644 index 00000000..52f43e98 --- /dev/null +++ b/src/main/java/com/drmangotea/tfmg/base/creative_mode_tabs/ConcreteCreativeModeTab.java @@ -0,0 +1,23 @@ +package com.drmangotea.tfmg.base.creative_mode_tabs; + +import com.drmangotea.tfmg.registry.TFMGItems; +import com.simibubi.create.content.decoration.palettes.AllPaletteBlocks; +import com.simibubi.create.infrastructure.item.CreateCreativeModeTab; + +import net.minecraft.core.NonNullList; +import net.minecraft.world.item.ItemStack; + +public class ConcreteCreativeModeTab extends TFMGCreativeModeTab { + public ConcreteCreativeModeTab() { + super("concrete"); + } + + @Override + public void addItems(NonNullList items, boolean specialItems) { + } + + @Override + public ItemStack makeIcon() { + return TFMGItems.COPPER_GRENADE.asStack(); + } +} diff --git a/src/main/java/com/drmangotea/tfmg/base/creative_mode_tabs/TFMGCreativeModeTab.java b/src/main/java/com/drmangotea/tfmg/base/creative_mode_tabs/TFMGCreativeModeTab.java new file mode 100644 index 00000000..8ef3a34a --- /dev/null +++ b/src/main/java/com/drmangotea/tfmg/base/creative_mode_tabs/TFMGCreativeModeTab.java @@ -0,0 +1,54 @@ +package com.drmangotea.tfmg.base.creative_mode_tabs; + +import java.util.Collection; + +import com.drmangotea.tfmg.CreateTFMG; +import com.tterrag.registrate.util.entry.RegistryEntry; + +import net.minecraft.client.Minecraft; +import net.minecraft.client.renderer.entity.ItemRenderer; +import net.minecraft.client.resources.model.BakedModel; +import net.minecraft.core.NonNullList; +import net.minecraft.world.item.BlockItem; +import net.minecraft.world.item.CreativeModeTab; +import net.minecraft.world.item.Item; +import net.minecraft.world.item.ItemStack; +import net.minecraftforge.registries.ForgeRegistries; + +public abstract class TFMGCreativeModeTab extends CreativeModeTab { + public TFMGCreativeModeTab(String id) { + super(CreateTFMG.MOD_ID + "." + id); + } + + @Override + public void fillItemList(NonNullList items) { + addItems(items, true); + addBlocks(items); + addItems(items, false); + } + + protected Collection> registeredItems() { + return CreateTFMG.REGISTRATE.getAll(ForgeRegistries.ITEMS.getRegistryKey()); + } + + public void addBlocks(NonNullList items) { + for (RegistryEntry entry : registeredItems()) + if (entry.get() instanceof BlockItem blockItem) + blockItem.fillItemCategory(this, items); + } + + public void addItems(NonNullList items, boolean specialItems) { + ItemRenderer itemRenderer = Minecraft.getInstance() + .getItemRenderer(); + + for (RegistryEntry entry : registeredItems()) { + Item item = entry.get(); + if (item instanceof BlockItem) + continue; + ItemStack stack = new ItemStack(item); + BakedModel model = itemRenderer.getModel(stack, null, null, 0); + if (model.isGui3d() == specialItems) + item.fillItemCategory(this, items); + } + } +} diff --git a/src/main/java/com/drmangotea/tfmg/base/spark/BlueSpark.java b/src/main/java/com/drmangotea/tfmg/base/spark/BlueSpark.java new file mode 100644 index 00000000..6c6eb7f8 --- /dev/null +++ b/src/main/java/com/drmangotea/tfmg/base/spark/BlueSpark.java @@ -0,0 +1,122 @@ +package com.drmangotea.tfmg.base.spark; + + +import com.drmangotea.tfmg.content.gadgets.explosives.thermite_grenades.fire.BlueFireBlock; +import com.drmangotea.tfmg.registry.TFMGEntityTypes; +import com.drmangotea.tfmg.registry.TFMGItems; +import com.simibubi.create.content.trains.CubeParticleData; +import net.minecraft.core.BlockPos; +import net.minecraft.core.particles.ParticleOptions; +import net.minecraft.core.particles.ParticleTypes; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.EntityType; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.entity.Mob; +import net.minecraft.world.entity.projectile.ThrowableProjectile; +import net.minecraft.world.item.Item; +import net.minecraft.world.level.Level; +import net.minecraft.world.phys.BlockHitResult; +import net.minecraft.world.phys.EntityHitResult; +import net.minecraft.world.phys.HitResult; + +public class BlueSpark extends ThrowableProjectile { + public BlueSpark(EntityType p_37391_, Level p_37392_) { + super(p_37391_, p_37392_); + + } + public BlueSpark(Level p_37399_, LivingEntity p_37400_) { + super(TFMGEntityTypes.SPARK.get(), p_37400_, p_37399_); + } + + public BlueSpark(Level p_37394_, double p_37395_, double p_37396_, double p_37397_) { + super(TFMGEntityTypes.BLUE_SPARK.get(), p_37395_, p_37396_, p_37397_, p_37394_); + } + + + @Override + protected float getGravity(){ + return 0.02f; + } + @Override + protected void defineSynchedData() { + + } + + public void tick(){ + super.tick(); + if (this.isInWaterOrRain()) { + this.discard(); + } + if(this.level.isClientSide) { + + CubeParticleData data = + new CubeParticleData(4.1f, 60.2f, 100.3f, .0125f + .0625f * random.nextFloat(), 30, false); + level.addParticle(data, this.getX(), this.getY(), this.getZ(), this.random.nextGaussian() * 0.05D, -this.getDeltaMovement().y * 0.5D, this.random.nextGaussian() * 0.05D); + + } + } + + protected Item getDefaultItem() { + return TFMGItems.THERMITE_GRENADE.get(); + } + + private ParticleOptions getParticle() { + + return ParticleTypes.FLAME; + } + + public void handleEntityEvent(byte p_37402_) { + if (p_37402_ == 3) { + ParticleOptions particleoptions = this.getParticle(); + + for(int i = 0; i < 8; ++i) { + this.level.addParticle(particleoptions, this.getX(), this.getY(), this.getZ(), 0.0D, 0.0D, 0.0D); + } + } + + } + protected void onHitBlock(BlockHitResult p_37384_) { + super.onHitBlock(p_37384_); + if (!this.level.isClientSide) { + Entity entity = this.getOwner(); + if (!(entity instanceof Mob) || net.minecraftforge.event.ForgeEventFactory.getMobGriefingEvent(this.level, this)) { + BlockPos blockpos = p_37384_.getBlockPos().relative(p_37384_.getDirection()); + if (this.level.isEmptyBlock(blockpos)) { + this.level.setBlockAndUpdate(blockpos, BlueFireBlock.getState(this.level, blockpos)); + } + } + + } + } + + protected void onHitEntity(EntityHitResult p_37386_) { + super.onHitEntity(p_37386_); + if (!this.level.isClientSide) { + Entity entity = p_37386_.getEntity(); + Entity entity1 = this.getOwner(); + int i = entity.getRemainingFireTicks(); + entity.setSecondsOnFire(10); + + + } + } + + protected void onHit(HitResult p_37406_) { + super.onHit(p_37406_); + + if (!this.level.isClientSide) { + this.level.broadcastEntityEvent(this, (byte)3); + + + //this.level.explode(this, this.getX(), this.getY(0.0625D), this.getZ(), 2.0F, Explosion.BlockInteraction.NONE); + this.discard(); + } + + } + + @SuppressWarnings("unchecked") + public static EntityType.Builder build(EntityType.Builder builder) { + EntityType.Builder entityBuilder = (EntityType.Builder) builder; + return entityBuilder.sized(.25f, .25f); + } +} \ No newline at end of file diff --git a/src/main/java/com/drmangotea/tfmg/base/spark/BlueSparkRenderer.java b/src/main/java/com/drmangotea/tfmg/base/spark/BlueSparkRenderer.java new file mode 100644 index 00000000..f3b50402 --- /dev/null +++ b/src/main/java/com/drmangotea/tfmg/base/spark/BlueSparkRenderer.java @@ -0,0 +1,58 @@ +package com.drmangotea.tfmg.base.spark; + +import com.drmangotea.tfmg.CreateTFMG; +import com.mojang.blaze3d.vertex.PoseStack; +import com.mojang.blaze3d.vertex.VertexConsumer; +import com.mojang.math.Matrix3f; +import com.mojang.math.Matrix4f; +import com.mojang.math.Vector3f; +import net.minecraft.client.renderer.MultiBufferSource; +import net.minecraft.client.renderer.RenderType; +import net.minecraft.client.renderer.entity.EntityRenderer; +import net.minecraft.client.renderer.entity.EntityRendererProvider; +import net.minecraft.client.renderer.texture.OverlayTexture; +import net.minecraft.core.BlockPos; +import net.minecraft.resources.ResourceLocation; +import net.minecraftforge.api.distmarker.Dist; +import net.minecraftforge.api.distmarker.OnlyIn; + +@OnlyIn(Dist.CLIENT) +public class BlueSparkRenderer extends EntityRenderer { + private static final ResourceLocation TEXTURE_LOCATION = CreateTFMG.asResource("textures/entity/blue_spark.png"); + private static final RenderType RENDER_TYPE = RenderType.entityCutoutNoCull(TEXTURE_LOCATION); + + public BlueSparkRenderer(EntityRendererProvider.Context p_173962_) { + super(p_173962_); + } + + + + protected int getBlockLightLevel(BlueSpark p_114087_, BlockPos p_114088_) { + return 15; + } + + public void render(BlueSpark p_114080_, float p_114081_, float p_114082_, PoseStack p_114083_, MultiBufferSource p_114084_, int p_114085_) { + p_114083_.pushPose(); + p_114083_.scale(0.5F, 0.5F, 0.5F); + p_114083_.mulPose(this.entityRenderDispatcher.cameraOrientation()); + p_114083_.mulPose(Vector3f.YP.rotationDegrees(180.0F)); + PoseStack.Pose posestack$pose = p_114083_.last(); + Matrix4f matrix4f = posestack$pose.pose(); + Matrix3f matrix3f = posestack$pose.normal(); + VertexConsumer vertexconsumer = p_114084_.getBuffer(RENDER_TYPE); + vertex(vertexconsumer, matrix4f, matrix3f, p_114085_, 0.0F, 0, 0, 1); + vertex(vertexconsumer, matrix4f, matrix3f, p_114085_, 1.0F, 0, 1, 1); + vertex(vertexconsumer, matrix4f, matrix3f, p_114085_, 1.0F, 1, 1, 0); + vertex(vertexconsumer, matrix4f, matrix3f, p_114085_, 0.0F, 1, 0, 0); + p_114083_.popPose(); + super.render(p_114080_, p_114081_, p_114082_, p_114083_, p_114084_, p_114085_); + } + + private static void vertex(VertexConsumer p_114090_, Matrix4f p_114091_, Matrix3f p_114092_, int p_114093_, float p_114094_, int p_114095_, int p_114096_, int p_114097_) { + p_114090_.vertex(p_114091_, p_114094_ - 0.5F, (float)p_114095_ - 0.25F, 0.0F).color(255, 255, 255, 255).uv((float)p_114096_, (float)p_114097_).overlayCoords(OverlayTexture.NO_OVERLAY).uv2(p_114093_).normal(p_114092_, 0.0F, 1.0F, 0.0F).endVertex(); + } + + public ResourceLocation getTextureLocation(BlueSpark p_114078_) { + return TEXTURE_LOCATION; + } +} \ No newline at end of file diff --git a/src/main/java/com/drmangotea/tfmg/base/spark/GreenSpark.java b/src/main/java/com/drmangotea/tfmg/base/spark/GreenSpark.java new file mode 100644 index 00000000..871f1838 --- /dev/null +++ b/src/main/java/com/drmangotea/tfmg/base/spark/GreenSpark.java @@ -0,0 +1,122 @@ +package com.drmangotea.tfmg.base.spark; + + +import com.drmangotea.tfmg.content.gadgets.explosives.thermite_grenades.fire.GreenFireBlock; +import com.drmangotea.tfmg.registry.TFMGEntityTypes; +import com.drmangotea.tfmg.registry.TFMGItems; +import com.simibubi.create.content.trains.CubeParticleData; +import net.minecraft.core.BlockPos; +import net.minecraft.core.particles.ParticleOptions; +import net.minecraft.core.particles.ParticleTypes; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.EntityType; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.entity.Mob; +import net.minecraft.world.entity.projectile.ThrowableProjectile; +import net.minecraft.world.item.Item; +import net.minecraft.world.level.Level; +import net.minecraft.world.phys.BlockHitResult; +import net.minecraft.world.phys.EntityHitResult; +import net.minecraft.world.phys.HitResult; + +public class GreenSpark extends ThrowableProjectile { + public GreenSpark(EntityType p_37391_, Level p_37392_) { + super(p_37391_, p_37392_); + + } + public GreenSpark(Level p_37399_, LivingEntity p_37400_) { + super(TFMGEntityTypes.SPARK.get(), p_37400_, p_37399_); + } + + public GreenSpark(Level level, double p_37395_, double p_37396_, double p_37397_) { + super(TFMGEntityTypes.SPARK.get(), p_37395_, p_37396_, p_37397_, level); + } + + + @Override + protected float getGravity(){ + return 0.02f; + } + @Override + protected void defineSynchedData() { + + } + + public void tick(){ + super.tick(); + if (this.isInWaterOrRain()) { + this.discard(); + } + if(this.level.isClientSide) { + + CubeParticleData data = + new CubeParticleData(0.01f, 100.25f, 20.1f, .0125f + .0625f * random.nextFloat(), 30, true); + level.addParticle(data, this.getX(), this.getY(), this.getZ(), this.random.nextGaussian() * 0.05D, -this.getDeltaMovement().y * 0.5D, this.random.nextGaussian() * 0.05D); + + } +} + + protected Item getDefaultItem() { + return TFMGItems.THERMITE_GRENADE.get(); + } + + private ParticleOptions getParticle() { + + return ParticleTypes.FLAME; + } + + public void handleEntityEvent(byte p_37402_) { + if (p_37402_ == 3) { + ParticleOptions particleoptions = this.getParticle(); + + for(int i = 0; i < 8; ++i) { + this.level.addParticle(particleoptions, this.getX(), this.getY(), this.getZ(), 0.0D, 0.0D, 0.0D); + } + } + + } + protected void onHitBlock(BlockHitResult p_37384_) { + super.onHitBlock(p_37384_); + if (!this.level.isClientSide) { + Entity entity = this.getOwner(); + if (!(entity instanceof Mob) || net.minecraftforge.event.ForgeEventFactory.getMobGriefingEvent(this.level, this)) { + BlockPos blockpos = p_37384_.getBlockPos().relative(p_37384_.getDirection()); + if (this.level.isEmptyBlock(blockpos)) { + this.level.setBlockAndUpdate(blockpos, GreenFireBlock.getState(this.level, blockpos)); + } + } + + } + } + + protected void onHitEntity(EntityHitResult p_37386_) { + super.onHitEntity(p_37386_); + if (!this.level.isClientSide) { + Entity entity = p_37386_.getEntity(); + Entity entity1 = this.getOwner(); + int i = entity.getRemainingFireTicks(); + entity.setSecondsOnFire(10); + + + } + } + + protected void onHit(HitResult p_37406_) { + super.onHit(p_37406_); + + if (!this.level.isClientSide) { + this.level.broadcastEntityEvent(this, (byte)3); + + + //this.level.explode(this, this.getX(), this.getY(0.0625D), this.getZ(), 2.0F, Explosion.BlockInteraction.NONE); + this.discard(); + } + + } + + @SuppressWarnings("unchecked") + public static EntityType.Builder build(EntityType.Builder builder) { + EntityType.Builder entityBuilder = (EntityType.Builder) builder; + return entityBuilder.sized(.25f, .25f); + } +} \ No newline at end of file diff --git a/src/main/java/com/drmangotea/tfmg/base/spark/GreenSparkRenderer.java b/src/main/java/com/drmangotea/tfmg/base/spark/GreenSparkRenderer.java new file mode 100644 index 00000000..d51a3988 --- /dev/null +++ b/src/main/java/com/drmangotea/tfmg/base/spark/GreenSparkRenderer.java @@ -0,0 +1,58 @@ +package com.drmangotea.tfmg.base.spark; + +import com.drmangotea.tfmg.CreateTFMG; +import com.mojang.blaze3d.vertex.PoseStack; +import com.mojang.blaze3d.vertex.VertexConsumer; +import com.mojang.math.Matrix3f; +import com.mojang.math.Matrix4f; +import com.mojang.math.Vector3f; +import net.minecraft.client.renderer.MultiBufferSource; +import net.minecraft.client.renderer.RenderType; +import net.minecraft.client.renderer.entity.EntityRenderer; +import net.minecraft.client.renderer.entity.EntityRendererProvider; +import net.minecraft.client.renderer.texture.OverlayTexture; +import net.minecraft.core.BlockPos; +import net.minecraft.resources.ResourceLocation; +import net.minecraftforge.api.distmarker.Dist; +import net.minecraftforge.api.distmarker.OnlyIn; + +@OnlyIn(Dist.CLIENT) +public class GreenSparkRenderer extends EntityRenderer { + private static final ResourceLocation TEXTURE_LOCATION = CreateTFMG.asResource("textures/entity/green_spark.png"); + private static final RenderType RENDER_TYPE = RenderType.entityCutoutNoCull(TEXTURE_LOCATION); + + public GreenSparkRenderer(EntityRendererProvider.Context p_173962_) { + super(p_173962_); + } + + + + protected int getBlockLightLevel(GreenSpark p_114087_, BlockPos p_114088_) { + return 15; + } + + public void render(GreenSpark p_114080_, float p_114081_, float p_114082_, PoseStack p_114083_, MultiBufferSource p_114084_, int p_114085_) { + p_114083_.pushPose(); + p_114083_.scale(0.5F, 0.5F, 0.5F); + p_114083_.mulPose(this.entityRenderDispatcher.cameraOrientation()); + p_114083_.mulPose(Vector3f.YP.rotationDegrees(180.0F)); + PoseStack.Pose posestack$pose = p_114083_.last(); + Matrix4f matrix4f = posestack$pose.pose(); + Matrix3f matrix3f = posestack$pose.normal(); + VertexConsumer vertexconsumer = p_114084_.getBuffer(RENDER_TYPE); + vertex(vertexconsumer, matrix4f, matrix3f, p_114085_, 0.0F, 0, 0, 1); + vertex(vertexconsumer, matrix4f, matrix3f, p_114085_, 1.0F, 0, 1, 1); + vertex(vertexconsumer, matrix4f, matrix3f, p_114085_, 1.0F, 1, 1, 0); + vertex(vertexconsumer, matrix4f, matrix3f, p_114085_, 0.0F, 1, 0, 0); + p_114083_.popPose(); + super.render(p_114080_, p_114081_, p_114082_, p_114083_, p_114084_, p_114085_); + } + + private static void vertex(VertexConsumer p_114090_, Matrix4f p_114091_, Matrix3f p_114092_, int p_114093_, float p_114094_, int p_114095_, int p_114096_, int p_114097_) { + p_114090_.vertex(p_114091_, p_114094_ - 0.5F, (float)p_114095_ - 0.25F, 0.0F).color(255, 255, 255, 255).uv((float)p_114096_, (float)p_114097_).overlayCoords(OverlayTexture.NO_OVERLAY).uv2(p_114093_).normal(p_114092_, 0.0F, 1.0F, 0.0F).endVertex(); + } + + public ResourceLocation getTextureLocation(GreenSpark p_114078_) { + return TEXTURE_LOCATION; + } +} \ No newline at end of file diff --git a/src/main/java/com/drmangotea/tfmg/base/spark/Spark.java b/src/main/java/com/drmangotea/tfmg/base/spark/Spark.java new file mode 100644 index 00000000..0d137512 --- /dev/null +++ b/src/main/java/com/drmangotea/tfmg/base/spark/Spark.java @@ -0,0 +1,118 @@ +package com.drmangotea.tfmg.base.spark; + + +import com.drmangotea.tfmg.registry.TFMGEntityTypes; +import com.drmangotea.tfmg.registry.TFMGItems; +import net.minecraft.core.BlockPos; +import net.minecraft.core.particles.ParticleOptions; +import net.minecraft.core.particles.ParticleTypes; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.EntityType; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.entity.Mob; +import net.minecraft.world.entity.projectile.ThrowableProjectile; +import net.minecraft.world.item.Item; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.block.BaseFireBlock; +import net.minecraft.world.phys.BlockHitResult; +import net.minecraft.world.phys.EntityHitResult; +import net.minecraft.world.phys.HitResult; + +public class Spark extends ThrowableProjectile { + public Spark(EntityType p_37391_, Level p_37392_) { + super(p_37391_, p_37392_); + + } + public Spark(Level p_37399_, LivingEntity p_37400_) { + super(TFMGEntityTypes.SPARK.get(), p_37400_, p_37399_); + } + + public Spark(Level p_37394_, double p_37395_, double p_37396_, double p_37397_) { + super(TFMGEntityTypes.SPARK.get(), p_37395_, p_37396_, p_37397_, p_37394_); + } + + + @Override + protected float getGravity(){ + return 0.02f; + } + @Override + protected void defineSynchedData() { + + } + + public void tick(){ + super.tick(); + if (this.isInWaterOrRain()) { + this.discard(); + } + if(this.level.isClientSide) { + + this.level.addParticle(ParticleTypes.FLAME, this.getX(), this.getY(), this.getZ(), this.random.nextGaussian() * 0.05D, -this.getDeltaMovement().y * 0.5D, this.random.nextGaussian() * 0.05D); + } +} + + protected Item getDefaultItem() { + return TFMGItems.THERMITE_GRENADE.get(); + } + + private ParticleOptions getParticle() { + + return ParticleTypes.FLAME; + } + + public void handleEntityEvent(byte p_37402_) { + if (p_37402_ == 3) { + ParticleOptions particleoptions = this.getParticle(); + + for(int i = 0; i < 8; ++i) { + this.level.addParticle(particleoptions, this.getX(), this.getY(), this.getZ(), 0.0D, 0.0D, 0.0D); + } + } + + } + protected void onHitBlock(BlockHitResult p_37384_) { + super.onHitBlock(p_37384_); + if (!this.level.isClientSide) { + Entity entity = this.getOwner(); + if (!(entity instanceof Mob) || net.minecraftforge.event.ForgeEventFactory.getMobGriefingEvent(this.level, this)) { + BlockPos blockpos = p_37384_.getBlockPos().relative(p_37384_.getDirection()); + if (this.level.isEmptyBlock(blockpos)) { + this.level.setBlockAndUpdate(blockpos, BaseFireBlock.getState(this.level, blockpos)); + } + } + + } + } + + protected void onHitEntity(EntityHitResult p_37386_) { + super.onHitEntity(p_37386_); + if (!this.level.isClientSide) { + Entity entity = p_37386_.getEntity(); + Entity entity1 = this.getOwner(); + int i = entity.getRemainingFireTicks(); + entity.setSecondsOnFire(10); + + + } + } + + protected void onHit(HitResult p_37406_) { + super.onHit(p_37406_); + + if (!this.level.isClientSide) { + this.level.broadcastEntityEvent(this, (byte)3); + + + //this.level.explode(this, this.getX(), this.getY(0.0625D), this.getZ(), 2.0F, Explosion.BlockInteraction.NONE); + this.discard(); + } + + } + + @SuppressWarnings("unchecked") + public static EntityType.Builder build(EntityType.Builder builder) { + EntityType.Builder entityBuilder = (EntityType.Builder) builder; + return entityBuilder.sized(.25f, .25f); + } +} \ No newline at end of file diff --git a/src/main/java/com/drmangotea/tfmg/base/spark/SparkRenderer.java b/src/main/java/com/drmangotea/tfmg/base/spark/SparkRenderer.java new file mode 100644 index 00000000..9e488255 --- /dev/null +++ b/src/main/java/com/drmangotea/tfmg/base/spark/SparkRenderer.java @@ -0,0 +1,57 @@ +package com.drmangotea.tfmg.base.spark; + +import com.mojang.blaze3d.vertex.PoseStack; +import com.mojang.blaze3d.vertex.VertexConsumer; +import com.mojang.math.Matrix3f; +import com.mojang.math.Matrix4f; +import com.mojang.math.Vector3f; +import net.minecraft.client.renderer.MultiBufferSource; +import net.minecraft.client.renderer.RenderType; +import net.minecraft.client.renderer.entity.EntityRenderer; +import net.minecraft.client.renderer.entity.EntityRendererProvider; +import net.minecraft.client.renderer.texture.OverlayTexture; +import net.minecraft.core.BlockPos; +import net.minecraft.resources.ResourceLocation; +import net.minecraftforge.api.distmarker.Dist; +import net.minecraftforge.api.distmarker.OnlyIn; + +@OnlyIn(Dist.CLIENT) +public class SparkRenderer extends EntityRenderer { + private static final ResourceLocation TEXTURE_LOCATION = new ResourceLocation("textures/particle/lava.png"); + private static final RenderType RENDER_TYPE = RenderType.entityCutoutNoCull(TEXTURE_LOCATION); + + public SparkRenderer(EntityRendererProvider.Context p_173962_) { + super(p_173962_); + } + + + + protected int getBlockLightLevel(Spark p_114087_, BlockPos p_114088_) { + return 15; + } + + public void render(Spark p_114080_, float p_114081_, float p_114082_, PoseStack p_114083_, MultiBufferSource p_114084_, int p_114085_) { + p_114083_.pushPose(); + p_114083_.scale(0.5F, 0.5F, 0.5F); + p_114083_.mulPose(this.entityRenderDispatcher.cameraOrientation()); + p_114083_.mulPose(Vector3f.YP.rotationDegrees(180.0F)); + PoseStack.Pose posestack$pose = p_114083_.last(); + Matrix4f matrix4f = posestack$pose.pose(); + Matrix3f matrix3f = posestack$pose.normal(); + VertexConsumer vertexconsumer = p_114084_.getBuffer(RENDER_TYPE); + vertex(vertexconsumer, matrix4f, matrix3f, p_114085_, 0.0F, 0, 0, 1); + vertex(vertexconsumer, matrix4f, matrix3f, p_114085_, 1.0F, 0, 1, 1); + vertex(vertexconsumer, matrix4f, matrix3f, p_114085_, 1.0F, 1, 1, 0); + vertex(vertexconsumer, matrix4f, matrix3f, p_114085_, 0.0F, 1, 0, 0); + p_114083_.popPose(); + super.render(p_114080_, p_114081_, p_114082_, p_114083_, p_114084_, p_114085_); + } + + private static void vertex(VertexConsumer p_114090_, Matrix4f p_114091_, Matrix3f p_114092_, int p_114093_, float p_114094_, int p_114095_, int p_114096_, int p_114097_) { + p_114090_.vertex(p_114091_, p_114094_ - 0.5F, (float)p_114095_ - 0.25F, 0.0F).color(255, 255, 255, 255).uv((float)p_114096_, (float)p_114097_).overlayCoords(OverlayTexture.NO_OVERLAY).uv2(p_114093_).normal(p_114092_, 0.0F, 1.0F, 0.0F).endVertex(); + } + + public ResourceLocation getTextureLocation(Spark p_114078_) { + return TEXTURE_LOCATION; + } +} \ No newline at end of file diff --git a/src/main/java/com/drmangotea/tfmg/content/gadgets/explosives/napalm/NapalmBombBlock.java b/src/main/java/com/drmangotea/tfmg/content/gadgets/explosives/napalm/NapalmBombBlock.java new file mode 100644 index 00000000..1b94aa76 --- /dev/null +++ b/src/main/java/com/drmangotea/tfmg/content/gadgets/explosives/napalm/NapalmBombBlock.java @@ -0,0 +1,133 @@ +package com.drmangotea.tfmg.content.gadgets.explosives.napalm; + +import net.minecraft.core.BlockPos; +import net.minecraft.sounds.SoundEvents; +import net.minecraft.sounds.SoundSource; +import net.minecraft.stats.Stats; +import net.minecraft.world.InteractionHand; +import net.minecraft.world.InteractionResult; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.entity.projectile.Projectile; +import net.minecraft.world.item.Item; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.Items; +import net.minecraft.world.level.Explosion; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.Blocks; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.block.state.StateDefinition; +import net.minecraft.world.level.block.state.properties.BlockStateProperties; +import net.minecraft.world.level.block.state.properties.BooleanProperty; +import net.minecraft.world.level.gameevent.GameEvent; +import net.minecraft.world.phys.BlockHitResult; + +import javax.annotation.Nullable; + +public class NapalmBombBlock extends Block { + public static final BooleanProperty UNSTABLE = BlockStateProperties.UNSTABLE; + + public NapalmBombBlock(Properties p_57422_) { + super(p_57422_); + this.registerDefaultState(this.defaultBlockState().setValue(UNSTABLE, Boolean.valueOf(false))); + } + + public void onCaughtFire(BlockState state, Level world, BlockPos pos, @Nullable net.minecraft.core.Direction face, @Nullable LivingEntity igniter) { + explode(world, pos, igniter); + } + + public void onPlace(BlockState p_57466_, Level p_57467_, BlockPos p_57468_, BlockState p_57469_, boolean p_57470_) { + if (!p_57469_.is(p_57466_.getBlock())) { + if (p_57467_.hasNeighborSignal(p_57468_)) { + onCaughtFire(p_57466_, p_57467_, p_57468_, null, null); + p_57467_.removeBlock(p_57468_, false); + } + + } + } + + public void neighborChanged(BlockState p_57457_, Level p_57458_, BlockPos p_57459_, Block p_57460_, BlockPos p_57461_, boolean p_57462_) { + if (p_57458_.hasNeighborSignal(p_57459_)) { + onCaughtFire(p_57457_, p_57458_, p_57459_, null, null); + p_57458_.removeBlock(p_57459_, false); + } + + } + + public void playerWillDestroy(Level p_57445_, BlockPos p_57446_, BlockState p_57447_, Player p_57448_) { + if (!p_57445_.isClientSide() && !p_57448_.isCreative() && p_57447_.getValue(UNSTABLE)) { + onCaughtFire(p_57447_, p_57445_, p_57446_, null, null); + } + + super.playerWillDestroy(p_57445_, p_57446_, p_57447_, p_57448_); + } + + public void wasExploded(Level p_57441_, BlockPos p_57442_, Explosion p_57443_) { + if (!p_57441_.isClientSide) { + NapalmBombEntity napalmBomb = new NapalmBombEntity(p_57441_, (double)p_57442_.getX() + 0.5D, (double)p_57442_.getY(), (double)p_57442_.getZ() + 0.5D, p_57443_.getSourceMob()); + int i = napalmBomb.getFuse(); + napalmBomb.setFuse((short)(p_57441_.random.nextInt(i / 4) + i / 8)); + p_57441_.addFreshEntity(napalmBomb); + } + } + + @Deprecated //Forge: Prefer using IForgeBlock#catchFire + public static void explode(Level p_57434_, BlockPos p_57435_) { + explode(p_57434_, p_57435_, (LivingEntity)null); + } + + @Deprecated //Forge: Prefer using IForgeBlock#catchFire + private static void explode(Level p_57437_, BlockPos p_57438_, @Nullable LivingEntity p_57439_) { + if (!p_57437_.isClientSide) { + NapalmBombEntity napalmBomb = new NapalmBombEntity(p_57437_, (double)p_57438_.getX() + 0.5D, (double)p_57438_.getY(), (double)p_57438_.getZ() + 0.5D, p_57439_); + p_57437_.addFreshEntity(napalmBomb); + p_57437_.playSound((Player)null, napalmBomb.getX(), napalmBomb.getY(), napalmBomb.getZ(), SoundEvents.TNT_PRIMED, SoundSource.BLOCKS, 1.0F, 1.0F); + p_57437_.gameEvent(p_57439_, GameEvent.PRIME_FUSE, p_57438_); + } + } + + public InteractionResult use(BlockState p_57450_, Level p_57451_, BlockPos p_57452_, Player p_57453_, InteractionHand p_57454_, BlockHitResult p_57455_) { + ItemStack itemstack = p_57453_.getItemInHand(p_57454_); + if (!itemstack.is(Items.FLINT_AND_STEEL) && !itemstack.is(Items.FIRE_CHARGE)) { + return super.use(p_57450_, p_57451_, p_57452_, p_57453_, p_57454_, p_57455_); + } else { + onCaughtFire(p_57450_, p_57451_, p_57452_, p_57455_.getDirection(), p_57453_); + p_57451_.setBlock(p_57452_, Blocks.AIR.defaultBlockState(), 11); + Item item = itemstack.getItem(); + if (!p_57453_.isCreative()) { + if (itemstack.is(Items.FLINT_AND_STEEL)) { + itemstack.hurtAndBreak(1, p_57453_, (p_57425_) -> { + p_57425_.broadcastBreakEvent(p_57454_); + }); + } else { + itemstack.shrink(1); + } + } + + p_57453_.awardStat(Stats.ITEM_USED.get(item)); + return InteractionResult.sidedSuccess(p_57451_.isClientSide); + } + } + + public void onProjectileHit(Level p_57429_, BlockState p_57430_, BlockHitResult p_57431_, Projectile p_57432_) { + if (!p_57429_.isClientSide) { + BlockPos blockpos = p_57431_.getBlockPos(); + Entity entity = p_57432_.getOwner(); + if (p_57432_.isOnFire() && p_57432_.mayInteract(p_57429_, blockpos)) { + onCaughtFire(p_57430_, p_57429_, blockpos, null, entity instanceof LivingEntity ? (LivingEntity)entity : null); + p_57429_.removeBlock(blockpos, false); + } + } + + } + + public boolean dropFromExplosion(Explosion p_57427_) { + return false; + } + + protected void createBlockStateDefinition(StateDefinition.Builder p_57464_) { + p_57464_.add(UNSTABLE); + } +} diff --git a/src/main/java/com/drmangotea/tfmg/content/gadgets/explosives/napalm/NapalmBombEntity.java b/src/main/java/com/drmangotea/tfmg/content/gadgets/explosives/napalm/NapalmBombEntity.java new file mode 100644 index 00000000..61df6c7c --- /dev/null +++ b/src/main/java/com/drmangotea/tfmg/content/gadgets/explosives/napalm/NapalmBombEntity.java @@ -0,0 +1,134 @@ +package com.drmangotea.tfmg.content.gadgets.explosives.napalm; + + +import com.drmangotea.tfmg.base.spark.Spark; +import com.drmangotea.tfmg.registry.TFMGEntityTypes; +import com.simibubi.create.Create; +import net.minecraft.core.particles.ParticleTypes; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.network.protocol.Packet; +import net.minecraft.network.protocol.game.ClientboundAddEntityPacket; +import net.minecraft.network.syncher.EntityDataAccessor; +import net.minecraft.network.syncher.EntityDataSerializers; +import net.minecraft.network.syncher.SynchedEntityData; +import net.minecraft.world.entity.*; +import net.minecraft.world.entity.item.PrimedTnt; +import net.minecraft.world.level.Explosion; +import net.minecraft.world.level.Level; + +import javax.annotation.Nullable; + +public class NapalmBombEntity extends Entity { + private static final EntityDataAccessor DATA_FUSE_ID = SynchedEntityData.defineId(PrimedTnt.class, EntityDataSerializers.INT); + private static final int DEFAULT_FUSE_TIME = 80; + @Nullable + private LivingEntity owner; + + public NapalmBombEntity(EntityType p_32076_, Level p_32077_) { + super(p_32076_, p_32077_); + this.blocksBuilding = true; + } + + public NapalmBombEntity(Level p_32079_, double p_32080_, double p_32081_, double p_32082_, @Nullable LivingEntity p_32083_) { + this(TFMGEntityTypes.NAPALM_BOMB.get(), p_32079_); + this.setPos(p_32080_, p_32081_, p_32082_); + double d0 = p_32079_.random.nextDouble() * (double)((float)Math.PI * 2F); + this.setDeltaMovement(-Math.sin(d0) * 0.02D, (double)0.2F, -Math.cos(d0) * 0.02D); + this.setFuse(80); + this.xo = p_32080_; + this.yo = p_32081_; + this.zo = p_32082_; + this.owner = p_32083_; + } + + + + protected void defineSynchedData() { + this.entityData.define(DATA_FUSE_ID, 80); + } + + protected MovementEmission getMovementEmission() { + return MovementEmission.NONE; + } + + public boolean isPickable() { + return !this.isRemoved(); + } + + public void tick() { + if (!this.isNoGravity()) { + this.setDeltaMovement(this.getDeltaMovement().add(0.0D, -0.04D, 0.0D)); + } + + this.move(MoverType.SELF, this.getDeltaMovement()); + this.setDeltaMovement(this.getDeltaMovement().scale(0.98D)); + if (this.onGround) { + this.setDeltaMovement(this.getDeltaMovement().multiply(0.7D, -0.5D, 0.7D)); + } + + int i = this.getFuse() - 1; + this.setFuse(i); + if (i <= 0) { + this.discard(); + if (!this.level.isClientSide) { + this.explode(); + } + } else { + this.updateInWaterStateAndDoFluidPushing(); + if (this.level.isClientSide) { + this.level.addParticle(ParticleTypes.FLAME, this.getX(), this.getY() + 0.5D, this.getZ(), 0.0D, 0.0D, 0.0D); + } + } + + } + + protected void explode() { + + float f = 4.0F; + for (int i=0; i<40;i++){ + float x= Create.RANDOM.nextFloat(360); + float y= Create.RANDOM.nextFloat(360); + float z= Create.RANDOM.nextFloat(360); + Spark spark = TFMGEntityTypes.SPARK.create(level); + spark.moveTo(this.getX(), this.getY()+1, this.getZ()); + spark.shootFromRotation( this,x,y,z,0.3f,1); + this.level.addFreshEntity(spark); + } + this.level.explode(this, this.getX(), this.getY(0.0625D), this.getZ(), 2.5F, Explosion.BlockInteraction.BREAK); + + } + + protected void addAdditionalSaveData(CompoundTag p_32097_) { + p_32097_.putShort("Fuse", (short)this.getFuse()); + } + + protected void readAdditionalSaveData(CompoundTag p_32091_) { + this.setFuse(p_32091_.getShort("Fuse")); + } + + @Nullable + public LivingEntity getOwner() { + return this.owner; + } + + protected float getEyeHeight(Pose p_32088_, EntityDimensions p_32089_) { + return 0.15F; + } + + public void setFuse(int p_32086_) { + this.entityData.set(DATA_FUSE_ID, p_32086_); + } + + public int getFuse() { + return this.entityData.get(DATA_FUSE_ID); + } + + public Packet getAddEntityPacket() { + return new ClientboundAddEntityPacket(this); + } + @SuppressWarnings("unchecked") + public static EntityType.Builder build(EntityType.Builder builder) { + EntityType.Builder entityBuilder = (EntityType.Builder) builder; + return entityBuilder.sized(.25f, .25f); + } +} \ No newline at end of file diff --git a/src/main/java/com/drmangotea/tfmg/content/gadgets/explosives/napalm/NapalmBombRenderer.java b/src/main/java/com/drmangotea/tfmg/content/gadgets/explosives/napalm/NapalmBombRenderer.java new file mode 100644 index 00000000..c667628e --- /dev/null +++ b/src/main/java/com/drmangotea/tfmg/content/gadgets/explosives/napalm/NapalmBombRenderer.java @@ -0,0 +1,50 @@ +package com.drmangotea.tfmg.content.gadgets.explosives.napalm; + +import com.drmangotea.tfmg.registry.TFMGBlocks; +import com.mojang.blaze3d.vertex.PoseStack; +import com.mojang.math.Vector3f; +import net.minecraft.client.renderer.MultiBufferSource; +import net.minecraft.client.renderer.block.BlockRenderDispatcher; +import net.minecraft.client.renderer.entity.EntityRenderer; +import net.minecraft.client.renderer.entity.EntityRendererProvider; +import net.minecraft.client.renderer.entity.TntMinecartRenderer; +import net.minecraft.client.renderer.texture.TextureAtlas; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.util.Mth; +import net.minecraftforge.api.distmarker.Dist; +import net.minecraftforge.api.distmarker.OnlyIn; + +@OnlyIn(Dist.CLIENT) +public class NapalmBombRenderer extends EntityRenderer { + private final BlockRenderDispatcher blockRenderer; + public NapalmBombRenderer(EntityRendererProvider.Context p_174426_) { + super(p_174426_); + this.shadowRadius = 0.5F; + this.blockRenderer = p_174426_.getBlockRenderDispatcher(); + } + + public void render(NapalmBombEntity p_116177_, float p_116178_, float p_116179_, PoseStack p_116180_, MultiBufferSource p_116181_, int p_116182_) { + p_116180_.pushPose(); + p_116180_.translate(0.0D, 0.5D, 0.0D); + int i = p_116177_.getFuse(); + if ((float)i - p_116179_ + 1.0F < 10.0F) { + float f = 1.0F - ((float)i - p_116179_ + 1.0F) / 10.0F; + f = Mth.clamp(f, 0.0F, 1.0F); + f *= f; + f *= f; + float f1 = 1.0F + f * 0.3F; + p_116180_.scale(f1, f1, f1); + } + + p_116180_.mulPose(Vector3f.YP.rotationDegrees(-90.0F)); + p_116180_.translate(-0.5D, -0.5D, 0.5D); + p_116180_.mulPose(Vector3f.YP.rotationDegrees(90.0F)); + TntMinecartRenderer.renderWhiteSolidBlock(this.blockRenderer, TFMGBlocks.NAPALM_BOMB.get().defaultBlockState(), p_116180_, p_116181_, p_116182_, i / 5 % 2 == 0); + p_116180_.popPose(); + super.render(p_116177_, p_116178_, p_116179_, p_116180_, p_116181_, p_116182_); + } + + public ResourceLocation getTextureLocation(NapalmBombEntity p_116175_) { + return TextureAtlas.LOCATION_BLOCKS; + } + } \ No newline at end of file diff --git a/src/main/java/com/drmangotea/tfmg/content/gadgets/explosives/thermite_grenades/ChemicalColor.java b/src/main/java/com/drmangotea/tfmg/content/gadgets/explosives/thermite_grenades/ChemicalColor.java new file mode 100644 index 00000000..8a7e0f30 --- /dev/null +++ b/src/main/java/com/drmangotea/tfmg/content/gadgets/explosives/thermite_grenades/ChemicalColor.java @@ -0,0 +1,7 @@ +package com.drmangotea.tfmg.content.gadgets.explosives.thermite_grenades; + +public enum ChemicalColor { + BASE, + GREEN, + BLUE +} diff --git a/src/main/java/com/drmangotea/tfmg/content/gadgets/explosives/thermite_grenades/ThermiteGrenade.java b/src/main/java/com/drmangotea/tfmg/content/gadgets/explosives/thermite_grenades/ThermiteGrenade.java new file mode 100644 index 00000000..24068d89 --- /dev/null +++ b/src/main/java/com/drmangotea/tfmg/content/gadgets/explosives/thermite_grenades/ThermiteGrenade.java @@ -0,0 +1,118 @@ +package com.drmangotea.tfmg.content.gadgets.explosives.thermite_grenades; + + +import com.drmangotea.tfmg.base.spark.BlueSpark; +import com.drmangotea.tfmg.base.spark.GreenSpark; +import com.drmangotea.tfmg.base.spark.Spark; +import com.drmangotea.tfmg.registry.TFMGEntityTypes; +import com.drmangotea.tfmg.registry.TFMGItems; +import com.simibubi.create.Create; +import net.minecraft.core.particles.ParticleOptions; +import net.minecraft.core.particles.ParticleTypes; +import net.minecraft.world.damagesource.DamageSource; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.EntityType; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.entity.projectile.ThrowableItemProjectile; +import net.minecraft.world.item.Item; +import net.minecraft.world.level.Explosion; +import net.minecraft.world.level.Level; +import net.minecraft.world.phys.EntityHitResult; +import net.minecraft.world.phys.HitResult; + +public class ThermiteGrenade extends ThrowableItemProjectile { + public final ChemicalColor flameColor; + + public ThermiteGrenade(EntityType p_37391_, Level p_37392_) { + super(p_37391_, p_37392_); + this.flameColor =ChemicalColor.BLUE; + } + + + + + + public ThermiteGrenade(Level p_37399_, LivingEntity p_37400_, ChemicalColor color,EntityType grenade) { + super(grenade, p_37400_, p_37399_); + this.flameColor = color; + } + + public ThermiteGrenade(Level p_37394_, double p_37395_, double p_37396_, double p_37397_) { + super(TFMGEntityTypes.THERMITE_GRENADE.get(), p_37395_, p_37396_, p_37397_, p_37394_); + this.flameColor =ChemicalColor.BLUE; + } + + protected Item getDefaultItem() { + return TFMGItems.THERMITE_GRENADE.get(); + } + + private ParticleOptions getParticle() { + + return ParticleTypes.FLAME; + } + + public void handleEntityEvent(byte p_37402_) { + if (p_37402_ == 3) { + ParticleOptions particleoptions = this.getParticle(); + + for(int i = 0; i < 8; ++i) { + this.level.addParticle(particleoptions, this.getX(), this.getY(), this.getZ(), 0.0D, 0.0D, 0.0D); + } + } + + } + + protected void onHitEntity(EntityHitResult p_37404_) { + super.onHitEntity(p_37404_); + Entity entity = p_37404_.getEntity(); + entity.hurt(DamageSource.thrown(this, this.getOwner()), 1); + } + + protected void onHit(HitResult p_37406_) { + super.onHit(p_37406_); + + if (!this.level.isClientSide) { + this.level.broadcastEntityEvent(this, (byte) 3); + + for (int i=0; i<20;i++){ + float x= Create.RANDOM.nextFloat(360); + float y= Create.RANDOM.nextFloat(360); + float z= Create.RANDOM.nextFloat(360); + + if(flameColor==ChemicalColor.GREEN){ + GreenSpark spark = TFMGEntityTypes.GREEN_SPARK.create(level); + spark.moveTo(this.getX(), this.getY()+1, this.getZ()); + spark.shootFromRotation( this,x,y,z,0.2f,1); + this.level.addFreshEntity(spark); + }else + if(flameColor==ChemicalColor.BLUE){ + BlueSpark spark = TFMGEntityTypes.BLUE_SPARK.create(level); + spark.moveTo(this.getX(), this.getY()+1, this.getZ()); + spark.shootFromRotation( this,x,y,z,0.2f,1); + this.level.addFreshEntity(spark); + } else { Spark spark = TFMGEntityTypes.SPARK.create(level); + spark.moveTo(this.getX(), this.getY()+1, this.getZ()); + spark.shootFromRotation( this,x,y,z,0.2f,1); + this.level.addFreshEntity(spark);} + + + + + + + + } + + + this.level.explode(this, this.getX(), this.getY(0.0625D), this.getZ(), 2.0F, Explosion.BlockInteraction.NONE); + this.discard(); + } + + } + + @SuppressWarnings("unchecked") + public static EntityType.Builder build(EntityType.Builder builder) { + EntityType.Builder entityBuilder = (EntityType.Builder) builder; + return entityBuilder.sized(.25f, .25f); + } +} \ No newline at end of file diff --git a/src/main/java/com/drmangotea/tfmg/content/gadgets/explosives/thermite_grenades/ThermiteGrenadeItem.java b/src/main/java/com/drmangotea/tfmg/content/gadgets/explosives/thermite_grenades/ThermiteGrenadeItem.java new file mode 100644 index 00000000..3d5dcdb1 --- /dev/null +++ b/src/main/java/com/drmangotea/tfmg/content/gadgets/explosives/thermite_grenades/ThermiteGrenadeItem.java @@ -0,0 +1,48 @@ +package com.drmangotea.tfmg.content.gadgets.explosives.thermite_grenades; + +import com.drmangotea.tfmg.registry.TFMGEntityTypes; +import net.minecraft.sounds.SoundEvents; +import net.minecraft.sounds.SoundSource; +import net.minecraft.stats.Stats; +import net.minecraft.world.InteractionHand; +import net.minecraft.world.InteractionResultHolder; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.item.Item; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.level.Level; + +public class ThermiteGrenadeItem extends Item { + + public final ChemicalColor flameColor; + + public ThermiteGrenadeItem(Properties p_41383_, ChemicalColor color) { + super(p_41383_); + this.flameColor = color; + } + + public InteractionResultHolder use(Level p_43142_, Player p_43143_, InteractionHand p_43144_) { + ItemStack itemstack = p_43143_.getItemInHand(p_43144_); + p_43143_.getCooldowns().addCooldown(this, 60); + p_43142_.playSound((Player)null, p_43143_.getX(), p_43143_.getY(), p_43143_.getZ(), SoundEvents.EGG_THROW, SoundSource.NEUTRAL, 0.5F, 0.4F / (p_43142_.getRandom().nextFloat() * 0.4F + 0.8F)); + if (!p_43142_.isClientSide) { + ThermiteGrenade grenade; + if(flameColor==ChemicalColor.GREEN) { + grenade = new ThermiteGrenade(p_43142_, p_43143_, flameColor, TFMGEntityTypes.ZINC_GRENADE.get()); + }else if(flameColor==ChemicalColor.BLUE) { + grenade = new ThermiteGrenade(p_43142_, p_43143_, flameColor, TFMGEntityTypes.COPPER_GRENADE.get()); + }else { + grenade = new ThermiteGrenade(p_43142_, p_43143_, flameColor, TFMGEntityTypes.THERMITE_GRENADE.get()); + } + grenade.setItem(itemstack); + grenade.shootFromRotation(p_43143_, p_43143_.getXRot(), p_43143_.getYRot(), 0.0F, 0.5F, 1.0F); + p_43142_.addFreshEntity(grenade); + } + + p_43143_.awardStat(Stats.ITEM_USED.get(this)); + if (!p_43143_.getAbilities().instabuild) { + itemstack.shrink(1); + } + + return InteractionResultHolder.sidedSuccess(itemstack, p_43142_.isClientSide()); + } +} diff --git a/src/main/java/com/drmangotea/tfmg/content/gadgets/explosives/thermite_grenades/ThermiteGrenadeRenderer.java b/src/main/java/com/drmangotea/tfmg/content/gadgets/explosives/thermite_grenades/ThermiteGrenadeRenderer.java new file mode 100644 index 00000000..cbe84b48 --- /dev/null +++ b/src/main/java/com/drmangotea/tfmg/content/gadgets/explosives/thermite_grenades/ThermiteGrenadeRenderer.java @@ -0,0 +1,64 @@ +package com.drmangotea.tfmg.content.gadgets.explosives.thermite_grenades; + + +import com.drmangotea.tfmg.registry.TFMGItems; +import com.mojang.blaze3d.vertex.PoseStack; +import com.mojang.math.Vector3f; +import com.simibubi.create.content.fluids.tank.FluidTankBlock; +import net.minecraft.client.renderer.MultiBufferSource; +import net.minecraft.client.renderer.block.model.ItemTransforms; +import net.minecraft.client.renderer.entity.EntityRenderer; +import net.minecraft.client.renderer.entity.EntityRendererProvider; +import net.minecraft.client.renderer.entity.ItemRenderer; +import net.minecraft.client.renderer.texture.OverlayTexture; +import net.minecraft.client.renderer.texture.TextureAtlas; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.item.Items; +import net.minecraft.world.level.block.state.BlockBehaviour; +import net.minecraftforge.api.distmarker.Dist; +import net.minecraftforge.api.distmarker.OnlyIn; + +@OnlyIn(Dist.CLIENT) +public class ThermiteGrenadeRenderer extends EntityRenderer { + private final ItemRenderer itemRenderer; + private ChemicalColor chemicalColor; + public static ThermiteGrenadeRenderer regular(EntityRendererProvider.Context p_i48440_1_) { + return new ThermiteGrenadeRenderer(p_i48440_1_, ChemicalColor.BASE); + } + public static ThermiteGrenadeRenderer green(EntityRendererProvider.Context p_i48440_1_) { + return new ThermiteGrenadeRenderer(p_i48440_1_, ChemicalColor.GREEN); + } + public static ThermiteGrenadeRenderer blue(EntityRendererProvider.Context p_i48440_1_) { + return new ThermiteGrenadeRenderer(p_i48440_1_, ChemicalColor.BLUE); + } + public ThermiteGrenadeRenderer(EntityRendererProvider.Context p_174114_,ChemicalColor color) { + super(p_174114_); + this.chemicalColor = color; + this.itemRenderer = p_174114_.getItemRenderer(); + } + + + public void render(ThermiteGrenade grenade, float p_114657_, float p_114658_, PoseStack p_114659_, MultiBufferSource p_114660_, int p_114661_) { + p_114659_.pushPose(); + p_114659_.mulPose(this.entityRenderDispatcher.cameraOrientation()); + p_114659_.mulPose(Vector3f.YP.rotationDegrees(180.0F)); + + + + if (chemicalColor == ChemicalColor.GREEN) { + this.itemRenderer.renderStatic(TFMGItems.ZINC_GRENADE.get().getDefaultInstance(), ItemTransforms.TransformType.GROUND, p_114661_, OverlayTexture.NO_OVERLAY, p_114659_, p_114660_, grenade.getId()); + } else if (chemicalColor == ChemicalColor.BLUE) { + this.itemRenderer.renderStatic(TFMGItems.COPPER_GRENADE.get().getDefaultInstance(), ItemTransforms.TransformType.GROUND, p_114661_, OverlayTexture.NO_OVERLAY, p_114659_, p_114660_, grenade.getId()); + } else { + this.itemRenderer.renderStatic(TFMGItems.THERMITE_GRENADE.get().getDefaultInstance(), ItemTransforms.TransformType.GROUND, p_114661_, OverlayTexture.NO_OVERLAY, p_114659_, p_114660_, grenade.getId()); + } + + p_114659_.popPose(); + super.render(grenade, p_114657_, p_114658_, p_114659_, p_114660_, p_114661_); + } + + public ResourceLocation getTextureLocation(ThermiteGrenade p_114654_) { + return TextureAtlas.LOCATION_BLOCKS; + } + +} \ No newline at end of file diff --git a/src/main/java/com/drmangotea/tfmg/content/gadgets/explosives/thermite_grenades/fire/BlueFireBlock.java b/src/main/java/com/drmangotea/tfmg/content/gadgets/explosives/thermite_grenades/fire/BlueFireBlock.java new file mode 100644 index 00000000..36da1fdf --- /dev/null +++ b/src/main/java/com/drmangotea/tfmg/content/gadgets/explosives/thermite_grenades/fire/BlueFireBlock.java @@ -0,0 +1,447 @@ +package com.drmangotea.tfmg.content.gadgets.explosives.thermite_grenades.fire; + +import com.drmangotea.tfmg.registry.TFMGBlocks; +import com.google.common.collect.ImmutableMap; +import it.unimi.dsi.fastutil.objects.Object2IntMap; +import it.unimi.dsi.fastutil.objects.Object2IntOpenHashMap; +import net.minecraft.Util; +import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.util.RandomSource; +import net.minecraft.world.item.context.BlockPlaceContext; +import net.minecraft.world.level.*; +import net.minecraft.world.level.block.*; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.block.state.StateDefinition; +import net.minecraft.world.level.block.state.properties.BlockStateProperties; +import net.minecraft.world.level.block.state.properties.BooleanProperty; +import net.minecraft.world.level.block.state.properties.IntegerProperty; +import net.minecraft.world.phys.shapes.CollisionContext; +import net.minecraft.world.phys.shapes.Shapes; +import net.minecraft.world.phys.shapes.VoxelShape; + +import java.util.Map; +import java.util.function.Function; +import java.util.stream.Collectors; + +public class BlueFireBlock extends BaseFireBlock { + public static final int MAX_AGE = 15; + public static final IntegerProperty AGE = BlockStateProperties.AGE_15; + public static final BooleanProperty NORTH = PipeBlock.NORTH; + public static final BooleanProperty EAST = PipeBlock.EAST; + public static final BooleanProperty SOUTH = PipeBlock.SOUTH; + public static final BooleanProperty WEST = PipeBlock.WEST; + public static final BooleanProperty UP = PipeBlock.UP; + private static final Map PROPERTY_BY_DIRECTION = PipeBlock.PROPERTY_BY_DIRECTION.entrySet().stream().filter((p_53467_) -> { + return p_53467_.getKey() != Direction.DOWN; + }).collect(Util.toMap()); + private static final VoxelShape UP_AABB = Block.box(0.0D, 15.0D, 0.0D, 16.0D, 16.0D, 16.0D); + private static final VoxelShape WEST_AABB = Block.box(0.0D, 0.0D, 0.0D, 1.0D, 16.0D, 16.0D); + private static final VoxelShape EAST_AABB = Block.box(15.0D, 0.0D, 0.0D, 16.0D, 16.0D, 16.0D); + private static final VoxelShape NORTH_AABB = Block.box(0.0D, 0.0D, 0.0D, 16.0D, 16.0D, 1.0D); + private static final VoxelShape SOUTH_AABB = Block.box(0.0D, 0.0D, 15.0D, 16.0D, 16.0D, 16.0D); + private final Map shapesCache; + private static final int IGNITE_INSTANT = 60; + private static final int IGNITE_EASY = 30; + private static final int IGNITE_MEDIUM = 15; + private static final int IGNITE_HARD = 5; + private static final int BURN_INSTANT = 100; + private static final int BURN_EASY = 60; + private static final int BURN_MEDIUM = 20; + private static final int BURN_HARD = 5; + private final Object2IntMap igniteOdds = new Object2IntOpenHashMap<>(); + private final Object2IntMap burnOdds = new Object2IntOpenHashMap<>(); + + public BlueFireBlock(Properties p_53425_) { + super(p_53425_, 1.0F); + this.registerDefaultState(this.stateDefinition.any().setValue(AGE, Integer.valueOf(0)).setValue(NORTH, Boolean.valueOf(false)).setValue(EAST, Boolean.valueOf(false)).setValue(SOUTH, Boolean.valueOf(false)).setValue(WEST, Boolean.valueOf(false)).setValue(UP, Boolean.valueOf(false))); + this.shapesCache = ImmutableMap.copyOf(this.stateDefinition.getPossibleStates().stream().filter((p_53497_) -> { + return p_53497_.getValue(AGE) == 0; + }).collect(Collectors.toMap(Function.identity(), BlueFireBlock::calculateShape))); + } + + private static VoxelShape calculateShape(BlockState p_53491_) { + VoxelShape voxelshape = Shapes.empty(); + if (p_53491_.getValue(UP)) { + voxelshape = UP_AABB; + } + + if (p_53491_.getValue(NORTH)) { + voxelshape = Shapes.or(voxelshape, NORTH_AABB); + } + + if (p_53491_.getValue(SOUTH)) { + voxelshape = Shapes.or(voxelshape, SOUTH_AABB); + } + + if (p_53491_.getValue(EAST)) { + voxelshape = Shapes.or(voxelshape, EAST_AABB); + } + + if (p_53491_.getValue(WEST)) { + voxelshape = Shapes.or(voxelshape, WEST_AABB); + } + + return voxelshape.isEmpty() ? DOWN_AABB : voxelshape; + } + + public BlockState updateShape(BlockState p_53458_, Direction p_53459_, BlockState p_53460_, LevelAccessor p_53461_, BlockPos p_53462_, BlockPos p_53463_) { + return this.canSurvive(p_53458_, p_53461_, p_53462_) ? this.getStateWithAge(p_53461_, p_53462_, p_53458_.getValue(AGE)) : Blocks.AIR.defaultBlockState(); + } + + public VoxelShape getShape(BlockState p_53474_, BlockGetter p_53475_, BlockPos p_53476_, CollisionContext p_53477_) { + return this.shapesCache.get(p_53474_.setValue(AGE, Integer.valueOf(0))); + } + + public BlockState getStateForPlacement(BlockPlaceContext p_53427_) { + return this.getStateForPlacement(p_53427_.getLevel(), p_53427_.getClickedPos()); + } + + protected BlockState getStateForPlacement(BlockGetter p_53471_, BlockPos p_53472_) { + BlockPos blockpos = p_53472_.below(); + BlockState blockstate = p_53471_.getBlockState(blockpos); + if (!this.canCatchFire(p_53471_, p_53472_, Direction.UP) && !blockstate.isFaceSturdy(p_53471_, blockpos, Direction.UP)) { + BlockState blockstate1 = this.defaultBlockState(); + + for(Direction direction : Direction.values()) { + BooleanProperty booleanproperty = PROPERTY_BY_DIRECTION.get(direction); + if (booleanproperty != null) { + blockstate1 = blockstate1.setValue(booleanproperty, Boolean.valueOf(this.canCatchFire(p_53471_, p_53472_.relative(direction), direction.getOpposite()))); + } + } + + return blockstate1; + } else { + return this.defaultBlockState(); + } + } + + public boolean canSurvive(BlockState p_53454_, LevelReader p_53455_, BlockPos p_53456_) { + BlockPos blockpos = p_53456_.below(); + return p_53455_.getBlockState(blockpos).isFaceSturdy(p_53455_, blockpos, Direction.UP) || this.isValidFireLocation(p_53455_, p_53456_); + } + + public void tick(BlockState p_221160_, ServerLevel p_221161_, BlockPos p_221162_, RandomSource p_221163_) { + p_221161_.scheduleTick(p_221162_, this, getFireTickDelay(p_221161_.random)); + if (p_221161_.getGameRules().getBoolean(GameRules.RULE_DOFIRETICK)) { + if (!p_221160_.canSurvive(p_221161_, p_221162_)) { + p_221161_.removeBlock(p_221162_, false); + } + + BlockState blockstate = p_221161_.getBlockState(p_221162_.below()); + boolean flag = blockstate.isFireSource(p_221161_, p_221162_, Direction.UP); + int i = p_221160_.getValue(AGE); + if (!flag && p_221161_.isRaining() && this.isNearRain(p_221161_, p_221162_) && p_221163_.nextFloat() < 0.2F + (float)i * 0.03F) { + p_221161_.removeBlock(p_221162_, false); + } else { + int j = Math.min(15, i + p_221163_.nextInt(3) / 2); + if (i != j) { + p_221160_ = p_221160_.setValue(AGE, Integer.valueOf(j)); + p_221161_.setBlock(p_221162_, p_221160_, 4); + } + + if (!flag) { + if (!this.isValidFireLocation(p_221161_, p_221162_)) { + BlockPos blockpos = p_221162_.below(); + if (!p_221161_.getBlockState(blockpos).isFaceSturdy(p_221161_, blockpos, Direction.UP) || i > 3) { + p_221161_.removeBlock(p_221162_, false); + } + + return; + } + + if (i == 15 && p_221163_.nextInt(4) == 0 && !this.canCatchFire(p_221161_, p_221162_.below(), Direction.UP)) { + p_221161_.removeBlock(p_221162_, false); + return; + } + } + + boolean flag1 = p_221161_.isHumidAt(p_221162_); + int k = flag1 ? -50 : 0; + this.tryCatchFire(p_221161_, p_221162_.east(), 300 + k, p_221163_, i, Direction.WEST); + this.tryCatchFire(p_221161_, p_221162_.west(), 300 + k, p_221163_, i, Direction.EAST); + this.tryCatchFire(p_221161_, p_221162_.below(), 250 + k, p_221163_, i, Direction.UP); + this.tryCatchFire(p_221161_, p_221162_.above(), 250 + k, p_221163_, i, Direction.DOWN); + this.tryCatchFire(p_221161_, p_221162_.north(), 300 + k, p_221163_, i, Direction.SOUTH); + this.tryCatchFire(p_221161_, p_221162_.south(), 300 + k, p_221163_, i, Direction.NORTH); + BlockPos.MutableBlockPos blockpos$mutableblockpos = new BlockPos.MutableBlockPos(); + + for(int l = -1; l <= 1; ++l) { + for(int i1 = -1; i1 <= 1; ++i1) { + for(int j1 = -1; j1 <= 4; ++j1) { + if (l != 0 || j1 != 0 || i1 != 0) { + int k1 = 100; + if (j1 > 1) { + k1 += (j1 - 1) * 100; + } + + blockpos$mutableblockpos.setWithOffset(p_221162_, l, j1, i1); + int l1 = this.getIgniteOdds(p_221161_, blockpos$mutableblockpos); + if (l1 > 0) { + int i2 = (l1 + 40 + p_221161_.getDifficulty().getId() * 7) / (i + 30); + if (flag1) { + i2 /= 2; + } + + if (i2 > 0 && p_221163_.nextInt(k1) <= i2 && (!p_221161_.isRaining() || !this.isNearRain(p_221161_, blockpos$mutableblockpos))) { + int j2 = Math.min(15, i + p_221163_.nextInt(5) / 4); + p_221161_.setBlock(blockpos$mutableblockpos, this.getStateWithAge(p_221161_, blockpos$mutableblockpos, j2), 3); + } + } + } + } + } + } + + } + } + } + + protected boolean isNearRain(Level p_53429_, BlockPos p_53430_) { + return p_53429_.isRainingAt(p_53430_) || p_53429_.isRainingAt(p_53430_.west()) || p_53429_.isRainingAt(p_53430_.east()) || p_53429_.isRainingAt(p_53430_.north()) || p_53429_.isRainingAt(p_53430_.south()); + } + + @Deprecated //Forge: Use IForgeBlockState.getFlammability, Public for default implementation only. + public int getBurnOdds(BlockState p_221165_) { + return p_221165_.hasProperty(BlockStateProperties.WATERLOGGED) && p_221165_.getValue(BlockStateProperties.WATERLOGGED) ? 0 : this.burnOdds.getInt(p_221165_.getBlock()); + } + + @Deprecated //Forge: Use IForgeBlockState.getFireSpreadSpeed + public int getIgniteOdds(BlockState p_221167_) { + return p_221167_.hasProperty(BlockStateProperties.WATERLOGGED) && p_221167_.getValue(BlockStateProperties.WATERLOGGED) ? 0 : this.igniteOdds.getInt(p_221167_.getBlock()); + } + public static BlockState getState(BlockGetter p_49246_, BlockPos p_49247_) { + return ((BlueFireBlock)TFMGColoredFires.BLUE_FIRE.get()).getStateForPlacement(p_49246_, p_49247_); + } + private void tryCatchFire(Level p_53432_, BlockPos p_53433_, int p_53434_, RandomSource p_53435_, int p_53436_, Direction face) { + int i = p_53432_.getBlockState(p_53433_).getFlammability(p_53432_, p_53433_, face); + if (p_53435_.nextInt(p_53434_) < i) { + BlockState blockstate = p_53432_.getBlockState(p_53433_); + if (p_53435_.nextInt(p_53434_ + 10) < 5 && !p_53432_.isRainingAt(p_53433_)) { + int j = Math.min(p_53434_ + p_53435_.nextInt(5) / 4, 15); + p_53432_.setBlock(p_53433_, this.getStateWithAge(p_53432_, p_53433_, j), 3); + } else { + p_53432_.removeBlock(p_53433_, false); + } + + blockstate.onCaughtFire(p_53432_, p_53433_, face, null); + } + + } + + private BlockState getStateWithAge(LevelAccessor p_53438_, BlockPos p_53439_, int p_53440_) { + BlockState blockstate = getState(p_53438_, p_53439_); + return blockstate.is(TFMGColoredFires.BLUE_FIRE.get()) ? blockstate.setValue(AGE, Integer.valueOf(p_53440_)) : blockstate; + } + + private boolean isValidFireLocation(BlockGetter p_53486_, BlockPos p_53487_) { + for(Direction direction : Direction.values()) { + if (this.canCatchFire(p_53486_, p_53487_.relative(direction), direction.getOpposite())) { + return true; + } + } + + return false; + } + + private int getIgniteOdds(LevelReader p_221157_, BlockPos p_221158_) { + if (!p_221157_.isEmptyBlock(p_221158_)) { + return 0; + } else { + int i = 0; + + for(Direction direction : Direction.values()) { + BlockState blockstate = p_221157_.getBlockState(p_221158_.relative(direction)); + i = Math.max(blockstate.getFireSpreadSpeed(p_221157_, p_221158_.relative(direction), direction.getOpposite()), i); + } + + return i; + } + } + + @Deprecated //Forge: Use canCatchFire with more context + protected boolean canBurn(BlockState p_53489_) { + return this.getIgniteOdds(p_53489_) > 0; + } + + public void onPlace(BlockState p_53479_, Level p_53480_, BlockPos p_53481_, BlockState p_53482_, boolean p_53483_) { + super.onPlace(p_53479_, p_53480_, p_53481_, p_53482_, p_53483_); + p_53480_.scheduleTick(p_53481_, this, getFireTickDelay(p_53480_.random)); + } + + private static int getFireTickDelay(RandomSource p_221149_) { + return 30 + p_221149_.nextInt(10); + } + + protected void createBlockStateDefinition(StateDefinition.Builder p_53465_) { + p_53465_.add(AGE, NORTH, EAST, SOUTH, WEST, UP); + } + + private void setFlammable(Block p_53445_, int p_53446_, int p_53447_) { + if (p_53445_ == Blocks.AIR) throw new IllegalArgumentException("Tried to set air on fire... This is bad."); + this.igniteOdds.put(p_53445_, p_53446_); + this.burnOdds.put(p_53445_, p_53447_); + } + + + public boolean canCatchFire(BlockGetter world, BlockPos pos, Direction face) { + return world.getBlockState(pos).isFlammable(world, pos, face); + } + + public static void bootStrap() { + BlueFireBlock fireblock = (BlueFireBlock) TFMGColoredFires.BLUE_FIRE.get(); + fireblock.setFlammable(Blocks.OAK_PLANKS, 5, 20); + fireblock.setFlammable(Blocks.SPRUCE_PLANKS, 5, 20); + fireblock.setFlammable(Blocks.BIRCH_PLANKS, 5, 20); + fireblock.setFlammable(Blocks.JUNGLE_PLANKS, 5, 20); + fireblock.setFlammable(Blocks.ACACIA_PLANKS, 5, 20); + fireblock.setFlammable(Blocks.DARK_OAK_PLANKS, 5, 20); + fireblock.setFlammable(Blocks.MANGROVE_PLANKS, 5, 20); + fireblock.setFlammable(Blocks.OAK_SLAB, 5, 20); + fireblock.setFlammable(Blocks.SPRUCE_SLAB, 5, 20); + fireblock.setFlammable(Blocks.BIRCH_SLAB, 5, 20); + fireblock.setFlammable(Blocks.JUNGLE_SLAB, 5, 20); + fireblock.setFlammable(Blocks.ACACIA_SLAB, 5, 20); + fireblock.setFlammable(Blocks.DARK_OAK_SLAB, 5, 20); + fireblock.setFlammable(Blocks.MANGROVE_SLAB, 5, 20); + fireblock.setFlammable(Blocks.OAK_FENCE_GATE, 5, 20); + fireblock.setFlammable(Blocks.SPRUCE_FENCE_GATE, 5, 20); + fireblock.setFlammable(Blocks.BIRCH_FENCE_GATE, 5, 20); + fireblock.setFlammable(Blocks.JUNGLE_FENCE_GATE, 5, 20); + fireblock.setFlammable(Blocks.ACACIA_FENCE_GATE, 5, 20); + fireblock.setFlammable(Blocks.DARK_OAK_FENCE_GATE, 5, 20); + fireblock.setFlammable(Blocks.MANGROVE_FENCE_GATE, 5, 20); + fireblock.setFlammable(Blocks.OAK_FENCE, 5, 20); + fireblock.setFlammable(Blocks.SPRUCE_FENCE, 5, 20); + fireblock.setFlammable(Blocks.BIRCH_FENCE, 5, 20); + fireblock.setFlammable(Blocks.JUNGLE_FENCE, 5, 20); + fireblock.setFlammable(Blocks.ACACIA_FENCE, 5, 20); + fireblock.setFlammable(Blocks.DARK_OAK_FENCE, 5, 20); + fireblock.setFlammable(Blocks.MANGROVE_FENCE, 5, 20); + fireblock.setFlammable(Blocks.OAK_STAIRS, 5, 20); + fireblock.setFlammable(Blocks.BIRCH_STAIRS, 5, 20); + fireblock.setFlammable(Blocks.SPRUCE_STAIRS, 5, 20); + fireblock.setFlammable(Blocks.JUNGLE_STAIRS, 5, 20); + fireblock.setFlammable(Blocks.ACACIA_STAIRS, 5, 20); + fireblock.setFlammable(Blocks.DARK_OAK_STAIRS, 5, 20); + fireblock.setFlammable(Blocks.MANGROVE_STAIRS, 5, 20); + fireblock.setFlammable(Blocks.OAK_LOG, 5, 5); + fireblock.setFlammable(Blocks.SPRUCE_LOG, 5, 5); + fireblock.setFlammable(Blocks.BIRCH_LOG, 5, 5); + fireblock.setFlammable(Blocks.JUNGLE_LOG, 5, 5); + fireblock.setFlammable(Blocks.ACACIA_LOG, 5, 5); + fireblock.setFlammable(Blocks.DARK_OAK_LOG, 5, 5); + fireblock.setFlammable(Blocks.MANGROVE_LOG, 5, 5); + fireblock.setFlammable(Blocks.STRIPPED_OAK_LOG, 5, 5); + fireblock.setFlammable(Blocks.STRIPPED_SPRUCE_LOG, 5, 5); + fireblock.setFlammable(Blocks.STRIPPED_BIRCH_LOG, 5, 5); + fireblock.setFlammable(Blocks.STRIPPED_JUNGLE_LOG, 5, 5); + fireblock.setFlammable(Blocks.STRIPPED_ACACIA_LOG, 5, 5); + fireblock.setFlammable(Blocks.STRIPPED_DARK_OAK_LOG, 5, 5); + fireblock.setFlammable(Blocks.STRIPPED_MANGROVE_LOG, 5, 5); + fireblock.setFlammable(Blocks.STRIPPED_OAK_WOOD, 5, 5); + fireblock.setFlammable(Blocks.STRIPPED_SPRUCE_WOOD, 5, 5); + fireblock.setFlammable(Blocks.STRIPPED_BIRCH_WOOD, 5, 5); + fireblock.setFlammable(Blocks.STRIPPED_JUNGLE_WOOD, 5, 5); + fireblock.setFlammable(Blocks.STRIPPED_ACACIA_WOOD, 5, 5); + fireblock.setFlammable(Blocks.STRIPPED_DARK_OAK_WOOD, 5, 5); + fireblock.setFlammable(Blocks.STRIPPED_MANGROVE_WOOD, 5, 5); + fireblock.setFlammable(Blocks.OAK_WOOD, 5, 5); + fireblock.setFlammable(Blocks.SPRUCE_WOOD, 5, 5); + fireblock.setFlammable(Blocks.BIRCH_WOOD, 5, 5); + fireblock.setFlammable(Blocks.JUNGLE_WOOD, 5, 5); + fireblock.setFlammable(Blocks.ACACIA_WOOD, 5, 5); + fireblock.setFlammable(Blocks.DARK_OAK_WOOD, 5, 5); + fireblock.setFlammable(Blocks.MANGROVE_WOOD, 5, 5); + fireblock.setFlammable(Blocks.MANGROVE_ROOTS, 5, 20); + fireblock.setFlammable(Blocks.OAK_LEAVES, 30, 60); + fireblock.setFlammable(Blocks.SPRUCE_LEAVES, 30, 60); + fireblock.setFlammable(Blocks.BIRCH_LEAVES, 30, 60); + fireblock.setFlammable(Blocks.JUNGLE_LEAVES, 30, 60); + fireblock.setFlammable(Blocks.ACACIA_LEAVES, 30, 60); + fireblock.setFlammable(Blocks.DARK_OAK_LEAVES, 30, 60); + fireblock.setFlammable(Blocks.MANGROVE_LEAVES, 30, 60); + fireblock.setFlammable(Blocks.BOOKSHELF, 30, 20); + fireblock.setFlammable(Blocks.TNT, 15, 100); + fireblock.setFlammable(Blocks.GRASS, 60, 100); + fireblock.setFlammable(Blocks.FERN, 60, 100); + fireblock.setFlammable(Blocks.DEAD_BUSH, 60, 100); + fireblock.setFlammable(Blocks.SUNFLOWER, 60, 100); + fireblock.setFlammable(Blocks.LILAC, 60, 100); + fireblock.setFlammable(Blocks.ROSE_BUSH, 60, 100); + fireblock.setFlammable(Blocks.PEONY, 60, 100); + fireblock.setFlammable(Blocks.TALL_GRASS, 60, 100); + fireblock.setFlammable(Blocks.LARGE_FERN, 60, 100); + fireblock.setFlammable(Blocks.DANDELION, 60, 100); + fireblock.setFlammable(Blocks.POPPY, 60, 100); + fireblock.setFlammable(Blocks.BLUE_ORCHID, 60, 100); + fireblock.setFlammable(Blocks.ALLIUM, 60, 100); + fireblock.setFlammable(Blocks.AZURE_BLUET, 60, 100); + fireblock.setFlammable(Blocks.RED_TULIP, 60, 100); + fireblock.setFlammable(Blocks.ORANGE_TULIP, 60, 100); + fireblock.setFlammable(Blocks.WHITE_TULIP, 60, 100); + fireblock.setFlammable(Blocks.PINK_TULIP, 60, 100); + fireblock.setFlammable(Blocks.OXEYE_DAISY, 60, 100); + fireblock.setFlammable(Blocks.CORNFLOWER, 60, 100); + fireblock.setFlammable(Blocks.LILY_OF_THE_VALLEY, 60, 100); + fireblock.setFlammable(Blocks.WITHER_ROSE, 60, 100); + fireblock.setFlammable(Blocks.WHITE_WOOL, 30, 60); + fireblock.setFlammable(Blocks.ORANGE_WOOL, 30, 60); + fireblock.setFlammable(Blocks.MAGENTA_WOOL, 30, 60); + fireblock.setFlammable(Blocks.LIGHT_BLUE_WOOL, 30, 60); + fireblock.setFlammable(Blocks.YELLOW_WOOL, 30, 60); + fireblock.setFlammable(Blocks.LIME_WOOL, 30, 60); + fireblock.setFlammable(Blocks.PINK_WOOL, 30, 60); + fireblock.setFlammable(Blocks.GRAY_WOOL, 30, 60); + fireblock.setFlammable(Blocks.LIGHT_GRAY_WOOL, 30, 60); + fireblock.setFlammable(Blocks.CYAN_WOOL, 30, 60); + fireblock.setFlammable(Blocks.PURPLE_WOOL, 30, 60); + fireblock.setFlammable(Blocks.BLUE_WOOL, 30, 60); + fireblock.setFlammable(Blocks.BROWN_WOOL, 30, 60); + fireblock.setFlammable(Blocks.GREEN_WOOL, 30, 60); + fireblock.setFlammable(Blocks.RED_WOOL, 30, 60); + fireblock.setFlammable(Blocks.BLACK_WOOL, 30, 60); + fireblock.setFlammable(Blocks.VINE, 15, 100); + fireblock.setFlammable(Blocks.COAL_BLOCK, 5, 5); + fireblock.setFlammable(Blocks.HAY_BLOCK, 60, 20); + fireblock.setFlammable(Blocks.TARGET, 15, 20); + fireblock.setFlammable(Blocks.WHITE_CARPET, 60, 20); + fireblock.setFlammable(Blocks.ORANGE_CARPET, 60, 20); + fireblock.setFlammable(Blocks.MAGENTA_CARPET, 60, 20); + fireblock.setFlammable(Blocks.LIGHT_BLUE_CARPET, 60, 20); + fireblock.setFlammable(Blocks.YELLOW_CARPET, 60, 20); + fireblock.setFlammable(Blocks.LIME_CARPET, 60, 20); + fireblock.setFlammable(Blocks.PINK_CARPET, 60, 20); + fireblock.setFlammable(Blocks.GRAY_CARPET, 60, 20); + fireblock.setFlammable(Blocks.LIGHT_GRAY_CARPET, 60, 20); + fireblock.setFlammable(Blocks.CYAN_CARPET, 60, 20); + fireblock.setFlammable(Blocks.PURPLE_CARPET, 60, 20); + fireblock.setFlammable(Blocks.GREEN_CARPET, 60, 20); + fireblock.setFlammable(Blocks.BROWN_CARPET, 60, 20); + fireblock.setFlammable(Blocks.BLUE_CARPET, 60, 20); + fireblock.setFlammable(Blocks.RED_CARPET, 60, 20); + fireblock.setFlammable(Blocks.BLACK_CARPET, 60, 20); + fireblock.setFlammable(Blocks.DRIED_KELP_BLOCK, 30, 60); + fireblock.setFlammable(Blocks.BAMBOO, 60, 60); + fireblock.setFlammable(Blocks.SCAFFOLDING, 60, 60); + fireblock.setFlammable(Blocks.LECTERN, 30, 20); + fireblock.setFlammable(Blocks.COMPOSTER, 5, 20); + fireblock.setFlammable(Blocks.SWEET_BERRY_BUSH, 60, 100); + fireblock.setFlammable(Blocks.BEEHIVE, 5, 20); + fireblock.setFlammable(Blocks.BEE_NEST, 30, 20); + fireblock.setFlammable(Blocks.AZALEA_LEAVES, 30, 60); + fireblock.setFlammable(Blocks.FLOWERING_AZALEA_LEAVES, 30, 60); + fireblock.setFlammable(Blocks.CAVE_VINES, 15, 60); + fireblock.setFlammable(Blocks.CAVE_VINES_PLANT, 15, 60); + fireblock.setFlammable(Blocks.SPORE_BLOSSOM, 60, 100); + fireblock.setFlammable(Blocks.AZALEA, 30, 60); + fireblock.setFlammable(Blocks.FLOWERING_AZALEA, 30, 60); + fireblock.setFlammable(Blocks.BIG_DRIPLEAF, 60, 100); + fireblock.setFlammable(Blocks.BIG_DRIPLEAF_STEM, 60, 100); + fireblock.setFlammable(Blocks.SMALL_DRIPLEAF, 60, 100); + fireblock.setFlammable(Blocks.HANGING_ROOTS, 30, 60); + fireblock.setFlammable(Blocks.GLOW_LICHEN, 15, 100); + } +} + diff --git a/src/main/java/com/drmangotea/tfmg/content/gadgets/explosives/thermite_grenades/fire/GreenFireBlock.java b/src/main/java/com/drmangotea/tfmg/content/gadgets/explosives/thermite_grenades/fire/GreenFireBlock.java new file mode 100644 index 00000000..90f32faa --- /dev/null +++ b/src/main/java/com/drmangotea/tfmg/content/gadgets/explosives/thermite_grenades/fire/GreenFireBlock.java @@ -0,0 +1,451 @@ +package com.drmangotea.tfmg.content.gadgets.explosives.thermite_grenades.fire; + +import com.drmangotea.tfmg.registry.TFMGBlocks; +import com.google.common.collect.ImmutableMap; +import it.unimi.dsi.fastutil.objects.Object2IntMap; +import it.unimi.dsi.fastutil.objects.Object2IntOpenHashMap; +import java.util.Map; +import java.util.function.Function; +import java.util.stream.Collectors; +import net.minecraft.Util; +import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.util.RandomSource; +import net.minecraft.world.item.context.BlockPlaceContext; +import net.minecraft.world.level.BlockGetter; +import net.minecraft.world.level.GameRules; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.LevelAccessor; +import net.minecraft.world.level.LevelReader; + +import net.minecraft.world.level.block.*; +import net.minecraft.world.level.block.state.BlockBehaviour; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.block.state.StateDefinition; +import net.minecraft.world.level.block.state.properties.BlockStateProperties; +import net.minecraft.world.level.block.state.properties.BooleanProperty; +import net.minecraft.world.level.block.state.properties.IntegerProperty; +import net.minecraft.world.phys.shapes.CollisionContext; +import net.minecraft.world.phys.shapes.Shapes; +import net.minecraft.world.phys.shapes.VoxelShape; + +public class GreenFireBlock extends BaseFireBlock { + public static final int MAX_AGE = 15; + public static final IntegerProperty AGE = BlockStateProperties.AGE_15; + public static final BooleanProperty NORTH = PipeBlock.NORTH; + public static final BooleanProperty EAST = PipeBlock.EAST; + public static final BooleanProperty SOUTH = PipeBlock.SOUTH; + public static final BooleanProperty WEST = PipeBlock.WEST; + public static final BooleanProperty UP = PipeBlock.UP; + private static final Map PROPERTY_BY_DIRECTION = PipeBlock.PROPERTY_BY_DIRECTION.entrySet().stream().filter((p_53467_) -> { + return p_53467_.getKey() != Direction.DOWN; + }).collect(Util.toMap()); + private static final VoxelShape UP_AABB = Block.box(0.0D, 15.0D, 0.0D, 16.0D, 16.0D, 16.0D); + private static final VoxelShape WEST_AABB = Block.box(0.0D, 0.0D, 0.0D, 1.0D, 16.0D, 16.0D); + private static final VoxelShape EAST_AABB = Block.box(15.0D, 0.0D, 0.0D, 16.0D, 16.0D, 16.0D); + private static final VoxelShape NORTH_AABB = Block.box(0.0D, 0.0D, 0.0D, 16.0D, 16.0D, 1.0D); + private static final VoxelShape SOUTH_AABB = Block.box(0.0D, 0.0D, 15.0D, 16.0D, 16.0D, 16.0D); + private final Map shapesCache; + private static final int IGNITE_INSTANT = 60; + private static final int IGNITE_EASY = 30; + private static final int IGNITE_MEDIUM = 15; + private static final int IGNITE_HARD = 5; + private static final int BURN_INSTANT = 100; + private static final int BURN_EASY = 60; + private static final int BURN_MEDIUM = 20; + private static final int BURN_HARD = 5; + private final Object2IntMap igniteOdds = new Object2IntOpenHashMap<>(); + private final Object2IntMap burnOdds = new Object2IntOpenHashMap<>(); + + public GreenFireBlock(BlockBehaviour.Properties p_53425_) { + super(p_53425_, 1.0F); + this.registerDefaultState(this.stateDefinition.any().setValue(AGE, Integer.valueOf(0)).setValue(NORTH, Boolean.valueOf(false)).setValue(EAST, Boolean.valueOf(false)).setValue(SOUTH, Boolean.valueOf(false)).setValue(WEST, Boolean.valueOf(false)).setValue(UP, Boolean.valueOf(false))); + this.shapesCache = ImmutableMap.copyOf(this.stateDefinition.getPossibleStates().stream().filter((p_53497_) -> { + return p_53497_.getValue(AGE) == 0; + }).collect(Collectors.toMap(Function.identity(), GreenFireBlock::calculateShape))); + } + + private static VoxelShape calculateShape(BlockState p_53491_) { + VoxelShape voxelshape = Shapes.empty(); + if (p_53491_.getValue(UP)) { + voxelshape = UP_AABB; + } + + if (p_53491_.getValue(NORTH)) { + voxelshape = Shapes.or(voxelshape, NORTH_AABB); + } + + if (p_53491_.getValue(SOUTH)) { + voxelshape = Shapes.or(voxelshape, SOUTH_AABB); + } + + if (p_53491_.getValue(EAST)) { + voxelshape = Shapes.or(voxelshape, EAST_AABB); + } + + if (p_53491_.getValue(WEST)) { + voxelshape = Shapes.or(voxelshape, WEST_AABB); + } + + return voxelshape.isEmpty() ? DOWN_AABB : voxelshape; + } + + public BlockState updateShape(BlockState p_53458_, Direction p_53459_, BlockState p_53460_, LevelAccessor p_53461_, BlockPos p_53462_, BlockPos p_53463_) { + return this.canSurvive(p_53458_, p_53461_, p_53462_) ? this.getStateWithAge(p_53461_, p_53462_, p_53458_.getValue(AGE)) : Blocks.AIR.defaultBlockState(); + } + + public VoxelShape getShape(BlockState p_53474_, BlockGetter p_53475_, BlockPos p_53476_, CollisionContext p_53477_) { + return this.shapesCache.get(p_53474_.setValue(AGE, Integer.valueOf(0))); + } + + public BlockState getStateForPlacement(BlockPlaceContext p_53427_) { + return this.getStateForPlacement(p_53427_.getLevel(), p_53427_.getClickedPos()); + } + + protected BlockState getStateForPlacement(BlockGetter p_53471_, BlockPos p_53472_) { + BlockPos blockpos = p_53472_.below(); + BlockState blockstate = p_53471_.getBlockState(blockpos); + if (!this.canCatchFire(p_53471_, p_53472_, Direction.UP) && !blockstate.isFaceSturdy(p_53471_, blockpos, Direction.UP)) { + BlockState blockstate1 = this.defaultBlockState(); + + for(Direction direction : Direction.values()) { + BooleanProperty booleanproperty = PROPERTY_BY_DIRECTION.get(direction); + if (booleanproperty != null) { + blockstate1 = blockstate1.setValue(booleanproperty, Boolean.valueOf(this.canCatchFire(p_53471_, p_53472_.relative(direction), direction.getOpposite()))); + } + } + + return blockstate1; + } else { + return this.defaultBlockState(); + } + } + + public boolean canSurvive(BlockState p_53454_, LevelReader p_53455_, BlockPos p_53456_) { + BlockPos blockpos = p_53456_.below(); + return p_53455_.getBlockState(blockpos).isFaceSturdy(p_53455_, blockpos, Direction.UP) || this.isValidFireLocation(p_53455_, p_53456_); + } + + public void tick(BlockState p_221160_, ServerLevel p_221161_, BlockPos p_221162_, RandomSource p_221163_) { + p_221161_.scheduleTick(p_221162_, this, getFireTickDelay(p_221161_.random)); + if (p_221161_.getGameRules().getBoolean(GameRules.RULE_DOFIRETICK)) { + if (!p_221160_.canSurvive(p_221161_, p_221162_)) { + p_221161_.removeBlock(p_221162_, false); + } + + BlockState blockstate = p_221161_.getBlockState(p_221162_.below()); + boolean flag = blockstate.isFireSource(p_221161_, p_221162_, Direction.UP); + int i = p_221160_.getValue(AGE); + if (!flag && p_221161_.isRaining() && this.isNearRain(p_221161_, p_221162_) && p_221163_.nextFloat() < 0.2F + (float)i * 0.03F) { + p_221161_.removeBlock(p_221162_, false); + } else { + int j = Math.min(15, i + p_221163_.nextInt(3) / 2); + if (i != j) { + p_221160_ = p_221160_.setValue(AGE, Integer.valueOf(j)); + p_221161_.setBlock(p_221162_, p_221160_, 4); + } + + if (!flag) { + if (!this.isValidFireLocation(p_221161_, p_221162_)) { + BlockPos blockpos = p_221162_.below(); + if (!p_221161_.getBlockState(blockpos).isFaceSturdy(p_221161_, blockpos, Direction.UP) || i > 3) { + p_221161_.removeBlock(p_221162_, false); + } + + return; + } + + if (i == 15 && p_221163_.nextInt(4) == 0 && !this.canCatchFire(p_221161_, p_221162_.below(), Direction.UP)) { + p_221161_.removeBlock(p_221162_, false); + return; + } + } + + boolean flag1 = p_221161_.isHumidAt(p_221162_); + int k = flag1 ? -50 : 0; + this.tryCatchFire(p_221161_, p_221162_.east(), 300 + k, p_221163_, i, Direction.WEST); + this.tryCatchFire(p_221161_, p_221162_.west(), 300 + k, p_221163_, i, Direction.EAST); + this.tryCatchFire(p_221161_, p_221162_.below(), 250 + k, p_221163_, i, Direction.UP); + this.tryCatchFire(p_221161_, p_221162_.above(), 250 + k, p_221163_, i, Direction.DOWN); + this.tryCatchFire(p_221161_, p_221162_.north(), 300 + k, p_221163_, i, Direction.SOUTH); + this.tryCatchFire(p_221161_, p_221162_.south(), 300 + k, p_221163_, i, Direction.NORTH); + BlockPos.MutableBlockPos blockpos$mutableblockpos = new BlockPos.MutableBlockPos(); + + for(int l = -1; l <= 1; ++l) { + for(int i1 = -1; i1 <= 1; ++i1) { + for(int j1 = -1; j1 <= 4; ++j1) { + if (l != 0 || j1 != 0 || i1 != 0) { + int k1 = 100; + if (j1 > 1) { + k1 += (j1 - 1) * 100; + } + + blockpos$mutableblockpos.setWithOffset(p_221162_, l, j1, i1); + int l1 = this.getIgniteOdds(p_221161_, blockpos$mutableblockpos); + if (l1 > 0) { + int i2 = (l1 + 40 + p_221161_.getDifficulty().getId() * 7) / (i + 30); + if (flag1) { + i2 /= 2; + } + + if (i2 > 0 && p_221163_.nextInt(k1) <= i2 && (!p_221161_.isRaining() || !this.isNearRain(p_221161_, blockpos$mutableblockpos))) { + int j2 = Math.min(15, i + p_221163_.nextInt(5) / 4); + p_221161_.setBlock(blockpos$mutableblockpos, this.getStateWithAge(p_221161_, blockpos$mutableblockpos, j2), 3); + } + } + } + } + } + } + + } + } + } + + protected boolean isNearRain(Level p_53429_, BlockPos p_53430_) { + return p_53429_.isRainingAt(p_53430_) || p_53429_.isRainingAt(p_53430_.west()) || p_53429_.isRainingAt(p_53430_.east()) || p_53429_.isRainingAt(p_53430_.north()) || p_53429_.isRainingAt(p_53430_.south()); + } + + @Deprecated //Forge: Use IForgeBlockState.getFlammability, Public for default implementation only. + public int getBurnOdds(BlockState p_221165_) { + return p_221165_.hasProperty(BlockStateProperties.WATERLOGGED) && p_221165_.getValue(BlockStateProperties.WATERLOGGED) ? 0 : this.burnOdds.getInt(p_221165_.getBlock()); + } + + @Deprecated //Forge: Use IForgeBlockState.getFireSpreadSpeed + public int getIgniteOdds(BlockState p_221167_) { + return p_221167_.hasProperty(BlockStateProperties.WATERLOGGED) && p_221167_.getValue(BlockStateProperties.WATERLOGGED) ? 0 : this.igniteOdds.getInt(p_221167_.getBlock()); + } + + private void tryCatchFire(Level p_53432_, BlockPos p_53433_, int p_53434_, RandomSource p_53435_, int p_53436_, Direction face) { + int i = p_53432_.getBlockState(p_53433_).getFlammability(p_53432_, p_53433_, face); + if (p_53435_.nextInt(p_53434_) < i) { + BlockState blockstate = p_53432_.getBlockState(p_53433_); + if (p_53435_.nextInt(p_53434_ + 10) < 5 && !p_53432_.isRainingAt(p_53433_)) { + int j = Math.min(p_53434_ + p_53435_.nextInt(5) / 4, 15); + p_53432_.setBlock(p_53433_, this.getStateWithAge(p_53432_, p_53433_, j), 3); + } else { + p_53432_.removeBlock(p_53433_, false); + } + + blockstate.onCaughtFire(p_53432_, p_53433_, face, null); + } + + } + private BlockState getStateWithAge(LevelAccessor p_53438_, BlockPos p_53439_, int p_53440_) { + BlockState blockstate = getState(p_53438_, p_53439_); + return blockstate.is(TFMGColoredFires.GREEN_FIRE.get()) ? blockstate.setValue(AGE, Integer.valueOf(p_53440_)) : blockstate; + } + + private boolean isValidFireLocation(BlockGetter p_53486_, BlockPos p_53487_) { + for(Direction direction : Direction.values()) { + if (this.canCatchFire(p_53486_, p_53487_.relative(direction), direction.getOpposite())) { + return true; + } + } + + return false; + } + + private int getIgniteOdds(LevelReader p_221157_, BlockPos p_221158_) { + if (!p_221157_.isEmptyBlock(p_221158_)) { + return 0; + } else { + int i = 0; + + for(Direction direction : Direction.values()) { + BlockState blockstate = p_221157_.getBlockState(p_221158_.relative(direction)); + i = Math.max(blockstate.getFireSpreadSpeed(p_221157_, p_221158_.relative(direction), direction.getOpposite()), i); + } + + return i; + } + } + + @Deprecated //Forge: Use canCatchFire with more context + protected boolean canBurn(BlockState p_53489_) { + return this.getIgniteOdds(p_53489_) > 0; + } + + public void onPlace(BlockState p_53479_, Level p_53480_, BlockPos p_53481_, BlockState p_53482_, boolean p_53483_) { + super.onPlace(p_53479_, p_53480_, p_53481_, p_53482_, p_53483_); + p_53480_.scheduleTick(p_53481_, this, getFireTickDelay(p_53480_.random)); + } + + private static int getFireTickDelay(RandomSource p_221149_) { + return 30 + p_221149_.nextInt(10); + } + + protected void createBlockStateDefinition(StateDefinition.Builder p_53465_) { + p_53465_.add(AGE, NORTH, EAST, SOUTH, WEST, UP); + } + public static BlockState getState(BlockGetter p_49246_, BlockPos p_49247_) { + return ((GreenFireBlock)TFMGColoredFires.GREEN_FIRE.get()).getStateForPlacement(p_49246_, p_49247_); + } + private void setFlammable(Block p_53445_, int p_53446_, int p_53447_) { + if (p_53445_ == Blocks.AIR) throw new IllegalArgumentException("Tried to set air on fire... This is bad."); + this.igniteOdds.put(p_53445_, p_53446_); + this.burnOdds.put(p_53445_, p_53447_); + } + + + public boolean canCatchFire(BlockGetter world, BlockPos pos, Direction face) { + return world.getBlockState(pos).isFlammable(world, pos, face); + } + + public static void bootStrap() { + GreenFireBlock fireblock = (GreenFireBlock) TFMGColoredFires.GREEN_FIRE.get(); + fireblock.setFlammable(Blocks.OAK_PLANKS, 5, 20); + fireblock.setFlammable(Blocks.SPRUCE_PLANKS, 5, 20); + fireblock.setFlammable(Blocks.BIRCH_PLANKS, 5, 20); + fireblock.setFlammable(Blocks.JUNGLE_PLANKS, 5, 20); + fireblock.setFlammable(Blocks.ACACIA_PLANKS, 5, 20); + fireblock.setFlammable(Blocks.DARK_OAK_PLANKS, 5, 20); + fireblock.setFlammable(Blocks.MANGROVE_PLANKS, 5, 20); + fireblock.setFlammable(Blocks.OAK_SLAB, 5, 20); + fireblock.setFlammable(Blocks.SPRUCE_SLAB, 5, 20); + fireblock.setFlammable(Blocks.BIRCH_SLAB, 5, 20); + fireblock.setFlammable(Blocks.JUNGLE_SLAB, 5, 20); + fireblock.setFlammable(Blocks.ACACIA_SLAB, 5, 20); + fireblock.setFlammable(Blocks.DARK_OAK_SLAB, 5, 20); + fireblock.setFlammable(Blocks.MANGROVE_SLAB, 5, 20); + fireblock.setFlammable(Blocks.OAK_FENCE_GATE, 5, 20); + fireblock.setFlammable(Blocks.SPRUCE_FENCE_GATE, 5, 20); + fireblock.setFlammable(Blocks.BIRCH_FENCE_GATE, 5, 20); + fireblock.setFlammable(Blocks.JUNGLE_FENCE_GATE, 5, 20); + fireblock.setFlammable(Blocks.ACACIA_FENCE_GATE, 5, 20); + fireblock.setFlammable(Blocks.DARK_OAK_FENCE_GATE, 5, 20); + fireblock.setFlammable(Blocks.MANGROVE_FENCE_GATE, 5, 20); + fireblock.setFlammable(Blocks.OAK_FENCE, 5, 20); + fireblock.setFlammable(Blocks.SPRUCE_FENCE, 5, 20); + fireblock.setFlammable(Blocks.BIRCH_FENCE, 5, 20); + fireblock.setFlammable(Blocks.JUNGLE_FENCE, 5, 20); + fireblock.setFlammable(Blocks.ACACIA_FENCE, 5, 20); + fireblock.setFlammable(Blocks.DARK_OAK_FENCE, 5, 20); + fireblock.setFlammable(Blocks.MANGROVE_FENCE, 5, 20); + fireblock.setFlammable(Blocks.OAK_STAIRS, 5, 20); + fireblock.setFlammable(Blocks.BIRCH_STAIRS, 5, 20); + fireblock.setFlammable(Blocks.SPRUCE_STAIRS, 5, 20); + fireblock.setFlammable(Blocks.JUNGLE_STAIRS, 5, 20); + fireblock.setFlammable(Blocks.ACACIA_STAIRS, 5, 20); + fireblock.setFlammable(Blocks.DARK_OAK_STAIRS, 5, 20); + fireblock.setFlammable(Blocks.MANGROVE_STAIRS, 5, 20); + fireblock.setFlammable(Blocks.OAK_LOG, 5, 5); + fireblock.setFlammable(Blocks.SPRUCE_LOG, 5, 5); + fireblock.setFlammable(Blocks.BIRCH_LOG, 5, 5); + fireblock.setFlammable(Blocks.JUNGLE_LOG, 5, 5); + fireblock.setFlammable(Blocks.ACACIA_LOG, 5, 5); + fireblock.setFlammable(Blocks.DARK_OAK_LOG, 5, 5); + fireblock.setFlammable(Blocks.MANGROVE_LOG, 5, 5); + fireblock.setFlammable(Blocks.STRIPPED_OAK_LOG, 5, 5); + fireblock.setFlammable(Blocks.STRIPPED_SPRUCE_LOG, 5, 5); + fireblock.setFlammable(Blocks.STRIPPED_BIRCH_LOG, 5, 5); + fireblock.setFlammable(Blocks.STRIPPED_JUNGLE_LOG, 5, 5); + fireblock.setFlammable(Blocks.STRIPPED_ACACIA_LOG, 5, 5); + fireblock.setFlammable(Blocks.STRIPPED_DARK_OAK_LOG, 5, 5); + fireblock.setFlammable(Blocks.STRIPPED_MANGROVE_LOG, 5, 5); + fireblock.setFlammable(Blocks.STRIPPED_OAK_WOOD, 5, 5); + fireblock.setFlammable(Blocks.STRIPPED_SPRUCE_WOOD, 5, 5); + fireblock.setFlammable(Blocks.STRIPPED_BIRCH_WOOD, 5, 5); + fireblock.setFlammable(Blocks.STRIPPED_JUNGLE_WOOD, 5, 5); + fireblock.setFlammable(Blocks.STRIPPED_ACACIA_WOOD, 5, 5); + fireblock.setFlammable(Blocks.STRIPPED_DARK_OAK_WOOD, 5, 5); + fireblock.setFlammable(Blocks.STRIPPED_MANGROVE_WOOD, 5, 5); + fireblock.setFlammable(Blocks.OAK_WOOD, 5, 5); + fireblock.setFlammable(Blocks.SPRUCE_WOOD, 5, 5); + fireblock.setFlammable(Blocks.BIRCH_WOOD, 5, 5); + fireblock.setFlammable(Blocks.JUNGLE_WOOD, 5, 5); + fireblock.setFlammable(Blocks.ACACIA_WOOD, 5, 5); + fireblock.setFlammable(Blocks.DARK_OAK_WOOD, 5, 5); + fireblock.setFlammable(Blocks.MANGROVE_WOOD, 5, 5); + fireblock.setFlammable(Blocks.MANGROVE_ROOTS, 5, 20); + fireblock.setFlammable(Blocks.OAK_LEAVES, 30, 60); + fireblock.setFlammable(Blocks.SPRUCE_LEAVES, 30, 60); + fireblock.setFlammable(Blocks.BIRCH_LEAVES, 30, 60); + fireblock.setFlammable(Blocks.JUNGLE_LEAVES, 30, 60); + fireblock.setFlammable(Blocks.ACACIA_LEAVES, 30, 60); + fireblock.setFlammable(Blocks.DARK_OAK_LEAVES, 30, 60); + fireblock.setFlammable(Blocks.MANGROVE_LEAVES, 30, 60); + fireblock.setFlammable(Blocks.BOOKSHELF, 30, 20); + fireblock.setFlammable(Blocks.TNT, 15, 100); + fireblock.setFlammable(Blocks.GRASS, 60, 100); + fireblock.setFlammable(Blocks.FERN, 60, 100); + fireblock.setFlammable(Blocks.DEAD_BUSH, 60, 100); + fireblock.setFlammable(Blocks.SUNFLOWER, 60, 100); + fireblock.setFlammable(Blocks.LILAC, 60, 100); + fireblock.setFlammable(Blocks.ROSE_BUSH, 60, 100); + fireblock.setFlammable(Blocks.PEONY, 60, 100); + fireblock.setFlammable(Blocks.TALL_GRASS, 60, 100); + fireblock.setFlammable(Blocks.LARGE_FERN, 60, 100); + fireblock.setFlammable(Blocks.DANDELION, 60, 100); + fireblock.setFlammable(Blocks.POPPY, 60, 100); + fireblock.setFlammable(Blocks.BLUE_ORCHID, 60, 100); + fireblock.setFlammable(Blocks.ALLIUM, 60, 100); + fireblock.setFlammable(Blocks.AZURE_BLUET, 60, 100); + fireblock.setFlammable(Blocks.RED_TULIP, 60, 100); + fireblock.setFlammable(Blocks.ORANGE_TULIP, 60, 100); + fireblock.setFlammable(Blocks.WHITE_TULIP, 60, 100); + fireblock.setFlammable(Blocks.PINK_TULIP, 60, 100); + fireblock.setFlammable(Blocks.OXEYE_DAISY, 60, 100); + fireblock.setFlammable(Blocks.CORNFLOWER, 60, 100); + fireblock.setFlammable(Blocks.LILY_OF_THE_VALLEY, 60, 100); + fireblock.setFlammable(Blocks.WITHER_ROSE, 60, 100); + fireblock.setFlammable(Blocks.WHITE_WOOL, 30, 60); + fireblock.setFlammable(Blocks.ORANGE_WOOL, 30, 60); + fireblock.setFlammable(Blocks.MAGENTA_WOOL, 30, 60); + fireblock.setFlammable(Blocks.LIGHT_BLUE_WOOL, 30, 60); + fireblock.setFlammable(Blocks.YELLOW_WOOL, 30, 60); + fireblock.setFlammable(Blocks.LIME_WOOL, 30, 60); + fireblock.setFlammable(Blocks.PINK_WOOL, 30, 60); + fireblock.setFlammable(Blocks.GRAY_WOOL, 30, 60); + fireblock.setFlammable(Blocks.LIGHT_GRAY_WOOL, 30, 60); + fireblock.setFlammable(Blocks.CYAN_WOOL, 30, 60); + fireblock.setFlammable(Blocks.PURPLE_WOOL, 30, 60); + fireblock.setFlammable(Blocks.GREEN_WOOL, 30, 60); + fireblock.setFlammable(Blocks.BROWN_WOOL, 30, 60); + fireblock.setFlammable(Blocks.BLUE_WOOL, 30, 60); + fireblock.setFlammable(Blocks.RED_WOOL, 30, 60); + fireblock.setFlammable(Blocks.BLACK_WOOL, 30, 60); + fireblock.setFlammable(Blocks.VINE, 15, 100); + fireblock.setFlammable(Blocks.COAL_BLOCK, 5, 5); + fireblock.setFlammable(Blocks.HAY_BLOCK, 60, 20); + fireblock.setFlammable(Blocks.TARGET, 15, 20); + fireblock.setFlammable(Blocks.WHITE_CARPET, 60, 20); + fireblock.setFlammable(Blocks.ORANGE_CARPET, 60, 20); + fireblock.setFlammable(Blocks.MAGENTA_CARPET, 60, 20); + fireblock.setFlammable(Blocks.LIGHT_BLUE_CARPET, 60, 20); + fireblock.setFlammable(Blocks.YELLOW_CARPET, 60, 20); + fireblock.setFlammable(Blocks.LIME_CARPET, 60, 20); + fireblock.setFlammable(Blocks.PINK_CARPET, 60, 20); + fireblock.setFlammable(Blocks.GRAY_CARPET, 60, 20); + fireblock.setFlammable(Blocks.LIGHT_GRAY_CARPET, 60, 20); + fireblock.setFlammable(Blocks.CYAN_CARPET, 60, 20); + fireblock.setFlammable(Blocks.PURPLE_CARPET, 60, 20); + fireblock.setFlammable(Blocks.BLUE_CARPET, 60, 20); + fireblock.setFlammable(Blocks.BROWN_CARPET, 60, 20); + fireblock.setFlammable(Blocks.GREEN_CARPET, 60, 20); + fireblock.setFlammable(Blocks.RED_CARPET, 60, 20); + fireblock.setFlammable(Blocks.BLACK_CARPET, 60, 20); + fireblock.setFlammable(Blocks.DRIED_KELP_BLOCK, 30, 60); + fireblock.setFlammable(Blocks.BAMBOO, 60, 60); + fireblock.setFlammable(Blocks.SCAFFOLDING, 60, 60); + fireblock.setFlammable(Blocks.LECTERN, 30, 20); + fireblock.setFlammable(Blocks.COMPOSTER, 5, 20); + fireblock.setFlammable(Blocks.SWEET_BERRY_BUSH, 60, 100); + fireblock.setFlammable(Blocks.BEEHIVE, 5, 20); + fireblock.setFlammable(Blocks.BEE_NEST, 30, 20); + fireblock.setFlammable(Blocks.AZALEA_LEAVES, 30, 60); + fireblock.setFlammable(Blocks.FLOWERING_AZALEA_LEAVES, 30, 60); + fireblock.setFlammable(Blocks.CAVE_VINES, 15, 60); + fireblock.setFlammable(Blocks.CAVE_VINES_PLANT, 15, 60); + fireblock.setFlammable(Blocks.SPORE_BLOSSOM, 60, 100); + fireblock.setFlammable(Blocks.AZALEA, 30, 60); + fireblock.setFlammable(Blocks.FLOWERING_AZALEA, 30, 60); + fireblock.setFlammable(Blocks.BIG_DRIPLEAF, 60, 100); + fireblock.setFlammable(Blocks.BIG_DRIPLEAF_STEM, 60, 100); + fireblock.setFlammable(Blocks.SMALL_DRIPLEAF, 60, 100); + fireblock.setFlammable(Blocks.HANGING_ROOTS, 30, 60); + fireblock.setFlammable(Blocks.GLOW_LICHEN, 15, 100); + } +} + diff --git a/src/main/java/com/drmangotea/tfmg/content/gadgets/explosives/thermite_grenades/fire/TFMGColoredFires.java b/src/main/java/com/drmangotea/tfmg/content/gadgets/explosives/thermite_grenades/fire/TFMGColoredFires.java new file mode 100644 index 00000000..0b6ff770 --- /dev/null +++ b/src/main/java/com/drmangotea/tfmg/content/gadgets/explosives/thermite_grenades/fire/TFMGColoredFires.java @@ -0,0 +1,35 @@ +package com.drmangotea.tfmg.content.gadgets.explosives.thermite_grenades.fire; + +import com.drmangotea.tfmg.CreateTFMG; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.state.BlockBehaviour; +import net.minecraft.world.level.material.Material; +import net.minecraftforge.eventbus.api.IEventBus; +import net.minecraftforge.registries.DeferredRegister; +import net.minecraftforge.registries.ForgeRegistries; +import net.minecraftforge.registries.RegistryObject; + +public class TFMGColoredFires { + + public static final DeferredRegister BLOCKS = + DeferredRegister.create(ForgeRegistries.BLOCKS, CreateTFMG.MOD_ID); + + + public static final RegistryObject GREEN_FIRE = BLOCKS.register("green_fire", + () -> new GreenFireBlock(BlockBehaviour.Properties.of(Material.FIRE) + .requiresCorrectToolForDrops() + .noOcclusion() + .lightLevel(s -> 15) + )); + public static final RegistryObject BLUE_FIRE = BLOCKS.register("blue_fire", + () -> new BlueFireBlock(BlockBehaviour.Properties.of(Material.FIRE) + .requiresCorrectToolForDrops() + .noOcclusion() + .lightLevel(s -> 15) + )); + + + public static void register (IEventBus eventBus){ + BLOCKS.register(eventBus); + } +} diff --git a/src/main/java/com/drmangotea/tfmg/registry/TFMGBlockEntities.java b/src/main/java/com/drmangotea/tfmg/registry/TFMGBlockEntities.java new file mode 100644 index 00000000..5130f44f --- /dev/null +++ b/src/main/java/com/drmangotea/tfmg/registry/TFMGBlockEntities.java @@ -0,0 +1,4 @@ +package com.drmangotea.tfmg.registry; + +public class TFMGBlockEntities { +} diff --git a/src/main/java/com/drmangotea/tfmg/registry/TFMGBlockStateGen.java b/src/main/java/com/drmangotea/tfmg/registry/TFMGBlockStateGen.java new file mode 100644 index 00000000..bd5bf54b --- /dev/null +++ b/src/main/java/com/drmangotea/tfmg/registry/TFMGBlockStateGen.java @@ -0,0 +1,15 @@ +package com.drmangotea.tfmg.registry; + +import com.tterrag.registrate.providers.DataGenContext; +import com.tterrag.registrate.providers.RegistrateBlockstateProvider; +import com.tterrag.registrate.util.nullness.NonNullBiConsumer; +import net.minecraft.world.level.block.Block; + +public class TFMGBlockStateGen { + + + public static NonNullBiConsumer, RegistrateBlockstateProvider> nothingLol( + String path) { + return null; + } +} diff --git a/src/main/java/com/drmangotea/tfmg/registry/TFMGBlocks.java b/src/main/java/com/drmangotea/tfmg/registry/TFMGBlocks.java new file mode 100644 index 00000000..732e5998 --- /dev/null +++ b/src/main/java/com/drmangotea/tfmg/registry/TFMGBlocks.java @@ -0,0 +1,112 @@ +package com.drmangotea.tfmg.registry; + +import com.drmangotea.tfmg.base.TFMGSpriteShifts; +import com.drmangotea.tfmg.content.gadgets.explosives.napalm.NapalmBombBlock; +import com.drmangotea.tfmg.content.gadgets.explosives.thermite_grenades.fire.BlueFireBlock; +import com.drmangotea.tfmg.content.gadgets.explosives.thermite_grenades.fire.GreenFireBlock; +import com.simibubi.create.AllCreativeModeTabs; +import com.simibubi.create.AllSpriteShifts; +import com.simibubi.create.Create; +import com.simibubi.create.content.decoration.encasing.CasingBlock; +import com.simibubi.create.content.decoration.encasing.EncasedCTBehaviour; +import com.simibubi.create.foundation.data.BuilderTransformers; +import com.tterrag.registrate.util.entry.BlockEntry; +import net.minecraft.tags.BlockTags; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.Blocks; +import net.minecraft.world.level.block.SoundType; +import net.minecraft.world.level.material.MaterialColor; +import net.minecraftforge.common.Tags; + + +import static com.drmangotea.tfmg.CreateTFMG.REGISTRATE; +import static com.simibubi.create.foundation.data.BlockStateGen.simpleCubeAll; +import static com.simibubi.create.foundation.data.CreateRegistrate.casingConnectivity; +import static com.simibubi.create.foundation.data.CreateRegistrate.connectedTextures; +import static com.simibubi.create.foundation.data.TagGen.pickaxeOnly; +import static com.simibubi.create.foundation.data.TagGen.tagBlockAndItem; + + +public class TFMGBlocks { + + + static { + REGISTRATE.creativeModeTab(() -> TFMGCreativeModeTabs.TFMG_BASE); + } + //-----------------------MISC---------------------------// + public static final BlockEntry NAPALM_BOMB = REGISTRATE.block("napalm_bomb", NapalmBombBlock::new) + .initialProperties(() -> Blocks.IRON_BLOCK) + .properties(p -> p.color(MaterialColor.TERRACOTTA_GREEN)) + .properties(p -> p.requiresCorrectToolForDrops()) + .transform(pickaxeOnly()) + .blockstate(simpleCubeAll("napalm_bomb")) + .item() + .build() + .lang("Napalm Bomb") + .register(); + public static final BlockEntry STEEL_CASING = REGISTRATE.block("steel_casing", CasingBlock::new) + .properties(p -> p.color(MaterialColor.TERRACOTTA_LIGHT_GRAY)) + .transform(BuilderTransformers.casing(() -> TFMGSpriteShifts.STEEL_CASING)) + .register(); + public static final BlockEntry HEAVY_MACHINERY_CASING = REGISTRATE.block("heavy_machinery_casing", CasingBlock::new) + .properties(p -> p.color(MaterialColor.TERRACOTTA_LIGHT_GRAY)) + .transform(BuilderTransformers.casing(() -> TFMGSpriteShifts.HEAVY_MACHINERY_CASING)) + .properties(p -> p.sound(SoundType.COPPER)) + .register(); + + + + + + + //-----------------------MACHINES---------------------------// + + + + + + //-----------------------BUILDING BLOCKS---------------------------// + public static final BlockEntry STEEL_BLOCK = REGISTRATE.block("steel_block", Block::new) + .initialProperties(() -> Blocks.IRON_BLOCK) + .properties(p -> p.color(MaterialColor.COLOR_LIGHT_GRAY)) + .properties(p -> p.requiresCorrectToolForDrops()) + .onRegister(connectedTextures(() -> new EncasedCTBehaviour(TFMGSpriteShifts.STEEL_BLOCK))) + .onRegister(casingConnectivity((block, cc) -> cc.makeCasing(block, TFMGSpriteShifts.STEEL_BLOCK))) + .transform(pickaxeOnly()) + .blockstate(simpleCubeAll("steel_block")) + .tag(BlockTags.NEEDS_IRON_TOOL) + .tag(Tags.Blocks.STORAGE_BLOCKS) + .tag(BlockTags.BEACON_BASE_BLOCKS) + .transform(tagBlockAndItem("storage_blocks/steel")) + .tag(Tags.Items.STORAGE_BLOCKS) + .build() + .lang("Block of Steel") + .register(); + public static final BlockEntry CAST_IRON_BLOCK = REGISTRATE.block("cast_iron_block", Block::new) + .initialProperties(() -> Blocks.IRON_BLOCK) + .properties(p -> p.color(MaterialColor.COLOR_LIGHT_GRAY)) + .properties(p -> p.requiresCorrectToolForDrops()) + .onRegister(connectedTextures(() -> new EncasedCTBehaviour(TFMGSpriteShifts.CAST_IRON_BLOCK))) + .onRegister(casingConnectivity((block, cc) -> cc.makeCasing(block, TFMGSpriteShifts.CAST_IRON_BLOCK))) + .transform(pickaxeOnly()) + .blockstate(simpleCubeAll("cast_iron_block")) + .tag(BlockTags.NEEDS_IRON_TOOL) + .tag(Tags.Blocks.STORAGE_BLOCKS) + .tag(BlockTags.BEACON_BASE_BLOCKS) + .transform(tagBlockAndItem("storage_blocks/cast_iron")) + .tag(Tags.Items.STORAGE_BLOCKS) + .build() + .lang("Block of Cast Iron") + .register(); + + + + + + //-----------------------CONCRETE---------------------------// + static { + REGISTRATE.creativeModeTab(() -> TFMGCreativeModeTabs.TFMG_CONCRETE); + } + + public static void register() {} +} diff --git a/src/main/java/com/drmangotea/tfmg/registry/TFMGCreativeModeTabs.java b/src/main/java/com/drmangotea/tfmg/registry/TFMGCreativeModeTabs.java new file mode 100644 index 00000000..991d3096 --- /dev/null +++ b/src/main/java/com/drmangotea/tfmg/registry/TFMGCreativeModeTabs.java @@ -0,0 +1,17 @@ +package com.drmangotea.tfmg.registry; + +import com.drmangotea.tfmg.base.creative_mode_tabs.BaseTFMGCreativeModeTab; +import com.drmangotea.tfmg.base.creative_mode_tabs.ConcreteCreativeModeTab; +import com.simibubi.create.content.decoration.palettes.PalettesCreativeModeTab; +import com.simibubi.create.infrastructure.item.BaseCreativeModeTab; +import net.minecraft.world.item.CreativeModeTab; + +public class TFMGCreativeModeTabs { + + public static final CreativeModeTab TFMG_BASE = new BaseTFMGCreativeModeTab(); + public static final CreativeModeTab TFMG_CONCRETE = new ConcreteCreativeModeTab(); + + public static void init() { + } + +} diff --git a/src/main/java/com/drmangotea/tfmg/registry/TFMGEntityTypes.java b/src/main/java/com/drmangotea/tfmg/registry/TFMGEntityTypes.java new file mode 100644 index 00000000..e9605108 --- /dev/null +++ b/src/main/java/com/drmangotea/tfmg/registry/TFMGEntityTypes.java @@ -0,0 +1,70 @@ +package com.drmangotea.tfmg.registry; + +import com.drmangotea.tfmg.CreateTFMG; +import com.drmangotea.tfmg.base.spark.*; +import com.drmangotea.tfmg.content.gadgets.explosives.napalm.NapalmBombEntity; +import com.drmangotea.tfmg.content.gadgets.explosives.napalm.NapalmBombRenderer; +import com.drmangotea.tfmg.content.gadgets.explosives.thermite_grenades.ThermiteGrenade; +import com.drmangotea.tfmg.content.gadgets.explosives.thermite_grenades.ThermiteGrenadeRenderer; +import com.simibubi.create.foundation.data.CreateEntityBuilder; +import com.simibubi.create.foundation.utility.Lang; +import com.tterrag.registrate.util.entry.EntityEntry; +import com.tterrag.registrate.util.nullness.NonNullConsumer; +import com.tterrag.registrate.util.nullness.NonNullFunction; +import com.tterrag.registrate.util.nullness.NonNullSupplier; +import net.minecraft.client.renderer.entity.EntityRenderer; +import net.minecraft.client.renderer.entity.EntityRendererProvider; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.EntityType; +import net.minecraft.world.entity.MobCategory; + +public class TFMGEntityTypes { + + public static final EntityEntry THERMITE_GRENADE = + register("thermite_grenade", ThermiteGrenade::new, () -> ThermiteGrenadeRenderer::regular, + MobCategory.MISC, 4, 20, true, true, ThermiteGrenade::build).register(); + public static final EntityEntry ZINC_GRENADE = + register("zin_grenade", ThermiteGrenade::new, () -> ThermiteGrenadeRenderer::green, + MobCategory.MISC, 4, 20, true, true, ThermiteGrenade::build).register(); + public static final EntityEntry COPPER_GRENADE = + register("copper_grenade", ThermiteGrenade::new, () -> ThermiteGrenadeRenderer::blue, + MobCategory.MISC, 4, 20, true, true, ThermiteGrenade::build).register(); + public static final EntityEntry NAPALM_BOMB = + register("napalm_bomb_entity", NapalmBombEntity::new, () -> NapalmBombRenderer::new, + MobCategory.MISC, 4, 20, true, true, NapalmBombEntity::build).register(); + + + public static final EntityEntry SPARK = + register("spark", Spark::new, () -> SparkRenderer::new, + MobCategory.MISC, 4, 20, true, true, Spark::build).register(); + public static final EntityEntry GREEN_SPARK = + register("green_spark", GreenSpark::new, () -> GreenSparkRenderer::new, + MobCategory.MISC, 4, 20, true, true, GreenSpark::build).register(); + public static final EntityEntry BLUE_SPARK = + register("blue_spark", BlueSpark::new, () -> BlueSparkRenderer::new, + MobCategory.MISC, 4, 20, true, true, BlueSpark::build).register(); + // + + + + private static CreateEntityBuilder register(String name, EntityType.EntityFactory factory, + NonNullSupplier>> renderer, + MobCategory group, int range, int updateFrequency, boolean sendVelocity, boolean immuneToFire, + NonNullConsumer> propertyBuilder) { + String id = Lang.asId(name); + return (CreateEntityBuilder) CreateTFMG.REGISTRATE + .entity(id, factory, group) + .properties(b -> b.setTrackingRange(range) + .setUpdateInterval(updateFrequency) + .setShouldReceiveVelocityUpdates(sendVelocity)) + .properties(propertyBuilder) + .properties(b -> { + if (immuneToFire) + b.fireImmune(); + }) + .renderer(renderer); + } + + public static void register() {} +} + diff --git a/src/main/java/com/drmangotea/tfmg/registry/TFMGItems.java b/src/main/java/com/drmangotea/tfmg/registry/TFMGItems.java new file mode 100644 index 00000000..8dd14e4d --- /dev/null +++ b/src/main/java/com/drmangotea/tfmg/registry/TFMGItems.java @@ -0,0 +1,31 @@ +package com.drmangotea.tfmg.registry; + +import com.drmangotea.tfmg.content.gadgets.explosives.thermite_grenades.ChemicalColor; +import com.drmangotea.tfmg.content.gadgets.explosives.thermite_grenades.ThermiteGrenadeItem; +import com.tterrag.registrate.util.entry.ItemEntry; + +import static com.drmangotea.tfmg.CreateTFMG.REGISTRATE; +import static com.drmangotea.tfmg.content.gadgets.explosives.thermite_grenades.ChemicalColor.*; + +public class TFMGItems { + + static { + REGISTRATE.creativeModeTab(() -> TFMGCreativeModeTabs.TFMG_BASE); + } + + public static final ItemEntry + THERMITE_GRENADE = thermiteGrenade("thermite_grenade",BASE); + public static final ItemEntry + ZINC_GRENADE = thermiteGrenade("zinc_grenade",GREEN); + public static final ItemEntry + COPPER_GRENADE = thermiteGrenade("copper_grenade",BLUE); + +////////////////////////// + private static ItemEntry thermiteGrenade(String name, ChemicalColor color) { + return REGISTRATE.item(name, p -> new ThermiteGrenadeItem(p, color)) + .register(); + } + + + public static void register() {} +} diff --git a/src/main/java/com/drmangotea/tfmg/registry/TFMGParticles.java b/src/main/java/com/drmangotea/tfmg/registry/TFMGParticles.java new file mode 100644 index 00000000..d4323d39 --- /dev/null +++ b/src/main/java/com/drmangotea/tfmg/registry/TFMGParticles.java @@ -0,0 +1,4 @@ +package com.drmangotea.tfmg.registry; + +public class TFMGParticles { +} diff --git a/src/main/java/com/drmangotea/tfmg/registry/TFMGRegistrate.java b/src/main/java/com/drmangotea/tfmg/registry/TFMGRegistrate.java new file mode 100644 index 00000000..58072cba --- /dev/null +++ b/src/main/java/com/drmangotea/tfmg/registry/TFMGRegistrate.java @@ -0,0 +1,263 @@ +package com.drmangotea.tfmg.registry; + + +import static com.simibubi.create.foundation.data.TagGen.pickaxeOnly; + +import java.util.function.BiConsumer; +import java.util.function.Consumer; +import java.util.function.Function; +import java.util.function.Supplier; + +import com.drmangotea.tfmg.CreateTFMG; +import com.simibubi.create.foundation.data.BlockStateGen; +import com.simibubi.create.foundation.data.CreateBlockEntityBuilder; +import com.simibubi.create.foundation.data.CreateEntityBuilder; +import com.simibubi.create.foundation.data.VirtualFluidBuilder; +import org.jetbrains.annotations.Nullable; + + +import com.simibubi.create.CreateClient; +import com.simibubi.create.content.decoration.encasing.CasingConnectivity; +import com.simibubi.create.content.fluids.VirtualFluid; +import com.simibubi.create.foundation.block.connected.CTModel; +import com.simibubi.create.foundation.block.connected.ConnectedTextureBehaviour; +import com.simibubi.create.foundation.item.TooltipModifier; +import com.simibubi.create.foundation.utility.RegisteredObjects; +import com.tterrag.registrate.AbstractRegistrate; +import com.tterrag.registrate.builders.BlockBuilder; +import com.tterrag.registrate.builders.BlockEntityBuilder.BlockEntityFactory; +import com.tterrag.registrate.builders.Builder; +import com.tterrag.registrate.builders.FluidBuilder; +import com.tterrag.registrate.util.entry.RegistryEntry; +import com.tterrag.registrate.util.nullness.NonNullConsumer; +import com.tterrag.registrate.util.nullness.NonNullFunction; +import com.tterrag.registrate.util.nullness.NonNullSupplier; + +import net.minecraft.client.resources.model.BakedModel; +import net.minecraft.core.Registry; +import net.minecraft.resources.ResourceKey; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.tags.BlockTags; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.EntityType; +import net.minecraft.world.entity.MobCategory; +import net.minecraft.world.item.Item; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.entity.BlockEntity; +import net.minecraft.world.level.block.state.BlockBehaviour.Properties; +import net.minecraftforge.api.distmarker.Dist; +import net.minecraftforge.api.distmarker.OnlyIn; +import net.minecraftforge.client.extensions.common.IClientFluidTypeExtensions; +import net.minecraftforge.eventbus.api.IEventBus; +import net.minecraftforge.fluids.FluidType; +import net.minecraftforge.fluids.ForgeFlowingFluid; +import net.minecraftforge.fml.DistExecutor; +import net.minecraftforge.registries.RegistryObject; + +public class TFMGRegistrate extends AbstractRegistrate { + @Nullable + protected Function currentTooltipModifierFactory; + + protected TFMGRegistrate(String modid) { + super(modid); + } + + public static TFMGRegistrate create(String modid) { + return new TFMGRegistrate(modid); + } + + public TFMGRegistrate setTooltipModifierFactory(@Nullable Function factory) { + currentTooltipModifierFactory = factory; + return self(); + } + + @Nullable + public Function getTooltipModifierFactory() { + return currentTooltipModifierFactory; + } + + @Override + public TFMGRegistrate registerEventListeners(IEventBus bus) { + return super.registerEventListeners(bus); + } + + @Override + protected RegistryEntry accept(String name, ResourceKey> type, + Builder builder, NonNullSupplier creator, + NonNullFunction, ? extends RegistryEntry> entryFactory) { + RegistryEntry entry = super.accept(name, type, builder, creator, entryFactory); + if (type.equals(Registry.ITEM_REGISTRY)) { + if (currentTooltipModifierFactory != null) { + TooltipModifier.REGISTRY.registerDeferred(entry.getId(), currentTooltipModifierFactory); + } + } + return entry; + } + + @Override + public CreateBlockEntityBuilder blockEntity(String name, + BlockEntityFactory factory) { + return blockEntity(self(), name, factory); + } + + @Override + public CreateBlockEntityBuilder blockEntity(P parent, String name, + BlockEntityFactory factory) { + return (CreateBlockEntityBuilder) entry(name, + (callback) -> CreateBlockEntityBuilder.create(this, parent, name, callback, factory)); + } + + @Override + public CreateEntityBuilder entity(String name, + EntityType.EntityFactory factory, MobCategory classification) { + return this.entity(self(), name, factory, classification); + } + + @Override + public CreateEntityBuilder entity(P parent, String name, + EntityType.EntityFactory factory, MobCategory classification) { + return (CreateEntityBuilder) this.entry(name, (callback) -> { + return CreateEntityBuilder.create(this, parent, name, callback, factory, classification); + }); + } + + /* Palettes */ + + public BlockBuilder paletteStoneBlock(String name, + NonNullFunction factory, NonNullSupplier propertiesFrom, boolean worldGenStone, + boolean hasNaturalVariants) { + BlockBuilder builder = super.block(name, factory).initialProperties(propertiesFrom) + .transform(pickaxeOnly()) + .blockstate(hasNaturalVariants ? BlockStateGen.naturalStoneTypeBlock(name) : (c, p) -> { + final String location = "block/palettes/stone_types/" + c.getName(); + p.simpleBlock(c.get(), p.models() + .cubeAll(c.getName(), p.modLoc(location))); + }) + .tag(BlockTags.DRIPSTONE_REPLACEABLE) + .tag(BlockTags.AZALEA_ROOT_REPLACEABLE) + .tag(BlockTags.MOSS_REPLACEABLE) + .tag(BlockTags.LUSH_GROUND_REPLACEABLE) + .item() + .model((c, p) -> p.cubeAll(c.getName(), + p.modLoc(hasNaturalVariants ? "block/palettes/stone_types/natural/" + name + "_1" + : "block/palettes/stone_types/" + c.getName()))) + .build(); + return builder; + } + + public BlockBuilder paletteStoneBlock(String name, NonNullSupplier propertiesFrom, + boolean worldGenStone, boolean hasNaturalVariants) { + return paletteStoneBlock(name, Block::new, propertiesFrom, worldGenStone, hasNaturalVariants); + } + + /* Fluids */ + + public FluidBuilder virtualFluid(String name, + FluidBuilder.FluidTypeFactory typeFactory, NonNullFunction factory) { + return entry(name, + c -> new VirtualFluidBuilder<>(self(), self(), name, c, CreateTFMG.asResource("fluid/" + name + "_still"), + CreateTFMG.asResource("fluid/" + name + "_flow"), typeFactory, factory)); + } + + public FluidBuilder virtualFluid(String name, + ResourceLocation still, ResourceLocation flow, FluidBuilder.FluidTypeFactory typeFactory, + NonNullFunction factory) { + return entry(name, c -> new VirtualFluidBuilder<>(self(), self(), name, c, still, flow, typeFactory, factory)); + } + + public FluidBuilder virtualFluid(String name) { + return entry(name, + c -> new VirtualFluidBuilder(self(), self(), name, c, + CreateTFMG.asResource("fluid/" + name + "_still"), CreateTFMG.asResource("fluid/" + name + "_flow"), + TFMGRegistrate::defaultFluidType, VirtualFluid::new)); + } + + public FluidBuilder virtualFluid(String name, ResourceLocation still, + ResourceLocation flow) { + return entry(name, c -> new VirtualFluidBuilder<>(self(), self(), name, c, still, flow, + TFMGRegistrate::defaultFluidType, VirtualFluid::new)); + } + + public FluidBuilder standardFluid(String name) { + return fluid(name, CreateTFMG.asResource("fluid/" + name + "_still"), CreateTFMG.asResource("fluid/" + name + "_flow")); + } + + public FluidBuilder standardFluid(String name, + FluidBuilder.FluidTypeFactory typeFactory) { + return fluid(name, CreateTFMG.asResource("fluid/" + name + "_still"), CreateTFMG.asResource("fluid/" + name + "_flow"), + typeFactory); + } + + public static FluidType defaultFluidType(FluidType.Properties properties, ResourceLocation stillTexture, + ResourceLocation flowingTexture) { + return new FluidType(properties) { + @Override + public void initializeClient(Consumer consumer) { + consumer.accept(new IClientFluidTypeExtensions() { + @Override + public ResourceLocation getStillTexture() { + return stillTexture; + } + + @Override + public ResourceLocation getFlowingTexture() { + return flowingTexture; + } + }); + } + }; + } + + /* Util */ + + public static NonNullConsumer casingConnectivity( + BiConsumer consumer) { + return entry -> onClient(() -> () -> registerCasingConnectivity(entry, consumer)); + } + + public static NonNullConsumer blockModel( + Supplier> func) { + return entry -> onClient(() -> () -> registerBlockModel(entry, func)); + } + + public static NonNullConsumer itemModel( + Supplier> func) { + return entry -> onClient(() -> () -> registerItemModel(entry, func)); + } + + public static NonNullConsumer connectedTextures( + Supplier behavior) { + return entry -> onClient(() -> () -> registerCTBehviour(entry, behavior)); + } + + protected static void onClient(Supplier toRun) { + DistExecutor.unsafeRunWhenOn(Dist.CLIENT, toRun); + } + + @OnlyIn(Dist.CLIENT) + private static void registerCasingConnectivity(T entry, + BiConsumer consumer) { + consumer.accept(entry, CreateClient.CASING_CONNECTIVITY); + } + + @OnlyIn(Dist.CLIENT) + private static void registerBlockModel(Block entry, + Supplier> func) { + CreateClient.MODEL_SWAPPER.getCustomBlockModels() + .register(RegisteredObjects.getKeyOrThrow(entry), func.get()); + } + + @OnlyIn(Dist.CLIENT) + private static void registerItemModel(Item entry, + Supplier> func) { + CreateClient.MODEL_SWAPPER.getCustomItemModels() + .register(RegisteredObjects.getKeyOrThrow(entry), func.get()); + } + + @OnlyIn(Dist.CLIENT) + private static void registerCTBehviour(Block entry, Supplier behaviorSupplier) { + ConnectedTextureBehaviour behavior = behaviorSupplier.get(); + CreateClient.MODEL_SWAPPER.getCustomBlockModels() + .register(RegisteredObjects.getKeyOrThrow(entry), model -> new CTModel(model, behavior)); + } +} diff --git a/src/main/java/com/drmangotea/tfmg/registry/TFMGSounds.java b/src/main/java/com/drmangotea/tfmg/registry/TFMGSounds.java new file mode 100644 index 00000000..530ab40c --- /dev/null +++ b/src/main/java/com/drmangotea/tfmg/registry/TFMGSounds.java @@ -0,0 +1,4 @@ +package com.drmangotea.tfmg.registry; + +public class TFMGSounds { +} diff --git a/src/main/resources/assets/tfmg/blockstates/blue_fire.json b/src/main/resources/assets/tfmg/blockstates/blue_fire.json new file mode 100644 index 00000000..d1bfe7d8 --- /dev/null +++ b/src/main/resources/assets/tfmg/blockstates/blue_fire.json @@ -0,0 +1,172 @@ +{ + "multipart": [ + { + "apply": [ + { + "model": "tfmg:block/blue_fire_floor0" + }, + { + "model": "tfmg:block/blue_fire_floor1" + } + ], + "when": { + "east": "false", + "north": "false", + "south": "false", + "up": "false", + "west": "false" + } + }, + { + "apply": [ + { + "model": "tfmg:block/blue_fire_side0" + }, + { + "model": "tfmg:block/blue_fire_side1" + }, + { + "model": "tfmg:block/blue_fire_side_alt0" + }, + { + "model": "tfmg:block/blue_fire_side_alt1" + } + ], + "when": { + "OR": [ + { + "north": "true" + }, + { + "east": "false", + "north": "false", + "south": "false", + "up": "false", + "west": "false" + } + ] + } + }, + { + "apply": [ + { + "model": "tfmg:block/blue_fire_side0", + "y": 90 + }, + { + "model": "tfmg:block/blue_fire_side1", + "y": 90 + }, + { + "model": "tfmg:block/blue_fire_side_alt0", + "y": 90 + }, + { + "model": "tfmg:block/blue_fire_side_alt1", + "y": 90 + } + ], + "when": { + "OR": [ + { + "east": "true" + }, + { + "east": "false", + "north": "false", + "south": "false", + "up": "false", + "west": "false" + } + ] + } + }, + { + "apply": [ + { + "model": "tfmg:block/blue_fire_side0", + "y": 180 + }, + { + "model": "tfmg:block/blue_fire_side1", + "y": 180 + }, + { + "model": "tfmg:block/blue_fire_side_alt0", + "y": 180 + }, + { + "model": "tfmg:block/blue_fire_side_alt1", + "y": 180 + } + ], + "when": { + "OR": [ + { + "south": "true" + }, + { + "east": "false", + "north": "false", + "south": "false", + "up": "false", + "west": "false" + } + ] + } + }, + { + "apply": [ + { + "model": "tfmg:block/blue_fire_side0", + "y": 270 + }, + { + "model": "tfmg:block/blue_fire_side1", + "y": 270 + }, + { + "model": "tfmg:block/blue_fire_side_alt0", + "y": 270 + }, + { + "model": "tfmg:block/blue_fire_side_alt1", + "y": 270 + } + ], + "when": { + "OR": [ + { + "west": "true" + }, + { + "east": "false", + "north": "false", + "south": "false", + "up": "false", + "west": "false" + } + ] + } + }, + { + "apply": [ + { + "model": "tfmg:block/blue_fire_up0" + }, + { + "model": "tfmg:block/blue_fire_up1" + }, + { + "model": "tfmg:block/blue_fire_up_alt0" + }, + { + "model": "tfmg:block/blue_fire_up_alt1" + } + ], + "when": { + "up": "true" + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/tfmg/blockstates/green_fire.json b/src/main/resources/assets/tfmg/blockstates/green_fire.json new file mode 100644 index 00000000..59812148 --- /dev/null +++ b/src/main/resources/assets/tfmg/blockstates/green_fire.json @@ -0,0 +1,172 @@ +{ + "multipart": [ + { + "apply": [ + { + "model": "tfmg:block/green_fire_floor0" + }, + { + "model": "tfmg:block/green_fire_floor1" + } + ], + "when": { + "east": "false", + "north": "false", + "south": "false", + "up": "false", + "west": "false" + } + }, + { + "apply": [ + { + "model": "tfmg:block/green_fire_side0" + }, + { + "model": "tfmg:block/green_fire_side1" + }, + { + "model": "tfmg:block/green_fire_side_alt0" + }, + { + "model": "tfmg:block/green_fire_side_alt1" + } + ], + "when": { + "OR": [ + { + "north": "true" + }, + { + "east": "false", + "north": "false", + "south": "false", + "up": "false", + "west": "false" + } + ] + } + }, + { + "apply": [ + { + "model": "tfmg:block/green_fire_side0", + "y": 90 + }, + { + "model": "tfmg:block/green_fire_side1", + "y": 90 + }, + { + "model": "tfmg:block/green_fire_side_alt0", + "y": 90 + }, + { + "model": "tfmg:block/green_fire_side_alt1", + "y": 90 + } + ], + "when": { + "OR": [ + { + "east": "true" + }, + { + "east": "false", + "north": "false", + "south": "false", + "up": "false", + "west": "false" + } + ] + } + }, + { + "apply": [ + { + "model": "tfmg:block/green_fire_side0", + "y": 180 + }, + { + "model": "tfmg:block/green_fire_side1", + "y": 180 + }, + { + "model": "tfmg:block/green_fire_side_alt0", + "y": 180 + }, + { + "model": "tfmg:block/green_fire_side_alt1", + "y": 180 + } + ], + "when": { + "OR": [ + { + "south": "true" + }, + { + "east": "false", + "north": "false", + "south": "false", + "up": "false", + "west": "false" + } + ] + } + }, + { + "apply": [ + { + "model": "tfmg:block/green_fire_side0", + "y": 270 + }, + { + "model": "tfmg:block/green_fire_side1", + "y": 270 + }, + { + "model": "tfmg:block/green_fire_side_alt0", + "y": 270 + }, + { + "model": "tfmg:block/green_fire_side_alt1", + "y": 270 + } + ], + "when": { + "OR": [ + { + "west": "true" + }, + { + "east": "false", + "north": "false", + "south": "false", + "up": "false", + "west": "false" + } + ] + } + }, + { + "apply": [ + { + "model": "tfmg:block/green_fire_up0" + }, + { + "model": "tfmg:block/green_fire_up1" + }, + { + "model": "tfmg:block/green_fire_up_alt0" + }, + { + "model": "tfmg:block/green_fire_up_alt1" + } + ], + "when": { + "up": "true" + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/tfmg/models/block/blue_fire_floor0.json b/src/main/resources/assets/tfmg/models/block/blue_fire_floor0.json new file mode 100644 index 00000000..1e8295f5 --- /dev/null +++ b/src/main/resources/assets/tfmg/models/block/blue_fire_floor0.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/template_fire_floor", + "textures": { + "fire": "tfmg:block/blue_fire_0" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/tfmg/models/block/blue_fire_floor1.json b/src/main/resources/assets/tfmg/models/block/blue_fire_floor1.json new file mode 100644 index 00000000..6285f8da --- /dev/null +++ b/src/main/resources/assets/tfmg/models/block/blue_fire_floor1.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/template_fire_floor", + "textures": { + "fire": "tfmg:block/blue_fire_1" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/tfmg/models/block/blue_fire_side0.json b/src/main/resources/assets/tfmg/models/block/blue_fire_side0.json new file mode 100644 index 00000000..1ca09c5f --- /dev/null +++ b/src/main/resources/assets/tfmg/models/block/blue_fire_side0.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/template_fire_side", + "textures": { + "fire": "tfmg:block/blue_fire_0" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/tfmg/models/block/blue_fire_side1.json b/src/main/resources/assets/tfmg/models/block/blue_fire_side1.json new file mode 100644 index 00000000..24a287e6 --- /dev/null +++ b/src/main/resources/assets/tfmg/models/block/blue_fire_side1.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/template_fire_side", + "textures": { + "fire": "tfmg:block/blue_fire_1" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/tfmg/models/block/blue_fire_side_alt0.json b/src/main/resources/assets/tfmg/models/block/blue_fire_side_alt0.json new file mode 100644 index 00000000..a4f0b1a8 --- /dev/null +++ b/src/main/resources/assets/tfmg/models/block/blue_fire_side_alt0.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/template_fire_side_alt", + "textures": { + "fire": "tfmg:block/blue_fire_0" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/tfmg/models/block/blue_fire_side_alt1.json b/src/main/resources/assets/tfmg/models/block/blue_fire_side_alt1.json new file mode 100644 index 00000000..5f3ceb62 --- /dev/null +++ b/src/main/resources/assets/tfmg/models/block/blue_fire_side_alt1.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/template_fire_side_alt", + "textures": { + "fire": "tfmg:block/blue_fire_1" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/tfmg/models/block/blue_fire_up0.json b/src/main/resources/assets/tfmg/models/block/blue_fire_up0.json new file mode 100644 index 00000000..9beeea9a --- /dev/null +++ b/src/main/resources/assets/tfmg/models/block/blue_fire_up0.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/template_fire_up", + "textures": { + "fire": "tfmg:block/blue_fire_0" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/tfmg/models/block/blue_fire_up1.json b/src/main/resources/assets/tfmg/models/block/blue_fire_up1.json new file mode 100644 index 00000000..c270199e --- /dev/null +++ b/src/main/resources/assets/tfmg/models/block/blue_fire_up1.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/template_fire_up", + "textures": { + "fire": "tfmg:block/blue_fire_1" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/tfmg/models/block/blue_fire_up_alt0.json b/src/main/resources/assets/tfmg/models/block/blue_fire_up_alt0.json new file mode 100644 index 00000000..c59c3133 --- /dev/null +++ b/src/main/resources/assets/tfmg/models/block/blue_fire_up_alt0.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/template_fire_up_alt", + "textures": { + "fire": "tfmg:block/blue_fire_0" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/tfmg/models/block/blue_fire_up_alt1.json b/src/main/resources/assets/tfmg/models/block/blue_fire_up_alt1.json new file mode 100644 index 00000000..64eb8ba0 --- /dev/null +++ b/src/main/resources/assets/tfmg/models/block/blue_fire_up_alt1.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/template_fire_up_alt", + "textures": { + "fire": "tfmg:block/blue_fire_1" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/tfmg/models/block/green_fire_floor0.json b/src/main/resources/assets/tfmg/models/block/green_fire_floor0.json new file mode 100644 index 00000000..a3497cbe --- /dev/null +++ b/src/main/resources/assets/tfmg/models/block/green_fire_floor0.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/template_fire_floor", + "textures": { + "fire": "tfmg:block/green_fire_0" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/tfmg/models/block/green_fire_floor1.json b/src/main/resources/assets/tfmg/models/block/green_fire_floor1.json new file mode 100644 index 00000000..0044d15d --- /dev/null +++ b/src/main/resources/assets/tfmg/models/block/green_fire_floor1.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/template_fire_floor", + "textures": { + "fire": "tfmg:block/green_fire_1" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/tfmg/models/block/green_fire_side0.json b/src/main/resources/assets/tfmg/models/block/green_fire_side0.json new file mode 100644 index 00000000..dc539a0b --- /dev/null +++ b/src/main/resources/assets/tfmg/models/block/green_fire_side0.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/template_fire_side", + "textures": { + "fire": "tfmg:block/green_fire_0" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/tfmg/models/block/green_fire_side1.json b/src/main/resources/assets/tfmg/models/block/green_fire_side1.json new file mode 100644 index 00000000..abb94e87 --- /dev/null +++ b/src/main/resources/assets/tfmg/models/block/green_fire_side1.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/template_fire_side", + "textures": { + "fire": "tfmg:block/green_fire_1" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/tfmg/models/block/green_fire_side_alt0.json b/src/main/resources/assets/tfmg/models/block/green_fire_side_alt0.json new file mode 100644 index 00000000..167c7919 --- /dev/null +++ b/src/main/resources/assets/tfmg/models/block/green_fire_side_alt0.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/template_fire_side_alt", + "textures": { + "fire": "tfmg:block/green_fire_0" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/tfmg/models/block/green_fire_side_alt1.json b/src/main/resources/assets/tfmg/models/block/green_fire_side_alt1.json new file mode 100644 index 00000000..aa0910bf --- /dev/null +++ b/src/main/resources/assets/tfmg/models/block/green_fire_side_alt1.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/template_fire_side_alt", + "textures": { + "fire": "tfmg:block/green_fire_1" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/tfmg/models/block/green_fire_up0.json b/src/main/resources/assets/tfmg/models/block/green_fire_up0.json new file mode 100644 index 00000000..890311cc --- /dev/null +++ b/src/main/resources/assets/tfmg/models/block/green_fire_up0.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/template_fire_up", + "textures": { + "fire": "tfmg:block/green_fire_0" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/tfmg/models/block/green_fire_up1.json b/src/main/resources/assets/tfmg/models/block/green_fire_up1.json new file mode 100644 index 00000000..758881f2 --- /dev/null +++ b/src/main/resources/assets/tfmg/models/block/green_fire_up1.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/template_fire_up", + "textures": { + "fire": "tfmg:block/green_fire_1" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/tfmg/models/block/green_fire_up_alt0.json b/src/main/resources/assets/tfmg/models/block/green_fire_up_alt0.json new file mode 100644 index 00000000..52b7f998 --- /dev/null +++ b/src/main/resources/assets/tfmg/models/block/green_fire_up_alt0.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/template_fire_up_alt", + "textures": { + "fire": "tfmg:block/green_fire_0" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/tfmg/models/block/green_fire_up_alt1.json b/src/main/resources/assets/tfmg/models/block/green_fire_up_alt1.json new file mode 100644 index 00000000..2677bee3 --- /dev/null +++ b/src/main/resources/assets/tfmg/models/block/green_fire_up_alt1.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/template_fire_up_alt", + "textures": { + "fire": "tfmg:block/green_fire_1" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/tfmg/textures/block/aluminum_block.png b/src/main/resources/assets/tfmg/textures/block/aluminum_block.png new file mode 100644 index 00000000..4d494363 Binary files /dev/null and b/src/main/resources/assets/tfmg/textures/block/aluminum_block.png differ diff --git a/src/main/resources/assets/tfmg/textures/block/aluminum_door_bottom.png b/src/main/resources/assets/tfmg/textures/block/aluminum_door_bottom.png new file mode 100644 index 00000000..fcca5a89 Binary files /dev/null and b/src/main/resources/assets/tfmg/textures/block/aluminum_door_bottom.png differ diff --git a/src/main/resources/assets/tfmg/textures/block/aluminum_door_top.png b/src/main/resources/assets/tfmg/textures/block/aluminum_door_top.png new file mode 100644 index 00000000..7512126f Binary files /dev/null and b/src/main/resources/assets/tfmg/textures/block/aluminum_door_top.png differ diff --git a/src/main/resources/assets/tfmg/textures/block/aluminum_flywheel.png b/src/main/resources/assets/tfmg/textures/block/aluminum_flywheel.png new file mode 100644 index 00000000..ddb10f39 Binary files /dev/null and b/src/main/resources/assets/tfmg/textures/block/aluminum_flywheel.png differ diff --git a/src/main/resources/assets/tfmg/textures/block/aluminum_frame.png b/src/main/resources/assets/tfmg/textures/block/aluminum_frame.png new file mode 100644 index 00000000..2998f9dd Binary files /dev/null and b/src/main/resources/assets/tfmg/textures/block/aluminum_frame.png differ diff --git a/src/main/resources/assets/tfmg/textures/block/aluminum_plating.png b/src/main/resources/assets/tfmg/textures/block/aluminum_plating.png new file mode 100644 index 00000000..f8331a5b Binary files /dev/null and b/src/main/resources/assets/tfmg/textures/block/aluminum_plating.png differ diff --git a/src/main/resources/assets/tfmg/textures/block/aluminum_post.png b/src/main/resources/assets/tfmg/textures/block/aluminum_post.png new file mode 100644 index 00000000..13c07304 Binary files /dev/null and b/src/main/resources/assets/tfmg/textures/block/aluminum_post.png differ diff --git a/src/main/resources/assets/tfmg/textures/block/aluminum_truss.png b/src/main/resources/assets/tfmg/textures/block/aluminum_truss.png new file mode 100644 index 00000000..b38131e5 Binary files /dev/null and b/src/main/resources/assets/tfmg/textures/block/aluminum_truss.png differ diff --git a/src/main/resources/assets/tfmg/textures/block/bars/aluminum_bars.png b/src/main/resources/assets/tfmg/textures/block/bars/aluminum_bars.png new file mode 100644 index 00000000..7051c0b8 Binary files /dev/null and b/src/main/resources/assets/tfmg/textures/block/bars/aluminum_bars.png differ diff --git a/src/main/resources/assets/tfmg/textures/block/bars/aluminum_bars_edge.png b/src/main/resources/assets/tfmg/textures/block/bars/aluminum_bars_edge.png new file mode 100644 index 00000000..f53be64e Binary files /dev/null and b/src/main/resources/assets/tfmg/textures/block/bars/aluminum_bars_edge.png differ diff --git a/src/main/resources/assets/tfmg/textures/block/bars/steel_bars.png b/src/main/resources/assets/tfmg/textures/block/bars/steel_bars.png new file mode 100644 index 00000000..536643a5 Binary files /dev/null and b/src/main/resources/assets/tfmg/textures/block/bars/steel_bars.png differ diff --git a/src/main/resources/assets/tfmg/textures/block/bars/steel_bars_edge.png b/src/main/resources/assets/tfmg/textures/block/bars/steel_bars_edge.png new file mode 100644 index 00000000..58681dc8 Binary files /dev/null and b/src/main/resources/assets/tfmg/textures/block/bars/steel_bars_edge.png differ diff --git a/src/main/resources/assets/tfmg/textures/block/bauxite.png b/src/main/resources/assets/tfmg/textures/block/bauxite.png new file mode 100644 index 00000000..8fc16a25 Binary files /dev/null and b/src/main/resources/assets/tfmg/textures/block/bauxite.png differ diff --git a/src/main/resources/assets/tfmg/textures/block/bauxite_cap.png b/src/main/resources/assets/tfmg/textures/block/bauxite_cap.png new file mode 100644 index 00000000..9d99e127 Binary files /dev/null and b/src/main/resources/assets/tfmg/textures/block/bauxite_cap.png differ diff --git a/src/main/resources/assets/tfmg/textures/block/black_concrete_stage0.png b/src/main/resources/assets/tfmg/textures/block/black_concrete_stage0.png new file mode 100644 index 00000000..2cfd4630 Binary files /dev/null and b/src/main/resources/assets/tfmg/textures/block/black_concrete_stage0.png differ diff --git a/src/main/resources/assets/tfmg/textures/block/black_concrete_stage1.png b/src/main/resources/assets/tfmg/textures/block/black_concrete_stage1.png new file mode 100644 index 00000000..643cb8a1 Binary files /dev/null and b/src/main/resources/assets/tfmg/textures/block/black_concrete_stage1.png differ diff --git a/src/main/resources/assets/tfmg/textures/block/black_concrete_stage2.png b/src/main/resources/assets/tfmg/textures/block/black_concrete_stage2.png new file mode 100644 index 00000000..ad0d9498 Binary files /dev/null and b/src/main/resources/assets/tfmg/textures/block/black_concrete_stage2.png differ diff --git a/src/main/resources/assets/tfmg/textures/block/blue_concrete_stage0.png b/src/main/resources/assets/tfmg/textures/block/blue_concrete_stage0.png new file mode 100644 index 00000000..7feed647 Binary files /dev/null and b/src/main/resources/assets/tfmg/textures/block/blue_concrete_stage0.png differ diff --git a/src/main/resources/assets/tfmg/textures/block/blue_concrete_stage1.png b/src/main/resources/assets/tfmg/textures/block/blue_concrete_stage1.png new file mode 100644 index 00000000..f62ca1e0 Binary files /dev/null and b/src/main/resources/assets/tfmg/textures/block/blue_concrete_stage1.png differ diff --git a/src/main/resources/assets/tfmg/textures/block/blue_concrete_stage2.png b/src/main/resources/assets/tfmg/textures/block/blue_concrete_stage2.png new file mode 100644 index 00000000..7adcf1a1 Binary files /dev/null and b/src/main/resources/assets/tfmg/textures/block/blue_concrete_stage2.png differ diff --git a/src/main/resources/assets/tfmg/textures/block/blue_fire.png b/src/main/resources/assets/tfmg/textures/block/blue_fire.png new file mode 100644 index 00000000..b8eed0d6 Binary files /dev/null and b/src/main/resources/assets/tfmg/textures/block/blue_fire.png differ diff --git a/src/main/resources/assets/tfmg/textures/block/blue_fire_0.png b/src/main/resources/assets/tfmg/textures/block/blue_fire_0.png new file mode 100644 index 00000000..b8eed0d6 Binary files /dev/null and b/src/main/resources/assets/tfmg/textures/block/blue_fire_0.png differ diff --git a/src/main/resources/assets/tfmg/textures/block/blue_fire_0.png.mcmeta b/src/main/resources/assets/tfmg/textures/block/blue_fire_0.png.mcmeta new file mode 100644 index 00000000..76446714 --- /dev/null +++ b/src/main/resources/assets/tfmg/textures/block/blue_fire_0.png.mcmeta @@ -0,0 +1,38 @@ +{ + "animation": { + "frames": [ + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15 + ] + } +} diff --git a/src/main/resources/assets/tfmg/textures/block/blue_fire_1.png b/src/main/resources/assets/tfmg/textures/block/blue_fire_1.png new file mode 100644 index 00000000..0db6a920 Binary files /dev/null and b/src/main/resources/assets/tfmg/textures/block/blue_fire_1.png differ diff --git a/src/main/resources/assets/tfmg/textures/block/blue_fire_1.png.mcmeta b/src/main/resources/assets/tfmg/textures/block/blue_fire_1.png.mcmeta new file mode 100644 index 00000000..4f0718ac --- /dev/null +++ b/src/main/resources/assets/tfmg/textures/block/blue_fire_1.png.mcmeta @@ -0,0 +1,3 @@ +{ + "animation": {} +} \ No newline at end of file diff --git a/src/main/resources/assets/tfmg/textures/block/brown_concrete_stage0.png b/src/main/resources/assets/tfmg/textures/block/brown_concrete_stage0.png new file mode 100644 index 00000000..5e1a5c87 Binary files /dev/null and b/src/main/resources/assets/tfmg/textures/block/brown_concrete_stage0.png differ diff --git a/src/main/resources/assets/tfmg/textures/block/brown_concrete_stage1.png b/src/main/resources/assets/tfmg/textures/block/brown_concrete_stage1.png new file mode 100644 index 00000000..9c73a73d Binary files /dev/null and b/src/main/resources/assets/tfmg/textures/block/brown_concrete_stage1.png differ diff --git a/src/main/resources/assets/tfmg/textures/block/brown_concrete_stage2.png b/src/main/resources/assets/tfmg/textures/block/brown_concrete_stage2.png new file mode 100644 index 00000000..587a68cb Binary files /dev/null and b/src/main/resources/assets/tfmg/textures/block/brown_concrete_stage2.png differ diff --git a/src/main/resources/assets/tfmg/textures/block/cast_iron_block.png b/src/main/resources/assets/tfmg/textures/block/cast_iron_block.png new file mode 100644 index 00000000..ba96a332 Binary files /dev/null and b/src/main/resources/assets/tfmg/textures/block/cast_iron_block.png differ diff --git a/src/main/resources/assets/tfmg/textures/block/cast_iron_block_connected.png b/src/main/resources/assets/tfmg/textures/block/cast_iron_block_connected.png new file mode 100644 index 00000000..43c72697 Binary files /dev/null and b/src/main/resources/assets/tfmg/textures/block/cast_iron_block_connected.png differ diff --git a/src/main/resources/assets/tfmg/textures/block/cast_iron_distillation_controller_side.png b/src/main/resources/assets/tfmg/textures/block/cast_iron_distillation_controller_side.png new file mode 100644 index 00000000..829f2cb8 Binary files /dev/null and b/src/main/resources/assets/tfmg/textures/block/cast_iron_distillation_controller_side.png differ diff --git a/src/main/resources/assets/tfmg/textures/block/cast_iron_distillation_controller_top.png b/src/main/resources/assets/tfmg/textures/block/cast_iron_distillation_controller_top.png new file mode 100644 index 00000000..ad7a0116 Binary files /dev/null and b/src/main/resources/assets/tfmg/textures/block/cast_iron_distillation_controller_top.png differ diff --git a/src/main/resources/assets/tfmg/textures/block/cast_iron_flywheel.png b/src/main/resources/assets/tfmg/textures/block/cast_iron_flywheel.png new file mode 100644 index 00000000..2ae31fe8 Binary files /dev/null and b/src/main/resources/assets/tfmg/textures/block/cast_iron_flywheel.png differ diff --git a/src/main/resources/assets/tfmg/textures/block/caution_block.png b/src/main/resources/assets/tfmg/textures/block/caution_block.png new file mode 100644 index 00000000..ce2bf285 Binary files /dev/null and b/src/main/resources/assets/tfmg/textures/block/caution_block.png differ diff --git a/src/main/resources/assets/tfmg/textures/block/cement.png b/src/main/resources/assets/tfmg/textures/block/cement.png new file mode 100644 index 00000000..de5f3158 Binary files /dev/null and b/src/main/resources/assets/tfmg/textures/block/cement.png differ diff --git a/src/main/resources/assets/tfmg/textures/block/chipwood.png b/src/main/resources/assets/tfmg/textures/block/chipwood.png new file mode 100644 index 00000000..fb796f26 Binary files /dev/null and b/src/main/resources/assets/tfmg/textures/block/chipwood.png differ diff --git a/src/main/resources/assets/tfmg/textures/block/coal_coke_block.png b/src/main/resources/assets/tfmg/textures/block/coal_coke_block.png new file mode 100644 index 00000000..d4351718 Binary files /dev/null and b/src/main/resources/assets/tfmg/textures/block/coal_coke_block.png differ diff --git a/src/main/resources/assets/tfmg/textures/block/concrete.png b/src/main/resources/assets/tfmg/textures/block/concrete.png new file mode 100644 index 00000000..23bb156b Binary files /dev/null and b/src/main/resources/assets/tfmg/textures/block/concrete.png differ diff --git a/src/main/resources/assets/tfmg/textures/block/cut_bauxite.png b/src/main/resources/assets/tfmg/textures/block/cut_bauxite.png new file mode 100644 index 00000000..4551cd84 Binary files /dev/null and b/src/main/resources/assets/tfmg/textures/block/cut_bauxite.png differ diff --git a/src/main/resources/assets/tfmg/textures/block/cut_bauxite_brick.png b/src/main/resources/assets/tfmg/textures/block/cut_bauxite_brick.png new file mode 100644 index 00000000..4337a55b Binary files /dev/null and b/src/main/resources/assets/tfmg/textures/block/cut_bauxite_brick.png differ diff --git a/src/main/resources/assets/tfmg/textures/block/cyan_concrete_stage0.png b/src/main/resources/assets/tfmg/textures/block/cyan_concrete_stage0.png new file mode 100644 index 00000000..ca292435 Binary files /dev/null and b/src/main/resources/assets/tfmg/textures/block/cyan_concrete_stage0.png differ diff --git a/src/main/resources/assets/tfmg/textures/block/cyan_concrete_stage1.png b/src/main/resources/assets/tfmg/textures/block/cyan_concrete_stage1.png new file mode 100644 index 00000000..3d54ff26 Binary files /dev/null and b/src/main/resources/assets/tfmg/textures/block/cyan_concrete_stage1.png differ diff --git a/src/main/resources/assets/tfmg/textures/block/cyan_concrete_stage2.png b/src/main/resources/assets/tfmg/textures/block/cyan_concrete_stage2.png new file mode 100644 index 00000000..cd00bedd Binary files /dev/null and b/src/main/resources/assets/tfmg/textures/block/cyan_concrete_stage2.png differ diff --git a/src/main/resources/assets/tfmg/textures/block/deposit_scanner.png b/src/main/resources/assets/tfmg/textures/block/deposit_scanner.png new file mode 100644 index 00000000..c996b711 Binary files /dev/null and b/src/main/resources/assets/tfmg/textures/block/deposit_scanner.png differ diff --git a/src/main/resources/assets/tfmg/textures/block/diesel_engine.png b/src/main/resources/assets/tfmg/textures/block/diesel_engine.png new file mode 100644 index 00000000..2a45184b Binary files /dev/null and b/src/main/resources/assets/tfmg/textures/block/diesel_engine.png differ diff --git a/src/main/resources/assets/tfmg/textures/block/distillation_controller.png b/src/main/resources/assets/tfmg/textures/block/distillation_controller.png new file mode 100644 index 00000000..b86548a6 Binary files /dev/null and b/src/main/resources/assets/tfmg/textures/block/distillation_controller.png differ diff --git a/src/main/resources/assets/tfmg/textures/block/distillation_controller_front.png b/src/main/resources/assets/tfmg/textures/block/distillation_controller_front.png new file mode 100644 index 00000000..71513c0f Binary files /dev/null and b/src/main/resources/assets/tfmg/textures/block/distillation_controller_front.png differ diff --git a/src/main/resources/assets/tfmg/textures/block/distillation_controller_top.png b/src/main/resources/assets/tfmg/textures/block/distillation_controller_top.png new file mode 100644 index 00000000..0416d319 Binary files /dev/null and b/src/main/resources/assets/tfmg/textures/block/distillation_controller_top.png differ diff --git a/src/main/resources/assets/tfmg/textures/block/distillation_tower_output.png b/src/main/resources/assets/tfmg/textures/block/distillation_tower_output.png new file mode 100644 index 00000000..9094a6c1 Binary files /dev/null and b/src/main/resources/assets/tfmg/textures/block/distillation_tower_output.png differ diff --git a/src/main/resources/assets/tfmg/textures/block/distiller_side.png b/src/main/resources/assets/tfmg/textures/block/distiller_side.png new file mode 100644 index 00000000..429f2166 Binary files /dev/null and b/src/main/resources/assets/tfmg/textures/block/distiller_side.png differ diff --git a/src/main/resources/assets/tfmg/textures/block/encased_steel_pipe.png b/src/main/resources/assets/tfmg/textures/block/encased_steel_pipe.png new file mode 100644 index 00000000..2ce6f97c Binary files /dev/null and b/src/main/resources/assets/tfmg/textures/block/encased_steel_pipe.png differ diff --git a/src/main/resources/assets/tfmg/textures/block/exhaust.png b/src/main/resources/assets/tfmg/textures/block/exhaust.png new file mode 100644 index 00000000..f3f8369a Binary files /dev/null and b/src/main/resources/assets/tfmg/textures/block/exhaust.png differ diff --git a/src/main/resources/assets/tfmg/textures/block/factory_floor.png b/src/main/resources/assets/tfmg/textures/block/factory_floor.png new file mode 100644 index 00000000..6bac99eb Binary files /dev/null and b/src/main/resources/assets/tfmg/textures/block/factory_floor.png differ diff --git a/src/main/resources/assets/tfmg/textures/block/flarestack.png b/src/main/resources/assets/tfmg/textures/block/flarestack.png new file mode 100644 index 00000000..a9cfe23c Binary files /dev/null and b/src/main/resources/assets/tfmg/textures/block/flarestack.png differ diff --git a/src/main/resources/assets/tfmg/textures/block/fossilstone.png b/src/main/resources/assets/tfmg/textures/block/fossilstone.png new file mode 100644 index 00000000..1e59e231 Binary files /dev/null and b/src/main/resources/assets/tfmg/textures/block/fossilstone.png differ diff --git a/src/main/resources/assets/tfmg/textures/block/gasoline_engine.png b/src/main/resources/assets/tfmg/textures/block/gasoline_engine.png new file mode 100644 index 00000000..cd4506a8 Binary files /dev/null and b/src/main/resources/assets/tfmg/textures/block/gasoline_engine.png differ diff --git a/src/main/resources/assets/tfmg/textures/block/gauge.png b/src/main/resources/assets/tfmg/textures/block/gauge.png new file mode 100644 index 00000000..a7aec9ac Binary files /dev/null and b/src/main/resources/assets/tfmg/textures/block/gauge.png differ diff --git a/src/main/resources/assets/tfmg/textures/block/glass_steel_pipe.png b/src/main/resources/assets/tfmg/textures/block/glass_steel_pipe.png new file mode 100644 index 00000000..d10d9d8d Binary files /dev/null and b/src/main/resources/assets/tfmg/textures/block/glass_steel_pipe.png differ diff --git a/src/main/resources/assets/tfmg/textures/block/gray_concrete_stage0.png b/src/main/resources/assets/tfmg/textures/block/gray_concrete_stage0.png new file mode 100644 index 00000000..136b7891 Binary files /dev/null and b/src/main/resources/assets/tfmg/textures/block/gray_concrete_stage0.png differ diff --git a/src/main/resources/assets/tfmg/textures/block/gray_concrete_stage1.png b/src/main/resources/assets/tfmg/textures/block/gray_concrete_stage1.png new file mode 100644 index 00000000..9d888869 Binary files /dev/null and b/src/main/resources/assets/tfmg/textures/block/gray_concrete_stage1.png differ diff --git a/src/main/resources/assets/tfmg/textures/block/gray_concrete_stage2.png b/src/main/resources/assets/tfmg/textures/block/gray_concrete_stage2.png new file mode 100644 index 00000000..cb7e36c9 Binary files /dev/null and b/src/main/resources/assets/tfmg/textures/block/gray_concrete_stage2.png differ diff --git a/src/main/resources/assets/tfmg/textures/block/green_concrete_stage0.png b/src/main/resources/assets/tfmg/textures/block/green_concrete_stage0.png new file mode 100644 index 00000000..c550e82c Binary files /dev/null and b/src/main/resources/assets/tfmg/textures/block/green_concrete_stage0.png differ diff --git a/src/main/resources/assets/tfmg/textures/block/green_concrete_stage1.png b/src/main/resources/assets/tfmg/textures/block/green_concrete_stage1.png new file mode 100644 index 00000000..a197596b Binary files /dev/null and b/src/main/resources/assets/tfmg/textures/block/green_concrete_stage1.png differ diff --git a/src/main/resources/assets/tfmg/textures/block/green_concrete_stage2.png b/src/main/resources/assets/tfmg/textures/block/green_concrete_stage2.png new file mode 100644 index 00000000..d6415b62 Binary files /dev/null and b/src/main/resources/assets/tfmg/textures/block/green_concrete_stage2.png differ diff --git a/src/main/resources/assets/tfmg/textures/block/green_fire.png b/src/main/resources/assets/tfmg/textures/block/green_fire.png new file mode 100644 index 00000000..1462d813 Binary files /dev/null and b/src/main/resources/assets/tfmg/textures/block/green_fire.png differ diff --git a/src/main/resources/assets/tfmg/textures/block/green_fire_0.png b/src/main/resources/assets/tfmg/textures/block/green_fire_0.png new file mode 100644 index 00000000..1462d813 Binary files /dev/null and b/src/main/resources/assets/tfmg/textures/block/green_fire_0.png differ diff --git a/src/main/resources/assets/tfmg/textures/block/green_fire_0.png.mcmeta b/src/main/resources/assets/tfmg/textures/block/green_fire_0.png.mcmeta new file mode 100644 index 00000000..76446714 --- /dev/null +++ b/src/main/resources/assets/tfmg/textures/block/green_fire_0.png.mcmeta @@ -0,0 +1,38 @@ +{ + "animation": { + "frames": [ + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15 + ] + } +} diff --git a/src/main/resources/assets/tfmg/textures/block/green_fire_1.png b/src/main/resources/assets/tfmg/textures/block/green_fire_1.png new file mode 100644 index 00000000..c0f29962 Binary files /dev/null and b/src/main/resources/assets/tfmg/textures/block/green_fire_1.png differ diff --git a/src/main/resources/assets/tfmg/textures/block/green_fire_1.png.mcmeta b/src/main/resources/assets/tfmg/textures/block/green_fire_1.png.mcmeta new file mode 100644 index 00000000..4f0718ac --- /dev/null +++ b/src/main/resources/assets/tfmg/textures/block/green_fire_1.png.mcmeta @@ -0,0 +1,3 @@ +{ + "animation": {} +} \ No newline at end of file diff --git a/src/main/resources/assets/tfmg/textures/block/hardened_planks.png b/src/main/resources/assets/tfmg/textures/block/hardened_planks.png new file mode 100644 index 00000000..f0113520 Binary files /dev/null and b/src/main/resources/assets/tfmg/textures/block/hardened_planks.png differ diff --git a/src/main/resources/assets/tfmg/textures/block/heavy_casing_door_bottom.png b/src/main/resources/assets/tfmg/textures/block/heavy_casing_door_bottom.png new file mode 100644 index 00000000..5fef25c4 Binary files /dev/null and b/src/main/resources/assets/tfmg/textures/block/heavy_casing_door_bottom.png differ diff --git a/src/main/resources/assets/tfmg/textures/block/heavy_casing_encased_cogwheel_side.png b/src/main/resources/assets/tfmg/textures/block/heavy_casing_encased_cogwheel_side.png new file mode 100644 index 00000000..abffeabd Binary files /dev/null and b/src/main/resources/assets/tfmg/textures/block/heavy_casing_encased_cogwheel_side.png differ diff --git a/src/main/resources/assets/tfmg/textures/block/heavy_casing_encased_cogwheel_side_connected.png b/src/main/resources/assets/tfmg/textures/block/heavy_casing_encased_cogwheel_side_connected.png new file mode 100644 index 00000000..68946fb5 Binary files /dev/null and b/src/main/resources/assets/tfmg/textures/block/heavy_casing_encased_cogwheel_side_connected.png differ diff --git a/src/main/resources/assets/tfmg/textures/block/heavy_casing_side.png b/src/main/resources/assets/tfmg/textures/block/heavy_casing_side.png new file mode 100644 index 00000000..3ead5dd5 Binary files /dev/null and b/src/main/resources/assets/tfmg/textures/block/heavy_casing_side.png differ diff --git a/src/main/resources/assets/tfmg/textures/block/heavy_casing_top.png b/src/main/resources/assets/tfmg/textures/block/heavy_casing_top.png new file mode 100644 index 00000000..1ad4b063 Binary files /dev/null and b/src/main/resources/assets/tfmg/textures/block/heavy_casing_top.png differ diff --git a/src/main/resources/assets/tfmg/textures/block/heavy_gearbox.png b/src/main/resources/assets/tfmg/textures/block/heavy_gearbox.png new file mode 100644 index 00000000..8758f4c9 Binary files /dev/null and b/src/main/resources/assets/tfmg/textures/block/heavy_gearbox.png differ diff --git a/src/main/resources/assets/tfmg/textures/block/heavy_machinery_casing.png b/src/main/resources/assets/tfmg/textures/block/heavy_machinery_casing.png new file mode 100644 index 00000000..2e8b407c Binary files /dev/null and b/src/main/resources/assets/tfmg/textures/block/heavy_machinery_casing.png differ diff --git a/src/main/resources/assets/tfmg/textures/block/heavy_machinery_casing_connected.png b/src/main/resources/assets/tfmg/textures/block/heavy_machinery_casing_connected.png new file mode 100644 index 00000000..d451133d Binary files /dev/null and b/src/main/resources/assets/tfmg/textures/block/heavy_machinery_casing_connected.png differ diff --git a/src/main/resources/assets/tfmg/textures/block/heavy_plated_door_bottom.png b/src/main/resources/assets/tfmg/textures/block/heavy_plated_door_bottom.png new file mode 100644 index 00000000..e2e138b1 Binary files /dev/null and b/src/main/resources/assets/tfmg/textures/block/heavy_plated_door_bottom.png differ diff --git a/src/main/resources/assets/tfmg/textures/block/heavy_plated_door_top.png b/src/main/resources/assets/tfmg/textures/block/heavy_plated_door_top.png new file mode 100644 index 00000000..6bdf663d Binary files /dev/null and b/src/main/resources/assets/tfmg/textures/block/heavy_plated_door_top.png differ diff --git a/src/main/resources/assets/tfmg/textures/block/industrial_barrel_back.png b/src/main/resources/assets/tfmg/textures/block/industrial_barrel_back.png new file mode 100644 index 00000000..d51bc98c Binary files /dev/null and b/src/main/resources/assets/tfmg/textures/block/industrial_barrel_back.png differ diff --git a/src/main/resources/assets/tfmg/textures/block/industrial_barrel_front.png b/src/main/resources/assets/tfmg/textures/block/industrial_barrel_front.png new file mode 100644 index 00000000..8782eeca Binary files /dev/null and b/src/main/resources/assets/tfmg/textures/block/industrial_barrel_front.png differ diff --git a/src/main/resources/assets/tfmg/textures/block/industrial_barrel_front_open.png b/src/main/resources/assets/tfmg/textures/block/industrial_barrel_front_open.png new file mode 100644 index 00000000..1cf23110 Binary files /dev/null and b/src/main/resources/assets/tfmg/textures/block/industrial_barrel_front_open.png differ diff --git a/src/main/resources/assets/tfmg/textures/block/industrial_barrel_side.png b/src/main/resources/assets/tfmg/textures/block/industrial_barrel_side.png new file mode 100644 index 00000000..72aa519d Binary files /dev/null and b/src/main/resources/assets/tfmg/textures/block/industrial_barrel_side.png differ diff --git a/src/main/resources/assets/tfmg/textures/block/industrial_pipe.png b/src/main/resources/assets/tfmg/textures/block/industrial_pipe.png new file mode 100644 index 00000000..7a1216f8 Binary files /dev/null and b/src/main/resources/assets/tfmg/textures/block/industrial_pipe.png differ diff --git a/src/main/resources/assets/tfmg/textures/block/ladder_aluminum.png b/src/main/resources/assets/tfmg/textures/block/ladder_aluminum.png new file mode 100644 index 00000000..52b7bd61 Binary files /dev/null and b/src/main/resources/assets/tfmg/textures/block/ladder_aluminum.png differ diff --git a/src/main/resources/assets/tfmg/textures/block/ladder_aluminum_hoop.png b/src/main/resources/assets/tfmg/textures/block/ladder_aluminum_hoop.png new file mode 100644 index 00000000..5aa1c9e2 Binary files /dev/null and b/src/main/resources/assets/tfmg/textures/block/ladder_aluminum_hoop.png differ diff --git a/src/main/resources/assets/tfmg/textures/block/ladder_steel.png b/src/main/resources/assets/tfmg/textures/block/ladder_steel.png new file mode 100644 index 00000000..a9936d34 Binary files /dev/null and b/src/main/resources/assets/tfmg/textures/block/ladder_steel.png differ diff --git a/src/main/resources/assets/tfmg/textures/block/ladder_steel_hoop.png b/src/main/resources/assets/tfmg/textures/block/ladder_steel_hoop.png new file mode 100644 index 00000000..16aaa18c Binary files /dev/null and b/src/main/resources/assets/tfmg/textures/block/ladder_steel_hoop.png differ diff --git a/src/main/resources/assets/tfmg/textures/block/layered_bauxite_connected.png b/src/main/resources/assets/tfmg/textures/block/layered_bauxite_connected.png new file mode 100644 index 00000000..3df3b1ad Binary files /dev/null and b/src/main/resources/assets/tfmg/textures/block/layered_bauxite_connected.png differ diff --git a/src/main/resources/assets/tfmg/textures/block/light_blue_concrete_stage0.png b/src/main/resources/assets/tfmg/textures/block/light_blue_concrete_stage0.png new file mode 100644 index 00000000..9544445d Binary files /dev/null and b/src/main/resources/assets/tfmg/textures/block/light_blue_concrete_stage0.png differ diff --git a/src/main/resources/assets/tfmg/textures/block/light_blue_concrete_stage1.png b/src/main/resources/assets/tfmg/textures/block/light_blue_concrete_stage1.png new file mode 100644 index 00000000..91bd3d87 Binary files /dev/null and b/src/main/resources/assets/tfmg/textures/block/light_blue_concrete_stage1.png differ diff --git a/src/main/resources/assets/tfmg/textures/block/light_blue_concrete_stage2.png b/src/main/resources/assets/tfmg/textures/block/light_blue_concrete_stage2.png new file mode 100644 index 00000000..aec034db Binary files /dev/null and b/src/main/resources/assets/tfmg/textures/block/light_blue_concrete_stage2.png differ diff --git a/src/main/resources/assets/tfmg/textures/block/light_gray_concrete_stage0.png b/src/main/resources/assets/tfmg/textures/block/light_gray_concrete_stage0.png new file mode 100644 index 00000000..910975d5 Binary files /dev/null and b/src/main/resources/assets/tfmg/textures/block/light_gray_concrete_stage0.png differ diff --git a/src/main/resources/assets/tfmg/textures/block/light_gray_concrete_stage1.png b/src/main/resources/assets/tfmg/textures/block/light_gray_concrete_stage1.png new file mode 100644 index 00000000..9a059949 Binary files /dev/null and b/src/main/resources/assets/tfmg/textures/block/light_gray_concrete_stage1.png differ diff --git a/src/main/resources/assets/tfmg/textures/block/light_gray_concrete_stage2.png b/src/main/resources/assets/tfmg/textures/block/light_gray_concrete_stage2.png new file mode 100644 index 00000000..58bef081 Binary files /dev/null and b/src/main/resources/assets/tfmg/textures/block/light_gray_concrete_stage2.png differ diff --git a/src/main/resources/assets/tfmg/textures/block/lignite.png b/src/main/resources/assets/tfmg/textures/block/lignite.png new file mode 100644 index 00000000..775b1eb7 Binary files /dev/null and b/src/main/resources/assets/tfmg/textures/block/lignite.png differ diff --git a/src/main/resources/assets/tfmg/textures/block/lime_concrete_stage0.png b/src/main/resources/assets/tfmg/textures/block/lime_concrete_stage0.png new file mode 100644 index 00000000..5b24a2ec Binary files /dev/null and b/src/main/resources/assets/tfmg/textures/block/lime_concrete_stage0.png differ diff --git a/src/main/resources/assets/tfmg/textures/block/lime_concrete_stage1.png b/src/main/resources/assets/tfmg/textures/block/lime_concrete_stage1.png new file mode 100644 index 00000000..d47e5a45 Binary files /dev/null and b/src/main/resources/assets/tfmg/textures/block/lime_concrete_stage1.png differ diff --git a/src/main/resources/assets/tfmg/textures/block/lime_concrete_stage2.png b/src/main/resources/assets/tfmg/textures/block/lime_concrete_stage2.png new file mode 100644 index 00000000..31a19380 Binary files /dev/null and b/src/main/resources/assets/tfmg/textures/block/lime_concrete_stage2.png differ diff --git a/src/main/resources/assets/tfmg/textures/block/limesand.png b/src/main/resources/assets/tfmg/textures/block/limesand.png new file mode 100644 index 00000000..9a7e7003 Binary files /dev/null and b/src/main/resources/assets/tfmg/textures/block/limesand.png differ diff --git a/src/main/resources/assets/tfmg/textures/block/liquid_concrete.png b/src/main/resources/assets/tfmg/textures/block/liquid_concrete.png new file mode 100644 index 00000000..5a35319c Binary files /dev/null and b/src/main/resources/assets/tfmg/textures/block/liquid_concrete.png differ diff --git a/src/main/resources/assets/tfmg/textures/block/liquid_rebar_concrete.png b/src/main/resources/assets/tfmg/textures/block/liquid_rebar_concrete.png new file mode 100644 index 00000000..2d499216 Binary files /dev/null and b/src/main/resources/assets/tfmg/textures/block/liquid_rebar_concrete.png differ diff --git a/src/main/resources/assets/tfmg/textures/block/magenta_concrete_stage0.png b/src/main/resources/assets/tfmg/textures/block/magenta_concrete_stage0.png new file mode 100644 index 00000000..bbca4d52 Binary files /dev/null and b/src/main/resources/assets/tfmg/textures/block/magenta_concrete_stage0.png differ diff --git a/src/main/resources/assets/tfmg/textures/block/magenta_concrete_stage1.png b/src/main/resources/assets/tfmg/textures/block/magenta_concrete_stage1.png new file mode 100644 index 00000000..c23acea8 Binary files /dev/null and b/src/main/resources/assets/tfmg/textures/block/magenta_concrete_stage1.png differ diff --git a/src/main/resources/assets/tfmg/textures/block/magenta_concrete_stage2.png b/src/main/resources/assets/tfmg/textures/block/magenta_concrete_stage2.png new file mode 100644 index 00000000..456c35e7 Binary files /dev/null and b/src/main/resources/assets/tfmg/textures/block/magenta_concrete_stage2.png differ diff --git a/src/main/resources/assets/tfmg/textures/block/mesh_concrete.png b/src/main/resources/assets/tfmg/textures/block/mesh_concrete.png new file mode 100644 index 00000000..9114490f Binary files /dev/null and b/src/main/resources/assets/tfmg/textures/block/mesh_concrete.png differ diff --git a/src/main/resources/assets/tfmg/textures/block/napalm_bomb.png b/src/main/resources/assets/tfmg/textures/block/napalm_bomb.png new file mode 100644 index 00000000..b443c891 Binary files /dev/null and b/src/main/resources/assets/tfmg/textures/block/napalm_bomb.png differ diff --git a/src/main/resources/assets/tfmg/textures/block/napalm_bomb_bottom.png b/src/main/resources/assets/tfmg/textures/block/napalm_bomb_bottom.png new file mode 100644 index 00000000..138d7814 Binary files /dev/null and b/src/main/resources/assets/tfmg/textures/block/napalm_bomb_bottom.png differ diff --git a/src/main/resources/assets/tfmg/textures/block/napalm_bomb_side.png b/src/main/resources/assets/tfmg/textures/block/napalm_bomb_side.png new file mode 100644 index 00000000..3f643bdd Binary files /dev/null and b/src/main/resources/assets/tfmg/textures/block/napalm_bomb_side.png differ diff --git a/src/main/resources/assets/tfmg/textures/block/napalm_bomb_top.png b/src/main/resources/assets/tfmg/textures/block/napalm_bomb_top.png new file mode 100644 index 00000000..ceeb4ddf Binary files /dev/null and b/src/main/resources/assets/tfmg/textures/block/napalm_bomb_top.png differ diff --git a/src/main/resources/assets/tfmg/textures/block/oil_deposit.png b/src/main/resources/assets/tfmg/textures/block/oil_deposit.png new file mode 100644 index 00000000..0cf82178 Binary files /dev/null and b/src/main/resources/assets/tfmg/textures/block/oil_deposit.png differ diff --git a/src/main/resources/assets/tfmg/textures/block/orange_concrete_stage0.png b/src/main/resources/assets/tfmg/textures/block/orange_concrete_stage0.png new file mode 100644 index 00000000..3adbe119 Binary files /dev/null and b/src/main/resources/assets/tfmg/textures/block/orange_concrete_stage0.png differ diff --git a/src/main/resources/assets/tfmg/textures/block/orange_concrete_stage1.png b/src/main/resources/assets/tfmg/textures/block/orange_concrete_stage1.png new file mode 100644 index 00000000..3cd328bb Binary files /dev/null and b/src/main/resources/assets/tfmg/textures/block/orange_concrete_stage1.png differ diff --git a/src/main/resources/assets/tfmg/textures/block/orange_concrete_stage2.png b/src/main/resources/assets/tfmg/textures/block/orange_concrete_stage2.png new file mode 100644 index 00000000..6fc8d9b7 Binary files /dev/null and b/src/main/resources/assets/tfmg/textures/block/orange_concrete_stage2.png differ diff --git a/src/main/resources/assets/tfmg/textures/block/pink_concrete_stage0.png b/src/main/resources/assets/tfmg/textures/block/pink_concrete_stage0.png new file mode 100644 index 00000000..17509d27 Binary files /dev/null and b/src/main/resources/assets/tfmg/textures/block/pink_concrete_stage0.png differ diff --git a/src/main/resources/assets/tfmg/textures/block/pink_concrete_stage1.png b/src/main/resources/assets/tfmg/textures/block/pink_concrete_stage1.png new file mode 100644 index 00000000..f044927f Binary files /dev/null and b/src/main/resources/assets/tfmg/textures/block/pink_concrete_stage1.png differ diff --git a/src/main/resources/assets/tfmg/textures/block/pink_concrete_stage2.png b/src/main/resources/assets/tfmg/textures/block/pink_concrete_stage2.png new file mode 100644 index 00000000..f41532c5 Binary files /dev/null and b/src/main/resources/assets/tfmg/textures/block/pink_concrete_stage2.png differ diff --git a/src/main/resources/assets/tfmg/textures/block/plastic_block.png b/src/main/resources/assets/tfmg/textures/block/plastic_block.png new file mode 100644 index 00000000..3c42bd25 Binary files /dev/null and b/src/main/resources/assets/tfmg/textures/block/plastic_block.png differ diff --git a/src/main/resources/assets/tfmg/textures/block/polished_cut_bauxite.png b/src/main/resources/assets/tfmg/textures/block/polished_cut_bauxite.png new file mode 100644 index 00000000..a6a87402 Binary files /dev/null and b/src/main/resources/assets/tfmg/textures/block/polished_cut_bauxite.png differ diff --git a/src/main/resources/assets/tfmg/textures/block/pumpjack_base.png b/src/main/resources/assets/tfmg/textures/block/pumpjack_base.png new file mode 100644 index 00000000..913d1eaf Binary files /dev/null and b/src/main/resources/assets/tfmg/textures/block/pumpjack_base.png differ diff --git a/src/main/resources/assets/tfmg/textures/block/pumpjack_crank.png b/src/main/resources/assets/tfmg/textures/block/pumpjack_crank.png new file mode 100644 index 00000000..02c136b0 Binary files /dev/null and b/src/main/resources/assets/tfmg/textures/block/pumpjack_crank.png differ diff --git a/src/main/resources/assets/tfmg/textures/block/pumpjack_hammer.png b/src/main/resources/assets/tfmg/textures/block/pumpjack_hammer.png new file mode 100644 index 00000000..d7bf141e Binary files /dev/null and b/src/main/resources/assets/tfmg/textures/block/pumpjack_hammer.png differ diff --git a/src/main/resources/assets/tfmg/textures/block/purple_concrete_stage0.png b/src/main/resources/assets/tfmg/textures/block/purple_concrete_stage0.png new file mode 100644 index 00000000..e723684f Binary files /dev/null and b/src/main/resources/assets/tfmg/textures/block/purple_concrete_stage0.png differ diff --git a/src/main/resources/assets/tfmg/textures/block/purple_concrete_stage1.png b/src/main/resources/assets/tfmg/textures/block/purple_concrete_stage1.png new file mode 100644 index 00000000..6bf799ac Binary files /dev/null and b/src/main/resources/assets/tfmg/textures/block/purple_concrete_stage1.png differ diff --git a/src/main/resources/assets/tfmg/textures/block/purple_concrete_stage2.png b/src/main/resources/assets/tfmg/textures/block/purple_concrete_stage2.png new file mode 100644 index 00000000..86c3c0ce Binary files /dev/null and b/src/main/resources/assets/tfmg/textures/block/purple_concrete_stage2.png differ diff --git a/src/main/resources/assets/tfmg/textures/block/rebar_cage.png b/src/main/resources/assets/tfmg/textures/block/rebar_cage.png new file mode 100644 index 00000000..d6955b5e Binary files /dev/null and b/src/main/resources/assets/tfmg/textures/block/rebar_cage.png differ diff --git a/src/main/resources/assets/tfmg/textures/block/rebar_concrete.png b/src/main/resources/assets/tfmg/textures/block/rebar_concrete.png new file mode 100644 index 00000000..e07fbb6e Binary files /dev/null and b/src/main/resources/assets/tfmg/textures/block/rebar_concrete.png differ diff --git a/src/main/resources/assets/tfmg/textures/block/red_concrete_stage0.png b/src/main/resources/assets/tfmg/textures/block/red_concrete_stage0.png new file mode 100644 index 00000000..b1de5a1b Binary files /dev/null and b/src/main/resources/assets/tfmg/textures/block/red_concrete_stage0.png differ diff --git a/src/main/resources/assets/tfmg/textures/block/red_concrete_stage1.png b/src/main/resources/assets/tfmg/textures/block/red_concrete_stage1.png new file mode 100644 index 00000000..ecbd96c2 Binary files /dev/null and b/src/main/resources/assets/tfmg/textures/block/red_concrete_stage1.png differ diff --git a/src/main/resources/assets/tfmg/textures/block/red_concrete_stage2.png b/src/main/resources/assets/tfmg/textures/block/red_concrete_stage2.png new file mode 100644 index 00000000..574c0225 Binary files /dev/null and b/src/main/resources/assets/tfmg/textures/block/red_concrete_stage2.png differ diff --git a/src/main/resources/assets/tfmg/textures/block/sawdust_block.png b/src/main/resources/assets/tfmg/textures/block/sawdust_block.png new file mode 100644 index 00000000..a525861f Binary files /dev/null and b/src/main/resources/assets/tfmg/textures/block/sawdust_block.png differ diff --git a/src/main/resources/assets/tfmg/textures/block/scaffold/aluminum_scaffold.png b/src/main/resources/assets/tfmg/textures/block/scaffold/aluminum_scaffold.png new file mode 100644 index 00000000..537b709a Binary files /dev/null and b/src/main/resources/assets/tfmg/textures/block/scaffold/aluminum_scaffold.png differ diff --git a/src/main/resources/assets/tfmg/textures/block/scaffold/aluminum_scaffold_connected.png b/src/main/resources/assets/tfmg/textures/block/scaffold/aluminum_scaffold_connected.png new file mode 100644 index 00000000..ea81f421 Binary files /dev/null and b/src/main/resources/assets/tfmg/textures/block/scaffold/aluminum_scaffold_connected.png differ diff --git a/src/main/resources/assets/tfmg/textures/block/scaffold/aluminum_scaffold_inside.png b/src/main/resources/assets/tfmg/textures/block/scaffold/aluminum_scaffold_inside.png new file mode 100644 index 00000000..ae8b8c2d Binary files /dev/null and b/src/main/resources/assets/tfmg/textures/block/scaffold/aluminum_scaffold_inside.png differ diff --git a/src/main/resources/assets/tfmg/textures/block/scaffold/aluminum_scaffold_inside_connected.png b/src/main/resources/assets/tfmg/textures/block/scaffold/aluminum_scaffold_inside_connected.png new file mode 100644 index 00000000..5410e0b1 Binary files /dev/null and b/src/main/resources/assets/tfmg/textures/block/scaffold/aluminum_scaffold_inside_connected.png differ diff --git a/src/main/resources/assets/tfmg/textures/block/scaffold/aluminum_scaffold_top.png b/src/main/resources/assets/tfmg/textures/block/scaffold/aluminum_scaffold_top.png new file mode 100644 index 00000000..f67b659b Binary files /dev/null and b/src/main/resources/assets/tfmg/textures/block/scaffold/aluminum_scaffold_top.png differ diff --git a/src/main/resources/assets/tfmg/textures/block/scaffold/aluminum_scaffold_top_connected.png b/src/main/resources/assets/tfmg/textures/block/scaffold/aluminum_scaffold_top_connected.png new file mode 100644 index 00000000..3f433d1f Binary files /dev/null and b/src/main/resources/assets/tfmg/textures/block/scaffold/aluminum_scaffold_top_connected.png differ diff --git a/src/main/resources/assets/tfmg/textures/block/scaffold/steel_scaffold.png b/src/main/resources/assets/tfmg/textures/block/scaffold/steel_scaffold.png new file mode 100644 index 00000000..ece0f36e Binary files /dev/null and b/src/main/resources/assets/tfmg/textures/block/scaffold/steel_scaffold.png differ diff --git a/src/main/resources/assets/tfmg/textures/block/scaffold/steel_scaffold_connected.png b/src/main/resources/assets/tfmg/textures/block/scaffold/steel_scaffold_connected.png new file mode 100644 index 00000000..1bef366b Binary files /dev/null and b/src/main/resources/assets/tfmg/textures/block/scaffold/steel_scaffold_connected.png differ diff --git a/src/main/resources/assets/tfmg/textures/block/scaffold/steel_scaffold_inside.png b/src/main/resources/assets/tfmg/textures/block/scaffold/steel_scaffold_inside.png new file mode 100644 index 00000000..323b590d Binary files /dev/null and b/src/main/resources/assets/tfmg/textures/block/scaffold/steel_scaffold_inside.png differ diff --git a/src/main/resources/assets/tfmg/textures/block/scaffold/steel_scaffold_inside_connected.png b/src/main/resources/assets/tfmg/textures/block/scaffold/steel_scaffold_inside_connected.png new file mode 100644 index 00000000..42709c4f Binary files /dev/null and b/src/main/resources/assets/tfmg/textures/block/scaffold/steel_scaffold_inside_connected.png differ diff --git a/src/main/resources/assets/tfmg/textures/block/small_bauxite_brick.png b/src/main/resources/assets/tfmg/textures/block/small_bauxite_brick.png new file mode 100644 index 00000000..6d59a731 Binary files /dev/null and b/src/main/resources/assets/tfmg/textures/block/small_bauxite_brick.png differ diff --git a/src/main/resources/assets/tfmg/textures/block/steel_block.png b/src/main/resources/assets/tfmg/textures/block/steel_block.png new file mode 100644 index 00000000..4d7cdebd Binary files /dev/null and b/src/main/resources/assets/tfmg/textures/block/steel_block.png differ diff --git a/src/main/resources/assets/tfmg/textures/block/steel_block_connected.png b/src/main/resources/assets/tfmg/textures/block/steel_block_connected.png new file mode 100644 index 00000000..a7f5e2e4 Binary files /dev/null and b/src/main/resources/assets/tfmg/textures/block/steel_block_connected.png differ diff --git a/src/main/resources/assets/tfmg/textures/block/steel_casing.png b/src/main/resources/assets/tfmg/textures/block/steel_casing.png new file mode 100644 index 00000000..aa1a4989 Binary files /dev/null and b/src/main/resources/assets/tfmg/textures/block/steel_casing.png differ diff --git a/src/main/resources/assets/tfmg/textures/block/steel_casing_connected.png b/src/main/resources/assets/tfmg/textures/block/steel_casing_connected.png new file mode 100644 index 00000000..757a8510 Binary files /dev/null and b/src/main/resources/assets/tfmg/textures/block/steel_casing_connected.png differ diff --git a/src/main/resources/assets/tfmg/textures/block/steel_door_bottom.png b/src/main/resources/assets/tfmg/textures/block/steel_door_bottom.png new file mode 100644 index 00000000..3625b2ab Binary files /dev/null and b/src/main/resources/assets/tfmg/textures/block/steel_door_bottom.png differ diff --git a/src/main/resources/assets/tfmg/textures/block/steel_door_side.png b/src/main/resources/assets/tfmg/textures/block/steel_door_side.png new file mode 100644 index 00000000..3ead5dd5 Binary files /dev/null and b/src/main/resources/assets/tfmg/textures/block/steel_door_side.png differ diff --git a/src/main/resources/assets/tfmg/textures/block/steel_door_top.png b/src/main/resources/assets/tfmg/textures/block/steel_door_top.png new file mode 100644 index 00000000..fbcd0688 Binary files /dev/null and b/src/main/resources/assets/tfmg/textures/block/steel_door_top.png differ diff --git a/src/main/resources/assets/tfmg/textures/block/steel_encased_cogwheel_side.png b/src/main/resources/assets/tfmg/textures/block/steel_encased_cogwheel_side.png new file mode 100644 index 00000000..ac8c7425 Binary files /dev/null and b/src/main/resources/assets/tfmg/textures/block/steel_encased_cogwheel_side.png differ diff --git a/src/main/resources/assets/tfmg/textures/block/steel_encased_cogwheel_side_connected.png b/src/main/resources/assets/tfmg/textures/block/steel_encased_cogwheel_side_connected.png new file mode 100644 index 00000000..0533c465 Binary files /dev/null and b/src/main/resources/assets/tfmg/textures/block/steel_encased_cogwheel_side_connected.png differ diff --git a/src/main/resources/assets/tfmg/textures/block/steel_fluid_tank.png b/src/main/resources/assets/tfmg/textures/block/steel_fluid_tank.png new file mode 100644 index 00000000..3ed09bf4 Binary files /dev/null and b/src/main/resources/assets/tfmg/textures/block/steel_fluid_tank.png differ diff --git a/src/main/resources/assets/tfmg/textures/block/steel_fluid_tank_connected.png b/src/main/resources/assets/tfmg/textures/block/steel_fluid_tank_connected.png new file mode 100644 index 00000000..47a3f95e Binary files /dev/null and b/src/main/resources/assets/tfmg/textures/block/steel_fluid_tank_connected.png differ diff --git a/src/main/resources/assets/tfmg/textures/block/steel_fluid_tank_inner.png b/src/main/resources/assets/tfmg/textures/block/steel_fluid_tank_inner.png new file mode 100644 index 00000000..c0d7817d Binary files /dev/null and b/src/main/resources/assets/tfmg/textures/block/steel_fluid_tank_inner.png differ diff --git a/src/main/resources/assets/tfmg/textures/block/steel_fluid_tank_inner_connected.png b/src/main/resources/assets/tfmg/textures/block/steel_fluid_tank_inner_connected.png new file mode 100644 index 00000000..b95f471b Binary files /dev/null and b/src/main/resources/assets/tfmg/textures/block/steel_fluid_tank_inner_connected.png differ diff --git a/src/main/resources/assets/tfmg/textures/block/steel_fluid_tank_top.png b/src/main/resources/assets/tfmg/textures/block/steel_fluid_tank_top.png new file mode 100644 index 00000000..3c15986a Binary files /dev/null and b/src/main/resources/assets/tfmg/textures/block/steel_fluid_tank_top.png differ diff --git a/src/main/resources/assets/tfmg/textures/block/steel_fluid_tank_top_connected.png b/src/main/resources/assets/tfmg/textures/block/steel_fluid_tank_top_connected.png new file mode 100644 index 00000000..bbc4430f Binary files /dev/null and b/src/main/resources/assets/tfmg/textures/block/steel_fluid_tank_top_connected.png differ diff --git a/src/main/resources/assets/tfmg/textures/block/steel_fluid_tank_window.png b/src/main/resources/assets/tfmg/textures/block/steel_fluid_tank_window.png new file mode 100644 index 00000000..c496c8c1 Binary files /dev/null and b/src/main/resources/assets/tfmg/textures/block/steel_fluid_tank_window.png differ diff --git a/src/main/resources/assets/tfmg/textures/block/steel_fluid_tank_window_single.png b/src/main/resources/assets/tfmg/textures/block/steel_fluid_tank_window_single.png new file mode 100644 index 00000000..f90b7e04 Binary files /dev/null and b/src/main/resources/assets/tfmg/textures/block/steel_fluid_tank_window_single.png differ diff --git a/src/main/resources/assets/tfmg/textures/block/steel_flywheel.png b/src/main/resources/assets/tfmg/textures/block/steel_flywheel.png new file mode 100644 index 00000000..1011b231 Binary files /dev/null and b/src/main/resources/assets/tfmg/textures/block/steel_flywheel.png differ diff --git a/src/main/resources/assets/tfmg/textures/block/steel_frame.png b/src/main/resources/assets/tfmg/textures/block/steel_frame.png new file mode 100644 index 00000000..38735869 Binary files /dev/null and b/src/main/resources/assets/tfmg/textures/block/steel_frame.png differ diff --git a/src/main/resources/assets/tfmg/textures/block/steel_gearbox.png b/src/main/resources/assets/tfmg/textures/block/steel_gearbox.png new file mode 100644 index 00000000..ec5cf3c9 Binary files /dev/null and b/src/main/resources/assets/tfmg/textures/block/steel_gearbox.png differ diff --git a/src/main/resources/assets/tfmg/textures/block/steel_pipes.png b/src/main/resources/assets/tfmg/textures/block/steel_pipes.png new file mode 100644 index 00000000..a17166d5 Binary files /dev/null and b/src/main/resources/assets/tfmg/textures/block/steel_pipes.png differ diff --git a/src/main/resources/assets/tfmg/textures/block/steel_pipes_connected.png b/src/main/resources/assets/tfmg/textures/block/steel_pipes_connected.png new file mode 100644 index 00000000..ab68012e Binary files /dev/null and b/src/main/resources/assets/tfmg/textures/block/steel_pipes_connected.png differ diff --git a/src/main/resources/assets/tfmg/textures/block/steel_pump.png b/src/main/resources/assets/tfmg/textures/block/steel_pump.png new file mode 100644 index 00000000..f4cc847e Binary files /dev/null and b/src/main/resources/assets/tfmg/textures/block/steel_pump.png differ diff --git a/src/main/resources/assets/tfmg/textures/block/steel_railing.png b/src/main/resources/assets/tfmg/textures/block/steel_railing.png new file mode 100644 index 00000000..8d2c3cc2 Binary files /dev/null and b/src/main/resources/assets/tfmg/textures/block/steel_railing.png differ diff --git a/src/main/resources/assets/tfmg/textures/block/steel_trapdoor.png b/src/main/resources/assets/tfmg/textures/block/steel_trapdoor.png new file mode 100644 index 00000000..02fcdb70 Binary files /dev/null and b/src/main/resources/assets/tfmg/textures/block/steel_trapdoor.png differ diff --git a/src/main/resources/assets/tfmg/textures/block/steel_truss.png b/src/main/resources/assets/tfmg/textures/block/steel_truss.png new file mode 100644 index 00000000..14ee9b37 Binary files /dev/null and b/src/main/resources/assets/tfmg/textures/block/steel_truss.png differ diff --git a/src/main/resources/assets/tfmg/textures/block/sulfur.png b/src/main/resources/assets/tfmg/textures/block/sulfur.png new file mode 100644 index 00000000..4559c44d Binary files /dev/null and b/src/main/resources/assets/tfmg/textures/block/sulfur.png differ diff --git a/src/main/resources/assets/tfmg/textures/block/track_ballast.png b/src/main/resources/assets/tfmg/textures/block/track_ballast.png new file mode 100644 index 00000000..cacfb8e4 Binary files /dev/null and b/src/main/resources/assets/tfmg/textures/block/track_ballast.png differ diff --git a/src/main/resources/assets/tfmg/textures/block/waterproof_planks.png b/src/main/resources/assets/tfmg/textures/block/waterproof_planks.png new file mode 100644 index 00000000..03ee5a9c Binary files /dev/null and b/src/main/resources/assets/tfmg/textures/block/waterproof_planks.png differ diff --git a/src/main/resources/assets/tfmg/textures/block/white_concrete_stage0.png b/src/main/resources/assets/tfmg/textures/block/white_concrete_stage0.png new file mode 100644 index 00000000..8bcb79e7 Binary files /dev/null and b/src/main/resources/assets/tfmg/textures/block/white_concrete_stage0.png differ diff --git a/src/main/resources/assets/tfmg/textures/block/white_concrete_stage1.png b/src/main/resources/assets/tfmg/textures/block/white_concrete_stage1.png new file mode 100644 index 00000000..a3b27d06 Binary files /dev/null and b/src/main/resources/assets/tfmg/textures/block/white_concrete_stage1.png differ diff --git a/src/main/resources/assets/tfmg/textures/block/white_concrete_stage2.png b/src/main/resources/assets/tfmg/textures/block/white_concrete_stage2.png new file mode 100644 index 00000000..ffb5c7fb Binary files /dev/null and b/src/main/resources/assets/tfmg/textures/block/white_concrete_stage2.png differ diff --git a/src/main/resources/assets/tfmg/textures/block/yellow_concrete_stage0.png b/src/main/resources/assets/tfmg/textures/block/yellow_concrete_stage0.png new file mode 100644 index 00000000..d54d7412 Binary files /dev/null and b/src/main/resources/assets/tfmg/textures/block/yellow_concrete_stage0.png differ diff --git a/src/main/resources/assets/tfmg/textures/block/yellow_concrete_stage1.png b/src/main/resources/assets/tfmg/textures/block/yellow_concrete_stage1.png new file mode 100644 index 00000000..6cad34b0 Binary files /dev/null and b/src/main/resources/assets/tfmg/textures/block/yellow_concrete_stage1.png differ diff --git a/src/main/resources/assets/tfmg/textures/block/yellow_concrete_stage2.png b/src/main/resources/assets/tfmg/textures/block/yellow_concrete_stage2.png new file mode 100644 index 00000000..a48c9e58 Binary files /dev/null and b/src/main/resources/assets/tfmg/textures/block/yellow_concrete_stage2.png differ diff --git a/src/main/resources/assets/tfmg/textures/entity/blue_spark.png b/src/main/resources/assets/tfmg/textures/entity/blue_spark.png new file mode 100644 index 00000000..9c0d810f Binary files /dev/null and b/src/main/resources/assets/tfmg/textures/entity/blue_spark.png differ diff --git a/src/main/resources/assets/tfmg/textures/entity/green_spark.png b/src/main/resources/assets/tfmg/textures/entity/green_spark.png new file mode 100644 index 00000000..5c6a1bef Binary files /dev/null and b/src/main/resources/assets/tfmg/textures/entity/green_spark.png differ diff --git a/src/main/resources/assets/tfmg/textures/item/aluminum_door.png b/src/main/resources/assets/tfmg/textures/item/aluminum_door.png new file mode 100644 index 00000000..97eff285 Binary files /dev/null and b/src/main/resources/assets/tfmg/textures/item/aluminum_door.png differ diff --git a/src/main/resources/assets/tfmg/textures/item/aluminum_dust.png b/src/main/resources/assets/tfmg/textures/item/aluminum_dust.png new file mode 100644 index 00000000..49d5b044 Binary files /dev/null and b/src/main/resources/assets/tfmg/textures/item/aluminum_dust.png differ diff --git a/src/main/resources/assets/tfmg/textures/item/aluminum_ingot.png b/src/main/resources/assets/tfmg/textures/item/aluminum_ingot.png new file mode 100644 index 00000000..42fc8ac7 Binary files /dev/null and b/src/main/resources/assets/tfmg/textures/item/aluminum_ingot.png differ diff --git a/src/main/resources/assets/tfmg/textures/item/cast_iron_ingot.png b/src/main/resources/assets/tfmg/textures/item/cast_iron_ingot.png new file mode 100644 index 00000000..99582093 Binary files /dev/null and b/src/main/resources/assets/tfmg/textures/item/cast_iron_ingot.png differ diff --git a/src/main/resources/assets/tfmg/textures/item/charcoal_dust.png b/src/main/resources/assets/tfmg/textures/item/charcoal_dust.png new file mode 100644 index 00000000..ca925467 Binary files /dev/null and b/src/main/resources/assets/tfmg/textures/item/charcoal_dust.png differ diff --git a/src/main/resources/assets/tfmg/textures/item/coal_coke.png b/src/main/resources/assets/tfmg/textures/item/coal_coke.png new file mode 100644 index 00000000..b06c9365 Binary files /dev/null and b/src/main/resources/assets/tfmg/textures/item/coal_coke.png differ diff --git a/src/main/resources/assets/tfmg/textures/item/copper_grenade.png b/src/main/resources/assets/tfmg/textures/item/copper_grenade.png new file mode 100644 index 00000000..0094a3c5 Binary files /dev/null and b/src/main/resources/assets/tfmg/textures/item/copper_grenade.png differ diff --git a/src/main/resources/assets/tfmg/textures/item/crude_oil_fluid_bucket.png b/src/main/resources/assets/tfmg/textures/item/crude_oil_fluid_bucket.png new file mode 100644 index 00000000..1f8717de Binary files /dev/null and b/src/main/resources/assets/tfmg/textures/item/crude_oil_fluid_bucket.png differ diff --git a/src/main/resources/assets/tfmg/textures/item/diesel_bucket.png b/src/main/resources/assets/tfmg/textures/item/diesel_bucket.png new file mode 100644 index 00000000..28f8f323 Binary files /dev/null and b/src/main/resources/assets/tfmg/textures/item/diesel_bucket.png differ diff --git a/src/main/resources/assets/tfmg/textures/item/duraluminium_ingot.png b/src/main/resources/assets/tfmg/textures/item/duraluminium_ingot.png new file mode 100644 index 00000000..27f02102 Binary files /dev/null and b/src/main/resources/assets/tfmg/textures/item/duraluminium_ingot.png differ diff --git a/src/main/resources/assets/tfmg/textures/item/engine_chamber.png b/src/main/resources/assets/tfmg/textures/item/engine_chamber.png new file mode 100644 index 00000000..31f452ed Binary files /dev/null and b/src/main/resources/assets/tfmg/textures/item/engine_chamber.png differ diff --git a/src/main/resources/assets/tfmg/textures/item/fossilstone_chunk.png b/src/main/resources/assets/tfmg/textures/item/fossilstone_chunk.png new file mode 100644 index 00000000..5ad76451 Binary files /dev/null and b/src/main/resources/assets/tfmg/textures/item/fossilstone_chunk.png differ diff --git a/src/main/resources/assets/tfmg/textures/item/gasoline_bucket.png b/src/main/resources/assets/tfmg/textures/item/gasoline_bucket.png new file mode 100644 index 00000000..6f52794a Binary files /dev/null and b/src/main/resources/assets/tfmg/textures/item/gasoline_bucket.png differ diff --git a/src/main/resources/assets/tfmg/textures/item/heavy_casing_door.png b/src/main/resources/assets/tfmg/textures/item/heavy_casing_door.png new file mode 100644 index 00000000..4838857c Binary files /dev/null and b/src/main/resources/assets/tfmg/textures/item/heavy_casing_door.png differ diff --git a/src/main/resources/assets/tfmg/textures/item/heavy_oil_bucket.png b/src/main/resources/assets/tfmg/textures/item/heavy_oil_bucket.png new file mode 100644 index 00000000..1476dfbf Binary files /dev/null and b/src/main/resources/assets/tfmg/textures/item/heavy_oil_bucket.png differ diff --git a/src/main/resources/assets/tfmg/textures/item/heavy_plate.png b/src/main/resources/assets/tfmg/textures/item/heavy_plate.png new file mode 100644 index 00000000..ad048493 Binary files /dev/null and b/src/main/resources/assets/tfmg/textures/item/heavy_plate.png differ diff --git a/src/main/resources/assets/tfmg/textures/item/heavy_plated_door.png b/src/main/resources/assets/tfmg/textures/item/heavy_plated_door.png new file mode 100644 index 00000000..baf435bb Binary files /dev/null and b/src/main/resources/assets/tfmg/textures/item/heavy_plated_door.png differ diff --git a/src/main/resources/assets/tfmg/textures/item/kerosene_bucket.png b/src/main/resources/assets/tfmg/textures/item/kerosene_bucket.png new file mode 100644 index 00000000..df5b5bd5 Binary files /dev/null and b/src/main/resources/assets/tfmg/textures/item/kerosene_bucket.png differ diff --git a/src/main/resources/assets/tfmg/textures/item/liquid_concrete_bucket.png b/src/main/resources/assets/tfmg/textures/item/liquid_concrete_bucket.png new file mode 100644 index 00000000..b6babbda Binary files /dev/null and b/src/main/resources/assets/tfmg/textures/item/liquid_concrete_bucket.png differ diff --git a/src/main/resources/assets/tfmg/textures/item/liquid_plastic_bucket.png b/src/main/resources/assets/tfmg/textures/item/liquid_plastic_bucket.png new file mode 100644 index 00000000..d25a6d35 Binary files /dev/null and b/src/main/resources/assets/tfmg/textures/item/liquid_plastic_bucket.png differ diff --git a/src/main/resources/assets/tfmg/textures/item/liquid_rebar_concrete_bucket.png b/src/main/resources/assets/tfmg/textures/item/liquid_rebar_concrete_bucket.png new file mode 100644 index 00000000..a43010f6 Binary files /dev/null and b/src/main/resources/assets/tfmg/textures/item/liquid_rebar_concrete_bucket.png differ diff --git a/src/main/resources/assets/tfmg/textures/item/lubrication_oil_bucket.png b/src/main/resources/assets/tfmg/textures/item/lubrication_oil_bucket.png new file mode 100644 index 00000000..dbe2e41a Binary files /dev/null and b/src/main/resources/assets/tfmg/textures/item/lubrication_oil_bucket.png differ diff --git a/src/main/resources/assets/tfmg/textures/item/mesh.png b/src/main/resources/assets/tfmg/textures/item/mesh.png new file mode 100644 index 00000000..f9edecbf Binary files /dev/null and b/src/main/resources/assets/tfmg/textures/item/mesh.png differ diff --git a/src/main/resources/assets/tfmg/textures/item/napalm_bucket.png b/src/main/resources/assets/tfmg/textures/item/napalm_bucket.png new file mode 100644 index 00000000..5598354f Binary files /dev/null and b/src/main/resources/assets/tfmg/textures/item/napalm_bucket.png differ diff --git a/src/main/resources/assets/tfmg/textures/item/naphtha_bucket.png b/src/main/resources/assets/tfmg/textures/item/naphtha_bucket.png new file mode 100644 index 00000000..bb7f0bb4 Binary files /dev/null and b/src/main/resources/assets/tfmg/textures/item/naphtha_bucket.png differ diff --git a/src/main/resources/assets/tfmg/textures/item/plastic_sheet.png b/src/main/resources/assets/tfmg/textures/item/plastic_sheet.png new file mode 100644 index 00000000..af7aa378 Binary files /dev/null and b/src/main/resources/assets/tfmg/textures/item/plastic_sheet.png differ diff --git a/src/main/resources/assets/tfmg/textures/item/prospector_tool.png b/src/main/resources/assets/tfmg/textures/item/prospector_tool.png new file mode 100644 index 00000000..53becd09 Binary files /dev/null and b/src/main/resources/assets/tfmg/textures/item/prospector_tool.png differ diff --git a/src/main/resources/assets/tfmg/textures/item/quad_potato_cannon.png b/src/main/resources/assets/tfmg/textures/item/quad_potato_cannon.png new file mode 100644 index 00000000..8803f7f3 Binary files /dev/null and b/src/main/resources/assets/tfmg/textures/item/quad_potato_cannon.png differ diff --git a/src/main/resources/assets/tfmg/textures/item/rebar.png b/src/main/resources/assets/tfmg/textures/item/rebar.png new file mode 100644 index 00000000..bd6308f9 Binary files /dev/null and b/src/main/resources/assets/tfmg/textures/item/rebar.png differ diff --git a/src/main/resources/assets/tfmg/textures/item/saltpeter.png b/src/main/resources/assets/tfmg/textures/item/saltpeter.png new file mode 100644 index 00000000..eeb94c5a Binary files /dev/null and b/src/main/resources/assets/tfmg/textures/item/saltpeter.png differ diff --git a/src/main/resources/assets/tfmg/textures/item/sawdust.png b/src/main/resources/assets/tfmg/textures/item/sawdust.png new file mode 100644 index 00000000..6f60cd8d Binary files /dev/null and b/src/main/resources/assets/tfmg/textures/item/sawdust.png differ diff --git a/src/main/resources/assets/tfmg/textures/item/screw.png b/src/main/resources/assets/tfmg/textures/item/screw.png new file mode 100644 index 00000000..25220f10 Binary files /dev/null and b/src/main/resources/assets/tfmg/textures/item/screw.png differ diff --git a/src/main/resources/assets/tfmg/textures/item/screwdriver.png b/src/main/resources/assets/tfmg/textures/item/screwdriver.png new file mode 100644 index 00000000..dfb8058f Binary files /dev/null and b/src/main/resources/assets/tfmg/textures/item/screwdriver.png differ diff --git a/src/main/resources/assets/tfmg/textures/item/spark_plug.png b/src/main/resources/assets/tfmg/textures/item/spark_plug.png new file mode 100644 index 00000000..d9ba84eb Binary files /dev/null and b/src/main/resources/assets/tfmg/textures/item/spark_plug.png differ diff --git a/src/main/resources/assets/tfmg/textures/item/steel_door.png b/src/main/resources/assets/tfmg/textures/item/steel_door.png new file mode 100644 index 00000000..34cb6899 Binary files /dev/null and b/src/main/resources/assets/tfmg/textures/item/steel_door.png differ diff --git a/src/main/resources/assets/tfmg/textures/item/steel_ingot.png b/src/main/resources/assets/tfmg/textures/item/steel_ingot.png new file mode 100644 index 00000000..a74f098a Binary files /dev/null and b/src/main/resources/assets/tfmg/textures/item/steel_ingot.png differ diff --git a/src/main/resources/assets/tfmg/textures/item/steel_mechanism.png b/src/main/resources/assets/tfmg/textures/item/steel_mechanism.png new file mode 100644 index 00000000..9f8f39d8 Binary files /dev/null and b/src/main/resources/assets/tfmg/textures/item/steel_mechanism.png differ diff --git a/src/main/resources/assets/tfmg/textures/item/sulfur_powder.png b/src/main/resources/assets/tfmg/textures/item/sulfur_powder.png new file mode 100644 index 00000000..51095ebf Binary files /dev/null and b/src/main/resources/assets/tfmg/textures/item/sulfur_powder.png differ diff --git a/src/main/resources/assets/tfmg/textures/item/thermite_grenade.png b/src/main/resources/assets/tfmg/textures/item/thermite_grenade.png new file mode 100644 index 00000000..4afc658b Binary files /dev/null and b/src/main/resources/assets/tfmg/textures/item/thermite_grenade.png differ diff --git a/src/main/resources/assets/tfmg/textures/item/thermite_powder.png b/src/main/resources/assets/tfmg/textures/item/thermite_powder.png new file mode 100644 index 00000000..54444410 Binary files /dev/null and b/src/main/resources/assets/tfmg/textures/item/thermite_powder.png differ diff --git a/src/main/resources/assets/tfmg/textures/item/turbine_blade.png b/src/main/resources/assets/tfmg/textures/item/turbine_blade.png new file mode 100644 index 00000000..acb95cb0 Binary files /dev/null and b/src/main/resources/assets/tfmg/textures/item/turbine_blade.png differ diff --git a/src/main/resources/assets/tfmg/textures/item/unprocessed_heavy_plate.png b/src/main/resources/assets/tfmg/textures/item/unprocessed_heavy_plate.png new file mode 100644 index 00000000..689c0eca Binary files /dev/null and b/src/main/resources/assets/tfmg/textures/item/unprocessed_heavy_plate.png differ diff --git a/src/main/resources/assets/tfmg/textures/item/unprocessed_steel_mechanism.png b/src/main/resources/assets/tfmg/textures/item/unprocessed_steel_mechanism.png new file mode 100644 index 00000000..a8163fb2 Binary files /dev/null and b/src/main/resources/assets/tfmg/textures/item/unprocessed_steel_mechanism.png differ diff --git a/src/main/resources/assets/tfmg/textures/item/water_insulation.png b/src/main/resources/assets/tfmg/textures/item/water_insulation.png new file mode 100644 index 00000000..b3dc05b9 Binary files /dev/null and b/src/main/resources/assets/tfmg/textures/item/water_insulation.png differ diff --git a/src/main/resources/assets/tfmg/textures/item/zinc_grenade.png b/src/main/resources/assets/tfmg/textures/item/zinc_grenade.png new file mode 100644 index 00000000..f9e99e01 Binary files /dev/null and b/src/main/resources/assets/tfmg/textures/item/zinc_grenade.png differ