1.2.1 update

This commit is contained in:
DrMangoTea
2026-01-30 00:20:12 +01:00
parent e55d315253
commit 1f45051494
96 changed files with 1503 additions and 552 deletions

View File

@@ -33,7 +33,7 @@ registrate_version = MC1.21-1.3.0+62
mod_id=tfmg
mod_name=Create: The Factory Must Grow
mod_license=MIT
mod_version=1.2.0
mod_version=1.2.1
mod_group_id=com.drmangotea
mod_authors= DrMangoTea, Pepa, Luna
mod_description= Create: The Factory Must Grow brings the age of steel, oil and electricity to the Create mod

View File

@@ -0,0 +1,19 @@
{
"variants": {
"facing=east": {
"model": "tfmg:block/compressor/block",
"y": 90
},
"facing=north": {
"model": "tfmg:block/compressor/block"
},
"facing=south": {
"model": "tfmg:block/compressor/block",
"y": 180
},
"facing=west": {
"model": "tfmg:block/compressor/block",
"y": 270
}
}
}

View File

@@ -0,0 +1,7 @@
{
"variants": {
"": {
"model": "tfmg:block/freezer/block"
}
}
}

View File

@@ -104,6 +104,7 @@
"block.tfmg.coal_coke_block": "ǝʞoƆ ןɐoƆ ɟo ʞɔoןᗺ",
"block.tfmg.cocrete_hose.tooltip.summary": "ǝʇǝɹɔuoɔ ɹɐqǝɹ sɐ sǝıɹp ǝʇǝɹɔuoɔ ʇǝS ˙sʞɔoןq ɹɐqǝɹ oʇuı ʎǝןןnd ǝsoɥ ɐ ǝʞıן ǝʇǝɹɔuoɔ sdɯnԀ",
"block.tfmg.coke_oven": "uǝʌO ǝʞoƆ",
"block.tfmg.compressor": "ɹossǝɹdɯoƆ",
"block.tfmg.concrete": "ǝʇǝɹɔuoƆ",
"block.tfmg.concrete_encased_cable_tube": "ǝqn⟘ ǝןqɐƆ pǝsɐɔuƎ ǝʇǝɹɔuoƆ",
"block.tfmg.concrete_encased_electric_post": "ʇsoԀ ɔıɹʇɔǝןƎ pǝsɐɔuƎ ǝʇǝɹɔuoƆ",
@@ -199,6 +200,7 @@
"block.tfmg.flarestack.tooltip.condition1": "ɯoʇʇoq ǝɥʇ ɯoɹɟ oʇuı sǝsɐ⅁/spınןℲ ǝןqɐuɹnq pǝdɯnԀ uǝɥM",
"block.tfmg.flarestack.tooltip.summary": "sʇɔnpoɹd ןıo pǝpǝǝuun suɹnᗺ",
"block.tfmg.fossilstone": "ǝuoʇsןıssoℲ",
"block.tfmg.freezer": "ɹǝzǝǝɹℲ",
"block.tfmg.galena": "ɐuǝןɐ⅁",
"block.tfmg.galena_pillar": "ɹɐןןıԀ ɐuǝןɐ⅁",
"block.tfmg.gas_lamp": "dɯɐꞀ sɐ⅁",
@@ -527,6 +529,10 @@
"create.recipe.industrial_blasting": "buıʇsɐןןɐıɹʇsnpuI",
"create.recipe.polarizing": "buızıɹɐןoԀ",
"create.recipe.winding": "buıpuıM",
"create.vat.heat": "ʇɐǝH",
"create.vat.heat_dots": " ˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙",
"create.vat.pressure": "ǝɹnssǝɹԀ",
"create.vat.pressure_dots": " ˙˙˙",
"creative_tab.tfmg_decoration": "sʞɔoןᗺ buıpןınᗺ ⅁WℲ⟘ :ǝʇɐǝɹƆ",
"creative_tab.tfmg_main": "ʍoɹ⅁ ʇsnW ʎɹoʇɔɐℲ ǝɥ⟘ :ǝʇɐǝɹƆ",
"death.attack.tfmg.acid": "ɥʇɐq pıɔɐ uɐ ʞooʇ %1$s",
@@ -935,6 +941,9 @@
"tfmg.goggles.blast_stove.tank3": " :Ɩ ʞuɐ⟘ ʇndʇnO",
"tfmg.goggles.blast_stove.tank4": " :ᄅ ʞuɐ⟘ ʇndʇnO",
"tfmg.goggles.coke_oven.progress": "%1$s :ssǝɹboɹԀ",
"tfmg.goggles.compressor.depressurizing": "buızıɹnssǝɹdǝᗡ :ǝʇɐʇS",
"tfmg.goggles.compressor.non_operational": ")WԀᴚ 0ᄅƖ ʇsɐǝן ʇɐ spǝǝN(ןɐuoıʇɐɹǝdO uoN :ǝʇɐʇS",
"tfmg.goggles.compressor.pressurizing": "buızıɹnssǝɹԀ :ǝʇɐʇS",
"tfmg.goggles.distillation_tower.found_outputs": "%1$s :ʇunoƆ ʇndʇnO",
"tfmg.goggles.distillation_tower.level": "%1$s :ןǝʌǝꞀ ʇɐǝH",
"tfmg.goggles.distillation_tower.no_outputs": "punoℲ sʞɔoןᗺ ʇndʇnO oN",

View File

@@ -104,6 +104,7 @@
"block.tfmg.coal_coke_block": "Block of Coal Coke",
"block.tfmg.cocrete_hose.tooltip.summary": "Pumps concrete like a hose pulley into rebar blocks. Set concrete dries as rebar concrete",
"block.tfmg.coke_oven": "Coke Oven",
"block.tfmg.compressor": "Compressor",
"block.tfmg.concrete": "Concrete",
"block.tfmg.concrete_encased_cable_tube": "Concrete Encased Cable Tube",
"block.tfmg.concrete_encased_electric_post": "Concrete Encased Electric Post",
@@ -199,6 +200,7 @@
"block.tfmg.flarestack.tooltip.condition1": "When Pumped burnable Fluids/Gases into from the bottom",
"block.tfmg.flarestack.tooltip.summary": "Burns unneeded oil products",
"block.tfmg.fossilstone": "Fossilstone",
"block.tfmg.freezer": "Freezer",
"block.tfmg.galena": "Galena",
"block.tfmg.galena_pillar": "Galena Pillar",
"block.tfmg.gas_lamp": "Gas Lamp",
@@ -527,6 +529,10 @@
"create.recipe.industrial_blasting": "Industrial Blasting",
"create.recipe.polarizing": "Polarizing",
"create.recipe.winding": "Winding",
"create.vat.heat": "Heat",
"create.vat.heat_dots": "................ ",
"create.vat.pressure": "Pressure",
"create.vat.pressure_dots": "... ",
"creative_tab.tfmg_decoration": "Create: TFMG Building Blocks",
"creative_tab.tfmg_main": "Create: The Factory Must Grow",
"death.attack.tfmg.acid": "%1$s took an acid bath",
@@ -935,6 +941,9 @@
"tfmg.goggles.blast_stove.tank3": "Output Tank 1: ",
"tfmg.goggles.blast_stove.tank4": "Output Tank 2: ",
"tfmg.goggles.coke_oven.progress": "Progress: %1$s",
"tfmg.goggles.compressor.depressurizing": "State: Depressurizing",
"tfmg.goggles.compressor.non_operational": "State: Non Operational(Needs at least 120 RPM)",
"tfmg.goggles.compressor.pressurizing": "State: Pressurizing",
"tfmg.goggles.distillation_tower.found_outputs": "Output Count: %1$s",
"tfmg.goggles.distillation_tower.level": "Heat Level: %1$s",
"tfmg.goggles.distillation_tower.no_outputs": "No Output Blocks Found",

View File

@@ -0,0 +1,3 @@
{
"parent": "tfmg:block/compressor/item"
}

View File

@@ -0,0 +1,3 @@
{
"parent": "tfmg:block/freezer/item"
}

View File

@@ -1,5 +1,7 @@
{
"values": [
"tfmg:concrete",
"tfmg:rebar_concrete",
"tfmg:concrete",
"tfmg:rebar_concrete"
]

View File

@@ -1,5 +1,11 @@
{
"values": [
"tfmg:lead_ore",
"tfmg:deepslate_lead_ore",
"tfmg:nickel_ore",
"tfmg:deepslate_nickel_ore",
"tfmg:lithium_ore",
"tfmg:deepslate_lithium_ore",
"tfmg:lead_ore",
"tfmg:deepslate_lead_ore",
"tfmg:nickel_ore",

View File

@@ -1,5 +1,7 @@
{
"values": [
"tfmg:lead_ore",
"tfmg:deepslate_lead_ore",
"tfmg:lead_ore",
"tfmg:deepslate_lead_ore"
]

View File

@@ -1,5 +1,7 @@
{
"values": [
"tfmg:lithium_ore",
"tfmg:deepslate_lithium_ore",
"tfmg:lithium_ore",
"tfmg:deepslate_lithium_ore"
]

View File

@@ -1,5 +1,7 @@
{
"values": [
"tfmg:nickel_ore",
"tfmg:deepslate_nickel_ore",
"tfmg:nickel_ore",
"tfmg:deepslate_nickel_ore"
]

View File

@@ -1,5 +1,8 @@
{
"values": [
"tfmg:deepslate_lead_ore",
"tfmg:deepslate_nickel_ore",
"tfmg:deepslate_lithium_ore",
"tfmg:deepslate_lead_ore",
"tfmg:deepslate_nickel_ore",
"tfmg:deepslate_lithium_ore"

View File

@@ -1,5 +1,8 @@
{
"values": [
"tfmg:lead_ore",
"tfmg:nickel_ore",
"tfmg:lithium_ore",
"tfmg:lead_ore",
"tfmg:nickel_ore",
"tfmg:lithium_ore"

View File

@@ -11,6 +11,15 @@
"tfmg:constantan_block",
"tfmg:nickel_block",
"tfmg:lithium_block",
"tfmg:coal_coke_block",
"tfmg:steel_block",
"tfmg:cast_iron_block",
"tfmg:aluminum_block",
"tfmg:plastic_block",
"tfmg:lead_block",
"tfmg:constantan_block",
"tfmg:nickel_block",
"tfmg:lithium_block",
"tfmg:coal_coke_block"
]
}

View File

@@ -1,5 +1,6 @@
{
"values": [
"tfmg:aluminum_block",
"tfmg:aluminum_block"
]
}

View File

@@ -1,5 +1,6 @@
{
"values": [
"tfmg:cast_iron_block",
"tfmg:cast_iron_block"
]
}

View File

@@ -1,5 +1,6 @@
{
"values": [
"tfmg:coal_coke_block",
"tfmg:coal_coke_block"
]
}

View File

@@ -1,5 +1,6 @@
{
"values": [
"tfmg:constantan_block",
"tfmg:constantan_block"
]
}

View File

@@ -1,5 +1,6 @@
{
"values": [
"tfmg:lead_block",
"tfmg:lead_block"
]
}

View File

@@ -1,5 +1,6 @@
{
"values": [
"tfmg:lithium_block",
"tfmg:lithium_block"
]
}

View File

@@ -1,5 +1,6 @@
{
"values": [
"tfmg:nickel_block",
"tfmg:nickel_block"
]
}

View File

@@ -1,5 +1,6 @@
{
"values": [
"tfmg:plastic_block",
"tfmg:plastic_block"
]
}

View File

@@ -1,5 +1,6 @@
{
"values": [
"tfmg:raw_lead_block",
"tfmg:raw_lead_block"
]
}

View File

@@ -1,5 +1,6 @@
{
"values": [
"tfmg:raw_lithium_block",
"tfmg:raw_lithium_block"
]
}

View File

@@ -1,5 +1,6 @@
{
"values": [
"tfmg:raw_nickel_block",
"tfmg:raw_nickel_block"
]
}

View File

@@ -1,5 +1,6 @@
{
"values": [
"tfmg:steel_block",
"tfmg:steel_block"
]
}

View File

@@ -1,5 +1,8 @@
{
"values": [
"tfmg:steel_casing",
"tfmg:heavy_machinery_casing",
"tfmg:industrial_aluminum_casing",
"tfmg:steel_casing",
"tfmg:heavy_machinery_casing",
"tfmg:industrial_aluminum_casing"

View File

@@ -1,6 +1,12 @@
{
"values": [
"tfmg:copycat_cable_base",
"tfmg:copycat_cable_base",
"tfmg:steel_bars",
"tfmg:aluminum_bars",
"tfmg:cast_iron_bars",
"tfmg:lead_bars",
"tfmg:nickel_bars",
"tfmg:steel_bars",
"tfmg:aluminum_bars",
"tfmg:cast_iron_bars",

View File

@@ -2,6 +2,8 @@
"values": [
"tfmg:oil_deposit",
"tfmg:large_switch",
"tfmg:large_transformer",
"tfmg:large_switch",
"tfmg:large_transformer"
]
}

View File

@@ -1,5 +1,10 @@
{
"values": [
"tfmg:steel_bars",
"tfmg:aluminum_bars",
"tfmg:cast_iron_bars",
"tfmg:lead_bars",
"tfmg:nickel_bars",
"tfmg:steel_bars",
"tfmg:aluminum_bars",
"tfmg:cast_iron_bars",

View File

@@ -1,5 +1,7 @@
{
"values": [
"tfmg:bauxite",
"tfmg:galena",
"tfmg:bauxite",
"tfmg:galena"
]

View File

@@ -1,5 +1,13 @@
{
"values": [
"tfmg:steel_block",
"tfmg:cast_iron_block",
"tfmg:aluminum_block",
"tfmg:lead_block",
"tfmg:constantan_block",
"tfmg:nickel_block",
"tfmg:lithium_block",
"tfmg:laminated_magnetic_alloy_block",
"tfmg:steel_block",
"tfmg:cast_iron_block",
"tfmg:aluminum_block",

View File

@@ -1,5 +1,13 @@
{
"values": [
"tfmg:steel_ladder",
"tfmg:aluminum_ladder",
"tfmg:cast_iron_ladder",
"tfmg:lead_ladder",
"tfmg:nickel_ladder",
"tfmg:constantan_ladder",
"tfmg:steel_scaffolding",
"tfmg:aluminum_scaffolding",
"tfmg:steel_ladder",
"tfmg:aluminum_ladder",
"tfmg:cast_iron_ladder",

View File

@@ -1,5 +1,9 @@
{
"values": [
"tfmg:heavy_casing_door",
"tfmg:steel_door",
"tfmg:aluminum_door",
"tfmg:heavy_plated_door",
"tfmg:heavy_casing_door",
"tfmg:steel_door",
"tfmg:aluminum_door",

View File

@@ -1,5 +1,7 @@
{
"values": [
"tfmg:bauxite",
"tfmg:galena",
"tfmg:bauxite",
"tfmg:galena"
]

View File

@@ -1,5 +1,7 @@
{
"values": [
"tfmg:bauxite",
"tfmg:galena",
"tfmg:bauxite",
"tfmg:galena"
]

View File

@@ -9,20 +9,20 @@
"tfmg:steel_casing",
"tfmg:heavy_machinery_casing",
"tfmg:industrial_aluminum_casing",
"tfmg:encased_brass_pipe",
"tfmg:encased_steel_pipe",
"tfmg:steel_gearbox",
"tfmg:encased_aluminum_pipe",
"tfmg:encased_cast_iron_pipe",
"tfmg:encased_plastic_pipe",
"tfmg:hardened_planks",
"tfmg:steel_flywheel",
"tfmg:lead_flywheel",
"tfmg:cast_iron_flywheel",
"tfmg:aluminum_flywheel",
"tfmg:nickel_flywheel",
"tfmg:encased_brass_pipe",
"tfmg:encased_steel_pipe",
"tfmg:encased_aluminum_pipe",
"tfmg:encased_cast_iron_pipe",
"tfmg:encased_plastic_pipe",
"tfmg:steel_encased_shaft",
"tfmg:aluminum_flywheel",
"tfmg:heavy_casing_encased_shaft",
"tfmg:nickel_flywheel",
"tfmg:steel_encased_steel_cogwheel",
"tfmg:heavy_casing_encased_steel_cogwheel",
"tfmg:steel_encased_large_steel_cogwheel",

View File

@@ -1,200 +1,360 @@
{
"values": [
"tfmg:purple_concrete",
"tfmg:aluminum_fluid_tank",
"tfmg:purple_concrete_wall",
"tfmg:cast_iron_fluid_tank",
"tfmg:purple_concrete_stairs",
"tfmg:steel_fluid_tank",
"tfmg:steel_distillation_output",
"tfmg:purple_concrete_slab",
"tfmg:steel_distillation_controller",
"tfmg:industrial_pipe",
"tfmg:orange_concrete",
"tfmg:concrete_encased_industrial_pipe",
"tfmg:orange_concrete_wall",
"tfmg:pumpjack_hammer",
"tfmg:orange_concrete_stairs",
"tfmg:pumpjack_crank",
"tfmg:orange_concrete_slab",
"tfmg:pumpjack_hammer_part",
"tfmg:black_concrete",
"tfmg:black_concrete_wall",
"tfmg:pumpjack_hammer_head",
"tfmg:black_concrete_stairs",
"tfmg:pumpjack_hammer_connector",
"tfmg:black_concrete_slab",
"tfmg:white_rebar_concrete",
"tfmg:white_rebar_concrete_wall",
"tfmg:large_pumpjack_hammer_part",
"tfmg:white_rebar_concrete_stairs",
"tfmg:large_pumpjack_hammer_head",
"tfmg:white_rebar_concrete_slab",
"tfmg:large_pumpjack_hammer_connector",
"tfmg:blue_rebar_concrete",
"tfmg:pumpjack_base",
"tfmg:blue_rebar_concrete_wall",
"tfmg:oil_deposit",
"tfmg:blue_rebar_concrete_stairs",
"tfmg:steel_chemical_vat",
"tfmg:blue_rebar_concrete_slab",
"tfmg:cast_iron_chemical_vat",
"tfmg:fireproof_chemical_vat",
"tfmg:industrial_mixer",
"tfmg:light_blue_rebar_concrete",
"tfmg:electrode_holder",
"tfmg:freezer",
"tfmg:light_blue_rebar_concrete_wall",
"tfmg:compressor",
"tfmg:light_blue_rebar_concrete_stairs",
"tfmg:lead_ore",
"tfmg:light_blue_rebar_concrete_slab",
"tfmg:deepslate_lead_ore",
"tfmg:nickel_ore",
"tfmg:red_rebar_concrete",
"tfmg:deepslate_nickel_ore",
"tfmg:lithium_ore",
"tfmg:red_rebar_concrete_wall",
"tfmg:deepslate_lithium_ore",
"tfmg:sulfur",
"tfmg:lignite",
"tfmg:red_rebar_concrete_stairs",
"tfmg:fossilstone",
"tfmg:red_rebar_concrete_slab",
"tfmg:slag_block",
"tfmg:raw_nickel_block",
"tfmg:raw_lead_block",
"tfmg:green_rebar_concrete",
"tfmg:raw_lithium_block",
"tfmg:air_intake",
"tfmg:green_rebar_concrete_wall",
"tfmg:firebox",
"tfmg:winding_machine",
"tfmg:green_rebar_concrete_stairs",
"tfmg:surface_scanner",
"tfmg:green_rebar_concrete_slab",
"tfmg:lime_rebar_concrete",
"tfmg:machine_input",
"tfmg:concrete_hose",
"tfmg:lime_rebar_concrete_wall",
"tfmg:blast_furnace_output",
"tfmg:blast_furnace_hatch",
"tfmg:lime_rebar_concrete_stairs",
"tfmg:fireproof_bricks",
"tfmg:lime_rebar_concrete_slab",
"tfmg:reinforced_fireproof_bricks",
"tfmg:pink_rebar_concrete",
"tfmg:blast_furnace_reinforcement",
"tfmg:pink_rebar_concrete_wall",
"tfmg:blast_furnace_reinforcement_wall",
"tfmg:pink_rebar_concrete_stairs",
"tfmg:rusted_blast_furnace_reinforcement",
"tfmg:pink_rebar_concrete_slab",
"tfmg:rusted_blast_furnace_reinforcement_wall",
"tfmg:magenta_rebar_concrete",
"tfmg:fireproof_brick_reinforcement",
"tfmg:magenta_rebar_concrete_wall",
"tfmg:coke_oven",
"tfmg:magenta_rebar_concrete_stairs",
"tfmg:blast_stove",
"tfmg:magenta_rebar_concrete_slab",
"tfmg:casting_basin",
"tfmg:yellow_rebar_concrete",
"tfmg:napalm_bomb",
"tfmg:yellow_rebar_concrete_wall",
"tfmg:generator",
"tfmg:yellow_rebar_concrete_stairs",
"tfmg:cable_connector",
"tfmg:yellow_rebar_concrete_slab",
"tfmg:glass_cable_insulator",
"tfmg:gray_rebar_concrete",
"tfmg:resistor",
"tfmg:gray_rebar_concrete_wall",
"tfmg:copycat_cable_block",
"tfmg:gray_rebar_concrete_stairs",
"tfmg:copycat_cable_base",
"tfmg:gray_rebar_concrete_slab",
"tfmg:light_gray_rebar_concrete",
"tfmg:brass_cable_hub",
"tfmg:light_gray_rebar_concrete_wall",
"tfmg:copper_cable_hub",
"tfmg:light_gray_rebar_concrete_stairs",
"tfmg:steel_cable_hub",
"tfmg:light_gray_rebar_concrete_slab",
"tfmg:aluminum_cable_hub",
"tfmg:steel_casing_cable_hub",
"tfmg:brown_rebar_concrete",
"tfmg:heavy_cable_hub",
"tfmg:brown_rebar_concrete_wall",
"tfmg:cable_tube",
"tfmg:brown_rebar_concrete_stairs",
"tfmg:concrete_encased_cable_tube",
"tfmg:brown_rebar_concrete_slab",
"tfmg:electric_post",
"tfmg:cyan_rebar_concrete",
"tfmg:concrete_encased_electric_post",
"tfmg:diagonal_cable_block",
"tfmg:electric_motor",
"tfmg:creative_generator",
"tfmg:cyan_rebar_concrete_wall",
"tfmg:accumulator",
"tfmg:light_bulb",
"tfmg:cyan_rebar_concrete_stairs",
"tfmg:circular_light",
"tfmg:modern_light",
"tfmg:cyan_rebar_concrete_slab",
"tfmg:aluminum_lamp",
"tfmg:neon_tube",
"tfmg:purple_rebar_concrete",
"tfmg:electric_diode",
"tfmg:purple_rebar_concrete_wall",
"tfmg:encased_diode",
"tfmg:purple_rebar_concrete_stairs",
"tfmg:potentiometer",
"tfmg:purple_rebar_concrete_slab",
"tfmg:electrical_switch",
"tfmg:large_switch",
"tfmg:orange_rebar_concrete",
"tfmg:encased_potentiometer",
"tfmg:electric_pump",
"tfmg:orange_rebar_concrete_wall",
"tfmg:voltage_observer",
"tfmg:voltmeter",
"tfmg:orange_rebar_concrete_stairs",
"tfmg:polarizer",
"tfmg:orange_rebar_concrete_slab",
"tfmg:rotor",
"tfmg:stator",
"tfmg:black_rebar_concrete",
"tfmg:traffic_light",
"tfmg:segmented_display",
"tfmg:transformer",
"tfmg:large_transformer",
"tfmg:black_rebar_concrete_wall",
"tfmg:converter",
"tfmg:large_coil",
"tfmg:brick_smokestack",
"tfmg:metal_smokestack",
"tfmg:black_rebar_concrete_stairs",
"tfmg:concrete_smokestack",
"tfmg:exhaust",
"tfmg:black_rebar_concrete_slab",
"tfmg:flarestack",
"tfmg:gas_lamp",
"tfmg:asphalt",
"tfmg:steel_cogwheel",
"tfmg:large_steel_cogwheel",
"tfmg:asphalt_wall",
"tfmg:aluminum_cogwheel",
"tfmg:large_aluminum_cogwheel",
"tfmg:asphalt_slab",
"tfmg:steel_casing",
"tfmg:heavy_machinery_casing",
"tfmg:industrial_aluminum_casing",
"tfmg:asphalt_stairs",
"tfmg:steel_block",
"tfmg:cast_iron_block",
"tfmg:brass_pipe",
"tfmg:aluminum_block",
"tfmg:plastic_block",
"tfmg:encased_brass_pipe",
"tfmg:lead_block",
"tfmg:glass_brass_pipe",
"tfmg:constantan_block",
"tfmg:nickel_block",
"tfmg:brass_mechanical_pump",
"tfmg:lithium_block",
"tfmg:coal_coke_block",
"tfmg:brass_smart_fluid_pipe",
"tfmg:laminated_magnetic_alloy_block",
"tfmg:brass_fluid_valve",
"tfmg:heavy_casing_door",
"tfmg:steel_pipe",
"tfmg:steel_door",
"tfmg:encased_steel_pipe",
"tfmg:aluminum_door",
"tfmg:glass_steel_pipe",
"tfmg:heavy_plated_door",
"tfmg:steel_mechanical_pump",
"tfmg:steel_gearbox",
"tfmg:steel_bars",
"tfmg:steel_smart_fluid_pipe",
"tfmg:aluminum_bars",
"tfmg:cast_iron_bars",
"tfmg:steel_fluid_valve",
"tfmg:lead_bars",
"tfmg:aluminum_pipe",
"tfmg:nickel_bars",
"tfmg:encased_aluminum_pipe",
"tfmg:steel_ladder",
"tfmg:glass_aluminum_pipe",
"tfmg:aluminum_ladder",
"tfmg:aluminum_mechanical_pump",
"tfmg:cast_iron_ladder",
"tfmg:aluminum_smart_fluid_pipe",
"tfmg:lead_ladder",
"tfmg:aluminum_fluid_valve",
"tfmg:nickel_ladder",
"tfmg:cast_iron_pipe",
"tfmg:constantan_ladder",
"tfmg:encased_cast_iron_pipe",
"tfmg:steel_scaffolding",
"tfmg:glass_cast_iron_pipe",
"tfmg:aluminum_scaffolding",
"tfmg:cast_iron_mechanical_pump",
"tfmg:slag_bricks",
"tfmg:cast_iron_smart_fluid_pipe",
"tfmg:cinder_block",
"tfmg:cast_iron_fluid_valve",
"tfmg:cinderflour_block",
"tfmg:plastic_pipe",
"tfmg:factory_floor",
"tfmg:encased_plastic_pipe",
"tfmg:glass_plastic_pipe",
"tfmg:steel_trapdoor",
"tfmg:plastic_mechanical_pump",
"tfmg:steel_flywheel",
"tfmg:plastic_smart_fluid_pipe",
"tfmg:lead_flywheel",
"tfmg:plastic_fluid_valve",
"tfmg:cast_iron_flywheel",
"tfmg:steel_encased_shaft",
"tfmg:aluminum_flywheel",
"tfmg:heavy_casing_encased_shaft",
"tfmg:nickel_flywheel",
"tfmg:steel_encased_steel_cogwheel",
"tfmg:steel_truss",
"tfmg:heavy_casing_encased_steel_cogwheel",
"tfmg:steel_frame",
"tfmg:steel_encased_large_steel_cogwheel",
"tfmg:aluminum_truss",
"tfmg:heavy_casing_encased_large_steel_cogwheel",
"tfmg:aluminum_frame",
"tfmg:steel_encased_aluminum_cogwheel",
"tfmg:cast_iron_truss",
"tfmg:heavy_casing_encased_aluminum_cogwheel",
"tfmg:cast_iron_frame",
"tfmg:steel_encased_large_aluminum_cogwheel",
"tfmg:lead_truss",
"tfmg:heavy_casing_encased_large_aluminum_cogwheel",
"tfmg:lead_frame",
"tfmg:bauxite",
"tfmg:nickel_truss",
"tfmg:nickel_frame",
"tfmg:cut_bauxite",
"tfmg:constantan_truss",
"tfmg:cut_bauxite_stairs",
"tfmg:constantan_frame",
"tfmg:cut_bauxite_slab",
"tfmg:copper_truss",
"tfmg:cut_bauxite_wall",
"tfmg:copper_frame",
"tfmg:polished_cut_bauxite",
"tfmg:zinc_truss",
"tfmg:polished_cut_bauxite_stairs",
"tfmg:zinc_frame",
"tfmg:polished_cut_bauxite_slab",
"tfmg:brass_truss",
"tfmg:polished_cut_bauxite_wall",
"tfmg:brass_frame",
"tfmg:cut_bauxite_bricks",
"tfmg:white_caution_block",
"tfmg:blue_caution_block",
"tfmg:cut_bauxite_brick_stairs",
"tfmg:light_blue_caution_block",
"tfmg:cut_bauxite_brick_slab",
"tfmg:red_caution_block",
"tfmg:cut_bauxite_brick_wall",
"tfmg:green_caution_block",
"tfmg:small_bauxite_bricks",
"tfmg:lime_caution_block",
"tfmg:small_bauxite_brick_stairs",
"tfmg:pink_caution_block",
"tfmg:small_bauxite_brick_slab",
"tfmg:magenta_caution_block",
"tfmg:small_bauxite_brick_wall",
"tfmg:yellow_caution_block",
"tfmg:layered_bauxite",
"tfmg:gray_caution_block",
"tfmg:bauxite_pillar",
"tfmg:light_gray_caution_block",
"tfmg:galena",
"tfmg:brown_caution_block",
"tfmg:cut_galena",
"tfmg:cyan_caution_block",
"tfmg:cut_galena_stairs",
"tfmg:purple_caution_block",
"tfmg:cut_galena_slab",
"tfmg:orange_caution_block",
"tfmg:cut_galena_wall",
"tfmg:rebar_block",
"tfmg:polished_cut_galena",
"tfmg:rebar_floor",
"tfmg:polished_cut_galena_stairs",
"tfmg:rebar_wall",
"tfmg:polished_cut_galena_slab",
"tfmg:rebar_pile",
"tfmg:polished_cut_galena_wall",
"tfmg:rebar_stairs",
"tfmg:cut_galena_bricks",
"tfmg:rebar_pillar",
"tfmg:cut_galena_brick_stairs",
"tfmg:concrete_wall",
"tfmg:cut_galena_brick_slab",
"tfmg:concrete",
"tfmg:cut_galena_brick_wall",
"tfmg:concrete_stairs",
"tfmg:small_galena_bricks",
"tfmg:concrete_slab",
"tfmg:small_galena_brick_stairs",
"tfmg:rebar_concrete_wall",
"tfmg:small_galena_brick_slab",
"tfmg:rebar_concrete",
"tfmg:small_galena_brick_wall",
"tfmg:rebar_concrete_stairs",
"tfmg:layered_galena",
"tfmg:rebar_concrete_slab",
"tfmg:galena_pillar",
"tfmg:white_concrete",
"tfmg:white_concrete_wall",
"tfmg:white_concrete_stairs",
@@ -205,205 +365,6 @@
"tfmg:blue_concrete_slab",
"tfmg:light_blue_concrete",
"tfmg:light_blue_concrete_wall",
"tfmg:light_blue_concrete_stairs",
"tfmg:light_blue_concrete_slab",
"tfmg:red_concrete",
"tfmg:red_concrete_wall",
"tfmg:red_concrete_stairs",
"tfmg:red_concrete_slab",
"tfmg:green_concrete",
"tfmg:green_concrete_wall",
"tfmg:green_concrete_stairs",
"tfmg:green_concrete_slab",
"tfmg:lime_concrete",
"tfmg:lime_concrete_wall",
"tfmg:lime_concrete_stairs",
"tfmg:lime_concrete_slab",
"tfmg:pink_concrete",
"tfmg:pink_concrete_wall",
"tfmg:pink_concrete_stairs",
"tfmg:pink_concrete_slab",
"tfmg:magenta_concrete",
"tfmg:magenta_concrete_wall",
"tfmg:magenta_concrete_stairs",
"tfmg:magenta_concrete_slab",
"tfmg:yellow_concrete",
"tfmg:yellow_concrete_wall",
"tfmg:yellow_concrete_stairs",
"tfmg:yellow_concrete_slab",
"tfmg:gray_concrete",
"tfmg:gray_concrete_wall",
"tfmg:gray_concrete_stairs",
"tfmg:gray_concrete_slab",
"tfmg:light_gray_concrete",
"tfmg:light_gray_concrete_wall",
"tfmg:light_gray_concrete_stairs",
"tfmg:light_gray_concrete_slab",
"tfmg:brown_concrete",
"tfmg:brown_concrete_wall",
"tfmg:brown_concrete_stairs",
"tfmg:brown_concrete_slab",
"tfmg:cyan_concrete",
"tfmg:cyan_concrete_wall",
"tfmg:cyan_concrete_stairs",
"tfmg:cyan_concrete_slab",
"tfmg:purple_concrete",
"tfmg:purple_concrete_wall",
"tfmg:purple_concrete_stairs",
"tfmg:purple_concrete_slab",
"tfmg:orange_concrete",
"tfmg:orange_concrete_wall",
"tfmg:orange_concrete_stairs",
"tfmg:orange_concrete_slab",
"tfmg:black_concrete",
"tfmg:black_concrete_wall",
"tfmg:black_concrete_stairs",
"tfmg:black_concrete_slab",
"tfmg:white_rebar_concrete",
"tfmg:white_rebar_concrete_wall",
"tfmg:white_rebar_concrete_stairs",
"tfmg:white_rebar_concrete_slab",
"tfmg:blue_rebar_concrete",
"tfmg:blue_rebar_concrete_wall",
"tfmg:blue_rebar_concrete_stairs",
"tfmg:blue_rebar_concrete_slab",
"tfmg:light_blue_rebar_concrete",
"tfmg:light_blue_rebar_concrete_wall",
"tfmg:light_blue_rebar_concrete_stairs",
"tfmg:light_blue_rebar_concrete_slab",
"tfmg:red_rebar_concrete",
"tfmg:red_rebar_concrete_wall",
"tfmg:red_rebar_concrete_stairs",
"tfmg:red_rebar_concrete_slab",
"tfmg:green_rebar_concrete",
"tfmg:green_rebar_concrete_wall",
"tfmg:green_rebar_concrete_stairs",
"tfmg:green_rebar_concrete_slab",
"tfmg:lime_rebar_concrete",
"tfmg:lime_rebar_concrete_wall",
"tfmg:lime_rebar_concrete_stairs",
"tfmg:lime_rebar_concrete_slab",
"tfmg:pink_rebar_concrete",
"tfmg:pink_rebar_concrete_wall",
"tfmg:pink_rebar_concrete_stairs",
"tfmg:pink_rebar_concrete_slab",
"tfmg:magenta_rebar_concrete",
"tfmg:magenta_rebar_concrete_wall",
"tfmg:magenta_rebar_concrete_stairs",
"tfmg:magenta_rebar_concrete_slab",
"tfmg:yellow_rebar_concrete",
"tfmg:yellow_rebar_concrete_wall",
"tfmg:yellow_rebar_concrete_stairs",
"tfmg:yellow_rebar_concrete_slab",
"tfmg:gray_rebar_concrete",
"tfmg:gray_rebar_concrete_wall",
"tfmg:gray_rebar_concrete_stairs",
"tfmg:gray_rebar_concrete_slab",
"tfmg:light_gray_rebar_concrete",
"tfmg:light_gray_rebar_concrete_wall",
"tfmg:light_gray_rebar_concrete_stairs",
"tfmg:light_gray_rebar_concrete_slab",
"tfmg:brown_rebar_concrete",
"tfmg:brown_rebar_concrete_wall",
"tfmg:brown_rebar_concrete_stairs",
"tfmg:brown_rebar_concrete_slab",
"tfmg:cyan_rebar_concrete",
"tfmg:cyan_rebar_concrete_wall",
"tfmg:cyan_rebar_concrete_stairs",
"tfmg:cyan_rebar_concrete_slab",
"tfmg:purple_rebar_concrete",
"tfmg:purple_rebar_concrete_wall",
"tfmg:purple_rebar_concrete_stairs",
"tfmg:purple_rebar_concrete_slab",
"tfmg:orange_rebar_concrete",
"tfmg:orange_rebar_concrete_wall",
"tfmg:orange_rebar_concrete_stairs",
"tfmg:orange_rebar_concrete_slab",
"tfmg:black_rebar_concrete",
"tfmg:black_rebar_concrete_wall",
"tfmg:black_rebar_concrete_stairs",
"tfmg:black_rebar_concrete_slab",
"tfmg:asphalt",
"tfmg:asphalt_wall",
"tfmg:asphalt_slab",
"tfmg:asphalt_stairs",
"tfmg:brass_pipe",
"tfmg:encased_brass_pipe",
"tfmg:glass_brass_pipe",
"tfmg:brass_mechanical_pump",
"tfmg:brass_smart_fluid_pipe",
"tfmg:brass_fluid_valve",
"tfmg:steel_pipe",
"tfmg:encased_steel_pipe",
"tfmg:glass_steel_pipe",
"tfmg:steel_mechanical_pump",
"tfmg:steel_smart_fluid_pipe",
"tfmg:steel_fluid_valve",
"tfmg:aluminum_pipe",
"tfmg:encased_aluminum_pipe",
"tfmg:glass_aluminum_pipe",
"tfmg:aluminum_mechanical_pump",
"tfmg:aluminum_smart_fluid_pipe",
"tfmg:aluminum_fluid_valve",
"tfmg:cast_iron_pipe",
"tfmg:encased_cast_iron_pipe",
"tfmg:glass_cast_iron_pipe",
"tfmg:cast_iron_mechanical_pump",
"tfmg:cast_iron_smart_fluid_pipe",
"tfmg:cast_iron_fluid_valve",
"tfmg:plastic_pipe",
"tfmg:encased_plastic_pipe",
"tfmg:glass_plastic_pipe",
"tfmg:plastic_mechanical_pump",
"tfmg:plastic_smart_fluid_pipe",
"tfmg:plastic_fluid_valve",
"tfmg:steel_encased_shaft",
"tfmg:heavy_casing_encased_shaft",
"tfmg:steel_encased_steel_cogwheel",
"tfmg:heavy_casing_encased_steel_cogwheel",
"tfmg:steel_encased_large_steel_cogwheel",
"tfmg:heavy_casing_encased_large_steel_cogwheel",
"tfmg:steel_encased_aluminum_cogwheel",
"tfmg:heavy_casing_encased_aluminum_cogwheel",
"tfmg:steel_encased_large_aluminum_cogwheel",
"tfmg:heavy_casing_encased_large_aluminum_cogwheel",
"tfmg:bauxite",
"tfmg:cut_bauxite",
"tfmg:cut_bauxite_stairs",
"tfmg:cut_bauxite_slab",
"tfmg:cut_bauxite_wall",
"tfmg:polished_cut_bauxite",
"tfmg:polished_cut_bauxite_stairs",
"tfmg:polished_cut_bauxite_slab",
"tfmg:polished_cut_bauxite_wall",
"tfmg:cut_bauxite_bricks",
"tfmg:cut_bauxite_brick_stairs",
"tfmg:cut_bauxite_brick_slab",
"tfmg:cut_bauxite_brick_wall",
"tfmg:small_bauxite_bricks",
"tfmg:small_bauxite_brick_stairs",
"tfmg:small_bauxite_brick_slab",
"tfmg:small_bauxite_brick_wall",
"tfmg:layered_bauxite",
"tfmg:bauxite_pillar",
"tfmg:galena",
"tfmg:cut_galena",
"tfmg:cut_galena_stairs",
"tfmg:cut_galena_slab",
"tfmg:cut_galena_wall",
"tfmg:polished_cut_galena",
"tfmg:polished_cut_galena_stairs",
"tfmg:polished_cut_galena_slab",
"tfmg:polished_cut_galena_wall",
"tfmg:cut_galena_bricks",
"tfmg:cut_galena_brick_stairs",
"tfmg:cut_galena_brick_slab",
"tfmg:cut_galena_brick_wall",
"tfmg:small_galena_bricks",
"tfmg:small_galena_brick_stairs",
"tfmg:small_galena_brick_slab",
"tfmg:small_galena_brick_wall",
"tfmg:layered_galena",
"tfmg:galena_pillar"
"tfmg:light_blue_concrete_stairs"
]
}

View File

@@ -1,6 +1,7 @@
{
"values": [
"tfmg:fireclay",
"tfmg:cement",
"tfmg:cement"
]
}

View File

@@ -1,5 +1,7 @@
{
"values": [
"tfmg:bauxite",
"tfmg:galena",
"tfmg:bauxite",
"tfmg:galena"
]

View File

@@ -11,6 +11,20 @@
"tfmg:nickel_block",
"tfmg:lithium_block",
"tfmg:laminated_magnetic_alloy_block",
"tfmg:steel_block",
"tfmg:cast_iron_block",
"tfmg:aluminum_block",
"tfmg:lead_block",
"tfmg:constantan_block",
"tfmg:nickel_block",
"tfmg:lithium_block",
"tfmg:laminated_magnetic_alloy_block",
"tfmg:rebar_block",
"tfmg:rebar_floor",
"tfmg:rebar_wall",
"tfmg:rebar_pile",
"tfmg:rebar_stairs",
"tfmg:rebar_pillar",
"tfmg:rebar_block",
"tfmg:rebar_floor",
"tfmg:rebar_wall",

View File

@@ -1,19 +1,99 @@
{
"values": [
"tfmg:purple_concrete",
"tfmg:purple_concrete_wall",
"tfmg:purple_concrete_stairs",
"tfmg:purple_concrete_slab",
"tfmg:orange_concrete",
"tfmg:orange_concrete_wall",
"tfmg:orange_concrete_stairs",
"tfmg:orange_concrete_slab",
"tfmg:black_concrete",
"tfmg:black_concrete_wall",
"tfmg:black_concrete_stairs",
"tfmg:black_concrete_slab",
"tfmg:white_rebar_concrete",
"tfmg:white_rebar_concrete_wall",
"tfmg:white_rebar_concrete_stairs",
"tfmg:white_rebar_concrete_slab",
"tfmg:blue_rebar_concrete",
"tfmg:blue_rebar_concrete_wall",
"tfmg:blue_rebar_concrete_stairs",
"tfmg:blue_rebar_concrete_slab",
"tfmg:light_blue_rebar_concrete",
"tfmg:light_blue_rebar_concrete_wall",
"tfmg:light_blue_rebar_concrete_stairs",
"tfmg:lead_ore",
"tfmg:light_blue_rebar_concrete_slab",
"tfmg:deepslate_lead_ore",
"tfmg:nickel_ore",
"tfmg:red_rebar_concrete",
"tfmg:deepslate_nickel_ore",
"tfmg:lithium_ore",
"tfmg:red_rebar_concrete_wall",
"tfmg:deepslate_lithium_ore",
"tfmg:red_rebar_concrete_stairs",
"tfmg:red_rebar_concrete_slab",
"tfmg:green_rebar_concrete",
"tfmg:green_rebar_concrete_wall",
"tfmg:green_rebar_concrete_stairs",
"tfmg:green_rebar_concrete_slab",
"tfmg:lime_rebar_concrete",
"tfmg:lime_rebar_concrete_wall",
"tfmg:blast_furnace_output",
"tfmg:blast_furnace_hatch",
"tfmg:lime_rebar_concrete_stairs",
"tfmg:fireproof_bricks",
"tfmg:lime_rebar_concrete_slab",
"tfmg:reinforced_fireproof_bricks",
"tfmg:pink_rebar_concrete",
"tfmg:blast_furnace_reinforcement",
"tfmg:pink_rebar_concrete_wall",
"tfmg:blast_furnace_reinforcement_wall",
"tfmg:pink_rebar_concrete_stairs",
"tfmg:rusted_blast_furnace_reinforcement",
"tfmg:pink_rebar_concrete_slab",
"tfmg:rusted_blast_furnace_reinforcement_wall",
"tfmg:magenta_rebar_concrete",
"tfmg:magenta_rebar_concrete_wall",
"tfmg:magenta_rebar_concrete_stairs",
"tfmg:magenta_rebar_concrete_slab",
"tfmg:yellow_rebar_concrete",
"tfmg:yellow_rebar_concrete_wall",
"tfmg:yellow_rebar_concrete_stairs",
"tfmg:yellow_rebar_concrete_slab",
"tfmg:gray_rebar_concrete",
"tfmg:gray_rebar_concrete_wall",
"tfmg:gray_rebar_concrete_stairs",
"tfmg:gray_rebar_concrete_slab",
"tfmg:light_gray_rebar_concrete",
"tfmg:light_gray_rebar_concrete_wall",
"tfmg:light_gray_rebar_concrete_stairs",
"tfmg:light_gray_rebar_concrete_slab",
"tfmg:brown_rebar_concrete",
"tfmg:brown_rebar_concrete_wall",
"tfmg:brown_rebar_concrete_stairs",
"tfmg:brown_rebar_concrete_slab",
"tfmg:cyan_rebar_concrete",
"tfmg:cyan_rebar_concrete_wall",
"tfmg:cyan_rebar_concrete_stairs",
"tfmg:cyan_rebar_concrete_slab",
"tfmg:purple_rebar_concrete",
"tfmg:purple_rebar_concrete_wall",
"tfmg:purple_rebar_concrete_stairs",
"tfmg:purple_rebar_concrete_slab",
"tfmg:orange_rebar_concrete",
"tfmg:orange_rebar_concrete_wall",
"tfmg:orange_rebar_concrete_stairs",
"tfmg:orange_rebar_concrete_slab",
"tfmg:black_rebar_concrete",
"tfmg:black_rebar_concrete_wall",
"tfmg:black_rebar_concrete_stairs",
"tfmg:black_rebar_concrete_slab",
"tfmg:asphalt",
"tfmg:asphalt_wall",
"tfmg:asphalt_slab",
"tfmg:asphalt_stairs",
"tfmg:plastic_block",
"tfmg:coal_coke_block",
"tfmg:white_caution_block",
@@ -66,110 +146,6 @@
"tfmg:pink_concrete",
"tfmg:pink_concrete_wall",
"tfmg:pink_concrete_stairs",
"tfmg:pink_concrete_slab",
"tfmg:magenta_concrete",
"tfmg:magenta_concrete_wall",
"tfmg:magenta_concrete_stairs",
"tfmg:magenta_concrete_slab",
"tfmg:yellow_concrete",
"tfmg:yellow_concrete_wall",
"tfmg:yellow_concrete_stairs",
"tfmg:yellow_concrete_slab",
"tfmg:gray_concrete",
"tfmg:gray_concrete_wall",
"tfmg:gray_concrete_stairs",
"tfmg:gray_concrete_slab",
"tfmg:light_gray_concrete",
"tfmg:light_gray_concrete_wall",
"tfmg:light_gray_concrete_stairs",
"tfmg:light_gray_concrete_slab",
"tfmg:brown_concrete",
"tfmg:brown_concrete_wall",
"tfmg:brown_concrete_stairs",
"tfmg:brown_concrete_slab",
"tfmg:cyan_concrete",
"tfmg:cyan_concrete_wall",
"tfmg:cyan_concrete_stairs",
"tfmg:cyan_concrete_slab",
"tfmg:purple_concrete",
"tfmg:purple_concrete_wall",
"tfmg:purple_concrete_stairs",
"tfmg:purple_concrete_slab",
"tfmg:orange_concrete",
"tfmg:orange_concrete_wall",
"tfmg:orange_concrete_stairs",
"tfmg:orange_concrete_slab",
"tfmg:black_concrete",
"tfmg:black_concrete_wall",
"tfmg:black_concrete_stairs",
"tfmg:black_concrete_slab",
"tfmg:white_rebar_concrete",
"tfmg:white_rebar_concrete_wall",
"tfmg:white_rebar_concrete_stairs",
"tfmg:white_rebar_concrete_slab",
"tfmg:blue_rebar_concrete",
"tfmg:blue_rebar_concrete_wall",
"tfmg:blue_rebar_concrete_stairs",
"tfmg:blue_rebar_concrete_slab",
"tfmg:light_blue_rebar_concrete",
"tfmg:light_blue_rebar_concrete_wall",
"tfmg:light_blue_rebar_concrete_stairs",
"tfmg:light_blue_rebar_concrete_slab",
"tfmg:red_rebar_concrete",
"tfmg:red_rebar_concrete_wall",
"tfmg:red_rebar_concrete_stairs",
"tfmg:red_rebar_concrete_slab",
"tfmg:green_rebar_concrete",
"tfmg:green_rebar_concrete_wall",
"tfmg:green_rebar_concrete_stairs",
"tfmg:green_rebar_concrete_slab",
"tfmg:lime_rebar_concrete",
"tfmg:lime_rebar_concrete_wall",
"tfmg:lime_rebar_concrete_stairs",
"tfmg:lime_rebar_concrete_slab",
"tfmg:pink_rebar_concrete",
"tfmg:pink_rebar_concrete_wall",
"tfmg:pink_rebar_concrete_stairs",
"tfmg:pink_rebar_concrete_slab",
"tfmg:magenta_rebar_concrete",
"tfmg:magenta_rebar_concrete_wall",
"tfmg:magenta_rebar_concrete_stairs",
"tfmg:magenta_rebar_concrete_slab",
"tfmg:yellow_rebar_concrete",
"tfmg:yellow_rebar_concrete_wall",
"tfmg:yellow_rebar_concrete_stairs",
"tfmg:yellow_rebar_concrete_slab",
"tfmg:gray_rebar_concrete",
"tfmg:gray_rebar_concrete_wall",
"tfmg:gray_rebar_concrete_stairs",
"tfmg:gray_rebar_concrete_slab",
"tfmg:light_gray_rebar_concrete",
"tfmg:light_gray_rebar_concrete_wall",
"tfmg:light_gray_rebar_concrete_stairs",
"tfmg:light_gray_rebar_concrete_slab",
"tfmg:brown_rebar_concrete",
"tfmg:brown_rebar_concrete_wall",
"tfmg:brown_rebar_concrete_stairs",
"tfmg:brown_rebar_concrete_slab",
"tfmg:cyan_rebar_concrete",
"tfmg:cyan_rebar_concrete_wall",
"tfmg:cyan_rebar_concrete_stairs",
"tfmg:cyan_rebar_concrete_slab",
"tfmg:purple_rebar_concrete",
"tfmg:purple_rebar_concrete_wall",
"tfmg:purple_rebar_concrete_stairs",
"tfmg:purple_rebar_concrete_slab",
"tfmg:orange_rebar_concrete",
"tfmg:orange_rebar_concrete_wall",
"tfmg:orange_rebar_concrete_stairs",
"tfmg:orange_rebar_concrete_slab",
"tfmg:black_rebar_concrete",
"tfmg:black_rebar_concrete_wall",
"tfmg:black_rebar_concrete_stairs",
"tfmg:black_rebar_concrete_slab",
"tfmg:asphalt",
"tfmg:asphalt_wall",
"tfmg:asphalt_slab",
"tfmg:asphalt_stairs"
"tfmg:pink_concrete_slab"
]
}

View File

@@ -1,20 +1,5 @@
{
"values": [
"tfmg:concrete_slab",
"tfmg:rebar_concrete_slab",
"tfmg:white_concrete_slab",
"tfmg:blue_concrete_slab",
"tfmg:light_blue_concrete_slab",
"tfmg:red_concrete_slab",
"tfmg:green_concrete_slab",
"tfmg:lime_concrete_slab",
"tfmg:pink_concrete_slab",
"tfmg:magenta_concrete_slab",
"tfmg:yellow_concrete_slab",
"tfmg:gray_concrete_slab",
"tfmg:light_gray_concrete_slab",
"tfmg:brown_concrete_slab",
"tfmg:cyan_concrete_slab",
"tfmg:purple_concrete_slab",
"tfmg:orange_concrete_slab",
"tfmg:black_concrete_slab",
@@ -42,6 +27,16 @@
"tfmg:cut_galena_slab",
"tfmg:polished_cut_galena_slab",
"tfmg:cut_galena_brick_slab",
"tfmg:small_galena_brick_slab"
"tfmg:concrete_slab",
"tfmg:small_galena_brick_slab",
"tfmg:rebar_concrete_slab",
"tfmg:white_concrete_slab",
"tfmg:blue_concrete_slab",
"tfmg:light_blue_concrete_slab",
"tfmg:red_concrete_slab",
"tfmg:green_concrete_slab",
"tfmg:lime_concrete_slab",
"tfmg:pink_concrete_slab",
"tfmg:magenta_concrete_slab"
]
}

View File

@@ -1,20 +1,5 @@
{
"values": [
"tfmg:concrete_stairs",
"tfmg:rebar_concrete_stairs",
"tfmg:white_concrete_stairs",
"tfmg:blue_concrete_stairs",
"tfmg:light_blue_concrete_stairs",
"tfmg:red_concrete_stairs",
"tfmg:green_concrete_stairs",
"tfmg:lime_concrete_stairs",
"tfmg:pink_concrete_stairs",
"tfmg:magenta_concrete_stairs",
"tfmg:yellow_concrete_stairs",
"tfmg:gray_concrete_stairs",
"tfmg:light_gray_concrete_stairs",
"tfmg:brown_concrete_stairs",
"tfmg:cyan_concrete_stairs",
"tfmg:purple_concrete_stairs",
"tfmg:orange_concrete_stairs",
"tfmg:black_concrete_stairs",
@@ -42,6 +27,16 @@
"tfmg:cut_galena_stairs",
"tfmg:polished_cut_galena_stairs",
"tfmg:cut_galena_brick_stairs",
"tfmg:small_galena_brick_stairs"
"tfmg:concrete_stairs",
"tfmg:small_galena_brick_stairs",
"tfmg:rebar_concrete_stairs",
"tfmg:white_concrete_stairs",
"tfmg:blue_concrete_stairs",
"tfmg:light_blue_concrete_stairs",
"tfmg:red_concrete_stairs",
"tfmg:green_concrete_stairs",
"tfmg:lime_concrete_stairs",
"tfmg:pink_concrete_stairs",
"tfmg:magenta_concrete_stairs"
]
}

View File

@@ -1,5 +1,6 @@
{
"values": [
"tfmg:steel_trapdoor",
"tfmg:steel_trapdoor"
]
}

View File

@@ -1,21 +1,5 @@
{
"values": [
"tfmg:fireproof_brick_reinforcement",
"tfmg:concrete_wall",
"tfmg:rebar_concrete_wall",
"tfmg:white_concrete_wall",
"tfmg:blue_concrete_wall",
"tfmg:light_blue_concrete_wall",
"tfmg:red_concrete_wall",
"tfmg:green_concrete_wall",
"tfmg:lime_concrete_wall",
"tfmg:pink_concrete_wall",
"tfmg:magenta_concrete_wall",
"tfmg:yellow_concrete_wall",
"tfmg:gray_concrete_wall",
"tfmg:light_gray_concrete_wall",
"tfmg:brown_concrete_wall",
"tfmg:cyan_concrete_wall",
"tfmg:purple_concrete_wall",
"tfmg:orange_concrete_wall",
"tfmg:black_concrete_wall",
@@ -26,6 +10,7 @@
"tfmg:green_rebar_concrete_wall",
"tfmg:lime_rebar_concrete_wall",
"tfmg:pink_rebar_concrete_wall",
"tfmg:fireproof_brick_reinforcement",
"tfmg:magenta_rebar_concrete_wall",
"tfmg:yellow_rebar_concrete_wall",
"tfmg:gray_rebar_concrete_wall",
@@ -42,7 +27,17 @@
"tfmg:small_bauxite_brick_wall",
"tfmg:cut_galena_wall",
"tfmg:polished_cut_galena_wall",
"tfmg:concrete_wall",
"tfmg:cut_galena_brick_wall",
"tfmg:small_galena_brick_wall"
"tfmg:rebar_concrete_wall",
"tfmg:small_galena_brick_wall",
"tfmg:white_concrete_wall",
"tfmg:blue_concrete_wall",
"tfmg:light_blue_concrete_wall",
"tfmg:red_concrete_wall",
"tfmg:green_concrete_wall",
"tfmg:lime_concrete_wall",
"tfmg:pink_concrete_wall",
"tfmg:magenta_concrete_wall"
]
}

View File

@@ -1,5 +1,9 @@
{
"values": [
"tfmg:heavy_casing_door",
"tfmg:steel_door",
"tfmg:aluminum_door",
"tfmg:heavy_plated_door",
"tfmg:heavy_casing_door",
"tfmg:steel_door",
"tfmg:aluminum_door",

View File

@@ -1,5 +1,9 @@
{
"values": [
"tfmg:heavy_casing_door",
"tfmg:steel_door",
"tfmg:aluminum_door",
"tfmg:heavy_plated_door",
"tfmg:heavy_casing_door",
"tfmg:steel_door",
"tfmg:aluminum_door",

View File

@@ -0,0 +1,32 @@
{
"parent": "minecraft:recipes/root",
"criteria": {
"has_item": {
"conditions": {
"items": [
{
"items": "tfmg:aluminum_ingot"
}
]
},
"trigger": "minecraft:inventory_changed"
},
"has_the_recipe": {
"conditions": {
"recipe": "tfmg:crafting/materials/compressor"
},
"trigger": "minecraft:recipe_unlocked"
}
},
"requirements": [
[
"has_the_recipe",
"has_item"
]
],
"rewards": {
"recipes": [
"tfmg:crafting/materials/compressor"
]
}
}

View File

@@ -0,0 +1,32 @@
{
"parent": "minecraft:recipes/root",
"criteria": {
"has_item": {
"conditions": {
"items": [
{
"items": "tfmg:aluminum_ingot"
}
]
},
"trigger": "minecraft:inventory_changed"
},
"has_the_recipe": {
"conditions": {
"recipe": "tfmg:crafting/materials/freezer"
},
"trigger": "minecraft:recipe_unlocked"
}
},
"requirements": [
[
"has_the_recipe",
"has_item"
]
],
"rewards": {
"recipes": [
"tfmg:crafting/materials/freezer"
]
}
}

View File

@@ -0,0 +1,21 @@
{
"type": "minecraft:block",
"pools": [
{
"bonus_rolls": 0.0,
"conditions": [
{
"condition": "minecraft:survives_explosion"
}
],
"entries": [
{
"type": "minecraft:item",
"name": "tfmg:compressor"
}
],
"rolls": 1.0
}
],
"random_sequence": "tfmg:blocks/compressor"
}

View File

@@ -0,0 +1,21 @@
{
"type": "minecraft:block",
"pools": [
{
"bonus_rolls": 0.0,
"conditions": [
{
"condition": "minecraft:survives_explosion"
}
],
"entries": [
{
"type": "minecraft:item",
"name": "tfmg:freezer"
}
],
"rolls": 1.0
}
],
"random_sequence": "tfmg:blocks/freezer"
}

View File

@@ -3,7 +3,7 @@
"ingredients": [
{
"type": "neoforge:single",
"amount": 200,
"amount": 144,
"fluid": "tfmg:molten_plastic"
}
],

View File

@@ -0,0 +1,30 @@
{
"type": "minecraft:crafting_shaped",
"category": "misc",
"key": {
"B": {
"item": "create:copper_backtank"
},
"C": {
"item": "tfmg:heavy_machinery_casing"
},
"P": {
"item": "tfmg:aluminum_pipe"
},
"S": {
"item": "tfmg:steel_fluid_tank"
},
"T": {
"item": "create:shaft"
}
},
"pattern": [
"PTP",
"SCS",
"PBP"
],
"result": {
"count": 1,
"id": "tfmg:compressor"
}
}

View File

@@ -0,0 +1,27 @@
{
"type": "minecraft:crafting_shaped",
"category": "misc",
"key": {
"C": {
"item": "tfmg:compressor"
},
"P": {
"item": "create:fluid_pipe"
},
"R": {
"item": "tfmg:lpg_bucket"
},
"W": {
"item": "tfmg:electromagnetic_coil"
}
},
"pattern": [
"PWP",
"WCW",
"RWR"
],
"result": {
"count": 1,
"id": "tfmg:freezer"
}
}

View File

@@ -4,7 +4,7 @@
"tfmg:steel_vat",
"tfmg:firebrick_lined_vat"
],
"heat_requirement": "heated",
"heat_level": 2,
"ingredients": [
{
"item": "tfmg:bauxite_powder"

View File

@@ -1,6 +1,7 @@
{
"type": "tfmg:vat_machine_recipe",
"allowed_vat_types": [
"tfmg:cast_iron_vat",
"tfmg:steel_vat",
"tfmg:firebrick_lined_vat"
],
@@ -26,7 +27,7 @@
"min_size": 1,
"results": [
{
"amount": 1000,
"amount": 32000,
"id": "tfmg:liquid_concrete"
}
]

View File

@@ -10,6 +10,7 @@
"fluid": "tfmg:sulfuric_acid"
}
],
"min_size": 1,
"processing_time": 100,
"results": [
{

View File

@@ -1,10 +1,11 @@
{
"type": "tfmg:vat_machine_recipe",
"allowed_vat_types": [
"tfmg:cast_iron_vat",
"tfmg:steel_vat",
"tfmg:firebrick_lined_vat"
],
"heat_requirement": "heated",
"heat_level": 2,
"ingredients": [
{
"type": "neoforge:single",

View File

@@ -1,10 +1,11 @@
{
"type": "tfmg:vat_machine_recipe",
"allowed_vat_types": [
"tfmg:cast_iron_vat",
"tfmg:steel_vat",
"tfmg:firebrick_lined_vat"
],
"heat_requirement": "heated",
"heat_level": 2,
"ingredients": [
{
"type": "neoforge:single",

View File

@@ -1,10 +1,11 @@
{
"type": "tfmg:vat_machine_recipe",
"allowed_vat_types": [
"tfmg:cast_iron_vat",
"tfmg:steel_vat",
"tfmg:firebrick_lined_vat"
],
"heat_requirement": "heated",
"heat_level": 2,
"ingredients": [
{
"type": "neoforge:single",

View File

@@ -1,10 +1,11 @@
{
"type": "tfmg:vat_machine_recipe",
"allowed_vat_types": [
"tfmg:cast_iron_vat",
"tfmg:steel_vat",
"tfmg:firebrick_lined_vat"
],
"heat_requirement": "heated",
"heat_level": 2,
"ingredients": [
{
"item": "tfmg:sulfur_dust"

View File

@@ -1,6 +1,7 @@
{
"type": "tfmg:vat_machine_recipe",
"allowed_vat_types": [
"tfmg:cast_iron_vat",
"tfmg:steel_vat",
"tfmg:firebrick_lined_vat"
],

View File

@@ -1,5 +1,6 @@
{
"values": [
"tfmg:fireproof_brick_reinforcement",
"tfmg:fireproof_brick_reinforcement"
]
}

View File

@@ -1,5 +1,7 @@
{
"values": [
"tfmg:blast_furnace_hatch",
"tfmg:fireproof_bricks",
"tfmg:blast_furnace_hatch",
"tfmg:fireproof_bricks"
]

View File

@@ -2,6 +2,7 @@
"values": [
"tfmg:pumpjack_hammer_head",
"tfmg:large_pumpjack_hammer_head",
"minecraft:iron_block",
"minecraft:iron_block"
]
}

View File

@@ -1,6 +1,7 @@
{
"values": [
"tfmg:large_pumpjack_hammer_part",
"#tfmg:pumpjack_small_part",
"#tfmg:pumpjack_small_part"
]
}

View File

@@ -2,6 +2,9 @@
"values": [
"tfmg:blast_furnace_reinforcement",
"tfmg:rusted_blast_furnace_reinforcement",
"tfmg:blast_furnace_reinforcement",
"tfmg:rusted_blast_furnace_reinforcement",
"tfmg:steel_block",
"tfmg:steel_block"
]
}

View File

@@ -2,6 +2,7 @@
"values": [
"tfmg:blast_furnace_hatch",
"tfmg:reinforced_fireproof_bricks",
"tfmg:steel_block",
"tfmg:steel_block"
]
}

View File

@@ -1,6 +1,7 @@
{
"values": [
"tfmg:oil_deposit",
"tfmg:heavy_machinery_casing",
"tfmg:heavy_machinery_casing"
]
}

View File

@@ -1,8 +1,9 @@
package com.drmangotea.tfmg.content.machinery.vat.base;
import com.drmangotea.tfmg.TFMG;
import com.drmangotea.tfmg.base.lang.TFMGLang;
import com.drmangotea.tfmg.base.lang.TFMGTexts;
import com.drmangotea.tfmg.content.machinery.vat.compressor.CompressorBlockEntity;
import com.drmangotea.tfmg.content.machinery.vat.freezer.FreezerBlockEntity;
import com.drmangotea.tfmg.mixin.accessor.TankSegmentAccessor;
import com.drmangotea.tfmg.recipes.VatMachineRecipe;
import com.drmangotea.tfmg.registry.TFMGBlockEntities;
@@ -23,6 +24,7 @@ import com.simibubi.create.foundation.recipe.RecipeConditions;
import com.simibubi.create.foundation.recipe.RecipeFinder;
import com.simibubi.create.foundation.utility.CreateLang;
import com.simibubi.create.infrastructure.config.AllConfigs;
import joptsimple.internal.Strings;
import net.createmod.catnip.animation.LerpedFloat;
import net.createmod.catnip.data.Couple;
import net.createmod.catnip.lang.LangBuilder;
@@ -34,6 +36,7 @@ import net.minecraft.core.HolderLookup;
import net.minecraft.nbt.CompoundTag;
import net.minecraft.nbt.NbtUtils;
import net.minecraft.network.chat.Component;
import net.minecraft.network.chat.MutableComponent;
import net.minecraft.world.item.Item;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.item.crafting.Ingredient;
@@ -43,7 +46,6 @@ import net.minecraft.world.level.block.entity.BlockEntity;
import net.minecraft.world.level.block.entity.BlockEntityType;
import net.minecraft.world.level.block.state.BlockState;
import net.minecraft.world.phys.AABB;
import net.neoforged.neoforge.capabilities.Capabilities;
import net.neoforged.neoforge.capabilities.RegisterCapabilitiesEvent;
import net.neoforged.neoforge.fluids.FluidStack;
@@ -56,7 +58,6 @@ import net.neoforged.neoforge.items.IItemHandler;
import net.neoforged.neoforge.items.IItemHandlerModifiable;
import net.neoforged.neoforge.items.wrapper.CombinedInvWrapper;
import javax.annotation.Nullable;
import java.util.*;
import java.util.concurrent.atomic.AtomicBoolean;
@@ -66,38 +67,49 @@ import static java.lang.Math.abs;
public class VatBlockEntity extends SmartBlockEntity implements IHaveGoggleInformation, IMultiBlockEntityContainer.Fluid {
private static final int MAX_SIZE = 3;
//item inventory
public VatInventory inputInventory;
public VatInventory outputInventory;
//fluid inventory
public SmartFluidTankBehaviour inputTank;
public SmartFluidTankBehaviour outputTank;
private Couple<SmartFluidTankBehaviour> tanks;
//capabilities
protected IFluidHandler fluidCapability;
protected IItemHandlerModifiable itemCapability;
//rendering
protected boolean forceFluidLevelUpdate;
public LerpedFloat[] fluidLevel = new LerpedFloat[8];
protected int luminosity;
//visual state data
protected boolean window;
protected int width;
protected int height;
//updating and technical stuff
protected BlockPos controller;
protected BlockPos lastKnownPos;
protected boolean updateConnectivity;
protected boolean updateCapability;
protected boolean window;
protected int luminosity;
protected int width;
protected int height;
private static final int SYNC_RATE = 8;
protected int syncCooldown;
protected boolean queuedSync;
//
public LerpedFloat[] fluidLevel = new LerpedFloat[8];
/// /
boolean evaluateNextTick = true;
int timer = 0;
public VatMachineRecipe recipe;
//machines
public Map<BlockPos, String> machineMap = new HashMap<>();
public Map<BlockPos, Boolean> operationalMachinesMap = new HashMap<>();
public boolean areMachinesValid = true;
boolean evaluateNextTick = true;
//processing data
float efficiency = 1;
int timer = 0;
public VatMachineRecipe recipe;
int heatLevel = 0;
int pressure = 0;
HeatCondition heatCondition = HeatCondition.NONE;
private static final Object vatRecipeKey = new Object();
// display
private int minValue = 0;
private int maxValue = 0;
public VatBlockEntity(BlockEntityType<?> type, BlockPos pos, BlockState state) {
super(type, pos, state);
@@ -106,8 +118,6 @@ public class VatBlockEntity extends SmartBlockEntity implements IHaveGoggleInfor
fluidLevel[i] = LerpedFloat.linear();
}
window = false;
// if(Objects.equals(((VatBlock) getBlockState().getBlock()).vatType, "tfmg:firebrick_lined_vat"))
// window = false;
inputInventory = new VatInventory(4, this);
outputInventory = new VatInventory(4, this);
tanks = Couple.create(inputTank, outputTank);
@@ -115,7 +125,6 @@ public class VatBlockEntity extends SmartBlockEntity implements IHaveGoggleInfor
forceFluidLevelUpdate = true;
updateConnectivity = false;
updateCapability = false;
//window = ((VatBlock)getBlockState().getBlock()).vatType != "tfmg:firebrick_lined_vat";
height = 1;
width = 1;
refreshCapability();
@@ -176,6 +185,79 @@ public class VatBlockEntity extends SmartBlockEntity implements IHaveGoggleInfor
}
//goggle stuff
public MutableComponent getHeatComponent(boolean forGoggles, boolean useBlocksAsBars, ChatFormatting... styles) {
return componentHelper("heat", 10 + heatLevel, forGoggles, useBlocksAsBars, styles);
}
public MutableComponent getPressureComponent(boolean forGoggles, boolean useBlocksAsBars, ChatFormatting... styles) {
return componentHelper("pressure", 10 + pressure, 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 CreateLang.translateDirect("vat." + label)
.withStyle(style1)
.append(CreateLang.translateDirect("vat." + label + "_dots")
.withStyle(style2))
.append(base)
.append("("+level/10f+")");
}
private MutableComponent blockComponent(int level) {
return Component.literal("" + "\u2588".repeat(minValue) + "\u2592".repeat(level - minValue) + "\u2591".repeat(maxValue - level));
}
private MutableComponent barComponent(int level) {
ChatFormatting color = level - minValue >19 ? ChatFormatting.DARK_RED : ChatFormatting.DARK_GREEN;
switch (level - minValue) {
case 1: color = ChatFormatting.BLUE; break;
case 2: color = ChatFormatting.DARK_AQUA; break;
case 3: color = ChatFormatting.DARK_AQUA; break;
case 4: color = ChatFormatting.AQUA; break;
case 5: color = ChatFormatting.AQUA; break;
case 6: color = ChatFormatting.AQUA; break;
case 7: color = ChatFormatting.AQUA; break;
case 8: color = ChatFormatting.AQUA; break;
case 11: color = ChatFormatting.YELLOW; break;
case 12: color = ChatFormatting.YELLOW; break;
case 13: color = ChatFormatting.YELLOW; break;
case 14: color = ChatFormatting.YELLOW; break;
case 15: color = ChatFormatting.YELLOW; break;
case 16: color = ChatFormatting.GOLD; break;
case 17: color = ChatFormatting.RED; break;
case 18: color = ChatFormatting.RED; break;
case 19: color = ChatFormatting.DARK_RED; break;
}
return Component.empty()
.append(bars(Math.max(0, minValue - 1), ChatFormatting.RED))
.append(bars(minValue > 0 ? 1 : 0, ChatFormatting.GOLD))
.append(bars(Math.max(0, level - minValue), color))
.append(bars(Math.max(0, maxValue - level), ChatFormatting.BLUE))
.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 Component.literal(Strings.repeat('|', level))
.withStyle(format);
}
/// //////
@Override
public void lazyTick() {
super.lazyTick();
@@ -205,6 +287,7 @@ public class VatBlockEntity extends SmartBlockEntity implements IHaveGoggleInfor
int prevHeat = heatLevel;
heatLevel = 0;
pressure = 0;
heatCondition = HeatCondition.NONE;
BlockPos pos1 = controller == null ? getBlockPos() : controller;
VatBlockEntity be = getControllerBE() == null ? this : getControllerBE();
@@ -214,9 +297,19 @@ public class VatBlockEntity extends SmartBlockEntity implements IHaveGoggleInfor
BlockPos pos = pos1.offset(xOffset, -1, zOffset);
BlockState blockState = level.getBlockState(pos);
float heat = BoilerHeater.findHeat(level, pos, blockState);
if (heat > 0) {
heatLevel += (int) heat;
}
if (level.getBlockEntity(pos) instanceof FreezerBlockEntity freezer && freezer.isOperational()) {
heatLevel--;
}
if (level.getBlockEntity(pos) instanceof CompressorBlockEntity compressor && compressor.getState() != CompressorBlockEntity.CompressorState.NON_OPERATIONAL) {
if (compressor.getState() == CompressorBlockEntity.CompressorState.PRESSURIZING)
pressure++;
if (compressor.getState() == CompressorBlockEntity.CompressorState.DEPRESSURIZING)
pressure--;
}
}
}
if (heatLevel >= 2) {
@@ -306,7 +399,6 @@ public class VatBlockEntity extends SmartBlockEntity implements IHaveGoggleInfor
}
//////////////////////////////////////////
if (doesntMatch)
continue;
@@ -506,7 +598,6 @@ public class VatBlockEntity extends SmartBlockEntity implements IHaveGoggleInfor
//fluid output
List<FluidStack> handledFluidStacks = new ArrayList<>();
List<SmartFluidTankBehaviour.TankSegment> tankSegments = List.of(outputTank.getTanks());
if (recipe != null)
@@ -535,9 +626,6 @@ public class VatBlockEntity extends SmartBlockEntity implements IHaveGoggleInfor
}
@Override
public BlockPos getLastKnownPos() {
return lastKnownPos;
@@ -636,7 +724,6 @@ public class VatBlockEntity extends SmartBlockEntity implements IHaveGoggleInfor
heatLevel = 0;
heatCondition = HeatCondition.NONE;
int superheatedCount = 0;
float speed = 1;
@@ -860,20 +947,26 @@ public class VatBlockEntity extends SmartBlockEntity implements IHaveGoggleInfor
sendData();
}
/**
* Used when the vat changes size
* sets capabilities of all vat blocks to controller's inventory
*/
private void refreshCapability() {
//LazyOptional<IFluidHandler> oldFluidCap = fluidCapability;
//LazyOptional<IItemHandlerModifiable> oldItemCap = itemCapability;
fluidCapability = getNewFluidCapability();
itemCapability = getNewItemCapability();
invalidateCapabilities();
}
/**
* finds the new fitting fluid capability
*
* @return fluid capability of the vat's controller
*/
private IFluidHandler getNewFluidCapability() {
IFluidHandler outputHandler = outputTank.getCapability();
IFluidHandler inputHandler = inputTank.getCapability();
if (inputHandler == null || outputHandler == null)
return fluidCapability;
@@ -881,11 +974,19 @@ public class VatBlockEntity extends SmartBlockEntity implements IHaveGoggleInfor
: getControllerBE() != null ? getControllerBE().getNewFluidCapability() : fluidCapability;
}
/**
* finds the new fitting item capability
*
* @return item capability of the vat's controller
*/
private IItemHandlerModifiable getNewItemCapability() {
return isController() ? new CombinedInvWrapper(inputInventory, outputInventory)
: getControllerBE() != null ? getControllerBE().getNewItemCapability() : itemCapability;
}
/**
* @return vat's controller
*/
@Override
public BlockPos getController() {
return isController() ? worldPosition : controller;
@@ -899,13 +1000,6 @@ public class VatBlockEntity extends SmartBlockEntity implements IHaveGoggleInfor
return super.createRenderBoundingBox();
}
@Nullable
public VatBlockEntity getOtherVatBE(Direction direction) {
BlockEntity otherBE = level.getBlockEntity(worldPosition.relative(direction));
if (otherBE instanceof VatBlockEntity)
return (VatBlockEntity) otherBE;
return null;
}
public void addMachineTooltip(String operationId, boolean isOperational, List<Component> tooltip) {
LangBuilder operation = TFMGTexts.Vat.operation(operationId);
@@ -926,6 +1020,11 @@ public class VatBlockEntity extends SmartBlockEntity implements IHaveGoggleInfor
TFMGTexts.header("vat").style(ChatFormatting.GRAY)
.forGoggles(tooltip);
;
CreateLang.builder().add(getPressureComponent(true, false)).forGoggles(tooltip, 1);
CreateLang.builder().add(getHeatComponent(true, false)).forGoggles(tooltip, 1);
TFMGTexts.Vat.contents().forGoggles(tooltip);
TFMGTexts.Vat.attachments()
@@ -937,7 +1036,7 @@ public class VatBlockEntity extends SmartBlockEntity implements IHaveGoggleInfor
}
TFMGTexts.heatStatus(heatCondition).forGoggles(tooltip);
TFMGTexts.Vat.contents().forGoggles(tooltip);
@@ -1019,16 +1118,8 @@ public class VatBlockEntity extends SmartBlockEntity implements IHaveGoggleInfor
});
inputInventory.deserializeNBT(registries, compound.getCompound("InputItems"));
outputInventory.deserializeNBT(registries, compound.getCompound("OutputItems"));
//
//machines = new ArrayList<>();
//for(int i = 0; i<compound.getInt("MachineCount");i++){
// machines.add(compound.getString("Machine"+i));
//}
}
// if (compound.contains("ForceFluidLevel") || fluidLevel == null)
// fluidLevel = LerpedFloat.linear()
// .startWithValue(getFillState());
updateCapability = true;
@@ -1045,20 +1136,10 @@ public class VatBlockEntity extends SmartBlockEntity implements IHaveGoggleInfor
}
invalidateRenderBoundingBox();
}
if (isController()) {
float fillState = getFillState();
//if (compound.contains("ForceFluidLevel") || fluidLevel == null)
// fluidLevel = LerpedFloat.linear()
// .startWithValue(fillState);
//fluidLevel.chase(fillState, 0.5f, LerpedFloat.Chaser.EXP);
}
if (luminosity != prevLum && hasLevel())
level.getChunkSource()
.getLightEngine()
.checkBlock(worldPosition);
//if (compound.contains("LazySync"))
// fluidLevel.chase(fluidLevel.getChaseTarget(), 0.125f, LerpedFloat.Chaser.EXP);
}
public float getFillState() {
@@ -1087,12 +1168,6 @@ public class VatBlockEntity extends SmartBlockEntity implements IHaveGoggleInfor
compound.put("InputItems", inputInventory.serializeNBT(registries));
compound.put("OutputItems", outputInventory.serializeNBT(registries));
//for(int i = 0; i<machines.size();i++){
// compound.putString("Machine"+i, machines.get(i));
//}
//compound.putInt("MachineCount",machines.size());
}
compound.putInt("Luminosity", luminosity);
super.write(compound, registries, clientPacket);
@@ -1110,20 +1185,6 @@ public class VatBlockEntity extends SmartBlockEntity implements IHaveGoggleInfor
return width * width * height;
}
//@Nonnull
//@Override
//public <T> LazyOptional<T> getCapability(@Nonnull Capability<T> cap, @Nullable Direction side) {
// if (!fluidCapability.isPresent() || !itemCapability.isPresent())
// refreshCapability();
// if (cap == ForgeCapabilities.FLUID_HANDLER)
// return fluidCapability.cast();
// if (cap == ForgeCapabilities.ITEM_HANDLER)
// return itemCapability.cast();
//
//
// return super.getCapability(cap, side);
//}
@Override
public void invalidate() {
super.invalidate();
@@ -1135,17 +1196,9 @@ public class VatBlockEntity extends SmartBlockEntity implements IHaveGoggleInfor
}
public static int getMaxHeight() {
return 3;
return 10;
}
public LerpedFloat[] getFluidLevel() {
return fluidLevel;
}
// public void setFluidLevel(LerpedFloat fluidLevel) {
// this.fluidLevel = fluidLevel;
// }
@Override
public void preventConnectivityUpdate() {
updateConnectivity = false;
@@ -1154,7 +1207,7 @@ public class VatBlockEntity extends SmartBlockEntity implements IHaveGoggleInfor
@Override
public void notifyMultiUpdated() {
BlockState state = this.getBlockState();
if (VatBlock.isVat(state)) { // safety
if (VatBlock.isVat(state)) {
state = state.setValue(VatBlock.BOTTOM, getController().getY() == getBlockPos().getY());
state = state.setValue(VatBlock.TOP, getController().getY() + height - 1 == getBlockPos().getY());
level.setBlock(getBlockPos(), state, 6);

View File

@@ -60,7 +60,7 @@ public class VatRenderer extends SafeBlockEntityRenderer<VatBlockEntity> {
if (units < 1)
continue;
float yMin = capHeight + level;
float yMax = yMin + (fluidLevel * (vat.height - (2 * capHeight))) / 5;
float yMax = Math.min(yMin + (fluidLevel * (vat.height - (2 * capHeight))),vat.height);
NeoForgeCatnipServices.FLUID_RENDERER.renderFluidBox(renderedFluid, xMin, yMin, zMin, xMax, yMax, zMax,
buffer, ms, light, false, false);

View File

@@ -0,0 +1,41 @@
package com.drmangotea.tfmg.content.machinery.vat.compressor;
import com.drmangotea.tfmg.content.electricity.base.IElectric;
import com.drmangotea.tfmg.registry.TFMGBlockEntities;
import com.simibubi.create.content.kinetics.base.HorizontalKineticBlock;
import com.simibubi.create.foundation.block.IBE;
import net.minecraft.core.BlockPos;
import net.minecraft.core.Direction;
import net.minecraft.world.level.Level;
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;
public class CompressorBlock extends HorizontalKineticBlock implements IBE<CompressorBlockEntity> {
public CompressorBlock(Properties p_49795_) {
super(p_49795_);
}
@Override
public boolean hasShaftTowards(LevelReader world, BlockPos pos, BlockState state, Direction face) {
return face == state.getValue(HORIZONTAL_FACING);
}
@Override
public Direction.Axis getRotationAxis(BlockState state) {
return state.getValue(HORIZONTAL_FACING).getAxis();
}
@Override
public Class<CompressorBlockEntity> getBlockEntityClass() {
return CompressorBlockEntity.class;
}
@Override
public BlockEntityType<? extends CompressorBlockEntity> getBlockEntityType() {
return TFMGBlockEntities.COMPRESSOR.get();
}
}

View File

@@ -0,0 +1,53 @@
package com.drmangotea.tfmg.content.machinery.vat.compressor;
import com.drmangotea.tfmg.base.lang.TFMGLang;
import com.drmangotea.tfmg.base.lang.TFMGTexts;
import com.simibubi.create.content.kinetics.base.KineticBlockEntity;
import net.minecraft.ChatFormatting;
import net.minecraft.core.BlockPos;
import net.minecraft.network.chat.Component;
import net.minecraft.world.level.block.entity.BlockEntityType;
import net.minecraft.world.level.block.state.BlockState;
import java.util.List;
public class CompressorBlockEntity extends KineticBlockEntity {
public CompressorBlockEntity(BlockEntityType<?> type, BlockPos pos, BlockState state) {
super(type, pos, state);
}
public CompressorState getState(){
if(Math.abs(getSpeed())<120){
return CompressorState.NON_OPERATIONAL;
}
if(getSpeed()>0){
return CompressorState.PRESSURIZING;
}
return CompressorState.DEPRESSURIZING;
}
@Override
public boolean addToGoggleTooltip(List<Component> tooltip, boolean isPlayerSneaking) {
if(getState()==CompressorState.NON_OPERATIONAL) {
TFMGLang.translate("goggles.compressor.non_operational").style(ChatFormatting.RED).forGoggles(tooltip);
}else if(getState()==CompressorState.PRESSURIZING){
TFMGLang.translate("goggles.compressor.pressurizing").style(ChatFormatting.YELLOW).forGoggles(tooltip);
}else {
TFMGLang.translate("goggles.compressor.depressurizing").style(ChatFormatting.AQUA).forGoggles(tooltip);
}
return super.addToGoggleTooltip(tooltip, isPlayerSneaking);
}
public enum CompressorState{
PRESSURIZING,
DEPRESSURIZING,
NON_OPERATIONAL
}
}

View File

@@ -0,0 +1,54 @@
package com.drmangotea.tfmg.content.machinery.vat.compressor;
import com.drmangotea.tfmg.content.machinery.misc.winding_machine.WindingMachineBlockEntity;
import com.drmangotea.tfmg.registry.TFMGItems;
import com.drmangotea.tfmg.registry.TFMGPartialModels;
import com.mojang.blaze3d.vertex.PoseStack;
import com.mojang.blaze3d.vertex.VertexConsumer;
import com.simibubi.create.AllPartialModels;
import com.simibubi.create.content.kinetics.base.KineticBlockEntityRenderer;
import dev.engine_room.flywheel.lib.transform.TransformStack;
import net.createmod.catnip.render.CachedBuffers;
import net.createmod.catnip.render.SuperByteBuffer;
import net.minecraft.client.Minecraft;
import net.minecraft.client.renderer.MultiBufferSource;
import net.minecraft.client.renderer.RenderType;
import net.minecraft.client.renderer.blockentity.BlockEntityRendererProvider;
import net.minecraft.client.renderer.entity.ItemRenderer;
import net.minecraft.client.resources.model.BakedModel;
import net.minecraft.core.Direction;
import net.minecraft.world.item.ItemDisplayContext;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.level.block.state.BlockState;
import net.neoforged.neoforge.common.Tags;
import static com.simibubi.create.content.kinetics.base.HorizontalKineticBlock.HORIZONTAL_FACING;
import static net.minecraft.world.level.block.HorizontalDirectionalBlock.FACING;
public class CompressorRenderer extends KineticBlockEntityRenderer<CompressorBlockEntity> {
public CompressorRenderer(BlockEntityRendererProvider.Context context) {
super(context);
}
@Override
protected void renderSafe(CompressorBlockEntity be, float partialTicks, PoseStack ms, MultiBufferSource bufferSource, int light, int overlay) {
BlockState blockState = be.getBlockState();
ItemRenderer itemRenderer = Minecraft.getInstance()
.getItemRenderer();
VertexConsumer vb = bufferSource.getBuffer(RenderType.solid());
super.renderSafe(be, partialTicks, ms, bufferSource, 9999999, overlay);
}
@Override
protected SuperByteBuffer getRotatedModel(CompressorBlockEntity be, BlockState state) {
return CachedBuffers.partialFacing(AllPartialModels.SHAFT_HALF, state, state
.getValue(HORIZONTAL_FACING));
}
}

View File

@@ -0,0 +1,59 @@
package com.drmangotea.tfmg.content.machinery.vat.compressor;
import com.drmangotea.tfmg.content.machinery.misc.winding_machine.WindingMachineBlockEntity;
import com.simibubi.create.AllPartialModels;
import com.simibubi.create.content.kinetics.base.KineticBlockEntityVisual;
import com.simibubi.create.content.kinetics.base.RotatingInstance;
import com.simibubi.create.foundation.render.AllInstanceTypes;
import dev.engine_room.flywheel.api.instance.Instance;
import dev.engine_room.flywheel.api.visualization.VisualizationContext;
import dev.engine_room.flywheel.lib.model.Models;
import net.minecraft.core.BlockPos;
import net.minecraft.core.Direction;
import java.util.function.Consumer;
import static com.simibubi.create.content.kinetics.base.HorizontalKineticBlock.HORIZONTAL_FACING;
public class CompressorVisual extends KineticBlockEntityVisual<CompressorBlockEntity> {
protected final RotatingInstance shaft;
public CompressorVisual(VisualizationContext context, CompressorBlockEntity blockEntity, float partialTick) {
super(context, blockEntity, partialTick);
Direction facing = blockEntity.getBlockState().getValue(HORIZONTAL_FACING);
shaft = instancerProvider().instancer(AllInstanceTypes.ROTATING, Models.partial(AllPartialModels.SHAFT_HALF))
.createInstance();
shaft.setup(blockEntity)
.setPosition(getVisualPosition())
.rotateToFace(Direction.SOUTH, facing)
.setChanged();
}
@Override
public void update(float pt) {
shaft.setup(blockEntity)
.setChanged();
}
@Override
public void updateLight(float partialTick) {
Direction facing = blockEntity.getBlockState().getValue(HORIZONTAL_FACING);
BlockPos behind = pos.relative(facing);
relight(behind, shaft);
}
@Override
protected void _delete() {
shaft.delete();
}
@Override
public void collectCrumblingInstances(Consumer<Instance> consumer) {
consumer.accept(shaft);
}
}

View File

@@ -0,0 +1,43 @@
package com.drmangotea.tfmg.content.machinery.vat.freezer;
import com.drmangotea.tfmg.TFMG;
import com.drmangotea.tfmg.base.TFMGUtils;
import com.drmangotea.tfmg.content.electricity.base.IElectric;
import com.drmangotea.tfmg.content.machinery.vat.electrode_holder.electrode.Electrode;
import com.drmangotea.tfmg.registry.TFMGBlockEntities;
import com.simibubi.create.foundation.block.IBE;
import net.minecraft.core.BlockPos;
import net.minecraft.world.InteractionHand;
import net.minecraft.world.ItemInteractionResult;
import net.minecraft.world.entity.player.Player;
import net.minecraft.world.item.ItemStack;
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.phys.BlockHitResult;
public class FreezerBlock extends Block implements IBE<FreezerBlockEntity> {
public FreezerBlock(Properties p_49795_) {
super(p_49795_);
}
@Override
public void onPlace(BlockState pState, Level level, BlockPos pos, BlockState pOldState, boolean pIsMoving) {
withBlockEntityDo(level,pos, IElectric::onPlaced);
}
@Override
public void onRemove(BlockState state, Level level, BlockPos pos, BlockState newState, boolean isMoving) {
IBE.onRemove(state, level, pos, newState);
}
@Override
public Class<FreezerBlockEntity> getBlockEntityClass() {
return FreezerBlockEntity.class;
}
@Override
public BlockEntityType<? extends FreezerBlockEntity> getBlockEntityType() {
return TFMGBlockEntities.FREEZER.get();
}
}

View File

@@ -0,0 +1,91 @@
package com.drmangotea.tfmg.content.machinery.vat.freezer;
import com.drmangotea.tfmg.TFMG;
import com.drmangotea.tfmg.TFMGRegistries;
import com.drmangotea.tfmg.base.TFMGUtils;
import com.drmangotea.tfmg.base.lang.TFMGTexts;
import com.drmangotea.tfmg.config.TFMGConfigs;
import com.drmangotea.tfmg.content.electricity.base.ElectricBlockEntity;
import com.drmangotea.tfmg.content.machinery.vat.base.IVatMachine;
import com.drmangotea.tfmg.content.machinery.vat.base.VatBlock;
import com.drmangotea.tfmg.content.machinery.vat.base.VatBlockEntity;
import com.drmangotea.tfmg.content.machinery.vat.electrode_holder.electrode.Electrode;
import net.minecraft.core.BlockPos;
import net.minecraft.core.Direction;
import net.minecraft.core.HolderLookup;
import net.minecraft.nbt.CompoundTag;
import net.minecraft.network.chat.Component;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.world.entity.item.ItemEntity;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.level.block.entity.BlockEntityType;
import net.minecraft.world.level.block.state.BlockState;
import net.minecraft.world.phys.AABB;
import java.util.List;
public class FreezerBlockEntity extends ElectricBlockEntity {
public FreezerBlockEntity(BlockEntityType<?> type, BlockPos pos, BlockState state) {
super(type, pos, state);
}
@Override
public int getMaxVoltage() {
return 20000;
}
@Override
public int getMaxCurrent() {
return 400;
}
@Override
public boolean hasElectricitySlot(Direction direction) {
return true;
}
public boolean isOperational(){
return getCurrent()>3&&!data.notEnoughPower;
}
@Override
public boolean makeMultimeterTooltip(List<Component> tooltip, boolean isPlayerSneaking) {
super.makeMultimeterTooltip(tooltip, isPlayerSneaking);
if (!isOperational())
TFMGTexts.Multimeter.notEnoughCurrent(3).forGoggles(tooltip);
return true;
}
@Override
public float resistance() {
return 75;
}
@Override
public void onNetworkChanged(int oldVoltage, int oldPower) {
super.onNetworkChanged(oldVoltage, oldPower);
VatBlock.updateVatState(getBlockState(), level, getBlockPos().relative(Direction.DOWN));
}
@Override
public AABB getRenderBoundingBox() {
return new AABB(getBlockPos()).setMinY(getBlockPos().getY() - 2);
}
}

View File

@@ -22,7 +22,7 @@ public class TFMGCastingRecipeGen extends CastingRecipeGen {
PLASTIC_SHEET = create("plastic_sheet", b ->b
.require(TFMGFluids.MOLTEN_PLASTIC.get(),200)
.require(TFMGFluids.MOLTEN_PLASTIC.get(),144)
.output(TFMGItems.PLASTIC_SHEET)
.duration(100)),

View File

@@ -7,7 +7,6 @@ import com.drmangotea.tfmg.recipes.VatMachineRecipe;
import com.drmangotea.tfmg.registry.TFMGFluids;
import com.drmangotea.tfmg.registry.TFMGItems;
import com.drmangotea.tfmg.registry.TFMGTags;
import com.simibubi.create.content.processing.recipe.HeatCondition;
import net.minecraft.core.HolderLookup;
import net.minecraft.data.PackOutput;
import net.minecraft.world.level.block.Blocks;
@@ -27,15 +26,14 @@ public class TFMGVatRecipeGen extends VatRecipeGen {
}
GeneratedRecipe
CONCRETE = create("concrete", b -> ((VatMachineRecipe.Builder<VatMachineRecipe>) b)
.require(Blocks.SAND.asItem())
.require(Blocks.GRAVEL.asItem())
.require(TFMGItems.LIMESAND)
.require(Fluids.WATER, 250)
.output(TFMGFluids.LIQUID_CONCRETE.get(), 1000)
.values(mixing())
.output(TFMGFluids.LIQUID_CONCRETE.get(), 32000)
.values(mixing(true))
),
ARC_FURNACE_STEEL = create("arc_furnace_steel", b -> ((VatMachineRecipe.Builder<VatMachineRecipe>) b)
.require(crushedRawIron())
@@ -58,32 +56,29 @@ public class TFMGVatRecipeGen extends VatRecipeGen {
.require(sulfurDust())
.require(nitrateDust())
.output(sulfuricAcid(), 500)
.values(mixing())),
.values(mixing(true))),
RUBBER = create("rubber", b -> ((VatMachineRecipe.Builder<VatMachineRecipe>) b)
.require(SizedFluidIngredient.of(heavyOil(), 250))
.require(sulfurDust())
.output(rubber())
.requiresHeat(HeatCondition.HEATED)
.values(mixing())),
.values(heatedmixing(true))),
NAPHTHA = create("naphtha", b -> ((VatMachineRecipe.Builder<VatMachineRecipe>) b)
.require(SizedFluidIngredient.of(naphtha(), 500))
.output(ethylene(), 250)
.output(propylene(), 250)
.requiresHeat(HeatCondition.HEATED)
.values(mixing())),
.values(heatedmixing(true))),
PLASTIC_FROM_ETHYLENE = create("plastic_from_ethylene", b -> ((VatMachineRecipe.Builder<VatMachineRecipe>) b)
.require(SizedFluidIngredient.of(ethylene(), 500))
.output(liquidPlastic(), 500)
.requiresHeat(HeatCondition.HEATED)
.values(mixing())),
.values(heatedmixing(true))),
PLASTIC_FROM_PROPYLENE = create("plastic_from_propylene", b -> ((VatMachineRecipe.Builder<VatMachineRecipe>) b)
.require(SizedFluidIngredient.of(propylene(), 500))
.output(liquidPlastic(), 500)
.requiresHeat(HeatCondition.HEATED)
.values(mixing())),
.values(heatedmixing(true))),
ETCHED_CIRCUIT_BOARD = create("etched_circuit_board", b -> ((VatMachineRecipe.Builder<VatMachineRecipe>) b)
.require(TFMGItems.COATED_CIRCUIT_BOARD)
.require(TFMGFluids.SULFURIC_ACID.getSource(), 250)
@@ -100,9 +95,10 @@ public class TFMGVatRecipeGen extends VatRecipeGen {
.output(.25f, TFMGItems.ALUMINUM_NUGGET, 2)
.output(TFMGFluids.CARBON_DIOXIDE.get(), 500)
.duration(100)
.requiresHeat(HeatCondition.HEATED)
.values(electrolysis()));
//DEBUG_5 = createVatRecipe("debug_5", b -> ((VatMachineRecipe.Builder<VatMachineRecipe>) b)
.values(electrolysis()))
//DEBUG = createVatRecipe("debug_5", b -> ((VatMachineRecipe.Builder<VatMachineRecipe>) b)
// .require(Blocks.GOLD_BLOCK.asItem())
// .require(Blocks.DIAMOND_BLOCK.asItem())
// .require(Blocks.IRON_BLOCK.asItem())
@@ -130,18 +126,37 @@ public class TFMGVatRecipeGen extends VatRecipeGen {
params.allowedVatTypes = new ArrayList<>();
params.allowedVatTypes.add("tfmg:steel_vat");
params.allowedVatTypes.add("tfmg:firebrick_lined_vat");
params.heat = 2;
return params;
}
public VatRecipeValues mixing() {
return mixing(false);
}
public VatRecipeValues mixing(boolean allowsCastIronVat) {
VatRecipeValues params = new VatRecipeValues();
params.machines.add("tfmg:mixing");
params.allowedVatTypes = new ArrayList<>();
if (allowsCastIronVat)
params.allowedVatTypes.add("tfmg:cast_iron_vat");
params.allowedVatTypes.add("tfmg:steel_vat");
params.allowedVatTypes.add("tfmg:firebrick_lined_vat");
return params;
}
public VatRecipeValues heatedmixing(boolean allowsCastIronVat) {
VatRecipeValues params = new VatRecipeValues();
params.machines.add("tfmg:mixing");
params.allowedVatTypes = new ArrayList<>();
if (allowsCastIronVat)
params.allowedVatTypes.add("tfmg:cast_iron_vat");
params.allowedVatTypes.add("tfmg:steel_vat");
params.allowedVatTypes.add("tfmg:firebrick_lined_vat");
params.heat = 2;
return params;
}
public VatRecipeValues centrifuge() {
VatRecipeValues params = new VatRecipeValues();
params.machines.add("tfmg:centrifuge");
@@ -150,18 +165,22 @@ public class TFMGVatRecipeGen extends VatRecipeGen {
public VatRecipeValues noMachines() {
VatRecipeValues params = new VatRecipeValues();
params.machines = new ArrayList<>();
params.allowedVatTypes = new ArrayList<>();
params.allowedVatTypes.add("tfmg:steel_vat");
params.allowedVatTypes.add("tfmg:cast_iron_vat");
params.allowedVatTypes.add("tfmg:firebrick_lined_vat");
params.minSize = 0;
params.minSize = 1;
return params;
}
public VatRecipeValues freezing() {
VatRecipeValues params = new VatRecipeValues();
params.machines.add("tfmg:freezing");
params.allowedVatTypes = new ArrayList<>();
params.allowedVatTypes.add("tfmg:cast_iron_vat");
params.allowedVatTypes.add("tfmg:steel_vat");
params.allowedVatTypes.add("tfmg:firebrick_lined_vat");
params.heat = 5;
return params;
}
@@ -183,21 +202,33 @@ public class TFMGVatRecipeGen extends VatRecipeGen {
params.allowedVatTypes.add("tfmg:firebrick_lined_vat");
return params;
}
public static class VatRecipeValues {
public List<String> machines;
public int minSize;
public int heat;
public int pressure;
public List<String> allowedVatTypes;
public VatRecipeValues() {
machines = new ArrayList<>();
minSize = 1;
heat = 0;
pressure = 0;
allowedVatTypes = new ArrayList<>();
allowedVatTypes.add("tfmg:steel_vat");
allowedVatTypes.add("tfmg:cast_iron_vat");
allowedVatTypes.add("tfmg:firebrick_lined_vat");
}
public VatRecipeValues heat(int heat) {
VatRecipeValues values = this;
values.heat = heat;
return values;
}
}
}

View File

@@ -83,7 +83,8 @@ public class VatMachineRecipe extends ProcessingRecipe<RecipeInput, VatRecipePar
public VatMachineRecipe.Builder<R> values(TFMGVatRecipeGen.VatRecipeValues value) {
params.machines = value.machines;
params.allowedVatTypes = value.allowedVatTypes;
params.pressure = value.pressure;
params.heat_level = value.heat;
params.min_size = value.minSize;
return this;
}

View File

@@ -29,12 +29,15 @@ public class VatRecipeParams extends ProcessingRecipeParams {
.forGetter(VatRecipeParams::getMinSize),
Codec.INT.optionalFieldOf("heat_level", 0)
.forGetter(VatRecipeParams::getHeatLevel),
Codec.INT.optionalFieldOf("pressure", 0)
.forGetter(VatRecipeParams::getPressure),
Codec.STRING.listOf().optionalFieldOf("machines", new ArrayList<>()).forGetter(VatRecipeParams::getMachines),
Codec.STRING.listOf().optionalFieldOf("allowed_vat_types", types).forGetter(VatRecipeParams::getAllowedVatTypes)
).apply(instance, (params, min_size, heat_level, machines, allowed_vat_types) -> {
).apply(instance, (params, min_size, heat_level,pressure, machines, allowed_vat_types) -> {
params.machines = machines;
params.min_size = min_size;
params.heat_level = heat_level;
params.pressure = pressure;
params.allowedVatTypes = allowed_vat_types;
return params;
}));
@@ -44,6 +47,8 @@ public class VatRecipeParams extends ProcessingRecipeParams {
public int heat_level;
public int pressure;
public List<String> machines;
public List<String> allowedVatTypes;
@@ -51,6 +56,11 @@ public class VatRecipeParams extends ProcessingRecipeParams {
return heat_level;
}
protected final int getPressure() {
return pressure;
}
protected final int getMinSize() {
return min_size;
}
@@ -68,6 +78,7 @@ public class VatRecipeParams extends ProcessingRecipeParams {
super.encode(buffer);
ByteBufCodecs.INT.encode(buffer, min_size);
ByteBufCodecs.INT.encode(buffer, heat_level);
ByteBufCodecs.INT.encode(buffer, pressure);
CatnipStreamCodecBuilders.list(ByteBufCodecs.STRING_UTF8).encode(buffer, machines);
@@ -80,6 +91,7 @@ public class VatRecipeParams extends ProcessingRecipeParams {
super.decode(buffer);
min_size = ByteBufCodecs.INT.decode(buffer);
heat_level = ByteBufCodecs.INT.decode(buffer);
pressure = ByteBufCodecs.INT.decode(buffer);
machines = CatnipStreamCodecBuilders.list(ByteBufCodecs.STRING_UTF8).decode(buffer);
allowedVatTypes = CatnipStreamCodecBuilders.list(ByteBufCodecs.STRING_UTF8).decode(buffer);

View File

@@ -11,6 +11,7 @@ import mezz.jei.api.gui.ingredient.IRecipeSlotsView;
import mezz.jei.api.recipe.IFocusGroup;
import mezz.jei.api.recipe.RecipeIngredientRole;
import net.createmod.catnip.data.Pair;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.GuiGraphics;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.item.crafting.Ingredient;
@@ -94,7 +95,14 @@ public class ChemicalVatCategory extends CreateRecipeCategory<VatMachineRecipe>
drawVatTypes(allowedVatTypes, graphics);
drawSprites(machines, graphics);
renderHeated(recipe.getRequiredHeat(), graphics);
if(recipe.heatLevel!=0) {
TFMGGuiTextures.VAT_HEATER.render(graphics, 55 - 10, 109);
graphics.drawString(Minecraft.getInstance().font, String.valueOf((recipe.heatLevel + 10f) / 10f), 76.0F, 113.0F, 0xFF501C, false);
}
int pos = 55;
int width = ((recipe.getFluidIngredients().size()) * 21) / 2;

View File

@@ -99,8 +99,12 @@ import com.drmangotea.tfmg.content.machinery.oil_processing.surface_scanner.Surf
import com.drmangotea.tfmg.content.machinery.oil_processing.surface_scanner.SurfaceScannerRenderer;
import com.drmangotea.tfmg.content.machinery.vat.base.VatBlockEntity;
import com.drmangotea.tfmg.content.machinery.vat.base.VatRenderer;
import com.drmangotea.tfmg.content.machinery.vat.compressor.CompressorBlockEntity;
import com.drmangotea.tfmg.content.machinery.vat.compressor.CompressorRenderer;
import com.drmangotea.tfmg.content.machinery.vat.compressor.CompressorVisual;
import com.drmangotea.tfmg.content.machinery.vat.electrode_holder.ElectrodeHolderBlockEntity;
import com.drmangotea.tfmg.content.machinery.vat.electrode_holder.ElectrodeHolderRenderer;
import com.drmangotea.tfmg.content.machinery.vat.freezer.FreezerBlockEntity;
import com.drmangotea.tfmg.content.machinery.vat.industrial_mixer.IndustrialMixerBlockEntity;
import com.drmangotea.tfmg.content.machinery.vat.industrial_mixer.IndustrialMixerRenderer;
import com.drmangotea.tfmg.content.machinery.vat.industrial_mixer.IndustrialMixerVisual;
@@ -351,6 +355,16 @@ public class TFMGBlockEntities {
.validBlocks(TFMGBlocks.ELECTRODE_HOLDER)
.renderer(() -> ElectrodeHolderRenderer::new)
.register();
public static final BlockEntityEntry<FreezerBlockEntity> FREEZER = REGISTRATE
.blockEntity("freezer", FreezerBlockEntity::new)
.validBlocks(TFMGBlocks.FREEZER)
.register();
public static final BlockEntityEntry<CompressorBlockEntity> COMPRESSOR = REGISTRATE
.blockEntity("compressor", CompressorBlockEntity::new)
.visual(() -> CompressorVisual::new)
.validBlocks(TFMGBlocks.COMPRESSOR)
.renderer(() -> CompressorRenderer::new)
.register();
public static final BlockEntityEntry<SteelTankBlockEntity> STEEL_FLUID_TANK = REGISTRATE
.blockEntity("steel_fluid_tank", SteelTankBlockEntity::new)
.validBlocks(TFMGBlocks.STEEL_FLUID_TANK)

View File

@@ -114,7 +114,9 @@ import com.drmangotea.tfmg.content.machinery.oil_processing.pumpjack.hammer.part
import com.drmangotea.tfmg.content.machinery.oil_processing.surface_scanner.SurfaceScannerBlock;
import com.drmangotea.tfmg.content.machinery.vat.base.VatBlock;
import com.drmangotea.tfmg.content.machinery.vat.base.VatGenerator;
import com.drmangotea.tfmg.content.machinery.vat.compressor.CompressorBlock;
import com.drmangotea.tfmg.content.machinery.vat.electrode_holder.ElectrodeHolderBlock;
import com.drmangotea.tfmg.content.machinery.vat.freezer.FreezerBlock;
import com.drmangotea.tfmg.content.machinery.vat.industrial_mixer.IndustrialMixerBlock;
import com.simibubi.create.AllTags;
import com.simibubi.create.api.stress.BlockStressValues;
@@ -496,6 +498,23 @@ public class TFMGBlocks {
.item()
.transform(customItemModel())
.register();
public static final BlockEntry<FreezerBlock> FREEZER = REGISTRATE.block("freezer", FreezerBlock::new)
.initialProperties(SharedProperties::softMetal)
.transform(pickaxeOnly())
.blockstate((ctx, prov) -> prov.simpleBlock(ctx.getEntry(), AssetLookup.partialBaseModel(ctx, prov)))
.item()
.transform(customItemModel())
.register();
public static final BlockEntry<CompressorBlock> COMPRESSOR = REGISTRATE.block("compressor", CompressorBlock::new)
.initialProperties(SharedProperties::softMetal)
.transform(pickaxeOnly())
.blockstate(BlockStateGen.horizontalBlockProvider(true))
// .blockstate((ctx, prov) -> prov.simpleBlock(ctx.getEntry(), AssetLookup.partialBaseModel(ctx, prov)))
.transform(TFMGStress.setImpact(24.0))
.item()
.transform(customItemModel())
.register();
//------------------ORES------------------//

View File

@@ -66,6 +66,10 @@
"tfmg.goggles.electric_machine.no_power": "No Power",
"tfmg.goggles.electricity.insufficient_voltage": "Insufficient Voltage",
"tfmg.goggles.compressor.non_operational": "State: Non Operational(Needs at least 120 RPM)",
"tfmg.goggles.compressor.pressurizing": "State: Pressurizing",
"tfmg.goggles.compressor.depressurizing": "State: Depressurizing",
"tfmg.goggles.voltmeter": "Voltmeter:",
"tfmg.goggles.gauge.value": " Measured Voltage:",
"tfmg.goggles.voltmeter.range": " Range: %1$s",
@@ -97,6 +101,10 @@
"tfmg.goggles.vat.tfmg.electrode": " Electrode",
"tfmg.goggles.vat.tfmg.mixing": " Mixer",
"tfmg.goggles.vat.tfmg.centrifuge": " Centrifuge",
"create.vat.pressure_dots": "... ",
"create.vat.pressure": "Pressure",
"create.vat.heat_dots": "................ ",
"create.vat.heat": "Heat",
"tfmg.goggles.ammeter": "Ammeter:",
@@ -209,6 +217,8 @@
"tfmg.goggles.voltmeter.mode.capacity": "Capacity",
"tfmg.goggles.voltmeter.mode.fallback": "Fallback",
"tfmg.display_source.electricity.power_usage": "Power Usage",
"tfmg.display_source.electricity.network_resistance": "Network Resistance",
"tfmg.display_source.electricity.voltage": "Voltage",

View File

@@ -0,0 +1,69 @@
{
"format_version": "1.21.11",
"credit": "Made with Blockbench",
"parent": "block/block",
"textures": {
"0": "tfmg:block/compressor_shaft",
"1": "tfmg:block/compressor",
"2": "tfmg:block/compressor_top",
"particle": "tfmg:block/compressor"
},
"elements": [
{
"from": [0, 0, 1],
"to": [16, 16, 16],
"rotation": {"angle": 0, "axis": "y", "origin": [0, 0, 1]},
"faces": {
"north": {"uv": [0, 0, 16, 16], "texture": "#0"},
"east": {"uv": [0, 0, 15, 16], "texture": "#1"},
"south": {"uv": [0, 0, 16, 16], "texture": "#1"},
"west": {"uv": [1, 0, 16, 16], "texture": "#1"},
"up": {"uv": [0, 1, 16, 16], "texture": "#2"},
"down": {"uv": [0, 0, 16, 15], "texture": "#1"}
}
},
{
"from": [0, 0, 0],
"to": [2, 16, 1],
"faces": {
"north": {"uv": [14, 0, 16, 16], "texture": "#0"},
"east": {"uv": [1, 0, 2, 16], "texture": "#0"},
"west": {"uv": [0, 0, 1, 16], "texture": "#1"},
"up": {"uv": [0, 0, 2, 1], "texture": "#2"},
"down": {"uv": [0, 1, 2, 2], "texture": "#2"}
}
},
{
"from": [14, 0, 0],
"to": [16, 16, 1],
"rotation": {"angle": 0, "axis": "y", "origin": [14, 0, 0]},
"faces": {
"north": {"uv": [0, 0, 2, 16], "texture": "#0"},
"east": {"uv": [0, 0, 1, 16], "texture": "#2"},
"west": {"uv": [1, 0, 2, 16], "texture": "#0"},
"up": {"uv": [2, 0, 0, 1], "texture": "#2"},
"down": {"uv": [2, 0, 0, 1], "texture": "#2"}
}
},
{
"from": [2, 14, 0],
"to": [14, 16, 1],
"rotation": {"angle": 0, "axis": "y", "origin": [12, 0, 0]},
"faces": {
"north": {"uv": [2, 0, 14, 2], "texture": "#0"},
"up": {"uv": [2, 0, 14, 1], "texture": "#2"},
"down": {"uv": [2, 1, 14, 2], "texture": "#0"}
}
},
{
"from": [2, 0, 0],
"to": [14, 2, 1],
"rotation": {"angle": 0, "axis": "y", "origin": [12, -14, 0]},
"faces": {
"north": {"uv": [2, 14, 14, 16], "texture": "#0"},
"up": {"uv": [2, 1, 14, 2], "texture": "#0"},
"down": {"uv": [2, 0, 14, 1], "texture": "#1"}
}
}
]
}

View File

@@ -0,0 +1,83 @@
{
"format_version": "1.21.11",
"credit": "Made with Blockbench",
"parent": "block/block",
"textures": {
"0": "tfmg:block/compressor_shaft",
"1": "tfmg:block/compressor",
"2": "tfmg:block/compressor_top",
"3": "tfmg:block/shaft",
"4": "tfmg:block/shaft_top",
"particle": "tfmg:block/compressor"
},
"elements": [
{
"from": [0, 0, 1],
"to": [16, 16, 16],
"rotation": {"angle": 0, "axis": "y", "origin": [0, 0, 1]},
"faces": {
"north": {"uv": [0, 0, 16, 16], "texture": "#0"},
"east": {"uv": [0, 0, 15, 16], "texture": "#1"},
"south": {"uv": [0, 0, 16, 16], "texture": "#1"},
"west": {"uv": [1, 0, 16, 16], "texture": "#1"},
"up": {"uv": [0, 1, 16, 16], "texture": "#2"},
"down": {"uv": [0, 0, 16, 15], "texture": "#1"}
}
},
{
"from": [0, 0, 0],
"to": [2, 16, 1],
"faces": {
"north": {"uv": [14, 0, 16, 16], "texture": "#0"},
"east": {"uv": [1, 0, 2, 16], "texture": "#0"},
"west": {"uv": [0, 0, 1, 16], "texture": "#1"},
"up": {"uv": [0, 0, 2, 1], "texture": "#2"},
"down": {"uv": [0, 1, 2, 2], "texture": "#2"}
}
},
{
"from": [14, 0, 0],
"to": [16, 16, 1],
"rotation": {"angle": 0, "axis": "y", "origin": [14, 0, 0]},
"faces": {
"north": {"uv": [0, 0, 2, 16], "texture": "#0"},
"east": {"uv": [0, 0, 1, 16], "texture": "#2"},
"west": {"uv": [1, 0, 2, 16], "texture": "#0"},
"up": {"uv": [2, 0, 0, 1], "texture": "#2"},
"down": {"uv": [2, 0, 0, 1], "texture": "#2"}
}
},
{
"from": [2, 14, 0],
"to": [14, 16, 1],
"rotation": {"angle": 0, "axis": "y", "origin": [12, 0, 0]},
"faces": {
"north": {"uv": [2, 0, 14, 2], "texture": "#0"},
"up": {"uv": [2, 0, 14, 1], "texture": "#2"},
"down": {"uv": [2, 1, 14, 2], "texture": "#0"}
}
},
{
"from": [2, 0, 0],
"to": [14, 2, 1],
"rotation": {"angle": 0, "axis": "y", "origin": [12, -14, 0]},
"faces": {
"north": {"uv": [2, 14, 14, 16], "texture": "#0"},
"up": {"uv": [2, 1, 14, 2], "texture": "#0"},
"down": {"uv": [2, 0, 14, 1], "texture": "#1"}
}
},
{
"from": [6, 6, 0],
"to": [10, 10, 1],
"rotation": {"angle": -22.5, "axis": "z", "origin": [8, 8, 0]},
"faces": {
"north": {"uv": [6, 6, 10, 10], "texture": "#4"},
"east": {"uv": [6, 0, 10, 1], "rotation": 90, "texture": "#3"},
"west": {"uv": [6, 0, 10, 1], "rotation": 90, "texture": "#3"},
"up": {"uv": [6, 0, 10, 1], "texture": "#3"},
"down": {"uv": [6, 0, 10, 1], "texture": "#3"}
}
}
]
}

View File

@@ -0,0 +1,24 @@
{
"format_version": "1.21.11",
"credit": "Made with Blockbench",
"textures": {
"0": "tfmg:block/steel_cable_hub",
"1": "tfmg:block/freezer_top",
"2": "tfmg:block/freezer",
"particle": "tfmg:block/steel_cable_hub"
},
"elements": [
{
"from": [0, 0, 0],
"to": [16, 16, 16],
"faces": {
"north": {"uv": [0, 0, 16, 16], "texture": "#2"},
"east": {"uv": [0, 0, 16, 16], "texture": "#2"},
"south": {"uv": [0, 0, 16, 16], "texture": "#2"},
"west": {"uv": [0, 0, 16, 16], "texture": "#2"},
"up": {"uv": [0, 0, 16, 16], "texture": "#1"},
"down": {"uv": [0, 0, 16, 16], "texture": "#0"}
}
}
]
}

View File

@@ -0,0 +1,25 @@
{
"format_version": "1.21.11",
"credit": "Made with Blockbench",
"parent": "block/block",
"textures": {
"0": "tfmg:block/steel_cable_hub",
"1": "tfmg:block/freezer_top",
"2": "tfmg:block/freezer",
"particle": "tfmg:block/steel_cable_hub"
},
"elements": [
{
"from": [0, 0, 0],
"to": [16, 16, 16],
"faces": {
"north": {"uv": [0, 0, 16, 16], "texture": "#2"},
"east": {"uv": [0, 0, 16, 16], "texture": "#2"},
"south": {"uv": [0, 0, 16, 16], "texture": "#2"},
"west": {"uv": [0, 0, 16, 16], "texture": "#2"},
"up": {"uv": [0, 0, 16, 16], "texture": "#1"},
"down": {"uv": [0, 0, 16, 16], "texture": "#0"}
}
}
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 351 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 254 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 226 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 354 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 273 B