diff --git a/src/generated/resources/.cache/9047e4e94996e73e9dfde3738763637fb609e07e b/src/generated/resources/.cache/9047e4e94996e73e9dfde3738763637fb609e07e index bbea9eb6..5bae86a7 100644 --- a/src/generated/resources/.cache/9047e4e94996e73e9dfde3738763637fb609e07e +++ b/src/generated/resources/.cache/9047e4e94996e73e9dfde3738763637fb609e07e @@ -1,2 +1,2 @@ -// 1.19.2 2023-09-06T16:25:55.6251575 Create: The Factory Must Grow's lang merger -eb7793620135512a7a35164f8ca9c5c881354d90 assets/tfmg/lang/en_us.json +// 1.19.2 2023-09-09T21:03:24.5059888 Create: The Factory Must Grow's lang merger +165747b064e1eafffc6b4a6d91249ad3c7e6ca39 assets/tfmg/lang/en_us.json diff --git a/src/generated/resources/.cache/ad795fb8576279849034d802e60366ec43bb396a b/src/generated/resources/.cache/ad795fb8576279849034d802e60366ec43bb396a index 5f12a98e..7700ac63 100644 --- a/src/generated/resources/.cache/ad795fb8576279849034d802e60366ec43bb396a +++ b/src/generated/resources/.cache/ad795fb8576279849034d802e60366ec43bb396a @@ -1,4 +1,4 @@ -// 1.19.2 2023-09-06T16:25:55.6312653 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)] +// 1.19.2 2023-09-09T11:58:31.6412487 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)] b7f5146505c40c08cdea7ad01fa99048b7ac5451 assets/tfmg/blockstates/aluminum_block.json 933485fa587fccc649b4cbe8f76f15e590cc8bb1 assets/tfmg/blockstates/bauxite.json 2b53ff8e880d35a42388584cb3ca896c55bfaf95 assets/tfmg/blockstates/bauxite_pillar.json @@ -22,6 +22,7 @@ f16d1cf03e5053455ea485f7aa53a88206f61749 assets/tfmg/blockstates/formwork_block. e74acd9562e4b46295cf017d17f2662e20a7f5ea assets/tfmg/blockstates/fossilstone.json b0a3f4da5d9efdd01800c8b9738aee194565c6e7 assets/tfmg/blockstates/gasoline.json d23c28129bc7885986c65290071fb7a9cc5391d7 assets/tfmg/blockstates/glass_steel_pipe.json +9753ec68aa5fe10f618000b453a242d5e685b7d7 assets/tfmg/blockstates/heavy_casing_door.json c7aa764cc11ee837deeed68c9c2d8567ea078f5c assets/tfmg/blockstates/heavy_machinery_casing.json dea24edfcb504c6c74560174a94bd7d3e5d58e76 assets/tfmg/blockstates/heavy_oil.json 7199cbfa37e83fcedf8e99af48b05b283aef319f assets/tfmg/blockstates/kerosene.json @@ -44,10 +45,16 @@ e80f4610e3272a4edfb47572aff71f1db3d283d7 assets/tfmg/blockstates/small_bauxite_b a2eed7173d7f528d0f068c5fa9ea358f61ef1436 assets/tfmg/blockstates/small_bauxite_brick_wall.json e6983072149d1a9a2f4d39e4e1feac599ff7413e assets/tfmg/blockstates/steel_block.json df44115876045e6f863de2f8be6a9166b336a2f1 assets/tfmg/blockstates/steel_casing.json +7334c94b5fe23df91f43048b19c2b22121405603 assets/tfmg/blockstates/steel_door.json 72bfce2a2795dfe461beed7c3a074e328de14d96 assets/tfmg/blockstates/steel_fluid_tank.json +e29906d296994a13fefc2beb22f7693e1027dd1b assets/tfmg/blockstates/steel_fluid_valve.json +6041673298a81819601e832e560771d21ddd01e9 assets/tfmg/blockstates/steel_mechanical_pump.json 2305048c06767d728d10242e152f25911c1489fd assets/tfmg/blockstates/steel_pipe.json -2f4c690a17de80bd2a7a0257ef923943913d50d1 assets/tfmg/lang/en_ud.json -4a3abb850ef18abfaaf33f08710afcdd8488f4a2 assets/tfmg/lang/en_us.json +71b4c68d8a02062252c4dfde41650b7667d8c0ca assets/tfmg/blockstates/steel_sheetmetal.json +47b56dad1f2715aae7430b5f9acb1d51a26cf562 assets/tfmg/blockstates/steel_smart_fluid_pipe.json +942bb86fa92b3c40fc535dccdd2e9f3b79a36d92 assets/tfmg/blockstates/surface_scanner.json +a82f4a5b9cd04dbd195934b459e4c04b2110718d assets/tfmg/lang/en_ud.json +555b7657893b06e861781e9ad7b8d4d557ef6869 assets/tfmg/lang/en_us.json 9e6a6b62f5e7528c4e4d4f72f3510edcd8f0c078 assets/tfmg/models/block/aluminum_block.json 5a4c785e8d8394ccd125732c0017459648574c4e assets/tfmg/models/block/bauxite_natural_0.json 4ace0da00498fcbb9ddfdf321767b40b095c8778 assets/tfmg/models/block/bauxite_natural_1.json @@ -145,6 +152,7 @@ d34e5efd71420623baab6ff86cbb9a68abcb343d assets/tfmg/models/block/steel_pipe/ud_ 68d79052c90cbfad2c4730673395b5f58ad73293 assets/tfmg/models/block/steel_pipe/u_x.json e583e8755126d362e21057464e2f12af3f32ba25 assets/tfmg/models/block/steel_pipe/u_y.json 56b3110e7a55c08302e27d5b7f32f7b7b9cd60a0 assets/tfmg/models/block/steel_pipe/u_z.json +c7b153dff2ba1a88f02e950cc8d28d61bd68b1df assets/tfmg/models/block/steel_sheetmetal.json 714173e054b787915b8cebfb50deb61b28dba5a3 assets/tfmg/models/item/aluminum_block.json f685ca653c8e197986b1ac8f43297989816d39d2 assets/tfmg/models/item/aluminum_ingot.json 4ace0da00498fcbb9ddfdf321767b40b095c8778 assets/tfmg/models/item/bauxite.json @@ -170,6 +178,7 @@ e6bf52c7a969b26d65cc36353a6a3e2a91752e42 assets/tfmg/models/item/cut_bauxite_sta a11a0b5a9887ba342d80b574a7f2c3dc5cdd7372 assets/tfmg/models/item/formwork_block.json 7e4a58a6d05b19dc8c5fff73434c2d7cefa75343 assets/tfmg/models/item/fossilstone.json ed2830b2988403aebaca633b2e315878b41f7503 assets/tfmg/models/item/gasoline_bucket.json +5b5625568b4b6e0920fd680f626b31fd3ae6d095 assets/tfmg/models/item/heavy_casing_door.json 3fdff9e88db39939ee31968358eb51c060006766 assets/tfmg/models/item/heavy_machinery_casing.json f3bea42a905b7df9395bda18f751e2ee0c023e65 assets/tfmg/models/item/heavy_oil_bucket.json 8996fe57623ded9433d6766e80a39e41a2aba1ca assets/tfmg/models/item/kerosene_bucket.json @@ -187,6 +196,7 @@ b652ff21ebb628809b8756d7d62644e0d2a5adfb assets/tfmg/models/item/polished_cut_ba 489528130097d6163d032483048ac41fa9da0dff assets/tfmg/models/item/polished_cut_bauxite_slab.json ac7c8f2f308145f0ae8108648cfb9fd0513987c6 assets/tfmg/models/item/polished_cut_bauxite_stairs.json 1dd75a9ca8cda0bb0237dee6b477d76823c15b8a assets/tfmg/models/item/polished_cut_bauxite_wall.json +3cfdbac1c06b4e75416fcd24a93616d98f59d6e3 assets/tfmg/models/item/quad_potato_cannon.json d6cafabe2c6380ac0d2f2339a3861009de3ec989 assets/tfmg/models/item/screwdriver.json c00f7c5c7d05936bbe6a3069116c5adba5c60acf assets/tfmg/models/item/small_bauxite_bricks.json f1fffad853ccb4173ba63efaf89ce0bf112915a8 assets/tfmg/models/item/small_bauxite_brick_slab.json @@ -194,13 +204,20 @@ a1149d3ee5596f2c1038b225b0086ae1601da82c assets/tfmg/models/item/small_bauxite_b 0f3f7918e41afa95cc14bc6641a7beaf36c27621 assets/tfmg/models/item/small_bauxite_brick_wall.json 57bf86df814741f846feb8be4a10afe633f51721 assets/tfmg/models/item/steel_block.json d34ca92f5288cbb5cecee06f046a072763b2926c assets/tfmg/models/item/steel_casing.json +7f012e3d947b08beb69d28a6d47730878f2b85cf assets/tfmg/models/item/steel_door.json 19dcd68a6658fd8fa8466180e26cb3f6a2b2c4f1 assets/tfmg/models/item/steel_fluid_tank.json +57bc28274df7d54eaa3fa1991481c6339f9e2247 assets/tfmg/models/item/steel_fluid_valve.json 61e64ad93db0bd29dec2221633c4552f37026784 assets/tfmg/models/item/steel_ingot.json +4cea5b158cc0789fcdc8808250b993160bc62268 assets/tfmg/models/item/steel_mechanical_pump.json 4fb5ba811196a402c750a379145aa0a14471ddc3 assets/tfmg/models/item/steel_pipe.json +76289628b3e2bc6373737731cfb7b41a7c01119b assets/tfmg/models/item/steel_sheetmetal.json +2badc90d08a4fd5f54c5e836ae2613b2e233f702 assets/tfmg/models/item/steel_smart_fluid_pipe.json +e2fb504cbb8808de330d4ea87030f0d089921e23 assets/tfmg/models/item/surface_scanner.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 +1fdd0efd4d4b48c3d5989a7c43e53a6d1c2adc2b data/create/tags/items/contraption_controlled.json 7126b9c40009d0396aff8161f30b6341b2b233c9 data/create/tags/items/create_ingots.json f0989952061266a02499103c1dcd9f2d7da131f5 data/forge/tags/blocks/concrete.json 20fe475034862e222b6eb1efedf7c297d3690d8c data/forge/tags/blocks/storage_blocks.json @@ -226,19 +243,23 @@ d26621b9617890011a68780cf7ab40fbb4658edc data/forge/tags/items/storage_blocks/le 37b1c9c3ae722d8110db48015993ede3e194c0a0 data/forge/tags/items/storage_blocks/steel.json 63c4a8d8e713db70730e766f1a10f8dd9072f98f data/minecraft/tags/blocks/azalea_root_replaceable.json 78dfadabc3df3a1ef277bd30f316bfa49d5e7a72 data/minecraft/tags/blocks/beacon_base_blocks.json +1fdd0efd4d4b48c3d5989a7c43e53a6d1c2adc2b data/minecraft/tags/blocks/doors.json 63c4a8d8e713db70730e766f1a10f8dd9072f98f data/minecraft/tags/blocks/dripstone_replaceable_blocks.json 63c4a8d8e713db70730e766f1a10f8dd9072f98f data/minecraft/tags/blocks/lush_ground_replaceable.json 2acceda2af7fd542e47641315a13d98c74f9b8f0 data/minecraft/tags/blocks/mineable/axe.json -5f5b805d5f922e00dea2c543b30a5f74904169fe data/minecraft/tags/blocks/mineable/pickaxe.json +2acf4cf271b27f01f5581199338af9054b239529 data/minecraft/tags/blocks/mineable/pickaxe.json 63c4a8d8e713db70730e766f1a10f8dd9072f98f data/minecraft/tags/blocks/moss_replaceable.json -78dfadabc3df3a1ef277bd30f316bfa49d5e7a72 data/minecraft/tags/blocks/needs_iron_tool.json +f67e51a16b6d140324ca0201f1b05e672eb63774 data/minecraft/tags/blocks/needs_iron_tool.json 755548d9019c1bb26a568488912ebfdf399e02d2 data/minecraft/tags/blocks/needs_stone_tool.json 193c8b45d804216ca5fe2035fa8dfc4567303500 data/minecraft/tags/blocks/slabs.json e02820ff93a8835947837b6b7e4f75b90a365ffb data/minecraft/tags/blocks/stairs.json 0472af44cb3c69aa62ace428304592aacc443045 data/minecraft/tags/blocks/walls.json +1fdd0efd4d4b48c3d5989a7c43e53a6d1c2adc2b data/minecraft/tags/blocks/wooden_doors.json +1fdd0efd4d4b48c3d5989a7c43e53a6d1c2adc2b data/minecraft/tags/items/doors.json 193c8b45d804216ca5fe2035fa8dfc4567303500 data/minecraft/tags/items/slabs.json e02820ff93a8835947837b6b7e4f75b90a365ffb data/minecraft/tags/items/stairs.json 0472af44cb3c69aa62ace428304592aacc443045 data/minecraft/tags/items/walls.json +1fdd0efd4d4b48c3d5989a7c43e53a6d1c2adc2b data/quark/tags/blocks/non_double_door.json 7796b85e86a28b753b90089a522eca12c5722e5e data/tfmg/advancements/recipes/tfmg.building/bauxite_from_stone_types_bauxite_stonecutting.json 179e5950865e8114ff5cbe443dedf44e6c1d5342 data/tfmg/advancements/recipes/tfmg.building/bauxite_pillar_from_stone_types_bauxite_stonecutting.json 6d51fd8ca8e92f799cd57f23c50a140765f03a33 data/tfmg/advancements/recipes/tfmg.building/cut_bauxite_bricks_from_stone_types_bauxite_stonecutting.json @@ -292,6 +313,7 @@ ce47c0f03819dab221e70b3d4197ac82963b47d6 data/tfmg/loot_tables/blocks/cut_bauxit 51818c7cf522c10c409c8737fdc30a58d7560f71 data/tfmg/loot_tables/blocks/formwork_block.json fd7674b996fd961339614656498a1ff54f092bb8 data/tfmg/loot_tables/blocks/fossilstone.json 1622328d319fc3c71269b0f9f1aef43a77132f3a data/tfmg/loot_tables/blocks/glass_steel_pipe.json +673b4eaefb99f4322f2b172c2c2651969389ff9b data/tfmg/loot_tables/blocks/heavy_casing_door.json 661cc61f9c13ddf8c6bf06470defa93170e8ee7f data/tfmg/loot_tables/blocks/heavy_machinery_casing.json 1633b0609c1f7b71d0ccda03bdb95bf873692b18 data/tfmg/loot_tables/blocks/layered_bauxite.json a5ecc7b7daab82db283453319f5bae9057e63e62 data/tfmg/loot_tables/blocks/lead_block.json @@ -307,8 +329,14 @@ b43d1fa7a2ac0534ab2867dec787d97f205f4a8d data/tfmg/loot_tables/blocks/small_baux 47af1defc5e03a0806d8afd5f119fab420aa1da8 data/tfmg/loot_tables/blocks/small_bauxite_brick_wall.json 01298989d0fe79936cdfa1e6cc07fd05f143ae09 data/tfmg/loot_tables/blocks/steel_block.json 62cd229b00eb2c95187d1b7b8e968aa26e54c412 data/tfmg/loot_tables/blocks/steel_casing.json +b0adec80b5b6c3226bd6d7044556351244474cd4 data/tfmg/loot_tables/blocks/steel_door.json da3aa200dc67d6a7bfbb0bb9e988a325fed4c670 data/tfmg/loot_tables/blocks/steel_fluid_tank.json +7b78ebb7567c8b6b88a334761fbb702d17e5b337 data/tfmg/loot_tables/blocks/steel_fluid_valve.json +216c23070392c7c085c111a0a220ae46ba8f9491 data/tfmg/loot_tables/blocks/steel_mechanical_pump.json 1622328d319fc3c71269b0f9f1aef43a77132f3a data/tfmg/loot_tables/blocks/steel_pipe.json +de0407a343a604ef410196b774c1dba3d65b0c61 data/tfmg/loot_tables/blocks/steel_sheetmetal.json +7b9a14c0366a480e04473eed373e94fe8a5e8618 data/tfmg/loot_tables/blocks/steel_smart_fluid_pipe.json +d200ab69297adec0f9d02d06f12d90ba049be5c6 data/tfmg/loot_tables/blocks/surface_scanner.json fe8fbd529304f28f4aeb1017956f288f6e6bbe1c data/tfmg/recipes/bauxite_from_stone_types_bauxite_stonecutting.json 9bddb0ff48b335428001ae0526e41ab6d09da1c3 data/tfmg/recipes/bauxite_pillar_from_stone_types_bauxite_stonecutting.json c1d723c26e4e2eeeb46ef03e16df946309ff2650 data/tfmg/recipes/cut_bauxite_bricks_from_stone_types_bauxite_stonecutting.json diff --git a/src/generated/resources/assets/tfmg/blockstates/heavy_casing_door.json b/src/generated/resources/assets/tfmg/blockstates/heavy_casing_door.json new file mode 100644 index 00000000..770e079e --- /dev/null +++ b/src/generated/resources/assets/tfmg/blockstates/heavy_casing_door.json @@ -0,0 +1,244 @@ +{ + "variants": { + "facing=east,half=lower,hinge=left,open=false,visible=false": { + "model": "tfmg:block/heavy_casing_door/block_bottom" + }, + "facing=east,half=lower,hinge=left,open=false,visible=true": { + "model": "tfmg:block/heavy_casing_door/block_bottom" + }, + "facing=east,half=lower,hinge=left,open=true,visible=false": { + "model": "tfmg:block/heavy_casing_door/block_bottom", + "y": 90 + }, + "facing=east,half=lower,hinge=left,open=true,visible=true": { + "model": "tfmg:block/heavy_casing_door/block_bottom", + "y": 90 + }, + "facing=east,half=lower,hinge=right,open=false,visible=false": { + "model": "tfmg:block/heavy_casing_door/block_bottom" + }, + "facing=east,half=lower,hinge=right,open=false,visible=true": { + "model": "tfmg:block/heavy_casing_door/block_bottom" + }, + "facing=east,half=lower,hinge=right,open=true,visible=false": { + "model": "tfmg:block/heavy_casing_door/block_bottom", + "y": 270 + }, + "facing=east,half=lower,hinge=right,open=true,visible=true": { + "model": "tfmg:block/heavy_casing_door/block_bottom", + "y": 270 + }, + "facing=east,half=upper,hinge=left,open=false,visible=false": { + "model": "tfmg:block/heavy_casing_door/block_top" + }, + "facing=east,half=upper,hinge=left,open=false,visible=true": { + "model": "tfmg:block/heavy_casing_door/block_top" + }, + "facing=east,half=upper,hinge=left,open=true,visible=false": { + "model": "tfmg:block/heavy_casing_door/block_top", + "y": 90 + }, + "facing=east,half=upper,hinge=left,open=true,visible=true": { + "model": "tfmg:block/heavy_casing_door/block_top", + "y": 90 + }, + "facing=east,half=upper,hinge=right,open=false,visible=false": { + "model": "tfmg:block/heavy_casing_door/block_top" + }, + "facing=east,half=upper,hinge=right,open=false,visible=true": { + "model": "tfmg:block/heavy_casing_door/block_top" + }, + "facing=east,half=upper,hinge=right,open=true,visible=false": { + "model": "tfmg:block/heavy_casing_door/block_top", + "y": 270 + }, + "facing=east,half=upper,hinge=right,open=true,visible=true": { + "model": "tfmg:block/heavy_casing_door/block_top", + "y": 270 + }, + "facing=north,half=lower,hinge=left,open=false,visible=false": { + "model": "tfmg:block/heavy_casing_door/block_bottom", + "y": 270 + }, + "facing=north,half=lower,hinge=left,open=false,visible=true": { + "model": "tfmg:block/heavy_casing_door/block_bottom", + "y": 270 + }, + "facing=north,half=lower,hinge=left,open=true,visible=false": { + "model": "tfmg:block/heavy_casing_door/block_bottom" + }, + "facing=north,half=lower,hinge=left,open=true,visible=true": { + "model": "tfmg:block/heavy_casing_door/block_bottom" + }, + "facing=north,half=lower,hinge=right,open=false,visible=false": { + "model": "tfmg:block/heavy_casing_door/block_bottom", + "y": 270 + }, + "facing=north,half=lower,hinge=right,open=false,visible=true": { + "model": "tfmg:block/heavy_casing_door/block_bottom", + "y": 270 + }, + "facing=north,half=lower,hinge=right,open=true,visible=false": { + "model": "tfmg:block/heavy_casing_door/block_bottom", + "y": 180 + }, + "facing=north,half=lower,hinge=right,open=true,visible=true": { + "model": "tfmg:block/heavy_casing_door/block_bottom", + "y": 180 + }, + "facing=north,half=upper,hinge=left,open=false,visible=false": { + "model": "tfmg:block/heavy_casing_door/block_top", + "y": 270 + }, + "facing=north,half=upper,hinge=left,open=false,visible=true": { + "model": "tfmg:block/heavy_casing_door/block_top", + "y": 270 + }, + "facing=north,half=upper,hinge=left,open=true,visible=false": { + "model": "tfmg:block/heavy_casing_door/block_top" + }, + "facing=north,half=upper,hinge=left,open=true,visible=true": { + "model": "tfmg:block/heavy_casing_door/block_top" + }, + "facing=north,half=upper,hinge=right,open=false,visible=false": { + "model": "tfmg:block/heavy_casing_door/block_top", + "y": 270 + }, + "facing=north,half=upper,hinge=right,open=false,visible=true": { + "model": "tfmg:block/heavy_casing_door/block_top", + "y": 270 + }, + "facing=north,half=upper,hinge=right,open=true,visible=false": { + "model": "tfmg:block/heavy_casing_door/block_top", + "y": 180 + }, + "facing=north,half=upper,hinge=right,open=true,visible=true": { + "model": "tfmg:block/heavy_casing_door/block_top", + "y": 180 + }, + "facing=south,half=lower,hinge=left,open=false,visible=false": { + "model": "tfmg:block/heavy_casing_door/block_bottom", + "y": 90 + }, + "facing=south,half=lower,hinge=left,open=false,visible=true": { + "model": "tfmg:block/heavy_casing_door/block_bottom", + "y": 90 + }, + "facing=south,half=lower,hinge=left,open=true,visible=false": { + "model": "tfmg:block/heavy_casing_door/block_bottom", + "y": 180 + }, + "facing=south,half=lower,hinge=left,open=true,visible=true": { + "model": "tfmg:block/heavy_casing_door/block_bottom", + "y": 180 + }, + "facing=south,half=lower,hinge=right,open=false,visible=false": { + "model": "tfmg:block/heavy_casing_door/block_bottom", + "y": 90 + }, + "facing=south,half=lower,hinge=right,open=false,visible=true": { + "model": "tfmg:block/heavy_casing_door/block_bottom", + "y": 90 + }, + "facing=south,half=lower,hinge=right,open=true,visible=false": { + "model": "tfmg:block/heavy_casing_door/block_bottom" + }, + "facing=south,half=lower,hinge=right,open=true,visible=true": { + "model": "tfmg:block/heavy_casing_door/block_bottom" + }, + "facing=south,half=upper,hinge=left,open=false,visible=false": { + "model": "tfmg:block/heavy_casing_door/block_top", + "y": 90 + }, + "facing=south,half=upper,hinge=left,open=false,visible=true": { + "model": "tfmg:block/heavy_casing_door/block_top", + "y": 90 + }, + "facing=south,half=upper,hinge=left,open=true,visible=false": { + "model": "tfmg:block/heavy_casing_door/block_top", + "y": 180 + }, + "facing=south,half=upper,hinge=left,open=true,visible=true": { + "model": "tfmg:block/heavy_casing_door/block_top", + "y": 180 + }, + "facing=south,half=upper,hinge=right,open=false,visible=false": { + "model": "tfmg:block/heavy_casing_door/block_top", + "y": 90 + }, + "facing=south,half=upper,hinge=right,open=false,visible=true": { + "model": "tfmg:block/heavy_casing_door/block_top", + "y": 90 + }, + "facing=south,half=upper,hinge=right,open=true,visible=false": { + "model": "tfmg:block/heavy_casing_door/block_top" + }, + "facing=south,half=upper,hinge=right,open=true,visible=true": { + "model": "tfmg:block/heavy_casing_door/block_top" + }, + "facing=west,half=lower,hinge=left,open=false,visible=false": { + "model": "tfmg:block/heavy_casing_door/block_bottom", + "y": 180 + }, + "facing=west,half=lower,hinge=left,open=false,visible=true": { + "model": "tfmg:block/heavy_casing_door/block_bottom", + "y": 180 + }, + "facing=west,half=lower,hinge=left,open=true,visible=false": { + "model": "tfmg:block/heavy_casing_door/block_bottom", + "y": 270 + }, + "facing=west,half=lower,hinge=left,open=true,visible=true": { + "model": "tfmg:block/heavy_casing_door/block_bottom", + "y": 270 + }, + "facing=west,half=lower,hinge=right,open=false,visible=false": { + "model": "tfmg:block/heavy_casing_door/block_bottom", + "y": 180 + }, + "facing=west,half=lower,hinge=right,open=false,visible=true": { + "model": "tfmg:block/heavy_casing_door/block_bottom", + "y": 180 + }, + "facing=west,half=lower,hinge=right,open=true,visible=false": { + "model": "tfmg:block/heavy_casing_door/block_bottom", + "y": 90 + }, + "facing=west,half=lower,hinge=right,open=true,visible=true": { + "model": "tfmg:block/heavy_casing_door/block_bottom", + "y": 90 + }, + "facing=west,half=upper,hinge=left,open=false,visible=false": { + "model": "tfmg:block/heavy_casing_door/block_top", + "y": 180 + }, + "facing=west,half=upper,hinge=left,open=false,visible=true": { + "model": "tfmg:block/heavy_casing_door/block_top", + "y": 180 + }, + "facing=west,half=upper,hinge=left,open=true,visible=false": { + "model": "tfmg:block/heavy_casing_door/block_top", + "y": 270 + }, + "facing=west,half=upper,hinge=left,open=true,visible=true": { + "model": "tfmg:block/heavy_casing_door/block_top", + "y": 270 + }, + "facing=west,half=upper,hinge=right,open=false,visible=false": { + "model": "tfmg:block/heavy_casing_door/block_top", + "y": 180 + }, + "facing=west,half=upper,hinge=right,open=false,visible=true": { + "model": "tfmg:block/heavy_casing_door/block_top", + "y": 180 + }, + "facing=west,half=upper,hinge=right,open=true,visible=false": { + "model": "tfmg:block/heavy_casing_door/block_top", + "y": 90 + }, + "facing=west,half=upper,hinge=right,open=true,visible=true": { + "model": "tfmg:block/heavy_casing_door/block_top", + "y": 90 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/tfmg/blockstates/steel_door.json b/src/generated/resources/assets/tfmg/blockstates/steel_door.json new file mode 100644 index 00000000..166a04b3 --- /dev/null +++ b/src/generated/resources/assets/tfmg/blockstates/steel_door.json @@ -0,0 +1,244 @@ +{ + "variants": { + "facing=east,half=lower,hinge=left,open=false,visible=false": { + "model": "tfmg:block/steel_door/block_bottom" + }, + "facing=east,half=lower,hinge=left,open=false,visible=true": { + "model": "tfmg:block/steel_door/block_bottom" + }, + "facing=east,half=lower,hinge=left,open=true,visible=false": { + "model": "tfmg:block/steel_door/block_bottom", + "y": 90 + }, + "facing=east,half=lower,hinge=left,open=true,visible=true": { + "model": "tfmg:block/steel_door/block_bottom", + "y": 90 + }, + "facing=east,half=lower,hinge=right,open=false,visible=false": { + "model": "tfmg:block/steel_door/block_bottom" + }, + "facing=east,half=lower,hinge=right,open=false,visible=true": { + "model": "tfmg:block/steel_door/block_bottom" + }, + "facing=east,half=lower,hinge=right,open=true,visible=false": { + "model": "tfmg:block/steel_door/block_bottom", + "y": 270 + }, + "facing=east,half=lower,hinge=right,open=true,visible=true": { + "model": "tfmg:block/steel_door/block_bottom", + "y": 270 + }, + "facing=east,half=upper,hinge=left,open=false,visible=false": { + "model": "tfmg:block/steel_door/block_top" + }, + "facing=east,half=upper,hinge=left,open=false,visible=true": { + "model": "tfmg:block/steel_door/block_top" + }, + "facing=east,half=upper,hinge=left,open=true,visible=false": { + "model": "tfmg:block/steel_door/block_top", + "y": 90 + }, + "facing=east,half=upper,hinge=left,open=true,visible=true": { + "model": "tfmg:block/steel_door/block_top", + "y": 90 + }, + "facing=east,half=upper,hinge=right,open=false,visible=false": { + "model": "tfmg:block/steel_door/block_top" + }, + "facing=east,half=upper,hinge=right,open=false,visible=true": { + "model": "tfmg:block/steel_door/block_top" + }, + "facing=east,half=upper,hinge=right,open=true,visible=false": { + "model": "tfmg:block/steel_door/block_top", + "y": 270 + }, + "facing=east,half=upper,hinge=right,open=true,visible=true": { + "model": "tfmg:block/steel_door/block_top", + "y": 270 + }, + "facing=north,half=lower,hinge=left,open=false,visible=false": { + "model": "tfmg:block/steel_door/block_bottom", + "y": 270 + }, + "facing=north,half=lower,hinge=left,open=false,visible=true": { + "model": "tfmg:block/steel_door/block_bottom", + "y": 270 + }, + "facing=north,half=lower,hinge=left,open=true,visible=false": { + "model": "tfmg:block/steel_door/block_bottom" + }, + "facing=north,half=lower,hinge=left,open=true,visible=true": { + "model": "tfmg:block/steel_door/block_bottom" + }, + "facing=north,half=lower,hinge=right,open=false,visible=false": { + "model": "tfmg:block/steel_door/block_bottom", + "y": 270 + }, + "facing=north,half=lower,hinge=right,open=false,visible=true": { + "model": "tfmg:block/steel_door/block_bottom", + "y": 270 + }, + "facing=north,half=lower,hinge=right,open=true,visible=false": { + "model": "tfmg:block/steel_door/block_bottom", + "y": 180 + }, + "facing=north,half=lower,hinge=right,open=true,visible=true": { + "model": "tfmg:block/steel_door/block_bottom", + "y": 180 + }, + "facing=north,half=upper,hinge=left,open=false,visible=false": { + "model": "tfmg:block/steel_door/block_top", + "y": 270 + }, + "facing=north,half=upper,hinge=left,open=false,visible=true": { + "model": "tfmg:block/steel_door/block_top", + "y": 270 + }, + "facing=north,half=upper,hinge=left,open=true,visible=false": { + "model": "tfmg:block/steel_door/block_top" + }, + "facing=north,half=upper,hinge=left,open=true,visible=true": { + "model": "tfmg:block/steel_door/block_top" + }, + "facing=north,half=upper,hinge=right,open=false,visible=false": { + "model": "tfmg:block/steel_door/block_top", + "y": 270 + }, + "facing=north,half=upper,hinge=right,open=false,visible=true": { + "model": "tfmg:block/steel_door/block_top", + "y": 270 + }, + "facing=north,half=upper,hinge=right,open=true,visible=false": { + "model": "tfmg:block/steel_door/block_top", + "y": 180 + }, + "facing=north,half=upper,hinge=right,open=true,visible=true": { + "model": "tfmg:block/steel_door/block_top", + "y": 180 + }, + "facing=south,half=lower,hinge=left,open=false,visible=false": { + "model": "tfmg:block/steel_door/block_bottom", + "y": 90 + }, + "facing=south,half=lower,hinge=left,open=false,visible=true": { + "model": "tfmg:block/steel_door/block_bottom", + "y": 90 + }, + "facing=south,half=lower,hinge=left,open=true,visible=false": { + "model": "tfmg:block/steel_door/block_bottom", + "y": 180 + }, + "facing=south,half=lower,hinge=left,open=true,visible=true": { + "model": "tfmg:block/steel_door/block_bottom", + "y": 180 + }, + "facing=south,half=lower,hinge=right,open=false,visible=false": { + "model": "tfmg:block/steel_door/block_bottom", + "y": 90 + }, + "facing=south,half=lower,hinge=right,open=false,visible=true": { + "model": "tfmg:block/steel_door/block_bottom", + "y": 90 + }, + "facing=south,half=lower,hinge=right,open=true,visible=false": { + "model": "tfmg:block/steel_door/block_bottom" + }, + "facing=south,half=lower,hinge=right,open=true,visible=true": { + "model": "tfmg:block/steel_door/block_bottom" + }, + "facing=south,half=upper,hinge=left,open=false,visible=false": { + "model": "tfmg:block/steel_door/block_top", + "y": 90 + }, + "facing=south,half=upper,hinge=left,open=false,visible=true": { + "model": "tfmg:block/steel_door/block_top", + "y": 90 + }, + "facing=south,half=upper,hinge=left,open=true,visible=false": { + "model": "tfmg:block/steel_door/block_top", + "y": 180 + }, + "facing=south,half=upper,hinge=left,open=true,visible=true": { + "model": "tfmg:block/steel_door/block_top", + "y": 180 + }, + "facing=south,half=upper,hinge=right,open=false,visible=false": { + "model": "tfmg:block/steel_door/block_top", + "y": 90 + }, + "facing=south,half=upper,hinge=right,open=false,visible=true": { + "model": "tfmg:block/steel_door/block_top", + "y": 90 + }, + "facing=south,half=upper,hinge=right,open=true,visible=false": { + "model": "tfmg:block/steel_door/block_top" + }, + "facing=south,half=upper,hinge=right,open=true,visible=true": { + "model": "tfmg:block/steel_door/block_top" + }, + "facing=west,half=lower,hinge=left,open=false,visible=false": { + "model": "tfmg:block/steel_door/block_bottom", + "y": 180 + }, + "facing=west,half=lower,hinge=left,open=false,visible=true": { + "model": "tfmg:block/steel_door/block_bottom", + "y": 180 + }, + "facing=west,half=lower,hinge=left,open=true,visible=false": { + "model": "tfmg:block/steel_door/block_bottom", + "y": 270 + }, + "facing=west,half=lower,hinge=left,open=true,visible=true": { + "model": "tfmg:block/steel_door/block_bottom", + "y": 270 + }, + "facing=west,half=lower,hinge=right,open=false,visible=false": { + "model": "tfmg:block/steel_door/block_bottom", + "y": 180 + }, + "facing=west,half=lower,hinge=right,open=false,visible=true": { + "model": "tfmg:block/steel_door/block_bottom", + "y": 180 + }, + "facing=west,half=lower,hinge=right,open=true,visible=false": { + "model": "tfmg:block/steel_door/block_bottom", + "y": 90 + }, + "facing=west,half=lower,hinge=right,open=true,visible=true": { + "model": "tfmg:block/steel_door/block_bottom", + "y": 90 + }, + "facing=west,half=upper,hinge=left,open=false,visible=false": { + "model": "tfmg:block/steel_door/block_top", + "y": 180 + }, + "facing=west,half=upper,hinge=left,open=false,visible=true": { + "model": "tfmg:block/steel_door/block_top", + "y": 180 + }, + "facing=west,half=upper,hinge=left,open=true,visible=false": { + "model": "tfmg:block/steel_door/block_top", + "y": 270 + }, + "facing=west,half=upper,hinge=left,open=true,visible=true": { + "model": "tfmg:block/steel_door/block_top", + "y": 270 + }, + "facing=west,half=upper,hinge=right,open=false,visible=false": { + "model": "tfmg:block/steel_door/block_top", + "y": 180 + }, + "facing=west,half=upper,hinge=right,open=false,visible=true": { + "model": "tfmg:block/steel_door/block_top", + "y": 180 + }, + "facing=west,half=upper,hinge=right,open=true,visible=false": { + "model": "tfmg:block/steel_door/block_top", + "y": 90 + }, + "facing=west,half=upper,hinge=right,open=true,visible=true": { + "model": "tfmg:block/steel_door/block_top", + "y": 90 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/tfmg/blockstates/steel_fluid_valve.json b/src/generated/resources/assets/tfmg/blockstates/steel_fluid_valve.json new file mode 100644 index 00000000..50f6ab84 --- /dev/null +++ b/src/generated/resources/assets/tfmg/blockstates/steel_fluid_valve.json @@ -0,0 +1,196 @@ +{ + "variants": { + "axis_along_first=false,enabled=false,facing=down,waterlogged=false": { + "model": "tfmg:block/steel_fluid_valve/block_horizontal_closed", + "x": 270, + "y": 90 + }, + "axis_along_first=false,enabled=false,facing=down,waterlogged=true": { + "model": "tfmg:block/steel_fluid_valve/block_horizontal_closed", + "x": 270, + "y": 90 + }, + "axis_along_first=false,enabled=false,facing=east,waterlogged=false": { + "model": "tfmg:block/steel_fluid_valve/block_horizontal_closed", + "y": 270 + }, + "axis_along_first=false,enabled=false,facing=east,waterlogged=true": { + "model": "tfmg:block/steel_fluid_valve/block_horizontal_closed", + "y": 270 + }, + "axis_along_first=false,enabled=false,facing=north,waterlogged=false": { + "model": "tfmg:block/steel_fluid_valve/block_vertical_closed", + "y": 180 + }, + "axis_along_first=false,enabled=false,facing=north,waterlogged=true": { + "model": "tfmg:block/steel_fluid_valve/block_vertical_closed", + "y": 180 + }, + "axis_along_first=false,enabled=false,facing=south,waterlogged=false": { + "model": "tfmg:block/steel_fluid_valve/block_vertical_closed" + }, + "axis_along_first=false,enabled=false,facing=south,waterlogged=true": { + "model": "tfmg:block/steel_fluid_valve/block_vertical_closed" + }, + "axis_along_first=false,enabled=false,facing=up,waterlogged=false": { + "model": "tfmg:block/steel_fluid_valve/block_horizontal_closed", + "x": 90, + "y": 90 + }, + "axis_along_first=false,enabled=false,facing=up,waterlogged=true": { + "model": "tfmg:block/steel_fluid_valve/block_horizontal_closed", + "x": 90, + "y": 90 + }, + "axis_along_first=false,enabled=false,facing=west,waterlogged=false": { + "model": "tfmg:block/steel_fluid_valve/block_horizontal_closed", + "y": 90 + }, + "axis_along_first=false,enabled=false,facing=west,waterlogged=true": { + "model": "tfmg:block/steel_fluid_valve/block_horizontal_closed", + "y": 90 + }, + "axis_along_first=false,enabled=true,facing=down,waterlogged=false": { + "model": "tfmg:block/steel_fluid_valve/block_horizontal_open", + "x": 270, + "y": 90 + }, + "axis_along_first=false,enabled=true,facing=down,waterlogged=true": { + "model": "tfmg:block/steel_fluid_valve/block_horizontal_open", + "x": 270, + "y": 90 + }, + "axis_along_first=false,enabled=true,facing=east,waterlogged=false": { + "model": "tfmg:block/steel_fluid_valve/block_horizontal_open", + "y": 270 + }, + "axis_along_first=false,enabled=true,facing=east,waterlogged=true": { + "model": "tfmg:block/steel_fluid_valve/block_horizontal_open", + "y": 270 + }, + "axis_along_first=false,enabled=true,facing=north,waterlogged=false": { + "model": "tfmg:block/steel_fluid_valve/block_vertical_open", + "y": 180 + }, + "axis_along_first=false,enabled=true,facing=north,waterlogged=true": { + "model": "tfmg:block/steel_fluid_valve/block_vertical_open", + "y": 180 + }, + "axis_along_first=false,enabled=true,facing=south,waterlogged=false": { + "model": "tfmg:block/steel_fluid_valve/block_vertical_open" + }, + "axis_along_first=false,enabled=true,facing=south,waterlogged=true": { + "model": "tfmg:block/steel_fluid_valve/block_vertical_open" + }, + "axis_along_first=false,enabled=true,facing=up,waterlogged=false": { + "model": "tfmg:block/steel_fluid_valve/block_horizontal_open", + "x": 90, + "y": 90 + }, + "axis_along_first=false,enabled=true,facing=up,waterlogged=true": { + "model": "tfmg:block/steel_fluid_valve/block_horizontal_open", + "x": 90, + "y": 90 + }, + "axis_along_first=false,enabled=true,facing=west,waterlogged=false": { + "model": "tfmg:block/steel_fluid_valve/block_horizontal_open", + "y": 90 + }, + "axis_along_first=false,enabled=true,facing=west,waterlogged=true": { + "model": "tfmg:block/steel_fluid_valve/block_horizontal_open", + "y": 90 + }, + "axis_along_first=true,enabled=false,facing=down,waterlogged=false": { + "model": "tfmg:block/steel_fluid_valve/block_horizontal_closed", + "x": 270 + }, + "axis_along_first=true,enabled=false,facing=down,waterlogged=true": { + "model": "tfmg:block/steel_fluid_valve/block_horizontal_closed", + "x": 270 + }, + "axis_along_first=true,enabled=false,facing=east,waterlogged=false": { + "model": "tfmg:block/steel_fluid_valve/block_vertical_closed", + "y": 270 + }, + "axis_along_first=true,enabled=false,facing=east,waterlogged=true": { + "model": "tfmg:block/steel_fluid_valve/block_vertical_closed", + "y": 270 + }, + "axis_along_first=true,enabled=false,facing=north,waterlogged=false": { + "model": "tfmg:block/steel_fluid_valve/block_horizontal_closed", + "y": 180 + }, + "axis_along_first=true,enabled=false,facing=north,waterlogged=true": { + "model": "tfmg:block/steel_fluid_valve/block_horizontal_closed", + "y": 180 + }, + "axis_along_first=true,enabled=false,facing=south,waterlogged=false": { + "model": "tfmg:block/steel_fluid_valve/block_horizontal_closed" + }, + "axis_along_first=true,enabled=false,facing=south,waterlogged=true": { + "model": "tfmg:block/steel_fluid_valve/block_horizontal_closed" + }, + "axis_along_first=true,enabled=false,facing=up,waterlogged=false": { + "model": "tfmg:block/steel_fluid_valve/block_horizontal_closed", + "x": 90 + }, + "axis_along_first=true,enabled=false,facing=up,waterlogged=true": { + "model": "tfmg:block/steel_fluid_valve/block_horizontal_closed", + "x": 90 + }, + "axis_along_first=true,enabled=false,facing=west,waterlogged=false": { + "model": "tfmg:block/steel_fluid_valve/block_vertical_closed", + "y": 90 + }, + "axis_along_first=true,enabled=false,facing=west,waterlogged=true": { + "model": "tfmg:block/steel_fluid_valve/block_vertical_closed", + "y": 90 + }, + "axis_along_first=true,enabled=true,facing=down,waterlogged=false": { + "model": "tfmg:block/steel_fluid_valve/block_horizontal_open", + "x": 270 + }, + "axis_along_first=true,enabled=true,facing=down,waterlogged=true": { + "model": "tfmg:block/steel_fluid_valve/block_horizontal_open", + "x": 270 + }, + "axis_along_first=true,enabled=true,facing=east,waterlogged=false": { + "model": "tfmg:block/steel_fluid_valve/block_vertical_open", + "y": 270 + }, + "axis_along_first=true,enabled=true,facing=east,waterlogged=true": { + "model": "tfmg:block/steel_fluid_valve/block_vertical_open", + "y": 270 + }, + "axis_along_first=true,enabled=true,facing=north,waterlogged=false": { + "model": "tfmg:block/steel_fluid_valve/block_horizontal_open", + "y": 180 + }, + "axis_along_first=true,enabled=true,facing=north,waterlogged=true": { + "model": "tfmg:block/steel_fluid_valve/block_horizontal_open", + "y": 180 + }, + "axis_along_first=true,enabled=true,facing=south,waterlogged=false": { + "model": "tfmg:block/steel_fluid_valve/block_horizontal_open" + }, + "axis_along_first=true,enabled=true,facing=south,waterlogged=true": { + "model": "tfmg:block/steel_fluid_valve/block_horizontal_open" + }, + "axis_along_first=true,enabled=true,facing=up,waterlogged=false": { + "model": "tfmg:block/steel_fluid_valve/block_horizontal_open", + "x": 90 + }, + "axis_along_first=true,enabled=true,facing=up,waterlogged=true": { + "model": "tfmg:block/steel_fluid_valve/block_horizontal_open", + "x": 90 + }, + "axis_along_first=true,enabled=true,facing=west,waterlogged=false": { + "model": "tfmg:block/steel_fluid_valve/block_vertical_open", + "y": 90 + }, + "axis_along_first=true,enabled=true,facing=west,waterlogged=true": { + "model": "tfmg:block/steel_fluid_valve/block_vertical_open", + "y": 90 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/tfmg/blockstates/steel_mechanical_pump.json b/src/generated/resources/assets/tfmg/blockstates/steel_mechanical_pump.json new file mode 100644 index 00000000..71b3d6b1 --- /dev/null +++ b/src/generated/resources/assets/tfmg/blockstates/steel_mechanical_pump.json @@ -0,0 +1,30 @@ +{ + "variants": { + "facing=down": { + "model": "tfmg:block/steel_mechanical_pump/block", + "x": 180 + }, + "facing=east": { + "model": "tfmg:block/steel_mechanical_pump/block", + "x": 90, + "y": 90 + }, + "facing=north": { + "model": "tfmg:block/steel_mechanical_pump/block", + "x": 90 + }, + "facing=south": { + "model": "tfmg:block/steel_mechanical_pump/block", + "x": 90, + "y": 180 + }, + "facing=up": { + "model": "tfmg:block/steel_mechanical_pump/block" + }, + "facing=west": { + "model": "tfmg:block/steel_mechanical_pump/block", + "x": 90, + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/tfmg/blockstates/steel_sheetmetal.json b/src/generated/resources/assets/tfmg/blockstates/steel_sheetmetal.json new file mode 100644 index 00000000..289ff897 --- /dev/null +++ b/src/generated/resources/assets/tfmg/blockstates/steel_sheetmetal.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "tfmg:block/steel_sheetmetal" + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/tfmg/blockstates/steel_smart_fluid_pipe.json b/src/generated/resources/assets/tfmg/blockstates/steel_smart_fluid_pipe.json new file mode 100644 index 00000000..571bee4f --- /dev/null +++ b/src/generated/resources/assets/tfmg/blockstates/steel_smart_fluid_pipe.json @@ -0,0 +1,110 @@ +{ + "variants": { + "face=ceiling,facing=east,waterlogged=false": { + "model": "tfmg:block/steel_smart_fluid_pipe/block", + "x": 180, + "y": 90 + }, + "face=ceiling,facing=east,waterlogged=true": { + "model": "tfmg:block/steel_smart_fluid_pipe/block", + "x": 180, + "y": 90 + }, + "face=ceiling,facing=north,waterlogged=false": { + "model": "tfmg:block/steel_smart_fluid_pipe/block", + "x": 180 + }, + "face=ceiling,facing=north,waterlogged=true": { + "model": "tfmg:block/steel_smart_fluid_pipe/block", + "x": 180 + }, + "face=ceiling,facing=south,waterlogged=false": { + "model": "tfmg:block/steel_smart_fluid_pipe/block", + "x": 180, + "y": 180 + }, + "face=ceiling,facing=south,waterlogged=true": { + "model": "tfmg:block/steel_smart_fluid_pipe/block", + "x": 180, + "y": 180 + }, + "face=ceiling,facing=west,waterlogged=false": { + "model": "tfmg:block/steel_smart_fluid_pipe/block", + "x": 180, + "y": 270 + }, + "face=ceiling,facing=west,waterlogged=true": { + "model": "tfmg:block/steel_smart_fluid_pipe/block", + "x": 180, + "y": 270 + }, + "face=floor,facing=east,waterlogged=false": { + "model": "tfmg:block/steel_smart_fluid_pipe/block", + "y": 270 + }, + "face=floor,facing=east,waterlogged=true": { + "model": "tfmg:block/steel_smart_fluid_pipe/block", + "y": 270 + }, + "face=floor,facing=north,waterlogged=false": { + "model": "tfmg:block/steel_smart_fluid_pipe/block", + "y": 180 + }, + "face=floor,facing=north,waterlogged=true": { + "model": "tfmg:block/steel_smart_fluid_pipe/block", + "y": 180 + }, + "face=floor,facing=south,waterlogged=false": { + "model": "tfmg:block/steel_smart_fluid_pipe/block" + }, + "face=floor,facing=south,waterlogged=true": { + "model": "tfmg:block/steel_smart_fluid_pipe/block" + }, + "face=floor,facing=west,waterlogged=false": { + "model": "tfmg:block/steel_smart_fluid_pipe/block", + "y": 90 + }, + "face=floor,facing=west,waterlogged=true": { + "model": "tfmg:block/steel_smart_fluid_pipe/block", + "y": 90 + }, + "face=wall,facing=east,waterlogged=false": { + "model": "tfmg:block/steel_smart_fluid_pipe/block", + "x": 270, + "y": 270 + }, + "face=wall,facing=east,waterlogged=true": { + "model": "tfmg:block/steel_smart_fluid_pipe/block", + "x": 270, + "y": 270 + }, + "face=wall,facing=north,waterlogged=false": { + "model": "tfmg:block/steel_smart_fluid_pipe/block", + "x": 270, + "y": 180 + }, + "face=wall,facing=north,waterlogged=true": { + "model": "tfmg:block/steel_smart_fluid_pipe/block", + "x": 270, + "y": 180 + }, + "face=wall,facing=south,waterlogged=false": { + "model": "tfmg:block/steel_smart_fluid_pipe/block", + "x": 270 + }, + "face=wall,facing=south,waterlogged=true": { + "model": "tfmg:block/steel_smart_fluid_pipe/block", + "x": 270 + }, + "face=wall,facing=west,waterlogged=false": { + "model": "tfmg:block/steel_smart_fluid_pipe/block", + "x": 270, + "y": 90 + }, + "face=wall,facing=west,waterlogged=true": { + "model": "tfmg:block/steel_smart_fluid_pipe/block", + "x": 270, + "y": 90 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/tfmg/blockstates/surface_scanner.json b/src/generated/resources/assets/tfmg/blockstates/surface_scanner.json new file mode 100644 index 00000000..9267b5c5 --- /dev/null +++ b/src/generated/resources/assets/tfmg/blockstates/surface_scanner.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "tfmg:block/surface_scanner/block", + "y": 90 + }, + "facing=north": { + "model": "tfmg:block/surface_scanner/block" + }, + "facing=south": { + "model": "tfmg:block/surface_scanner/block", + "y": 180 + }, + "facing=west": { + "model": "tfmg:block/surface_scanner/block", + "y": 270 + } + } +} \ 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 index 278ab131..4821972a 100644 --- a/src/generated/resources/assets/tfmg/lang/en_ud.json +++ b/src/generated/resources/assets/tfmg/lang/en_ud.json @@ -22,6 +22,7 @@ "block.tfmg.fossilstone": "ǝuoʇsןıssoℲ", "block.tfmg.gasoline": "ǝuıןosɐ⅁", "block.tfmg.glass_steel_pipe": "ǝdıԀ ןǝǝʇS ssɐן⅁", + "block.tfmg.heavy_casing_door": "ɹooᗡ buısɐƆ ʎʌɐǝH", "block.tfmg.heavy_machinery_casing": "buısɐƆ ʎɹǝuıɥɔɐW ʎʌɐǝH", "block.tfmg.heavy_oil": "ןıO ʎʌɐǝH", "block.tfmg.kerosene": "ǝuǝsoɹǝʞ", @@ -44,8 +45,14 @@ "block.tfmg.small_bauxite_bricks": "sʞɔıɹᗺ ǝʇıxnɐᗺ ןןɐɯS", "block.tfmg.steel_block": "ןǝǝʇS ɟo ʞɔoןᗺ", "block.tfmg.steel_casing": "buısɐƆ ןǝǝʇS", + "block.tfmg.steel_door": "ɹooᗡ ןǝǝʇS", "block.tfmg.steel_fluid_tank": "ʞuɐ⟘ pınןℲ ןǝǝʇS", + "block.tfmg.steel_fluid_valve": "ǝʌןɐΛ pınןℲ ןǝǝʇS", + "block.tfmg.steel_mechanical_pump": "dɯnԀ ןɐɔıuɐɥɔǝW ןǝǝʇS", "block.tfmg.steel_pipe": "ǝdıԀ ןǝǝʇS", + "block.tfmg.steel_sheetmetal": "ןɐʇǝɯʇǝǝɥS ןǝǝʇS", + "block.tfmg.steel_smart_fluid_pipe": "ǝdıԀ pınןℲ ʇɹɐɯS ןǝǝʇS", + "block.tfmg.surface_scanner": "ɹǝuuɐɔS ǝɔɐɟɹnS", "entity.tfmg.blue_spark": "ʞɹɐdS ǝnןᗺ", "entity.tfmg.copper_grenade": "ǝpɐuǝɹ⅁ ɹǝddoƆ", "entity.tfmg.green_spark": "ʞɹɐdS uǝǝɹ⅁", @@ -88,6 +95,7 @@ "item.tfmg.lubrication_oil_bucket": "ʇǝʞɔnᗺ ןıO uoıʇɐɔıɹqnꞀ", "item.tfmg.napalm_bucket": "ʇǝʞɔnᗺ ɯןɐdɐN", "item.tfmg.naphtha_bucket": "ʇǝʞɔnᗺ ɐɥʇɥdɐN", + "item.tfmg.quad_potato_cannon": "uouuɐƆ oʇɐʇoԀ pɐnὉ", "item.tfmg.screwdriver": "ɹǝʌıɹpʍǝɹɔS", "item.tfmg.steel_ingot": "ʇobuI ןǝǝʇS", "item.tfmg.thermite_grenade": "ǝpɐuǝɹ⅁ ǝʇıɯɹǝɥ⟘", diff --git a/src/generated/resources/assets/tfmg/lang/en_us.json b/src/generated/resources/assets/tfmg/lang/en_us.json index 5c04d2c3..1981eff5 100644 --- a/src/generated/resources/assets/tfmg/lang/en_us.json +++ b/src/generated/resources/assets/tfmg/lang/en_us.json @@ -25,6 +25,7 @@ "block.tfmg.fossilstone": "Fossilstone", "block.tfmg.gasoline": "Gasoline", "block.tfmg.glass_steel_pipe": "Glass Steel Pipe", + "block.tfmg.heavy_casing_door": "Heavy Casing Door", "block.tfmg.heavy_machinery_casing": "Heavy Machinery Casing", "block.tfmg.heavy_oil": "Heavy Oil", "block.tfmg.kerosene": "Kerosene", @@ -47,8 +48,14 @@ "block.tfmg.small_bauxite_bricks": "Small Bauxite Bricks", "block.tfmg.steel_block": "Block of Steel", "block.tfmg.steel_casing": "Steel Casing", + "block.tfmg.steel_door": "Steel Door", "block.tfmg.steel_fluid_tank": "Steel Fluid Tank", + "block.tfmg.steel_fluid_valve": "Steel Fluid Valve", + "block.tfmg.steel_mechanical_pump": "Steel Mechanical Pump", "block.tfmg.steel_pipe": "Steel Pipe", + "block.tfmg.steel_sheetmetal": "Steel Sheetmetal", + "block.tfmg.steel_smart_fluid_pipe": "Steel Smart Fluid Pipe", + "block.tfmg.surface_scanner": "Surface Scanner", "entity.tfmg.blue_spark": "Blue Spark", "entity.tfmg.copper_grenade": "Copper Grenade", @@ -94,17 +101,33 @@ "item.tfmg.lubrication_oil_bucket": "Lubrication Oil Bucket", "item.tfmg.napalm_bucket": "Napalm Bucket", "item.tfmg.naphtha_bucket": "Naphtha Bucket", + "item.tfmg.quad_potato_cannon": "Quad Potato Cannon", "item.tfmg.screwdriver": "Screwdriver", "item.tfmg.steel_ingot": "Steel Ingot", "item.tfmg.thermite_grenade": "Thermite Grenade", "item.tfmg.zinc_grenade": "Zinc Grenade", + "itemGroup.tfmg.base": "Create: The Factory Must Grow", + "itemGroup.tfmg.building": "Create: TFMG's Building Blocks", + + "create.goggles.misc.number": "%1$s", + "_": "->------------------------] UI & Messages [------------------------<-", "itemGroup.tfmg.base": "Create: The Factory Must Grow", "itemGroup.tfmg.building": "Create: TFMG's Building Blocks", + "create.goggles.misc.number": "%1$s", + "create.goggles.misc.dot_one": ".", + "create.goggles.misc.dot_two": "..", + "create.goggles.misc.dot_three": "...", + "create.goggles.surface_scanner.no_rotation": "No Rotation Provided", + "create.goggles.surface_scanner.no_deposit": "No Deposit Found", + "create.goggles.surface_scanner.deposit_found": "Found Deposit", + "create.goggles.surface_scanner.distance": "Distance: %1$s Blocks", + "create.goggles.surface_scanner.scanning_surface": "Scanning Surface", + "_": "Thank you for translating Create: The Factory Must Grow!" } \ No newline at end of file diff --git a/src/generated/resources/assets/tfmg/models/block/steel_sheetmetal.json b/src/generated/resources/assets/tfmg/models/block/steel_sheetmetal.json new file mode 100644 index 00000000..022b498b --- /dev/null +++ b/src/generated/resources/assets/tfmg/models/block/steel_sheetmetal.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/cube_all", + "textures": { + "all": "tfmg:block/steel_sheetmetal" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/tfmg/models/item/heavy_casing_door.json b/src/generated/resources/assets/tfmg/models/item/heavy_casing_door.json new file mode 100644 index 00000000..afd52409 --- /dev/null +++ b/src/generated/resources/assets/tfmg/models/item/heavy_casing_door.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "tfmg:item/heavy_casing_door" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/tfmg/models/item/quad_potato_cannon.json b/src/generated/resources/assets/tfmg/models/item/quad_potato_cannon.json new file mode 100644 index 00000000..b3994b33 --- /dev/null +++ b/src/generated/resources/assets/tfmg/models/item/quad_potato_cannon.json @@ -0,0 +1,3 @@ +{ + "parent": "tfmg:item/quad_potato_cannon/item" +} \ No newline at end of file diff --git a/src/generated/resources/assets/tfmg/models/item/steel_door.json b/src/generated/resources/assets/tfmg/models/item/steel_door.json new file mode 100644 index 00000000..7c2721eb --- /dev/null +++ b/src/generated/resources/assets/tfmg/models/item/steel_door.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "tfmg:item/steel_door" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/tfmg/models/item/steel_fluid_valve.json b/src/generated/resources/assets/tfmg/models/item/steel_fluid_valve.json new file mode 100644 index 00000000..51b9a3b0 --- /dev/null +++ b/src/generated/resources/assets/tfmg/models/item/steel_fluid_valve.json @@ -0,0 +1,3 @@ +{ + "parent": "tfmg:block/steel_fluid_valve/item" +} \ No newline at end of file diff --git a/src/generated/resources/assets/tfmg/models/item/steel_mechanical_pump.json b/src/generated/resources/assets/tfmg/models/item/steel_mechanical_pump.json new file mode 100644 index 00000000..81817e44 --- /dev/null +++ b/src/generated/resources/assets/tfmg/models/item/steel_mechanical_pump.json @@ -0,0 +1,3 @@ +{ + "parent": "tfmg:block/steel_mechanical_pump/item" +} \ No newline at end of file diff --git a/src/generated/resources/assets/tfmg/models/item/steel_sheetmetal.json b/src/generated/resources/assets/tfmg/models/item/steel_sheetmetal.json new file mode 100644 index 00000000..a18a3e30 --- /dev/null +++ b/src/generated/resources/assets/tfmg/models/item/steel_sheetmetal.json @@ -0,0 +1,3 @@ +{ + "parent": "tfmg:block/steel_sheetmetal" +} \ No newline at end of file diff --git a/src/generated/resources/assets/tfmg/models/item/steel_smart_fluid_pipe.json b/src/generated/resources/assets/tfmg/models/item/steel_smart_fluid_pipe.json new file mode 100644 index 00000000..bbd5ad5d --- /dev/null +++ b/src/generated/resources/assets/tfmg/models/item/steel_smart_fluid_pipe.json @@ -0,0 +1,3 @@ +{ + "parent": "tfmg:block/steel_smart_fluid_pipe/item" +} \ No newline at end of file diff --git a/src/generated/resources/assets/tfmg/models/item/surface_scanner.json b/src/generated/resources/assets/tfmg/models/item/surface_scanner.json new file mode 100644 index 00000000..a3096218 --- /dev/null +++ b/src/generated/resources/assets/tfmg/models/item/surface_scanner.json @@ -0,0 +1,3 @@ +{ + "parent": "tfmg:block/surface_scanner/item" +} \ No newline at end of file diff --git a/src/generated/resources/data/create/tags/items/contraption_controlled.json b/src/generated/resources/data/create/tags/items/contraption_controlled.json new file mode 100644 index 00000000..94919b46 --- /dev/null +++ b/src/generated/resources/data/create/tags/items/contraption_controlled.json @@ -0,0 +1,6 @@ +{ + "values": [ + "tfmg:heavy_casing_door", + "tfmg:steel_door" + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/minecraft/tags/blocks/doors.json b/src/generated/resources/data/minecraft/tags/blocks/doors.json new file mode 100644 index 00000000..94919b46 --- /dev/null +++ b/src/generated/resources/data/minecraft/tags/blocks/doors.json @@ -0,0 +1,6 @@ +{ + "values": [ + "tfmg:heavy_casing_door", + "tfmg:steel_door" + ] +} \ 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 index a0c9f42d..f6100e1f 100644 --- a/src/generated/resources/data/minecraft/tags/blocks/mineable/pickaxe.json +++ b/src/generated/resources/data/minecraft/tags/blocks/mineable/pickaxe.json @@ -8,12 +8,18 @@ "tfmg:steel_pipe", "tfmg:copper_encased_steel_pipe", "tfmg:glass_steel_pipe", + "tfmg:steel_mechanical_pump", + "tfmg:steel_smart_fluid_pipe", + "tfmg:steel_fluid_valve", "tfmg:steel_fluid_tank", "tfmg:steel_block", "tfmg:cast_iron_block", "tfmg:aluminum_block", "tfmg:lead_block", "tfmg:coal_coke_block", + "tfmg:steel_sheetmetal", + "tfmg:heavy_casing_door", + "tfmg:steel_door", "tfmg:concrete", "tfmg:bauxite", "tfmg:cut_bauxite", 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 index 3701f39f..d433965f 100644 --- a/src/generated/resources/data/minecraft/tags/blocks/needs_iron_tool.json +++ b/src/generated/resources/data/minecraft/tags/blocks/needs_iron_tool.json @@ -3,6 +3,7 @@ "tfmg:steel_block", "tfmg:cast_iron_block", "tfmg:aluminum_block", - "tfmg:lead_block" + "tfmg:lead_block", + "tfmg:steel_sheetmetal" ] } \ No newline at end of file diff --git a/src/generated/resources/data/minecraft/tags/blocks/wooden_doors.json b/src/generated/resources/data/minecraft/tags/blocks/wooden_doors.json new file mode 100644 index 00000000..94919b46 --- /dev/null +++ b/src/generated/resources/data/minecraft/tags/blocks/wooden_doors.json @@ -0,0 +1,6 @@ +{ + "values": [ + "tfmg:heavy_casing_door", + "tfmg:steel_door" + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/minecraft/tags/items/doors.json b/src/generated/resources/data/minecraft/tags/items/doors.json new file mode 100644 index 00000000..94919b46 --- /dev/null +++ b/src/generated/resources/data/minecraft/tags/items/doors.json @@ -0,0 +1,6 @@ +{ + "values": [ + "tfmg:heavy_casing_door", + "tfmg:steel_door" + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/quark/tags/blocks/non_double_door.json b/src/generated/resources/data/quark/tags/blocks/non_double_door.json new file mode 100644 index 00000000..94919b46 --- /dev/null +++ b/src/generated/resources/data/quark/tags/blocks/non_double_door.json @@ -0,0 +1,6 @@ +{ + "values": [ + "tfmg:heavy_casing_door", + "tfmg:steel_door" + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/tfmg/loot_tables/blocks/heavy_casing_door.json b/src/generated/resources/data/tfmg/loot_tables/blocks/heavy_casing_door.json new file mode 100644 index 00000000..cff9ded4 --- /dev/null +++ b/src/generated/resources/data/tfmg/loot_tables/blocks/heavy_casing_door.json @@ -0,0 +1,29 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "conditions": [ + { + "block": "tfmg:heavy_casing_door", + "condition": "minecraft:block_state_property", + "properties": { + "half": "lower" + } + } + ], + "name": "tfmg:heavy_casing_door" + } + ], + "rolls": 1.0 + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/tfmg/loot_tables/blocks/steel_door.json b/src/generated/resources/data/tfmg/loot_tables/blocks/steel_door.json new file mode 100644 index 00000000..30754a0d --- /dev/null +++ b/src/generated/resources/data/tfmg/loot_tables/blocks/steel_door.json @@ -0,0 +1,29 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "conditions": [ + { + "block": "tfmg:steel_door", + "condition": "minecraft:block_state_property", + "properties": { + "half": "lower" + } + } + ], + "name": "tfmg:steel_door" + } + ], + "rolls": 1.0 + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/tfmg/loot_tables/blocks/steel_fluid_valve.json b/src/generated/resources/data/tfmg/loot_tables/blocks/steel_fluid_valve.json new file mode 100644 index 00000000..ad8fe46b --- /dev/null +++ b/src/generated/resources/data/tfmg/loot_tables/blocks/steel_fluid_valve.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_fluid_valve" + } + ], + "rolls": 1.0 + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/tfmg/loot_tables/blocks/steel_mechanical_pump.json b/src/generated/resources/data/tfmg/loot_tables/blocks/steel_mechanical_pump.json new file mode 100644 index 00000000..75016c0c --- /dev/null +++ b/src/generated/resources/data/tfmg/loot_tables/blocks/steel_mechanical_pump.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_mechanical_pump" + } + ], + "rolls": 1.0 + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/tfmg/loot_tables/blocks/steel_sheetmetal.json b/src/generated/resources/data/tfmg/loot_tables/blocks/steel_sheetmetal.json new file mode 100644 index 00000000..fbac19ac --- /dev/null +++ b/src/generated/resources/data/tfmg/loot_tables/blocks/steel_sheetmetal.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_sheetmetal" + } + ], + "rolls": 1.0 + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/tfmg/loot_tables/blocks/steel_smart_fluid_pipe.json b/src/generated/resources/data/tfmg/loot_tables/blocks/steel_smart_fluid_pipe.json new file mode 100644 index 00000000..ace1bd77 --- /dev/null +++ b/src/generated/resources/data/tfmg/loot_tables/blocks/steel_smart_fluid_pipe.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_smart_fluid_pipe" + } + ], + "rolls": 1.0 + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/tfmg/loot_tables/blocks/surface_scanner.json b/src/generated/resources/data/tfmg/loot_tables/blocks/surface_scanner.json new file mode 100644 index 00000000..0f0dfc6d --- /dev/null +++ b/src/generated/resources/data/tfmg/loot_tables/blocks/surface_scanner.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "tfmg:surface_scanner" + } + ], + "rolls": 1.0 + } + ] +} \ No newline at end of file diff --git a/src/main/java/com/drmangotea/tfmg/CreateTFMGClient.java b/src/main/java/com/drmangotea/tfmg/CreateTFMGClient.java index 6aba6106..e808a32f 100644 --- a/src/main/java/com/drmangotea/tfmg/CreateTFMGClient.java +++ b/src/main/java/com/drmangotea/tfmg/CreateTFMGClient.java @@ -1,6 +1,7 @@ package com.drmangotea.tfmg; +import com.drmangotea.tfmg.content.gadgets.quad_potato_cannon.QuadPotatoCannonRenderHandler; import com.drmangotea.tfmg.registry.TFMGPartialModels; import net.minecraftforge.eventbus.api.IEventBus; import net.minecraftforge.eventbus.api.SubscribeEvent; @@ -8,7 +9,7 @@ import net.minecraftforge.fml.event.lifecycle.FMLClientSetupEvent; import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext; public class CreateTFMGClient { - + public static final QuadPotatoCannonRenderHandler QUAD_POTATO_CANNON_RENDER_HANDLER = new QuadPotatoCannonRenderHandler(); public CreateTFMGClient() { IEventBus modEventBus = FMLJavaModLoadingContext.get().getModEventBus(); TFMGPartialModels.init(); diff --git a/src/main/java/com/drmangotea/tfmg/base/TFMGBuilderTransformers.java b/src/main/java/com/drmangotea/tfmg/base/TFMGBuilderTransformers.java index b26f30d6..0ac3e6e4 100644 --- a/src/main/java/com/drmangotea/tfmg/base/TFMGBuilderTransformers.java +++ b/src/main/java/com/drmangotea/tfmg/base/TFMGBuilderTransformers.java @@ -1,28 +1,64 @@ package com.drmangotea.tfmg.base; -import com.drmangotea.tfmg.content.concrete.formwork.FormWorkBlock; -import com.drmangotea.tfmg.content.concrete.formwork.FormWorkBlockEntity; +import com.drmangotea.tfmg.content.decoration.doors.TFMGSlidingDoorBlock; import com.simibubi.create.AllTags; import com.simibubi.create.content.contraptions.behaviour.DoorMovingInteraction; -import com.simibubi.create.content.decoration.slidingDoor.SlidingDoorBlock; import com.simibubi.create.content.decoration.slidingDoor.SlidingDoorMovementBehaviour; +import com.simibubi.create.content.kinetics.BlockStressDefaults; import com.simibubi.create.foundation.data.AssetLookup; +import com.simibubi.create.foundation.data.ModelGen; +import com.simibubi.create.foundation.data.SharedProperties; import com.tterrag.registrate.builders.BlockBuilder; import com.tterrag.registrate.util.nullness.NonNullUnaryOperator; import net.minecraft.client.renderer.RenderType; import net.minecraft.data.loot.BlockLoot; import net.minecraft.tags.BlockTags; import net.minecraft.tags.ItemTags; +import net.minecraft.world.level.block.Block; import net.minecraft.world.level.material.Material; -import net.minecraft.world.level.material.MaterialColor; import net.minecraftforge.client.model.generators.ModelFile; import static com.simibubi.create.AllInteractionBehaviours.interactionBehaviour; import static com.simibubi.create.AllMovementBehaviours.movementBehaviour; -import static com.simibubi.create.foundation.data.TagGen.axeOnly; +import static com.simibubi.create.foundation.data.BlockStateGen.axisBlock; +import static com.simibubi.create.foundation.data.TagGen.pickaxeOnly; public class TFMGBuilderTransformers { + public static NonNullUnaryOperator> slidingDoor(String type) { + return b -> b.initialProperties(Material.METAL) // for villager AI.. + .properties(p -> p.requiresCorrectToolForDrops() + .strength(3.0F, 6.0F)) + .blockstate((c, p) -> { + ModelFile bottom = AssetLookup.partialBaseModel(c, p, "bottom"); + ModelFile top = AssetLookup.partialBaseModel(c, p, "top"); + p.doorBlock(c.get(), bottom, bottom, bottom, bottom, top, top, top, top); + }) + .addLayer(() -> RenderType::cutoutMipped) + .transform(pickaxeOnly()) + .onRegister(interactionBehaviour(new DoorMovingInteraction())) + .onRegister(movementBehaviour(new SlidingDoorMovementBehaviour())) + .tag(BlockTags.DOORS) + .tag(BlockTags.WOODEN_DOORS) // for villager AI + .tag(AllTags.AllBlockTags.NON_DOUBLE_DOOR.tag) + .loot((lr, block) -> lr.add(block, BlockLoot.createDoorTable(block))) + .item() + .tag(ItemTags.DOORS) + .tag(AllTags.AllItemTags.CONTRAPTION_CONTROLLED.tag) + .model((c, p) -> p.blockSprite(c, p.modLoc("item/" + type + "_door"))) + .build(); + } + + public static NonNullUnaryOperator> surfaceScanner() { + return b -> b.initialProperties(SharedProperties::softMetal) + .blockstate((c, p) -> p.horizontalBlock(c.get(), p.models() + .getExistingFile(p.modLoc("block/surface_scanner/block")))) + .addLayer(() -> RenderType::cutoutMipped) + .item() + .transform(ModelGen.customItemModel("surface_scanner", "item")); + +} + } diff --git a/src/main/java/com/drmangotea/tfmg/base/TFMGSpriteShifts.java b/src/main/java/com/drmangotea/tfmg/base/TFMGSpriteShifts.java index e00cffb4..d699cda3 100644 --- a/src/main/java/com/drmangotea/tfmg/base/TFMGSpriteShifts.java +++ b/src/main/java/com/drmangotea/tfmg/base/TFMGSpriteShifts.java @@ -25,6 +25,9 @@ public class TFMGSpriteShifts { 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_SHEETMETAL = getCT(AllCTTypes.RECTANGLE, "steel_sheetmetal"); + public static final CTSpriteShiftEntry STEEL_SCAFFOLD_INSIDE = horizontal("scaffold/steel_scaffold_inside"), ALUMINUM_SCAFFOLD_INSIDE = horizontal("scaffold/aluminum_scaffold_inside"); diff --git a/src/main/java/com/drmangotea/tfmg/content/decoration/doors/TFMGSlidingDoorBlock.java b/src/main/java/com/drmangotea/tfmg/content/decoration/doors/TFMGSlidingDoorBlock.java new file mode 100644 index 00000000..de8f0e32 --- /dev/null +++ b/src/main/java/com/drmangotea/tfmg/content/decoration/doors/TFMGSlidingDoorBlock.java @@ -0,0 +1,254 @@ +package com.drmangotea.tfmg.content.decoration.doors; + + +import com.drmangotea.tfmg.registry.TFMGBlockEntities; +import com.simibubi.create.content.contraptions.ContraptionWorld; +import com.simibubi.create.content.decoration.slidingDoor.SlidingDoorShapes; +import com.simibubi.create.content.equipment.wrench.IWrenchable; +import com.simibubi.create.foundation.block.IBE; +import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; +import net.minecraft.world.InteractionHand; +import net.minecraft.world.InteractionResult; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.item.context.BlockPlaceContext; +import net.minecraft.world.level.BlockGetter; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.LevelAccessor; +import net.minecraft.world.level.LevelReader; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.Blocks; +import net.minecraft.world.level.block.DoorBlock; +import net.minecraft.world.level.block.RenderShape; +import net.minecraft.world.level.block.entity.BlockEntity; +import net.minecraft.world.level.block.entity.BlockEntityType; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.block.state.StateDefinition.Builder; +import net.minecraft.world.level.block.state.properties.BooleanProperty; +import net.minecraft.world.level.block.state.properties.DoorHingeSide; +import net.minecraft.world.level.block.state.properties.DoubleBlockHalf; +import net.minecraft.world.level.gameevent.GameEvent; +import net.minecraft.world.phys.BlockHitResult; +import net.minecraft.world.phys.shapes.CollisionContext; +import net.minecraft.world.phys.shapes.VoxelShape; + +import javax.annotation.Nullable; + +public class TFMGSlidingDoorBlock extends DoorBlock implements IWrenchable, IBE { + + public static final BooleanProperty VISIBLE = BooleanProperty.create("visible"); + private boolean folds; + + public TFMGSlidingDoorBlock(Properties p_52737_, boolean folds) { + super(p_52737_); + this.folds = folds; + } + + public boolean isFoldingDoor() { + return folds; + } + + @Override + protected void createBlockStateDefinition(Builder pBuilder) { + super.createBlockStateDefinition(pBuilder.add(VISIBLE)); + } + + @Override + public VoxelShape getShape(BlockState pState, BlockGetter pLevel, BlockPos pPos, CollisionContext pContext) { + if (!pState.getValue(OPEN) && (pState.getValue(VISIBLE) || pLevel instanceof ContraptionWorld)) + return super.getShape(pState, pLevel, pPos, pContext); + + Direction direction = pState.getValue(FACING); + boolean hinge = pState.getValue(HINGE) == DoorHingeSide.RIGHT; + return SlidingDoorShapes.get(direction, hinge, isFoldingDoor()); + } + + @Override + public boolean canSurvive(BlockState pState, LevelReader pLevel, BlockPos pPos) { + return pState.getValue(HALF) == DoubleBlockHalf.LOWER || pLevel.getBlockState(pPos.below()) + .is(this); + } + + @Override + public VoxelShape getInteractionShape(BlockState pState, BlockGetter pLevel, BlockPos pPos) { + return getShape(pState, pLevel, pPos, CollisionContext.empty()); + } + + @Override + public BlockState getStateForPlacement(BlockPlaceContext pContext) { + BlockState stateForPlacement = super.getStateForPlacement(pContext); + if (stateForPlacement != null && stateForPlacement.getValue(OPEN)) + return stateForPlacement.setValue(OPEN, false) + .setValue(POWERED, false); + return stateForPlacement; + } + + @Override + public void onPlace(BlockState pState, Level pLevel, BlockPos pPos, BlockState pOldState, boolean pIsMoving) { + if (!pOldState.is(this)) + deferUpdate(pLevel, pPos); + } + + @Override + public BlockState updateShape(BlockState pState, Direction pFacing, BlockState pFacingState, LevelAccessor pLevel, + BlockPos pCurrentPos, BlockPos pFacingPos) { + BlockState blockState = super.updateShape(pState, pFacing, pFacingState, pLevel, pCurrentPos, pFacingPos); + if (blockState.isAir()) + return blockState; + DoubleBlockHalf doubleblockhalf = blockState.getValue(HALF); + if (pFacing.getAxis() == Direction.Axis.Y + && doubleblockhalf == DoubleBlockHalf.LOWER == (pFacing == Direction.UP)) { + return pFacingState.is(this) && pFacingState.getValue(HALF) != doubleblockhalf + ? blockState.setValue(VISIBLE, pFacingState.getValue(VISIBLE)) + : Blocks.AIR.defaultBlockState(); + } + return blockState; + } + + @Override + public void setOpen(@Nullable Entity entity, Level level, BlockState state, BlockPos pos, boolean open) { + if (!state.is(this)) + return; + if (state.getValue(OPEN) == open) + return; + BlockState changedState = state.setValue(OPEN, open); + if (open) + changedState = changedState.setValue(VISIBLE, false); + level.setBlock(pos, changedState, 10); + + DoorHingeSide hinge = changedState.getValue(HINGE); + Direction facing = changedState.getValue(FACING); + BlockPos otherPos = + pos.relative(hinge == DoorHingeSide.LEFT ? facing.getClockWise() : facing.getCounterClockWise()); + BlockState otherDoor = level.getBlockState(otherPos); + if (isDoubleDoor(changedState, hinge, facing, otherDoor)) + setOpen(entity, level, otherDoor, otherPos, open); + + this.playSound(level, pos, open); + level.gameEvent(entity, open ? GameEvent.BLOCK_OPEN : GameEvent.BLOCK_CLOSE, pos); + } + + @Override + public void neighborChanged(BlockState pState, Level pLevel, BlockPos pPos, Block pBlock, BlockPos pFromPos, + boolean pIsMoving) { + boolean lower = pState.getValue(HALF) == DoubleBlockHalf.LOWER; + boolean isPowered = isDoorPowered(pLevel, pPos, pState); + if (defaultBlockState().is(pBlock)) + return; + if (isPowered == pState.getValue(POWERED)) + return; + + TFMGSlidingDoorBlockEntity be = getBlockEntity(pLevel, lower ? pPos : pPos.below()); + if (be != null && be.deferUpdate) + return; + + BlockState changedState = pState.setValue(POWERED, Boolean.valueOf(isPowered)) + .setValue(OPEN, Boolean.valueOf(isPowered)); + if (isPowered) + changedState = changedState.setValue(VISIBLE, false); + + if (isPowered != pState.getValue(OPEN)) { + this.playSound(pLevel, pPos, isPowered); + pLevel.gameEvent(null, isPowered ? GameEvent.BLOCK_OPEN : GameEvent.BLOCK_CLOSE, pPos); + + DoorHingeSide hinge = changedState.getValue(HINGE); + Direction facing = changedState.getValue(FACING); + BlockPos otherPos = + pPos.relative(hinge == DoorHingeSide.LEFT ? facing.getClockWise() : facing.getCounterClockWise()); + BlockState otherDoor = pLevel.getBlockState(otherPos); + + if (isDoubleDoor(changedState, hinge, facing, otherDoor)) { + otherDoor = otherDoor.setValue(POWERED, Boolean.valueOf(isPowered)) + .setValue(OPEN, Boolean.valueOf(isPowered)); + if (isPowered) + otherDoor = otherDoor.setValue(VISIBLE, false); + pLevel.setBlock(otherPos, otherDoor, 2); + } + } + + pLevel.setBlock(pPos, changedState, 2); + } + + public static boolean isDoorPowered(Level pLevel, BlockPos pPos, BlockState state) { + boolean lower = state.getValue(HALF) == DoubleBlockHalf.LOWER; + DoorHingeSide hinge = state.getValue(HINGE); + Direction facing = state.getValue(FACING); + BlockPos otherPos = + pPos.relative(hinge == DoorHingeSide.LEFT ? facing.getClockWise() : facing.getCounterClockWise()); + BlockState otherDoor = pLevel.getBlockState(otherPos); + + if (isDoubleDoor(state.cycle(OPEN), hinge, facing, otherDoor) && (pLevel.hasNeighborSignal(otherPos) + || pLevel.hasNeighborSignal(otherPos.relative(lower ? Direction.UP : Direction.DOWN)))) + return true; + + return pLevel.hasNeighborSignal(pPos) + || pLevel.hasNeighborSignal(pPos.relative(lower ? Direction.UP : Direction.DOWN)); + } + + @Override + public InteractionResult use(BlockState pState, Level pLevel, BlockPos pPos, Player pPlayer, InteractionHand pHand, + BlockHitResult pHit) { + + pState = pState.cycle(OPEN); + if (pState.getValue(OPEN)) + pState = pState.setValue(VISIBLE, false); + pLevel.setBlock(pPos, pState, 10); + pLevel.gameEvent(pPlayer, isOpen(pState) ? GameEvent.BLOCK_OPEN : GameEvent.BLOCK_CLOSE, pPos); + + DoorHingeSide hinge = pState.getValue(HINGE); + Direction facing = pState.getValue(FACING); + BlockPos otherPos = + pPos.relative(hinge == DoorHingeSide.LEFT ? facing.getClockWise() : facing.getCounterClockWise()); + BlockState otherDoor = pLevel.getBlockState(otherPos); + if (isDoubleDoor(pState, hinge, facing, otherDoor)) + use(otherDoor, pLevel, otherPos, pPlayer, pHand, pHit); + else if (pState.getValue(OPEN)) + pLevel.levelEvent(pPlayer, getOpenSound(), pPos, 0); + + return InteractionResult.sidedSuccess(pLevel.isClientSide); + } + + public void deferUpdate(LevelAccessor level, BlockPos pos) { + withBlockEntityDo(level, pos, sdte -> sdte.deferUpdate = true); + } + + public static boolean isDoubleDoor(BlockState pState, DoorHingeSide hinge, Direction facing, BlockState otherDoor) { + return otherDoor.getBlock() == pState.getBlock() && otherDoor.getValue(HINGE) != hinge + && otherDoor.getValue(FACING) == facing && otherDoor.getValue(OPEN) != pState.getValue(OPEN) + && otherDoor.getValue(HALF) == pState.getValue(HALF); + } + + @Override + public RenderShape getRenderShape(BlockState pState) { + return pState.getValue(VISIBLE) ? RenderShape.MODEL : RenderShape.ENTITYBLOCK_ANIMATED; + } + + private void playSound(Level pLevel, BlockPos pPos, boolean pIsOpening) { + if (pIsOpening) + pLevel.levelEvent((Player) null, this.getOpenSound(), pPos, 0); + } + + private int getOpenSound() { + return 1005; + } + + @Nullable + @Override + public BlockEntity newBlockEntity(BlockPos pos, BlockState state) { + if (state.getValue(HALF) == DoubleBlockHalf.UPPER) + return null; + return IBE.super.newBlockEntity(pos, state); + } + + @Override + public Class getBlockEntityClass() { + return TFMGSlidingDoorBlockEntity.class; + } + + @Override + public BlockEntityType getBlockEntityType() { + return TFMGBlockEntities.TFMG_SLIDING_DOOR.get(); + } + +} diff --git a/src/main/java/com/drmangotea/tfmg/content/decoration/doors/TFMGSlidingDoorBlockEntity.java b/src/main/java/com/drmangotea/tfmg/content/decoration/doors/TFMGSlidingDoorBlockEntity.java new file mode 100644 index 00000000..a7ecb257 --- /dev/null +++ b/src/main/java/com/drmangotea/tfmg/content/decoration/doors/TFMGSlidingDoorBlockEntity.java @@ -0,0 +1,83 @@ +package com.drmangotea.tfmg.content.decoration.doors; + +import com.simibubi.create.content.decoration.slidingDoor.SlidingDoorBlockEntity; +import com.simibubi.create.foundation.blockEntity.behaviour.BlockEntityBehaviour; +import com.simibubi.create.foundation.utility.animation.LerpedFloat; +import com.simibubi.create.foundation.utility.animation.LerpedFloat.Chaser; +import net.minecraft.core.BlockPos; +import net.minecraft.sounds.SoundEvents; +import net.minecraft.sounds.SoundSource; +import net.minecraft.world.level.block.Blocks; +import net.minecraft.world.level.block.DoorBlock; +import net.minecraft.world.level.block.entity.BlockEntityType; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.phys.AABB; + +import java.util.List; + +public class TFMGSlidingDoorBlockEntity extends SlidingDoorBlockEntity { + + LerpedFloat animation; + int bridgeTicks; + boolean deferUpdate; + + public TFMGSlidingDoorBlockEntity(BlockEntityType type, BlockPos pos, BlockState state) { + super(type, pos, state); + animation = LerpedFloat.linear() + .startWithValue(isOpen(state) ? 1 : 0); + } + + @Override + public void tick() { + if (deferUpdate && !level.isClientSide()) { + deferUpdate = false; + BlockState blockState = getBlockState(); + blockState.neighborChanged(level, worldPosition, Blocks.AIR, worldPosition, false); + } + + super.tick(); + boolean open = isOpen(getBlockState()); + boolean wasSettled = animation.settled(); + animation.chase(open ? 1 : 0, .15f, Chaser.LINEAR); + animation.tickChaser(); + + if (level.isClientSide()) { + if (bridgeTicks < 2 && open) + bridgeTicks++; + else if (bridgeTicks > 0 && !open && isVisible(getBlockState())) + bridgeTicks--; + return; + } + + if (!open && !wasSettled && animation.settled() && !isVisible(getBlockState())) + showBlockModel(); + } + + @Override + protected AABB createRenderBoundingBox() { + return super.createRenderBoundingBox().inflate(1); + } + + protected boolean isVisible(BlockState state) { + return state.getOptionalValue(TFMGSlidingDoorBlock.VISIBLE) + .orElse(true); + } + + protected boolean shouldRenderSpecial(BlockState state) { + return !isVisible(state) || bridgeTicks != 0; + } + + protected void showBlockModel() { + level.setBlock(worldPosition, getBlockState().setValue(TFMGSlidingDoorBlock.VISIBLE, true), 3); + level.playSound(null, worldPosition, SoundEvents.IRON_DOOR_CLOSE, SoundSource.BLOCKS, .5f, 1); + } + + @Override + public void addBehaviours(List behaviours) {} + + public static boolean isOpen(BlockState state) { + return state.getOptionalValue(DoorBlock.OPEN) + .orElse(false); + } + +} diff --git a/src/main/java/com/drmangotea/tfmg/content/decoration/doors/TFMGSlidingDoorRenderer.java b/src/main/java/com/drmangotea/tfmg/content/decoration/doors/TFMGSlidingDoorRenderer.java new file mode 100644 index 00000000..2a9bd07a --- /dev/null +++ b/src/main/java/com/drmangotea/tfmg/content/decoration/doors/TFMGSlidingDoorRenderer.java @@ -0,0 +1,97 @@ +package com.drmangotea.tfmg.content.decoration.doors; + + +import com.drmangotea.tfmg.registry.TFMGPartialModels; +import com.jozufozu.flywheel.core.PartialModel; +import com.mojang.blaze3d.vertex.PoseStack; +import com.mojang.blaze3d.vertex.VertexConsumer; +import com.simibubi.create.foundation.blockEntity.renderer.SafeBlockEntityRenderer; +import com.simibubi.create.foundation.render.CachedBufferer; +import com.simibubi.create.foundation.render.SuperByteBuffer; +import com.simibubi.create.foundation.utility.AngleHelper; +import com.simibubi.create.foundation.utility.Couple; +import com.simibubi.create.foundation.utility.Iterate; +import net.minecraft.client.renderer.MultiBufferSource; +import net.minecraft.client.renderer.RenderType; +import net.minecraft.client.renderer.blockentity.BlockEntityRendererProvider.Context; +import net.minecraft.core.Direction; +import net.minecraft.util.Mth; +import net.minecraft.world.level.block.DoorBlock; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.block.state.properties.DoorHingeSide; +import net.minecraft.world.level.block.state.properties.DoubleBlockHalf; +import net.minecraft.world.phys.Vec3; +import net.minecraftforge.registries.ForgeRegistries; + +public class TFMGSlidingDoorRenderer extends SafeBlockEntityRenderer { + + public TFMGSlidingDoorRenderer(Context context) {} + + @Override + protected void renderSafe(TFMGSlidingDoorBlockEntity be, float partialTicks, PoseStack ms, MultiBufferSource buffer, + int light, int overlay) { + BlockState blockState = be.getBlockState(); + if (!be.shouldRenderSpecial(blockState)) + return; + + Direction facing = blockState.getValue(DoorBlock.FACING); + Direction movementDirection = facing.getClockWise(); + + if (blockState.getValue(DoorBlock.HINGE) == DoorHingeSide.LEFT) + movementDirection = movementDirection.getOpposite(); + + float value = be.animation.getValue(partialTicks); + float value2 = Mth.clamp(value * 10, 0, 1); + + VertexConsumer vb = buffer.getBuffer(RenderType.cutoutMipped()); + Vec3 offset = Vec3.atLowerCornerOf(movementDirection.getNormal()) + .scale(value * value * 13 / 16f) + .add(Vec3.atLowerCornerOf(facing.getNormal()) + .scale(value2 * 1 / 32f)); + + if (((TFMGSlidingDoorBlock) blockState.getBlock()).isFoldingDoor()) { + Couple partials = + TFMGPartialModels.FOLDING_DOORS.get(ForgeRegistries.BLOCKS.getKey(blockState.getBlock())); + if(partials==null) + return; + boolean flip = blockState.getValue(DoorBlock.HINGE) == DoorHingeSide.RIGHT; + for (boolean left : Iterate.trueAndFalse) { + SuperByteBuffer partial = CachedBufferer.partial(partials.get(left ^ flip), blockState); + float f = flip ? -1 : 1; + + partial.translate(0, -1 / 512f, 0) + .translate(Vec3.atLowerCornerOf(facing.getNormal()) + .scale(value2 * 1 / 32f)); + partial.rotateCentered(Direction.UP, + Mth.DEG_TO_RAD * AngleHelper.horizontalAngle(facing.getClockWise())); + + if (flip) + partial.translate(0, 0, 1); + partial.rotateY(91 * f * value * value); + + if (!left) + partial.translate(0, 0, f / 2f) + .rotateY(-181 * f * value * value); + + if (flip) + partial.translate(0, 0, -1 / 2f); + + partial.light(light) + .renderInto(ms, vb); + } + + return; + } + + for (DoubleBlockHalf half : DoubleBlockHalf.values()) { + CachedBufferer.block(blockState.setValue(DoorBlock.OPEN, false) + .setValue(DoorBlock.HALF, half)) + .translate(0, half == DoubleBlockHalf.UPPER ? 1 - 1 / 512f : 0, 0) + .translate(offset) + .light(light) + .renderInto(ms, vb); + } + + } + +} diff --git a/src/main/java/com/drmangotea/tfmg/content/deposits/FluidDepositBlock.java b/src/main/java/com/drmangotea/tfmg/content/deposits/FluidDepositBlock.java index 892c16a7..7d769480 100644 --- a/src/main/java/com/drmangotea/tfmg/content/deposits/FluidDepositBlock.java +++ b/src/main/java/com/drmangotea/tfmg/content/deposits/FluidDepositBlock.java @@ -7,19 +7,19 @@ import com.simibubi.create.foundation.block.IBE; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.entity.BlockEntityType; -public class FluidDepositBlock extends Block implements IBE { +public class FluidDepositBlock extends Block implements IBE { public FluidDepositBlock(Properties p_49795_) { super(p_49795_); } @Override - public Class getBlockEntityClass() { - return FluidDepositTileEntity.class; + public Class getBlockEntityClass() { + return FluidDepositBlockEntity.class; } @Override - public BlockEntityType getBlockEntityType() { + public BlockEntityType getBlockEntityType() { return TFMGBlockEntities.OIL_DEPOSIT.get(); } } diff --git a/src/main/java/com/drmangotea/tfmg/content/deposits/FluidDepositTileEntity.java b/src/main/java/com/drmangotea/tfmg/content/deposits/FluidDepositBlockEntity.java similarity index 90% rename from src/main/java/com/drmangotea/tfmg/content/deposits/FluidDepositTileEntity.java rename to src/main/java/com/drmangotea/tfmg/content/deposits/FluidDepositBlockEntity.java index c5e9922e..d72890b2 100644 --- a/src/main/java/com/drmangotea/tfmg/content/deposits/FluidDepositTileEntity.java +++ b/src/main/java/com/drmangotea/tfmg/content/deposits/FluidDepositBlockEntity.java @@ -15,13 +15,13 @@ import net.minecraft.world.level.material.Fluid; import java.util.List; -public class FluidDepositTileEntity extends SmartBlockEntity { +public class FluidDepositBlockEntity extends SmartBlockEntity { public final int baseFluidAmount= Create.RANDOM.nextInt(300000000); public final int fluidAmountToBuckets =baseFluidAmount/1000; public int fluidAmount= fluidAmountToBuckets; - public FluidDepositTileEntity(BlockEntityType type, BlockPos pos, BlockState state) { + public FluidDepositBlockEntity(BlockEntityType type, BlockPos pos, BlockState state) { super(type, pos, state); CreateTFMG.LOGGER.debug("Created Oil Deposit with "+baseFluidAmount+" buckets of Crude Oil"); } diff --git a/src/main/java/com/drmangotea/tfmg/content/deposits/surface_scanner/SurfaceScannerBlock.java b/src/main/java/com/drmangotea/tfmg/content/deposits/surface_scanner/SurfaceScannerBlock.java new file mode 100644 index 00000000..fc00becd --- /dev/null +++ b/src/main/java/com/drmangotea/tfmg/content/deposits/surface_scanner/SurfaceScannerBlock.java @@ -0,0 +1,70 @@ +package com.drmangotea.tfmg.content.deposits.surface_scanner; + + +import com.drmangotea.tfmg.registry.TFMGBlockEntities; +import com.drmangotea.tfmg.registry.TFMGShapes; +import com.simibubi.create.content.kinetics.base.HorizontalKineticBlock; +import com.simibubi.create.foundation.block.IBE; +import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; +import net.minecraft.world.item.context.BlockPlaceContext; +import net.minecraft.world.level.BlockGetter; +import net.minecraft.world.level.LevelReader; +import net.minecraft.world.level.block.entity.BlockEntityType; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.pathfinder.PathComputationType; +import net.minecraft.world.phys.shapes.CollisionContext; +import net.minecraft.world.phys.shapes.VoxelShape; + +public class SurfaceScannerBlock extends HorizontalKineticBlock implements IBE { + + + + public SurfaceScannerBlock(Properties properties) { + super(properties); + + } + + + @Override + public VoxelShape getShape(BlockState pState, BlockGetter worldIn, BlockPos pos, CollisionContext context) { + + return TFMGShapes.SURFACE_SCANNER; + } + + + @Override + public BlockState getStateForPlacement(BlockPlaceContext context) { + Direction preferred = getPreferredHorizontalFacing(context); + if (preferred != null) + return defaultBlockState().setValue(HORIZONTAL_FACING, preferred.getOpposite()); + return this.defaultBlockState().setValue(HORIZONTAL_FACING, context.getHorizontalDirection().getOpposite()); + } + + @Override + public boolean hasShaftTowards(LevelReader world, BlockPos pos, BlockState state, Direction face) { + return face == state.getValue(HORIZONTAL_FACING).getOpposite(); + } + + + @Override + public Direction.Axis getRotationAxis(BlockState state) { + return state.getValue(HORIZONTAL_FACING).getAxis(); + } + + @Override + public boolean isPathfindable(BlockState state, BlockGetter reader, BlockPos pos, PathComputationType type) { + return false; + } + + @Override + public Class getBlockEntityClass() { + return SurfaceScannerTileEntity.class; + } + + @Override + public BlockEntityType getBlockEntityType() { + return TFMGBlockEntities.SURFACE_SCANNER.get(); + } + +} diff --git a/src/main/java/com/drmangotea/tfmg/content/deposits/surface_scanner/SurfaceScannerRenderer.java b/src/main/java/com/drmangotea/tfmg/content/deposits/surface_scanner/SurfaceScannerRenderer.java new file mode 100644 index 00000000..6fc723ca --- /dev/null +++ b/src/main/java/com/drmangotea/tfmg/content/deposits/surface_scanner/SurfaceScannerRenderer.java @@ -0,0 +1,111 @@ +package com.drmangotea.tfmg.content.deposits.surface_scanner; + +import com.drmangotea.tfmg.registry.TFMGPartialModels; +import com.mojang.blaze3d.vertex.PoseStack; +import com.mojang.blaze3d.vertex.VertexConsumer; +import com.simibubi.create.AllPartialModels; +import com.simibubi.create.content.kinetics.base.HorizontalKineticBlock; +import com.simibubi.create.content.kinetics.base.KineticBlockEntity; +import com.simibubi.create.content.kinetics.base.KineticBlockEntityRenderer; +import com.simibubi.create.content.kinetics.clock.CuckooClockBlock; +import com.simibubi.create.foundation.render.CachedBufferer; +import com.simibubi.create.foundation.render.SuperByteBuffer; +import com.simibubi.create.foundation.utility.AngleHelper; +import net.minecraft.client.renderer.MultiBufferSource; +import net.minecraft.client.renderer.RenderType; +import net.minecraft.client.renderer.blockentity.BlockEntityRendererProvider; +import net.minecraft.core.Direction; +import net.minecraft.world.level.block.state.BlockState; + +public class SurfaceScannerRenderer extends KineticBlockEntityRenderer { + + public SurfaceScannerRenderer(BlockEntityRendererProvider.Context context) { + super(context); + + } + + + @Override + protected SuperByteBuffer getRotatedModel(SurfaceScannerTileEntity be, BlockState state) { + return CachedBufferer.partialFacing(AllPartialModels.SHAFT_HALF, state, state + .getValue(HorizontalKineticBlock.HORIZONTAL_FACING) + .getOpposite()); + } + + @Override + protected void renderSafe(SurfaceScannerTileEntity be, float partialTicks, PoseStack ms, MultiBufferSource buffer, + int light, int overlay) { + super.renderSafe(be, partialTicks, ms, buffer, light, overlay); + + VertexConsumer vb = buffer.getBuffer(RenderType.solid()); + + BlockState blockState = be.getBlockState(); + + + + + CachedBufferer.partial(TFMGPartialModels.SURFACE_SCANNER_FLAG, blockState) + .translateY(0.25) + .centre() + .rotateToFace(blockState.getValue(HorizontalKineticBlock.HORIZONTAL_FACING)) + .rotateX(-be.visualFlagAngle.getValue(partialTicks)) + .unCentre() + + .light(light) + .renderInto(ms, vb); + /// + + + if(blockState.getValue(HorizontalKineticBlock.HORIZONTAL_FACING)==Direction.NORTH) { + + CachedBufferer.partial(TFMGPartialModels.SURFACE_SCANNER_DIAL, blockState) + + .translateY(-0.07) + .translateZ(.065) + .centre() + .rotateY(be.visualAngle.getValue(partialTicks)) + .unCentre() + .light(light) + .renderInto(ms, vb); + } + if(blockState.getValue(HorizontalKineticBlock.HORIZONTAL_FACING)==Direction.SOUTH) { + + CachedBufferer.partial(TFMGPartialModels.SURFACE_SCANNER_DIAL, blockState) + + .translateY(-0.08) + .translateZ(-.065) + .centre() + .rotateY(be.visualAngle.getValue(partialTicks)) + .unCentre() + .light(light) + .renderInto(ms, vb); + } + if(blockState.getValue(HorizontalKineticBlock.HORIZONTAL_FACING)==Direction.WEST) { + + CachedBufferer.partial(TFMGPartialModels.SURFACE_SCANNER_DIAL, blockState) + + .translateY(-0.08) + .translateX(.065) + .centre() + .rotateY(be.visualAngle.getValue(partialTicks)) + .unCentre() + .light(light) + .renderInto(ms, vb); + } + if(blockState.getValue(HorizontalKineticBlock.HORIZONTAL_FACING)==Direction.EAST) { + + CachedBufferer.partial(TFMGPartialModels.SURFACE_SCANNER_DIAL, blockState) + + .translateY(-0.08) + .translateX(-.065) + .centre() + .rotateY(be.visualAngle.getValue(partialTicks)) + .unCentre() + .light(light) + .renderInto(ms, vb); + } + + } + + +} \ No newline at end of file diff --git a/src/main/java/com/drmangotea/tfmg/content/deposits/surface_scanner/SurfaceScannerTileEntity.java b/src/main/java/com/drmangotea/tfmg/content/deposits/surface_scanner/SurfaceScannerTileEntity.java new file mode 100644 index 00000000..08fd73fc --- /dev/null +++ b/src/main/java/com/drmangotea/tfmg/content/deposits/surface_scanner/SurfaceScannerTileEntity.java @@ -0,0 +1,279 @@ +package com.drmangotea.tfmg.content.deposits.surface_scanner; + + +import com.drmangotea.tfmg.content.deposits.FluidDepositBlockEntity; +import com.simibubi.create.AllSoundEvents; +import com.simibubi.create.Create; +import com.simibubi.create.content.equipment.goggles.IHaveGoggleInformation; +import com.simibubi.create.content.equipment.wrench.IWrenchable; +import com.simibubi.create.content.kinetics.base.KineticBlockEntity; +import com.simibubi.create.foundation.utility.Lang; +import com.simibubi.create.foundation.utility.animation.LerpedFloat; +import net.minecraft.ChatFormatting; +import net.minecraft.core.BlockPos; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.nbt.NbtUtils; +import net.minecraft.network.chat.Component; +import net.minecraft.world.InteractionResult; +import net.minecraft.world.item.context.UseOnContext; +import net.minecraft.world.level.block.Blocks; +import net.minecraft.world.level.block.entity.BlockEntity; +import net.minecraft.world.level.block.entity.BlockEntityType; +import net.minecraft.world.level.block.state.BlockState; + +import java.util.List; + +public class SurfaceScannerTileEntity extends KineticBlockEntity implements IHaveGoggleInformation, IWrenchable { + public FluidDepositBlockEntity deposit; + public BlockPos checkedPosition; + public boolean foundDeposit=false; + public BlockPos depositPos; + + public int locatingTimer=0; + public boolean noDepositFound=false; + + int dotTimer=0; + int dotCount=1; + + public int distanceFromDeposit=6969; + + public LerpedFloat visualAngle = LerpedFloat.angular(); + public float angle = 0; + + + public LerpedFloat visualFlagAngle = LerpedFloat.angular(); + public float flagAngle = 0; + + public SurfaceScannerTileEntity(BlockEntityType typeIn, BlockPos pos, BlockState state) { + super(typeIn, pos, state); + } + + @Override + public void tick() { + super.tick(); + angle%=360; + if (getSpeed() == 0) { + foundDeposit=false; + noDepositFound=false; + locatingTimer=0; + return; + } + if(deposit==null) { + foundDeposit = false; + distanceFromDeposit=6969; + + } + visualAngle.chase(angle, 0.2f, LerpedFloat.Chaser.EXP); + visualAngle.tickChaser(); + + visualFlagAngle.chase(flagAngle, 0.8f, LerpedFloat.Chaser.EXP); + visualFlagAngle.tickChaser(); + + + if (!foundDeposit) { + dotTimer++; + locatingTimer++; + distanceFromDeposit=6969; + if(locatingTimer>=2400){ + locatingTimer=2400; + noDepositFound=true; + return; + } + + + /// + if (dotTimer >= 90) { + dotCount = 3; + dotTimer = 0; + + } else if (dotTimer >= 60) { + dotCount = 2; + } else if (dotTimer >= 30) + dotCount = 1; + } + + + if (foundDeposit) { + + float zDistance; + float xDistance; + + + zDistance = deposit.getBlockPos().getZ()-getBlockPos().getZ(); + + + + xDistance = deposit.getBlockPos().getX()-getBlockPos().getX(); + + + + int positiveXsquared = Math.abs((int)xDistance)*Math.abs((int)xDistance); + int positiveZsquared = Math.abs((int)zDistance)*Math.abs((int)xDistance); + distanceFromDeposit = (int)Math.sqrt(positiveXsquared+positiveZsquared); + + + if(zDistance <10 && zDistance>-10&&xDistance <10 && xDistance>-10){ + flagAngle = 90; + // AllSoundEvents.CONTRAPTION_ASSEMBLE.play(level,null,getBlockPos().getX(),getBlockPos().getY(),getBlockPos().getZ(),50,1); + return; + } + + + angle = (float) Math.toDegrees(Math.atan(xDistance/zDistance)); + + if(this.getBlockPos().getZ() tooltip, boolean isPlayerSneaking) { + if(getSpeed()==0){ + Lang.translate("goggles.surface_scanner.no_rotation") + .style(ChatFormatting.DARK_RED) + .forGoggles(tooltip); + return true; + } + if(noDepositFound){ + Lang.translate("goggles.surface_scanner.no_deposit") + .style(ChatFormatting.RED) + .space() + .forGoggles(tooltip); + return true; + } + + + + if(foundDeposit){ + + Lang.translate("goggles.surface_scanner.deposit_found") + .style(ChatFormatting.DARK_GREEN) + .space() + .forGoggles(tooltip); + + + + Lang.translate("goggles.surface_scanner.distance", this.distanceFromDeposit) + .style(ChatFormatting.GREEN) + .forGoggles(tooltip,1); + +//debug +/* + Lang.translate("goggles.surface_scanner.coordinates") + .style(ChatFormatting.DARK_GREEN) + .space() + .forGoggles(tooltip); + + + Lang.translate("goggles.misc.number", this.deposit.getBlockPos().getX()) + .style(ChatFormatting.GREEN) + .forGoggles(tooltip,1); + + Lang.translate("goggles.misc.number", this.deposit.getBlockPos().getZ()) + .style(ChatFormatting.GREEN) + .forGoggles(tooltip,1); + + + Lang.translate("goggles.misc.number", angle) + .style(ChatFormatting.DARK_PURPLE) + .forGoggles(tooltip,1); + + */ + + }else { + + if(dotCount==1) + Lang.translate("goggles.surface_scanner.scanning_surface") + .style(ChatFormatting.GOLD) + .add(Lang.translate("goggles.misc.dot_one")) + .forGoggles(tooltip); + + if(dotCount==2) + Lang.translate("goggles.surface_scanner.scanning_surface") + .style(ChatFormatting.GOLD) + .add(Lang.translate("goggles.misc.dot_two")) + .forGoggles(tooltip); + + if(dotCount==3) + Lang.translate("goggles.surface_scanner.scanning_surface") + .style(ChatFormatting.GOLD) + .add(Lang.translate("goggles.misc.dot_three")) + .forGoggles(tooltip); + + } + + + return true; + + + + } + + +} + + + diff --git a/src/main/java/com/drmangotea/tfmg/content/gadgets/quad_potato_cannon/QuadPotatoCannonItem.java b/src/main/java/com/drmangotea/tfmg/content/gadgets/quad_potato_cannon/QuadPotatoCannonItem.java new file mode 100644 index 00000000..afb28f5a --- /dev/null +++ b/src/main/java/com/drmangotea/tfmg/content/gadgets/quad_potato_cannon/QuadPotatoCannonItem.java @@ -0,0 +1,300 @@ +package com.drmangotea.tfmg.content.gadgets.quad_potato_cannon; + + +import com.drmangotea.tfmg.CreateTFMGClient; +import com.simibubi.create.AllEnchantments; +import com.simibubi.create.AllEntityTypes; +import com.simibubi.create.Create; +import com.simibubi.create.content.equipment.armor.BacktankUtil; +import com.simibubi.create.content.equipment.potatoCannon.*; +import com.simibubi.create.content.equipment.zapper.ShootableGadgetItemMethods; +import com.simibubi.create.foundation.item.CustomArmPoseItem; +import com.simibubi.create.foundation.utility.AnimationTickHolder; +import com.simibubi.create.foundation.utility.Components; +import com.simibubi.create.foundation.utility.Lang; +import com.simibubi.create.foundation.utility.VecHelper; +import net.minecraft.ChatFormatting; +import net.minecraft.client.Minecraft; +import net.minecraft.client.model.HumanoidModel; +import net.minecraft.client.player.AbstractClientPlayer; +import net.minecraft.client.player.LocalPlayer; +import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction.Axis; +import net.minecraft.network.chat.Component; +import net.minecraft.network.chat.MutableComponent; +import net.minecraft.util.Mth; +import net.minecraft.world.InteractionHand; +import net.minecraft.world.InteractionResult; +import net.minecraft.world.InteractionResultHolder; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.ProjectileWeaponItem; +import net.minecraft.world.item.TooltipFlag; +import net.minecraft.world.item.UseAnim; +import net.minecraft.world.item.context.UseOnContext; +import net.minecraft.world.item.enchantment.Enchantment; +import net.minecraft.world.item.enchantment.EnchantmentHelper; +import net.minecraft.world.item.enchantment.Enchantments; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.phys.Vec3; +import net.minecraftforge.api.distmarker.Dist; +import net.minecraftforge.api.distmarker.OnlyIn; +import org.jetbrains.annotations.Nullable; + +import java.util.List; +import java.util.Optional; +import java.util.function.Predicate; + +public class QuadPotatoCannonItem extends ProjectileWeaponItem implements CustomArmPoseItem { + + public static ItemStack CLIENT_CURRENT_AMMO = ItemStack.EMPTY; + public static final int MAX_DAMAGE = 100; + + public QuadPotatoCannonItem(Properties properties) { + super(properties.defaultDurability(MAX_DAMAGE)); + } + + @Override + public boolean canAttackBlock(BlockState state, Level world, BlockPos pos, Player player) { + return false; + } + + @Override + public boolean canApplyAtEnchantingTable(ItemStack stack, Enchantment enchantment) { + if (enchantment == Enchantments.POWER_ARROWS) + return true; + if (enchantment == Enchantments.PUNCH_ARROWS) + return true; + if (enchantment == Enchantments.FLAMING_ARROWS) + return true; + if (enchantment == Enchantments.MOB_LOOTING) + return true; + if (enchantment == AllEnchantments.POTATO_RECOVERY.get()) + return true; + return super.canApplyAtEnchantingTable(stack, enchantment); + } + + @Override + public InteractionResult useOn(UseOnContext context) { + return use(context.getLevel(), context.getPlayer(), context.getHand()).getResult(); + } + + @Override + public boolean isBarVisible(ItemStack stack) { + return BacktankUtil.isBarVisible(stack, 500); + } + + @Override + public int getBarWidth(ItemStack stack) { + return BacktankUtil.getBarWidth(stack, 500); + } + + @Override + public int getBarColor(ItemStack stack) { + return BacktankUtil.getBarColor(stack, 500); + } + + //private int maxUses() { + // return AllConfigs.server()..maxPotatoCannonShots.get()*2; + // } + + public boolean isCannon(ItemStack stack) { + return stack.getItem() instanceof QuadPotatoCannonItem; + } + + @Override + public InteractionResultHolder use(Level world, Player player, InteractionHand hand) { + ItemStack stack = player.getItemInHand(hand); + return findAmmoInInventory(world, player, stack).map(itemStack -> { + + if (ShootableGadgetItemMethods.shouldSwap(player, stack, hand, this::isCannon)) + return InteractionResultHolder.fail(stack); + + if (world.isClientSide) { + CreateTFMGClient.QUAD_POTATO_CANNON_RENDER_HANDLER.dontAnimateItem(hand); + return InteractionResultHolder.success(stack); + } + + Vec3 barrelPos = ShootableGadgetItemMethods.getGunBarrelVec(player, hand == InteractionHand.MAIN_HAND, + new Vec3(.75f, -0.15f, 1.5f)); + Vec3 correction = + ShootableGadgetItemMethods.getGunBarrelVec(player, hand == InteractionHand.MAIN_HAND, new Vec3(-.05f, 0, 0)) + .subtract(player.position() + .add(0, player.getEyeHeight(), 0)); + + PotatoCannonProjectileType projectileType = PotatoProjectileTypeManager.getTypeForStack(itemStack) + .orElse(BuiltinPotatoProjectileTypes.FALLBACK); + Vec3 lookVec = player.getLookAngle(); + Vec3 motion = lookVec.add(correction) + .normalize() + .scale(2) + .scale(projectileType.getVelocityMultiplier()); + + float soundPitch = projectileType.getSoundPitch() + (Create.RANDOM.nextFloat() - .5f) / 4f; + + // boolean spray = projectileType.getSplit() > 1; + Vec3 sprayBase = VecHelper.rotate(new Vec3(0, 0.1, 0), 360 * Create.RANDOM.nextFloat(), Axis.Z); + float sprayChange = 360f; + + for (int i = 0; i < 4 * projectileType.getSplit(); i++) { + if (itemStack.getCount() > 0) { + PotatoProjectileEntity projectile = AllEntityTypes.POTATO_PROJECTILE.create(world); + projectile.setItem(itemStack); + projectile.setEnchantmentEffectsFromCannon(stack); + + Vec3 splitMotion = motion; + // if (spray) { + float imperfection = 40 * 40; + Vec3 sprayOffset = VecHelper.rotate(sprayBase, i * 100, Axis.Z); + splitMotion = splitMotion.add(VecHelper.lookAt(sprayOffset, motion)); + // } + + + projectile.setPos(barrelPos.x, barrelPos.y, barrelPos.z); + projectile.setDeltaMovement(splitMotion); + projectile.setOwner(player); + world.addFreshEntity(projectile); + + if (!player.isCreative()) { + itemStack.shrink(1); + if (itemStack.isEmpty()) + player.getInventory().removeItem(itemStack); + } + } + } + + + if (!BacktankUtil.canAbsorbDamage(player, 500)) + stack.hurtAndBreak(1, player, p -> p.broadcastBreakEvent(hand)); + + Integer cooldown = + findAmmoInInventory(world, player, stack).flatMap(PotatoProjectileTypeManager::getTypeForStack) + .map(PotatoCannonProjectileType::getReloadTicks) + .orElse(10); + + ShootableGadgetItemMethods.applyCooldown(player, stack, hand, this::isCannon, cooldown); + ShootableGadgetItemMethods.sendPackets(player, + b -> new PotatoCannonPacket(barrelPos, lookVec.normalize(), itemStack, hand, soundPitch, b)); + + return InteractionResultHolder.success(stack); + + }) + .orElse(InteractionResultHolder.pass(stack)); + + } + + @Override + public boolean shouldCauseReequipAnimation(ItemStack oldStack, ItemStack newStack, boolean slotChanged) { + return slotChanged || newStack.getItem() != oldStack.getItem(); + } + + private Optional findAmmoInInventory(Level world, Player player, ItemStack held) { + ItemStack findAmmo = player.getProjectile(held); + return PotatoProjectileTypeManager.getTypeForStack(findAmmo) + .map($ -> findAmmo); + } + + @OnlyIn(Dist.CLIENT) + public static Optional getAmmoforPreview(ItemStack cannon) { + if (AnimationTickHolder.getTicks() % 3 != 0) + return Optional.of(CLIENT_CURRENT_AMMO) + .filter(stack -> !stack.isEmpty()); + + LocalPlayer player = Minecraft.getInstance().player; + CLIENT_CURRENT_AMMO = ItemStack.EMPTY; + if (player == null) + return Optional.empty(); + ItemStack findAmmo = player.getProjectile(cannon); + Optional found = PotatoProjectileTypeManager.getTypeForStack(findAmmo) + .map($ -> findAmmo); + found.ifPresent(stack -> CLIENT_CURRENT_AMMO = stack); + return found; + } + + @Override + @OnlyIn(Dist.CLIENT) + public void appendHoverText(ItemStack stack, Level world, List tooltip, TooltipFlag flag) { + int power = EnchantmentHelper.getItemEnchantmentLevel(Enchantments.POWER_ARROWS, stack); + int punch = EnchantmentHelper.getItemEnchantmentLevel(Enchantments.PUNCH_ARROWS, stack); + final float additionalDamageMult = 1 + power * .2f; + final float additionalKnockback = punch * .5f; + + getAmmoforPreview(stack).ifPresent(ammo -> { + String _attack = "potato_cannon.ammo.attack_damage"; + String _reload = "potato_cannon.ammo.reload_ticks"; + String _knockback = "potato_cannon.ammo.knockback"; + + tooltip.add(Components.immutableEmpty()); + tooltip.add(Components.translatable(ammo.getDescriptionId()).append(Components.literal(":")) + .withStyle(ChatFormatting.GRAY)); + PotatoCannonProjectileType type = PotatoProjectileTypeManager.getTypeForStack(ammo) + .get(); + MutableComponent spacing = Components.literal(" "); + ChatFormatting green = ChatFormatting.GREEN; + ChatFormatting darkGreen = ChatFormatting.DARK_GREEN; + + float damageF = type.getDamage() * additionalDamageMult; + MutableComponent damage = Components.literal( + damageF == Mth.floor(damageF) ? "" + Mth.floor(damageF) : "" + damageF); + MutableComponent reloadTicks = Components.literal("" + type.getReloadTicks()); + MutableComponent knockback = + Components.literal("" + (type.getKnockback() + additionalKnockback)); + + damage = damage.withStyle(additionalDamageMult > 1 ? green : darkGreen); + knockback = knockback.withStyle(additionalKnockback > 0 ? green : darkGreen); + reloadTicks = reloadTicks.withStyle(darkGreen); + + tooltip.add(spacing.plainCopy() + .append(Lang.translateDirect(_attack, damage) + .withStyle(darkGreen))); + tooltip.add(spacing.plainCopy() + .append(Lang.translateDirect(_reload, reloadTicks) + .withStyle(darkGreen))); + tooltip.add(spacing.plainCopy() + .append(Lang.translateDirect(_knockback, knockback) + .withStyle(darkGreen))); + }); + super.appendHoverText(stack, world, tooltip, flag); + } + + @Override + public Predicate getAllSupportedProjectiles() { + return stack -> PotatoProjectileTypeManager.getTypeForStack(stack) + .isPresent(); + } + + @Override + public boolean onEntitySwing(ItemStack stack, LivingEntity entity) { + return true; + } + + @Override + public UseAnim getUseAnimation(ItemStack stack) { + return UseAnim.NONE; + } + + @Override + @Nullable + public HumanoidModel.ArmPose getArmPose(ItemStack stack, AbstractClientPlayer player, InteractionHand hand) { + if (!player.swinging) { + return HumanoidModel.ArmPose.CROSSBOW_HOLD; + } + return null; + } + + @Override + public int getDefaultProjectileRange() { + return 15; + } +/* + @Override + @OnlyIn(Dist.CLIENT) + public void initializeClient(Consumer consumer) { + consumer.accept(SimpleCustomRenderer.create(this, new QuadPotatoCannonItemRenderer())); + } + + */ + +} diff --git a/src/main/java/com/drmangotea/tfmg/content/gadgets/quad_potato_cannon/QuadPotatoCannonItemRenderer.java b/src/main/java/com/drmangotea/tfmg/content/gadgets/quad_potato_cannon/QuadPotatoCannonItemRenderer.java new file mode 100644 index 00000000..ef9dff48 --- /dev/null +++ b/src/main/java/com/drmangotea/tfmg/content/gadgets/quad_potato_cannon/QuadPotatoCannonItemRenderer.java @@ -0,0 +1,68 @@ +package com.drmangotea.tfmg.content.gadgets.quad_potato_cannon; + + +import com.drmangotea.tfmg.CreateTFMGClient; +import com.jozufozu.flywheel.util.transform.TransformStack; +import com.mojang.blaze3d.vertex.PoseStack; +import com.mojang.math.Vector3f; +import com.simibubi.create.content.equipment.potatoCannon.PotatoCannonItem; +import com.simibubi.create.foundation.item.render.CustomRenderedItemModel; +import com.simibubi.create.foundation.item.render.CustomRenderedItemModelRenderer; +import com.simibubi.create.foundation.item.render.PartialItemModelRenderer; +import com.simibubi.create.foundation.utility.AnimationTickHolder; +import net.minecraft.client.Minecraft; +import net.minecraft.client.player.LocalPlayer; +import net.minecraft.client.renderer.MultiBufferSource; +import net.minecraft.client.renderer.block.model.ItemTransforms; +import net.minecraft.client.renderer.entity.ItemRenderer; +import net.minecraft.client.renderer.texture.OverlayTexture; +import net.minecraft.util.Mth; +import net.minecraft.world.entity.HumanoidArm; +import net.minecraft.world.item.ItemStack; + +public class QuadPotatoCannonItemRenderer extends CustomRenderedItemModelRenderer { + @Override + protected void render(ItemStack stack, CustomRenderedItemModel model, PartialItemModelRenderer renderer, + ItemTransforms.TransformType transformType, PoseStack ms, MultiBufferSource buffer, int light, int overlay) { + ItemRenderer itemRenderer = Minecraft.getInstance() + .getItemRenderer(); + renderer.render(model.getOriginalModel(), light); + LocalPlayer player = Minecraft.getInstance().player; + boolean mainHand = player.getMainHandItem() == stack; + boolean offHand = player.getOffhandItem() == stack; + boolean leftHanded = player.getMainArm() == HumanoidArm.LEFT; + + float offset = .5f / 16; + float worldTime = AnimationTickHolder.getRenderTime() / 10; + float angle = worldTime * -25; + float speed = CreateTFMGClient.QUAD_POTATO_CANNON_RENDER_HANDLER.getAnimation(mainHand ^ leftHanded, + AnimationTickHolder.getPartialTicks()); + + if (mainHand || offHand) + angle += 360 * Mth.clamp(speed * 5, 0, 1); + angle %= 360; + + ms.pushPose(); + ms.translate(0, offset, 0); + ms.mulPose(Vector3f.ZP.rotationDegrees(angle)); + ms.translate(0, -offset, 0); + // renderer.render(model.getPartial("cog"), light); + ms.popPose(); + + if (transformType == ItemTransforms.TransformType.GUI) { + PotatoCannonItem.getAmmoforPreview(stack) + .ifPresent(ammo -> { + PoseStack localMs = new PoseStack(); + localMs.translate(-1 / 4f, -1 / 4f, 1); + localMs.scale(.5f, .5f, .5f); + TransformStack.cast(localMs) + .rotateY(-34); + itemRenderer.renderStatic(ammo, ItemTransforms.TransformType.GUI, light, OverlayTexture.NO_OVERLAY, localMs, buffer, 0); + }); + } + + } + + + +} diff --git a/src/main/java/com/drmangotea/tfmg/content/gadgets/quad_potato_cannon/QuadPotatoCannonRenderHandler.java b/src/main/java/com/drmangotea/tfmg/content/gadgets/quad_potato_cannon/QuadPotatoCannonRenderHandler.java new file mode 100644 index 00000000..fb13e4c6 --- /dev/null +++ b/src/main/java/com/drmangotea/tfmg/content/gadgets/quad_potato_cannon/QuadPotatoCannonRenderHandler.java @@ -0,0 +1,61 @@ +package com.drmangotea.tfmg.content.gadgets.quad_potato_cannon; + + +import com.drmangotea.tfmg.registry.TFMGItems; +import com.jozufozu.flywheel.util.transform.TransformStack; +import com.mojang.blaze3d.vertex.PoseStack; +import com.simibubi.create.content.equipment.potatoCannon.PotatoProjectileEntity; +import com.simibubi.create.content.equipment.zapper.ShootableGadgetRenderHandler; +import net.minecraft.client.Minecraft; +import net.minecraft.world.InteractionHand; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.phys.Vec3; + +public class QuadPotatoCannonRenderHandler extends ShootableGadgetRenderHandler { + + private float nextPitch; + + @Override + protected void playSound(InteractionHand hand, Vec3 position) { + PotatoProjectileEntity.playLaunchSound(Minecraft.getInstance().level, position, nextPitch); + } + + @Override + protected boolean appliesTo(ItemStack stack) { + return ((QuadPotatoCannonItem) TFMGItems.QUAD_POTATO_CANNON.get()) + .isCannon(stack); + } +/* + public void beforeShoot(float nextPitch, Vec3 location, Vec3 motion, ItemStack stack) { + this.nextPitch = nextPitch; + if (stack.isEmpty()) + return; + ClientLevel world = Minecraft.getInstance().level; + for (int i = 0; i < 2; i++) { + Vec3 m = VecHelper.offsetRandomly(motion.scale(0.1f), Create.RANDOM, .025f); + world.addParticle(new ItemParticleOption(ParticleTypes.ITEM, stack), location.x, location.y, location.z, m.x, + m.y, m.z); + + Vec3 m2 = VecHelper.offsetRandomly(motion.scale(2f), Create.RANDOM, .5f); + world.addParticle(new AirParticleData(1, 1 / 4f), location.x, location.y, location.z, m2.x, m2.y, m2.z); + } + } + + */ + + @Override + protected void transformTool(PoseStack ms, float flip, float equipProgress, float recoil, float pt) { + ms.translate(flip * -.1f, 0, .14f); + ms.scale(.75f, .75f, .75f); + TransformStack.cast(ms) + .rotateX(recoil * 80); + } + + @Override + protected void transformHand(PoseStack ms, float flip, float equipProgress, float recoil, float pt) { + ms.translate(flip * -.09, -.275, -.25); + TransformStack.cast(ms) + .rotateZ(flip * -10); + } + +} \ No newline at end of file diff --git a/src/main/java/com/drmangotea/tfmg/content/machines/pipes/pumps/SteelPumpTileEntity.java b/src/main/java/com/drmangotea/tfmg/content/machines/pipes/pumps/SteelPumpTileEntity.java deleted file mode 100644 index 8013a4b8..00000000 --- a/src/main/java/com/drmangotea/tfmg/content/machines/pipes/pumps/SteelPumpTileEntity.java +++ /dev/null @@ -1,13 +0,0 @@ -package com.drmangotea.tfmg.content.machines.pipes.pumps; - - -import com.simibubi.create.content.fluids.pump.PumpBlockEntity; -import net.minecraft.core.BlockPos; -import net.minecraft.world.level.block.entity.BlockEntityType; -import net.minecraft.world.level.block.state.BlockState; - -public class SteelPumpTileEntity extends PumpBlockEntity { - public SteelPumpTileEntity(BlockEntityType typeIn, BlockPos pos, BlockState state) { - super(typeIn, pos, state); - } -} diff --git a/src/main/java/com/drmangotea/tfmg/content/machines/pipes/pumps/SteelPumpBlock.java b/src/main/java/com/drmangotea/tfmg/content/machines/pipes/pumps/TFMGPumpBlock.java similarity index 80% rename from src/main/java/com/drmangotea/tfmg/content/machines/pipes/pumps/SteelPumpBlock.java rename to src/main/java/com/drmangotea/tfmg/content/machines/pipes/pumps/TFMGPumpBlock.java index dcfdb0d8..b1db8c90 100644 --- a/src/main/java/com/drmangotea/tfmg/content/machines/pipes/pumps/SteelPumpBlock.java +++ b/src/main/java/com/drmangotea/tfmg/content/machines/pipes/pumps/TFMGPumpBlock.java @@ -1,7 +1,7 @@ -/* package com.drmangotea.tfmg.content.machines.pipes.pumps; -import com.drmangotea.createindustry.registry.CIBlockEntities; + +import com.drmangotea.tfmg.registry.TFMGBlockEntities; import com.simibubi.create.content.fluids.pump.PumpBlock; import com.simibubi.create.content.fluids.pump.PumpBlockEntity; import net.minecraft.core.BlockPos; @@ -10,8 +10,8 @@ import net.minecraft.util.RandomSource; import net.minecraft.world.level.block.entity.BlockEntityType; import net.minecraft.world.level.block.state.BlockState; -public class SteelPumpBlock extends PumpBlock { - public SteelPumpBlock(Properties p_i48415_1_) { +public class TFMGPumpBlock extends PumpBlock { + public TFMGPumpBlock(Properties p_i48415_1_) { super(p_i48415_1_); } @@ -30,8 +30,6 @@ public class SteelPumpBlock extends PumpBlock { @Override public BlockEntityType getBlockEntityType() { - return CIBlockEntities.STEEL_PUMP.get(); + return TFMGBlockEntities.TFMG_MECHANICAL_PUMP.get(); } -} - - */ \ No newline at end of file +} \ No newline at end of file diff --git a/src/main/java/com/drmangotea/tfmg/content/machines/pipes/smart_pipes/TFMGSmartFluidPipeBlock.java b/src/main/java/com/drmangotea/tfmg/content/machines/pipes/smart_pipes/TFMGSmartFluidPipeBlock.java new file mode 100644 index 00000000..903fb6a3 --- /dev/null +++ b/src/main/java/com/drmangotea/tfmg/content/machines/pipes/smart_pipes/TFMGSmartFluidPipeBlock.java @@ -0,0 +1,66 @@ +package com.drmangotea.tfmg.content.machines.pipes.smart_pipes; + + +import com.drmangotea.tfmg.registry.TFMGBlockEntities; +import com.drmangotea.tfmg.registry.TFMGBlocks; +import com.simibubi.create.AllBlockEntityTypes; +import com.simibubi.create.AllShapes; +import com.simibubi.create.content.equipment.wrench.IWrenchable; +import com.simibubi.create.content.fluids.FluidPropagator; +import com.simibubi.create.content.fluids.pipes.FluidPipeBlock; +import com.simibubi.create.content.fluids.pipes.IAxisPipe; +import com.simibubi.create.content.fluids.pipes.SmartFluidPipeBlock; +import com.simibubi.create.content.fluids.pipes.SmartFluidPipeBlockEntity; +import com.simibubi.create.foundation.advancement.AdvancementBehaviour; +import com.simibubi.create.foundation.block.IBE; +import com.simibubi.create.foundation.block.ProperWaterloggedBlock; +import com.simibubi.create.foundation.utility.Iterate; +import com.simibubi.create.foundation.utility.VoxelShaper; + +import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; +import net.minecraft.core.Direction.Axis; +import net.minecraft.network.protocol.game.DebugPackets; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.util.RandomSource; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.context.BlockPlaceContext; +import net.minecraft.world.level.BlockGetter; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.LevelAccessor; +import net.minecraft.world.level.LevelReader; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.FaceAttachedHorizontalDirectionalBlock; +import net.minecraft.world.level.block.entity.BlockEntityType; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.block.state.StateDefinition.Builder; +import net.minecraft.world.level.block.state.properties.AttachFace; +import net.minecraft.world.level.material.FluidState; +import net.minecraft.world.level.pathfinder.PathComputationType; +import net.minecraft.world.phys.Vec3; +import net.minecraft.world.phys.shapes.CollisionContext; +import net.minecraft.world.phys.shapes.VoxelShape; +import net.minecraft.world.ticks.TickPriority; + +public class TFMGSmartFluidPipeBlock extends SmartFluidPipeBlock + implements IBE, IAxisPipe, IWrenchable, ProperWaterloggedBlock { + + public TFMGSmartFluidPipeBlock(Properties p_i48339_1_) { + super(p_i48339_1_); + + + } + + + @Override + public Class getBlockEntityClass() { + return SmartFluidPipeBlockEntity.class; + } + + @Override + public BlockEntityType getBlockEntityType() { + return TFMGBlockEntities.TFMG_SMART_FLUID_PIPE.get(); + } + +} diff --git a/src/main/java/com/drmangotea/tfmg/content/machines/pipes/valves/TFMGFluidValveBlock.java b/src/main/java/com/drmangotea/tfmg/content/machines/pipes/valves/TFMGFluidValveBlock.java new file mode 100644 index 00000000..2278847a --- /dev/null +++ b/src/main/java/com/drmangotea/tfmg/content/machines/pipes/valves/TFMGFluidValveBlock.java @@ -0,0 +1,62 @@ +package com.drmangotea.tfmg.content.machines.pipes.valves; + + +import javax.annotation.Nonnull; + +import com.drmangotea.tfmg.registry.TFMGBlockEntities; +import com.simibubi.create.AllBlockEntityTypes; +import com.simibubi.create.AllShapes; +import com.simibubi.create.content.fluids.FluidPropagator; +import com.simibubi.create.content.fluids.pipes.FluidPipeBlock; +import com.simibubi.create.content.fluids.pipes.IAxisPipe; +import com.simibubi.create.content.fluids.pipes.valve.FluidValveBlock; +import com.simibubi.create.content.fluids.pipes.valve.FluidValveBlockEntity; +import com.simibubi.create.content.kinetics.base.DirectionalAxisKineticBlock; +import com.simibubi.create.foundation.block.IBE; +import com.simibubi.create.foundation.block.ProperWaterloggedBlock; +import com.simibubi.create.foundation.utility.Iterate; + +import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; +import net.minecraft.core.Direction.Axis; +import net.minecraft.network.protocol.game.DebugPackets; +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.Level; +import net.minecraft.world.level.LevelAccessor; +import net.minecraft.world.level.LevelReader; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.entity.BlockEntityType; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.block.state.StateDefinition.Builder; +import net.minecraft.world.level.block.state.properties.BooleanProperty; +import net.minecraft.world.level.material.FluidState; +import net.minecraft.world.level.pathfinder.PathComputationType; +import net.minecraft.world.phys.shapes.CollisionContext; +import net.minecraft.world.phys.shapes.VoxelShape; +import net.minecraft.world.ticks.TickPriority; + +public class TFMGFluidValveBlock extends FluidValveBlock + implements IAxisPipe, IBE, ProperWaterloggedBlock { + + public static final BooleanProperty ENABLED = BooleanProperty.create("enabled"); + + public TFMGFluidValveBlock(Properties properties) { + super(properties); + registerDefaultState(defaultBlockState().setValue(ENABLED, false) + .setValue(WATERLOGGED, false)); + } + + + @Override + public Class getBlockEntityClass() { + return FluidValveBlockEntity.class; + } + + @Override + public BlockEntityType getBlockEntityType() { + return TFMGBlockEntities.TFMG_FLUID_VALVE.get(); + } +} diff --git a/src/main/java/com/drmangotea/tfmg/mixins/FluidPropagatorMixin.java b/src/main/java/com/drmangotea/tfmg/mixins/FluidPropagatorMixin.java index 9236fcc7..9b1ba20f 100644 --- a/src/main/java/com/drmangotea/tfmg/mixins/FluidPropagatorMixin.java +++ b/src/main/java/com/drmangotea/tfmg/mixins/FluidPropagatorMixin.java @@ -86,7 +86,7 @@ public class FluidPropagatorMixin { BlockState targetState = world.getBlockState(target); if (tileEntity instanceof PumpBlockEntity) { if ( - //!TFMGBlocks.STEEL_PUMP.has(targetState)&& + !TFMGBlocks.STEEL_MECHANICAL_PUMP.has(targetState)&& !AllBlocks.MECHANICAL_PUMP.has(targetState) || targetState.getValue(PumpBlock.FACING) .getAxis() != direction.getAxis()) continue; diff --git a/src/main/java/com/drmangotea/tfmg/registry/TFMGBlockEntities.java b/src/main/java/com/drmangotea/tfmg/registry/TFMGBlockEntities.java index dcc03f6e..44cc1b70 100644 --- a/src/main/java/com/drmangotea/tfmg/registry/TFMGBlockEntities.java +++ b/src/main/java/com/drmangotea/tfmg/registry/TFMGBlockEntities.java @@ -2,13 +2,25 @@ package com.drmangotea.tfmg.registry; import com.drmangotea.tfmg.content.concrete.formwork.FormWorkBlockEntity; import com.drmangotea.tfmg.content.concrete.formwork.FormWorkRenderer; -import com.drmangotea.tfmg.content.deposits.FluidDepositTileEntity; +import com.drmangotea.tfmg.content.decoration.doors.TFMGSlidingDoorBlockEntity; +import com.drmangotea.tfmg.content.decoration.doors.TFMGSlidingDoorRenderer; +import com.drmangotea.tfmg.content.deposits.FluidDepositBlockEntity; +import com.drmangotea.tfmg.content.deposits.surface_scanner.SurfaceScannerRenderer; +import com.drmangotea.tfmg.content.deposits.surface_scanner.SurfaceScannerTileEntity; import com.drmangotea.tfmg.content.machines.pipes.normal.LockablePipeBlockEntity; import com.drmangotea.tfmg.content.machines.tanks.SteelFluidTankRenderer; import com.drmangotea.tfmg.content.machines.tanks.SteelTankBlockEntity; -import com.simibubi.create.Create; +import com.simibubi.create.content.fluids.pipes.SmartFluidPipeBlockEntity; import com.simibubi.create.content.fluids.pipes.StraightPipeBlockEntity; import com.simibubi.create.content.fluids.pipes.TransparentStraightPipeRenderer; +import com.simibubi.create.content.fluids.pipes.valve.FluidValveBlockEntity; +import com.simibubi.create.content.fluids.pipes.valve.FluidValveInstance; +import com.simibubi.create.content.fluids.pipes.valve.FluidValveRenderer; +import com.simibubi.create.content.fluids.pump.PumpBlockEntity; +import com.simibubi.create.content.fluids.pump.PumpCogInstance; +import com.simibubi.create.content.fluids.pump.PumpRenderer; +import com.simibubi.create.content.kinetics.base.HorizontalHalfShaftInstance; +import com.simibubi.create.foundation.blockEntity.renderer.SmartBlockEntityRenderer; import com.tterrag.registrate.util.entry.BlockEntityEntry; import static com.drmangotea.tfmg.CreateTFMG.REGISTRATE; @@ -23,8 +35,8 @@ public class TFMGBlockEntities { .renderer(() -> FormWorkRenderer::new) .validBlocks(TFMGBlocks.FORMWORK_BLOCK) .register(); - public static final BlockEntityEntry OIL_DEPOSIT = REGISTRATE - .blockEntity("oil_deposit", FluidDepositTileEntity::new) + public static final BlockEntityEntry OIL_DEPOSIT = REGISTRATE + .blockEntity("oil_deposit", FluidDepositBlockEntity::new) // .validBlocks(TFMGBlocks.OIL_DEPOSIT) .register(); @@ -53,8 +65,40 @@ public class TFMGBlockEntities { .register(); + public static final BlockEntityEntry TFMG_SLIDING_DOOR = + REGISTRATE.blockEntity("tfmg_sliding_door", TFMGSlidingDoorBlockEntity::new) + .renderer(() -> TFMGSlidingDoorRenderer::new) + .validBlocks(TFMGBlocks.HEAVY_CASING_DOOR,TFMGBlocks.STEEL_CASING_DOOR) + .register(); + public static final BlockEntityEntry TFMG_MECHANICAL_PUMP = REGISTRATE + .blockEntity("mechanical_pump", PumpBlockEntity::new) + .instance(() -> PumpCogInstance::new) + .validBlocks(TFMGBlocks.STEEL_MECHANICAL_PUMP) + .renderer(() -> PumpRenderer::new) + .register(); + + public static final BlockEntityEntry TFMG_SMART_FLUID_PIPE = REGISTRATE + .blockEntity("smart_fluid_pipe", SmartFluidPipeBlockEntity::new) + .validBlocks(TFMGBlocks.STEEL_SMART_FLUID_PIPE) + .renderer(() -> SmartBlockEntityRenderer::new) + .register(); + + public static final BlockEntityEntry TFMG_FLUID_VALVE = REGISTRATE + .blockEntity("fluid_valve", FluidValveBlockEntity::new) + .instance(() -> FluidValveInstance::new) + .validBlocks(TFMGBlocks.STEEL_FLUID_VALVE) + .renderer(() -> FluidValveRenderer::new) + .register(); + + public static final BlockEntityEntry SURFACE_SCANNER = REGISTRATE + .blockEntity("deposit_scanner", SurfaceScannerTileEntity::new) + .instance(() -> HorizontalHalfShaftInstance::new) + .validBlocks(TFMGBlocks.SURFACE_SCANNER) + .renderer(() -> SurfaceScannerRenderer::new) + .register(); + public static void register() {} } diff --git a/src/main/java/com/drmangotea/tfmg/registry/TFMGBlocks.java b/src/main/java/com/drmangotea/tfmg/registry/TFMGBlocks.java index 02007cb5..5a08036a 100644 --- a/src/main/java/com/drmangotea/tfmg/registry/TFMGBlocks.java +++ b/src/main/java/com/drmangotea/tfmg/registry/TFMGBlocks.java @@ -1,17 +1,22 @@ package com.drmangotea.tfmg.registry; -import com.drmangotea.tfmg.base.TFMGBlockStateGen; +import com.drmangotea.tfmg.base.TFMGBuilderTransformers; import com.drmangotea.tfmg.base.TFMGSpriteShifts; import com.drmangotea.tfmg.content.concrete.formwork.FormWorkBlock; import com.drmangotea.tfmg.content.concrete.formwork.FormWorkGenerator; +import com.drmangotea.tfmg.content.decoration.doors.TFMGSlidingDoorBlock; import com.drmangotea.tfmg.content.deposits.FluidDepositBlock; import com.drmangotea.tfmg.content.gadgets.explosives.napalm.NapalmBombBlock; import com.drmangotea.tfmg.content.items.CoalCokeBlockItem; import com.drmangotea.tfmg.content.items.FossilstoneItem; +import com.drmangotea.tfmg.content.deposits.surface_scanner.SurfaceScannerBlock; import com.drmangotea.tfmg.content.machines.pipes.normal.steel.EncasedSteelPipeBlock; import com.drmangotea.tfmg.content.machines.pipes.normal.steel.GlassSteelPipeBlock; import com.drmangotea.tfmg.content.machines.pipes.normal.steel.SteelPipeAttachmentModel; import com.drmangotea.tfmg.content.machines.pipes.normal.steel.SteelPipeBlock; +import com.drmangotea.tfmg.content.machines.pipes.pumps.TFMGPumpBlock; +import com.drmangotea.tfmg.content.machines.pipes.smart_pipes.TFMGSmartFluidPipeBlock; +import com.drmangotea.tfmg.content.machines.pipes.valves.TFMGFluidValveBlock; import com.drmangotea.tfmg.content.machines.tanks.SteelFluidTankModel; import com.drmangotea.tfmg.content.machines.tanks.SteelTankBlock; import com.drmangotea.tfmg.content.machines.tanks.SteelTankGenerator; @@ -22,6 +27,9 @@ import com.simibubi.create.content.decoration.encasing.CasingBlock; import com.simibubi.create.content.decoration.encasing.EncasedCTBehaviour; import com.simibubi.create.content.decoration.encasing.EncasingRegistry; +import com.simibubi.create.content.fluids.pipes.SmartFluidPipeGenerator; +import com.simibubi.create.content.fluids.pipes.valve.FluidValveBlock; +import com.simibubi.create.content.kinetics.BlockStressDefaults; import com.simibubi.create.foundation.data.*; import com.tterrag.registrate.util.entry.BlockEntry; import net.minecraft.client.renderer.RenderType; @@ -115,8 +123,19 @@ public class TFMGBlocks { .build() .register(); + public static final BlockEntry SURFACE_SCANNER = + REGISTRATE.block("surface_scanner", SurfaceScannerBlock::new) + // .properties(p -> p.color(MaterialColor.COLOR_GRAY)) + // .properties(p -> p + // .strength(4.5F)) + // .properties(BlockBehaviour.Properties::noOcclusion) + .transform(TFMGBuilderTransformers.surfaceScanner()) + // .transform(axeOrPickaxe()) + // .transform(BlockStressDefaults.setImpact(10.0)) + .register(); - //pipes + + //fluid stuff public static final BlockEntry STEEL_PIPE = REGISTRATE.block("steel_pipe", SteelPipeBlock::new) .initialProperties(Material.HEAVY_METAL) .transform(pickaxeOnly()) @@ -164,9 +183,42 @@ public class TFMGBlocks { .onRegister(CreateRegistrate.blockModel(() -> SteelPipeAttachmentModel::new)) .loot((p, b) -> p.dropOther(b, STEEL_PIPE.get())) .register(); - // + public static final BlockEntry STEEL_MECHANICAL_PUMP = REGISTRATE.block("steel_mechanical_pump", TFMGPumpBlock::new) + .initialProperties(SharedProperties::copperMetal) + .properties(p -> p.color(MaterialColor.STONE)) + .transform(pickaxeOnly()) + .blockstate(BlockStateGen.directionalBlockProviderIgnoresWaterlogged(true)) + .onRegister(CreateRegistrate.blockModel(() -> SteelPipeAttachmentModel::new)) + .transform(BlockStressDefaults.setImpact(4.0)) + .item() + .transform(customItemModel()) + .register(); + + public static final BlockEntry STEEL_SMART_FLUID_PIPE = + REGISTRATE.block("steel_smart_fluid_pipe", TFMGSmartFluidPipeBlock::new) + .initialProperties(SharedProperties::copperMetal) + .properties(p -> p.color(MaterialColor.STONE)) + .transform(pickaxeOnly()) + .blockstate(new SmartFluidPipeGenerator()::generate) + .onRegister(CreateRegistrate.blockModel(() -> SteelPipeAttachmentModel::new)) + .item() + .transform(customItemModel()) + .register(); + + public static final BlockEntry STEEL_FLUID_VALVE = REGISTRATE.block("steel_fluid_valve", TFMGFluidValveBlock::new) + .initialProperties(SharedProperties::copperMetal) + .transform(pickaxeOnly()) + .blockstate((c, p) -> BlockStateGen.directionalAxisBlock(c, p, + (state, vertical) -> AssetLookup.partialBaseModel(c, p, vertical ? "vertical" : "horizontal", + state.getValue(FluidValveBlock.ENABLED) ? "open" : "closed"))) + .onRegister(CreateRegistrate.blockModel(() -> SteelPipeAttachmentModel::new)) + .item() + .transform(customItemModel()) + .register(); + + @SuppressWarnings("'addLayer(java.util.function.Supplier>)' is deprecated and marked for removal ") public static final BlockEntry STEEL_FLUID_TANK = REGISTRATE.block("steel_fluid_tank", SteelTankBlock::regular) .initialProperties(SharedProperties::copperMetal) .properties(BlockBehaviour.Properties::noOcclusion) @@ -184,6 +236,10 @@ public class TFMGBlocks { + + + + //-----------------------BUILDING BLOCKS---------------------------// public static final BlockEntry STEEL_BLOCK = REGISTRATE.block("steel_block", Block::new) .initialProperties(() -> Blocks.IRON_BLOCK) @@ -267,6 +323,36 @@ public class TFMGBlocks { .lang("Block of Coal Coke") .register(); + //sheetmetals + public static final BlockEntry STEEL_SHEETMETAL = REGISTRATE.block("steel_sheetmetal", Block::new) + .initialProperties(() -> Blocks.IRON_BLOCK) + .properties(p -> p.color(MaterialColor.COLOR_LIGHT_GRAY)) + .properties(p -> p.requiresCorrectToolForDrops()) + .onRegister(connectedTextures(() -> new EncasedCTBehaviour(TFMGSpriteShifts.STEEL_SHEETMETAL))) + .onRegister(casingConnectivity((block, cc) -> cc.makeCasing(block, TFMGSpriteShifts.STEEL_SHEETMETAL))) + .transform(pickaxeOnly()) + .blockstate(simpleCubeAll("steel_sheetmetal")) + .tag(BlockTags.NEEDS_IRON_TOOL) + .item() + .build() + .lang("Steel Sheetmetal") + .register(); + + // + public static final BlockEntry HEAVY_CASING_DOOR = + REGISTRATE.block("heavy_casing_door", p -> new TFMGSlidingDoorBlock(p, false)) + .transform(TFMGBuilderTransformers.slidingDoor("heavy_casing")) + .properties(p -> p.color(MaterialColor.TERRACOTTA_CYAN) + .sound(SoundType.COPPER) + .noOcclusion()) + .register(); + public static final BlockEntry STEEL_CASING_DOOR = + REGISTRATE.block("steel_door", p -> new TFMGSlidingDoorBlock(p, true)) + .transform(TFMGBuilderTransformers.slidingDoor("steel")) + .properties(p -> p.color(MaterialColor.TERRACOTTA_CYAN) + .sound(SoundType.COPPER) + .noOcclusion()) + .register(); diff --git a/src/main/java/com/drmangotea/tfmg/registry/TFMGItems.java b/src/main/java/com/drmangotea/tfmg/registry/TFMGItems.java index 54f4b688..75d5dcd2 100644 --- a/src/main/java/com/drmangotea/tfmg/registry/TFMGItems.java +++ b/src/main/java/com/drmangotea/tfmg/registry/TFMGItems.java @@ -2,8 +2,12 @@ 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.drmangotea.tfmg.content.gadgets.quad_potato_cannon.QuadPotatoCannonItem; import com.drmangotea.tfmg.content.items.CoalCokeItem; import com.drmangotea.tfmg.content.items.ScrewdriverItem; +import com.simibubi.create.Create; +import com.simibubi.create.content.equipment.potatoCannon.PotatoCannonItem; +import com.simibubi.create.foundation.data.AssetLookup; import com.tterrag.registrate.util.entry.ItemEntry; import net.minecraft.tags.TagKey; import net.minecraft.world.item.Item; @@ -19,12 +23,7 @@ public class TFMGItems { 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); + public static final ItemEntry STEEL_INGOT = taggedIngredient("steel_ingot", forgeItemTag("ingots/steel"), CREATE_INGOTS.tag), @@ -33,6 +32,12 @@ public class TFMGItems { LEAD_INGOT = taggedIngredient("lead_ingot", forgeItemTag("ingots/lead"), CREATE_INGOTS.tag); + + public static final ItemEntry QUAD_POTATO_CANNON = + REGISTRATE.item("quad_potato_cannon", QuadPotatoCannonItem::new) + .model(AssetLookup.itemModelWithPartials()) + .register(); + public static final ItemEntry COAL_COKE = REGISTRATE.item("coal_coke", CoalCokeItem::new) .register(); @@ -40,7 +45,12 @@ public class TFMGItems { .properties(p -> p.stacksTo(1) .durability(256)) .register(); - + 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); ////////////////////////// @SafeVarargs diff --git a/src/main/java/com/drmangotea/tfmg/registry/TFMGPartialModels.java b/src/main/java/com/drmangotea/tfmg/registry/TFMGPartialModels.java index 04ecdfaa..db6aecd5 100644 --- a/src/main/java/com/drmangotea/tfmg/registry/TFMGPartialModels.java +++ b/src/main/java/com/drmangotea/tfmg/registry/TFMGPartialModels.java @@ -19,6 +19,8 @@ public class TFMGPartialModels { public static final PartialModel STEEL_FLUID_PIPE_CASING = block("steel_pipe/casing"), + SURFACE_SCANNER_DIAL = block("surface_scanner/dial"), + SURFACE_SCANNER_FLAG = block("surface_scanner/flag"), FORMWORK_BOTTOM = block("formwork_block/block_bottom"), FORMWORK_SIDE = block("formwork_block/block_side"); diff --git a/src/main/java/com/drmangotea/tfmg/registry/TFMGShapes.java b/src/main/java/com/drmangotea/tfmg/registry/TFMGShapes.java new file mode 100644 index 00000000..a9d6832c --- /dev/null +++ b/src/main/java/com/drmangotea/tfmg/registry/TFMGShapes.java @@ -0,0 +1,111 @@ +package com.drmangotea.tfmg.registry; + + +import com.simibubi.create.foundation.utility.VoxelShaper; +import net.minecraft.core.Direction; +import net.minecraft.core.Direction.Axis; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.phys.shapes.BooleanOp; +import net.minecraft.world.phys.shapes.Shapes; +import net.minecraft.world.phys.shapes.VoxelShape; + +import java.util.function.BiFunction; + +import static net.minecraft.core.Direction.UP; + +public class TFMGShapes { + + public static final VoxelShaper + ENGINE_BACK = shape(3, 0, 3, 13, 16, 16) + .forDirectional(), + ENGINE_BACK_VERTICAL = shape(3, 0, 0, 13, 16, 13) + .forDirectional(), + ENGINE_VERTICAL = shape(3, 0, 0, 13, 14, 13) + .forDirectional(), + ENGINE = shape(3, 0, 3, 13, 14, 16) + .forDirectional() + + + + ; + public static final VoxelShape + + + + + PUMPJACK_CRANK = shape(0, 0, 0, 16, 8, 16).build(), + INDUSTRIAL_PIPE = shape(4, 0, 4, 12, 16, 12).build(), + FLARESTACK = shape(3, 0, 3, 13, 14, 14).build(), + PUMPJACK_BASE = shape(3, 0, 3, 13, 16, 13).build(), + SURFACE_SCANNER = shape(2, 0, 2, 14, 14, 14).build(); +; + + private static TFMGShapes.Builder shape(VoxelShape shape) { + return new TFMGShapes.Builder(shape); + } + + private static TFMGShapes.Builder shape(double x1, double y1, double z1, double x2, double y2, double z2) { + return shape(cuboid(x1, y1, z1, x2, y2, z2)); + } + + private static VoxelShape cuboid(double x1, double y1, double z1, double x2, double y2, double z2) { + return Block.box(x1, y1, z1, x2, y2, z2); + } + + public static class Builder { + + private VoxelShape shape; + + public Builder(VoxelShape shape) { + this.shape = shape; + } + + public TFMGShapes.Builder add(VoxelShape shape) { + this.shape = Shapes.or(this.shape, shape); + return this; + } + + public TFMGShapes.Builder add(double x1, double y1, double z1, double x2, double y2, double z2) { + return add(cuboid(x1, y1, z1, x2, y2, z2)); + } + + public TFMGShapes.Builder erase(double x1, double y1, double z1, double x2, double y2, double z2) { + this.shape = Shapes.join(shape, cuboid(x1, y1, z1, x2, y2, z2), BooleanOp.ONLY_FIRST); + return this; + } + + public VoxelShape build() { + return shape; + } + + public VoxelShaper build(BiFunction factory, Direction direction) { + return factory.apply(shape, direction); + } + + public VoxelShaper build(BiFunction factory, Axis axis) { + return factory.apply(shape, axis); + } + + public VoxelShaper forDirectional(Direction direction) { + return build(VoxelShaper::forDirectional, direction); + } + + public VoxelShaper forAxis() { + return build(VoxelShaper::forAxis, Axis.Y); + } + + public VoxelShaper forHorizontalAxis() { + return build(VoxelShaper::forHorizontalAxis, Axis.Z); + } + + public VoxelShaper forHorizontal(Direction direction) { + return build(VoxelShaper::forHorizontal, direction); + } + + public VoxelShaper forDirectional() { + return forDirectional(UP); + } + + } + +} diff --git a/src/main/resources/assets/tfmg/lang/default/interface.json b/src/main/resources/assets/tfmg/lang/default/interface.json index b36da7d8..eae3c3d9 100644 --- a/src/main/resources/assets/tfmg/lang/default/interface.json +++ b/src/main/resources/assets/tfmg/lang/default/interface.json @@ -1,4 +1,13 @@ { "itemGroup.tfmg.base": "Create: The Factory Must Grow", - "itemGroup.tfmg.building": "Create: TFMG's Building Blocks" + "itemGroup.tfmg.building": "Create: TFMG's Building Blocks", + "create.goggles.misc.number": "%1$s", + "create.goggles.misc.dot_one": ".", + "create.goggles.misc.dot_two": "..", + "create.goggles.misc.dot_three": "...", + "create.goggles.surface_scanner.no_rotation": "No Rotation Provided", + "create.goggles.surface_scanner.no_deposit": "No Deposit Found", + "create.goggles.surface_scanner.deposit_found": "Found Deposit", + "create.goggles.surface_scanner.distance": "Distance: %1$s Blocks", + "create.goggles.surface_scanner.scanning_surface": "Scanning Surface" } \ No newline at end of file diff --git a/src/main/resources/assets/tfmg/models/block/heavy_casing_door/block_bottom.json b/src/main/resources/assets/tfmg/models/block/heavy_casing_door/block_bottom.json new file mode 100644 index 00000000..90c814ff --- /dev/null +++ b/src/main/resources/assets/tfmg/models/block/heavy_casing_door/block_bottom.json @@ -0,0 +1,22 @@ +{ + "credit": "Made with Blockbench", + "parent": "block/block", + "textures": { + "0": "tfmg:block/heavy_casing_side", + "2": "tfmg:block/heavy_casing_door_bottom", + "particle": "tfmg:block/heavy_machinery_casing" + }, + "elements": [ + { + "from": [0, 0, 0], + "to": [3, 16, 16], + "faces": { + "north": {"uv": [0, 12, 16, 15], "rotation": 270, "texture": "#0"}, + "east": {"uv": [0, 0, 16, 16], "texture": "#2"}, + "south": {"uv": [0, 12, 16, 15], "rotation": 270, "texture": "#0"}, + "west": {"uv": [0, 0, 16, 16], "texture": "#2"}, + "down": {"uv": [0, 8, 16, 11], "rotation": 90, "texture": "#0"} + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/tfmg/models/block/heavy_casing_door/block_top.json b/src/main/resources/assets/tfmg/models/block/heavy_casing_door/block_top.json new file mode 100644 index 00000000..ae10a877 --- /dev/null +++ b/src/main/resources/assets/tfmg/models/block/heavy_casing_door/block_top.json @@ -0,0 +1,22 @@ +{ + "credit": "Made with Blockbench", + "parent": "block/block", + "textures": { + "0": "tfmg:block/heavy_casing_side", + "2": "tfmg:block/heavy_casing_top", + "particle": "tfmg:block/heavy_machinery_casing" + }, + "elements": [ + { + "from": [0, 0, 0], + "to": [3, 16, 16], + "faces": { + "north": {"uv": [0, 4, 16, 7], "rotation": 90, "texture": "#0"}, + "east": {"uv": [0, 0, 16, 16], "texture": "#2"}, + "south": {"uv": [0, 4, 16, 7], "rotation": 90, "texture": "#0"}, + "west": {"uv": [0, 0, 16, 16], "texture": "#2"}, + "up": {"uv": [0, 0, 16, 3], "rotation": 90, "texture": "#0"} + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/tfmg/models/block/heavy_casing_door/fold_left.json b/src/main/resources/assets/tfmg/models/block/heavy_casing_door/fold_left.json new file mode 100644 index 00000000..c6b52879 --- /dev/null +++ b/src/main/resources/assets/tfmg/models/block/heavy_casing_door/fold_left.json @@ -0,0 +1,34 @@ +{ + "credit": "Made with Blockbench", + "parent": "block/block", + "textures": { + "0": "tfmg:block/heavy_casing_side", + "2": "tfmg:block/heavy_casing_top", + "3": "tfmg:block/heavy_casing_door_bottom", + "particle": "tfmg:block/heavy_machinery_casing" + }, + "elements": [ + { + "from": [0, 16, 0], + "to": [3, 32, 8], + "faces": { + "north": {"uv": [0, 4, 16, 7], "rotation": 90, "texture": "#0"}, + "east": {"uv": [8, 0, 16, 16], "texture": "#2"}, + "south": {"uv": [0, 4, 16, 7], "rotation": 90, "texture": "#0"}, + "west": {"uv": [0, 0, 8, 16], "texture": "#2"}, + "up": {"uv": [0, 0, 8, 3], "rotation": 90, "texture": "#0"} + } + }, + { + "from": [0, 0, 0], + "to": [3, 16, 8], + "faces": { + "north": {"uv": [16, 4, 0, 7], "rotation": 90, "texture": "#0"}, + "east": {"uv": [8, 0, 16, 16], "texture": "#3"}, + "south": {"uv": [16, 4, 0, 7], "rotation": 90, "texture": "#0"}, + "west": {"uv": [0, 0, 8, 16], "texture": "#3"}, + "down": {"uv": [0, 8, 8, 11], "rotation": 270, "texture": "#0"} + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/tfmg/models/block/heavy_casing_door/fold_right.json b/src/main/resources/assets/tfmg/models/block/heavy_casing_door/fold_right.json new file mode 100644 index 00000000..8bfc364b --- /dev/null +++ b/src/main/resources/assets/tfmg/models/block/heavy_casing_door/fold_right.json @@ -0,0 +1,34 @@ +{ + "credit": "Made with Blockbench", + "parent": "block/block", + "textures": { + "0": "tfmg:block/heavy_casing_side", + "2": "tfmg:block/heavy_casing_top", + "3": "tfmg:block/heavy_casing_door_bottom", + "particle": "tfmg:block/heavy_machinery_casing" + }, + "elements": [ + { + "from": [0, 16, 0], + "to": [3, 32, 8], + "faces": { + "north": {"uv": [0, 4, 16, 7], "rotation": 90, "texture": "#0"}, + "east": {"uv": [0, 0, 8, 16], "texture": "#2"}, + "south": {"uv": [0, 4, 16, 7], "rotation": 90, "texture": "#0"}, + "west": {"uv": [8, 0, 16, 16], "texture": "#2"}, + "up": {"uv": [8, 0, 16, 3], "rotation": 90, "texture": "#0"} + } + }, + { + "from": [0, 0, 0], + "to": [3, 16, 8], + "faces": { + "north": {"uv": [16, 4, 0, 7], "rotation": 90, "texture": "#0"}, + "east": {"uv": [0, 0, 8, 16], "texture": "#3"}, + "south": {"uv": [16, 4, 0, 7], "rotation": 90, "texture": "#0"}, + "west": {"uv": [8, 0, 16, 16], "texture": "#3"}, + "down": {"uv": [8, 8, 16, 11], "rotation": 270, "texture": "#0"} + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/tfmg/models/block/steel_door/block_bottom.json b/src/main/resources/assets/tfmg/models/block/steel_door/block_bottom.json new file mode 100644 index 00000000..fdece838 --- /dev/null +++ b/src/main/resources/assets/tfmg/models/block/steel_door/block_bottom.json @@ -0,0 +1,22 @@ +{ + "credit": "Made with Blockbench", + "parent": "block/block", + "textures": { + "0": "tfmg:block/steel_door_side", + "2": "tfmg:block/steel_door_bottom", + "particle": "tfmg:block/steel_casing" + }, + "elements": [ + { + "from": [0, 0, 0], + "to": [3, 16, 16], + "faces": { + "north": {"uv": [0, 12, 16, 15], "rotation": 270, "texture": "#0"}, + "east": {"uv": [0, 0, 16, 16], "texture": "#2"}, + "south": {"uv": [0, 12, 16, 15], "rotation": 270, "texture": "#0"}, + "west": {"uv": [0, 0, 16, 16], "texture": "#2"}, + "down": {"uv": [0, 8, 16, 11], "rotation": 90, "texture": "#0"} + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/tfmg/models/block/steel_door/block_top.json b/src/main/resources/assets/tfmg/models/block/steel_door/block_top.json new file mode 100644 index 00000000..e570ecb4 --- /dev/null +++ b/src/main/resources/assets/tfmg/models/block/steel_door/block_top.json @@ -0,0 +1,22 @@ +{ + "credit": "Made with Blockbench", + "parent": "block/block", + "textures": { + "0": "tfmg:block/steel_door_side", + "2": "tfmg:block/steel_door_top", + "particle": "tfmg:block/steel_casing" + }, + "elements": [ + { + "from": [0, 0, 0], + "to": [3, 16, 16], + "faces": { + "north": {"uv": [0, 4, 16, 7], "rotation": 90, "texture": "#0"}, + "east": {"uv": [0, 0, 16, 16], "texture": "#2"}, + "south": {"uv": [0, 4, 16, 7], "rotation": 90, "texture": "#0"}, + "west": {"uv": [0, 0, 16, 16], "texture": "#2"}, + "up": {"uv": [0, 0, 16, 3], "rotation": 90, "texture": "#0"} + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/tfmg/models/block/steel_door/fold_left.json b/src/main/resources/assets/tfmg/models/block/steel_door/fold_left.json new file mode 100644 index 00000000..ddff00c8 --- /dev/null +++ b/src/main/resources/assets/tfmg/models/block/steel_door/fold_left.json @@ -0,0 +1,34 @@ +{ + "credit": "Made with Blockbench", + "parent": "block/block", + "textures": { + "0": "tfmg:block/steel_door_side", + "2": "tfmg:block/steel_door_top", + "3": "tfmg:block/steel_door_bottom", + "particle": "tfmg:block/steel_casing" + }, + "elements": [ + { + "from": [0, 16, 0], + "to": [3, 32, 8], + "faces": { + "north": {"uv": [0, 4, 16, 7], "rotation": 90, "texture": "#0"}, + "east": {"uv": [8, 0, 16, 16], "texture": "#2"}, + "south": {"uv": [0, 4, 16, 7], "rotation": 90, "texture": "#0"}, + "west": {"uv": [0, 0, 8, 16], "texture": "#2"}, + "up": {"uv": [0, 0, 8, 3], "rotation": 90, "texture": "#0"} + } + }, + { + "from": [0, 0, 0], + "to": [3, 16, 8], + "faces": { + "north": {"uv": [16, 4, 0, 7], "rotation": 90, "texture": "#0"}, + "east": {"uv": [8, 0, 16, 16], "texture": "#3"}, + "south": {"uv": [16, 4, 0, 7], "rotation": 90, "texture": "#0"}, + "west": {"uv": [0, 0, 8, 16], "texture": "#3"}, + "down": {"uv": [0, 8, 8, 11], "rotation": 270, "texture": "#0"} + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/tfmg/models/block/steel_door/fold_right.json b/src/main/resources/assets/tfmg/models/block/steel_door/fold_right.json new file mode 100644 index 00000000..7b7863a7 --- /dev/null +++ b/src/main/resources/assets/tfmg/models/block/steel_door/fold_right.json @@ -0,0 +1,34 @@ +{ + "credit": "Made with Blockbench", + "parent": "block/block", + "textures": { + "0": "tfmg:block/steel_door_side", + "2": "tfmg:block/steel_door_top", + "3": "tfmg:block/steel_door_bottom", + "particle": "tfmg:block/steel_casing" + }, + "elements": [ + { + "from": [0, 16, 0], + "to": [3, 32, 8], + "faces": { + "north": {"uv": [0, 4, 16, 7], "rotation": 90, "texture": "#0"}, + "east": {"uv": [0, 0, 8, 16], "texture": "#2"}, + "south": {"uv": [0, 4, 16, 7], "rotation": 90, "texture": "#0"}, + "west": {"uv": [8, 0, 16, 16], "texture": "#2"}, + "up": {"uv": [8, 0, 16, 3], "rotation": 90, "texture": "#0"} + } + }, + { + "from": [0, 0, 0], + "to": [3, 16, 8], + "faces": { + "north": {"uv": [16, 4, 0, 7], "rotation": 90, "texture": "#0"}, + "east": {"uv": [0, 0, 8, 16], "texture": "#3"}, + "south": {"uv": [16, 4, 0, 7], "rotation": 90, "texture": "#0"}, + "west": {"uv": [8, 0, 16, 16], "texture": "#3"}, + "down": {"uv": [8, 8, 16, 11], "rotation": 270, "texture": "#0"} + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/tfmg/models/block/steel_fluid_valve/block_horizontal_closed.json b/src/main/resources/assets/tfmg/models/block/steel_fluid_valve/block_horizontal_closed.json new file mode 100644 index 00000000..aa081f55 --- /dev/null +++ b/src/main/resources/assets/tfmg/models/block/steel_fluid_valve/block_horizontal_closed.json @@ -0,0 +1,50 @@ +{ + "credit": "Made with Blockbench", + "textures": { + "2": "create:block/fluid_valve", + "4": "create:block/pipes", + "particle": "create:block/copper_plating" + }, + "elements": [ + { + "name": "ValveCenter", + "from": [2, 2, 2], + "to": [14, 14, 14], + "rotation": {"angle": 0, "axis": "y", "origin": [24, 11, 11]}, + "faces": { + "north": {"uv": [6, 6, 12, 12], "texture": "#2"}, + "east": {"uv": [6, 0, 12, 6], "texture": "#2"}, + "south": {"uv": [0, 0, 6, 6], "texture": "#2"}, + "west": {"uv": [6, 0, 12, 6], "texture": "#2"}, + "up": {"uv": [0, 0, 6, 6], "rotation": 90, "texture": "#2"}, + "down": {"uv": [0, 0, 6, 6], "rotation": 90, "texture": "#2"} + } + }, + { + "from": [3, 14, 3], + "to": [13, 16, 13], + "rotation": {"angle": 0, "axis": "z", "origin": [8, 8, 8]}, + "faces": { + "north": {"uv": [4, 8.5, 9, 9.5], "texture": "#4"}, + "east": {"uv": [4, 8.5, 9, 9.5], "texture": "#4"}, + "south": {"uv": [4, 8.5, 9, 9.5], "texture": "#4"}, + "west": {"uv": [4, 8.5, 9, 9.5], "texture": "#4"}, + "up": {"uv": [11, 11, 16, 16], "rotation": 90, "texture": "#4"}, + "down": {"uv": [0, 0, 0, 0], "rotation": 90, "texture": "#4"} + } + }, + { + "from": [3, 0, 3], + "to": [13, 2, 13], + "rotation": {"angle": 0, "axis": "z", "origin": [8, 8, 8]}, + "faces": { + "north": {"uv": [4, 9.5, 9, 8.5], "texture": "#4"}, + "east": {"uv": [4, 9.5, 9, 8.5], "texture": "#4"}, + "south": {"uv": [4, 9.5, 9, 8.5], "texture": "#4"}, + "west": {"uv": [4, 9.5, 9, 8.5], "texture": "#4"}, + "up": {"uv": [0, 0, 0, 0], "rotation": 90, "texture": "#4"}, + "down": {"uv": [16, 11, 11, 16], "rotation": 90, "texture": "#4"} + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/tfmg/models/block/steel_fluid_valve/block_horizontal_open.json b/src/main/resources/assets/tfmg/models/block/steel_fluid_valve/block_horizontal_open.json new file mode 100644 index 00000000..4f830bff --- /dev/null +++ b/src/main/resources/assets/tfmg/models/block/steel_fluid_valve/block_horizontal_open.json @@ -0,0 +1,50 @@ +{ + "credit": "Made with Blockbench", + "textures": { + "2": "create:block/fluid_valve", + "4": "create:block/pipes", + "particle": "create:block/copper_plating" + }, + "elements": [ + { + "name": "ValveCenter", + "from": [2, 2, 2], + "to": [14, 14, 14], + "rotation": {"angle": 0, "axis": "y", "origin": [24, 11, 11]}, + "faces": { + "north": {"uv": [6, 6, 12, 12], "texture": "#2"}, + "east": {"uv": [6, 0, 12, 6], "texture": "#2"}, + "south": {"uv": [0, 6, 6, 12], "texture": "#2"}, + "west": {"uv": [6, 0, 12, 6], "texture": "#2"}, + "up": {"uv": [0, 0, 6, 6], "rotation": 90, "texture": "#2"}, + "down": {"uv": [0, 0, 6, 6], "rotation": 90, "texture": "#2"} + } + }, + { + "from": [3, 14, 3], + "to": [13, 16, 13], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 8]}, + "faces": { + "north": {"uv": [4, 8.5, 9, 9.5], "texture": "#4"}, + "east": {"uv": [4, 8.5, 9, 9.5], "texture": "#4"}, + "south": {"uv": [4, 8.5, 9, 9.5], "texture": "#4"}, + "west": {"uv": [4, 8.5, 9, 9.5], "texture": "#4"}, + "up": {"uv": [11, 11, 16, 16], "rotation": 90, "texture": "#4"}, + "down": {"uv": [0, 0, 0, 0], "rotation": 90, "texture": "#4"} + } + }, + { + "from": [3, 0, 3], + "to": [13, 2, 13], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 8]}, + "faces": { + "north": {"uv": [4, 9.5, 9, 8.5], "texture": "#4"}, + "east": {"uv": [4, 9.5, 9, 8.5], "texture": "#4"}, + "south": {"uv": [4, 9.5, 9, 8.5], "texture": "#4"}, + "west": {"uv": [4, 9.5, 9, 8.5], "texture": "#4"}, + "up": {"uv": [0, 0, 0, 0], "rotation": 90, "texture": "#4"}, + "down": {"uv": [16, 11, 11, 16], "rotation": 90, "texture": "#4"} + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/tfmg/models/block/steel_fluid_valve/block_vertical_closed.json b/src/main/resources/assets/tfmg/models/block/steel_fluid_valve/block_vertical_closed.json new file mode 100644 index 00000000..1f7b5fee --- /dev/null +++ b/src/main/resources/assets/tfmg/models/block/steel_fluid_valve/block_vertical_closed.json @@ -0,0 +1,50 @@ +{ + "credit": "Made with Blockbench", + "textures": { + "2": "create:block/fluid_valve", + "3": "create:block/pipes", + "particle": "create:block/copper_plating" + }, + "elements": [ + { + "name": "ValveCenter", + "from": [2, 2, 2], + "to": [14, 14, 14], + "rotation": {"angle": 0, "axis": "y", "origin": [24, 11, 11]}, + "faces": { + "north": {"uv": [6, 6, 12, 12], "rotation": 90, "texture": "#2"}, + "east": {"uv": [6, 6, 12, 12], "rotation": 90, "texture": "#2"}, + "south": {"uv": [0, 0, 6, 6], "rotation": 90, "texture": "#2"}, + "west": {"uv": [6, 6, 12, 12], "rotation": 90, "texture": "#2"}, + "up": {"uv": [6, 0, 12, 6], "rotation": 90, "texture": "#2"}, + "down": {"uv": [6, 0, 12, 6], "rotation": 90, "texture": "#2"} + } + }, + { + "from": [0, 3, 3], + "to": [2, 13, 13], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 8]}, + "faces": { + "north": {"uv": [4, 8.5, 9, 9.5], "rotation": 90, "texture": "#3"}, + "east": {"uv": [0, 0, 0, 0], "texture": "#3"}, + "south": {"uv": [4, 8.5, 9, 9.5], "rotation": 270, "texture": "#3"}, + "west": {"uv": [11, 11, 16, 16], "texture": "#3"}, + "up": {"uv": [4, 8.5, 9, 9.5], "rotation": 270, "texture": "#3"}, + "down": {"uv": [4, 8.5, 9, 9.5], "rotation": 270, "texture": "#3"} + } + }, + { + "from": [14, 3, 3], + "to": [16, 13, 13], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 8]}, + "faces": { + "north": {"uv": [4, 9.5, 9, 8.5], "rotation": 90, "texture": "#3"}, + "east": {"uv": [16, 11, 11, 16], "texture": "#3"}, + "south": {"uv": [4, 9.5, 9, 8.5], "rotation": 270, "texture": "#3"}, + "west": {"uv": [0, 0, 0, 0], "texture": "#3"}, + "up": {"uv": [4, 9.5, 9, 8.5], "rotation": 270, "texture": "#3"}, + "down": {"uv": [4, 9.5, 9, 8.5], "rotation": 270, "texture": "#3"} + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/tfmg/models/block/steel_fluid_valve/block_vertical_open.json b/src/main/resources/assets/tfmg/models/block/steel_fluid_valve/block_vertical_open.json new file mode 100644 index 00000000..b95cd9a3 --- /dev/null +++ b/src/main/resources/assets/tfmg/models/block/steel_fluid_valve/block_vertical_open.json @@ -0,0 +1,50 @@ +{ + "credit": "Made with Blockbench", + "textures": { + "2": "create:block/fluid_valve", + "3": "create:block/pipes", + "particle": "create:block/copper_plating" + }, + "elements": [ + { + "name": "ValveCenter", + "from": [2, 2, 2], + "to": [14, 14, 14], + "rotation": {"angle": 0, "axis": "y", "origin": [24, 11, 11]}, + "faces": { + "north": {"uv": [6, 6, 12, 12], "rotation": 90, "texture": "#2"}, + "east": {"uv": [6, 6, 12, 12], "rotation": 90, "texture": "#2"}, + "south": {"uv": [0, 6, 6, 12], "rotation": 90, "texture": "#2"}, + "west": {"uv": [6, 6, 12, 12], "rotation": 90, "texture": "#2"}, + "up": {"uv": [6, 0, 12, 6], "rotation": 90, "texture": "#2"}, + "down": {"uv": [6, 0, 12, 6], "rotation": 90, "texture": "#2"} + } + }, + { + "from": [0, 3, 3], + "to": [2, 13, 13], + "rotation": {"angle": 0, "axis": "z", "origin": [8, 8, 8]}, + "faces": { + "north": {"uv": [4, 8.5, 9, 9.5], "rotation": 90, "texture": "#3"}, + "east": {"uv": [0, 0, 0, 0], "texture": "#3"}, + "south": {"uv": [4, 8.5, 9, 9.5], "rotation": 270, "texture": "#3"}, + "west": {"uv": [11, 11, 16, 16], "texture": "#3"}, + "up": {"uv": [4, 8.5, 9, 9.5], "rotation": 270, "texture": "#3"}, + "down": {"uv": [4, 8.5, 9, 9.5], "rotation": 270, "texture": "#3"} + } + }, + { + "from": [14, 3, 3], + "to": [16, 13, 13], + "rotation": {"angle": 0, "axis": "z", "origin": [8, 8, 8]}, + "faces": { + "north": {"uv": [4, 9.5, 9, 8.5], "rotation": 90, "texture": "#3"}, + "east": {"uv": [16, 11, 11, 16], "texture": "#3"}, + "south": {"uv": [4, 9.5, 9, 8.5], "rotation": 270, "texture": "#3"}, + "west": {"uv": [0, 0, 0, 0], "texture": "#3"}, + "up": {"uv": [4, 9.5, 9, 8.5], "rotation": 270, "texture": "#3"}, + "down": {"uv": [4, 9.5, 9, 8.5], "rotation": 270, "texture": "#3"} + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/tfmg/models/block/steel_fluid_valve/item.json b/src/main/resources/assets/tfmg/models/block/steel_fluid_valve/item.json new file mode 100644 index 00000000..b09bd0b7 --- /dev/null +++ b/src/main/resources/assets/tfmg/models/block/steel_fluid_valve/item.json @@ -0,0 +1,190 @@ +{ + "credit": "Made with Blockbench", + "textures": { + "2": "create:block/fluid_valve", + "3": "create:block/pipes", + "4": "create:block/pump", + "1_1": "create:block/axis_top", + "1_0": "create:block/axis", + "particle": "create:block/copper_plating" + }, + "elements": [ + { + "name": "ValveCenter", + "from": [2, 2, 2], + "to": [14, 14, 14], + "rotation": {"angle": 0, "axis": "y", "origin": [24, 11, 11]}, + "faces": { + "north": {"uv": [6, 0, 12, 6], "texture": "#2"}, + "east": {"uv": [6, 6, 12, 12], "texture": "#2"}, + "south": {"uv": [6, 0, 12, 6], "texture": "#2"}, + "west": {"uv": [6, 6, 12, 12], "texture": "#2"}, + "up": {"uv": [0, 0, 6, 6], "rotation": 90, "texture": "#2"}, + "down": {"uv": [6, 6, 12, 12], "texture": "#2"} + } + }, + { + "name": "Axis", + "from": [6, 6, 0], + "to": [10, 10, 16], + "faces": { + "north": {"uv": [6, 6, 10, 10], "rotation": 180, "texture": "#1_1"}, + "east": {"uv": [6, 0, 10, 16], "rotation": 90, "texture": "#1_0"}, + "south": {"uv": [6, 6, 10, 10], "texture": "#1_1"}, + "west": {"uv": [6, 0, 10, 16], "rotation": 270, "texture": "#1_0"}, + "up": {"uv": [6, 0, 10, 16], "texture": "#1_0"}, + "down": {"uv": [6, 0, 10, 16], "rotation": 180, "texture": "#1_0"} + } + }, + { + "from": [7, 14.1, 5], + "to": [9, 15.1, 7], + "rotation": {"angle": 45, "axis": "y", "origin": [8, 8, 8]}, + "faces": { + "north": {"uv": [14, 0, 12, 1], "rotation": 180, "texture": "#4"}, + "east": {"uv": [14, 3, 12, 4], "texture": "#4"}, + "south": {"uv": [14, 2, 12, 3], "rotation": 180, "texture": "#4"}, + "west": {"uv": [12, 0, 13, 2], "rotation": 270, "texture": "#4"}, + "up": {"uv": [14, 2, 12, 0], "rotation": 180, "texture": "#4"}, + "down": {"uv": [12, 2, 14, 4], "texture": "#4"} + } + }, + { + "from": [9, 14.1, 5], + "to": [11, 15.1, 9], + "rotation": {"angle": 45, "axis": "y", "origin": [8, 8, 8]}, + "faces": { + "north": {"uv": [16, 0, 14, 1], "texture": "#4"}, + "east": {"uv": [15, 0, 16, 4], "rotation": 90, "texture": "#4"}, + "south": {"uv": [16, 0, 14, 1], "rotation": 180, "texture": "#4"}, + "west": {"uv": [12, 4, 13, 0], "rotation": 90, "texture": "#4"}, + "up": {"uv": [16, 4, 14, 0], "rotation": 180, "texture": "#4"}, + "down": {"uv": [14, 0, 16, 4], "texture": "#4"} + } + }, + { + "from": [5, 14.1, 7], + "to": [7, 15.1, 11], + "rotation": {"angle": 45, "axis": "y", "origin": [8, 8, 8]}, + "faces": { + "north": {"uv": [16, 0, 14, 1], "rotation": 180, "texture": "#4"}, + "east": {"uv": [12, 4, 13, 0], "rotation": 90, "texture": "#4"}, + "south": {"uv": [16, 0, 14, 1], "texture": "#4"}, + "west": {"uv": [15, 0, 16, 4], "rotation": 90, "texture": "#4"}, + "up": {"uv": [16, 4, 14, 0], "texture": "#4"}, + "down": {"uv": [14, 0, 16, 4], "rotation": 180, "texture": "#4"} + } + }, + { + "from": [7, 14.1, 9], + "to": [9, 15.1, 11], + "rotation": {"angle": 45, "axis": "y", "origin": [8, 8, 8]}, + "faces": { + "north": {"uv": [14, 2, 12, 3], "rotation": 180, "texture": "#4"}, + "east": {"uv": [12, 0, 13, 2], "rotation": 270, "texture": "#4"}, + "south": {"uv": [14, 0, 12, 1], "rotation": 180, "texture": "#4"}, + "west": {"uv": [14, 3, 12, 4], "texture": "#4"}, + "up": {"uv": [14, 2, 12, 0], "texture": "#4"}, + "down": {"uv": [12, 2, 14, 4], "rotation": 180, "texture": "#4"} + } + }, + { + "name": "Center", + "from": [7, 14, 7], + "to": [9, 16, 9], + "rotation": {"angle": 45, "axis": "y", "origin": [8, 15, 8]}, + "faces": { + "north": {"uv": [12.5, 0, 12, 1], "rotation": 90, "texture": "#2"}, + "east": {"uv": [13, 0.5, 12, 1], "texture": "#2"}, + "south": {"uv": [12, 0.5, 13, 1], "texture": "#2"}, + "west": {"uv": [12, 1, 12.5, 0], "rotation": 90, "texture": "#2"}, + "up": {"uv": [12, 0, 13, 1], "texture": "#2"} + } + }, + { + "from": [0, 3, 3], + "to": [2, 13, 13], + "faces": { + "north": {"uv": [4, 8.5, 9, 9.5], "rotation": 90, "texture": "#3"}, + "south": {"uv": [4, 8.5, 9, 9.5], "rotation": 270, "texture": "#3"}, + "west": {"uv": [11, 11, 16, 16], "texture": "#3"}, + "up": {"uv": [4, 8.5, 9, 9.5], "rotation": 270, "texture": "#3"}, + "down": {"uv": [4, 8.5, 9, 9.5], "rotation": 270, "texture": "#3"} + } + }, + { + "from": [14, 3, 3], + "to": [16, 13, 13], + "rotation": {"angle": 0, "axis": "y", "origin": [16, 0, 0]}, + "faces": { + "north": {"uv": [4, 9.5, 9, 8.5], "rotation": 90, "texture": "#3"}, + "east": {"uv": [16, 11, 11, 16], "texture": "#3"}, + "south": {"uv": [4, 9.5, 9, 8.5], "rotation": 270, "texture": "#3"}, + "up": {"uv": [4, 9.5, 9, 8.5], "rotation": 270, "texture": "#3"}, + "down": {"uv": [4, 9.5, 9, 8.5], "rotation": 270, "texture": "#3"} + } + } + ], + "display": { + "thirdperson_righthand": { + "rotation": [75, 45, 0], + "translation": [0, 2.5, 0], + "scale": [0.375, 0.375, 0.375] + }, + "thirdperson_lefthand": { + "rotation": [75, 45, 0], + "translation": [0, 2.5, 0], + "scale": [0.375, 0.375, 0.375] + }, + "firstperson_righthand": { + "rotation": [0, 45, 0], + "scale": [0.4, 0.4, 0.4] + }, + "firstperson_lefthand": { + "rotation": [0, 225, 0], + "scale": [0.4, 0.4, 0.4] + }, + "ground": { + "translation": [0, 3, 0], + "scale": [0.25, 0.25, 0.25] + }, + "gui": { + "rotation": [30, 135, 0], + "scale": [0.625, 0.625, 0.625] + }, + "fixed": { + "scale": [0.5, 0.5, 0.5] + } + }, + "groups": [ + 0, + { + "name": "shaft", + "origin": [8, 8, 8], + "color": 0, + "children": [1] + }, + { + "name": "Pointer", + "origin": [7.5, 14, 8], + "color": 0, + "children": [ + { + "name": "arrow", + "origin": [8, 8, 8], + "color": 0, + "children": [] + }, + { + "name": "arrow", + "origin": [8, 8, 8], + "color": 0, + "children": [2, 3, 4, 5] + }, + 6 + ] + }, + 7, + 8 + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/tfmg/models/block/steel_fluid_valve/pointer.json b/src/main/resources/assets/tfmg/models/block/steel_fluid_valve/pointer.json new file mode 100644 index 00000000..2e9eed35 --- /dev/null +++ b/src/main/resources/assets/tfmg/models/block/steel_fluid_valve/pointer.json @@ -0,0 +1,151 @@ +{ + "credit": "Made with Blockbench", + "textures": { + "2": "create:block/fluid_valve", + "4": "create:block/pump", + "particle": "create:block/copper_plating" + }, + "elements": [ + { + "from": [7, 14.1, 5], + "to": [9, 15.1, 7], + "rotation": {"angle": 45, "axis": "y", "origin": [8, 8, 8]}, + "faces": { + "north": {"uv": [14, 0, 12, 1], "rotation": 180, "texture": "#4"}, + "east": {"uv": [14, 3, 12, 4], "texture": "#4"}, + "south": {"uv": [14, 2, 12, 3], "rotation": 180, "texture": "#4"}, + "west": {"uv": [12, 0, 13, 2], "rotation": 270, "texture": "#4"}, + "up": {"uv": [12, 0, 14, 2], "texture": "#4"}, + "down": {"uv": [14, 0, 12, 2], "rotation": 180, "texture": "#4"} + } + }, + { + "from": [9, 14.1, 5], + "to": [11, 15.1, 9], + "rotation": {"angle": 45, "axis": "y", "origin": [8, 8, 8]}, + "faces": { + "north": {"uv": [16, 0, 14, 1], "texture": "#4"}, + "east": {"uv": [15, 0, 16, 4], "rotation": 90, "texture": "#4"}, + "south": {"uv": [16, 0, 14, 1], "rotation": 180, "texture": "#4"}, + "up": {"uv": [14, 0, 16, 4], "texture": "#4"}, + "down": {"uv": [16, 0, 14, 4], "rotation": 180, "texture": "#4"} + } + }, + { + "from": [7, 14.1, 9], + "to": [11, 15.1, 11], + "rotation": {"angle": -45, "axis": "y", "origin": [8, 8, 8]}, + "faces": { + "east": {"uv": [16, 0, 14, 1], "texture": "#4"}, + "south": {"uv": [15, 0, 16, 4], "rotation": 90, "texture": "#4"}, + "west": {"uv": [16, 0, 14, 1], "rotation": 180, "texture": "#4"}, + "up": {"uv": [14, 0, 16, 4], "rotation": 90, "texture": "#4"}, + "down": {"uv": [16, 0, 14, 4], "rotation": 90, "texture": "#4"} + } + }, + { + "from": [9, 14.1, 7], + "to": [11, 15.1, 9], + "rotation": {"angle": -45, "axis": "y", "origin": [8, 8, 8]}, + "faces": { + "north": {"uv": [12, 0, 13, 2], "rotation": 270, "texture": "#4"}, + "east": {"uv": [14, 0, 12, 1], "rotation": 180, "texture": "#4"}, + "south": {"uv": [14, 3, 12, 4], "texture": "#4"}, + "west": {"uv": [14, 2, 12, 3], "rotation": 180, "texture": "#4"}, + "up": {"uv": [12, 0, 14, 2], "rotation": 90, "texture": "#4"}, + "down": {"uv": [14, 0, 12, 2], "rotation": 90, "texture": "#4"} + } + }, + { + "from": [9, 14.1, 5], + "to": [11, 15.1, 9], + "rotation": {"angle": 45, "axis": "y", "origin": [8, 8, 8]}, + "faces": { + "north": {"uv": [16, 0, 14, 1], "texture": "#4"}, + "east": {"uv": [15, 0, 16, 4], "rotation": 90, "texture": "#4"}, + "south": {"uv": [16, 0, 14, 1], "rotation": 180, "texture": "#4"}, + "up": {"uv": [14, 0, 16, 4], "texture": "#4"}, + "down": {"uv": [16, 0, 14, 4], "rotation": 180, "texture": "#4"} + } + }, + { + "from": [7, 14.1, 5], + "to": [9, 15.1, 7], + "rotation": {"angle": 45, "axis": "y", "origin": [8, 8, 8]}, + "faces": { + "north": {"uv": [14, 0, 12, 1], "rotation": 180, "texture": "#4"}, + "east": {"uv": [14, 3, 12, 4], "texture": "#4"}, + "south": {"uv": [14, 2, 12, 3], "rotation": 180, "texture": "#4"}, + "west": {"uv": [12, 0, 13, 2], "rotation": 270, "texture": "#4"}, + "up": {"uv": [12, 0, 14, 2], "texture": "#4"}, + "down": {"uv": [14, 0, 12, 2], "rotation": 180, "texture": "#4"} + } + }, + { + "name": "Center", + "from": [7, 14, 7], + "to": [9, 16, 9], + "rotation": {"angle": 45, "axis": "y", "origin": [8, 15, 8]}, + "faces": { + "north": {"uv": [12.5, 0, 12, 1], "rotation": 90, "texture": "#2"}, + "east": {"uv": [13, 0.5, 12, 1], "texture": "#2"}, + "south": {"uv": [12, 0.5, 13, 1], "texture": "#2"}, + "west": {"uv": [12, 1, 12.5, 0], "rotation": 90, "texture": "#2"}, + "up": {"uv": [12, 0, 13, 1], "texture": "#2"} + } + } + ], + "display": { + "thirdperson_righthand": { + "rotation": [75, 45, 0], + "translation": [0, 2.5, 0], + "scale": [0.375, 0.375, 0.375] + }, + "thirdperson_lefthand": { + "rotation": [75, 45, 0], + "translation": [0, 2.5, 0], + "scale": [0.375, 0.375, 0.375] + }, + "firstperson_righthand": { + "rotation": [0, 45, 0], + "scale": [0.4, 0.4, 0.4] + }, + "firstperson_lefthand": { + "rotation": [0, 225, 0], + "scale": [0.4, 0.4, 0.4] + }, + "ground": { + "translation": [0, 3, 0], + "scale": [0.25, 0.25, 0.25] + }, + "gui": { + "rotation": [30, 135, 0], + "scale": [0.625, 0.625, 0.625] + }, + "fixed": { + "scale": [0.5, 0.5, 0.5] + } + }, + "groups": [ + { + "name": "Pointer", + "origin": [7.5, 14, 8], + "color": 0, + "children": [ + { + "name": "arrow", + "origin": [8, 8, 8], + "color": 0, + "children": [] + }, + { + "name": "arrow", + "origin": [8, 8, 8], + "color": 0, + "children": [0, 1, 2, 3, 4, 5] + }, + 6 + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/tfmg/models/block/steel_mechanical_pump/block.json b/src/main/resources/assets/tfmg/models/block/steel_mechanical_pump/block.json new file mode 100644 index 00000000..8dd3ab9b --- /dev/null +++ b/src/main/resources/assets/tfmg/models/block/steel_mechanical_pump/block.json @@ -0,0 +1,146 @@ +{ + "credit": "Made with Blockbench", + "parent": "create:block/block", + "textures": { + "2": "create:block/pipes", + "4": "create:block/pump", + "particle": "create:block/pump" + }, + "elements": [ + { + "name": "middle", + "from": [4, 4, 4], + "to": [12, 12, 12], + "rotation": {"angle": 0, "axis": "z", "origin": [8.33333, 8.5, 8]}, + "faces": { + "north": {"uv": [0, 6.5, 4, 2.5], "rotation": 90, "texture": "#2"}, + "east": {"uv": [0, 6.5, 4, 2.5], "rotation": 90, "texture": "#2"}, + "south": {"uv": [0, 6.5, 4, 2.5], "rotation": 90, "texture": "#2"}, + "west": {"uv": [0, 6.5, 4, 2.5], "rotation": 90, "texture": "#2"}, + "up": {"uv": [0, 6.5, 4, 2.5], "rotation": 90, "texture": "#2"}, + "down": {"uv": [0, 6.5, 4, 2.5], "rotation": 90, "texture": "#2"} + } + }, + { + "name": "back", + "from": [2, 0, 2], + "to": [14, 5, 14], + "rotation": {"angle": 0, "axis": "z", "origin": [8.33333, 8.5, 8]}, + "faces": { + "north": {"uv": [13.5, 2, 16, 8], "rotation": 270, "texture": "#2"}, + "east": {"uv": [13.5, 2, 16, 8], "rotation": 270, "texture": "#2"}, + "south": {"uv": [13.5, 2, 16, 8], "rotation": 270, "texture": "#2"}, + "west": {"uv": [13.5, 2, 16, 8], "rotation": 270, "texture": "#2"}, + "up": {"uv": [0, 0, 12, 12], "rotation": 180, "texture": "#4"}, + "down": {"uv": [0, 0, 12, 12], "texture": "#4"} + } + }, + { + "name": "front", + "from": [3, 11, 3], + "to": [13, 16, 13], + "rotation": {"angle": 0, "axis": "z", "origin": [8.33333, 8.5, 8]}, + "faces": { + "north": {"uv": [10.5, 2.5, 13, 7.5], "rotation": 90, "texture": "#2"}, + "east": {"uv": [10.5, 2.5, 13, 7.5], "rotation": 90, "texture": "#2"}, + "south": {"uv": [10.5, 2.5, 13, 7.5], "rotation": 90, "texture": "#2"}, + "west": {"uv": [10.5, 2.5, 13, 7.5], "rotation": 90, "texture": "#2"}, + "up": {"uv": [11, 11, 16, 16], "texture": "#2"}, + "down": {"uv": [6, 11, 11, 16], "texture": "#2"} + } + }, + { + "from": [5.85355, 13.25, 1.75], + "to": [9.85355, 15.25, 13.75], + "rotation": {"angle": 45, "axis": "z", "origin": [8.35355, 13.25, 7.75]}, + "faces": { + "north": {"uv": [16, 0, 12, 2], "texture": "#4"}, + "east": {"uv": [15, 0, 16, 2], "texture": "#4"}, + "south": {"uv": [12, 0, 16, 2], "texture": "#4"}, + "west": {"uv": [12, 0, 13, 2], "texture": "#4"}, + "up": {"uv": [12, 0, 16, 1], "texture": "#4"}, + "down": {"uv": [12, 1, 16, 2], "texture": "#4"} + } + }, + { + "from": [7.85355, 11.25, 1.75], + "to": [9.85355, 13.25, 13.75], + "rotation": {"angle": 45, "axis": "z", "origin": [8.35355, 13.25, 7.75]}, + "faces": { + "north": {"uv": [16, 2, 14, 4], "texture": "#4"}, + "east": {"uv": [15, 2, 16, 4], "texture": "#4"}, + "south": {"uv": [14, 2, 16, 4], "texture": "#4"}, + "west": {"uv": [14, 2, 15, 4], "texture": "#4"}, + "down": {"uv": [14, 3, 16, 4], "texture": "#4"} + } + }, + { + "from": [2.35355, 10.75, 7.75], + "to": [14.35355, 12.75, 9.75], + "rotation": {"angle": -45, "axis": "x", "origin": [8.35355, 13.25, 7.75]}, + "faces": { + "north": {"uv": [14, 2, 15, 4], "texture": "#4"}, + "east": {"uv": [16, 2, 14, 4], "texture": "#4"}, + "south": {"uv": [15, 2, 16, 4], "texture": "#4"}, + "west": {"uv": [14, 2, 16, 4], "texture": "#4"}, + "down": {"uv": [14, 3, 16, 4], "rotation": 270, "texture": "#4"} + } + }, + { + "from": [2.35355, 12.75, 5.75], + "to": [14.35355, 14.75, 9.75], + "rotation": {"angle": -45, "axis": "x", "origin": [8.35355, 13.25, 7.75]}, + "faces": { + "north": {"uv": [12, 0, 13, 2], "texture": "#4"}, + "east": {"uv": [16, 0, 12, 2], "texture": "#4"}, + "south": {"uv": [15, 0, 16, 2], "texture": "#4"}, + "west": {"uv": [12, 0, 16, 2], "texture": "#4"}, + "up": {"uv": [12, 0, 16, 1], "rotation": 90, "texture": "#4"}, + "down": {"uv": [12, 1, 16, 2], "rotation": 270, "texture": "#4"} + } + } + ], + "display": { + "thirdperson_righthand": { + "rotation": [75, 45, 0], + "translation": [0, 2.5, 0], + "scale": [0.375, 0.375, 0.375] + }, + "thirdperson_lefthand": { + "rotation": [75, 45, 0], + "translation": [0, 2.5, 0], + "scale": [0.375, 0.375, 0.375] + }, + "firstperson_righthand": { + "rotation": [0, 45, 0], + "scale": [0.4, 0.4, 0.4] + }, + "firstperson_lefthand": { + "rotation": [0, 225, 0], + "scale": [0.4, 0.4, 0.4] + }, + "ground": { + "translation": [0, 3, 0], + "scale": [0.25, 0.25, 0.25] + }, + "gui": { + "rotation": [30, 135, 0], + "scale": [0.625, 0.625, 0.625] + }, + "fixed": { + "scale": [0.5, 0.5, 0.5] + } + }, + "groups": [ + { + "name": "pump", + "origin": [8, 8, 8], + "color": 0, + "children": [0, 1, 2] + }, + 3, + 4, + 5, + 6 + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/tfmg/models/block/steel_mechanical_pump/cog.json b/src/main/resources/assets/tfmg/models/block/steel_mechanical_pump/cog.json new file mode 100644 index 00000000..d9f2d4c4 --- /dev/null +++ b/src/main/resources/assets/tfmg/models/block/steel_mechanical_pump/cog.json @@ -0,0 +1,123 @@ +{ + "credit": "Made with Blockbench", + "parent": "block/block", + "texture_size": [32, 32], + "textures": { + "5": "create:block/millstone", + "particle": "create:block/palettes/stone_types/cut/andesite_cut" + }, + "elements": [ + { + "name": "Gear6", + "from": [6.5, -1, 5], + "to": [9.5, 17, 11], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 6.5]}, + "faces": { + "north": {"uv": [0, 8.5, 9, 10], "rotation": 90, "texture": "#5"}, + "east": {"uv": [0, 10, 9, 13], "rotation": 270, "texture": "#5"}, + "south": {"uv": [0, 8.5, 9, 10], "rotation": 90, "texture": "#5"}, + "west": {"uv": [0, 10, 9, 13], "rotation": 90, "texture": "#5"}, + "up": {"uv": [9, 10, 10.5, 13], "rotation": 180, "texture": "#5"}, + "down": {"uv": [9, 10, 10.5, 13], "texture": "#5"} + } + }, + { + "name": "Gear7", + "from": [6.5, -1, 5], + "to": [9.5, 17, 11], + "rotation": {"angle": 45, "axis": "z", "origin": [8, 8, 6.5]}, + "faces": { + "north": {"uv": [0, 8.5, 9, 10], "rotation": 90, "texture": "#5"}, + "east": {"uv": [0, 10, 9, 13], "rotation": 270, "texture": "#5"}, + "south": {"uv": [0, 8.5, 9, 10], "rotation": 90, "texture": "#5"}, + "west": {"uv": [0, 10, 9, 13], "rotation": 90, "texture": "#5"}, + "up": {"uv": [9, 10, 10.5, 13], "rotation": 180, "texture": "#5"}, + "down": {"uv": [9, 10, 10.5, 13], "texture": "#5"} + } + }, + { + "name": "Gear8", + "from": [-1, 6.5, 5], + "to": [17, 9.5, 11], + "rotation": {"angle": 45, "axis": "z", "origin": [8, 8, 6.5]}, + "faces": { + "north": {"uv": [0, 8.5, 9, 10], "texture": "#5"}, + "east": {"uv": [9, 10, 10.5, 13], "rotation": 270, "texture": "#5"}, + "south": {"uv": [0, 8.5, 9, 10], "texture": "#5"}, + "west": {"uv": [9, 10, 10.5, 13], "rotation": 90, "texture": "#5"}, + "up": {"uv": [0, 10, 9, 13], "rotation": 180, "texture": "#5"}, + "down": {"uv": [0, 10, 9, 13], "texture": "#5"} + } + }, + { + "name": "Gear8", + "from": [-1, 6.5, 5], + "to": [17, 9.5, 11], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 6.5]}, + "faces": { + "north": {"uv": [0, 8.5, 9, 10], "texture": "#5"}, + "east": {"uv": [9, 10, 10.5, 13], "rotation": 270, "texture": "#5"}, + "south": {"uv": [0, 8.5, 9, 10], "texture": "#5"}, + "west": {"uv": [9, 10, 10.5, 13], "rotation": 90, "texture": "#5"}, + "up": {"uv": [0, 10, 9, 13], "rotation": 180, "texture": "#5"}, + "down": {"uv": [0, 10, 9, 13], "texture": "#5"} + } + }, + { + "name": "GearCaseInner", + "from": [2, 2, 5.5], + "to": [14, 14, 10.5], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 7]}, + "faces": { + "north": {"uv": [0, 0, 6, 6], "rotation": 180, "texture": "#5"}, + "east": {"uv": [0, 6, 6, 8.5], "rotation": 270, "texture": "#5"}, + "south": {"uv": [0, 0, 6, 6], "texture": "#5"}, + "west": {"uv": [0, 6, 6, 8.5], "rotation": 90, "texture": "#5"}, + "up": {"uv": [0, 6, 6, 8.5], "rotation": 180, "texture": "#5"}, + "down": {"uv": [0, 6, 6, 8.5], "texture": "#5"} + } + } + ], + "display": { + "thirdperson_righthand": { + "rotation": [75, -149, 0], + "translation": [0, 2.5, 0], + "scale": [0.375, 0.375, 0.375] + }, + "thirdperson_lefthand": { + "rotation": [75, -149, 0], + "translation": [0, 2.5, 0], + "scale": [0.375, 0.375, 0.375] + }, + "firstperson_righthand": { + "rotation": [0, -55, 0], + "scale": [0.4, 0.4, 0.4] + }, + "firstperson_lefthand": { + "rotation": [0, -55, 0], + "scale": [0.4, 0.4, 0.4] + }, + "ground": { + "translation": [0, 1, 1.25], + "scale": [0.25, 0.25, 0.25] + }, + "gui": { + "rotation": [30, 45, 0], + "translation": [2.5, -0.5, 0], + "scale": [0.625, 0.625, 0.625] + }, + "fixed": { + "rotation": [0, 180, 0], + "translation": [0, 1.75, -4.5], + "scale": [0.5, 0.5, 0.5] + } + }, + "groups": [ + { + "name": "cogwheel", + "origin": [8, 8, 8], + "color": 0, + "children": [0, 1, 2, 3, 4] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/tfmg/models/block/steel_mechanical_pump/item.json b/src/main/resources/assets/tfmg/models/block/steel_mechanical_pump/item.json new file mode 100644 index 00000000..161c4910 --- /dev/null +++ b/src/main/resources/assets/tfmg/models/block/steel_mechanical_pump/item.json @@ -0,0 +1,225 @@ +{ + "credit": "Made with Blockbench", + "parent": "create:block/block", + "textures": { + "2": "create:block/pipes", + "4": "create:block/pump", + "5": "create:block/millstone", + "particle": "create:block/pump" + }, + "elements": [ + { + "name": "Gear5", + "from": [5.5, 7, -1], + "to": [11.5, 10, 17], + "rotation": {"angle": 0, "axis": "y", "origin": [8.5, 8.5, 8]}, + "faces": { + "north": {"uv": [9, 10, 10.5, 13], "rotation": 90, "texture": "#5"}, + "east": {"uv": [0, 8.5, 9, 10], "texture": "#5"}, + "south": {"uv": [9, 10, 10.5, 13], "rotation": 270, "texture": "#5"}, + "west": {"uv": [0, 8.5, 9, 10], "texture": "#5"}, + "up": {"uv": [0, 10, 9, 13], "rotation": 270, "texture": "#5"}, + "down": {"uv": [0, 10, 9, 13], "rotation": 270, "texture": "#5"} + } + }, + { + "name": "Gear6", + "from": [5.5, 7, -1], + "to": [11.5, 10, 17], + "rotation": {"angle": -45, "axis": "x", "origin": [8.5, 8.5, 8]}, + "faces": { + "north": {"uv": [9, 10, 10.5, 13], "rotation": 90, "texture": "#5"}, + "east": {"uv": [0, 8.5, 9, 10], "texture": "#5"}, + "south": {"uv": [9, 10, 10.5, 13], "rotation": 270, "texture": "#5"}, + "west": {"uv": [0, 8.5, 9, 10], "texture": "#5"}, + "up": {"uv": [0, 10, 9, 13], "rotation": 270, "texture": "#5"}, + "down": {"uv": [0, 10, 9, 13], "rotation": 270, "texture": "#5"} + } + }, + { + "name": "Gear7", + "from": [5.5, -0.5, 6.5], + "to": [11.5, 17.5, 9.5], + "rotation": {"angle": -45, "axis": "x", "origin": [8.5, 8.5, 8]}, + "faces": { + "north": {"uv": [0, 10, 9, 13], "rotation": 90, "texture": "#5"}, + "east": {"uv": [0, 8.5, 9, 10], "rotation": 90, "texture": "#5"}, + "south": {"uv": [0, 10, 9, 13], "rotation": 270, "texture": "#5"}, + "west": {"uv": [0, 8.5, 9, 10], "rotation": 270, "texture": "#5"}, + "up": {"uv": [9, 10, 10.5, 13], "rotation": 270, "texture": "#5"}, + "down": {"uv": [9, 10, 10.5, 13], "rotation": 270, "texture": "#5"} + } + }, + { + "name": "Gear7", + "from": [5.5, -0.5, 6.5], + "to": [11.5, 17.5, 9.5], + "rotation": {"angle": 0, "axis": "y", "origin": [8.5, 8.5, 8]}, + "faces": { + "north": {"uv": [0, 10, 9, 13], "rotation": 90, "texture": "#5"}, + "east": {"uv": [0, 8.5, 9, 10], "rotation": 90, "texture": "#5"}, + "south": {"uv": [0, 10, 9, 13], "rotation": 270, "texture": "#5"}, + "west": {"uv": [0, 8.5, 9, 10], "rotation": 270, "texture": "#5"}, + "up": {"uv": [9, 10, 10.5, 13], "rotation": 270, "texture": "#5"}, + "down": {"uv": [9, 10, 10.5, 13], "rotation": 270, "texture": "#5"} + } + }, + { + "name": "GearCaseInner", + "from": [6, 2.5, 2], + "to": [11, 14.5, 14], + "rotation": {"angle": 0, "axis": "y", "origin": [8.5, 8.5, 8]}, + "faces": { + "north": {"uv": [0, 6, 6, 8.5], "rotation": 90, "texture": "#5"}, + "east": {"uv": [0, 0, 6, 6], "rotation": 270, "texture": "#5"}, + "south": {"uv": [0, 6, 6, 8.5], "rotation": 270, "texture": "#5"}, + "west": {"uv": [0, 0, 6, 6], "rotation": 270, "texture": "#5"}, + "up": {"uv": [0, 6, 6, 8.5], "rotation": 270, "texture": "#5"}, + "down": {"uv": [0, 6, 6, 8.5], "rotation": 270, "texture": "#5"} + } + }, + { + "name": "middle", + "from": [4.5, 4.5, 4], + "to": [12.5, 12.5, 12], + "rotation": {"angle": 0, "axis": "y", "origin": [8.5, 8.5, 8]}, + "faces": { + "north": {"uv": [11.5, 15.5, 15.5, 11.5], "texture": "#2"}, + "east": {"uv": [11.5, 15.5, 15.5, 11.5], "texture": "#2"}, + "south": {"uv": [11.5, 15.5, 15.5, 11.5], "texture": "#2"}, + "west": {"uv": [11.5, 15.5, 15.5, 11.5], "texture": "#2"}, + "up": {"uv": [11.5, 15.5, 15.5, 11.5], "texture": "#2"}, + "down": {"uv": [11.5, 15.5, 15.5, 11.5], "texture": "#2"} + } + }, + { + "name": "front", + "from": [0.5, 3.5, 3], + "to": [5.5, 13.5, 13], + "rotation": {"angle": 0, "axis": "z", "origin": [8, 8, 8]}, + "faces": { + "north": {"uv": [10.5, 2.5, 13, 7.5], "rotation": 180, "texture": "#2"}, + "east": {"uv": [6, 11, 11, 16], "rotation": 270, "texture": "#2"}, + "south": {"uv": [10.5, 2.5, 13, 7.5], "texture": "#2"}, + "west": {"uv": [11, 11, 16, 16], "rotation": 270, "texture": "#2"}, + "up": {"uv": [10.5, 2.5, 13, 7.5], "texture": "#2"}, + "down": {"uv": [10.5, 2.5, 13, 7.5], "texture": "#2"} + } + }, + { + "name": "back", + "from": [11.5, 2.5, 2], + "to": [16.5, 14.5, 14], + "rotation": {"angle": 0, "axis": "y", "origin": [8.5, 11.5, 8]}, + "faces": { + "north": {"uv": [13.5, 2, 16, 8], "texture": "#2"}, + "east": {"uv": [0, 0, 12, 12], "rotation": 270, "texture": "#4"}, + "south": {"uv": [13.5, 2, 16, 8], "rotation": 180, "texture": "#2"}, + "west": {"uv": [0, 0, 12, 12], "rotation": 90, "texture": "#4"}, + "up": {"uv": [13.5, 2, 16, 8], "rotation": 180, "texture": "#2"}, + "down": {"uv": [13.5, 2, 16, 8], "rotation": 180, "texture": "#2"} + } + }, + { + "from": [1.70355, 6.15, 2], + "to": [3.70355, 10.15, 14], + "rotation": {"angle": 45, "axis": "z", "origin": [3.35355, 8.25, 7.75]}, + "faces": { + "north": {"uv": [16, 0, 12, 2], "rotation": 90, "texture": "#4"}, + "east": {"uv": [12, 1, 16, 2], "rotation": 270, "texture": "#4"}, + "south": {"uv": [12, 0, 16, 2], "rotation": 270, "texture": "#4"}, + "west": {"uv": [12, 0, 16, 1], "rotation": 270, "texture": "#4"}, + "up": {"uv": [15, 0, 16, 2], "rotation": 270, "texture": "#4"}, + "down": {"uv": [12, 0, 13, 2], "rotation": 270, "texture": "#4"} + } + }, + { + "from": [3.70355, 8.15, 2], + "to": [5.70355, 10.15, 14], + "rotation": {"angle": 45, "axis": "z", "origin": [3.35355, 8.25, 7.75]}, + "faces": { + "north": {"uv": [16, 2, 14, 4], "rotation": 90, "texture": "#4"}, + "east": {"uv": [14, 3, 16, 4], "rotation": 270, "texture": "#4"}, + "south": {"uv": [14, 2, 16, 4], "rotation": 270, "texture": "#4"}, + "up": {"uv": [15, 2, 16, 4], "rotation": 270, "texture": "#4"}, + "down": {"uv": [14, 2, 15, 4], "rotation": 270, "texture": "#4"} + } + }, + { + "from": [3.85355, 2.5, 7.75], + "to": [5.85355, 14.5, 9.75], + "rotation": {"angle": -45, "axis": "y", "origin": [3.35355, 8.25, 7.75]}, + "faces": { + "north": {"uv": [14, 2, 15, 4], "rotation": 90, "texture": "#4"}, + "east": {"uv": [14, 3, 16, 4], "rotation": 180, "texture": "#4"}, + "south": {"uv": [15, 2, 16, 4], "rotation": 270, "texture": "#4"}, + "up": {"uv": [16, 2, 14, 4], "rotation": 270, "texture": "#4"}, + "down": {"uv": [14, 2, 16, 4], "rotation": 270, "texture": "#4"} + } + }, + { + "from": [1.85355, 2.5, 5.75], + "to": [3.85355, 14.5, 9.75], + "rotation": {"angle": -45, "axis": "y", "origin": [3.35355, 8.25, 7.75]}, + "faces": { + "north": {"uv": [12, 0, 13, 2], "rotation": 90, "texture": "#4"}, + "east": {"uv": [12, 1, 16, 2], "rotation": 180, "texture": "#4"}, + "south": {"uv": [15, 0, 16, 2], "rotation": 270, "texture": "#4"}, + "west": {"uv": [12, 0, 16, 1], "texture": "#4"}, + "up": {"uv": [16, 0, 12, 2], "rotation": 270, "texture": "#4"}, + "down": {"uv": [12, 0, 16, 2], "rotation": 270, "texture": "#4"} + } + } + ], + "display": { + "thirdperson_righthand": { + "rotation": [75, 45, 0], + "translation": [0, 2.5, 0], + "scale": [0.375, 0.375, 0.375] + }, + "thirdperson_lefthand": { + "rotation": [75, 45, 0], + "translation": [0, 2.5, 0], + "scale": [0.375, 0.375, 0.375] + }, + "firstperson_righthand": { + "rotation": [0, 45, 0], + "scale": [0.4, 0.4, 0.4] + }, + "firstperson_lefthand": { + "rotation": [0, 225, 0], + "scale": [0.4, 0.4, 0.4] + }, + "ground": { + "translation": [0, 3, 0], + "scale": [0.25, 0.25, 0.25] + }, + "gui": { + "rotation": [30, 135, 0], + "scale": [0.625, 0.625, 0.625] + }, + "fixed": { + "scale": [0.5, 0.5, 0.5] + } + }, + "groups": [ + { + "name": "cogwheel", + "origin": [8, 8, 8], + "color": 0, + "children": [0, 1, 2, 3, 4] + }, + { + "name": "pump", + "origin": [8, 8, 8], + "color": 0, + "children": [5, 6, 7] + }, + { + "name": "Arrow", + "origin": [8, 8, 8], + "color": 0, + "children": [8, 9, 10, 11] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/tfmg/models/block/steel_smart_fluid_pipe/block.json b/src/main/resources/assets/tfmg/models/block/steel_smart_fluid_pipe/block.json new file mode 100644 index 00000000..1f674588 --- /dev/null +++ b/src/main/resources/assets/tfmg/models/block/steel_smart_fluid_pipe/block.json @@ -0,0 +1,70 @@ +{ + "credit": "Made with Blockbench", + "parent": "block/block", + "textures": { + "2": "create:block/smart_pipe_1", + "3": "create:block/smart_pipe_2", + "particle": "create:block/smart_pipe_2" + }, + "elements": [ + { + "from": [4.05, 4.05, 12], + "to": [11.95, 11.95, 16], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 14]}, + "faces": { + "east": {"uv": [6, 3, 10, 11], "texture": "#2"}, + "west": {"uv": [6, 3, 10, 11], "texture": "#2"}, + "up": {"uv": [6, 11, 10, 3], "rotation": 90, "texture": "#2"}, + "down": {"uv": [10, 11, 6, 3], "rotation": 90, "texture": "#2"} + } + }, + { + "from": [3, 3, 3], + "to": [13, 13, 13], + "faces": { + "north": {"uv": [3, 3, 4, 4], "texture": "#2"}, + "east": {"uv": [3, 3, 13, 13], "texture": "#2"}, + "south": {"uv": [3, 3, 4, 4], "texture": "#2"}, + "west": {"uv": [3, 3, 13, 13], "texture": "#2"}, + "up": {"uv": [3, 3, 13, 13], "rotation": 270, "texture": "#2"}, + "down": {"uv": [3, 3, 13, 13], "rotation": 270, "texture": "#2"} + } + }, + { + "from": [4.05, 4.05, 0], + "to": [11.95, 11.95, 4], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 0]}, + "faces": { + "east": {"uv": [6, 3, 10, 11], "texture": "#2"}, + "west": {"uv": [6, 3, 10, 11], "texture": "#2"}, + "up": {"uv": [6, 11, 10, 3], "rotation": 90, "texture": "#2"}, + "down": {"uv": [10, 11, 6, 3], "rotation": 90, "texture": "#2"} + } + }, + { + "from": [4.5, 5, 7.15], + "to": [11.5, 12, 13.15], + "rotation": {"angle": 45, "axis": "x", "origin": [8, 12, 13]}, + "faces": { + "north": {"uv": [1, 9, 7, 15], "texture": "#3"}, + "east": {"uv": [0, 0, 6, 7], "texture": "#3"}, + "west": {"uv": [0, 0, 6, 7], "rotation": 180, "texture": "#3"}, + "up": {"uv": [0, 0, 6, 7], "rotation": 270, "texture": "#3"}, + "down": {"uv": [0, 0, 6, 7], "rotation": 90, "texture": "#3"} + } + }, + { + "from": [3.9, 4.4, 4.15], + "to": [12.1, 12.6, 7.15], + "rotation": {"angle": 45, "axis": "x", "origin": [8, 12, 13]}, + "faces": { + "north": {"uv": [8, 8, 16, 16], "texture": "#3"}, + "east": {"uv": [13, 0, 16, 8], "texture": "#3"}, + "south": {"uv": [0, 8, 8, 16], "texture": "#3"}, + "west": {"uv": [13, 8, 16, 0], "rotation": 180, "texture": "#3"}, + "up": {"uv": [13, 8, 16, 0], "rotation": 270, "texture": "#3"}, + "down": {"uv": [13, 0, 16, 8], "rotation": 90, "texture": "#3"} + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/tfmg/models/block/steel_smart_fluid_pipe/item.json b/src/main/resources/assets/tfmg/models/block/steel_smart_fluid_pipe/item.json new file mode 100644 index 00000000..a3df689d --- /dev/null +++ b/src/main/resources/assets/tfmg/models/block/steel_smart_fluid_pipe/item.json @@ -0,0 +1,127 @@ +{ + "credit": "Made with Blockbench", + "parent": "block/block", + "textures": { + "1": "create:block/pipes", + "2": "create:block/smart_pipe_1", + "3": "create:block/smart_pipe_2" + }, + "elements": [ + { + "from": [3, 3, 0], + "to": [13, 13, 2], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 0]}, + "faces": { + "north": {"uv": [11, 11, 16, 16], "rotation": 180, "texture": "#1"}, + "east": {"uv": [4, 9.5, 9, 8.5], "rotation": 270, "texture": "#1"}, + "south": {"uv": [6, 11, 11, 16], "rotation": 180, "texture": "#1"}, + "west": {"uv": [4, 9.5, 9, 8.5], "rotation": 90, "texture": "#1"}, + "up": {"uv": [4, 9.5, 9, 8.5], "rotation": 180, "texture": "#1"}, + "down": {"uv": [4, 9.5, 9, 8.5], "texture": "#1"} + } + }, + { + "from": [3, 3, 14], + "to": [13, 13, 16], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 16]}, + "faces": { + "north": {"uv": [11, 11, 6, 16], "rotation": 180, "texture": "#1"}, + "east": {"uv": [4, 8.5, 9, 9.5], "rotation": 270, "texture": "#1"}, + "south": {"uv": [16, 11, 11, 16], "rotation": 180, "texture": "#1"}, + "west": {"uv": [4, 8.5, 9, 9.5], "rotation": 90, "texture": "#1"}, + "up": {"uv": [4, 8.5, 9, 9.5], "rotation": 180, "texture": "#1"}, + "down": {"uv": [4, 8.5, 9, 9.5], "texture": "#1"} + } + }, + { + "from": [3, 3, 3], + "to": [13, 13, 13], + "faces": { + "north": {"uv": [3, 3, 4, 4], "texture": "#2"}, + "east": {"uv": [3, 3, 13, 13], "texture": "#2"}, + "south": {"uv": [3, 3, 4, 4], "texture": "#2"}, + "west": {"uv": [3, 3, 13, 13], "texture": "#2"}, + "up": {"uv": [3, 3, 13, 13], "rotation": 270, "texture": "#2"}, + "down": {"uv": [3, 3, 13, 13], "rotation": 270, "texture": "#2"} + } + }, + { + "from": [4.05, 4.05, 0], + "to": [11.95, 11.95, 4], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 0]}, + "faces": { + "east": {"uv": [6, 3, 10, 11], "texture": "#2"}, + "west": {"uv": [6, 3, 10, 11], "texture": "#2"}, + "up": {"uv": [6, 11, 10, 3], "rotation": 90, "texture": "#2"}, + "down": {"uv": [10, 11, 6, 3], "rotation": 90, "texture": "#2"} + } + }, + { + "from": [4.05, 4.05, 12], + "to": [11.95, 11.95, 16], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 14]}, + "faces": { + "east": {"uv": [6, 3, 10, 11], "texture": "#2"}, + "west": {"uv": [6, 3, 10, 11], "texture": "#2"}, + "up": {"uv": [6, 11, 10, 3], "rotation": 90, "texture": "#2"}, + "down": {"uv": [10, 11, 6, 3], "rotation": 90, "texture": "#2"} + } + }, + { + "from": [4.5, 5, 7.15], + "to": [11.5, 12, 13.15], + "rotation": {"angle": 45, "axis": "x", "origin": [8, 12, 13]}, + "faces": { + "north": {"uv": [1, 9, 7, 15], "texture": "#3"}, + "east": {"uv": [0, 0, 6, 7], "texture": "#3"}, + "west": {"uv": [0, 0, 6, 7], "rotation": 180, "texture": "#3"}, + "up": {"uv": [0, 0, 6, 7], "rotation": 270, "texture": "#3"}, + "down": {"uv": [0, 0, 6, 7], "rotation": 90, "texture": "#3"} + } + }, + { + "from": [3.9, 4.4, 4.15], + "to": [12.1, 12.6, 7.15], + "rotation": {"angle": 45, "axis": "x", "origin": [8, 12, 13]}, + "faces": { + "north": {"uv": [8, 8, 16, 16], "texture": "#3"}, + "east": {"uv": [13, 0, 16, 8], "texture": "#3"}, + "south": {"uv": [0, 8, 8, 16], "texture": "#3"}, + "west": {"uv": [13, 8, 16, 0], "rotation": 180, "texture": "#3"}, + "up": {"uv": [13, 8, 16, 0], "rotation": 270, "texture": "#3"}, + "down": {"uv": [13, 0, 16, 8], "rotation": 90, "texture": "#3"} + } + } + ], + "display": { + "thirdperson_righthand": { + "rotation": [75, 45, 0], + "translation": [0, 2.5, 0], + "scale": [0.375, 0.375, 0.375] + }, + "thirdperson_lefthand": { + "rotation": [75, 45, 0], + "translation": [0, 2.5, 0], + "scale": [0.375, 0.375, 0.375] + }, + "firstperson_righthand": { + "rotation": [0, 45, 0], + "scale": [0.4, 0.4, 0.4] + }, + "firstperson_lefthand": { + "rotation": [0, 225, 0], + "scale": [0.4, 0.4, 0.4] + }, + "ground": { + "translation": [0, 3, 0], + "scale": [0.25, 0.25, 0.25] + }, + "gui": { + "rotation": [30, 225, 0], + "scale": [0.625, 0.625, 0.625] + }, + "fixed": { + "scale": [0.5, 0.5, 0.5] + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/tfmg/models/block/surface_scanner/block.json b/src/main/resources/assets/tfmg/models/block/surface_scanner/block.json new file mode 100644 index 00000000..278d6b7d --- /dev/null +++ b/src/main/resources/assets/tfmg/models/block/surface_scanner/block.json @@ -0,0 +1,95 @@ +{ + "credit": "Made with Blockbench", + "parent": "minecraft:block/block", + "texture_size": [64, 64], + "textures": { + "2": "tfmg:block/surface_scanner", + "particle": "tfmg:block/surface_scanner" + }, + "elements": [ + { + "from": [0, 0, 0], + "to": [16, 2, 16], + "faces": { + "north": {"uv": [7.5, 9, 11.5, 9.5], "texture": "#2"}, + "east": {"uv": [4, 9.5, 8, 10], "texture": "#2"}, + "south": {"uv": [8, 9.5, 12, 10], "texture": "#2"}, + "west": {"uv": [4, 10, 8, 10.5], "texture": "#2"}, + "up": {"uv": [4, 4, 0, 0], "texture": "#2"}, + "down": {"uv": [4, 4, 0, 8], "texture": "#2"} + } + }, + { + "from": [1, 2, 2], + "to": [15, 14, 15], + "faces": { + "north": {"uv": [4, 6.5, 7.5, 9.5], "texture": "#2"}, + "east": {"uv": [7.5, 3, 10.75, 6], "texture": "#2"}, + "south": {"uv": [7.5, 0, 11, 3], "texture": "#2"}, + "west": {"uv": [7.5, 6, 10.75, 9], "texture": "#2"}, + "up": {"uv": [7.5, 3.25, 4, 0], "texture": "#2"}, + "down": {"uv": [7.5, 3.25, 4, 6.5], "texture": "#2"} + } + }, + { + "from": [14, 2, 15], + "to": [15, 14, 16], + "faces": { + "north": {"uv": [6, 10.5, 6.25, 13.5], "texture": "#2"}, + "east": {"uv": [6.25, 10.5, 6.5, 13.5], "texture": "#2"}, + "south": {"uv": [6.5, 10.5, 6.75, 13.5], "texture": "#2"}, + "west": {"uv": [6.75, 10.5, 7, 13.5], "texture": "#2"}, + "up": {"uv": [3.25, 11, 3, 10.75], "texture": "#2"}, + "down": {"uv": [3.5, 10.75, 3.25, 11], "texture": "#2"} + } + }, + { + "from": [2, 13, 15], + "to": [14, 14, 16], + "faces": { + "north": {"uv": [9, 10.5, 12, 10.75], "texture": "#2"}, + "east": {"uv": [3.5, 10.75, 3.75, 11], "texture": "#2"}, + "south": {"uv": [0, 10.75, 3, 11], "texture": "#2"}, + "west": {"uv": [10.75, 3.5, 11, 3.75], "texture": "#2"}, + "up": {"uv": [13.75, 3.25, 10.75, 3], "texture": "#2"}, + "down": {"uv": [13.75, 3.25, 10.75, 3.5], "texture": "#2"} + } + }, + { + "from": [1, 2, 15], + "to": [2, 14, 16], + "faces": { + "north": {"uv": [7, 10.5, 7.25, 13.5], "texture": "#2"}, + "east": {"uv": [7.25, 10.5, 7.5, 13.5], "texture": "#2"}, + "south": {"uv": [7.5, 10.5, 7.75, 13.5], "texture": "#2"}, + "west": {"uv": [7.75, 10.5, 8, 13.5], "texture": "#2"}, + "up": {"uv": [4, 11, 3.75, 10.75], "texture": "#2"}, + "down": {"uv": [11, 3.75, 10.75, 4], "texture": "#2"} + } + }, + { + "from": [4, 2, 0], + "to": [12, 13, 2], + "faces": { + "north": {"uv": [0, 8, 2, 10.75], "texture": "#2"}, + "east": {"uv": [8, 10, 8.5, 12.75], "texture": "#2"}, + "south": {"uv": [2, 8, 4, 10.75], "texture": "#2"}, + "west": {"uv": [8.5, 10, 9, 12.75], "texture": "#2"}, + "up": {"uv": [11, 10.5, 9, 10], "texture": "#2"}, + "down": {"uv": [6, 10.5, 4, 11], "texture": "#2"} + } + }, + { + "from": [7, 14, 8], + "to": [9, 15, 10], + "faces": { + "north": {"uv": [5.5, 1.25, 6, 1.5], "texture": "#2"}, + "east": {"uv": [5.5, 1.25, 6, 1.5], "texture": "#2"}, + "south": {"uv": [5.5, 1.25, 6, 1.5], "texture": "#2"}, + "west": {"uv": [5.5, 1.25, 6, 1.5], "texture": "#2"}, + "up": {"uv": [5.5, 1.25, 6, 1.75], "texture": "#2"}, + "down": {"uv": [5.5, 1.25, 6, 1.75], "texture": "#2"} + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/tfmg/models/block/surface_scanner/dial.json b/src/main/resources/assets/tfmg/models/block/surface_scanner/dial.json new file mode 100644 index 00000000..e72a5cb5 --- /dev/null +++ b/src/main/resources/assets/tfmg/models/block/surface_scanner/dial.json @@ -0,0 +1,22 @@ +{ + "credit": "Made with Blockbench", + "textures": { + "0": "tfmg:block/surface_scanner", + "particle": "tfmg:block/surface_scanner" + }, + "elements": [ + { + "from": [7.5, 16, 4], + "to": [8.5, 16, 12], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 0, 0]}, + "faces": { + "north": {"uv": [0, 0, 1, 0], "texture": "#0"}, + "east": {"uv": [0, 0, 4, 0], "texture": "#0"}, + "south": {"uv": [0, 0, 1, 0], "texture": "#0"}, + "west": {"uv": [0, 0, 4, 0], "texture": "#0"}, + "up": {"uv": [3.75, 7, 4, 9], "rotation": 180, "texture": "#0"}, + "down": {"uv": [3.75, 7, 4, 9], "texture": "#0"} + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/tfmg/models/block/surface_scanner/flag.json b/src/main/resources/assets/tfmg/models/block/surface_scanner/flag.json new file mode 100644 index 00000000..b8e9f02a --- /dev/null +++ b/src/main/resources/assets/tfmg/models/block/surface_scanner/flag.json @@ -0,0 +1,45 @@ +{ + "credit": "Made with Blockbench", + "textures": { + "0": "tfmg:block/surface_scanner", + "particle": "tfmg:block/surface_scanner" + }, + "elements": [ + { + "from": [15, 7.5, 7.5], + "to": [16, 8.5, 8.5], + "faces": { + "north": {"uv": [12.25, 6.25, 12.5, 6.5], "rotation": 180, "texture": "#0"}, + "east": {"uv": [12.5, 6.25, 12.25, 6.5], "rotation": 270, "texture": "#0"}, + "south": {"uv": [12.25, 6.25, 12.5, 6.5], "texture": "#0"}, + "west": {"uv": [12.25, 6.25, 12.5, 6.5], "rotation": 90, "texture": "#0"}, + "up": {"uv": [12.25, 6.25, 12.5, 6.5], "rotation": 180, "texture": "#0"}, + "down": {"uv": [12.25, 6.25, 12.5, 6.5], "texture": "#0"} + } + }, + { + "from": [15.5, 7.5, 8.5], + "to": [15.5, 8.5, 14.5], + "faces": { + "north": {"uv": [0, 0, 0, 3], "rotation": 180, "texture": "#0"}, + "east": {"uv": [12.25, 6.5, 12.5, 5], "rotation": 90, "texture": "#0"}, + "south": {"uv": [0, 0, 0, 3], "texture": "#0"}, + "west": {"uv": [12.25, 5, 12.5, 6.5], "rotation": 90, "texture": "#0"}, + "up": {"uv": [0, 0, 0, 6], "rotation": 180, "texture": "#0"}, + "down": {"uv": [0, 0, 0, 6], "texture": "#0"} + } + }, + { + "from": [15.5, 4.5, 12.5], + "to": [15.5, 7.5, 14.5], + "faces": { + "north": {"uv": [0, 0, 0, 3], "rotation": 180, "texture": "#0"}, + "east": {"uv": [12.5, 5.5, 12.5, 5], "rotation": 90, "texture": "#0"}, + "south": {"uv": [0, 0, 0, 3], "texture": "#0"}, + "west": {"uv": [12.5, 5, 13.25, 5.5], "rotation": 90, "texture": "#0"}, + "up": {"uv": [0, 0, 0, 6], "rotation": 180, "texture": "#0"}, + "down": {"uv": [0, 0, 0, 6], "texture": "#0"} + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/tfmg/models/block/surface_scanner/item.json b/src/main/resources/assets/tfmg/models/block/surface_scanner/item.json new file mode 100644 index 00000000..afe4e483 --- /dev/null +++ b/src/main/resources/assets/tfmg/models/block/surface_scanner/item.json @@ -0,0 +1,83 @@ +{ + "credit": "Made with Blockbench", + "parent": "minecraft:block/block", + "texture_size": [64, 64], + "textures": { + "2": "tfmg:block/surface_scanner", + "particle": "tfmg:block/surface_scanner" + }, + "elements": [ + { + "from": [0, 0, 0], + "to": [16, 2, 16], + "faces": { + "north": {"uv": [7.5, 9, 11.5, 9.5], "texture": "#2"}, + "east": {"uv": [4, 9.5, 8, 10], "texture": "#2"}, + "south": {"uv": [8, 9.5, 12, 10], "texture": "#2"}, + "west": {"uv": [4, 10, 8, 10.5], "texture": "#2"}, + "up": {"uv": [4, 4, 0, 0], "texture": "#2"}, + "down": {"uv": [4, 4, 0, 8], "texture": "#2"} + } + }, + { + "from": [1, 2, 2], + "to": [15, 14, 15], + "faces": { + "north": {"uv": [4, 6.5, 7.5, 9.5], "texture": "#2"}, + "east": {"uv": [7.5, 3, 10.75, 6], "texture": "#2"}, + "south": {"uv": [7.5, 0, 11, 3], "texture": "#2"}, + "west": {"uv": [7.5, 6, 10.75, 9], "texture": "#2"}, + "up": {"uv": [7.5, 3.25, 4, 0], "texture": "#2"}, + "down": {"uv": [7.5, 3.25, 4, 6.5], "texture": "#2"} + } + }, + { + "from": [14, 2, 15], + "to": [15, 14, 16], + "faces": { + "north": {"uv": [6, 10.5, 6.25, 13.5], "texture": "#2"}, + "east": {"uv": [6.25, 10.5, 6.5, 13.5], "texture": "#2"}, + "south": {"uv": [6.5, 10.5, 6.75, 13.5], "texture": "#2"}, + "west": {"uv": [6.75, 10.5, 7, 13.5], "texture": "#2"}, + "up": {"uv": [3.25, 11, 3, 10.75], "texture": "#2"}, + "down": {"uv": [3.5, 10.75, 3.25, 11], "texture": "#2"} + } + }, + { + "from": [2, 13, 15], + "to": [14, 14, 16], + "faces": { + "north": {"uv": [9, 10.5, 12, 10.75], "texture": "#2"}, + "east": {"uv": [3.5, 10.75, 3.75, 11], "texture": "#2"}, + "south": {"uv": [0, 10.75, 3, 11], "texture": "#2"}, + "west": {"uv": [10.75, 3.5, 11, 3.75], "texture": "#2"}, + "up": {"uv": [13.75, 3.25, 10.75, 3], "texture": "#2"}, + "down": {"uv": [13.75, 3.25, 10.75, 3.5], "texture": "#2"} + } + }, + { + "from": [1, 2, 15], + "to": [2, 14, 16], + "faces": { + "north": {"uv": [7, 10.5, 7.25, 13.5], "texture": "#2"}, + "east": {"uv": [7.25, 10.5, 7.5, 13.5], "texture": "#2"}, + "south": {"uv": [7.5, 10.5, 7.75, 13.5], "texture": "#2"}, + "west": {"uv": [7.75, 10.5, 8, 13.5], "texture": "#2"}, + "up": {"uv": [4, 11, 3.75, 10.75], "texture": "#2"}, + "down": {"uv": [11, 3.75, 10.75, 4], "texture": "#2"} + } + }, + { + "from": [4, 2, 0], + "to": [12, 13, 2], + "faces": { + "north": {"uv": [0, 8, 2, 10.75], "texture": "#2"}, + "east": {"uv": [8, 10, 8.5, 12.75], "texture": "#2"}, + "south": {"uv": [2, 8, 4, 10.75], "texture": "#2"}, + "west": {"uv": [8.5, 10, 9, 12.75], "texture": "#2"}, + "up": {"uv": [11, 10.5, 9, 10], "texture": "#2"}, + "down": {"uv": [6, 10.5, 4, 11], "texture": "#2"} + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/tfmg/models/item/quad_potato_cannon/item.json b/src/main/resources/assets/tfmg/models/item/quad_potato_cannon/item.json new file mode 100644 index 00000000..256b4696 --- /dev/null +++ b/src/main/resources/assets/tfmg/models/item/quad_potato_cannon/item.json @@ -0,0 +1,263 @@ +{ + "credit": "Made with Blockbench", + "texture_size": [64, 64], + "textures": { + "0": "tfmg:item/quad_potato_cannon", + "particle": "tfmg:item/quad_potato_cannon" + }, + "elements": [ + { + "name": "Body", + "from": [5, 1, 2], + "to": [11, 7, 19], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 1, 4]}, + "faces": { + "north": {"uv": [5, 2, 6.5, 3.5], "texture": "#0"}, + "east": {"uv": [0.5, 0, 4.75, 1.5], "texture": "#0"}, + "south": {"uv": [5.5, 5, 7, 6.5], "texture": "#0"}, + "west": {"uv": [0, 1.5, 4.25, 3], "texture": "#0"}, + "up": {"uv": [1.5, 7.75, 0, 3.5], "texture": "#0"}, + "down": {"uv": [3, 3, 1.5, 7.25], "texture": "#0"} + } + }, + { + "name": "Back", + "from": [8, 3, 19], + "to": [10, 5, 24], + "rotation": {"angle": -45, "axis": "z", "origin": [6, 6, 20]}, + "faces": { + "north": {"uv": [7.75, 6.5, 8.25, 7], "texture": "#0"}, + "east": {"uv": [7.5, 2.25, 8.75, 2.75], "texture": "#0"}, + "south": {"uv": [8, 1.5, 8.5, 2], "texture": "#0"}, + "west": {"uv": [7.5, 2.25, 8.75, 2.75], "texture": "#0"}, + "up": {"uv": [8, 4, 7.5, 2.75], "texture": "#0"}, + "down": {"uv": [8, 2.75, 7.5, 4], "texture": "#0"} + } + }, + { + "name": "Back", + "from": [10, 5, 19], + "to": [12, 7, 24], + "rotation": {"angle": -45, "axis": "z", "origin": [6, 6, 20]}, + "faces": { + "north": {"uv": [7.75, 6.5, 8.25, 7], "texture": "#0"}, + "east": {"uv": [7.5, 2.25, 8.75, 2.75], "texture": "#0"}, + "south": {"uv": [8, 1.5, 8.5, 2], "texture": "#0"}, + "west": {"uv": [0.5, 7.25, 1.75, 7.75], "texture": "#0"}, + "up": {"uv": [8, 4, 7.5, 2.75], "texture": "#0"}, + "down": {"uv": [8, 2.75, 7.5, 4], "texture": "#0"} + } + }, + { + "name": "Back", + "from": [8, 7, 19], + "to": [10, 9, 24], + "rotation": {"angle": -45, "axis": "z", "origin": [6, 6, 20]}, + "faces": { + "north": {"uv": [7.75, 6.5, 8.25, 7], "texture": "#0"}, + "east": {"uv": [7.5, 2.25, 8.75, 2.75], "texture": "#0"}, + "south": {"uv": [8, 1.5, 8.5, 2], "texture": "#0"}, + "west": {"uv": [7.5, 2.25, 8.75, 2.75], "texture": "#0"}, + "up": {"uv": [8, 4, 7.5, 2.75], "texture": "#0"}, + "down": {"uv": [2.75, 7.25, 2.25, 8.5], "texture": "#0"} + } + }, + { + "name": "Handle", + "from": [6, -5, 4], + "to": [8, 0, 5], + "rotation": {"angle": -22.5, "axis": "x", "origin": [0, 0, 0]}, + "faces": { + "north": {"uv": [0, 7.75, 0.5, 9], "texture": "#0"}, + "east": {"uv": [0, 7.75, 0.25, 9], "texture": "#0"}, + "south": {"uv": [0, 7.75, 0.5, 9], "texture": "#0"}, + "west": {"uv": [0.125, 7.75, 0.375, 9], "texture": "#0"}, + "up": {"uv": [7.5, 8.25, 7, 8], "texture": "#0"}, + "down": {"uv": [0.5, 8.875, 0.25, 9], "texture": "#0"} + } + }, + { + "name": "Pipe", + "from": [11, 3, 5], + "to": [12, 5, 14], + "faces": { + "north": {"uv": [6.875, 0.75, 7.125, 1.25], "texture": "#0"}, + "east": {"uv": [6.75, 0.75, 9, 1.25], "texture": "#0"}, + "south": {"uv": [8, 7.5, 8.25, 8], "texture": "#0"}, + "west": {"uv": [5.5, 6.5, 7.75, 7], "texture": "#0"}, + "up": {"uv": [10.5, 2.5, 10.25, 0.25], "texture": "#0"}, + "down": {"uv": [10.5, 0.25, 10.25, 2.5], "texture": "#0"} + } + }, + { + "name": "Pipe", + "from": [4, 3, 5], + "to": [5, 5, 14], + "faces": { + "north": {"uv": [7, 1.25, 7.25, 1.75], "texture": "#0"}, + "east": {"uv": [7, 3.5, 9.25, 4], "texture": "#0"}, + "south": {"uv": [8.25, 0.5, 8.5, 1], "texture": "#0"}, + "west": {"uv": [6.75, 1.25, 9, 1.75], "texture": "#0"}, + "up": {"uv": [10.75, 2.5, 10.5, 0.25], "texture": "#0"}, + "down": {"uv": [10.75, 0.25, 10.5, 2.5], "texture": "#0"} + } + }, + { + "name": "Back", + "from": [6, 5, 19], + "to": [8, 7, 24], + "rotation": {"angle": -45, "axis": "z", "origin": [6, 6, 20]}, + "faces": { + "north": {"uv": [7.75, 6.5, 8.25, 7], "texture": "#0"}, + "east": {"uv": [7.25, 0, 8.5, 0.5], "texture": "#0"}, + "south": {"uv": [8, 1.5, 8.5, 2], "texture": "#0"}, + "west": {"uv": [7.5, 2.25, 8.75, 2.75], "texture": "#0"}, + "up": {"uv": [8, 4, 7.5, 2.75], "texture": "#0"}, + "down": {"uv": [8, 2.75, 7.5, 4], "texture": "#0"} + } + }, + { + "name": "Tank", + "from": [6, 7, 11], + "to": [10, 9, 17], + "faces": { + "north": {"uv": [7.75, 6.75, 8.75, 7.25], "texture": "#0"}, + "east": {"uv": [5.5, 7.25, 7, 7.75], "texture": "#0"}, + "south": {"uv": [7.75, 6.75, 8.75, 7.25], "texture": "#0"}, + "west": {"uv": [5.5, 7.25, 7, 7.75], "texture": "#0"}, + "up": {"uv": [4, 8, 3, 6.5], "texture": "#0"}, + "down": {"uv": [7.5, 1.5, 6.5, 3], "texture": "#0"} + } + }, + { + "name": "Pipe", + "from": [5, 7, 14], + "to": [7, 8, 16], + "faces": { + "north": {"uv": [7, 4.25, 7.5, 4.5], "texture": "#0"}, + "east": {"uv": [8.25, 1.25, 8.75, 1.5], "texture": "#0"}, + "south": {"uv": [7, 4.5, 7.5, 4.75], "texture": "#0"}, + "west": {"uv": [8.25, 6.75, 8.75, 7], "texture": "#0"}, + "up": {"uv": [7.5, 5.5, 7, 5], "texture": "#0"}, + "down": {"uv": [8.5, 2.5, 8, 3], "texture": "#0"} + } + }, + { + "name": "Pipe", + "from": [9, 7, 14], + "to": [11, 8, 16], + "faces": { + "north": {"uv": [7, 4.5, 7.5, 4.75], "texture": "#0"}, + "east": {"uv": [7.5, 8.25, 8, 8.5], "texture": "#0"}, + "south": {"uv": [7, 4.5, 7.5, 4.75], "texture": "#0"}, + "west": {"uv": [8.25, 7.75, 8.75, 8], "texture": "#0"}, + "up": {"uv": [7.5, 5.5, 7, 5], "texture": "#0"}, + "down": {"uv": [6.5, 8, 6, 8.5], "texture": "#0"} + } + }, + { + "name": "Pipe", + "from": [11, 3, 14], + "to": [12, 8, 16], + "faces": { + "north": {"uv": [7, 4.25, 7.25, 5.5], "texture": "#0"}, + "east": {"uv": [7, 4.25, 7.5, 5.5], "texture": "#0"}, + "south": {"uv": [7.25, 4.25, 7.5, 5.5], "texture": "#0"}, + "west": {"uv": [0.5, 7.75, 1, 8.75], "texture": "#0"}, + "up": {"uv": [7.25, 5.5, 7, 5], "texture": "#0"}, + "down": {"uv": [7.5, 5, 7.25, 5.5], "texture": "#0"} + } + }, + { + "name": "Pipe", + "from": [4, 3, 14], + "to": [5, 8, 16], + "faces": { + "north": {"uv": [7.25, 4.25, 7.5, 5.5], "texture": "#0"}, + "east": {"uv": [7.75, 0.5, 8.25, 1.5], "texture": "#0"}, + "south": {"uv": [7, 4.25, 7.25, 5.5], "texture": "#0"}, + "west": {"uv": [7, 4.25, 7.5, 5.5], "texture": "#0"}, + "up": {"uv": [7.5, 5.5, 7.25, 5], "texture": "#0"}, + "down": {"uv": [7.25, 5, 7, 5.5], "texture": "#0"} + } + }, + { + "name": "Grip", + "from": [7, 0, 2], + "to": [9, 1, 19], + "faces": { + "north": {"uv": [8.5, 0.5, 9, 0.75], "texture": "#0"}, + "east": {"uv": [5.5, 6.5, 10, 6.75], "texture": "#0"}, + "south": {"uv": [6, 6.25, 6.5, 6.5], "texture": "#0"}, + "west": {"uv": [5.5, 6.5, 10, 6.75], "texture": "#0"}, + "up": {"uv": [5.5, 8, 5, 3.5], "texture": "#0"}, + "down": {"uv": [5, 5, 4.5, 9.5], "texture": "#0"} + } + }, + { + "name": "Back", + "from": [5, 1, 24], + "to": [11, 7, 25], + "rotation": {"angle": 0, "axis": "y", "origin": [0, 0, -1]}, + "faces": { + "north": {"uv": [5.5, 3.5, 7, 5], "texture": "#0"}, + "east": {"uv": [1.5, 7.75, 1.75, 9.25], "texture": "#0"}, + "south": {"uv": [5.5, 3.5, 7, 5], "texture": "#0"}, + "west": {"uv": [1.125, 8.125, 1.375, 9.625], "texture": "#0"}, + "up": {"uv": [1.625, 9.375, 0.125, 9.125], "texture": "#0"}, + "down": {"uv": [1.5, 9.5, 0, 9.75], "texture": "#0"} + } + }, + { + "from": [4, 0, 0], + "to": [12, 8, 2], + "faces": { + "north": {"uv": [3, 3, 5, 5], "texture": "#0"}, + "east": {"uv": [2, 10, 2.5, 12], "texture": "#0"}, + "south": {"uv": [3, 3, 5, 5], "texture": "#0"}, + "west": {"uv": [2, 10, 2.5, 12], "texture": "#0"}, + "up": {"uv": [2, 11.125, 0, 10.625], "texture": "#0"}, + "down": {"uv": [2, 10.625, 0, 11.125], "texture": "#0"} + } + } + ], + "display": { + "thirdperson_righthand": { + "translation": [1.75, 6.75, 3.75] + }, + "thirdperson_lefthand": { + "translation": [1.75, 6.75, 3.75] + }, + "firstperson_righthand": { + "translation": [0, 10.75, 5.25] + }, + "firstperson_lefthand": { + "translation": [0, 10.75, 5.25] + }, + "ground": { + "rotation": [0, 0, 90], + "translation": [-3.5, 0.75, -4.25] + }, + "gui": { + "rotation": [40, 39, -6], + "translation": [-1.5, 3.5, 0], + "scale": [0.7, 0.7, 0.7] + }, + "head": { + "translation": [0, 14, -2.75] + }, + "fixed": { + "rotation": [-90, 180, 0], + "translation": [0, 4.25, -4.5], + "scale": [0.8, 0.8, 0.8] + } + }, + "groups": [ + { + "name": "group", + "origin": [0, 0, 0], + "color": 0, + "children": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/tfmg/textures/block/copper_encased_steel_pipe.png b/src/main/resources/assets/tfmg/textures/block/copper_encased_steel_pipe.png new file mode 100644 index 00000000..2ce6f97c Binary files /dev/null and b/src/main/resources/assets/tfmg/textures/block/copper_encased_steel_pipe.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 deleted file mode 100644 index c996b711..00000000 Binary files a/src/main/resources/assets/tfmg/textures/block/deposit_scanner.png and /dev/null differ diff --git a/src/main/resources/assets/tfmg/textures/block/steel_sheetmetal.png b/src/main/resources/assets/tfmg/textures/block/steel_sheetmetal.png new file mode 100644 index 00000000..2271dec7 Binary files /dev/null and b/src/main/resources/assets/tfmg/textures/block/steel_sheetmetal.png differ diff --git a/src/main/resources/assets/tfmg/textures/block/steel_sheetmetal_connected.png b/src/main/resources/assets/tfmg/textures/block/steel_sheetmetal_connected.png new file mode 100644 index 00000000..fbb524f6 Binary files /dev/null and b/src/main/resources/assets/tfmg/textures/block/steel_sheetmetal_connected.png differ diff --git a/src/main/resources/assets/tfmg/textures/block/surface_scanner.png b/src/main/resources/assets/tfmg/textures/block/surface_scanner.png new file mode 100644 index 00000000..7362d5e0 Binary files /dev/null and b/src/main/resources/assets/tfmg/textures/block/surface_scanner.png differ