1.1.1 update

This commit is contained in:
DrMangoTea
2025-12-20 10:40:13 +01:00
parent 3c67135aed
commit 4c4a941c0c
65 changed files with 424 additions and 1761 deletions

View File

@@ -25,15 +25,15 @@ mixin_extras_version = 0.4.1
jei_minecraft_version = 1.21.1
jei_version = 19.25.0.322
create_version = 6.0.7-159
ponder_version = 1.0.63
create_version = 6.0.8-166
ponder_version = 1.0.64
flywheel_version = 1.0.5
registrate_version = MC1.21-1.3.0+62
mod_id=tfmg
mod_name=Create: The Factory Must Grow
mod_license=MIT
mod_version=1.1.0c
mod_version=1.1.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

@@ -43,7 +43,7 @@
"block.tfmg.blast_furnace_reinforcement": "ʇuǝɯǝɔɹoɟuıǝᴚ ǝɔɐuɹnℲ ʇsɐןᗺ",
"block.tfmg.blast_furnace_reinforcement_wall": "ןןɐM ʇuǝɯǝɔɹoɟuıǝᴚ ǝɔɐuɹnℲ ʇsɐןᗺ",
"block.tfmg.blast_stove": "ǝʌoʇS ʇsɐןᗺ",
"block.tfmg.blast_stove.tooltip.behaviour1": "˙doʇ sǝuıɥɔɐɯ ǝɥʇ ɯoɹɟ ʇno pǝdɯnd ǝq ʇsnɯ ɹıɐ pǝʇɐǝɥ ʎןןɐuıɟ puɐ ʞɔoןq ɯoʇʇoq ǝɥʇ ɟo ǝpıs ǝɥʇ ɯoɹɟ ʇno pǝdɯnd ǝq ʇsnɯ ǝpıxoıp uoqɹɐƆ ˙ɯoʇʇoq ǝɥʇ ɯoɹɟ sɐb ǝɔɐuɹnℲ ɹo ǝʇosoǝɹƆ puɐ ʞɔoןq ɯoʇʇoq ǝɥʇ ɟo ǝpıs ǝɥʇ ɯoɹɟ 'ɹıⱯ ˙uı pǝdɯnd ǝq oʇ sbuıɥʇ ᄅ sǝɹınbǝɹ ǝʌoʇS ʇsɐןᗺ Ɐ ˙pǝpuǝɯoɔɔǝɹ ʎןןɐɹǝuǝb sı ɥɔıɥʍ doʇ uo sʞɔoןq ǝʌoʇs ǝɹoɯ ppɐ uɐɔ noʎ ǝbɐɹoʇs ןɐuɹǝʇuı ɹǝɥʇɹnɟ ppɐ oʇ 'pǝʇɐǝɹɔ sı ǝʌoʇs ʇsɐןq ɐ ɟo uoısɹǝʌ ʇsǝןןɐɯs ǝɥʇ )ǝdɐɥs ᄅxƐ ɐ uı ɹo( ɹǝɥʇoɥɔɐǝ ɟo doʇ uo pǝɔɐןd ǝɹɐ sǝʌoʇs ʇsɐןq Ɛ uǝɥM",
"block.tfmg.blast_stove.tooltip.behaviour1": "˙doʇ sǝuıɥɔɐɯ ǝɥʇ ɯoɹɟ ʇno pǝdɯnd ǝq ʇsnɯ ɹıɐ pǝʇɐǝɥ ʎןןɐuıɟ puɐ ʞɔoןq ɯoʇʇoq ǝɥʇ ɟo ǝpıs ǝɥʇ ɯoɹɟ ʇno pǝdɯnd ǝq ʇsnɯ ǝpıxoıp uoqɹɐƆ ˙ɯoʇʇoq ǝɥʇ ɯoɹɟ sɐb ǝɔɐuɹnℲ ɹo ǝʇosoǝɹƆ puɐ ʞɔoןq ɯoʇʇoq ǝɥʇ ɟo ǝpıs ǝɥʇ ɯoɹɟ 'ɹıⱯ ˙uı pǝdɯnd ǝq oʇ sbuıɥʇ ᄅ sǝɹınbǝɹ ǝʌoʇS ʇsɐןᗺ Ɐ ˙pǝpuǝɯɯoɔǝɹ ʎןןɐɹǝuǝb sı ɥɔıɥʍ doʇ uo sʞɔoןq ǝʌoʇs ǝɹoɯ ppɐ uɐɔ noʎ ǝbɐɹoʇs ןɐuɹǝʇuı ɹǝɥʇɹnɟ ppɐ oʇ 'pǝʇɐǝɹɔ sı ǝʌoʇs ʇsɐןq ɐ ɟo uoısɹǝʌ ʇsǝןןɐɯs ǝɥʇ )ǝdɐɥs ᄅxƐ ɐ uı ɹo( ɹǝɥʇoɥɔɐǝ ɟo doʇ uo pǝɔɐןd ǝɹɐ sǝʌoʇs ʇsɐןq Ɛ uǝɥM",
"block.tfmg.blast_stove.tooltip.summary": "ɹıⱯ sʇɐǝH",
"block.tfmg.blue_caution_block": "ʞɔoןᗺ uoıʇnɐƆ ǝnןᗺ",
"block.tfmg.blue_concrete": "ǝʇǝɹɔuoƆ ǝnןᗺ",
@@ -509,7 +509,17 @@
"block.tfmg.yellow_rebar_concrete_wall": "ןןɐM ǝʇǝɹɔuoƆ ɹɐqǝᴚ ʍoןןǝʎ",
"block.tfmg.zinc_frame": "ǝɯɐɹℲ ɔuıZ",
"block.tfmg.zinc_truss": "ssnɹ⟘ ɔuıZ",
"create.goggles.fluid_storage": ":ǝbɐɹoʇS pınן",
"create.goggles.item_storage": ":ǝbɐɹoʇS ɯǝʇI",
"create.recipe.advanced_distillation": "uoıʇɐןןıʇsıᗡ pǝɔuɐʌpⱯ",
"create.recipe.assembly.winding": "ןoodS ɐ puıM",
"create.recipe.casting": "buıʇsɐƆ",
"create.recipe.chemical_vat": "ʇɐΛ ןɐɔıɯǝɥƆ",
"create.recipe.coking": "buıʞoƆ",
"create.recipe.distillation": "uoıʇɐןןıʇsıᗡ",
"create.recipe.hot_blast": "buıʇsɐןᗺ ɹıⱯ",
"create.recipe.industrial_blasting": "buıʇsɐןןɐıɹʇsnpuI",
"create.recipe.polarizing": "buızıɹɐןoԀ",
"create.recipe.winding": "buıpuıM",
"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",
@@ -881,7 +891,7 @@
"tfmg.engine.signal": "%s :ןɐubıS",
"tfmg.engine.speed_efficiency": "%s :ʎɔuǝıɔıɟɟƎ pǝǝdS",
"tfmg.engine.torque": "%s :ǝnbɹo⟘",
"tfmg.engine.type.boxer": "ɹǝxoᗺ",
"tfmg.engine.type.engine_boxer": "ɹǝxoᗺ",
"tfmg.engine.type.engine_i": "I",
"tfmg.engine.type.engine_u": "∩",
"tfmg.engine.type.engine_v": "Λ",
@@ -935,12 +945,12 @@
"tfmg.goggles.engine.turbines_missing": "buıssıW sǝuıqɹn⟘",
"tfmg.goggles.engine.type": "%s :ǝdʎ⟘",
"tfmg.goggles.engine.unfinished": "pǝɥsıuıɟu∩ ǝuıbuƎ",
"tfmg.goggles.fluid_storage": ":ǝbɐɹoʇS pınןℲ",
"tfmg.goggles.gauge.value": ":ǝbɐʇןoΛ pǝɹnsɐǝW ",
"tfmg.goggles.generator.production": "ʇ/ǝɟ %1$s :uoıʇɔnpoɹԀ ʎbɹǝuƎ",
"tfmg.goggles.heat_status": " :snʇɐʇS ʇɐǝH",
"tfmg.goggles.heated": "pǝʇɐǝH",
"tfmg.goggles.invalid_machine": "pıןɐʌuI ǝuıɥɔɐW",
"tfmg.goggles.item_storage": ":ǝbɐɹoʇS ɯǝʇI",
"tfmg.goggles.item_storage_empty": "*ʎʇdɯƎ*",
"tfmg.goggles.machine_input.info": "oɟuI ʇnduI ǝuıɥɔɐW",
"tfmg.goggles.machine_input.no_rot": "¡pǝpıʌoɹԀ uoıʇɐʇoᴚ oN",
@@ -973,21 +983,21 @@
"tfmg.goggles.voltmeter.mode.current": "ʇuǝɹɹnƆ",
"tfmg.goggles.voltmeter.mode.fallback": "ʞɔɐqןןɐℲ",
"tfmg.goggles.voltmeter.mode.high_voltage": ")ɥbıH( ǝbɐʇןoΛ",
"tfmg.goggles.voltmeter.mode.net_power_gen": "uoıʇɐɹǝuǝ⅁ ɹǝʍoԀ ʞɹoʍʇǝN",
"tfmg.goggles.voltmeter.mode.net_power_use": "ǝbɐs∩ ɹǝʍoԀ ʞɹoʍʇǝN",
"tfmg.goggles.voltmeter.mode.network_power_generation": "uoıʇɐɹǝuǝ⅁ ɹǝʍoԀ ʞɹoʍʇǝN",
"tfmg.goggles.voltmeter.mode.network_power_use": "ǝbɐs∩ ɹǝʍoԀ ʞɹoʍʇǝN",
"tfmg.goggles.voltmeter.mode.power": "ɹǝʍoԀ",
"tfmg.goggles.voltmeter.mode.resistance": "ǝɔuɐʇsısǝᴚ",
"tfmg.goggles.voltmeter.mode.voltage": "ǝbɐʇןoΛ",
"tfmg.goggles.voltmeter.range": "%1$s :ǝbuɐᴚ ",
"tfmg.goggles.winding_machine.progress": " :ssǝɹboɹԀ",
"tfmg.goggles.winding_machine.turns": "%s :ʇɟǝꞀ suɹn⟘",
"tfmg.goggles.winding_machine.turns": "%1$ :ʇɟǝꞀ suɹn⟘",
"tfmg.goggles.zero": "pıןɐʌuI ǝuıɥɔɐW",
"tfmg.keyinfo.custom_button": "uoʇʇnᗺ ɯoʇsnƆ ɹǝןןoɹʇuoƆ ǝuıbuƎ",
"tfmg.keyinfo.engine_start": "ǝuıbuƎ ʇɹɐʇS",
"tfmg.keyinfo.transmission_shift_down": "uʍoᗡ ʇɟıɥS uoıssıɯsuɐɹ⟘",
"tfmg.keyinfo.transmission_shift_up": "d∩ ʇɟıɥS uoıssıɯsuɐɹ⟘",
"tfmg.multimeter.additional_values": ":sǝnןɐΛ ןɐuoıʇıppⱯ",
"tfmg.multimeter.charge": "%s :ǝbɹɐɥƆ",
"tfmg.multimeter.charge": " :ǝbɹɐɥƆ",
"tfmg.multimeter.energy_stored": " :pǝɹoʇS ʎbɹǝuƎ ",
"tfmg.multimeter.energy_usage": " :ǝbɐs∩ ʎbɹǝuƎ ",
"tfmg.multimeter.group": "%s :dnoɹ⅁ ",
@@ -1132,21 +1142,11 @@
"tfmg.ponder.valve_pipe.text_4": "uoıʇɐʇoɹ ʇnduı ǝɥʇ buısɹǝʌǝɹ ʎq uıɐbɐ pǝsoןɔ ǝq uɐɔ ʇI",
"tfmg.pumpjack.header": ":oɟuI ʞɔɐظdɯnԀ",
"tfmg.pumpjack_deposit_amount": "sʇǝʞɔnᗺ %1$s",
"tfmg.recipe.advanced_distillation": "uoıʇɐןןıʇsıᗡ pǝɔuɐʌpⱯ",
"tfmg.recipe.assembly.winding": "ןoodS ɐ puıM",
"tfmg.recipe.casting": "buıʇsɐƆ",
"tfmg.recipe.chemical_vat": "ʇɐΛ ןɐɔıɯǝɥƆ",
"tfmg.recipe.coking": "buıʞoƆ",
"tfmg.recipe.distillation": "uoıʇɐןןıʇsıᗡ",
"tfmg.recipe.hot_blast": "buıʇsɐןᗺ ɹıⱯ",
"tfmg.recipe.industrial_blasting": "buıʇsɐןןɐıɹʇsnpuI",
"tfmg.recipe.polarizing": "buızıɹɐןoԀ",
"tfmg.recipe.winding": "buıpuıM",
"tfmg.resistor.allowed_voltage": "pǝʍoןןⱯ ǝbɐʇןoΛ ɟo ǝbɐʇuǝɔɹǝԀ",
"tfmg.subtitle.diesel_engine_sounds": "spunoS ǝuıbuƎ ןǝsǝıᗡ",
"tfmg.subtitle.engine_sounds": "spunoS ǝuıbuƎ",
"tfmg.surface_scanner.header": "ɹǝuuɐɔS ǝɔɐɟɹnS",
"tfmg.tooltip.coils": "%1$s :suɹn⟘",
"tfmg.tooltip.coils": " :suɹn⟘",
"tfmg.tooltip.cylinder": ":sןǝnℲ pǝʇɹoddnS",
"tfmg.tooltip.fluid_item": "%1$s :ʇunoɯⱯ pınןℲ",
"tfmg.tooltip.fuse": "%1$s :buıʇɐᴚ",

View File

@@ -14,7 +14,7 @@
"block.tfmg.aluminum_frame": "Aluminum Frame",
"block.tfmg.aluminum_ladder": "Aluminum Ladder",
"block.tfmg.aluminum_lamp": "Aluminum Lamp",
"block.tfmg.aluminum_lamp.tooltip.behaviour1": "Glows relative to the amount of power it's receiving",
"block.tfmg.aluminum_lamp.tooltip.behaviour1": "Glows relative to the amount of power its receiving",
"block.tfmg.aluminum_lamp.tooltip.behaviour2": "Changes color to the color of the light when glowing",
"block.tfmg.aluminum_lamp.tooltip.condition1": "When provided with power",
"block.tfmg.aluminum_lamp.tooltip.condition2": "When interacted with a dye",
@@ -43,7 +43,7 @@
"block.tfmg.blast_furnace_reinforcement": "Blast Furnace Reinforcement",
"block.tfmg.blast_furnace_reinforcement_wall": "Blast Furnace Reinforcement Wall",
"block.tfmg.blast_stove": "Blast Stove",
"block.tfmg.blast_stove.tooltip.behaviour1": "When 3 blast stoves are placed on top of each other (or in a 3x2 shape) the smallest version of a blast stove is created, to add further internal storage you can add more stove blocks on top which is generally recommended. A Blast Stove requires 2 things to be pumped in. Air, from the side of the bottom block and Creosote or Furnace gas from the bottom. Carbon dioxide must be pumped out from the side of the bottom block and finally heated air must be pumped out from the machine's top.",
"block.tfmg.blast_stove.tooltip.behaviour1": "When 3 blast stoves are placed on top of eachother (or in a 3x2 shape) the smallest version of a blast stove is created, to add further internal storage you can add more stove blocks on top which is generally recommended. A Blast Stove requires 2 things to be pumped in. Air, from the side of the bottom block and Creosote or Furnace gas from the bottom. Carbon dioxide must be pumped out from the side of the bottom block and finally heated air must be pumped out from the machines top.",
"block.tfmg.blast_stove.tooltip.summary": "Heats Air",
"block.tfmg.blue_caution_block": "Blue Caution Block",
"block.tfmg.blue_concrete": "Blue Concrete",
@@ -89,14 +89,14 @@
"block.tfmg.cast_iron_smart_fluid_pipe": "Cast Iron Smart Fluid Pipe",
"block.tfmg.cast_iron_truss": "Cast Iron Truss",
"block.tfmg.casting_basin": "Casting Basin",
"block.tfmg.casting_basin.tooltip.behaviour1": "Creates steel ingots which must have a sufficient output as the internal storage of the basin is limited",
"block.tfmg.casting_basin.tooltip.behaviour1": "Creates steel ingots which must have a sufficent output as the internal storage of the basin is limited",
"block.tfmg.casting_basin.tooltip.condition1": "When supplied with molten steel",
"block.tfmg.casting_basin.tooltip.summary": "Casts ingots",
"block.tfmg.cement": "Cement",
"block.tfmg.cinder_block": "Cinder Block",
"block.tfmg.cinderflour_block": "Cinderflour Block",
"block.tfmg.circular_light": "Circular Lamp",
"block.tfmg.circular_light.tooltip.behaviour1": "Glows relative to the amount of power it's receiving",
"block.tfmg.circular_light.tooltip.behaviour1": "Glows relative to the amount of power its receiving",
"block.tfmg.circular_light.tooltip.behaviour2": "Changes color to the color of the light when glowing",
"block.tfmg.circular_light.tooltip.condition1": "When provided with power",
"block.tfmg.circular_light.tooltip.condition2": "When interacted with a dye",
@@ -118,7 +118,7 @@
"block.tfmg.constantan_ladder": "Constantan Ladder",
"block.tfmg.constantan_truss": "Constantan Truss",
"block.tfmg.converter": "Converter",
"block.tfmg.converter.tooltip.behaviour1": "The block has a TFMG input (copper) and an FE one (redstone) by default it converts TFMG energy to FE with a wrench you can make the converter convert FE to TFMG energy. Voltage of the tfmg output may be adjusted by opening a menu on the side of the Converter",
"block.tfmg.converter.tooltip.behaviour1": "The block has a TFMG input (copper) and an FE one (redstone) by default it converts TFMG energy to FE with a wrench you can make the converter convert FE to TFMG energy. Voltage of the tfmg output may be abjusted by opening a menu on the side of the Converter",
"block.tfmg.converter.tooltip.summary": "Converts FE to TFMG energy and vice versa",
"block.tfmg.cooling_fluid": "Cooling Fluid",
"block.tfmg.copper_cable_hub": "Copper Cable Hub",
@@ -187,7 +187,7 @@
"block.tfmg.factory_floor": "Factory Floor",
"block.tfmg.firebox": "Firebox",
"block.tfmg.firebox.tooltip.behaviour1": "Heats machinery above it acting as a blaze burner",
"block.tfmg.firebox.tooltip.condition1": "When filled with lpg, butane, diesel, propane, naphtha or kerosene with carbon dioxide being pumped out",
"block.tfmg.firebox.tooltip.condition1": "When filled with lpg, butane, diesel, propane, naphta or kerosene with carbon dioxide being pumped out",
"block.tfmg.firebox.tooltip.summary": "Heats machinery when fuel is pumped inside",
"block.tfmg.fireclay": "Fireclay",
"block.tfmg.fireclay.tooltip.summary": "Spawns in underground veins located in the overworld",
@@ -248,7 +248,7 @@
"block.tfmg.kerosene": "Kerosene",
"block.tfmg.large_aluminum_cogwheel": "Large Aluminum Cogwheel",
"block.tfmg.large_engine": "Large Engine",
"block.tfmg.large_engine.tooltip.behaviour1": "To function it requires air and fuel to be pumped in (Diesel, Kerosene, Naphtha, Furnace Gas) and co2 to be pumped out (needs an exhaust) to generate rotation (a shaft needs to be attached similar to a steam engine)",
"block.tfmg.large_engine.tooltip.behaviour1": "To function it requires air and fuel to be pumped in (Diesel, Kerosene, Naphta, Furnace Gas) and co2 to be pumped out (needs an exhaust) to generate rotation (a shaft needs to be attached similiar to a steam engine)",
"block.tfmg.large_engine.tooltip.summary": "Creates rotation from less refined fuels",
"block.tfmg.large_pumpjack_hammer_connector": "Large Pumpjack Hammer Connector",
"block.tfmg.large_pumpjack_hammer_head": "Large Pumpjack Hammer Head",
@@ -273,7 +273,7 @@
"block.tfmg.light_blue_rebar_concrete_stairs": "Light Blue Rebar Concrete Stairs",
"block.tfmg.light_blue_rebar_concrete_wall": "Light Blue Rebar Concrete Wall",
"block.tfmg.light_bulb": "Light Bulb",
"block.tfmg.light_bulb.tooltip.behaviour1": "Glows relative to the amount of power it's receiving",
"block.tfmg.light_bulb.tooltip.behaviour1": "Glows relative to the amount of power its receiving",
"block.tfmg.light_bulb.tooltip.behaviour2": "Changes color to the color of the light when glowing",
"block.tfmg.light_bulb.tooltip.condition1": "When provided with power",
"block.tfmg.light_bulb.tooltip.condition2": "When interacted with a dye",
@@ -316,7 +316,7 @@
"block.tfmg.magenta_rebar_concrete_wall": "Magenta Rebar Concrete Wall",
"block.tfmg.metal_smokestack": "Metal Smokestack",
"block.tfmg.modern_light": "Light Panel",
"block.tfmg.modern_light.tooltip.behaviour1": "Glows relative to the amount of power it's receiving",
"block.tfmg.modern_light.tooltip.behaviour1": "Glows relative to the amount of power its receiving",
"block.tfmg.modern_light.tooltip.behaviour2": "Changes color to the color of the light when glowing",
"block.tfmg.modern_light.tooltip.condition1": "When provided with power",
"block.tfmg.modern_light.tooltip.condition2": "When interacted with a dye",
@@ -328,7 +328,7 @@
"block.tfmg.napalm_bomb": "Napalm Bomb",
"block.tfmg.naphtha": "Naphtha",
"block.tfmg.neon_tube": "Neon Tube",
"block.tfmg.neon_tube.tooltip.behaviour1": "Glows relative to the amount of power it's receiving",
"block.tfmg.neon_tube.tooltip.behaviour1": "Glows relative to the amount of power its receiving",
"block.tfmg.neon_tube.tooltip.behaviour2": "Changes color to the color of the light when glowing",
"block.tfmg.neon_tube.tooltip.behaviour3": "Changes shape providing a space to power the tube",
"block.tfmg.neon_tube.tooltip.condition1": "When provided with power",
@@ -369,7 +369,7 @@
"block.tfmg.polarizer": "Polarizer",
"block.tfmg.polarizer.tooltip.behaviour1": "Will turn a _Magnetic Ingot_ into a _Magnet_ when right clicked with a _Magnetic Ingot_ after a bit of time",
"block.tfmg.polarizer.tooltip.condition1": "When powered",
"block.tfmg.polarizer.tooltip.summary": "Makes Magnets out of Magnetic Ingots",
"block.tfmg.polarizer.tooltip.summary": "Makes Magnetis out of Magnetic Ingots",
"block.tfmg.polished_cut_bauxite": "Polished Cut Bauxite",
"block.tfmg.polished_cut_bauxite_slab": "Polished Cut Bauxite Slab",
"block.tfmg.polished_cut_bauxite_stairs": "Polished Cut Bauxite Stairs",
@@ -379,7 +379,7 @@
"block.tfmg.polished_cut_galena_stairs": "Polished Cut Galena Stairs",
"block.tfmg.polished_cut_galena_wall": "Polished Cut Galena Wall",
"block.tfmg.potentiometer": "Potentiometer",
"block.tfmg.potentiometer.tooltip.behaviour1": "Based on what percentage you set, this machine only lets through a certain amount of voltage outputted by its output (its output can be seen by the arrow like pattern on its top pointing to it)",
"block.tfmg.potentiometer.tooltip.behaviour1": "Based on what pecentage you set, this machine only lets through a certain amount of voltage outputted by its output (its output can be seen by the arrow like pattern on its top pointing to it)",
"block.tfmg.potentiometer.tooltip.summary": "Lets through a only a set amount of voltage",
"block.tfmg.pumpjack_base": "Pumpjack Base",
"block.tfmg.pumpjack_crank": "Pumpjack Crank",
@@ -422,7 +422,7 @@
"block.tfmg.regular_engine": "Regular Engine",
"block.tfmg.reinforced_fireproof_bricks": "Reinforced Fireproof Bricks",
"block.tfmg.resistor": "Resistor",
"block.tfmg.resistor.tooltip.behaviour1": "Adds the resistors respective resistance (to see how to change its resistance look at the winding machine's tooltip) to whatever electric group its target block is in",
"block.tfmg.resistor.tooltip.behaviour1": "Adds the resistors respective resistance (to see how to change its resistance look at the winding machines tooltip) to whatever electric group its target block is in",
"block.tfmg.resistor.tooltip.condition1": "When placed on a block within a group",
"block.tfmg.resistor.tooltip.summary": "Adds resistance to a network",
"block.tfmg.rotor": "Rotor",
@@ -430,7 +430,7 @@
"block.tfmg.rusted_blast_furnace_reinforcement_wall": "Rusted Blast Furnace Reinforcement Wall",
"block.tfmg.segmented_display": "Segmented Display",
"block.tfmg.simple_large_engine": "Simple Large Engine",
"block.tfmg.simple_large_engine.tooltip.behaviour1": "To function it requires air and fuel to be pumped in (Diesel, Kerosene, Naphtha, Furnace Gas) and co2 to be pumped out (needs an exhaust) to generate rotation (a shaft needs to be attached similar to a steam engine)",
"block.tfmg.simple_large_engine.tooltip.behaviour1": "To function it requires air and fuel to be pumped in (Diesel, Kerosene, Naphta, Furnace Gas) and co2 to be pumped out (needs an exhaust) to generate rotation (a shaft needs to be attached similiar to a steam engine)",
"block.tfmg.simple_large_engine.tooltip.summary": "Creates rotation (less effectively than its regular counterpart) from less refined fuels",
"block.tfmg.slag_block": "Block of Slag",
"block.tfmg.slag_bricks": "Slag Bricks",
@@ -473,7 +473,7 @@
"block.tfmg.sulfur": "Sulfur",
"block.tfmg.sulfuric_acid": "Sulfuric Acid",
"block.tfmg.surface_scanner": "Surface Scanner",
"block.tfmg.surface_scanner.tooltip.behaviour1": "The machine's top 5x5 grid shows the surrounding chunks with its chunk in the center, the chunks that have at least 1 oil deposit in them should glow. If the surface does not start to glow within a few seconds then it is likely that there are no oil deposits nearby. Chunks can be seen ingame with F3+G",
"block.tfmg.surface_scanner.tooltip.behaviour1": "The machines top 5x5 grid shows the surrounding chunks with its chunk in the center, the chunks that have atleast 1 oil deposit in them should glow. If the surface does not start to glow within a few seconds then it is likely that there are no oil deposits nearby. Chunks can be seen ingame with F3+G",
"block.tfmg.surface_scanner.tooltip.condition1": "When powered from below with a Machine Input",
"block.tfmg.surface_scanner.tooltip.summary": "Helps to find chunks with oil",
"block.tfmg.traffic_light": "Traffic Light",
@@ -509,7 +509,17 @@
"block.tfmg.yellow_rebar_concrete_wall": "Yellow Rebar Concrete Wall",
"block.tfmg.zinc_frame": "Zinc Frame",
"block.tfmg.zinc_truss": "Zinc Truss",
"create.goggles.fluid_storage": "Fluid Storage:",
"create.goggles.item_storage": "Item Storage:",
"create.recipe.advanced_distillation": "Advanced Distillation",
"create.recipe.assembly.winding": "Wind a Spool",
"create.recipe.casting": "Casting",
"create.recipe.chemical_vat": "Chemical Vat",
"create.recipe.coking": "Coking",
"create.recipe.distillation": "Distillation",
"create.recipe.hot_blast": "Air Blasting",
"create.recipe.industrial_blasting": "Industrial Blasting",
"create.recipe.polarizing": "Polarizing",
"create.recipe.winding": "Winding",
"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",
@@ -752,8 +762,8 @@
"item.tfmg.oil_can": "Oil Can",
"item.tfmg.oil_can.tooltip.behaviour1": "Fills the can with lubrication oil",
"item.tfmg.oil_can.tooltip.behaviour2": "Fills the engine with lubrication oil",
"item.tfmg.oil_can.tooltip.condition1": "When R-Clicking a tank with lubrication oil inside",
"item.tfmg.oil_can.tooltip.condition2": "When R-Clicking an engine",
"item.tfmg.oil_can.tooltip.condition1": "When Right Clicking a tank with lubrication oil inside",
"item.tfmg.oil_can.tooltip.condition2": "When Right Clicking an engine",
"item.tfmg.oil_can.tooltip.summary": "Adds lubrication oil to engines",
"item.tfmg.oil_hammer": "Oil Hammer",
"item.tfmg.orange_multimeter": "Orange Multimeter",
@@ -881,7 +891,7 @@
"tfmg.engine.signal": "Signal: %s",
"tfmg.engine.speed_efficiency": "Speed Efficiency: %s",
"tfmg.engine.torque": "Torque: %s",
"tfmg.engine.type.boxer": "Boxer",
"tfmg.engine.type.engine_boxer": "Boxer",
"tfmg.engine.type.engine_i": "I",
"tfmg.engine.type.engine_u": "U",
"tfmg.engine.type.engine_v": "V",
@@ -935,12 +945,12 @@
"tfmg.goggles.engine.turbines_missing": "Turbines Missing",
"tfmg.goggles.engine.type": "Type: %s",
"tfmg.goggles.engine.unfinished": "Engine Unfinished",
"tfmg.goggles.fluid_storage": "Fluid Storage:",
"tfmg.goggles.gauge.value": " Measured Voltage:",
"tfmg.goggles.generator.production": "Energy Production: %1$s fe/t",
"tfmg.goggles.heat_status": "Heat Status: ",
"tfmg.goggles.heated": "Heated",
"tfmg.goggles.invalid_machine": "Machine Invalid",
"tfmg.goggles.item_storage": "Item Storage:",
"tfmg.goggles.item_storage_empty": "*Empty*",
"tfmg.goggles.machine_input.info": "Machine Input Info",
"tfmg.goggles.machine_input.no_rot": "No Rotation Provided!",
@@ -973,21 +983,21 @@
"tfmg.goggles.voltmeter.mode.current": "Current",
"tfmg.goggles.voltmeter.mode.fallback": "Fallback",
"tfmg.goggles.voltmeter.mode.high_voltage": "Voltage (High)",
"tfmg.goggles.voltmeter.mode.net_power_gen": "Network Power Generation",
"tfmg.goggles.voltmeter.mode.net_power_use": "Network Power Usage",
"tfmg.goggles.voltmeter.mode.network_power_generation": "Network Power Generation",
"tfmg.goggles.voltmeter.mode.network_power_use": "Network Power Usage",
"tfmg.goggles.voltmeter.mode.power": "Power",
"tfmg.goggles.voltmeter.mode.resistance": "Resistance",
"tfmg.goggles.voltmeter.mode.voltage": "Voltage",
"tfmg.goggles.voltmeter.range": " Range: %1$s",
"tfmg.goggles.winding_machine.progress": "Progress: ",
"tfmg.goggles.winding_machine.turns": "Turns Left: %s",
"tfmg.goggles.winding_machine.turns": "Turns Left: %1$",
"tfmg.goggles.zero": "Machine Invalid",
"tfmg.keyinfo.custom_button": "Engine Controller Custom Button",
"tfmg.keyinfo.engine_start": "Start Engine",
"tfmg.keyinfo.transmission_shift_down": "Transmission Shift Down",
"tfmg.keyinfo.transmission_shift_up": "Transmission Shift Up",
"tfmg.multimeter.additional_values": "Additional Values:",
"tfmg.multimeter.charge": "Charge: %s",
"tfmg.multimeter.charge": "Charge: ",
"tfmg.multimeter.energy_stored": " Energy Stored: ",
"tfmg.multimeter.energy_usage": " Energy Usage: ",
"tfmg.multimeter.group": " Group: %s",
@@ -1087,7 +1097,7 @@
"tfmg.ponder.mechanical_pump_flow.text_2": "Their arrow indicates the direction of flow",
"tfmg.ponder.mechanical_pump_flow.text_3": "The network behind is now pulling fluids...",
"tfmg.ponder.mechanical_pump_flow.text_4": "...while the network in front is transferring it outward",
"tfmg.ponder.mechanical_pump_flow.text_5": "The pump's direction is unaffected by the input rotation",
"tfmg.ponder.mechanical_pump_flow.text_5": "The pumps direction is unaffected by the input rotation",
"tfmg.ponder.mechanical_pump_flow.text_6": "Instead, a Wrench can be used to reverse the direction",
"tfmg.ponder.mechanical_pump_speed.header": "Throughput of Mechanical Pumps",
"tfmg.ponder.mechanical_pump_speed.text_1": "Regardless of speed, Mechanical Pumps affect pipes connected up to 16 blocks away",
@@ -1132,21 +1142,11 @@
"tfmg.ponder.valve_pipe.text_4": "It can be closed again by reversing the input rotation",
"tfmg.pumpjack.header": "Pumpjack Info:",
"tfmg.pumpjack_deposit_amount": "%1$s Buckets",
"tfmg.recipe.advanced_distillation": "Advanced Distillation",
"tfmg.recipe.assembly.winding": "Wind a Spool",
"tfmg.recipe.casting": "Casting",
"tfmg.recipe.chemical_vat": "Chemical Vat",
"tfmg.recipe.coking": "Coking",
"tfmg.recipe.distillation": "Distillation",
"tfmg.recipe.hot_blast": "Air Blasting",
"tfmg.recipe.industrial_blasting": "Industrial Blasting",
"tfmg.recipe.polarizing": "Polarizing",
"tfmg.recipe.winding": "Winding",
"tfmg.resistor.allowed_voltage": "Percentage of Voltage Allowed",
"tfmg.subtitle.diesel_engine_sounds": "Diesel Engine Sounds",
"tfmg.subtitle.engine_sounds": "Engine Sounds",
"tfmg.surface_scanner.header": "Surface Scanner",
"tfmg.tooltip.coils": "Turns: %1$s",
"tfmg.tooltip.coils": "Turns: ",
"tfmg.tooltip.cylinder": "Supported Fuels:",
"tfmg.tooltip.fluid_item": "Fluid Amount: %1$s",
"tfmg.tooltip.fuse": "Rating: %1$s",

View File

@@ -177,6 +177,12 @@
"tfmg:cyan_caution_block",
"tfmg:purple_caution_block",
"tfmg:orange_caution_block",
"tfmg:rebar_block",
"tfmg:rebar_floor",
"tfmg:rebar_wall",
"tfmg:rebar_pile",
"tfmg:rebar_stairs",
"tfmg:rebar_pillar",
"tfmg:concrete_wall",
"tfmg:concrete",
"tfmg:concrete_stairs",

View File

@@ -9,6 +9,12 @@
"tfmg:lead_block",
"tfmg:constantan_block",
"tfmg:nickel_block",
"tfmg:lithium_block"
"tfmg:lithium_block",
"tfmg:rebar_block",
"tfmg:rebar_floor",
"tfmg:rebar_wall",
"tfmg:rebar_pile",
"tfmg:rebar_stairs",
"tfmg:rebar_pillar"
]
}

View File

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

View File

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

View File

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

View File

@@ -63,7 +63,7 @@
"item": "tfmg:unfinished_potentiometer"
},
{
"item": "tfmg:copper_wire"
"tag": "c:wires/copper"
}
],
"results": [

View File

@@ -24,6 +24,7 @@ import com.drmangotea.tfmg.content.machinery.misc.firebox.FireboxBlockEntity;
import com.drmangotea.tfmg.content.machinery.misc.flarestack.FlarestackBlockEntity;
import com.drmangotea.tfmg.content.machinery.misc.gas_lamp.GasLampBlockEntity;
import com.drmangotea.tfmg.content.machinery.misc.smokestack.SmokestackBlockEntity;
import com.drmangotea.tfmg.content.machinery.misc.winding_machine.WindingMachineBlockEntity;
import com.drmangotea.tfmg.content.machinery.oil_processing.distillation_tower.controller.DistillationControllerBlockEntity;
import com.drmangotea.tfmg.content.machinery.oil_processing.distillation_tower.output.DistillationOutputBlockEntity;
import com.drmangotea.tfmg.content.machinery.oil_processing.pumpjack.base.PumpjackBaseBlockEntity;
@@ -108,6 +109,7 @@ public class TFMGCommonEvents {
BlastFurnaceOutputBlockEntity.registerCapabilities(event);
CokeOvenBlockEntity.registerCapabilities(event);
AirIntakeBlockEntity.registerCapabilities(event);
WindingMachineBlockEntity.registerCapabilities(event);
}
@SubscribeEvent

View File

@@ -47,7 +47,7 @@ public class TFMGTexts {
return TFMGLang.translate("goggles.progress", value);
}
public static LangBuilder turnsLeft(int turns) {
return TFMGLang.translate("goggles.winding_machine.turns", TFMGLang.number(turns));
return TFMGLang.translate("goggles.winding_machine.turns").add(TFMGLang.text(String.valueOf(turns)));
}
public static LangBuilder invalidMachine() {
@@ -79,7 +79,7 @@ public class TFMGTexts {
return TFMGLang.translate("multimeter.insufficient_current", TFMGTexts.current(minimum)).style(ChatFormatting.RED);
}
public static LangBuilder charge(double value) {
return TFMGLang.translate("multimeter.charge", percent(value)).style(ChatFormatting.DARK_AQUA);
return TFMGLang.translate("multimeter.charge").add(TFMGLang.text(percent(value))).style(ChatFormatting.DARK_AQUA);
}
public static LangBuilder group(int groupId) {
return TFMGLang.translate("multimeter.group", TFMGLang.number(groupId)).color(0xd8db27);
@@ -159,9 +159,6 @@ public class TFMGTexts {
public static LangBuilder torque(float torque) {
return TFMGLang.translate("goggles.engine.torque", TFMGLang.number(torque)).color(0xa36f00);
}
public static LangBuilder injectionRate(float rate) {
return TFMGLang.translate("engine.injection_rate", TFMGLang.number(rate));
}
public static LangBuilder signal(int signal) {
return TFMGLang.translate("goggles.engine.signal", TFMGLang.number(signal)).color(0xfcad03);
}

View File

@@ -38,8 +38,6 @@ public class ElectricBlockValues {
public int failTimer = 0;
public List<BlockPos> blocksToPower = new ArrayList<>();
public ElectricalGroup group = new ElectricalGroup(0);
public ElectricBlockValues(long pos) {

View File

@@ -10,18 +10,23 @@ import java.util.Map;
public class ElectricalNetwork {
/**
* This class manages individual networks
*/
public ElectricalNetwork(long id) {
this.id = id;
}
//blocks in the network
public List<IElectric> members = new ArrayList<>();
//network's id
public long id;
public long getId() {
return id;
}
//adds a new block to the network if it is not in it already
public void add(IElectric be) {
List<Long> posList = new ArrayList<>();
@@ -31,28 +36,42 @@ public class ElectricalNetwork {
members.add(be);
}
/**
* Called when a block is removed or added to the network or when loading chunks the network is in
* Sets up blocks in the network
*/
public void updateNetwork() {
int maxVoltage = 0;
int power = 0;
int resistance = 0;
int powerGeneration = 0;
Map<Integer, Float> groups = new HashMap<>();
/**
* Phase I:
* 1) gives each blocks the networks id
* 2) finds the highest voltage generated
* 3) counts the resistance and power generation of the network
* 4) creates groups
*/
for (IElectric member : members) {
member.getData().notEnoughPower = false;
int groupId = member.getData().group.id;
maxVoltage = Math.max(member.voltageGeneration(), maxVoltage);
power += member.powerGeneration();
resistance += (int) member.resistance();
powerGeneration += member.powerGeneration();
if (member.canBeInGroups())
groups.put(groupId, groups.containsKey(groupId) ? groups.get(groupId) + member.resistance() : member.resistance());
}
/**
* Phase II:
* 1) informs blocks about voltage and power change
* 2) sets network's resistance
* 3) informs blocks about their group's resistance
*/
List<IElectric> list = new ArrayList<>(members);
if (!members.isEmpty()) {
@@ -72,18 +91,25 @@ public class ElectricalNetwork {
member.getData().group.resistance = groups.get(member.getData().group.id);
}
}
/**
* Phase III:
* 1) sets the current of wires
* 2) informs subnetworks
*/
for (IElectric member : members) {
member.getData().highestCurrent = getCableCurrent(member);
member.updateNearbyNetworks(member);
if (member instanceof VoltageAlteringBlockEntity be) {
be.updateInFront();
}
}
/**
* Phase IV:
* 1) stops the network from functioning if it consumes more power than it creates
*/
handleInsufficientPower();
}
@@ -122,6 +148,8 @@ public class ElectricalNetwork {
return current;
}
public void checkForLoops(BlockPos pos) {
members.forEach(member -> {

View File

@@ -21,16 +21,33 @@ import net.neoforged.neoforge.energy.IEnergyStorage;
import java.util.ArrayList;
import java.util.List;
/**
* data and actions for electric blocks
*/
public interface IElectric {
/**
* block's world position as a long
*/
long getPos();
/**
* world the blocks is in
*/
LevelAccessor getLevelAccessor();
/**
*
* @return true if the block is marked as removed
*/
default boolean destroyed() {
return getData().destroyed();
}
/**
* checks if this block is part of a valid network
* @return block's network if valid, newly created network for this block otherwise
*/
default ElectricalNetwork getOrCreateElectricNetwork() {
if (getLevelAccessor().getBlockEntity(BlockPos.of(getData().electricalNetworkId)) instanceof IElectric) {
return TFMG.NETWORK_MANAGER.getOrCreateNetworkFor((IElectric) getLevelAccessor().getBlockEntity(BlockPos.of(getData().electricalNetworkId)));
@@ -41,10 +58,16 @@ public interface IElectric {
}
}
/**
* tells the block which sides of it can be attached to the grid
*/
default boolean hasElectricitySlot(Direction direction) {
return true;
}
/**
* initialization, called when the block is placed
*/
default void onPlaced() {
if (getLevelAccessor() instanceof ServerLevel serverLevel)
@@ -67,20 +90,9 @@ public interface IElectric {
}
default void onNeighborChanged() {
Level level = (Level) getLevelAccessor();
for(Direction direction : Direction.values()){
IEnergyStorage capability = level.getCapability(Capabilities.EnergyStorage.BLOCK,getBlockPos().relative(direction), direction);
if(capability==null)
continue;
}
}
/**
* manages removal of this block after it is destroyed
*/
default void onRemoved() {
this.getData().destroyed = true;
for (Direction d : Direction.values()) {
@@ -101,6 +113,9 @@ public interface IElectric {
.remove(getData().getId());
}
/**
* loads data
*/
default void readElectricity(CompoundTag compound, boolean clientPacket) {
getData().group = new ElectricalGroup(compound.getInt("GroupId"));
getData().group.resistance = compound.getFloat("GroupResistance");
@@ -108,11 +123,17 @@ public interface IElectric {
getData().connectNextTick = true;
}
/**
* saves data
*/
default void writeElectricity(CompoundTag compound, boolean clientPacket) {
compound.putInt("GroupId", getData().group.id);
compound.putFloat("GroupResistance", getData().group.resistance);
}
/**
* handles action that need to happen every tick and checks for scheduled updates
*/
default void tickElectricity() {
if (getData().checkForLoopsNextTick) {
getOrCreateElectricNetwork().checkForLoops(getBlockPos());
@@ -137,6 +158,9 @@ public interface IElectric {
}
}
/**
* handles actions that need to repeat every second
*/
default void lazyTickElectricity() {
if (getData().failTimer >= 4) {
this.blockFail();
@@ -147,6 +171,9 @@ public interface IElectric {
}
}
/**
* WIP, not functional
*/
default int getMaxVoltage() {
return 0;
}
@@ -155,6 +182,9 @@ public interface IElectric {
return 0;
}
/**
* handles connecting blocks into a network
*/
default void onConnected() {
BlockPos pos = BlockPos.of(getPos());
@@ -180,10 +210,17 @@ public interface IElectric {
}
/**
*
* @return the block's world position
*/
default BlockPos getBlockPos() {
return BlockPos.of(getPos());
}
/**
* tells blocks when the network doesn't have enough power
*/
default void updateUnpowered(List<BlockPos> alreadyChecked) {
alreadyChecked.add(BlockPos.of(getPos()));
updateNextTick();
@@ -205,6 +242,9 @@ public interface IElectric {
}
}
/**
* the multimeter tooltip
*/
default boolean makeMultimeterTooltip(List<Component> tooltip, boolean isPlayerSneaking) {
TFMGTexts.header("multimeter").style(ChatFormatting.WHITE)
.forGoggles(tooltip);
@@ -238,22 +278,16 @@ public interface IElectric {
return true;
}
default void updateNearbyNetworks(IElectric member) {
if (true)
return;
for (Direction direction : Direction.values()) {
if (member.getLevelAccessor().getBlockEntity(BlockPos.of(member.getPos()).relative(direction)) instanceof IElectric be && be.getData().getId() != member.getData().getId()) {
be.getLevelAccessor().setBlock(BlockPos.of(be.getPos()).above(3), Blocks.GOLD_BLOCK.defaultBlockState(), 3);
be.updateNextTick();
}
}
}
/**
* contains data related to electricity
*/
ElectricBlockValues getData();
/**
*
* @return true if the network has enough power
*/
default boolean canWork() {
return !getData().notEnoughPower;
}
@@ -401,7 +435,7 @@ public interface IElectric {
if (canBeInGroups()) {
getData().voltage = (int) (((float) resistance() / getData().group.resistance) * (float) getData().voltageSupply);
getData().voltage = (int) ((resistance() / getData().group.resistance) * (float) getData().voltageSupply);
return;
}
getData().voltage = newVoltage;

View File

@@ -1,4 +1,8 @@
package com.drmangotea.tfmg.content.electricity.base;
/**
* Blocks that connect networks with other networks
* usually for voltage transformation
*/
public interface IVoltageChanger {
}

View File

@@ -11,11 +11,13 @@ public class CableType {
private final ResourceLocation id;
private final int color;
private final ItemEntry<?> spool;
private final ItemEntry<?> wire;
public CableType(Properties properties) {
this.id = properties.id;
this.color = properties.color;
this.spool = properties.spool;
this.wire = properties.wire;
}
public int getColor() {
@@ -26,6 +28,10 @@ public class CableType {
return this.spool;
}
public ItemEntry<?> getWire() {
return this.wire;
}
public String getOrCreateDescriptionId() {
if (this.descriptionId == null) {
this.descriptionId = Util.makeDescriptionId("cable_type", getKey());
@@ -51,6 +57,7 @@ public class CableType {
int color = 0xffffff;
ItemEntry<?> spool = TFMGItems.COPPER_SPOOL;
ItemEntry<?> wire = TFMGItems.COPPER_WIRE;
public Properties color(int color) {
this.color = color;
@@ -62,6 +69,11 @@ public class CableType {
return this;
}
public Properties wire(ItemEntry<?> wire) {
this.wire = wire;
return this;
}
public Properties(ResourceLocation id) {
this.id = id;
}

View File

@@ -4,6 +4,8 @@ import com.drmangotea.tfmg.base.TFMGUtils;
import com.drmangotea.tfmg.content.electricity.base.ElectricBlockEntity;
import com.drmangotea.tfmg.content.machinery.misc.winding_machine.SpoolItem;
import com.drmangotea.tfmg.registry.TFMGBlocks;
import com.drmangotea.tfmg.registry.TFMGCableTypes;
import com.drmangotea.tfmg.registry.TFMGItems;
import com.simibubi.create.api.equipment.goggles.IHaveHoveringInformation;
import com.simibubi.create.foundation.blockEntity.behaviour.BlockEntityBehaviour;
import net.createmod.catnip.animation.AnimationTickHolder;
@@ -14,11 +16,14 @@ import net.minecraft.client.Minecraft;
import net.minecraft.client.multiplayer.ClientLevel;
import net.minecraft.core.BlockPos;
import net.minecraft.core.Direction;
import net.minecraft.core.Holder;
import net.minecraft.core.HolderLookup;
import net.minecraft.nbt.CompoundTag;
import net.minecraft.world.entity.item.ItemEntity;
import net.minecraft.world.entity.player.Player;
import net.minecraft.world.item.Item;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.level.ItemLike;
import net.minecraft.world.level.block.entity.BlockEntityType;
import net.minecraft.world.level.block.state.BlockState;
import net.minecraft.world.phys.AABB;
@@ -81,7 +86,7 @@ public class CableConnectorBlockEntity extends ElectricBlockEntity implements IH
return;
for (CableConnection connection : connections) {
ItemEntity itemToDrop = new ItemEntity(level, getBlockPos().getX() + 0.5f, getBlockPos().getY() + 0.5f, getBlockPos().getZ() + 0.5f, new ItemStack(connection.type.getSpool().get(), (int) (connection.getLength() / 8)));
ItemEntity itemToDrop = new ItemEntity(level, getBlockPos().getX() + 0.5f, getBlockPos().getY() + 0.5f, getBlockPos().getZ() + 0.5f, new ItemStack(connection.type.getWire().asItem(), (int) (connection.getLength() / 8)));
if (itemToDrop.getItem().getCount() > 0) {
level.addFreshEntity(itemToDrop);
}

View File

@@ -8,6 +8,8 @@ import com.simibubi.create.foundation.blockEntity.SmartBlockEntity;
import com.simibubi.create.foundation.blockEntity.behaviour.BlockEntityBehaviour;
import net.createmod.catnip.animation.LerpedFloat;
import net.minecraft.core.BlockPos;
import net.minecraft.core.HolderLookup;
import net.minecraft.nbt.CompoundTag;
import net.minecraft.network.chat.Component;
import net.minecraft.world.level.block.entity.BlockEntity;
import net.minecraft.world.level.block.entity.BlockEntityType;
@@ -55,6 +57,22 @@ public class VoltMeterBlockEntity extends SmartBlockEntity implements IHaveGoggl
}
@Override
protected void write(CompoundTag tag, HolderLookup.Provider registries, boolean clientPacket) {
super.write(tag, registries, clientPacket);
if (mode != MeasureMode.VOLTAGE)
tag.putString("mode", mode.toString());
}
@Override
protected void read(CompoundTag tag, HolderLookup.Provider registries, boolean clientPacket) {
super.read(tag, registries, clientPacket);
if (!tag.getString("mode").isEmpty())
mode = MeasureMode.valueOf(tag.getString("mode"));
}
public float getUnit(IElectric be) {
return switch (mode) {
case VOLTAGE, HIGH_VOLTAGE -> be.getData().getVoltage();
@@ -63,7 +81,8 @@ public class VoltMeterBlockEntity extends SmartBlockEntity implements IHaveGoggl
case POWER -> be.powerGeneration() > 0 ? be.powerGeneration() : be.getPowerUsage();
case NETWORK_POWER_USAGE -> be.getNetworkPowerUsage();
case NETWORK_POWER_GENERATION -> be.getNetworkPowerGeneration();
case CAPACITY -> be instanceof AccumulatorBlockEntity accumulator ? level.getBlockEntity(accumulator.controller) instanceof AccumulatorBlockEntity controllerBE ? controllerBE.energy.getEnergyStored() :0 :0;
case CAPACITY ->
be instanceof AccumulatorBlockEntity accumulator ? level.getBlockEntity(accumulator.controller) instanceof AccumulatorBlockEntity controllerBE ? controllerBE.energy.getEnergyStored() : 0 : 0;
case FALLBACK -> 0;
};

View File

@@ -99,14 +99,14 @@ public class PolarizerBlockEntity extends ElectricBlockEntity implements IHaveGo
//
@Override
public boolean addToGoggleTooltip(List<Component> tooltip, boolean isPlayerSneaking) {
TFMGTexts.Multimeter.charge(capacitorPercentage/2f).forGoggles(tooltip);
if(getPowerUsage()<2000&&!inventory.isEmpty()){
TFMGTexts.Multimeter.notEnoughPower(2000).forGoggles(tooltip, 1);
return true;
}
TFMGTexts.header("polarizer").style(ChatFormatting.GRAY).forGoggles(tooltip, 1);
TFMGTexts.Multimeter.charge(capacitorPercentage/2f).forGoggles(tooltip);
return true;
}

View File

@@ -43,18 +43,15 @@ public abstract class AbstractEngineBlockEntity extends KineticElectricBlockEnti
//
public float rpm = 0;
public float fuelInjectionRate = 0;
//
public boolean reverse = false;
//
public int highestSignal;
public float highestSignal;
public int signal;
//
public BlockPos engineController;
//
//
public float torque = 0;
public boolean signalChanged;
//
@@ -104,9 +101,7 @@ public abstract class AbstractEngineBlockEntity extends KineticElectricBlockEnti
public void tankUpdated(FluidStack stack, boolean fuelTank) {
if (fuelTank && stack.isEmpty()) {
TFMG.LOGGER.debug("FUEL OFF");
fuelInjectionRate = 0;
rpm = 0;
updateRotation();
analogSignalChanged();
@@ -119,19 +114,13 @@ public abstract class AbstractEngineBlockEntity extends KineticElectricBlockEnti
return engineController != null;
}
@Override
public void updateNetwork() {
super.updateNetwork();
}
protected void analogSignalChanged() {
if (!canWork()) {
fuelInjectionRate = 0;
return;
}
if (hasEngineController()) {
fuelInjectionRate = highestSignal / 15f;
return;
}
@@ -139,31 +128,18 @@ public abstract class AbstractEngineBlockEntity extends KineticElectricBlockEnti
signal = newSignal;
newSignal = Math.max(level.getBestNeighborSignal(getBlockPos()), newSignal);
highestSignal = newSignal;
fuelInjectionRate = highestSignal / 15f;
highestSignal = newSignal / 15f;
updateRotation();
}
//@Override
//public boolean addToGoggleTooltip(List<Component> tooltip, boolean isPlayerSneaking) {
//
// CreateLang.text("SIGNAL " + highestSignal).forGoggles(tooltip);
//
//
// return super.addToGoggleTooltip(tooltip, isPlayerSneaking);
//}
@Override
public void lazyTick() {
super.lazyTick();
neighbourChanged();
manageFuelAndExhaust();
}
@@ -182,7 +158,6 @@ public abstract class AbstractEngineBlockEntity extends KineticElectricBlockEnti
}
}
@Override
public boolean makeMultimeterTooltip(List<Component> tooltip, boolean isPlayerSneaking) {
return false;
@@ -224,8 +199,6 @@ public abstract class AbstractEngineBlockEntity extends KineticElectricBlockEnti
public abstract float torqueModifier();
public abstract String engineId();
public FuelType getFuelType() {
@@ -243,7 +216,6 @@ public abstract class AbstractEngineBlockEntity extends KineticElectricBlockEnti
}
public void refreshCapability() {
IFluidHandler oldCap = fluidCapability;
fluidCapability = this.handlerForCapability();
invalidateCapabilities();
}
@@ -291,22 +263,14 @@ public abstract class AbstractEngineBlockEntity extends KineticElectricBlockEnti
signal = compound.getInt("Signal") + 1;
if (hasEngineController())
engineController = BlockPos.of(compound.getLong("EngineController"));
fuelInjectionRate = compound.getFloat("RPM");
// if (isController()) {
// if (!BlockPos.of(compound.getLong("ControllerPos")).equals(new BlockPos(0, 0, 0)))
// controller = BlockPos.of(compound.getLong("ControllerPos"));
fuelTank.readFromNBT(registries, compound.getCompound("FuelTank"));
exhaustTank.readFromNBT(registries, compound.getCompound("ExhaustTank"));
highestSignal = compound.getInt("HighestSignal");
//signalChanged = true;
updateRotation();
updateGeneratedRotation();
//}
}
@@ -318,30 +282,21 @@ public abstract class AbstractEngineBlockEntity extends KineticElectricBlockEnti
compound.putInt("Signal", signal);
if (hasEngineController())
compound.putLong("EngineController", engineController.asLong());
compound.putFloat("RPM", fuelInjectionRate);
compound.put("FuelTank", fuelTank.writeToNBT(registries, new CompoundTag()));
compound.put("ExhaustTank", exhaustTank.writeToNBT(registries, new CompoundTag()));
compound.putInt("HighestSignal", highestSignal);
}
public abstract int getFuelConsumption();
@Override
public void onPlaced() {
super.onPlaced();
}
public void neighbourChanged() {
if (!hasLevel())
return;
@@ -353,6 +308,4 @@ public abstract class AbstractEngineBlockEntity extends KineticElectricBlockEnti
this.signalChanged = true;
}
}

View File

@@ -71,12 +71,9 @@ public class EngineBlock extends HorizontalKineticBlock {
engineController.sendData();
}
}
//if(!level.isClientSide)
// TFMGPackets.getChannel().send(PacketDistributor.ALL.noArg(), new UpdateInFrontPacket(BlockPos.of(be.getPos())));
be.getControllerBE().engineController = null;
be.getControllerBE().highestSignal = 0;
be.getControllerBE().connectNextTick = true;
be.getControllerBE().fuelInjectionRate = 0;
be.updateGeneratedRotation();
be.getControllerBE().updateGeneratedRotation();
be.getControllerBE().sendData();
@@ -100,6 +97,8 @@ public class EngineBlock extends HorizontalKineticBlock {
be.connectNextTick = true;
be.detachKinetics();
be.getControllerBE().updateGeneratedRotation();
be.getControllerBE().calculateAddedStressCapacity();
be.calculateAddedStressCapacity();
be.updateGeneratedRotation();
if (be.getOrCreateNetwork() != null)
be.getOrCreateNetwork().remove(be);

View File

@@ -1,5 +1,6 @@
package com.drmangotea.tfmg.content.engines.engine_controller;
import com.drmangotea.tfmg.TFMG;
import com.drmangotea.tfmg.content.engines.types.AbstractSmallEngineBlockEntity;
import com.drmangotea.tfmg.content.engines.upgrades.TransmissionUpgrade;
import com.simibubi.create.api.equipment.goggles.IHaveGoggleInformation;
@@ -267,7 +268,7 @@ public class EngineControllerBlockEntity extends SmartBlockEntity implements IHa
if (enginePos != null && (engine == null)) {
if (level.getBlockEntity(enginePos) instanceof AbstractSmallEngineBlockEntity be) {
engine = be;
engine.getControllerBE().highestSignal = 4;
engine.getControllerBE().highestSignal = 4/15;
}
}
@@ -296,8 +297,7 @@ public class EngineControllerBlockEntity extends SmartBlockEntity implements IHa
if (engine == null)
return;
engine.getControllerBE().engineController = this.getBlockPos();
engine.getControllerBE().highestSignal = accelerationRate;
engine.getControllerBE().fuelInjectionRate = engine.getControllerBE().highestSignal / 15f;
engine.getControllerBE().highestSignal = accelerationRate/15;
engine.getControllerBE().updateRotation();
@@ -306,6 +306,7 @@ public class EngineControllerBlockEntity extends SmartBlockEntity implements IHa
public void disconnectEngine() {
if (engine == null)
return;
engine.getControllerBE().highestSignal = 0;
engine.getControllerBE().engineController = null;
engine.getControllerBE().updateGeneratedRotation();

View File

@@ -1,5 +1,6 @@
package com.drmangotea.tfmg.content.engines.engine_controller;
import com.drmangotea.tfmg.TFMG;
import com.drmangotea.tfmg.content.engines.base.AbstractEngineBlockEntity;
import com.drmangotea.tfmg.registry.TFMGPackets;
import com.simibubi.create.foundation.blockEntity.SmartBlockEntity;

View File

@@ -1,10 +1,10 @@
package com.drmangotea.tfmg.content.engines.types;
import com.drmangotea.tfmg.TFMG;
import com.drmangotea.tfmg.base.TFMGUtils;
import com.drmangotea.tfmg.base.lang.TFMGLang;
import com.drmangotea.tfmg.base.lang.TFMGTexts;
import com.drmangotea.tfmg.content.engines.base.AbstractEngineBlockEntity;
import com.drmangotea.tfmg.content.engines.base.EngineBlock;
import com.drmangotea.tfmg.content.engines.base.EngineComponentsInventory;
import com.drmangotea.tfmg.content.engines.base.EngineProperties;
import com.drmangotea.tfmg.content.engines.engine_controller.EngineControllerBlockEntity;
@@ -31,6 +31,7 @@ import net.minecraft.world.entity.player.Player;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.item.Items;
import net.minecraft.world.item.crafting.Ingredient;
import net.minecraft.world.level.block.Blocks;
import net.minecraft.world.level.block.entity.BlockEntity;
import net.minecraft.world.level.block.entity.BlockEntityType;
import net.minecraft.world.level.block.state.BlockState;
@@ -81,20 +82,10 @@ public abstract class AbstractSmallEngineBlockEntity extends AbstractEngineBlock
float coolingFluidModifier = coolingFluid > 0 ? 0.7f : 1f;
return (int) (12.5f * (1 / efficiencyModifier()) * getSpeedEfficiency() * fuelInjectionRate * oilModifier * coolingFluidModifier) * (engineLength() + 1);
return (int) (12.5f * (1 / efficiencyModifier()) * getSpeedEfficiency() * highestSignal / 15 * oilModifier * coolingFluidModifier) * (engineLength() + 1);
}
public void detashEngines() {
//for (long id : engines) {
// BlockPos pos = BlockPos.of(id);
// if (level.getBlockEntity(pos) instanceof AbstractEngineBlockEntity be) {
// be.controller = be.getBlockPos();
// be.engineNumber = 0;
// be.refreshCapability();
// be.sendData();
// be.setChanged();
// }
//}
}
public void setBlockStates(AbstractSmallEngineBlockEntity be, BlockPos last) {
@@ -139,10 +130,12 @@ public abstract class AbstractSmallEngineBlockEntity extends AbstractEngineBlock
@Override
public void lazyTick() {
super.lazyTick();
upgrade.ifPresent(engineUpgrade -> engineUpgrade.lazyTickUpgrade(this));
if (!canWork())
return;
if(rpm==0)
return;
if (level.random.nextInt(45) == 0) {
if (oil > 0)
oil--;
@@ -152,12 +145,13 @@ public abstract class AbstractSmallEngineBlockEntity extends AbstractEngineBlock
coolingFluid--;
}
upgrade.ifPresent(engineUpgrade -> engineUpgrade.lazyTickUpgrade(this));
}
@Override
public float calculateAddedStressCapacity() {
float stress = super.calculateAddedStressCapacity() + (torque);
return hasTwoShafts() ? stress / 2 : stress;
}
@@ -165,11 +159,9 @@ public abstract class AbstractSmallEngineBlockEntity extends AbstractEngineBlock
if (!isController())
return getControllerBE().hasTwoShafts();
if (this.getBlockState().getValue(ENGINE_STATE) == SHAFT) {
BlockState state = level.getBlockState(controller.south(engineLength()));
if (state.getBlock() instanceof EngineBlock)
if (engineLength() > 1 && state.getValue(ENGINE_STATE) == SHAFT)
BlockPos pos = getBlockPos().relative(this.getBlockState().getValue(SHAFT_FACING).getOpposite(), engineLength() );
if (level.getBlockState(pos).getValue(ENGINE_STATE) == SHAFT)
return true;
}
return false;
@@ -254,13 +246,9 @@ public abstract class AbstractSmallEngineBlockEntity extends AbstractEngineBlock
if (controller == null)
return;
if (!canWork()) {
fuelInjectionRate = 0;
return;
}
if (hasEngineController()) {
fuelInjectionRate = highestSignal / 15f;
return;
}
@@ -271,6 +259,7 @@ public abstract class AbstractSmallEngineBlockEntity extends AbstractEngineBlock
signal = newSignal;
if (!isController()) {
if (level.getBlockEntity(controller) instanceof AbstractSmallEngineBlockEntity be) {
be.analogSignalChanged();
return;
@@ -282,9 +271,9 @@ public abstract class AbstractSmallEngineBlockEntity extends AbstractEngineBlock
newSignal = Math.max(level.getBestNeighborSignal(pos), newSignal);
}
newSignal = Math.max(level.getBestNeighborSignal(controller), newSignal);
highestSignal = newSignal;
fuelInjectionRate = highestSignal / 15f;
highestSignal = newSignal/15f;
updateRotation();
}
@@ -309,7 +298,6 @@ public abstract class AbstractSmallEngineBlockEntity extends AbstractEngineBlock
if (fuelTank.isEmpty()) {
rpm = 0;
torque = 0;
fuelInjectionRate = 0;
}
List<Long> allEngines = new ArrayList<>(engines);
@@ -333,8 +321,8 @@ public abstract class AbstractSmallEngineBlockEntity extends AbstractEngineBlock
allEngines.forEach(l -> {
BlockPos pos = BlockPos.of(l);
if (level.getBlockEntity(pos) instanceof AbstractEngineBlockEntity be) {
be.rpm = 4000 * speedModifier() * fuelInjectionRate;
be.torque = 15 * torqueModifier() * fuelInjectionRate * engineLength();
be.rpm = 4000 * speedModifier() * highestSignal ;
be.torque = 15 * torqueModifier() * highestSignal* engineLength();
be.updateGeneratedRotation();
}
});
@@ -364,7 +352,6 @@ public abstract class AbstractSmallEngineBlockEntity extends AbstractEngineBlock
if (!canGenerateSpeed())
return 0;
float speed;
@@ -398,7 +385,6 @@ public abstract class AbstractSmallEngineBlockEntity extends AbstractEngineBlock
}
return convertToDirection(Math.min((int) speed, 256), getBlockState().getValue(HORIZONTAL_FACING));
}
return 0;
@@ -486,7 +472,7 @@ public abstract class AbstractSmallEngineBlockEntity extends AbstractEngineBlock
upgrade.ifPresent(u -> u.updateUpgrade(this));
itemStack.shrink(1);
if (upgrade.isPresent())
if (upgrade.get() instanceof TransmissionUpgrade transmissionUpgrade) {
if (upgrade.get() instanceof TransmissionUpgrade) {
if (itemStack.has(TFMGDataComponents.POSITION) && itemStack.get(TFMGDataComponents.POSITION) != null) {
BlockPos pos = BlockPos.of(itemStack.get(TFMGDataComponents.POSITION));
if (level.getBlockEntity(pos) instanceof EngineControllerBlockEntity engineControllerBE) {
@@ -559,9 +545,7 @@ public abstract class AbstractSmallEngineBlockEntity extends AbstractEngineBlock
TFMGTexts.Engine.rpm(rpm).forGoggles(tooltip);
TFMGTexts.Engine.length(engineLength()).forGoggles(tooltip);
TFMGTexts.Engine.torque(torque).forGoggles(tooltip);
TFMGTexts.Engine.injectionRate(fuelInjectionRate).forGoggles(tooltip);
TFMGTexts.Engine.signal(highestSignal).forGoggles(tooltip);
TFMGTexts.Engine.signal((int) (highestSignal*15)).forGoggles(tooltip);
TFMGLang.number(engineNumber).style(ChatFormatting.DARK_GREEN).forGoggles(tooltip);
if (isController() && !nextComponent().isEmpty())
TFMGLang.text(nextComponent().getItems()[0].getDisplayName().getString()).forGoggles(tooltip);

View File

@@ -154,11 +154,6 @@ public class LargeEngineBlockEntity extends AbstractEngineBlockEntity {
return 1;
}
@Override
public String engineId() {
return "Large";
}
@OnlyIn(Dist.CLIENT)
private void makeSound() {

View File

@@ -36,7 +36,6 @@ import java.util.List;
import static com.drmangotea.tfmg.content.engines.base.EngineProperties.*;
import static com.drmangotea.tfmg.content.engines.types.regular_engine.RegularEngineBlock.EXTENDED;
import static com.simibubi.create.AllTags.optionalTag;
import static com.simibubi.create.content.kinetics.base.HorizontalKineticBlock.HORIZONTAL_FACING;
public class RegularEngineBlockEntity extends AbstractSmallEngineBlockEntity {
@@ -383,16 +382,18 @@ public class RegularEngineBlockEntity extends AbstractSmallEngineBlockEntity {
if(nextComponent()!= Ingredient.EMPTY){
TFMGTexts.Engine.unfinished().forGoggles(tooltip);
TFMGTexts.Engine.nextComponent(nextComponent().getItems()[0]).forGoggles(tooltip);
TFMGTexts.Engine.type(type.langKey).forGoggles(tooltip, 1);
return true;
}
if(!hasAllPistons()){
TFMGTexts.Engine.lastRequirement(this instanceof TurbineEngineBlockEntity ? "turbines" : "pistons").forGoggles(tooltip);
TFMGTexts.Engine.type(type.langKey).forGoggles(tooltip, 1);
return true;
}
TFMGTexts.Engine.type(type.langKey).forGoggles(tooltip, 1);
TFMGTexts.Engine.rpm(rpm).forGoggles(tooltip, 1);
TFMGTexts.Engine.signal(highestSignal).forGoggles(tooltip, 1);
TFMGTexts.Engine.signal((int) (highestSignal*15)).forGoggles(tooltip, 1);
TFMGTexts.Engine.torque(torque).forGoggles(tooltip, 1);
TFMGTexts.Engine.fuelConsumption(getFuelConsumption()/1.5f).forGoggles(tooltip, 1);
if(oil>0){
@@ -407,10 +408,6 @@ public class RegularEngineBlockEntity extends AbstractSmallEngineBlockEntity {
return true;
}
@Override
public String engineId() {
return type.name;
}
public enum EngineType {
I("engine_i", pistonsI(), 1, 1, 1, true),

View File

@@ -1,6 +1,7 @@
package com.drmangotea.tfmg.content.engines.upgrades;
import com.drmangotea.tfmg.TFMG;
import com.drmangotea.tfmg.content.engines.types.AbstractSmallEngineBlockEntity;
import com.drmangotea.tfmg.registry.TFMGBlocks;
import com.simibubi.create.content.fluids.tank.FluidTankBlockEntity;
@@ -40,6 +41,8 @@ public class EnginePipingUpgrade extends EngineUpgrade {
@Override
public void lazyTickUpgrade(AbstractSmallEngineBlockEntity engine) {
if (tank.isPresent()) {
AbstractSmallEngineBlockEntity controller = engine.getControllerBE();
@@ -57,7 +60,7 @@ public class EnginePipingUpgrade extends EngineUpgrade {
tankBE.getTankInventory().drain(amount, IFluidHandler.FluidAction.EXECUTE);
controller.getControllerBE().fuelTank.fill(new FluidStack(tankBE.getFluid(0).getFluidHolder(), amount), IFluidHandler.FluidAction.EXECUTE);
}
} else findTank(engine);
}

View File

@@ -43,9 +43,13 @@ public class LitLithiumBladeItem extends SwordItem {
// :3
ItemStack stack = player.getItemInHand(hand);
if (stack.get(TFMGDataComponents.LITHIUM_BLADE_TIMER) ==null){
ItemStack stack1 = TFMGItems.LITHIUM_BLADE.asStack();
player.setItemInHand(hand,stack1);
return InteractionResultHolder.pass(stack1);
}
if (stack.get(TFMGDataComponents.LITHIUM_BLADE_TIMER) <= 100)
return super.use(level, player, hand);
@@ -55,8 +59,6 @@ public class LitLithiumBladeItem extends SwordItem {
level.playSound(player, player.getX(), player.getY(), player.getZ(), SoundEvents.FIRECHARGE_USE, SoundSource.NEUTRAL, 0.5F, 0.4F);
Vec3 motion = player.getLookAngle();
for (int i = 0; i < 10; i++) {

View File

@@ -55,6 +55,11 @@ public class BlastFurnaceHatchBlockEntity extends SmartBlockEntity implements IH
TFMGBlockEntities.BLAST_FURNACE_HATCH.get(),
(be, context) -> be.fluidCapability
);
event.registerBlockEntity(
Capabilities.ItemHandler.BLOCK,
TFMGBlockEntities.BLAST_FURNACE_HATCH.get(),
(be, context) -> be.inventory
);
}
@Override
public void addBehaviours(List<BlockEntityBehaviour> behaviours) {}

View File

@@ -226,12 +226,12 @@ public class BlastFurnaceOutputBlockEntity extends SmartBlockEntity implements I
}
if (tuyereBE == null && tuyerePos != null)
tuyereBE = (BlastFurnaceHatchBlockEntity) level.getBlockEntity(tuyerePos);
if (tuyereBE!=null)
if (tuyereBE.tank.getFluidAmount() < recipe.hotAirUsage || !tuyereBE.tank.getFluid().getFluid().isSame(TFMGFluids.HOT_AIR.getSource()))
return;
if (tuyereBE!=null) {
tuyereBE.tank.getFluidInTank(0).setAmount(Math.max(tuyereBE.tank.getFluidInTank(0).getAmount() - recipe.hotAirUsage, 0));
}
if (!recipe.getGasByproduct().isEmpty()) {
if (level.getBlockEntity(getBlockPos().relative(getBlockState().getValue(FACING).getOpposite()).above(getSize())) instanceof BlastFurnaceHatchBlockEntity be) {
be.tank.fill(recipe.getGasByproduct(), IFluidHandler.FluidAction.EXECUTE);

View File

@@ -53,6 +53,7 @@ public class SpoolItem extends Item {
}
@Override
public InteractionResultHolder<ItemStack> use(Level level, Player player, InteractionHand hand) {
ItemStack stack = player.getItemInHand(hand);
@@ -228,9 +229,10 @@ public class SpoolItem extends Item {
@Override
public void inventoryTick(ItemStack stack, Level level, Entity entity, int slot, boolean p_41408_) {
super.inventoryTick(stack, level, entity, slot, p_41408_);
if(stack.get(TFMGDataComponents.SPOOL_AMOUNT)==null)
return;

View File

@@ -43,7 +43,6 @@ public class WindingMachineBlockEntity extends KineticBlockEntity implements IHa
LerpedFloat spoolSpeed = LerpedFloat.linear();
float angle;
public SmartInventory inventory;
public IItemHandlerModifiable itemCapability;
public ItemStack spool = ItemStack.EMPTY;
public WindingRecipe recipe;
public int amountWinded = 0;
@@ -58,7 +57,6 @@ public class WindingMachineBlockEntity extends KineticBlockEntity implements IHa
.withMaxStackSize(1)
.whenContentsChanged(i -> this.onContentsChanged());
itemCapability = inventory;
}
@@ -66,7 +64,7 @@ public class WindingMachineBlockEntity extends KineticBlockEntity implements IHa
event.registerBlockEntity(
Capabilities.ItemHandler.BLOCK,
TFMGBlockEntities.WINDING_MACHINE.get(),
(be, context) -> be.itemCapability
(be, context) -> be.inventory
);
}
@@ -141,7 +139,7 @@ public class WindingMachineBlockEntity extends KineticBlockEntity implements IHa
.forGoggles(tooltip);
if (recipe != null)
TFMGTexts.progress(TFMGLang.number(amountWinded) + "/" + recipe.getProcessingDuration())
TFMGTexts.progress(amountWinded + "/" + recipe.getProcessingDuration())
.color(spool.getBarColor())
.forGoggles(tooltip);
}

View File

@@ -1,7 +1,7 @@
package com.drmangotea.tfmg.content.machinery.misc.winding_machine;
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;
@@ -53,6 +53,7 @@ public class WindingMachineRenderer extends KineticBlockEntityRenderer<WindingMa
.renderInto(ms, vb);
if (!be.spool.isEmpty()) {
if (!be.spool.is(TFMGItems.EMPTY_SPOOL)) {
CachedBuffers.partial(TFMGPartialModels.SPOOL_WIRE, blockState)
.light(light)
.center()
@@ -75,6 +76,7 @@ public class WindingMachineRenderer extends KineticBlockEntityRenderer<WindingMa
.uncenter()
.renderInto(ms, vb);
}
}
}
}

View File

@@ -1,5 +1,6 @@
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.mixin.accessor.TankSegmentAccessor;
@@ -77,7 +78,7 @@ public class VatBlockEntity extends SmartBlockEntity implements IHaveGoggleInfor
protected BlockPos lastKnownPos;
protected boolean updateConnectivity;
protected boolean updateCapability;
protected boolean window = false;
protected boolean window;
protected int luminosity;
protected int width;
protected int height;
@@ -252,23 +253,6 @@ public class VatBlockEntity extends SmartBlockEntity implements IHaveGoggleInfor
continue;
}
//for(int i =0;i<machines.size();i++){
// if(!Objects.equals(machines.get(i),testedRecipe.machines)){
// doesntMatch = true;
// break;
// }
//}
//for (String string : testedRecipe.machines) {
//
// if (!machines.contains(string)) {
// doesntMatch = true;
// break;
// }
//}
IFluidHandler fluidHandler = fluidCapability;
IItemHandler itemHandler = itemCapability;
@@ -321,27 +305,7 @@ public class VatBlockEntity extends SmartBlockEntity implements IHaveGoggleInfor
}
}
if (false) {
Map<Integer, Integer> isFound = new HashMap<>();
for (int i = 0; i < testedRecipe.getIngredients().size(); i++) {
Integer foundAt = null;
if (testedRecipe.getIngredients().get(i).isEmpty())
break;
for (int y = 0; y < itemHandler.getSlots(); y++) {
if (isFound.containsValue(y))
continue;
ItemStack stack = itemHandler.getStackInSlot(y);
if (testedRecipe.getIngredients().get(i).test(stack)) {
foundAt = y;
break;
}
}
if (foundAt != null) {
isFound.put(i, foundAt);
} else doesntMatch = true;
}
}
//////////////////////////////////////////
if (doesntMatch)
@@ -468,6 +432,7 @@ public class VatBlockEntity extends SmartBlockEntity implements IHaveGoggleInfor
* ticks the processing timer
*/
public void handleRecipe() {
if (recipe == null)
return;
if (!isController())
@@ -539,7 +504,8 @@ public class VatBlockEntity extends SmartBlockEntity implements IHaveGoggleInfor
}
}
//fluid output
List<Integer> handledFluidResults = new ArrayList<>();
List<FluidStack> handledFluidStacks = new ArrayList<>();
List<SmartFluidTankBehaviour.TankSegment> tankSegments = List.of(outputTank.getTanks());
@@ -903,8 +869,9 @@ public class VatBlockEntity extends SmartBlockEntity implements IHaveGoggleInfor
}
private IFluidHandler getNewFluidCapability() {
IFluidHandler inputHandler = inputTank.getCapability();
IFluidHandler outputHandler = outputTank.getCapability();
IFluidHandler inputHandler = inputTank.getCapability();
if (inputHandler == null || outputHandler == null)

View File

@@ -22,7 +22,7 @@ public class VatRenderer extends SafeBlockEntityRenderer<VatBlockEntity> {
if (!be.isController())
return;
float fluidLevel = renderFluids(be, partialTicks, ms, bufferSource, light, overlay);
renderFluids(be, partialTicks, ms, bufferSource, light, overlay);
}

View File

@@ -10,13 +10,16 @@ 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 com.drmangotea.tfmg.content.machinery.vat.industrial_mixer.IndustrialMixerBlockEntity;
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.item.Items;
import net.minecraft.world.level.block.entity.BlockEntityType;
import net.minecraft.world.level.block.state.BlockState;
import net.minecraft.world.phys.AABB;
@@ -100,6 +103,21 @@ public class ElectrodeHolderBlockEntity extends ElectricBlockEntity implements I
return false;
}
@Override
public void remove() {
if (level.isClientSide || electrode.getItem()==null)
return;
ItemEntity itemToDrop = new ItemEntity(level, getBlockPos().getX() + 0.5f, getBlockPos().getY() + 0.5f, getBlockPos().getZ() + 0.5f, electrode.getStack());
level.addFreshEntity(itemToDrop);
}
@Override
public void onNetworkChanged(int oldVoltage, int oldPower) {
super.onNetworkChanged(oldVoltage, oldPower);

View File

@@ -11,6 +11,7 @@ import net.minecraft.core.BlockPos;
import net.minecraft.core.Direction;
import net.minecraft.core.HolderLookup;
import net.minecraft.nbt.CompoundTag;
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;
@@ -60,9 +61,6 @@ public class IndustrialMixerBlockEntity extends KineticBlockEntity implements IV
}
@Override
public void write(CompoundTag compound, HolderLookup.Provider registries, boolean clientPacket) {
for (MixerMode mode : MixerMode.values()) {
@@ -83,6 +81,21 @@ public class IndustrialMixerBlockEntity extends KineticBlockEntity implements IV
super.read(compound, registries, clientPacket);
}
@Override
public void remove() {
if (level.isClientSide || mixerMode == MixerMode.NONE)
return;
ItemEntity itemToDrop = new ItemEntity(level, getBlockPos().getX() + 0.5f, getBlockPos().getY() + 0.5f, getBlockPos().getZ() + 0.5f, mixerMode.item);
level.addFreshEntity(itemToDrop);
}
@Override
protected AABB createRenderBoundingBox() {
return new AABB(getBlockPos()).inflate(3);

View File

@@ -3,6 +3,7 @@ package com.drmangotea.tfmg.datagen.recipes.values;
import com.drmangotea.tfmg.TFMG;
import com.drmangotea.tfmg.base.TFMGRegistrate;
import com.drmangotea.tfmg.content.decoration.pipes.TFMGPipes;
import com.drmangotea.tfmg.content.machinery.misc.winding_machine.SpoolItem;
import com.drmangotea.tfmg.datagen.recipes.TFMGRecipeProvider;
import com.drmangotea.tfmg.registry.TFMGBlocks;
import com.drmangotea.tfmg.registry.TFMGFluids;
@@ -1011,32 +1012,32 @@ public class TFMGStandardRecipeGen extends TFMGRecipeProvider {
.pattern("CPC")
.pattern("MMM")),
COPPER_SPOOL = create(TFMGItems.COPPER_SPOOL)
.unlockedBy(TFMGItems.EMPTY_SPOOL::get)
.viaShaped(b -> b
.define('S', TFMGItems.EMPTY_SPOOL)
.define('W', copperWire())
.pattern("WWW")
.pattern("WSW")
.pattern("WWW")),
ALUMINUM_SPOOL = create(TFMGItems.ALUMINUM_SPOOL)
.unlockedBy(TFMGItems.EMPTY_SPOOL::get)
.viaShaped(b -> b
.define('S', TFMGItems.EMPTY_SPOOL)
.define('W', aluminumWire())
.pattern("WWW")
.pattern("WSW")
.pattern("WWW")),
CONSTANTAN_SPOOL = create(TFMGItems.CONSTANTAN_SPOOL)
.unlockedBy(TFMGItems.EMPTY_SPOOL::get)
.viaShaped(b -> b
.define('S', TFMGItems.EMPTY_SPOOL)
.define('W', constantanWire())
.pattern("WWW")
.pattern("WSW")
.pattern("WWW")),
// COPPER_SPOOL = create(TFMGItems.COPPER_SPOOL)
// .unlockedBy(TFMGItems.EMPTY_SPOOL::get)
// .viaShaped(b -> b
// .define('S', TFMGItems.EMPTY_SPOOL)
// .define('W', copperWire())
// .pattern("WWW")
// .pattern("WSW")
// .pattern("WWW")),
//
// ALUMINUM_SPOOL = create(TFMGItems.ALUMINUM_SPOOL)
// .unlockedBy(TFMGItems.EMPTY_SPOOL::get)
// .viaShaped(b -> b
// .define('S', TFMGItems.EMPTY_SPOOL)
// .define('W', aluminumWire())
// .pattern("WWW")
// .pattern("WSW")
// .pattern("WWW")),
//
// CONSTANTAN_SPOOL = create(TFMGItems.CONSTANTAN_SPOOL)
// .unlockedBy(TFMGItems.EMPTY_SPOOL::get)
// .viaShaped(b -> b
// .define('S', TFMGItems.EMPTY_SPOOL)
// .define('W', constantanWire())
// .pattern("WWW")
// .pattern("WSW")
// .pattern("WWW")),
REGULAR_ENGINE = create(TFMGBlocks.REGULAR_ENGINE).returns(2)
.unlockedBy(TFMGBlocks.HEAVY_MACHINERY_CASING::asItem)
@@ -2404,6 +2405,8 @@ public class TFMGStandardRecipeGen extends TFMGRecipeProvider {
return new GeneratedRecipeBuilder(currentFolder, result);
}
GeneratedRecipeBuilder create(ItemProviderEntry<? extends ItemLike, ? extends ItemLike> result) {
return create(result::get);
}
@@ -2561,9 +2564,9 @@ public class TFMGStandardRecipeGen extends TFMGRecipeProvider {
return this;
}
// FIXME 5.1 refactor - recipe categories as markers instead of sections?
TFMGRecipeProvider.GeneratedRecipe viaShaped(UnaryOperator<ShapedRecipeBuilder> builder) {
return register(consumer -> {
ShapedRecipeBuilder b =
builder.apply(ShapedRecipeBuilder.shaped(RecipeCategory.MISC, result.get(), amount));
if (unlockedBy != null)

View File

@@ -33,7 +33,7 @@ public class TFMGSequencedAssemblyRecipeGen extends SequencedAssemblyRecipeGen {
.loops(3)
.addStep(WindingRecipe::new, rb -> rb.require(TFMGItems.CONSTANTAN_SPOOL.get()).duration(100))
.addStep(DeployerApplicationRecipe::new, rb -> rb.require(TFMGBlocks.STEEL_COGWHEEL))
.addStep(DeployerApplicationRecipe::new, rb -> rb.require(TFMGItems.COPPER_WIRE))
.addStep(DeployerApplicationRecipe::new, rb -> rb.require(copperWire()))
.addStep(FillingRecipe::new, rb -> rb.require(SizedFluidIngredient.of(lubricationOil(), 50)))),
GENERATOR = create("generator", b -> b.require(shaft())

View File

@@ -1474,8 +1474,8 @@ public class TFMGBlocks {
.onRegister(connectedTextures(() -> new EncasedCTBehaviour(TFMGSpriteShifts.CAST_IRON_BLOCK)))
.onRegister(casingConnectivity((block, cc) -> cc.makeCasing(block, TFMGSpriteShifts.CAST_IRON_BLOCK)))
.transform(pickaxeOnly())
.blockstate(simpleCubeAll("cast_iron_block"))
.tag(BlockTags.NEEDS_IRON_TOOL)
.blockstate(simpleCubeAll("cast_iron_block"))
.tag(BlockTags.BEACON_BASE_BLOCKS)
.transform(tagBlockAndItem(Map.of(
Tags.Blocks.STORAGE_BLOCKS, Tags.Items.STORAGE_BLOCKS,
@@ -1838,6 +1838,8 @@ public class TFMGBlocks {
.initialProperties(SharedProperties::softMetal)
.properties(BlockBehaviour.Properties::noOcclusion)
.properties(p -> p.sound(SoundType.NETHERITE_BLOCK))
.transform(pickaxeOnly())
.tag(BlockTags.NEEDS_IRON_TOOL)
.addLayer(() -> RenderType::cutoutMipped)
.blockstate((ctx, prov) -> prov.simpleBlock(ctx.getEntry(), AssetLookup.partialBaseModel(ctx, prov)))
.item()
@@ -1849,6 +1851,8 @@ public class TFMGBlocks {
.properties(BlockBehaviour.Properties::noOcclusion)
.properties(p -> p.sound(SoundType.NETHERITE_BLOCK))
.addLayer(() -> RenderType::cutoutMipped)
.transform(pickaxeOnly())
.tag(BlockTags.NEEDS_IRON_TOOL)
.blockstate((ctx, prov) -> prov.simpleBlock(ctx.getEntry(), AssetLookup.partialBaseModel(ctx, prov)))
.item()
.transform(customItemModel())
@@ -1858,6 +1862,8 @@ public class TFMGBlocks {
.initialProperties(SharedProperties::softMetal)
.properties(BlockBehaviour.Properties::noOcclusion)
.properties(p -> p.sound(SoundType.NETHERITE_BLOCK))
.transform(pickaxeOnly())
.tag(BlockTags.NEEDS_IRON_TOOL)
.addLayer(() -> RenderType::cutoutMipped)
.blockstate((ctx, prov) -> prov.simpleBlock(ctx.getEntry(), AssetLookup.partialBaseModel(ctx, prov)))
.item()
@@ -1868,6 +1874,8 @@ public class TFMGBlocks {
.initialProperties(SharedProperties::softMetal)
.properties(p -> p.sound(SoundType.NETHERITE_BLOCK))
.addLayer(() -> RenderType::cutoutMipped)
.transform(pickaxeOnly())
.tag(BlockTags.NEEDS_IRON_TOOL)
.blockstate(BlockStateGen.directionalBlockProvider(true))
.item()
.transform(customItemModel())
@@ -1877,6 +1885,8 @@ public class TFMGBlocks {
.initialProperties(SharedProperties::softMetal)
.properties(BlockBehaviour.Properties::noOcclusion)
.properties(p -> p.sound(SoundType.NETHERITE_BLOCK))
.transform(pickaxeOnly())
.tag(BlockTags.NEEDS_IRON_TOOL)
.addLayer(() -> RenderType::cutoutMipped)
.blockstate(new RebarStairsGenerator()::generate)
.item()
@@ -1888,6 +1898,8 @@ public class TFMGBlocks {
.initialProperties(SharedProperties::softMetal)
.properties(BlockBehaviour.Properties::noOcclusion)
.properties(p -> p.sound(SoundType.NETHERITE_BLOCK))
.transform(pickaxeOnly())
.tag(BlockTags.NEEDS_IRON_TOOL)
.addLayer(() -> RenderType::cutoutMipped)
.blockstate(BlockStateGen.directionalBlockProvider(true))
.item()

View File

@@ -13,17 +13,17 @@ public class TFMGCableTypes {
.register();
public static final CableTypeEntry<CableType> COPPER = REGISTRATE.cableType("copper", CableType::new)
.properties((p) -> p.color(0xD8735A).spool(TFMGItems.COPPER_SPOOL))
.properties((p) -> p.color(0xD8735A).spool(TFMGItems.COPPER_SPOOL).wire(TFMGItems.COPPER_WIRE))
.transform(TFMGResistivity.setResistivity(0.00188f))
.register();
public static final CableTypeEntry<CableType> ALUMINUM = REGISTRATE.cableType("aluminum", CableType::new)
.properties((p) -> p.color(0xEDEFEF).spool(TFMGItems.ALUMINUM_SPOOL))
.properties((p) -> p.color(0xEDEFEF).spool(TFMGItems.ALUMINUM_SPOOL).wire(TFMGItems.ALUMINUM_WIRE))
.transform(TFMGResistivity.setResistivity(0.0027f))
.register();
public static final CableTypeEntry<CableType> CONSTANTAN = REGISTRATE.cableType("constantan", CableType::new)
.properties((p) -> p.color(0xCFC2A8).spool(TFMGItems.CONSTANTAN_SPOOL))
.properties((p) -> p.color(0xCFC2A8).spool(TFMGItems.CONSTANTAN_SPOOL).wire(TFMGItems.CONSTANTAN_WIRE))
.transform(TFMGResistivity.setResistivity(1f))
.register();

View File

@@ -2,8 +2,8 @@
"creative_tab.tfmg_main": "Create: The Factory Must Grow",
"creative_tab.tfmg_decoration": "Create: TFMG Building Blocks",
"create.goggles.fluid_storage": "Fluid Storage:",
"tfmg.goggles.item_storage": "Item Storage:",
"tfmg.goggles.fluid_storage": "Fluid Storage:",
"create.goggles.item_storage": "Item Storage:",
"tfmg.goggles.item_storage_empty": "*Empty*",
"tfmg.surface_scanner.header": "Surface Scanner",
@@ -56,7 +56,7 @@
"tfmg.goggles.machine_input.power_level": "Power Level: ",
"tfmg.winding_machine.header": "Winding Machine",
"tfmg.goggles.winding_machine.turns": "Turns Left: %s",
"tfmg.goggles.winding_machine.turns": "Turns Left: %1$",
"tfmg.goggles.winding_machine.progress": "Progress: ",
"tfmg.polarizer.header": "Polarizer",
@@ -124,21 +124,20 @@
"tfmg.tooltip.fuse": "Rating: %1$s",
"tfmg.tooltip.resistor": "Resistance: %1$s",
"tfmg.tooltip.coils": "Turns: %1$s",
"tfmg.tooltip.coils": "Turns: ",
"tfmg.tooltip.cylinder": "Supported Fuels:",
"tfmg.tooltip.fluid_item": "Fluid Amount: %1$s",
"tfmg.recipe.assembly.winding": "Wind a Spool",
"tfmg.recipe.distillation": "Distillation",
"tfmg.recipe.advanced_distillation": "Advanced Distillation",
"tfmg.recipe.industrial_blasting": "Industrial Blasting",
"tfmg.recipe.casting": "Casting",
"tfmg.recipe.coking": "Coking",
"tfmg.recipe.polarizing": "Polarizing",
"tfmg.recipe.chemical_vat": "Chemical Vat",
"tfmg.recipe.hot_blast": "Air Blasting",
"tfmg.recipe.winding": "Winding",
"create.recipe.assembly.winding": "Wind a Spool",
"create.recipe.distillation": "Distillation",
"create.recipe.advanced_distillation": "Advanced Distillation",
"create.recipe.industrial_blasting": "Industrial Blasting",
"create.recipe.casting": "Casting",
"create.recipe.coking": "Coking",
"create.recipe.polarizing": "Polarizing",
"create.recipe.chemical_vat": "Chemical Vat",
"create.recipe.hot_blast": "Air Blasting",
"create.recipe.winding": "Winding",
"tfmg.keyinfo.custom_button": "Engine Controller Custom Button",
"tfmg.keyinfo.engine_start": "Start Engine",
@@ -150,7 +149,7 @@
"tfmg.multimeter.insufficient_power": "Not Enough Power",
"tfmg.multimeter.insufficient_power.requirement": "Not Enough Power (Needs %s)",
"tfmg.multimeter.insufficient_current": "Not Enough Current (Needs %s)",
"tfmg.multimeter.charge": "Charge: %s",
"tfmg.multimeter.charge": "Charge: ",
"tfmg.multimeter.additional_values": "Additional Values:",
"tfmg.multimeter.power_usage": " Power Usage: ",
"tfmg.multimeter.group": " Group: %s",
@@ -191,7 +190,7 @@
"tfmg.engine.type.engine_v": "V",
"tfmg.engine.type.engine_w": "W",
"tfmg.engine.type.engine_u": "U",
"tfmg.engine.type.boxer": "Boxer",
"tfmg.engine.type.engine_boxer": "Boxer",
"tfmg.engine.type.radial": "Radial",
"tfmg.engine.type.turbine": "Turbine",
@@ -200,8 +199,8 @@
"tfmg.goggles.voltmeter.mode.current": "Current",
"tfmg.goggles.voltmeter.mode.resistance": "Resistance",
"tfmg.goggles.voltmeter.mode.power": "Power",
"tfmg.goggles.voltmeter.mode.net_power_use": "Network Power Usage",
"tfmg.goggles.voltmeter.mode.net_power_gen": "Network Power Generation",
"tfmg.goggles.voltmeter.mode.network_power_use": "Network Power Usage",
"tfmg.goggles.voltmeter.mode.network_power_generation": "Network Power Generation",
"tfmg.goggles.voltmeter.mode.capacity": "Capacity",
"tfmg.goggles.voltmeter.mode.fallback": "Fallback",

View File

@@ -174,7 +174,7 @@
"block.tfmg.diode.tooltip.behaviour1": "The power will be outputted on its lighter side acting as a one way pathway for power (meaning any power that would be coming from its lighter side would not be outputted on the darker one)",
"block.tfmg.blast_stove.tooltip.summary": "Heats Air",
"block.tfmg.blast_stove.tooltip.behaviour1": "When 3 blast stoves are placed on top of eachother (or in a 3x2 shape) the smallest version of a blast stove is created, to add further internal storage you can add more stove blocks on top which is generally reccomended. A Blast Stove requires 2 things to be pumped in. Air, from the side of the bottom block and Creosote or Furnace gas from the bottom. Carbon dioxide must be pumped out from the side of the bottom block and finally heated air must be pumped out from the machines top.",
"block.tfmg.blast_stove.tooltip.behaviour1": "When 3 blast stoves are placed on top of eachother (or in a 3x2 shape) the smallest version of a blast stove is created, to add further internal storage you can add more stove blocks on top which is generally recommended. A Blast Stove requires 2 things to be pumped in. Air, from the side of the bottom block and Creosote or Furnace gas from the bottom. Carbon dioxide must be pumped out from the side of the bottom block and finally heated air must be pumped out from the machines top.",
"block.tfmg.resistor.tooltip.summary": "Adds resistance to a network",
"block.tfmg.resistor.tooltip.condition1": "When placed on a block within a group",

View File

@@ -1,162 +0,0 @@
{
"credit": "Made with Blockbench",
"parent": "block/block",
"texture_size": [32, 32],
"textures": {
"2": "tfmg:block/aluminum_pump"
},
"elements": [
{
"from": [6.5, -1, 3],
"to": [9.5, 17, 13],
"forge_data": {"calculate_normals": true},
"rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 8]},
"faces": {
"north": {"uv": [0, 6.5, 9, 8], "rotation": 90, "texture": "#2"},
"east": {"uv": [0, 9, 9, 14], "rotation": 270, "texture": "#2"},
"south": {"uv": [0, 6.5, 9, 8], "rotation": 90, "texture": "#2"},
"west": {"uv": [0, 9, 9, 14], "rotation": 90, "texture": "#2"},
"up": {"uv": [10, 6.5, 15, 8], "rotation": 90, "texture": "#2"},
"down": {"uv": [10, 6.5, 15, 8], "rotation": 90, "texture": "#2"}
}
},
{
"from": [-1, 6.5, 3],
"to": [17, 9.5, 13],
"forge_data": {"calculate_normals": true},
"rotation": {"angle": 0, "axis": "z", "origin": [8, 8, 8]},
"faces": {
"north": {"uv": [0, 6.5, 9, 8], "rotation": 180, "texture": "#2"},
"east": {"uv": [10, 6.5, 15, 8], "texture": "#2"},
"south": {"uv": [0, 6.5, 9, 8], "texture": "#2"},
"west": {"uv": [10, 6.5, 15, 8], "texture": "#2"},
"up": {"uv": [0, 9, 9, 14], "rotation": 180, "texture": "#2"},
"down": {"uv": [0, 9, 9, 14], "texture": "#2"}
}
},
{
"from": [6.5, -1, 3],
"to": [9.5, 17, 13],
"forge_data": {"calculate_normals": true},
"rotation": {"angle": 45, "axis": "z", "origin": [8, 8, 8]},
"faces": {
"north": {"uv": [0, 6.5, 9, 8], "rotation": 90, "texture": "#2"},
"east": {"uv": [0, 9, 9, 14], "rotation": 270, "texture": "#2"},
"south": {"uv": [0, 6.5, 9, 8], "rotation": 90, "texture": "#2"},
"west": {"uv": [0, 9, 9, 14], "rotation": 90, "texture": "#2"},
"up": {"uv": [10, 6.5, 15, 8], "rotation": 90, "texture": "#2"},
"down": {"uv": [10, 6.5, 15, 8], "rotation": 90, "texture": "#2"}
}
},
{
"from": [-1, 6.5, 3],
"to": [17, 9.5, 13],
"forge_data": {"calculate_normals": true},
"rotation": {"angle": 45, "axis": "z", "origin": [8, 8, 8]},
"faces": {
"north": {"uv": [0, 6.5, 9, 8], "rotation": 180, "texture": "#2"},
"east": {"uv": [10, 6.5, 15, 8], "texture": "#2"},
"south": {"uv": [0, 6.5, 9, 8], "texture": "#2"},
"west": {"uv": [10, 6.5, 15, 8], "texture": "#2"},
"up": {"uv": [0, 9, 9, 14], "rotation": 180, "texture": "#2"},
"down": {"uv": [0, 9, 9, 14], "texture": "#2"}
}
},
{
"from": [5.5, 0.9, 3.05],
"to": [10.5, 15.1, 12.95],
"forge_data": {"calculate_normals": true},
"rotation": {"angle": 22.5, "axis": "z", "origin": [8, 8, 8]},
"faces": {
"north": {"uv": [1, 7, 1.5, 7.5], "texture": "#2"},
"south": {"uv": [1, 7, 1.5, 7.5], "texture": "#2"},
"up": {"uv": [10, 9, 15, 11.5], "rotation": 90, "texture": "#2"},
"down": {"uv": [10, 9, 15, 11.5], "rotation": 90, "texture": "#2"}
}
},
{
"from": [0.9, 5.5, 3.05],
"to": [15.1, 10.5, 12.95],
"forge_data": {"calculate_normals": true},
"rotation": {"angle": -22.5, "axis": "z", "origin": [8, 8, 8]},
"faces": {
"north": {"uv": [1, 7, 1.5, 7.5], "rotation": 90, "texture": "#2"},
"east": {"uv": [10, 9, 15, 11.5], "texture": "#2"},
"south": {"uv": [1, 7, 1.5, 7.5], "rotation": 270, "texture": "#2"},
"west": {"uv": [10, 9, 15, 11.5], "texture": "#2"}
}
},
{
"from": [0.9, 5.5, 3.05],
"to": [15.1, 10.5, 12.95],
"forge_data": {"calculate_normals": true},
"rotation": {"angle": 22.5, "axis": "z", "origin": [8, 8, 8]},
"faces": {
"north": {"uv": [1, 7, 1.5, 7.5], "rotation": 90, "texture": "#2"},
"east": {"uv": [10, 9, 15, 11.5], "texture": "#2"},
"south": {"uv": [1, 7, 1.5, 7.5], "rotation": 270, "texture": "#2"},
"west": {"uv": [10, 9, 15, 11.5], "texture": "#2"}
}
},
{
"from": [5.5, 0.9, 3.05],
"to": [10.5, 15.1, 12.95],
"forge_data": {"calculate_normals": true},
"rotation": {"angle": -22.5, "axis": "z", "origin": [8, 8, 8]},
"faces": {
"north": {"uv": [1, 7, 1.5, 7.5], "texture": "#2"},
"south": {"uv": [1, 7, 1.5, 7.5], "texture": "#2"},
"up": {"uv": [10, 9, 15, 11.5], "rotation": 90, "texture": "#2"},
"down": {"uv": [10, 9, 15, 11.5], "rotation": 90, "texture": "#2"}
}
}
],
"display": {
"thirdperson_righthand": {
"rotation": [75, -149, 0],
"translation": [0, 2.5, 0],
"scale": [0.375, 0.375, 0.375]
},
"thirdperson_lefthand": {
"rotation": [75, -149, 0],
"translation": [0, 2.5, 0],
"scale": [0.375, 0.375, 0.375]
},
"firstperson_righthand": {
"rotation": [0, -55, 0],
"scale": [0.4, 0.4, 0.4]
},
"firstperson_lefthand": {
"rotation": [0, -55, 0],
"scale": [0.4, 0.4, 0.4]
},
"ground": {
"translation": [0, 1, 1.25],
"scale": [0.25, 0.25, 0.25]
},
"gui": {
"rotation": [30, 45, 0],
"translation": [2.5, -0.5, 0],
"scale": [0.625, 0.625, 0.625]
},
"fixed": {
"rotation": [0, 180, 0],
"translation": [0, 1.75, -4.5],
"scale": [0.5, 0.5, 0.5]
}
},
"groups": [
{
"name": "cogwheel",
"origin": [8, 8, 8],
"color": 0,
"children": [0, 1, 2, 3]
},
{
"name": "group",
"origin": [8, 8, 8],
"color": 0,
"children": [4, 5, 6, 7]
}
]
}

View File

@@ -1,162 +0,0 @@
{
"credit": "Made with Blockbench",
"parent": "block/block",
"texture_size": [32, 32],
"textures": {
"2": "tfmg:block/brass_pump"
},
"elements": [
{
"from": [6.5, -1, 3],
"to": [9.5, 17, 13],
"forge_data": {"calculate_normals": true},
"rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 8]},
"faces": {
"north": {"uv": [0, 6.5, 9, 8], "rotation": 90, "texture": "#2"},
"east": {"uv": [0, 9, 9, 14], "rotation": 270, "texture": "#2"},
"south": {"uv": [0, 6.5, 9, 8], "rotation": 90, "texture": "#2"},
"west": {"uv": [0, 9, 9, 14], "rotation": 90, "texture": "#2"},
"up": {"uv": [10, 6.5, 15, 8], "rotation": 90, "texture": "#2"},
"down": {"uv": [10, 6.5, 15, 8], "rotation": 90, "texture": "#2"}
}
},
{
"from": [-1, 6.5, 3],
"to": [17, 9.5, 13],
"forge_data": {"calculate_normals": true},
"rotation": {"angle": 0, "axis": "z", "origin": [8, 8, 8]},
"faces": {
"north": {"uv": [0, 6.5, 9, 8], "rotation": 180, "texture": "#2"},
"east": {"uv": [10, 6.5, 15, 8], "texture": "#2"},
"south": {"uv": [0, 6.5, 9, 8], "texture": "#2"},
"west": {"uv": [10, 6.5, 15, 8], "texture": "#2"},
"up": {"uv": [0, 9, 9, 14], "rotation": 180, "texture": "#2"},
"down": {"uv": [0, 9, 9, 14], "texture": "#2"}
}
},
{
"from": [6.5, -1, 3],
"to": [9.5, 17, 13],
"forge_data": {"calculate_normals": true},
"rotation": {"angle": 45, "axis": "z", "origin": [8, 8, 8]},
"faces": {
"north": {"uv": [0, 6.5, 9, 8], "rotation": 90, "texture": "#2"},
"east": {"uv": [0, 9, 9, 14], "rotation": 270, "texture": "#2"},
"south": {"uv": [0, 6.5, 9, 8], "rotation": 90, "texture": "#2"},
"west": {"uv": [0, 9, 9, 14], "rotation": 90, "texture": "#2"},
"up": {"uv": [10, 6.5, 15, 8], "rotation": 90, "texture": "#2"},
"down": {"uv": [10, 6.5, 15, 8], "rotation": 90, "texture": "#2"}
}
},
{
"from": [-1, 6.5, 3],
"to": [17, 9.5, 13],
"forge_data": {"calculate_normals": true},
"rotation": {"angle": 45, "axis": "z", "origin": [8, 8, 8]},
"faces": {
"north": {"uv": [0, 6.5, 9, 8], "rotation": 180, "texture": "#2"},
"east": {"uv": [10, 6.5, 15, 8], "texture": "#2"},
"south": {"uv": [0, 6.5, 9, 8], "texture": "#2"},
"west": {"uv": [10, 6.5, 15, 8], "texture": "#2"},
"up": {"uv": [0, 9, 9, 14], "rotation": 180, "texture": "#2"},
"down": {"uv": [0, 9, 9, 14], "texture": "#2"}
}
},
{
"from": [5.5, 0.9, 3.05],
"to": [10.5, 15.1, 12.95],
"forge_data": {"calculate_normals": true},
"rotation": {"angle": 22.5, "axis": "z", "origin": [8, 8, 8]},
"faces": {
"north": {"uv": [1, 7, 1.5, 7.5], "texture": "#2"},
"south": {"uv": [1, 7, 1.5, 7.5], "texture": "#2"},
"up": {"uv": [10, 9, 15, 11.5], "rotation": 90, "texture": "#2"},
"down": {"uv": [10, 9, 15, 11.5], "rotation": 90, "texture": "#2"}
}
},
{
"from": [0.9, 5.5, 3.05],
"to": [15.1, 10.5, 12.95],
"forge_data": {"calculate_normals": true},
"rotation": {"angle": -22.5, "axis": "z", "origin": [8, 8, 8]},
"faces": {
"north": {"uv": [1, 7, 1.5, 7.5], "rotation": 90, "texture": "#2"},
"east": {"uv": [10, 9, 15, 11.5], "texture": "#2"},
"south": {"uv": [1, 7, 1.5, 7.5], "rotation": 270, "texture": "#2"},
"west": {"uv": [10, 9, 15, 11.5], "texture": "#2"}
}
},
{
"from": [0.9, 5.5, 3.05],
"to": [15.1, 10.5, 12.95],
"forge_data": {"calculate_normals": true},
"rotation": {"angle": 22.5, "axis": "z", "origin": [8, 8, 8]},
"faces": {
"north": {"uv": [1, 7, 1.5, 7.5], "rotation": 90, "texture": "#2"},
"east": {"uv": [10, 9, 15, 11.5], "texture": "#2"},
"south": {"uv": [1, 7, 1.5, 7.5], "rotation": 270, "texture": "#2"},
"west": {"uv": [10, 9, 15, 11.5], "texture": "#2"}
}
},
{
"from": [5.5, 0.9, 3.05],
"to": [10.5, 15.1, 12.95],
"forge_data": {"calculate_normals": true},
"rotation": {"angle": -22.5, "axis": "z", "origin": [8, 8, 8]},
"faces": {
"north": {"uv": [1, 7, 1.5, 7.5], "texture": "#2"},
"south": {"uv": [1, 7, 1.5, 7.5], "texture": "#2"},
"up": {"uv": [10, 9, 15, 11.5], "rotation": 90, "texture": "#2"},
"down": {"uv": [10, 9, 15, 11.5], "rotation": 90, "texture": "#2"}
}
}
],
"display": {
"thirdperson_righthand": {
"rotation": [75, -149, 0],
"translation": [0, 2.5, 0],
"scale": [0.375, 0.375, 0.375]
},
"thirdperson_lefthand": {
"rotation": [75, -149, 0],
"translation": [0, 2.5, 0],
"scale": [0.375, 0.375, 0.375]
},
"firstperson_righthand": {
"rotation": [0, -55, 0],
"scale": [0.4, 0.4, 0.4]
},
"firstperson_lefthand": {
"rotation": [0, -55, 0],
"scale": [0.4, 0.4, 0.4]
},
"ground": {
"translation": [0, 1, 1.25],
"scale": [0.25, 0.25, 0.25]
},
"gui": {
"rotation": [30, 45, 0],
"translation": [2.5, -0.5, 0],
"scale": [0.625, 0.625, 0.625]
},
"fixed": {
"rotation": [0, 180, 0],
"translation": [0, 1.75, -4.5],
"scale": [0.5, 0.5, 0.5]
}
},
"groups": [
{
"name": "cogwheel",
"origin": [8, 8, 8],
"color": 0,
"children": [0, 1, 2, 3]
},
{
"name": "group",
"origin": [8, 8, 8],
"color": 0,
"children": [4, 5, 6, 7]
}
]
}

View File

@@ -1,162 +0,0 @@
{
"credit": "Made with Blockbench",
"parent": "block/block",
"texture_size": [32, 32],
"textures": {
"2": "tfmg:block/cast_iron_pump"
},
"elements": [
{
"from": [6.5, -1, 3],
"to": [9.5, 17, 13],
"forge_data": {"calculate_normals": true},
"rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 8]},
"faces": {
"north": {"uv": [0, 6.5, 9, 8], "rotation": 90, "texture": "#2"},
"east": {"uv": [0, 9, 9, 14], "rotation": 270, "texture": "#2"},
"south": {"uv": [0, 6.5, 9, 8], "rotation": 90, "texture": "#2"},
"west": {"uv": [0, 9, 9, 14], "rotation": 90, "texture": "#2"},
"up": {"uv": [10, 6.5, 15, 8], "rotation": 90, "texture": "#2"},
"down": {"uv": [10, 6.5, 15, 8], "rotation": 90, "texture": "#2"}
}
},
{
"from": [-1, 6.5, 3],
"to": [17, 9.5, 13],
"forge_data": {"calculate_normals": true},
"rotation": {"angle": 0, "axis": "z", "origin": [8, 8, 8]},
"faces": {
"north": {"uv": [0, 6.5, 9, 8], "rotation": 180, "texture": "#2"},
"east": {"uv": [10, 6.5, 15, 8], "texture": "#2"},
"south": {"uv": [0, 6.5, 9, 8], "texture": "#2"},
"west": {"uv": [10, 6.5, 15, 8], "texture": "#2"},
"up": {"uv": [0, 9, 9, 14], "rotation": 180, "texture": "#2"},
"down": {"uv": [0, 9, 9, 14], "texture": "#2"}
}
},
{
"from": [6.5, -1, 3],
"to": [9.5, 17, 13],
"forge_data": {"calculate_normals": true},
"rotation": {"angle": 45, "axis": "z", "origin": [8, 8, 8]},
"faces": {
"north": {"uv": [0, 6.5, 9, 8], "rotation": 90, "texture": "#2"},
"east": {"uv": [0, 9, 9, 14], "rotation": 270, "texture": "#2"},
"south": {"uv": [0, 6.5, 9, 8], "rotation": 90, "texture": "#2"},
"west": {"uv": [0, 9, 9, 14], "rotation": 90, "texture": "#2"},
"up": {"uv": [10, 6.5, 15, 8], "rotation": 90, "texture": "#2"},
"down": {"uv": [10, 6.5, 15, 8], "rotation": 90, "texture": "#2"}
}
},
{
"from": [-1, 6.5, 3],
"to": [17, 9.5, 13],
"forge_data": {"calculate_normals": true},
"rotation": {"angle": 45, "axis": "z", "origin": [8, 8, 8]},
"faces": {
"north": {"uv": [0, 6.5, 9, 8], "rotation": 180, "texture": "#2"},
"east": {"uv": [10, 6.5, 15, 8], "texture": "#2"},
"south": {"uv": [0, 6.5, 9, 8], "texture": "#2"},
"west": {"uv": [10, 6.5, 15, 8], "texture": "#2"},
"up": {"uv": [0, 9, 9, 14], "rotation": 180, "texture": "#2"},
"down": {"uv": [0, 9, 9, 14], "texture": "#2"}
}
},
{
"from": [5.5, 0.9, 3.05],
"to": [10.5, 15.1, 12.95],
"forge_data": {"calculate_normals": true},
"rotation": {"angle": 22.5, "axis": "z", "origin": [8, 8, 8]},
"faces": {
"north": {"uv": [1, 7, 1.5, 7.5], "texture": "#2"},
"south": {"uv": [1, 7, 1.5, 7.5], "texture": "#2"},
"up": {"uv": [10, 9, 15, 11.5], "rotation": 90, "texture": "#2"},
"down": {"uv": [10, 9, 15, 11.5], "rotation": 90, "texture": "#2"}
}
},
{
"from": [0.9, 5.5, 3.05],
"to": [15.1, 10.5, 12.95],
"forge_data": {"calculate_normals": true},
"rotation": {"angle": -22.5, "axis": "z", "origin": [8, 8, 8]},
"faces": {
"north": {"uv": [1, 7, 1.5, 7.5], "rotation": 90, "texture": "#2"},
"east": {"uv": [10, 9, 15, 11.5], "texture": "#2"},
"south": {"uv": [1, 7, 1.5, 7.5], "rotation": 270, "texture": "#2"},
"west": {"uv": [10, 9, 15, 11.5], "texture": "#2"}
}
},
{
"from": [0.9, 5.5, 3.05],
"to": [15.1, 10.5, 12.95],
"forge_data": {"calculate_normals": true},
"rotation": {"angle": 22.5, "axis": "z", "origin": [8, 8, 8]},
"faces": {
"north": {"uv": [1, 7, 1.5, 7.5], "rotation": 90, "texture": "#2"},
"east": {"uv": [10, 9, 15, 11.5], "texture": "#2"},
"south": {"uv": [1, 7, 1.5, 7.5], "rotation": 270, "texture": "#2"},
"west": {"uv": [10, 9, 15, 11.5], "texture": "#2"}
}
},
{
"from": [5.5, 0.9, 3.05],
"to": [10.5, 15.1, 12.95],
"forge_data": {"calculate_normals": true},
"rotation": {"angle": -22.5, "axis": "z", "origin": [8, 8, 8]},
"faces": {
"north": {"uv": [1, 7, 1.5, 7.5], "texture": "#2"},
"south": {"uv": [1, 7, 1.5, 7.5], "texture": "#2"},
"up": {"uv": [10, 9, 15, 11.5], "rotation": 90, "texture": "#2"},
"down": {"uv": [10, 9, 15, 11.5], "rotation": 90, "texture": "#2"}
}
}
],
"display": {
"thirdperson_righthand": {
"rotation": [75, -149, 0],
"translation": [0, 2.5, 0],
"scale": [0.375, 0.375, 0.375]
},
"thirdperson_lefthand": {
"rotation": [75, -149, 0],
"translation": [0, 2.5, 0],
"scale": [0.375, 0.375, 0.375]
},
"firstperson_righthand": {
"rotation": [0, -55, 0],
"scale": [0.4, 0.4, 0.4]
},
"firstperson_lefthand": {
"rotation": [0, -55, 0],
"scale": [0.4, 0.4, 0.4]
},
"ground": {
"translation": [0, 1, 1.25],
"scale": [0.25, 0.25, 0.25]
},
"gui": {
"rotation": [30, 45, 0],
"translation": [2.5, -0.5, 0],
"scale": [0.625, 0.625, 0.625]
},
"fixed": {
"rotation": [0, 180, 0],
"translation": [0, 1.75, -4.5],
"scale": [0.5, 0.5, 0.5]
}
},
"groups": [
{
"name": "cogwheel",
"origin": [8, 8, 8],
"color": 0,
"children": [0, 1, 2, 3]
},
{
"name": "group",
"origin": [8, 8, 8],
"color": 0,
"children": [4, 5, 6, 7]
}
]
}

View File

@@ -1,21 +0,0 @@
{
"credit": "Made with Blockbench",
"textures": {
"0": "tfmg:block/formwork_bottom",
"particle": "tfmg:block/formwork_bottom"
},
"elements": [
{
"from": [0, 0, 0],
"to": [16, 1, 16],
"faces": {
"north": {"uv": [0, 0, 16, 1], "texture": "#0"},
"east": {"uv": [0, 0, 16, 1], "texture": "#0"},
"south": {"uv": [0, 0, 16, 1], "texture": "#0"},
"west": {"uv": [0, 0, 16, 1], "texture": "#0"},
"up": {"uv": [0, 0, 16, 16], "texture": "#0"},
"down": {"uv": [0, 0, 16, 16], "texture": "#0"}
}
}
]
}

View File

@@ -1,21 +0,0 @@
{
"credit": "Made with Blockbench",
"textures": {
"0": "tfmg:block/formwork_side",
"particle": "tfmg:block/formwork_side"
},
"elements": [
{
"from": [0, 0, -0.1],
"to": [16, 16.001, 0.9],
"faces": {
"north": {"uv": [0, 0, 16, 16], "texture": "#0"},
"east": {"uv": [0, 0, 1, 16], "texture": "#0"},
"south": {"uv": [0, 0, 16, 16], "texture": "#0"},
"west": {"uv": [0, 0, 1, 16], "texture": "#0"},
"up": {"uv": [0, 0, 16, 1], "texture": "#0"},
"down": {"uv": [0, 0, 16, 1], "texture": "#0"}
}
}
]
}

View File

@@ -1,21 +0,0 @@
{
"credit": "Made with Blockbench",
"textures": {
"0": "tfmg:block/formwork_bottom",
"particle": "tfmg:block/formwork_bottom"
},
"elements": [
{
"from": [1, 0, 1],
"to": [15, 1, 15],
"faces": {
"north": {"uv": [0, 0, 14, 1], "texture": "#0"},
"east": {"uv": [0, 0, 14, 1], "texture": "#0"},
"south": {"uv": [0, 0, 14, 1], "texture": "#0"},
"west": {"uv": [0, 0, 14, 1], "texture": "#0"},
"up": {"uv": [1, 1, 15, 15], "texture": "#0"},
"down": {"uv": [0, 0, 14, 14], "texture": "#0"}
}
}
]
}

View File

@@ -1,75 +0,0 @@
{
"credit": "Made with Blockbench",
"parent": "minecraft:block/block",
"textures": {
"0": "tfmg:block/formwork_bottom",
"1": "tfmg:block/formwork_side",
"particle": "tfmg:block/formwork_bottom"
},
"elements": [
{
"from": [1, 1, 0],
"to": [16, 16, 1],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 0, 8]},
"faces": {
"north": {"uv": [0, 0, 15, 15], "texture": "#1"},
"east": {"uv": [0, 0, 1, 15], "texture": "#1"},
"south": {"uv": [0, 0, 15, 15], "texture": "#1"},
"west": {"uv": [0, 0, 1, 15], "texture": "#1"},
"up": {"uv": [0, 0, 15, 1], "texture": "#1"},
"down": {"uv": [0, 0, 15, 1], "texture": "#1"}
}
},
{
"from": [0, 1, 0],
"to": [1, 16, 15],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 0, 8]},
"faces": {
"north": {"uv": [0, 0, 1, 15], "texture": "#1"},
"east": {"uv": [0, 0, 15, 15], "texture": "#1"},
"south": {"uv": [0, 0, 1, 15], "texture": "#1"},
"west": {"uv": [0, 0, 15, 15], "texture": "#1"},
"up": {"uv": [0, 0, 15, 1], "rotation": 270, "texture": "#1"},
"down": {"uv": [0, 0, 15, 1], "rotation": 90, "texture": "#1"}
}
},
{
"from": [0, 1, 15],
"to": [15, 16, 16],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 0, 8]},
"faces": {
"north": {"uv": [0, 0, 15, 15], "texture": "#1"},
"east": {"uv": [0, 0, 1, 15], "texture": "#1"},
"south": {"uv": [0, 0, 15, 15], "texture": "#1"},
"west": {"uv": [0, 0, 1, 15], "texture": "#1"},
"up": {"uv": [0, 0, 15, 1], "rotation": 180, "texture": "#1"},
"down": {"uv": [0, 0, 15, 1], "rotation": 180, "texture": "#1"}
}
},
{
"from": [15, 1, 1],
"to": [16, 16, 16],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 0, 8]},
"faces": {
"north": {"uv": [0, 0, 1, 15], "texture": "#1"},
"east": {"uv": [0, 0, 15, 15], "texture": "#1"},
"south": {"uv": [0, 0, 1, 15], "texture": "#1"},
"west": {"uv": [0, 0, 15, 15], "texture": "#1"},
"up": {"uv": [0, 0, 15, 1], "rotation": 90, "texture": "#1"},
"down": {"uv": [0, 0, 15, 1], "rotation": 270, "texture": "#1"}
}
},
{
"from": [0, 0, 0],
"to": [16, 1, 16],
"faces": {
"north": {"uv": [0, 0, 16, 1], "texture": "#0"},
"east": {"uv": [0, 0, 16, 1], "texture": "#0"},
"south": {"uv": [0, 0, 16, 1], "texture": "#0"},
"west": {"uv": [0, 0, 16, 1], "texture": "#0"},
"up": {"uv": [0, 0, 16, 16], "texture": "#0"},
"down": {"uv": [0, 0, 16, 16], "texture": "#0"}
}
}
]
}

View File

@@ -1,297 +0,0 @@
{
"format_version": "1.21.6",
"credit": "Made with Blockbench",
"textures": {
"0": "test",
"1": "test2",
"2": "Downloads/pasted",
"particle": "test"
},
"elements": [
{
"from": [0, 0, 0],
"to": [16, 16, 16],
"faces": {
"north": {"uv": [0, 0, 16, 16], "texture": "#1"},
"east": {"uv": [0, 0, 16, 16], "texture": "#1"},
"south": {"uv": [0, 0, 16, 16], "texture": "#1"},
"west": {"uv": [0, 0, 16, 4], "texture": "#0"},
"up": {"uv": [0, 0, 16, 16], "rotation": 270, "texture": "#1"},
"down": {"uv": [0, 0, 16, 16], "rotation": 270, "texture": "#1"}
}
},
{
"from": [0, -16, 16],
"to": [16, 0, 32],
"rotation": {"angle": 0, "axis": "y", "origin": [0, -16, 16]},
"faces": {
"north": {"uv": [0, 0, 16, 16], "texture": "#1"},
"east": {"uv": [0, 0, 16, 16], "texture": "#1"},
"south": {"uv": [0, 0, 16, 16], "texture": "#1"},
"west": {"uv": [0, 0, 16, 16], "texture": "#2"},
"up": {"uv": [0, 0, 16, 16], "rotation": 270, "texture": "#1"},
"down": {"uv": [0, 0, 16, 16], "rotation": 270, "texture": "#1"}
}
},
{
"from": [0, -16, 0],
"to": [16, 0, 16],
"rotation": {"angle": 0, "axis": "y", "origin": [0, -16, 0]},
"faces": {
"north": {"uv": [0, 0, 16, 16], "texture": "#1"},
"east": {"uv": [0, 0, 16, 16], "texture": "#1"},
"south": {"uv": [0, 0, 16, 16], "texture": "#1"},
"west": {"uv": [0, 0, 16, 16], "texture": "#2"},
"up": {"uv": [0, 0, 16, 16], "rotation": 270, "texture": "#1"},
"down": {"uv": [0, 0, 16, 16], "rotation": 270, "texture": "#1"}
}
},
{
"from": [0, 16, 16],
"to": [16, 32, 32],
"rotation": {"angle": 0, "axis": "y", "origin": [0, 16, 16]},
"faces": {
"north": {"uv": [0, 0, 16, 16], "texture": "#1"},
"east": {"uv": [0, 0, 16, 16], "texture": "#1"},
"south": {"uv": [0, 0, 16, 16], "texture": "#1"},
"west": {"uv": [0, 0, 16, 16], "texture": "#1"},
"up": {"uv": [0, 0, 16, 16], "rotation": 270, "texture": "#1"},
"down": {"uv": [0, 0, 16, 16], "rotation": 270, "texture": "#1"}
}
},
{
"from": [0, 16, 0],
"to": [16, 32, 16],
"rotation": {"angle": 0, "axis": "y", "origin": [0, 16, 0]},
"faces": {
"north": {"uv": [0, 0, 16, 16], "texture": "#1"},
"east": {"uv": [0, 0, 16, 16], "texture": "#1"},
"south": {"uv": [0, 0, 16, 16], "texture": "#1"},
"west": {"uv": [0, 0, 16, 16], "texture": "#1"},
"up": {"uv": [0, 0, 16, 16], "rotation": 270, "texture": "#1"},
"down": {"uv": [0, 0, 16, 16], "rotation": 270, "texture": "#1"}
}
},
{
"from": [-4, 12, 0],
"to": [0, 16, 16],
"rotation": {"angle": 0, "axis": "y", "origin": [-16, 12, 0]},
"faces": {
"north": {"uv": [0, 0, 4, 4], "texture": "#0"},
"east": {"uv": [0, 0, 16, 4], "texture": "#0"},
"south": {"uv": [0, 0, 4, 4], "texture": "#0"},
"west": {"uv": [0, 0, 16, 4], "texture": "#0"},
"up": {"uv": [16, 12, 0, 16], "rotation": 270, "texture": "#1"},
"down": {"uv": [0, 0, 4, 16], "texture": "#0"}
}
},
{
"from": [-4, 0, 16],
"to": [0, 4, 32],
"rotation": {"angle": 0, "axis": "y", "origin": [-16, 0, 16]},
"faces": {
"north": {"uv": [0, 0, 4, 4], "texture": "#0"},
"east": {"uv": [0, 0, 16, 4], "texture": "#0"},
"south": {"uv": [0, 0, 4, 4], "texture": "#0"},
"west": {"uv": [0, 0, 16, 4], "texture": "#0"},
"up": {"uv": [0, 0, 16, 4], "rotation": 270, "texture": "#1"},
"down": {"uv": [0, 0, 16, 16], "texture": "#0"}
}
},
{
"from": [-2, 4, 25],
"to": [2, 12, 29],
"rotation": {"angle": -45, "axis": "y", "origin": [-3, 4, 28]},
"faces": {
"north": {"uv": [0, 4, 5, 12], "texture": "#0"},
"east": {"uv": [0, 4, 5, 12], "texture": "#0"},
"south": {"uv": [0, 4, 5, 12], "texture": "#0"},
"west": {"uv": [0, 4, 5, 12], "texture": "#0"},
"up": {"uv": [0, 0, 4, 4], "texture": "#0"},
"down": {"uv": [0, 0, 4, 4], "texture": "#0"}
}
},
{
"from": [-2, 4, 19.5],
"to": [2, 12, 23.5],
"rotation": {"angle": -45, "axis": "y", "origin": [-3, 4, 22.5]},
"faces": {
"north": {"uv": [0, 4, 5, 12], "texture": "#0"},
"east": {"uv": [0, 4, 5, 12], "texture": "#0"},
"south": {"uv": [0, 4, 5, 12], "texture": "#0"},
"west": {"uv": [0, 4, 5, 12], "texture": "#0"},
"up": {"uv": [0, 0, 4, 4], "texture": "#0"},
"down": {"uv": [0, 0, 4, 4], "texture": "#0"}
}
},
{
"from": [-2, 4, 14],
"to": [2, 12, 18],
"rotation": {"angle": -45, "axis": "y", "origin": [-3, 4, 17]},
"faces": {
"north": {"uv": [0, 4, 5, 12], "texture": "#0"},
"east": {"uv": [0, 4, 5, 12], "texture": "#0"},
"south": {"uv": [0, 4, 5, 12], "texture": "#0"},
"west": {"uv": [0, 4, 5, 12], "texture": "#0"},
"up": {"uv": [0, 0, 4, 4], "texture": "#0"},
"down": {"uv": [0, 0, 4, 4], "texture": "#0"}
}
},
{
"from": [0, 0, 16],
"to": [16, 16, 32],
"rotation": {"angle": 0, "axis": "y", "origin": [0, 0, 16]},
"faces": {
"north": {"uv": [0, 0, 16, 16], "texture": "#1"},
"east": {"uv": [0, 0, 16, 16], "texture": "#1"},
"south": {"uv": [0, 0, 16, 16], "texture": "#1"},
"west": {"uv": [0, 0, 16, 4], "texture": "#0"},
"up": {"uv": [0, 0, 16, 16], "rotation": 270, "texture": "#1"},
"down": {"uv": [0, 0, 16, 16], "rotation": 270, "texture": "#1"}
}
},
{
"from": [-4, 12, 16],
"to": [0, 16, 32],
"rotation": {"angle": 0, "axis": "y", "origin": [-16, 12, 16]},
"faces": {
"north": {"uv": [0, 0, 4, 4], "texture": "#0"},
"east": {"uv": [0, 0, 16, 4], "texture": "#0"},
"south": {"uv": [0, 0, 4, 4], "texture": "#0"},
"west": {"uv": [0, 0, 16, 4], "texture": "#0"},
"up": {"uv": [16, 12, 0, 16], "rotation": 270, "texture": "#1"},
"down": {"uv": [0, 0, 4, 16], "texture": "#0"}
}
},
{
"from": [-4, 0, 16],
"to": [0, 4, 32],
"rotation": {"angle": 0, "axis": "y", "origin": [-16, 0, 16]},
"faces": {
"north": {"uv": [0, 0, 4, 4], "texture": "#0"},
"east": {"uv": [0, 0, 16, 4], "texture": "#0"},
"south": {"uv": [0, 0, 4, 4], "texture": "#0"},
"west": {"uv": [0, 0, 16, 4], "texture": "#0"},
"up": {"uv": [0, 0, 16, 4], "rotation": 270, "texture": "#1"},
"down": {"uv": [0, 0, 16, 16], "texture": "#0"}
}
},
{
"from": [-2, 4, 25],
"to": [2, 12, 29],
"rotation": {"angle": -45, "axis": "y", "origin": [-3, 4, 28]},
"faces": {
"north": {"uv": [0, 4, 5, 12], "texture": "#0"},
"east": {"uv": [0, 4, 5, 12], "texture": "#0"},
"south": {"uv": [0, 4, 5, 12], "texture": "#0"},
"west": {"uv": [0, 4, 5, 12], "texture": "#0"},
"up": {"uv": [0, 0, 4, 4], "texture": "#0"},
"down": {"uv": [0, 0, 4, 4], "texture": "#0"}
}
},
{
"from": [-2, 4, 19.5],
"to": [2, 12, 23.5],
"rotation": {"angle": -45, "axis": "y", "origin": [-3, 4, 22.5]},
"faces": {
"north": {"uv": [0, 4, 5, 12], "texture": "#0"},
"east": {"uv": [0, 4, 5, 12], "texture": "#0"},
"south": {"uv": [0, 4, 5, 12], "texture": "#0"},
"west": {"uv": [0, 4, 5, 12], "texture": "#0"},
"up": {"uv": [0, 0, 4, 4], "texture": "#0"},
"down": {"uv": [0, 0, 4, 4], "texture": "#0"}
}
},
{
"from": [-2, 4, 14],
"to": [2, 12, 18],
"rotation": {"angle": -45, "axis": "y", "origin": [-3, 4, 17]},
"faces": {
"north": {"uv": [0, 4, 5, 12], "texture": "#0"},
"east": {"uv": [0, 4, 5, 12], "texture": "#0"},
"south": {"uv": [0, 4, 5, 12], "texture": "#0"},
"west": {"uv": [0, 4, 5, 12], "texture": "#0"},
"up": {"uv": [0, 0, 4, 4], "texture": "#0"},
"down": {"uv": [0, 0, 4, 4], "texture": "#0"}
}
},
{
"from": [0, 0, 16],
"to": [16, 16, 32],
"rotation": {"angle": 0, "axis": "y", "origin": [0, 0, 16]},
"faces": {
"north": {"uv": [0, 0, 16, 16], "texture": "#1"},
"east": {"uv": [0, 0, 16, 16], "texture": "#1"},
"south": {"uv": [0, 0, 16, 16], "texture": "#1"},
"west": {"uv": [0, 0, 16, 4], "texture": "#0"},
"up": {"uv": [0, 0, 16, 16], "rotation": 270, "texture": "#1"},
"down": {"uv": [0, 0, 16, 16], "rotation": 270, "texture": "#1"}
}
},
{
"from": [-4, 12, 16],
"to": [0, 16, 32],
"rotation": {"angle": 0, "axis": "y", "origin": [-16, 12, 16]},
"faces": {
"north": {"uv": [0, 0, 4, 4], "texture": "#0"},
"east": {"uv": [0, 0, 16, 4], "texture": "#0"},
"south": {"uv": [0, 0, 4, 4], "texture": "#0"},
"west": {"uv": [0, 0, 16, 4], "texture": "#0"},
"up": {"uv": [16, 12, 0, 16], "rotation": 270, "texture": "#1"},
"down": {"uv": [0, 0, 4, 16], "texture": "#0"}
}
},
{
"from": [-4, 0, 0],
"to": [0, 4, 16],
"rotation": {"angle": 0, "axis": "y", "origin": [-16, 0, 0]},
"faces": {
"north": {"uv": [0, 0, 4, 4], "texture": "#0"},
"east": {"uv": [0, 0, 16, 4], "texture": "#0"},
"south": {"uv": [0, 0, 4, 4], "texture": "#0"},
"west": {"uv": [0, 0, 16, 4], "texture": "#0"},
"up": {"uv": [0, 0, 16, 4], "rotation": 270, "texture": "#1"},
"down": {"uv": [0, 0, 16, 16], "texture": "#0"}
}
},
{
"from": [-2, 4, -2],
"to": [2, 12, 2],
"rotation": {"angle": -45, "axis": "y", "origin": [-3, 4, 1]},
"faces": {
"north": {"uv": [0, 4, 5, 12], "texture": "#0"},
"east": {"uv": [0, 4, 5, 12], "texture": "#0"},
"south": {"uv": [0, 4, 5, 12], "texture": "#0"},
"west": {"uv": [0, 4, 5, 12], "texture": "#0"},
"up": {"uv": [0, 0, 4, 4], "texture": "#0"},
"down": {"uv": [0, 0, 4, 4], "texture": "#0"}
}
},
{
"from": [-2, 4, 3.5],
"to": [2, 12, 7.5],
"rotation": {"angle": -45, "axis": "y", "origin": [-3, 4, 6.5]},
"faces": {
"north": {"uv": [0, 4, 5, 12], "texture": "#0"},
"east": {"uv": [0, 4, 5, 12], "texture": "#0"},
"south": {"uv": [0, 4, 5, 12], "texture": "#0"},
"west": {"uv": [0, 4, 5, 12], "texture": "#0"},
"up": {"uv": [0, 0, 4, 4], "texture": "#0"},
"down": {"uv": [0, 0, 4, 4], "texture": "#0"}
}
},
{
"from": [-2, 4, 9],
"to": [2, 12, 13],
"rotation": {"angle": -45, "axis": "y", "origin": [-3, 4, 12]},
"faces": {
"north": {"uv": [0, 4, 5, 12], "texture": "#0"},
"east": {"uv": [0, 4, 5, 12], "texture": "#0"},
"south": {"uv": [0, 4, 5, 12], "texture": "#0"},
"west": {"uv": [0, 4, 5, 12], "texture": "#0"},
"up": {"uv": [0, 0, 4, 4], "texture": "#0"},
"down": {"uv": [0, 0, 4, 4], "texture": "#0"}
}
}
]
}

View File

@@ -1,162 +0,0 @@
{
"credit": "Made with Blockbench",
"parent": "block/block",
"texture_size": [32, 32],
"textures": {
"2": "tfmg:block/plastic_pump"
},
"elements": [
{
"from": [6.5, -1, 3],
"to": [9.5, 17, 13],
"forge_data": {"calculate_normals": true},
"rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 8]},
"faces": {
"north": {"uv": [0, 6.5, 9, 8], "rotation": 90, "texture": "#2"},
"east": {"uv": [0, 9, 9, 14], "rotation": 270, "texture": "#2"},
"south": {"uv": [0, 6.5, 9, 8], "rotation": 90, "texture": "#2"},
"west": {"uv": [0, 9, 9, 14], "rotation": 90, "texture": "#2"},
"up": {"uv": [10, 6.5, 15, 8], "rotation": 90, "texture": "#2"},
"down": {"uv": [10, 6.5, 15, 8], "rotation": 90, "texture": "#2"}
}
},
{
"from": [-1, 6.5, 3],
"to": [17, 9.5, 13],
"forge_data": {"calculate_normals": true},
"rotation": {"angle": 0, "axis": "z", "origin": [8, 8, 8]},
"faces": {
"north": {"uv": [0, 6.5, 9, 8], "rotation": 180, "texture": "#2"},
"east": {"uv": [10, 6.5, 15, 8], "texture": "#2"},
"south": {"uv": [0, 6.5, 9, 8], "texture": "#2"},
"west": {"uv": [10, 6.5, 15, 8], "texture": "#2"},
"up": {"uv": [0, 9, 9, 14], "rotation": 180, "texture": "#2"},
"down": {"uv": [0, 9, 9, 14], "texture": "#2"}
}
},
{
"from": [6.5, -1, 3],
"to": [9.5, 17, 13],
"forge_data": {"calculate_normals": true},
"rotation": {"angle": 45, "axis": "z", "origin": [8, 8, 8]},
"faces": {
"north": {"uv": [0, 6.5, 9, 8], "rotation": 90, "texture": "#2"},
"east": {"uv": [0, 9, 9, 14], "rotation": 270, "texture": "#2"},
"south": {"uv": [0, 6.5, 9, 8], "rotation": 90, "texture": "#2"},
"west": {"uv": [0, 9, 9, 14], "rotation": 90, "texture": "#2"},
"up": {"uv": [10, 6.5, 15, 8], "rotation": 90, "texture": "#2"},
"down": {"uv": [10, 6.5, 15, 8], "rotation": 90, "texture": "#2"}
}
},
{
"from": [-1, 6.5, 3],
"to": [17, 9.5, 13],
"forge_data": {"calculate_normals": true},
"rotation": {"angle": 45, "axis": "z", "origin": [8, 8, 8]},
"faces": {
"north": {"uv": [0, 6.5, 9, 8], "rotation": 180, "texture": "#2"},
"east": {"uv": [10, 6.5, 15, 8], "texture": "#2"},
"south": {"uv": [0, 6.5, 9, 8], "texture": "#2"},
"west": {"uv": [10, 6.5, 15, 8], "texture": "#2"},
"up": {"uv": [0, 9, 9, 14], "rotation": 180, "texture": "#2"},
"down": {"uv": [0, 9, 9, 14], "texture": "#2"}
}
},
{
"from": [5.5, 0.9, 3.05],
"to": [10.5, 15.1, 12.95],
"forge_data": {"calculate_normals": true},
"rotation": {"angle": 22.5, "axis": "z", "origin": [8, 8, 8]},
"faces": {
"north": {"uv": [1, 7, 1.5, 7.5], "texture": "#2"},
"south": {"uv": [1, 7, 1.5, 7.5], "texture": "#2"},
"up": {"uv": [10, 9, 15, 11.5], "rotation": 90, "texture": "#2"},
"down": {"uv": [10, 9, 15, 11.5], "rotation": 90, "texture": "#2"}
}
},
{
"from": [0.9, 5.5, 3.05],
"to": [15.1, 10.5, 12.95],
"forge_data": {"calculate_normals": true},
"rotation": {"angle": -22.5, "axis": "z", "origin": [8, 8, 8]},
"faces": {
"north": {"uv": [1, 7, 1.5, 7.5], "rotation": 90, "texture": "#2"},
"east": {"uv": [10, 9, 15, 11.5], "texture": "#2"},
"south": {"uv": [1, 7, 1.5, 7.5], "rotation": 270, "texture": "#2"},
"west": {"uv": [10, 9, 15, 11.5], "texture": "#2"}
}
},
{
"from": [0.9, 5.5, 3.05],
"to": [15.1, 10.5, 12.95],
"forge_data": {"calculate_normals": true},
"rotation": {"angle": 22.5, "axis": "z", "origin": [8, 8, 8]},
"faces": {
"north": {"uv": [1, 7, 1.5, 7.5], "rotation": 90, "texture": "#2"},
"east": {"uv": [10, 9, 15, 11.5], "texture": "#2"},
"south": {"uv": [1, 7, 1.5, 7.5], "rotation": 270, "texture": "#2"},
"west": {"uv": [10, 9, 15, 11.5], "texture": "#2"}
}
},
{
"from": [5.5, 0.9, 3.05],
"to": [10.5, 15.1, 12.95],
"forge_data": {"calculate_normals": true},
"rotation": {"angle": -22.5, "axis": "z", "origin": [8, 8, 8]},
"faces": {
"north": {"uv": [1, 7, 1.5, 7.5], "texture": "#2"},
"south": {"uv": [1, 7, 1.5, 7.5], "texture": "#2"},
"up": {"uv": [10, 9, 15, 11.5], "rotation": 90, "texture": "#2"},
"down": {"uv": [10, 9, 15, 11.5], "rotation": 90, "texture": "#2"}
}
}
],
"display": {
"thirdperson_righthand": {
"rotation": [75, -149, 0],
"translation": [0, 2.5, 0],
"scale": [0.375, 0.375, 0.375]
},
"thirdperson_lefthand": {
"rotation": [75, -149, 0],
"translation": [0, 2.5, 0],
"scale": [0.375, 0.375, 0.375]
},
"firstperson_righthand": {
"rotation": [0, -55, 0],
"scale": [0.4, 0.4, 0.4]
},
"firstperson_lefthand": {
"rotation": [0, -55, 0],
"scale": [0.4, 0.4, 0.4]
},
"ground": {
"translation": [0, 1, 1.25],
"scale": [0.25, 0.25, 0.25]
},
"gui": {
"rotation": [30, 45, 0],
"translation": [2.5, -0.5, 0],
"scale": [0.625, 0.625, 0.625]
},
"fixed": {
"rotation": [0, 180, 0],
"translation": [0, 1.75, -4.5],
"scale": [0.5, 0.5, 0.5]
}
},
"groups": [
{
"name": "cogwheel",
"origin": [8, 8, 8],
"color": 0,
"children": [0, 1, 2, 3]
},
{
"name": "group",
"origin": [8, 8, 8],
"color": 0,
"children": [4, 5, 6, 7]
}
]
}

View File

@@ -1,162 +0,0 @@
{
"credit": "Made with Blockbench",
"parent": "block/block",
"texture_size": [32, 32],
"textures": {
"2": "tfmg:block/steel_pump"
},
"elements": [
{
"from": [6.5, -1, 3],
"to": [9.5, 17, 13],
"forge_data": {"calculate_normals": true},
"rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 8]},
"faces": {
"north": {"uv": [0, 6.5, 9, 8], "rotation": 90, "texture": "#2"},
"east": {"uv": [0, 9, 9, 14], "rotation": 270, "texture": "#2"},
"south": {"uv": [0, 6.5, 9, 8], "rotation": 90, "texture": "#2"},
"west": {"uv": [0, 9, 9, 14], "rotation": 90, "texture": "#2"},
"up": {"uv": [10, 6.5, 15, 8], "rotation": 90, "texture": "#2"},
"down": {"uv": [10, 6.5, 15, 8], "rotation": 90, "texture": "#2"}
}
},
{
"from": [-1, 6.5, 3],
"to": [17, 9.5, 13],
"forge_data": {"calculate_normals": true},
"rotation": {"angle": 0, "axis": "z", "origin": [8, 8, 8]},
"faces": {
"north": {"uv": [0, 6.5, 9, 8], "rotation": 180, "texture": "#2"},
"east": {"uv": [10, 6.5, 15, 8], "texture": "#2"},
"south": {"uv": [0, 6.5, 9, 8], "texture": "#2"},
"west": {"uv": [10, 6.5, 15, 8], "texture": "#2"},
"up": {"uv": [0, 9, 9, 14], "rotation": 180, "texture": "#2"},
"down": {"uv": [0, 9, 9, 14], "texture": "#2"}
}
},
{
"from": [6.5, -1, 3],
"to": [9.5, 17, 13],
"forge_data": {"calculate_normals": true},
"rotation": {"angle": 45, "axis": "z", "origin": [8, 8, 8]},
"faces": {
"north": {"uv": [0, 6.5, 9, 8], "rotation": 90, "texture": "#2"},
"east": {"uv": [0, 9, 9, 14], "rotation": 270, "texture": "#2"},
"south": {"uv": [0, 6.5, 9, 8], "rotation": 90, "texture": "#2"},
"west": {"uv": [0, 9, 9, 14], "rotation": 90, "texture": "#2"},
"up": {"uv": [10, 6.5, 15, 8], "rotation": 90, "texture": "#2"},
"down": {"uv": [10, 6.5, 15, 8], "rotation": 90, "texture": "#2"}
}
},
{
"from": [-1, 6.5, 3],
"to": [17, 9.5, 13],
"forge_data": {"calculate_normals": true},
"rotation": {"angle": 45, "axis": "z", "origin": [8, 8, 8]},
"faces": {
"north": {"uv": [0, 6.5, 9, 8], "rotation": 180, "texture": "#2"},
"east": {"uv": [10, 6.5, 15, 8], "texture": "#2"},
"south": {"uv": [0, 6.5, 9, 8], "texture": "#2"},
"west": {"uv": [10, 6.5, 15, 8], "texture": "#2"},
"up": {"uv": [0, 9, 9, 14], "rotation": 180, "texture": "#2"},
"down": {"uv": [0, 9, 9, 14], "texture": "#2"}
}
},
{
"from": [5.5, 0.9, 3.05],
"to": [10.5, 15.1, 12.95],
"forge_data": {"calculate_normals": true},
"rotation": {"angle": 22.5, "axis": "z", "origin": [8, 8, 8]},
"faces": {
"north": {"uv": [1, 7, 1.5, 7.5], "texture": "#2"},
"south": {"uv": [1, 7, 1.5, 7.5], "texture": "#2"},
"up": {"uv": [10, 9, 15, 11.5], "rotation": 90, "texture": "#2"},
"down": {"uv": [10, 9, 15, 11.5], "rotation": 90, "texture": "#2"}
}
},
{
"from": [0.9, 5.5, 3.05],
"to": [15.1, 10.5, 12.95],
"forge_data": {"calculate_normals": true},
"rotation": {"angle": -22.5, "axis": "z", "origin": [8, 8, 8]},
"faces": {
"north": {"uv": [1, 7, 1.5, 7.5], "rotation": 90, "texture": "#2"},
"east": {"uv": [10, 9, 15, 11.5], "texture": "#2"},
"south": {"uv": [1, 7, 1.5, 7.5], "rotation": 270, "texture": "#2"},
"west": {"uv": [10, 9, 15, 11.5], "texture": "#2"}
}
},
{
"from": [0.9, 5.5, 3.05],
"to": [15.1, 10.5, 12.95],
"forge_data": {"calculate_normals": true},
"rotation": {"angle": 22.5, "axis": "z", "origin": [8, 8, 8]},
"faces": {
"north": {"uv": [1, 7, 1.5, 7.5], "rotation": 90, "texture": "#2"},
"east": {"uv": [10, 9, 15, 11.5], "texture": "#2"},
"south": {"uv": [1, 7, 1.5, 7.5], "rotation": 270, "texture": "#2"},
"west": {"uv": [10, 9, 15, 11.5], "texture": "#2"}
}
},
{
"from": [5.5, 0.9, 3.05],
"to": [10.5, 15.1, 12.95],
"forge_data": {"calculate_normals": true},
"rotation": {"angle": -22.5, "axis": "z", "origin": [8, 8, 8]},
"faces": {
"north": {"uv": [1, 7, 1.5, 7.5], "texture": "#2"},
"south": {"uv": [1, 7, 1.5, 7.5], "texture": "#2"},
"up": {"uv": [10, 9, 15, 11.5], "rotation": 90, "texture": "#2"},
"down": {"uv": [10, 9, 15, 11.5], "rotation": 90, "texture": "#2"}
}
}
],
"display": {
"thirdperson_righthand": {
"rotation": [75, -149, 0],
"translation": [0, 2.5, 0],
"scale": [0.375, 0.375, 0.375]
},
"thirdperson_lefthand": {
"rotation": [75, -149, 0],
"translation": [0, 2.5, 0],
"scale": [0.375, 0.375, 0.375]
},
"firstperson_righthand": {
"rotation": [0, -55, 0],
"scale": [0.4, 0.4, 0.4]
},
"firstperson_lefthand": {
"rotation": [0, -55, 0],
"scale": [0.4, 0.4, 0.4]
},
"ground": {
"translation": [0, 1, 1.25],
"scale": [0.25, 0.25, 0.25]
},
"gui": {
"rotation": [30, 45, 0],
"translation": [2.5, -0.5, 0],
"scale": [0.625, 0.625, 0.625]
},
"fixed": {
"rotation": [0, 180, 0],
"translation": [0, 1.75, -4.5],
"scale": [0.5, 0.5, 0.5]
}
},
"groups": [
{
"name": "cogwheel",
"origin": [8, 8, 8],
"color": 0,
"children": [0, 1, 2, 3]
},
{
"name": "group",
"origin": [8, 8, 8],
"color": 0,
"children": [4, 5, 6, 7]
}
]
}

View File

@@ -1,46 +0,0 @@
{
"credit": "Made with Blockbench",
"parent": "minecraft:block/block",
"textures": {
"0": "tfmg:block/engines/turbine",
"particle": "block/anvil"
},
"elements": [
{
"from": [1, 4, 5],
"to": [15, 10, 16],
"faces": {
"north": {"uv": [2.125, 8.875, 3.875, 9.625], "texture": "#0"},
"east": {"uv": [1.5, 6.375, 2.875, 7.125], "texture": "#0"},
"south": {"uv": [2.125, 8.125, 3.875, 8.875], "texture": "#0"},
"west": {"uv": [1.125, 7.125, 2.5, 6.375], "rotation": 180, "texture": "#0"},
"up": {"uv": [8.5, 5.875, 9.725, 7.625], "rotation": 90, "texture": "#0"},
"down": {"uv": [0, 0, 14, 11], "texture": "#0"}
}
},
{
"from": [0, 0, 2],
"to": [16, 4, 16],
"faces": {
"north": {"uv": [0.25, 1, 2.25, 1.5], "texture": "#0"},
"east": {"uv": [4.5, 1, 2.75, 1.475], "texture": "#0"},
"south": {"uv": [5, 1, 7, 1.5], "texture": "#0"},
"west": {"uv": [2.75, 1, 4.5, 1.5], "texture": "#0"},
"up": {"uv": [5.75, 4.5, 7.75, 6.25], "texture": "#0"},
"down": {"uv": [5.125, 5.5, 7.125, 3.75], "texture": "#0"}
}
},
{
"from": [3, 4, 2],
"to": [13, 13, 16],
"faces": {
"north": {"uv": [0.625, 0, 1.875, 1.125], "texture": "#0"},
"east": {"uv": [0.5, 11, 1.625, 9.25], "rotation": 90, "texture": "#0"},
"south": {"uv": [5.375, 0, 6.625, 1.125], "texture": "#0"},
"west": {"uv": [0.5, 9.25, 1.625, 11], "rotation": 90, "texture": "#0"},
"up": {"uv": [0.625, 1.75, 1.875, 3.5], "texture": "#0"},
"down": {"uv": [0, 0, 10, 14], "texture": "#0"}
}
}
]
}

View File

@@ -1,22 +1,6 @@
{
"animation": {
"frames": [
16,
17,
18,
19,
20,
21,
22,
23,
24,
25,
26,
27,
28,
29,
30,
31,
0,
1,
2,
@@ -24,15 +8,7 @@
4,
5,
6,
7,
8,
9,
10,
11,
12,
13,
14,
15
7
]
}
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 528 B

After

Width:  |  Height:  |  Size: 530 B

View File

@@ -16,6 +16,9 @@
],
"result": {
"count": 1,
"id": "tfmg:aluminum_spool"
"id": "tfmg:aluminum_spool",
"components": {
"tfmg:spool_amount": 1000
}
}
}

View File

@@ -16,6 +16,9 @@
],
"result": {
"count": 1,
"id": "tfmg:constantan_spool"
"id": "tfmg:constantan_spool",
"components": {
"tfmg:spool_amount": 1000
}
}
}

View File

@@ -16,6 +16,9 @@
],
"result": {
"count": 1,
"id": "tfmg:copper_spool"
"id": "tfmg:copper_spool",
"components": {
"tfmg:spool_amount": 1000
}
}
}