From 00afd7b118842965123e624b22218e44ea239fb8 Mon Sep 17 00:00:00 2001 From: DrMangoTea Date: Thu, 11 Sep 2025 20:09:11 +0200 Subject: [PATCH] 1.1.0 update --- gradle.properties | 2 +- .../assets/tfmg/blockstates/gas_lamp.json | 10 + .../resources/assets/tfmg/lang/en_ud.json | 3 + .../resources/assets/tfmg/lang/en_us.json | 3 + .../tfmg/models/item/fire_extinguisher.json | 3 + .../assets/tfmg/models/item/gas_lamp.json | 3 + .../minecraft/tags/block/mineable/axe.json | 10 +- .../tags/block/mineable/pickaxe.json | 11 +- .../crafting/materials/fire_extinguisher.json | 32 ++ .../misc/crafting/materials/gas_lamp.json | 32 ++ .../blocks/copper_encased_aluminum_pipe.json | 21 - .../blocks/copper_encased_cast_iron_pipe.json | 21 - .../blocks/copper_encased_plastic_pipe.json | 21 - .../blocks/copper_encased_steel_pipe.json | 21 - ..._encased_brass_pipe.json => gas_lamp.json} | 4 +- .../crafting/materials/fire_extinguisher.json | 30 ++ .../recipe/crafting/materials/gas_lamp.json | 27 ++ .../filling/filled_fire_extinguisher.json | 21 + .../tfmg/base/TFMGCreativeTabs.java | 1 + .../com/drmangotea/tfmg/base/TFMGShapes.java | 3 +- .../com/drmangotea/tfmg/base/TFMGUtils.java | 13 + .../tfmg/base/events/TFMGClientEvents.java | 5 + .../drmangotea/tfmg/base/spark/BlueSpark.java | 8 +- .../tfmg/base/spark/DryIceFlake.java | 100 +++++ .../com/drmangotea/tfmg/base/spark/Spark.java | 5 + .../tfmg/base/spark/SparkRenderer.java | 11 +- .../drmangotea/tfmg/config/MachineConfig.java | 3 + .../electricity/base/ElectricBlockValues.java | 13 +- .../electricity/base/ElectricalNetwork.java | 17 +- .../content/electricity/base/IElectric.java | 18 +- .../electricity/base/UpdateInFrontPacket.java | 3 +- .../base/VoltageAlteringBlockEntity.java | 145 ++++++- .../cables/CableConnectorBlockEntity.java | 136 +++++-- .../lights/LightBulbBlockEntity.java | 2 +- .../diode/ElectricDiodeBlock.java | 12 +- .../diode/EncasedDiodeBlock.java | 11 +- .../electric_switch/ElectricSwitchBlock.java | 2 +- .../ElectricSwitchBlockEntity.java | 7 +- .../EncasedPotentiometerBlock.java | 2 +- .../potentiometer/PotentiometerBlock.java | 3 +- .../PotentiometerBlockEntity.java | 7 +- .../transformer/ElectromagneticCoilItem.java | 4 +- .../transformer/TransformerBlock.java | 43 +- .../transformer/TransformerBlockEntity.java | 110 ++++-- .../transformer/TransformerRenderer.java | 2 +- .../storage/AccumulatorBlockEntity.java | 4 +- .../converter/ConverterBlockEntity.java | 10 +- .../diode/ElectricDiodeBlockEntity.java | 163 -------- .../ElectricMotorBlockEntity.java | 2 +- .../engines/base/EngineCTBehavior.java | 10 +- .../types/AbstractSmallEngineBlockEntity.java | 114 +++--- .../FireExtinguisherItem.java | 117 ++++++ .../flamethrover/FlamethrowerItem.java | 1 + .../flarestack/FlarestackBlockEntity.java | 8 - .../machinery/misc/gas_lamp/GasLampBlock.java | 54 +++ .../misc/gas_lamp/GasLampBlockEntity.java | 116 ++++++ .../misc/gas_lamp/GasLampGenerator.java | 33 ++ .../misc/winding_machine/SpoolItem.java | 18 + .../recipes/values/TFMGStandardRecipeGen.java | 25 ++ .../values/create/TFMGFillingRecipeGen.java | 17 +- .../tfmg/registry/TFMGBlockEntities.java | 20 +- .../drmangotea/tfmg/registry/TFMGBlocks.java | 28 +- .../tfmg/registry/TFMGDataComponents.java | 1 + .../tfmg/registry/TFMGEntityTypes.java | 4 + .../drmangotea/tfmg/registry/TFMGItems.java | 8 +- .../tfmg/models/block/converter/block.json | 84 ++-- .../models/block/converter/block_rotated.json | 84 ++-- .../tfmg/models/block/converter/item.json | 87 ++-- .../models/block/engine_controller/item.json | 3 +- .../tfmg/models/block/gas_lamp/block.json | 161 ++++++++ .../tfmg/models/block/gas_lamp/block_lit.json | 188 +++++++++ .../tfmg/models/block/gas_lamp/item.json | 161 ++++++++ .../tfmg/models/block/gas_lamp/test.json | 297 ++++++++++++++ .../models/block/large_steel_cogwheel.json | 8 +- .../block/large_steel_cogwheel_shaftless.json | 69 ++-- .../block/large_transformer/transformer.json | 374 ++++++++++++++++++ .../tfmg/models/block/polarizer/block.json | 9 +- .../models/block/pumpjack/pumpjack_base.json | 1 + .../models/block/pumpjack_crank/item_.json | 166 -------- .../models/block/segmented_display/item.json | 1 + .../assets/tfmg/models/block/stator/item.json | 1 + .../tfmg/models/block/transformer/item.json | 3 +- .../models/item/fire_extinguisher/item.json | 115 ++++++ .../large_steel_cogwheel_shaftless.json | 0 .../tfmg/textures/block/accumulator.png | Bin 422 -> 581 bytes .../textures/block/aluminum_cable_hub.png | Bin 275 -> 522 bytes .../tfmg/textures/block/aluminum_inlet.png | Bin 260 -> 529 bytes .../assets/tfmg/textures/block/ammeter.png | Bin 602 -> 0 bytes .../tfmg/textures/block/bars/steel_bars.png | Bin 265 -> 480 bytes .../textures/block/bars/steel_bars_edge.png | Bin 206 -> 431 bytes .../block/blast_furnace_reinforcement.png | Bin 296 -> 501 bytes .../blast_furnace_reinforcement_connected.png | Bin 675 -> 659 bytes .../tfmg/textures/block/brass_cable_hub.png | Bin 302 -> 537 bytes .../tfmg/textures/block/brick_smokestack.png | Bin 1138 -> 825 bytes .../tfmg/textures/block/cable_connector.png | Bin 307 -> 579 bytes .../assets/tfmg/textures/block/cable_tube.png | Bin 297 -> 597 bytes .../assets/tfmg/textures/block/capacitor.png | Bin 358 -> 0 bytes .../block/circular_lamp_off_outlet.png | Bin 248 -> 496 bytes .../block/circular_lamp_on_outlet.png | Bin 242 -> 490 bytes .../tfmg/textures/block/coke_oven_slot.png | Bin 170 -> 0 bytes .../textures/block/concrete_encased_wire.png | Bin 738 -> 754 bytes .../textures/block/concrete_smokestack.png | Bin 1312 -> 1090 bytes .../assets/tfmg/textures/block/converter.png | Bin 1524 -> 720 bytes .../tfmg/textures/block/converter_side.png | Bin 267 -> 0 bytes .../tfmg/textures/block/converter_top.png | Bin 249 -> 0 bytes .../tfmg/textures/block/copper_cable_hub.png | Bin 507 -> 506 bytes .../tfmg/textures/block/copper_coil.png | Bin 187 -> 430 bytes .../tfmg/textures/block/copper_coil_arrow.png | Bin 332 -> 0 bytes .../tfmg/textures/block/copper_coil_top.png | Bin 246 -> 474 bytes .../tfmg/textures/block/debug_conductor.png | Bin 256 -> 0 bytes .../textures/block/debug_electric_block.png | Bin 259 -> 0 bytes .../textures/block/debug_generator_block.png | Bin 263 -> 0 bytes .../textures/block/diagonal_cable_block.png | Bin 321 -> 627 bytes .../tfmg/textures/block/diesel_engine.png | Bin 973 -> 0 bytes .../textures/block/diesel_engine_back.png | Bin 237 -> 486 bytes .../block/diesel_engine_expansion.png | Bin 251 -> 0 bytes .../textures/block/diesel_engine_side.png | Bin 555 -> 552 bytes .../tfmg/textures/block/digital_display.png | Bin 506 -> 540 bytes .../assets/tfmg/textures/block/diode.png | Bin 805 -> 875 bytes .../block/distillation_controller.png | Bin 357 -> 455 bytes .../block/distillation_controller_front.png | Bin 515 -> 550 bytes .../block/distillation_controller_top.png | Bin 359 -> 457 bytes .../block/distillation_tower_output.png | Bin 506 -> 502 bytes .../tfmg/textures/block/electric_diode.png | Bin 404 -> 0 bytes .../textures/block/electric_mixer_input.png | Bin 269 -> 0 bytes .../tfmg/textures/block/electric_motor.png | Bin 849 -> 1164 bytes .../tfmg/textures/block/electric_post.png | Bin 468 -> 550 bytes .../tfmg/textures/block/electric_pump.png | Bin 551 -> 545 bytes .../textures/block/electrode_holder_slot.png | Bin 288 -> 514 bytes .../tfmg/textures/block/encased_coil.png | Bin 244 -> 0 bytes .../textures/block/encased_diode_back.png | Bin 288 -> 527 bytes .../textures/block/encased_diode_front.png | Bin 280 -> 504 bytes .../tfmg/textures/block/encased_resistor.png | Bin 311 -> 533 bytes .../textures/block/encased_steel_pipe.png | Bin 255 -> 483 bytes .../block/encased_steel_pipe_side.png | Bin 314 -> 536 bytes .../encased_steel_pipe_side_connected.png | Bin 3532 -> 2215 bytes .../assets/tfmg/textures/block/engine.png | Bin 193 -> 0 bytes .../tfmg/textures/block/engine_controller.png | Bin 697 -> 736 bytes .../tfmg/textures/block/engine_generator.png | Bin 478 -> 479 bytes .../textures/block/engines/engine_back.png | Bin 570 -> 469 bytes .../textures/block/engines/engine_bottom.png | Bin 553 -> 429 bytes .../block/engines/engine_bottom_connected.png | Bin 865 -> 504 bytes .../block/engines/engine_controller_parts.png | Bin 699 -> 678 bytes .../textures/block/engines/engine_front.png | Bin 720 -> 503 bytes .../block/engines/engine_front_tall.png | Bin 736 -> 504 bytes .../textures/block/engines/engine_gearbox.png | Bin 675 -> 483 bytes .../block/engines/engine_gearbox_front.png | Bin 514 -> 470 bytes .../textures/block/engines/engine_side.png | Bin 623 -> 492 bytes .../block/engines/engine_side_connected.png | Bin 853 -> 618 bytes .../block/engines/engine_side_tall.png | Bin 618 -> 487 bytes .../engines/engine_side_tall_connected.png | Bin 849 -> 612 bytes .../textures/block/engines/engine_top.png | Bin 552 -> 453 bytes .../block/engines/engine_top_connected.png | Bin 590 -> 540 bytes .../textures/block/engines/turbine_engine.png | Bin 1448 -> 1312 bytes .../textures/block/epic_party_light_bulb.png | Bin 352 -> 523 bytes .../assets/tfmg/textures/block/exhaust.png | Bin 385 -> 586 bytes .../assets/tfmg/textures/block/firebox.png | Bin 292 -> 536 bytes .../tfmg/textures/block/firebox_lit.png | Bin 501 -> 649 bytes .../tfmg/textures/block/firebox_top.png | Bin 284 -> 519 bytes .../textures/block/firebox_top_connected.png | Bin 1324 -> 949 bytes .../tfmg/textures/block/firebrick_vat.png | Bin 513 -> 524 bytes .../block/firebrick_vat_connected.png | Bin 2594 -> 998 bytes .../assets/tfmg/textures/block/flarestack.png | Bin 451 -> 719 bytes .../tfmg/textures/block/formwork_bottom.png | Bin 265 -> 0 bytes .../tfmg/textures/block/formwork_side.png | Bin 268 -> 0 bytes .../assets/tfmg/textures/block/fuse_block.png | Bin 512 -> 0 bytes .../assets/tfmg/textures/block/gas_lamp.png | Bin 0 -> 1926 bytes .../tfmg/textures/block/gas_lamp_fire.png | Bin 0 -> 473 bytes .../textures/block/gas_lamp_fire.png.mcmeta | 38 ++ .../assets/tfmg/textures/block/gauge.png | Bin 445 -> 726 bytes .../assets/tfmg/textures/block/generator.png | Bin 821 -> 917 bytes .../tfmg/textures/block/glass_insulator.png | Bin 765 -> 822 bytes .../tfmg/textures/block/glass_lead_pipe.png | Bin 275 -> 0 bytes .../tfmg/textures/block/heavy_cable_hub.png | Bin 309 -> 507 bytes .../block/heavy_casing_door_bottom.png | Bin 265 -> 510 bytes .../tfmg/textures/block/heavy_casing_side.png | Bin 200 -> 418 bytes .../tfmg/textures/block/heavy_casing_top.png | Bin 297 -> 517 bytes .../heavy_machinery_encased_cogwheel_side.png | Bin 254 -> 502 bytes ...hinery_encased_cogwheel_side_connected.png | Bin 367 -> 544 bytes ...inery_encased_cogwheel_side_horizontal.png | Bin 254 -> 502 bytes ...sed_cogwheel_side_horizontal_connected.png | Bin 302 -> 563 bytes ..._machinery_encased_cogwheel_side_large.png | Bin 255 -> 503 bytes .../block/heavy_plated_door_bottom.png | Bin 253 -> 494 bytes .../textures/block/heavy_plated_door_side.png | Bin 194 -> 426 bytes .../textures/block/heavy_plated_door_top.png | Bin 247 -> 488 bytes .../block/industrial_aluminum_casing.png | Bin 284 -> 513 bytes .../industrial_aluminum_casing_connected.png | Bin 2080 -> 2133 bytes .../tfmg/textures/block/industrial_pipe.png | Bin 634 -> 574 bytes .../tfmg/textures/block/ladder_steel.png | Bin 248 -> 445 bytes .../tfmg/textures/block/ladder_steel_hoop.png | Bin 243 -> 497 bytes .../tfmg/textures/block/large_generator.png | Bin 1449 -> 0 bytes .../textures/block/large_radial_engine.png | Bin 1146 -> 1241 bytes .../tfmg/textures/block/large_transformer.png | Bin 0 -> 966 bytes .../assets/tfmg/textures/block/light_bulb.png | Bin 352 -> 530 bytes .../tfmg/textures/block/metal_smokestack.png | Bin 380 -> 737 bytes .../tfmg/textures/block/modern_light_off.png | Bin 506 -> 504 bytes .../tfmg/textures/block/modern_light_on.png | Bin 467 -> 465 bytes .../textures/block/plastic_smart_pipe_2.png | Bin 466 -> 543 bytes .../assets/tfmg/textures/block/polarizer.png | Bin 1471 -> 1888 bytes .../tfmg/textures/block/polarizer_back.png | Bin 774 -> 572 bytes .../tfmg/textures/block/polarizer_front.png | Bin 829 -> 583 bytes .../tfmg/textures/block/polarizer_top.png | Bin 590 -> 608 bytes .../tfmg/textures/block/pumpjack_base.png | Bin 496 -> 713 bytes .../tfmg/textures/block/pumpjack_crank.png | Bin 725 -> 779 bytes .../tfmg/textures/block/regular_insulator.png | Bin 473 -> 472 bytes .../tfmg/textures/block/relay_inlet.png | Bin 537 -> 0 bytes .../assets/tfmg/textures/block/resistor.png | Bin 564 -> 857 bytes .../tfmg/textures/block/rgb_light_bulb.png | Bin 352 -> 570 bytes .../assets/tfmg/textures/block/rotor.png | Bin 790 -> 817 bytes .../block/scaffold/steel_scaffold.png | Bin 400 -> 494 bytes .../scaffold/steel_scaffold_connected.png | Bin 508 -> 565 bytes .../tfmg/textures/block/servo_motor.png | Bin 563 -> 0 bytes .../textures/block/simple_large_engine.png | Bin 806 -> 817 bytes .../tfmg/textures/block/smokestack_top.png | Bin 313 -> 622 bytes .../assets/tfmg/textures/block/stator.png | Bin 751 -> 1395 bytes .../tfmg/textures/block/steel_cable_hub.png | Bin 282 -> 511 bytes .../textures/block/steel_casing_cable_hub.png | Bin 547 -> 553 bytes .../tfmg/textures/block/steel_casing_slab.png | Bin 586 -> 507 bytes .../tfmg/textures/block/steel_coghweel.png | Bin 605 -> 605 bytes .../tfmg/textures/block/steel_door_bottom.png | Bin 422 -> 515 bytes .../tfmg/textures/block/steel_door_side.png | Bin 199 -> 418 bytes .../tfmg/textures/block/steel_door_top.png | Bin 459 -> 502 bytes .../block/steel_encased_cogwheel_side.png | Bin 472 -> 530 bytes .../steel_encased_cogwheel_side_connected.png | Bin 767 -> 675 bytes ...steel_encased_cogwheel_side_horizontal.png | Bin 472 -> 530 bytes ...sed_cogwheel_side_horizontal_connected.png | Bin 883 -> 682 bytes .../steel_encased_cogwheel_side_large.png | Bin 380 -> 499 bytes .../tfmg/textures/block/steel_fluid_tank.png | Bin 464 -> 453 bytes .../block/steel_fluid_tank_connected.png | Bin 1647 -> 838 bytes .../textures/block/steel_fluid_tank_inner.png | Bin 434 -> 476 bytes .../steel_fluid_tank_inner_connected.png | Bin 1388 -> 763 bytes .../textures/block/steel_fluid_tank_top.png | Bin 456 -> 488 bytes .../block/steel_fluid_tank_top_connected.png | Bin 1761 -> 905 bytes .../block/steel_fluid_tank_window.png | Bin 321 -> 427 bytes .../block/steel_fluid_tank_window_single.png | Bin 193 -> 425 bytes .../tfmg/textures/block/steel_fluid_valve.png | Bin 812 -> 668 bytes .../tfmg/textures/block/steel_flywheel.png | Bin 821 -> 1809 bytes .../tfmg/textures/block/steel_frame.png | Bin 311 -> 453 bytes .../tfmg/textures/block/steel_frame_2.png | Bin 492 -> 513 bytes .../tfmg/textures/block/steel_gauge.png | Bin 627 -> 856 bytes .../tfmg/textures/block/steel_gearbox.png | Bin 588 -> 562 bytes .../textures/block/steel_glass_fluid_pipe.png | Bin 327 -> 485 bytes .../tfmg/textures/block/steel_pipes.png | Bin 864 -> 716 bytes .../textures/block/steel_pipes_connected.png | Bin 731 -> 660 bytes .../assets/tfmg/textures/block/steel_pump.png | Bin 793 -> 759 bytes .../textures/block/steel_smart_pipe_1.png | Bin 293 -> 536 bytes .../textures/block/steel_structural_block.png | Bin 492 -> 513 bytes .../tfmg/textures/block/steel_trapdoor.png | Bin 352 -> 463 bytes .../tfmg/textures/block/steel_truss.png | Bin 469 -> 504 bytes .../assets/tfmg/textures/block/steel_vat.png | Bin 268 -> 453 bytes .../textures/block/steel_vat_connected.png | Bin 1783 -> 826 bytes .../tfmg/textures/block/steel_vat_top.png | Bin 383 -> 492 bytes .../block/steel_vat_top_connected.png | Bin 1619 -> 1053 bytes .../tfmg/textures/block/surface_scanner.png | Bin 651 -> 0 bytes .../block/surface_scanner_electron_tube.png | Bin 485 -> 705 bytes .../tfmg/textures/block/switch_inlet.png | Bin 541 -> 548 bytes .../tfmg/textures/block/traffic_light.png | Bin 1060 -> 1456 bytes .../tfmg/textures/block/transformer.png | Bin 1169 -> 890 bytes .../textures/block/unfinished_generator.png | Bin 545 -> 797 bytes .../block/unfinished_potentiometer.png | Bin 555 -> 745 bytes .../assets/tfmg/textures/block/voltmeter.png | Bin 770 -> 847 bytes .../tfmg/textures/block/winding_machine.png | Bin 1311 -> 889 bytes .../tfmg/textures/entity/dry_ice_flake.png | Bin 0 -> 387 bytes .../textures/item/advanced_potato_cannon.png | Bin 1024 -> 1145 bytes .../tfmg/textures/item/blasting_mixture.png | Bin 257 -> 0 bytes .../assets/tfmg/textures/item/block_mold.png | Bin 257 -> 0 bytes .../assets/tfmg/textures/item/cement.png | Bin 202 -> 0 bytes .../tfmg/textures/item/copper_cable.png | Bin 242 -> 0 bytes .../textures/item/electromagnetic_coil.png | Bin 277 -> 540 bytes .../tfmg/textures/item/fire_extinguisher.png | Bin 0 -> 832 bytes .../tfmg/textures/item/heavy_casing_door.png | Bin 257 -> 487 bytes .../assets/tfmg/textures/item/heavy_plate.png | Bin 246 -> 480 bytes .../tfmg/textures/item/heavy_plated_door.png | Bin 246 -> 474 bytes .../assets/tfmg/textures/item/ingot_mold.png | Bin 255 -> 0 bytes .../assets/tfmg/textures/item/mixer_blade.png | Bin 217 -> 512 bytes .../assets/tfmg/textures/item/screw.png | Bin 486 -> 539 bytes .../assets/tfmg/textures/item/screwdriver.png | Bin 293 -> 491 bytes .../assets/tfmg/textures/item/steel_axe.png | Bin 497 -> 497 bytes .../assets/tfmg/textures/item/steel_boots.png | Bin 241 -> 472 bytes .../tfmg/textures/item/steel_chestplate.png | Bin 274 -> 501 bytes .../assets/tfmg/textures/item/steel_door.png | Bin 320 -> 550 bytes .../tfmg/textures/item/steel_helmet.png | Bin 235 -> 464 bytes .../assets/tfmg/textures/item/steel_hoe.png | Bin 487 -> 486 bytes .../assets/tfmg/textures/item/steel_ingot.png | Bin 263 -> 490 bytes .../tfmg/textures/item/steel_leggings.png | Bin 242 -> 474 bytes .../tfmg/textures/item/steel_mechanism.png | Bin 282 -> 554 bytes .../tfmg/textures/item/steel_nugget.png | Bin 184 -> 477 bytes .../tfmg/textures/item/steel_pickaxe.png | Bin 496 -> 496 bytes .../tfmg/textures/item/steel_shovel.png | Bin 483 -> 483 bytes .../assets/tfmg/textures/item/steel_sword.png | Bin 507 -> 507 bytes .../item/unfinished_electromagnetic_coil.png | Bin 498 -> 504 bytes .../item/unfinished_steel_mechanism.png | Bin 225 -> 513 bytes .../textures/item/unprocessed_heavy_plate.png | Bin 257 -> 490 bytes .../textures/models/armor/steel_layer_1.png | Bin 676 -> 809 bytes .../textures/models/armor/steel_layer_2.png | Bin 329 -> 574 bytes 295 files changed, 2704 insertions(+), 860 deletions(-) create mode 100644 src/generated/resources/assets/tfmg/blockstates/gas_lamp.json create mode 100644 src/generated/resources/assets/tfmg/models/item/fire_extinguisher.json create mode 100644 src/generated/resources/assets/tfmg/models/item/gas_lamp.json create mode 100644 src/generated/resources/data/tfmg/advancement/recipes/misc/crafting/materials/fire_extinguisher.json create mode 100644 src/generated/resources/data/tfmg/advancement/recipes/misc/crafting/materials/gas_lamp.json delete mode 100644 src/generated/resources/data/tfmg/loot_table/blocks/copper_encased_aluminum_pipe.json delete mode 100644 src/generated/resources/data/tfmg/loot_table/blocks/copper_encased_cast_iron_pipe.json delete mode 100644 src/generated/resources/data/tfmg/loot_table/blocks/copper_encased_plastic_pipe.json delete mode 100644 src/generated/resources/data/tfmg/loot_table/blocks/copper_encased_steel_pipe.json rename src/generated/resources/data/tfmg/loot_table/blocks/{copper_encased_brass_pipe.json => gas_lamp.json} (75%) create mode 100644 src/generated/resources/data/tfmg/recipe/crafting/materials/fire_extinguisher.json create mode 100644 src/generated/resources/data/tfmg/recipe/crafting/materials/gas_lamp.json create mode 100644 src/generated/resources/data/tfmg/recipe/filling/filled_fire_extinguisher.json create mode 100644 src/main/java/com/drmangotea/tfmg/base/spark/DryIceFlake.java rename src/main/java/com/drmangotea/tfmg/content/electricity/{utilities => network}/diode/ElectricDiodeBlock.java (85%) rename src/main/java/com/drmangotea/tfmg/content/electricity/{utilities => network}/diode/EncasedDiodeBlock.java (86%) rename src/main/java/com/drmangotea/tfmg/content/electricity/{utilities => network}/electric_switch/ElectricSwitchBlock.java (94%) rename src/main/java/com/drmangotea/tfmg/content/electricity/{utilities => network}/electric_switch/ElectricSwitchBlockEntity.java (82%) rename src/main/java/com/drmangotea/tfmg/content/electricity/{utilities => network}/potentiometer/EncasedPotentiometerBlock.java (97%) rename src/main/java/com/drmangotea/tfmg/content/electricity/{utilities => network}/potentiometer/PotentiometerBlock.java (95%) rename src/main/java/com/drmangotea/tfmg/content/electricity/{utilities => network}/potentiometer/PotentiometerBlockEntity.java (92%) rename src/main/java/com/drmangotea/tfmg/content/electricity/{utilities => network}/transformer/ElectromagneticCoilItem.java (85%) rename src/main/java/com/drmangotea/tfmg/content/electricity/{utilities => network}/transformer/TransformerBlock.java (74%) rename src/main/java/com/drmangotea/tfmg/content/electricity/{utilities => network}/transformer/TransformerBlockEntity.java (67%) rename src/main/java/com/drmangotea/tfmg/content/electricity/{utilities => network}/transformer/TransformerRenderer.java (96%) delete mode 100644 src/main/java/com/drmangotea/tfmg/content/electricity/utilities/diode/ElectricDiodeBlockEntity.java create mode 100644 src/main/java/com/drmangotea/tfmg/content/items/weapons/fire_extinguisher/FireExtinguisherItem.java create mode 100644 src/main/java/com/drmangotea/tfmg/content/machinery/misc/gas_lamp/GasLampBlock.java create mode 100644 src/main/java/com/drmangotea/tfmg/content/machinery/misc/gas_lamp/GasLampBlockEntity.java create mode 100644 src/main/java/com/drmangotea/tfmg/content/machinery/misc/gas_lamp/GasLampGenerator.java create mode 100644 src/main/resources/assets/tfmg/models/block/gas_lamp/block.json create mode 100644 src/main/resources/assets/tfmg/models/block/gas_lamp/block_lit.json create mode 100644 src/main/resources/assets/tfmg/models/block/gas_lamp/item.json create mode 100644 src/main/resources/assets/tfmg/models/block/gas_lamp/test.json create mode 100644 src/main/resources/assets/tfmg/models/block/large_transformer/transformer.json delete mode 100644 src/main/resources/assets/tfmg/models/block/pumpjack_crank/item_.json create mode 100644 src/main/resources/assets/tfmg/models/item/fire_extinguisher/item.json delete mode 100644 src/main/resources/assets/tfmg/models/large_steel_cogwheel_shaftless.json delete mode 100644 src/main/resources/assets/tfmg/textures/block/ammeter.png delete mode 100644 src/main/resources/assets/tfmg/textures/block/capacitor.png delete mode 100644 src/main/resources/assets/tfmg/textures/block/coke_oven_slot.png delete mode 100644 src/main/resources/assets/tfmg/textures/block/converter_side.png delete mode 100644 src/main/resources/assets/tfmg/textures/block/converter_top.png delete mode 100644 src/main/resources/assets/tfmg/textures/block/copper_coil_arrow.png delete mode 100644 src/main/resources/assets/tfmg/textures/block/debug_conductor.png delete mode 100644 src/main/resources/assets/tfmg/textures/block/debug_electric_block.png delete mode 100644 src/main/resources/assets/tfmg/textures/block/debug_generator_block.png delete mode 100644 src/main/resources/assets/tfmg/textures/block/diesel_engine.png delete mode 100644 src/main/resources/assets/tfmg/textures/block/diesel_engine_expansion.png delete mode 100644 src/main/resources/assets/tfmg/textures/block/electric_diode.png delete mode 100644 src/main/resources/assets/tfmg/textures/block/electric_mixer_input.png delete mode 100644 src/main/resources/assets/tfmg/textures/block/encased_coil.png delete mode 100644 src/main/resources/assets/tfmg/textures/block/engine.png delete mode 100644 src/main/resources/assets/tfmg/textures/block/formwork_bottom.png delete mode 100644 src/main/resources/assets/tfmg/textures/block/formwork_side.png delete mode 100644 src/main/resources/assets/tfmg/textures/block/fuse_block.png create mode 100644 src/main/resources/assets/tfmg/textures/block/gas_lamp.png create mode 100644 src/main/resources/assets/tfmg/textures/block/gas_lamp_fire.png create mode 100644 src/main/resources/assets/tfmg/textures/block/gas_lamp_fire.png.mcmeta delete mode 100644 src/main/resources/assets/tfmg/textures/block/glass_lead_pipe.png delete mode 100644 src/main/resources/assets/tfmg/textures/block/large_generator.png create mode 100644 src/main/resources/assets/tfmg/textures/block/large_transformer.png delete mode 100644 src/main/resources/assets/tfmg/textures/block/relay_inlet.png delete mode 100644 src/main/resources/assets/tfmg/textures/block/servo_motor.png delete mode 100644 src/main/resources/assets/tfmg/textures/block/surface_scanner.png create mode 100644 src/main/resources/assets/tfmg/textures/entity/dry_ice_flake.png delete mode 100644 src/main/resources/assets/tfmg/textures/item/blasting_mixture.png delete mode 100644 src/main/resources/assets/tfmg/textures/item/block_mold.png delete mode 100644 src/main/resources/assets/tfmg/textures/item/cement.png delete mode 100644 src/main/resources/assets/tfmg/textures/item/copper_cable.png create mode 100644 src/main/resources/assets/tfmg/textures/item/fire_extinguisher.png delete mode 100644 src/main/resources/assets/tfmg/textures/item/ingot_mold.png diff --git a/gradle.properties b/gradle.properties index 0092898f..d86cbb98 100644 --- a/gradle.properties +++ b/gradle.properties @@ -31,7 +31,7 @@ registrate_version = MC1.21-1.3.0+62 mod_id=tfmg mod_name=Create: The Factory Must Grow mod_license=MIT -mod_version=1.0.1 +mod_version=1.1.0 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 diff --git a/src/generated/resources/assets/tfmg/blockstates/gas_lamp.json b/src/generated/resources/assets/tfmg/blockstates/gas_lamp.json new file mode 100644 index 00000000..ae545c53 --- /dev/null +++ b/src/generated/resources/assets/tfmg/blockstates/gas_lamp.json @@ -0,0 +1,10 @@ +{ + "variants": { + "lit=false": { + "model": "tfmg:block/gas_lamp/block" + }, + "lit=true": { + "model": "tfmg:block/gas_lamp/block_lit" + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/tfmg/lang/en_ud.json b/src/generated/resources/assets/tfmg/lang/en_ud.json index b29275b8..d1de6201 100644 --- a/src/generated/resources/assets/tfmg/lang/en_ud.json +++ b/src/generated/resources/assets/tfmg/lang/en_ud.json @@ -201,6 +201,7 @@ "block.tfmg.fossilstone": "ǝuoʇsןıssoℲ", "block.tfmg.galena": "ɐuǝןɐ⅁", "block.tfmg.galena_pillar": "ɹɐןןıԀ ɐuǝןɐ⅁", + "block.tfmg.gas_lamp": "dɯɐꞀ sɐ⅁", "block.tfmg.gasoline": "ǝuıןosɐ⅁", "block.tfmg.generator": "ɹoʇɐɹǝuǝ⅁", "block.tfmg.glass_aluminum_pipe": "ǝdıԀ ɯnuıɯnןⱯ ssɐן⅁", @@ -519,6 +520,7 @@ "effect.tfmg.hellfire": "ǝɹıɟןןǝH", "entity.tfmg.blue_spark": "ʞɹɐdS ǝnןᗺ", "entity.tfmg.copper_grenade": "ǝpɐuǝɹ⅁ ɹǝddoƆ", + "entity.tfmg.dry_ice_flake": "ǝʞɐןℲ ǝɔI ʎɹᗡ", "entity.tfmg.green_spark": "ʞɹɐdS uǝǝɹ⅁", "entity.tfmg.lithium_spark": "ʞɹɐdS ɯnıɥʇıꞀ", "entity.tfmg.napalm_bomb_entity": "ʎʇıʇuƎ qɯoᗺ ɯןɐdɐN", @@ -645,6 +647,7 @@ "item.tfmg.engine_cylinder": "ɹǝpuıןʎƆ ǝuıbuƎ", "item.tfmg.etched_circuit_board": "pɹɐoᗺ ʇınɔɹıƆ pǝɥɔʇƎ", "item.tfmg.ethylene_bucket": "ʞuɐ⟘ ǝuǝןʎɥʇƎ", + "item.tfmg.fire_extinguisher": "ɹǝɥsınbuıʇxƎ ǝɹıℲ", "item.tfmg.fireclay_ball": "ןןɐᗺ ʎɐןɔǝɹıℲ", "item.tfmg.fireproof_brick": "ʞɔıɹᗺ ɟooɹdǝɹıℲ", "item.tfmg.flamethrower": "ɹǝʍoɹɥʇǝɯɐןℲ", diff --git a/src/generated/resources/assets/tfmg/lang/en_us.json b/src/generated/resources/assets/tfmg/lang/en_us.json index fbb1deb4..65f5938d 100644 --- a/src/generated/resources/assets/tfmg/lang/en_us.json +++ b/src/generated/resources/assets/tfmg/lang/en_us.json @@ -201,6 +201,7 @@ "block.tfmg.fossilstone": "Fossilstone", "block.tfmg.galena": "Galena", "block.tfmg.galena_pillar": "Galena Pillar", + "block.tfmg.gas_lamp": "Gas Lamp", "block.tfmg.gasoline": "Gasoline", "block.tfmg.generator": "Generator", "block.tfmg.glass_aluminum_pipe": "Glass Aluminum Pipe", @@ -519,6 +520,7 @@ "effect.tfmg.hellfire": "Hellfire", "entity.tfmg.blue_spark": "Blue Spark", "entity.tfmg.copper_grenade": "Copper Grenade", + "entity.tfmg.dry_ice_flake": "Dry Ice Flake", "entity.tfmg.green_spark": "Green Spark", "entity.tfmg.lithium_spark": "Lithium Spark", "entity.tfmg.napalm_bomb_entity": "Napalm Bomb Entity", @@ -645,6 +647,7 @@ "item.tfmg.engine_cylinder": "Engine Cylinder", "item.tfmg.etched_circuit_board": "Etched Circuit Board", "item.tfmg.ethylene_bucket": "Ethylene Tank", + "item.tfmg.fire_extinguisher": "Fire Extinguisher", "item.tfmg.fireclay_ball": "Fireclay Ball", "item.tfmg.fireproof_brick": "Fireproof Brick", "item.tfmg.flamethrower": "Flamethrower", diff --git a/src/generated/resources/assets/tfmg/models/item/fire_extinguisher.json b/src/generated/resources/assets/tfmg/models/item/fire_extinguisher.json new file mode 100644 index 00000000..d5b3eee1 --- /dev/null +++ b/src/generated/resources/assets/tfmg/models/item/fire_extinguisher.json @@ -0,0 +1,3 @@ +{ + "parent": "tfmg:item/fire_extinguisher/item" +} \ No newline at end of file diff --git a/src/generated/resources/assets/tfmg/models/item/gas_lamp.json b/src/generated/resources/assets/tfmg/models/item/gas_lamp.json new file mode 100644 index 00000000..c7b89d27 --- /dev/null +++ b/src/generated/resources/assets/tfmg/models/item/gas_lamp.json @@ -0,0 +1,3 @@ +{ + "parent": "tfmg:block/gas_lamp/item" +} \ No newline at end of file diff --git a/src/generated/resources/data/minecraft/tags/block/mineable/axe.json b/src/generated/resources/data/minecraft/tags/block/mineable/axe.json index 97a1bdd7..478ac519 100644 --- a/src/generated/resources/data/minecraft/tags/block/mineable/axe.json +++ b/src/generated/resources/data/minecraft/tags/block/mineable/axe.json @@ -16,11 +16,11 @@ "tfmg:cast_iron_flywheel", "tfmg:aluminum_flywheel", "tfmg:nickel_flywheel", - "tfmg:copper_encased_brass_pipe", - "tfmg:copper_encased_steel_pipe", - "tfmg:copper_encased_aluminum_pipe", - "tfmg:copper_encased_cast_iron_pipe", - "tfmg:copper_encased_plastic_pipe", + "tfmg:encased_brass_pipe", + "tfmg:encased_steel_pipe", + "tfmg:encased_aluminum_pipe", + "tfmg:encased_cast_iron_pipe", + "tfmg:encased_plastic_pipe", "tfmg:steel_encased_shaft", "tfmg:heavy_casing_encased_shaft", "tfmg:steel_encased_steel_cogwheel", diff --git a/src/generated/resources/data/minecraft/tags/block/mineable/pickaxe.json b/src/generated/resources/data/minecraft/tags/block/mineable/pickaxe.json index baeefd2d..a5623d1c 100644 --- a/src/generated/resources/data/minecraft/tags/block/mineable/pickaxe.json +++ b/src/generated/resources/data/minecraft/tags/block/mineable/pickaxe.json @@ -99,6 +99,7 @@ "tfmg:concrete_smokestack", "tfmg:exhaust", "tfmg:flarestack", + "tfmg:gas_lamp", "tfmg:steel_cogwheel", "tfmg:large_steel_cogwheel", "tfmg:aluminum_cogwheel", @@ -317,31 +318,31 @@ "tfmg:asphalt_slab", "tfmg:asphalt_stairs", "tfmg:brass_pipe", - "tfmg:copper_encased_brass_pipe", + "tfmg:encased_brass_pipe", "tfmg:glass_brass_pipe", "tfmg:brass_mechanical_pump", "tfmg:brass_smart_fluid_pipe", "tfmg:brass_fluid_valve", "tfmg:steel_pipe", - "tfmg:copper_encased_steel_pipe", + "tfmg:encased_steel_pipe", "tfmg:glass_steel_pipe", "tfmg:steel_mechanical_pump", "tfmg:steel_smart_fluid_pipe", "tfmg:steel_fluid_valve", "tfmg:aluminum_pipe", - "tfmg:copper_encased_aluminum_pipe", + "tfmg:encased_aluminum_pipe", "tfmg:glass_aluminum_pipe", "tfmg:aluminum_mechanical_pump", "tfmg:aluminum_smart_fluid_pipe", "tfmg:aluminum_fluid_valve", "tfmg:cast_iron_pipe", - "tfmg:copper_encased_cast_iron_pipe", + "tfmg:encased_cast_iron_pipe", "tfmg:glass_cast_iron_pipe", "tfmg:cast_iron_mechanical_pump", "tfmg:cast_iron_smart_fluid_pipe", "tfmg:cast_iron_fluid_valve", "tfmg:plastic_pipe", - "tfmg:copper_encased_plastic_pipe", + "tfmg:encased_plastic_pipe", "tfmg:glass_plastic_pipe", "tfmg:plastic_mechanical_pump", "tfmg:plastic_smart_fluid_pipe", diff --git a/src/generated/resources/data/tfmg/advancement/recipes/misc/crafting/materials/fire_extinguisher.json b/src/generated/resources/data/tfmg/advancement/recipes/misc/crafting/materials/fire_extinguisher.json new file mode 100644 index 00000000..565e4cf6 --- /dev/null +++ b/src/generated/resources/data/tfmg/advancement/recipes/misc/crafting/materials/fire_extinguisher.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_item": { + "conditions": { + "items": [ + { + "items": "tfmg:carbon_dioxide_bucket" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "tfmg:crafting/materials/fire_extinguisher" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_item" + ] + ], + "rewards": { + "recipes": [ + "tfmg:crafting/materials/fire_extinguisher" + ] + } +} \ No newline at end of file diff --git a/src/generated/resources/data/tfmg/advancement/recipes/misc/crafting/materials/gas_lamp.json b/src/generated/resources/data/tfmg/advancement/recipes/misc/crafting/materials/gas_lamp.json new file mode 100644 index 00000000..448ab4a4 --- /dev/null +++ b/src/generated/resources/data/tfmg/advancement/recipes/misc/crafting/materials/gas_lamp.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_item": { + "conditions": { + "items": [ + { + "items": "tfmg:cast_iron_bars" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "tfmg:crafting/materials/gas_lamp" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_item" + ] + ], + "rewards": { + "recipes": [ + "tfmg:crafting/materials/gas_lamp" + ] + } +} \ No newline at end of file diff --git a/src/generated/resources/data/tfmg/loot_table/blocks/copper_encased_aluminum_pipe.json b/src/generated/resources/data/tfmg/loot_table/blocks/copper_encased_aluminum_pipe.json deleted file mode 100644 index b4694a00..00000000 --- a/src/generated/resources/data/tfmg/loot_table/blocks/copper_encased_aluminum_pipe.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "bonus_rolls": 0.0, - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ], - "entries": [ - { - "type": "minecraft:item", - "name": "tfmg:aluminum_pipe" - } - ], - "rolls": 1.0 - } - ], - "random_sequence": "tfmg:blocks/copper_encased_aluminum_pipe" -} \ No newline at end of file diff --git a/src/generated/resources/data/tfmg/loot_table/blocks/copper_encased_cast_iron_pipe.json b/src/generated/resources/data/tfmg/loot_table/blocks/copper_encased_cast_iron_pipe.json deleted file mode 100644 index 00f432ad..00000000 --- a/src/generated/resources/data/tfmg/loot_table/blocks/copper_encased_cast_iron_pipe.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "bonus_rolls": 0.0, - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ], - "entries": [ - { - "type": "minecraft:item", - "name": "tfmg:cast_iron_pipe" - } - ], - "rolls": 1.0 - } - ], - "random_sequence": "tfmg:blocks/copper_encased_cast_iron_pipe" -} \ No newline at end of file diff --git a/src/generated/resources/data/tfmg/loot_table/blocks/copper_encased_plastic_pipe.json b/src/generated/resources/data/tfmg/loot_table/blocks/copper_encased_plastic_pipe.json deleted file mode 100644 index a37de870..00000000 --- a/src/generated/resources/data/tfmg/loot_table/blocks/copper_encased_plastic_pipe.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "bonus_rolls": 0.0, - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ], - "entries": [ - { - "type": "minecraft:item", - "name": "tfmg:plastic_pipe" - } - ], - "rolls": 1.0 - } - ], - "random_sequence": "tfmg:blocks/copper_encased_plastic_pipe" -} \ No newline at end of file diff --git a/src/generated/resources/data/tfmg/loot_table/blocks/copper_encased_steel_pipe.json b/src/generated/resources/data/tfmg/loot_table/blocks/copper_encased_steel_pipe.json deleted file mode 100644 index c890c261..00000000 --- a/src/generated/resources/data/tfmg/loot_table/blocks/copper_encased_steel_pipe.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "bonus_rolls": 0.0, - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ], - "entries": [ - { - "type": "minecraft:item", - "name": "tfmg:steel_pipe" - } - ], - "rolls": 1.0 - } - ], - "random_sequence": "tfmg:blocks/copper_encased_steel_pipe" -} \ No newline at end of file diff --git a/src/generated/resources/data/tfmg/loot_table/blocks/copper_encased_brass_pipe.json b/src/generated/resources/data/tfmg/loot_table/blocks/gas_lamp.json similarity index 75% rename from src/generated/resources/data/tfmg/loot_table/blocks/copper_encased_brass_pipe.json rename to src/generated/resources/data/tfmg/loot_table/blocks/gas_lamp.json index f26e8ba8..248fe432 100644 --- a/src/generated/resources/data/tfmg/loot_table/blocks/copper_encased_brass_pipe.json +++ b/src/generated/resources/data/tfmg/loot_table/blocks/gas_lamp.json @@ -11,11 +11,11 @@ "entries": [ { "type": "minecraft:item", - "name": "tfmg:brass_pipe" + "name": "tfmg:gas_lamp" } ], "rolls": 1.0 } ], - "random_sequence": "tfmg:blocks/copper_encased_brass_pipe" + "random_sequence": "tfmg:blocks/gas_lamp" } \ No newline at end of file diff --git a/src/generated/resources/data/tfmg/recipe/crafting/materials/fire_extinguisher.json b/src/generated/resources/data/tfmg/recipe/crafting/materials/fire_extinguisher.json new file mode 100644 index 00000000..cefaa731 --- /dev/null +++ b/src/generated/resources/data/tfmg/recipe/crafting/materials/fire_extinguisher.json @@ -0,0 +1,30 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "misc", + "key": { + "A": { + "tag": "c:plates/aluminum" + }, + "C": { + "item": "tfmg:carbon_dioxide_bucket" + }, + "N": { + "tag": "c:nuggets/steel" + }, + "R": { + "item": "minecraft:red_dye" + }, + "S": { + "tag": "c:ingots/steel" + } + }, + "pattern": [ + "NSR", + "ACA", + "AAA" + ], + "result": { + "count": 1, + "id": "tfmg:fire_extinguisher" + } +} \ No newline at end of file diff --git a/src/generated/resources/data/tfmg/recipe/crafting/materials/gas_lamp.json b/src/generated/resources/data/tfmg/recipe/crafting/materials/gas_lamp.json new file mode 100644 index 00000000..6579805c --- /dev/null +++ b/src/generated/resources/data/tfmg/recipe/crafting/materials/gas_lamp.json @@ -0,0 +1,27 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "misc", + "key": { + "B": { + "item": "tfmg:cast_iron_bars" + }, + "C": { + "tag": "c:plates/cast_iron" + }, + "G": { + "item": "create:framed_glass" + }, + "P": { + "item": "tfmg:industrial_pipe" + } + }, + "pattern": [ + " C ", + "BGB", + " P " + ], + "result": { + "count": 1, + "id": "tfmg:gas_lamp" + } +} \ No newline at end of file diff --git a/src/generated/resources/data/tfmg/recipe/filling/filled_fire_extinguisher.json b/src/generated/resources/data/tfmg/recipe/filling/filled_fire_extinguisher.json new file mode 100644 index 00000000..e74f9678 --- /dev/null +++ b/src/generated/resources/data/tfmg/recipe/filling/filled_fire_extinguisher.json @@ -0,0 +1,21 @@ +{ + "type": "create:filling", + "ingredients": [ + { + "item": "tfmg:fire_extinguisher" + }, + { + "type": "fluid_stack", + "amount": 1000, + "fluid": "tfmg:carbon_dioxide" + } + ], + "results": [ + { + "components": { + "tfmg:amount": 500 + }, + "id": "tfmg:fire_extinguisher" + } + ] +} \ No newline at end of file diff --git a/src/main/java/com/drmangotea/tfmg/base/TFMGCreativeTabs.java b/src/main/java/com/drmangotea/tfmg/base/TFMGCreativeTabs.java index 8d1d5e59..78babd58 100644 --- a/src/main/java/com/drmangotea/tfmg/base/TFMGCreativeTabs.java +++ b/src/main/java/com/drmangotea/tfmg/base/TFMGCreativeTabs.java @@ -92,6 +92,7 @@ public class TFMGCreativeTabs { list.add(TFMGItems.COPPER_SPOOL); list.add(TFMGItems.CONSTANTAN_SPOOL); + return list; } public static List customAdditions(){ diff --git a/src/main/java/com/drmangotea/tfmg/base/TFMGShapes.java b/src/main/java/com/drmangotea/tfmg/base/TFMGShapes.java index c6e956bc..53aaec37 100644 --- a/src/main/java/com/drmangotea/tfmg/base/TFMGShapes.java +++ b/src/main/java/com/drmangotea/tfmg/base/TFMGShapes.java @@ -3,7 +3,7 @@ package com.drmangotea.tfmg.base; import net.createmod.catnip.math.VoxelShaper; import net.minecraft.core.Direction; -import net.minecraft.core.Direction.Axis; +import net.minecraft.core.Direction.*; import net.minecraft.world.level.block.Block; import net.minecraft.world.phys.shapes.BooleanOp; import net.minecraft.world.phys.shapes.Shapes; @@ -140,6 +140,7 @@ public class TFMGShapes { TRAFFIC_LIGHT = shape(3, 0, 3, 13, 16, 13).build(), REBAR_FLOOR = shape(0, 4, 0, 16, 12, 16) .build(), + GAS_LAMP = shape(1, 0, 1, 15, 22, 15).build(), SURFACE_SCANNER = shape(2, 0, 2, 14, 14, 14).build(), FULL = shape(0, 0, 0, 16, 16, 16).build(), ELECTRIC_POST = shape(4, 0, 4, 12, 16, 12).build(), diff --git a/src/main/java/com/drmangotea/tfmg/base/TFMGUtils.java b/src/main/java/com/drmangotea/tfmg/base/TFMGUtils.java index 5dd807ec..cfb2322d 100644 --- a/src/main/java/com/drmangotea/tfmg/base/TFMGUtils.java +++ b/src/main/java/com/drmangotea/tfmg/base/TFMGUtils.java @@ -15,6 +15,8 @@ import com.simibubi.create.content.fluids.tank.FluidTankBlockEntity; import com.simibubi.create.foundation.fluid.SmartFluidTank; import com.simibubi.create.foundation.utility.CreateLang; import net.createmod.catnip.lang.LangBuilder; +import net.createmod.catnip.outliner.Outliner; +import net.createmod.catnip.theme.Color; import net.minecraft.ChatFormatting; import net.minecraft.client.renderer.LightTexture; import net.minecraft.client.renderer.MultiBufferSource; @@ -32,6 +34,7 @@ import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.Level; import net.minecraft.world.level.LightLayer; +import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.material.Fluid; import net.minecraft.world.phys.AABB; @@ -111,6 +114,16 @@ public class TFMGUtils { createFireExplosion(be.getLevel(), null, new BlockPos(be.getBlockPos().getX() + (be.getWidth() / 2), be.getBlockPos().getY() + (be.getHeight() / 2), be.getBlockPos().getZ() + (be.getWidth() / 2)), power * 15, (float) power); } + public static void createOutline(Vec3 pos1, Vec3 pos2,String name,Color color){ + createOutline(pos1,pos2,name,color,1/32f); + } + + public static void createOutline(Vec3 pos1, Vec3 pos2,String name,Color color,float width){ + Outliner.getInstance().showAABB(name, new AABB(pos1, pos2)) + .lineWidth(width) + .colored(color); + } + public static String fromId(String key) { String s = key.replaceAll("_", " "); s = Arrays.stream(StringUtils.splitByCharacterTypeCamelCase(s)).map(StringUtils::capitalize).collect(Collectors.joining(" ")); diff --git a/src/main/java/com/drmangotea/tfmg/base/events/TFMGClientEvents.java b/src/main/java/com/drmangotea/tfmg/base/events/TFMGClientEvents.java index b303fe3c..9c741ba8 100644 --- a/src/main/java/com/drmangotea/tfmg/base/events/TFMGClientEvents.java +++ b/src/main/java/com/drmangotea/tfmg/base/events/TFMGClientEvents.java @@ -2,7 +2,9 @@ package com.drmangotea.tfmg.base.events; import com.drmangotea.tfmg.TFMG; import com.drmangotea.tfmg.TFMGClient; +import com.drmangotea.tfmg.content.electricity.connection.cables.CableConnectorBlockEntity; import com.drmangotea.tfmg.content.electricity.measurement.MultimeterOverlayRenderer; +import com.drmangotea.tfmg.content.electricity.network.transformer.TransformerBlockEntity; import com.drmangotea.tfmg.content.engines.engine_controller.EngineControllerClientHandler; import com.drmangotea.tfmg.content.items.weapons.advanced_potato_cannon.AdvancedPotatoCannonItemRenderer; import com.drmangotea.tfmg.content.items.weapons.quad_potato_cannon.QuadPotatoCannonItemRenderer; @@ -45,6 +47,9 @@ public class TFMGClientEvents { if (isPreEvent) { EngineControllerClientHandler.tick(); } + + TransformerBlockEntity.tickOutliner(); + CableConnectorBlockEntity.tickOutliner(); } @SubscribeEvent public static void PlayerLoggedOut(PlayerEvent.PlayerLoggedOutEvent event) { diff --git a/src/main/java/com/drmangotea/tfmg/base/spark/BlueSpark.java b/src/main/java/com/drmangotea/tfmg/base/spark/BlueSpark.java index acde238a..407481b0 100644 --- a/src/main/java/com/drmangotea/tfmg/base/spark/BlueSpark.java +++ b/src/main/java/com/drmangotea/tfmg/base/spark/BlueSpark.java @@ -15,15 +15,13 @@ public class BlueSpark extends Spark{ } @Override public int getColor() { - return 0x00FFFF; + return 0xC4F2F2; } - public float[] getCustomParticleTrail() { - return new float[]{4.1f, 60.2f, 100.3f}; - } + @Override public Optional getFireState(BlockPos pos) { - return Optional.of(BlueFireBlock.getState(this.level(),pos)); + return Optional.empty(); } } diff --git a/src/main/java/com/drmangotea/tfmg/base/spark/DryIceFlake.java b/src/main/java/com/drmangotea/tfmg/base/spark/DryIceFlake.java new file mode 100644 index 00000000..2f66edbf --- /dev/null +++ b/src/main/java/com/drmangotea/tfmg/base/spark/DryIceFlake.java @@ -0,0 +1,100 @@ +package com.drmangotea.tfmg.base.spark; + +import com.drmangotea.tfmg.TFMG; +import com.drmangotea.tfmg.config.TFMGConfigs; +import com.drmangotea.tfmg.registry.TFMGMobEffects; +import net.minecraft.core.BlockPos; +import net.minecraft.core.particles.ParticleOptions; +import net.minecraft.core.particles.ParticleTypes; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.server.packs.resources.Resource; +import net.minecraft.world.effect.MobEffectInstance; +import net.minecraft.world.effect.MobEffects; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.EntityType; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.entity.Mob; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.block.BaseFireBlock; +import net.minecraft.world.level.block.Blocks; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.phys.AABB; +import net.minecraft.world.phys.BlockHitResult; +import net.minecraft.world.phys.EntityHitResult; + +import java.util.stream.Stream; + +public class DryIceFlake extends Spark{ + public DryIceFlake(EntityType p_37391_, Level p_37392_) { + super(p_37391_, p_37392_); + } + protected void onHitBlock(BlockHitResult blockHit) { + if (!this.level().isClientSide) { + Entity owner = this.getOwner(); + if (!(owner instanceof Mob) ) { + BlockPos hitBlockPos = blockHit.getBlockPos().relative(blockHit.getDirection()); + + AABB extinguisRadius = new AABB(hitBlockPos); + extinguisRadius = extinguisRadius.inflate(TFMGConfigs.common().machines.fireExtinguisherClearRadius.get()); + + Stream positions = BlockPos.betweenClosedStream(extinguisRadius); + + positions.forEach(p->{ + BlockState state = level().getBlockState(p); + + if (state.getBlock() instanceof BaseFireBlock) { + this.level().setBlockAndUpdate(p, Blocks.AIR.defaultBlockState()); + } + }); + + + } + } + } + + protected void onHitEntity(EntityHitResult entityHit) { + if (!this.level().isClientSide) { + Entity hitEntity = entityHit.getEntity(); + hitEntity.extinguishFire(); + + if (hitEntity.canFreeze()) { + // Apply freezing + int currentFreeze = hitEntity.getTicksFrozen(); + int freezeIncrement = 10; + int newFreeze = Math.min(currentFreeze + freezeIncrement, hitEntity.getTicksRequiredToFreeze() + 20); // Slightly overfreeze + hitEntity.setTicksFrozen(newFreeze); + + // Damage if fully frozen + if (newFreeze >= hitEntity.getTicksRequiredToFreeze()) { + hitEntity.hurt(this.damageSources().freeze(), 2.0F); + } + + // Slow movement and remove hellfire + if (hitEntity instanceof LivingEntity livingEntity) { + livingEntity.addEffect(new MobEffectInstance( + MobEffects.MOVEMENT_SLOWDOWN, + 20, + 2, + false, false, true + )); + + livingEntity.removeEffect(TFMGMobEffects.HELLFIRE); + } + } + } + } + + @Override + public int getColor() { + return 0xFFFFFF; + } + + @Override + public ResourceLocation getTexture() { + return TFMG.asResource("textures/entity/dry_ice_flake.png"); + } + + public ParticleOptions getTrailParticle(){ + return ParticleTypes.SNOWFLAKE; + } +} diff --git a/src/main/java/com/drmangotea/tfmg/base/spark/Spark.java b/src/main/java/com/drmangotea/tfmg/base/spark/Spark.java index 5ab5693f..a04bfe88 100644 --- a/src/main/java/com/drmangotea/tfmg/base/spark/Spark.java +++ b/src/main/java/com/drmangotea/tfmg/base/spark/Spark.java @@ -1,6 +1,7 @@ package com.drmangotea.tfmg.base.spark; +import com.drmangotea.tfmg.TFMG; import com.drmangotea.tfmg.registry.TFMGMobEffects; import com.simibubi.create.content.trains.CubeParticleData; import net.minecraft.core.BlockPos; @@ -53,6 +54,10 @@ public class Spark extends ThrowableProjectile { return ParticleTypes.FLAME; } + public ResourceLocation getTexture(){ + return TFMG.asResource("textures/entity/spark.png"); + } + @Override protected void defineSynchedData(SynchedEntityData.Builder builder) { diff --git a/src/main/java/com/drmangotea/tfmg/base/spark/SparkRenderer.java b/src/main/java/com/drmangotea/tfmg/base/spark/SparkRenderer.java index 43d7d457..b0a17cd1 100644 --- a/src/main/java/com/drmangotea/tfmg/base/spark/SparkRenderer.java +++ b/src/main/java/com/drmangotea/tfmg/base/spark/SparkRenderer.java @@ -15,6 +15,7 @@ import net.minecraft.resources.ResourceLocation; import net.neoforged.api.distmarker.Dist; import net.neoforged.api.distmarker.OnlyIn; +import org.jetbrains.annotations.NotNull; import org.joml.Matrix3f; import org.joml.Matrix4f; @@ -27,8 +28,8 @@ public class SparkRenderer extends EntityRenderer { - private static final ResourceLocation TEXTURE_LOCATION = TFMG.asResource("textures/entity/spark.png"); - private static final RenderType RENDER_TYPE = RenderType.entityCutoutNoCull(TEXTURE_LOCATION); + + public SparkRenderer(EntityRendererProvider.Context p_173962_) { super(p_173962_); } @@ -45,7 +46,7 @@ public class SparkRenderer extends EntityRenderer { PoseStack.Pose posestack$pose = poseStack.last(); Matrix4f matrix4f = posestack$pose.pose(); Matrix3f matrix3f = posestack$pose.normal(); - VertexConsumer vertexconsumer = bufferSource.getBuffer(RENDER_TYPE); + VertexConsumer vertexconsumer = bufferSource.getBuffer(RenderType.entityCutoutNoCull(spark.getTexture())); @@ -59,8 +60,8 @@ public class SparkRenderer extends EntityRenderer { private void vertex(VertexConsumer vertexConsumer, Matrix4f matrix4f, Matrix3f matrix3f, int p_114093_, float p_114094_, int p_114095_, int p_114096_, int p_114097_,int color) { vertexConsumer.addVertex(matrix4f, p_114094_ - 0.5F, (float)p_114095_ - 0.25F, 0.0F).setColor(color).setUv((float)p_114096_, (float)p_114097_).setOverlay(OverlayTexture.NO_OVERLAY).setLight(15728880).setUv2(p_114093_,p_114093_).setNormal( 0.0F, 1.0F, 0.0F); } - public ResourceLocation getTextureLocation(Spark p_114078_) { - return TEXTURE_LOCATION; + public @NotNull ResourceLocation getTextureLocation(Spark spark) { + return spark.getTexture(); } diff --git a/src/main/java/com/drmangotea/tfmg/config/MachineConfig.java b/src/main/java/com/drmangotea/tfmg/config/MachineConfig.java index 92a388b7..e1cc9f6b 100644 --- a/src/main/java/com/drmangotea/tfmg/config/MachineConfig.java +++ b/src/main/java/com/drmangotea/tfmg/config/MachineConfig.java @@ -5,6 +5,8 @@ import net.createmod.catnip.config.ConfigBase; public class MachineConfig extends ConfigBase { + public final ConfigInt fireExtinguisherClearRadius = i(1, 0, "fireExtinguisherClearRadius", Comments.fireExtinguisherClearRadius); + public final ConfigFloat electricMotorInternalResistance = f(100, 0, "electricMotorInternalResistance", Comments.electricMotorInternalResistance); public final ConfigInt cokeOvenMaxSize = i(5, 1, "cokeOvenMaxSize", Comments.cokeOvenMaxSize); public final ConfigFloat FEtoWattTickConversionRate = f(1, 0, "FEtoWattTickConversionRate", Comments.FEtoWattTickConversionRate); @@ -49,6 +51,7 @@ public class MachineConfig extends ConfigBase { private static class Comments { + static String fireExtinguisherClearRadius = "Changes the radius fire extinguishers can remove fire in."; static String largeGenerator = "Determines how powerful the large generator is."; static String generator = "Determines how powerful the generator is."; static String largeGeneratorMinSpeed = "Changes the lowest speed the large generator can work on."; diff --git a/src/main/java/com/drmangotea/tfmg/content/electricity/base/ElectricBlockValues.java b/src/main/java/com/drmangotea/tfmg/content/electricity/base/ElectricBlockValues.java index a6ddc451..3813b087 100644 --- a/src/main/java/com/drmangotea/tfmg/content/electricity/base/ElectricBlockValues.java +++ b/src/main/java/com/drmangotea/tfmg/content/electricity/base/ElectricBlockValues.java @@ -4,19 +4,30 @@ public class ElectricBlockValues { public long electricalNetworkId; + public boolean destroyed = false; + public boolean connectNextTick = false; + public boolean checkForLoopsNextTick = false; + public boolean updatePowerNextTick = false; + public boolean updateNextTick = false; + public boolean getsOutsidePower = false; + public int networkResistance = 0; + public int voltage = 0; + public int voltageSupply = 0; + public int networkPowerGeneration = 0; + public float highestCurrent = 0; - public boolean notEnoughtPower = false; + public boolean notEnoughPower = false; public boolean setVoltageNextTick = false; diff --git a/src/main/java/com/drmangotea/tfmg/content/electricity/base/ElectricalNetwork.java b/src/main/java/com/drmangotea/tfmg/content/electricity/base/ElectricalNetwork.java index eee417ac..1d834aa4 100644 --- a/src/main/java/com/drmangotea/tfmg/content/electricity/base/ElectricalNetwork.java +++ b/src/main/java/com/drmangotea/tfmg/content/electricity/base/ElectricalNetwork.java @@ -1,8 +1,6 @@ package com.drmangotea.tfmg.content.electricity.base; -import com.drmangotea.tfmg.content.electricity.utilities.diode.ElectricDiodeBlockEntity; import com.drmangotea.tfmg.content.electricity.utilities.electric_motor.ElectricMotorBlockEntity; -import com.drmangotea.tfmg.content.electricity.utilities.transformer.TransformerBlockEntity; import net.minecraft.core.BlockPos; import java.util.ArrayList; @@ -44,7 +42,7 @@ public class ElectricalNetwork { Map groups = new HashMap<>(); for (IElectric member : members) { - member.getData().notEnoughtPower = false; + member.getData().notEnoughPower = false; int groupId = member.getData().group.id; maxVoltage = Math.max(member.voltageGeneration(), maxVoltage); @@ -79,13 +77,11 @@ public class ElectricalNetwork { member.getData().highestCurrent = getCableCurrent(member); member.updateNearbyNetworks(member); - if (member instanceof ElectricDiodeBlockEntity be) { - be.updateInFront(); - } - if (member instanceof TransformerBlockEntity be) { + if (member instanceof VoltageAlteringBlockEntity be) { be.updateInFront(); } + } handleInsufficientPower(); @@ -96,19 +92,16 @@ public class ElectricalNetwork { if (!members.isEmpty()) if (members.get(0).getNetworkPowerUsage() > members.get(0).getNetworkPowerGeneration()) { for (IElectric member : members) { - member.getData().notEnoughtPower = true; + member.getData().notEnoughPower = true; if (member instanceof ElectricMotorBlockEntity be) { be.updateGeneratedRotation(); } - if (member instanceof ElectricDiodeBlockEntity be) + if (member instanceof VoltageAlteringBlockEntity be) be.updateInFront = true; - if (member instanceof TransformerBlockEntity be) - be.updateInFront(); } } } - public static float getCableCurrent(IElectric be) { float current = 0; diff --git a/src/main/java/com/drmangotea/tfmg/content/electricity/base/IElectric.java b/src/main/java/com/drmangotea/tfmg/content/electricity/base/IElectric.java index 785dfa13..aeab9ad3 100644 --- a/src/main/java/com/drmangotea/tfmg/content/electricity/base/IElectric.java +++ b/src/main/java/com/drmangotea/tfmg/content/electricity/base/IElectric.java @@ -1,14 +1,10 @@ package com.drmangotea.tfmg.content.electricity.base; 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.electricity.connection.cables.CableConnection; import com.drmangotea.tfmg.content.electricity.connection.cables.CableConnectorBlockEntity; -import com.simibubi.create.foundation.utility.CreateLang; import net.createmod.catnip.platform.CatnipServices; -import net.createmod.catnip.theme.Color; import net.minecraft.ChatFormatting; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; @@ -196,18 +192,20 @@ public interface IElectric { TFMGTexts.header("multimeter").style(ChatFormatting.WHITE) .forGoggles(tooltip); - if (getData().notEnoughtPower) TFMGTexts.Multimeter.notEnoughPower().forGoggles(tooltip, 1); + if (getData().notEnoughPower) TFMGTexts.Multimeter.notEnoughPower().forGoggles(tooltip, 1); if (voltageGeneration() > 0) { TFMGTexts.Multimeter.powerGenerated(powerGeneration()).forGoggles(tooltip, 1); TFMGTexts.Multimeter.voltageGenerated(voltageGeneration()).forGoggles(tooltip, 1); TFMGTexts.Multimeter.separator().forGoggles(tooltip); } - - TFMGTexts.Multimeter.resistance(voltageGeneration() > 0 ? getGeneratorResistance() : resistance()).forGoggles(tooltip, 1); + if (resistance() != 0) + TFMGTexts.Multimeter.resistance(voltageGeneration() > 0 ? getGeneratorResistance() : resistance()).forGoggles(tooltip, 1); TFMGTexts.Multimeter.voltage(getData().getVoltage()).forGoggles(tooltip, 1); - TFMGTexts.Multimeter.current(getCurrent()).forGoggles(tooltip, 1); - TFMGTexts.Multimeter.power(getPowerUsage()).forGoggles(tooltip, 1); + TFMGTexts.Multimeter.current(resistance() == 0 ? getData().highestCurrent : getCurrent()).forGoggles(tooltip, 1); + if (resistance() != 0) + TFMGTexts.Multimeter.power(getPowerUsage()).forGoggles(tooltip, 1); + if (getData().group.id != -1) { TFMGTexts.Multimeter.separator().forGoggles(tooltip); @@ -240,7 +238,7 @@ public interface IElectric { ElectricBlockValues getData(); default boolean canWork() { - return !getData().notEnoughtPower; + return !getData().notEnoughPower; } default void blockFail() { diff --git a/src/main/java/com/drmangotea/tfmg/content/electricity/base/UpdateInFrontPacket.java b/src/main/java/com/drmangotea/tfmg/content/electricity/base/UpdateInFrontPacket.java index 3953637d..733f84d7 100644 --- a/src/main/java/com/drmangotea/tfmg/content/electricity/base/UpdateInFrontPacket.java +++ b/src/main/java/com/drmangotea/tfmg/content/electricity/base/UpdateInFrontPacket.java @@ -1,7 +1,6 @@ package com.drmangotea.tfmg.content.electricity.base; -import com.drmangotea.tfmg.content.electricity.utilities.diode.ElectricDiodeBlockEntity; import com.drmangotea.tfmg.registry.TFMGPackets; import com.simibubi.create.foundation.blockEntity.SmartBlockEntity; import com.simibubi.create.foundation.networking.BlockEntityDataPacket; @@ -23,7 +22,7 @@ public class UpdateInFrontPacket extends BlockEntityDataPacket @Override protected void handlePacket(SmartBlockEntity blockEntity) { - if (blockEntity instanceof ElectricDiodeBlockEntity be) { + if (blockEntity instanceof VoltageAlteringBlockEntity be) { be.updateInFrontNextTick(); } diff --git a/src/main/java/com/drmangotea/tfmg/content/electricity/base/VoltageAlteringBlockEntity.java b/src/main/java/com/drmangotea/tfmg/content/electricity/base/VoltageAlteringBlockEntity.java index 7fe68e6f..5e27c82e 100644 --- a/src/main/java/com/drmangotea/tfmg/content/electricity/base/VoltageAlteringBlockEntity.java +++ b/src/main/java/com/drmangotea/tfmg/content/electricity/base/VoltageAlteringBlockEntity.java @@ -1,17 +1,154 @@ package com.drmangotea.tfmg.content.electricity.base; +import com.drmangotea.tfmg.base.blocks.TFMGHorizontalDirectionalBlock; +import net.createmod.catnip.platform.CatnipServices; import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.world.level.ChunkPos; +import net.minecraft.world.level.block.DirectionalBlock; +import net.minecraft.world.level.block.HorizontalDirectionalBlock; import net.minecraft.world.level.block.entity.BlockEntityType; import net.minecraft.world.level.block.state.BlockState; -public abstract class VoltageAlteringBlockEntity extends ElectricBlockEntity{ +import static net.minecraft.world.level.block.DirectionalBlock.FACING; + +public class VoltageAlteringBlockEntity extends ElectricBlockEntity{ + + public boolean updateInFront = false; + public VoltageAlteringBlockEntity(BlockEntityType type, BlockPos pos, BlockState state) { super(type, pos, state); } - public abstract int getOutputVoltage(); - public abstract int getOutputPower(); + public int getOutputVoltage() { + return getData().getVoltage(); + } + + + public int getOutputPower() { + return getPowerUsage(); + } + + @Override + public void tick() { + super.tick(); + if (updateInFront) { + updateInFront(); + updateInFront = false; + } + } + + + + @Override + public int getPowerUsage() { + getOrCreateElectricNetwork().checkForLoops(getBlockPos()); + Direction facing = getDirection(); + if (level.getBlockEntity(getBlockPos().relative(facing)) instanceof IElectric be && be.getData().getId() != data.getId()) { + if (be.hasElectricitySlot(facing.getOpposite())) + + return Math.max(be.getNetworkPowerUsage(this), 0); + + } + + return 0; + + } + + + public IElectric getControlledBlock() { + Direction facing = getBlockState().hasProperty(DirectionalBlock.FACING) ? getBlockState().getValue(DirectionalBlock.FACING) : getBlockState().getValue(HorizontalDirectionalBlock.FACING).getCounterClockWise(); + if (level.getBlockEntity(getBlockPos().relative(facing)) instanceof IElectric be && be.getData().getId() != data.getId()) { + return be; + } + return null; + } + + @Override + public float resistance() { + Direction facing = getDirection(); + if (level.getBlockEntity(getBlockPos().relative(facing)) instanceof IElectric be && be.getData().getId() != data.getId()) { + if (be.hasElectricitySlot(facing.getOpposite())) + return Math.max(be.getNetworkResistance(), 0); + } + return 0; + } + + public Direction getDirection(){ + if(!getBlockState().hasProperty(FACING)){ + return getBlockState().getValue(TFMGHorizontalDirectionalBlock.FACING).getCounterClockWise(); + } + + return getBlockState().getValue(FACING); + } + + @Override + public boolean hasElectricitySlot(Direction direction) { + return getDirection().getOpposite() == direction; + } + + @Override + public void onNetworkChanged(int oldVoltage, int oldPower) { + super.onNetworkChanged(oldVoltage, oldPower); + + if (oldVoltage != getData().getVoltage() || oldPower != getPowerUsage()) { + updateInFront = true; + } + sendStuff(); + setChanged(); + } + + + + @Override + public void remove() { + + super.remove(); + updateInFront(); + } + + @Override + public void onPlaced() { + + super.onPlaced(); + updateInFront = true; + } + + public void updateInFrontNextTick(){ + updateInFront = true; + } + + public void updateInFront() { + + if (level instanceof ServerLevel serverLevel) + CatnipServices.NETWORK.sendToClientsTrackingChunk(serverLevel, new ChunkPos(worldPosition),new UpdateInFrontPacket(BlockPos.of(getPos()))); + Direction facing = getBlockState().hasProperty(FACING) ? getBlockState().getValue(FACING) : getBlockState().getValue(HorizontalDirectionalBlock.FACING).getCounterClockWise(); + if (level.getBlockEntity(getBlockPos().relative(facing)) instanceof IElectric be && be.getData().getId() != data.getId()) { + if (be.hasElectricitySlot(facing.getOpposite())) { + be.updateNextTick(); + + } + } + sendStuff(); + setChanged(); + } + public void updateBehind() { + + if (level instanceof ServerLevel serverLevel) + CatnipServices.NETWORK.sendToClientsTrackingChunk(serverLevel, new ChunkPos(worldPosition),new UpdateInFrontPacket(BlockPos.of(getPos()))); + Direction facing = getBlockState().hasProperty(FACING) ? getBlockState().getValue(FACING) : getBlockState().getValue(HorizontalDirectionalBlock.FACING).getCounterClockWise(); + facing = facing.getOpposite(); + if (level.getBlockEntity(getBlockPos().relative(facing)) instanceof IElectric be && be.getData().getId() != data.getId()) { + if (be.hasElectricitySlot(facing.getOpposite())) { + be.updateNextTick(); + + } + } + sendStuff(); + setChanged(); + } + - public abstract IElectric getControlledBlock(); } diff --git a/src/main/java/com/drmangotea/tfmg/content/electricity/connection/cables/CableConnectorBlockEntity.java b/src/main/java/com/drmangotea/tfmg/content/electricity/connection/cables/CableConnectorBlockEntity.java index f3a9ab10..777ed325 100644 --- a/src/main/java/com/drmangotea/tfmg/content/electricity/connection/cables/CableConnectorBlockEntity.java +++ b/src/main/java/com/drmangotea/tfmg/content/electricity/connection/cables/CableConnectorBlockEntity.java @@ -1,25 +1,34 @@ package com.drmangotea.tfmg.content.electricity.connection.cables; -import com.drmangotea.tfmg.TFMG; 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.simibubi.create.api.equipment.goggles.IHaveHoveringInformation; import com.simibubi.create.foundation.blockEntity.behaviour.BlockEntityBehaviour; - +import net.createmod.catnip.animation.AnimationTickHolder; import net.createmod.catnip.animation.LerpedFloat; +import net.createmod.catnip.math.VecHelper; +import net.createmod.catnip.theme.Color; +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.HolderLookup; import net.minecraft.nbt.CompoundTag; -import net.minecraft.network.chat.Component; import net.minecraft.world.entity.item.ItemEntity; import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.block.entity.BlockEntityType; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.phys.AABB; +import net.minecraft.world.phys.BlockHitResult; +import net.minecraft.world.phys.Vec3; +import net.neoforged.api.distmarker.Dist; +import net.neoforged.api.distmarker.OnlyIn; import java.util.ArrayList; +import java.util.Arrays; import java.util.List; import static com.drmangotea.tfmg.base.blocks.WallMountBlock.FACING; @@ -60,7 +69,7 @@ public class CableConnectorBlockEntity extends ElectricBlockEntity implements IH @Override public boolean hasElectricitySlot(Direction direction) { - if(getBlockState().getValue(EXTENSION)) + if (getBlockState().getValue(EXTENSION)) return direction.getAxis() == getBlockState().getValue(FACING).getAxis(); return direction == getBlockState().getValue(FACING).getOpposite(); @@ -68,17 +77,17 @@ public class CableConnectorBlockEntity extends ElectricBlockEntity implements IH public void notifyRemoval() { - if(level.isClientSide) + if (level.isClientSide) 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.getSpool().get(), (int) (connection.getLength() / 8))); if (itemToDrop.getItem().getCount() > 0) { level.addFreshEntity(itemToDrop); } BlockPos pos = connection.blockPos1; - // level.setBlock(connection.blockPos1.above(), Blocks.GOLD_BLOCK.defaultBlockState(),3); + // level.setBlock(connection.blockPos1.above(), Blocks.GOLD_BLOCK.defaultBlockState(),3); if (level.getBlockEntity(pos) instanceof CableConnectorBlockEntity be) { if (be.getBlockPos() == getBlockPos()) continue; @@ -89,23 +98,22 @@ public class CableConnectorBlockEntity extends ElectricBlockEntity implements IH } } - //@Override - //public float resistance() { - // float resistance = 0; + //@Override + //public float resistance() { + // float resistance = 0; - // for(CableConnection connection : connections){ - // if(connection.visible){ - // resistance+=connection.type.resistivity*connection.getLength(); - // } - // } + // for(CableConnection connection : connections){ + // if(connection.visible){ + // resistance+=connection.type.resistivity*connection.getLength(); + // } + // } - // return resistance; - //} + // return resistance; + //} - - public void removeConnection(){ - connections.removeIf(c->{ + public void removeConnection() { + connections.removeIf(c -> { BlockPos pos = c.blockPos1; return !(level.getBlockEntity(pos) instanceof CableConnectorBlockEntity); @@ -118,7 +126,7 @@ public class CableConnectorBlockEntity extends ElectricBlockEntity implements IH public void onConnected() { super.onConnected(); - for(CableConnectorBlockEntity be : getConnectedWires()){ + for (CableConnectorBlockEntity be : getConnectedWires()) { if (be.getData().getId() != getData().getId()) { be.setNetwork(getData().getId()); @@ -130,17 +138,19 @@ public class CableConnectorBlockEntity extends ElectricBlockEntity implements IH sendStuff(); } - public List getConnectedWires(){ + + public List getConnectedWires() { return getConnectedWires(new ArrayList<>()); } - public List getConnectedWires(List foundList){ + + public List getConnectedWires(List foundList) { - if(!foundList.contains(this)) { + if (!foundList.contains(this)) { foundList.add(this); } - for(CableConnection connection : connections){ + for (CableConnection connection : connections) { BlockPos pos = connection.blockPos1; @@ -148,19 +158,14 @@ public class CableConnectorBlockEntity extends ElectricBlockEntity implements IH //level.setBlockAndUpdate(pos2.above(2), Blocks.DIAMOND_BLOCK.defaultBlockState()); - - - - - - if(pos ==getBlockPos()){ + if (pos == getBlockPos()) { continue; - } - // TFMGUtils.debugMessage(level, "Eﴤ "+connections.size()); + } + // TFMGUtils.debugMessage(level, "Eﴤ "+connections.size()); - if(level.getBlockEntity(pos) instanceof CableConnectorBlockEntity be&&!foundList.contains(be)){ - // TFMGUtils.debugMessage(level, "Bﴤ "+connections.size()); + if (level.getBlockEntity(pos) instanceof CableConnectorBlockEntity be && !foundList.contains(be)) { + // TFMGUtils.debugMessage(level, "Bﴤ "+connections.size()); be.getConnectedWires(foundList); sendStuff(); be.sendStuff(); @@ -172,11 +177,10 @@ public class CableConnectorBlockEntity extends ElectricBlockEntity implements IH } - @Override public void tick() { super.tick(); - if(removeWiresNextTick) { + if (removeWiresNextTick) { removeConnection(); removeWiresNextTick = false; @@ -189,12 +193,11 @@ public class CableConnectorBlockEntity extends ElectricBlockEntity implements IH @Override protected void write(CompoundTag compound, HolderLookup.Provider registries, boolean clientPacket) { - super.write(compound,registries , clientPacket); + super.write(compound, registries, clientPacket); compound.putInt("ConnectionCount", connections.size()); - for (int i = 0; i < connections.size(); i++) { CableConnection connection = connections.get(i); compound.put("Connection" + i, connection.saveConnection()); @@ -211,7 +214,7 @@ public class CableConnectorBlockEntity extends ElectricBlockEntity implements IH @Override protected void read(CompoundTag compound, HolderLookup.Provider registries, boolean clientPacket) { - super.read(compound,registries , clientPacket); + super.read(compound, registries, clientPacket); connections = new ArrayList<>(); for (int i = 0; i < compound.getInt("ConnectionCount"); i++) { @@ -239,4 +242,57 @@ public class CableConnectorBlockEntity extends ElectricBlockEntity implements IH return new AABB(getBlockPos()).inflate(32); } + @OnlyIn(Dist.CLIENT) + public static void tickOutliner() { + Minecraft mc = Minecraft.getInstance(); + if (mc.player == null || mc.level == null || !(mc.hitResult instanceof BlockHitResult result)) + return; + + ClientLevel level = mc.level; + BlockPos pos = result.getBlockPos(); + Player player = mc.player; + ItemStack heldItem = player.getMainHandItem(); + + + if (!(level.getBlockState(pos).getBlock() instanceof CableConnectorBlock)) + return; + + if (!(heldItem.getItem() instanceof SpoolItem)) + return; + + Direction direction = level.getBlockState(pos).getValue(FACING); + + + for (int i = 0; i < 64; i++) { + if (level.getBlockEntity(pos.relative(direction)) instanceof CableConnectorBlockEntity) { + pos = pos.relative(direction); + + } else break; + + } + + int length = 0; + + for (int i = 0; i < 64; i++) { + if (level.getBlockEntity(pos.relative(direction.getOpposite(), i + 1)) instanceof CableConnectorBlockEntity) { + length++; + + } else break; + } + + + + Vec3 center = VecHelper.getCenterOf(pos); + + List axis = new ArrayList<>(Arrays.stream(Direction.Axis.values()).toList()); + axis.remove(direction.getAxis()); + + float size = TFMGBlocks.CABLE_CONNECTOR.has(level.getBlockState(pos)) ? 2.5f : 3.5f; + + Vec3 corner1 = center.relative(direction, 1 / 16f).relative(direction.getClockWise(axis.get(0)), size / 15f).relative(direction.getClockWise(axis.get(1)), size / 15f); + Vec3 corner2 = center.relative(direction.getOpposite(), 8 / 16f + length).relative(direction.getCounterClockWise(axis.get(0)), size / 15f).relative(direction.getCounterClockWise(axis.get(1)), size / 15f); + + TFMGUtils.createOutline(corner1, corner2, "InsulatorOutline", Color.rainbowColor(AnimationTickHolder.getTicks() * 5)); + } } + diff --git a/src/main/java/com/drmangotea/tfmg/content/electricity/lights/LightBulbBlockEntity.java b/src/main/java/com/drmangotea/tfmg/content/electricity/lights/LightBulbBlockEntity.java index 20130193..1ef60eb0 100644 --- a/src/main/java/com/drmangotea/tfmg/content/electricity/lights/LightBulbBlockEntity.java +++ b/src/main/java/com/drmangotea/tfmg/content/electricity/lights/LightBulbBlockEntity.java @@ -77,7 +77,7 @@ public class LightBulbBlockEntity extends ElectricBlockEntity { @Override public float resistance() { - return 100; + return 400; } diff --git a/src/main/java/com/drmangotea/tfmg/content/electricity/utilities/diode/ElectricDiodeBlock.java b/src/main/java/com/drmangotea/tfmg/content/electricity/network/diode/ElectricDiodeBlock.java similarity index 85% rename from src/main/java/com/drmangotea/tfmg/content/electricity/utilities/diode/ElectricDiodeBlock.java rename to src/main/java/com/drmangotea/tfmg/content/electricity/network/diode/ElectricDiodeBlock.java index 804c66c5..298b8ad7 100644 --- a/src/main/java/com/drmangotea/tfmg/content/electricity/utilities/diode/ElectricDiodeBlock.java +++ b/src/main/java/com/drmangotea/tfmg/content/electricity/network/diode/ElectricDiodeBlock.java @@ -1,15 +1,15 @@ -package com.drmangotea.tfmg.content.electricity.utilities.diode; +package com.drmangotea.tfmg.content.electricity.network.diode; import com.drmangotea.tfmg.base.blocks.TFMGDirectionalBlock; import com.drmangotea.tfmg.base.TFMGShapes; import com.drmangotea.tfmg.content.electricity.base.IElectric; import com.drmangotea.tfmg.content.electricity.base.IVoltageChanger; +import com.drmangotea.tfmg.content.electricity.base.VoltageAlteringBlockEntity; import com.drmangotea.tfmg.registry.TFMGBlockEntities; import com.simibubi.create.content.decoration.encasing.EncasableBlock; import com.simibubi.create.foundation.block.IBE; import net.minecraft.core.BlockPos; import net.minecraft.world.InteractionHand; -import net.minecraft.world.InteractionResult; import net.minecraft.world.ItemInteractionResult; import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.ItemStack; @@ -21,7 +21,7 @@ import net.minecraft.world.phys.BlockHitResult; import net.minecraft.world.phys.shapes.CollisionContext; import net.minecraft.world.phys.shapes.VoxelShape; -public class ElectricDiodeBlock extends TFMGDirectionalBlock implements IBE, IVoltageChanger, EncasableBlock { +public class ElectricDiodeBlock extends TFMGDirectionalBlock implements IBE, IVoltageChanger, EncasableBlock { public ElectricDiodeBlock(Properties p_54120_) { super(p_54120_); } @@ -54,12 +54,12 @@ public class ElectricDiodeBlock extends TFMGDirectionalBlock implements IBE getBlockEntityClass() { - return ElectricDiodeBlockEntity.class; + public Class getBlockEntityClass() { + return VoltageAlteringBlockEntity.class; } @Override - public BlockEntityType getBlockEntityType() { + public BlockEntityType getBlockEntityType() { return TFMGBlockEntities.DIODE.get(); } } diff --git a/src/main/java/com/drmangotea/tfmg/content/electricity/utilities/diode/EncasedDiodeBlock.java b/src/main/java/com/drmangotea/tfmg/content/electricity/network/diode/EncasedDiodeBlock.java similarity index 86% rename from src/main/java/com/drmangotea/tfmg/content/electricity/utilities/diode/EncasedDiodeBlock.java rename to src/main/java/com/drmangotea/tfmg/content/electricity/network/diode/EncasedDiodeBlock.java index 4fc76d9a..e502a552 100644 --- a/src/main/java/com/drmangotea/tfmg/content/electricity/utilities/diode/EncasedDiodeBlock.java +++ b/src/main/java/com/drmangotea/tfmg/content/electricity/network/diode/EncasedDiodeBlock.java @@ -1,8 +1,9 @@ -package com.drmangotea.tfmg.content.electricity.utilities.diode; +package com.drmangotea.tfmg.content.electricity.network.diode; import com.drmangotea.tfmg.base.blocks.TFMGDirectionalBlock; import com.drmangotea.tfmg.content.electricity.base.IElectric; import com.drmangotea.tfmg.content.electricity.base.IVoltageChanger; +import com.drmangotea.tfmg.content.electricity.base.VoltageAlteringBlockEntity; import com.drmangotea.tfmg.registry.TFMGBlockEntities; import com.drmangotea.tfmg.registry.TFMGBlocks; import com.simibubi.create.content.decoration.encasing.EncasedBlock; @@ -21,7 +22,7 @@ import net.minecraft.world.level.block.entity.BlockEntityType; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.phys.BlockHitResult; -public class EncasedDiodeBlock extends TFMGDirectionalBlock implements IBE, IVoltageChanger, EncasedBlock, IWrenchable { +public class EncasedDiodeBlock extends TFMGDirectionalBlock implements IBE, IVoltageChanger, EncasedBlock, IWrenchable { public EncasedDiodeBlock(Properties p_54120_) { super(p_54120_); } @@ -59,12 +60,12 @@ public class EncasedDiodeBlock extends TFMGDirectionalBlock implements IBE getBlockEntityClass() { - return ElectricDiodeBlockEntity.class; + public Class getBlockEntityClass() { + return VoltageAlteringBlockEntity.class; } @Override - public BlockEntityType getBlockEntityType() { + public BlockEntityType getBlockEntityType() { return TFMGBlockEntities.DIODE.get(); } diff --git a/src/main/java/com/drmangotea/tfmg/content/electricity/utilities/electric_switch/ElectricSwitchBlock.java b/src/main/java/com/drmangotea/tfmg/content/electricity/network/electric_switch/ElectricSwitchBlock.java similarity index 94% rename from src/main/java/com/drmangotea/tfmg/content/electricity/utilities/electric_switch/ElectricSwitchBlock.java rename to src/main/java/com/drmangotea/tfmg/content/electricity/network/electric_switch/ElectricSwitchBlock.java index d71ca8fb..647a3e02 100644 --- a/src/main/java/com/drmangotea/tfmg/content/electricity/utilities/electric_switch/ElectricSwitchBlock.java +++ b/src/main/java/com/drmangotea/tfmg/content/electricity/network/electric_switch/ElectricSwitchBlock.java @@ -1,4 +1,4 @@ -package com.drmangotea.tfmg.content.electricity.utilities.electric_switch; +package com.drmangotea.tfmg.content.electricity.network.electric_switch; import com.drmangotea.tfmg.base.blocks.TFMGDirectionalBlock; import com.drmangotea.tfmg.content.electricity.base.IElectric; diff --git a/src/main/java/com/drmangotea/tfmg/content/electricity/utilities/electric_switch/ElectricSwitchBlockEntity.java b/src/main/java/com/drmangotea/tfmg/content/electricity/network/electric_switch/ElectricSwitchBlockEntity.java similarity index 82% rename from src/main/java/com/drmangotea/tfmg/content/electricity/utilities/electric_switch/ElectricSwitchBlockEntity.java rename to src/main/java/com/drmangotea/tfmg/content/electricity/network/electric_switch/ElectricSwitchBlockEntity.java index 6b78fb13..7fd23538 100644 --- a/src/main/java/com/drmangotea/tfmg/content/electricity/utilities/electric_switch/ElectricSwitchBlockEntity.java +++ b/src/main/java/com/drmangotea/tfmg/content/electricity/network/electric_switch/ElectricSwitchBlockEntity.java @@ -1,7 +1,6 @@ -package com.drmangotea.tfmg.content.electricity.utilities.electric_switch; +package com.drmangotea.tfmg.content.electricity.network.electric_switch; -import com.drmangotea.tfmg.content.electricity.base.IElectric; -import com.drmangotea.tfmg.content.electricity.utilities.diode.ElectricDiodeBlockEntity; +import com.drmangotea.tfmg.content.electricity.base.VoltageAlteringBlockEntity; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.world.level.block.entity.BlockEntityType; @@ -9,7 +8,7 @@ import net.minecraft.world.level.block.state.BlockState; import static net.minecraft.world.level.block.DirectionalBlock.FACING; -public class ElectricSwitchBlockEntity extends ElectricDiodeBlockEntity { +public class ElectricSwitchBlockEntity extends VoltageAlteringBlockEntity { int signal; boolean signalChanged; diff --git a/src/main/java/com/drmangotea/tfmg/content/electricity/utilities/potentiometer/EncasedPotentiometerBlock.java b/src/main/java/com/drmangotea/tfmg/content/electricity/network/potentiometer/EncasedPotentiometerBlock.java similarity index 97% rename from src/main/java/com/drmangotea/tfmg/content/electricity/utilities/potentiometer/EncasedPotentiometerBlock.java rename to src/main/java/com/drmangotea/tfmg/content/electricity/network/potentiometer/EncasedPotentiometerBlock.java index 2effea91..3024f2b0 100644 --- a/src/main/java/com/drmangotea/tfmg/content/electricity/utilities/potentiometer/EncasedPotentiometerBlock.java +++ b/src/main/java/com/drmangotea/tfmg/content/electricity/network/potentiometer/EncasedPotentiometerBlock.java @@ -1,4 +1,4 @@ -package com.drmangotea.tfmg.content.electricity.utilities.potentiometer; +package com.drmangotea.tfmg.content.electricity.network.potentiometer; import com.drmangotea.tfmg.base.blocks.TFMGDirectionalBlock; import com.drmangotea.tfmg.content.electricity.base.IElectric; diff --git a/src/main/java/com/drmangotea/tfmg/content/electricity/utilities/potentiometer/PotentiometerBlock.java b/src/main/java/com/drmangotea/tfmg/content/electricity/network/potentiometer/PotentiometerBlock.java similarity index 95% rename from src/main/java/com/drmangotea/tfmg/content/electricity/utilities/potentiometer/PotentiometerBlock.java rename to src/main/java/com/drmangotea/tfmg/content/electricity/network/potentiometer/PotentiometerBlock.java index 04acf77c..3e2ad183 100644 --- a/src/main/java/com/drmangotea/tfmg/content/electricity/utilities/potentiometer/PotentiometerBlock.java +++ b/src/main/java/com/drmangotea/tfmg/content/electricity/network/potentiometer/PotentiometerBlock.java @@ -1,4 +1,4 @@ -package com.drmangotea.tfmg.content.electricity.utilities.potentiometer; +package com.drmangotea.tfmg.content.electricity.network.potentiometer; import com.drmangotea.tfmg.base.blocks.TFMGDirectionalBlock; import com.drmangotea.tfmg.base.TFMGShapes; @@ -9,7 +9,6 @@ import com.simibubi.create.content.decoration.encasing.EncasableBlock; import com.simibubi.create.foundation.block.IBE; import net.minecraft.core.BlockPos; import net.minecraft.world.InteractionHand; -import net.minecraft.world.InteractionResult; import net.minecraft.world.ItemInteractionResult; import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.ItemStack; diff --git a/src/main/java/com/drmangotea/tfmg/content/electricity/utilities/potentiometer/PotentiometerBlockEntity.java b/src/main/java/com/drmangotea/tfmg/content/electricity/network/potentiometer/PotentiometerBlockEntity.java similarity index 92% rename from src/main/java/com/drmangotea/tfmg/content/electricity/utilities/potentiometer/PotentiometerBlockEntity.java rename to src/main/java/com/drmangotea/tfmg/content/electricity/network/potentiometer/PotentiometerBlockEntity.java index 09edd12c..a7761578 100644 --- a/src/main/java/com/drmangotea/tfmg/content/electricity/utilities/potentiometer/PotentiometerBlockEntity.java +++ b/src/main/java/com/drmangotea/tfmg/content/electricity/network/potentiometer/PotentiometerBlockEntity.java @@ -1,14 +1,13 @@ -package com.drmangotea.tfmg.content.electricity.utilities.potentiometer; +package com.drmangotea.tfmg.content.electricity.network.potentiometer; import com.drmangotea.tfmg.base.blocks.TFMGHorizontalDirectionalBlock; import com.drmangotea.tfmg.base.lang.TFMGLang; -import com.drmangotea.tfmg.content.electricity.utilities.diode.ElectricDiodeBlockEntity; +import com.drmangotea.tfmg.content.electricity.base.VoltageAlteringBlockEntity; import com.mojang.blaze3d.vertex.PoseStack; import com.simibubi.create.content.kinetics.base.DirectionalKineticBlock; import com.simibubi.create.foundation.blockEntity.behaviour.BlockEntityBehaviour; import com.simibubi.create.foundation.blockEntity.behaviour.ValueBoxTransform; import com.simibubi.create.foundation.blockEntity.behaviour.scrollValue.ScrollValueBehaviour; -import com.simibubi.create.foundation.utility.CreateLang; import dev.engine_room.flywheel.lib.transform.TransformStack; import net.createmod.catnip.math.AngleHelper; import net.createmod.catnip.math.VecHelper; @@ -22,7 +21,7 @@ import net.minecraft.world.phys.Vec3; import java.util.List; -public class PotentiometerBlockEntity extends ElectricDiodeBlockEntity { +public class PotentiometerBlockEntity extends VoltageAlteringBlockEntity { protected ScrollValueBehaviour outputPercentage; diff --git a/src/main/java/com/drmangotea/tfmg/content/electricity/utilities/transformer/ElectromagneticCoilItem.java b/src/main/java/com/drmangotea/tfmg/content/electricity/network/transformer/ElectromagneticCoilItem.java similarity index 85% rename from src/main/java/com/drmangotea/tfmg/content/electricity/utilities/transformer/ElectromagneticCoilItem.java rename to src/main/java/com/drmangotea/tfmg/content/electricity/network/transformer/ElectromagneticCoilItem.java index c4436501..650362bf 100644 --- a/src/main/java/com/drmangotea/tfmg/content/electricity/utilities/transformer/ElectromagneticCoilItem.java +++ b/src/main/java/com/drmangotea/tfmg/content/electricity/network/transformer/ElectromagneticCoilItem.java @@ -1,15 +1,13 @@ -package com.drmangotea.tfmg.content.electricity.utilities.transformer; +package com.drmangotea.tfmg.content.electricity.network.transformer; import com.drmangotea.tfmg.base.lang.TFMGLang; import com.drmangotea.tfmg.registry.TFMGDataComponents; -import com.simibubi.create.foundation.utility.CreateLang; import net.minecraft.ChatFormatting; import net.minecraft.network.chat.Component; import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.TooltipFlag; -import net.minecraft.world.level.Level; import net.neoforged.api.distmarker.Dist; import net.neoforged.api.distmarker.OnlyIn; diff --git a/src/main/java/com/drmangotea/tfmg/content/electricity/utilities/transformer/TransformerBlock.java b/src/main/java/com/drmangotea/tfmg/content/electricity/network/transformer/TransformerBlock.java similarity index 74% rename from src/main/java/com/drmangotea/tfmg/content/electricity/utilities/transformer/TransformerBlock.java rename to src/main/java/com/drmangotea/tfmg/content/electricity/network/transformer/TransformerBlock.java index 743c4210..3b883ecc 100644 --- a/src/main/java/com/drmangotea/tfmg/content/electricity/utilities/transformer/TransformerBlock.java +++ b/src/main/java/com/drmangotea/tfmg/content/electricity/network/transformer/TransformerBlock.java @@ -1,4 +1,4 @@ -package com.drmangotea.tfmg.content.electricity.utilities.transformer; +package com.drmangotea.tfmg.content.electricity.network.transformer; import com.drmangotea.tfmg.base.blocks.TFMGHorizontalDirectionalBlock; import com.drmangotea.tfmg.base.TFMGShapes; @@ -8,8 +8,8 @@ import com.drmangotea.tfmg.registry.TFMGBlockEntities; import com.drmangotea.tfmg.registry.TFMGItems; import com.simibubi.create.foundation.block.IBE; import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; import net.minecraft.world.InteractionHand; -import net.minecraft.world.InteractionResult; import net.minecraft.world.ItemInteractionResult; import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.ItemStack; @@ -34,34 +34,37 @@ public class TransformerBlock extends TFMGHorizontalDirectionalBlock implements @Override protected ItemInteractionResult useItemOn(ItemStack stack, BlockState state, Level level, BlockPos pos, Player player, InteractionHand hand, BlockHitResult hitResult) { - ItemStack inHand = player.getItemInHand(hand); + if(hand == InteractionHand.OFF_HAND) + return ItemInteractionResult.PASS_TO_DEFAULT_BLOCK_INTERACTION; + + ItemStack inHand = player.getItemInHand(hand); if(level.getBlockEntity(pos) instanceof TransformerBlockEntity be){ + Direction facing = state.getValue(FACING); + Direction lookingDirection = TransformerBlockEntity.getCoilDirections(level,pos,hitResult).get(0); + boolean primary =lookingDirection == facing.getClockWise(); + ItemStack coil = primary ? be.primaryCoil : be.secondaryCoil; + + if(inHand.is(TFMGItems.ELECTROMAGNETIC_COIL.get())){ - if(be.primaryCoil.isEmpty()) { - be.primaryCoil = inHand; - player.setItemInHand(hand,ItemStack.EMPTY); - withBlockEntityDo(level, pos, TransformerBlockEntity::updateCoils); - return ItemInteractionResult.SUCCESS; - } - if(be.secondaryCoil.isEmpty()) { - be.secondaryCoil = inHand; + if(coil.isEmpty()) { + if(primary){ + be.primaryCoil = inHand; + }else be.secondaryCoil = inHand; player.setItemInHand(hand,ItemStack.EMPTY); withBlockEntityDo(level, pos, TransformerBlockEntity::updateCoils); return ItemInteractionResult.SUCCESS; } + }else if(inHand.isEmpty()){ - if(!be.primaryCoil.isEmpty()) { - player.setItemInHand(hand,be.primaryCoil); - be.primaryCoil = ItemStack.EMPTY; - withBlockEntityDo(level, pos, TransformerBlockEntity::updateCoils); - return ItemInteractionResult.SUCCESS; - } - if(!be.secondaryCoil.isEmpty()) { - player.setItemInHand(hand,be.secondaryCoil); - be.secondaryCoil = ItemStack.EMPTY; + if(!coil.isEmpty()) { + player.setItemInHand(hand,coil); + if(primary){ + be.primaryCoil = ItemStack.EMPTY; + }else be.secondaryCoil = ItemStack.EMPTY; withBlockEntityDo(level, pos, TransformerBlockEntity::updateCoils); + return ItemInteractionResult.SUCCESS; } diff --git a/src/main/java/com/drmangotea/tfmg/content/electricity/utilities/transformer/TransformerBlockEntity.java b/src/main/java/com/drmangotea/tfmg/content/electricity/network/transformer/TransformerBlockEntity.java similarity index 67% rename from src/main/java/com/drmangotea/tfmg/content/electricity/utilities/transformer/TransformerBlockEntity.java rename to src/main/java/com/drmangotea/tfmg/content/electricity/network/transformer/TransformerBlockEntity.java index 788a7db0..7e7cad55 100644 --- a/src/main/java/com/drmangotea/tfmg/content/electricity/utilities/transformer/TransformerBlockEntity.java +++ b/src/main/java/com/drmangotea/tfmg/content/electricity/network/transformer/TransformerBlockEntity.java @@ -1,32 +1,46 @@ -package com.drmangotea.tfmg.content.electricity.utilities.transformer; +package com.drmangotea.tfmg.content.electricity.network.transformer; -import com.drmangotea.tfmg.TFMG; -import com.drmangotea.tfmg.base.blocks.TFMGHorizontalDirectionalBlock; +import com.drmangotea.tfmg.base.TFMGUtils; import com.drmangotea.tfmg.base.lang.TFMGTexts; import com.drmangotea.tfmg.content.electricity.base.IElectric; -import com.drmangotea.tfmg.content.electricity.base.UpdateInFrontPacket; import com.drmangotea.tfmg.content.electricity.base.VoltageAlteringBlockEntity; +import com.drmangotea.tfmg.registry.TFMGBlocks; import com.drmangotea.tfmg.registry.TFMGDataComponents; -import com.drmangotea.tfmg.registry.TFMGPackets; -import com.simibubi.create.foundation.utility.CreateLang; -import net.createmod.catnip.platform.CatnipServices; -import net.minecraft.ChatFormatting; +import com.drmangotea.tfmg.registry.TFMGItems; +import com.simibubi.create.AllBlocks; +import com.simibubi.create.AllItems; +import com.simibubi.create.content.decoration.girder.GirderWrenchBehavior; +import net.createmod.catnip.animation.AnimationTickHolder; +import net.createmod.catnip.data.Couple; +import net.createmod.catnip.data.Pair; +import net.createmod.catnip.math.VecHelper; +import net.createmod.catnip.placement.IPlacementHelper; +import net.createmod.catnip.theme.Color; +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.HolderLookup; import net.minecraft.nbt.CompoundTag; import net.minecraft.network.chat.Component; -import net.minecraft.server.level.ServerLevel; import net.minecraft.world.entity.item.ItemEntity; +import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.ItemStack; -import net.minecraft.world.level.ChunkPos; -import net.minecraft.world.level.block.DirectionalBlock; -import net.minecraft.world.level.block.HorizontalDirectionalBlock; +import net.minecraft.world.item.Items; +import net.minecraft.world.level.Level; import net.minecraft.world.level.block.entity.BlockEntityType; import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.phys.AABB; +import net.minecraft.world.phys.BlockHitResult; +import net.minecraft.world.phys.Vec3; +import net.neoforged.api.distmarker.Dist; +import net.neoforged.api.distmarker.OnlyIn; +import java.awt.*; +import java.util.ArrayList; +import java.util.Collection; import java.util.List; import static net.minecraft.world.level.block.HorizontalDirectionalBlock.FACING; @@ -53,15 +67,6 @@ public class TransformerBlockEntity extends VoltageAlteringBlockEntity { return coilRatio == 0 ? 0 : getPowerUsage(); } - @Override - public IElectric getControlledBlock() { - Direction facing = getBlockState().hasProperty(DirectionalBlock.FACING) ? getBlockState().getValue(DirectionalBlock.FACING) : getBlockState().getValue(HorizontalDirectionalBlock.FACING).getCounterClockWise(); - if (level.getBlockEntity(getBlockPos().relative(facing)) instanceof IElectric be && be.getData().getId() != data.getId()) { - return be; - } - return null; - } - @Override public void tick() { super.tick(); @@ -144,13 +149,6 @@ public class TransformerBlockEntity extends VoltageAlteringBlockEntity { } return 0; } - public Direction getDirection(){ - if(!getBlockState().hasProperty(DirectionalBlock.FACING)){ - return getBlockState().getValue(TFMGHorizontalDirectionalBlock.FACING).getCounterClockWise(); - } - - return getBlockState().getValue(DirectionalBlock.FACING); - } @Override public boolean hasElectricitySlot(Direction direction) { @@ -186,20 +184,8 @@ public class TransformerBlockEntity extends VoltageAlteringBlockEntity { updateInFront = true; } - public void updateInFront() { - if (level instanceof ServerLevel serverLevel) - CatnipServices.NETWORK.sendToClientsTrackingChunk(serverLevel, new ChunkPos(worldPosition),new UpdateInFrontPacket(BlockPos.of(getPos()))); - Direction facing = getBlockState().hasProperty(DirectionalBlock.FACING) ? getBlockState().getValue(DirectionalBlock.FACING) : getBlockState().getValue(HorizontalDirectionalBlock.FACING).getCounterClockWise(); - if (level.getBlockEntity(getBlockPos().relative(facing)) instanceof IElectric be && be.getData().getId() != data.getId()) { - if (be.hasElectricitySlot(facing.getOpposite())) { - be.updateNextTick(); - } - } - sendStuff(); - setChanged(); - } @Override protected void write(CompoundTag compound, HolderLookup.Provider registries, boolean clientPacket) { super.write(compound,registries , clientPacket); @@ -226,4 +212,48 @@ public class TransformerBlockEntity extends VoltageAlteringBlockEntity { coilRatio = compound.getFloat("CoilRation"); } + + public static List getCoilDirections(Level level, BlockPos pos, BlockHitResult result){ + Direction direction = level.getBlockState(pos).getValue(FACING); + Collection validDirections = new ArrayList<>(); + validDirections.add(direction.getClockWise()); + validDirections.add(direction.getCounterClockWise()); + + + return IPlacementHelper.orderedByDistance(pos, result.getLocation(), validDirections); + + } + + @OnlyIn(Dist.CLIENT) + public static void tickOutliner() { + Minecraft mc = Minecraft.getInstance(); + if (mc.player == null || mc.level == null || !(mc.hitResult instanceof BlockHitResult result)) + return; + + ClientLevel level = mc.level; + BlockPos pos = result.getBlockPos(); + Player player = mc.player; + ItemStack heldItem = player.getMainHandItem(); + + + + if (!TFMGBlocks.TRANSFORMER.has(level.getBlockState(pos))) + return; + + if (!(TFMGItems.ELECTROMAGNETIC_COIL.isIn(heldItem)|| heldItem.is(Items.AIR))) + return; + + Direction direction = level.getBlockState(pos).getValue(FACING); + + + Direction coilDirection = getCoilDirections(level,pos,result).get(0); + ///////// + + Vec3 center = VecHelper.getCenterOf(pos); + + Vec3 corner1 = center.relative(coilDirection,7/16f).relative(direction,3/16f).relative(Direction.UP,5.75/16f); + Vec3 corner2 = center.relative(coilDirection,1/16f).relative(direction.getOpposite(),3/16f).relative(Direction.DOWN,1.75/16f); + + TFMGUtils.createOutline(corner1,corner2,"CoilOutline", Color.rainbowColor(AnimationTickHolder.getTicks() * 5)); + } } diff --git a/src/main/java/com/drmangotea/tfmg/content/electricity/utilities/transformer/TransformerRenderer.java b/src/main/java/com/drmangotea/tfmg/content/electricity/network/transformer/TransformerRenderer.java similarity index 96% rename from src/main/java/com/drmangotea/tfmg/content/electricity/utilities/transformer/TransformerRenderer.java rename to src/main/java/com/drmangotea/tfmg/content/electricity/network/transformer/TransformerRenderer.java index c0c08f31..f9de7fef 100644 --- a/src/main/java/com/drmangotea/tfmg/content/electricity/utilities/transformer/TransformerRenderer.java +++ b/src/main/java/com/drmangotea/tfmg/content/electricity/network/transformer/TransformerRenderer.java @@ -1,4 +1,4 @@ -package com.drmangotea.tfmg.content.electricity.utilities.transformer; +package com.drmangotea.tfmg.content.electricity.network.transformer; import com.drmangotea.tfmg.registry.TFMGPartialModels; import com.mojang.blaze3d.vertex.PoseStack; diff --git a/src/main/java/com/drmangotea/tfmg/content/electricity/storage/AccumulatorBlockEntity.java b/src/main/java/com/drmangotea/tfmg/content/electricity/storage/AccumulatorBlockEntity.java index e1bdf57b..7c537e14 100644 --- a/src/main/java/com/drmangotea/tfmg/content/electricity/storage/AccumulatorBlockEntity.java +++ b/src/main/java/com/drmangotea/tfmg/content/electricity/storage/AccumulatorBlockEntity.java @@ -1,6 +1,5 @@ package com.drmangotea.tfmg.content.electricity.storage; -import com.drmangotea.tfmg.base.TFMGUtils; import com.drmangotea.tfmg.base.lang.TFMGTexts; import com.drmangotea.tfmg.config.TFMGConfigs; import com.drmangotea.tfmg.content.electricity.base.ElectricBlockEntity; @@ -8,7 +7,6 @@ import com.drmangotea.tfmg.content.electricity.base.IElectric; import com.drmangotea.tfmg.content.electricity.utilities.converter.ConverterBlockEntity; import com.drmangotea.tfmg.registry.TFMGBlockEntities; import com.drmangotea.tfmg.registry.TFMGDataComponents; -import com.simibubi.create.foundation.utility.CreateLang; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.core.HolderLookup; @@ -277,7 +275,7 @@ public class AccumulatorBlockEntity extends ElectricBlockEntity { public int getChargingRate() { // // int chargingRate = Math.max((data.networkPowerGeneration - getNetworkPowerUsage()), 0); - if (energy.getEnergyStored() >= getMaxCapacity() || getData().getVoltage() < getOutputVoltage() || canPower() || data.notEnoughtPower) + if (energy.getEnergyStored() >= getMaxCapacity() || getData().getVoltage() < getOutputVoltage() || canPower() || data.notEnoughPower) return 0; //return Math.min(chargingRate, getMaxChargingRate()); diff --git a/src/main/java/com/drmangotea/tfmg/content/electricity/utilities/converter/ConverterBlockEntity.java b/src/main/java/com/drmangotea/tfmg/content/electricity/utilities/converter/ConverterBlockEntity.java index 6893ac3f..bd8d4104 100644 --- a/src/main/java/com/drmangotea/tfmg/content/electricity/utilities/converter/ConverterBlockEntity.java +++ b/src/main/java/com/drmangotea/tfmg/content/electricity/utilities/converter/ConverterBlockEntity.java @@ -1,7 +1,5 @@ package com.drmangotea.tfmg.content.electricity.utilities.converter; -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.config.TFMGConfigs; @@ -9,15 +7,12 @@ import com.drmangotea.tfmg.content.electricity.base.ElectricBlockEntity; import com.drmangotea.tfmg.content.electricity.base.IElectric; import com.drmangotea.tfmg.content.electricity.storage.AccumulatorBlockEntity; import com.drmangotea.tfmg.content.electricity.storage.TFMGForgeEnergyStorage; -import com.drmangotea.tfmg.content.machinery.misc.winding_machine.WindingMachineBlockEntity; import com.drmangotea.tfmg.registry.TFMGBlockEntities; import com.simibubi.create.foundation.blockEntity.behaviour.BlockEntityBehaviour; import com.simibubi.create.foundation.blockEntity.behaviour.ValueBoxTransform; import com.simibubi.create.foundation.blockEntity.behaviour.scrollValue.ScrollValueBehaviour; -import com.simibubi.create.foundation.utility.CreateLang; import net.createmod.catnip.math.VecHelper; -import net.minecraft.ChatFormatting; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.core.HolderLookup; @@ -29,9 +24,6 @@ import net.minecraft.world.phys.Vec3; import net.neoforged.neoforge.capabilities.Capabilities; import net.neoforged.neoforge.capabilities.RegisterCapabilitiesEvent; import net.neoforged.neoforge.energy.IEnergyStorage; -import org.jetbrains.annotations.NotNull; - -import javax.annotation.Nullable; import java.util.List; @@ -134,7 +126,7 @@ public class ConverterBlockEntity extends ElectricBlockEntity { public int getChargingRate() { // // int chargingRate = Math.max((data.networkPowerGeneration - getNetworkPowerUsage()), 0); - if (energy.getEnergyStored() == getMaxCapacity() || getData().getVoltage() < voltageGenerated.value || canPower()|| data.notEnoughtPower) + if (energy.getEnergyStored() == getMaxCapacity() || getData().getVoltage() < voltageGenerated.value || canPower()|| data.notEnoughPower) return 0; //return Math.min(chargingRate, getMaxChargingRate()); diff --git a/src/main/java/com/drmangotea/tfmg/content/electricity/utilities/diode/ElectricDiodeBlockEntity.java b/src/main/java/com/drmangotea/tfmg/content/electricity/utilities/diode/ElectricDiodeBlockEntity.java deleted file mode 100644 index ceef479f..00000000 --- a/src/main/java/com/drmangotea/tfmg/content/electricity/utilities/diode/ElectricDiodeBlockEntity.java +++ /dev/null @@ -1,163 +0,0 @@ -package com.drmangotea.tfmg.content.electricity.utilities.diode; - - -import com.drmangotea.tfmg.base.blocks.TFMGHorizontalDirectionalBlock; -import com.drmangotea.tfmg.content.electricity.base.IElectric; -import com.drmangotea.tfmg.content.electricity.base.UpdateInFrontPacket; -import com.drmangotea.tfmg.content.electricity.base.VoltageAlteringBlockEntity; -import com.drmangotea.tfmg.registry.TFMGPackets; -import net.createmod.catnip.platform.CatnipServices; -import net.minecraft.core.BlockPos; -import net.minecraft.core.Direction; -import net.minecraft.server.level.ServerLevel; -import net.minecraft.world.level.ChunkPos; -import net.minecraft.world.level.block.DirectionalBlock; -import net.minecraft.world.level.block.HorizontalDirectionalBlock; -import net.minecraft.world.level.block.entity.BlockEntityType; -import net.minecraft.world.level.block.state.BlockState; - - -import static net.minecraft.world.level.block.DirectionalBlock.FACING; - -public class ElectricDiodeBlockEntity extends VoltageAlteringBlockEntity { - - public boolean updateInFront = false; - - - public ElectricDiodeBlockEntity(BlockEntityType type, BlockPos pos, BlockState state) { - super(type, pos, state); - } - - @Override - public int getOutputVoltage() { - return getData().getVoltage(); - } - - @Override - public int getOutputPower() { - return getPowerUsage(); - } - - @Override - public void tick() { - super.tick(); - if (updateInFront) { - updateInFront(); - updateInFront = false; - } - } - - @Override - public void lazyTick() { - super.lazyTick(); - - } - - @Override - public int getPowerUsage() { - getOrCreateElectricNetwork().checkForLoops(getBlockPos()); - Direction facing = getDirection(); - if (level.getBlockEntity(getBlockPos().relative(facing)) instanceof IElectric be && be.getData().getId() != data.getId()) { - if (be.hasElectricitySlot(facing.getOpposite())) - - return Math.max(be.getNetworkPowerUsage(this), 0); - - } - - return 0; - - } - - @Override - public IElectric getControlledBlock() { - Direction facing = getBlockState().hasProperty(DirectionalBlock.FACING) ? getBlockState().getValue(DirectionalBlock.FACING) : getBlockState().getValue(HorizontalDirectionalBlock.FACING).getCounterClockWise(); - if (level.getBlockEntity(getBlockPos().relative(facing)) instanceof IElectric be && be.getData().getId() != data.getId()) { - return be; - } - return null; - } - - @Override - public float resistance() { - Direction facing = getDirection(); - if (level.getBlockEntity(getBlockPos().relative(facing)) instanceof IElectric be && be.getData().getId() != data.getId()) { - if (be.hasElectricitySlot(facing.getOpposite())) - return Math.max(be.getNetworkResistance(), 0); - } - return 0; - } - - public Direction getDirection(){ - if(!getBlockState().hasProperty(FACING)){ - return getBlockState().getValue(TFMGHorizontalDirectionalBlock.FACING).getCounterClockWise(); - } - - return getBlockState().getValue(FACING); - } - - @Override - public boolean hasElectricitySlot(Direction direction) { - return getDirection().getOpposite() == direction; - } - - @Override - public void onNetworkChanged(int oldVoltage, int oldPower) { - super.onNetworkChanged(oldVoltage, oldPower); - - if (oldVoltage != getData().getVoltage() || oldPower != getPowerUsage()) { - updateInFront = true; - } - sendStuff(); - setChanged(); - } - - - - @Override - public void remove() { - - super.remove(); - updateInFront(); - } - - @Override - public void onPlaced() { - - super.onPlaced(); - updateInFront = true; - } - - public void updateInFrontNextTick(){ - updateInFront = true; - } - - public void updateInFront() { - - if (level instanceof ServerLevel serverLevel) - CatnipServices.NETWORK.sendToClientsTrackingChunk(serverLevel, new ChunkPos(worldPosition),new UpdateInFrontPacket(BlockPos.of(getPos()))); - Direction facing = getBlockState().hasProperty(FACING) ? getBlockState().getValue(FACING) : getBlockState().getValue(HorizontalDirectionalBlock.FACING).getCounterClockWise(); - if (level.getBlockEntity(getBlockPos().relative(facing)) instanceof IElectric be && be.getData().getId() != data.getId()) { - if (be.hasElectricitySlot(facing.getOpposite())) { - be.updateNextTick(); - - } - } - sendStuff(); - setChanged(); - } - public void updateBehind() { - - if (level instanceof ServerLevel serverLevel) - CatnipServices.NETWORK.sendToClientsTrackingChunk(serverLevel, new ChunkPos(worldPosition),new UpdateInFrontPacket(BlockPos.of(getPos()))); - Direction facing = getBlockState().hasProperty(FACING) ? getBlockState().getValue(FACING) : getBlockState().getValue(HorizontalDirectionalBlock.FACING).getCounterClockWise(); - facing = facing.getOpposite(); - if (level.getBlockEntity(getBlockPos().relative(facing)) instanceof IElectric be && be.getData().getId() != data.getId()) { - if (be.hasElectricitySlot(facing.getOpposite())) { - be.updateNextTick(); - - } - } - sendStuff(); - setChanged(); - } -} diff --git a/src/main/java/com/drmangotea/tfmg/content/electricity/utilities/electric_motor/ElectricMotorBlockEntity.java b/src/main/java/com/drmangotea/tfmg/content/electricity/utilities/electric_motor/ElectricMotorBlockEntity.java index af471cba..ec0f37bb 100644 --- a/src/main/java/com/drmangotea/tfmg/content/electricity/utilities/electric_motor/ElectricMotorBlockEntity.java +++ b/src/main/java/com/drmangotea/tfmg/content/electricity/utilities/electric_motor/ElectricMotorBlockEntity.java @@ -127,7 +127,7 @@ public class ElectricMotorBlockEntity extends KineticElectricBlockEntity { @Override public float calculateAddedStressCapacity() { - float speedModifier = getSpeed()/256; + float speedModifier = Math.abs(getSpeed()/256); return (int)(super.calculateAddedStressCapacity()*speedModifier); diff --git a/src/main/java/com/drmangotea/tfmg/content/engines/base/EngineCTBehavior.java b/src/main/java/com/drmangotea/tfmg/content/engines/base/EngineCTBehavior.java index 9c1a1c2f..7673403c 100644 --- a/src/main/java/com/drmangotea/tfmg/content/engines/base/EngineCTBehavior.java +++ b/src/main/java/com/drmangotea/tfmg/content/engines/base/EngineCTBehavior.java @@ -39,18 +39,14 @@ public class EngineCTBehavior extends ConnectedTextureBehaviour.Base { @Override public boolean connectsTo(BlockState state, BlockState other, BlockAndTintGetter reader, BlockPos pos, BlockPos otherPos, Direction face) { - //if(reader.getBlockEntity(pos) instanceof AbstractEngineBlockEntity be && reader.getBlockEntity(otherPos) instanceof AbstractEngineBlockEntity be2){ - // if(be.controller.asLong()==be2.controller.asLong()) - // return true; - //} - // return false; - return true; + return reader.getBlockEntity(pos) instanceof AbstractEngineBlockEntity be && reader.getBlockEntity(otherPos) instanceof AbstractEngineBlockEntity be2; + } @Override protected Direction getUpDirection(BlockAndTintGetter reader, BlockPos pos, BlockState state, Direction face) { if(face.getAxis().isVertical()) - return state.getValue(HORIZONTAL_FACING); + return state.getValue(EngineBlock.SHAFT_FACING); return super.getUpDirection(reader, pos, state, face); } } diff --git a/src/main/java/com/drmangotea/tfmg/content/engines/types/AbstractSmallEngineBlockEntity.java b/src/main/java/com/drmangotea/tfmg/content/engines/types/AbstractSmallEngineBlockEntity.java index d47130a0..6daa3aee 100644 --- a/src/main/java/com/drmangotea/tfmg/content/engines/types/AbstractSmallEngineBlockEntity.java +++ b/src/main/java/com/drmangotea/tfmg/content/engines/types/AbstractSmallEngineBlockEntity.java @@ -601,65 +601,69 @@ public abstract class AbstractSmallEngineBlockEntity extends AbstractEngineBlock public void connect() { + try { + Direction facing = getBlockState().getValue(HORIZONTAL_FACING); + Direction updateDirection = facing.getOpposite(); - Direction facing = getBlockState().getValue(HORIZONTAL_FACING); - Direction updateDirection = facing.getOpposite(); - - if (level.getBlockEntity(getBlockPos().relative(facing)) instanceof AbstractSmallEngineBlockEntity be && be.getBlockState().getBlock() == this.getBlockState().getBlock()) { - be.connect(); - return; - } - - engines = new ArrayList<>(); - - for (int i = 0; i < getMaxLength(); i++) { - BlockPos pos = getBlockPos().relative(updateDirection, i); - if (level.getBlockEntity(pos) instanceof AbstractSmallEngineBlockEntity be) { - if (be.getBlockState().getValue(HORIZONTAL_FACING) != facing) { - return; - } - - level.setBlock(be.getBlockPos(), be.getBlockState().setValue(SHAFT_FACING, be.getBlockPos() == this.getBlockPos() ? facing : updateDirection), 2); - - //if (be instanceof RegularEngineBlockEntity be1 && this instanceof RegularEngineBlockEntity be2 && be1.type != be2.type) { - // setBlockStates(this, getBlockPos().relative(updateDirection, i - 1)); - // TFMG.LOGGER.debug("set blockstates"); - // return; - //} - be.detashEngines(); - engines.add(pos.asLong()); - - // level.setBlock(be.getBlockPos().above(), Blocks.GOLD_BLOCK.defaultBlockState(),3); - - be.engineNumber = i; - be.engines = new ArrayList<>(); - be.controller = getBlockPos(); - be.refreshCapability(); - - setBlockStates(be, null); - updateGeneratedRotation(); - onUpdated(); - be.sendData(); - be.setChanged(); - - if (be.getBlockState().getValue(ENGINE_STATE) != NORMAL && i != 0) { - setBlockStates(this, getBlockPos().relative(updateDirection, i - 1)); - break; - } - if (i == getMaxLength() - 1) - setBlockStates(this, getBlockPos().relative(updateDirection, i)); - - - } else { - setBlockStates(this, getBlockPos().relative(updateDirection, i - 1)); + if (level.getBlockEntity(getBlockPos().relative(facing)) instanceof AbstractSmallEngineBlockEntity be && be.getBlockState().getBlock() == this.getBlockState().getBlock()) { + be.connect(); return; } - } - updateGeneratedRotation(); - updateRotation(); - setChanged(); - sendData(); + engines = new ArrayList<>(); + + for (int i = 0; i < getMaxLength(); i++) { + BlockPos pos = getBlockPos().relative(updateDirection, i); + if (level.getBlockEntity(pos) instanceof AbstractSmallEngineBlockEntity be) { + if (be.getBlockState().getValue(HORIZONTAL_FACING) != facing) { + return; + } + + level.setBlock(be.getBlockPos(), be.getBlockState().setValue(SHAFT_FACING, be.getBlockPos() == this.getBlockPos() ? facing : updateDirection), 2); + + //if (be instanceof RegularEngineBlockEntity be1 && this instanceof RegularEngineBlockEntity be2 && be1.type != be2.type) { + // setBlockStates(this, getBlockPos().relative(updateDirection, i - 1)); + // TFMG.LOGGER.debug("set blockstates"); + // return; + //} + be.detashEngines(); + engines.add(pos.asLong()); + + // level.setBlock(be.getBlockPos().above(), Blocks.GOLD_BLOCK.defaultBlockState(),3); + + be.engineNumber = i; + be.engines = new ArrayList<>(); + be.controller = getBlockPos(); + be.refreshCapability(); + + setBlockStates(be, null); + updateGeneratedRotation(); + onUpdated(); + be.sendData(); + be.setChanged(); + + if (be.getBlockState().getValue(ENGINE_STATE) != NORMAL && i != 0) { + setBlockStates(this, getBlockPos().relative(updateDirection, i - 1)); + break; + } + if (i == getMaxLength() - 1) + setBlockStates(this, getBlockPos().relative(updateDirection, i)); + + + } else { + setBlockStates(this, getBlockPos().relative(updateDirection, i - 1)); + return; + } + } + + updateGeneratedRotation(); + updateRotation(); + setChanged(); + sendData(); + + } catch (StackOverflowError ignored){ + + } } diff --git a/src/main/java/com/drmangotea/tfmg/content/items/weapons/fire_extinguisher/FireExtinguisherItem.java b/src/main/java/com/drmangotea/tfmg/content/items/weapons/fire_extinguisher/FireExtinguisherItem.java new file mode 100644 index 00000000..b2ba9dc7 --- /dev/null +++ b/src/main/java/com/drmangotea/tfmg/content/items/weapons/fire_extinguisher/FireExtinguisherItem.java @@ -0,0 +1,117 @@ +package com.drmangotea.tfmg.content.items.weapons.fire_extinguisher; + +import com.drmangotea.tfmg.TFMGClient; +import com.drmangotea.tfmg.base.spark.DryIceFlake; +import com.drmangotea.tfmg.registry.TFMGEntityTypes; +import com.simibubi.create.foundation.item.CustomArmPoseItem; +import net.minecraft.client.model.HumanoidModel; +import net.minecraft.client.player.AbstractClientPlayer; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.sounds.SoundEvents; +import net.minecraft.sounds.SoundSource; +import net.minecraft.world.InteractionHand; +import net.minecraft.world.InteractionResultHolder; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.item.Item; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.UseAnim; +import net.minecraft.world.level.Level; +import org.jetbrains.annotations.Nullable; + +import static com.drmangotea.tfmg.registry.TFMGDataComponents.AMOUNT; + +public class FireExtinguisherItem extends Item implements CustomArmPoseItem { + + + public static final int DRY_ICE_CAPACITY = 500; + + + public FireExtinguisherItem(Properties pProperties) { + super(pProperties); + } + + + public void onUseTick(Level level, LivingEntity entity, ItemStack stack, int time) { + + + + int fillLevel = stack.getOrDefault(AMOUNT,0); + if(fillLevel == 0) return; + + DryIceFlake flake = TFMGEntityTypes.DRY_ICE_FLAKE.create(level); + flake.setPos(entity.getX(),entity.getY()+1.2f,entity.getZ()); + + level.playSound(null, entity.getX(), entity.getY(), entity.getZ(), SoundEvents.FIRE_EXTINGUISH, SoundSource.NEUTRAL, 0.1F, 0.04F); + + stack.set(AMOUNT,fillLevel > 0? fillLevel - 1 : 0); + + flake.shoot(entity.getLookAngle().x,entity.getLookAngle().y,entity.getLookAngle().z,0.5f,10.0f); + + level.addFreshEntity(flake); + + } + + @Override + public void onCraftedBy(ItemStack stack, Level level, Player player) { + super.onCraftedBy(stack, level, player); + stack.set(AMOUNT,500); + } + + public int getUseDuration(ItemStack stack) { + return 696969; + } + + @Override + public boolean isBarVisible(ItemStack stack) { + return true; + } + + @Override + public int getBarColor(ItemStack stack) { + return 0xffffff; + } + + @Override + public int getBarWidth(ItemStack stack) { + + float fillLevel = (float)stack.getOrDefault(AMOUNT,0) / (float)DRY_ICE_CAPACITY; + return Math.round(13.0f * fillLevel); + + } + + public InteractionResultHolder use(Level level, Player player, InteractionHand hand) { + player.startUsingItem(hand); + + + + return InteractionResultHolder.pass(player.getItemInHand(hand)); + } + @Override + public boolean shouldCauseReequipAnimation(ItemStack oldStack, ItemStack newStack, boolean slotChanged) { + return slotChanged || newStack.getItem() != oldStack.getItem(); + } + @Override + public boolean onEntitySwing(ItemStack stack, LivingEntity entity, InteractionHand hand) { + return true; + } + + + @Override + @Nullable + public HumanoidModel.ArmPose getArmPose(ItemStack stack, AbstractClientPlayer player, InteractionHand hand) { + if (!player.swinging) { + return HumanoidModel.ArmPose.CROSSBOW_HOLD; + } + return null; + } + @Override + public int getUseDuration(ItemStack stack, LivingEntity entity) { + return 1000; + } + + @Override + public UseAnim getUseAnimation(ItemStack pStack) { + return UseAnim.NONE; + } +} diff --git a/src/main/java/com/drmangotea/tfmg/content/items/weapons/flamethrover/FlamethrowerItem.java b/src/main/java/com/drmangotea/tfmg/content/items/weapons/flamethrover/FlamethrowerItem.java index 722c827f..1d87d114 100644 --- a/src/main/java/com/drmangotea/tfmg/content/items/weapons/flamethrover/FlamethrowerItem.java +++ b/src/main/java/com/drmangotea/tfmg/content/items/weapons/flamethrover/FlamethrowerItem.java @@ -158,6 +158,7 @@ public class FlamethrowerItem extends Item implements CustomArmPoseItem { return InteractionResultHolder.pass(player.getItemInHand(hand)); } + @Override public int getUseDuration(ItemStack stack, LivingEntity entity) { return 1000; diff --git a/src/main/java/com/drmangotea/tfmg/content/machinery/misc/flarestack/FlarestackBlockEntity.java b/src/main/java/com/drmangotea/tfmg/content/machinery/misc/flarestack/FlarestackBlockEntity.java index 7b13b86e..5abaddd0 100644 --- a/src/main/java/com/drmangotea/tfmg/content/machinery/misc/flarestack/FlarestackBlockEntity.java +++ b/src/main/java/com/drmangotea/tfmg/content/machinery/misc/flarestack/FlarestackBlockEntity.java @@ -151,14 +151,6 @@ public class FlarestackBlockEntity extends SmartBlockEntity implements IHaveGogg } - //@Nonnull - //@Override - //public LazyOptional getCapability(@Nonnull Capability cap, @Nullable Direction side) { -// - // if (cap == ForgeCapabilities.FLUID_HANDLER) - // return fluidCapability.cast(); - // return super.getCapability(cap, side); - //} diff --git a/src/main/java/com/drmangotea/tfmg/content/machinery/misc/gas_lamp/GasLampBlock.java b/src/main/java/com/drmangotea/tfmg/content/machinery/misc/gas_lamp/GasLampBlock.java new file mode 100644 index 00000000..7bea1e01 --- /dev/null +++ b/src/main/java/com/drmangotea/tfmg/content/machinery/misc/gas_lamp/GasLampBlock.java @@ -0,0 +1,54 @@ +package com.drmangotea.tfmg.content.machinery.misc.gas_lamp; + +import com.drmangotea.tfmg.base.TFMGShapes; +import com.drmangotea.tfmg.registry.TFMGBlockEntities; +import com.simibubi.create.foundation.block.IBE; +import net.minecraft.core.BlockPos; +import net.minecraft.world.item.context.BlockPlaceContext; +import net.minecraft.world.level.BlockGetter; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.entity.BlockEntityType; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.block.state.StateDefinition; +import net.minecraft.world.level.block.state.properties.BlockStateProperties; +import net.minecraft.world.level.block.state.properties.BooleanProperty; +import net.minecraft.world.phys.shapes.CollisionContext; +import net.minecraft.world.phys.shapes.VoxelShape; + +import javax.annotation.Nullable; + +public class GasLampBlock extends Block implements IBE { + public static final BooleanProperty LIT = BlockStateProperties.LIT; + + public GasLampBlock(Properties properties) { + super(properties); + this.registerDefaultState(this.stateDefinition.any().setValue(LIT, false)); + } + + + @Override + public VoxelShape getShape(BlockState pState, BlockGetter worldIn, BlockPos pos, CollisionContext context) { + + return TFMGShapes.GAS_LAMP; + } + @Nullable + public BlockState getStateForPlacement(BlockPlaceContext context) { + + return this.defaultBlockState().setValue(LIT, Boolean.FALSE); + } + + + protected void createBlockStateDefinition(StateDefinition.Builder p_51305_) { + p_51305_.add(LIT); + } + + @Override + public Class getBlockEntityClass() { + return GasLampBlockEntity.class; + } + + @Override + public BlockEntityType getBlockEntityType() { + return TFMGBlockEntities.GAS_LAMP.get(); + } +} diff --git a/src/main/java/com/drmangotea/tfmg/content/machinery/misc/gas_lamp/GasLampBlockEntity.java b/src/main/java/com/drmangotea/tfmg/content/machinery/misc/gas_lamp/GasLampBlockEntity.java new file mode 100644 index 00000000..571619fc --- /dev/null +++ b/src/main/java/com/drmangotea/tfmg/content/machinery/misc/gas_lamp/GasLampBlockEntity.java @@ -0,0 +1,116 @@ +package com.drmangotea.tfmg.content.machinery.misc.gas_lamp; + +import com.drmangotea.tfmg.base.TFMGUtils; +import com.drmangotea.tfmg.registry.TFMGTags; +import com.simibubi.create.api.equipment.goggles.IHaveGoggleInformation; +import com.simibubi.create.foundation.blockEntity.SmartBlockEntity; +import com.simibubi.create.foundation.blockEntity.behaviour.BlockEntityBehaviour; +import com.simibubi.create.foundation.fluid.SmartFluidTank; +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.world.level.block.entity.BlockEntityType; +import net.minecraft.world.level.block.state.BlockState; +import net.neoforged.neoforge.fluids.FluidStack; +import net.neoforged.neoforge.fluids.capability.IFluidHandler; +import net.neoforged.neoforge.fluids.capability.templates.FluidTank; + + +import javax.annotation.Nonnull; +import javax.annotation.Nullable; +import java.util.List; + +public class GasLampBlockEntity extends SmartBlockEntity implements IHaveGoggleInformation { + + + public FluidTank tankInventory; + + public int lightTimer = 0; + + + public GasLampBlockEntity(BlockEntityType type, BlockPos pos, BlockState state) { + super(type, pos, state); + tankInventory = createInventory(); + + } + + protected SmartFluidTank createInventory() { + return new SmartFluidTank(4000, this::onFluidStackChanged) { + @Override + public boolean isFluidValid(FluidStack stack) { + return stack.getFluid().is(TFMGTags.TFMGFluidTags.FLAMMABLE.tag)|| + stack.getFluid().is(TFMGTags.TFMGFluidTags.FUEL.tag); + } + }; + } + + + + + + + @Override + public void invalidate() { + super.invalidate(); + invalidateCapabilities(); + } + + protected void onFluidStackChanged(FluidStack newFluidStack) { + if (!hasLevel()) return; + sendData(); + setChanged(); + } + + @Override + @SuppressWarnings("removal") + public boolean addToGoggleTooltip(List tooltip, boolean isPlayerSneaking) { + return TFMGUtils.createFluidTooltip(this, tooltip); + } + + @Override + public void tick() { + super.tick(); + + if (tankInventory.isEmpty() || !tankInventory.isFluidValid(tankInventory.getFluid())) { + level.setBlock(getBlockPos(), this.getBlockState() + .setValue(GasLampBlock.LIT, false), 2); + return; + } + + + if (tankInventory.getFluidAmount() > 0) { + if (level.random.nextInt(20) == 0) + tankInventory.drain(1, IFluidHandler.FluidAction.EXECUTE); + lightTimer = 100; + } + + if (lightTimer > 0) { + lightTimer--; + level.setBlock(getBlockPos(), this.getBlockState() + .setValue(GasLampBlock.LIT, true), 2); + } + } + + @Override + protected void read(CompoundTag compound, HolderLookup.Provider registries, boolean clientPacket) { + super.read(compound,registries , clientPacket); + + tankInventory.readFromNBT(registries,compound.getCompound("TankContent")); + } + + @Override + public void write(CompoundTag compound, HolderLookup.Provider registries, boolean clientPacket) { + super.write(compound,registries , clientPacket); + compound.put("TankContent", tankInventory.writeToNBT(registries,new CompoundTag())); + + + + } + + @Override + public void addBehaviours(List behaviours) { + } + +} diff --git a/src/main/java/com/drmangotea/tfmg/content/machinery/misc/gas_lamp/GasLampGenerator.java b/src/main/java/com/drmangotea/tfmg/content/machinery/misc/gas_lamp/GasLampGenerator.java new file mode 100644 index 00000000..228eab24 --- /dev/null +++ b/src/main/java/com/drmangotea/tfmg/content/machinery/misc/gas_lamp/GasLampGenerator.java @@ -0,0 +1,33 @@ +package com.drmangotea.tfmg.content.machinery.misc.gas_lamp; + +import com.drmangotea.tfmg.content.machinery.misc.flarestack.FlarestackBlock; +import com.simibubi.create.foundation.data.SpecialBlockStateGen; +import com.tterrag.registrate.providers.DataGenContext; +import com.tterrag.registrate.providers.RegistrateBlockstateProvider; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.state.BlockState; +import net.neoforged.neoforge.client.model.generators.ModelFile; + + +import static com.simibubi.create.foundation.data.AssetLookup.partialBaseModel; + +public class GasLampGenerator extends SpecialBlockStateGen { + + @Override + protected int getXRotation(BlockState state) { + return 0; + } + + @Override + protected int getYRotation(BlockState state) { + return 0; + } + + @Override + public ModelFile getModel(DataGenContext ctx, RegistrateBlockstateProvider prov, + BlockState state) { + + return state.getValue(FlarestackBlock.LIT) ? partialBaseModel(ctx, prov, "lit") + : partialBaseModel(ctx, prov); + } +} diff --git a/src/main/java/com/drmangotea/tfmg/content/machinery/misc/winding_machine/SpoolItem.java b/src/main/java/com/drmangotea/tfmg/content/machinery/misc/winding_machine/SpoolItem.java index 5982602e..bf0a6cf9 100644 --- a/src/main/java/com/drmangotea/tfmg/content/machinery/misc/winding_machine/SpoolItem.java +++ b/src/main/java/com/drmangotea/tfmg/content/machinery/misc/winding_machine/SpoolItem.java @@ -37,6 +37,7 @@ import net.neoforged.api.distmarker.OnlyIn; import java.util.List; import java.util.Objects; +import static com.drmangotea.tfmg.base.blocks.WallMountBlock.FACING; import static com.simibubi.create.foundation.utility.Debug.debugMessage; public class SpoolItem extends Item { @@ -113,8 +114,19 @@ public class SpoolItem extends Item { if(Objects.equals(cableTypeKey, TFMG.asResource("empty"))) return InteractionResult.PASS; + Direction direction = level.getBlockState(pos).getValue(FACING); + for (int i = 0; i < 64; i++) { + if (level.getBlockEntity(pos.relative(direction)) instanceof CableConnectorBlockEntity) { + pos = pos.relative(direction); + + } else break; + + } if(level.getBlockEntity(pos) instanceof CableConnectorBlockEntity be){ + + + if(stack.get(TFMGDataComponents.POSITION)!=null){ BlockPos posToConnect = BlockPos.of(stack.get(TFMGDataComponents.POSITION)); if(posToConnect.equals(pos)){ @@ -127,7 +139,13 @@ public class SpoolItem extends Item { be.setChanged(); return InteractionResult.SUCCESS; } + for (int i = 0; i < 64; i++) { + if (level.getBlockEntity(posToConnect.relative(direction)) instanceof CableConnectorBlockEntity) { + posToConnect = posToConnect.relative(direction); + } else break; + + } if(level.getBlockEntity(posToConnect) instanceof CableConnectorBlockEntity otherBE) { //CableConnectorBlockEntity connectedBe1 = pos.asLong()>posToConnect.asLong() ? otherBE : be; //CableConnectorBlockEntity connectedBe2= pos.asLong()>posToConnect.asLong() ? be : otherBE; diff --git a/src/main/java/com/drmangotea/tfmg/datagen/recipes/values/TFMGStandardRecipeGen.java b/src/main/java/com/drmangotea/tfmg/datagen/recipes/values/TFMGStandardRecipeGen.java index e4ba5cfa..ffd51cde 100644 --- a/src/main/java/com/drmangotea/tfmg/datagen/recipes/values/TFMGStandardRecipeGen.java +++ b/src/main/java/com/drmangotea/tfmg/datagen/recipes/values/TFMGStandardRecipeGen.java @@ -1804,6 +1804,31 @@ public class TFMGStandardRecipeGen extends TFMGRecipeProvider { .pattern(" B ") .pattern("NNN")), + GAS_LAMP = create(TFMGBlocks.GAS_LAMP) + .unlockedBy(TFMGBlocks.CAST_IRON_BARS::get) + .viaShaped(b -> b + .define('B', TFMGBlocks.CAST_IRON_BARS) + .define('P', industrialPipe()) + .define('G', AllPaletteBlocks.FRAMED_GLASS) + .define('C', castIronSheet()) + .pattern(" C ") + .pattern("BGB") + .pattern(" P ")), + + FIRE_EXTINGUISHER = create(TFMGItems.FIRE_EXTINGUISHER) + .unlockedBy(TFMGRegistrate.getBucket("carbon_dioxide")::asItem) + .viaShaped(b -> b + .define('N', steelNugget()) + .define('R', Items.RED_DYE) + .define('S', steelIngot()) + .define('C', TFMGRegistrate.getBucket("carbon_dioxide")) + .define('A', aluminumSheet()) + .pattern("NSR") + .pattern("ACA") + .pattern("AAA")), + + + TRAFFIC_LIGHT = create(TFMGBlocks.TRAFFIC_LIGHT) .unlockedBy(TFMGBlocks.LIGHT_BULB::get) .viaShaped(b -> b diff --git a/src/main/java/com/drmangotea/tfmg/datagen/recipes/values/create/TFMGFillingRecipeGen.java b/src/main/java/com/drmangotea/tfmg/datagen/recipes/values/create/TFMGFillingRecipeGen.java index 764d6a0a..8964caf5 100644 --- a/src/main/java/com/drmangotea/tfmg/datagen/recipes/values/create/TFMGFillingRecipeGen.java +++ b/src/main/java/com/drmangotea/tfmg/datagen/recipes/values/create/TFMGFillingRecipeGen.java @@ -1,6 +1,7 @@ package com.drmangotea.tfmg.datagen.recipes.values.create; import com.drmangotea.tfmg.TFMG; +import com.drmangotea.tfmg.content.items.weapons.fire_extinguisher.FireExtinguisherItem; import com.drmangotea.tfmg.registry.TFMGBlocks; import com.drmangotea.tfmg.registry.TFMGFluids; import com.drmangotea.tfmg.registry.TFMGItems; @@ -9,11 +10,13 @@ import com.simibubi.create.api.data.recipe.FillingRecipeGen; import net.minecraft.core.HolderLookup; import net.minecraft.data.PackOutput; import net.minecraft.tags.ItemTags; +import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.Items; import java.util.concurrent.CompletableFuture; import static com.drmangotea.tfmg.datagen.recipes.TFMGRecipeProvider.F.*; +import static com.drmangotea.tfmg.registry.TFMGDataComponents.AMOUNT; public class TFMGFillingRecipeGen extends FillingRecipeGen { @@ -85,11 +88,23 @@ public class TFMGFillingRecipeGen extends FillingRecipeGen { .require(Items.BUCKET) .require(hotAir(), 1000) .output(hotAirTank()) + ), + FILLED_FIRE_EXTINGUISHER = create("filled_fire_extinguisher", b -> b + .require(TFMGItems.FIRE_EXTINGUISHER) + .require(carbonDioxide(), 1000) + .output(createFilledExtinguisherStack()) ); + // Helper method to create the filled extinguisher ItemStack + private static ItemStack createFilledExtinguisherStack() { + ItemStack stack = new ItemStack(TFMGItems.FIRE_EXTINGUISHER.get()); + stack.set(AMOUNT, FireExtinguisherItem.DRY_ICE_CAPACITY); + return stack; + } + public TFMGFillingRecipeGen(PackOutput generator, CompletableFuture registries) { - super(generator, registries,TFMG.MOD_ID); + super(generator, registries, TFMG.MOD_ID); } @Override diff --git a/src/main/java/com/drmangotea/tfmg/registry/TFMGBlockEntities.java b/src/main/java/com/drmangotea/tfmg/registry/TFMGBlockEntities.java index c63f45d3..2bf03a17 100644 --- a/src/main/java/com/drmangotea/tfmg/registry/TFMGBlockEntities.java +++ b/src/main/java/com/drmangotea/tfmg/registry/TFMGBlockEntities.java @@ -12,6 +12,7 @@ import com.drmangotea.tfmg.content.decoration.tanks.TFMGFluidTankRenderer; import com.drmangotea.tfmg.content.decoration.tanks.steel.SteelFluidTankRenderer; import com.drmangotea.tfmg.content.decoration.tanks.steel.SteelTankBlockEntity; import com.drmangotea.tfmg.content.electricity.base.ElectricBlockEntity; +import com.drmangotea.tfmg.content.electricity.base.VoltageAlteringBlockEntity; import com.drmangotea.tfmg.content.electricity.connection.cables.CableConnectorBlockEntity; import com.drmangotea.tfmg.content.electricity.connection.cables.CableConnectorRenderer; import com.drmangotea.tfmg.content.electricity.connection.copycat_cable.CopycatCableBlockEntity; @@ -34,21 +35,20 @@ import com.drmangotea.tfmg.content.electricity.measurement.VoltMeterBlockEntity; import com.drmangotea.tfmg.content.electricity.measurement.VoltMeterRenderer; import com.drmangotea.tfmg.content.electricity.storage.AccumulatorBlockEntity; import com.drmangotea.tfmg.content.electricity.utilities.converter.ConverterBlockEntity; -import com.drmangotea.tfmg.content.electricity.utilities.diode.ElectricDiodeBlockEntity; import com.drmangotea.tfmg.content.electricity.utilities.electric_motor.ElectricMotorBlockEntity; import com.drmangotea.tfmg.content.electricity.utilities.electric_pump.ElectricPumpBlockEntity; -import com.drmangotea.tfmg.content.electricity.utilities.electric_switch.ElectricSwitchBlockEntity; +import com.drmangotea.tfmg.content.electricity.network.electric_switch.ElectricSwitchBlockEntity; import com.drmangotea.tfmg.content.electricity.utilities.polarizer.PolarizerBlockEntity; import com.drmangotea.tfmg.content.electricity.utilities.polarizer.PolarizerRenderer; -import com.drmangotea.tfmg.content.electricity.utilities.potentiometer.PotentiometerBlockEntity; +import com.drmangotea.tfmg.content.electricity.network.potentiometer.PotentiometerBlockEntity; import com.drmangotea.tfmg.content.electricity.utilities.resistor.ResistorBlockEntity; import com.drmangotea.tfmg.content.electricity.utilities.segmented_display.SegmentedDisplayBlockEntity; import com.drmangotea.tfmg.content.electricity.utilities.segmented_display.SegmentedDisplayRenderer; import com.drmangotea.tfmg.content.electricity.utilities.traffic_light.TrafficLightBlockEntity; import com.drmangotea.tfmg.content.electricity.utilities.traffic_light.TrafficLightRenderer; -import com.drmangotea.tfmg.content.electricity.utilities.transformer.TransformerBlockEntity; -import com.drmangotea.tfmg.content.electricity.utilities.transformer.TransformerRenderer; +import com.drmangotea.tfmg.content.electricity.network.transformer.TransformerBlockEntity; +import com.drmangotea.tfmg.content.electricity.network.transformer.TransformerRenderer; import com.drmangotea.tfmg.content.electricity.utilities.voltage_observer.VoltageObserverBlockEntity; import com.drmangotea.tfmg.content.engines.base.EngineRenderer; import com.drmangotea.tfmg.content.engines.engine_controller.EngineControllerBlockEntity; @@ -76,6 +76,7 @@ import com.drmangotea.tfmg.content.machinery.misc.concrete_hose.ConcreteHoseRend import com.drmangotea.tfmg.content.machinery.misc.exhaust.ExhaustBlockEntity; 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.machine_input.MachineInputBlockEntity; import com.drmangotea.tfmg.content.machinery.misc.smokestack.SmokestackBlockEntity; import com.drmangotea.tfmg.content.machinery.misc.winding_machine.WindingMachineBlockEntity; @@ -259,8 +260,8 @@ public class TFMGBlockEntities { .validBlocks(TFMGBlocks.ACCUMULATOR) .register(); - public static final BlockEntityEntry DIODE = REGISTRATE - .blockEntity("electric_diode", ElectricDiodeBlockEntity::new) + public static final BlockEntityEntry DIODE = REGISTRATE + .blockEntity("electric_diode", VoltageAlteringBlockEntity::new) .validBlocks(TFMGBlocks.DIODE, TFMGBlocks.ENCASED_DIODE) .register(); @@ -279,6 +280,11 @@ public class TFMGBlockEntities { .validBlocks(TFMGBlocks.TURBINE_ENGINE) .register(); + public static final BlockEntityEntry GAS_LAMP = REGISTRATE + .blockEntity("gas_lamp", GasLampBlockEntity::new) + .validBlocks(TFMGBlocks.GAS_LAMP) + .register(); + public static final BlockEntityEntry LARGE_ENGINE = REGISTRATE .blockEntity("large_engine", LargeEngineBlockEntity::new) .renderer(() -> LargeEngineRenderer::new) diff --git a/src/main/java/com/drmangotea/tfmg/registry/TFMGBlocks.java b/src/main/java/com/drmangotea/tfmg/registry/TFMGBlocks.java index fcc39339..79fc7e24 100644 --- a/src/main/java/com/drmangotea/tfmg/registry/TFMGBlocks.java +++ b/src/main/java/com/drmangotea/tfmg/registry/TFMGBlocks.java @@ -44,20 +44,20 @@ import com.drmangotea.tfmg.content.electricity.storage.AccumulatorItem; import com.drmangotea.tfmg.content.electricity.storage.CapacitorCTBehavior; import com.drmangotea.tfmg.content.electricity.utilities.converter.ConverterBlock; import com.drmangotea.tfmg.content.electricity.utilities.converter.ConverterGenerator; -import com.drmangotea.tfmg.content.electricity.utilities.diode.ElectricDiodeBlock; -import com.drmangotea.tfmg.content.electricity.utilities.diode.EncasedDiodeBlock; +import com.drmangotea.tfmg.content.electricity.network.diode.ElectricDiodeBlock; +import com.drmangotea.tfmg.content.electricity.network.diode.EncasedDiodeBlock; import com.drmangotea.tfmg.content.electricity.utilities.electric_motor.ElectricMotorBlock; import com.drmangotea.tfmg.content.electricity.utilities.electric_pump.ElectricPumpBlock; -import com.drmangotea.tfmg.content.electricity.utilities.electric_switch.ElectricSwitchBlock; +import com.drmangotea.tfmg.content.electricity.network.electric_switch.ElectricSwitchBlock; import com.drmangotea.tfmg.content.electricity.utilities.polarizer.PolarizerBlock; -import com.drmangotea.tfmg.content.electricity.utilities.potentiometer.EncasedPotentiometerBlock; -import com.drmangotea.tfmg.content.electricity.utilities.potentiometer.PotentiometerBlock; +import com.drmangotea.tfmg.content.electricity.network.potentiometer.EncasedPotentiometerBlock; +import com.drmangotea.tfmg.content.electricity.network.potentiometer.PotentiometerBlock; import com.drmangotea.tfmg.content.electricity.utilities.resistor.ResistorBlock; import com.drmangotea.tfmg.content.electricity.utilities.resistor.ResistorBlockItem; import com.drmangotea.tfmg.content.electricity.utilities.segmented_display.SegmentedDisplayBlock; import com.drmangotea.tfmg.content.electricity.utilities.segmented_display.SegmentedDisplayCTBehavior; import com.drmangotea.tfmg.content.electricity.utilities.traffic_light.TrafficLightBlock; -import com.drmangotea.tfmg.content.electricity.utilities.transformer.TransformerBlock; +import com.drmangotea.tfmg.content.electricity.network.transformer.TransformerBlock; import com.drmangotea.tfmg.content.electricity.utilities.voltage_observer.VoltageObserverBlock; import com.drmangotea.tfmg.content.electricity.utilities.voltage_observer.VoltageObserverGenerator; import com.drmangotea.tfmg.content.engines.base.EngineCTBehavior; @@ -89,6 +89,8 @@ import com.drmangotea.tfmg.content.machinery.misc.exhaust.ExhaustBlock; import com.drmangotea.tfmg.content.machinery.misc.firebox.FireboxBlock; import com.drmangotea.tfmg.content.machinery.misc.flarestack.FlarestackBlock; import com.drmangotea.tfmg.content.machinery.misc.flarestack.FlarestackGenerator; +import com.drmangotea.tfmg.content.machinery.misc.gas_lamp.GasLampBlock; +import com.drmangotea.tfmg.content.machinery.misc.gas_lamp.GasLampGenerator; import com.drmangotea.tfmg.content.machinery.misc.machine_input.MachineInputBlock; import com.drmangotea.tfmg.content.machinery.misc.smokestack.SmokestackBlock; import com.drmangotea.tfmg.content.machinery.misc.smokestack.SmokestackGenerator; @@ -1349,6 +1351,20 @@ public class TFMGBlocks { .transform(customItemModel()) .register(); + public static final BlockEntry GAS_LAMP = + REGISTRATE.block("gas_lamp", GasLampBlock::new) + .initialProperties(SharedProperties::copperMetal) + .properties(p -> p.sound(SoundType.NETHERITE_BLOCK)) + .addLayer(() -> RenderType::cutoutMipped) + .properties(p -> p + .lightLevel(s -> s.getValue(GasLampBlock.LIT) ? 15 : 0) + .noOcclusion()) + .blockstate(new GasLampGenerator()::generate) + .transform(pickaxeOnly()) + .item() + .transform(customItemModel()) + .register(); + //------------------COGWHEELS------------------// public static final BlockEntry STEEL_COGWHEEL = diff --git a/src/main/java/com/drmangotea/tfmg/registry/TFMGDataComponents.java b/src/main/java/com/drmangotea/tfmg/registry/TFMGDataComponents.java index 22d17e10..cc81ebbc 100644 --- a/src/main/java/com/drmangotea/tfmg/registry/TFMGDataComponents.java +++ b/src/main/java/com/drmangotea/tfmg/registry/TFMGDataComponents.java @@ -91,6 +91,7 @@ public class TFMGDataComponents { "storage", builder -> builder.persistent(Codec.INT).networkSynchronized(ByteBufCodecs.VAR_INT) ); + public static final DataComponentType RESISTANCE = register( "resistance", builder -> builder.persistent(Codec.INT).networkSynchronized(ByteBufCodecs.VAR_INT) diff --git a/src/main/java/com/drmangotea/tfmg/registry/TFMGEntityTypes.java b/src/main/java/com/drmangotea/tfmg/registry/TFMGEntityTypes.java index b1d8a1e0..6746f9c9 100644 --- a/src/main/java/com/drmangotea/tfmg/registry/TFMGEntityTypes.java +++ b/src/main/java/com/drmangotea/tfmg/registry/TFMGEntityTypes.java @@ -62,6 +62,10 @@ public class TFMGEntityTypes { register("lithium_spark", LithiumSpark::new, () -> SparkRenderer::new, MobCategory.MISC, 4, 20, true, true, Spark::build).register(); + public static final EntityEntry DRY_ICE_FLAKE = + register("dry_ice_flake", DryIceFlake::new, () -> SparkRenderer::new, + MobCategory.MISC, 4, 20, true, true, Spark::build).register(); + private static CreateEntityBuilder register(String name, EntityType.EntityFactory factory, NonNullSupplier>> renderer, diff --git a/src/main/java/com/drmangotea/tfmg/registry/TFMGItems.java b/src/main/java/com/drmangotea/tfmg/registry/TFMGItems.java index 5c4a96bf..519fc49a 100644 --- a/src/main/java/com/drmangotea/tfmg/registry/TFMGItems.java +++ b/src/main/java/com/drmangotea/tfmg/registry/TFMGItems.java @@ -10,7 +10,7 @@ import com.drmangotea.tfmg.base.debug.DebugCinderBlockItem; import com.drmangotea.tfmg.content.electricity.measurement.MultimeterItem; import com.drmangotea.tfmg.content.electricity.utilities.polarizer.MagnetItem; import com.drmangotea.tfmg.content.electricity.utilities.resistor.ResistorItem; -import com.drmangotea.tfmg.content.electricity.utilities.transformer.ElectromagneticCoilItem; +import com.drmangotea.tfmg.content.electricity.network.transformer.ElectromagneticCoilItem; import com.drmangotea.tfmg.content.engines.CylinderItem; import com.drmangotea.tfmg.content.engines.FluidContainingItem; import com.drmangotea.tfmg.content.engines.upgrades.TransmissionItem; @@ -22,6 +22,7 @@ import com.drmangotea.tfmg.content.items.weapons.advanced_potato_cannon.Advanced import com.drmangotea.tfmg.content.items.weapons.explosives.pipe_bomb.PipeBombItem; import com.drmangotea.tfmg.content.items.weapons.explosives.thermite_grenades.ThermiteGrenade; import com.drmangotea.tfmg.content.items.weapons.explosives.thermite_grenades.ThermiteGrenadeItem; +import com.drmangotea.tfmg.content.items.weapons.fire_extinguisher.FireExtinguisherItem; import com.drmangotea.tfmg.content.items.weapons.flamethrover.FlamethrowerItem; import com.drmangotea.tfmg.content.items.weapons.lithium_blade.LitLithiumBladeItem; import com.drmangotea.tfmg.content.items.weapons.lithium_blade.LithiumBladeItem; @@ -265,6 +266,11 @@ public class TFMGItems { .properties(p -> p.stacksTo(1)) .register(); + public static final ItemEntry FIRE_EXTINGUISHER = + REGISTRATE.item("fire_extinguisher", FireExtinguisherItem::new) + .model(AssetLookup.itemModelWithPartials()) + .properties(p -> p.stacksTo(1)) + .register(); public static final Map> MULTIMETERS = multimeters(); diff --git a/src/main/resources/assets/tfmg/models/block/converter/block.json b/src/main/resources/assets/tfmg/models/block/converter/block.json index 62d87210..c3eb4ced 100644 --- a/src/main/resources/assets/tfmg/models/block/converter/block.json +++ b/src/main/resources/assets/tfmg/models/block/converter/block.json @@ -1,10 +1,12 @@ { + "format_version": "1.21.6", "credit": "Made with Blockbench", "parent": "block/block", "texture_size": [32, 32], "textures": { "1": "tfmg:block/converter", "2": "tfmg:block/heavy_machinery_casing", + "3": "tfmg:block/transformer", "particle": "tfmg:block/heavy_machinery_casing" }, "elements": [ @@ -16,7 +18,7 @@ "east": {"uv": [0, 0, 8, 3], "texture": "#1"}, "south": {"uv": [0, 0, 8, 3], "texture": "#1"}, "west": {"uv": [0, 0, 8, 3], "texture": "#1"}, - "up": {"uv": [0, 8, 8, 16], "texture": "#1"}, + "up": {"uv": [0, 8, 8, 16], "texture": "#3"}, "down": {"uv": [0, 0, 16, 16], "texture": "#2"} } }, @@ -38,12 +40,12 @@ "to": [15, 14, 11], "rotation": {"angle": 0, "axis": "y", "origin": [11, 6, 7]}, "faces": { - "north": {"uv": [13, 0.5, 16, 4.5], "texture": "#1"}, - "east": {"uv": [13, 0.5, 16, 4.5], "texture": "#1"}, - "south": {"uv": [13, 0.5, 16, 4.5], "texture": "#1"}, - "west": {"uv": [13, 0.5, 16, 4.5], "texture": "#1"}, - "up": {"uv": [0, 0, 0, 0], "texture": "#1"}, - "down": {"uv": [0, 0, 0, 0], "texture": "#1"} + "north": {"uv": [13, 0.5, 16, 4.5], "texture": "#3"}, + "east": {"uv": [13, 0.5, 16, 4.5], "texture": "#3"}, + "south": {"uv": [13, 0.5, 16, 4.5], "texture": "#3"}, + "west": {"uv": [13, 0.5, 16, 4.5], "texture": "#3"}, + "up": {"uv": [0, 0, 0, 0], "texture": "#3"}, + "down": {"uv": [0, 0, 0, 0], "texture": "#3"} } }, { @@ -51,12 +53,12 @@ "to": [5, 18, 9], "rotation": {"angle": 0, "axis": "y", "origin": [3, 14, 7]}, "faces": { - "north": {"uv": [5, 6, 6, 7.5], "texture": "#1"}, - "east": {"uv": [5, 4, 6, 5.5], "texture": "#1"}, - "south": {"uv": [6, 6, 5, 7.5], "texture": "#1"}, - "west": {"uv": [5, 4, 6, 5.5], "texture": "#1"}, - "up": {"uv": [6.5, 6, 7.5, 7], "texture": "#1"}, - "down": {"uv": [0, 0, 0, 0], "texture": "#1"} + "north": {"uv": [5, 6, 6, 7.5], "texture": "#3"}, + "east": {"uv": [5, 4, 6, 5.5], "texture": "#3"}, + "south": {"uv": [6, 6, 5, 7.5], "texture": "#3"}, + "west": {"uv": [5, 4, 6, 5.5], "texture": "#3"}, + "up": {"uv": [6.5, 6, 7.5, 7], "texture": "#3"}, + "down": {"uv": [0, 0, 0, 0], "texture": "#3"} } }, { @@ -64,12 +66,12 @@ "to": [11, 18, 9], "rotation": {"angle": 0, "axis": "y", "origin": [5, 14, 7]}, "faces": { - "north": {"uv": [2, 6, 5, 7], "texture": "#1"}, - "east": {"uv": [0, 0, 0, 0], "texture": "#1"}, - "south": {"uv": [5, 6, 2, 7], "texture": "#1"}, - "west": {"uv": [0, 0, 0, 0], "texture": "#1"}, - "up": {"uv": [7.5, 6, 10.5, 7], "texture": "#1"}, - "down": {"uv": [0, 0, 6, 2], "texture": "#1"} + "north": {"uv": [2, 6, 5, 7], "texture": "#3"}, + "east": {"uv": [0, 0, 0, 0], "texture": "#3"}, + "south": {"uv": [5, 6, 2, 7], "texture": "#3"}, + "west": {"uv": [0, 0, 0, 0], "texture": "#3"}, + "up": {"uv": [7.5, 6, 10.5, 7], "texture": "#3"}, + "down": {"uv": [0, 0, 6, 2], "texture": "#3"} } }, { @@ -77,12 +79,12 @@ "to": [13, 18, 9], "rotation": {"angle": 0, "axis": "y", "origin": [11, 14, 7]}, "faces": { - "north": {"uv": [1, 6, 2, 7.5], "texture": "#1"}, - "east": {"uv": [1, 4, 2, 5.5], "texture": "#1"}, - "south": {"uv": [2, 6, 1, 7.5], "texture": "#1"}, - "west": {"uv": [5, 4, 6, 5.5], "texture": "#1"}, - "up": {"uv": [10.5, 6, 11.5, 7], "texture": "#1"}, - "down": {"uv": [0, 0, 0, 0], "texture": "#1"} + "north": {"uv": [1, 6, 2, 7.5], "texture": "#3"}, + "east": {"uv": [1, 4, 2, 5.5], "texture": "#3"}, + "south": {"uv": [2, 6, 1, 7.5], "texture": "#3"}, + "west": {"uv": [5, 4, 6, 5.5], "texture": "#3"}, + "up": {"uv": [10.5, 6, 11.5, 7], "texture": "#3"}, + "down": {"uv": [0, 0, 0, 0], "texture": "#3"} } }, { @@ -90,12 +92,12 @@ "to": [7.5, 15, 11.5], "rotation": {"angle": 0, "axis": "y", "origin": [0, 14, 4]}, "faces": { - "north": {"uv": [10.5, 8, 14, 8.5], "texture": "#1"}, - "east": {"uv": [10.5, 8, 14, 8.5], "texture": "#1"}, - "south": {"uv": [10.5, 8, 14, 8.5], "texture": "#1"}, - "west": {"uv": [10.5, 8, 14, 8.5], "texture": "#1"}, - "up": {"uv": [10.5, 8, 14, 11.5], "texture": "#1"}, - "down": {"uv": [10.5, 8, 14, 11.5], "texture": "#1"} + "north": {"uv": [10.5, 8, 14, 8.5], "texture": "#3"}, + "east": {"uv": [10.5, 8, 14, 8.5], "texture": "#3"}, + "south": {"uv": [10.5, 8, 14, 8.5], "texture": "#3"}, + "west": {"uv": [10.5, 8, 14, 8.5], "texture": "#3"}, + "up": {"uv": [10.5, 8, 14, 11.5], "texture": "#3"}, + "down": {"uv": [10.5, 8, 14, 11.5], "texture": "#3"} } }, { @@ -103,12 +105,12 @@ "to": [15.5, 15, 11.5], "rotation": {"angle": 0, "axis": "y", "origin": [8, 14, 4]}, "faces": { - "north": {"uv": [10.5, 8, 14, 8.5], "texture": "#1"}, - "east": {"uv": [10.5, 8, 14, 8.5], "texture": "#1"}, - "south": {"uv": [10.5, 8, 14, 8.5], "texture": "#1"}, - "west": {"uv": [10.5, 8, 14, 8.5], "texture": "#1"}, - "up": {"uv": [10.5, 8, 14, 11.5], "texture": "#1"}, - "down": {"uv": [10.5, 8, 14, 11.5], "texture": "#1"} + "north": {"uv": [10.5, 8, 14, 8.5], "texture": "#3"}, + "east": {"uv": [10.5, 8, 14, 8.5], "texture": "#3"}, + "south": {"uv": [10.5, 8, 14, 8.5], "texture": "#3"}, + "west": {"uv": [10.5, 8, 14, 8.5], "texture": "#3"}, + "up": {"uv": [10.5, 8, 14, 11.5], "texture": "#3"}, + "down": {"uv": [10.5, 8, 14, 11.5], "texture": "#3"} } }, { @@ -116,11 +118,11 @@ "to": [1, 10, 10], "rotation": {"angle": 0, "axis": "y", "origin": [0, 7, 7]}, "faces": { - "north": {"uv": [5, 3, 7, 3.5], "rotation": 90, "texture": "#1"}, + "north": {"uv": [1, 5.5, 3, 6], "rotation": 90, "texture": "#1"}, "east": {"uv": [0, 0, 0, 0], "texture": "#1"}, - "south": {"uv": [5, 3, 7, 3.5], "rotation": 90, "texture": "#1"}, - "west": {"uv": [14, 5, 16, 7], "texture": "#1"}, - "up": {"uv": [5, 3, 7, 3.5], "rotation": 90, "texture": "#1"}, + "south": {"uv": [1, 5.5, 3, 6], "rotation": 90, "texture": "#1"}, + "west": {"uv": [1, 3, 3, 5], "texture": "#1"}, + "up": {"uv": [1, 5.5, 3, 6], "rotation": 90, "texture": "#1"}, "down": {"uv": [0, 0, 0, 0], "texture": "#1"} } }, diff --git a/src/main/resources/assets/tfmg/models/block/converter/block_rotated.json b/src/main/resources/assets/tfmg/models/block/converter/block_rotated.json index 30fd8040..e2a85dea 100644 --- a/src/main/resources/assets/tfmg/models/block/converter/block_rotated.json +++ b/src/main/resources/assets/tfmg/models/block/converter/block_rotated.json @@ -1,10 +1,12 @@ { + "format_version": "1.21.6", "credit": "Made with Blockbench", "parent": "block/block", "texture_size": [32, 32], "textures": { "1": "tfmg:block/converter", "2": "tfmg:block/heavy_machinery_casing", + "3": "tfmg:block/transformer", "particle": "tfmg:block/heavy_machinery_casing" }, "elements": [ @@ -16,7 +18,7 @@ "east": {"uv": [0, 0, 8, 3], "texture": "#1"}, "south": {"uv": [0, 0, 8, 3], "texture": "#1"}, "west": {"uv": [0, 0, 8, 3], "texture": "#1"}, - "up": {"uv": [0, 8, 8, 16], "texture": "#1"}, + "up": {"uv": [0, 8, 8, 16], "texture": "#3"}, "down": {"uv": [0, 0, 16, 16], "texture": "#2"} } }, @@ -38,12 +40,12 @@ "to": [15, 14, 11], "rotation": {"angle": 0, "axis": "y", "origin": [11, 6, 7]}, "faces": { - "north": {"uv": [13, 0.5, 16, 4.5], "texture": "#1"}, - "east": {"uv": [13, 0.5, 16, 4.5], "texture": "#1"}, - "south": {"uv": [13, 0.5, 16, 4.5], "texture": "#1"}, - "west": {"uv": [13, 0.5, 16, 4.5], "texture": "#1"}, - "up": {"uv": [0, 0, 0, 0], "texture": "#1"}, - "down": {"uv": [0, 0, 0, 0], "texture": "#1"} + "north": {"uv": [13, 0.5, 16, 4.5], "texture": "#3"}, + "east": {"uv": [13, 0.5, 16, 4.5], "texture": "#3"}, + "south": {"uv": [13, 0.5, 16, 4.5], "texture": "#3"}, + "west": {"uv": [13, 0.5, 16, 4.5], "texture": "#3"}, + "up": {"uv": [0, 0, 0, 0], "texture": "#3"}, + "down": {"uv": [0, 0, 0, 0], "texture": "#3"} } }, { @@ -51,12 +53,12 @@ "to": [5, 18, 9], "rotation": {"angle": 0, "axis": "y", "origin": [3, 14, 7]}, "faces": { - "north": {"uv": [5, 6, 6, 7.5], "texture": "#1"}, - "east": {"uv": [5, 4, 6, 5.5], "texture": "#1"}, - "south": {"uv": [6, 6, 5, 7.5], "texture": "#1"}, - "west": {"uv": [5, 4, 6, 5.5], "texture": "#1"}, - "up": {"uv": [6.5, 6, 7.5, 7], "texture": "#1"}, - "down": {"uv": [0, 0, 0, 0], "texture": "#1"} + "north": {"uv": [5, 6, 6, 7.5], "texture": "#3"}, + "east": {"uv": [5, 4, 6, 5.5], "texture": "#3"}, + "south": {"uv": [6, 6, 5, 7.5], "texture": "#3"}, + "west": {"uv": [5, 4, 6, 5.5], "texture": "#3"}, + "up": {"uv": [6.5, 6, 7.5, 7], "texture": "#3"}, + "down": {"uv": [0, 0, 0, 0], "texture": "#3"} } }, { @@ -64,12 +66,12 @@ "to": [11, 18, 9], "rotation": {"angle": 0, "axis": "y", "origin": [5, 14, 7]}, "faces": { - "north": {"uv": [2, 6, 5, 7], "texture": "#1"}, - "east": {"uv": [0, 0, 0, 0], "texture": "#1"}, - "south": {"uv": [5, 6, 2, 7], "texture": "#1"}, - "west": {"uv": [0, 0, 0, 0], "texture": "#1"}, - "up": {"uv": [7.5, 6, 10.5, 7], "texture": "#1"}, - "down": {"uv": [0, 0, 6, 2], "texture": "#1"} + "north": {"uv": [2, 6, 5, 7], "texture": "#3"}, + "east": {"uv": [0, 0, 0, 0], "texture": "#3"}, + "south": {"uv": [5, 6, 2, 7], "texture": "#3"}, + "west": {"uv": [0, 0, 0, 0], "texture": "#3"}, + "up": {"uv": [7.5, 6, 10.5, 7], "texture": "#3"}, + "down": {"uv": [0, 0, 6, 2], "texture": "#3"} } }, { @@ -77,12 +79,12 @@ "to": [13, 18, 9], "rotation": {"angle": 0, "axis": "y", "origin": [11, 14, 7]}, "faces": { - "north": {"uv": [1, 6, 2, 7.5], "texture": "#1"}, - "east": {"uv": [1, 4, 2, 5.5], "texture": "#1"}, - "south": {"uv": [2, 6, 1, 7.5], "texture": "#1"}, - "west": {"uv": [5, 4, 6, 5.5], "texture": "#1"}, - "up": {"uv": [10.5, 6, 11.5, 7], "texture": "#1"}, - "down": {"uv": [0, 0, 0, 0], "texture": "#1"} + "north": {"uv": [1, 6, 2, 7.5], "texture": "#3"}, + "east": {"uv": [1, 4, 2, 5.5], "texture": "#3"}, + "south": {"uv": [2, 6, 1, 7.5], "texture": "#3"}, + "west": {"uv": [5, 4, 6, 5.5], "texture": "#3"}, + "up": {"uv": [10.5, 6, 11.5, 7], "texture": "#3"}, + "down": {"uv": [0, 0, 0, 0], "texture": "#3"} } }, { @@ -90,12 +92,12 @@ "to": [7.5, 15, 11.5], "rotation": {"angle": 0, "axis": "y", "origin": [0, 14, 4]}, "faces": { - "north": {"uv": [10.5, 8, 14, 8.5], "texture": "#1"}, - "east": {"uv": [10.5, 8, 14, 8.5], "texture": "#1"}, - "south": {"uv": [10.5, 8, 14, 8.5], "texture": "#1"}, - "west": {"uv": [10.5, 8, 14, 8.5], "texture": "#1"}, - "up": {"uv": [10.5, 8, 14, 11.5], "texture": "#1"}, - "down": {"uv": [10.5, 8, 14, 11.5], "texture": "#1"} + "north": {"uv": [10.5, 8, 14, 8.5], "texture": "#3"}, + "east": {"uv": [10.5, 8, 14, 8.5], "texture": "#3"}, + "south": {"uv": [10.5, 8, 14, 8.5], "texture": "#3"}, + "west": {"uv": [10.5, 8, 14, 8.5], "texture": "#3"}, + "up": {"uv": [10.5, 8, 14, 11.5], "texture": "#3"}, + "down": {"uv": [10.5, 8, 14, 11.5], "texture": "#3"} } }, { @@ -103,12 +105,12 @@ "to": [15.5, 15, 11.5], "rotation": {"angle": 0, "axis": "y", "origin": [8, 14, 4]}, "faces": { - "north": {"uv": [10.5, 8, 14, 8.5], "texture": "#1"}, - "east": {"uv": [10.5, 8, 14, 8.5], "texture": "#1"}, - "south": {"uv": [10.5, 8, 14, 8.5], "texture": "#1"}, - "west": {"uv": [10.5, 8, 14, 8.5], "texture": "#1"}, - "up": {"uv": [10.5, 8, 14, 11.5], "texture": "#1"}, - "down": {"uv": [10.5, 8, 14, 11.5], "texture": "#1"} + "north": {"uv": [10.5, 8, 14, 8.5], "texture": "#3"}, + "east": {"uv": [10.5, 8, 14, 8.5], "texture": "#3"}, + "south": {"uv": [10.5, 8, 14, 8.5], "texture": "#3"}, + "west": {"uv": [10.5, 8, 14, 8.5], "texture": "#3"}, + "up": {"uv": [10.5, 8, 14, 11.5], "texture": "#3"}, + "down": {"uv": [10.5, 8, 14, 11.5], "texture": "#3"} } }, { @@ -116,11 +118,11 @@ "to": [16, 10, 10], "rotation": {"angle": 0, "axis": "y", "origin": [8, 7, 8]}, "faces": { - "north": {"uv": [5, 3, 7, 3.5], "rotation": 90, "texture": "#1"}, + "north": {"uv": [1, 5.5, 3, 6], "rotation": 90, "texture": "#1"}, "east": {"uv": [3, 3, 5, 5], "texture": "#1"}, - "south": {"uv": [5, 3, 7, 3.5], "rotation": 90, "texture": "#1"}, + "south": {"uv": [1, 5.5, 3, 6], "rotation": 90, "texture": "#1"}, "west": {"uv": [0, 0, 0, 0], "texture": "#1"}, - "up": {"uv": [5, 3, 7, 3.5], "rotation": 270, "texture": "#1"}, + "up": {"uv": [1, 5.5, 3, 6], "rotation": 270, "texture": "#1"}, "down": {"uv": [0, 0, 0, 0], "rotation": 180, "texture": "#1"} } }, @@ -132,7 +134,7 @@ "north": {"uv": [3, 5.5, 5, 6], "rotation": 90, "texture": "#1"}, "east": {"uv": [0, 0, 0, 0], "texture": "#1"}, "south": {"uv": [3, 5.5, 5, 6], "rotation": 90, "texture": "#1"}, - "west": {"uv": [14, 5, 16, 7], "texture": "#1"}, + "west": {"uv": [1, 3, 3, 5], "texture": "#1"}, "up": {"uv": [3, 5.5, 5, 6], "rotation": 270, "texture": "#1"}, "down": {"uv": [0, 0, 0, 0], "rotation": 180, "texture": "#1"} } diff --git a/src/main/resources/assets/tfmg/models/block/converter/item.json b/src/main/resources/assets/tfmg/models/block/converter/item.json index feb9195d..ba9931a3 100644 --- a/src/main/resources/assets/tfmg/models/block/converter/item.json +++ b/src/main/resources/assets/tfmg/models/block/converter/item.json @@ -1,10 +1,13 @@ { + "format_version": "1.21.6", "credit": "Made with Blockbench", "parent": "block/block", "texture_size": [32, 32], "textures": { "1": "tfmg:block/converter", - "2": "tfmg:block/heavy_machinery_casing" + "2": "tfmg:block/heavy_machinery_casing", + "3": "tfmg:block/transformer", + "particle": "tfmg:block/transformer" }, "elements": [ { @@ -15,7 +18,7 @@ "east": {"uv": [0, 0, 8, 3], "texture": "#1"}, "south": {"uv": [0, 0, 8, 3], "texture": "#1"}, "west": {"uv": [0, 0, 8, 3], "texture": "#1"}, - "up": {"uv": [0, 8, 8, 16], "texture": "#1"}, + "up": {"uv": [0, 8, 8, 16], "texture": "#3"}, "down": {"uv": [0, 0, 16, 16], "texture": "#2"} } }, @@ -37,12 +40,12 @@ "to": [15, 14, 11], "rotation": {"angle": 0, "axis": "y", "origin": [11, 6, 7]}, "faces": { - "north": {"uv": [13, 0.5, 16, 4.5], "texture": "#1"}, - "east": {"uv": [13, 0.5, 16, 4.5], "texture": "#1"}, - "south": {"uv": [13, 0.5, 16, 4.5], "texture": "#1"}, - "west": {"uv": [13, 0.5, 16, 4.5], "texture": "#1"}, - "up": {"uv": [0, 0, 0, 0], "texture": "#1"}, - "down": {"uv": [0, 0, 0, 0], "texture": "#1"} + "north": {"uv": [13, 0.5, 16, 4.5], "texture": "#3"}, + "east": {"uv": [13, 0.5, 16, 4.5], "texture": "#3"}, + "south": {"uv": [13, 0.5, 16, 4.5], "texture": "#3"}, + "west": {"uv": [13, 0.5, 16, 4.5], "texture": "#3"}, + "up": {"uv": [0, 0, 0, 0], "texture": "#3"}, + "down": {"uv": [0, 0, 0, 0], "texture": "#3"} } }, { @@ -50,12 +53,12 @@ "to": [5, 18, 9], "rotation": {"angle": 0, "axis": "y", "origin": [3, 14, 7]}, "faces": { - "north": {"uv": [5, 6, 6, 7.5], "texture": "#1"}, - "east": {"uv": [5, 4, 6, 5.5], "texture": "#1"}, - "south": {"uv": [6, 6, 5, 7.5], "texture": "#1"}, - "west": {"uv": [5, 4, 6, 5.5], "texture": "#1"}, - "up": {"uv": [6.5, 6, 7.5, 7], "texture": "#1"}, - "down": {"uv": [0, 0, 0, 0], "texture": "#1"} + "north": {"uv": [5, 6, 6, 7.5], "texture": "#3"}, + "east": {"uv": [5, 4, 6, 5.5], "texture": "#3"}, + "south": {"uv": [6, 6, 5, 7.5], "texture": "#3"}, + "west": {"uv": [5, 4, 6, 5.5], "texture": "#3"}, + "up": {"uv": [6.5, 6, 7.5, 7], "texture": "#3"}, + "down": {"uv": [0, 0, 0, 0], "texture": "#3"} } }, { @@ -63,12 +66,12 @@ "to": [11, 18, 9], "rotation": {"angle": 0, "axis": "y", "origin": [5, 14, 7]}, "faces": { - "north": {"uv": [2, 6, 5, 7], "texture": "#1"}, - "east": {"uv": [0, 0, 0, 0], "texture": "#1"}, - "south": {"uv": [5, 6, 2, 7], "texture": "#1"}, - "west": {"uv": [0, 0, 0, 0], "texture": "#1"}, - "up": {"uv": [7.5, 6, 10.5, 7], "texture": "#1"}, - "down": {"uv": [0, 0, 6, 2], "texture": "#1"} + "north": {"uv": [2, 6, 5, 7], "texture": "#3"}, + "east": {"uv": [0, 0, 0, 0], "texture": "#3"}, + "south": {"uv": [5, 6, 2, 7], "texture": "#3"}, + "west": {"uv": [0, 0, 0, 0], "texture": "#3"}, + "up": {"uv": [7.5, 6, 10.5, 7], "texture": "#3"}, + "down": {"uv": [0, 0, 6, 2], "texture": "#3"} } }, { @@ -76,12 +79,12 @@ "to": [13, 18, 9], "rotation": {"angle": 0, "axis": "y", "origin": [11, 14, 7]}, "faces": { - "north": {"uv": [1, 6, 2, 7.5], "texture": "#1"}, - "east": {"uv": [1, 4, 2, 5.5], "texture": "#1"}, - "south": {"uv": [2, 6, 1, 7.5], "texture": "#1"}, - "west": {"uv": [5, 4, 6, 5.5], "texture": "#1"}, - "up": {"uv": [10.5, 6, 11.5, 7], "texture": "#1"}, - "down": {"uv": [0, 0, 0, 0], "texture": "#1"} + "north": {"uv": [1, 6, 2, 7.5], "texture": "#3"}, + "east": {"uv": [1, 4, 2, 5.5], "texture": "#3"}, + "south": {"uv": [2, 6, 1, 7.5], "texture": "#3"}, + "west": {"uv": [5, 4, 6, 5.5], "texture": "#3"}, + "up": {"uv": [10.5, 6, 11.5, 7], "texture": "#3"}, + "down": {"uv": [0, 0, 0, 0], "texture": "#3"} } }, { @@ -89,12 +92,12 @@ "to": [7.5, 15, 11.5], "rotation": {"angle": 0, "axis": "y", "origin": [0, 14, 4]}, "faces": { - "north": {"uv": [10.5, 8, 14, 8.5], "texture": "#1"}, - "east": {"uv": [10.5, 8, 14, 8.5], "texture": "#1"}, - "south": {"uv": [10.5, 8, 14, 8.5], "texture": "#1"}, - "west": {"uv": [10.5, 8, 14, 8.5], "texture": "#1"}, - "up": {"uv": [10.5, 8, 14, 11.5], "texture": "#1"}, - "down": {"uv": [10.5, 8, 14, 11.5], "texture": "#1"} + "north": {"uv": [10.5, 8, 14, 8.5], "texture": "#3"}, + "east": {"uv": [10.5, 8, 14, 8.5], "texture": "#3"}, + "south": {"uv": [10.5, 8, 14, 8.5], "texture": "#3"}, + "west": {"uv": [10.5, 8, 14, 8.5], "texture": "#3"}, + "up": {"uv": [10.5, 8, 14, 11.5], "texture": "#3"}, + "down": {"uv": [10.5, 8, 14, 11.5], "texture": "#3"} } }, { @@ -102,12 +105,12 @@ "to": [15.5, 15, 11.5], "rotation": {"angle": 0, "axis": "y", "origin": [8, 14, 4]}, "faces": { - "north": {"uv": [10.5, 8, 14, 8.5], "texture": "#1"}, - "east": {"uv": [10.5, 8, 14, 8.5], "texture": "#1"}, - "south": {"uv": [10.5, 8, 14, 8.5], "texture": "#1"}, - "west": {"uv": [10.5, 8, 14, 8.5], "texture": "#1"}, - "up": {"uv": [10.5, 8, 14, 11.5], "texture": "#1"}, - "down": {"uv": [10.5, 8, 14, 11.5], "texture": "#1"} + "north": {"uv": [10.5, 8, 14, 8.5], "texture": "#3"}, + "east": {"uv": [10.5, 8, 14, 8.5], "texture": "#3"}, + "south": {"uv": [10.5, 8, 14, 8.5], "texture": "#3"}, + "west": {"uv": [10.5, 8, 14, 8.5], "texture": "#3"}, + "up": {"uv": [10.5, 8, 14, 11.5], "texture": "#3"}, + "down": {"uv": [10.5, 8, 14, 11.5], "texture": "#3"} } }, { @@ -115,11 +118,11 @@ "to": [1, 10, 10], "rotation": {"angle": 0, "axis": "y", "origin": [0, 7, 7]}, "faces": { - "north": {"uv": [5, 3, 7, 3.5], "rotation": 90, "texture": "#1"}, + "north": {"uv": [1, 5.5, 3, 6], "rotation": 90, "texture": "#1"}, "east": {"uv": [0, 0, 0, 0], "texture": "#1"}, - "south": {"uv": [5, 3, 7, 3.5], "rotation": 90, "texture": "#1"}, - "west": {"uv": [14, 5, 16, 7], "texture": "#1"}, - "up": {"uv": [5, 3, 7, 3.5], "rotation": 90, "texture": "#1"}, + "south": {"uv": [1, 5.5, 3, 6], "rotation": 90, "texture": "#1"}, + "west": {"uv": [1, 3, 3, 5], "texture": "#1"}, + "up": {"uv": [1, 5.5, 3, 6], "rotation": 90, "texture": "#1"}, "down": {"uv": [0, 0, 0, 0], "texture": "#1"} } }, diff --git a/src/main/resources/assets/tfmg/models/block/engine_controller/item.json b/src/main/resources/assets/tfmg/models/block/engine_controller/item.json index 83c2fe0f..ad7dc4c2 100644 --- a/src/main/resources/assets/tfmg/models/block/engine_controller/item.json +++ b/src/main/resources/assets/tfmg/models/block/engine_controller/item.json @@ -1,4 +1,5 @@ { + "format_version": "1.21.6", "credit": "Made with Blockbench", "parent": "block/block", "texture_size": [32, 32], @@ -113,7 +114,7 @@ "to": [14, 12, 14], "rotation": {"angle": 0, "axis": "y", "origin": [5, 5, 4]}, "faces": { - "north": {"uv": [0, 12, 6, 15.5], "texture": "#0"}, + "north": {"uv": [6, 12, 0, 15.5], "texture": "#0"}, "east": {"uv": [11.5, 4.5, 16, 8], "texture": "#0"}, "south": {"uv": [0, 12, 6, 15.5], "texture": "#0"}, "west": {"uv": [11.5, 4.5, 16, 8], "texture": "#0"}, diff --git a/src/main/resources/assets/tfmg/models/block/gas_lamp/block.json b/src/main/resources/assets/tfmg/models/block/gas_lamp/block.json new file mode 100644 index 00000000..bc1bab4e --- /dev/null +++ b/src/main/resources/assets/tfmg/models/block/gas_lamp/block.json @@ -0,0 +1,161 @@ +{ + "format_version": "1.21.6", + "credit": "Made with Blockbench", + "parent": "minecraft:block/block", + "textures": { + "0": "tfmg:block/gas_lamp", + "particle": "tfmg:block/cast_iron_block" + }, + "elements": [ + { + "name": "base", + "from": [3, 0, 3], + "to": [13, 5, 13], + "faces": { + "north": {"uv": [8, 4.25, 10.5, 5.5], "texture": "#0"}, + "east": {"uv": [8, 4.25, 10.5, 5.5], "texture": "#0"}, + "south": {"uv": [8, 4.25, 10.5, 5.5], "texture": "#0"}, + "west": {"uv": [8, 4.25, 10.5, 5.5], "texture": "#0"}, + "up": {"uv": [0, 6.5, 2.5, 9], "texture": "#0"}, + "down": {"uv": [0, 4, 2.5, 6.5], "texture": "#0"} + } + }, + { + "name": "top_cap", + "from": [4, 20, 4], + "to": [12, 22, 12], + "rotation": {"angle": 0, "axis": "y", "origin": [0, 20, 0]}, + "faces": { + "north": {"uv": [1, 3, 3, 2.5], "texture": "#0"}, + "east": {"uv": [1, 3, 3, 2.5], "texture": "#0"}, + "south": {"uv": [1, 3, 3, 2.5], "texture": "#0"}, + "west": {"uv": [1, 3, 3, 2.5], "texture": "#0"}, + "up": {"uv": [1, 1, 3, 3], "texture": "#0"} + } + }, + { + "name": "top", + "from": [0, 10, 0], + "to": [16, 21, 16], + "rotation": {"angle": 0, "axis": "y", "origin": [0, 10, 0]}, + "faces": { + "north": {"uv": [4, 0, 8, 2.75], "texture": "#0"}, + "east": {"uv": [4, 0, 8, 2.75], "texture": "#0"}, + "south": {"uv": [4, 0, 8, 2.75], "texture": "#0"}, + "west": {"uv": [4, 0, 8, 2.75], "texture": "#0"}, + "up": {"uv": [0, 0, 4, 4], "texture": "#0"}, + "down": {"uv": [8, 0, 12, 4], "texture": "#0"} + } + }, + { + "name": "top_anticube", + "from": [16, 20, 16], + "to": [0, 10, 0], + "rotation": {"angle": 0, "axis": "z", "origin": [16, 20, 0]}, + "faces": { + "north": {"uv": [4, 0, 8, 2.75], "rotation": 180, "texture": "#0"}, + "east": {"uv": [4, 0, 8, 2.75], "rotation": 180, "texture": "#0"}, + "south": {"uv": [4, 0, 8, 2.75], "rotation": 180, "texture": "#0"}, + "west": {"uv": [4, 0, 8, 2.75], "rotation": 180, "texture": "#0"}, + "down": {"uv": [0, 0, 4, 4], "rotation": 180, "texture": "#0"} + } + }, + { + "name": "bottom", + "from": [1, 2, 1], + "to": [15, 11, 15], + "rotation": {"angle": 0, "axis": "y", "origin": [1, 2, 1]}, + "faces": { + "north": {"uv": [4.25, 2.75, 7.75, 5], "texture": "#0"}, + "east": {"uv": [4.25, 2.75, 7.75, 5], "texture": "#0"}, + "south": {"uv": [4.25, 2.75, 7.75, 5], "texture": "#0"}, + "west": {"uv": [4.25, 2.75, 7.75, 5], "texture": "#0"}, + "down": {"uv": [4.25, 5, 7.75, 8.5], "texture": "#0"} + } + }, + { + "name": "bottom_anticube", + "from": [15, 11, 15], + "to": [1, 2, 1], + "rotation": {"angle": 0, "axis": "x", "origin": [1, 11, 15]}, + "faces": { + "north": {"uv": [4.25, 2.75, 7.75, 5], "rotation": 180, "texture": "#0"}, + "east": {"uv": [4.25, 2.75, 7.75, 5], "rotation": 180, "texture": "#0"}, + "south": {"uv": [4.25, 2.75, 7.75, 5], "rotation": 180, "texture": "#0"}, + "west": {"uv": [4.25, 2.75, 7.75, 5], "rotation": 180, "texture": "#0"}, + "up": {"uv": [4.25, 5, 7.75, 8.5], "texture": "#0"} + } + }, + { + "from": [7, 5, 8], + "to": [9, 10, 8], + "rotation": {"angle": 0, "axis": "y", "origin": [7, 5, 7]}, + "faces": { + "north": {"uv": [3.5, 4.25, 4, 5.5], "texture": "#0"}, + "east": {"uv": [0, 0, 0, 5], "texture": "#0"}, + "south": {"uv": [3.5, 4.25, 4, 5.5], "texture": "#0"}, + "west": {"uv": [0, 0, 0, 5], "texture": "#0"}, + "up": {"uv": [0, 0, 2, 0], "texture": "#0"}, + "down": {"uv": [0, 0, 2, 0], "texture": "#0"} + } + }, + { + "from": [8, 5, 7], + "to": [8, 10, 9], + "rotation": {"angle": 0, "axis": "y", "origin": [7, 5, 9]}, + "faces": { + "north": {"uv": [0, 0, 0, 5], "texture": "#0"}, + "east": {"uv": [3.5, 4.25, 4, 5.5], "texture": "#0"}, + "south": {"uv": [0, 0, 0, 5], "texture": "#0"}, + "west": {"uv": [3.5, 4.25, 4, 5.5], "texture": "#0"}, + "up": {"uv": [0, 0, 2, 0], "rotation": 270, "texture": "#0"}, + "down": {"uv": [0, 0, 2, 0], "rotation": 90, "texture": "#0"} + } + }, + { + "from": [7, 8, 7], + "to": [9, 11, 9], + "rotation": {"angle": 45, "axis": "y", "origin": [8, 8, 8]}, + "faces": { + "north": {"uv": [3.5, 6.5, 4, 7.25], "texture": "#0"}, + "east": {"uv": [3.5, 6.5, 4, 7.25], "texture": "#0"}, + "south": {"uv": [3.5, 6.5, 4, 7.25], "texture": "#0"}, + "west": {"uv": [3.5, 6.5, 4, 7.25], "texture": "#0"}, + "up": {"uv": [3.5, 5.75, 4, 6.25], "rotation": 90, "texture": "#0"}, + "down": {"uv": [3.5, 4.25, 4, 4.75], "rotation": 270, "texture": "#0"} + } + } + ], + "display": { + "thirdperson_righthand": { + "rotation": [0, 30, 0], + "translation": [0, 2, 0], + "scale": [0.4, 0.4, 0.4] + }, + "thirdperson_lefthand": { + "rotation": [0, 30, 0], + "translation": [0, 2, 0], + "scale": [0.4, 0.4, 0.4] + }, + "firstperson_righthand": { + "rotation": [0, 15, 15], + "scale": [0.4, 0.4, 0.4] + }, + "firstperson_lefthand": { + "rotation": [0, 15, 15], + "scale": [0.4, 0.4, 0.4] + }, + "ground": { + "translation": [0, 1, 0], + "scale": [0.5, 0.5, 0.5] + }, + "gui": { + "rotation": [30, 30, 0], + "translation": [0, -2.5, 0], + "scale": [0.5, 0.5, 0.5] + }, + "fixed": { + "scale": [0.5, 0.5, 0.5] + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/tfmg/models/block/gas_lamp/block_lit.json b/src/main/resources/assets/tfmg/models/block/gas_lamp/block_lit.json new file mode 100644 index 00000000..66a7d304 --- /dev/null +++ b/src/main/resources/assets/tfmg/models/block/gas_lamp/block_lit.json @@ -0,0 +1,188 @@ +{ + "format_version": "1.21.6", + "credit": "Made with Blockbench", + "parent": "minecraft:block/block", + "textures": { + "0": "tfmg:block/gas_lamp", + "2": "tfmg:block/gas_lamp_fire", + "particle": "tfmg:block/cast_iron_block" + }, + "elements": [ + { + "name": "base", + "from": [3, 0, 3], + "to": [13, 5, 13], + "faces": { + "north": {"uv": [8, 4.25, 10.5, 5.5], "texture": "#0"}, + "east": {"uv": [8, 4.25, 10.5, 5.5], "texture": "#0"}, + "south": {"uv": [8, 4.25, 10.5, 5.5], "texture": "#0"}, + "west": {"uv": [8, 4.25, 10.5, 5.5], "texture": "#0"}, + "up": {"uv": [0, 6.5, 2.5, 9], "texture": "#0"}, + "down": {"uv": [0, 4, 2.5, 6.5], "texture": "#0"} + } + }, + { + "name": "top_cap", + "from": [4, 20, 4], + "to": [12, 22, 12], + "rotation": {"angle": 0, "axis": "y", "origin": [0, 20, 0]}, + "faces": { + "north": {"uv": [1, 3, 3, 2.5], "texture": "#0"}, + "east": {"uv": [1, 3, 3, 2.5], "texture": "#0"}, + "south": {"uv": [1, 3, 3, 2.5], "texture": "#0"}, + "west": {"uv": [1, 3, 3, 2.5], "texture": "#0"}, + "up": {"uv": [1, 1, 3, 3], "texture": "#0"} + } + }, + { + "name": "top", + "from": [0, 10, 0], + "to": [16, 21, 16], + "rotation": {"angle": 0, "axis": "y", "origin": [0, 10, 0]}, + "faces": { + "north": {"uv": [4, 0, 8, 2.75], "texture": "#0"}, + "east": {"uv": [4, 0, 8, 2.75], "texture": "#0"}, + "south": {"uv": [4, 0, 8, 2.75], "texture": "#0"}, + "west": {"uv": [4, 0, 8, 2.75], "texture": "#0"}, + "up": {"uv": [0, 0, 4, 4], "texture": "#0"}, + "down": {"uv": [8, 0, 12, 4], "texture": "#0"} + } + }, + { + "name": "top_anticube", + "from": [16, 20, 16], + "to": [0, 10, 0], + "rotation": {"angle": 0, "axis": "z", "origin": [16, 20, 0]}, + "faces": { + "north": {"uv": [4, 0, 8, 2.75], "rotation": 180, "texture": "#0"}, + "east": {"uv": [4, 0, 8, 2.75], "rotation": 180, "texture": "#0"}, + "south": {"uv": [4, 0, 8, 2.75], "rotation": 180, "texture": "#0"}, + "west": {"uv": [4, 0, 8, 2.75], "rotation": 180, "texture": "#0"}, + "down": {"uv": [0, 0, 4, 4], "rotation": 180, "texture": "#0"} + } + }, + { + "name": "bottom", + "from": [1, 2, 1], + "to": [15, 11, 15], + "rotation": {"angle": 0, "axis": "y", "origin": [1, 2, 1]}, + "faces": { + "north": {"uv": [4.25, 2.75, 7.75, 5], "texture": "#0"}, + "east": {"uv": [4.25, 2.75, 7.75, 5], "texture": "#0"}, + "south": {"uv": [4.25, 2.75, 7.75, 5], "texture": "#0"}, + "west": {"uv": [4.25, 2.75, 7.75, 5], "texture": "#0"}, + "down": {"uv": [4.25, 5, 7.75, 8.5], "texture": "#0"} + } + }, + { + "name": "bottom_anticube", + "from": [15, 11, 15], + "to": [1, 2, 1], + "rotation": {"angle": 0, "axis": "x", "origin": [1, 11, 15]}, + "faces": { + "north": {"uv": [4.25, 2.75, 7.75, 5], "rotation": 180, "texture": "#0"}, + "east": {"uv": [4.25, 2.75, 7.75, 5], "rotation": 180, "texture": "#0"}, + "south": {"uv": [4.25, 2.75, 7.75, 5], "rotation": 180, "texture": "#0"}, + "west": {"uv": [4.25, 2.75, 7.75, 5], "rotation": 180, "texture": "#0"}, + "up": {"uv": [4.25, 5, 7.75, 8.5], "texture": "#0"} + } + }, + { + "from": [7, 5, 8], + "to": [9, 10, 8], + "rotation": {"angle": 0, "axis": "y", "origin": [7, 5, 7]}, + "faces": { + "north": {"uv": [3.5, 4.25, 4, 5.5], "texture": "#0"}, + "east": {"uv": [0, 0, 0, 5], "texture": "#0"}, + "south": {"uv": [3.5, 4.25, 4, 5.5], "texture": "#0"}, + "west": {"uv": [0, 0, 0, 5], "texture": "#0"}, + "up": {"uv": [0, 0, 2, 0], "texture": "#0"}, + "down": {"uv": [0, 0, 2, 0], "texture": "#0"} + } + }, + { + "from": [8, 5, 7], + "to": [8, 10, 9], + "rotation": {"angle": 0, "axis": "y", "origin": [7, 5, 9]}, + "faces": { + "north": {"uv": [0, 0, 0, 5], "texture": "#0"}, + "east": {"uv": [3.5, 4.25, 4, 5.5], "texture": "#0"}, + "south": {"uv": [0, 0, 0, 5], "texture": "#0"}, + "west": {"uv": [3.5, 4.25, 4, 5.5], "texture": "#0"}, + "up": {"uv": [0, 0, 2, 0], "rotation": 270, "texture": "#0"}, + "down": {"uv": [0, 0, 2, 0], "rotation": 90, "texture": "#0"} + } + }, + { + "from": [8, 11, 7], + "to": [8, 14, 9], + "rotation": {"angle": 0, "axis": "y", "origin": [7, 11, 9]}, + "faces": { + "north": {"uv": [0, 0, 0, 5], "texture": "#2"}, + "east": {"uv": [6, 0, 8, 3], "texture": "#2"}, + "south": {"uv": [0, 0, 0, 5], "texture": "#2"}, + "west": {"uv": [6, 0, 8, 3], "texture": "#2"}, + "up": {"uv": [0, 0, 2, 0], "rotation": 270, "texture": "#2"}, + "down": {"uv": [0, 0, 2, 0], "rotation": 90, "texture": "#2"} + } + }, + { + "from": [7, 11, 8], + "to": [9, 14, 8], + "rotation": {"angle": 0, "axis": "y", "origin": [9, 11, 9]}, + "faces": { + "north": {"uv": [6, 0, 8, 3], "texture": "#2"}, + "east": {"uv": [0, 0, 0, 5], "texture": "#2"}, + "south": {"uv": [6, 0, 8, 3], "texture": "#2"}, + "west": {"uv": [0, 0, 0, 5], "texture": "#2"}, + "up": {"uv": [0, 0, 2, 0], "rotation": 180, "texture": "#2"}, + "down": {"uv": [0, 0, 2, 0], "rotation": 180, "texture": "#2"} + } + }, + { + "from": [7, 8, 7], + "to": [9, 11, 9], + "rotation": {"angle": 45, "axis": "y", "origin": [8, 8, 8]}, + "faces": { + "north": {"uv": [3.5, 6.5, 4, 7.25], "texture": "#0"}, + "east": {"uv": [3.5, 6.5, 4, 7.25], "texture": "#0"}, + "south": {"uv": [3.5, 6.5, 4, 7.25], "texture": "#0"}, + "west": {"uv": [3.5, 6.5, 4, 7.25], "texture": "#0"}, + "up": {"uv": [3.5, 5.75, 4, 6.25], "rotation": 90, "texture": "#0"}, + "down": {"uv": [3.5, 4.25, 4, 4.75], "rotation": 270, "texture": "#0"} + } + } + ], + "display": { + "thirdperson_righthand": { + "rotation": [0, 30, 0], + "translation": [0, 2, 0], + "scale": [0.4, 0.4, 0.4] + }, + "thirdperson_lefthand": { + "rotation": [0, 30, 0], + "translation": [0, 2, 0], + "scale": [0.4, 0.4, 0.4] + }, + "firstperson_righthand": { + "rotation": [0, 15, 15], + "scale": [0.4, 0.4, 0.4] + }, + "firstperson_lefthand": { + "rotation": [0, 15, 15], + "scale": [0.4, 0.4, 0.4] + }, + "ground": { + "translation": [0, 1, 0], + "scale": [0.5, 0.5, 0.5] + }, + "gui": { + "rotation": [30, 30, 0], + "translation": [0, -2.5, 0], + "scale": [0.5, 0.5, 0.5] + }, + "fixed": { + "scale": [0.5, 0.5, 0.5] + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/tfmg/models/block/gas_lamp/item.json b/src/main/resources/assets/tfmg/models/block/gas_lamp/item.json new file mode 100644 index 00000000..cd2b7679 --- /dev/null +++ b/src/main/resources/assets/tfmg/models/block/gas_lamp/item.json @@ -0,0 +1,161 @@ +{ + "format_version": "1.21.6", + "credit": "Made with Blockbench", + "parent": "minecraft:block/block", + "textures": { + "0": "tfmg:block/gas_lamp", + "particle": "tfmg:block/cast_iron_block" + }, + "elements": [ + { + "name": "base", + "from": [3, 0, 3], + "to": [13, 5, 13], + "faces": { + "north": {"uv": [8, 4.25, 10.5, 5.5], "texture": "#0"}, + "east": {"uv": [8, 4.25, 10.5, 5.5], "texture": "#0"}, + "south": {"uv": [8, 4.25, 10.5, 5.5], "texture": "#0"}, + "west": {"uv": [8, 4.25, 10.5, 5.5], "texture": "#0"}, + "up": {"uv": [0, 6.5, 2.5, 9], "texture": "#0"}, + "down": {"uv": [0, 4, 2.5, 6.5], "texture": "#0"} + } + }, + { + "name": "top_cap", + "from": [4, 20, 4], + "to": [12, 22, 12], + "rotation": {"angle": 0, "axis": "y", "origin": [0, 20, 0]}, + "faces": { + "north": {"uv": [1, 3, 3, 2.5], "texture": "#0"}, + "east": {"uv": [1, 3, 3, 2.5], "texture": "#0"}, + "south": {"uv": [1, 3, 3, 2.5], "texture": "#0"}, + "west": {"uv": [1, 3, 3, 2.5], "texture": "#0"}, + "up": {"uv": [1, 1, 3, 3], "texture": "#0"} + } + }, + { + "name": "top", + "from": [0, 10, 0], + "to": [16, 21, 16], + "rotation": {"angle": 0, "axis": "y", "origin": [0, 10, 0]}, + "faces": { + "north": {"uv": [4, 0, 8, 2.75], "texture": "#0"}, + "east": {"uv": [4, 0, 8, 2.75], "texture": "#0"}, + "south": {"uv": [4, 0, 8, 2.75], "texture": "#0"}, + "west": {"uv": [4, 0, 8, 2.75], "texture": "#0"}, + "up": {"uv": [0, 0, 4, 4], "texture": "#0"}, + "down": {"uv": [8, 0, 12, 4], "texture": "#0"} + } + }, + { + "name": "top_anticube", + "from": [16, 20, 16], + "to": [0, 10, 0], + "rotation": {"angle": 0, "axis": "z", "origin": [16, 20, 0]}, + "faces": { + "north": {"uv": [4, 0, 8, 2.75], "rotation": 180, "texture": "#0"}, + "east": {"uv": [4, 0, 8, 2.75], "rotation": 180, "texture": "#0"}, + "south": {"uv": [4, 0, 8, 2.75], "rotation": 180, "texture": "#0"}, + "west": {"uv": [4, 0, 8, 2.75], "rotation": 180, "texture": "#0"}, + "down": {"uv": [0, 0, 4, 4], "rotation": 180, "texture": "#0"} + } + }, + { + "name": "bottom", + "from": [1, 2, 1], + "to": [15, 11, 15], + "rotation": {"angle": 0, "axis": "y", "origin": [1, 2, 1]}, + "faces": { + "north": {"uv": [4.25, 2.75, 7.75, 5], "texture": "#0"}, + "east": {"uv": [4.25, 2.75, 7.75, 5], "texture": "#0"}, + "south": {"uv": [4.25, 2.75, 7.75, 5], "texture": "#0"}, + "west": {"uv": [4.25, 2.75, 7.75, 5], "texture": "#0"}, + "down": {"uv": [4.25, 5, 7.75, 8.5], "texture": "#0"} + } + }, + { + "name": "bottom_anticube", + "from": [15, 11, 15], + "to": [1, 2, 1], + "rotation": {"angle": 0, "axis": "x", "origin": [1, 11, 15]}, + "faces": { + "north": {"uv": [4.25, 2.75, 7.75, 5], "rotation": 180, "texture": "#0"}, + "east": {"uv": [4.25, 2.75, 7.75, 5], "rotation": 180, "texture": "#0"}, + "south": {"uv": [4.25, 2.75, 7.75, 5], "rotation": 180, "texture": "#0"}, + "west": {"uv": [4.25, 2.75, 7.75, 5], "rotation": 180, "texture": "#0"}, + "up": {"uv": [4.225, 5, 7.725, 8.5], "texture": "#0"} + } + }, + { + "from": [7, 5, 8], + "to": [9, 10, 8], + "rotation": {"angle": 0, "axis": "y", "origin": [7, 5, 7]}, + "faces": { + "north": {"uv": [3.5, 4.25, 4, 5.5], "texture": "#0"}, + "east": {"uv": [0, 0, 0, 5], "texture": "#0"}, + "south": {"uv": [3.5, 4.25, 4, 5.5], "texture": "#0"}, + "west": {"uv": [0, 0, 0, 5], "texture": "#0"}, + "up": {"uv": [0, 0, 2, 0], "texture": "#0"}, + "down": {"uv": [0, 0, 2, 0], "texture": "#0"} + } + }, + { + "from": [8, 5, 7], + "to": [8, 10, 9], + "rotation": {"angle": 0, "axis": "y", "origin": [7, 5, 9]}, + "faces": { + "north": {"uv": [0, 0, 0, 5], "texture": "#0"}, + "east": {"uv": [3.5, 4.25, 4, 5.5], "texture": "#0"}, + "south": {"uv": [0, 0, 0, 5], "texture": "#0"}, + "west": {"uv": [3.5, 4.25, 4, 5.5], "texture": "#0"}, + "up": {"uv": [0, 0, 2, 0], "rotation": 270, "texture": "#0"}, + "down": {"uv": [0, 0, 2, 0], "rotation": 90, "texture": "#0"} + } + }, + { + "from": [7, 8, 7], + "to": [9, 11, 9], + "rotation": {"angle": 45, "axis": "y", "origin": [8, 8, 8]}, + "faces": { + "north": {"uv": [3.5, 6.5, 4, 7.25], "texture": "#0"}, + "east": {"uv": [3.5, 6.5, 4, 7.25], "texture": "#0"}, + "south": {"uv": [3.5, 6.5, 4, 7.25], "texture": "#0"}, + "west": {"uv": [3.5, 6.5, 4, 7.25], "texture": "#0"}, + "up": {"uv": [3.5, 5.75, 4, 6.25], "rotation": 90, "texture": "#0"}, + "down": {"uv": [3.5, 4.25, 4, 4.75], "rotation": 270, "texture": "#0"} + } + } + ], + "display": { + "thirdperson_righthand": { + "rotation": [0, 30, 0], + "translation": [0, 2, 0], + "scale": [0.4, 0.4, 0.4] + }, + "thirdperson_lefthand": { + "rotation": [0, 30, 0], + "translation": [0, 2, 0], + "scale": [0.4, 0.4, 0.4] + }, + "firstperson_righthand": { + "rotation": [0, 15, 15], + "scale": [0.4, 0.4, 0.4] + }, + "firstperson_lefthand": { + "rotation": [0, 15, 15], + "scale": [0.4, 0.4, 0.4] + }, + "ground": { + "translation": [0, 1, 0], + "scale": [0.5, 0.5, 0.5] + }, + "gui": { + "rotation": [30, 30, 0], + "translation": [0, -2.5, 0], + "scale": [0.5, 0.5, 0.5] + }, + "fixed": { + "scale": [0.5, 0.5, 0.5] + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/tfmg/models/block/gas_lamp/test.json b/src/main/resources/assets/tfmg/models/block/gas_lamp/test.json new file mode 100644 index 00000000..1894e9ec --- /dev/null +++ b/src/main/resources/assets/tfmg/models/block/gas_lamp/test.json @@ -0,0 +1,297 @@ +{ + "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"} + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/tfmg/models/block/large_steel_cogwheel.json b/src/main/resources/assets/tfmg/models/block/large_steel_cogwheel.json index 5c45d513..cbe6a979 100644 --- a/src/main/resources/assets/tfmg/models/block/large_steel_cogwheel.json +++ b/src/main/resources/assets/tfmg/models/block/large_steel_cogwheel.json @@ -16,10 +16,10 @@ "to": [18, 9.375, 18], "rotation": {"angle": 45, "axis": "y", "origin": [8, 8, 8]}, "faces": { - "north": {"uv": [0, 10, 10, 11.5], "texture": "#0"}, - "east": {"uv": [0, 10, 10, 11.5], "texture": "#0"}, - "south": {"uv": [0, 10, 10, 11.5], "texture": "#0"}, - "west": {"uv": [0, 10, 10, 11.5], "texture": "#0"}, + "north": {"uv": [0, 11, 10, 12.5], "texture": "#0"}, + "east": {"uv": [0, 11, 10, 12.5], "texture": "#0"}, + "south": {"uv": [0, 11, 10, 12.5], "texture": "#0"}, + "west": {"uv": [0, 11, 10, 12.5], "texture": "#0"}, "up": {"uv": [0, 0.5, 10, 10.5], "texture": "#0"}, "down": {"uv": [0, 0.5, 10, 10.5], "texture": "#0"} } diff --git a/src/main/resources/assets/tfmg/models/block/large_steel_cogwheel_shaftless.json b/src/main/resources/assets/tfmg/models/block/large_steel_cogwheel_shaftless.json index acd85bf6..519e2fd3 100644 --- a/src/main/resources/assets/tfmg/models/block/large_steel_cogwheel_shaftless.json +++ b/src/main/resources/assets/tfmg/models/block/large_steel_cogwheel_shaftless.json @@ -1,4 +1,5 @@ { + "format_version": "1.21.6", "credit": "Made with Blockbench", "parent": "create:block/large_wheels", "texture_size": [32, 32], @@ -13,12 +14,12 @@ "to": [18, 9.375, 18], "rotation": {"angle": 45, "axis": "y", "origin": [8, 8, 8]}, "faces": { - "north": {"uv": [0, 10, 10, 11.5], "texture": "#0"}, - "east": {"uv": [0, 10, 10, 11.5], "texture": "#0"}, - "south": {"uv": [0, 10, 10, 11.5], "texture": "#0"}, - "west": {"uv": [0, 10, 10, 11.5], "texture": "#0"}, - "up": {"uv": [0, 0, 10, 10], "texture": "#0"}, - "down": {"uv": [0, 0, 10, 10], "texture": "#0"} + "north": {"uv": [0, 11, 10, 12.5], "texture": "#0"}, + "east": {"uv": [0, 11, 10, 12.5], "texture": "#0"}, + "south": {"uv": [0, 11, 10, 12.5], "texture": "#0"}, + "west": {"uv": [0, 11, 10, 12.5], "texture": "#0"}, + "up": {"uv": [0, 0.5, 10, 10.5], "texture": "#0"}, + "down": {"uv": [0, 0.5, 10, 10.5], "texture": "#0"} } }, { @@ -31,8 +32,8 @@ "east": {"uv": [10, 9.5, 11.5, 11], "texture": "#0"}, "south": {"uv": [0, 13, 15, 14.5], "texture": "#0"}, "west": {"uv": [10, 9.5, 11.5, 11], "texture": "#0"}, - "up": {"uv": [0, 11.5, 15, 13], "texture": "#0"}, - "down": {"uv": [0, 11.5, 15, 13], "texture": "#0"} + "up": {"uv": [0, 13, 15, 14.5], "texture": "#0"}, + "down": {"uv": [0, 13, 15, 14.5], "texture": "#0"} } }, { @@ -45,8 +46,8 @@ "east": {"uv": [10, 9.5, 11.5, 11], "texture": "#0"}, "south": {"uv": [0, 13, 15, 14.5], "texture": "#0"}, "west": {"uv": [10, 9.5, 11.5, 11], "texture": "#0"}, - "up": {"uv": [0, 11.5, 15, 13], "texture": "#0"}, - "down": {"uv": [0, 11.5, 15, 13], "texture": "#0"} + "up": {"uv": [0, 13, 15, 14.5], "texture": "#0"}, + "down": {"uv": [0, 13, 15, 14.5], "texture": "#0"} } }, { @@ -59,8 +60,8 @@ "east": {"uv": [0, 13, 15, 14.5], "texture": "#0"}, "south": {"uv": [10, 9.5, 11.5, 11], "texture": "#0"}, "west": {"uv": [0, 13, 15, 14.5], "texture": "#0"}, - "up": {"uv": [0, 11.5, 15, 13], "rotation": 90, "texture": "#0"}, - "down": {"uv": [0, 11.5, 15, 13], "rotation": 90, "texture": "#0"} + "up": {"uv": [0, 13, 15, 14.5], "rotation": 90, "texture": "#0"}, + "down": {"uv": [0, 13, 15, 14.5], "rotation": 90, "texture": "#0"} } }, { @@ -68,12 +69,12 @@ "from": [-2, 6.6, -2], "to": [18, 9.4, 18], "faces": { - "north": {"uv": [0, 10, 10, 11.5], "texture": "#0"}, - "east": {"uv": [0, 10, 10, 11.5], "texture": "#0"}, - "south": {"uv": [0, 10, 10, 11.5], "texture": "#0"}, - "west": {"uv": [0, 10, 10, 11.5], "texture": "#0"}, - "up": {"uv": [0, 0, 10, 10], "texture": "#0"}, - "down": {"uv": [0, 0, 10, 10], "texture": "#0"} + "north": {"uv": [0, 11, 10, 12.5], "texture": "#0"}, + "east": {"uv": [0, 11, 10, 12.5], "texture": "#0"}, + "south": {"uv": [0, 11, 10, 12.5], "texture": "#0"}, + "west": {"uv": [0, 11, 10, 12.5], "texture": "#0"}, + "up": {"uv": [0, 0.5, 10, 10.5], "texture": "#0"}, + "down": {"uv": [0, 0.5, 10, 10.5], "texture": "#0"} } }, { @@ -81,12 +82,12 @@ "from": [0, 4.975, 0], "to": [16, 11.025, 16], "faces": { - "north": {"uv": [10, 0, 12.5, 8], "rotation": 90, "texture": "#0"}, - "east": {"uv": [10, 0, 12.5, 8], "rotation": 90, "texture": "#0"}, - "south": {"uv": [10, 0, 12.5, 8], "rotation": 90, "texture": "#0"}, - "west": {"uv": [10, 0, 12.5, 8], "rotation": 90, "texture": "#0"}, - "up": {"uv": [1, 1, 9, 9], "texture": "#0"}, - "down": {"uv": [1, 1, 9, 9], "texture": "#0"} + "north": {"uv": [10.5, 0.5, 13.525, 8.5], "rotation": 90, "texture": "#0"}, + "east": {"uv": [10.5, 0.5, 13.525, 8.5], "rotation": 90, "texture": "#0"}, + "south": {"uv": [10.5, 0.5, 13.525, 8.5], "rotation": 90, "texture": "#0"}, + "west": {"uv": [10.5, 0.5, 13.525, 8.5], "rotation": 90, "texture": "#0"}, + "up": {"uv": [1, 1.5, 9, 9.5], "texture": "#0"}, + "down": {"uv": [1, 1.5, 9, 9.5], "texture": "#0"} } }, { @@ -99,8 +100,8 @@ "east": {"uv": [0, 13, 15, 14.5], "texture": "#0"}, "south": {"uv": [10, 9.5, 11.5, 11], "texture": "#0"}, "west": {"uv": [0, 13, 15, 14.5], "texture": "#0"}, - "up": {"uv": [0, 11.5, 15, 13], "rotation": 90, "texture": "#0"}, - "down": {"uv": [0, 11.5, 15, 13], "rotation": 90, "texture": "#0"} + "up": {"uv": [0, 13, 15, 14.5], "rotation": 90, "texture": "#0"}, + "down": {"uv": [0, 13, 15, 14.5], "rotation": 90, "texture": "#0"} } }, { @@ -113,8 +114,8 @@ "east": {"uv": [10, 9.5, 11.5, 11], "texture": "#0"}, "south": {"uv": [0, 13, 15, 14.5], "texture": "#0"}, "west": {"uv": [10, 9.5, 11.5, 11], "texture": "#0"}, - "up": {"uv": [0, 11.5, 15, 13], "texture": "#0"}, - "down": {"uv": [0, 11.5, 15, 13], "texture": "#0"} + "up": {"uv": [0, 13, 15, 14.5], "texture": "#0"}, + "down": {"uv": [0, 13, 15, 14.5], "texture": "#0"} } }, { @@ -127,8 +128,8 @@ "east": {"uv": [0, 13, 15, 14.5], "texture": "#0"}, "south": {"uv": [10, 9.5, 11.5, 11], "texture": "#0"}, "west": {"uv": [0, 13, 15, 14.5], "texture": "#0"}, - "up": {"uv": [0, 11.5, 15, 13], "rotation": 90, "texture": "#0"}, - "down": {"uv": [0, 11.5, 15, 13], "rotation": 90, "texture": "#0"} + "up": {"uv": [0, 13, 15, 14.5], "rotation": 90, "texture": "#0"}, + "down": {"uv": [0, 13, 15, 14.5], "rotation": 90, "texture": "#0"} } }, { @@ -140,8 +141,8 @@ "east": {"uv": [10, 9.5, 11.5, 11], "texture": "#0"}, "south": {"uv": [0, 13, 15, 14.5], "texture": "#0"}, "west": {"uv": [10, 9.5, 11.5, 11], "texture": "#0"}, - "up": {"uv": [0, 11.5, 15, 13], "texture": "#0"}, - "down": {"uv": [0, 11.5, 15, 13], "texture": "#0"} + "up": {"uv": [0, 13, 15, 14.5], "texture": "#0"}, + "down": {"uv": [0, 13, 15, 14.5], "texture": "#0"} } }, { @@ -153,8 +154,8 @@ "east": {"uv": [0, 13, 15, 14.5], "texture": "#0"}, "south": {"uv": [10, 9.5, 11.5, 11], "texture": "#0"}, "west": {"uv": [0, 13, 15, 14.5], "texture": "#0"}, - "up": {"uv": [0, 11.5, 15, 13], "rotation": 90, "texture": "#0"}, - "down": {"uv": [0, 11.5, 15, 13], "rotation": 90, "texture": "#0"} + "up": {"uv": [0, 13, 15, 14.5], "rotation": 90, "texture": "#0"}, + "down": {"uv": [0, 13, 15, 14.5], "rotation": 90, "texture": "#0"} } } ] diff --git a/src/main/resources/assets/tfmg/models/block/large_transformer/transformer.json b/src/main/resources/assets/tfmg/models/block/large_transformer/transformer.json new file mode 100644 index 00000000..cf46a336 --- /dev/null +++ b/src/main/resources/assets/tfmg/models/block/large_transformer/transformer.json @@ -0,0 +1,374 @@ +{ + "format_version": "1.21.6", + "credit": "Made with Blockbench", + "texture_size": [64, 64], + "textures": { + "0": "tfmg:block/large_transformer", + "particle": "tfmg:block/large_transformer" + }, + "elements": [ + { + "from": [-4, 15, -1], + "to": [8, 17, 17], + "rotation": {"angle": 0, "axis": "y", "origin": [9, 15, 7]}, + "faces": { + "north": {"uv": [9.5, 3.5, 6.5, 4], "texture": "#0"}, + "east": {"uv": [6.25, 4.25, 10.75, 4.75], "texture": "#0"}, + "south": {"uv": [6.5, 3.5, 9.5, 4], "texture": "#0"}, + "west": {"uv": [6.25, 4.25, 10.75, 4.75], "texture": "#0"}, + "up": {"uv": [0, 4.5, 3, 9], "texture": "#0"}, + "down": {"uv": [0, 4.5, 3, 9], "texture": "#0"} + } + }, + { + "from": [8, 2, -1], + "to": [20, 4, 17], + "rotation": {"angle": 0, "axis": "y", "origin": [9, 2, 7]}, + "faces": { + "north": {"uv": [6.5, 4, 9.5, 3.5], "texture": "#0"}, + "east": {"uv": [6.25, 4.75, 10.75, 4.25], "texture": "#0"}, + "south": {"uv": [9.5, 4, 6.5, 3.5], "texture": "#0"}, + "west": {"uv": [6.25, 4.25, 10.75, 4.75], "texture": "#0"}, + "up": {"uv": [3, 4.5, 0, 9], "texture": "#0"}, + "down": {"uv": [3, 4.5, 0, 9], "texture": "#0"} + } + }, + { + "from": [-4, 2, -1], + "to": [8, 4, 17], + "rotation": {"angle": 0, "axis": "x", "origin": [9, 3, 8]}, + "faces": { + "north": {"uv": [6.5, 3.5, 9.5, 4], "rotation": 180, "texture": "#0"}, + "east": {"uv": [6.25, 4.25, 10.75, 4.75], "rotation": 180, "texture": "#0"}, + "south": {"uv": [9.5, 3.5, 6.5, 4], "rotation": 180, "texture": "#0"}, + "west": {"uv": [6.25, 4.25, 10.75, 4.75], "rotation": 180, "texture": "#0"}, + "up": {"uv": [3, 4.5, 0, 9], "rotation": 180, "texture": "#0"}, + "down": {"uv": [3, 4.5, 0, 9], "rotation": 180, "texture": "#0"} + } + }, + { + "from": [8, 15, -1], + "to": [20, 17, 17], + "rotation": {"angle": 0, "axis": "y", "origin": [7, 15, 0]}, + "faces": { + "north": {"uv": [6.5, 3.5, 9.5, 4], "texture": "#0"}, + "east": {"uv": [6.25, 4.25, 10.75, 4.75], "texture": "#0"}, + "south": {"uv": [9.5, 3.5, 6.5, 4], "texture": "#0"}, + "west": {"uv": [6.25, 4.25, 10.75, 4.75], "texture": "#0"}, + "up": {"uv": [3, 4.5, 0, 9], "texture": "#0"}, + "down": {"uv": [3, 4.5, 0, 9], "texture": "#0"} + } + }, + { + "from": [-3, 17, 2], + "to": [8, 19, 14], + "rotation": {"angle": 0, "axis": "y", "origin": [-5, 17, 0]}, + "faces": { + "north": {"uv": [6, 4.25, 3.25, 4.75], "texture": "#0"}, + "south": {"uv": [3.25, 4.25, 6, 4.75], "texture": "#0"}, + "west": {"uv": [3.25, 3.5, 6.25, 4], "texture": "#0"}, + "up": {"uv": [3.25, 5, 6, 8], "texture": "#0"} + } + }, + { + "from": [8, 0, 2], + "to": [19, 2, 14], + "rotation": {"angle": 0, "axis": "x", "origin": [-5, 1, 8]}, + "faces": { + "north": {"uv": [6, 4.25, 3.25, 4.75], "rotation": 180, "texture": "#0"}, + "east": {"uv": [3.25, 3.5, 6.25, 4], "rotation": 180, "texture": "#0"}, + "south": {"uv": [3.25, 4.25, 6, 4.75], "rotation": 180, "texture": "#0"}, + "down": {"uv": [3.25, 8.25, 6, 11.25], "rotation": 180, "texture": "#0"} + } + }, + { + "from": [-3, 0, 2], + "to": [8, 2, 14], + "rotation": {"angle": 0, "axis": "x", "origin": [-5, 1, 8]}, + "faces": { + "north": {"uv": [3.25, 4.25, 6, 4.75], "rotation": 180, "texture": "#0"}, + "south": {"uv": [6, 4.25, 3.25, 4.75], "rotation": 180, "texture": "#0"}, + "west": {"uv": [3.25, 3.5, 6.25, 4], "rotation": 180, "texture": "#0"}, + "down": {"uv": [3.25, 8.25, 6, 11.25], "texture": "#0"} + } + }, + { + "from": [8, 17, 2], + "to": [19, 19, 14], + "rotation": {"angle": 0, "axis": "y", "origin": [13, 17, 8]}, + "faces": { + "north": {"uv": [3.25, 4.25, 6, 4.75], "texture": "#0"}, + "east": {"uv": [3.25, 3.5, 6.25, 4], "texture": "#0"}, + "south": {"uv": [6, 4.25, 3.25, 4.75], "texture": "#0"}, + "up": {"uv": [3.25, 5, 6, 8], "rotation": 180, "texture": "#0"} + } + }, + { + "from": [-4, 4, -1], + "to": [-2, 15, 17], + "rotation": {"angle": 0, "axis": "y", "origin": [-3, 4, 0]}, + "faces": { + "north": {"uv": [9.75, 3.5, 12.5, 4], "rotation": 90, "texture": "#0"}, + "east": {"uv": [10.75, 7.75, 6.25, 5], "texture": "#0"}, + "south": {"uv": [9.75, 4, 12.5, 3.5], "rotation": 90, "texture": "#0"}, + "west": {"uv": [6.25, 5, 10.75, 7.75], "texture": "#0"} + } + }, + { + "from": [18, 4, -1], + "to": [20, 15, 17], + "rotation": {"angle": 0, "axis": "y", "origin": [19, 4, 0]}, + "faces": { + "north": {"uv": [12.5, 4, 9.75, 3.5], "rotation": 90, "texture": "#0"}, + "east": {"uv": [6.25, 5, 10.75, 7.75], "texture": "#0"}, + "south": {"uv": [9.75, 3.5, 12.5, 4], "rotation": 90, "texture": "#0"}, + "west": {"uv": [6.25, 5, 10.75, 7.75], "texture": "#0"} + } + }, + { + "from": [0, 4, -1], + "to": [0, 15, 17], + "rotation": {"angle": 0, "axis": "y", "origin": [1, 4, 0]}, + "faces": { + "north": {"uv": [0, 0, 0, 11], "texture": "#0"}, + "east": {"uv": [8, 0, 12.5, 2.75], "texture": "#0"}, + "south": {"uv": [0, 0, 0, 11], "texture": "#0"}, + "west": {"uv": [8, 0, 12.5, 2.75], "texture": "#0"}, + "up": {"uv": [0, 0, 0, 16], "texture": "#0"}, + "down": {"uv": [0, 0, 0, 16], "texture": "#0"} + } + }, + { + "from": [2, 4, -1], + "to": [2, 15, 17], + "rotation": {"angle": 0, "axis": "y", "origin": [3, 4, 0]}, + "faces": { + "north": {"uv": [0, 0, 0, 11], "texture": "#0"}, + "east": {"uv": [8, 0, 12.5, 2.75], "texture": "#0"}, + "south": {"uv": [0, 0, 0, 11], "texture": "#0"}, + "west": {"uv": [8, 0, 12.5, 2.75], "texture": "#0"}, + "up": {"uv": [0, 0, 0, 16], "texture": "#0"}, + "down": {"uv": [0, 0, 0, 16], "texture": "#0"} + } + }, + { + "from": [4, 4, -1], + "to": [4, 15, 17], + "rotation": {"angle": 0, "axis": "y", "origin": [5, 4, 0]}, + "faces": { + "north": {"uv": [0, 0, 0, 11], "texture": "#0"}, + "east": {"uv": [8, 0, 12.5, 2.75], "texture": "#0"}, + "south": {"uv": [0, 0, 0, 11], "texture": "#0"}, + "west": {"uv": [8, 0, 12.5, 2.75], "texture": "#0"}, + "up": {"uv": [0, 0, 0, 16], "texture": "#0"}, + "down": {"uv": [0, 0, 0, 16], "texture": "#0"} + } + }, + { + "from": [5.9, 4, -1], + "to": [5.9, 15, 17], + "rotation": {"angle": 0, "axis": "y", "origin": [6.9, 4, 0]}, + "faces": { + "north": {"uv": [0, 0, 0, 11], "texture": "#0"}, + "east": {"uv": [8, 0, 12.5, 2.75], "texture": "#0"}, + "south": {"uv": [0, 0, 0, 11], "texture": "#0"}, + "west": {"uv": [8, 0, 12.5, 2.75], "texture": "#0"}, + "up": {"uv": [0, 0, 0, 16], "texture": "#0"}, + "down": {"uv": [0, 0, 0, 16], "texture": "#0"} + } + }, + { + "from": [8, 4, -1], + "to": [8, 15, 17], + "rotation": {"angle": 0, "axis": "y", "origin": [9, 4, 0]}, + "faces": { + "north": {"uv": [0, 0, 0, 11], "texture": "#0"}, + "east": {"uv": [8, 0, 12.5, 2.75], "texture": "#0"}, + "south": {"uv": [0, 0, 0, 11], "texture": "#0"}, + "west": {"uv": [8, 0, 12.5, 2.75], "texture": "#0"}, + "up": {"uv": [0, 0, 0, 16], "texture": "#0"}, + "down": {"uv": [0, 0, 0, 16], "texture": "#0"} + } + }, + { + "from": [10, 4, -1], + "to": [10, 15, 17], + "rotation": {"angle": 0, "axis": "y", "origin": [11, 4, 0]}, + "faces": { + "north": {"uv": [0, 0, 0, 11], "texture": "#0"}, + "east": {"uv": [8, 0, 12.5, 2.75], "texture": "#0"}, + "south": {"uv": [0, 0, 0, 11], "texture": "#0"}, + "west": {"uv": [8, 0, 12.5, 2.75], "texture": "#0"}, + "up": {"uv": [0, 0, 0, 16], "texture": "#0"}, + "down": {"uv": [0, 0, 0, 16], "texture": "#0"} + } + }, + { + "from": [12, 4, -1], + "to": [12, 15, 17], + "rotation": {"angle": 0, "axis": "y", "origin": [13, 4, 0]}, + "faces": { + "north": {"uv": [0, 0, 0, 11], "texture": "#0"}, + "east": {"uv": [8, 0, 12.5, 2.75], "texture": "#0"}, + "south": {"uv": [0, 0, 0, 11], "texture": "#0"}, + "west": {"uv": [8, 0, 12.5, 2.75], "texture": "#0"}, + "up": {"uv": [0, 0, 0, 16], "texture": "#0"}, + "down": {"uv": [0, 0, 0, 16], "texture": "#0"} + } + }, + { + "from": [13.9, 4, -1], + "to": [13.9, 15, 17], + "rotation": {"angle": 0, "axis": "y", "origin": [14.9, 4, 0]}, + "faces": { + "north": {"uv": [0, 0, 0, 11], "texture": "#0"}, + "east": {"uv": [8, 0, 12.5, 2.75], "texture": "#0"}, + "south": {"uv": [0, 0, 0, 11], "texture": "#0"}, + "west": {"uv": [8, 0, 12.5, 2.75], "texture": "#0"}, + "up": {"uv": [0, 0, 0, 16], "texture": "#0"}, + "down": {"uv": [0, 0, 0, 16], "texture": "#0"} + } + }, + { + "from": [16, 4, -1], + "to": [16, 15, 17], + "rotation": {"angle": 0, "axis": "y", "origin": [17, 4, 0]}, + "faces": { + "north": {"uv": [0, 0, 0, 11], "texture": "#0"}, + "east": {"uv": [8, 0, 12.5, 2.75], "texture": "#0"}, + "south": {"uv": [0, 0, 0, 11], "texture": "#0"}, + "west": {"uv": [8, 0, 12.5, 2.75], "texture": "#0"}, + "up": {"uv": [0, 0, 0, 16], "texture": "#0"}, + "down": {"uv": [0, 0, 0, 16], "texture": "#0"} + } + }, + { + "from": [-8, 3, 2], + "to": [8, 16, 14], + "rotation": {"angle": 0, "axis": "y", "origin": [23, 4, 0]}, + "faces": { + "north": {"uv": [7, 0, 3, 3.25], "texture": "#0"}, + "south": {"uv": [3, 0, 7, 3.25], "texture": "#0"}, + "west": {"uv": [0, 0, 3, 3.25], "texture": "#0"}, + "up": {"uv": [0, 3.25, 3, 7.25], "rotation": 270, "texture": "#0"}, + "down": {"uv": [0, 3.25, 3, 7.25], "rotation": 270, "texture": "#0"} + } + }, + { + "from": [8, 3, 2], + "to": [24, 16, 14], + "rotation": {"angle": 0, "axis": "y", "origin": [16, 4, 16]}, + "faces": { + "north": {"uv": [3, 0, 7, 3.25], "texture": "#0"}, + "east": {"uv": [3, 0, 0, 3.25], "texture": "#0"}, + "south": {"uv": [7, 0, 3, 3.25], "texture": "#0"}, + "up": {"uv": [0, 3.25, 3, 7.25], "rotation": 90, "texture": "#0"}, + "down": {"uv": [0, 3.25, 3, 7.25], "rotation": 90, "texture": "#0"} + } + }, + { + "from": [-3, 22, 5], + "to": [3, 23, 11], + "rotation": {"angle": 0, "axis": "y", "origin": [-1, 20, 7]}, + "faces": { + "north": {"uv": [13.25, 0, 14.75, 0.25], "texture": "#0"}, + "east": {"uv": [13.25, 0, 14.75, 0.25], "texture": "#0"}, + "south": {"uv": [13.25, 0, 14.75, 0.25], "texture": "#0"}, + "west": {"uv": [13.25, 0, 14.75, 0.25], "texture": "#0"}, + "up": {"uv": [13.25, 0, 14.75, 1.5], "texture": "#0"}, + "down": {"uv": [13.25, 0, 14.75, 1.5], "texture": "#0"} + } + }, + { + "from": [-3, 24, 5], + "to": [3, 25, 11], + "rotation": {"angle": 0, "axis": "y", "origin": [-1, 22, 7]}, + "faces": { + "north": {"uv": [13.25, 0, 14.75, 0.25], "texture": "#0"}, + "east": {"uv": [13.25, 0, 14.75, 0.25], "texture": "#0"}, + "south": {"uv": [13.25, 0, 14.75, 0.25], "texture": "#0"}, + "west": {"uv": [13.25, 0, 14.75, 0.25], "texture": "#0"}, + "up": {"uv": [13.25, 0, 14.75, 1.5], "texture": "#0"}, + "down": {"uv": [13.25, 0, 14.75, 1.5], "texture": "#0"} + } + }, + { + "from": [13, 22, 5], + "to": [19, 23, 11], + "rotation": {"angle": 0, "axis": "y", "origin": [15, 20, 7]}, + "faces": { + "north": {"uv": [13.25, 0, 14.75, 0.25], "texture": "#0"}, + "east": {"uv": [13.25, 0, 14.75, 0.25], "texture": "#0"}, + "south": {"uv": [13.25, 0, 14.75, 0.25], "texture": "#0"}, + "west": {"uv": [13.25, 0, 14.75, 0.25], "texture": "#0"}, + "up": {"uv": [13.25, 0, 14.75, 1.5], "texture": "#0"}, + "down": {"uv": [13.25, 0, 14.75, 1.5], "texture": "#0"} + } + }, + { + "from": [13, 20, 5], + "to": [19, 21, 11], + "rotation": {"angle": 0, "axis": "y", "origin": [15, 18, 7]}, + "faces": { + "north": {"uv": [13.25, 0, 14.75, 0.25], "texture": "#0"}, + "east": {"uv": [13.25, 0, 14.75, 0.25], "texture": "#0"}, + "south": {"uv": [13.25, 0, 14.75, 0.25], "texture": "#0"}, + "west": {"uv": [13.25, 0, 14.75, 0.25], "texture": "#0"}, + "up": {"uv": [13.25, 0, 14.75, 1.5], "texture": "#0"}, + "down": {"uv": [13.25, 0, 14.75, 1.5], "texture": "#0"} + } + }, + { + "from": [13, 24, 5], + "to": [19, 25, 11], + "rotation": {"angle": 0, "axis": "y", "origin": [15, 22, 7]}, + "faces": { + "north": {"uv": [13.25, 0, 14.75, 0.25], "texture": "#0"}, + "east": {"uv": [13.25, 0, 14.75, 0.25], "texture": "#0"}, + "south": {"uv": [13.25, 0, 14.75, 0.25], "texture": "#0"}, + "west": {"uv": [13.25, 0, 14.75, 0.25], "texture": "#0"}, + "up": {"uv": [13.25, 0, 14.75, 1.5], "texture": "#0"}, + "down": {"uv": [13.25, 0, 14.75, 1.5], "texture": "#0"} + } + }, + { + "from": [-3, 20, 5], + "to": [3, 21, 11], + "rotation": {"angle": 0, "axis": "y", "origin": [-1, 18, 7]}, + "faces": { + "north": {"uv": [13.25, 0, 14.75, 0.25], "texture": "#0"}, + "east": {"uv": [13.25, 0, 14.75, 0.25], "texture": "#0"}, + "south": {"uv": [13.25, 0, 14.75, 0.25], "texture": "#0"}, + "west": {"uv": [13.25, 0, 14.75, 0.25], "texture": "#0"}, + "up": {"uv": [13.25, 0, 14.75, 1.5], "texture": "#0"}, + "down": {"uv": [13.25, 0, 14.75, 1.5], "texture": "#0"} + } + }, + { + "from": [-2, 19, 6], + "to": [2, 26, 10], + "rotation": {"angle": 0, "axis": "y", "origin": [-1, 21, 7]}, + "faces": { + "north": {"uv": [15, 0, 16, 1.75], "texture": "#0"}, + "east": {"uv": [15, 0, 16, 1.75], "texture": "#0"}, + "south": {"uv": [15, 0, 16, 1.75], "texture": "#0"}, + "west": {"uv": [15, 0, 16, 1.75], "texture": "#0"}, + "up": {"uv": [15, 2.5, 16, 3.5], "texture": "#0"}, + "down": {"uv": [0, 0, 1, 1], "texture": "#0"} + } + }, + { + "from": [14, 19, 6], + "to": [18, 26, 10], + "rotation": {"angle": 0, "axis": "y", "origin": [15, 21, 7]}, + "faces": { + "north": {"uv": [15, 0, 16, 1.75], "texture": "#0"}, + "east": {"uv": [15, 0, 16, 1.75], "texture": "#0"}, + "south": {"uv": [15, 0, 16, 1.75], "texture": "#0"}, + "west": {"uv": [15, 0, 16, 1.75], "texture": "#0"}, + "up": {"uv": [15, 2.5, 16, 3.5], "texture": "#0"}, + "down": {"uv": [0, 0, 1, 1], "texture": "#0"} + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/tfmg/models/block/polarizer/block.json b/src/main/resources/assets/tfmg/models/block/polarizer/block.json index ae3f94e2..f025787f 100644 --- a/src/main/resources/assets/tfmg/models/block/polarizer/block.json +++ b/src/main/resources/assets/tfmg/models/block/polarizer/block.json @@ -1,4 +1,5 @@ { + "format_version": "1.21.6", "credit": "Made with Blockbench", "parent": "block/block", "textures": { @@ -114,8 +115,8 @@ } }, { - "from": [6, 8, 7], - "to": [6, 14, 9], + "from": [5.95, 8, 7], + "to": [5.95, 14, 9], "rotation": {"angle": 0, "axis": "y", "origin": [4, 8, 7]}, "faces": { "north": {"uv": [0, 0, 0, 6], "texture": "#3"}, @@ -140,8 +141,8 @@ } }, { - "from": [10, 8, 7], - "to": [10, 14, 9], + "from": [10.05, 8, 7], + "to": [10.05, 14, 9], "rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 7]}, "faces": { "north": {"uv": [0, 0, 0, 6], "texture": "#3"}, diff --git a/src/main/resources/assets/tfmg/models/block/pumpjack/pumpjack_base.json b/src/main/resources/assets/tfmg/models/block/pumpjack/pumpjack_base.json index e8b9b8ef..41d7a574 100644 --- a/src/main/resources/assets/tfmg/models/block/pumpjack/pumpjack_base.json +++ b/src/main/resources/assets/tfmg/models/block/pumpjack/pumpjack_base.json @@ -1,4 +1,5 @@ { + "format_version": "1.21.6", "credit": "Made with Blockbench", "parent": "minecraft:block/block", "textures": { diff --git a/src/main/resources/assets/tfmg/models/block/pumpjack_crank/item_.json b/src/main/resources/assets/tfmg/models/block/pumpjack_crank/item_.json deleted file mode 100644 index 0001f349..00000000 --- a/src/main/resources/assets/tfmg/models/block/pumpjack_crank/item_.json +++ /dev/null @@ -1,166 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "minecraft:block/block", - "textures": { - "0": "tfmg:block/pumpjack_crank", - "1": "tfmg:block/heavy_machinery_casing", - "particle": "tfmg:block/pumpjack_crank" - }, - "elements": [ - { - "from": [-2, 2, 6], - "to": [18, 6, 10], - "rotation": {"angle": 0, "axis": "x", "origin": [8, 4, 8]}, - "faces": { - "north": {"uv": [8.5, 0, 10.5, 9], "rotation": 90, "texture": "#0"}, - "east": {"uv": [2.5, 12.5, 4.5, 14.5], "texture": "#0"}, - "south": {"uv": [8.5, 0, 10.5, 9], "rotation": 90, "texture": "#0"}, - "west": {"uv": [2.5, 12.5, 4.5, 14.5], "texture": "#0"}, - "up": {"uv": [8.5, 0, 10.5, 9], "rotation": 90, "texture": "#0"}, - "down": {"uv": [8.5, 0, 10.5, 9], "rotation": 90, "texture": "#0"} - } - }, - { - "from": [-3, 13, 2], - "to": [0, 14, 14], - "rotation": {"angle": 0, "axis": "x", "origin": [8, 4, 8]}, - "faces": { - "north": {"uv": [2.5, 11.5, 4, 12], "texture": "#0"}, - "east": {"uv": [0.5, 8.5, 6.5, 9], "texture": "#0"}, - "south": {"uv": [2.5, 11.5, 4, 12], "texture": "#0"}, - "west": {"uv": [0.5, 8.5, 6.5, 9], "texture": "#0"}, - "up": {"uv": [0.5, 9, 6.5, 10.5], "rotation": 90, "texture": "#0"}, - "down": {"uv": [0, 0, 3, 12], "texture": "#0"} - } - }, - { - "from": [-2, 6, 6], - "to": [0, 9, 10], - "rotation": {"angle": 0, "axis": "x", "origin": [8, 4, 8]}, - "faces": { - "north": {"uv": [2.5, 11, 3.5, 12.5], "texture": "#0"}, - "east": {"uv": [2.5, 11, 4.5, 12.5], "texture": "#0"}, - "south": {"uv": [2.5, 11, 3.5, 12.5], "texture": "#0"}, - "west": {"uv": [2.5, 11, 4.5, 12.5], "texture": "#0"}, - "up": {"uv": [0, 0, 2, 4], "texture": "#0"}, - "down": {"uv": [0, 0, 2, 4], "texture": "#0"} - } - }, - { - "from": [-2, 0, 6], - "to": [0, 2, 10], - "rotation": {"angle": 0, "axis": "x", "origin": [8, 4, 8]}, - "faces": { - "north": {"uv": [2.5, 11.5, 3.5, 12.5], "texture": "#0"}, - "east": {"uv": [2.5, 14.5, 4.5, 15.5], "texture": "#0"}, - "south": {"uv": [2.5, 11.5, 3.5, 12.5], "texture": "#0"}, - "west": {"uv": [2.5, 14.5, 4.5, 15.5], "texture": "#0"}, - "up": {"uv": [0, 0, 2, 4], "texture": "#0"}, - "down": {"uv": [2.5, 11.5, 4.5, 12.5], "rotation": 90, "texture": "#0"} - } - }, - { - "from": [16, 14, 6], - "to": [18, 16, 10], - "rotation": {"angle": 0, "axis": "x", "origin": [8, 4, 8]}, - "faces": { - "north": {"uv": [2.5, 11, 3.5, 12], "texture": "#0"}, - "east": {"uv": [2.5, 14.5, 4.5, 15.5], "rotation": 180, "texture": "#0"}, - "south": {"uv": [2.5, 11, 3.5, 12], "texture": "#0"}, - "west": {"uv": [2.5, 14.5, 4.5, 15.5], "rotation": 180, "texture": "#0"}, - "up": {"uv": [2.5, 11, 4.5, 12.5], "rotation": 90, "texture": "#0"}, - "down": {"uv": [0, 0, 2, 4], "rotation": 180, "texture": "#0"} - } - }, - { - "from": [16, 13, 2], - "to": [19, 14, 14], - "rotation": {"angle": 0, "axis": "x", "origin": [8, 4, 8]}, - "faces": { - "north": {"uv": [3, 11.5, 4.5, 12], "texture": "#0"}, - "east": {"uv": [0.5, 8.5, 6.5, 9], "texture": "#0"}, - "south": {"uv": [3, 11.5, 4.5, 12], "texture": "#0"}, - "west": {"uv": [0.5, 8.5, 6.5, 9], "texture": "#0"}, - "up": {"uv": [0.5, 9, 6.5, 10.5], "rotation": 90, "texture": "#0"}, - "down": {"uv": [0, 0, 3, 12], "rotation": 180, "texture": "#0"} - } - }, - { - "from": [16, 9, 1], - "to": [19, 13, 15], - "rotation": {"angle": 0, "axis": "x", "origin": [8, 4, 8]}, - "faces": { - "north": {"uv": [2.5, 9.5, 4, 11.5], "texture": "#0"}, - "east": {"uv": [0, 9, 7, 11], "texture": "#0"}, - "south": {"uv": [2.5, 9.5, 4, 11.5], "texture": "#0"}, - "west": {"uv": [0, 9, 7, 11], "texture": "#0"}, - "up": {"uv": [0, 9, 7, 10.5], "rotation": 90, "texture": "#0"}, - "down": {"uv": [0, 9, 7, 10.5], "rotation": 90, "texture": "#0"} - } - }, - { - "from": [16, 6, 6], - "to": [18, 9, 10], - "rotation": {"angle": 0, "axis": "x", "origin": [8, 4, 8]}, - "faces": { - "north": {"uv": [2.5, 11, 3.5, 12.5], "texture": "#0"}, - "east": {"uv": [2.5, 11, 4.5, 12.5], "texture": "#0"}, - "south": {"uv": [2.5, 11, 3.5, 12.5], "texture": "#0"}, - "west": {"uv": [2.5, 11, 4.5, 12.5], "texture": "#0"}, - "up": {"uv": [0, 0, 2, 4], "rotation": 180, "texture": "#0"}, - "down": {"uv": [0, 0, 2, 4], "rotation": 180, "texture": "#0"} - } - }, - { - "from": [16, 0, 6], - "to": [18, 2, 10], - "rotation": {"angle": 0, "axis": "x", "origin": [8, 4, 8]}, - "faces": { - "north": {"uv": [2.5, 11.5, 3.5, 12.5], "texture": "#0"}, - "east": {"uv": [2.5, 14.5, 4.5, 15.5], "texture": "#0"}, - "south": {"uv": [2.5, 11.5, 3.5, 12.5], "texture": "#0"}, - "west": {"uv": [2.5, 14.5, 4.5, 15.5], "texture": "#0"}, - "up": {"uv": [0, 0, 2, 4], "rotation": 180, "texture": "#0"}, - "down": {"uv": [2.5, 11.5, 4.5, 12.5], "rotation": 90, "texture": "#0"} - } - }, - { - "from": [-2, 14, 6], - "to": [0, 16, 10], - "rotation": {"angle": 0, "axis": "x", "origin": [8, 4, 8]}, - "faces": { - "north": {"uv": [2.5, 11, 3.5, 12], "texture": "#0"}, - "east": {"uv": [2.5, 14.5, 4.5, 15.5], "rotation": 180, "texture": "#0"}, - "south": {"uv": [2.5, 11, 3.5, 12], "texture": "#0"}, - "west": {"uv": [2.5, 14.5, 4.5, 15.5], "rotation": 180, "texture": "#0"}, - "up": {"uv": [2.5, 11, 4.5, 12.5], "rotation": 90, "texture": "#0"}, - "down": {"uv": [0, 0, 2, 4], "texture": "#0"} - } - }, - { - "from": [-3, 9, 1], - "to": [0, 13, 15], - "rotation": {"angle": 0, "axis": "x", "origin": [8, 4, 8]}, - "faces": { - "north": {"uv": [2.5, 9.5, 4, 11.5], "texture": "#0"}, - "east": {"uv": [0, 9, 7, 11], "texture": "#0"}, - "south": {"uv": [2.5, 9.5, 4, 11.5], "texture": "#0"}, - "west": {"uv": [0, 9, 7, 11], "texture": "#0"}, - "up": {"uv": [0, 9, 7, 10.5], "rotation": 90, "texture": "#0"}, - "down": {"uv": [0, 9, 7, 10.5], "rotation": 90, "texture": "#0"} - } - }, - { - "from": [0, 0, 0], - "to": [16, 8, 16], - "faces": { - "north": {"uv": [0, 4, 8, 8], "texture": "#0"}, - "east": {"uv": [0, 0, 8, 4], "texture": "#0"}, - "south": {"uv": [0, 4, 8, 8], "texture": "#0"}, - "west": {"uv": [0, 0, 8, 4], "texture": "#0"}, - "up": {"uv": [0, 0, 16, 16], "rotation": 270, "texture": "#1"}, - "down": {"uv": [0, 0, 16, 16], "rotation": 90, "texture": "#1"} - } - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/tfmg/models/block/segmented_display/item.json b/src/main/resources/assets/tfmg/models/block/segmented_display/item.json index e20d8b87..6c7bbb09 100644 --- a/src/main/resources/assets/tfmg/models/block/segmented_display/item.json +++ b/src/main/resources/assets/tfmg/models/block/segmented_display/item.json @@ -1,4 +1,5 @@ { + "format_version": "1.21.6", "credit": "Made with Blockbench", "parent": "block/block", "texture_size": [32, 32], diff --git a/src/main/resources/assets/tfmg/models/block/stator/item.json b/src/main/resources/assets/tfmg/models/block/stator/item.json index bab77a00..e5009e45 100644 --- a/src/main/resources/assets/tfmg/models/block/stator/item.json +++ b/src/main/resources/assets/tfmg/models/block/stator/item.json @@ -1,4 +1,5 @@ { + "format_version": "1.21.6", "credit": "Made with Blockbench", "parent": "block/block", "texture_size": [32, 32], diff --git a/src/main/resources/assets/tfmg/models/block/transformer/item.json b/src/main/resources/assets/tfmg/models/block/transformer/item.json index 8c8a0eff..b5529701 100644 --- a/src/main/resources/assets/tfmg/models/block/transformer/item.json +++ b/src/main/resources/assets/tfmg/models/block/transformer/item.json @@ -1,4 +1,5 @@ { + "format_version": "1.21.6", "credit": "Made with Blockbench", "parent": "block/block", "texture_size": [32, 32], @@ -86,7 +87,7 @@ "east": {"uv": [10.5, 8, 14, 8.5], "texture": "#1"}, "south": {"uv": [10.5, 8, 14, 8.5], "texture": "#1"}, "west": {"uv": [10.5, 8, 14, 8.5], "texture": "#1"}, - "up": {"uv": [10.5, 8, 14, 11.5], "texture": "#1"}, + "up": {"uv": [14, 12, 10.5, 15.5], "texture": "#1"}, "down": {"uv": [10.5, 8, 14, 11.5], "texture": "#1"} } }, diff --git a/src/main/resources/assets/tfmg/models/item/fire_extinguisher/item.json b/src/main/resources/assets/tfmg/models/item/fire_extinguisher/item.json new file mode 100644 index 00000000..d66f8ea4 --- /dev/null +++ b/src/main/resources/assets/tfmg/models/item/fire_extinguisher/item.json @@ -0,0 +1,115 @@ +{ + "format_version": "1.9.0", + "credit": "Made with Blockbench", + "texture_size": [32, 32], + "textures": { + "1": "tfmg:item/fire_extinguisher" + }, + "elements": [ + { + "name": "tank_bottom", + "from": [5.5, 0, 5.5], + "to": [10.5, 10, 10.5], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 5, 8]}, + "faces": { + "north": {"uv": [0, 0, 2.5, 5], "texture": "#1"}, + "east": {"uv": [2.5, 0, 5, 5], "texture": "#1"}, + "south": {"uv": [0, 0, 2.5, 5], "texture": "#1"}, + "west": {"uv": [5, 0, 2.5, 5], "texture": "#1"}, + "up": {"uv": [7.5, 5, 5, 2.5], "texture": "#1"}, + "down": {"uv": [7.5, 0, 5, 2.5], "texture": "#1"} + } + }, + { + "name": "tank_top", + "from": [6, 10, 6], + "to": [10, 11, 10], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 10.5, 8]}, + "faces": { + "north": {"uv": [7.5, 0, 9.5, 0.5], "texture": "#1"}, + "east": {"uv": [7.5, 0.5, 9.5, 1], "texture": "#1"}, + "south": {"uv": [7.5, 1, 9.5, 1.5], "texture": "#1"}, + "west": {"uv": [7.5, 1.5, 9.5, 2], "texture": "#1"}, + "up": {"uv": [7.5, 2, 9.5, 4], "texture": "#1"} + } + }, + { + "name": "head", + "from": [6.5, 11, 6.5], + "to": [9.5, 14, 9.5], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 12.5, 8]}, + "faces": { + "north": {"uv": [9.5, 0, 11, 1.5], "texture": "#1"}, + "east": {"uv": [9.5, 1.5, 11, 3], "texture": "#1"}, + "south": {"uv": [9.5, 3, 11, 4.5], "texture": "#1"}, + "west": {"uv": [9.5, 4.5, 11, 6], "texture": "#1"}, + "up": {"uv": [9.5, 6, 11, 7.5], "texture": "#1"}, + "down": {"uv": [9.5, 7.5, 11, 9], "texture": "#1"} + } + }, + { + "name": "lever_upper", + "from": [7.5, 13, 9], + "to": [8.5, 14, 13], + "rotation": {"angle": -22.5, "axis": "x", "origin": [8, 13.5, 9]}, + "faces": { + "east": {"uv": [4, 7.5, 6, 8], "texture": "#1"}, + "south": {"uv": [3.5, 8, 4, 8.5], "texture": "#1"}, + "west": {"uv": [4, 8, 6, 8.5], "texture": "#1"}, + "up": {"uv": [2.5, 7.5, 3, 9.5], "texture": "#1"}, + "down": {"uv": [3, 7.5, 3.5, 9.5], "texture": "#1"} + } + }, + { + "name": "lever_lower", + "from": [7.5, 12, 9], + "to": [8.5, 13, 13], + "rotation": {"angle": 0, "axis": "x", "origin": [8, 12.5, 9]}, + "faces": { + "east": {"uv": [4, 7.5, 6, 8], "texture": "#1"}, + "south": {"uv": [3.5, 8, 4, 8.5], "texture": "#1"}, + "west": {"uv": [4, 8, 6, 8.5], "texture": "#1"}, + "up": {"uv": [2.5, 7.5, 3, 9.5], "texture": "#1"}, + "down": {"uv": [3, 7.5, 3.5, 9.5], "texture": "#1"} + } + }, + { + "name": "tube", + "from": [7.5, 12, 5.5], + "to": [8.5, 13, 6.5], + "rotation": {"angle": 0, "axis": "x", "origin": [8, 12.5, 6]}, + "faces": { + "east": {"uv": [4, 8.5, 4.5, 9], "texture": "#1"}, + "west": {"uv": [4.5, 8.5, 5, 9], "texture": "#1"}, + "up": {"uv": [3.5, 8.5, 4, 9], "texture": "#1"}, + "down": {"uv": [3.5, 9, 4, 9.5], "texture": "#1"} + } + }, + { + "name": "nozzle", + "from": [7, 11.5, 3.5], + "to": [9, 13.5, 5.5], + "rotation": {"angle": 0, "axis": "x", "origin": [8, 12.5, 4.5]}, + "faces": { + "north": {"uv": [7.5, 4, 8.5, 5], "texture": "#1"}, + "east": {"uv": [8.5, 6, 7.5, 7], "texture": "#1"}, + "south": {"uv": [7.5, 6, 8.5, 7], "texture": "#1"}, + "west": {"uv": [7.5, 6, 8.5, 7], "texture": "#1"}, + "up": {"uv": [7.5, 7, 8.5, 8], "rotation": 90, "texture": "#1"}, + "down": {"uv": [7.5, 5, 8.5, 6], "rotation": 270, "texture": "#1"} + } + } + ], + "display": { + "ground": { + "translation": [0, 4, 0] + }, + "gui": { + "rotation": [-30, 130, 30], + "translation": [0, 1, 0] + }, + "fixed": { + "rotation": [0, 90, 0] + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/tfmg/models/large_steel_cogwheel_shaftless.json b/src/main/resources/assets/tfmg/models/large_steel_cogwheel_shaftless.json deleted file mode 100644 index e69de29b..00000000 diff --git a/src/main/resources/assets/tfmg/textures/block/accumulator.png b/src/main/resources/assets/tfmg/textures/block/accumulator.png index 2de280c841f74ea6099756db1907e672083f419a..2757640c9c15122ca4527bc7f9e7390aa15e32b3 100644 GIT binary patch literal 581 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE3?yBabR7dyjKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCikd1AIbUjg0+c@)~E(S$zBceFxXX|Ns9Rn%lZ~1^9-9FOPCKQ4)5oI(k!* z`vgxzpbkzQM^_-lUlQaO3{;5(7_Quzu@I!9z$3Dlfr0NZ2s0kfUy%Y7lqhkHC<)F_ zD=AMbN@WO0%*-p%^K%VRFx4~EGw;6k-4du~TWW-7ny0500|$`9${@wa%D@O@c>%FB zlnwHs1|u_AoC(M_WMpCx0Mb!FoY~F-7S95*K_CH$LHc1dnxzcDFq**5zyefZU}S8- zxBy}*NC)czh)Gj`Y!F}qn!^NE8DwbzWI=Tq8W@0NRo&Eak-;s5rs zqgb;756guVHN}o?-|g4&-_lbFoqpFuyH(#&$VG&Kb5hGH+vO9g6P9t6TzhVO;on~C zyLUM=n2w8_(7qx6hpXpSozqpJ3xRjSzf9!u_@ZVg%s7*=!_f9b#mvU;hj;DN{>g4| zSsPfvbjD`dHoc4U{TyRZ)C5z{+zvsKr cWNJ10D<`pq4-V@CqlbaP)78&qol`;+0Je{-x&QzG delta 407 zcmV;I0cifk1f~O!8Gix*008_L?V|ty0c}Y{K~#8NwU$9@!!Qs-Q`jNFTBnvlpp`}GnKK3WJ!F?Xgr!HjfCvRJ#D(f_s{Q<>W2Z6 zp)O*e_W6T`;v-^YlK}|c&WWS001OMJ7R*uEA!dhxfe|5qjDJSCi1lNWp{@m^JIy%N z4dCuB5uREBQ_!AHd9~=_onN05D~E*6T-T^{|4_g|j?hw|{?m-PQsiFS3IH zQY`?)LKOzkXzOh=fqJt02?0>Ba;DlG8lv4WPmM^ zJwLYDQ8@rPwSS)yJsO?^;45agsRN9{asYn33)I8f5@T&F=w>S^$0zY5}U0C}ERb%5Mt~xBv|ErZIRafSzFP!8#O{@ayQtYoJTL zDwK;Zt<)*@eX&e*QTXwSCK@98Q#kU8{~ZG`IB)3E!0D z?&1|N!PC%k!k>dcjhqD@k;M!Qe1|}oQB=dL0VpU@;u=vBoS#-wo>-L15RjOeSEA?V z8lqsTXQ*f1eeJs?P|dc~2+uT6Pb~%xAcvJfijkFp5yLl0Qht_LU)yIZ%DxK%|VfnGo)h*=w{`OZM{ib5Z1&8v&ctrV(jjtD73h|H* gI%RC>f2;F^{Ds>hTVk!(UIw|#)78&qol`;+0Q+8$?EnA( delta 218 zcmV<0044v51d{@gL4P4oOjJef@9)#s*RZy_k(8TpbBIn)YpFdr3q=R2b78$-520Fcd)1Ya+S!OMn_8 z4`A{n`g|C`h5JY#&yWown1B%&6U*I^4j^r>kA%(nwG48?UQ=atfda>R2^={)LP1yI zDza|-Qxz}r{=tlg&sStZ^}g+@69bKDFe5jbL&aENF_BoxN?RbEUzQX}Y1Upu{*`(Y U%MTBmH~;_u07*qoM6N<$f^AJ(_y7O^ diff --git a/src/main/resources/assets/tfmg/textures/block/aluminum_inlet.png b/src/main/resources/assets/tfmg/textures/block/aluminum_inlet.png index 24575405a9cd753a47f58d897016bff7e75a0dbb..4ddd000cdc4f9f5c2818b2b26507b5ff0752a40d 100644 GIT binary patch literal 529 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJV{wqX6T`Z5GB1G~mUKs7M+SzC z{oH>NS%G}B0G|+7DLExobuB}4TNkeY-;nV5w4CCKnyR`cKmVM<;*N<^W=F=wFOPCK zQ4)5oI(k!*`vgzJfZ&McqTgje6F3VzB8wRq_zr?F-0oj@DEMW00AR7d3mN7EC0D2onqgl!Tl$yZKzyefhU}S8-xBy}* z$VS!$5R;|=*&x6KG?xjiGRV>b$b#xJG%x_kX79QtJ?XauC}itAT^vI+f>ZlX^R)zU zIA=aw)DV9B|Nonuev3|?Xgd1vVweldgV2T&%`yfDOgDH~gBpU&N9`!ZGcFmBGdRJQsFFW=KWj`M5!D(BnypMU*QwR+o| npOb4Pg?0K%-&d?JsQTY_cYjL6sfL9X(2^>bP0l+XkK;>?rd delta 216 zcmbQp(!w-Bf|G@rfq~)e-A6$a6&32$1AIbU%`B{K?41IFBO>GCLn30*vvLbcDyr(5 z{QPqYi#sMxnSG-;>gD3x6AULd1GRD%ctjR6Fz_7)VaDV6D^h@hX`U{QArhC96B0y1 zf`mj85)#A;eZ9F0O%f7xfMN*=;t2u|XY9)T|rf$WZZ z4-9Yf-kW9T&VAWrbaj1GjmKNn?ft__fgI!>9vxRFr)RAKxudRO5zkML^O(NAEDY{L z4suz@-u^*#esTF{EX`r0aQZwO2i?Sjpt#xlTlMw%F^|dQ?pI(A>j>;c4suZt1t^WB zIgZHH=h-+aKrFiYp3Ni9sQ~GZ0K15yV&N)46assZL-Ekj?Va7?SeoOATz#I6Ljkn# zIsrIR03HDpRT@ik9D8#Fq5!lsI~1?6rUJwxp!ZGzi$GE6Oth{B*RdBlJOXrq-a7>- z0>$CI9y_fLh|b{N_#J@Id#8XugksUW<{4H2aLpe=|H1(%rcJbQK<|X212CeXCJ}QM zIe@N-bNab+Xmb|QBzR0>UP%D%)4BM$bK<$Cm04UV;vVF#dIWkW0J;~8W>M;hIM2PD zuX8{N?A5tWQ30AbKm}OE0lgNWuKOh?v~@u5hypC@zPf;gQxv^-3iJpx?LGyFb9(O- zP=Kc0XJ9`aKq2(rDd3k_JpXkri0gC<#Y-;$ySmH?aSw$^?En_Cto!N!7N6b$+Tk{l z+5z}O!_c)R3|@frMNS%G|^0G|-o;))vIkZ>2TfcUhWfZzzAaN$$gTp-0(666>B9|RaS?_aVXD8gCb z5n0T@z;_6Q8AUa`8i0ZlC9V-A!TD(=<%vb93;~Imc_n&&t|1DhdWL%D-PgWb0@Z9w zjqptK^weVD0CHFvq!?Kl7=bJ=AeM%*L9W+eWCn{f0ojI(Okm$c0oj@DEMW00AR7ce zl`%5B0D2Neqgl!Tl$yZKzyefhU}S8-xBy}*$VS!$5R;|=*&x6KG?xjiGRV>b$b#xJ zG%x_kI;~v!XxGowk3eR;r;B5VMzC*xAm0H69;bzCzVH9Ul(bDgY2I7sjok0_mNzo} zVN_`lDp60Hp%D-!W9QhR&lk|LyteYdnOw`{Us=qreuSkQKfJ}{(Teqq>$~gLK6uyg i`%=@dtg_q#f8TO1)n``LZWTHWvewhp&t;ucLK6Tw$a${- delta 208 zcmaFB+{rY-v0fs;C&aaP@|4K9_<-Puf|80kbLJd9di2_jn+yyLoT)ZDffPqckYDhB z2w=F^yf+dgRp1d>%)r2R7=#&*=dVZs3Z{9wIEH8hhxP^X9WdZi19XylLlhYvVz*Hf4tB<2ehu=&I^jNN*s;HBcPuyB zmAb@OE&oVE;^OsRcgmT*@b(s)v1bzNJT}#yGvewYEV4hpPig{M$>8bg=d#Wzp$P!^ C4OO@R diff --git a/src/main/resources/assets/tfmg/textures/block/bars/steel_bars_edge.png b/src/main/resources/assets/tfmg/textures/block/bars/steel_bars_edge.png index 58681dc8deb8a40ef7e9c6465b2229054b899786..10686a4760e65cfaaefa3acc1145b08d5564fec8 100644 GIT binary patch delta 346 zcmX@dxSn}}o3L+4xQkan*M!OOX*moG45FJpaZQYrsXxTPz;}pIRKu$QC@4|l8c`CQ zpH@AC&ooa@Ed~xChm}E!k(GfF$npYW zX(&4g$kt$F28%NR*@lcv3<5wp3Wzh?S-|31KsFH6GkhvzWO%{M0H@JxWdKS|U}se&Heg%;F&1Pc>jH>TQ-Ev`U;-M<1XdYjX#r$Gbr~8MfMlIku6(rXXX-~F)5z1s zF+?LcIiZokhRsca*~>VQ}8zDabT)brV`7Avk7kE2R4W~GdOb_$7oJDwq=^+sRJvS4)d(g)zM-2 XD9XG#dEqy6pb-q7u6{1-oD!MgCZIV?V3k3Z7C;tMm!W|H zNLJN-UhiU)tw({(Do+>35Q)pCXC1i?Iq$2;p1 z?R$rA&sz8+od3{y_H8OMq27VE&6C$JpH*ex+uk3rV8+uJrqkzKzuUT4?b-d3@!^}K z?FW+dz9+U_Df=WD6MfpfpzqpMrj@onj9J1a|J?N#Jb!)r6Y~Kf`C{`YQ+q)!@^tlc JS?83{1OUypged?3 delta 281 zcmV+!0p|Yo1E>O!7=H)`0000V^Z#K0008evL_t(|UUiZ&iUMH_M(0klBDf%U0>MTb zy}}k-SPFujm3D$2b>y4jg*QLDMVL&Ic}c!Z_k6wk*zNx4&zI})v`^kO*!ODPcS-CI z$1;-k|BA(*FP0wH%z6j_^sG)uUm`E4zOAajn)CxWgo!Zm6Gn!2%u*xoIuVT!lvI6;v0X`wF)91|d4GHg>FgZRgr@Faq@rqTd>RK*d0mT(HQgTXW7S`7*%J%^k za~60+7BevL9R^{>$28%NR*@lcv3<5wp3Wzh?S-|31 zKsE>@05M2Ej7GDR0qFS&>gCZIV?V3k3Z7C;tM zm!W|HNLJN-UhiU)tw({jiF&#?hG?AkooJYM*nr3NWt?Ku#ft{aQ&uZGPS|VuYQe@A zid#@D-lz$D`|(ze*c|5*mEUGG9oCsvp_S5m{QF&}BUf)12C+UW7tx!n6~NQ_ zE^pzFD2>^y8YeGrTEP_lTyJSO>zO-Cxoy*SYpG972wi{5Q?=^u>Q@Ekp)2;+|4UhU z=%Dh>+&|6jXG)6vZTdb=ZI9Z}QgHs{`e{>d?6XwRX7|}RA(?w&j-GIk;S4uB0lqWL zo-W|K|8t`S`WG2>mrrJkEVM`ypjwQd-3(6MpaXKlT;^ V)s_3?qbGs_%hT1*Wt~$(69BEs(V+kU delta 663 zcmV;I0%-k{1)~L!7=H)`0001UdV2H#00L@BL_t(|UZs|?Y8*ijMDL#t34sL$eSyG< zo!Gyiz=1-6!I>f}GuWScrUu^dwy)QFx(%Ayo$l(Xs+n2#@cYl-Q{wg4+v(-U&oTO$ zylaU2j}K$+%hzusp1wbiNG_vu?LkY3w4J`+vEcqd^v7QOI|KER2{0 z%ocWuuqDV*mpK!t*o4WEZylf@mR2>e#$M{u=y<#tYCFs&4g^04q#28wDGQ^BhRmgb z->I=%@VS7{2%~3 z0su@=P~T(WUi=`C2S=DOI%*yQd+_5L`jFK_R6k1Cn}6Vc098?K%b7#5-C2AGY!S`< z+|6Mj3z|SjoW)ZIW)eseB4!+x1Ua8#2=HFWU`=&Z?gi|C2~-E%BX#tc1g=#8 z0UYY;yMMXG7Ib@v3dnfm+1C)f721Kd9*YlA7*(rn8!Ay_0#-=9dr)7`(82+$H(Q+O zlvW3*TibuTy4V63nK?yUdl>vR*fR&L!tCvaRpuE2I0Avr2^LSC@n^TdENvfop92W6 x$DQJCZm|Whu{x`)`)Rl88L+~N@n{GB0rakJ3lJw!65{{>002ovPDHLkV1im_HERF> diff --git a/src/main/resources/assets/tfmg/textures/block/brass_cable_hub.png b/src/main/resources/assets/tfmg/textures/block/brass_cable_hub.png index 15229fabe450f15cecb1ec8052f2cce072bd11d1..18c58a9ae2823c8e6269a8c9bef521050688cbf6 100644 GIT binary patch delta 465 zcmZ3-G?Qh51SbbG0|SGGE`RVuMFmF7iB3xO%cC4ll!RTYjy5#6^$iK%l;rN>6)?fm zFj7S&YMq}EP&sFTM`SSr1K%MKW)#)%Y5)pKl(KW>pcVGK%2~@K!HNrE^(^HFq1IS@zkYZ$IU<9(ffLI#J4yp%oG#Ht|5==n0AtMum z0FaIX;>>myuy_`b4FaFa7#UswJpiN8Y-IpSO<-qW0je}GGB#jb05KJ0CF=r+NmGDq z5MTnD%LGzVBLea9t_1`ll)mIkL?6W^UPSX}CmvvhSr!v@zMDoS1z-Im7OjUfk)s(KjZ zIet8r`$jrZHL0s`&o_HToBPKX%qnZ0)$+ljxUY9s{{gAmBR1?IU&UHPXU?2;HKNea lRb6+pztQeTzm^{T%4&6;rRfL9j=3PWdAjQS_;T8Wtqw%DWzt-q1$`OQd0)WoJU!!%T-x?(jEwe-!7IuByhXh%JRm{gWe%d zIbYX3IjO+r9u;NWaq!fEgdCof85`T$+|JFhnR#$Z<4p+;HRBmeT>T0QXTCi1LE?zH c**0c|d5$WlB<9|^3v?EPr>mdKI;Vst0I(EO+W-In diff --git a/src/main/resources/assets/tfmg/textures/block/brick_smokestack.png b/src/main/resources/assets/tfmg/textures/block/brick_smokestack.png index 42f2f56e43a11f9c2064abc5f3cb5c591950b1bb..5e18b3519b728ede5155c0443c3c6df785c1ff4c 100644 GIT binary patch literal 825 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE3?yBabR7dyjKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCijA1AIbUUAzK(L&6uYSQVd^Q{CJ)ea<{XbK9;7le_cM7q!){oYH$NBXDDq z@9Z$=;)A`(k@TRdp>XIVBMZ8Ch9bQBhGrK|y|ger|4Vps6?gEXskDbV-n3 z@PC|uLEVJg6sU}|z$3Dlfr0N32s4Umcr^e8B}!Z)N`mv#O3D+9QW*jgGxJLH{9Hp6 zO!W-)%)76Bw*;!$mKx!i=IN=$zyaj2GDtD9GB5&JUO+4jWrIRQgOM35&IDu|GBPm; z0O=?o&TMA^i)R7ZAn>V-k>Ld};9xYGr3^r+3G56kK$QkY#s-WFAf|$BWL*F;X$p`H z0!%=2nZPQ8EG>X6s4hbT1CXrK%9W3H{Y?D`jG7cr7sn6_|J0y|QcVgxF6@T_WFj1X z{^P%8?yzZxJnyla+ir6zE|cddocG-F{GZbTObkn=cxkFGWod8xdmtIUj|-2 zpRT^ctp4&s-;b_W4_1CrjkCJL(I{~+u2A92uNntyA+vSoxif$N*w4Mre<@@CQhA2T zyQ&SsA{G35+8PcD3(7=ko1XW|tYzS>GYC2^5$vUTY{gQ^KO5FrEt^t&PSf@6nFs7e zTFd6dub&ef($Xw{Lc6Yh|ICFt~%R6Y3~f1N>v{N))3`QL?W$o%=BZpv53v1d)$bcV7IhyVX&-p*z{Tkz!Z#h|eF MboFyt=akR{0M8&9k^lez delta 1100 zcmV-S1hf0O2J#4y83+ad0047(di0SYAb$yPNLh0L01m?d01m?e$8V@)000CBNkl5g_Pzy_S`ht6DxX<$KXtlYp8=zkp!b45@8FUm@u!8)N}8RdO?Ic5W@Juo}Z^#t@g z?>gyKUywV5fOhlwuwM1tlS;ZG%eywOC8ryW`AY|4=@>> zU7zVkUw|&1Kj&@&#l@w@;NYP3I6aI}gIbE0yP z5_{N-w(Ov`x@%)Lu)ns!-3lNNOm)tM$?}BjJaBPqX$0q5u%Gkg!#$Jc0py8_qbFQV zK*zB|XCeR^M-y-Tw7bvIE`NE#EjnT==U)|^eJnY&lO2AryG6TPbv*L7m;<$q*ub_u z2i)y}x}EFz6ku5;=7K%;PTvM0R)5}vC?MwPMa6s!amFR&A75*@dkA zsXhuns-4omeKd&zKcaVu1)rM9Bk=@t%wO^vD7*VogM!Xn;FuI~dNl$pafsna#pRt=FoyCx*qbi@pj`nHu4pFgCb)<(+j?;?NqTOL?!PIdtMn$Bh}0}Koahr{DU>V>&& z_gK5W4~V}C1_Xv-uzvul6U6_&+y~%~3#`03z`*kM>LkzxZN=X)57=W4oZ6^+!e6kI zjvhHYHlR#I@OV6=>pJVI>KaPuZfAcTv9-q>XB8qbM;q0y?iul)F5<6C>?I7y{fMdT z3ji&9LhRxvq9Si9$lI%kAAgJ>h%-QZ@r(&U#4dXRcCo2;{C{b|QImmX66)Y6qYc`M zzw7$|fUP%W7UuyuYEF9qU;@Yk#+x>N))8C8Lt^4|&hhMI$H34?uL1^;l~6_M1tc%{ z^Oek=+X0pbx%*qwqX~H(VA=CmmGQTse^JSwRBSQT|H|7pZgDDJJTs0wh%Gv^gL-@$ zus4$8C*F=_PdUhWMu$kR_!xmMvmSTIrt4S6`Fo1Xxh;Ud>-)gJ>>1$fPxKqv>YuP? SW+R~h0000jDh+lzSIf^Qi3Hxe!>6I0E6n$cc0dZzK3s^i0$OeG~AO`7&(P)-30K;kmI|B<) zg@KW=0pkLQsURJ!3m_&<0kT1W31|)zSY?o<1&{^RWoTdkl2vt|*Spwc>ro(cnx~6n zh=u>t38(oEEAX(0Ke92r@c;jd+`ucx!LsGno1hWE=8Gi-<0047(dh`GQ0QyNpK~#8N?UXSK!axj#`3lK5+H*~sElpw+ zfVJGu<7iWnYSCAnB{n z%m9Y9?7$YH`3jQhoFM6|(EJCYctnu&ozd-w1WDf+z8?@IeHHu_K($SF6*MzYD~%V> z_!YGL9IHu0*|an?XGoSX~bF331* p@D(62pWf*eG#oyJEiEm7#~YdP^i>5x(zpNs002ovPDHLkV1hPHe!Bnw diff --git a/src/main/resources/assets/tfmg/textures/block/cable_tube.png b/src/main/resources/assets/tfmg/textures/block/cable_tube.png index 17cba08336050c31e196e2df3ca8b3cfcc4122a3..e5f64109e4825d6d66004ac811c97bba2fada5af 100644 GIT binary patch literal 597 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM3?#3wJbMaAF%}28J29*~C-V}>VM%xNb!1@J z*w6hZkrl{y4e$wZl@J$EQIxB0ZtI#bdGU%>$_lbNnkq(m8q1>`PLzaQtBy7_xAhGP zpFU^arX+V4uYd`jhQ$>%@o71#>RM8AN+J?6K$A+=R3rc?@sc3F;Qv?w!!w6xaX=-U z1s;*b3=DkxL735kHCP2GC{f}XQ4*Y=R#Ki=l*$m0n3-3i=jR%tV5(=RXWo77yCqP~ zw$upEG*3@01`Z&Hl|hP;m4Ok+@&aOMC>s<48jQ?faV8+!kdcW&07ypxab`OUSUd~J z27zT|j0`V;0R^McEM)*nO<-qW0je}GGB#jb05KJ0BkKZ)NmGDq5MTnD%LG;#WN86p zL3J4#7=UDR`cCoNzmnhsGADStIEH8hU!8D~ui1dZHGAdkts0xP{{LTj+B8yAt?od@ zlY$3r0&R*eUY(0}aXo%*duht^&Ja^oW`iI-o5kC8?s=@9!sBqks@X1kUzn?PiR9ZK z+bS1xY!(S!dsVtAWYMZK_Y#&k`8!xQPvlyV5TDKwlvr_p@5Mg(cE<0^Kbu@wmM_|p koywj3;NlMRy07UExYOrr)SsUlej4OXPgg&ebxsLQ01$hz;{X5v delta 240 zcmcc0vXW_nW4%^@Pl&68xQL3PTtjnP@8l`7=gn7Ekk!#tG1AkxQ5^Mhac*Q>d_ZtS zK}iJz1A|z-RUwe#D+%%o{*Me8To2qi0hHk^@Q5r1DmVbbj9J$@Ie~(Co-U3d8o^il z0)-kBI9x(Euzdb^-FL>{6-P3eztqW;KWEf@I)}?JSW-X8_MDgR5<#H{Y~5vvDhGI{ zt@BQFvpCgLuv0QtU6!-JId_T@W8R9`uex_OtaehCN_E@uM{6?oe)fkekL|nBcWC#A c)k!_l>%1k4k6eg;0JNIH)78&qol`;+0FoGC>i_@% diff --git a/src/main/resources/assets/tfmg/textures/block/capacitor.png b/src/main/resources/assets/tfmg/textures/block/capacitor.png deleted file mode 100644 index 36342d5eb3ed6571fd09490459061d639f06da61..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 358 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnF3?v&v(vJfv#^NA%Cx&(BWL^R}Ea{HEjtmSN z`?>!lvI6F=@x7{d? zdbv0^AUHxv;)p0vBWHm}WHAE+Hy;QyI_!H0G?n3yr;B5V#`)v~5g{Y9upp6!i!K~H z+NMsQzIr3yk6!Oj-9qaPqU{vjB5OQ)@$jmWg0*i$M6E6qj zLB4f&cZ-)Otb7r1@W6#um4rJRAHI=&$CsSa7@dES<=t9W;f9RHO6fceCx)E03d}k( x5BQo}neV*ZP!JHrl*xMP;GsrNodru67}ix5cz^kx_6_J822WQ%mvv4FO#m7Pdno__ diff --git a/src/main/resources/assets/tfmg/textures/block/circular_lamp_off_outlet.png b/src/main/resources/assets/tfmg/textures/block/circular_lamp_off_outlet.png index 57429ad081d4f0e025d158a530b7352967e0a62c..b85b98518c3f79b754b396d1c452a3e93dacb226 100644 GIT binary patch literal 496 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJV{wqX6T`Z5GB1G~mUKs7M+SzC z{oH>NS%G}@0G|-o6)RS3-@g6i$&;5aUp6$ib@2-D4GCW!<#3`T>{@m7rX=?Xo`yiR z)#@f!fD~^@kYDhBB*0+%La7ZX!CBxDS2!0mM|0 zjjRhGCQSjdL4XNpE)!T~kfjBX1=VF}U;vVJTDkJkuAiwNfy`h}7sn8d;NEk$xf&ce zSOU`btl9nb|9xrK({4^GKOQiarqoaU!z9?i@n j==!E#PIlk7;5&CSFWYRlkQwYilNmf+{an^LB{Ts50e(%i diff --git a/src/main/resources/assets/tfmg/textures/block/circular_lamp_on_outlet.png b/src/main/resources/assets/tfmg/textures/block/circular_lamp_on_outlet.png index 08c1e913a7846feec7633985aefc29e588c8bb94..143d017ad366bb2942efe47a7f0dcf566de2257a 100644 GIT binary patch literal 490 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJV{wqX6T`Z5GB1G~mUKs7M+SzC z{oH>NS%G|&0G|-o_pdJf|M&d=|Nn;Owk}=)z9Heuqa03@gk7tS-jw7%!P5|^(9EMC z2T1Xh1o;I6Rl)#+(EW4gfa0759+AZi419+`m{C;2s{tq|QQ{g=5}cn_Ql40p$`Fv4 znOCCc=Nh75s%NNY-hJ)6B~Z<_)CkWsPfsld4j_k>L5h);ff2~^0%B<>8{{huMrN=$ z6Oe7l$OQIf6p)?S&H@(C02`DS`Oq%ELj8N#CvF!8p$Udx-hG}R&R|*|oWQi!MfVuzlJ=_7B1hw1 n)&;S;cG@p9s%AGWeUV;19AuHFtDnm{r-UW|$qazH delta 185 zcmaFG{E2abW4&~MPl)ULSC{_(d;b6be;a$JfZ&K5#ZfO8=SIfGGcYiu9a)zRq&Q20 z{DOfBz_!e3XEXUMSXC{mKH-y^_|Aq~OqnXWzUh~f dqw@qlGDw_dy`1UseDYvV1PeSOiy0XB4ude`@%$AjKtU}}7sn8Z%gG0r zSXfyFWZWE0#HO5IvZUcuf{2rNF=`?5j!0|%zG*B0Vr>mdKI;Vst E0NIo)$N&HU diff --git a/src/main/resources/assets/tfmg/textures/block/concrete_encased_wire.png b/src/main/resources/assets/tfmg/textures/block/concrete_encased_wire.png index d2e212577c3fca5909bad2bc788b0b3c849eb9f2..5a55f171c53e32c6a251ae1e85f2da09d1499785 100644 GIT binary patch delta 389 zcmV;00eb%81@Z-uK>@dsLU1ZEH$6m3P)$@;F_F_D8HEtHCIA2c32;bRa{vGi!T?v%JGWD?ahad$w)S7oOrP%3y zXf?D!GWfrKdMhu0vh16}<1mg6xM-N*MA601h*FL=?(b7RkV; j0qHM=`T7=D>HW_yw%ZnD%4#Gz00000NkvXXu0mjfa_6cr delta 373 zcmV-*0gC?e1>yyeK>@CjLU18GKSEGbSeu)hoSdB4b6V-6ZHtSGSzcd{kd2j>m5Ysw zk=!8}=UHaC00009a7bBm000id000id0mpBsWRn&F9|bb|yaTqAIssB2U;qFB0RR91 zU;qFB0RR91P+@6qbS_RsR3J4jF)lKbs{u)W>DBf)%Gzvt0002jNklJqOU-3gX2#H} zx?e*p+H4qBJ0{fi1Mt|udcXB;Ah+YV0%zuF9rkgWdRUtu(!{}beQT+WO7`hE498S> zbpBsp%=0vy(vWU$1Tde;l;exJT`+&8k;0kbZ_&DwMMH1R*lz2<0{Nwv zjijq!=)mu)T*gf$7WA=;Gp;|CG0JgpM6{ne0F((;4R-Y9NQX<|zJJtJhw%FcnZFhc TQ`19#00000NkvXXu0mjf=*gx3 diff --git a/src/main/resources/assets/tfmg/textures/block/concrete_smokestack.png b/src/main/resources/assets/tfmg/textures/block/concrete_smokestack.png index a257afbeffacfab4e2d55c53e1f73bf542e8e2da..775cdf961f8b8fc15ab5817121609a229b401e17 100644 GIT binary patch literal 1090 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE3?yBabR7dyjKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCilC2Ka=yx_AZnhJ?qbAT3+kRF?d|UE>6$WS%ESp1CQbwreL%Hy z=FFKrd-kM>6Q@p@GGoTHNs}f_o;-Qx%<07yHC+=XtEy{Foj!Hiv?=rF&!04@zq`A8 z_UxJc{XN~?oqc^h)22?HG-=Y5$rF3~x+hHN?d$6XN=%wOVe*uTQzlQIFk!;t6{}=r zWkp3r1qB89`T4oIx%(#o9nsy>+cj}wAJAti>WfQ&lzT~#U+{mb0EXjp!t#Meau#?* z7BevL9RguSQ4OyKprAyFYeY$Kep*R+Vo@qXKw@TIiJqTph=Qq}p`Lm7weOZdHQQ1n zJkvZqwHP>n999M?Mpgz!Aj=DgrJ-z43~DekgTkOkFc zXkY-6by~Ud(XOAVAAw0}ucwP+h=qUdq_;)04Fp_8J>#MjIP}eYRSq~FyJ2$UtNW~N zD+N0*|M)Avvib5EiPhil&$X4hG1r-6=d0EU$@(n;UXsakiqAA4VP68_j;b z?*P}N)LFZCvaZo$(flww%74+>ZMPy195$G>sCfCKh*k}!T*hD9t}!u$=xpOl$Y8wh ztb245hkX5tsUnY-v%Yw_;}@%c=%nzY?Sy@fbaCN8QXHBlV=5Koo1J> zNWS&$=gwT;!_4PDDRxwt*H^ym5N0Tyw4~Fn;q`I>QN}mE=I=Q+_j46Ba7|8adZoZ9 zAl@$5z%8`?_4SIT`g?MM^X`?%u0Lzopr0J1&N;{X5v delta 1275 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 diff --git a/src/main/resources/assets/tfmg/textures/block/copper_cable_hub.png b/src/main/resources/assets/tfmg/textures/block/copper_cable_hub.png index bb3820a5ecf867e5f8213adcf24b5c9464cc2bd0..cf9403c335ad8a1c03fe31d6153fa0926efa3da1 100644 GIT binary patch delta 201 zcmey({EK;lqrGB)Pl)UCD2Gi+?y~|cCU_b?Zpyh<9epU<$I#r?#Vf!!B>Y54*k*@& zrx_R+I14-?iy0XB4uLSEsD@X=#I`cNPi2e@FPIq^AoOG|#wZ@Al`9|Z`kDF>sHbLf z0i$X3oItJ+hZf delta 202 zcmeyx{F`}#qpNy=Pl)UCD2Gi+?y~|cCU_b?Zpyh<9epU<$Hv|%AUNVian#Gjxsh@4 zCrZM6F6FFYU|`@Z@Q5sCVBk9p!i>lBSENjADC0{2$}j>kgr3a87{#ONKCgGN$=0Jl z(elYzjHY2PG+0*&7WT~8x=HlRhlsmZnJztju`wxp^$A4OOz_V!F+G&5E1ghDV8sVAd>8ZuQ z0pzeUNHMZ9FalX#Kr9VqgB+;A$P5-|0@05M2Ej7GDR z0qExm>gCZIV?V3k3Z7C;tMm!W|HNLJN-UhiU) ztw(`OOHUWa5Q)pl2_iv8W7yxH@Iw>c&@0 is~s=1hBT)cDVj34HOSQ+zuq?wWT2<3pUXO@geCw=p;-w4 delta 171 zcmZ3-yqj@?L_G%^0|SHn=l_X7s>##EF{C0c`G&xwum9Z&MI`pe%;7%%-+${N!%Y@G zx*W}4jFx20`nTR-bK7G%c6JLk&4$Do5}TqX#IdD_Pk6<(NAEzIwWIiiBp{)%yD0-C zwkX!2L`NXm`XWfqQ}4i2u1!geFAN;YSj}!<~Q#$#|Lkp$Mb0DF)#+jG+t-Dk;BfoM{hx-#DmhtxpP0;3vw2^t&s41aJGB; zf63})KEM9I{+`d~$oTJnK;fDPudnC#D3qRP=$$&X(NI(Qv%RwN<9a*CI+5^>uC4~r z2TcC+ZPS1J;FDle(Esz}BeRx|)Q|7q<=;gxFyGZ>L6N7 Xc=^hnCr5q(JgTe~DWM4f?1Fta diff --git a/src/main/resources/assets/tfmg/textures/block/copper_coil_top.png b/src/main/resources/assets/tfmg/textures/block/copper_coil_top.png index c59a6cb6387112a902bcc4a9bd05afbf0dc398f8..1e58792fa6e47d7477c8554e982a9d494d85a400 100644 GIT binary patch delta 374 zcmeyyc#C<0TmAAVhZ7}X*Q%o*H|5xh$wh0b$Vq8wXc`z9TRAv+282Xs<(K67-ppfQ zVBjq9h%9Dc;5!7ujG`J|4M0JO64!{5;QX|b^2DN4hJeJ(yb?V>*AN9$JwrY7?rYyI zfois;MtG)qdTKFn06DA-QjDw&j6jwb5Z6mXIYB^<1|u_Af(ghrWMpCx0Mb!FoY~F- z7S95*LEuvvBf|@31dV1Z15j!LI|B<)CD0oNj0+&9f~;g+05NF_kPQM%nm~h@z)FKG zEr2YjHbVmgkhIgvm5+A)O#KLCMow(kc5ZmG$&h?B!;Mo>g7no;tLx%q(|5 s-uEDZg;}pPfafxwxj-K4ouC=U48avDZ^Mne`#>gny85}Sb4q9e0BD_8HUIzs delta 145 zcmcb`{Ecyfo8yKMuN%ctFBj+jKh>J5XLOQ_@GJmDs(7{Wbg5JUluXQ(a%TX@Z35VZ z&rg?4fRY?Q^c_$HfIJm|xp;SB5WwFHfYbj5xPimo2#V|iPXIUs&|9MKg4hIj<*X(E zdcH8ouQ*0VS^kAw$veryQvmp(eD*AMLB6~J=qXpuT}WTqqen$SQf)*40000Eak7aXC3bAjGWDOeiHGq0m=fU!S`$ zLEz<_tyR}gN%rw9Dt^aw@T3FV)}5#H^xVuROPskLbtdX&&FUEkYu7IC{5&OEmFHdc y-k6wacihqrEP2rN@YX}NLu(tNxeD79m>Ggh&2~!9=ZFB>#^CAd=d#Wzp$Pzi#9LDU diff --git a/src/main/resources/assets/tfmg/textures/block/debug_generator_block.png b/src/main/resources/assets/tfmg/textures/block/debug_generator_block.png deleted file mode 100644 index 84b5ac64f6f67560ccf75296362a1ebe943c2355..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 263 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPFK6) zxs35ZEt~}&k;M!Qe1}1p@p%4<6rfFVdQ&MBb@0Bayn A9RL6T diff --git a/src/main/resources/assets/tfmg/textures/block/diagonal_cable_block.png b/src/main/resources/assets/tfmg/textures/block/diagonal_cable_block.png index fb1bde6829ecc78848d89467706f4bbd745b9e60..8e966f8dd8939492d19000929bbba345279c2b0a 100644 GIT binary patch literal 627 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM3?#3wJbMaAF%}28J29*~C-V}>VM%xNb!1@J z*w6hZkrl}I3-AeXH8i)ib@p`e3W!h3QBjnW5Es$WR58-iP*#wwYHDrn>YXxc&XSd@ zeM7>RM>(7*3A~kh_h#ahktNLbbLa3F3?Ej`;}5aN~$EtFZe$$ zz#yW;a0{r4v%n*=n1O+BKL|5gum-CD1tm&cBT9nv(@M${i&7Z^5;OBk^!!{y6ioFD z^~}4keYXUv*_ImNnda%K#lQjNurf$7vNA9NSzbUa4P}EuLxYhSEY1XE8!|F62mt9Q zAkJ)O0gGn=*&xtc#>nsj7-%pW%~A%S)C6`07NAN4BVz-`1rSp~HnJ{&m^1~*1_36Z zxlCY{L6#Ok7F3s^fdNR?b?(-0;xAIy0GW$CT^vI+g6B@?<~yvw;mY{dd+D~SZq$&`tmo9?d{w?MN-KYz^jhiI zzT0KBx4*_}8%VsKW7_Po!L2$bp~K*-kl~-a4t1VlB!1HXF4$jvF`fJGn(v zowb{Gs$+Mh+nvX0E?;H2*PYSUW8L`nc%|I$vf8Wd6WAvz2`c4lT~X2tJK>ZGa=E9g KpUXO@geCwwakvWr delta 265 zcmey&a*%0)W4%^@Pl#(ka71KWd_hTtilUr^xQLFXijkg%vVv?wb6fA^DYNIzzfm0Z za&ayL1H()aw)sGcuO!GX_&+jWa6NG61W<;vz$3C4sNetyGiF`uC1v8ZTXx2B8X+^ar=Ha~!f~hRY=Q%~S+b01 zPidvWwc_T9cP>n1S$y8*zm0^pLEFO1bKNcTI`-VYDzrZ6&3SX6lNdZ*{an^LF(ots E05I)w*8l(j diff --git a/src/main/resources/assets/tfmg/textures/block/diesel_engine.png b/src/main/resources/assets/tfmg/textures/block/diesel_engine.png deleted file mode 100644 index 3645049bcf7cffcda276bd964198bce6248bd89a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 973 zcmV;;12X)HP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!Tmrm>RH;a9$P=}2BZ`q) zMpfi2ij11)DzLm{DZYK@jty7o)(ff^(hCdpaCFq8L=cLXzykCr7yus7{|m$ez|RXo zCT%}wvR!UI;wE_Y)2K0E)_wEIDqaOYBPU?VlCvSm7f5wS&5YZIK7CiFG z=Wlv9_`rja5qoN4iYMeU6$tD--OEZKL%`8Q2lv0{=DA0F_@(D=@DqsTNTahC23#%X zMkDSl)G_i)Oye@NZm>u~-Z+MoFD~KS^(2zTr0h`W?@y`znDI zkT(ZV0>S}4E(GimYy0~9TwVe}JyG<4Aj18?n#2gkXc7bE&Xt1|kZ8wcU#GwE7^q{} zqq4QVT^I$&qaqNBVjVFe>p_)a1(4@RHI!Kdl-i{9Vh;pkpSmXN v@)VU)Q6U2GiliZcw&sD diff --git a/src/main/resources/assets/tfmg/textures/block/diesel_engine_back.png b/src/main/resources/assets/tfmg/textures/block/diesel_engine_back.png index 3c67aa1ee40437a7507471fb258b313326c3aa24..bfdead89d50a4e4e43c5afbc477e5c4b514725fc 100644 GIT binary patch literal 486 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPFr&QhC)-_>rM0A3SyH{Re`O8(Yy)37&w3&Rt70XRt82O%L|C5p=^*#H5i$};!HrcAtMvmD^WmpW;+X5JPXJM zfdn81>4(v1mNEc6KY^Wr1*pQn$k>2!0mM|04%P(_lcoUKAixAPhY74Q$kGDHg6c9f zFaXJ_y3gxfY_jzzkeT7>;us=vIXOW@BqT^kL?l7LNUY4v&?GEHfG^Oqu(-%HMW8HD zTi?IPFhwB5$SlY#Ob94q93mp*XP6S;Xq?vOTZ;Za3%)r3FS>O>_%)r2R z5QG_bOw4`@6ioDVaSV~T?Amvlw?RR`&@f?a?8qVf2%GtJ-qrK gzu%FTI`e?N(_F=yfBuP{0kn<5)78&qol`;+08__A=Kufz diff --git a/src/main/resources/assets/tfmg/textures/block/diesel_engine_expansion.png b/src/main/resources/assets/tfmg/textures/block/diesel_engine_expansion.png deleted file mode 100644 index 0acac17226ceb9119c9a7199088b1e5d274c9b8b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 251 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPF{{H+|%HA(!%71$(4vsM^j}jkJ8L&f#%4x40rbzTT<9Adn{JteY)}>2U`r+ oI*E0%c?x&9b}SW0=ip#q`0K7bQ?hVT3(z_SPgg&ebxsLQ0Q+cAmjD0& diff --git a/src/main/resources/assets/tfmg/textures/block/diesel_engine_side.png b/src/main/resources/assets/tfmg/textures/block/diesel_engine_side.png index 9b485f50a3105091b5280ce4c5968b801bcaec2a..e3f68a451a494b584970d095922b625188921387 100644 GIT binary patch delta 259 zcmV+e0sQ`}1gHd%VK*^1Jxx?sL`qO|czj=GY?qv#8Xh8}rl+H*s)~@4z;*%Z00009 za7bBm000iZ000iZ0XPLyB$1eQ38r=d0O$h%0H%`{0bhS?j>-=|>KG0H005FnL_t(2 zQ%#Lq4#O}A1Th9bfOTTu|FD&vR?Yq(t!4+J#IGbG&Z0$BRi&t8CayWRyo=m&u1s7? zYvp8LCfY=8s;zEl7IF5O#}0Ne3S{{Wqg2*=M``(Xe8002ov JPDHLkV1j;VY{CEl delta 262 zcmV+h0r~!@1giv)VK+NFJy=^{L`O<~fQ4>xcZ!XYczl3}i;knFr~!)|bPlkJ}-ouY^m|0NM|F13|fYb~vo%*2v&&oShlvoLXM zy|)?%S|%hxO=7=q1L| zsoULs>(n+iXoTQPC@{#kZ+#uQeLEdH_9N`rAu}`BaX*H*!||W-0kE41A()uUe*gdg M07*qoM6N<$f)vPYi2wiq diff --git a/src/main/resources/assets/tfmg/textures/block/digital_display.png b/src/main/resources/assets/tfmg/textures/block/digital_display.png index bf9c125b69a04bf137d33aa02efc94c70ed5008d..07e35a98559df4c480b708aa613f257b7bd4ba4c 100644 GIT binary patch literal 540 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE3?yBabR7dyjKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCil21AIbUjg3vsEUazpodSX*BIDx!|Nk#0CMGE<36x)6`1~u7;w%aB3kHgV z0Yk8Vg%C)vz$3Dlfr0M;2s36~>*NFqN|d-plmzFem6RtIr7{F0X6BXX`MHKDnCcno znRj3NZV6PgEj7Y3&C^qhfdj~4WsqWIWncudynt95$_DvFgOM35&IDu|GBPm;0O=?o z&TMA^i)R7ZAh5rTk>Lf|D3O`_f89%CkTX49{an^LB{Ts5Pr8$b delta 451 zcmbQk@{4(bW4%*=Pl&6rv8kDbwT-<~KyXB4Tzo-EMMHC2@8l_N9=^s#7P{Jowzf`z zp^*ux>2ax91r-%HilbgG&i()YznGYqq@*MR1H)UTTN8nlSV@pyFi;#5Ffd*^@C2xW zv%n*=n1O-sAP6(=sGpeqmVtp$-qXb~#KONdkb6_J0*{J{R=|dd>iQvr7#p6dXFgt+swb%j$=+bGr-o z@<{LZIJCL(b$6Wf1TE&*7d=^Ql}z2IOjxs9UU94M#oAZ5MAkJ=+IgjU*U!%@>F z+||$5oM_Kimp>z)dEJKe+Vm9W6^j^b7tKg%d@t{8^3$ESI(0+jlch7>1Tc0dhBNcA zWociy`AoFPV9MK7PSTUK??f4Xu@Oz#|IW#IUYpFM*4qnm=fyrTbKT+O6z#|s+9Lc| jCAxOc8o&4JZqKM^%QsRvm!+}~7=#R-u6{1-oD!M<|BA>u diff --git a/src/main/resources/assets/tfmg/textures/block/diode.png b/src/main/resources/assets/tfmg/textures/block/diode.png index ba598fc2e5ef5ad226fc946be0143a40546c8c56..d19992267f59bfa0398ecbcacbd26063c03a58ff 100644 GIT binary patch delta 615 zcmZ3=_L^;iV{lP`Pl&6mw5+nSy1u@Vp}DP#SAcIw_~I3-EG%pt9o^#7a*8Wzrq7w@ z>l@THVe;}QhZ7}X*Q%qdo7+-SvZJEnBIDvWCAm-VG*ngBl9E#rk&u~Krs5rNhGjPc z1A|&gkYDhBVgSSPs>VG)9h?Ook;M!Qe1|}oQB=dLVd8ChR`c#_-z_Kp50d{>#>nu3 znSlXD2P9_ZmFW4ohA5co8S0r&E@1SmcUrmf(XOAV9~l@JvpiiKLoEDTCq4{2tia=@ z$g*&2@w(9EWh%0!@BeqrbFfWMe)XxlC~v>CP;$>!hJ>|-=N1+#ol~spud1sMNOtBh zJSNao`XZ3=OYHsfs=6AHWaT4?5=t%(_bWvl-!nFfbY!JYD@<);T3K0RUS{8Y}<+ delta 545 zcmaFOwv=sxqiINhPl&6mw5+nSy1u@VjlEMqaD;`0t)rt`WL$hfNkv0*o3C%sjpC@6 zi*r*_vZJEndM8hrI7Nk{C}zh~1_lP1i3jBE7{oU{x(?)U7I;J!GcfQS24TkI`72U@ zf)XXJ5hcO-X(i=}MX3w{iJ5sNdVa1U3Z{C7dPcwZFmIcz&KM-00945c#4s97-Q*dJ zp7k%UezQ1rE2j#m(#O-qF~q`u?xgO%Lka?}iKh-{MY}F&`t!g3oy~<4$8sj`UCH|T z<=(?RUYcte9kQ1$JLwagy<vquG3| z_H67nOO7 zd@k_Zu`5Yu&s`e0jrs1}qYM!n4-AuLi;;tp$+9WZ?GRjVi@Uu3m;))cPuK?Y6s{_~D%l)j&=a?-@T_NRNV6+_f- ZM!q^XNwb@^vw#u6;OXk;vd$@?2>={&-*5tqTu~FBmQ&r_<{J{;HDR*rK(-+x6W9|`Kz3$33s^i0$OeG~AO`7& z(P)-30KGkdoq+|Y!obMbfN=rDRFDqV1rU>_0NEhG1T=>UtTM>b0?2~uGBhv%$*Q`~ z>s@TJ^(c_(@9E+gB5^r6LBy!AurN#{K_IBq+uNHnC?!EaBq%6IBqbpr+)Pj3+)OJ; zKun95mp9zRrDMga_R^9iVyuQMoLnYI8feK}XcYv(%boFyt I=akR{0G%ISOaK4? delta 342 zcmV-c0jd7S1LXpc7=H)?0001xk!Usm0004VQb$4nuFf3k0003WNkl=6|Nj%BV7i5p=8$YaoY@fYu#%>=pgs6byUd$;Z-zH` ze0mmA0)S36A|`qchgh2p5t+;YfMX7B@9%seO>T%dx||#}D1ZAgo67DxSS*$RfG7cA z7z(e}hhuIV2LMD20KsTHj%Ts0YMpA&K*WwsME+qib2Yy%@*-#($Lt()u`6_64@s!%zeO5GiG=8WB}A(dqG(Ot!Ig z>1jn?1pQ$|+fRIVLZOcfI1_t?UoGt$YHR;u$NS%G}l0G|+7DLExobuB}4TNkf@;)`tm3T*OOg8fd+CGctjR6Fz_7)VaDV6 zD^h@h5+$w?CBgY=CFO}lsSE*$nRz98ey$-3rh0~Y=H1u6TLRT=OO5bM^YqkW-~e)1 z8Kf9l85n^qFCdnNvO(U{U}Of1GXdF#j7(tfMgiHG?JQvNEFc>M5`Y+_A4a2D$^Z@4Zp3tKeRH*~I_z z3gy<1GO;C*?_Zaf-G24&#_{5s^s`?sB+Ev|`0cm*{{0{KEC*H{$@`n_L2mPO^>bP0 Hl+XkKDLt71 delta 500 zcmV?Yu%(CF&Nmzp*zQf}^-tYIm_%)tAf1##|EivwJ#@L$Y!hfH3o?a-WL@p3!0l?GU zU92gkJ6F3kf-QfpI@Djg2>{2(pBh1M7XTQe0MKd^LTQa)w4TolwgUibd1ZyKa#@s~ z?;(OQR-u(r7^F#h&AlNqVa;boYh$z)xp@2L^;XZXO&Fgg!*>TpYpuKyVbEJRAf^VLEtu^5tuAdvkAZ zh_EIAlv3hcSx!cAJc{GTuX^aiDDr$ajG_wGTzqSuWo>zu*`4m>^AGfcet#6lgMR<- zZ^faqoQy9Ed8IwREW$Lpzq1oY5up^{`v20n?z!CIs4b;59=&L3a)IrV^Y0=TR#`|j qRU#KCZ@XBo5o9^Z^560{TK@vImFq*5tqTu~FBmQ&r_<{J{;HDR*rK(-+x6W9|`Kz3$33s^i0$OeG~AO`7& z(P)-30KGkdoq+|Y!obMbfN=rDRFDqV1rU>_0NEhG1T=>UtTM>b0?2~uGBhv%$*Q`~ z>s@TJ^(c@T=;`7ZB5^r6LBy!AurN#{K_IBq+uNHnC`BMCK}19(As{6{)J#v`+>9s5 zAW@5#mp8m1t)RJMiNTJ}_R^9iV#^ddA53e?ZkOiR&XlKlMv`Gcn%u=jyqn`d7J0h* KxvXJhA*0e^|LFT9G?dbwIJR}YU# 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 diff --git a/src/main/resources/assets/tfmg/textures/block/electric_post.png b/src/main/resources/assets/tfmg/textures/block/electric_post.png index 777c90b64b96026ee0ac1b1d360d072116bd5b86..271bf13ada7fe780df6181f5ffe5fcbd20f5db3a 100644 GIT binary patch delta 333 zcmcb@yo_anW4&2`Pl&6bxvh&=fNw~6b#q(SgvpCntXdxBaH1saT6J`BMa`xp_vv%y z#i!*=@HA9a*OHP`5|NN$U|=}1yjB%R36%u-1^-6}43GBj7Xr$17I;J!GcfQS0%1l` z4X*~EphSslL`iUdT1olD8A7b)-PgWbPFx=(|EY|T;RQ1T1B?zx%*-p%^K%VRFx4~E zGoP%$=vnWya^<64KT|&fO)2$saSYK2jy->ouhoEqIUveR{Z#1h|MuBe-p=}Q=&+*Z zQ67~yGbg3QW$E^OT=BiLOH-VUh-l%X%Bb&zim(*5>NM2UH>3o+xrf`yy z-GoZVAMz*o8RQLipR0OuH}KN7-Xz&?wIS~dWFGJ2dtWT3KPQ-tv-^ZaxjE1U44$rj JF6*2UngDXIhpPYp delta 281 zcmZ3+a)o(AC&ooa@Ed~xChjro$NBIOGgAs^fG@8E29*myZFRy;HICU$h3aHH6 z)5S4FBY11SA>RQ79_F_#6aN3-u`JD@;{prYo8km?ln?lnHHKU(oD2T0qEjR@Qr4dxM5~J1fF#Op1_`Jr*8YDI~ID zM_*=aB_}GHP&klDF#rGnd813Kk$@=*zyJUazyWI3i3yRjb_u_B0RZR&006&}G67$I z!mk}??PP}t0001RNklIh<7gBQK#7R^Kmts; zBx2!$;JOjYP!UbWP;G*CB1`67p`!>q_nau}UE#Gk##8Sd9)6S;-~yLHxr;JDvmtY6 stPJBnyKZ_KM_6r7^prk>8-52r-wFv4lv_ZLd;kCd07*qoM6N<$f=KFJGynhq delta 248 zcmV#e`aI&1g6SoMb#wC15djxvAoJKs;(E|?{mqFR08{kwq yH5+anPL7MSG2gD6r{fgc4^8k=e}g9%e}EhBY6-gt>oG9^0000NS%G}Z0G|+7DLExobuAaKfcUhWt_hP3&25`|x_m>ztDD<2)%0|=4b99Qy!~RG zfaWvtv2#nXatQhahKfkYw0mpY0uA9T@Q5sCVBk9h!i=ICUJXD&i4xa{lHmNblJdl& zREB`W%)AmkKi3ciQ$0gH^X_ZkErDvbrABzBd3tIwZ~!^13{s4&42(dQ7Z6KB*&r`z zFfxP1nSg9VMkcTqqk!zpb{4RB7LW}BpUM~+UI2X#qtPs707^|@XJ7%UG%zwYU|aw( z6=Wmp0*FadfNT(80-DPNRvBbz0c1gS85$UXWSv&7e6;Il>PH|m$J50zL?bx1Kaj80 zfP3cEi0d&odrS Vb@k0Th0{T9@O1TaS?83{1OU6pfUW=l delta 206 zcmV;<05Si91fT+tMj7uW5ApSZ72{JxB$olzomZu=i>8hu{Q(|3K~0XN+S3>^ohGXMYp07*qo IM6N<$f=zW#5dZ)H diff --git a/src/main/resources/assets/tfmg/textures/block/encased_coil.png b/src/main/resources/assets/tfmg/textures/block/encased_coil.png deleted file mode 100644 index c18e4e1ab5c04ef138cc5c621e62731662a6a5d3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 244 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPFNS%G|~0G|+7DLExobuAaKfcUhWt_hP3&25`|x@4tgm6g@?^^K~V+bk?>ZS0)_ zf+LnkIh-g7yH*|T8xp=L$$f&Sp{AOih=j~1@8WMj(>Mz}B8wRq_zr_G*AN9$JwrY7?rYyIfois;MtG)qdTKFn06DA-QjDw& zj6jwb5KBYZAirraGK0mLfNVoXCa_T~|4pH02M!iXF-F1b%0K_d`>I~t8uokRYPK|n4eS$kn9N|9!1?1Uf>Qth delta 272 zcmV+r0q_2g1fT+t8Gi-<001BJ|6u?C0Ov_WK~#8NrIRrV!axv3a}Pl;Df%i$Kc?8{`~gZT WNS%G}x0G|+7DLExobuAaKfcUhWt_hP3&25`|x_m>ztDD=3D{7WUIh-g7yH*{& zDan0;r=g~ro`{5uO|-ZdP&;RVM`SSr1K(i~W;~w1A_XWYQQ{g=5}cn_Ql40p$`Fv4 znOCCc=Nh75s%NNY-hJ)6B~Z<_)CkWsPfsld4j_k>L5h);ff2|8nJEorgFK_b$P5-| z0@05M2Ej7GDR0T>(;*cn)WDh!N_4Hy?dOavp@ z3Xlx~Oh9v(z$$|*Er2YjE<*zYkgTfvyxzqoTaN;n8J;eVAsWG{{f*GpmLiizopr06aW+Z~y=R delta 264 zcmV+j0r&p+1DFDk8Gi-<001BJ|6u?C0N+VOK~#8NrIRrV!axv3_da5wixN-}EW}0- zY}7(eAP8Dm3W8lKy@8kV3Z7!*4SZNNgy0rGnVtFn?@Y2AV(b~{7X!y|G`9I-=~!*H z4y~z)Ctctn;{JHD^W|#g?Oq9LaKv{5+*nMeGmG8A+O1A4;D5kHgVqgjr9g}62;Wd0 zE*du=L2I~6oQ{*WEfcupi33UIBPnrJ7vy9D7Y%VBnHsPg@8@A{ugA_ooYrK3_QQaf z)*vC&j>NpFk!x(Aks2HPH3EsOkC^=%>kbkk2_^nHNZCg@`!eNT=Qla-2p3um{6GKz O002ovPDHLkU;%=NS%G}l0G|+7DLExobuAaKfcUhWt_hP3&25`|x_m>ztDD;rJ#EY5!a565W;Pb> zSkQa^(2A#b_b-ofI8hRItvY&BlKTWtLrpb35eb?6vw_t>133#kB8wRq_zr~kXKn^Q| z6eBAGBar0<#L`eU$a@-$%wTaQAls0U3GCe{AUm_21uUKgWP`w`GDe0Mz)*nEXqGYn zr6#a5umDvW7#SNdE`XQ{vXONG#H1-eHV7~Q&1C|s46?KUvY@&Q4GciCPAgYF+VwN_ zBam6_>Ealo5uDl|$k%MZ<1D;9a)GX9YwvG)(cINtT<<@7`sFCeDYmurHFU79;cXN6 z*d3Xu#Fjd5pHpd{=5vwstNR^d_K3tQ&D!uJ`)-*3wU#GASGP@iDrCJS?$D(D-)|{D rtTVB>cdwh%F1hr?m7l$f8y~a$p2vFWsw?YHkW)Ne{an^LB{Ts58!(Y} delta 295 zcmV+?0oeYP1h)c^8Gi-<001BJ|6u?C0RBltK~#8NrIW!5K|vIT@B7Gt8!4nL#6l@0 zEUuKTx}jK-QWjQh?39g1uv1>Z*2dDpQyhJ#PF*Er7XREc=luUabMDM|zMm41&SVw2 zLQ!h&q9iy!t)x7$D3u`~F*C13&(AeP!Bo#s&%FEEcT1p} zZK)BSX`Y^13>-iXD}xjxD+42tMK4)^a|S2Nnlzq65GpZa(2OLG(-_PYm~> lFjw7F-sAvpFJ`8#Dh#Sm)N{L@gm-`}_jL7hS?83{1ONp4WS;;4 delta 239 zcmV*c3WA-Lc7lFt&-S{I-47R1+SquKyLR( zJYTMH*X)f0cn+_}EE%Xl&KQ-Ty7b9lG@hg=6yShD392hT+-OFSL0u1HRSk-uCIb?+ zM$kpxlmiXg)*F!EzXrdIa5$d&8T3xjG5GcyZ3Hcn7UPpe@_I{vqc+m7uZK3!j~uw5 pSq6Gx!JpyMn1PS{E`CV^e*zY*>DNE_=0gAg002ovPDHLkV1jazYC-@2 diff --git a/src/main/resources/assets/tfmg/textures/block/encased_steel_pipe_side.png b/src/main/resources/assets/tfmg/textures/block/encased_steel_pipe_side.png index 71dd5eb39b8726a9880a2b9639ee29ca1949d0fc..1790ff041cdfd58bcd2b631fbed41368e166b911 100644 GIT binary patch literal 536 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPFrK(-+x z6WC`_Kz3$33s^i0$OeG~AO`7&(P)-30K;MeI|B<)g@KW=0pkLQsURJ!3m_&<0kT1W z31|)zSY?o<1&{^RWoTdkl2vt|*Spwc>ro)H+tbA{MB;LCf`||clPe=zVz_X6a&n?M zo8b4Zu20{D%-ODfd%600NoY)xz&b0t?9}Jq(s`6ZFQ>mX>Z@GNk|f?WZbfFuVqi; pd&fJwcPw9%$dl!n>9AlL3j@EJL_t(|UX_wN3&KDUg!8LJQ1F3;Vi6$< zJ|F=b5iCS3ECs>NN;^S+YUDeZV{>_c#jta?vyFZSn*W0~pU^kA?{sraLVPywaY?mlg-8CA7OVn3G13yC5L$YH18Qq~NJtR87vFQoh xh~7UWoG1ox5+phUdxlHn4QK-bEU!bT{{bUK66ANfXYc?3002ovPDHLkV1g?Cgm3@= diff --git a/src/main/resources/assets/tfmg/textures/block/encased_steel_pipe_side_connected.png b/src/main/resources/assets/tfmg/textures/block/encased_steel_pipe_side_connected.png index c6f556d9d91d91025b62a736641018e6425d26c5..05f0a6feb79d02e90b000fa8d3e60a394cdc47f1 100644 GIT binary patch literal 2215 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 N_Iq!aTIb;O{{mkaEd&4n diff --git a/src/main/resources/assets/tfmg/textures/block/engine.png b/src/main/resources/assets/tfmg/textures/block/engine.png deleted file mode 100644 index 41106f0eb4b19c4fd92c3b3324e51a8772a6b208..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 193 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPFEak7aXC35B*@IjEKJ1FAVQ{9Wa<=_Sc#S?zRk|gy&{Q0T0DIzh6`?q3h=BD g<>Am)=n{2h*pwhr-?H@5NuU`Fp00i_>zopr09k%FCIA2c diff --git a/src/main/resources/assets/tfmg/textures/block/engine_controller.png b/src/main/resources/assets/tfmg/textures/block/engine_controller.png index 60da5558fe8f8dcfb1437c8077f65b9fa7fcd34a..eeab855aefaea864d1029770455531fa97756c8f 100644 GIT binary patch delta 508 zcmdnV`hazUW4%*=Pl&6kx|X52t&3N{&#%w_|9k5j5*`^B|MuDK__Q1|3+u%zR!yHX zuWQ2O>gKlMiW(_7B@qdk37&@6s-q8O`z()gU|?Wa{m^3}kP<5i@(cct4KOfXI`9Oj zg0sLQvY3H^?;r>>?qHsn{dVGPc~KW>pPc~rmtk2$cO?uLAiC_i>MtM&c#}Etu-r(DlS`9du`$E1Yov(WMzrK`x!`5x@ z&OBqB>&K%Q!l2T!c?(162Cg5o;yl78{9szBwXB893ok_O>@Z*ecttvtph=ZO5aJ6PS%UIE1@7?o2W{^eS3l_jwnM z=Xzn0slBN=8`Y8&6T4D3I_8|-mZP?OS2$C6lTP)$&w7yoUn_!6w96Ewgm=uoP`%>h l-{h`#nJgdHyYfG{KN`qC+tA$BJ9*06XSZk1o6o?& zAbW~=6_Da73Gxg6j{pop_s^XJigOltL>4nJ@ErnSMo|r~2B4rsiEBhjaDG}zd16s2 zLqK9?UWuNcYlwoWo}r$J(EVl23=>}j%6}?jWO%{MzyPDs)J=|H^sL{&(c`y7yB}yM zqk^Z4V~B-+YY->jAp@RbzJhCi{_od#skV!0(JZBDlGpo~JGgeu*v+iOv}1Rw)dS92 z8+onJ7*99ZNv~!GC@G$QtQmE*{pbw!9Fc}b7C!5=p9dcZR7{tbN?SjB#j!eu+^DR- zL2vF08?8yXDPZt}^~3as?QHe4*XM~Z5O^&gdumHpeE1bvZH9F5=_i6JnM-c7{WJb^ z)!?b$QSOAoz;~h99PdreS*&3+;nFnuWqn?9#p%po)u+T<0a17r8A-k+5g*31@S8mD%>ziEC}F z+$A0(sRD6L(aWqaHiXTd`smn)#LMQq`?5EjJvx2I`{E7fZP$CwI~~xupP^S;^!OCU SG$~*dFnGH9xvX`N3TW-D>+{D>9o5ZY-(kk%`72T;PM2pj5xT#udE)LM`2?U6Mj(dK0g0J;C3=3YAqu8?hI%HGbr?M} zuRq(Zxc6E77N9auPZ!4!jo{v1Zmt6c9L~O*`rrLymou7?y6ysti=5i6uM^iYGOIqi zS)6eDvPQw2mrS}wul_TA;s`Ijz-#cFTSP%{RmdK II;Vst01+-xWdHyG diff --git a/src/main/resources/assets/tfmg/textures/block/engines/engine_back.png b/src/main/resources/assets/tfmg/textures/block/engines/engine_back.png index 3d23c2ba5bed9253e5826b523cb1b469aecfe9e7..b65b2d9b9cfce0094c91eb5906c877d7be95e53c 100644 GIT binary patch delta 218 zcmdnRa+P_4BnLAC1A~SxfAB;_1vk+EpAc6UuK?eWa6@z3__Q2VbuB45C7_C&d)#b5 zioGPrFZe$gFi3eby8(qb3p^r=85sBuf-vKbiP>)_2A6T(EMsJN0W|vN#7pr7*}JYu zPx>tp3{)N9>Ealo5j?l=AXftek5g&Z|Nkcw*Lce|$sIaoz2jj;gFKVUjuLi*8LZ3= z#=Tp(E%I`zqy*G-qvvM$uh0lQ5_5F^qpKfx1r`1eOgtVb^PAH L{an^LB{Ts5x{6Hv delta 322 zcmV-I0log!1G)r|83+ad001BJ|6!3KAQB01NLh0L01mu{S4(0lFyU^|__^(Ns28mo)B4O){-IN`7Op9aoVp>RH( zwO)hPBolFai3rF2!He0ICBn6)Gp#3dpSm7k`ToZ2WnQZ_VHWe(Rsj{#e{bR!&&goj U9$1Ls01E&B07*qoM6N<$f(Fr!6#xJL diff --git a/src/main/resources/assets/tfmg/textures/block/engines/engine_bottom.png b/src/main/resources/assets/tfmg/textures/block/engines/engine_bottom.png index 2a0c79d6a5509e7485632f46f0c22abab732e3a9..7673666b5a20d919c9f26a6d10f261960d43500a 100644 GIT binary patch delta 179 zcmZ3nsjsQu=|OYte$yRJ!3`YjO*RPEyF;us=vIXOWbP0l+XkKN((n} delta 304 zcmV-00nh%e1E~a%7zqdl0000V^Z#LyAs`Y7a7bBm000ic000ic0Tn1pfRSr<3G#LU z0O$h%0P>OQUw=ZWsp7i%W$^$20N6=HK~y+T&6BwfgfI+5CrG5o(ILTiQBd&z1xR#| z6rso#izDZt*lwR>3G894*g?$88UaAc9z+Ot_TI{ca0383rb&3`5W<~>cdnEH+#nO5 zSM<&yi}Q+HQyCD{$)8u`!D}2bFYCA4BO;VFLTL>=A9=pjI{;8xW0*#vtP#o@LAfM; zo~b@eV=~WXd~wf@>-Rj?y|al(KJj2Y?UE5w0QXyd2a30000=5)*F)h7*hZM0FOyTK~yNu zjZlFN!ypVZ*3z-P;L9UA66WGTB7LnJ8c-Oiq z|T);8|00Na2Qk6(rBle=lO59Km(ju?e&C=)C&c}T7aW% z{$879IWRuR2aAbM;+cZ{|3OA(rq(vd-PA_+lo8Ggh94-=C8$%~y}AGZ002ovPDHLk FV1ll9XyO0> delta 619 zcmV-x0+jvu1K|dc7zqdl0001UdV2JcAs`Y7a7bBm000ic000ic0Tn1pfRSr<3G#LU z0O$h%0P>OQUw=ZWsp7i%W$^$20uV_=K~z{ry_QXD!!QhnUk}yhpu1L>15F7-}OlZC~#XJr~TD?Aj@;C z)~j(?`MRWIwdg5CJJt&kd^29X9Bs>cJ@5T`j(-!K0t|W83;ZzG(Srtnnd)ROBG4V8 zE-ihz=|GZPM3xQLJtt4{A|iP7*Y=X}6ja;Invehh002ovPDHLk FV1gV|8hZc$ diff --git a/src/main/resources/assets/tfmg/textures/block/engines/engine_controller_parts.png b/src/main/resources/assets/tfmg/textures/block/engines/engine_controller_parts.png index 029334f77a53f568c96842e4b6afde327b0a8f0a..4bf7952c4302650355d3a482961645695ab2cc66 100644 GIT binary patch delta 415 zcmV;Q0bu^S1*Qd%L4Sl$OjJdio}VQrDls=b78V%|3=)l#ltfBUO;lGeFft=0CxC;7 zSzcdobaMnf@CO<5CoS^Bt*RN#sl!S|NsB2Kn0w~uAUhYNK{o5Fcy#zXzE<5kof?{ zpf1myMq@I7&d6iMWX3W@W^vSd>zN}9{$R=fDv$wk%Jl z^W_Q^I3)9RT{lfGb8C$>7_m}ScQhFAct)6X#_Juyr!$6p`2nIW8(;lPho}Gm002ov JPDHLkV1lRIrw{-D delta 435 zcmZ3+x|?-^V|{yoPl)U6dGl@TodSX*#Ka_dd4!tk>w70piHwUcD5=mlFj7`kudb+Q zXl^ShD9A`kN{Ee(2oDbk2r#p-o;GPxNlA&1k56YuhljiS(s}c`ySg0gosS(lv~|OV z1v6$WoH?_jt*xxA%*xWXsHi9{EiEA-!Nk~n_VnpGI{KIWBm*wTC#tJ!D=MlpFfgzf z&PfAOx+Ot=!4n@UO#Hwj#jx}}_g|nGXMsm#F#`kNK@eu#F){n?WNAiuRuiH7%bF+K zGX}}uEMsJN!OXw_qXQB%^GfvmTtgI0^$hh)CU0Q$te+|Ud3%rMCncbH^E_P~Lo|YY z&qne!IS8;^Se9NOmLe?38X`7v?YnwA<&z7(Mpj<+WvMuGMovMcWoTYO(pF?)&nKsMp4J9c$(Do;Uu!W!2y^ zy7W;yPs3Yill`h!zy4J)@m|=Ll5@SZ_Wph|LmriHo|pF+_NC|;oLv_)&G*b??Q5mN b|9>*9m5@5jo)umKbSi_VtDnm{r-UW|<+i5b diff --git a/src/main/resources/assets/tfmg/textures/block/engines/engine_front.png b/src/main/resources/assets/tfmg/textures/block/engines/engine_front.png index c78527faa053343d6a1973c7288ee0caa87b5230..d4c7dc0869296c8debfb9637ed3590f54e517baa 100644 GIT binary patch delta 320 zcmcb>`ki@#BnLAC1A~SxfAB;_g?hOFpAc77buB}4TNkeY-;nV5v>YipB@qdk;)U^!xP(k?zQpr7^m>ZZstd=RzQaQ+6F*`)%`--I@4!69X`J_yq;Cz1TwOMIv`~v)h ny5}+k)ZTM{*|=C`7eiGxYviN#Au&K389dot{an^LB{Ts53wd=8 delta 531 zcmey)e1Ua>BnKM<1B3kM|A`Y770fsbJR*x382Ao>Fr%o3R|8N|qQo_#Bsf2k-48UA zvEI|gF~q|E?WB!)w+%#G`IS4^QiM0fmaJwJ=M4D5&Xn>|sN_Y6f^*xOxwraXTrYVc zupqdtrsLs3hYM;POzM+3qPkqRrna~AN&I(uckKJSy(;%>KQLXim64slBYgewC5sgw zf820e=`>eKT*3BJ7Jon1F1}rFwBppHCHK=U;~&haR^UAN?sxf*xa$eavlUW(Qm^G% z#tV3NzWF*~uiVBdI?uVaHkSn*i}lP{5ahau?a=)@t;KyVye(d#0sK6dE>1XEa!HqU zhL8G^#RX=MUi>)1_~Rktoc}h;(~K0hUHkO#vU|f>gOBa~6MY%J^0G{`S@N z-kYwj6}Fz(v54cjjBo7YhTp%X=8Bt?_U7tj2NxBWzWuaDp#IkW+lEXMxjUj$U;N3e z>@j0J?tCV#{eKhJgcXep9=~c|{Ml~wdTmX!NQF|*r=L>QKT6GRCFF7+s5d*kt6gGY ShY&D^89ZJ6T-G@yGywo_UiBOR diff --git a/src/main/resources/assets/tfmg/textures/block/engines/engine_front_tall.png b/src/main/resources/assets/tfmg/textures/block/engines/engine_front_tall.png index f3646a0bd1a130ad2dc121e59021c612da3396a9..22e51760092ae54e297be702f0fd13f07bf1c969 100644 GIT binary patch delta 254 zcmaFB`h$6bBnLAC1A~SxfAB;_g&?^ApAc77buB}4TNkeY-;nV5v>YipB@qdk;)ve4wgdJ&+N3>==WelF{r5}E)wHe*}> delta 489 zcmV(W{ z=mP)%*^?3hUw>=5)*F)h7*hZM0gp*UK~y+T?UFr;+du$?zp=0kvIqSbcQH655CXf! zHVfOh$qlyHV*6CdA#$1&DRLd-!mzL#LeOfYVJumalS~SG9Lc#tUNjzPTbzzTY%{-A%9C1Rap{@$81(>thEP{5WIT( z=Je*c00V%kECKNSA(h$M&1%ii_wh#~{LzS^@3UF0sm#{;{*bO_Fr6h_TwP+cL57k* zPK5ip3u`TboCq08j5b_cT{4{|46;=5^zeubC1D&fU(C<7C(IXf!Z<>PlBb79vQ!-` zbP>i8LVxtKg<}q3+z%F)K^HnNxL)3{Z(G`?p=}!WZOirY2Avn@bj14)A1!doz-YsZ zqYYQ3QU{^4>bL;j;^pg4S^A7hpRE{p!t*?=wKR2&1$Mg{ofkB9P203=P05dM-|cQ! zi=X>neG9H4qYYWA(D~o-7;SnS2eDkf``x<%0x~%f0Ks?+oz5$>{iomF5;?YTK4S+r fXQK^my9eM8zd*o(lEBvy00000NkvXXu0mjfI^yC~ diff --git a/src/main/resources/assets/tfmg/textures/block/engines/engine_gearbox.png b/src/main/resources/assets/tfmg/textures/block/engines/engine_gearbox.png index 53e66eeb6813c37d28d1e7ad2b0233931d8a413d..0170bb31c4b81199d1dd1459d191283716e49d3e 100644 GIT binary patch delta 303 zcmZ3?`j~lwBnLAC1A~SxfAB;_g?i}#pAc77buB}4TNkeY-;nV5w4CCK8Ywv?5eXTf zy0{O;1we|kB*-uLKNK(o`&S5o1PeSOiy0XB4uCLY*0oMfprAyFYeY$Kep*R+Vo@qX zKw@TIiJqTph=Qq}p`Lm7weOZdHQQ1nJkvZqwHP=iwz$ggFJokQ0dy0LM$mdKI;Vst0D@a;pa1{> delta 458 zcmV;*0X6>P1EU3y83+ad001BJ|6!3KAQB01NLh0L01m+b01m+cxRGn^k&hn*G!oyY zgORgRAK7*R0O$h%0NHi{0O$h%08n9RZgehAMN}X)E-@}NlOzF2f0-New~Q(BA^-pZ zQb|NXR5(xVk}+$-Kp2Lf3wVMW63WraUaipyu1hh{29@^?HhpIc1x{M!zsD|1fI`)IwzOU1MvLxD9+Uw z3!qe1w7VUetp-ZDe<Q?VMo&tXG=RV8~=VMQb0eeJ0~6qrs5%N~fJO zMDMn5cH1og%h>{BOgs>RO1%m|E}#E7f|MC{;l?ay3o=q7vsq*|OGZkTvjw|wW2DTa zy(5$3 zm3oy!6cO$BMEgC5D56rY5_o>vIYZptKbSBGseZ*!D&DAdEH0*VY{zE3(v-@I*Wrt~ zy15ofD^}8T;Q0hz{0Fp-&&l@nO7rpdZZ5_71nlpJ>_)Akxc~qF07*qoM6N<$g6T%f Ag8%>k diff --git a/src/main/resources/assets/tfmg/textures/block/engines/engine_gearbox_front.png b/src/main/resources/assets/tfmg/textures/block/engines/engine_gearbox_front.png index f8ca6e7404e9a39775c5c4221f358f0fe1b03381..a691f8f14ee5b371257545e4a0789995e5755f26 100644 GIT binary patch delta 290 zcmZo-xyC#}l7pFnfk8u;KX{^|LcMf=Pl&6FS3q$^P1l6UQgTYF>RN{8w()5>z9Hd2 zb(TM>3V;-6NswRge<)xG_OB2E2^M%n7BevL?FV5-3)Wy2prAyFYeY$Kep*R+Vo@qX zKw@TIiJqTph=Qq}p`Lm7weOZdHQQ1nJkvZqwHP=iwz$eKD`RAM0dy0LM$WOe(dP`Eo+fE%7fL`w89ZJ6T-G@y GGywnyabG9^ delta 296 zcmcb{+{7|Ll7o$bfkFQB|HO%k3PPL(9+AZi415Pbm@(^GC+Ea|c~%pl`^%aqZVr;) zU&hGrf|-EKW>pOjcp^tT*7ZIQ@BBZY9vvjh-%!Ar}702@Kqx_6crg$G~3GG+Zoi<{BL~t_H{YW>oDEs*Up9q&Yk-y-=nLf z*r)XU+0oPg4ZbaOuAZ5YBjUR9rse;QH~E+i!q3dJVqM3dC&bLmeE9bD_Y!vd{xgL4 z_#NKU5X2L}qrjdZ!LXU}nNUvA35LTAAS*$j&hbn^!%0PE9%c_#4YmW97=XHM)FxyC jox>9zU@kjhvJhkZvml|{Yjr*VUC-d@>gTe~DWM4f2WMwK diff --git a/src/main/resources/assets/tfmg/textures/block/engines/engine_side.png b/src/main/resources/assets/tfmg/textures/block/engines/engine_side.png index 3bf7807e2e89b42332bbec8d071c4fd528be4e7f..9aaaab65924e958607a7fab1b2e0a10d2c7d0a85 100644 GIT binary patch delta 241 zcmaFQ@`ibWBnLAC1A~SxfAB;_1wZKkpAc6UuK-nbE#Hvv__Unjikj-?HYqtJLvvf8 zx_im{4go37k|4j}|4_gX>|Y@S5-jkDEM{Qf+YiEw7OcT46NAe*mz6OxyZ~CUY~rQ( z`kcN~{PwRT_<*Y8JzX3_G=f|E4275td6*JEM*jTYZ9FMBWscJAg^Vq6;=k%As46hJ z9r3(YHE-)Ai$`S}{vO@-!E;W}=ijX1Q`=S*)!tLPYvq)7*_2cIyI_gTBJ-ZrZOS$8 gFX-f3iS1=ff5^OJXVBDnK&u!$UHx3vIVCg!05{oMfdBvi delta 375 zcmV--0f_$W1MdWo83+ad001BJ|6!3KAQB01NLh0L01m(a01m(bYSxJfk&ku>zjgrt z=mP)%zmpCDUw^`{9cS%ihX?=w0Uk+2K~y+T)sZo8f>030|F0uz)Q3bD5*i2N;LkqFp{`Hq|`=X>~)X_j~7W<`0R(;*zvgA6!{oHBs7XHaD;w9li8G2R~U{*NaKXk zI3ZPxvY>b$jz?9TIj%>cAJCKi!T^Bt`tcT7b^-u=yuH(6wPcMignmFMm!t{-R7)1Q zli9Q`pg;}!O#D+fIOH(_;QQ+Yv7;i-QJgQ=0=E77Ba+%WtH|eO>&=$X(zOkFnqQt& Vibp();tv1-002ovPDHLkV1lWPuBQM1 diff --git a/src/main/resources/assets/tfmg/textures/block/engines/engine_side_connected.png b/src/main/resources/assets/tfmg/textures/block/engines/engine_side_connected.png index 4f4fcc4e5233b3650c30d9ea80c1ecf013f231d4..8218bb3da6e6b5dc9c74936ef347696cc21260a4 100644 GIT binary patch delta 368 zcmcc0_KIbKBnLAC1B1(wu45Aw75th2})I|QUSOM?7@|3d*ouz!URNU*>ovY3H^?*IrhW?k##oETijxxb8&;RVo&{Sz<6 z*B@FhoBlSXodc-)uBVG*h=u>!pwmJ}6gapKzWVoH{QZX&QC6Gd%(kaYU|^fi9MIZT z%*dj!((96^L9=#1;MHsER-1;Z-|Cr_z*X_;fS$D65k@bI7WXI#-^;s>?rtzT){xwj zs1m8QGwlq^j@I{r)+?9}`ArVFnY&>I@t8JJ3yt(Mak+mLA9=fwnvk57wlG_rshU3$oqtn=(J)2$p(tXO$2)N7r z`6tNCzlS&B=ZEMBfmhY>lP@N!J$NYBbj2p*%ZbBsjjY!{vQ81?*N@hHmH_lAgQu&X J%Q~loCIA|-md*eG delta 607 zcmV-l0-*is1l0zR83+ad0047(di0SYAQB01NLh0L01m+b01m+cxRGn^k&ku>*>(W{ z=mP)%*^>?dUw>=5)*F)h7*hZM0t87!K~z{r?Uuhv!%!5)zpImJMNKVLu}~G1BDx3# zmoC16gM)jg_91*W7s0hd=}=m5X|cwNCX&VLU{AO?o@>S9=rnp3Pl&kr&WYu2q(9Ky{4FN%0~J@wI5{WPa~6WSyt>xo;Yc5yRF!!e0^g4bom?(z7m6;r?T+5uDyg4z zG$)M_OMlc@+gQhVIMU0^g6WpT-E)Xts2>-O;uBxdH&!wI>Gv z&zk@M?r-n((MeTFr+_ps&tG?1u#`Kt1>JT>WBQYEA%N(IBdxRrS&0_ltmYN%RiWrc zt0rEaC!l{M@O=cYZ+dg9r1lT@tvZgBSJmqmAAi)by*bA`dQyz-I7?b}d3CK}S)C2@ zE%_H9X#a_{x&K)>f8P&CZL`Lkej%y$OMYT5KQJ%--XOalm>2FR68%8h8gE0Y{idJz zb!PGdyw3B!IY!w0L?%DLYr3s(it!-R_`-x0`U|u9YF_RxiA}QYV t6DXPdfOJeHvgFC^2Y8+5q|HHJ;}g;W$AZXH9mN0u002ovPDHLkV1kXrAD#dJ diff --git a/src/main/resources/assets/tfmg/textures/block/engines/engine_side_tall.png b/src/main/resources/assets/tfmg/textures/block/engines/engine_side_tall.png index 6ec6acf4ba39ada396c6c95743377c38595de270..402e0d4c00a1fb7954a7861643fd336ff8651e9f 100644 GIT binary patch delta 215 zcmaFG@|<~sBnLAC1A~SxfAB;_1xx7wpAgshv>a7+t>TKB>gG1zkZ>2T04X^oLvvf8 zx=(heRe=;|NswRge<)xG_OB3{XxGizTgJ%n0%%(A#7ps2u5-736MvDq2B-=|>KG0H z009|EL_t(IPwkSwPJ}=Z#=o`XAa}RtB)$Qmpf$0fu`#jG#Ksq}(x<$}#Fm2a23$an z3$R|}jfKp@agvzW`l}{8voqiP0si?j>i*%8%RGnUx%SbS&2acU90dZve*a-@Q#a5= zP&c=CZ0ZJn7+}6!*Z_a6dm8}CvaRLTGV002ovPDHLkV1l?-pH2V( diff --git a/src/main/resources/assets/tfmg/textures/block/engines/engine_side_tall_connected.png b/src/main/resources/assets/tfmg/textures/block/engines/engine_side_tall_connected.png index 1ac65a865619ff02bf2e87942228424ccfba63a7..4dad1a34db125f853450b4479c453daf8775590f 100644 GIT binary patch delta 362 zcmcb}_Jn1EBnLAC1B1(wu45Aw75tOR?>Rs~X=B|(0{|Dk{(*uO#uBv{}PS@GN;YX#l6?KAD z7ru5gN;DYC^&3uLa}H}1x^TynN#*X@(?|Wi4rI>GQ)7uTOK}f95vG}ut;@f5Ys#rm zrmJb0dz`oR2iWZ{3=%xBa^KGIGZG7)vn^-4S7DwKUKanXqrm=Vd-AW^#W_E_erDl{Y?7)N>9meDUSjG3V&AOR${3 zrEh2QfN9}>d%uHs3WN%>&mXYjk2S8mA-F?i=YEDgTe~DWM4f D!BCfD delta 603 zcmV-h0;K)q1knbN83+ad0047(di0SYAQB01NLh0L01m(a01m(bYSxJfk&ku>zjgrt z=mP)%zmpCDUw^`{9cS%ihX?=w0su)wK~z{r?Upf50x=ZF|8>#>0#utgYBV7XtR@b! zxR^L-;^G%@(og9^;>tky29U!80(ZJ-9pu&a*(z0o3%}%&-g~bvz4vIpAnZ= z*E&m6B$cu;CZ!TyUtXO+0C;|WGUH-4hg8b({{(S%et)5h*&K~l6V-anIHdd-13;Ed z%y>GUpx^Bwsg%(^JqgD7;CW320BFav1X3xHrD^m$8*y`cr~BQWK58EeGV)at_SZe! zcXXrG6#EBzj(<9SkEzycCQrx?s{*>wYKq4+Gmaw9%@~V)L2N6Dez&KkQo`OBJdSes zY{Ui)s(d2XJsY{aJ)gvw7)8+RJPU+THoIx)9Ux1b^vZ1OVU_AgKSuvboo+Svg)ku(`SA z1pO60J>lp9u;0aZbjIHI@MsADMo*ZN(28FfQYm2;VCw-B;88`sdp%^g=W!nHJK9-5 zj2__kJb$-sL`Y9W=>dMHhu%Z;eR?8F4}?k`visnAB1#YZ7N4H@kskPt@8;WjB1#X0 p?j(6mOrB^x!0&m^vN=dkyaC~dvP3@fXIKCL002ovPDHLkV1iR?7>xh` diff --git a/src/main/resources/assets/tfmg/textures/block/engines/engine_top.png b/src/main/resources/assets/tfmg/textures/block/engines/engine_top.png index 637a84b8f2d6e033c1496120a5c1c2808a87fa79..bd47b1a0ab63650d8ab26673b771a6cbe0a0ec23 100644 GIT binary patch delta 203 zcmZ3%a+G<31SbnK0|Ud`yN`k3#XuWLu+mv<=py~im z7sn8Z%gG5TMrCD&VFC#p90}ec-U+Fx4c!|Ir>)kW%B{j6`RLUv0k_JXRf-c1a)<?u-c7F@!u$9k1js4;`R`@uF52D8^-2j@+;OXk;vd$@?2>?@Z BL(u>L delta 303 zcmV+~0nq-%1E>U$7zqdl0000V^Z#LyAs`Y7a7bBm000ib000ib0l1NC?U8qO3E6f5 z0O$h%0NIiDUw>=5)*F)h7*hZM0M|)GK~y+TrIS4pf-n$;Us6KB|3JfxC!z5M78dqa zdT3_S=wJdAP^yi=B`yW>HJR-0d+d@#9FC_K2uT(rh(g41NW(CuL*I7LjhV$oRqdYu zkQTXk-0qWETI7Njx;eWS=gW200rz!_?Sdk8W1wmU-FO)2#!Lmq{H}Hcs*y9hKac=W z?#d}(f0ElO&4Fm-I1C7)5aTeA(l4A5)vzOQ^Dn^~tbsMK$LOvc((`@vZ3oZy-5l__ z7cNvI0YKGiN+wwhEC_85M8l4-hRs)b`(xVroZm)%lK~}snQH(5002ovPDHLkV1m*G Bgiinf diff --git a/src/main/resources/assets/tfmg/textures/block/engines/engine_top_connected.png b/src/main/resources/assets/tfmg/textures/block/engines/engine_top_connected.png index 65884f374c61e2e57d9a4c31adf9adcd45b63d0a..5a3647e7cd52a8ae4bcc23d708ba3dd603ea620d 100644 GIT binary patch literal 540 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnF3?v&v(vJfv#^NA%Cx&(BWL^R}Ea{HEjtmSN z`?>!lvI6-M0X`wFs_I%UUIFoGImHzL5h);ff2~^0%B<>8{}dQMrN=$6Oe7l$iyH3q@#d1vz-Mjo&{usz|As7h8IAO z!Duu~8Gup~*cn)WDh-T`4Hy?dOaDCjumOkLLZNe~E}aWyi&t>Z;D2!EK%~v{f5E*!C$9FH z8P{UZVRPX4x1V|WYB`m;F%N7q>!+nE);!f|)x7xWAdj4DDr^6uATDJs&P3MA$m;wc zw}ozrHDBUP4$Zh1JtslGwP)9HMb@W3)~Zd}xXZY&I8Jzb?UWCWWl!ewN8hbIbKLY} zBG=??1x2kVuUH=RJ$k|W;Ihq}j{+<>cdh=we&c?K-S(fifw9EE;OXk;vd$@?2>{SO BnHvBA delta 549 zcmV+=0^0qY1kMDI7zqdl0001UdV2JcAs~MVa7bBm000ic000ic0Tn1pfB*mi<4Ht8 zR9HvNmcL2^K@i6Gu1pkTRI~}i2v%D70%?2$3k!QIeM%ceM2iSwAqLVYYK%oJjeKXm zI8Nr=+iZyb;Mjln-OldL%x$u_e=u-@rIo5%Sgg2ewKDAaqTB7cx7VI~dFl>(zJY&6 z_M;8fH|m)V-@3nRkG+F-(roU2pksM$HF#ZcR_-W#2ApG6BU$rI01yZCuLa#sY$ciACeh>?I2hc z&|3{S2Bap26z73+M`>XhA~im}h17qTM_`?Q2>5tWX66HVMwtdM40TzQkoQxB0?s)v zj4aEg#;3QCnrsIU(}YRHnwVoiYGU*=^MO2~Q?VvgAN?~Tlj^7PJC=m%qkRC`tg+b` zWkO7ViSYLWOk#3!sY$UF+zyntt((F5$?4$Y?9#~xeHfGPvaYcrAdjis2eyB9w%zqr zYm^JHI=uJWeSn(i`+yH^uqN6EtW2mUk44ofy`glX(f`u%tWsIx;Y9 z?C1WI$O_~q2l#}zO35jys%r%VN4R(e_=befo;N=}EvLAmCNeI*Yr^E-$y5CNa|(+) z8k*ZYolFgM)I}s@3Q8(2U%&qL{ribiW^dTG%f{Zx%);8(*mUuVRn^UH)91_+5*7g( zZ)k4&|Nnm=lBSEK+1B}!Z) zN`mv#O3D+9QW*jgGxJLH{9Hp6O!W-)%)76Bw*;!$mKx!i=IN=$zyaj2GDtD9GB5&J zUO+4jWrIRWgOM35&IDu|GBPm;0O=?o&TMA^i)R7ZAdmpWApI~J%~A$nSWjSQU;(Ny zFfuk^TmUf@q=R(<#H1-eHV7~Q&0zwo46?KUvY@&Q4GciCs_yf87n^K7%D}*E?CIhd z65;+fEOz=T1D>3m9EZa2RVz++&Hn#i`@721)w(Ov-@l$~r!j%&WXh?Ph8GTRxG9mn z)-|^6Yv-RAN%!)$&pF)S>i*;clQW~LW&5rMU90wK2VW)Kds~*dO=yAXF^O(3hjU*= z8Q!m6wdxxWhp2*qJRkeXA3x?y6S63_k?TLk=*;WV;wHYqe(s*{JbZhEu9WJs%-3XO zWeRGV%$+RGY<+l zr=I*GWuY|bneK+yg1;R8IK9kj_`#^7wCaRbFXNmLhlH%#n{uMLf+qbg6Ov0UrH zE$c2HPi8&XuR8T@M<`Q~$0fE4OC0wrdrcQ!qU#|S!Sr{s;Dah|;e$7rp6cEx6>K-O z6aP4|*Usxke1vWvaAAk2!DP3w7tLV?o){eG<% zwI9?P?*%kn>CE4<;H|t%$BL#peVvXOf;J2%m~5sf-0l4-v03woZVF4&`t^qU%#WR6 z&sO5o<=D4BorUv~VVaUr{!Sj7?g-OM25!$}w}0B)bmi2{i8J_prY!UAFu!cJ-KhAi zUqx6#*V&x*_n*!liP`XJ&4DYdhxfkT^-hm{QBWoe+`^$4UoF43*^Lp?1KCpQ%q<u9h(A+CPMX8GIEE~^g4bNu7|&pD%>aq}B3`=s3xA3#~j)78&qol`;+0RGGaPXGV_ delta 1441 zcmV;S1z!4~3aAT^8Gi-<0063Kaozv`1#d}2K~#8N?VB;q97Pa?|1%iwKw=Ey#|XYn+n_0{$D-QlB;?{DzQrw>NJt}$1yMf%~FUu|sCj(@Me`L@&=%Ut|betAx< ze#x^x{u}_dS%l3f;O`$j9-jR4^9E|?CZuJP{`L2#H{%#vY34dH-u4(OO`KW}V4FqQ zl!ATl-Rt4b?GH9kn~hWi_~xt3CwZTL@!jylkH3r{Tl$sVpNW&i2-uL%9^4(?zx~e8 zsz;Mm>TLeQ>wkMAK!V2jSZNQ4U@Ohse_p&8UcP#@f!ZMb%2p8o*#b61o2oWCrAL$5 zjIy2t$fmxE0FHn(8>J8J1pM~&+3@_Yzi*&tA^pl$9Rc|Q*br?@NPCkkMZm5j;B#cJ zE!Gpiu0AuFO~?%Y18 z#L7pm#TajoL>+!PadsWv=VhJa5_ue43-W=j2T4G+hm6(RBau;qD;6s@H5NyF2MGM3 z!n0qbsekE{k0f{({0{Osc=k)#U(Xuj?UA@MSj0i~HgHFo@dSYr3>yFP;X&^M@nsxJ z(o_YgPh<2>Fl1du_Wf`Fb31Dmsrj7trr7>9n+!Nj&Nd|beEqSVd=W1aVn*xhg8Uj4%eIPOJOFq0} z9d?YTUxQ=>r(A-vL%=C7L5OO>)N8PMh4b9>A%rsmR8W*10agoVh7tr$Iim3|ANcM; zet!rZC2Xo0g#ZIKKbxJIw?$co1T@iw53x8aqL?_KHX0bW+6Zu zO#+mqih#6b#uH>(8+5HcwdG?K1dt76s@#)+e0?Ue>|Hwn5Ymg;2#_?NCR|KvZ#P-O37}l(tN``<^J1cM zW<%Q`N_c<}rmP(U{7IbPvq>uf1fQ2)FYqVHia3k39s$V6jP?S5tC7}AkhY)cLx8_w zD?Fb~T3>^-Go!u0-)acxl|0kEzz@G6cHfIj^;6a<@DtbEP%l_}6$EHw1b?y*8ml>3 z(!F49|K<4EM4KXz{7JjR3CK&W7p%P+0{rLf4h84Wb5{U<|BL1fa?U$o6$Bh2nbBV0 z$N%%h*(57~Ebo%J{uo*X0opWYU7B;ggg|=Q7ZnBI7v7Qqt%iW!3dq;mKID8v$F1ea vom39F19F4=kn@pM5O9%;TpHveZ=(DQ2Dj|In+nJ_00000NkvXXu0mjfsPeSj diff --git a/src/main/resources/assets/tfmg/textures/block/epic_party_light_bulb.png b/src/main/resources/assets/tfmg/textures/block/epic_party_light_bulb.png index 460ab8022fd9482cd9edb2c8e2bf8024ac09d7df..d224c718fa500f1a475ebe1c701ce7950751e163 100644 GIT binary patch literal 523 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJV{wqX6T`Z5GB1G~mUKs7M+SzC z{oH>NS%G}50G|+7Lv!2ZQ4S|c!md?E`-X(Ocm-@qa-ZO77@w9?Tv2o3)yowZZgw9$ z3snB&=k-7!#a9yK7yKU?Ft{GLa{?&CS>O>_3{-F!gc* z!MXrq(i9*Y1ek#4Fo9JDSy}*DP+f)w1|V5g_j$dGO|~8dGP68g978mMV|yEg8WcF3 zJ5LDQ`Tsx9eB-WLg}bVgwSIWs+r1`dSHAp$BDr9o#mcU?dtt# zukovQf0>Wu{0*AApr~n+kZmdKI;Vst0J^!6F#rGn delta 336 zcmV-W0k8gx1mFUY8Gi-<001BJ|6u?C0VhdBK~y-6wNblD#6T2134vukAF$V2kTin5`2w|=a<>+g1VVJ#VVG*HCd@0s7T)U4y@&I- z1N>(l9vw?xuUE72Vc8(QP8BSJ7enMtM2nZWZ?zS#}>gI;T|tiFup{Nhro zS$2@&=K9JZ5C39+e|rUI0-OmHMd5eAnP` zoYSR45CQN4^+`9aN=f1*`1n~n5keaX06H+IOKA&u3A%vFvM;JZpl3_Bw+xUXx90#5 isJzOy4YKF<5q|;b=!6@{!sN;T0000SB}mCB zF)%O`IcpbBtWvK($iTpNka5Sv?6*Kci4xa{lHmNblJdl&REB`W%)AmkKi3ciQ$0gH z^X_ZkErDvbrABzBd3tIwZ~!^13{s4&42(dQ7Z6KB*+D?I1|u_AoC(M_WMpCx0Mb!F zoY~F-7S95*fuNq@W*H;H3uXp5jb#9Oh6^+QnYterDR7Yja-kA7Ec4W3>JXhY3&- O1B0ilpUXO@geCx8Forq+ delta 285 zcmV+&0pkA31c3vPNik4USZHl;jgyo>L`F(YQCM7GaCCTwi;XKQF*-UxMMX;_Bq~~3 zU{q9E0002H;D8~KdMAIv000ic0Tn1pfB*mhzDYzuR5(w)kjoasAP7YB)F>MM|8F}8 zO=?zr6nN5&cNgw5^iX2%g@BBs;(8E zmgC|Tz{E3W6;LB*fk$L90|Vb-5N14{zaj-FC{f}XQ4*Y=R#Ki=l*$m0n3-3i=jR%t zV5(=RXWo77yCqP~w$upEG*3@01`Z&Hl|hP;m4Ok+@&aOMC>!Kz4Mt|LI1`X<$jAit zRuqt(+0FtM&jPYRAOVO$`e8Jhr3}D;n841!0#spOWNg5=0Aeag2kQceNmGDq5MTnD z!vt0tWN86pL3J4#7=UC|-RJc#HraX<$n5iUaSV~TEZe)0_mF{r>wecITlQtI$Q9t0 zm^d%y2vZ7!K$Dq6p*D;7JO$+nrnHkBl1$y-UcR)Ic*HBrpdYI`m!pH@Sd#$X_x4w7 zS>M_j*2T-MD4w^x@qn+?Plx&XQUQQVozvn%*{m5^`qvAF9)%G1AS9-eoxvX0gBeJg&6Vy3QjEnx?oJHr&dIz4a#+$GeH|GX zHuiJ>Nn{1`jRSl_T$6QGBa~(RWTf20r7R@n4EV)Vxp>$am<-Kr+teBOnOI%C0#wzt z76kBb%27JrXYuq%ip@3&PoQ?r0*}aI1_r*vAk26?e?&q9iy!t)x7$D3u`~ zF*C13&(AeP!Bo#s&%FEEcT1p}ZK)BSX`Y^13>-iXD}xjxD+42t2!0mM|04%P(_ zlcoUKAixAPhY74Q$kGDHg6c9fFaXJ_y3gxfY_jzzkonWo#WBRg`|h=aeMb~H7y=v| zGT7(*|9^|O%xt&%-W;>c>J`0<9(7-2Vi00@pd%pIv7&Hsq=I1R(W`6$_gQq57A=Ze ze=O$i*68o|-UcYKWci+-K6m+Ezuex{PP@K-$kPiw=<-Qc@r==NkI#a63r!^j|MnOz zPo1`*B0Yj@J6lVDXUB?FO6NM_&-XaY$W(q9v!Z5}-BO0|Z9E({%xQA}pFDi_v~Z2h zBTu=#VY|O|%yoZuF4^Yj;^-f@l=b-IE1yW1fBazo;e^cWzY`zV3isdrS5V9!U+vNt zQTb%9P0icF7`g7>Pc!9S|9-k*-}e=l6CW2&|D621u={_%{ykd_?(EDJ(?J2^>FVdQ I&MBb@04aOJ!~g&Q delta 486 zcmV@1@!}v8Gix*00535eC_}M0lY~>K~#8N?U}tw#6T2nyF|e4E4;gEfEly<$t>t#rBS}70R+Af=SYw zg~@q&L0+8(vYPp1iy^y;>XMjE(0h4xeRu!R4ki$CkV!KEYb5y)`E`-Y1PKa;nhE^K zj^4%X(zK~97}5eLI%{})K4uunkC##=G$|Oet!uVbYmlTl&_mdw*V}4#h%rq5e1F1C zO$uF-mQgwA9)GpB-|mTpuBYShV{{y3(t8{vX`O2a+p?b6xBb<&mi2v*3GgzDn$TnnT0(&S5$j)qM z0gGn=*&vVr#321J8qHD$U=U1TXJ7%UFfcMUU|aw(6{Lf80mP&!KsE?40nK3os|>QV z0J5OE3=IrGva0U$dKa5)Jqlztd%8G=NL*I!Imp}OAmF-xBGZhw4O?3_GPm(Pd6#)3 zfT5dLXYsvW)fqP$R7w(p4^`Fv-`g*{vssxTZkCgj;DoH6W}%8bv-Sq@O1)2;|D>^Q z=KcHZ2U~l6v^i%R&sBVw_RXiq$iGuzy3YKD`gPe;`LzSgGsKk-)abPAbh{l^{r==% Y2Eh~h+A=?5=75~$>FVdQ&MBb@0FkJD;s5{u delta 269 zcmV+o0rLKb1e^kp7=H)?0001xk!Usm0084jL_t(|UX7B$3IZ_nc`@R(28bEq6cBBLFZhNdVy z?EE$x3yC*$F-!wtx!SM^p$KFqsS8Hf?)IKwAqvWj3dhsM6Mrlef#MTZ6iZ$2DT9>_ z(AB#nx}lhtuJ`Vvf=Y-AKMBg|+e)*H5Ih)P3ACp#$t#2|c|!Jpf)p`_T^uVE!Azeg zb^mdA_@}KPb}112$1z&@Xdyg5sYeW>;xo TI97H50000k44ofy`glX(f`u%tWsIx;Y9 z?C1WI$O`0Z1^9%x8VN~QNy@rNNJeSM2PsH-OH0afacKz%u`@8acm?=|gd3XMs;X-N zl{;*%*axKeN`m}?|04qi*8_J>0A)A}JR*yM3J!xX*AN9$JwrY7?rYyIfois;MtG)qdTKFn06DA-QjDw&j6jwb5KBYZAm3>) zGK0mLfNVoXCI$f@9RM5`Y+_A4a2D$^ZO?$U977`9mxjHabXb8y zBw*vqyTA9p<5kO*vb*x^$422a4W@O`m)37$VQBDZVDQX&_L`-`^7*7q3l5wy=X}yI z?{~w@d?A5A(Z_M}#^vqh-&6NQpPlK$#PH;r+}f?%I9IF}-gZqw(3k1t{ae9K%MQeG zHyr7Ie!h73q2%g=FY|c*uWNW~`pm~BDrSy)yO!*zx))pS@>%T6wh<{wYuN7z=nAt} zCHQ|f9)IqsW%yYr@RViE47ufI={?~(_?jDKcf?Sjq%(P=Co&a7ch+jjrZY>ywc+zfX-_iX-o mEcw#=XrP%dzprIZ`^Mh#bh28Na&QhPt$4cnxvX5?y2doN^8Gi-<0063Kaozv`1oKHmK~#8N-C9A46hRPNya;=eJ?$uq9>t>v z5fuax1O*Yjs0aQ3E0kD>A&iOX%G$1;wkIK(nb^we%&e@a>|!r2X3F!c>p!n{H~;AS z>)oyXeEN9*n}5T2*EQ`uo^Ij8zCL-l*H4djx05SI+_AOoJ%65V(ahgmULNSP2UiDK zhXSW28>-t?RP9|cKgQ5!kEdHuW>idm|Ki@QzIge1|9x%j%eU|Q???hyA3l3L-J<&r zlTSJF;p686ERCyTZ{EHuVV(eP8>q+AEna$44yObphm&m@r-4<+aa#@B0$hERlO`ZJ zG6ze+{`mF#0DntK_5|oj;qi2fR{&NIiiaW)sABw{Fpf_cg7rCx>3Aey>KUv6etJCJ zqJ+|_fV5(1WvjLcOSX!EsFk=qo^H|RLKBbzOAfb6wil};K#y*Zr(3kC&|@$;R}D5L zDve9Qre~n^`5iuD@3SfLc)CS7pp}4xC5O|vYOo2@1b=vAOQU}ptUVfr6;)$NX{h; zW$9QNSH&s`ILUoLaxSfQ!jf&mQn0Q0;N#FOz}06TkjTg}I8FjfMAk!ssvNI&wBc{< z1Q)G%oR+n?9MP^GFKPq&a!@!8q} zt<|AcSNksG^b{Df1-O?g9FQEYVkxkMrH)a3VFFmS9#6OQ+y_*Xk^-w@l?0sRJ|G2_ z5`T~wKLwVs6l@xowg9(*$I~s^R$_7|9z2|#ni3c_VMIB$ z@%w^?v{K{%&GMp9A|!*3lorD_M|Gk@@1NtR^jHpGT+0j_>!3skYzD)wRsoZqz* z99{vVwm{m)DX@ekTTcLe9dZmFyAMc#Rk2nO)M^5B96Q0q?*o!^39BX`+1>@yPH+eZ zXj6g7NjgxHoRgoDmSg_6L}y_xFTsP8h83LEmfKZ&a3+&$l_@$|AtTnh8S!Xy@~7 zPDl!xfOM27#tIlhB5O;kfYgX6hJOTb>-c<|6FoE8Lb9#&wv;X9S#1HbJc8m1w_Z?C zEoWH)Jqf`0vp5EMoM{3Q2WV0-mgMR4ZBE$SXadqH;0ZVz4qyeKtVweIUJi`!^d!My z@6&4wIiU9#r22fDlXMEC1b8FF_XD4AbHcsc;s9@j&*o)_Y>uGPOON8JXC2cD&wiiY axcmjqLRq(l#2m>00000NS%G|;0G|+7Rdp>FuK?eW@c6Wx;)g``r6pY?B()eAHl4Ri1e(KH;1OBOz`%DHgc*OQY`vB}n>KxVP0i(`mJaBBZU zK4wLZW=6rVJ18B5>iu27WAAnsbhoX&dbTqwkqeH zsc%s)vWVkYFr|ru;p4K^*P^1gT)S3uart*UfzlpBhMMyc+i&J9HMp&_jb&%@^bN}H e{cm^P{^C+s+r-i(E9AZayN`VwX$K2EqQk zpyxNtsKI`~``7PGXR`w{-XG(a!4QC*y&Z=AAwTsLZ`)_k>8>R%L==JrY};Pb%N4gU z?k@;{fv|YfG{y59ygD2Kn57pMX!u)nKXj?qYN#+Yg=B*vy;-J$4_PpyhT(lBGQjlB9)Gwlkp!^wr<>=cc+-jt8$Ub o0M_a83CnYaEX&OK{>wT428lu8AAT2zO8@`>07*qoM6N<$g67!e{r~^~ diff --git a/src/main/resources/assets/tfmg/textures/block/firebrick_vat_connected.png b/src/main/resources/assets/tfmg/textures/block/firebrick_vat_connected.png index ff1897ecb724dd60d07a2c0cd8450fcd2cd9a672..ba3196eb8e4b5d995f3d08a6d2258fb279e3b597 100644 GIT binary patch literal 998 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 Ef*C#Iz5oCK diff --git a/src/main/resources/assets/tfmg/textures/block/flarestack.png b/src/main/resources/assets/tfmg/textures/block/flarestack.png index a9cfe23cb87fcda7072f181fcada9c0586cedb68..496efe28fd3fc2d8f10c827082acf3e94e1914ba 100644 GIT binary patch literal 719 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE3?yBabR7dyjKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCikF1AIbU4b5$({a9k_erv%m7C@lGPX&$ksX zJn_?#g{5IaS;yRORl%WqGxPO@4>+7LX?XOvan;_)e;EfHOe8++SloB@RcQ`GB-2rm zTd$W`%@x`v6|?xKn~d;`ncrJhs#%CJa8LZ8&uOE7`pklk-J%f;8`iz%VzhaEA#gsg zfVaSfsOJ&F-z3*~tZrobp~xud((uuUk<~T8?168?Lav&W_}d2TcK*xClkdLth}e|B zTEitZ`skcmR*ev@sSGN==OqL%%=ydwAlmn)z0bn~6aG3+{A&EWa^}C&=N+;mH(SrV zw^x0~zD@7HH=THQwDs1;{Q=fj#j_5)o@#sDe%X)JCq5h9|H}Jb&f!TMqsKZ>2zk2t KxvXJPl&6rv8kDbwVH;Rm9@K*n|DBPL}XmNys8ER6T7ISnvK1aqLOhz zNkwZ{Pw(U@9K4bY3=H1FM{fWr!IB`q;QwfVL3QoSB%mZ`fk$L90|Vb75M~tB@M-`G z{_%8i46*QUoy0ilkOEJ=t1#;p!yP;SXMSftv?zG+{$U2x?_1`3^_Zz za@UF(?Ynz3z#;Pw%aNs5qPV2*=jR;Pi8bK#Sfw5^GkU=ngP!RuoX_qbex0{R#e_9i z)h6xG1vb4auMRy(cB;4At)5Uj#YuWWJKKfB0(H+WF;8xAv2{EuvHii)iS-}0Gq=35 zeK6y(g1pd8jnoO!^N>sZz&mW?6@Pq6Cm z5)m&=;{F^v=SK9BLs>?N^2XjB%U2s#rmL$6l;`?Z-(${ZpT+${?clGB^Erxp+w-Gq hazFh~p7ob0>$2445Tw_UYUySqljyA{WzBvWsD`t^BeIx*f$tCq zGm2_>H2?*xJY5_^BrfZobrd?JAmDP*ZBh0V%LcV+uP0=FJ22ss(oV;s|3=*WAMUr$ z&dE5#6zV;3RYmmM1tl4qs;4aZQSrO1=y3L?WR=RWe>={JSUmqFrE*|*)T|cvRiQBw zMmgJ`d!@bEEq{IHY0hgRs#?1wxgr;QwBP$PGsF8{owbWt1db&7wR@5OG;vvnpCwh9OG%w!ZSZh1=Laa22um?$~FV6K9lf z$bU>)GX1uKZf0iiYyl0Hllv{Vv+g+c_{0g(+8rI|f3>`<+9=7(!=v6VoMmWbRl1|l z!8H3=t@JKUqsP1V{t>a?D5F>1#1pV|QO{kORZ+*b$JQ@S5;Y273X=djgu&C*&t;uc GLK6Van^iFY diff --git a/src/main/resources/assets/tfmg/textures/block/fuse_block.png b/src/main/resources/assets/tfmg/textures/block/fuse_block.png deleted file mode 100644 index dde8c88c330e17b8762e374fab5ee68937690b8a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 512 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE3?yBabR7dyjKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij=0(?STjg3vsEUazpodSX*BIDuM3Ji@* zNKKDR&AL$>^>T4;esOtubzMtGckh%b0YMR=kS1E$u*q-JWEu08%m~ zL4LviaRUbNO^>bv)o~VhL>4nJ@ErnSMo|r~2B5=vJzX3_Ed197KCEh1;Neke^g0?f zH`n~$e_L@D>m_A>ZhU&VTs{3=5hKG=6D7e#VO|fo)sm908~J?c5}j)`eYN$(RfZbx z&h7nv*x<*%I~!LSW<0J^pQNOv@8-Tn_?jSd)bqfYPW3P6l6o80NVoW?>_5rw^~0!d zdW-SFZ2wtp>WNdh!~gU(gb38AD(;w&F-zz8m#Z@bpD#$#OAWB!AzNA;dA79O?JslV zV%5WEu4itO|6KC4W)gRRPj_rg-uL6ruRpGf{^Y4QLH0<5r@o>66!#mZ%zoX8amS~} z$y8)-6Y{yW*HOrDq7u*LYdNP{cKn`Xkbm}>xlr|?#*=%G9Gp=-ncY!zz0-u>*MDg% bw&aIyFpQq~KK2VRv=}^H{an^LB{Ts5@+R7s diff --git a/src/main/resources/assets/tfmg/textures/block/gas_lamp.png b/src/main/resources/assets/tfmg/textures/block/gas_lamp.png new file mode 100644 index 0000000000000000000000000000000000000000..5f1b69666a01425769e3cca44a5bc4e3d6e58ea9 GIT binary patch literal 1926 zcma)7c{E$=7C(uZD$fvZxR*+A4KapXQ;^g=M@%uaMNw0UDP}d5nu=Cw&=%#kxS}IiuN77cdfV9`|Ew{?6ZISxA)om+iS1yJK1sBVg6Au-VuHP-a9ZfO4ZKPNfxcDp{kuby{`+#wEGb){Vgq(0AA4G z0^krX00JT_P^A9BC%aLAaQxt*Al86D0bx+PgA$m<`GXGv@yYs&3<2JA{8#@^Q2=xm z@&KG*q&iAd9a8ys){}}{m49a{2Jy*)f_b4oA_=-WAo}Mk4R!Ss@AdKz=f2b=?jj421}{Hk zh=E4@99DKn-`5S6NeL+91|CnQ9B zRB*`Xb3HSHVlFjoANsukdbUc>jQBeiD}0BzCq5+>TGjqsM^v_$yri^gv6q%3VhVBr z(l6-&HNL2RXsWEQ+dv;PbF+3RqWU8|%T`(C%9D%H^yi=q$uZ+p?HZlR&>i<;>4SWIe^o*-+|X2Dc66)QZ}ACp#0 zx_Ab=G|xu`G&oJ%I%H(y-7v3Mv$!gg*L>wXc*DmtXvr+w)!n#|u&`d85clIX$w!2s zHlo2KQS>KJH zYMvs~Dw3aggxoVRdI2vEwIbu542?%*Uik(#Vwx>i)H%!;T;T&phK=l^xvJs4BjMZ> zYmyLt3ibK({aH_$lJ1$0@GZ@Pp24N(?*IMZz=USMLUm&>H2bUbG*;@Gt9Qk0|GRFL} z96ERGof-}=2&(gXLd?xWrL{b6&%c|&TouPoE5igtXujR-K%VRPx>kgW>Raz38n3^x z_qsaJGjVL-L`JHxWMEV;_2(*0hSXWOa+7f5?t#Q56mg;Qu7C}N=A3f_wG-KWOgoC1 zn;zp>0Pn4%W|`!i<(D#kJCJfc? z8zp4lV|;6kR+>TFrLPU*j0c6@CLtg_Su#nZhKGBi9+&~2UFBcw_o8b{SnK9K5+vt_ zL(Bq;vGaSQE$a)3%|0OWA{BexTL)L#eq|(6C*uY4TQaj!7LqbXnz}gS%7Pic0SeGmt~c4UG68{L2&@ly>Fy&ktz{iklq zX%nB|7);W(moYRY7USLG&j4#K^Qkr;wX$;O@RA)8Fj9gyq@_yT6)J8mSIraPz9Qxt zgjj$?g)ijvyr n_(}W&`PtBlwEv%e>e_RSBU2x**HhYc@-wkCwKJif_e%Q@G@L)v literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/tfmg/textures/block/gas_lamp_fire.png b/src/main/resources/assets/tfmg/textures/block/gas_lamp_fire.png new file mode 100644 index 0000000000000000000000000000000000000000..ac43f7a01beb8d6bfa11113e0ccb12d276a44c92 GIT binary patch literal 473 zcmeAS@N?(olHy`uVBq!ia0vp^0zllr!3-o#y(K{$#^NA%Cx&(BWL^R}Ea{HEjtmSN z`?>!lvI6=10X`wF|65uA?@IW8Z_fXZM}T6Sw;Uoc3#z$3Dl zfr0NZ2s0kfUy%Y7lqhkHC<)F_D=AMbN@WO0%*-p%^K%VRFx4~EGw;6k-4du~TWW-7 zny0500|&@h1}R2X21X#u3y7tmY>>+}7@5K1OhC3FBNNysQ9yQPI}2Dm3&;k61Rw_K zhtX)3G64NPft`T`sKUU=*nn{X#8i+D)&&rgrU2O>zyvgh39K^6(gMhW>M}Gi0LiMl z&+A=mvh^sC8RO~V7~zPlFzvG6}SX|H}gbE3>~`@K_47FBgE zb#!iak%*AE!INav*=X-_L*+<i0``z;s(Z@*_*F;zMuZstQ*U&Z-vAA3pdk)J(P z=UPbf%=kmMjx95^wR|{1=kV;j0QKsCYWI^>vL4Q@+x9tgFgEB4OuD_VgP~%tZ|fQ* zlZkCfjV?}Ff){P4uHMk5Yr6dhLqTh?ijdIjmkdrXbaGdoX^lU1i3{jHjdk@6{(|8a z$6ZgIk9~7%UY((nX|BJg=o(#yJ;%ZrGrpYa_$;NiY}tl)k4=O&9?F??(w$+>!MV0A zs|tc1is?N1&j0Pd>16GXf4!!5{`tA;7h4-I!|@Y0b`*;5J|_QSOEZ7-?Pq-27cO4S wby=@h-}_rIK6|(0PqBYacJuYk{|d{iy%U-pb}8x)D8Vpzy85}Sb4q9e06OpMq5uE@ delta 381 zcmV-@0fPS41-%21Nq@rt01m?e$8V@)0003}NklB2%{ zjDsw`fe+vVuyynSoDDC)1JqY=>cHS&6BdJs8xDp9Mj{MtNWHX>Xs-3zdy1q=LwEqc zq&=tS-2OQ^|5aSq6^3EphbW3D%32tPV2oir9>Z~*nr+)}^MCmqp6As#=S-f{CX)$z zy&nBkM6=n1@B5TD8V!nhH2JbD3zt_mBDR3}a*t9d@bwte0WX~-2m;EBP}dQkT);4^ zU}qP2w-l)7hwIL6HUbak@s@}rzn>yD0<)R=ON3YVn?lufos!b?2Z`LSPOw~Z+}tsA zhM6O~pb3N!^mZXdx~xVrF7_ejIynb#RZCk%EVWT3uQI z008x--q!#C04{V=PE(Pg6p^q6k+21kumzE@1(C1@8G?^1;MAT=&AE;o~8 z0ZD(tuN`OYWQPa<00DGKL_t(IPlb`|w$nfeg<(@r(^g5Fi}iZEHu0Q!|JQRd?DQZfw@EYWVKYG$VT;^nJnfTh_BS3sU6LO=qD1k2$l z94VGiQ!@=s;n#17+?}=AE4w?fvcRQn#UX#J+?#Km3S9@N0ZI4-sA<# zn1`bxg4;0<;ddC-4C_Xnb4BUoKUP;<=-AyY>-~qitdFX@-6txamnHva-CHNVRK9;I zut=sQT6*|W0l27&*B%5&0FY9?ehYw|;STngLeM7A2Jrny4uGL=21xu>u>?%?51`(& zH?9F#drIKcS}8vt7GMwVHvqw9->;TPV57+dHpa{*H;hUk6RRhUy3LmBG+#4Ht8d@S x^y_i@>v|8&kJDVP^R&p^1GU7{G(Q*R^*5soRHw&&KKcLv002ovPDHLkV1kC9B_RL+ delta 601 zcmbQrzLjl)V~lrzPl&6Hy;DGNL}XliLvvg2|6I+^xzu?2F46e7sn6_|JsSS zi<%91TuKey*e+dg5dQyvdReMt!ZO~f1f9Y?)51aoUCvzbJ0o;Z@W*wADV7XDzAK%V zEb+2FFsa%xX!Q-Xi|=ML>zxl`(--XIn(gRvcE(o5zUX(iLnl3vT9&0zRMc>=Yid)! zrnQ2V-{lqc3epN0$G%Macv0n2=dB;5`|EoTShMRaO|cTsWoPhQZk@zb#}xCBS-^is zll{Tx>JIy7?|GUbR4ePdD4D@9O)|-c{a$jOgYl`kC5s=NO%#b?76{ut`7O);zSf(3 zbEdbx-lv`8{dVt~&%2`E2w4}1mV9a9@thKERe$}?Wy7i0S?hBvI~3lwN3j|4^ee1q zxWJGQymse~CaLe1-*f(Pb8|Ah&UDb6GG%i?+Sho`-3(U#`NeymvK=_de;{VvJdW0G zHRp#(J|>*4+>2|v9-hjQV3ptYq~rJ|yGJam{|86Z%{yK82&)Rr{`ahPOuNW`EY;#@d3cm@rnHW8I94i8T4#MnHF(e z4-G&U0xgaidjVrFK#wKssT4v8(#1UKVt&bJSzQ1w9cLPV5QyX;l4*a)X>qQQCs&vU z^ekKHq35INLJ&C~o@Fx*hD`hb8B5SLq=c=tJX>qa9R&Uek}%Dd5srO{-{}$A1H%4* z$n}Uv5kkOWWmgk5-h8W_I=`G`YzI%nnQcQsAn^FJrMKNu42~7wRrIGk*qhG z5@4scC#OTa!cJ{38R37wacwi%!WGl4?QQi|Z!~4S(Uhw~y%VjFn zDz!VeDVNIt+$a@QT^NS*fSC#4-P`v{S2s5>e*aPTMS5*RsDMS&tQ*rbIsN#FmSJF; zruxrh*Ok6DN5>~}|L#3CkCj{aAEnYwrT+ryMcd}K;^jyH000R9NkvXXu0mjfo8=f- delta 555 zcmV+`0@VGs2K@z)NiM?x01m?e$8V@)0000ObVXQnQ*UN;cVTj608n9RZgehAMN}X) zE-@}L`@93Tk#|xbU;qFB0RR91U;qFB0RR91P+@6qbS_RsR3J4jF)lKZ=t+O+)%G~b z+H86N00FE?L_t(IPo0y`PQpMC#=mV*f)e1QF`f-4Pv~Q4OuXntU%^BVo;-N+poxjz zO!OV}9ZZaJm-r_^AqpatLR(6q>(0`x4KWz~kuSTM?R-0(DQv%dcgX-S@l)tA9UqN4 zZl3PJTh5XQU0ttjFVor4$tiz-EtYV6c)-riFStf&b-#;Z-$u!IP~sgtHL7^2zJuE? z#?whDMawXQ9bj4(gaJdF_fhsla;J^5(6iY<*)+ht9`uQX)K8F^MjM?mXugl0_i zq5|j|xLD@LQc_VI%MDk};GTGwChSTLo_MEj!-Uti;JY3bgT2`WCL|{?Os!Uh_9(jl zX}7`agXFF-aciO)VImzy&~*ou{E4ldUB0rqCOeeNE%HGVhgjd(3|csveEyb&2GOMH zsTsM_O%x}oTZah^R1!~-3C5O~jLUd-E-UwhI#YxO(SyQ6A=nM#(b*3Z8bp&+H8f|6 t(+8twPpE4C1^pYN{rYhVzwzBK;0vG?)bS<-YWn~H002ovPDHLkV1mI9_CNpt diff --git a/src/main/resources/assets/tfmg/textures/block/glass_lead_pipe.png b/src/main/resources/assets/tfmg/textures/block/glass_lead_pipe.png deleted file mode 100644 index d10d9d8de9c0bdb6f8f5740d9af6173632ebcbbd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 275 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJV{wqX6T`Z5GB1G~mUKs7M+SzC z{oH>NS%G}50G|-oh=^D(FaLmm(2|m>3$I?TxNtK)J*WHN+3I!MU27b9PT z0uS?UUKxdd|96YIDht^L-I$tK{V{ybzopr0JL~x ANB{r; diff --git a/src/main/resources/assets/tfmg/textures/block/heavy_cable_hub.png b/src/main/resources/assets/tfmg/textures/block/heavy_cable_hub.png index 7aa9321a0a02794938b3f05fa5b256d2af9bb2c9..fe69da96bc99808b01a3e9b653999043e37b412d 100644 GIT binary patch literal 507 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJV{wqX6T`Z5GB1G~mUKs7M+SzC z{oH>NS%G}x0G|+7DLExobuAaKfcUhWt_hP3&25`|x_m>ztDDJR*x382Ao@Fyrz36)8YLi4xa{lHmNblJdl&REB`W z%)AmkKi3ciQ$0gH^X_ZkErDvbrABzBd3tIwZ~!^13{s4&42(dQ7Z6KB*&xqoFfxP1 znSg9VMkcW5qJZqob{4RB7LW}B2|x_e52Mj6WdH`p1a<}%pb7&cV*|zo5K}=qSQkJ{ zngV2l029z0Ca}sNOA8{&803@sGKCgGN$=0JlX11q`V~9p@Y`-JlAp-&C^0yM^ zp4@-_Z(Xq@i=#L)lW&{3Qn=E=B4-zsiMu=ul;kyMsPH~5<63xYN$f(!oP)8Gi-<001BJ|6u?C0Q^ZrK~#8NrIS4h!axv(b04wLpae7s7GfhP zA{dKk69hpJw6GKeJ1f0`m+}gpV&of`utpPvEnc#_?FVX~pQZG2jel$?@?gp7+-L15RjOeSEA?V8lqsTXQ*f1 zeeJs?P|dc~2+uT6Pb~%xAcvJfijkFp5yf86(3Bpg&h&IB1;`IdgpT|5ua!+9z<_{4VR%wZNpu$;>CEY|p(zhrHWklTPl8 zmobZ8V{yxCjp)(;ypmac1zkIybIlInFP&5=QCE2InWz8x3$L&Lw%H&Xz1?0nOfFu` R=wc?wMV_vHF6*2UngI2(gBt(< delta 208 zcmV;>05AXk1Bn8VL4O!fOjJcFCN5cGWIsYmHa9>qFgGnLF-%cagN%xDL(202000Sa zNLh0L01m+b01m+cxRGn^0001bNkleQc0yn&{1Vxb`%xX;Qu&N zGJ>hf?;1Ge&@lV-;Z5+;Irk06U@hNvjMulM4eqOzE*~f)XXJ5hcO-X(i=}MX3w{iJ5sNdVa1U3Z{C7 zdgk5NzFPv-Y)g&sO!M^AV&DLBSQ(@kSs56CEH5CIhO$Af(O_f-i!%Y)hKx*L*F^!@ zne8lK@hl)41a6iwGQ40$&}f!20Hr3dGq3QV0J5OE3=IrGve~bP0l+XkKfudwJ delta 134 zcmV;10D1qS1IPi8Nq@os01mU{owus22O5vhSR67K@0#1 olIsGB!Dtwah5-nSh5-Wu0E9Vm8Cwx0(EtDd07*qoM6N<$g2%NpZ2$lO diff --git a/src/main/resources/assets/tfmg/textures/block/heavy_casing_top.png b/src/main/resources/assets/tfmg/textures/block/heavy_casing_top.png index d8dc81283620ffe1264f1c1bcf028a9a317c3494..d218f5834cd93c2ae6ebbab7d600c99b8f8f16fd 100644 GIT binary patch literal 517 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJV{wqX6T`Z5GB1G~mUKs7M+SzC z{oH>NS%G}50G|+7DLExobuAaKfcUhWt_hP3&25`|x_m>ztDD;{yn5Mv@ND(E?IIE~ zK;_=W|F!}tzLFrn;Qz>g!S%qM6F?cx0*}aIpn?M+%$RkplM^T?QQ{g=5}cn_Ql40p z$`Fv4nOCCc=Nh75s%NNY-hJ)6B~Z<_)CkWsPfsld4j_k>L5h);ff2~^0%B<>8{|6; zMrN=$6Oe7l$OQIn6p)?S&H@(C0Ealo5gdCany*zs zfcb*mjBcJ?|KHxzXlwXulgVAcuQ6Scd%@8PXUPZs3$t#A9(>$(;WzWq2C1C2s*C*` zcCS+rKf$}^;tb)}c_pX#r+hGe$>V;LLD<6Yyneyll=DxWSsEDYg`cz73Q7yHgY5Qn L^>bP0l+XkKPb!JC delta 240 zcmZo=S;;iPv0f#>C&X1#P0!H4TvyxBConWJDW$om%go%t-pT92tC!se&sMM7&cMLn zsdXy@Nb!^e`33(+00yD^=gtAeISV`@iy0XB4uUY_j)~cCfr4e8E{-7@!J+4F^Bqv& zV7|Z|ChCPP^8bs^ZrZzF1UZ8dmdKI;Vst0MDalW&i*H diff --git a/src/main/resources/assets/tfmg/textures/block/heavy_machinery_encased_cogwheel_side.png b/src/main/resources/assets/tfmg/textures/block/heavy_machinery_encased_cogwheel_side.png index b53331d947d7acdd1ed6b1bb4b80e3a332a06354..8b3b892c2f4867a4a8639d29c60472de13f0ca76 100644 GIT binary patch literal 502 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJV{wqX6T`Z5GB1G~mUKs7M+SzC z{oH>NS%G}@0G|+7DLExobuAaKfcUhWt_hP3&25`|x_m>ztDD*NFqN|d-plmzFem6RtIr7{F0 zX6BXX`MHKDnCcnonRj3NZV6PgEj7Y3&C^qhfdj~4WsqWIWncudynt95$_DvNgOM35 z&IDu|GBSaE8UgCZM@YV3k3Z7C;tMm!W|HNcPZr+4Q$5?I1@-db&74IqlMB*-uL zKNK(o`&S5o1PeSOiy0XB4uUY_j)~cCfr8u!xH-{9j*qJ)tKz zUzV?hQSgAAMUSDGBd^OL@e>myHrOR`OiT26*t$w->K@kglR;Z{@crY`J?rxGBN;uWoJ=k&y8T4AoTA1FH4% z{MQGhcuRu(g8w4{2HO`(Z9oam0*}aI1_r+UAk1jN8ms~olqhkHC<)F_D=AMbN@WO0 z%*-p%^K%VRFx4~EGw;6k-4du~TWW-7ny0500|$`9${@wa%D@O@c>%FBlnwHk1|u_A zoC(M_WMpCx0Mb!FoY~F-7S95*L7=yck>Ld}0AMtlr3^r+3G56kK$QkY#s-WFAf|$B zWL*F;X$p`H0!%=2nZPQ8EG>X6s4hbT1CXri+^yflU!<-9GMhbJ978Pp?_N5{ci4b~ zIUwhi+RbnO?^`c)3FZ9mH9KGblOofZ3BkVh>nyr?{W4g;Bpv45xO2BT*WMciUCu%) z9bFZz<)S7mx}~EceeS&O-FIB}K^9*oF(lO%726c}^oM%rHQ$t7T${hxukYy>?c&Ij qY~GT)*S@R&{{F7>S>@LH9qsxL)kIzY)Zae|a+;^BpUXO@geCxCP?d=Q delta 311 zcmZ3$@}6meW4%^@Pl&6gnx3J7xvsXMPhe^?PXH;tk|4j}|Hy#B^}rpF3}=ByWHC^|eh_A~U=3CQ3U2XqaSXBW-#h7` zP_qGti@8Aa+PDAz=N&YdThDO0s@V2HvKe0@Ym`9fvwgK!cN#>=D~P-4_iS6pSuX0` z?39!{!NFz5)(MhI(apS(UuL!)xK*Kl>w*5d-8@!TB$|&KJvnquz^6@`Df@9&;Pln= zzG?o=NfT)L5;0*B`+KGJdbhm)amuHzXgOcBw&i%tnMw7Brb{~g<2?Id=bsA(wrw-& x4}BI>{NIxHW4DHB%sQ*5^FL_(Zw?oKD<733@NS%G}@0G|+7DLExobuAaKfcUhWt_hP3&25`|x_m>ztDD*NFqN|d-plmzFem6RtIr7{F0 zX6BXX`MHKDnCcnonRj3NZV6PgEj7Y3&C^qhfdj~4WsqWIWncudynt95$_DvNgOM35 z&IDu|GBSaE8UgCZM@YV3k3Z7C;tMm!W|HNcPZr+4Q$5?I1@-db&74IqlMB*-uL zKNK(o`&S5o1PeSOiy0XB4uUY_j)~cCfr8u!xH-{9j*qJ)tKz zUzV?hQSgAAMUSDGBd^OL@e>myHrOR`OiT26*t$w->K@kglR;Z{@crY`J?rxGBN;uWoJ=k&y8T4AoTA1FH4% z{MQGhcuRu(g8w4{2HO`(Z9oam0*}aI1_r+UAk1jN8ms~olqhkHC<)F_D=AMbN@WO0 z%*-p%^K%VRFx4~EGw;6k-4du~TWW-7ny0500|$`9${@wa%D@O@c>%FBlnwHk1|u_A zoC(M_WMpCx0Mb!FoY~F-7S95*L10-KBf|?|0KjN8OBsMt6WAG8fGQ1)j13qUKuiVM z$hrVx(i9*Y1ek#4GJ#bFSy}*DP+f)w1|Zp-zEk}6uO#?@%xRu3jv*HQS1%ppJ8Zzg z9FX&B+0AeN?^`bn32i)_H}%d+Xwx8@hvq zR(c+FD&ujRu;^HnhuNF?(R{nLKb<(VY&wg;bLH;j13PWbw>~MG@yg=u?m1SLr!3d4 z*))lFn$haD-{b%C|5pqb=C1s7#Odw+U0>tx@&(`hwLb4}`2Ror@u{VvuFr1E?*+Nm M)78&qol`;+0M@gl=l}o! delta 245 zcmdnYvW{tjW4&~MPl&6gnx3J7xvsXMPhe4IqlMB*-uL zKNK(o`&S5o1PeSOiy0XB4uCLY*0oMfpkTYFi(`m||J6y3d<_abEYr7b`S<^*-X#ew z_I$NI_L*n1q!=<-Z^o{@KO?U%jW5sh!8Xe%cW%=~7ab}sm^ocqwBn7puDUO9HvMtN zsgUisle=EtKFtD+^6>b!m>QPGmnVRt`O;r^UEOT=Fn>OuW8-|$6_p=O`oDLc=V`>X j(`TPXjPu{$b`E}%77M6mv~pgTe~DWM4fdJkMu diff --git a/src/main/resources/assets/tfmg/textures/block/heavy_machinery_encased_cogwheel_side_large.png b/src/main/resources/assets/tfmg/textures/block/heavy_machinery_encased_cogwheel_side_large.png index 329e3e8884f542aa7abc4cedb663c3e8667a732b..c0ad7c4b494f2ee0fff302ce7dddb50e47155486 100644 GIT binary patch literal 503 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJV{wqX6T`Z5GB1G~mUKs7M+SzC z{oH>NS%G}@0G|+7DLExobuAaKfcUhWt_hP3&25`|x_m>ztDDPzAYni#tQ~j=M?!;x;!q>a) ynU1#e3M>{mdS>3{?(+s8W0nX1eqt%kUCI2smvxH7wIk6W8$Dh9T-G@yGywpXw0w;K delta 198 zcmey){GV}xW4&~MPl&6gnx3J7xvsXMPhe4IqlMB*-uL zKNK(o`&S5o1PeSOiy0XB_Jc5^1#7ShP%y&N#W6%9cy6B~UxNV$i}j&^SEf5UXd3YW~5G~sEO^jz|zxx!s*;Q=Eg@16mhOn5t3>0DmTEgJz>gTe~DWM4f`E5t3 diff --git a/src/main/resources/assets/tfmg/textures/block/heavy_plated_door_bottom.png b/src/main/resources/assets/tfmg/textures/block/heavy_plated_door_bottom.png index e2e138b125ee1fa221ac5aef6247d175e3ce756a..3bc3f74459930bf1af4f2884c870cd9f7d8a94f6 100644 GIT binary patch literal 494 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPFMK9w;t zya0L+Mx$BE0F;`*&cFgxX<%e*z__0NEhG1T>cktTM>b0?2~uGBhv% z$vUlE`DoYA)Q>=Bv8Rh;h{WaOgpjg?gakvO#DvgN?*wm7E=Hpup&NG`cv6kUr>86y zXbZX=@c6-ngasXn9f~|D64F|doYKsaiw=6ZEo*dWTQG6bq)iDN%+69ADjN(o>}c>Q yD@<(QFx?6)Fu_XT0}F%SPN_-kPqHgOPVsd0b6Mw<&;$T8qHVVT delta 196 zcmV;#06YKg1N{MzL4OrcOjJcPGc{RWUyYNLaCCS!I6F{NSUf*Miw!7R00009a7bBm z000id000id0mpBsWB>pFaY;l$R2b7u%rOduFc1XL5&YI)f)_~e0B+FQVq&ev^uiC` z{|IhU{iz*~f)XXJ5hcO-X(i=}MX3w{iJ5sNdVa1U3Z{C7 zdgk5NzFPv-Y)g&sO!M^AV&DLBSQ(@kSs56CEH5CIhO$Af(O_f-i!%Y)hKx*L*F^!@ zne8lK@hl)41a6iwGQ40$&}f!20Hr3dGq3QV0J5OE3=IrGve~C;Nio`%X#$Y+qX)5`1+f_q|~J`et+FU?umR7?uQdh ec-#(yRWUN~AM;5po3O(MWTB_4pUXO@geCyG2WJ@o delta 128 zcmV-`0Du3g1Hu82NqNEm01m*r4>3j+TB{>8v(W?}tbN?H~yz{!o!C@v-mWkJBpSI?m=28QonAqG8r`j~-Y7f=jF i!(cQFKwvZs7#ILm^=ExVka4X50000aG61Gb%U@SPGgMpFYe_^wR2b7mj4=*?AQVH(fHR1?BZ)ikFJRyRB*tAGxc?FS zXrga=Y1-mL=m!NcQ_g8-v3+#5SHS)N)OrA2t$3rh`pYJh=Qpy5A(M+NK}Vw*5vQ8xkI$mQ!3&Q&rdG=buwp+%a*=?6>dV|NsC0 z^7ZS9+~kXKn^Q|6eBAGBar0<#L`eU$jKUv%wTaQAls0U3GAmR zAUm_21uUKgWP`w`GDe0MK(E4RG)ozPQWMx2Sb!=GjEoH!7eGt}*~q#8V$u{K8w8ku z<}!g*23cAFSx{Yu1_mHmr&0T1c zkl-UC5+oubo**!B#?Gv(XWZP`1U=u~U2g7Ek`gfWPWAJ5Gdmr5vVyA5-?Q9n(CO%# zeg3ZTcJW4u^!Ic2GADVwwJjD`S*o@3`J1`79gZqZvJrS&z%0q_7}mk5pwnu}%%I?; U&uUioG!Nt=Pgg&ebxsLQ0OBEoZ~y=R delta 227 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 ClJsT( delta 2037 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 X)5#Z43Cb)0x|G4w)z4*}Q$iB})IX{! diff --git a/src/main/resources/assets/tfmg/textures/block/ladder_steel.png b/src/main/resources/assets/tfmg/textures/block/ladder_steel.png index 01abf4fb8f87f3381ada6ffcda1a6e0980580b65..e2e70ee8bf1ed2049361f09ff55711ebd5b49882 100644 GIT binary patch literal 445 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJV{wqX6T`Z5GB1G~mUKs7M+SzC z{oH>NS%G|s0G|+77q0+AbKC0Xw)nIhRdp@jkZ>tEC7`55MddnCYUI0A{qtPs707^|@XJ7%UG%zwYU|aw(6=Wmp0*FadfNT(80-DPNRvBbz z0c1gS85$UXWL@WO{U-h*bq$bd;_2cTq7i(z$B~agf#*=dgCGC<&-TT-G@yGywou(qp** delta 203 zcmV;+05t!-1NZ@u83+ad001BJ|6!3KAb$yPNLh0L01m$Z01m$aI0aKA0001uNkl^UQl`OnzKj8R%j5-biBWBBy`<9|Lu ze#Wy$PW^|eJ9KC-SRQTwNa4df4;j9F{l;)~&!PVu92`&?2>9{i$NztS|H0K^0637d z%*?C_dI4P>6O?8Ukq~D@w-p;eS2r34qhSC7Lp}@`7y$nQ*W0^(YIpzu002ovPDHLk FV1iuAQSkr( diff --git a/src/main/resources/assets/tfmg/textures/block/ladder_steel_hoop.png b/src/main/resources/assets/tfmg/textures/block/ladder_steel_hoop.png index 7a129d18ad8446c2ecdd5473e3ba15e4c29a3b04..ae68bfa2a5a65ec6a281d6c43dabac312d998b6b 100644 GIT binary patch delta 421 zcmey&_>p-+SiMAvYeY$Kep*R+Vo@qXKw@TIiJqTph=Qq}p`Lm7weOY;3=G>+BRtbQ zJ+&A(fE-o^DMnTXMj*=zh^3+IARt?Vkr^z`1Y{dBGBF4M=_nx1Y-a(BX93wD&|AjH z@PZja*Mk^nwlV;PCa^QG0F@dT85=MzfEWw1l63*Zs3|};2rvN+W&*1Wva|rQpt=kV z3_!B3bGLpIf04Qd$Xwv*;uvD#pPZr~{G+YqfBmN)lFY)pST@!>_{Yz8jEI;~!<^6{ z7~3E)VN&p~^Jh;UT(EHUX@_m%`|AE5{P5(XahtyUy-DwwBnm!q{rLawZFEWEr2}7n z7XO?4lvQF!>1(}Iwwjv%jT4oa=h@YG#pxV4@IC*&hq*&&?CbptcfPG>V`FQRzrTO7 zI9t4(!=m^1@7JfOGXn+LlpR)2^|L_t(IPh(^t6C`D1{=akmHUkrsPckqyH)i1E;v(Mw7$DgT zCdQWknV6aW>lo=VlI?|mfB%6s|M>p>KiPrk?&5#`15hB6Yyc=7n3-As1F=ETNR|sg=>VA~8yb~L}XSDtHsSe4~CO3Ay>+ZN~>$Uyu8R{var?L*ZX36YG7z! zcucs^VzV~vggB7Ea6Y~NzX2BEMZfQrakgIZ0LbvZ3yOHn!3y^pva_bRCHt*a=Kp+C z6L)#+I_H7il!@Sx%p%DbzcN*KNFMVrjzP;n^?h&=pG%?{(TP#KQi7}HHZdmU3ldq2o?x(h`4u}4V z8Y|fv9k9vGz(p$qlG5|SOc(E+J;o(J{n{s&Wl}lNdOH~&v+xW%3Wi``0mhYI*(ejD zK5r<`qlw>HYALtoSlC-LC9BYy8@jikNhUt}OymBIXfcF}chmGiE5g!&5JCn4158v} zns;vQDVX<_IjL&RAc5IXBb zd9PRsAZ-ddn-L=FS=ACVwm(^Ari8Q}%pSgtPCVl=vB|BczADS?6`4cvME1HI5|10- zCEl4_5!nwL-zx(o8I{o+SK)AEk&=sP3BCTfNj|`2kSAV9@J0DJ_!c+>R1|6(<#=V` zAz1oJ4Wz*>Cnl7D+7SpL4VmLiHj8j(GGBXHL%Bg1KIb?H(5T2)5>9AOIyuHRUl@5` z3YqLyh`2UORe)^lfg!1YWl;wO2I-JV71_gpmzeE0tBiGx+(fIMM!xB*ke!a`D@O@x z`X!zVN>}q$Iym#p=@xvLGuRwN!uv!K=4&ZkAf>P_gJYuf66YyIeo7=}@f|&~N6ORD zyx8)XKSuYY;3bQ>wxvt94{$dHhZ8@Xx6op|q=D%vjRBNtbb>2CDGc+p6tdPx&0Lsj zE%ayTweP3`KIg<2RM6p)j*NVkS{``xm$1NaHd!wz7?2iGyytO*RbqRJ=0QM+y=2n% zH7iPo41S-%KG;NmJcwB392^OFXX!(_(5yIU9w3Vb#(8X>9xv z*5>-`RwVdfHLyg_bt~@`OaRm7AT2h#M=5037DI8|#RD1h^r+Skw-k}snNFHkj($T| zXxQ#uYHS!4r(z`s=eVPTwB0xW-?2Pi65+EO3~h{(;@6BCRuCM<1LlaywR^dpb+#+nBOXSQZ{AfGR8P$d zYyvqNY`=RkOw`+i8LQ%86|Vnt<>|*1!Af Bb6EfY diff --git a/src/main/resources/assets/tfmg/textures/block/large_radial_engine.png b/src/main/resources/assets/tfmg/textures/block/large_radial_engine.png index f20fdf02b834aebab6114b71f471c150cde4eee1..1f708434fc324509ad197e9cde59ec6fc0150b42 100644 GIT binary patch delta 964 zcmV;#13Ucs2-yjcL0e8xOjJcBCn`irP)$@X@ZA@kCu@X7#siq06NB@djJ3c z8j+A09{>OU{{R#s0NMZm010qNS#tmY4#5Bb4#5Gqk!$Ud!*&VTb^!qB0{{TolR^Ps ze`~td81|2{}bDFOaz3tb>Y z@)|}&&lYwEf*1m^6VV6Y=@a?MjCu zpkqKF@8vdh47k7XwSKKghVN?t1ULmqTL3@^aAFH4h`?ENJc#ia0oVrttWRyNf5c$` zXQD|Y$;8)yd@HHU>x&PZ3OY{jQB=LX0&Eo1H3EFfPhY)V1GdXq$32mAjvW02kcLvL zPb(t7ξ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 isJzOy4YKF<5q|;b=!6@{!sN;T0000- diff --git a/src/main/resources/assets/tfmg/textures/block/metal_smokestack.png b/src/main/resources/assets/tfmg/textures/block/metal_smokestack.png index 8d564c67368a4ac923b5777200a5d2ff459a490b..f10fcc2feeb158ba69e493eb5f41320536641b20 100644 GIT binary patch literal 737 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE3?yBabR7dyjKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCikV0(?STUAzK(L&6uYSQVd^Q{CJ)ea<{XbK9;7lZz{ARMoYl<&=*P1eEz~Q=3;7G~RZU6r7f45+z;jB*+PQDP-6K7!1XAJPt z>~F8PW$5UbxjpyxjF}x;8**g@8m0bSb3W4VY{97SxWwxT>#I`DGqN3zETc*VJKsip zJ>#(Ilnm46RhK3N~vq#zvSMMW*yMI;S%STIJbmT0{k28 zP2W_rzpJgVvo`qk;d-sb<92@L2U2_!o7=b_*j-U;)5~kP#`eqR*v%jRx1Ua%^2Rqv zc&l|lZHAjG%SB~Z-vyg~C}?S_8gHI5iTShL0q;qX=PYNdCPvgWh^w6b`S;vSp$++-yfz$ eT(6yR{4c){my+DFOaG^X!q3yy&t;ucLK6TzU1CvbDDP{RdXD^}kp-j$7t)N#smrnEG9Gk>?`erndV6b{Rjsu>HkxFq93?ArQy#}aIV z;vTYm>;1^87&p-*W#ZBHPiNjZ8+JXOv%h9T)P`MuT>q~5!F7BqV+GTVOQL%pwr)@d PdWpf))z4*}Q$iB}2CInt diff --git a/src/main/resources/assets/tfmg/textures/block/modern_light_off.png b/src/main/resources/assets/tfmg/textures/block/modern_light_off.png index 47b218efc2b62b7a3a6e2cadbe4fb651346c1135..20575789ad4d9d08bdde794ba5475f9fb1b041e1 100644 GIT binary patch delta 234 zcmeyx{DXOdTcVVllB&9vp}DP#SAcIwczjw;aYfCF6)U!H-+uDs$s0Fr+`W5uu9lS| z0|NtRfk$L90|Vbd5N6ylG5al0P@=>&q9iy!t)x7$D3u`~F*C13&(AeP!Bo#s&%FEE zcgu;(gXC|PF*3YhW?+EPXv!u_FnUU6@46;E>9<5M(9CjA7sn8Z%gG4|B0)hxldBjt z*|&0QY{+sIn7oQn&fsd^0tSzb9;N{aq5;+y4%}TG#>m?e&A46U84p82li9znzL)oa PrZ9NA`njxgN@xNA_a0L$ delta 236 zcmeyt{EK;lTcVkTwT-<~KyXB4Tzp7GOnO#sK}p4m6)U!H-+uDs$s0Fr+`W63O*TZ5 zfq{Xuz$3Dlfr0N32s4Umcr^e8B}!Z)N`mv#O3D+9QW*jgGxJLH{9Hp6O!W-)jDGK7 z-ZpW0ko>1IMur#63=A+DP1$4#Mo-B;>x1E!#rOCD&8+lvaSV~ToScv#5)vddxr$Mf zeG9k7hAdZw$*UOUj4tLaVDQ-JVH%Ji8eo0lz}?khjJz$;jN3&X@i4M6#HyL?>U}cd Q2hbb_Pgg&ebxsLQ0Q1yQK>z>% diff --git a/src/main/resources/assets/tfmg/textures/block/modern_light_on.png b/src/main/resources/assets/tfmg/textures/block/modern_light_on.png index b0f12bce7761dbcb3b0fb80848ea8fd5641de480..64759c4fae22fb50ad97c3c244cf8dcfe8b09327 100644 GIT binary patch delta 161 zcmcc2e35yAo0XKDlB&9vp}DP#SAcIwczjw;aYfC)_lN%fzxMzC+yDRn-*Pyh!oa}5 zS>O>_%)r2R0E8K{u61%wY>;O)@4oika^jL8&i!SK3@?}&81_&6FUn{>S(MRJ^3ZzO z^tUPP96-&%o-U3d5|@(`5=4T6f+m+Us<5q!RXEnAFnJ-Pr1%+02JZEyE8S~5yMSsL NJYD@<);T3K0Ra00J23zN delta 163 zcmcb}e3^NIo0XY`wT-<~KyXB4Tzp7GOnO#sK}p5G_lN%fzxMzC+yDRnOB=_0XJBC9 zEbxddW?8WKl*>$>kdR z*8LVe_y(vs)YHW=MB;LCLV`$0kkI6EMisV2u?ok!940Shl$1Oo$;89(!^Jf9pyTEq PplSwBS3j3^P6NS%G}x0G|+7Rdp@jknkCERxDq+Wy`jMhUT`Baq-0!H8<`)Ja_panMprAyF zYeY$Kep*R+Vo@qXKw@TIiJqTph=Qq}p`Lm7weOZdHQQ1nJkvZqwHP>n999M?Mpgz! zAj=DgrJ-z)Pc;~s!QxCnwjm=E*ym9|c4j*ZSUd~J27v@12I+^kOkFcXkY-6Rdt`&yVzvwQ6RI()5S4F zBRI4-kgv%>z&U!U*r^=_|1ZyCJyKd{RhjvV;nBxAWu8ioPWt|zH%(4iB+)ay)ULtz zI_EX}fctKu_vOr2Nj%;ZvzX`G=enpb;jf}o+XM6`b5$vrYizsbmCJBX;wrCCakou_ hit>qt&TMP%Zk7KY%o-N);%WiNC7!N+F6*2UngBJ*nX>=@ delta 451 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 WJKw#fRK)-Q002ovPDHLkU;%>lsIWW$ diff --git a/src/main/resources/assets/tfmg/textures/block/polarizer_back.png b/src/main/resources/assets/tfmg/textures/block/polarizer_back.png index 47f989e3c9c2c5240dde9d4c2d0c3f9cf247037f..683914f31b209e80b5fc12723680ace1d301f75b 100644 GIT binary patch delta 381 zcmZo;+ru(Jl7pFnfk8u;KX{^|LcLRfPl&6bxvh&=fNw~6d|FO%MNM^c+w?i}mPa|9 zC<(h(9W5oNq^hp9DaqaDBtuYG)HwzQJ3HqIo`zi$CNEyGN<=~iXx!ylbGHI1v63La z;Q!bF1LLIwPk<^o3p^r=85sBufiR<}x`tN+P*kGCHKHUqKdq!Zu_%=xATcwqM9!J-)fT|E!?y?>Y7 oapvUB8NzHb3dS0lF`s@hxD;?1hnrWg1G0;=5V z>Eak-;Xiefx4v_r!13oXLgD(a0`o6+En75k*+-2_TlY@r_`$SonqAYqjlylj$jMc=ag+|K9rlV@5gr#%x>xoKi%ov1O_Bf-_wK7_f5_8tInY1t+t=42mQq<}lQX+wkG*{N zukrgT{;2`mIy|4nS_U(hCb)?dw3$^Es8}*@zkXIV;=oFaOW#ta>HP`*enE>Rj*-`q&57gY zg(pv*O*#EQHPuVHaZ~>Kb*k(KTwfYrlVW2xe8pXw9(Vu7Gb72F=bu-`SGXIV&m5k`0hMqTctjR6Fz_8>V9@3}#3-ua)c_QgC~=J_3C>R|DNig)We7;j z%q!9Ja}7~2)icyH@4oika$R6JL1NJFQ&#XxGowk3b`vJY5_^ zG=fumZVMe&;BaAd>=9h0_VvI0*2Qzp_P$|$Gv{WkL^6*9SEInR`RvTb#Rs@Iba2!+ z+&}W)?aCCBIL=GHrkb$|%O$q|VQJ`CQF(u}UwgxmPg0_43{Qg2++B0#JVS-{*01+= zSLW8~Jb0I$d-U%XPURbC(o;**T7Ohz_a2)5j$dmE*Z!E$S&M+qVeoYIb6Mw<&;$UN CAfmYd delta 614 zcmV-s0-62C1ic2383+ad001BJ|6!3KAQB01NLh0L01m?d01m?e$8V@)k;fkeGW)y( zwvp>nA7B6g009610AK(B0096108n9RZgehAMN}X)E-@}LlUxBwf9cisILg{=dH?_c z>`6pHR5(vwr>3#1EuWyAUaYAa3+86k2d0?p(X*!nHf; zLa^Xp(2ct4%0(><;s+uk3gc+4og_^rnT#>cdnRYhlsxcq&p9{eo_o)|F&;f$OOSGF zdC9mqcS-z0v4CQ^e=PBi=OO3>V!z&eWr&ety1oyUa_qzmPM$r5`tiDmHe-31yS57z zVP&gU#hG)bN5mNC_F~$O3zcH;IC%f|!-yEm!~D6`f{O60-#&lAr*|LG{Mr=JW=#8# zWi0T!srjG#D|azJH;Zz0&_vJiu(8>|y_E;zXEC?8x1b_CefBHlc9o*t0&wQK6!_hnD zRlV70h|Q1k9@6>w+2M__vBtu})#UK>6dLOpS!2Yp)V)y>UGIlzlj6~;WE?ma1 z)(@Dh!ph{xe<2H2xr9opNvk4aQngYV&J*S^*Ay?M8};CaAzaUgAB25BLfqel?tt@Q zuQ%KoF?l|oiB+-_aU8?zC))kRIOn*&Xs11RvCLuaNE0U}t)wzhHR?yF#otTwdkb#c zN!q_{`6H!?*=tm^`=x_}(ckrCWJP6gD@gtUG0qh45FHP-;Q#;t07*qoM6N<$f(hs- A!2kdN diff --git a/src/main/resources/assets/tfmg/textures/block/polarizer_top.png b/src/main/resources/assets/tfmg/textures/block/polarizer_top.png index d193998e44f948cadc249c7af9126288e6793d1f..a8e285c6655050006dbb8d8f884484be17295994 100644 GIT binary patch delta 360 zcmX@d@_=Q6V`@l%Pl)SXZQ~nUWyC;E4-GCT?Jr`Tw6meAA=rKvB*DkH}&M2EIce%qXhi)iCkAJga&4weOY_ zKL^QwDr01L!OXw_qXQB%^GfvmTtgI0^$hjQC#Nua);q0S`DoYA)Q>>Z+C5zyLo|Xz z&%NerR^VZM5T(~-p#Dgv;NE}R>8k{0xE0tba4#P2=?t^rUCZyNV)}UhMTZ*6A@^ fCLt!*@rOalN8rRFdmB-pYZyFT{an^LB{Ts5>qnTR diff --git a/src/main/resources/assets/tfmg/textures/block/pumpjack_base.png b/src/main/resources/assets/tfmg/textures/block/pumpjack_base.png index 854c688fb3efc2fdf980802e7285bef4123dff26..497a3336c7c6eb7886e6692c595ae7ea10f944c3 100644 GIT binary patch literal 713 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE3?yBabR7dyjKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCik#1AIbUX~<6`)&zTvn@5kGtJXei-7~kVP%kFWMyCk zvb=y;8p;OwRD+QjEY1XE8!|F62mt9QAkJ)O0gGn=*&xtc#>nsj7$7hj%~A%S)C6`0 z7NAN4BVz-`1rSp~HnJ{&m^1~*1_36ZxlCY{L6#Ok7F3s^fdNR?b?(-0;xAIy0E1k{ z)5S5w!oPLW#iGLo94!168h(>+{QtjIR^@n5RO&AOPaDM4Rb;psI##V>IPgA+QTe6c zB|DCs|K2S7r!@s+^G5|Fg!M9PK72w?V=AXgGgtRK^*0NCYwi%b%_|aaaK`v<6Z>7Y zhua#Xm|{YX9&G-3tMO8_#%zIi7g^>s8B}>JZ8&kFXAY}@(vnSrz6I|Otv)JorJS>r zr&Dc?;(a&Ys`PZU|h7DYqKU5?H1R1ZaFy37G{kMRb_03m$ zd&;Y9+6vb8ad~c=yh^XN@x;~`Zo%tCx<2}ae3mB+gCbn@&sAsanHMHL@Atm<=jHyV z%(6VQdf)r}rr!Ro8+skGAC~=gpApeMr{U`5-Fgr8UpxB#VJLIZKB*=qe-IRAp00i_ I>zopr0O$DQSO5S3 delta 424 zcmV;Z0ayOX1@HrqK~hCfOjJc#USDu@c#V^kEG{uLH#|H)LPADMg^G+bGc`U!M^IB( zNKR27B`5#_2R1l6GB!O_T3ugeXF5GXL`h8`ARrG94*&oFS!q^b0000Nk%1I{|NsC0 z|Nj8yK;~Wm000SaNLh0L01m$Z01m$aI0aKA0003INklkA6IVcBwT4OIA+jqS+EPZdQsZw{G?GDQG#L3cN&01ub$R z?RHr@XcixVNe_VwUM^fiKsMh~k(D8+3pic^2{UKUhBen6mJx3krQ~a5w1N;JvGwb! zRm~4m?Q*@$!kTr5L2gl9LAbIO?ASxSZ)ZkdSPvG8;1^<4U{#W=lWScn@o&%oW30Zq{K^t{DS{u1q{y|p2Y!`a29w( z7BevL9R^{>IesvJDxT7zBWH6cA^&vw+33fNT&* z0Ai4S7>#Br127CHursg#RTvl<8!#?_m9DgT7bXybps#5m_n zc@eYLl<5Zdf@vL3ziBL^J8_;k+hL O=z6;PxvX=1 delta 712 zcmV;(0yq7O2Gs?S8Gi-<0047(dh`GQ0-Q-iK~#8NwU*s#+dvS7^Aaw&4^SxiX;Y^$ zln|HJP#g*-7oivmh2R&+Wv-j6wt3}j{VhJ?c(hWb#u6NMC9ihAnVlK=;PtDMbozGs zUphWKO$TbUVbi0zq2;K#71AQZ_?^^oqqoL)qhE>ccka6VQq#0fDO;5AM=KI)h5=kmUkTB&G96m>GUGK9FOx@l77?r41iZU zirJ^DJby77?TBam#v0~&#{t^B_b4a=I{UC+N30XEgSVob&* z0kEb7P`WUHr+<~V+h@S&eg{D3+81Cpo2Auim6pq8V!pLs0TA-u08K~0nyvtZ8si&P zWhbZ_fHucN6qAs%M}l;K`Fx&@Hvy1%0>FEoF*X8Vh*FdEO#Pw+P>KKvhxY(57XbG~ z07e<--sKP_fc1KvAtHdvQUHvUqwZ@FaPKkZ5m46@0Drk4fW=}_i-5d!j~fBJ4BO;Y zAOMU4z&M#~lgj`w*b1P`jvhXiLHfz`Oz=oCY-vV_wN~?>ME5NgdT5(e&a)8Czn-GS*KQOY^0aOJs2RdC2;5|Tw^~}e?00^}k_j^XQ=?L(w zs|i4JNnc2Hz`X-_D|U}1fhhY21&GG|{09YK#6b}Ak_0grfX>}L_XwzK3V>XQ`}MwJ u8Ah+8ybAUPpv;aQOX_}J1sdaieXqZg1S+_sqt!(K0000mdKI;Vst0ASKd_y7O^ delta 200 zcmcb?e3N;CzgT2kd_!|vK}khGaDffz;yBxdH7==r&ZD46OQ>KRQ|Vf4&-dG(vcsarW!KxICjE{-7@ z!L?@t`3@*>Fkjf#QSe__|6Hv{$7}J*g$w~om)g#=a6UOV%RE5v5o467tU$K%zXhSU uE`IygY%V?{ZF9rV4P1w{x1183P{DAAiACI1^4Bt;xeT7JelF{r5}E*x??<}; diff --git a/src/main/resources/assets/tfmg/textures/block/relay_inlet.png b/src/main/resources/assets/tfmg/textures/block/relay_inlet.png deleted file mode 100644 index f402727b9b3055731409be6b696ab98a381080b4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 537 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPFanMprAyFYeY$Kep*R+Vo@qXKw@TIiJqTp zh=Qq}p`Ow2J);PP4*WojDI;~23gxr>6;tkB!*2nJAp_IL*u;&#NY2ZZ97Ta;B%NpUXO@geCwR--dbs diff --git a/src/main/resources/assets/tfmg/textures/block/resistor.png b/src/main/resources/assets/tfmg/textures/block/resistor.png index 99dd3d490264f6a06b89e9047994d0777f20a1af..f0e45ee1234679ae8766900ed7ca7d2b5b1c24d1 100644 GIT binary patch literal 857 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE3?yBabR7dyjKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCijY1AIbURn@f&&23%00(?Wl=LT1MF>HhxyrGMh%9Dc;5z`qj9J$@Ie~%_C9V-A!TD(=<%vb93;~Imc_n&&t|1Dh zdWL%D-PgWb0@Z9wjqptK^weVD0CHFvq!?Kl7=bJ=AeM%*K_RNa$P5-|0g zCZM@YV3k3Z7C;tMm!W|HNcPZr+4Q$5?LbE}x_G)chFJLDozR`vY{29C*dn@O&EuP; z{)ePwV*dYU_w$^1%~V z+kWZC-nS3V)y>kVdvd;ciME4sR>Zo3dpiZ5S++d*qtMyBtv3Jbp@Y80zQH9AX0myz zY<#~boFyt=akR{00FT$vH$=8 delta 455 zcmV;&0XY8I2DAi_K}TIsOjJcSI6FK)LQqp!fP;pOlaz3DcwtFBcV1SBaAcW*a`5uy zxS);C!l>olznh+)*mGLxqiw0Ityx}QH8eOsK0+%iE|IJo2pTu+(EtDdACb=@e*n!H zb`Ssn010qNS#tmY4#5Bb4#5Gqk!$S$00A{gL_t(IPt{Rba)U4w!y8LkLczp%$-DnC zqX+JUDNXpU%wjyUB#WXDLdXnE3o3+ES}TbuqY%a@g%zwRWsD$ER&~?VRVj$RKrp&& zUPBu)RonG_*H(t82SE*0dl-sTf8E{2@z&Lfr~^TN*WF=g(oH{3a_k#T)V?FgX(u#S z7WGxg3WSfxEJ3&|YI}abSz)#ZEI%1oG-t4Px2~Qq@9y({3Z;iZt9%OUtPLT?5Q23e za1UBelhnBfyGHD1g%mvq+~hDBGYz>(>tos-d}M_)AqAI`_dcbN{NS%G}}0G|+7Lv!2ZQ4S|c!md?E`-X%sUa@LZlDmsnKzv%x^f~h;cp7$1m|Wf5 zR$NhY;nm9(7jAYRJgcg%B_*dMA|V4b!$({%07!|J1o;L3#{w9%Z`Qs7D&Q>eh%9Dc z;5!V$jK}j=qyPmaN?apKg7ec#$`gxH83GbB^GfvmTtgI0^$hjQyRUt>1ghDV8sVAd z>8ZuQ0pzeUNHMZ9FalX#Kr9VqgM6;R$P5-|0#Br12F6+ursg#RTvl<8!#?_mkqxyY+wn)h`{ErIFi~EiHKv|L_j?qAOu_ z9bDNeZ!_XL&IWpZTU@D{7d>_9cBMytJ7&(8Y~FA&_1@Vs-9x_w7|WM_=~oR|siGtC zOTklJjK|2LbWXkAF$V2kTin5`2w|=a<>+g1VVJ#VVG*HCd@0s7T)U4y@&I- z1N>(l9vw?xuUE72Vc8(QP8BSJ7enMtM2nZWZ?zS#}>gI;T|tiFup{Nhro zS$2@&=K9JZ5C39+e|rUI0-OmHMd5eAnP` zoYSR45CQN4^+`9aN=f1*`1n~n5keaX06H+IOKA&u3A%vFvM;JZpl3_Bw+xUXx90#5 isJzOy4YKF<5q|;b=!6@{!sN;T0000*OqFhgY9^DLlB&H|6fVg?4jLmVe)))@4sa^Q`p+n(;qz)=I=D;u#a{~elYcZ&h1;b&u)ufdzXJV z+ph4u--&N>|J(N6|I6p|%x>?eG6(Z*)A@>-Kl9oAG1@YnZ?h%CZTq%+Z8L&+tUqK< zifCDxwW&t>a{aDl5vGz8Ii?11zF1b-rYF9f?^)$51wrGbOwEnfFTBmm4H(J|@*OVE zIA+p&v3K1rO(E%k$r`Vu1E!Tve!ilwvhSAbROwwz%U7p;Jt2SK<7SuTQ?v_=BH8`a zUJKRF`f_fkYJ2gy=f=|nRLUc+i{5GKxFswozMWB1OkpVtU+0N3<7%ZtOajM4RFZl& z7#J?*FcQ`mS7>42?)K<0>^i|FBc!y+zp(4Dit+qqCz30Y)*e?lvt(Zh*Vg6zeGdhU zmDbD?6ujfK=HHANMh;V6`*hser6+imW%9Kwwf+zH{`1?+KOf(HBusp*K!+bNz8E}R L{an^LB{Ts5m0|>E delta 546 zcmV+-0^R+w29^epL0L#pOjJdKd~>g(pqr0~WhpgyHam4K$GW)y(wvz(^QXgOd00031 z003YB00031002;7X>N2bPDNB8H7+qOGLv)xNq_0p_BhJgY zgdhwsdbfAUUq@YL@Vv;R>%}UKLjBho!#bpvp4b%Ktx6l0E zR!ohs%VV!$QXA=2Jt~+MRvYTDGJf{{1jlCbPN+eY|plGr(>w%D7r&U>47=ytRGx@?zLW)D=Atwg{r1Fa}O%l%}bCTzrToPqJ4J9u1 zvY&<~dkov`(Fol^5#tP~CXLV?HD`}plbdi~md#yOk3*AVLT7R;@u$fUVmu3C456$& z2&V>66F6g8qkPYW;Jp_Cn-rNNCVde!Id4xoN6tAB7@oDY8qWDiu-1wQK?^4SAX^Ey z1T(iTI@~59`{*JB2%;cv8NS%G}H0G|+7-;nU)ikj(j=EbMw7@FIvs%yD;1=!iUBxPg*l{o#IcpOM^l?3?( z|AzsFO=on@14TItJR*x382Ao=Fk{xWPEMepM2TxeNpOBzNqJ&XDnmeGW?qS&pKFMM zsh**pdH1#NmOwSzQX@RmJUz7-IDi~h1}R2X21X#u3y7tmY>;m>7@5K1OhC3FBNNzn zQ9yQPI}2Dm3&;k6{bh^{FMytg(P)-30Hr3dGq3QV0J5OE3=IrGvWM2oroT;T2RS;{)5S4FBe=IWkc-)o!#Q4N>*U|@J9bQY zd*N@U0;9Z?<3bM4DDS8Vp`nqLE3GSYN^Z_u@r|X?c3Y?6qSCWwSu85sD(tYdy sa_y|e!X5SwZ-kF*nb%O4_h(-%b2txc$(C0}=^#rzUHx3vIVCg!0K(pVK>z>% delta 356 zcmV-q0h|8r1CRrd83+ad001BJ|6!3KAb$yPNLh0L01m+b01m+cxRGn^0003cNkl(<@>AesRPKx_~V10Uai0E_br3V_8y{Er_#{b#hZclrP0 z`*#$@9GsktATbaP6+!`=TwGxK`?qfl6uW@I-P7;CnVI!JkRS}8i-Fi6F(?-dK!0K& z*E0o#`7y{UDL{o87^csk^Ph*G_y4I=N132P3?Md03?v5?0_y>Jg|V=*^53KTj~Kpu z{LH9jp#2}jUb|u`Tr)C&dH33dtBfE6L3+Sp0Fr$D{3WBPq&SK*aRFqtlt&{daNfUt zi{fWu04NXzg@qZJK>kJ!L}G!pvr!!bNH0mYVgr;L017mI0Y0or79RlV17W5;JNN&8 z`tT`Kn0Nrv2f|D)?v9Mo^3qUY;sHn>2vZo1!i)eBezAWb#6YhA0000FD{7|CnHQgyV`y%xs;=eY6<}xYl9Z7NRO0k+;&C9wRTAVE z{2vAwHl5Kq4;1Ar@Q5sCVBk9l!i+m6X1@grN|d-plmzFem6RtIr7{F0X6BXX`MHKD znCcnonRj3NZV6PgEj7Y3&C^qhfdj~4WsqWIWncudynt95$_DvHgOM35&IDu|GBPm; z0O=?o&TMA^i)R7ZAaJvck>Lf<(=Zy%QU;*Z1a<}%ph^QHV*|zo5K}=mvMzv_GzG{8 z0VbfiOkkBkmKH!3RF|QF0Z2A`*EQ)$za@f!%q5;Kjv*HQPbb~xJFLLtoU1V9&wqaZ z7%7hER<*ae?o1B_BA4+VI3VC*I8AGxa7?JE!P?>Y>QnquPLWH)MGqYPv?{cZ z?|AyJ{gH+8T6Na^=N6i<&t~rromN>8kvX?rboI~5A18`W{5x~@SFe3$1!H=Z#82(p R4=#b+?&<31vd$@?2>{FkqU!(v delta 465 zcmV;?0WSWv1pEV#83+ad0047(di0SYAb$yPNLh0L01m(<@>AesRPKx_~V10Uai0E_br3V_8y{Er_#{Rim<0dn;- z+S$AO|MC4hiee5^|3HE;fPXFq zVuQq>Trj{Uh6~`+&lC{m#~`bu02O9nm_C2be;$6`|EEqJWr7MZfY=~0kQ`J9tOul* z7=TYdV_{|Gzeo2UF?{*>nNiC?`#*@icEwV-<;VaQUDqyLWds=rV)wVVV^xa{VABsy z10c!Q&tEc%N{SN|q@<|D29Wg+&VNKm3?L;D;sZ>ect=iz!~$z)I|fiZLb+rEq7x9U zz`#2IlxX+`_`nH-6hN*%bilM{=l=gsA3lY0i3jBBLkCPQ?v9Mo^3qT)@qk=?=zwX% zs!a@6&RrroHP4?upDH0hc0q&=NYxMH58d_vIv_U$h-wdz3y3j?sP+K406yJpY=8+C zR3O)a+6JKfjjKICDnO40Y=Erx05!qDC&E!M3P!;Q2Mi1V)hwjQd!ez?00000NkvXX Hu0mjf)9k|T diff --git a/src/main/resources/assets/tfmg/textures/block/servo_motor.png b/src/main/resources/assets/tfmg/textures/block/servo_motor.png deleted file mode 100644 index 9750a46272a11bc1e598aa63edad0acda868ab9c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 563 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE3?yBabR7dyjKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCim50(?ST1A-$WlBSEK+P?BVI+7-Hey8+5y@MS;i1tfOJ=y6JCU{r{h# zKBGD4+rr1)o@_!!&Mq}f^{k)f&yZD3Wi(q|;L!PfD3++;=t2y_%_{$`#BMJ@2 zpE$gjVqh^dEkVd!Ly>1;^7}xJ!}S~?+Y?qrCj@?-a3b7!UdwG`#})H9o%U)hs|r-O zvig|m)m5Q7GU2&fR{vL+rl=ifvhOd`&LE-o#K`SWx8|*X=CxY>_4(@9ZKaui622x^ zKkoX=dr00s!gl+O?_aO}IQUBP_cHSrt3GGT-Q*8D?a(dz%2B6F)Adx{hA6fu4aTD2 zB(Et?w?(nV1#%pb=jgi3AI`n4=HScr>=Wl(cFXI;U-)tG6KgMwVKsMAMqcIN!aq!G XVd~mnou}-J1adF9smFU_~b+- z0000RbW%=Jk)ap||Nj6dGz&G6zW#q)Nkl?Q()J5JmShpq3^omG-{>gLXDC zK$V&150E)Idv^gMW)Tr)!gHyad0l3v#O9uoyKx7McwJ<~Uhf9q0M@23Q#KOkaU93N zWdpi{;#N`v(h4|-!#&Qk9|B$-Wb6UFl?cFDwO*Xqhq|_q9U!L)ytVl(L1ce{(EFga zkQM3M+j_Q16b?HCwn32{lvvLa>6hSM1`Wu(h!V+K=uDW+L3c>D9m&p<>S>_ zGSPv%uIuL*wM&Pv;sFq30o5gy zR{60yjEloC3~cd;K)v3tqs|TxDT~AN`Hb%jS?Xw7C&0lM5k~Wy&q9iy!t)x7$D3u`~F*C13&(AeP!Bo#s&%FEEcT1p}ZK)BSX`Y^13>-iXD}xjx zD+42tu2gm zAak#$i(`m||JzHag_;$3STC@6DskHV_&@(GOVm-X-S2(gJBgfY0NN-Z=*)32nn7df zl*~`d*%hifW^}&FW>u1%(J9p3QJ^$SI>C;?t!iD+^W`1)=3Zi5v1;bbRr?qM*@ad_ zp0k{-xr8mrhS6}<(>*$tvz3Bb6=f7AEa+dqnpZ_c*cHlG&;-R6g_FAseEJkLJkC+7!-q<1D~->};q P0C~#O)z4*}Q$iB}72vs{ delta 256 zcmaFIvXg0oW4(HSPl#(ka71KWd_hS?Lvvg2H{J@!Wn|0Bnjul-wr!{!yg*`YYz@k?) zr>RxsooBl6nH(04?M*_DI2{ywn>3_9RkkIr5o$d(Prq9_X7K_&g>vSmed3ptFL^IJ ve@1%h7Ax5>yLWF6fBAJn|4ofUMlLIhwdzmF#>v-!&SCI$^>bP0l+XkKPR3}R diff --git a/src/main/resources/assets/tfmg/textures/block/stator.png b/src/main/resources/assets/tfmg/textures/block/stator.png index 0ba3c5a23eff4f30662abb0a48afc48a77aaf0a2..eb924b181f85ca144d57510751e38ae7da16ac81 100644 GIT binary patch delta 1211 zcmV;s1VsDq1@j7!83+ad0047(di0SYAT|kbNLh0L01m+b01m+cxRGn^0000ObVXQn zQ*UN;cVTj608n9RZgehAMN}X)E-@}Qi`Mr!k=Ifm*>(W{=mP)%*>(W{=mP)%P+@6q zbS_RsR3J4jF)lZgNC8QIYr57OlKU7_000CcNkl}mKrg+O20}5EI6pN#v|w6NLU0Jg zw>q{GA=`;VWmTk>cdS^_uA~OkgFVA)C0mmF_rb$6Z{NsoX5PGi_q4u&!!@6$hju7g zWdQ8TaA!8_6pN4%E#p zv%>A4et2=}o%aA#z)7w^Ep)JtRNi1iIk z_mWx5!p_})aQ;F~h#VLoUzd#jV%{K?Hz-+UgvhDiQZeB1y6cYCIqnpnr-$LuQS}sM zJZ00Xnq^jhkWv?f?IL$z--%^b`1ZKzdXznN7z|o)-#r^JdS` z?x3Aw-cZs7P%fD&p~%0^as1d(*ja1^gUY#L-T*+4$NA*bi?t1rC$pASuRvx+J9eE5 zVEOS1w8#VY$ZduYIllbjb4`dG=GG?J^s2gZr){-=T2#z$tpJ#8TKeVt?0NIwVRsTMeDR2x4W};(d_BBWR(e* zUoa5tW21Ho=4#zLGKAK~1|<4lZ& z7zlQM!_GZB?E%(4yRd5wX@v_%Z6DCx9O`?Gi^(cyzMm(4s9&9i#MuiJDw}olPH38n ztCmUf;UfM(kgdv}&d&|BW3wABXKhc53cqg_x%qC4%O~F8X?C5o*nZp1dI5GE-Y+g3 zwLNWAnVHY<^Mj}SIQNK|`3z~JYG2dP3*@bTzi|Tg+V14_m$zSo3_={efTUDzo&9#B zAqGA^b(r_Z!<;*LoVVYMF&+&uF&1)~)lo1T3r@QSLr6T+Z(1?Dbjg^yDoqcIlcHyL3%EJ$Xwzdwo`AJEuK6*>b;1 zxM%UQs Z{{lY_grftHnO^_^002ovPDHLkV1o63MiKx3 delta 561 zcmey&^`3QtBnLAC1B1(wu45Aw73$3bd_r7}jZMugtZnR_0)iuE&zm0_8COtJ5g8ZX zJ9$b&b6cvWX@!|}kAuUF;;8?pT3;^C-4NmhG{WN6+^axJs3gcQ_&+*ec(i}N5Kxx0 zz$3Dlfr0NZ2s0kfUy%Y7lqhkHC<)F_D=8OGEJ|evNX*PD(erZ+Q83jr)HC|Mhk4t? z@*w#Hph`v{hS6xsCcf~je|hzr#i?64RX~Myo-U3d7XGC{-9pU@Jd4)`&Gfte|NqUU z0fO&M+T+eT{fhE((P0o)t@-hIqJ7$Blcg#~&n4YiHvT%TBB*2(J&pDLyNBNeGs2Wi z>qW(<1UVc!HBn@zQP4`QD?vAOp4W&UU}Un`k)7CPCTODTs@B+Cu&w8GeVUGfis23m zodN;9od&lImmN9N*?lhc*hM3b6W%7D`|_LSHErQC5MA;?@k;Zes)<5NZ?8SE(DzCK zSDV>-N7GY*l=MzcLFy$ZlQtb+`Qe ztw#@*tGv*7OAYx==*lY@FydpK(nDkd)CGy1_-{y<~XIwc@2z)^QQt5oV>`Htp4 zeX^Eo{>e7IU(s~=Vc>&p%MV9)ZQgKQX?H@0^{WL+b@Nk>=uh4w_GQnS#H0ML&3-d` XEmhY@D%`dV7~%|`u6{1-oD!M<#Dn!p diff --git a/src/main/resources/assets/tfmg/textures/block/steel_cable_hub.png b/src/main/resources/assets/tfmg/textures/block/steel_cable_hub.png index 2d57e6e057cc2b20370c694282dbf862495f480c..e3284d5db2e8dd0a5c8b8fe2595d33791b03a64e 100644 GIT binary patch literal 511 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJV{wqX6T`Z5GB1G~mUKs7M+SzC z{oH>NS%G}x0G|+7DLExobuB}4+xWDct_hP}yaJkgx{51ms+-%U&za{N623gj;Y3N; zwd&|iN$wLo4Mikm6u(K{0BYwf@Q5sCVBk9p!i>lBSEK+1B}!Z)N`mv#O3D+9QW*jg zGxJLH{9Hp6O!W-)%)76Bw*;!$mKx!i=IN=$zyaj2GDtD9GB5&JUO+4jWrIAU!N?32 zX9BVf8JWPIivqGU+gZTkSwJ=jBmgl;Ka57RlmQqV6WAG8fGP}(j13qUKuiVcU|j$) zX$p`H0!%=2n7}H7EG>X6s4hbT1CXq$`@G)8CR>jJnfabBjv*Sssr`X`hYdKKIk$;B zUC#S%|8|PYscUELr_D2v*jzMSlzsbyG*&&!hNo#y7jm&mu38wOaO9dsLZjg-AKv*2 z%~roEJ0=P@=N#A+ho>YF7efa)TW!~Ji^X2Xz{kO_GDcdgHeDA%at1JuF Sr|!D~a)zg?pUXO@geCxf^n@P( delta 266 zcmV+l0rmd>1DXPm8Gi-<001BJ|6u?C0O3hQK~#8Nos&HZ!axv4bFZKX3WAkj6BYbv zw6e0Xu&@*aJ1gx1dL^&mDOO(Ki<8}rN{Yu0nVGk!)x*q{6A7l7C!)|}53Mgb3R)2S)np%NIW2MkybAPo0LGl~)APNK;m7?c% z;$HctfS7N})5BDOfFjJSG>&I;HymX}Y;(GcK%gg*fMz7bYSLXq1@@f&5o|sx@ZVY3 z%e7Pl_HF%1EIMW&(A(N%4CQJC|BMcrx)j95j{O=f)D!~#k_1gi)0TS!t3F%o-fpw_ Q00000NkvXXt^-0~f?ch6EdT%j diff --git a/src/main/resources/assets/tfmg/textures/block/steel_casing_cable_hub.png b/src/main/resources/assets/tfmg/textures/block/steel_casing_cable_hub.png index 027106c598e3f24a2dfa563df6f5082be4c27182..97bce286ccd2ec9698d8023ce734c11903089ba7 100644 GIT binary patch delta 252 zcmZ3?vXW(jBcszqCqq5oknrVE4kt>&u2n~GN^+mzX(%Eg^XQSB00RR9XMsm#F#`kN zArNL1)$nSVIIoQFQyC+}3uXoe2t8SeF{<8a<;q99ex`l|>gn=yaSYK24(&h4*P_7V z!hK_=UV>oh|Nr6UO4*NOswzB}uUC2~%W0_VA0)!*>1Zs(VA|QjU$k;-Sd`v2z67_; z*%tW@F1fzSozfyNu6_57R5#cncl+KM^@45A$@$aN6~5a1T6RPucEbOqrE_8v7I3VL zbo=-Gudca1yXH^cU@fpTUn93N{-ku^sa8cM17j~WFZ*j*X>1p@jx#7dii$j9$XMX! zGKXj0f~c6av5DW9CT5gx5vXsh-m)Wl$36xd{{xFl(${Xjl5^%=?KXcs{)p0Yjnr~k q^_>p8s>X~<6`))b0JV^di86(3B zpc`Q{NF9>0i7z~hoK~)UwCiW;N1&NOo-U3d8o@`;L~|W5;BdKUc+A}=_xt|aNp?&x z*{bSV8nx%~|1oLsTX3xQF`Gd5ikYjfq&DpO(a{m`IZ=3lcXG-y?`7G%YqF-USvKid eakPKoj`)e4oX_t~DCz{7&fw|l=d#Wzp$Py$&~)Vh delta 369 zcmV-%0gnFr1Ih%D83+ad001BJ|6!3KAQB01NLh0L01m?d01m?e$8V@)k*gmCGW)y( zwvo?LA7B6g009610AK(B0096108n9RZgehAMN}X)E-@}LlRyDUf9cisILg{=dH?_b z`AI}UR5(xVQQJ-eF%X?n#g*c+1Y+VPD)9>phQ#pay!i+G06~qH#E84D6w12Y+Bpjw z<14S6lo`n9%E#hKP z-pbhIdpARRet2}4n{VcL+>Iz|Dhk)^L?OtgR;a4{Ur)KX2NxaG>(F{>Dz35&6G$m3 z_j~7sttMlj!Dgpfl9Kk1WUU3wDxZjsF0DM<8$aT9-$?WeoWO`-SJQqO P00000NkvXXu0mjfzRRGR diff --git a/src/main/resources/assets/tfmg/textures/block/steel_coghweel.png b/src/main/resources/assets/tfmg/textures/block/steel_coghweel.png index 5be935d357c6563da0aa4a41d2f053bc12073191..5f2316f15c0c5f54a9590164db78c55fdeb2f445 100644 GIT binary patch delta 52 zcmcc1a+hVoT&_b5419+eMK!z{CN3}I`&7or@Pe6v0YXpKW{l!+TDkJkuAiwNC-*X5 F008ic6o~); delta 52 zcmcc1a+hVoT&}|m419+fkLRyQnYg@+FM)x9ff0xy^ki+uC=ONkdA*BGwjQ0_%Xk3* Du^tdf diff --git a/src/main/resources/assets/tfmg/textures/block/steel_door_bottom.png b/src/main/resources/assets/tfmg/textures/block/steel_door_bottom.png index 8eec1780f5f1e0a38afdc9d97140b96ae1f0a2b4..8b85c0cb1564e504aba5a7408c22a96ad3a32ba7 100644 GIT binary patch literal 515 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPFFVX~6Ah=sOFd|FO(PnVROlA)@+j-rf>uDXeaQgKC%y`h$& zxovfGn}~$Wnor9o0rhegctjR6Fz_7!VaBX$ot!{Hi4xa{lHmNblJdl&REB`W%)Amk zKi3ciQ$0gH^X_ZkErDvbrABzBd3tIwZ~!^13{s4&42(dQ7Z6KB*&v5&FfxP1nSg9V zMkcV&qJZqob{4RB7LW}B`^y*^UI0A|qtPs707^|@XJ7%UG%zwYU|aw(6=Wmp0*Fad zfNT(80-DPNRvBbz0c1gS85$UXWDl*EO@Eux4svvvr;B5V#O36Kkg~8+BSRq|BR{-! zl?IcMN!kjlQZq)$S;nDr)BKn`b%DZ6o|$WdN~5-V^fZPFuSiP^mSEO);X2Xa(W>aF zDZbijrgY<#DcROjo3DKNQBo~qDR}I_rHdCIUA*}4*n!vI`8ejqBqw+?H`g%auhV9( ST~$5<0fhd81f~O!7zqdl0000V^Z#LyAs~MVa7bBm000ib000ib0l1NC?EnA)J4r-A zR5(v#baZn6?;YgLu%Ne#L0Eu~;qRZn49qOd3~xVtVn`@1V>o@{EW_2Kd$G!GUAL8i zi2(_KBtCrk3Z~HkE;+aX-@g3-V{|qM;FCjfftZK@Ltb+um_`S<ED002ovPDHLkV1lVNp>zNM diff --git a/src/main/resources/assets/tfmg/textures/block/steel_door_side.png b/src/main/resources/assets/tfmg/textures/block/steel_door_side.png index df9d77628349bc41a2dd99c2827d6c66839437fd..d6ddcf17f6c686e8efd2470e56d6b14f264d9598 100644 GIT binary patch literal 418 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBufG}g$wN6f;phSslL`iUdT1k0gQ7S_~VrE{6o}X)of~lUN zo_Y7R@0LI{+fpMu(>y)37&w3&Rt70XRt82O%L|C5p=^+AG#Ht|;!HrcAtMvmbx}Ze zW;+X5JPXJMf&FES3@?}wG@7LhK&c7r3@kvE21dpPj0+&9f^1}605NF_kPQM%Ky#VE zDuXO7fGnskLjwbl?4k9t>2FioL5>deba4!^@K2sHDfrjeor z);J=d#Wzp$Pyi8DjSU delta 133 zcmV;00DAwT1IGc7Nq)fq01m+cxRGn^00017NklTcC`+-qjMIJ0DEhP!2(ZSPa&%yM=I}aHIg$4efIdYPb nVi!;hM#Eq<3_xHs3>X*y2-bSFsnRyf00000NkvXXu0mjfDo8Z5 diff --git a/src/main/resources/assets/tfmg/textures/block/steel_door_top.png b/src/main/resources/assets/tfmg/textures/block/steel_door_top.png index cc4ddc6adfbc06901d3612461876b38d815b57ee..d062c5a8b0e09bd2abd269aea1fe6e0cc8142092 100644 GIT binary patch literal 502 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJV{wqX6T`Z5GB1G~mUKs7M+SzC z{oH>NS%G}50G|+7DLExobuB}4+xWDct_hQqXD;nNc(%Brrn#qU#f6&}UcFQj7tv9a z0V+T3xGe!l@s$Mm1^-6|46X<6oB+yj7I;J!0~H(qVaBX$ot!{Hi4xa{lHmNblJdl& zREB`W%)AmkKi3ciQ$0gH^X_ZkErDvbrABzBd3tIwZ~!^13{s4&42(dQ7Z6KB*&yF( zFfxP1nSg9VMkcUtqk!zpb{4RB7LW}B`^y*^UH}6DMx$BE0F;`*&cFgxX<%e*z__0NEhG1T>cktTM>b0?2~uGBhv%$sSrSoBlSX9pvaxPZ!4!jo_`PBl#K( zI9vmxG*T!0&A-lY^$6>aIz3BHhR4qPOge@v&m vrKj*kG}|WpO*+WB=9Kq_pa*q3xx+Z}6x7%jJY9Id9b}oOtDnm{r-UW|%&mdO delta 416 zcmV;R0bl<11Iq)D83+ad001BJ|6!3KAb$yPNLh0L01m+b01m+cxRGn^0004CNklr_Y`CucD8X9m~UPT@x z3Nb5Wpn| z(#ry70l~rqe+FRzK8C-4{(_P(!`ly^7&ME^aLTEf+5u%47y#>*u9=BL=?(D!0000< KMNUMnLSTY~WWCM+ diff --git a/src/main/resources/assets/tfmg/textures/block/steel_encased_cogwheel_side.png b/src/main/resources/assets/tfmg/textures/block/steel_encased_cogwheel_side.png index 02c4aa1da5665419676842fc19096d81c664e65f..3c5cf103f4a17c19126f069853cf1af71f1e6d28 100644 GIT binary patch literal 530 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJV{wqX6T`Z5GB1G~mUKs7M+SzC z{oH>NS%G|m0G|+7DLExobuB}4+xWDct_hQs#6@%zWeip2n|rz}v{h_$)$I+ns+-$P zG?YXnWPqAx_370CDS?t8zu^C61tRzs5v%n*=n1O-sAP6(=n3(+*C@4|l8c`CQ zpH@AC&ooa@Ed~xChm}E!k(GfF$npYW zX($`yOASV5us9QtZOF(3_H`7Ho!QO;7S95*LEvT?Bf|?|V8CcJOBsMt6WAG8fGQ1) zj13qUKuiVM$hrVx(i9*Y1ek#4GJ#bFSy}*DP+f)w1|Zq&UDu>1{gwcQcc!O{V~9rZ z+52#?Y11JCC`aQC1Rp zW>Lj3;ThACx^_GLkg6U3DlFH`7n8eqEA&>-J3ij?K9hZ3^M$!CEw5hcZ)f(`vZ~*-pbS5ZpLH3Qb8Z*4k}= z|KGqdE<4-nE6C&so9wj@44{gqU);=N41g=`&{nb0Rkt_Ps%~yG z(NGeRkeNPb9#G#)Wyd8zO0XozFZe$iU{GBO>_%)r36AA}h#Sc6r7f)XXJ z5hcO-X(i=}MX3w{iJ5sNdVa1U3Z{C7dgk5NzFPv-Y)g&sO!M^AV&DLBSQ(@kSs56C zEH5CIhO$9E)nH@>i!%Y)hKx)M0zf(nh%?(+z~WgzHVE{VF*3XW1_+Esvy=fSHG!Rh z1*p=%$k>2!0mM|0jjRhGCQSjdL4XNpE)!T~kfjBX1=VF}U;vVJoxAm$_>0svK;}13 z7sn6_|GkqA<{eSsacNK8m@J+D`+t127xpi0&aVWqwzd3K_ijs6d{=xnFY2qpA`b1)2jLOlneIIP$Efp1 Vak`utdnzb2JYD@<);T3K0RW_X*XsZP delta 726 zcmV;{0xA8Y1^)$*83+ad0047(di0SYAb$yPNLh0L01m$Z01m$aI0aKA0007%NklMKB6{`W zRYA0(6-r~$m~FR7HtT#|cETFkBs)ZM=@%Y5JF}nJncer^Jm>1lwXV`~J(r8}eScrg z1c5_4I98Ir@J~~&yJ46_Q6%kdELdN*ye#1C#U%me7b;14e$F|4>ZA+~>gUEU)u?SJ zwQ60S|NiA`^5F49X^*4*cxQEWt$XJDIp^cMH}cTztgng%PulHHEZ3c#-l~xqU%IlU zetcU`w$?xWvw*z3d^dK^_4r~%Rewr>DyOzkDT@Kkm4p8HAcOIY4e#>L`0U*5wc0Aw z|ESRnRk$1J`<9CJF3b)XkJ@e784N7yr2o@~cX1f=&l$kB8=?ALYpBhwy4u*R${2lE zwAYdeVPKoOO&_x1)xGnSgd zVn00xks?qmoJGQbh^Em&&#`{M=})3hLJJC3D2hAgcX93)T+Y@gSFvZax>|X zWI^(fm3n#?sTFjNCv0dF@9dNbVPO4YQ3W$S)`k}!FuA!}Z^%mHI2I#jiE|c5T$|X= zGIhO6I81h&^04FZ(?5(Raeo{SW6>~vB4KDIV{%?X+q`s?a{Yq;A?td;hyy08yu2)6 zdF8Tt`}&o0P$I&^fsP(2$~ZEK#|UpP>B;l*R`tN(%k$O)S>CE1U?PlN+tdSD-nt%` zl%{?f9xlMSb^C5|^Ue+R^63*Po5wlN5#Ei*(~pd2=jE;I0W+CxJwsr4t9rmpf^6!6 zEZo7AVKk~97*z`(`&vS&zXMc$4Or?%NdN!<07*qo IM6N<$f{!X~;Q#;t diff --git a/src/main/resources/assets/tfmg/textures/block/steel_encased_cogwheel_side_horizontal.png b/src/main/resources/assets/tfmg/textures/block/steel_encased_cogwheel_side_horizontal.png index 02c4aa1da5665419676842fc19096d81c664e65f..3c5cf103f4a17c19126f069853cf1af71f1e6d28 100644 GIT binary patch literal 530 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJV{wqX6T`Z5GB1G~mUKs7M+SzC z{oH>NS%G|m0G|+7DLExobuB}4+xWDct_hQs#6@%zWeip2n|rz}v{h_$)$I+ns+-$P zG?YXnWPqAx_370CDS?t8zu^C61tRzs5v%n*=n1O-sAP6(=n3(+*C@4|l8c`CQ zpH@AC&ooa@Ed~xChm}E!k(GfF$npYW zX($`yOASV5us9QtZOF(3_H`7Ho!QO;7S95*LEvT?Bf|?|V8CcJOBsMt6WAG8fGQ1) zj13qUKuiVM$hrVx(i9*Y1ek#4GJ#bFSy}*DP+f)w1|Zq&UDu>1{gwcQcc!O{V~9rZ z+52#?Y11JCC`aQC1Rp zW>Lj3;ThACx^_GLkg6U3DlFH`7n8eqEA&>-J3ij?K9hZ3^M$!CEw5hcZ)f(`vZ~*-pbS5ZpLH3Qb8Z*4k}= z|KGqdE<4-nE6C&so9wj@44{gqU);=N41gnAmtPE0&tPG4m zmKP99L)jpoYA`Z`#hHL?Lq;YB0U#X(#F_0ZVDT&<8w8e>F*3XW1_+Esvy=fSHG!Rh z1*p=%$k>2!0mM|0jjRhGCQSjdL4XNpE)!T~kfjBX1=VF}U;vWM={v=5|4M=n$o%W+ z;uvD#zjxBXqQeS2F4xr@yBv!C|IaoSI_8$Ud~d3L#Y|TITkJXY+_&T8rl0DIn7{DH zk+3Y)v_-G79eYcw(sI^ot^IzlbLmE>mc08eHV4kAtu>O?Jo4wx%T$&}yLRl-I$>&S zoLF6}8?@%!*NF!n*Qjm37x~bCcTN5q##tS&t;ucLK6T}4diwJ delta 843 zcmV-R1GN0A1@i`w83+ad0047(di0SYAb$yPNLh0L01m(a01m(bYSxJf0009BNkl2P#g1{W|EoAc)ydJkc3iZCWX4_2Z#I0cka1!?|DR>JA2V14I^ftp?_pD zNfV~2&^HfE@tjqwbK9^i-?nY;du^um5S7mcEF8}^~OJHuy( zvS!O6OW#qoZjsfn^|(cCeF`}N)@{e(lYs*+;CAmbDBtxuUj{JnVC2rB7*eTP^tV){ zjm~1L+l%% zu3f+BU%hdKUO#`vZW1?Q6zlU-0IwRZBl8&Ff4oBP-n=JkeU0bjWe4E{@D6y4f$)e3 z2lTs<2;2!T8}s5;05}|4wOc{tWe4SpF$Q8Y!YhIWf(Kg~)2HZ4T*r909s2NhoD>Sd z0XLaQkU7!e2IY$pKrEYGcz-%Jo>av`o*H(O+MY+g@3XWVmnD&iQ?+LCx}}w2Y-Z+E zwOpZE`H#Xp#C2V5oZI8N?KZcL7WobQ*4AGNeb4j%gJiTD>3Ae=w;c(h5F214^kri) z1cpiO5Q6~~CJb+P1!#j_;dW5R=4J;B=+D=9?SN!6K-Q%mz+9AiLVsXH$>)I713=h% zVxS%XF>F4^$)p~DgsmqA>VYWv915i#fP}3lUh6ZbDIU!W%sA4Sr& zD{eRn_6<;%PoHEL3X{(Qv2^bd~X Vd}_H?TwnkI002ovPDHLkV1j68jVJ&B diff --git a/src/main/resources/assets/tfmg/textures/block/steel_encased_cogwheel_side_large.png b/src/main/resources/assets/tfmg/textures/block/steel_encased_cogwheel_side_large.png index 52e4b760f1e7ee107e8e2dd90b8b3446becdd78f..1b54ed056cb1dba508e34e35cb135097e4fc249d 100644 GIT binary patch literal 499 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJV{wqX6T`Z5GB1G~mUKs7M+SzC z{oH>NS%G}T0G|+7Rdubd36rPKnWrQ!qN6Bds48!vtzx6AZf~e%qM-y-^(tqH43Oe3 z3Gxg64+jih{*0f1!kh&jk;M!QeEUI|(SkKt1t=&{;u=vBoS#-wo>-L15RjOeSEA?V z8lqsTXQ*f1eeJs?P|dc~2+uT6Pb~%xAcvJfijkFp5y$NFU3g2}e`~E=w@bYgu xYkDVaIANP6@Y*}c>rG?zfwSAILif(M{>gZwk+q!hQOgIAt)8xaF6*2UngGa7ffWD% delta 336 zcmV-W0k8h^1N;Jz83+ad001BJ|6!3KAb$yPNLh0L01m$Z01m$aI0aKA0003INklwsEX*@aI{5&6uGXS7x+p{rwB6CTB;J1Kv#T3&oa4H3 zK5@szDm^DTY$~?@(_~_fo`I*`YR~E0!lTeMfiDF|~M@ ziGdJ?E2_07zpHz55Dmd_W{QIB*geoyY2}C~R*EO*9YI^cV_py`yhrrrARW=P$ETy5 i;_u6Zbv}2MiHHvL%ZLikZdGak0000rK(-+x6W9k)Kz3$33s^i0$OeJ^WsD3jfF6U< zXqGYnr6#a5umDvW7#SNdE`XQ{vXONG#H1-eHV7~Q&1C|s46?KUvY@&Q4GciCht|uc zzfEZeIXb}8#W6(Ua&kgQ87F6{p-@7CaFCHvSddS;Mmj@t5!;TCnF=0W2C^pvjEtHL zrcCJ(S*Ua@!A+?{kxi6wwP#3Emx`9Aq;_Ybv1C>zQw$fwB_{DNC0>kQLH2mM`njxg HN@xNA{wH2< delta 422 zcmV;X0a^aV1JDDI7zqdl0000V^Z#LyAs~MVa7bBm000ib000ib0l1NC?EnA)Wl2Oq zR5(wqlfh2HKoEv^n>K<_1S{yppd7pyLLyNU<3%q%iYI+Gk35AJqv>7M4QOG_pyOkR6XEV&;GO zVrUO3{woNjyu7+jkpy&I7uH5Y)J&7sMW&u7CU1_2Ez+eZ4`JV?kbk+fd~efil3cATRI}7#iR!V+AUC0rUmb7I+5S0xRHHK-ak4*`bN< z?sb;Bg~tb*+IY5~{^5^=w?JOTTBE+yTljF?#m-^|kgUr74K@Cc&pDLeYWEVx<(vYO Q2mk;807*qoM6N<$f@sCUy#N3J diff --git a/src/main/resources/assets/tfmg/textures/block/steel_fluid_tank_connected.png b/src/main/resources/assets/tfmg/textures/block/steel_fluid_tank_connected.png index 45ffb5389039d6cac1cba848ae8d07c8a4ec8291..9f6cb61e0d34bb448b871dd89d39120ba8b24172 100644 GIT binary patch literal 838 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0J3?w7mbKU|e#^NA%Cx&(BWL^R}Ea{HEjtmSN z`?>!lvI6;X0X`wFs_I%UUID%#;qhrX#T7MO6DAv)+g3NXNy#ZqpEJ*)&Bq+5lC!`g zvY3H^?*IrhW?k##1PV%&xJHx&=ckpFCl;kL1SDqWmFW4ohA5co8S0sLU;AzeRI@EL z!ZXd&Q;UHE$YEuWVq|4t1hTwpt($7l|hykKo(S& zp@9KN_RxCS^tUPPKu0s4_H=O!@i@LTbYot#fq<&_R6~OZ*@r)xt^YIjePT|0A(sEM z!7KLi(j>Q67xurE%sI|>*`bP?$@Z?T{r>8d-BEL+TiauGuYSD2R%*AJjsK=MqenpO z56`VrRPNjRd7W}IJ97WC_q9~#(r=b)^=9|{D17Q(^EAz+?&_i#~FfOnb`NW zXvs4kv0{=PX&gMqbS9v~|{(l$tYI{5+GzO)84aoTM*zweX4bG}vtTtGQv0hh&@h={&J- zN(Md}Q*LEQtTS!<$hi4_x#M5s#8m~Gg{HR(womoEy{}hf-}1z|zgm-y-;sFcd&lvZ z@+7aY+yBMiiOk-#>%fU`c3mgEa=#tAIq%W@Sznjj?p}KLi{Xq@8q>EZv$F*>En&OO zDAp7*`>Q-dr-qpSkAvJZf9z!bP{w{#J}l;%{?qWAck*6sJqn6qPgg&ebxsLQ0Nk+~ A0ssI2 delta 1614 zcmV-U2C@0Z2JZ}z7zqdl00020X>s0>As~MVa7bBm000ib000ib0l1NC?EnA<1W80e zRCr$Pn?Y|JMG%F1EnCFI4t9(KiWG%df(wd}hyV$3Ai4N|Z~+eR+c<_3oVXykATC65 zh$2N0v$4rKILMZly!O1wqg>tFJ-be9c|U2=GvnE=>grcDGrgPM&0FikSLV+R!!v)b zu3hb&Ut9>QmsW5XW@ct$dvI_N+s%jl@MN$P?rq$Q*Z;fwv={%-z23SBlOdve)m5A>gyq$nw^~uE3Yqy3yX{K*z$NV2>rjd!v6k#JchBoy}h_U zH#ZksW$o>2&E6rYekTq5R5tG1ZT5ejL%(CFF%XU1D7@>@A-9u?=VR}^>ofqyXhy^Vw7ic>cCU@aFoby&r%0DO^}OG=xE*Hf%rIiu-^3@Z;@4 z_~7Fk;k$3YA2RCvJkG_73=4~k?d-6Bg|-x?80|8s9y&1iM|K7S*B|-{|9c;O_{s3f z+FPOja5G$cXYGhH3;=<#yT5IOl}oGP{>Ja|-16#5>M%b)Bx*uRKUCMUylcz{WsoR{a@Z=AMKxiY{r>kbbtN% zm)LS}P>_etp3Xk(kW`MRYJlcB{33dH($r9(V1OXCH2`@ExiSdEO999V`K2{L^IS>g zJjkU&mlW^@?4(qz)c-aBx4*d^Ta7d&N(YxNF2|PFD&D!2DspIA)S!NApgq*rHUM4) zCswN7wO&zU^evpNT2v`kH8p*zul`#{gBBM6xz>kxZqiYR#k)`x$TF67D}5HAHND@X~H zt_QH6mz@Ftx5joo00$^+yx4n3M~56d-~F3EMR<-I&Y|Uc0O)T%iY@xrjkZb(pazfo z94uPcpdHvotA1hABHrEw_>RoZ03D*Cn)Lt}YIY;3nK&+T_Oj~%B~tUMy)9~~l+XZ= zOG&lH;`w;ye=hG^IzvqVzX1NhK{34W`J=q+Ns^g$6|XWe^lqXy@++ zFP`l3efzv=)`$xr~as~*#{xc2o2XPi`$w&r#yv~lB*dt3Q*br zFfY_W&Ik=t0h&VqonxU9EjOOOeC2Zdj~HNO^t1F}?Uj>5YhgXVTp@q9ev>j5GB2b841G0A0k+5i9m M07*qoM6N<$f}y<*Pyhe` diff --git a/src/main/resources/assets/tfmg/textures/block/steel_fluid_tank_inner.png b/src/main/resources/assets/tfmg/textures/block/steel_fluid_tank_inner.png index 036815857e23210f0455f0e2ed73479d1856dce8..a23284bea076a816b36ed7be7b44a199501be95f 100644 GIT binary patch literal 476 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPFcCaYc=9NO*i&&bh zS|=w^P@=>&q9iy!t)x7$D3u`~F*C13&(AeP!Bo#s&%FEEcT1p}ZK)BSX`Y^13>-iX zD}xjxD+42t}%WB5_&utRY{6f`H4#jT_imvKNUfykhiFxEA1$t62SCdB=kg{r!?YpX9F` zyY0_!I_brVkBgpcoMC>)*Fs0ToriyIwMUK>o*p84d5&p3nK0QOSi>GT;6ejb z;0|X*ydT^Vj#JfI@oo-NV;s`nYwdHk(5mxZ&u#BCI68npfH(;9>!MK?SC_6{t8t3` z>po||j6Z-3+TAvZ=I5GI;PUj3Hhe1fwtGBP@w&ebV!NsEk(&IqJPfFie| zkKh^K6OGXwhywrs002ovPDHLkV1i1;vk44ofy`glX(f`u%tWsIx;Y9 z?C1WI$O`031o(uw8k*a>cm-59w{=aJTwGBTpO)hr5)PEy$@s?wNO6<|`33)n0ETslu#P*9@8HKHUqKdq!Zu_%=xATcwqM9$cc0dZzK z3s^i0$OeJ^WsD3jfS!fXXqGYnr6#a5umDvW7#SNdE`XQ{vXONG#H1-eHV7~Q&1C|s z46?KUvY@&Q4GciCht|uczfEZeI-0S_)5S3)!hP=az@laY9@f-E>+kyuk8=trWp+>4 z_bcsQUJqy9gz1u*=iSyUcv;q0_wU*{<+u$`uPX>~MZHfxb2Dmoao@$=NotH=W7!zL z#lmPl)>|9i7irwM#(V4cx4IiLTvLAQwKw(ER@-Vc>^r;n`0O1lf%l(nwG(owoxQtH zuzq4y_b;>kl_Ed(ot59$c;I{Py-JZA`_8iaGhN^Q^Fbzm&i!YT)g5QKJHGlA&IY2V zEpLA*e=kKurBWoNQb^!`_22&U%?&{D4=a#cb>FfVx5RTzuH4Y_sCEB&bVq}HY6hC)Odg$hhH3@vQVL?)v5=lYtQV6R5qEAKCr~K3>qYpi>PyH7a1ZI&H z6h&w+3`*KkD=M+f^-&7m`d#N-XRr6V<<5P%{$RMXcV>6b`OTR#bIy!L8Dh`gMt@yY zY3cH1W?e>Qywd!iylB3t5yeVNL@gDONJP|9F*P+MYN;6bHYjRDqsb9bBkE1`+RF2L z{Ff<@5(3t&i&JiHu6Q%8Br7K?voabLHFq(bOp4kJX&^}^XL53q-oH(#Az)q2dV1Ua zM!cB~v@^W4fOImUJ!1lz4jq|-iGSnAU2-wn4Pp@Bet07>+<{ItU<4%(R{0RWRz$Wix?rwpn1*Qb%JHWDmfP;q*(*4^H z)DW=iz)r3GMtceYK{0;@rhy#+_TFZmV5NCQu+BX{z%sB*EF(KwB?MT#Hh-HvnD!ei zgS`64$Pv$ZV_#F_*`ksnisa$o zx53+Dc^}{j0lpztfaPIO2y|AEwhJOB} z&d1M83*cR#*E>KfI0}Rnum#jNY$2A}H3EX{17reRTLuCAsozK^gMX_81ZgMe1Xl=P z?_W|HGoF5eWnh`CaMc3BfQ+5s`PNH1a(&3dJ$=+^IKdtJchb=JAEHMvP*_|<5AQrM zoZ!~&^+tXYGH1O7xJCe$!5|eUELwngD#u7NsRyYDv1Vb>35xc4gAXgLhZc78(9a@6 zmf4k9Am|AZ&ticvV1F?h6z#4c>!ZQX{hu9|AFq&3hK#2`x}2b2`9OyCY!Fkxlbj&% zKY2VE^UVp`^#SC5o)BPX0qJsscBi>A{^z#1Y#m+`6asf`kmakkrp2#F_;q1aNc(M+3m~;z)XR`D)vvYA*}R0GR-mk!5zp0(jX8 z(oWDRI#uEW{^gdKU$E{2AR7)#lwOky<2^xT7bUa)s%+3NO9Mf6Ag8r)<=x4XGk;(KxN6SdIdk%Ks0lC~7@S`^ zK9J?%Fwq|sJvGe@K6jV^0000< KMNUMnLSTZ?C2QOO diff --git a/src/main/resources/assets/tfmg/textures/block/steel_fluid_tank_top.png b/src/main/resources/assets/tfmg/textures/block/steel_fluid_tank_top.png index d1fb3a3b4ac6835eac51f5572bcd733b149f4b93..2831e4e9968ca22029cc15e7f1d66fb4a465471d 100644 GIT binary patch literal 488 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPFcCaYc=xxvh&=fVr7Xd|J-*IrA2;Sfx7I-WI5s zv%n*=n1O-s00=W?UF+lo3QCl?MwA5SrX~<6`)&zT zvn@5kGtJXei-7~kVP%kFWMyCkvb=y;8p;N_RD+QjEY1XE8!|G1y%GgvXSTC|#j}8H z5ZGVF$nXN_Ll})_DFaYy0y_f>P^E#9u>s=(h^ZhOSr{&803>^8y=?m1ly;D#vpiiKLnJOICy2B#uqmo41eld22yl5bH-#uD?~&n%k(Fq< zY#e2CD~7kBNA0Yq)G|IErI)(r)Z~`2Ika6qGgGVJSP1iqDmdKI;Vst0MLeSq5uE@ delta 414 zcmV;P0b%~=1IPoA7zqdl0000V^Z#LyAs~MVa7bBm000ib000ib0l1NC?EnA)T}ebi zR5(wiQ_D)jP!OFP8dU5RA5^6v1s4i-;Wy}_6@>aPF8f(7`vq=9TvSj{%uWrhX>W^_ zKw{3AX~)oA4uqMTnKNhRKFry9J6%~@O({d;uwmA1m1?^?Sd!;?Y?CBm8-5OG>Lz~_ zyat^A^F1@>;_@odM36SDWkL~S=eU?I#1bG!!!LS!3FzZJq-ZqaWc}eEV#q-*I6wvJ zP)5b){u5!GsY^uLIZ8f8;IkWHn+Fv@u8oVeoQ5w^UVALmR>O3`fj~N000UA07*qo IM6N<$g4LP6ssI20 diff --git a/src/main/resources/assets/tfmg/textures/block/steel_fluid_tank_top_connected.png b/src/main/resources/assets/tfmg/textures/block/steel_fluid_tank_top_connected.png index 6171082a6bb76df1b23e0bc8e59e0aa895b58b52..386e93b881b95fc371e0263ce8a3b15a214da26a 100644 GIT binary patch literal 905 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I3?%1nZ+ru!7>k44ofy`glX(f`u%tWsIx;Y9 z?C1WI$O`1E1o(uw8k*a>cm-59w{=aJTwGCOZe|momNR|MJl~LTRdub!D^>v&I!w5D z3`p^m1o;L3M*s$)`{&L9#W@Q+B8wRq`1XS^qXlcQ3Q$m@#5JNMI6tkVJh3R1As{g` zuSCz!HAKNw&rr|2``UL)pqg!|5uRzDo>~kXKn^Q|6eBAGBar0<#L`eU$X6PS%wTaQ zAls0Ui9rBJM*(qWI}2Dm3&;k6Wo3*EFMyth(P)-30Hr3dGq3QV0J5OE3=IrGvN?UH`0Zaw@BxGOgQtsQNQC>|>9@;{C~&y$ z4fXl`|Nm{)uH-X`b7oxqWYp-nts_S0yK(2|??=uu$R|w?Sns^)Xe{H$V);4E4FA7w zj9{1_Icsv!TVa!^1|QW{1;GdNT~yUGOcaJ_9ALil#ghEsndaE{!5o73>r>pJ_s>#T+FF){N;($2N@E! zFetp_km7at9PHBM=W_o-2E(&ShDSdwsML&i&>#m^Yn1)5)?f(mXsNi02 z;p-^!*H1wE!PCZ9-25v%)_t+NU?cHm)r^KBk8N4<7eee_zBejdGkxU@x4U|3Yin0l z>i)aNp z18*6t+8?nQ-rpc}Jb&3dVV9_o8_Z9vES6Y2lMZ{N^8NLTQ;DaU*ZsHJcR88iEmH~i zlSgU`SPP{O9FKTiEquUw#n-*86583^3+DQzFdJAsSob$kb${KW^dz}!g`gzJ;OXk; Jvd$@?2>|TeL!1Br delta 1728 zcmV;x20!_U2jLBn83+ad0063Kao&+3Ab$yPNLh0L01m+b01m+cxRGn^000JdNklX2>;$ZWzcqBneP9Q)ek&xhLaDoHJT*xV$KnPC!43Ll@ zNFX@nl7xqhlteamB1~fANBjg?@@BvBeCyh#dw0e?V|yJwsWd&))ivGK)m>FR6Mu*& zUVHs~Au38kQ)8*DF*rO}dQWp}OH>l+?&*q3<;dl7QK=kTTU$}79CNetQAuQNWi={^ zOixZ*`}6O{Kc)VpqJZP0!%|;gA3fO~BnPJl)7IJ=m9oY1%1Tt)Q5uw_m9x3IDSzCW zOh*BuV^7Pi@te_;{{r>IURpr4K7XO!TLBl|dS?qJ4q>najpe1Cnb=RXb(C8kW*!Q_ z5=mVF6fR_N+7ijV>b0=uVFk!4u zV7Ib>O7ft9b8nxMAHVx49R`7stGgAQlubvGZm4C6*CSSEE&*ZBl3($Nv1!U$10lZXiNLgkqBlth-v zXG3NRKxa841n%)1rph&GX20+I$pvo(@MDGRqlF7PdfRL0K4)S9OjHgM zTz%TNJpkb=I%TU*LXg3*+E!0;Arl24^)!#BG(~Jx`Qi{{5Vm@f=F`Z`0+5LzMb()Z z@6nmg?ygV~Hh;c2#5RxtS&*rp+xTqAOaTD$^r#p@-|J1#&Io=*`R}%k|DZJre|yoa1T4;Q>rOS5l<;_Cx_T3)s!qVVE!0Fv>|} z0j{sZsVm^!_uenObm|59`TDOiKeymK6RZ~aBsuGg6Msb6_Rgf7AdasLvF3)64= z$O3Hgura3kn_MmaCz#rgl8^kavIqTVX@H6|KdZwMQc*xuEQOyY4)pKx7yvttj@o9= z)F1^z&=22#>#fB7M8Hjq1IM6UrV7)7GPEMT`G5M$OkC++A?!Q`zqGI@Qxns2|K42q z=L80;3C~am9`I^Yu4M#BXNOJl3kL`jPu$Y8_!NfD;{r zw>))WPN0DSGY3E_*>R*Zj1>+=E`UK{KrIMwVcPhU8i9@`JVPCLzNS%G~10G|+77q5WsgJ&q8qHD$pwt9*1{R=710!Pt#sv^lK{m23fS5D|$OZu>pt($7l|hykKo(S&p@9KN zHhb4K=}EsOKwj7Lba4#P2u@B&U}0u+6EjFiN?_SMW2PXJ09zZw8Et#m)8q?#(-lk}^^ZAn^RjGX`aKmH*$qeq#jjjZ^a&O6`roY#6xk>gE5A zqA~`S5AQzw2WnuPxM~Sl;>NQN3>s1b4EbR(jGSCt{{@5uP&A?g7LWqx@;U|sF@JGv zHsI9^0!&bvY`_Ha|A)7)pj-q1c?Bc~!cZX$0FtBJ1t3B|SPaZT2B3f>22kz-SX^TR zAUQ(vqp?7RKx6^4E*)X$K6n=FS5SC>T(o=T3a}I*0QSQ5D>wdw3;|(*r?^k0Mk0000NS%G|^0G|+77q5T|uU@XWaI^d1+3I!Mfx-vdrtktOwvr&f;Qt`NuzCNI{Xh}U z0*}aI1_r)^Ak4U9V)k30phSslL`iUdT1k0gQ7S_~VrE{6o}X)of~lUNo_Y7R@0LI{ z+fpMu(>y)37&w3&Rt70XRt82O%L|C5p=^-rH5i$};!HrcAtMvmH&H-#W;+X5JPXJM zftzKF3@?D5gwbf0G61C}ursg#RT>x>8!#?_m$Nv;eZ8 zx(p2rK(g7pu1Qb&EddHg4Nn)x5RKsEgoKool%%ATgjOcDG>)?#(Tr?qX=!3&X)Rj~ cjxlgEFvN4Qto->-eIiJ|r>mdKI;Vst04t|mRsaA1 delta 148 zcmZ3Fr%o3R|8No%+tj&#KJ$hqoebG z{llx?7IB3S)g+p4C|I&NE%^N)a!!{+o5M^CM&T)H(mhfK4jka<(t3QwMq_&8!^5}3 y6QUdof@f diff --git a/src/main/resources/assets/tfmg/textures/block/steel_fluid_valve.png b/src/main/resources/assets/tfmg/textures/block/steel_fluid_valve.png index 015f4e97e934010cc38f50f6a64b7b346000be8c..5f9c6ccaa4ae7e033d1b3344ae3da6de218ff1b1 100644 GIT binary patch literal 668 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE3?yBabR7dyjKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij)0(?STeM7?I({ju#tRv&%UAzLi51w6d;ijs(mZ7Ra8`#l#~V-iXD}xjxD+42t>myuy_`b z4FU;34AKvy(JW;EhT{Zw1{RSYP${AFAv=j(0DQ#-rm^tsvh zgf+z1FkZ3GI>7URIU>ExdS8B|!z=E-3sxpy?im|bzc=K*^gVS}anjrw0{o9ndYLD` zIaGZ=_Kl*N!5MFk(>4x*Uj(kmWpzCka^g7MQKjS)EqCb4{(!X^c0qG)f1YeS@s4eA zSjgsA*_#BCuSg`%O|6?w(vN$+FYcGHaJjxm0|2 z)@sc|)0UU0y->`M{jX*cZX$ovW^*LSlv#(kKh1VO7igjJc}aOi{RahP?h3o zy|tog*K~JDNXvH9>~?aAhi!(WyU}ck^kBcsym@&a@0*#tH-7{C??`yYt=o58iO7*i zy3xej*RK*6E>5{$mp>;C$_IdBo>L++*4NfCb$>dPSj=az_;ePfi4yZYc=Xs^n4e2X zM8=m-OU%#le1Pjv%Ir&*uP~blD4sfr6W4A60H&{=PhbERtE+Bh<_YRcAK>SCV}VO&A&P`?0s=gQB?o{?c`{KobhjR|%9Oyv`DKCQIDD&C zp&JGOKq3T+qQL1`ND0LNXT&pdf)JLs5B^xs&Itk}B4b<>p{goN4gk7gKvh+Yiy|Z< z2lyk189dJilKVyQ`*!S~2pATz3!s!jBBakR5d!L~gnvE(ZQG8V#2@R~ZQF)!G_h%# zP!uH~!uts~O%uA&4DbV0P|Rm~rB&U{unbKT zTsn)c9po?pT5SVMA7@dSd4j5;yMqL*G+KR)NULqIu~FB0&QT6lhr;Ukl8th3C`F^L zF-|~$ZhtgUnkZrU%}Xo~%D#uvLn&p&kZowcG&vhBb7@E%?~ zd(OV8>S}10JiX)dm2xw%gE+Cb~Ao`*(}690#j{ zl)&TX_aD$|8bqmwUpxY*)wtE4hoQn41cYrp}S*2+p$6ksZ178Up_+#7|Z7% ziUit@g{`eE?C$Oc0+Y!k3WWkhk+36*0|PIk{mH|8u?p~hxF{GVHnM=j0u$hsS`-Wu z8(DxK$z(E;FAlIOXl=J)n!UGNp->1Vn5Kc&c6>V!xQ-o4k;-KM+KA%3PMLtN-Rp2s eTN&{Y;=*qtfIDFusxwLe0000PJpp1f2WmsfG z8L^0BkrWUk8!WQ~Bnbq{N`(Gs&*?dR=iT>x_r5#cx$m8qX=`nMicgXc0Dw~%3$#6m zGRFev1=pz9*liFXQTFC0z_X#RRzZc^-`L6+02=d7a=dsz{Y1EhYZL$=dXEJns)S7f zjpEU!F3}D+zi7Nyq%UCW6&Mz+VQuOtqoZ*_Loa)5S0D6g^L4@aVK6EH98`D!NeB-B z0T~t)sek$LX_O#bpY2ePUw}XXK@e|%5}3~Y*&YP)70aYderFPREJemtOHUg&2}dwnFx{*AhzrFFb(Qd6_gx$nCP#`R#(#*QxL zbwzZXh_l%1#5+E)Vfjt1ojGJ9v05WSj~o7Ywdt4Z(aJaKuuV90R*Ud7E}kj*<^PZ9dQfgLeT8{oT^I@;K&| z-^bsjo;)+-sA5_pSp>SLcnk4MV__%puqG6L75&PKo^m%claHe+E&QznzT}PGF zXCG;uxwW-uS)tRW=SWx~Qrw-r`DjTiYUTj>)#7Fk4yB`;eIA@9R4NrGjSL6IVa^9g15(U?p{kRZ}C`@B`@2_thzL_(YBfU_VDscBt=O8^E46{n73b`(X#6OJ*C-H+Wr! z>ob;n9A%@T4!frxZ2z2rmJN+uPgAFOQi6oTLttL0f-GN#tJC!@sRFETNR?QBlc)(i zq-tyx@iss^98IRq@=n)yp>*Wrx{@!s9`T(wPeWsgTeK|b%7G@zLmA2j?F|KJs$m%T&y=r-(leH_b z`$wW5wBx0NhEYo;4LL~nc;49Hf9N1&p+ICQ(8iKM7vsDUA?Ue z=`3cUz5de&ch?S6-M9=A>D$nOj^-T#>b9-Y(m>N)H3~mJe?_fIaB#3Ow5PuxUg&FA zcU{OtCdJd=-yDi$Pf5>k2CM+H=0&%Tcua9w30}tv=2>YAPmn4UtLNc{itZ7)9G^O= zQCMBjJt9@eW~)6>8#NU0Ln-)Ni?g%_FG{6C)4aGF>ztx(Bn(uaxjmOBY#e$#RxQ%R zY~H-`YiWzD%p6Wx@GE0QM<-v;9%4W+hvT*?jSyuvu= ztiJmD-0of`G1SIQI&$>>(58su?3qY&3whxeMtLvI9vbzvfJMi}>R}0i0ZaOLZe0|5SpIw0jNG#*vjxw)pU8Zzo%rV38S?K(kks#GV8tau3CI6B M#?%`9%)~SKA9oBc%m4rY delta 799 zcmV+)1K|9T4z&i5BYy(?Nkl<%UkmsGtbHNB~AO9fj>LDJG1kj*~!~P zwOTFg?d^qjyB!*hMqpmA*9FWy*iW-TXT5rVD-?@G89}4UQqe z)z=arYqHgmz+hp3d_Es?xm<|I%wK_rzlL#k00QN5S+cd6Lqf4IzZ7Ew(P)w^U%MV| z+*%9k8yjKs;eWOOoi+BnJz^^`iGWtc`;Q2L&YfQjiRzdt_PypTB(#K%B^klCD*&GIBWjX$efzgd+sF zQx2_MSrLeSbw$cNt1Iw+i6|K`%O>=GiC6+k;v_#q0)J*EpjSb*{PN?475}>nYgHi?6 zQy-yO5Pz^jVEuEFN+9bM97llQ`T$W4zn{4Yk0UU)0!-KhIKKPzQ632$E$p5I9Qr9K z--J`i;5W(dGBX}OZN?DW>AZ^3A;GA+kDG`ZY4$qW3i!-*A6@-#-&qZh>YD;|KlgDH zp=6YB(!Gy^`fFkW?K7Vc^c}-cFnFxDS#4 d${6Y|=r3<{OTcE-O>O`H002ovPDHLkV1o7+gpdFL diff --git a/src/main/resources/assets/tfmg/textures/block/steel_frame.png b/src/main/resources/assets/tfmg/textures/block/steel_frame.png index a08981ff1f4ec8e51f08babbd6585626fa633938..a624aaf6bfcdeac064a471ba2df571ad01592888 100644 GIT binary patch literal 453 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJV{wqX6T`Z5GB1G~mUKs7M+SzC z{oH>NS%G}%0G|+7DLExobuB}4+xWDct_hQyd%CKd+e9Q}fbv0XhZKPnXGxG>@P8;^ z2==cK0tps)L>4nJ@ErhQ#;j|doIpW|64!{5;QX|b^2DN4hJeJ(yb?V>*AN9$JwrY7 z?rYyIfois;MtG)qdTKFn06DA-QjDw&j6jwb5KBYZAfIS3GK0mLfNVoXCa}+zopr0PFi^ AWdHyG delta 266 zcmV+l0rmdH1GfT@83+ad001BJ|6!3KAb$yPNLh0L01m+b01m+cxRGn^0002YNkl48k9Y5E zwmUf`N1N;q9KT+!tiNS%G}T0G|+7DLExobuB}4+xWDct_hP}yaJkgx~iMoiYsbFBxHc9m~Zd<45YYA zg8YL2!vTYrKjSB$FlT{BWHAE+-yslY6xHx*018T!xJHx&=ckpFCl;kL1SDqWmFW4o zhA5co8S0sLU;AzeRI@EL!ZXd&Q;UHE$YEuWVq|4t1hTwnsj=y4d0W+?+uY63e03s9wjk+A{e0*I*~8(9}XOqv2@ zg8&oITqdx}AWI7%3#!Y|zyKucv~uO6T|ZMl0+~6UE{-7@!J+2^`3@`aFkiT_j{Wps zew(AIQ(xKJyD)`TEO&_YKceN4roJVlmB0VOBdG(rU(}d*^NP=1G&k9kEBUv*E&Lbr zmM}H>1*z{RHfqZnx0|QLmv4LS_3doRDP}8MBmd>sCfBTs`}vQ-Z6`~ZXn08<$PJ#Z KelF{r5}E+{)`dm@ delta 449 zcmV;y0Y3hL1ndKl83+ad001BJ|6!3KAb$yPNLh0L01m?d01m?e$8V@)0004jNklC}K#8nG?61nc(x|)4xSjytKS1Vz}_oS{lZg zi^V<5mLNdXBJq_Eibt|-xMx_mZBd;xpHVv zD<`I0I+h|TmROJrX%V^tfLmd_tkuoJeC}5)iLL_iGqbYpM0*m_B3N}9NQ!IK3&Tf| zcwB@+c-PYTQ`z{0xS|MRy r5)dH%)oo(&BKjVBe@wkSXJdW18GzwGft`T`sKUU=*nn{X#8i+D)&&rgrU2O>zyvgh39K^6(gMhW>M}Gi z0LiMl&+A=mvh^s?ws21u#}EturIX&~H8}{lKKD*oxJ7Jh)7H?7zyGbjaYj!gNO!c#lnydRx-f8oFCTMUqYGv5g`0|Hs>OYwk-e@y>@SaxXcwf%w zZ@bMH6tG1@+KC}?dsf)SeVMz<3|f>J=g&WRVa?usZx3VfX74JMXZb7R6O-Z7>|B_cuN6}65~FzbMt?@%x6kCidHb&8bKm+o zQSrvzZBN~7G&>*^zp%L2285LlAnOA_eoj=J1_V0{3{&xru| z{cf^SKP?Tw`Z@XU0et)MJ)orkkbu6StnFDp02sio0GMbGfWomg0s#98iU9Bo-0Zw~ z%o$_g_0VtJ7xb1ypLoUc$R+^ z4JB>xXNcy=Kj)5I9BzbuRPlZ=SzAEzlK{T_+zX%Ac7Mac*>PyK>f!#+NzPt3*TUt| zbZG2NhO6`6nTfUlJR{g70FqH$AY#R_DvnJtAippG%K#P@d~v>B#XSQaK#YOp40r~x zo&j6jGvHegV?e5yjF4>X<9etqZAWLp_I`i$L)aXBm1MvJU|*`3jF1cfQ&YckAY#S0 zCWcEfP+kgvwIo3)sKP}6ben->3w&{`Q2XM(1s;HBpyv?kOUtU_V>93xNIpZKxTq>V z#(*t2Z~&eG&43DWHc$Y5=s2@I2Uv0jo>CqFkyl0<63JT500000NkvXXu0mjf-25CD diff --git a/src/main/resources/assets/tfmg/textures/block/steel_gearbox.png b/src/main/resources/assets/tfmg/textures/block/steel_gearbox.png index 55450268438074497559ae60b16ca1b75f3d13ed..1b2220d0e4d211dc99151267d44797b7ff59b162 100644 GIT binary patch literal 562 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJV{wqX6T`Z5GB1G~mUKs7M+SzC z{oH>NS%G}-0G|+7DLExobuB}4+xWDct_hQs#6@%zWeip2n|rz}v{h_$)$I+ns+-$f zU0ebJ0s;dAO*E9$)zqXUC7GF-eSCa?#^~wl`uX{ZNXQ8K+Qb0)oCO|{#S9F52SAuH z>slu#P*9@8HKHUqKdq!Zu_%=xATcwqM9eAu-q?X~?l2z_Wi#avs?wnGic8D|S?Aoo;>i(iDv8`@W&#kT3udSE+de2eltj>Z+2{Hd8wZCrMTdrSMZ!)iWdR@KidyXPj S?WLe_W$<+Mb6Mw<&;$T_^Nr;I delta 546 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 HB{Ts5Hh0Ze delta 718 zcmV;<0x|uR1=|IX8Gi-<0047(dh`GQ00DDSM?wIu&K&6g00NasL_t(oh3!_oY8yci z{$#EbI$g1x5Vp{X{J06hMUpCD@Jr+k(&hzHrc0H_$V(Umt}GQMq;Y<*j*}2Nu2}7H z7*|Shna%8K_v~P&iaszt?d;5ayF1_Pwq75fYzD&tdT}2dtABinEX^Q93>S(bH-7u( z`9S^w0G&MQh5!J$R_MijWNC(ElsE$-}WQl zP88zu`y~Ki4}X9W$PPe+=)Vi(Zzn3HLMfHuYscU71?5G_NzgYZZDX-mqLd19UH_F* zVX;^`;|Hz)banucrE|kZg$n#RCKqUnY2M+JLudS;C~~8M`F7b-l^XWt(!ggC1*(zV^m2+RR%e8_KF#<}?^-ci+ICq8<^?{$c4c-?59?Yd-LMc_F zonwE$UKH(Ali!vMc@f@4`%S*CK48l@pdXzmY-~E*?m{We7`)nDa|yvJU;e&$=33Xh zC`qPSI)C3PP+N+=gw&8YW>>RXhFO|zUAuPS5lJ3|H=(9};e&A0JM(ZX}hx(18}|v=$nt7jZYg_O38h=^)9gA z3iknDxh7ygrFf+a5o=BVE9|)nh*oUd_;vhH*hks{yVu(ZskuDVv3QG+G*9(l>sYQ; z<9pz*3HW;b#l;u>?ULbr@b;tsRkgzoJN!TR1uu7?yKdKKUjP6A07*qoM6N<$f|lM> Ax&QzG diff --git a/src/main/resources/assets/tfmg/textures/block/steel_pump.png b/src/main/resources/assets/tfmg/textures/block/steel_pump.png index 895f0fbc2548dc0678217e4c61545f95d0dde260..ec61e0e634e82e7cf2c3022e19813e0f26d0944e 100644 GIT binary patch literal 759 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE3?yBabR7dyjKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCikL1AIbUeM7?I({j2dOfD#?Ff_MaykeEAx|WMqKy`E5^f~j4jZGC5l_e#m ziz{k+Cr_C@Z@!eAl8A&%X<=bxM1;S;zo&4nJ@ErzW#^d=bQh#Br12Bvyursg#RTvl<8!#?_mFB`F`*AbG{b8 zjRmRb!++EB^p z#9GJjcY@dk+lu__e+(E4Y;V+GN$20S-s~DfyzL7=c0iEs3V zOr}e7i=UnO9wI#@dcmBmW+TCiiye0`p9xA2sBN%vmU5KY=5goj0WD^MyHN{n-w-%% lTK?d{Vyg@C-+!`yU>4+x+n0ZHnK>w=JYD@<);T3K0RUF0_oV;; delta 781 zcmV+o1M>X$1(^nr8Gi-<0047(dh`GQ00DDSM?wIu&K&6g00PrVL_t(oh3%G2PZLoT zhM%dWWp3#(ZTLt{8<4<)zd&HeqWlC&kd3;QL=#sSS(#{pYjvY0_zO^0CWeNki70M? z6sVM@45OW4+DKirGjtlD9om>^csDb>IVbOP?mhQRrJJ{A%YXfSF%koDE>e1Xhy84Z zcW+)x_wGL|uccNQ8=v6$vnSGpi4ElM?~AdPT7?t@f*tw)*E#}@p%Mx)cw-PH6lxs+DwUh1BKdrt< z&fVK>F?RrRxhzm=xO&-Zc8smb$;q|=_yOmhN2Aem1ML`F+L6xe>dHpAHXMAM_#e&5?oJ3#-mq<;r5`a(FG{@Ylik5|8 zn&_J5T31w+cr1n@%K(mfeH?&aQB{Z5D}=oRc4f8FHO;jPwZFTh|B(_xU>Jt;tdH^Qrpfx(?+96VG6(qb`5QtO3=a>U8p<-EP&d2VKTsoK$4re> z8ZQ*;rd&EX1yE!eAq#}?4sceUVVX!CKBrnC0)Ge*plDeL5ui{w!l>Q`sD2GEV_utQ z-*<3dWgDViwK0CZhUT)Wodb4rH7n;2$$7MmWEjSo6Rv3hMV2uP1H<$VVCS7R37eH) zQB_7phXB~vSof4{=d~g~K)G~+rfEzilb#0A;Xxj?h3c<#C4fJlnlznEK~e|+0000< LMFvhpu0mjfRhVKm diff --git a/src/main/resources/assets/tfmg/textures/block/steel_smart_pipe_1.png b/src/main/resources/assets/tfmg/textures/block/steel_smart_pipe_1.png index 856b2519db41aaf77c5bccf9e9b6914b52318eb5..748f1842da816bae2deca709079030422c1639e5 100644 GIT binary patch literal 536 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJV{wqX6T`Z5GB1G~mUKs7M+SzC z{oH>NS%G|;0G|-o#Vb~|wohKRdc(vivsKl#49#r|i#w*znRog6b>EQit_hPjY}@7H z6%e16Q{CM5_Wk?fiW(_7B@qc3paGLV=|2QgA|*k7!T&J!K!4Mt|LI1`X<$jAf^g(x69vz-Mjo&{usKmrhh^uuU0 zOBsOSHi4ai1*pQn$k>2!0mM|04%P(_lcoUKAixAPhY74Q$kGDHg6c9fFaXJ_y3gxf zY_jzzkQwjk;uxY4+L48UR4wIqOO*8s>4&Ro+$);+H0m^eZ9XY(UGw$w;pdi{ Yxu-Mmc~?2VPyt!%>FVdQ&MBb@0P>HM@&Et; delta 277 zcmV+w0qXvk1f>Fy8Gi-<001BJ|6u?C00DDSM?wIu&K&6g007@fL_t(IjopyJO2a@9 zhCfR|%tB8g#$qT!p_lq9;&X_2_615$;=zaLA&-+@JT;}IO|qMduqi#+gY1%oZNQ^` zrKM|X9B}Oh^}XM zf?bw1`Y)}W{_FzR@UIdW%;DN~8|MuwU2)JyHtQ__2Ys}@bAj&*lI15dmncNS%G}T0G|+7DLExobuB}4+xWDct_hP}yaJkgx~iMoiYsbFBxHc9m~Zd<45YYA zg8YL2!vTYrKjSB$FlT{BWHAE+-yslY6xHx*018T!xJHx&=ckpFCl;kL1SDqWmFW4o zhA5co8S0sLU;AzeRI@EL!ZXd&Q;UHE$YEuWVq|4t1hTwnsj=y4d0W+?+uY63e03s9wjk+A{e0*I*~8(9}XOqv2@ zg8&oITqdx}AWI7%3#!Y|zyKucv~uO6T|ZMl0+~6UE{-7@!J+2^`3@`aFkiT_j{Wps zew(AIQ(xKJyD)`TEO&_YKceN4roJVlmB0VOBdG(rU(}d*^NP=1G&k9kEBUv*E&Lbr zmM}H>1*z{RHfqZnx0|QLmv4LS_3doRDP}8MBmd>sCfBTs`}vQ-Z6`~ZXn08<$PJ#Z KelF{r5}E+{)`dm@ delta 449 zcmV;y0Y3hL1ndKl83+ad001BJ|6!3KAb$yPNLh0L01m?d01m?e$8V@)0004jNklC}K#8nG?61nc(x|)4xSjytKS1Vz}_oS{lZg zi^V<5mLNdXBJq_Eibt|-xMx_mZBd;xpHVv zD<`I0I+h|TmROJrX%V^tfLmd_tkuoJeC}5)iLL_iGqbYpM0*m_B3N}9NQ!IK3&Tf| zcwB@+c-PYTQ`z{0xS|MRy r5)dH%)oo(&BKjVBe@wkSXJdW%FBlnrv71|u_AoC(M_WMl$6KMKgsY-a(BX93wDu&j)c;RVoFFdEHL z2B6dgb_N!pN&_Qf1I7gqQ$aSeE`XRc1;_>gCZM@YV3k3Z7C;tMm!W|HNH(YM6uL%#f6nqS=rbek8d#%bYyGW zVq(a6?8p|A1)p3P-3%3uKACjjz=3Cr8WIdRnwGFk5K%X1*wQR=n5QM0ak~f`gTZ;B UDTN0%T>@F^>FVdQ&MBb@01J<01ONa4 delta 309 zcmV-50m}Z*1K<{9^+`lQ zR5(wqQp*a$Fc3`YrBqOhCm&D`{z0W6DtPmoy$N~}`~wdbe4L~zSbDLMS=^GQy;L0t zyV;o?l1*d~Oj7X!$e=&)~%XNFmXCx#3QNS%G|s0G|+7Rdp>xb6Xd$fcUf=-;nU)ikj-?HlXC9c2-d!#ZeOE7yKUr816Oi zjRcBu7I;J!GcfQS0%1l`4X*~EphSslL`iUdT1k0gQ7S_~VrE{6o}X)of~lUNo_Y7R z@0LI{+fpMu(>y)37&w3&Rt70XRt82O%L|C5p=^*ZG#Ht|;!HrcAtMvmS5ZKAW;+X5 zJPXJMflpx>8!#?_m$N zv;eZ8x(p2rK(bCNS3cVHGxZ~oneXZ17@`qu+aD-)#DIf|vG>mZW4mW;`*-#Ury#>$ zUPggmJX<5yFYI#qY?^51wWH0dh3hg~|BUh-?7?OwON8D?ohdw{^V_Cr)y*dzQPcc< z!m1=sCOUcFPS4-XRr`CA%;lfIo|=B2)qc6}&hL$Xm&^ZEWZu3^BnIqGPgg&ebxsLQ E0BMMZGynhq delta 426 zcmV;b0agC^1JwhN83+ad001BJ|6!3KAb$yPNLh0L01m?d01m?e$8V@)0004MNkl%SyvQ6ow}UR~FQw;1w!(L2)PIvK!yPg$p0hg$v)nO~4DG6-0`cS~Oz4fKnAI zSvBT6Wa8M?^oPPZbN=t2WIFN6<*klMG%+>l9qjLU)PuCWvm3v?yvEc5NKqUgi+>qV z=Lrv9YFMG67%7f=gF-Bf7lvAB7>2i@$qR8|yog$6XQuV>d8hwEEWEn5qA*^1SSb{S z74rQC|I(Z*G! zdLkFqb5jYqcn9`!YhI(NV))SJFp{BDluzT9b z{yXkHfq@m0FfqV@vEOO4=7z8aD64!{5;QX|b^2DN4hJeJ(yb?V>*AN9$JwrY7?rYyIfois;MtG)qdTKFn z06DA-QjDw&j6jwb5KBYZAO~tNGK0mLfNVoXCa@2pfb7h67O;30kPQL}Kn&6kqtPs7 z0Qz|XI|B<)g@KW=0pkLQsURJ!3m_&<0kT1W31|)zSY?o<1&{^RWoTdkl2vt|*Spwc z>ro&xz|+MsMB;LCLP!}WXQ`o3LV|FRkx^KXPr61rLvs<^j*yuO9$p5rCj^X)nhd5) z=@D6|bS%M5sY8)XlyS9ZNK==JmZqe3XQHuWRwh#n7sDkc@h>G_j9)?ac)I$ztaD0e F0sy{fTX+Bf delta 252 zcmVtBzv?uLLr&-wmUPsZEs!H&3nTMSZ#OvqBvg9;B>nH z#U!DmLG0KFhq6R;e?B6Rgff|HHd?;j5h&0fO(T#r0b;jYZ*^)rSp41ran%9hQwON3 z1E1M^!AdbW#X3el7^@tV$pQlkV$?vf3Pa%x4D6NVlu}zaqv{RZ47C|pzZ=-fqi&+& zJ1DEFQUlDoeb7Pg;M1S={~zZQN5iHnb@;L$$NL52H5hNzNWFvr0000!lvI6;X0X`wFs_I%UUID%#;qhrX#T7MO6DAv)+g3NXNy#ZqpEJ*)&Bq+5lC!`g zvY3H^?=T269?xHq0u+=eag8Vm&QB{TPb^Ah2uRG#E79|F4N)-FGt@KhzV_V`sAgMg zglC$krxpVTki*I##mLIQ2xNHyu{4woa<>K}GgzDn$TnnTVh{k*Q9zv8&H@(C0$Nv;eZ8x(p2r zK(eat^LiJXY&{CJZNI0BV~EG`y`hGAhYfg2rYR-Aaop_szu^l18U^`|_PmSJ*hOB< zT6rR8fpdNIsc9l7r%kqCJ$1C9K;iuI$187`{JN2OCs%6e_uqP}9tUpUp?y!wfvNJ5 zzNy#5Uq5UzmPTC_nm>K{qbQ!z()*dQ-6uQb;}egBXSz>G|L5nnrOv4Y=0-nUfO^X+A|Sm?xV z%d{upN$adhYv%9ju4ljC-R3y!^#Me@be~j7^IUPTnkdY*tuG$$|`)DHGrFPkicf&R|bO-sTPB6BCmbe(^e7aF@}A z^D$G}?!9hbkGD+xn3k%?EzIYymiyf<=*PUapFdZh`uFUVLH=bvE!l~oLF?-E|HQ93 z^@>aQcDsg}`qsPL`PE+Xrq4b1i+k^uOfr}rXqV~E$FqRPlX)Gp4$I1ouk9I(0(Ig( nI13nk-ogB#%>5|4f6O)gT8AtCAI(KGLDA~z>gTe~DWM4fVwMrQ delta 1779 zcmVr~F00zEEL_t(|UhSGYj~zu2h4&930whRCAhCG} z2nYy>NPqwW0s;q4Edm50AwlAwvglm#tv(-D_np1FCh%@ho<~=mI(53bXYP8gKKSs- z_0vy2KiRiG{CNG-vuD>Ye*g7kzx?sr$+*r~eDF`Kjr(nh!GD5*f!jvjw)QhG%(l7b-+TA{8{5rf#_XF| zo5$LYcFU#K_?>^n`^qymb%3wC16s}3(E*plcHSM|tN&)>pE!Q`)z>c-ku}9R_u~`a z#Gv*^pMG(=_kZN$&rauUiNTtHb4_d6J}Wbpb2X1xIEHJ^PkTUGBF?#($aL~t$2T#w z6ktw16%0lfJ6RXkMW3@t5R6F+_tPHW^_#({G?~{{um8qr>owZgceTdv{43s%PXScP zF~#j>Cu8xklC3IA>Crxbb2glg>W!#-(obJ9IFOO$z;$rMq1i*1eGS~6R z`6NKrStm^__ZvG#5f;HS=}v%r^P)IouLOY0O9IeZaqL7UiBFOeb5sCkvayY`Yi(j% z9LKGe+J7Md0>aCT3C9c;A7Wa7$&dSB8QU?$ApqwtHUb#SE#FIG$7K{C$2>wHnR}RL zHa+jfBX&z*Cjj@2 z&40CvL;!aN_nmXqO~$xL0Gyg6=aT^ZL1fi-ZfUT+Bp9P$@9q}CLN+gtAK`LV00Kya zAd>(PoRU(I1;~B3F}V=IGnsR)U10Mv5Br*nIW7e-0h1ufr2;UMyCO^;OpD;hoO!vM zz`3;m0YCtpAaPCr_JExL6y3Li+vPF}r;MUpSc;@ht%76PK+3ov42e#&;56 zQXMi7?c%+zC-RJ$eDlIu00gxF+A*0&tOI3(zF(b6WwL zBz};z2=;L&_=U{8rnqxlZUjJ097#G^#sG61=Um6wcrb|lU*_EA(p(?E4}a*Hi+Vlt z?tn?jR&}zTp~k+eHGbz`@jh*Wp1FLViyCcBIj&#Rr+_BTQMXMQ) zS)|h@n2jN35wI>G*Z2d}UxL{>dE-sOT>6nz=P}o|o3F(3&(nwenVi9=O|X}PH^DBX z$+}G&_o!VG+j)0Lr+Kfb#Z4f$?z+-hMbYmO5y^RTbEn15q7!`ypC0243? zlEf!TcLHP_KLp@c+pY+c2h$>?jVE5rro|+WxoicnBTkTTqDcTAEjs}y%H04q1vGg? zqu2<*b@Q?S)YM!K3os>Wut|W)kNaJO1po&TJdPpW#EW@LCrd@=D3ZY3mtk?7Ldycm5Uc#~(vci=T;cdT2j~{{@wo VKw7a_AjSXy002ovPDHLkV1imsRlooM diff --git a/src/main/resources/assets/tfmg/textures/block/steel_vat_top.png b/src/main/resources/assets/tfmg/textures/block/steel_vat_top.png index c9f1b88704264d1c62c9c56756ebc7c4069502fe..f8e5de77ccdfd0feb1af71b42bd7ccd3b3400000 100644 GIT binary patch literal 492 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPFcCaYc=koRX@#*7P~^d_%(H({dKCSe3tWb1+ab zXMsm#F#`kNVGw3Kp1&dmC@4|l8c`CQpH@AC&ooa@Ed~xChm}E!k(GfF$npYWX($`yQVm9Cus9QtZOF(3_DU3xo!QO;7S95* zK_CH$LHc1dnxzat&re`yU;(NyFfuk^TmUf@q=R(<#H1-eHV7~Q&0zwo46?KUvY@&Q z4GciCs_yf87n^K73S{Pax;TbNTux39X<=YfR8e&!I)4 zZl^?f*&N(%i%j3f#?B@f=)L;UNe4ke!>OuKegbYEOE{QSOdT0dteEjAk}++Iq~`WU uNm*Ir^d?2t$zt&tRrL=;lkjc1I*5`d8`Jm|x{Y#j-dtBubGe z#df_3o&nC1E>P`7>@S8)SQBw*a&YCbi89-vMe=*pr1Rf(hN@}Jb^Zpp=!|mP{p&3N O0000k44ofy`glX(f`u%tWsIx;Y9 z?C1WI$O`1E1o(uw8k*a>cm-59w{=aJTwGBjC8wmSt~GtmJl~M;__UnGD^>v&E)lA# z1yVdEL4Lvi5r9GH{<(8Nan1sd$YKTtzQZ8Qcszea3Q$m@#5JNMI6tkVJh3R1As{g` zuSCz!HAKNw&rr|2``UL)pqg!|5uRzDo>~kXKn^Q|6eBAGBar0<#L`eU$X6PS%wTaQ zAls0Ui9rBJM*(qWI}2Dm3&;k61Rw_KhtX)3G62J60y_f>P=$e!u>s=(h^ZhQtP3C} zO#!k&fC*?06If-Cr3H`$)n#a40FqU8pVzzCWb09&x)x6t$B+p3qtkDfy;0z3duq`1 z?tA_Hy$rraX;(6!To>Y2-MlBorGIOYy$(ZN;M@L?$#khdRpA zH_7ffdZ4+XaQB^EOa_dM(hHVvSQ^N4U|Mz@vx_V9gX3?T7*?!U!Rp~ zwhVj<%s$;O*%n0YFbdUk3P12l%e+A}j)A4yhKrW*{89Ca34VGumRd*D(A zL*SHoZktS`4qV>B_QQ44-fMrIT#meoRnxn4onf`@de_~j?lUc#A@d>5hp!_kih0kR z?zEhL-<<`-a-Z&DsW@G5;D$fXg*Dm^*^90(t1A1RHN zzkHK%|IBlI7Rx{9ZpmG~nf>FObK4*8ntLv=_jrk%?G69u3^JE1zdTsKtay$hOT5qX z-{N;&cb~WU_qJVa|K7aC{SERjnG`3uhnBiB}Y zMuj~tZ@FDUgzcCkW~W?R({Gbdk;vm;^NcaN_V=IV@eDQp?AgC4M>O_HmlZYe2Iwv7 zXPl+mJ8M33)%i-c9bwm$4_q|ed%Q=wY}eMkg@^tAGituhy0)yvcoQgXdb;|#taD0e F0st+wflvSd delta 1613 zcmV-T2D15`2-6IZ8Gi-<0063Kaozv`00DDSM?wIu&K&6g00s?7L_t(|oZVYNYwJc3 z{$d*X!%+0Dx9|Pw5YQ-^Fw> z)Ly+(u7{(MGJoge2>{^!{$3e(@}c8K008jkZ-2lOLh1YK_jj(yJ4FB{&qpuIS#)5O16n-ry9Uj?)$?xvc1{(48Z)H zpbm0^m;L`_->*l<01z`pCjw}-_oTz)s!5YRH)t_9Z-1@!9=e^bdmo@93d2}m`(Pg* z-~R(o2;==MAR0u|bUz8X1;95s+|!cU1HjhKHtwP^Zm(}*&)1s`<(kv5fvYj6NiVxm zt)S$UaejIh8ZSwS-*^*bD>ahv6MqLVkXsoZVE1Hy6 zn12fqK$cC;H1#!^%d92@0Osgp76O(4rVgFSJWOYu%Z5Usuy_+l3;iYXo*He)tpW1{ z-zLusOD%v!U};SNn6IB8EUf_YsD74bbDMxIU8Tcz9Cm?OX+JzXJdXz4-`}T-@MNVq z3l<^(Jrqr6dES2)jg`z&T6)yh6D9hbHh(x5fX)bq&J;hF-(KGsgQnA}fCsM0MKwoJq(nfZoMrEI-d-T3xOs zx(Ck^4x{l=7-BRWW{x%VE-u|_z&MQX`1q*wB?Uz(Aj)G1^A3vYY4o|900lpJxPOWQ zm{($u80I#?rU^XI%IBJUNQ~FyB!MR_{2;(N&XoQvF#|yL1yLBvpeWD!q~YC(1`J2> z&kOI{s8(bOEGaQU$dekQ-+HqluXX-5sukJi)C6p+Sn|rKHycLJ%yW2o5~ILG81-f& zkr!^FxdqVebY(RbPmc291XIF-V1G)EW`RuuI5;m{fD5S)Fsbut=aY3`FzXzgW)?UR z0M+3E>L-mVGnS!5hIqTY=mD7UJU1V(Eafpec!31qNC5g#l&Z0k4n{iimdRzMO*}jI z0aS-Ktx!@2sirINIWI4I)~`Zt0npYm3PZUQ)4|hNvmANTLZ@$Q(^p~~Mt|-!fNF0E zi!PYfp>KX{1=CIhaPpxe+j@}%m8>sQ$vi(0t?Bjt#He2TLqxlsu0r7L@h@vej#dOk z066^VQ0cU(>2NesRQl-WqdBs+7)TR1K6+~$VDsL(&{h@2vhd`Jr_ImPk<)d}|8thd2L{y|_gfwU3fWk$jD61wW!vMw(H1^uw#2?0+CT=fUWHbyXs{Mi1RyGkhX zgN-ezU<)SbX{J?#bb_?EHywmtipMvh2ux0ONylN}$?56G;Z?`~Vkud9>ZZDN00000 LNkvXXu0mjfoYD=R diff --git a/src/main/resources/assets/tfmg/textures/block/surface_scanner.png b/src/main/resources/assets/tfmg/textures/block/surface_scanner.png deleted file mode 100644 index 452ed784e78096b1d2d52c88ee787f5ad7893ac1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 651 zcmeAS@N?(olHy`uVBq!ia0vp^20*O9!3-pmxw!R!6k~CayA#8@b22Z19F}xPUq=Rp zjs4tz5?O)#kN}?$S4}lNLj!YNZ9|{H(8#2ef|82no-Q+U2L%;naY;#gCod%pbwg7p zTRZ;^AznQW4)eTRE6l8qBnN%jR>?5s|J~+<-pNyL6h}SmOL@6CH!3O$Xz<$G(`$j0 zOi7Sm@PFKZL44Dr>p*p!1s;*b3=DkxL735kHCP4c@EM*ijv*HQXQ$jQYcddURX11O z$SSh<(x3nJ-_EEcFy-dn-?evxO8R6)NtGbpDCyT+*S0L4!k}0X;ph_icI$(!Yu(pg zRML2@$-YG`-_!EaaXuN-omnEuTHNeG2O|=il>QW0o@Zm3WAX6&$Ciz*7aE;7jy+i5 zdgA9gVaIkG`D0-R3+}M&33F@>-7x39RWzqqWld8(*OCukCnp3>`EK!Z^(38FAMdpX zv`jbe{pu*UeM0N>(_OQl*+}b{NQZ~bIk-ySX~7(I!6wbQ4-4FaU2kTdoZ_AESfH}{ z{1lJV>r8(ovN+evc_lf=s`@+qO=X&1_hRzyxb>>vmaG+W{ZiOdvAN)P&;w7cj4s1_ z@4si(EQvm8;*e1-$MmUCDqZXwUrSlBONYR+C;Nm`5_iT|{!WjPKhz^>CuA+{GC}>2 zM4g<=0Tmqv3+YV5%Gw5|?in%t7rb)YcQ?rMCR!f%F@S#3*Iw#=VC>6oL$XFq$D zkj=YaE;apBU>UOEf=;&fo5Y1Lf99^9a)+yB+w+gR|DNig)We7;j%q!9Ja}7~2)icyH z@4oik5~yZdYJ_K+r>7PJ2av7#SNdE`S&dvXXTH#HcAiHV7~Q z4Q2wX46?KUvY@&Q4GciC*}JYuPx>tp%)r1{;OXKRV&T7cf~|M`;Q)~~`Nd8?-n=0) zT~-}Y0UIt{Jj#DU!@|PK!lEvn8VQV+L`l#)X}DF5pIS+eP82Q(_h%pWWlxF7#q*m7W#tW5ZYk2Xzt0(loc*0j8DpM6pK z!;cRw%U0GZaWK8v_TX;W1(T`Mo?h4_6L(*SVbxTtBmFm`Uz@L*TJ>L0_WN&-`h%Zs Z>=Bb5S?8xoE#oUFeZLP zB^DG`euTu(*w|B8T2NRS5{>_XKV_wzQWz@>6C-}01wr7vgO%f0cZNH1Q5vQ2C6jqG zZ{N=B9msOI-rYN`gMzp|mY7w2f`L4&D<1Aw6t8e`-T-YkjekA3yKPVoBdm|*IN@^h zkS2^nSjP<%rwszo23OI3+pm8htoxk$BOH}V@}O9xxBms)vTaz;X8rQ_;QNIFJlAS| z`43>*TRQ_JJi@7=X&OxHIzz6{B&g?n*p$1DBZUye2Oimm7c8%3$dF2#(nuxQ;=(+M z-%)#g1FPAV&3{IV&OhBhNS4dx2TQ9f?B?Q(4#nddOhqHa-M&Y;(-}@h1bSv84=>e6 z$z!n?!^tSl&6;2)bTIr#n+64%l7>Fg5$HiLXN;klR{HF@;HWoRwgXOAsJaK9+9KEh zb>X_fX3EMW$B&}kL{oy55uWFPt&A;o8ES3Ip?Ggvq#vUPy_0{$$$lfi7lg3nuV-tP Q0{{R307*qoM6N<$f**pzV*mgE diff --git a/src/main/resources/assets/tfmg/textures/block/switch_inlet.png b/src/main/resources/assets/tfmg/textures/block/switch_inlet.png index eb298ae341462ee239307db4510534ad46691cc0..6da9481fbd408d8b5e772243127f2415301d6a19 100644 GIT binary patch delta 331 zcmbQsvV>)V1SbbG0|SGGE`RVuMTHQv0G|+7dwZ9lu&8PCW+!E2_Dq@7*57MxZc|uQ zX=-X^Xm0D`72q2ZzC6m|L`m4S>gY{L?h`x>O--y;z9_p1G>NmoBeIx*f$tCqGm2_> zHB9W0XEpD>_T6&gh9LP*WsD3jfHuPDfW*wa5x(L#p;IGi~-3*^^c{hNPnVd)d?Vg-jY7oIN3OJplA-=X2ca`}Nm zB{Rd-2BBD0FMEN5-wc^ddEU;*es8+EVavOpR_Cs7%*&ket7t=By|)NeH!ls1iCW_1THO`O3!j Z@w(kCg^M08%>%lQ!PC{xWt~$(699xJfx-X) delta 324 zcmZ3&GM8n71SbnK0|Ud`yN`kfuS8+)gK;D{T=Q7;$gM#jaPnpkn3*tP&@0B3o9yZ07$R{w zIYC4u#7s~`Btal3D8x{Z*ECr`$SjPpYl_#uE<5PuwX9K;r|HqM@LcNWM^}>ho788g$1V@v2EL8mO8m-iw%R0zS7&fAB~m) P-N)eR>gTe~DWM4fw9j%G diff --git a/src/main/resources/assets/tfmg/textures/block/traffic_light.png b/src/main/resources/assets/tfmg/textures/block/traffic_light.png index ff09a6491802c8cdadd848dbbadd868467a5b12c..2f49d569aaf2c03b4e42ddbd4b9495ac9a8273e4 100644 GIT binary patch delta 1400 zcmZ3&v4MMnXZ?N#2EP4_7OcT43=9ksC9V-A!TD(=<%vb93;~Imc_n&&t|1DhdWL%D z-PgWb0@Z9wjqptK^weVD0CHFvq!?Kl7=bJ=AeM%*gMe%eMrN=$6Oe7l$iyH3q@#d1 zvz-Mjo&{tBK|RB=GDe0M%nWcE%~l4W)C6`07NA-KBVz-`1rTFFR|K z>3AjOAro`{oR`HBv$Eh>TTVpUCWpBmJ4tvde?44X_E&K7ZLfh$2E(j!LNnAFuh`)P`S*HH);>?bf4<**m zzqk3-H`@k91)rN4YQ9l{3=(IToa|W|c{_r6v-H|E9u=n3?f+Vd#{Kx$=rV0y*_Wk)gp_s`s)WHb=%{v&WzAd`pv`@Fn7P?W6N!)ZymeE z?kmCK|Df?qg!!cdJArD}cq|cB72&8@wdx{^)W57>YCWHR%{1r=o>{V_Ic*@izZ^VWVnt8D%7%2oelV3;j!UBocqPs%5+`$l)} zZ)ZFdq`g=3)0Nso!M{1rf7`y($f$RQR39iZQfF{@y|B1ku}*s0tW{YFzjx*{ef#Yv z@$~Cu?gB00ML*t2f1ZE7;mOiBOLr@K{kk#5G;U^n$vruPMN15Qo72~CU&y=T!2Shl zyXG34dc8b+{r(;92E399HEciPkA3v~_hF;qhwlz14fE@NZe{*(cl-T0mMaz})V&Vf zyWDfeGRHb4`PugwrhVP_(#6o)`ufgaKhw|noDa|t(a;q+Y&ZF85yKm)uMzSd5BMcR zukNs)`QYH%ZkrwTr4xTo=4^5-m6(>BeDm(C{zbsFcuaL6*WbR}u+d0FRnzD9 z&e!5U9-4RG=KpR{{+HWh23PTbTs?Z!O2 z2RHuZ*t7L66SaPtxJE~xQ~R_xQ=J2lbjn<)F-5HF(5X+81il6zsxQ79@aF5|={7q` zC(7^l`~2&p_lI~fU&(*A@1(xoxR*KcfVhcov$b{p&c6lyKuQ7OWs)n{u-`(3OK9@P>Yftr3pX$YUA#eN6vbVDWR)*ABZTViiG$>Q% z)@gwhhx<2^vTG;1FLmW=Woj*SY6P;jT{AzN|5u}FA@hSuxxU8_EcoVK=PkKl+YoFz zX+ib0)2k1;pFH3hsJFh&&+b)9^Si=ZJT4y>PUh_jPF3jQpPLgf$C4pXWMZmhoV5Q2FEO>gTe~DWM4fp7&$n delta 1001 zcmVI z8gye~+^HB7_a>V73yfQrE_LV9t??I_XyRT%yr3}}qYD*p2&EzsP)lpUwqiZc(20lI z(o#tDO@?on^L}&Y%*>gufrAGR6~rMFiSm$WLxVnZ*{nVn^M5&g8sNd%wyjnFpPijn zZaE&PA5gla<8ysM_GM;nBN8(xeuV zc_;Sw(J;EsXs%<2Z!0Sf1h^y;NYO%b(=FB4sa-c4(Kglk(yra4$9S&+f~r9*^53H zDo82F(%YA>mQ6)U$-(>yYvlz&YHn%Yd|<1bznzkEw`NoatXW?em}p2j5X8gb`^$Rh z(|=?_PmQ4a4g1#|AVNyA5;&oM%2GUj^dNws6A(HnN6`I#(n)B}zCHh<>A!L!raEBF zPZ_Xut_L&&IHTb%jQ`T~Bk0)5ZA6wz8@67AsRz!iQ~hg5DOmGs1_;bBGBQ$#L?Wu^ z^Lgp-?+-ZJwG!J|XG@mY_&KqZ0q!}USz?-p>w}>6qCDhK66QidvuOZe(l~ z5E5G zB*-uLKM83iP^E#9u>s=(h^ZhOSr{&803@5e>zeeW-x9&VD30}XaSXBWUmBPjeaL_(=Q2+~ zc%a~i+)!;b*7yJa+s$8>yusJ5GJcZH-seR-rIOnZa2%VIye`VX+GzRmn>B@7cbHwf zdu8kXucfiq{~epFsq_9_diiOe5C0a%Rlfh51M&od7Vg9CZtw|wS2 zdb4K##dRHqM+BT4gv$+|81iuJzF@Mj)7Qaf+gZzp`{mpMr62s34(sr^b)z@5^o-`x zBX2@|{6X<;^b+QDr_jbpD^zwZm>{%5DdVbOM@Puq;IngCXE>e=TA$$R zvSwG1?t?oQnl(0eEeq0JV713dBEd6c73+$r?}}e=OsQ%*;jwUP*{$^(%&I5cJA7n` z;m@vMzRAY??UR~)nto|IG9H#u3uM08Z2R}9MOH$=(J#B(f3R9b7KWUD)x8uH=$@{A JF6*2UngCr3OA`P9 delta 1131 zcmV-x1eE*w29XJn83+ad0047(di0SYAb$yPNLh0L01m~+zS6%|xc z1m%I%9B%&0---ftd=lZIL=D(B*@#VlM62 zQbXSz^ib=OwbZuHL;F@&&)ybf%fPH1!mMW?VNc`H;XR_%Q^xgR_YfU;@PCS2uKC;^ z9DKuNwY!?jK7SwGym2k-SRh*l3KI4-5d5brsHFHdR7_q@?WXg;+@|(( z-E{7rZVM2g*x{h-*DkUyb$<(v`V|Td4=3&GHns@;mQ1z zpDbxxASrP=IprwzoNxbAk-o120a{R5ne>&&KJevA4h-Kg21I8y9H!o$96>N|dmj_|T*W4fN$I?MD{Y^(7glKF2!A;aNc2^-*VEvi ze2&qOj}hvr4-y_Cpnr_?&+*^w|M2$gYTK!7*swX~EH78&B?fR=4G#>6j*hE_bC+zm zm%8ck!$*s8OQ~mWcf>JI`Bn=EFi^LCD6Wgdiw8Uq>|fm3)1Z4QIZ!C z#zC3sV#)2F zZf=v3QvzyANY713%jxW&?CKq;tgI|3D9F#xKYh-;q_m{Uy6S?`g8pd}o7!8VVxxeH zqt+(!04e#BAiv=Mcmcy%$ua?;QqBU8$YKTtz5^i4n02j_6DTNA;u=vBoS#-wo>-L1 z5RjOeSEA?V8lqsTXQ*f1eeJs?P|dc~2+uT6Pb~%xAcvJfijkFp5yEMW00AR7esmoYND00tzCMzfRwC^dndfd#12z{uEuaRJ0s zkd3ShASO)#vO$0eXf6|2Wss!>kOkFcXkY-6J+xjn{cTD+(9w(*o-U3d7XGahZ1IFSS)_NsC@&N~~z_3O(SXvo%b{aARLvqQr{L(F=U}8|I3= zp78dr;&s#LsRjQci@yhay~6m%s`TLLmH+Fmy^j95ru^!%pF5bU@BclawDiMLCgxB# z*_8~B0$Qg_Dg>oYoO}YwlV#6kM}eJOt2a5WZ}?@=yZCtI=F;O@ z^1G+%95C^_%$%_P=(`EKv){>O)xN(aW^wlPOSL;ppPyImQ2B8FyK~q9dOjJcYKSEGbSXo|QfP;pOla!mDpA-}n78Vw8ba*o}H8waq zBO@aK000pY5f2X!VrF7_etU3raF3Ref`^1!U0MJD0Pv_;5Y(fUg5D_yKi&?6;3TFjCm@7c4A#_j(swDpwfC~l>n_?;?7%P4Q4>5kHC$a6dL3QCGeKD{ zkwyYQ^AME?hE&5CQ#CTF@i@&Rn;&5zHH`ICBU4bG=4oQ}qo7?4cg1x%Fi-P*4ctC) zTjXtKfktvLikAW@sgfYS;QzP) zgNPEtEubpS0*}aI1_r*vAk26?e?&q9iy!t)x7$D3u`~F*C13&(AeP!Bo#s z&%FEEcT1p}ZK)BSX`Y^13>-iXD}xjxD+42t>myuy_`b4FU;34AKvy(JW;EhUWx!1{RSYP z${(;biE`Ar?;ApZTS1`E8a{8p=zRY*F64rg!GKA-4#c;1*t>y7> zr+Me&zjlwVr94r(+t{r&hjY?o4&&~WpBV>d?p!)$jo9-EF|(RHv{n_w1?z@1sAjhX z2Tt7FCg8a;)gtV+NQCZ=cAK!>qE|0;tuox4v(obX)??vbp1dxXvIARXr!Bqq^!@)i e4;%hF{$PBt!d9hu6PG?HygXg~T-G@yGywoX68eY$ delta 541 zcmV+&0^m4CK(I!mG1T>I__L}h2dw{q4Qfbf1gP5b?RdNCRW91n+uIU_N|B0320 zw?Kutnm_{N*Jy760wC7vy4`NTZm$=hZ=l#r0Oa-^fS5TCiC#4Q(-vt9$dv$ANHM!| z-+@7rWHFfl$n8sr7z(S+%&Q(MawPy#$SG3Qe#PWE5PwSmg=sP5%q2w7KVlf8ZvjOh zSHZG_C;_=Gh;;~UdwmD=jZfQ@34k!hHS}BHS8qFzI|DHuBD)3t9N5)^!WoERz5`mV zUAgT*LBOw`(jNh34^bHun-icU-|i|9YYE7ojK^7k}+2G0hNL0e8xOjJdRkdv33o=sF&UuJB$v#ZI(yD>LCb9j91=G*!8=b@pT z|NiYnN>C*yDx;{XP*YfYgN9jNU&3ol)_YrUba)ybA`}=Ljgyp{o}T~!0DPK(RR910 z8j*n%Bme*Z|NsC0|Nj6KA^_R|000SaNLh0L01m$Z01m$aI0aKAk*{_Mrgi}U=mP)% zrjsrKUw>?l$`3#47!Cjc0e(qDK~z{r?Ud_ogD?z6ozGyG0PF5;-v31>hs%nGpb`7Y zK>`8hr2x#F*eQRQgcv9-o}Ia2RvEO z#x}+_wk9ZUA!r?&*knPhHE<_+8xK#kpmlzB5`UDppmhXy%pJo7;N3wNPyo<()^67W z2&}tpFQCxb*p>h+EP+MRi?7;%2rvO)0)Q+*@Kqa7;Qj&5323}|b;WBC(ZgaU$_ZXm zy1u29-hK571hCGqogryTZ#KF~_8=CBU_bH=h*@0dj^Rf%vKoOfUto2x?2Y_f;DV?_dr9+odmGwE^io2RVX5Ieq)8 z4T!})q%i@5MGC)0zYZ)x3BzA_dI!uXPVn#o21*m$ZnwpS!-C=#?)UrRLU95wIGo^m zGy(H7KeAu`2ue9F@Y7hzae=>3$|*Pn#vv&<1;!~j1;#1(2f+{F-(vn$0000< KMNUMnLSTX{fcQ%Q delta 527 zcmX@l*2Ff!vEDeqC&aaP@|4;0<_82vM8?JM*u47Wk=-`-P6Z_uZ=c=%`Stn2g>(M@ zduwK4ZES3MDBI^+buI666>B9}O_5uAP|#l;kY%h%9Dc;5z`qj9J$@ zIe~%_C9V-A!TD(=<%vb93=^NEa_%obbs7DU&qL}#yV$z%mdkyr#2m|N)<{> zcGEsw^{M4ud0^M|xbr+O3Wfc5X9&OH^eONt2>rnGK=Kw#xWPfO14`u?JEqq1e`DC- zZU0<%$#2ODmR2_58}fyBnXTETefD=ayxxvO{e%CFZR}?_)GcxjOwM3Z%96Vy*5d7< zY07_yv+Ce~b&l;t`W;2_7vz(t{BHW^I7Lx{DVd|~fJBp`LE8g<7JIE1Pq}}0Cu#s= OgTd3)&t;ucLK6Unh2pgU diff --git a/src/main/resources/assets/tfmg/textures/block/winding_machine.png b/src/main/resources/assets/tfmg/textures/block/winding_machine.png index 39e5d4d00154722dfe8801661a9597b1634bbfa4..6207a133c9d48f74810beb7465bb6c9ff8288b20 100644 GIT binary patch literal 889 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 Y{o!g&_mADUD+x-;p00i_>zopr0Bdx-_5c6? delta 1013 zcmVB5DJSquomEL=I8Am}T&nD>jEgfF={cJ+^y?sO-0;Lz2#s;larx^=5E%+*yU z7K_CiK70OR$10nsZ@&L{Sl@m9wkeMupFV$CYr;Q&{XU>l)Pe2j_H4*W&(zQbzxpsbZOfO>NKA9@$%vq8QSq=Rpd1Lze)f_i+>9T+vbAN2oRrgG<6mBadOcn zxBM3fW6s$W$P06G8y>728LV7;Cj!ZHTzMpG<&ww3x=IgMl5B9s{mhxemzfgo;==qtB$ zPJ(_4sDBRx&??eiZ6+fCiH@Vp6Cidu<)?u9(8TmE0lclqSgF0vHgtQ0?j&7rkF5{| z@Ktxxh9}Mp5do7BAm)IW=opJO`_Z@HJGV#hGu-XjIMx<$0ivLcg)sZkw`daqy$W!Q zB-r;c*c<$KYfC={5kSvK7r^VQ+6@XEX<~HT1%H?{+|d+^07Zbb0Jpcd>pC(PIl${r zngcw!wWSL{Hg{GD;B8JSz%ft+=pcaC!;=Z%x4lT}nkLs)0Bs%F{0<SCXRA>Q^} zj6MWVUrzE$>~k>W3ZO)YBXwo9WyQHJ$7{3beGdY6y6YBjM^k0m*3tVO1oQcPH_;T; z#(%#9?r5s)-;D;x79jFs1W1K&UEOGK@dD%~!O7#|1=yXC@3f>m^S_bt^cd_ONS%G|s0G|-oIXQ{DyNbJ0VlFT4IXbCkT}gViuP;!tVqqu90FII%zu^B6z;Lg5 zZzNERv%n*=n1MkEj2U~BcCrHn<2+p)Lo|X*&v^44P~c#>(8##=fA8tz7mh7C!fKbW zVg0XG$vJF`?(R9D%xloKUBsbh$r?t}XQvvhTDMGNC_OTrDZ``j5R2X{?aEDe1pT$Q oI!%{OvRSAYc~$nu71nBdp1-WCA8dN91hk34)78&qol`;+0DQ1o7XSbN diff --git a/src/main/resources/assets/tfmg/textures/item/block_mold.png b/src/main/resources/assets/tfmg/textures/item/block_mold.png deleted file mode 100644 index 77a4b722c1c05bb6112bf111a23f95d2e366e410..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 257 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPF}yUIA4t}8eIfZcWFdD!db9j7u~O+c^O%bJ9~|#n w{o+1bnjZhas9M!%dhkh?khjZC*?us;TP<+r{DE!JKnE~*y85}Sb4q9e07Ktg1ONa4 diff --git a/src/main/resources/assets/tfmg/textures/item/cement.png b/src/main/resources/assets/tfmg/textures/item/cement.png deleted file mode 100644 index 8b2a18a14d55c0ddc2aa0180044424acd7688888..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 202 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`6FprVLn`8u6C_wG8n;h-S1;fu zuFln9vdr4@&-s#awYvfn*d`p?HYLMgZc66Q`;n79oF|x0Z~xU8%a|mb%Hd<|q0FJY zn?c3>g1`i&32qbACY)8^Rd7DlRP*qShp_USwgXJOY1%z)nQAY%CMb9aEt7o4G(&9$ zYlP`xhE0kJ%MazWSxT=@lW5R%IsW1m8$ScXl+cOXudayK10BcU>FVdQ&MBb@0B(jw ALjV8( diff --git a/src/main/resources/assets/tfmg/textures/item/copper_cable.png b/src/main/resources/assets/tfmg/textures/item/copper_cable.png deleted file mode 100644 index 85b48caf1b3febd8acebfb31ee86f207d8a85437..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 242 zcmVDDk@k!*^~Axc=kv5|9?c}6;iU;Y~XzG!DwGzvMs~#Z{>ZUIkbNw z7@pT7y&s1OuiL4ScAI_(itp#Knl9t^t2533JlznOxC=}@5MWM$L%@?*uus=ldG9Ib zOfg1EDOK>ygb)ZGUDt$56qQmM2m~DHoSP4jX5Aeu2CSL@mp@OyUw3H&^Dpog;y>#p slEBjqfUH%P>ueUYWViNO0_|U|57)fU*`uxIjQ{`u07*qoM6N<$g0GomumAu6 diff --git a/src/main/resources/assets/tfmg/textures/item/electromagnetic_coil.png b/src/main/resources/assets/tfmg/textures/item/electromagnetic_coil.png index 5e45b53b88cbdcd877f9ae5d2a8a298507dee114..7fe5b67319ff2be818677b0cbfd97efeb34b884c 100644 GIT binary patch literal 540 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJV{wqX6T`Z5GB1G~mUKs7M+SzC z{oH>NS%G|m0G|+7Lv!2sw4CCKn(1@qEncxoRb9(BBs?-M-d0R5T2p0HlKY90u*Xd~ z6Fd!zmB@#x>Z0Hg#;g8YL2qXLEp%CV9_InDx)$YKTtzQZ8Qcszea3Q$m@#5JNM zI6tkVJh3R1As{g`uSCz!HAKNw&rr|2``UL)pqg!|5uRzDo>~kXKn^Q|6eBAGBar0< z#L`eU$d?+7%wTaQAls0U3GC}AAUm_21uUKgWP?Bg5QFr?Xf#V1fZ;TOoq+|Y!obMb zfN=rDRFDqV1rU>_0NEhG1T=>UtTM>b0?2~uGBhv%$*Q`~>s@TJ^(c^8?CIhdq7fY1 zf06H~0*CX$b?3U9|Ng(P*L6?lHFKNr64!VADbtqnx&-oROyOLzXws7kA%;_*Q&@!x z{wSP&z`5dp;cu4mLJvln?{?=~`|`k#o3I=a|>#~Ychm|eN)UxEyp h|Mg4Xbf5oVE&E(nj<4TK+Ur10@pScbS?83{1OVM~m!JRu delta 260 zcmV+f0sH=(1eF4i8Gi-<001BJ|6u?C0NhDLK~#8NV_={*2nde&j}N1(M*$!O1tk^# z8=Bkx&z?6Qj6rM|2FaOOSYtN?q&YG!9;^^V+t@pyU}QP0hJXx!*#t8HL?g3d@>mT3 z3BsI@>;-hM;PeJa5QJe~!G=L{Fm>qq!64Vr_W#G#rT?dRczyie5fk+PL3I+C24R>O zNDaC^H~>k4G=U8Hf2kLYL2Qs12!jlX)iB0y07wJOc9;u58euNLX#mV`gj|3#3_yag zIK~wQ$ZF8_qohLgb$b#xJG%x_kI;~v!XxGowkHBc> z_jGX#vGBh-@pVy?15a!D>vJCt!fS;%48E;r-cGIa-yXRaLK*Sif$GIa7x3aZQH zcS*)%e_YUbeEIVP#sgOGWutvqB+?k3%bGAm@8K}WVZ2xULU)tkf|na&)?UvE~ryR2Y<)Tuj5b8RYto@3`XCprzOGWrDm`a^`~tM$_0HiApK_J@U-mHeI vmuK4iNB{hOK7I4VSQCRqKlIOi(QmL{k~+m<+l;U$pkVTJ^>bP0l+XkKN&zE% literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/tfmg/textures/item/heavy_casing_door.png b/src/main/resources/assets/tfmg/textures/item/heavy_casing_door.png index 60f1bfc537522d447cc0278e50773cbddbf687f3..cd23b65740a5077474b8b5a47d8dcc2701da0a06 100644 GIT binary patch delta 396 zcmZoX?&0N;@C3$I>wA3SSlZoA^bO$G*rU;ADrOw3lQ z-_O9nx1Z61HCP2GC{f}XQ4*Y=R#Ki=l*$m0n3-3i=jR%tV5(=RXWo77yCqP~w$upE zG*3@01`Z&Hl|hP;m4Ok+@&aOMC_4zq)?j1?i!%Y)hKx)M0zf(nh%?(+z~WgzHW1V^ zEGuJVc)`p7r_pR>07^|@XJ7%UH83(ZU|aw(7Gx#s0*FylfNT(80vgN&RvBbz0c1gS z85$UXWOMpX@!P+W-~%#)JY5_^G=g)_M)Jip7;vxzc(otB_y0g!mX5&l{J4mWtrz44 zE>?Uxl<-W_l7X>-IXL914P(h#u4@iSO80LFOYT{}<7Oyhfqwj=>5DHuWqx$`U|`-6 W1GZ-$rbgL=tnzgAb6Mw<&;$Tv*<|1V delta 164 zcmV;V09*g(1AzjNMkO&YHz_7AgN%wP000ib0l1NC?EnA(Qb|NXR47wz%~=kBFbD)tO4;Q82Uc2RfjEEj!UEp%3ji>7 zUKoftBL|4-$$`ltqLzTfy@EF2n8-KQLNS%G}%0G|+7Lvvf-kZ>2TfUXIXoFzei!T+Iv zA=tk{2qakG5n0T@z;^(I8MCf+asmY1ghDV8sVAd>8ZuQ0pzeUNHMZ9FalX#Kr9VqgM6aF$P5-|0kOkFcXkY-6J+xjn{cTD+$kD-`E{-7@!Atur`3@NH9M*_G`#(NLTK9 z#AklxsAqXo$D+{6Sk7T-HbHges+uO(Z0XfAC0_*eDHgBuKD+7Una+Un>ZQpgFV1{B d_j=>`M{GtvSig2(TLcP322WQ%mvv4FO#ppXcY6Q; delta 189 zcmaFB{EcyfW4%OxPl&67gKI==f|qaL^!anL3X4pPE$chl7#J8fP0?Hoq&P}~{DS{O z0K>iJy^%mM&H|6fVg?4jgCNYfV`BDOpkT14i(`mJ@X|hOzJ>sv!;|XX*C)^Vq@p6m zW^*(y>PvS#O|h>{q5^7)G}UEVD&ZNYq|t9pTX1B&t;ucLK6TTLrO>h diff --git a/src/main/resources/assets/tfmg/textures/item/heavy_plated_door.png b/src/main/resources/assets/tfmg/textures/item/heavy_plated_door.png index baf435bba8e26a14c3df9e405f44b7d7f0bcf670..05c50921f3b91c29ee89a54940b5e716e196d3dc 100644 GIT binary patch literal 474 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJV{wqX6T`Z5GB1G~mUKs7M+SzC z{oH>NS%G|s0G|+7Rdp>FuK?eW@ZyRZDLJLC36l-YZGn>4uS*^SQXC~ge!>4CfZ<;A z-bkPrXMsm#F#`kN0T5=)y4J}F6qG1&jVKAuPb(=;EJ|evNX*PD(erZ+Q83jr)HCnC z_T3VwW?O26XPT#{76S*6!^$AV$jZP7WO)IxG?WeUg$5%tSeyySHe_T1`zi{^&TMA^ zi)R7ZAh5rTk>Lf+2Z0nkn9!ARYPC^VGS**FU*D@HN@Gwgh3n)q75$5*uq{NX;9{Q(wWYg0(uKo3V Zr*P9hmQ>OEo5MgBdAjo3=G9r*RcU9j*=k1;QtW7aIbl9 zBv6dAz$3Dlfr0N32s4Umcr^e8gFRgwLo|YO`x*HTC~z=e6#MzVKYY4l&zeplJ>5k| zm&PYNzI^+Q@o|OkbwZJyV;`cvcH}RzjE2Mf^)`~hPhG!@9Npi{7i%QEN9$v z-@3Ikv+9XP%SM%*OZsw8GA-x#eOHpeUdFv}`BW|Dg_GppYU%f_uCWZCC4JUt+vCZ- u_ul^5C-g2UNOP~-X_>`thV1WU{xC`%;>$LSe8>T`p25@A&t;ucLK6Us?OG22 diff --git a/src/main/resources/assets/tfmg/textures/item/mixer_blade.png b/src/main/resources/assets/tfmg/textures/item/mixer_blade.png index 8b33954017be56240b0c3846adbf843300da2380..5dac84940a76ea52fbf0dacf9747abf89862fa21 100644 GIT binary patch literal 512 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJV{wqX6T`Z5GB1G~mUKs7M+SzC z{oH>NS%G}50G|+7LvvdfuYlr;nyv|xV-gbL({eU!*zo`V|LfPUdw6+e<>Z)}nzpyM z1C=j%c(Mve@s$Mm1p^fz0E6p+J12lLoCO|{#XtpzL74G){)!Z!phSslL`iUdT1k0g zQ7S_~VrE{6o}X)of~lUNo_Y7R@0LI{+fpMu(>y)37&w3&Rt70XRt82O%L|C5p=^-v zG#Ht|;!HrcAtMvmw^2ZLW;+X5JPXJMfdn81>4(v1mNEdtX97C|3s8lDk+A{e0*I*~ z9jpr=CQSjdL4XNp4ii{qkfjBX1=VF}U;vU;b)VO}*ktQbAT!?6#W6%9xb<8h-vI>< z=72k^O0>T3f5#NK_;+NzSDb?58{wII+b+J8y4>_zyib@xGru9|3xo5*l#fS`Gs^8` zQITEX#k6(eD#pFn(h_pzgu9DgabAkO2iH6~r3=(zId21~3Kzk_`X>m?77%Uk7VMHUQam z9$sFkh9XPCFi0aT3_yI4p)ibM07w!BUNS%G}50G|-o__UmW;E2U5Ruxy&xOfE^n%kg!S%qM6F?cx0*}aIpn}67%y>M1MG8<*qQo_#Bsf218Gzw4ft`T`sKUU=*nn{X#8i+D z)&&rgrU2O>zyvgh39K^6(gMhW>M}Gi0LiMl&+A=mvh^sCS>@^C7@`pz+vmy0?8w1v z`zG?$|NFfet`m*y6m~J}KI-dqUG|2&V2oU(!?m#7mdKI;Vst066rI;{X5v delta 444 zcmV;t0Ym^w|8BU!z3YWLBclr+!0|8`lxC=I{UBS41 z%{m4JMFj>C5iy3pzkfkxAev?6Wf`n&Y*EBP0B!&bynOYX;n~y23}?@t2HOI1nSY6? z8H0(bDOe62pcnvh;@w+!;7){jD=j6F;qk*K47aXcgBwf`fSe7AoohF4{_mYU<-f79 zDb@f6n+8%0<{<%)pFz$B*?f5aUYs_=y$~1@1jZl$(kw0}$#CZMX@+A*4r6Erc?}lj zU;{vY2ifH5>I$^g49I>A4lv~KfPVpyMo>(Fq8bEPz$6enxc`7*`|jP~00RM#&9Epl zv#|cp#?B6Ag8~&4-A4}Y0~-uC9i&J~S{9rRWaVX0{0<60HEk`Zw@$$|g8+*2V1~e) z_x;Ofxc@TF0000NS%G}@0G|-ob;~z?`t+&3qT%ZK>)x(D2{B0%q-C}!D*N#91^fG4laaUJ<^igm zaAxu=AjMk}pgBxnl|hykKo(S&p@9KNR@Hr8?_!g!M}bT~PZ!4!jo{kT2gMo`I9x7r za(h1izkmDWOf$Wt?|KY+&G8H(8)i1BP8L6W@7%PygO@Hd_w9TCV6${ZU-1{-dELj^ lw{)IReU+mWGb>^0Gu931T-(zGb3H(|c)I$ztaD0e0stc8eYF4p delta 248 zcmVv$2Ov!#+r3?V20$~&*<@)>h)E*P<_Xd=|0&YE zMN#>`4%_t$l2FqTF0000Nrn}({omXw^*;uWjn({iet+k8X9JNrn}&_OlbMC}#w}Y5N-Ad0n;#h$?`bBQ;V0KSd5VS{cW1gf0|P_+41Mm2 vdCFXe85sBuGak=hkuq_18D9cWh7pJ%^kjL)C=ONkdA*BGwjQ0_$XEaXE@vKH diff --git a/src/main/resources/assets/tfmg/textures/item/steel_boots.png b/src/main/resources/assets/tfmg/textures/item/steel_boots.png index a3372a6dd5f5c19da4b79760c46b97fa339a0fde..fbe51ad2fea0ae816e72dc17d013142c1aca6493 100644 GIT binary patch literal 472 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJV{wqX6T`Z5GB1G~mUKs7M+SzC z{oH>NS%G|s0G|+7DLExob*-)mlYK+Niz{m4({c>WZGn>iHd`bDDUOmLzu^B6z;Lg5 zZzNERv%n*=n1Mm45QG^&->K>Y8CK#NQ4*Y=R#Ki=l*$m0n3-3i=jR%tV5(=RXWo77 zyCqP~w$upEG*3@01`Z&Hl|hP;m4Ok+@&aOMC>!Jp4Mt|LI1`X<$jAitRTPk&+0FtM z&jPYRpy>)D!waBiVKkbh3_z&~>vp@3Xlx~Oh9v)z$$|* zEr2YjE<*zYknF8RpSk>H=Ntwy{XJbALo|YW&joTFP~c&{aOBpvf97&4m8??E@cYga z>8g?a!!)5QMRaM}nI&6UYa8+#gkuWtgfI9lbFulAVuz5*S*Bl2O$@8HF1b|tHNS%4 XelKfq8r!!uAZt8b{an^LB{Ts5McZ_A delta 179 zcmcb?{E=~jTfMQdshNfK?0NGe zBY|R^1s;*b3=Bd=Aj}w-8vPh3=;!I;7@`r}d)krjfC7h0-~_Gj`wO2ZUzSL|v}wZ3 z^bL2O$ygEK3w&R2XRN)@`Po*d=~D5bO|O_GRGR{xpXO)?lw?hqt$$(< ZAC&ooa@Ed~xC zhm}E!k(GfF$npYWX(&4g$kt$F28%NR*@lcv3<5wp3Wzh?S-|31KsFH6Gt9Zd$nb)h z0ZyaY$^ev_z|Oz|RBK>lY{0kxVl2o?)&&rwrU2O>zyvgy39K^6(gMhW>M}Gi0Ldy_ zp3OPtYjPOK%w1 mu(VluYW2$d)pOLU@2J~vdc#^E!rEC6a)76+pUXO@geCyzziNO0 delta 184 zcmV;p07w7z1Cj!eMjtjfJ8*P(SzcdIQ&^jxpMZmgJU>D+Gc^DJ01{cDt&wFQe{%o; z5_18JBDn_u003)AL_t(2Q*Dh~4#hwSLTA9&{#RVI?d0aB_(P6}tN!!>R%`4S%?58k z>;Y!pku|0PLmO!$6xF!VO?&5)$RJ#CFfs+I628s0BfGi*b)yR&08qkD;^{ab0`7=- mL8Tteix-Hr#@^tl>H@l41%Od94n`yZ0000n999M? zMpgz!Aj=DgrJ?K~AX|fx87$5OWE(OvF$e(ZC?L*kX90_60og!M&#Le11Dr;) zl>sODR zN`eo_EcJA84ABVAJ$I0={;&cM^983{H#7xK{QsY`HPgUE*L;8TT;;lVKiJ(*DJfa* zb#|FET}x!gIZm%jJywbp>xX^>Wzopr06E)mJ^%m! delta 189 zcmV;u07Cz!1i%82MiN+EU}|x4e~5;cpPWifQ9wXNkys=I^AwU&k$@?G!2kdb!2!6D zYwZ940Ch=3K~yMHZO&T`#2^R-(4s9D>I2#TW`|6wHIpIngOdw*_)qI@4`i0&Ek^PJi$t>xfZBi!v;$o? rkUqwEcO;DXstn946nQfk1IXP!fvpSq@=<-!00000NkvXXu0mjf%R)}C diff --git a/src/main/resources/assets/tfmg/textures/item/steel_helmet.png b/src/main/resources/assets/tfmg/textures/item/steel_helmet.png index 7623e5bf1da47c99c2d01d8a308556cdec7b08fa..26c94fab10ba4f5cfdc3f59c9b2e2f504be492b7 100644 GIT binary patch literal 464 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJV{wqX6T`Z5GB1G~mUKs7M+SzC z{oH>NS%G|s0G|+7Rdp@jkns4l97A(kDLJLC36qN}YJifmp$rFr6h}#rU+{kjV7S-3 zHxekuS>O>_%)lU21j3AQsnL&tf)XXJ5hcO-X(i=}MX3w{iJ5sNdVa1U3Z{C7dgk5N zzFPv-Y)g&sO!M^AV&DLBSQ(@kSs56CEH5CIhO$Av&|qW+i!%Y)hKx*LUqu1gne8lK z@hl)41m;{}WOxDeER068lmRF;ft`T`sM5g5*nn{X#8i-ttP3C}O#!k&fC*?W6If-C zr3H`$)n#a40FqUF(*`7@`q8_pBpdgMolkpu?8$`wN3t`IV-o{8and z{7uS^X%kbxB(r#iEPE9Tg<-{+^s PAmcq<{an^LB{Ts5bx~~K delta 173 zcmcb>{F-rsTfLcub!1$8K}m&;y_2!A>Fjy)8=Bh~7#QyUKb`@kI7)*2g8xGR!@cIc zkw7ud0*}aI1_mK8X6#Yg$qp3s@N{tu(FmS;#*weVfrHthE93wF$E}MZA9+?Q7^s-; z`y}e~GL(6q<)g+u=TFNDIsTPB(DrVIfZ9yXNqKv{xyv-ynzb!UcxFC<`_ci{k`;Db RZ-Is~c)I$ztaD0e0s!U>L*4)Y diff --git a/src/main/resources/assets/tfmg/textures/item/steel_hoe.png b/src/main/resources/assets/tfmg/textures/item/steel_hoe.png index f5b31be26a2ccd8e47ab4c6c9f74b033544a496a..f136bce01291b903d7aaaa18e12ea3020a61ffe9 100644 GIT binary patch delta 189 zcmV;u07C!g1LgyeMkOUDDtm*5mz{P}^-6CmG!`3A=wf10%bj0OnUz5pMM00000NkvXXu0mjfwU|hB delta 190 zcmV;v073ue1Lp&fMkPEyLYtnSv9z@|I6IA#lu0%fXigr9XD28g3vhIJ0001Hk731; zYa$AA000tl0bXTWIn8XwO*F#*002@+L_t(2Q(ewc z4!|G?15gBEjQbyWnb_HkAK;Z3rG6#ovM02m+9NK^<`9nqRW|iXhVpwDgGU;@QU2Z& sc=QfH4*2p7CvTv90p|;ncm8SD1Dk&c_awyDjsO4v07*qoM6N<$f_MQ+OaK4? diff --git a/src/main/resources/assets/tfmg/textures/item/steel_ingot.png b/src/main/resources/assets/tfmg/textures/item/steel_ingot.png index 30049f93676e37b8c82f6c024dcc08895fb32a80..69446289314275af8bba18306bde470f62793ae7 100644 GIT binary patch literal 490 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJV{wqX6T`Z5GB1G~mUKs7M+SzC z{oH>NS%G|s0G|+7Lvvf-kZ>2TfcUhWt_hQiD{55LwSbZghqB9oBu7b*U+{kjV7S-3 zHxekuS>O>_%)r36AA}h#Sc6r7f)XXJ5hcO-X(i=}MX3w{iJ5sNdVa1U3Z{C7dgk5N zzFPv-Y)g&sO!M^AV&DLBSQ(@kSs56CEH5CIhO$Av&|qW+i!%Y)hKx*LUqu1gne8lK z@hl)41eTRCGQ0qK7Dl64$^ev_z|Oz|RB2#jY{0kxVk*c+)&&rgrU2O>zyvgx39K^6 z(gMhW>M}Gi0LkX`o#MBDCBX+|CVIL!hG+!Wo_FLspuofIXzh3Ce|?PQ1-VtL=G<^> zYWN!UgYnEiHU^&KVG1673DftuHB8~pTrG4#CNMP3kmpR*DTPl{@{K!=YTEObcvSY? p+`GYwEoLwK>lM4tE%|%pdcMBLOcrBNRu^}W#h$KyF6*2UngBjGcQpV2 delta 201 zcmaFG+|D$?t=_@GH6k{_%QrBquxR@HIrSZFCdQTw3=CoWB&Gu?j*=k1;QtW7aIbl9 zBv6dAz$3Dlfr0NJ2s7@OnEe(gnBwW;7@`qe+h@slz<}qlO8n3N{o2-?TqPRnlim2% z@YgdM-)CsJwn;ldBzD8u*_sX+86ifp8cu!_T~yYJNL2c?i*B*Mw!O4K?Kq3*8QXKS uLaV}-I!C|lpZavG?6fB{W~|@8<|{)mFN=4Oam*2*g$$mqelF{r5}E+R`%J?C diff --git a/src/main/resources/assets/tfmg/textures/item/steel_leggings.png b/src/main/resources/assets/tfmg/textures/item/steel_leggings.png index eb87fa07a5051a3ebf93deff21eae230409bee9c..e7d17a3a494e00c954a2365fa1bd7d7148007c4c 100644 GIT binary patch literal 474 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJV{wqX6T`Z5GB1G~mUKs7M+SzC z{oH>NS%G|s0G|+7Rdp>XIi=!?nyv|xO>_%)lU21j3AQsnL%?hLyNRlmzFem6RtIr7{F0X6BXX`MHKDnCcnonRj3N zZV6PgEj7Y3&C^qhfdj~4WsqWIWncudynt95$_DvDgOM35&IDu|GBSaE6$NBxwzGi6 zvw&<6m~(}Z;RVpMFdEHL2B6dgb_N!pN&_Qf1I7gqQ$aSeE`XRc1;_>gCZM@YV3k3Z z7C;tMm!W|HNLJbMY|b%Xlfyt}pr?yth(>Vf`9Q7%1{}-*$-#U7_qM-0mUHuy;FE{# zQF0soH;CFK*tJ<(dW%_Te`J!}=*)1f!9~sL%8uMQ0;W#2&an(z8G;wYF^H_FpZ9tv Y!)|3(vtFS)pde)MboFyt=akR{0EioIg8%>k delta 180 zcmcb`{E2abTfLcuwXv~jLv!2gdGiZODs1eXBIDv27#O_%TZRBBj*=k1;QtW7aIbl9 zBv6dAz$3Dlfk6n28GDp=vI7PEJzX3_G=fXddGZ}F;9z#}iTL;b@g|c~i>|SsKEwG* z`@Vy$kAhrtq)V{WqpllG7H?RXOPD9l(7mCU{+&ONS%G}B0G|+77q5Wgikj(j=J|$%$EW3-yLNT*+_|diT9(#!35jWj=C)lECjbBa z%*Q{lzN1Y_PARLf2&gq~fu$jk5-JJu3;vG|7#{84F9ek3EbxddW?8eR=R zL5ULAh?3y^w370~qEv=}#LT=BJwMkF1yemkJ@f8s-z|Y^wxvdRrg?g5F>nAmtPE0& ztPG4mmKP99L)jqTYA`Z`#hHL?Lq;aB@1ub1%yt&AcovWi0-wql8D0Pb1xBM;$^ev_ zz|Oz|RB2#jY{0kxVk*c+)&&rgrU2O>zyvgx39K^6(gMhW>M}Gi0LeP7T={6%&(x1V zW~HZ#V~9p@?)gBz!v-A80m8G@T6Lq}*Wc{iwt7|Ozt6%R4R6(da9ez4oe{bE%~C6d zpd`*!!IOS(T9Md(kA3Hw)fX2n;MMwCvEy}%-K9xq=N;fX!#92P!4QEEJ_*^kGj2GY xI%BDS!>PEd;_9)&sy(VoO6#64Dyn`rkN1eyYn8Gi-<001BJ|6u?C0O3hQK~#8N&5}I|!axv(b0!l-P!K$UV55y* z!NS5zScvI7gCG_PUL#=i41!j+M!tm?b`ldC3kM#%nVt8|{v-(gF1o#bR;OaU2@1CR zqtW?tHL8TjJQ$90&E^ZIRlIRx4y4uYScq@-4e0i`J0)rAM1QUX5kTkkyUT=jhm*@u z8-`5_fa>o+#_aWU(oV=#0@NKd-59kCb=Uor0JNS%G}H0G|+77q5WgikkSeoa*K_Rdubd36l-YZGA(+rR0==N`9T2qzI(AN`m}? z|HA;orZYO{fufuR9+AZi419+{nDKc2iWH!rM2TxeNpOBzNqJ&XDnmeGW?qS&pKFMM zsh**pdH1#NmOwSzQX@RmJUz7-IDi~h1}R2X21X#u3y7tmY>;m>7@5K1OhC3FBNNzn zQ9yQPI}2Dm3&;k61Rw_KhtX)3G62J40y_f>P=$e!u>s=(h^ZhQtP3C}O#!k&fC*?0 z6If-Cr3H`$)n#a40FqU8pVzzCWb08N)5p`rF+?M{_nbA~0Rs-^fX~Kf|LV_KxMb;6 zrB>EIY$-kWA4q(V+3IpV^yZO2tSwy|o!bo8vt2nLuF}CaPcxzU;mRHL>*U@|{eJbk Z0i&Wi`?<5HL-&B}@O1TaS?83{1OS^Cb%6i? delta 167 zcmV;Y09gOs1GoW@8Gi-<001BJ|6u?C0DnnDK~#8NV_+EGARsv6KM13X69qsT8=Bkx z7nD?xZU{_s@8l_P+RVb5I72|1XV04twi%|`#@>lE10v(%!G^#zgZReAroFOa9X+Y(XOAVA1605<^upZvLY$~ delta 96 zcmeys{DFCbn}&_O)9iWkdnZrXxMi!SnP`TeoSB7nWL$h_y1IrOcR@)70|P_E^K(iQ v^OU&`GcfQSW;~w1B4y(2GQI?$3?mRj=*jYoQ5>r7^LiJXY&|-;kue_tYhfQ) diff --git a/src/main/resources/assets/tfmg/textures/item/steel_shovel.png b/src/main/resources/assets/tfmg/textures/item/steel_shovel.png index 0e66e896037f7927bfb373c5b3f9ca2a88ea393a..7ef9b5e1e1d9fd470fc5743224228d74ecbac997 100644 GIT binary patch delta 93 zcmaFN{Fr%yo2sh1mXw^*;uWi^o7>{ka(qL=J delta 93 zcmaFN{Fr%yo2reylbMC}#w}ZWCr>FTsfdh=_cRmjOjp;CGb9j72N>E8Q6=+T#iDxG$9t!{f z07|N^y^(Pw3c>&Y4#EKyC`y2lpLP!Nb^!qB0{{T>b^!qB1Ct{GT7E*Qsp7i%W$^$2 z0A5K%K~yMHRgYT|01*tpLd&w-`=56Q_3D=-Y6f-=z{MfTDF}KAf(EfIdbcf{n}8N# z>fD85#L>qJD%rb>l%MQ89z_>-QK}@By;9!KM05(MUpuTDr0ai%%;fU}u(=5Mr98#m P00000NkvXXu0mjf88%gK delta 213 zcmey({F`}#o3@R;)5a}ZXV05&W?@}WQV|&!-#d9qKyZYonP`TeTxYtvh8#Bo1H->% zGgeJ3RN*?zz`%Ey@p%4s@TJ^(as@&eO#)L?bw~ z$5V(wk%M`$!mAVi?^~-jajWlgZn($Hz`xvQyTc=Qg+e9ULq)cSD!CHac1p}n&}cb& zLn~p@qdhJYrS{BIdKbIJuk~ffE%PZI&J49@QsWoA`z0hY@jUbP0l+XkKubxjB diff --git a/src/main/resources/assets/tfmg/textures/item/unfinished_electromagnetic_coil.png b/src/main/resources/assets/tfmg/textures/item/unfinished_electromagnetic_coil.png index 8c26f219518fc49ef99b5ad80a2cdd62aee8d737..53a637955c0f677f8410bb74793ceef3d200cbb7 100644 GIT binary patch delta 248 zcmeyw{DXOdqn~tuPl&6bxovz}PH{!e^f~huuUMt3uH_pN9vK(Uz`($`*INuoah3%6 z1^Le10|SJf%+DBA@3eB|qg_8! zKLYh+d%8G=XavXh2l6!-@Hj;a-1+OD6LD4I=Z#I%#Uj?u&ywFR7r-l*v4w3)qUR}7 zhK#w(d3XZMRND9hn2*=-M|cYhooDn`NG@Pr+4Jtyv2Pl)Ro?2bO3W&UxT lD&G$L-dXbhNL>lz`opXuHzvjJ=K{2}U)ulx delta 242 zcmeyt{E2yjqnAX0Pl#(ka6~~#MMHDj?0NIeEUY8r;%)4m7#J9I!=p9=DUOmLzu^B6 zz;Lg5ZzNERv%n*=n1O-sFbFdq&tH);vA>Kj0Vu-=#1MM2Fk@7`s{6d&#U@*i0!1@D zT^vI+f@Av~g&G1loJ3pe|4W-^MGA9^=Zjo8=YQ?-HRdydj0cJv1gEGpSu!l}5R{l8 z$Dt`u8m!RRQFM~=>7`p!ibD)<$<1`z5gogwed1HcTe)6W*mA2amQ{w|ebpFuNS%G}50G|+77q5Wgikj(j=GoXgnORsHn%f2hNBD+>cTJcapO#bK(IzFQlvP*+ zR6a$IAsgCZIV?V3k3Z7C;tMm!W|HNLJN-UhiU)tw({(1Wy;o5RKs6^Nw5x6nI=N zc3Smr{QB>@u4kyrukz0U0bi8=Fu4gUD4pznXx$&P;q8P5qf<`pCgqyyF&r1Hw$EU` z>SQGJ$Yput+O1nz=U$tonYaI=?cDyEO;3Kw?0s8Yt^e=`dwnDOg)bm`Jzf1=);T3K F0RS#(him`< delta 208 zcmZo&ZDmQGq$3?SO%ft$+!`O@SF| z0@g-)a_`b-NQ9j=U@&HRqAK8K#;`NS%G}%0G|+7Lvvf-kZ>2TfUXIXoFzei!T+Iv zA=tk{2qakG5n0T@z;^(I8MCf+asmY1ghDV8sVAd>8ZuQ0pzeUNHMZ9FalX#Kr9VqgM6aF$P5-|0kOkFcXkY-6J+xjn{cTD+$kDN$E{-7@!BhJTg$_ILFfle3{jcBXzDYYhsD-Ue zyCCkMJkyQ891Kg?45S6rlN*dYZwDW8+>sViZZ5F7YQZvzBWYKCg&I%f-CM%nEWC62 n5tYx%QHEb+PCtA7OTUouemATCl#iRQfGqWN^>bP0l+XkKRpEGe delta 200 zcmaFG+{iS+v0fs;C&X1>-^kI?&DS?bSy|o8%rYt}PF7l$fq|iMMnx@<;wTC73;quQ z4ELJ%Mgqk+3p^r=85sBuf-vKbiP>*~f^nWMjv*SsQ~NxH7!)~}ol}1P?^l0R^uf&X zqAa(I?N8MUp9L9ulKI-tFit=C%4wlwu%kq5nT<|pd)3ye^OOF!i%Cw6IaSk uy<8EzZnI}rNn{1`r2~9ITn)`_UAzLiCQOb`%PFp?QB~LS4GEW$Qv%AHFF80HNO6_~`33)n z0)}A!3L%hSfk$L90|Vb75M~tB@M-`GN|d-plmzFem6RtIr7{F0X6BXX`MHKDnCcno znRj3NZV6PgEj7Y3&C^qhfdj~4WsqWIWncudynt95$_DvFgOM35&IDu|GBPm;0O=?o z&TMA^i)R7ZAn>V-k>Lf%rp$(H+GT$j=1Vj12}Yb>pJdJ;>G*G+LZC9&&#zx?|MfM5F4U^4t?g%L>U$u~ z5-GLtS1rc`r6u#z8$)#_hV*oZowADf>=d=Iqr>pmHr;C-q7P@BV@qccdAld}dH%WD{5AYp++}O$FJtieXDh~N8ZPVT zfB#*<>qoMEUNwpKY>(GibJ*GCab{ha&GM`7!Ce6{ucL2547@`vwT*VKX?ob(v{C)F z(*lEL)!9*H{ZH0-2dWjUUH@L6<(tDiZJn(;+o!9D1zPFB4uyI#kZPusC6!+1rD9*1wiFAGNlKeYK$`Md)d z$7lY{0Reak@(wtS0BQ3io5~{qU2uvmkiDLSV|)b|-^5p-_c-@_>oJn20}#QSUW5B| ziPvF#hz{z?Vo9`x0OySi)-C(N}^kt1Hr@$8O1 z>2Hxh}UZo+&za7U=0N9d9dXVECgo34~bMN z`_=P+z3llB+!^-&$5C;#%BAD-CE;rSbR_Bf`&Ww{L4dq-a+b*Tv;uI5+D(8{Z-Fgz zMG{m*8hsh?H9rP_bW+6E=LZYm0<~`x$8-?5MKI5ant$*A8t_K~^pV>Fv~L#y+yQ+L zha~Wsk0|}8iuo1{%dyQlq=T<=5sJ@$I>QAs+0aeQn1-U5hX{&bL3CrBVY$Gyj1FQBrlgOKI{ x_`LNn{1`r2~9ITn)`_Rn@hmlBSEK+1B}!Z)N`mv#O3D+9QW*jgGxJLH{9Hp6O!W-) z%)76Bw*;!$mKx!i=IN=$zyaj2GDtD9GB5&JUO+4jWrKX8!N?32X9BVf8JQRafOHfP zXSTC|#j}8H5J&)GkbW4AW+?+OEGDosumDvU7#SNdE`XQ{(!sg_V$u{K8w8ku<}iU( z23cAFSx{Yu1_mHmRrh(li%qs31u{2!x;Tb-c)y+WkgM5&r}=XBthayXSGZVC6&AcZ z-;n3Zfths`TPx}{d)ULjGRQT2WvF9gcwqKIo}uxY(8V``CkzYJ8ai}ZWLLaqP(8Tj zWavqtK!9e-$#bVpZ)Q-fXL{=s$KJr!QPFvU_khjbt;Y_`ywGqXY-<1Nu=%EDWeZ&^ z7^ekU&3nb?ap~itw{aW`+8>=1n8$Ue{zr8=LwVt6j;f22$?LM&Uu=(jCo=igjMu*y X9<^C1Iht=b2YJNP)z4*}Q$iB}Rga-1 delta 313 zcmV-90mlBm1jz!B8Gi-<005$$euMx30T4+FO@S+#} zg&sV36a;@;nZT4~pfy4dO*#*jc6MXhS>m>7j4{R-V~jDz7_)eG`@<)O)~m-2a03?B zfc0jZjJEA6MR$KBjXbp0p_#*4-LE)c