diff --git a/src/generated/resources/.cache/9047e4e94996e73e9dfde3738763637fb609e07e b/src/generated/resources/.cache/9047e4e94996e73e9dfde3738763637fb609e07e index 5bae86a7..d4b037dd 100644 --- a/src/generated/resources/.cache/9047e4e94996e73e9dfde3738763637fb609e07e +++ b/src/generated/resources/.cache/9047e4e94996e73e9dfde3738763637fb609e07e @@ -1,2 +1,2 @@ -// 1.19.2 2023-09-09T21:03:24.5059888 Create: The Factory Must Grow's lang merger -165747b064e1eafffc6b4a6d91249ad3c7e6ca39 assets/tfmg/lang/en_us.json +// 1.19.2 2023-09-17T13:43:24.4728645 Create: The Factory Must Grow's lang merger +b20b2d55c4ecebb0f868c512c69646ba4d3d98cf assets/tfmg/lang/en_us.json diff --git a/src/generated/resources/.cache/ad795fb8576279849034d802e60366ec43bb396a b/src/generated/resources/.cache/ad795fb8576279849034d802e60366ec43bb396a index 7700ac63..bf740663 100644 --- a/src/generated/resources/.cache/ad795fb8576279849034d802e60366ec43bb396a +++ b/src/generated/resources/.cache/ad795fb8576279849034d802e60366ec43bb396a @@ -1,8 +1,10 @@ -// 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)] +// 1.19.2 2023-09-17T11:15:14.4329646 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 9ca537517fb8baeff3d4e4137c93aebd6b874c81 assets/tfmg/blockstates/cast_iron_block.json +e13ba2fa789c784e4b7cfec3dd4603e29152387e assets/tfmg/blockstates/cast_iron_distillation_controller.json +61bcb8f09523c05fe8ee07a4b8b71a59e98393fe assets/tfmg/blockstates/cast_iron_distillation_output.json ec94bedd045ade74274ffe009569d65083b9fff5 assets/tfmg/blockstates/coal_coke_block.json c67b91a7fd9f16cd2d7eaa92dd9b945042d58130 assets/tfmg/blockstates/concrete.json dca4728ef33ca9d54fb55d707761c2eeb77c32b1 assets/tfmg/blockstates/cooling_fluid.json @@ -45,6 +47,8 @@ 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 +d5dfa13540bc12cb5b1d0eb29702242ad757a5da assets/tfmg/blockstates/steel_distillation_controller.json +f1763cd1ea42da0645e17ecc9e0c1a1b02502be1 assets/tfmg/blockstates/steel_distillation_output.json 7334c94b5fe23df91f43048b19c2b22121405603 assets/tfmg/blockstates/steel_door.json 72bfce2a2795dfe461beed7c3a074e328de14d96 assets/tfmg/blockstates/steel_fluid_tank.json e29906d296994a13fefc2beb22f7693e1027dd1b assets/tfmg/blockstates/steel_fluid_valve.json @@ -53,8 +57,8 @@ e29906d296994a13fefc2beb22f7693e1027dd1b assets/tfmg/blockstates/steel_fluid_val 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 +587858610506ca0b063af552a67b96dd3a85e232 assets/tfmg/lang/en_ud.json +595fc774dfdc75f633a922ef452984d0c5d4df1d 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 @@ -63,6 +67,8 @@ b43711f35915b71b15db638538a83a4ea46480dc assets/tfmg/models/block/bauxite_natura 920f96d4b648414ce8331e5a81e6b7ddbce7e225 assets/tfmg/models/block/bauxite_pillar.json cd5ade5f9a0b3b5e28b5d11a685408dd922dbe2d assets/tfmg/models/block/bauxite_pillar_horizontal.json 37789d06ec6cfc0312be7b1b66ac1ec6403d4516 assets/tfmg/models/block/cast_iron_block.json +925d61d0f1379e02c1f8892e3b86be5aa623b9ae assets/tfmg/models/block/cast_iron_distillation_controller.json +73cb08b1b298a3e02731e61326b65f94ef39e9bb assets/tfmg/models/block/cast_iron_distillation_output.json 50c47672a7e9f7180af78c4bef42d5db1822b08b assets/tfmg/models/block/coal_coke_block.json 75c31d328fc5d6d46c8b43e8bde7504f4e51dadc assets/tfmg/models/block/concrete.json 80fb4a90f861992322bfd63f1232593e8cce708e assets/tfmg/models/block/cooling_fluid.json @@ -122,6 +128,8 @@ d29800a63ca2717e056798cf8bb29bf55d29a07c assets/tfmg/models/block/small_bauxite_ a07354a238bd4d5aadee6e60e1d61fcffde43f5b assets/tfmg/models/block/small_bauxite_brick_stairs_outer.json 0ceb30eaff16a495c9a165ca16c925cbff836755 assets/tfmg/models/block/steel_block.json 465b1fed10d06090e5e8d19457f9fa48fe890bb4 assets/tfmg/models/block/steel_casing.json +8ec65bf20fa41bb1b246b4a60feed65c48befb2f assets/tfmg/models/block/steel_distillation_controller.json +2a5a4724f942aab7296062cdaa5259c4a7904e1a assets/tfmg/models/block/steel_distillation_output.json 0c4fcf6e901d8eba56ba67999fcf0801534779d6 assets/tfmg/models/block/steel_pipe/d_x.json 6060082caaef1e6e6fc72606d6a74e64aaeb27ac assets/tfmg/models/block/steel_pipe/d_y.json dc62a6a3de9e73e7341481df09951a7ec3caf944 assets/tfmg/models/block/steel_pipe/d_z.json @@ -158,6 +166,8 @@ f685ca653c8e197986b1ac8f43297989816d39d2 assets/tfmg/models/item/aluminum_ingot. 4ace0da00498fcbb9ddfdf321767b40b095c8778 assets/tfmg/models/item/bauxite.json 41091873d85bac787e4752d0ff81189432f1e28e assets/tfmg/models/item/bauxite_pillar.json ec38882fb9010884823d6d6afa604f8a6512d279 assets/tfmg/models/item/cast_iron_block.json +25acd7ba8827401619c5faf7bdbe60228b411864 assets/tfmg/models/item/cast_iron_distillation_controller.json +fc48286f0e70651f3d5a915558c3c91ae3ad0da6 assets/tfmg/models/item/cast_iron_distillation_output.json da2c28e98d0ddf7166bdf7214c06e81ad8581b90 assets/tfmg/models/item/cast_iron_ingot.json d45fc5511b4c4027889afd3088cd91ba1d8b0501 assets/tfmg/models/item/coal_coke.json 3789a9d72a7ba5daf8c39cccaa665057e63302c6 assets/tfmg/models/item/coal_coke_block.json @@ -204,6 +214,8 @@ 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 +ec731aefdbbbaca3a4dac8ac2d6bd2d0aa6ebef5 assets/tfmg/models/item/steel_distillation_controller.json +77fe5209bfb0a78b94e67b807401cde95975d402 assets/tfmg/models/item/steel_distillation_output.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 @@ -246,8 +258,8 @@ d26621b9617890011a68780cf7ab40fbb4658edc data/forge/tags/items/storage_blocks/le 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 -2acf4cf271b27f01f5581199338af9054b239529 data/minecraft/tags/blocks/mineable/pickaxe.json +9b558f29e672499a30354b9113c1d494e858b208 data/minecraft/tags/blocks/mineable/axe.json +cd64e606ab00398ec320c641e554951e7f30aedd data/minecraft/tags/blocks/mineable/pickaxe.json 63c4a8d8e713db70730e766f1a10f8dd9072f98f data/minecraft/tags/blocks/moss_replaceable.json f67e51a16b6d140324ca0201f1b05e672eb63774 data/minecraft/tags/blocks/needs_iron_tool.json 755548d9019c1bb26a568488912ebfdf399e02d2 data/minecraft/tags/blocks/needs_stone_tool.json @@ -299,6 +311,8 @@ a4b393a2526bd10fa38095ac80769f913f139889 data/tfmg/loot_tables/blocks/aluminum_b 56d114d40ea3160b5c06cf9cfaa2e5107543c460 data/tfmg/loot_tables/blocks/bauxite.json 473b0effd9a768189aa232855cd09e7b380c3adc data/tfmg/loot_tables/blocks/bauxite_pillar.json 60857d034446187e758de87644a80a7bc4d6b150 data/tfmg/loot_tables/blocks/cast_iron_block.json +300a96dcae25ba9bc085ee75f066b4ad2590b6e0 data/tfmg/loot_tables/blocks/cast_iron_distillation_controller.json +24517e07383f7a7eb8651f58721cf9f6f49393c0 data/tfmg/loot_tables/blocks/cast_iron_distillation_output.json 5158b18945a39616eef93de8de61dd948fc96f0a data/tfmg/loot_tables/blocks/coal_coke_block.json d32a75f20ca3f2da6ba69b0a91e295c63f65de92 data/tfmg/loot_tables/blocks/concrete.json 1622328d319fc3c71269b0f9f1aef43a77132f3a data/tfmg/loot_tables/blocks/copper_encased_steel_pipe.json @@ -329,6 +343,8 @@ 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 +d0dfd69e4ebbcd28a2f0666bb3f3713a0bfa9863 data/tfmg/loot_tables/blocks/steel_distillation_controller.json +9a6f972c9424afccebf48048ce1efacacd7da2a7 data/tfmg/loot_tables/blocks/steel_distillation_output.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 diff --git a/src/generated/resources/assets/tfmg/blockstates/cast_iron_distillation_controller.json b/src/generated/resources/assets/tfmg/blockstates/cast_iron_distillation_controller.json new file mode 100644 index 00000000..1ebaa6c7 --- /dev/null +++ b/src/generated/resources/assets/tfmg/blockstates/cast_iron_distillation_controller.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "tfmg:block/cast_iron_distillation_controller" + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/tfmg/blockstates/cast_iron_distillation_output.json b/src/generated/resources/assets/tfmg/blockstates/cast_iron_distillation_output.json new file mode 100644 index 00000000..bcc52d42 --- /dev/null +++ b/src/generated/resources/assets/tfmg/blockstates/cast_iron_distillation_output.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "tfmg:block/cast_iron_distillation_output" + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/tfmg/blockstates/steel_distillation_controller.json b/src/generated/resources/assets/tfmg/blockstates/steel_distillation_controller.json new file mode 100644 index 00000000..c9d593a8 --- /dev/null +++ b/src/generated/resources/assets/tfmg/blockstates/steel_distillation_controller.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "tfmg:block/steel_distillation_controller" + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/tfmg/blockstates/steel_distillation_output.json b/src/generated/resources/assets/tfmg/blockstates/steel_distillation_output.json new file mode 100644 index 00000000..0bde4bf0 --- /dev/null +++ b/src/generated/resources/assets/tfmg/blockstates/steel_distillation_output.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "tfmg:block/steel_distillation_output" + } + } +} \ 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 4821972a..278d4fb6 100644 --- a/src/generated/resources/assets/tfmg/lang/en_ud.json +++ b/src/generated/resources/assets/tfmg/lang/en_ud.json @@ -3,6 +3,8 @@ "block.tfmg.bauxite": "ǝʇıxnɐᗺ", "block.tfmg.bauxite_pillar": "ɹɐןןıԀ ǝʇıxnɐᗺ", "block.tfmg.cast_iron_block": "uoɹI ʇsɐƆ ɟo ʞɔoןᗺ", + "block.tfmg.cast_iron_distillation_controller": "ɹǝןןoɹʇuoƆ uoıʇɐןןıʇsıᗡ uoɹI ʇsɐƆ", + "block.tfmg.cast_iron_distillation_output": "ʇndʇnO uoıʇɐןןıʇsıᗡ uoɹI ʇsɐƆ", "block.tfmg.coal_coke_block": "ǝʞoƆ ןɐoƆ ɟo ʞɔoןᗺ", "block.tfmg.concrete": "ǝʇǝɹɔuoƆ", "block.tfmg.cooling_fluid": "pınןℲ buıןooƆ", @@ -45,6 +47,8 @@ "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_distillation_controller": "ɹǝןןoɹʇuoƆ uoıʇɐןןıʇsıᗡ ןǝǝʇS", + "block.tfmg.steel_distillation_output": "ʇndʇnO uoıʇɐןןıʇ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", diff --git a/src/generated/resources/assets/tfmg/lang/en_us.json b/src/generated/resources/assets/tfmg/lang/en_us.json index 1981eff5..20a5fadf 100644 --- a/src/generated/resources/assets/tfmg/lang/en_us.json +++ b/src/generated/resources/assets/tfmg/lang/en_us.json @@ -6,6 +6,8 @@ "block.tfmg.bauxite": "Bauxite", "block.tfmg.bauxite_pillar": "Bauxite Pillar", "block.tfmg.cast_iron_block": "Block of Cast Iron", + "block.tfmg.cast_iron_distillation_controller": "Cast Iron Distillation Controller", + "block.tfmg.cast_iron_distillation_output": "Cast Iron Distillation Output", "block.tfmg.coal_coke_block": "Block of Coal Coke", "block.tfmg.concrete": "Concrete", "block.tfmg.cooling_fluid": "Cooling Fluid", @@ -48,6 +50,8 @@ "block.tfmg.small_bauxite_bricks": "Small Bauxite Bricks", "block.tfmg.steel_block": "Block of Steel", "block.tfmg.steel_casing": "Steel Casing", + "block.tfmg.steel_distillation_controller": "Steel Distillation Controller", + "block.tfmg.steel_distillation_output": "Steel Distillation Output", "block.tfmg.steel_door": "Steel Door", "block.tfmg.steel_fluid_tank": "Steel Fluid Tank", "block.tfmg.steel_fluid_valve": "Steel Fluid Valve", @@ -111,6 +115,20 @@ "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", + "create.goggles.distillation_tower.tank_not_found": "Steel Fluid Tank Not Found", + "create.goggles.distillation_tower.level": "Distillation Tower Level: %1$s", + "create.goggles.distillation_tower.found_outputs": "Found Outputs: %1$s", + "create.goggles.distillation_tower.no_outputs": "No Output Blocks Found", + "create.goggles.distillation_tower.status": "Distillation Tower Info:", + "create.goggles.fluid_in_tank": "Fluid In Tank:", "_": "->------------------------] UI & Messages [------------------------<-", @@ -122,11 +140,18 @@ "create.goggles.misc.dot_one": ".", "create.goggles.misc.dot_two": "..", "create.goggles.misc.dot_three": "...", + "create.goggles.fluid_in_tank": "Fluid In Tank:", "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", + "create.goggles.distillation_tower.status": "Distillation Tower Info:", + "create.goggles.distillation_tower.tank_not_found": "Steel Fluid Tank Not Found", + "create.goggles.distillation_tower.not_tall_enough": "Distillation Tower is Not Tall Enough", + "create.goggles.distillation_tower.level": "Distillation Tower Level: %1$s", + "create.goggles.distillation_tower.found_outputs": "Found Outputs: %1$s", + "create.goggles.distillation_tower.no_outputs": "No Output Blocks Found", "_": "Thank you for translating Create: The Factory Must Grow!" diff --git a/src/generated/resources/assets/tfmg/models/block/cast_iron_distillation_controller.json b/src/generated/resources/assets/tfmg/models/block/cast_iron_distillation_controller.json new file mode 100644 index 00000000..1b0dbbfb --- /dev/null +++ b/src/generated/resources/assets/tfmg/models/block/cast_iron_distillation_controller.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/cube_all", + "textures": { + "all": "tfmg:block/cast_iron_distillation_controller" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/tfmg/models/block/cast_iron_distillation_output.json b/src/generated/resources/assets/tfmg/models/block/cast_iron_distillation_output.json new file mode 100644 index 00000000..701cebe4 --- /dev/null +++ b/src/generated/resources/assets/tfmg/models/block/cast_iron_distillation_output.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/cube_all", + "textures": { + "all": "tfmg:block/cast_iron_distillation_output" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/tfmg/models/block/steel_distillation_controller.json b/src/generated/resources/assets/tfmg/models/block/steel_distillation_controller.json new file mode 100644 index 00000000..d677a239 --- /dev/null +++ b/src/generated/resources/assets/tfmg/models/block/steel_distillation_controller.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/cube_all", + "textures": { + "all": "tfmg:block/steel_distillation_controller" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/tfmg/models/block/steel_distillation_output.json b/src/generated/resources/assets/tfmg/models/block/steel_distillation_output.json new file mode 100644 index 00000000..b047357c --- /dev/null +++ b/src/generated/resources/assets/tfmg/models/block/steel_distillation_output.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/cube_all", + "textures": { + "all": "tfmg:block/steel_distillation_output" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/tfmg/models/item/cast_iron_distillation_controller.json b/src/generated/resources/assets/tfmg/models/item/cast_iron_distillation_controller.json new file mode 100644 index 00000000..ffef5b8d --- /dev/null +++ b/src/generated/resources/assets/tfmg/models/item/cast_iron_distillation_controller.json @@ -0,0 +1,3 @@ +{ + "parent": "tfmg:block/cast_iron_distillation_controller" +} \ No newline at end of file diff --git a/src/generated/resources/assets/tfmg/models/item/cast_iron_distillation_output.json b/src/generated/resources/assets/tfmg/models/item/cast_iron_distillation_output.json new file mode 100644 index 00000000..31310d25 --- /dev/null +++ b/src/generated/resources/assets/tfmg/models/item/cast_iron_distillation_output.json @@ -0,0 +1,3 @@ +{ + "parent": "tfmg:block/cast_iron_distillation_output" +} \ No newline at end of file diff --git a/src/generated/resources/assets/tfmg/models/item/steel_distillation_controller.json b/src/generated/resources/assets/tfmg/models/item/steel_distillation_controller.json new file mode 100644 index 00000000..95930b56 --- /dev/null +++ b/src/generated/resources/assets/tfmg/models/item/steel_distillation_controller.json @@ -0,0 +1,3 @@ +{ + "parent": "tfmg:block/steel_distillation_controller" +} \ No newline at end of file diff --git a/src/generated/resources/assets/tfmg/models/item/steel_distillation_output.json b/src/generated/resources/assets/tfmg/models/item/steel_distillation_output.json new file mode 100644 index 00000000..3517bc6e --- /dev/null +++ b/src/generated/resources/assets/tfmg/models/item/steel_distillation_output.json @@ -0,0 +1,3 @@ +{ + "parent": "tfmg:block/steel_distillation_output" +} \ No newline at end of file diff --git a/src/generated/resources/data/minecraft/tags/blocks/mineable/axe.json b/src/generated/resources/data/minecraft/tags/blocks/mineable/axe.json index 74f42144..a5260c83 100644 --- a/src/generated/resources/data/minecraft/tags/blocks/mineable/axe.json +++ b/src/generated/resources/data/minecraft/tags/blocks/mineable/axe.json @@ -3,6 +3,8 @@ "tfmg:steel_casing", "tfmg:heavy_machinery_casing", "tfmg:formwork_block", - "tfmg:copper_encased_steel_pipe" + "tfmg:copper_encased_steel_pipe", + "tfmg:cast_iron_distillation_output", + "tfmg:steel_distillation_output" ] } \ 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 f6100e1f..966401a4 100644 --- a/src/generated/resources/data/minecraft/tags/blocks/mineable/pickaxe.json +++ b/src/generated/resources/data/minecraft/tags/blocks/mineable/pickaxe.json @@ -12,6 +12,8 @@ "tfmg:steel_smart_fluid_pipe", "tfmg:steel_fluid_valve", "tfmg:steel_fluid_tank", + "tfmg:cast_iron_distillation_output", + "tfmg:steel_distillation_output", "tfmg:steel_block", "tfmg:cast_iron_block", "tfmg:aluminum_block", diff --git a/src/generated/resources/data/tfmg/loot_tables/blocks/cast_iron_distillation_controller.json b/src/generated/resources/data/tfmg/loot_tables/blocks/cast_iron_distillation_controller.json new file mode 100644 index 00000000..52fc6acc --- /dev/null +++ b/src/generated/resources/data/tfmg/loot_tables/blocks/cast_iron_distillation_controller.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "tfmg:cast_iron_distillation_controller" + } + ], + "rolls": 1.0 + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/tfmg/loot_tables/blocks/cast_iron_distillation_output.json b/src/generated/resources/data/tfmg/loot_tables/blocks/cast_iron_distillation_output.json new file mode 100644 index 00000000..d997af23 --- /dev/null +++ b/src/generated/resources/data/tfmg/loot_tables/blocks/cast_iron_distillation_output.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "tfmg:cast_iron_distillation_output" + } + ], + "rolls": 1.0 + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/tfmg/loot_tables/blocks/steel_distillation_controller.json b/src/generated/resources/data/tfmg/loot_tables/blocks/steel_distillation_controller.json new file mode 100644 index 00000000..bae47806 --- /dev/null +++ b/src/generated/resources/data/tfmg/loot_tables/blocks/steel_distillation_controller.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_distillation_controller" + } + ], + "rolls": 1.0 + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/tfmg/loot_tables/blocks/steel_distillation_output.json b/src/generated/resources/data/tfmg/loot_tables/blocks/steel_distillation_output.json new file mode 100644 index 00000000..9f8ab778 --- /dev/null +++ b/src/generated/resources/data/tfmg/loot_tables/blocks/steel_distillation_output.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_distillation_output" + } + ], + "rolls": 1.0 + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/tfmg/recipes/bauxite_from_stone_types_bauxite_stonecutting.json b/src/generated/resources/data/tfmg/recipes/bauxite_from_stone_types_bauxite_stonecutting.json new file mode 100644 index 00000000..d7408f0f --- /dev/null +++ b/src/generated/resources/data/tfmg/recipes/bauxite_from_stone_types_bauxite_stonecutting.json @@ -0,0 +1,8 @@ +{ + "type": "minecraft:stonecutting", + "count": 1, + "ingredient": { + "tag": "tfmg:stone_types/bauxite" + }, + "result": "tfmg:bauxite" +} \ No newline at end of file diff --git a/src/generated/resources/data/tfmg/recipes/bauxite_pillar_from_stone_types_bauxite_stonecutting.json b/src/generated/resources/data/tfmg/recipes/bauxite_pillar_from_stone_types_bauxite_stonecutting.json new file mode 100644 index 00000000..dbab2729 --- /dev/null +++ b/src/generated/resources/data/tfmg/recipes/bauxite_pillar_from_stone_types_bauxite_stonecutting.json @@ -0,0 +1,8 @@ +{ + "type": "minecraft:stonecutting", + "count": 1, + "ingredient": { + "tag": "tfmg:stone_types/bauxite" + }, + "result": "tfmg:bauxite_pillar" +} \ No newline at end of file diff --git a/src/generated/resources/data/tfmg/recipes/cut_bauxite_brick_slab.json b/src/generated/resources/data/tfmg/recipes/cut_bauxite_brick_slab.json new file mode 100644 index 00000000..7e9b6110 --- /dev/null +++ b/src/generated/resources/data/tfmg/recipes/cut_bauxite_brick_slab.json @@ -0,0 +1,16 @@ +{ + "type": "minecraft:crafting_shaped", + "group": "cut_bauxite_brick_slab", + "key": { + "X": { + "item": "tfmg:cut_bauxite_bricks" + } + }, + "pattern": [ + "XXX" + ], + "result": { + "count": 6, + "item": "tfmg:cut_bauxite_brick_slab" + } +} \ No newline at end of file diff --git a/src/generated/resources/data/tfmg/recipes/cut_bauxite_brick_slab_from_stone_types_bauxite_stonecutting.json b/src/generated/resources/data/tfmg/recipes/cut_bauxite_brick_slab_from_stone_types_bauxite_stonecutting.json new file mode 100644 index 00000000..82519606 --- /dev/null +++ b/src/generated/resources/data/tfmg/recipes/cut_bauxite_brick_slab_from_stone_types_bauxite_stonecutting.json @@ -0,0 +1,8 @@ +{ + "type": "minecraft:stonecutting", + "count": 2, + "ingredient": { + "tag": "tfmg:stone_types/bauxite" + }, + "result": "tfmg:cut_bauxite_brick_slab" +} \ No newline at end of file diff --git a/src/generated/resources/data/tfmg/recipes/cut_bauxite_brick_slab_recycling.json b/src/generated/resources/data/tfmg/recipes/cut_bauxite_brick_slab_recycling.json new file mode 100644 index 00000000..443965fb --- /dev/null +++ b/src/generated/resources/data/tfmg/recipes/cut_bauxite_brick_slab_recycling.json @@ -0,0 +1,14 @@ +{ + "type": "minecraft:crafting_shapeless", + "ingredients": [ + { + "item": "tfmg:cut_bauxite_brick_slab" + }, + { + "item": "tfmg:cut_bauxite_brick_slab" + } + ], + "result": { + "item": "tfmg:cut_bauxite_bricks" + } +} \ No newline at end of file diff --git a/src/generated/resources/data/tfmg/recipes/cut_bauxite_brick_stairs.json b/src/generated/resources/data/tfmg/recipes/cut_bauxite_brick_stairs.json new file mode 100644 index 00000000..c8cd57be --- /dev/null +++ b/src/generated/resources/data/tfmg/recipes/cut_bauxite_brick_stairs.json @@ -0,0 +1,18 @@ +{ + "type": "minecraft:crafting_shaped", + "group": "cut_bauxite_brick_stairs", + "key": { + "X": { + "item": "tfmg:cut_bauxite_bricks" + } + }, + "pattern": [ + "X ", + "XX ", + "XXX" + ], + "result": { + "count": 4, + "item": "tfmg:cut_bauxite_brick_stairs" + } +} \ No newline at end of file diff --git a/src/generated/resources/data/tfmg/recipes/cut_bauxite_brick_stairs_from_stone_types_bauxite_stonecutting.json b/src/generated/resources/data/tfmg/recipes/cut_bauxite_brick_stairs_from_stone_types_bauxite_stonecutting.json new file mode 100644 index 00000000..fd25aaa1 --- /dev/null +++ b/src/generated/resources/data/tfmg/recipes/cut_bauxite_brick_stairs_from_stone_types_bauxite_stonecutting.json @@ -0,0 +1,8 @@ +{ + "type": "minecraft:stonecutting", + "count": 1, + "ingredient": { + "tag": "tfmg:stone_types/bauxite" + }, + "result": "tfmg:cut_bauxite_brick_stairs" +} \ No newline at end of file diff --git a/src/generated/resources/data/tfmg/recipes/cut_bauxite_brick_wall.json b/src/generated/resources/data/tfmg/recipes/cut_bauxite_brick_wall.json new file mode 100644 index 00000000..4ee119a7 --- /dev/null +++ b/src/generated/resources/data/tfmg/recipes/cut_bauxite_brick_wall.json @@ -0,0 +1,16 @@ +{ + "type": "minecraft:crafting_shaped", + "key": { + "X": { + "item": "tfmg:cut_bauxite_bricks" + } + }, + "pattern": [ + "XXX", + "XXX" + ], + "result": { + "count": 6, + "item": "tfmg:cut_bauxite_brick_wall" + } +} \ No newline at end of file diff --git a/src/generated/resources/data/tfmg/recipes/cut_bauxite_brick_wall_from_stone_types_bauxite_stonecutting.json b/src/generated/resources/data/tfmg/recipes/cut_bauxite_brick_wall_from_stone_types_bauxite_stonecutting.json new file mode 100644 index 00000000..cbbba670 --- /dev/null +++ b/src/generated/resources/data/tfmg/recipes/cut_bauxite_brick_wall_from_stone_types_bauxite_stonecutting.json @@ -0,0 +1,8 @@ +{ + "type": "minecraft:stonecutting", + "count": 1, + "ingredient": { + "tag": "tfmg:stone_types/bauxite" + }, + "result": "tfmg:cut_bauxite_brick_wall" +} \ No newline at end of file diff --git a/src/generated/resources/data/tfmg/recipes/cut_bauxite_bricks_from_stone_types_bauxite_stonecutting.json b/src/generated/resources/data/tfmg/recipes/cut_bauxite_bricks_from_stone_types_bauxite_stonecutting.json new file mode 100644 index 00000000..2b915ab5 --- /dev/null +++ b/src/generated/resources/data/tfmg/recipes/cut_bauxite_bricks_from_stone_types_bauxite_stonecutting.json @@ -0,0 +1,8 @@ +{ + "type": "minecraft:stonecutting", + "count": 1, + "ingredient": { + "tag": "tfmg:stone_types/bauxite" + }, + "result": "tfmg:cut_bauxite_bricks" +} \ No newline at end of file diff --git a/src/generated/resources/data/tfmg/recipes/cut_bauxite_from_stone_types_bauxite_stonecutting.json b/src/generated/resources/data/tfmg/recipes/cut_bauxite_from_stone_types_bauxite_stonecutting.json new file mode 100644 index 00000000..8fc25b0f --- /dev/null +++ b/src/generated/resources/data/tfmg/recipes/cut_bauxite_from_stone_types_bauxite_stonecutting.json @@ -0,0 +1,8 @@ +{ + "type": "minecraft:stonecutting", + "count": 1, + "ingredient": { + "tag": "tfmg:stone_types/bauxite" + }, + "result": "tfmg:cut_bauxite" +} \ No newline at end of file diff --git a/src/generated/resources/data/tfmg/recipes/cut_bauxite_slab.json b/src/generated/resources/data/tfmg/recipes/cut_bauxite_slab.json new file mode 100644 index 00000000..4ce5bebc --- /dev/null +++ b/src/generated/resources/data/tfmg/recipes/cut_bauxite_slab.json @@ -0,0 +1,16 @@ +{ + "type": "minecraft:crafting_shaped", + "group": "cut_bauxite_slab", + "key": { + "X": { + "item": "tfmg:cut_bauxite" + } + }, + "pattern": [ + "XXX" + ], + "result": { + "count": 6, + "item": "tfmg:cut_bauxite_slab" + } +} \ No newline at end of file diff --git a/src/generated/resources/data/tfmg/recipes/cut_bauxite_slab_from_stone_types_bauxite_stonecutting.json b/src/generated/resources/data/tfmg/recipes/cut_bauxite_slab_from_stone_types_bauxite_stonecutting.json new file mode 100644 index 00000000..f7319fa1 --- /dev/null +++ b/src/generated/resources/data/tfmg/recipes/cut_bauxite_slab_from_stone_types_bauxite_stonecutting.json @@ -0,0 +1,8 @@ +{ + "type": "minecraft:stonecutting", + "count": 2, + "ingredient": { + "tag": "tfmg:stone_types/bauxite" + }, + "result": "tfmg:cut_bauxite_slab" +} \ No newline at end of file diff --git a/src/generated/resources/data/tfmg/recipes/cut_bauxite_slab_recycling.json b/src/generated/resources/data/tfmg/recipes/cut_bauxite_slab_recycling.json new file mode 100644 index 00000000..2aa94ac8 --- /dev/null +++ b/src/generated/resources/data/tfmg/recipes/cut_bauxite_slab_recycling.json @@ -0,0 +1,14 @@ +{ + "type": "minecraft:crafting_shapeless", + "ingredients": [ + { + "item": "tfmg:cut_bauxite_slab" + }, + { + "item": "tfmg:cut_bauxite_slab" + } + ], + "result": { + "item": "tfmg:cut_bauxite" + } +} \ No newline at end of file diff --git a/src/generated/resources/data/tfmg/recipes/cut_bauxite_stairs.json b/src/generated/resources/data/tfmg/recipes/cut_bauxite_stairs.json new file mode 100644 index 00000000..022fd22e --- /dev/null +++ b/src/generated/resources/data/tfmg/recipes/cut_bauxite_stairs.json @@ -0,0 +1,18 @@ +{ + "type": "minecraft:crafting_shaped", + "group": "cut_bauxite_stairs", + "key": { + "X": { + "item": "tfmg:cut_bauxite" + } + }, + "pattern": [ + "X ", + "XX ", + "XXX" + ], + "result": { + "count": 4, + "item": "tfmg:cut_bauxite_stairs" + } +} \ No newline at end of file diff --git a/src/generated/resources/data/tfmg/recipes/cut_bauxite_stairs_from_stone_types_bauxite_stonecutting.json b/src/generated/resources/data/tfmg/recipes/cut_bauxite_stairs_from_stone_types_bauxite_stonecutting.json new file mode 100644 index 00000000..7eba9d75 --- /dev/null +++ b/src/generated/resources/data/tfmg/recipes/cut_bauxite_stairs_from_stone_types_bauxite_stonecutting.json @@ -0,0 +1,8 @@ +{ + "type": "minecraft:stonecutting", + "count": 1, + "ingredient": { + "tag": "tfmg:stone_types/bauxite" + }, + "result": "tfmg:cut_bauxite_stairs" +} \ No newline at end of file diff --git a/src/generated/resources/data/tfmg/recipes/cut_bauxite_wall.json b/src/generated/resources/data/tfmg/recipes/cut_bauxite_wall.json new file mode 100644 index 00000000..703f941c --- /dev/null +++ b/src/generated/resources/data/tfmg/recipes/cut_bauxite_wall.json @@ -0,0 +1,16 @@ +{ + "type": "minecraft:crafting_shaped", + "key": { + "X": { + "item": "tfmg:cut_bauxite" + } + }, + "pattern": [ + "XXX", + "XXX" + ], + "result": { + "count": 6, + "item": "tfmg:cut_bauxite_wall" + } +} \ No newline at end of file diff --git a/src/generated/resources/data/tfmg/recipes/cut_bauxite_wall_from_stone_types_bauxite_stonecutting.json b/src/generated/resources/data/tfmg/recipes/cut_bauxite_wall_from_stone_types_bauxite_stonecutting.json new file mode 100644 index 00000000..cb930e93 --- /dev/null +++ b/src/generated/resources/data/tfmg/recipes/cut_bauxite_wall_from_stone_types_bauxite_stonecutting.json @@ -0,0 +1,8 @@ +{ + "type": "minecraft:stonecutting", + "count": 1, + "ingredient": { + "tag": "tfmg:stone_types/bauxite" + }, + "result": "tfmg:cut_bauxite_wall" +} \ No newline at end of file diff --git a/src/generated/resources/data/tfmg/recipes/layered_bauxite_from_stone_types_bauxite_stonecutting.json b/src/generated/resources/data/tfmg/recipes/layered_bauxite_from_stone_types_bauxite_stonecutting.json new file mode 100644 index 00000000..4a325a71 --- /dev/null +++ b/src/generated/resources/data/tfmg/recipes/layered_bauxite_from_stone_types_bauxite_stonecutting.json @@ -0,0 +1,8 @@ +{ + "type": "minecraft:stonecutting", + "count": 1, + "ingredient": { + "tag": "tfmg:stone_types/bauxite" + }, + "result": "tfmg:layered_bauxite" +} \ No newline at end of file diff --git a/src/generated/resources/data/tfmg/recipes/polished_cut_bauxite_from_stone_types_bauxite_stonecutting.json b/src/generated/resources/data/tfmg/recipes/polished_cut_bauxite_from_stone_types_bauxite_stonecutting.json new file mode 100644 index 00000000..0a7ee73b --- /dev/null +++ b/src/generated/resources/data/tfmg/recipes/polished_cut_bauxite_from_stone_types_bauxite_stonecutting.json @@ -0,0 +1,8 @@ +{ + "type": "minecraft:stonecutting", + "count": 1, + "ingredient": { + "tag": "tfmg:stone_types/bauxite" + }, + "result": "tfmg:polished_cut_bauxite" +} \ No newline at end of file diff --git a/src/generated/resources/data/tfmg/recipes/polished_cut_bauxite_slab.json b/src/generated/resources/data/tfmg/recipes/polished_cut_bauxite_slab.json new file mode 100644 index 00000000..b8ef9836 --- /dev/null +++ b/src/generated/resources/data/tfmg/recipes/polished_cut_bauxite_slab.json @@ -0,0 +1,16 @@ +{ + "type": "minecraft:crafting_shaped", + "group": "polished_cut_bauxite_slab", + "key": { + "X": { + "item": "tfmg:polished_cut_bauxite" + } + }, + "pattern": [ + "XXX" + ], + "result": { + "count": 6, + "item": "tfmg:polished_cut_bauxite_slab" + } +} \ No newline at end of file diff --git a/src/generated/resources/data/tfmg/recipes/polished_cut_bauxite_slab_from_stone_types_bauxite_stonecutting.json b/src/generated/resources/data/tfmg/recipes/polished_cut_bauxite_slab_from_stone_types_bauxite_stonecutting.json new file mode 100644 index 00000000..c9d0e8aa --- /dev/null +++ b/src/generated/resources/data/tfmg/recipes/polished_cut_bauxite_slab_from_stone_types_bauxite_stonecutting.json @@ -0,0 +1,8 @@ +{ + "type": "minecraft:stonecutting", + "count": 2, + "ingredient": { + "tag": "tfmg:stone_types/bauxite" + }, + "result": "tfmg:polished_cut_bauxite_slab" +} \ No newline at end of file diff --git a/src/generated/resources/data/tfmg/recipes/polished_cut_bauxite_slab_recycling.json b/src/generated/resources/data/tfmg/recipes/polished_cut_bauxite_slab_recycling.json new file mode 100644 index 00000000..70ec8875 --- /dev/null +++ b/src/generated/resources/data/tfmg/recipes/polished_cut_bauxite_slab_recycling.json @@ -0,0 +1,14 @@ +{ + "type": "minecraft:crafting_shapeless", + "ingredients": [ + { + "item": "tfmg:polished_cut_bauxite_slab" + }, + { + "item": "tfmg:polished_cut_bauxite_slab" + } + ], + "result": { + "item": "tfmg:polished_cut_bauxite" + } +} \ No newline at end of file diff --git a/src/generated/resources/data/tfmg/recipes/polished_cut_bauxite_stairs.json b/src/generated/resources/data/tfmg/recipes/polished_cut_bauxite_stairs.json new file mode 100644 index 00000000..d3e11707 --- /dev/null +++ b/src/generated/resources/data/tfmg/recipes/polished_cut_bauxite_stairs.json @@ -0,0 +1,18 @@ +{ + "type": "minecraft:crafting_shaped", + "group": "polished_cut_bauxite_stairs", + "key": { + "X": { + "item": "tfmg:polished_cut_bauxite" + } + }, + "pattern": [ + "X ", + "XX ", + "XXX" + ], + "result": { + "count": 4, + "item": "tfmg:polished_cut_bauxite_stairs" + } +} \ No newline at end of file diff --git a/src/generated/resources/data/tfmg/recipes/polished_cut_bauxite_stairs_from_stone_types_bauxite_stonecutting.json b/src/generated/resources/data/tfmg/recipes/polished_cut_bauxite_stairs_from_stone_types_bauxite_stonecutting.json new file mode 100644 index 00000000..1f960e94 --- /dev/null +++ b/src/generated/resources/data/tfmg/recipes/polished_cut_bauxite_stairs_from_stone_types_bauxite_stonecutting.json @@ -0,0 +1,8 @@ +{ + "type": "minecraft:stonecutting", + "count": 1, + "ingredient": { + "tag": "tfmg:stone_types/bauxite" + }, + "result": "tfmg:polished_cut_bauxite_stairs" +} \ No newline at end of file diff --git a/src/generated/resources/data/tfmg/recipes/polished_cut_bauxite_wall.json b/src/generated/resources/data/tfmg/recipes/polished_cut_bauxite_wall.json new file mode 100644 index 00000000..f69491a3 --- /dev/null +++ b/src/generated/resources/data/tfmg/recipes/polished_cut_bauxite_wall.json @@ -0,0 +1,16 @@ +{ + "type": "minecraft:crafting_shaped", + "key": { + "X": { + "item": "tfmg:polished_cut_bauxite" + } + }, + "pattern": [ + "XXX", + "XXX" + ], + "result": { + "count": 6, + "item": "tfmg:polished_cut_bauxite_wall" + } +} \ No newline at end of file diff --git a/src/generated/resources/data/tfmg/recipes/polished_cut_bauxite_wall_from_stone_types_bauxite_stonecutting.json b/src/generated/resources/data/tfmg/recipes/polished_cut_bauxite_wall_from_stone_types_bauxite_stonecutting.json new file mode 100644 index 00000000..9615f1e0 --- /dev/null +++ b/src/generated/resources/data/tfmg/recipes/polished_cut_bauxite_wall_from_stone_types_bauxite_stonecutting.json @@ -0,0 +1,8 @@ +{ + "type": "minecraft:stonecutting", + "count": 1, + "ingredient": { + "tag": "tfmg:stone_types/bauxite" + }, + "result": "tfmg:polished_cut_bauxite_wall" +} \ No newline at end of file diff --git a/src/generated/resources/data/tfmg/recipes/small_bauxite_brick_slab.json b/src/generated/resources/data/tfmg/recipes/small_bauxite_brick_slab.json new file mode 100644 index 00000000..ebd34d9a --- /dev/null +++ b/src/generated/resources/data/tfmg/recipes/small_bauxite_brick_slab.json @@ -0,0 +1,16 @@ +{ + "type": "minecraft:crafting_shaped", + "group": "small_bauxite_brick_slab", + "key": { + "X": { + "item": "tfmg:small_bauxite_bricks" + } + }, + "pattern": [ + "XXX" + ], + "result": { + "count": 6, + "item": "tfmg:small_bauxite_brick_slab" + } +} \ No newline at end of file diff --git a/src/generated/resources/data/tfmg/recipes/small_bauxite_brick_slab_from_stone_types_bauxite_stonecutting.json b/src/generated/resources/data/tfmg/recipes/small_bauxite_brick_slab_from_stone_types_bauxite_stonecutting.json new file mode 100644 index 00000000..71c122e2 --- /dev/null +++ b/src/generated/resources/data/tfmg/recipes/small_bauxite_brick_slab_from_stone_types_bauxite_stonecutting.json @@ -0,0 +1,8 @@ +{ + "type": "minecraft:stonecutting", + "count": 2, + "ingredient": { + "tag": "tfmg:stone_types/bauxite" + }, + "result": "tfmg:small_bauxite_brick_slab" +} \ No newline at end of file diff --git a/src/generated/resources/data/tfmg/recipes/small_bauxite_brick_slab_recycling.json b/src/generated/resources/data/tfmg/recipes/small_bauxite_brick_slab_recycling.json new file mode 100644 index 00000000..62266244 --- /dev/null +++ b/src/generated/resources/data/tfmg/recipes/small_bauxite_brick_slab_recycling.json @@ -0,0 +1,14 @@ +{ + "type": "minecraft:crafting_shapeless", + "ingredients": [ + { + "item": "tfmg:small_bauxite_brick_slab" + }, + { + "item": "tfmg:small_bauxite_brick_slab" + } + ], + "result": { + "item": "tfmg:small_bauxite_bricks" + } +} \ No newline at end of file diff --git a/src/generated/resources/data/tfmg/recipes/small_bauxite_brick_stairs.json b/src/generated/resources/data/tfmg/recipes/small_bauxite_brick_stairs.json new file mode 100644 index 00000000..7295b4df --- /dev/null +++ b/src/generated/resources/data/tfmg/recipes/small_bauxite_brick_stairs.json @@ -0,0 +1,18 @@ +{ + "type": "minecraft:crafting_shaped", + "group": "small_bauxite_brick_stairs", + "key": { + "X": { + "item": "tfmg:small_bauxite_bricks" + } + }, + "pattern": [ + "X ", + "XX ", + "XXX" + ], + "result": { + "count": 4, + "item": "tfmg:small_bauxite_brick_stairs" + } +} \ No newline at end of file diff --git a/src/generated/resources/data/tfmg/recipes/small_bauxite_brick_stairs_from_stone_types_bauxite_stonecutting.json b/src/generated/resources/data/tfmg/recipes/small_bauxite_brick_stairs_from_stone_types_bauxite_stonecutting.json new file mode 100644 index 00000000..ce303468 --- /dev/null +++ b/src/generated/resources/data/tfmg/recipes/small_bauxite_brick_stairs_from_stone_types_bauxite_stonecutting.json @@ -0,0 +1,8 @@ +{ + "type": "minecraft:stonecutting", + "count": 1, + "ingredient": { + "tag": "tfmg:stone_types/bauxite" + }, + "result": "tfmg:small_bauxite_brick_stairs" +} \ No newline at end of file diff --git a/src/generated/resources/data/tfmg/recipes/small_bauxite_brick_wall.json b/src/generated/resources/data/tfmg/recipes/small_bauxite_brick_wall.json new file mode 100644 index 00000000..f87a2789 --- /dev/null +++ b/src/generated/resources/data/tfmg/recipes/small_bauxite_brick_wall.json @@ -0,0 +1,16 @@ +{ + "type": "minecraft:crafting_shaped", + "key": { + "X": { + "item": "tfmg:small_bauxite_bricks" + } + }, + "pattern": [ + "XXX", + "XXX" + ], + "result": { + "count": 6, + "item": "tfmg:small_bauxite_brick_wall" + } +} \ No newline at end of file diff --git a/src/generated/resources/data/tfmg/recipes/small_bauxite_brick_wall_from_stone_types_bauxite_stonecutting.json b/src/generated/resources/data/tfmg/recipes/small_bauxite_brick_wall_from_stone_types_bauxite_stonecutting.json new file mode 100644 index 00000000..7d1f84b6 --- /dev/null +++ b/src/generated/resources/data/tfmg/recipes/small_bauxite_brick_wall_from_stone_types_bauxite_stonecutting.json @@ -0,0 +1,8 @@ +{ + "type": "minecraft:stonecutting", + "count": 1, + "ingredient": { + "tag": "tfmg:stone_types/bauxite" + }, + "result": "tfmg:small_bauxite_brick_wall" +} \ No newline at end of file diff --git a/src/generated/resources/data/tfmg/recipes/small_bauxite_bricks_from_stone_types_bauxite_stonecutting.json b/src/generated/resources/data/tfmg/recipes/small_bauxite_bricks_from_stone_types_bauxite_stonecutting.json new file mode 100644 index 00000000..9c614555 --- /dev/null +++ b/src/generated/resources/data/tfmg/recipes/small_bauxite_bricks_from_stone_types_bauxite_stonecutting.json @@ -0,0 +1,8 @@ +{ + "type": "minecraft:stonecutting", + "count": 1, + "ingredient": { + "tag": "tfmg:stone_types/bauxite" + }, + "result": "tfmg:small_bauxite_bricks" +} \ No newline at end of file diff --git a/src/main/java/com/drmangotea/tfmg/content/machines/oil_processing/distillation/FluidProcessingBlockEntity.java b/src/main/java/com/drmangotea/tfmg/content/machines/oil_processing/distillation/FluidProcessingBlockEntity.java index a96872ea..196fd36e 100644 --- a/src/main/java/com/drmangotea/tfmg/content/machines/oil_processing/distillation/FluidProcessingBlockEntity.java +++ b/src/main/java/com/drmangotea/tfmg/content/machines/oil_processing/distillation/FluidProcessingBlockEntity.java @@ -83,10 +83,11 @@ public abstract class FluidProcessingBlockEntity extends KineticBlockEntity { protected boolean matchItemlessRecipe(Recipe recipe) { if (recipe == null) return false; - Optional basin = getController(); - if (!basin.isPresent()) + Optional controller = getController(); + + if (!controller.isPresent()) return false; - return ItemlessRecipe.match(basin.get(), recipe); + return ItemlessRecipe.match(controller.get(), recipe); } @@ -105,7 +106,7 @@ public abstract class FluidProcessingBlockEntity extends KineticBlockEntity { protected abstract void onBasinRemoved(); - protected Optional getController() { + public Optional getController() { if (level == null) return Optional.empty(); BlockEntity basinTE = level.getBlockEntity(worldPosition.below(1)); diff --git a/src/main/java/com/drmangotea/tfmg/content/machines/oil_processing/distillation/distillation_tower/DistillationControllerBlock.java b/src/main/java/com/drmangotea/tfmg/content/machines/oil_processing/distillation/distillation_tower/DistillationControllerBlock.java new file mode 100644 index 00000000..49d60149 --- /dev/null +++ b/src/main/java/com/drmangotea/tfmg/content/machines/oil_processing/distillation/distillation_tower/DistillationControllerBlock.java @@ -0,0 +1,99 @@ +package com.drmangotea.tfmg.content.machines.oil_processing.distillation.distillation_tower; + + +import com.drmangotea.tfmg.content.machines.tanks.SteelTankBlock; +import com.drmangotea.tfmg.registry.TFMGBlockEntities; +import com.simibubi.create.content.equipment.wrench.IWrenchable; +import com.simibubi.create.foundation.block.IBE; +import net.minecraft.core.BlockPos; +import net.minecraft.world.level.BlockGetter; +import net.minecraft.world.level.Level; +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.pathfinder.PathComputationType; + + +import com.simibubi.create.AllShapes; + +import com.simibubi.create.content.equipment.wrench.IWrenchable; +import com.simibubi.create.foundation.advancement.AdvancementBehaviour; +import com.simibubi.create.foundation.block.IBE; +import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; +import net.minecraft.sounds.SoundEvents; +import net.minecraft.world.entity.Entity; +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.SimpleWaterloggedBlock; +import net.minecraft.world.level.block.state.StateDefinition; + +public class DistillationControllerBlock extends FaceAttachedHorizontalDirectionalBlock + implements IWrenchable, IBE { + + + public DistillationControllerBlock(Properties properties) { + super(properties); + + } + + @Override + protected void createBlockStateDefinition(StateDefinition.Builder pBuilder) { + super.createBlockStateDefinition(pBuilder.add(FACE, FACING)); + } + + + @Override + public boolean canSurvive(BlockState pState, LevelReader pLevel, BlockPos pPos) { + return canAttach(pLevel, pPos, getConnectedDirection(pState).getOpposite()); + } + + public static boolean canAttach(LevelReader pReader, BlockPos pPos, Direction pDirection) { + + return true; + } + + @Override + public void onPlace(BlockState pState, Level pLevel, BlockPos pPos, BlockState pOldState, boolean pIsMoving) { + SteelTankBlock.updateTowerState(pState, pLevel, pPos.relative(getFacing(pState).getOpposite())); + + } + + @Override + public void onRemove(BlockState state, Level world, BlockPos pos, BlockState newState, boolean pIsMoving) { + if (state.hasBlockEntity() && (!state.is(newState.getBlock()) || !newState.hasBlockEntity())) + world.removeBlockEntity(pos); + SteelTankBlock.updateTowerState(state, world, pos.relative(getFacing(state).getOpposite())); + + } + + + + @Override + public boolean isPathfindable(BlockState state, BlockGetter reader, BlockPos pos, PathComputationType type) { + return false; + } + + public static Direction getFacing(BlockState sideState) { + return getConnectedDirection(sideState); + } + + + @Override + public Class getBlockEntityClass() { + return DistillationControllerBlockEntity.class; + } + + @Override + public BlockEntityType getBlockEntityType() { + return TFMGBlockEntities.STEEL_DISTILLATION_CONTROLLER.get(); + } + +} diff --git a/src/main/java/com/drmangotea/tfmg/content/machines/oil_processing/distillation/distillation_tower/DistillationControllerBlockEntity.java b/src/main/java/com/drmangotea/tfmg/content/machines/oil_processing/distillation/distillation_tower/DistillationControllerBlockEntity.java new file mode 100644 index 00000000..35879487 --- /dev/null +++ b/src/main/java/com/drmangotea/tfmg/content/machines/oil_processing/distillation/distillation_tower/DistillationControllerBlockEntity.java @@ -0,0 +1,228 @@ +package com.drmangotea.tfmg.content.machines.oil_processing.distillation.distillation_tower; + +import com.drmangotea.tfmg.content.machines.oil_processing.distillation.distillery.DistilleryControllerBlockEntity; +import com.drmangotea.tfmg.content.machines.tanks.SteelTankBlockEntity; +import com.drmangotea.tfmg.registry.TFMGBlocks; +import com.simibubi.create.content.equipment.goggles.IHaveGoggleInformation; +import com.simibubi.create.foundation.utility.Lang; +import com.simibubi.create.foundation.utility.LangBuilder; +import net.minecraft.ChatFormatting; +import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; +import net.minecraft.network.chat.Component; +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.minecraftforge.common.util.LazyOptional; +import net.minecraftforge.fluids.FluidStack; +import net.minecraftforge.fluids.capability.CapabilityFluidHandler; +import net.minecraftforge.fluids.capability.IFluidHandler; + +import javax.annotation.Nullable; +import java.lang.ref.WeakReference; +import java.util.List; +import java.util.Optional; + +public class DistillationControllerBlockEntity extends DistilleryControllerBlockEntity implements IHaveGoggleInformation { + + public WeakReference source; + + public int towerLevel =0; + public boolean hasTank = false; + public boolean isTallEnough = true; + public boolean hasMainOutput = false; + public DistillationOutputBlockEntity mainOutput; + + public DistillationControllerBlockEntity(BlockEntityType type, BlockPos pos, BlockState state) { + super(type, pos, state); + } + + @Override + public void tick() { + source = new WeakReference<>(null); + super.tick(); + + + + BlockEntity entityAbove = level.getBlockEntity(getBlockPos().above()); + + if(entityAbove instanceof DistillationOutputBlockEntity){ + mainOutput = (DistillationOutputBlockEntity) entityAbove; + + hasMainOutput = true; + }else { + hasMainOutput = false; + } + + + @Nullable + SteelTankBlockEntity tank = getTank(); + + if(tank==null){ + hasTank=false; + towerLevel = 0; + return; + } + hasTank = true; + + + towerLevel = tank.tower.towerLevel; + + + + } + + + @Override + public boolean addToGoggleTooltip(List tooltip, boolean isPlayerSneaking) { + LangBuilder mb = Lang.translate("generic.unit.millibuckets"); + + + Lang.translate("goggles.distillation_tower.status") + .style(ChatFormatting.GRAY) + .space() + .forGoggles(tooltip, 1); + + + if(!hasTank) { + Lang.translate("goggles.distillation_tower.tank_not_found") + .style(ChatFormatting.DARK_RED) + .forGoggles(tooltip); + return true; + + }else { + + if(towerLevel<4) { + Lang.translate("goggles.distillation_tower.level", this.towerLevel) + .style(ChatFormatting.DARK_RED) + .forGoggles(tooltip, 1); + return true; + } + + if(!hasMainOutput) { + Lang.translate("goggles.distillation_tower.no_outputs") + .style(ChatFormatting.DARK_RED) + .forGoggles(tooltip, 1); + return true; + } + + // if(getTank().getHeight()<((DistillationOutputBlockEntity)level.getBlockEntity(getBlockPos().above())).foundOutputs*2) { + // Lang.translate("goggles.distillation_tower.not_tall_enough") + // .style(ChatFormatting.DARK_RED) + // .forGoggles(tooltip, 1); + // return true; + // } + + Lang.translate("goggles.distillation_tower.level", this.towerLevel) + .style(ChatFormatting.GREEN) + .forGoggles(tooltip, 1); + + Lang.translate("goggles.distillation_tower.found_outputs", this.getOutputCount()) + .style(ChatFormatting.GREEN) + .space() + .forGoggles(tooltip, 1); + + + } + + + /////////////////////////////////////////// + LazyOptional handler = this.getCapability(CapabilityFluidHandler.FLUID_HANDLER_CAPABILITY); + Optional resolve = handler.resolve(); + if (!resolve.isPresent()) + return false; + + IFluidHandler tank = resolve.get(); + if (tank.getTanks() == 0) + return false; + + Lang.translate("goggles.fluid_in_tank") + .style(ChatFormatting.GRAY) + .forGoggles(tooltip); + + + boolean isEmpty = true; + for (int i = 0; i < tank.getTanks(); i++) { + FluidStack fluidStack = tank.getFluidInTank(i); + if (fluidStack.isEmpty()) + continue; + + Lang.fluidName(fluidStack) + .style(ChatFormatting.GRAY) + .forGoggles(tooltip, 1); + + Lang.builder() + .add(Lang.number(fluidStack.getAmount()) + .add(mb) + .style(ChatFormatting.GOLD)) + .text(ChatFormatting.GRAY, " / ") + .add(Lang.number(tank.getTankCapacity(i)) + .add(mb) + .style(ChatFormatting.DARK_GRAY)) + .forGoggles(tooltip, 1); + + isEmpty = false; + } + + if (tank.getTanks() > 1) { + if (isEmpty) + tooltip.remove(tooltip.size() - 1); + return true; + } + + if (!isEmpty) + return true; + + Lang.translate("gui.goggles.fluid_container.capacity") + .add(Lang.number(tank.getTankCapacity(0)) + .add(mb) + .style(ChatFormatting.GOLD)) + .style(ChatFormatting.DARK_GRAY) + .forGoggles(tooltip, 1); + + + return true; + } + + + public int getOutputCount(){ + BlockPos checkedPos = this.getBlockPos().above(3); + int outputCount = 1; + + for(int i = 0; i <5;i++){ + if( + level.getBlockState(checkedPos).is(TFMGBlocks.STEEL_DISTILLATION_OUTPUT.get())&& + level.getBlockState(checkedPos.below()).is(TFMGBlocks.ALUMINUM_BLOCK.get()) + ){ + outputCount++; + checkedPos = checkedPos.above(2); + continue; + } + return outputCount; + + } + + + return outputCount; + } + + + + + public SteelTankBlockEntity getTank() { + SteelTankBlockEntity tank = source.get(); + if (tank == null || tank.isRemoved()) { + if (tank != null) + source = new WeakReference<>(null); + Direction facing = DistillationControllerBlock.getFacing(getBlockState()); + BlockEntity be = level.getBlockEntity(worldPosition.relative(facing.getOpposite())); + if (be instanceof SteelTankBlockEntity tankTe) + source = new WeakReference<>(tank = tankTe); + } + if (tank == null) + return null; + return (SteelTankBlockEntity) tank.getControllerBE(); + } + + +} diff --git a/src/main/java/com/drmangotea/tfmg/content/machines/oil_processing/distillation/distillation_tower/DistillationOutputBlock.java b/src/main/java/com/drmangotea/tfmg/content/machines/oil_processing/distillation/distillation_tower/DistillationOutputBlock.java new file mode 100644 index 00000000..6d9722f5 --- /dev/null +++ b/src/main/java/com/drmangotea/tfmg/content/machines/oil_processing/distillation/distillation_tower/DistillationOutputBlock.java @@ -0,0 +1,42 @@ +package com.drmangotea.tfmg.content.machines.oil_processing.distillation.distillation_tower; + + +import com.drmangotea.tfmg.registry.TFMGBlockEntities; +import com.simibubi.create.AllBlocks; +import com.simibubi.create.foundation.block.IBE; +import net.minecraft.core.BlockPos; +import net.minecraft.world.level.BlockGetter; +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.pathfinder.PathComputationType; + +public class DistillationOutputBlock extends Block implements IBE { + + public DistillationOutputBlock(Properties properties) { + super(properties); + } + + @Override + public boolean canSurvive(BlockState state, LevelReader worldIn, BlockPos pos) { + return !AllBlocks.BASIN.has(worldIn.getBlockState(pos.below())); + } + + + @Override + public Class getBlockEntityClass() { + return DistillationOutputBlockEntity.class; + } + + @Override + public BlockEntityType getBlockEntityType() { + return TFMGBlockEntities.STEEL_DISTILLATION_OUTPUT.get(); + } + + @Override + public boolean isPathfindable(BlockState state, BlockGetter reader, BlockPos pos, PathComputationType type) { + return false; + } + +} \ No newline at end of file diff --git a/src/main/java/com/drmangotea/tfmg/content/machines/oil_processing/distillation/distillation_tower/DistillationOutputBlockEntity.java b/src/main/java/com/drmangotea/tfmg/content/machines/oil_processing/distillation/distillation_tower/DistillationOutputBlockEntity.java new file mode 100644 index 00000000..b106eb7a --- /dev/null +++ b/src/main/java/com/drmangotea/tfmg/content/machines/oil_processing/distillation/distillation_tower/DistillationOutputBlockEntity.java @@ -0,0 +1,393 @@ +package com.drmangotea.tfmg.content.machines.oil_processing.distillation.distillation_tower; + + + +import com.drmangotea.tfmg.content.machines.oil_processing.distillation.distillery.DistilleryOutputBlockEntity; +import com.drmangotea.tfmg.recipes.distillation.ItemlessRecipe; +import com.drmangotea.tfmg.recipes.distillation.AdvancedDistillationRecipe; +import com.drmangotea.tfmg.registry.TFMGBlocks; +import com.drmangotea.tfmg.registry.TFMGRecipeTypes; +import com.simibubi.create.AllRecipeTypes; +import com.simibubi.create.content.equipment.goggles.IHaveGoggleInformation; +import com.simibubi.create.content.kinetics.press.MechanicalPressBlockEntity; +import com.simibubi.create.foundation.recipe.RecipeFinder; +import net.minecraft.core.BlockPos; +import net.minecraft.world.Container; +import net.minecraft.world.item.crafting.CraftingRecipe; +import net.minecraft.world.item.crafting.Recipe; +import net.minecraft.world.level.block.Block; +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.minecraftforge.common.crafting.IShapedRecipe; +import net.minecraftforge.fluids.FluidStack; +import net.minecraftforge.fluids.capability.IFluidHandler; +import org.checkerframework.checker.units.qual.C; + +import java.util.List; +import java.util.Optional; +import java.util.stream.Collectors; + +public class DistillationOutputBlockEntity extends DistilleryOutputBlockEntity implements IHaveGoggleInformation { + + private static final Object AdvancedDistillationRecipesKey = new Object(); + + public int speed=3; + public int processTimer=0; + + public int foundOutputs=0; + public int recipeOutputs=6; + + public DistillationOutputBlockEntity(BlockEntityType type, BlockPos pos, BlockState state) { + super(type, pos, state); + } + + protected boolean matchItemlessRecipe(Recipe recipe) { + if (recipe == null) + return false; + Optional controller = getDistillationController(); + if (!controller.isPresent()) + return false; + return ItemlessRecipe.match2(controller.get(), recipe); + } + + @Override + protected boolean updateController() { + + + if (level == null || level.isClientSide) + return true; + + List> recipes = getMatchingRecipes(); + if (recipes.isEmpty()) + return true; + currentRecipe = recipes.get(0); + startProcessing(); + sendData(); + return true; + } + + + @Override + public void tick() { + super.tick(); + + + if (level != null) { + if ((!level.isClientSide || isVirtual())) { + process(); + sendData(); + } + } + if (syncCooldown > 0) { + syncCooldown--; + if (syncCooldown == 0 && queuedSync) + sendData(); + } + } + @Override + protected void process() { + updateController(); + + if (currentRecipe == null) + return; + + + + // if((currentRecipe instanceof ShapelessRecipe)) + // return; + + BlockEntity above1 = level.getBlockEntity(this.getBlockPos().above(2)); + BlockEntity above2 = level.getBlockEntity(this.getBlockPos().above(4)); + BlockEntity above3 = level.getBlockEntity(this.getBlockPos().above(6)); + BlockEntity above4 = level.getBlockEntity(this.getBlockPos().above(8)); + BlockEntity above5 = level.getBlockEntity(this.getBlockPos().above(10)); + + + + + + Optional optionalController = getDistillationController(); + if (!optionalController.isPresent()) + return; + foundOutputs = 1; + + if(above1 instanceof DistillationOutputBlockEntity) + foundOutputs = 2; + + + if(above2 instanceof DistillationOutputBlockEntity) { + if(foundOutputs==2) { + foundOutputs = 3; + }else foundOutputs = 1; + } + + + if(above3 instanceof DistillationOutputBlockEntity) { + if(foundOutputs==3) { + foundOutputs = 4; + }else foundOutputs = 2; + } + + if(above4 instanceof DistillationOutputBlockEntity) { + if(foundOutputs==4) { + foundOutputs = 5; + }else foundOutputs = 3; + } + if(above5 instanceof DistillationOutputBlockEntity) { + if(foundOutputs==5) { + foundOutputs = 6; + }else foundOutputs = 4; + } + + + + + if(((AdvancedDistillationRecipe) currentRecipe).getOutputCount((AdvancedDistillationRecipe)currentRecipe)>foundOutputs) + return; + FluidStack fluidInRecipe1=null; + FluidStack fluidInRecipe2=null; + FluidStack fluidInRecipe3=null; + FluidStack fluidInRecipe4=null; + FluidStack fluidInRecipe5=null; + FluidStack fluidInRecipe6=null; + + fluidInRecipe1 = ((AdvancedDistillationRecipe) currentRecipe).getFirstFluidResult(); + if(((AdvancedDistillationRecipe) currentRecipe).getOutputCount((AdvancedDistillationRecipe) currentRecipe)>=2) + fluidInRecipe2 = ((AdvancedDistillationRecipe) currentRecipe).getSecondFluidResult(); + if(((AdvancedDistillationRecipe) currentRecipe).getOutputCount((AdvancedDistillationRecipe) currentRecipe)>=3) + fluidInRecipe3 = ((AdvancedDistillationRecipe) currentRecipe).getThirdFluidResult(); + if(((AdvancedDistillationRecipe) currentRecipe).getOutputCount((AdvancedDistillationRecipe) currentRecipe)>=4) + fluidInRecipe4 = ((AdvancedDistillationRecipe) currentRecipe).getFourthFluidResult(); + if(((AdvancedDistillationRecipe) currentRecipe).getOutputCount((AdvancedDistillationRecipe) currentRecipe)>=5) + fluidInRecipe5 = ((AdvancedDistillationRecipe) currentRecipe).getFifthFluidResult(); + if(((AdvancedDistillationRecipe) currentRecipe).getOutputCount((AdvancedDistillationRecipe) currentRecipe)>=6) + fluidInRecipe6 = ((AdvancedDistillationRecipe) currentRecipe).getSixthFluidResult(); + + + + + if(!hasIndustrialPipes(foundOutputs)) + return; + +// + if (fluidInRecipe1.getFluid() != this.tankInventory.getFluid().getFluid() + && tankInventory.getFluidAmount()!=0 + ) + return; +if(fluidInRecipe2!=null) + if(above1 instanceof DistillationOutputBlockEntity) + if(foundOutputs>=2) + if (fluidInRecipe2.getFluid() != (((DistillationOutputBlockEntity) above1).tankInventory.getFluid().getFluid()) + &&((DistillationOutputBlockEntity) above1).tankInventory.getFluidAmount()!=0 + ) + return; + if(fluidInRecipe3!=null) + if(above2 instanceof DistillationOutputBlockEntity) + if(foundOutputs>=3) + if (fluidInRecipe3.getFluid() != (((DistillationOutputBlockEntity) above2).tankInventory.getFluid().getFluid()) + &&((DistillationOutputBlockEntity) above2).tankInventory.getFluidAmount()!=0 + ) + return; + if(fluidInRecipe4!=null) + if(above3 instanceof DistillationOutputBlockEntity) + if(foundOutputs>=4) + if (fluidInRecipe4.getFluid() != (((DistillationOutputBlockEntity) above3).tankInventory.getFluid().getFluid()) + &&((DistillationOutputBlockEntity) above3).tankInventory.getFluidAmount()!=0 + ) + return; + if(fluidInRecipe5!=null) + if(above4 instanceof DistillationOutputBlockEntity) + if(foundOutputs>=5) + if (fluidInRecipe5.getFluid() != (((DistillationOutputBlockEntity) above4).tankInventory.getFluid().getFluid()) + &&((DistillationOutputBlockEntity) above4).tankInventory.getFluidAmount()!=0 + ) + return; + if(fluidInRecipe6!=null) + if(above5 instanceof DistillationOutputBlockEntity) + if(foundOutputs>=6) + if (fluidInRecipe6.getFluid() != (((DistillationOutputBlockEntity) above5).tankInventory.getFluid().getFluid()) + &&((DistillationOutputBlockEntity) above5).tankInventory.getFluidAmount()!=0 + ) + return; +// + if(((AdvancedDistillationRecipe) currentRecipe).getOutputCount((AdvancedDistillationRecipe) currentRecipe)>=1) + if(tankInventory.getFluidAmount()+((AdvancedDistillationRecipe) currentRecipe).getFirstFluidResult().getAmount()>8000) + return; + if(((AdvancedDistillationRecipe) currentRecipe).getOutputCount((AdvancedDistillationRecipe) currentRecipe)>=2) + if(((DistillationOutputBlockEntity)above1).tankInventory.getFluidAmount()+((AdvancedDistillationRecipe) currentRecipe).getSecondFluidResult().getAmount()>8000) + return; + if(((AdvancedDistillationRecipe) currentRecipe).getOutputCount((AdvancedDistillationRecipe) currentRecipe)>=3) + if(((DistillationOutputBlockEntity)above2).tankInventory.getFluidAmount()+((AdvancedDistillationRecipe) currentRecipe).getThirdFluidResult().getAmount()>8000) + return; + if(((AdvancedDistillationRecipe) currentRecipe).getOutputCount((AdvancedDistillationRecipe) currentRecipe)>=4) + if(((DistillationOutputBlockEntity)above3).tankInventory.getFluidAmount()+((AdvancedDistillationRecipe) currentRecipe).getFourthFluidResult().getAmount()>8000) + return; + if(((AdvancedDistillationRecipe) currentRecipe).getOutputCount((AdvancedDistillationRecipe) currentRecipe)>=5) + if(((DistillationOutputBlockEntity)above4).tankInventory.getFluidAmount()+((AdvancedDistillationRecipe) currentRecipe).getFifthFluidResult().getAmount()>8000) + return; + if(((AdvancedDistillationRecipe) currentRecipe).getOutputCount((AdvancedDistillationRecipe) currentRecipe)>=6) + if(((DistillationOutputBlockEntity)above5).tankInventory.getFluidAmount()+((AdvancedDistillationRecipe) currentRecipe).getSixthFluidResult().getAmount()>8000) + return; + + if(getDistillationController().get().getTanks().get(true).getPrimaryHandler().getFluid().getFluid() != ((AdvancedDistillationRecipe) currentRecipe).getInputFluid().getMatchingFluidStacks().get(0).getFluid()) + return; + + DistillationControllerBlockEntity controller = optionalController.get(); + + + + if (!controller.getTanks().get(true).isEmpty()) { + if(!level.isClientSide) { + // if(((AdvancedDistillationRecipe)currentRecipe).getInputFluid().getMatchingFluidStacks().get(0).getFluid() != TFMGFluids.HEAVY_OIL.get()) + // return; + if(!controller.hasTank) + return; + if(controller.towerLevel<4) + return; + + if(controller.towerLevel>=12) { + speed = 1; + } else speed=3; + + if(processTimer=2) + if (((AdvancedDistillationRecipe) currentRecipe).getResults().toArray().length>1) + ((DistillationOutputBlockEntity) above1).tankInventory.setFluid(new FluidStack(((AdvancedDistillationRecipe) currentRecipe).getSecondFluidResult().getFluid(), ((AdvancedDistillationRecipe) currentRecipe).getSecondFluidResult().getAmount() + ((DistillationOutputBlockEntity) above1).tankInventory.getFluidAmount())); + if(above2 instanceof DistillationOutputBlockEntity) + if(foundOutputs>=3) + if (((AdvancedDistillationRecipe) currentRecipe).getResults().toArray().length>2) + ((DistillationOutputBlockEntity) above2).tankInventory.setFluid(new FluidStack(((AdvancedDistillationRecipe) currentRecipe).getThirdFluidResult().getFluid(), ((AdvancedDistillationRecipe) currentRecipe).getThirdFluidResult().getAmount() + ((DistillationOutputBlockEntity) above2).tankInventory.getFluidAmount())); + if(above3 instanceof DistillationOutputBlockEntity) + if(foundOutputs>=4) + if (((AdvancedDistillationRecipe) currentRecipe).getResults().toArray().length>3) + ((DistillationOutputBlockEntity) above3).tankInventory.setFluid(new FluidStack(((AdvancedDistillationRecipe) currentRecipe).getFourthFluidResult().getFluid(), ((AdvancedDistillationRecipe) currentRecipe).getFourthFluidResult().getAmount() + ((DistillationOutputBlockEntity) above3).tankInventory.getFluidAmount())); + if(above4 instanceof DistillationOutputBlockEntity) + if(foundOutputs>=5) + if (((AdvancedDistillationRecipe) currentRecipe).getResults().toArray().length>4) + ((DistillationOutputBlockEntity) above4).tankInventory.setFluid(new FluidStack(((AdvancedDistillationRecipe) currentRecipe).getFifthFluidResult().getFluid(), ((AdvancedDistillationRecipe) currentRecipe).getFifthFluidResult().getAmount() + ((DistillationOutputBlockEntity) above4).tankInventory.getFluidAmount())); + if(above5 instanceof DistillationOutputBlockEntity) + if(foundOutputs>=6) + if (((AdvancedDistillationRecipe) currentRecipe).getResults().toArray().length>5) + ((DistillationOutputBlockEntity) above5).tankInventory.setFluid(new FluidStack(((AdvancedDistillationRecipe) currentRecipe).getSixthFluidResult().getFluid(), ((AdvancedDistillationRecipe) currentRecipe).getSixthFluidResult().getAmount() + ((DistillationOutputBlockEntity) above5).tankInventory.getFluidAmount())); + +} +/* +if(!(((AdvancedDistillationRecipe) currentRecipe).getThirdItemResult().isEmpty())) + controller.outputInventory.setItem(2,((AdvancedDistillationRecipe) currentRecipe).getFirstItemResult()); + + + */ + + controller.notifyChangeOfContents(); + } + + + +} + + @Override + protected List> getMatchingRecipes() { + + + List> list = RecipeFinder.get(getRecipeCacheKey(), level, this::matchStaticFilters); + return list.stream() + .filter(this::matchItemlessRecipe) + .sorted((r1, r2) -> r2.getIngredients() + .size() + - r1.getIngredients() + .size()) + .collect(Collectors.toList()); + } + + @Override + protected boolean matchStaticFilters(Recipe r) { + return ((r instanceof CraftingRecipe && !(r instanceof IShapedRecipe) + && r.getIngredients() + .size() > 1 + && !MechanicalPressBlockEntity.canCompress(r)) && !AllRecipeTypes.shouldIgnoreInAutomation(r) + || r.getType() == TFMGRecipeTypes.ADVANCED_DISTILLATION.getType()); + } + + @Override + public void startProcessing() { + if (running ) + return; + super.startProcessing(); + running = true; + + } + + @Override + public boolean continueWithPreviousRecipe() { + return true; + } + + @Override + protected void onBasinRemoved() { + if (!running) + return; + + running = false; + } + + @Override + protected Object getRecipeCacheKey() { + return AdvancedDistillationRecipesKey; + } + + @Override + protected boolean isRunning() { + return running; + } +/* + @Override + protected Optional getProcessedRecipeTrigger() { + return Optional.of(AllAdvancements.MIXER); + } + */ + + + public Optional getDistillationController() { + if (level == null) + return Optional.empty(); + BlockEntity basinTE = level.getBlockEntity(worldPosition.below(1)); + if (!(basinTE instanceof DistillationControllerBlockEntity)) + return Optional.empty(); + return Optional.of((DistillationControllerBlockEntity) basinTE); + } + + public boolean hasIndustrialPipes(int outputAmount){ + BlockPos checkedPos = this.getBlockPos().above(); + Block checkedBlock; + + + for(int i = 0;i<(outputAmount-1);i++){ + checkedBlock = level.getBlockState(checkedPos).getBlock(); + if(checkedBlock == TFMGBlocks.ALUMINUM_BLOCK.get()){ + checkedPos=checkedPos.above(2); + continue; + } + return false; + } + return true; + } + +} + diff --git a/src/main/java/com/drmangotea/tfmg/content/machines/oil_processing/distillation/distillation_tower/DistillationTowerData.java b/src/main/java/com/drmangotea/tfmg/content/machines/oil_processing/distillation/distillation_tower/DistillationTowerData.java new file mode 100644 index 00000000..9d0725f2 --- /dev/null +++ b/src/main/java/com/drmangotea/tfmg/content/machines/oil_processing/distillation/distillation_tower/DistillationTowerData.java @@ -0,0 +1,400 @@ +package com.drmangotea.tfmg.content.machines.oil_processing.distillation.distillation_tower; + + +import com.drmangotea.tfmg.content.machines.tanks.SteelTankBlock; +import com.drmangotea.tfmg.content.machines.tanks.SteelTankBlockEntity; +import com.drmangotea.tfmg.registry.TFMGBlocks; +import com.drmangotea.tfmg.registry.TFMGFluids; +import com.simibubi.create.Create; +import com.simibubi.create.content.equipment.goggles.IHaveGoggleInformation; +import com.simibubi.create.content.fluids.tank.BoilerHeaters; +import com.simibubi.create.foundation.utility.Components; +import com.simibubi.create.foundation.utility.Iterate; +import com.simibubi.create.foundation.utility.Lang; +import com.simibubi.create.foundation.utility.animation.LerpedFloat; +import com.simibubi.create.foundation.utility.animation.LerpedFloat.Chaser; +import joptsimple.internal.Strings; +import net.minecraft.ChatFormatting; +import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.network.chat.Component; +import net.minecraft.network.chat.MutableComponent; +import net.minecraft.util.Mth; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.material.Fluid; +import net.minecraftforge.fluids.FluidStack; +import net.minecraftforge.fluids.capability.IFluidHandler; +import org.jetbrains.annotations.NotNull; + +import java.util.Arrays; +import java.util.List; + +import static com.simibubi.create.foundation.fluid.FluidHelper.convertToStill; + +public class DistillationTowerData { + + static final int SAMPLE_RATE = 1; + + private static final int waterSupplyPerLevel = 10; + private static final float passiveEngineEfficiency = 0; + + private SteelTankBlockEntity tank; + + // pooled water supply + int gatheredSupply; + float[] supplyOverTime = new float[10]; + int ticksUntilNextSample; + int currentIndex; + + // heat score + public boolean needsHeatLevelUpdate; + public boolean passiveHeat; + public int activeHeat; + + public float oilSupply; + public int attachedControllers; + public int attachedWhistles; + + // display + public int maxHeatForSize = 0; + private int maxHeatForOil = 0; + private int minValue = 0; + private int maxValue = 0; + + public int towerLevel = Math.min(activeHeat, maxHeatForSize); + + public LerpedFloat gauge = LerpedFloat.linear(); + + public void tick(SteelTankBlockEntity controller) { + towerLevel = Math.min(activeHeat, maxHeatForSize); + tank=controller; + // tank.tankInventory.drain(2, IFluidHandler.FluidAction.EXECUTE); + + if (controller.getLevel().isClientSide) { + gauge.tickChaser(); + float current = gauge.getValue(1); + if (current > 1 && Create.RANDOM.nextFloat() < 1 / 2f) + gauge.setValueNoUpdate(current + Math.min(-(current - 1) * Create.RANDOM.nextFloat(), 0)); + return; + } + + if (needsHeatLevelUpdate && updateTemperature(controller)) + controller.notifyUpdate(); + ticksUntilNextSample--; + if (ticksUntilNextSample > 0) + return; + int capacity = controller.tankInventory.getCapacity(); + if (capacity == 0) + return; + + + ticksUntilNextSample = SAMPLE_RATE; + supplyOverTime[currentIndex] = gatheredSupply / (float) SAMPLE_RATE; + oilSupply = Math.max(oilSupply, supplyOverTime[currentIndex]); + currentIndex = (currentIndex + 1) % supplyOverTime.length; + gatheredSupply = 0; + + + if (currentIndex == 0) { + oilSupply = 0; + for (float i : supplyOverTime) + oilSupply = Math.max(i, oilSupply); + } + +/* + if (getActualHeat(controller.getTotalTankSize()) == 18) + controller.award(AllAdvancements.STEAM_ENGINE_MAXED); +*/ + controller.notifyUpdate(); + + } + + public int getTheoreticalHeatLevel() { + return activeHeat; + } + + public int getMaxHeatLevelForBoilerSize(int towerSize) { + return (int) Math.min(12, towerSize / 4); + } + + public int getMaxHeatLevelForOilSupply() { + return (int) Math.min(12, Mth.ceil(oilSupply) / waterSupplyPerLevel); + } + + public boolean isPassive() { + return passiveHeat && maxHeatForSize > 0 && maxHeatForOil > 0; + } + + public boolean isPassive(int towerSize) { + calcMinMaxForSize(towerSize); + return isPassive(); + } + + public float getTowerEfficiency(int towerSize) { + if (isPassive(towerSize)) + return 0; + if (activeHeat == 0) + return 0; + int actualHeat = getActualHeat(towerSize); + return this.towerLevel; + } + + public int getActualHeat(int towerSize) { + int forBoilerSize = getMaxHeatLevelForBoilerSize(towerSize); + int forWaterSupply = getMaxHeatLevelForOilSupply(); + int actualHeat = Math.min(activeHeat, Math.min(forWaterSupply, forBoilerSize)); + return actualHeat; + } + + public boolean addToGoggleTooltip(List tooltip, boolean isPlayerSneaking, int towerSize) { + if (!isActive()) + return false; + + Component indent = Components.literal(IHaveGoggleInformation.spacing); + Component indent2 = Components.literal(IHaveGoggleInformation.spacing + " "); + + calcMinMaxForSize(towerSize); + + tooltip.add(indent.plainCopy() + .append( + Lang.translateDirect("distillation_tower.status", getHeatLevelTextComponent().withStyle(ChatFormatting.AQUA)))); + tooltip.add(indent2.plainCopy() + .append(getSizeComponent(true, false))); + // tooltip.add(indent2.plainCopy() + //.append(getOilComponent(true, false))); + tooltip.add(indent2.plainCopy() + .append(getHeatComponent(true, false))); + + if (attachedControllers == 0) + return true; + + int boilerLevel = Math.min(activeHeat, maxHeatForSize); + + + tooltip.add(Components.immutableEmpty()); + + return true; + } + + public void calcMinMaxForSize(int towerSize) { + maxHeatForSize = getMaxHeatLevelForBoilerSize(towerSize); + maxHeatForOil = getMaxHeatLevelForOilSupply(); + + minValue = Math.min(passiveHeat ? 1 : activeHeat, Math.min(maxHeatForOil, maxHeatForSize)); + maxValue = Math.max(passiveHeat ? 1 : activeHeat, Math.max(maxHeatForOil, maxHeatForSize)); + } + + @NotNull + public MutableComponent getHeatLevelTextComponent() { + int boilerLevel = Math.min(activeHeat, Math.min(maxHeatForOil, maxHeatForSize)); + + return isPassive() ? Lang.translateDirect("boiler.passive") + : (boilerLevel == 0 ? Lang.translateDirect("boiler.idle") + : boilerLevel == 18 ? Lang.translateDirect("boiler.max_lvl") + : Lang.translateDirect("boiler.lvl", String.valueOf(boilerLevel))); + } + + public MutableComponent getSizeComponent(boolean forGoggles, boolean useBlocksAsBars, ChatFormatting... styles) { + return componentHelper("size", maxHeatForSize, forGoggles, useBlocksAsBars, styles); + } +/* + public MutableComponent getOilComponent(boolean forGoggles, boolean useBlocksAsBars, ChatFormatting... styles) { + return componentHelper("crude_oil", maxHeatForOil, forGoggles, useBlocksAsBars, styles); + } + + */ + + public MutableComponent getHeatComponent(boolean forGoggles, boolean useBlocksAsBars, ChatFormatting... styles) { + return componentHelper("heat", passiveHeat ? 1 : activeHeat, forGoggles, useBlocksAsBars, styles); + } + + private MutableComponent componentHelper(String label, int level, boolean forGoggles, boolean useBlocksAsBars, + ChatFormatting... styles) { + MutableComponent base = useBlocksAsBars ? blockComponent(level) : barComponent(level); + + if (!forGoggles) + return base; + + ChatFormatting style1 = styles.length >= 1 ? styles[0] : ChatFormatting.GRAY; + ChatFormatting style2 = styles.length >= 2 ? styles[1] : ChatFormatting.DARK_GRAY; + + return Lang.translateDirect("distillation_tower." + label) + .withStyle(style1) + .append(Lang.translateDirect("boiler." + label + "_dots") + .withStyle(style2)) + .append(base); + } + + private MutableComponent blockComponent(int level) { + return Components.literal( + "" + "\u2588".repeat(minValue) + "\u2592".repeat(level - minValue) + "\u2591".repeat(maxValue - level)); + } + + private MutableComponent barComponent(int level) { + return Components.empty() + .append(bars(Math.max(0, minValue - 1), ChatFormatting.DARK_GREEN)) + .append(bars(minValue > 0 ? 1 : 0, ChatFormatting.GREEN)) + .append(bars(Math.max(0, level - minValue), ChatFormatting.DARK_GREEN)) + .append(bars(Math.max(0, maxValue - level), ChatFormatting.DARK_RED)) + .append(bars(Math.max(0, Math.min(18 - maxValue, ((maxValue / 5 + 1) * 5) - maxValue)), + ChatFormatting.DARK_GRAY)); + + } + + private MutableComponent bars(int level, ChatFormatting format) { + return Components.literal(Strings.repeat('|', level)).withStyle(format); + } + + public boolean evaluate(SteelTankBlockEntity controller) { + BlockPos controllerPos = controller.getBlockPos(); + Level level = controller.getLevel(); + int prevEngines = attachedControllers; + int prevWhistles = attachedWhistles; + attachedControllers = 0; + attachedWhistles = 0; + + for (int yOffset = 0; yOffset < controller.height; yOffset++) { + for (int xOffset = 0; xOffset < controller.width; xOffset++) { + for (int zOffset = 0; zOffset < controller.width; zOffset++) { + + BlockPos pos = controllerPos.offset(xOffset, yOffset, zOffset); + BlockState blockState = level.getBlockState(pos); + if (!SteelTankBlock.isTank(blockState)) + continue; + for (Direction d : Iterate.directions) { + BlockPos attachedPos = pos.relative(d); + BlockState attachedState = level.getBlockState(attachedPos); + if (TFMGBlocks.STEEL_DISTILLATION_CONTROLLER.has(attachedState) && DistillationControllerBlock.getFacing(attachedState) == d) + attachedControllers++; + + } + } + } + } + + needsHeatLevelUpdate = true; + return prevEngines != attachedControllers || prevWhistles != attachedWhistles; + } + + + + public boolean updateTemperature(SteelTankBlockEntity controller) { + BlockPos controllerPos = controller.getBlockPos(); + Level level = controller.getLevel(); + needsHeatLevelUpdate = false; + + boolean prevPassive = passiveHeat; + int prevActive = activeHeat; + passiveHeat = false; + activeHeat = 0; + + for (int xOffset = 0; xOffset < controller.width; xOffset++) { + for (int zOffset = 0; zOffset < controller.width; zOffset++) { + BlockPos pos = controllerPos.offset(xOffset, -1, zOffset); + BlockState blockState = level.getBlockState(pos); + float heat = BoilerHeaters.getActiveHeat(level, pos, blockState); + if (heat == 0) { + passiveHeat = true; + } else if (heat > 0) { + activeHeat += heat; + } + } + } + + passiveHeat &= activeHeat == 0; + + return prevActive != activeHeat || prevPassive != passiveHeat; + } + + public boolean isActive() { + return attachedControllers == 1; + } + + public void clear() { + oilSupply = 0; + activeHeat = 0; + passiveHeat = false; + attachedControllers = 0; + Arrays.fill(supplyOverTime, 0); + } + + public CompoundTag write() { + CompoundTag nbt = new CompoundTag(); + nbt.putFloat("Supply", oilSupply); + nbt.putInt("ActiveHeat", activeHeat); + nbt.putBoolean("PassiveHeat", passiveHeat); + nbt.putInt("Engines", attachedControllers); + nbt.putInt("Whistles", attachedWhistles); + nbt.putBoolean("Update", needsHeatLevelUpdate); + return nbt; + } + + public void read(CompoundTag nbt, int towerSize) { + oilSupply = nbt.getFloat("Supply"); + activeHeat = nbt.getInt("ActiveHeat"); + passiveHeat = nbt.getBoolean("PassiveHeat"); + attachedControllers = nbt.getInt("Engines"); + attachedWhistles = nbt.getInt("Whistles"); + needsHeatLevelUpdate = nbt.getBoolean("Update"); + Arrays.fill(supplyOverTime, (int) oilSupply); + + int forBoilerSize = getMaxHeatLevelForBoilerSize(towerSize); + int forOilSupply = getMaxHeatLevelForOilSupply(); + int actualHeat = Math.min(activeHeat, Math.min(forOilSupply, forBoilerSize)); + float target = isPassive(towerSize) ? 1 / 8f : forBoilerSize == 0 ? 0 : actualHeat / (forBoilerSize * 1f); + gauge.chase(target, 0.125f, Chaser.EXP); + } + + public DistillationFluidHandler createHandler() { + return new DistillationFluidHandler(); + } + + public class DistillationFluidHandler implements IFluidHandler { + + @Override + public int getTanks() { + return 1; + } + + @Override + public FluidStack getFluidInTank(int tank) { + return FluidStack.EMPTY; + } + + @Override + public int getTankCapacity(int tank) { + return 10000; + } + + @Override + public boolean isFluidValid(int tank, FluidStack stack) { + return false; + } + public static boolean isOil(Fluid fluid) { + return convertToStill(fluid) == TFMGFluids.CRUDE_OIL.get(); + } + @Override + public int fill(FluidStack resource, FluidAction action) { + if (!isFluidValid(0, resource)) + return 0; + int amount = resource.getAmount(); + if (action.execute()) + gatheredSupply += amount; + return amount; + } + + @Override + public FluidStack drain(FluidStack resource, FluidAction action) { + return FluidStack.EMPTY; + } + + @Override + public FluidStack drain(int maxDrain, FluidAction action) { + return FluidStack.EMPTY; + } + + } + +} diff --git a/src/main/java/com/drmangotea/tfmg/content/machines/oil_processing/distillation/distillery/DistilleryControllerBlockEntity.java b/src/main/java/com/drmangotea/tfmg/content/machines/oil_processing/distillation/distillery/DistilleryControllerBlockEntity.java index 105f084e..685cbdcb 100644 --- a/src/main/java/com/drmangotea/tfmg/content/machines/oil_processing/distillation/distillery/DistilleryControllerBlockEntity.java +++ b/src/main/java/com/drmangotea/tfmg/content/machines/oil_processing/distillation/distillery/DistilleryControllerBlockEntity.java @@ -40,17 +40,17 @@ import java.util.*; public class DistilleryControllerBlockEntity extends SmartBlockEntity implements IHaveGoggleInformation { public SmartFluidTankBehaviour inputTank; - protected SmartInventory outputInventory; - protected SmartFluidTankBehaviour outputTank; + public SmartInventory outputInventory; + public SmartFluidTankBehaviour outputTank; - private boolean contentsChanged; + public boolean contentsChanged; - private Couple tanks; + public Couple tanks; public LazyOptional itemCapability; protected LazyOptional fluidCapability; - int recipeBackupCheck; + public int recipeBackupCheck; public DistilleryControllerBlockEntity(BlockEntityType type, BlockPos pos, BlockState state) { super(type, pos, state); @@ -182,7 +182,7 @@ public class DistilleryControllerBlockEntity extends SmartBlockEntity implements - private Optional getOperator() { + protected Optional getOperator() { if (level == null) return Optional.empty(); BlockEntity te = level.getBlockEntity(worldPosition.above()); diff --git a/src/main/java/com/drmangotea/tfmg/content/machines/oil_processing/distillation/distillery/DistilleryOutputBlockEntity.java b/src/main/java/com/drmangotea/tfmg/content/machines/oil_processing/distillation/distillery/DistilleryOutputBlockEntity.java index d64e46aa..fefbe0e2 100644 --- a/src/main/java/com/drmangotea/tfmg/content/machines/oil_processing/distillation/distillery/DistilleryOutputBlockEntity.java +++ b/src/main/java/com/drmangotea/tfmg/content/machines/oil_processing/distillation/distillery/DistilleryOutputBlockEntity.java @@ -3,6 +3,7 @@ package com.drmangotea.tfmg.content.machines.oil_processing.distillation.distill import com.drmangotea.tfmg.CreateTFMG; import com.drmangotea.tfmg.content.machines.oil_processing.distillation.FluidProcessingBlockEntity; +import com.drmangotea.tfmg.content.machines.oil_processing.distillation.distillation_tower.DistillationOutputBlockEntity; import com.drmangotea.tfmg.recipes.distillation.DistillationRecipe; import com.drmangotea.tfmg.registry.TFMGRecipeTypes; import com.simibubi.create.AllRecipeTypes; @@ -132,7 +133,8 @@ public class DistilleryOutputBlockEntity extends FluidProcessingBlockEntity impl @Override public void tick() { super.tick(); - + if(this instanceof DistillationOutputBlockEntity) + return; if (level != null) { @@ -214,15 +216,19 @@ if(above1 !=null&& above2 !=null ) return; - + if( + tankInventory.getFluidAmount()+((DistillationRecipe) currentRecipe).getFirstFluidResult().getAmount()>8000|| + ((DistilleryOutputBlockEntity)above1).tankInventory.getFluidAmount()+((DistillationRecipe) currentRecipe).getFirstFluidResult().getAmount()>8000|| + ((DistilleryOutputBlockEntity)above2).tankInventory.getFluidAmount()+((DistillationRecipe) currentRecipe).getFirstFluidResult().getAmount()>8000 + ) + return; if(getController().get().getTanks().get(true).getPrimaryHandler().getFluid().getFluid() != ((DistillationRecipe) currentRecipe).getInputFluid().getMatchingFluidStacks().get(0).getFluid()) return; DistilleryControllerBlockEntity controller = optionalController.get(); - IFluidHandler availableFluids = controller.getCapability(CapabilityFluidHandler.FLUID_HANDLER_CAPABILITY) - .orElse(null); + if(controller.outputInventory.getStackInSlot(0).getCount()>=1|| controller.outputInventory.getStackInSlot(1).getCount()>=1|| @@ -318,12 +324,6 @@ if(!(((DistillationRecipe) currentRecipe).getThirdItemResult().isEmpty())) protected boolean isRunning() { return running; } -/* - @Override - protected Optional getProcessedRecipeTrigger() { - return Optional.of(AllAdvancements.MIXER); - } - */ @@ -340,7 +340,6 @@ if(!(((DistillationRecipe) currentRecipe).getThirdItemResult().isEmpty())) } - @Override public void sendData() { if (syncCooldown > 0) { diff --git a/src/main/java/com/drmangotea/tfmg/content/machines/tanks/SteelFluidTankRenderer.java b/src/main/java/com/drmangotea/tfmg/content/machines/tanks/SteelFluidTankRenderer.java index 034838eb..9aabab1d 100644 --- a/src/main/java/com/drmangotea/tfmg/content/machines/tanks/SteelFluidTankRenderer.java +++ b/src/main/java/com/drmangotea/tfmg/content/machines/tanks/SteelFluidTankRenderer.java @@ -1,6 +1,7 @@ package com.drmangotea.tfmg.content.machines.tanks; +import com.drmangotea.tfmg.registry.TFMGPartialModels; import com.jozufozu.flywheel.util.transform.TransformStack; import com.mojang.blaze3d.vertex.PoseStack; import com.mojang.blaze3d.vertex.VertexConsumer; @@ -29,8 +30,8 @@ public class SteelFluidTankRenderer extends SafeBlockEntityRenderer=13){ - ////// gaugeRotation=90; - ////// } else - ////// if(level>=4){ - ////// gaugeRotation=45; - ////// } else{ - ////// gaugeRotation=0; - ////// } + if(level>=12){ + gaugeRotation=90; + } else + if(level>=4){ + gaugeRotation=45; + } else{ + gaugeRotation=0; + } } @@ -478,7 +479,7 @@ public class SteelTankBlockEntity extends FluidTankBlockEntity implements IHaveG if (updateConnectivity) compound.putBoolean("Uninitialized", true); - /////// compound.put("Boiler", tower.write()); + compound.put("Boiler", tower.write()); if (lastKnownPos != null) compound.put("LastKnownPos", NbtUtils.writeBlockPos(lastKnownPos)); if (!isController()) @@ -490,8 +491,6 @@ public class SteelTankBlockEntity extends FluidTankBlockEntity implements IHaveG compound.putInt("Height", height); } compound.putInt("Luminosity", luminosity); - // super.write(compound, clientPacket); - //super.saveAdditional(compound); forEachBehaviour(tb -> tb.write(compound, clientPacket)); diff --git a/src/main/java/com/drmangotea/tfmg/recipes/distillation/advanced/AdvancedDistillationRecipe.java b/src/main/java/com/drmangotea/tfmg/recipes/distillation/AdvancedDistillationRecipe.java similarity index 72% rename from src/main/java/com/drmangotea/tfmg/recipes/distillation/advanced/AdvancedDistillationRecipe.java rename to src/main/java/com/drmangotea/tfmg/recipes/distillation/AdvancedDistillationRecipe.java index 0ba2a6ec..51daac1e 100644 --- a/src/main/java/com/drmangotea/tfmg/recipes/distillation/advanced/AdvancedDistillationRecipe.java +++ b/src/main/java/com/drmangotea/tfmg/recipes/distillation/AdvancedDistillationRecipe.java @@ -1,11 +1,11 @@ -package com.drmangotea.tfmg.recipes.distillation.advanced; +package com.drmangotea.tfmg.recipes.distillation; -import com.drmangotea.tfmg.recipes.distillation.ItemlessRecipe; import com.drmangotea.tfmg.registry.TFMGRecipeTypes; import com.simibubi.create.content.processing.recipe.ProcessingRecipeBuilder; import com.simibubi.create.foundation.fluid.FluidIngredient; +import net.minecraft.core.NonNullList; import net.minecraft.world.item.ItemStack; import net.minecraftforge.fluids.FluidStack; @@ -38,13 +38,22 @@ public class AdvancedDistillationRecipe extends ItemlessRecipe { return fluidResults.get(5); } - public ItemStack getFirstItemResult(){ - return results.get(0).getStack(); + + public int getOutputCount(AdvancedDistillationRecipe recipe){ + return recipe.fluidResults.toArray().length; } - public ItemStack getSecondItemResult(){ - return results.get(1).getStack(); + public NonNullList getResults(){ + return fluidResults; } - public ItemStack getThirdItemResult(){ - return results.get(2).getStack(); + + + @Override + protected int getMaxFluidOutputCount() { + return 6; + } + + @Override + protected int getMaxOutputCount() { + return 0; } } diff --git a/src/main/java/com/drmangotea/tfmg/recipes/distillation/ItemlessRecipe.java b/src/main/java/com/drmangotea/tfmg/recipes/distillation/ItemlessRecipe.java index 22a4586f..eea4d71b 100644 --- a/src/main/java/com/drmangotea/tfmg/recipes/distillation/ItemlessRecipe.java +++ b/src/main/java/com/drmangotea/tfmg/recipes/distillation/ItemlessRecipe.java @@ -1,5 +1,6 @@ package com.drmangotea.tfmg.recipes.distillation; +import com.drmangotea.tfmg.content.machines.oil_processing.distillation.distillation_tower.DistillationControllerBlockEntity; import com.drmangotea.tfmg.content.machines.oil_processing.distillation.distillery.DistilleryControllerBlockEntity; import com.simibubi.create.content.processing.burner.BlazeBurnerBlock; import com.simibubi.create.content.processing.recipe.ProcessingRecipe; @@ -10,7 +11,6 @@ import com.simibubi.create.foundation.item.SmartInventory; import com.simibubi.create.foundation.recipe.IRecipeTypeInfo; import com.simibubi.create.foundation.utility.Iterate; import net.minecraft.world.item.ItemStack; -import net.minecraft.world.item.crafting.Ingredient; import net.minecraft.world.item.crafting.Recipe; import net.minecraft.world.level.Level; import net.minecraftforge.fluids.FluidStack; @@ -22,7 +22,6 @@ import net.minecraftforge.items.IItemHandler; import javax.annotation.Nonnull; import java.util.ArrayList; import java.util.Collections; -import java.util.LinkedList; import java.util.List; public class ItemlessRecipe extends ProcessingRecipe { @@ -33,9 +32,6 @@ public class ItemlessRecipe extends ProcessingRecipe { if(recipe instanceof ItemlessRecipe) { - - - return apply(controller, recipe, true); } @@ -44,8 +40,8 @@ public class ItemlessRecipe extends ProcessingRecipe { } - public static boolean apply(DistilleryControllerBlockEntity basin, Recipe recipe) { - return apply(basin, recipe, false); + public static boolean apply(DistilleryControllerBlockEntity controller, Recipe recipe) { + return apply(controller, recipe, false); } private static boolean apply(DistilleryControllerBlockEntity controller, Recipe recipe, boolean test) { @@ -133,8 +129,102 @@ public class ItemlessRecipe extends ProcessingRecipe { return true; } + public static boolean match2(DistillationControllerBlockEntity controller, Recipe recipe) { + if(recipe instanceof ItemlessRecipe) { + return apply(controller, recipe, true); + } + + + return false; + + } + private static boolean apply2(DistillationControllerBlockEntity controller, Recipe recipe, boolean test) { + boolean isItemlessRecipe = recipe instanceof ItemlessRecipe; + IItemHandler availableItems = controller.getCapability(CapabilityItemHandler.ITEM_HANDLER_CAPABILITY) + .orElse(null); + IFluidHandler availableFluids = controller.getCapability(CapabilityFluidHandler.FLUID_HANDLER_CAPABILITY) + .orElse(null); + + if (availableItems == null || availableFluids == null) + return false; + + BlazeBurnerBlock.HeatLevel heat = DistilleryControllerBlockEntity.getHeatLevelOf(controller.getLevel() + .getBlockState(controller.getBlockPos() + .below(1))); + if (isItemlessRecipe && !((ItemlessRecipe) recipe).getRequiredHeat() + .testBlazeBurner(heat)) + return false; + + List recipeOutputItems = new ArrayList<>(); + List recipeOutputFluids = new ArrayList<>(); + + + List fluidIngredients = + isItemlessRecipe ? ((ItemlessRecipe) recipe).getFluidIngredients() : Collections.emptyList(); + if(!fluidIngredients.isEmpty()) + + + + + for (boolean simulate : Iterate.trueAndFalse) { + + if (!simulate && test) + return true; + + int[] extractedFluidsFromTank = new int[availableFluids.getTanks()]; + + + boolean fluidsAffected = false; + FluidIngredients: for (int i = 0; i < fluidIngredients.size(); i++) { + FluidIngredient fluidIngredient = fluidIngredients.get(i); + int amountRequired = fluidIngredient.getRequiredAmount(); + + + for (int tank = 0; tank < availableFluids.getTanks(); tank++) { + FluidStack fluidStack = availableFluids.getFluidInTank(tank); + if (simulate && fluidStack.getAmount() <= extractedFluidsFromTank[tank]) + continue; + if (!fluidIngredient.test(fluidStack)) + continue; + int drainedAmount = Math.min(amountRequired, fluidStack.getAmount()); + if (!simulate) { + fluidStack.shrink(drainedAmount); + fluidsAffected = true; + } + amountRequired -= drainedAmount; + if (amountRequired != 0) + continue; + extractedFluidsFromTank[tank] += drainedAmount; + continue FluidIngredients; + } + + // something wasn't found + return false; + } + + if (fluidsAffected) { + controller.getBehaviour(SmartFluidTankBehaviour.INPUT) + .forEach(SmartFluidTankBehaviour.TankSegment::onFluidStackChanged); + controller.getBehaviour(SmartFluidTankBehaviour.OUTPUT) + .forEach(SmartFluidTankBehaviour.TankSegment::onFluidStackChanged); + } + + if (simulate) { + if (recipe instanceof ItemlessRecipe ItemlessRecipe) { + recipeOutputItems.addAll(ItemlessRecipe.rollResults()); + recipeOutputFluids.addAll(ItemlessRecipe.getFluidResults()); + + } else { + recipeOutputItems.add(recipe.getResultItem()); + } + } + + } + + return true; + } protected ItemlessRecipe(IRecipeTypeInfo type, ProcessingRecipeBuilder.ProcessingRecipeParams params) { super(type, params); @@ -158,7 +248,7 @@ public class ItemlessRecipe extends ProcessingRecipe { @Override protected int getMaxFluidOutputCount() { - return 6; + return 3; } @Override diff --git a/src/main/java/com/drmangotea/tfmg/recipes/jei/AdvancedDistillationCategory.java b/src/main/java/com/drmangotea/tfmg/recipes/jei/AdvancedDistillationCategory.java new file mode 100644 index 00000000..54aa38b2 --- /dev/null +++ b/src/main/java/com/drmangotea/tfmg/recipes/jei/AdvancedDistillationCategory.java @@ -0,0 +1,78 @@ +package com.drmangotea.tfmg.recipes.jei; + + + + +import com.drmangotea.tfmg.recipes.distillation.AdvancedDistillationRecipe; +import com.mojang.blaze3d.vertex.PoseStack; +import com.simibubi.create.compat.jei.category.CreateRecipeCategory; +import com.simibubi.create.foundation.fluid.FluidIngredient; +import com.simibubi.create.foundation.gui.AllGuiTextures; +import mezz.jei.api.forge.ForgeTypes; +import mezz.jei.api.gui.builder.IRecipeLayoutBuilder; +import mezz.jei.api.gui.ingredient.IRecipeSlotsView; +import mezz.jei.api.recipe.IFocusGroup; +import mezz.jei.api.recipe.RecipeIngredientRole; +import net.minecraft.world.item.ItemStack; + +import javax.annotation.ParametersAreNonnullByDefault; + +@ParametersAreNonnullByDefault +public class AdvancedDistillationCategory extends CreateRecipeCategory { + + private final AnimatedDistiller distiller = new AnimatedDistiller(); + + public AdvancedDistillationCategory(Info info) { + super(info); + } + + + + + @Override + public void setRecipe(IRecipeLayoutBuilder builder, AdvancedDistillationRecipe recipe, IFocusGroup focuses) { + FluidIngredient fluidIngredient=recipe.getInputFluid(); + + + builder + .addSlot(RecipeIngredientRole.INPUT, 2, 75) + .setBackground(getRenderedSlot(), -1, -1) + .addIngredients(ForgeTypes.FLUID_STACK, withImprovedVisibility(recipe.getInputFluid().getMatchingFluidStacks())) + .addTooltipCallback(addFluidTooltip(recipe.getInputFluid().getRequiredAmount())); + + + + builder + .addSlot(RecipeIngredientRole.OUTPUT,150, 55) + .setBackground(getRenderedSlot(), -1, -1) + .addIngredient(ForgeTypes.FLUID_STACK, withImprovedVisibility(recipe.getFirstFluidResult())) + .addTooltipCallback(addFluidTooltip(recipe.getFirstFluidResult().getAmount())); + builder + .addSlot(RecipeIngredientRole.OUTPUT,150, 33) + .setBackground(getRenderedSlot(), -1, -1) + .addIngredient(ForgeTypes.FLUID_STACK, withImprovedVisibility(recipe.getSecondFluidResult())) + .addTooltipCallback(addFluidTooltip(recipe.getSecondFluidResult().getAmount())); + + builder + .addSlot(RecipeIngredientRole.OUTPUT,150, 12) + .setBackground(getRenderedSlot(), -1, -1) + .addIngredient(ForgeTypes.FLUID_STACK, withImprovedVisibility(recipe.getThirdFluidResult())) + .addTooltipCallback(addFluidTooltip(recipe.getThirdFluidResult().getAmount())); + + + + + } + + @Override + public void draw(AdvancedDistillationRecipe recipe, IRecipeSlotsView iRecipeSlotsView, PoseStack matrixStack, double mouseX, double mouseY) { + distiller + .draw(matrixStack, 65, 27); + AllGuiTextures.JEI_ARROW.render(matrixStack, 20, 80); + AllGuiTextures.JEI_ARROW.render(matrixStack, 100, 14); + AllGuiTextures.JEI_ARROW.render(matrixStack, 100, 35); + AllGuiTextures.JEI_ARROW.render(matrixStack, 100, 57); + AllGuiTextures.JEI_DOWN_ARROW.render(matrixStack, 100, 79); + } + +} diff --git a/src/main/java/com/drmangotea/tfmg/recipes/jei/TFMGJei.java b/src/main/java/com/drmangotea/tfmg/recipes/jei/TFMGJei.java index e9a895b4..839c1066 100644 --- a/src/main/java/com/drmangotea/tfmg/recipes/jei/TFMGJei.java +++ b/src/main/java/com/drmangotea/tfmg/recipes/jei/TFMGJei.java @@ -2,6 +2,7 @@ package com.drmangotea.tfmg.recipes.jei; import com.drmangotea.tfmg.recipes.distillation.DistillationRecipe; +import com.drmangotea.tfmg.recipes.distillation.AdvancedDistillationRecipe; import com.drmangotea.tfmg.registry.TFMGBlocks; import com.drmangotea.tfmg.registry.TFMGFluids; import com.drmangotea.tfmg.registry.TFMGRecipeTypes; @@ -60,7 +61,18 @@ public class TFMGJei implements IModPlugin { .catalyst(TFMGBlocks.CAST_IRON_DISTILLATION_CONTROLLER::get) .itemIcon(TFMGFluids.CRUDE_OIL.getBucket().get()) .emptyBackground(177, 123) - .build("distillation", DistillationCategory::new); + .build("distillation", DistillationCategory::new) + , + + advancedDistillation = builder(AdvancedDistillationRecipe.class) + .addTypedRecipes(TFMGRecipeTypes.ADVANCED_DISTILLATION) + .catalyst(TFMGBlocks.CAST_IRON_DISTILLATION_CONTROLLER::get) + .itemIcon(TFMGFluids.KEROSENE.getBucket().get()) + .emptyBackground(177, 123) + .build("advanced_distillation", AdvancedDistillationCategory::new) + + + ; } diff --git a/src/main/java/com/drmangotea/tfmg/registry/TFMGBlockEntities.java b/src/main/java/com/drmangotea/tfmg/registry/TFMGBlockEntities.java index 74059a21..6a54c939 100644 --- a/src/main/java/com/drmangotea/tfmg/registry/TFMGBlockEntities.java +++ b/src/main/java/com/drmangotea/tfmg/registry/TFMGBlockEntities.java @@ -7,6 +7,8 @@ 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.oil_processing.distillation.distillation_tower.DistillationControllerBlockEntity; +import com.drmangotea.tfmg.content.machines.oil_processing.distillation.distillation_tower.DistillationOutputBlockEntity; import com.drmangotea.tfmg.content.machines.oil_processing.distillation.distillery.DistilleryControllerBlockEntity; import com.drmangotea.tfmg.content.machines.oil_processing.distillation.distillery.DistilleryOutputBlockEntity; import com.drmangotea.tfmg.content.machines.pipes.normal.LockablePipeBlockEntity; @@ -103,15 +105,25 @@ public class TFMGBlockEntities { public static final BlockEntityEntry CAST_IRON_DISTILLATION_OUTPUT = REGISTRATE - .blockEntity("distiller", DistilleryOutputBlockEntity::new) + .blockEntity("distillery", DistilleryOutputBlockEntity::new) .validBlocks(TFMGBlocks.CAST_IRON_DISTILLATION_OUTPUT) .register(); public static final BlockEntityEntry CAST_IRON_DISTILLATION_CONTROLLER = REGISTRATE - .blockEntity("distiller_controller", DistilleryControllerBlockEntity::new) + .blockEntity("distillery_controller", DistilleryControllerBlockEntity::new) .validBlocks(TFMGBlocks.CAST_IRON_DISTILLATION_CONTROLLER) .register(); + public static final BlockEntityEntry STEEL_DISTILLATION_OUTPUT = REGISTRATE + .blockEntity("distillation_tower_output", DistillationOutputBlockEntity::new) + .validBlocks(TFMGBlocks.STEEL_DISTILLATION_OUTPUT) + .register(); + + public static final BlockEntityEntry STEEL_DISTILLATION_CONTROLLER = REGISTRATE + .blockEntity("distillation_tower_controller", DistillationControllerBlockEntity::new) + .validBlocks(TFMGBlocks.STEEL_DISTILLATION_CONTROLLER) + .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 fb1d7317..a5bea9a3 100644 --- a/src/main/java/com/drmangotea/tfmg/registry/TFMGBlocks.java +++ b/src/main/java/com/drmangotea/tfmg/registry/TFMGBlocks.java @@ -10,6 +10,8 @@ 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.oil_processing.distillation.distillation_tower.DistillationControllerBlock; +import com.drmangotea.tfmg.content.machines.oil_processing.distillation.distillation_tower.DistillationOutputBlock; import com.drmangotea.tfmg.content.machines.oil_processing.distillation.distillery.DistilleryControllerBlock; import com.drmangotea.tfmg.content.machines.oil_processing.distillation.distillery.DistilleryOutputBlock; import com.drmangotea.tfmg.content.machines.pipes.normal.steel.EncasedSteelPipeBlock; @@ -255,7 +257,21 @@ public class TFMGBlocks { .build() .register(); // - +public static final BlockEntry STEEL_DISTILLATION_OUTPUT = + REGISTRATE.block("steel_distillation_output", DistillationOutputBlock::new) + .initialProperties(SharedProperties::copperMetal) + .properties(p -> p.color(MaterialColor.STONE)) + .properties(BlockBehaviour.Properties::noOcclusion) + .transform(axeOrPickaxe()) + .item(AssemblyOperatorBlockItem::new) + .build() + .register(); + public static final BlockEntry STEEL_DISTILLATION_CONTROLLER = + REGISTRATE.block("steel_distillation_controller", DistillationControllerBlock::new) + .initialProperties(SharedProperties::copperMetal) + .item() + .build() + .register(); ////// diff --git a/src/main/java/com/drmangotea/tfmg/registry/TFMGPartialModels.java b/src/main/java/com/drmangotea/tfmg/registry/TFMGPartialModels.java index db6aecd5..e687d189 100644 --- a/src/main/java/com/drmangotea/tfmg/registry/TFMGPartialModels.java +++ b/src/main/java/com/drmangotea/tfmg/registry/TFMGPartialModels.java @@ -18,6 +18,7 @@ import java.util.Map; public class TFMGPartialModels { public static final PartialModel + TOWER_GAUGE = block("distillation_tower/gauge"), STEEL_FLUID_PIPE_CASING = block("steel_pipe/casing"), SURFACE_SCANNER_DIAL = block("surface_scanner/dial"), SURFACE_SCANNER_FLAG = block("surface_scanner/flag"), diff --git a/src/main/java/com/drmangotea/tfmg/registry/TFMGRecipeTypes.java b/src/main/java/com/drmangotea/tfmg/registry/TFMGRecipeTypes.java index 209f1468..b428f3da 100644 --- a/src/main/java/com/drmangotea/tfmg/registry/TFMGRecipeTypes.java +++ b/src/main/java/com/drmangotea/tfmg/registry/TFMGRecipeTypes.java @@ -3,7 +3,7 @@ package com.drmangotea.tfmg.registry; import com.drmangotea.tfmg.CreateTFMG; import com.drmangotea.tfmg.recipes.distillation.DistillationRecipe; -import com.drmangotea.tfmg.recipes.distillation.advanced.AdvancedDistillationRecipe; +import com.drmangotea.tfmg.recipes.distillation.AdvancedDistillationRecipe; import com.google.common.collect.ImmutableSet; import com.simibubi.create.content.processing.recipe.ProcessingRecipeBuilder.ProcessingRecipeFactory; import com.simibubi.create.content.processing.recipe.ProcessingRecipeSerializer; diff --git a/src/main/resources/assets/tfmg/lang/default/interface.json b/src/main/resources/assets/tfmg/lang/default/interface.json index eae3c3d9..16e84860 100644 --- a/src/main/resources/assets/tfmg/lang/default/interface.json +++ b/src/main/resources/assets/tfmg/lang/default/interface.json @@ -5,9 +5,16 @@ "create.goggles.misc.dot_one": ".", "create.goggles.misc.dot_two": "..", "create.goggles.misc.dot_three": "...", + "create.goggles.fluid_in_tank": "Fluid In Tank:", "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" + "create.goggles.surface_scanner.scanning_surface": "Scanning Surface", + "create.goggles.distillation_tower.status": "Distillation Tower Info:", + "create.goggles.distillation_tower.tank_not_found": "Steel Fluid Tank Not Found", + "create.goggles.distillation_tower.not_tall_enough": "Distillation Tower is Not Tall Enough", + "create.goggles.distillation_tower.level": "Distillation Tower Level: %1$s", + "create.goggles.distillation_tower.found_outputs": "Found Outputs: %1$s", + "create.goggles.distillation_tower.no_outputs": "No Output Blocks Found" } \ No newline at end of file diff --git a/src/main/resources/assets/tfmg/models/block/distillation_tower/gauge.json b/src/main/resources/assets/tfmg/models/block/distillation_tower/gauge.json new file mode 100644 index 00000000..e8e721c0 --- /dev/null +++ b/src/main/resources/assets/tfmg/models/block/distillation_tower/gauge.json @@ -0,0 +1,37 @@ +{ + "credit": "Made with Blockbench", + "textures": { + "1": "tfmg:block/gauge", + "2": "create:block/gauge", + "particle": "tfmg:block/gauge" + }, + "elements": [ + { + "name": "GaugeButton", + "from": [15.5, 5.2, 5.2], + "to": [16.5, 6.3, 6.3], + "rotation": {"angle": 0, "axis": "y", "origin": [10, 8, 8]}, + "faces": { + "north": {"uv": [0, 9.5, 0.5, 10], "texture": "#2"}, + "east": {"uv": [0, 9.5, 0.5, 10], "texture": "#2"}, + "south": {"uv": [0, 9.5, 0.5, 10], "texture": "#2"}, + "west": {"uv": [0, 9.5, 0.5, 10], "texture": "#2"}, + "up": {"uv": [0, 9.5, 0.5, 10], "texture": "#2"}, + "down": {"uv": [0, 9.5, 0.5, 10], "texture": "#2"} + } + }, + { + "name": "GuageMetalBack", + "from": [14, 3.05, 3.05], + "to": [15.95, 12.95, 12.95], + "rotation": {"angle": 0, "axis": "y", "origin": [9, 8, 8]}, + "faces": { + "north": {"uv": [11, 0, 13, 10], "texture": "#1"}, + "east": {"uv": [0, 0, 10, 10], "texture": "#1"}, + "south": {"uv": [11, 0, 13, 10], "rotation": 180, "texture": "#1"}, + "up": {"uv": [11, 0, 13, 10], "rotation": 180, "texture": "#1"}, + "down": {"uv": [11, 0, 13, 10], "rotation": 180, "texture": "#1"} + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/tfmg/textures/block/cast_iron_distillation_controller.png b/src/main/resources/assets/tfmg/textures/block/cast_iron_distillation_controller.png new file mode 100644 index 00000000..efdf2708 Binary files /dev/null and b/src/main/resources/assets/tfmg/textures/block/cast_iron_distillation_controller.png differ diff --git a/src/main/resources/assets/tfmg/textures/block/cast_iron_distillation_output.png b/src/main/resources/assets/tfmg/textures/block/cast_iron_distillation_output.png new file mode 100644 index 00000000..efdf2708 Binary files /dev/null and b/src/main/resources/assets/tfmg/textures/block/cast_iron_distillation_output.png differ diff --git a/src/main/resources/assets/tfmg/textures/block/steel_distillation_controller.png b/src/main/resources/assets/tfmg/textures/block/steel_distillation_controller.png new file mode 100644 index 00000000..efdf2708 Binary files /dev/null and b/src/main/resources/assets/tfmg/textures/block/steel_distillation_controller.png differ diff --git a/src/main/resources/assets/tfmg/textures/block/steel_distillation_output.png b/src/main/resources/assets/tfmg/textures/block/steel_distillation_output.png new file mode 100644 index 00000000..efdf2708 Binary files /dev/null and b/src/main/resources/assets/tfmg/textures/block/steel_distillation_output.png differ diff --git a/src/main/resources/data/tfmg/recipes/fractional_distillation/heavy_oil.json b/src/main/resources/data/tfmg/recipes/fractional_distillation/heavy_oil.json new file mode 100644 index 00000000..ab50b602 --- /dev/null +++ b/src/main/resources/data/tfmg/recipes/fractional_distillation/heavy_oil.json @@ -0,0 +1,39 @@ +{ + "type": "tfmg:advanced_distillation", + "ingredients": [ + + { + "fluid": "tfmg:heavy_oil", + "nbt": {}, + "amount": 90 + } + ], + "results": [ + { + "fluid": "tfmg:diesel", + "amount": 30 + }, + { + "fluid": "tfmg:lubrication_oil", + "amount": 30 + }, + { + "fluid": "tfmg:lubrication_oil", + "amount": 30 + }, + { + "fluid": "tfmg:lubrication_oil", + "amount": 30 + }, + { + "fluid": "tfmg:lubrication_oil", + "amount": 30 + }, + { + "fluid": "tfmg:lubrication_oil", + "amount": 30 + } + ] + + +} diff --git a/src/main/resources/data/tfmg/recipes/fractional_distillation/naphtha.json b/src/main/resources/data/tfmg/recipes/fractional_distillation/naphtha.json new file mode 100644 index 00000000..85a57bab --- /dev/null +++ b/src/main/resources/data/tfmg/recipes/fractional_distillation/naphtha.json @@ -0,0 +1,32 @@ +{ + "type": "tfmg:advanced_distillation", + "ingredients": [ + + { + "fluid": "tfmg:naphtha", + "nbt": {}, + "amount": 9 + } + ], + "results": [ + { + "fluid": "tfmg:propylene", + "amount": 3 + }, + { + "fluid": "tfmg:ethylene", + "amount": 3 + }, + { + "fluid": "tfmg:ethylene", + "amount": 3 + } + , + { + "fluid": "tfmg:ethylene", + "amount": 3 + } + ] + + +} diff --git a/src/main/resources/data/tfmg/recipes/fractional_distillation/sussy.json b/src/main/resources/data/tfmg/recipes/fractional_distillation/sussy.json new file mode 100644 index 00000000..69a83912 --- /dev/null +++ b/src/main/resources/data/tfmg/recipes/fractional_distillation/sussy.json @@ -0,0 +1,19 @@ +{ + "type": "tfmg:advanced_distillation", + "ingredients": [ + + { + "fluid": "tfmg:diesel", + "nbt": {}, + "amount": 5 + } + ], + "results": [ + { + "fluid": "tfmg:propylene", + "amount": 3 + } + ] + + +}