From ac5db68f21844d817d7fc26351902c80ed417938 Mon Sep 17 00:00:00 2001 From: DrMangoTea Date: Sun, 21 Sep 2025 23:16:59 +0200 Subject: [PATCH] 1.1.0b update --- gradle.properties | 2 +- src/main/java/com/drmangotea/tfmg/TFMG.java | 2 +- .../tfmg/base/debug/DebugCinderBlockItem.java | 10 ++-- .../drmangotea/tfmg/config/MachineConfig.java | 4 +- .../decoration/pipes/TFMGPipeEntry.java | 47 +++++++++++++++--- .../content/decoration/pipes/TFMGPipes.java | 14 +++--- .../large_generator/RotorBlockEntity.java | 6 +++ .../large_generator/StatorBlockEntity.java | 21 ++++++++ .../ElectricMotorBlockEntity.java | 1 + .../drmangotea/tfmg/registry/TFMGBlocks.java | 2 +- .../tfmg/registry/TFMGElectrodes.java | 4 +- .../assets/tfmg/textures/block/electrodes.png | Bin 1024 -> 1191 bytes .../tfmg/textures/block/modular_pumpjack.png | Bin 1024 -> 810 bytes .../tfmg/textures/block/redstone_inlet.png | Bin 537 -> 524 bytes .../tfmg/textures/block/switch_inlet.png | Bin 548 -> 511 bytes .../tfmg/textures/item/aluminum_spool.png | Bin 277 -> 534 bytes .../tfmg/textures/item/constantan_spool.png | Bin 279 -> 534 bytes .../tfmg/textures/item/copper_spool.png | Bin 278 -> 528 bytes .../assets/tfmg/textures/item/copper_wire.png | Bin 244 -> 473 bytes .../tfmg/textures/item/lithium_blade.png | Bin 297 -> 534 bytes .../assets/tfmg/textures/item/screw.png | Bin 539 -> 512 bytes 21 files changed, 90 insertions(+), 23 deletions(-) diff --git a/gradle.properties b/gradle.properties index d86cbb98..637c67ae 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.1.0 +mod_version=1.1.0b 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/main/java/com/drmangotea/tfmg/TFMG.java b/src/main/java/com/drmangotea/tfmg/TFMG.java index bedb6011..5350a92a 100644 --- a/src/main/java/com/drmangotea/tfmg/TFMG.java +++ b/src/main/java/com/drmangotea/tfmg/TFMG.java @@ -76,7 +76,7 @@ public class TFMG { TFMGDataComponents.register(modEventBus); TFMGMobEffects.register(modEventBus); TFMGRecipeTypes.register(modEventBus); - TFMGArmorMaterials.register(modEventBus); + // TFMGArmorMaterials.register(modEventBus); TFMGColoredFires.register(modEventBus); TFMGFeatures.register(modEventBus); TFMGMountedStorageTypes.register(); diff --git a/src/main/java/com/drmangotea/tfmg/base/debug/DebugCinderBlockItem.java b/src/main/java/com/drmangotea/tfmg/base/debug/DebugCinderBlockItem.java index d1a6c093..5b4dffb6 100644 --- a/src/main/java/com/drmangotea/tfmg/base/debug/DebugCinderBlockItem.java +++ b/src/main/java/com/drmangotea/tfmg/base/debug/DebugCinderBlockItem.java @@ -3,6 +3,7 @@ package com.drmangotea.tfmg.base.debug; import com.drmangotea.tfmg.TFMG; import com.drmangotea.tfmg.content.decoration.tanks.steel.SteelTankBlock; import com.drmangotea.tfmg.content.decoration.tanks.steel.SteelTankBlockEntity; +import com.drmangotea.tfmg.content.electricity.generators.large_generator.StatorBlockEntity; import net.minecraft.core.BlockPos; import net.minecraft.world.InteractionResult; import net.minecraft.world.item.Item; @@ -27,16 +28,19 @@ public class DebugCinderBlockItem extends Item { BlockPos pos = context.getClickedPos(); Level level = context.getLevel(); + if (level.getBlockEntity(pos) instanceof StatorBlockEntity be) { + be.updateRotor(); + } if (level.getBlockEntity(pos) instanceof SteelTankBlockEntity be) { - if(!context.getPlayer().isCrouching()) { + if (!context.getPlayer().isCrouching()) { //SteelTankBlock.updateTowerState(be.getLevel(), be.getBlockPos(), true, false); - // be.updateTemperature(); + // be.updateTemperature(); TFMG.LOGGER.debug(String.valueOf(be.isDistillationTower)); //be.sendData(); //be.getControllerBE().sendData(); - }else { + } else { SteelTankBlock.updateTowerState(be.getLevel(), be.getBlockPos(), false, false); TFMG.LOGGER.debug(String.valueOf(be.isDistillationTower)); } diff --git a/src/main/java/com/drmangotea/tfmg/config/MachineConfig.java b/src/main/java/com/drmangotea/tfmg/config/MachineConfig.java index e1cc9f6b..e43a97ad 100644 --- a/src/main/java/com/drmangotea/tfmg/config/MachineConfig.java +++ b/src/main/java/com/drmangotea/tfmg/config/MachineConfig.java @@ -7,12 +7,12 @@ 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 ConfigFloat electricMotorInternalResistance = f(30, 0, "electricMotorInternalResistance", Comments.electricMotorInternalResistance); public final ConfigInt cokeOvenMaxSize = i(5, 1, "cokeOvenMaxSize", Comments.cokeOvenMaxSize); public final ConfigFloat FEtoWattTickConversionRate = f(1, 0, "FEtoWattTickConversionRate", Comments.FEtoWattTickConversionRate); - public final ConfigInt electrolysisMinimumCurrent = i(5, 1, "electrolysisMinimumCurrent", Comments.electrolysisMinimumCurrent); + public final ConfigInt electrolysisMinimumCurrent = i(10, 1, "electrolysisMinimumCurrent", Comments.electrolysisMinimumCurrent); public final ConfigInt engineMaxLength = i(5, 1, "engineMaxLength", Comments.engineMaxLength); public final ConfigInt surfaceScannerScanDepth = i(-64, -512, "surfaceScannerScanDepth", Comments.surfaceScannerScanDepth); public final ConfigInt polarizerItemChargingRate = i(1000, 1, "polarizerItemChargingRate", Comments.polarizerItemChargingRate); diff --git a/src/main/java/com/drmangotea/tfmg/content/decoration/pipes/TFMGPipeEntry.java b/src/main/java/com/drmangotea/tfmg/content/decoration/pipes/TFMGPipeEntry.java index 7b31f1e1..24b2b14b 100644 --- a/src/main/java/com/drmangotea/tfmg/content/decoration/pipes/TFMGPipeEntry.java +++ b/src/main/java/com/drmangotea/tfmg/content/decoration/pipes/TFMGPipeEntry.java @@ -27,7 +27,7 @@ import net.neoforged.neoforge.client.model.generators.ConfiguredModel; import static com.simibubi.create.foundation.data.ModelGen.customItemModel; import static com.simibubi.create.foundation.data.TagGen.axeOrPickaxe; import static com.simibubi.create.foundation.data.TagGen.pickaxeOnly; - +@SuppressWarnings("removal") public class TFMGPipeEntry { private final TFMGPipes.PipeMaterial material; private final TFMGRegistrate registrate; @@ -95,7 +95,14 @@ public class TFMGPipeEntry { .initialProperties(SharedProperties::copperMetal) .transform(pickaxeOnly()) .blockstate(BlockStateGen.pipe()) - .onRegister(CreateRegistrate.blockModel(()-> this.attachmentModel)) + .onRegister(CreateRegistrate.blockModel(()-> + switch (this.material){ + case BRASS -> TFMGPipeAttachmentModel::withAOBrass; + case STEEL -> TFMGPipeAttachmentModel::withAOSteel; + case ALUMINUM -> TFMGPipeAttachmentModel::withAOAluminum; + case CAST_IRON -> TFMGPipeAttachmentModel::withAOCastIron; + case PLASTIC -> TFMGPipeAttachmentModel::withAOPlastic; + })) .item() .transform(customItemModel()) .register(); @@ -134,7 +141,14 @@ public class TFMGPipeEntry { .build(); }, BlockStateProperties.WATERLOGGED); }) - .onRegister(CreateRegistrate.blockModel(()-> this.attachmentModel)) + .onRegister(CreateRegistrate.blockModel(()-> + switch (this.material){ + case BRASS -> TFMGPipeAttachmentModel::withAOBrass; + case STEEL -> TFMGPipeAttachmentModel::withAOSteel; + case ALUMINUM -> TFMGPipeAttachmentModel::withAOAluminum; + case CAST_IRON -> TFMGPipeAttachmentModel::withAOCastIron; + case PLASTIC -> TFMGPipeAttachmentModel::withAOPlastic; + })) .loot((p, b) -> p.dropOther(b, this.pipe.get())) .register(); } @@ -144,7 +158,14 @@ public class TFMGPipeEntry { .initialProperties(SharedProperties::copperMetal) .transform(pickaxeOnly()) .blockstate(BlockStateGen.directionalBlockProviderIgnoresWaterlogged(true)) - .onRegister(CreateRegistrate.blockModel(()-> this.attachmentModel)) + .onRegister(CreateRegistrate.blockModel(()-> + switch (this.material){ + case BRASS -> TFMGPipeAttachmentModel::withAOBrass; + case STEEL -> TFMGPipeAttachmentModel::withAOSteel; + case ALUMINUM -> TFMGPipeAttachmentModel::withAOAluminum; + case CAST_IRON -> TFMGPipeAttachmentModel::withAOCastIron; + case PLASTIC -> TFMGPipeAttachmentModel::withAOPlastic; + })) .transform(TFMGStress.setImpact(4.0)) .item() .transform(customItemModel()) @@ -156,7 +177,14 @@ public class TFMGPipeEntry { .initialProperties(SharedProperties::copperMetal) .transform(pickaxeOnly()) .blockstate(new SmartFluidPipeGenerator()::generate) - .onRegister(CreateRegistrate.blockModel(()-> this.attachmentModel)) + .onRegister(CreateRegistrate.blockModel(()-> + switch (this.material){ + case BRASS -> TFMGPipeAttachmentModel::withAOBrass; + case STEEL -> TFMGPipeAttachmentModel::withAOSteel; + case ALUMINUM -> TFMGPipeAttachmentModel::withAOAluminum; + case CAST_IRON -> TFMGPipeAttachmentModel::withAOCastIron; + case PLASTIC -> TFMGPipeAttachmentModel::withAOPlastic; + })) .item() .transform(customItemModel()) .register(); @@ -170,7 +198,14 @@ public class TFMGPipeEntry { .blockstate((c, p) -> BlockStateGen.directionalAxisBlock(c, p, (state, vertical) -> AssetLookup.partialBaseModel(c, p, vertical ? "vertical" : "horizontal", state.getValue(FluidValveBlock.ENABLED) ? "open" : "closed"))) - .onRegister(CreateRegistrate.blockModel(() -> this.attachmentModel)) + .onRegister(CreateRegistrate.blockModel(()-> + switch (this.material){ + case BRASS -> TFMGPipeAttachmentModel::withAOBrass; + case STEEL -> TFMGPipeAttachmentModel::withAOSteel; + case ALUMINUM -> TFMGPipeAttachmentModel::withAOAluminum; + case CAST_IRON -> TFMGPipeAttachmentModel::withAOCastIron; + case PLASTIC -> TFMGPipeAttachmentModel::withAOPlastic; + })) .item() .transform(customItemModel()) .register(); diff --git a/src/main/java/com/drmangotea/tfmg/content/decoration/pipes/TFMGPipes.java b/src/main/java/com/drmangotea/tfmg/content/decoration/pipes/TFMGPipes.java index f7805dd2..4e385bf7 100644 --- a/src/main/java/com/drmangotea/tfmg/content/decoration/pipes/TFMGPipes.java +++ b/src/main/java/com/drmangotea/tfmg/content/decoration/pipes/TFMGPipes.java @@ -43,15 +43,15 @@ public class TFMGPipes { public static final Map PIPES = new HashMap<>(); static { - PIPES.put(PipeMaterial.BRASS, createEntry(PipeMaterial.BRASS, TFMGPipeAttachmentModel::withAOBrass, TFMGSpriteShifts.BRASS_FLUID_CASING)); - PIPES.put(PipeMaterial.STEEL, createEntry(PipeMaterial.STEEL, TFMGPipeAttachmentModel::withAOSteel, TFMGSpriteShifts.STEEL_FLUID_CASING)); - PIPES.put(PipeMaterial.ALUMINUM, createEntry(PipeMaterial.ALUMINUM, TFMGPipeAttachmentModel::withAOAluminum, TFMGSpriteShifts.ALUMINUM_FLUID_CASING)); - PIPES.put(PipeMaterial.CAST_IRON, createEntry(PipeMaterial.CAST_IRON, TFMGPipeAttachmentModel::withAOCastIron, TFMGSpriteShifts.CAST_IRON_FLUID_CASING)); - PIPES.put(PipeMaterial.PLASTIC, createEntry(PipeMaterial.PLASTIC, TFMGPipeAttachmentModel::withAOPlastic, TFMGSpriteShifts.PLASTIC_FLUID_CASING)); + PIPES.put(PipeMaterial.BRASS, createEntry(PipeMaterial.BRASS, TFMGSpriteShifts.BRASS_FLUID_CASING)); + PIPES.put(PipeMaterial.STEEL, createEntry(PipeMaterial.STEEL, TFMGSpriteShifts.STEEL_FLUID_CASING)); + PIPES.put(PipeMaterial.ALUMINUM, createEntry(PipeMaterial.ALUMINUM, TFMGSpriteShifts.ALUMINUM_FLUID_CASING)); + PIPES.put(PipeMaterial.CAST_IRON, createEntry(PipeMaterial.CAST_IRON, TFMGSpriteShifts.CAST_IRON_FLUID_CASING)); + PIPES.put(PipeMaterial.PLASTIC, createEntry(PipeMaterial.PLASTIC, TFMGSpriteShifts.PLASTIC_FLUID_CASING)); } - private static TFMGPipeEntry createEntry(PipeMaterial material, NonNullFunction attachmentModel, CTSpriteShiftEntry spriteShiftEntry) { - return new TFMGPipeEntry(material, registrate).attachmentModel(attachmentModel).encasedSpriteShift(spriteShiftEntry); + private static TFMGPipeEntry createEntry(PipeMaterial material, CTSpriteShiftEntry spriteShiftEntry) { + return new TFMGPipeEntry(material, registrate).encasedSpriteShift(spriteShiftEntry); } public static void init() { diff --git a/src/main/java/com/drmangotea/tfmg/content/electricity/generators/large_generator/RotorBlockEntity.java b/src/main/java/com/drmangotea/tfmg/content/electricity/generators/large_generator/RotorBlockEntity.java index c5bf9266..34feb9af 100644 --- a/src/main/java/com/drmangotea/tfmg/content/electricity/generators/large_generator/RotorBlockEntity.java +++ b/src/main/java/com/drmangotea/tfmg/content/electricity/generators/large_generator/RotorBlockEntity.java @@ -90,6 +90,12 @@ public class RotorBlockEntity extends KineticElectricBlockEntity { return (int) Math.max(0, ((Math.abs(getSpeed()) - maxSpeed) * modifier)); } + @Override + public void onSpeedChanged(float previousSpeed) { + super.onSpeedChanged(previousSpeed); + updateNextTick(); + } + @Override public int powerGeneration() { return (int) (generation() * 40*1.84563); diff --git a/src/main/java/com/drmangotea/tfmg/content/electricity/generators/large_generator/StatorBlockEntity.java b/src/main/java/com/drmangotea/tfmg/content/electricity/generators/large_generator/StatorBlockEntity.java index 8b4e8cf0..90472ee6 100644 --- a/src/main/java/com/drmangotea/tfmg/content/electricity/generators/large_generator/StatorBlockEntity.java +++ b/src/main/java/com/drmangotea/tfmg/content/electricity/generators/large_generator/StatorBlockEntity.java @@ -5,6 +5,10 @@ import com.simibubi.create.api.equipment.goggles.IHaveGoggleInformation; import net.minecraft.core.BlockPos; import net.minecraft.world.level.block.entity.BlockEntityType; import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.phys.AABB; + +import java.util.Iterator; +import java.util.List; public class StatorBlockEntity extends ElectricBlockEntity implements IHaveGoggleInformation { @@ -31,6 +35,8 @@ public class StatorBlockEntity extends ElectricBlockEntity implements IHaveGoggl } + + @Override public void tick() { super.tick(); @@ -43,9 +49,23 @@ public class StatorBlockEntity extends ElectricBlockEntity implements IHaveGoggl } } + public void updateRotor(){ + + + Iterable blocksAround = BlockPos.betweenClosed(getBlockPos().below().north().west(),getBlockPos().above().east().east()); + + for (BlockPos blockPos : blocksAround) { + if(level.getBlockEntity(blockPos) instanceof RotorBlockEntity be) { + be.updateNextTick(); + timer = 11; + } + } + } + @Override public void onPlaced() { super.onPlaced(); + updateRotor(); if (rotor != null) if (level.getBlockEntity(rotor) instanceof RotorBlockEntity be) { timer =11; @@ -56,6 +76,7 @@ public class StatorBlockEntity extends ElectricBlockEntity implements IHaveGoggl @Override public void destroy() { super.destroy(); + updateRotor(); if (rotor != null) if (level.getBlockEntity(rotor) instanceof RotorBlockEntity be) { be.updateNextTick(); 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 ec0f37bb..f897825a 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 @@ -97,6 +97,7 @@ public class ElectricMotorBlockEntity extends KineticElectricBlockEntity { public void onNetworkChanged(int oldVoltage, int oldPower) { //if (oldPower != getPowerUsage() || oldVoltage != data.voltage) { delayedUpdate = true; + updateNextTick(); notifyUpdate(); // } } diff --git a/src/main/java/com/drmangotea/tfmg/registry/TFMGBlocks.java b/src/main/java/com/drmangotea/tfmg/registry/TFMGBlocks.java index 79fc7e24..338edb72 100644 --- a/src/main/java/com/drmangotea/tfmg/registry/TFMGBlocks.java +++ b/src/main/java/com/drmangotea/tfmg/registry/TFMGBlocks.java @@ -1048,7 +1048,7 @@ public class TFMGBlocks { .transform(pickaxeOnly()) .properties(BlockBehaviour.Properties::noOcclusion) .blockstate(new CreativeMotorGenerator()::generate) - .transform(TFMGStress.setCapacity(45.0)) + .transform(TFMGStress.setCapacity(12)) .onRegister(BlockStressValues.setGeneratorSpeed(64, true)) .item() .transform(customItemModel()) diff --git a/src/main/java/com/drmangotea/tfmg/registry/TFMGElectrodes.java b/src/main/java/com/drmangotea/tfmg/registry/TFMGElectrodes.java index 6ae823c3..ad64e668 100644 --- a/src/main/java/com/drmangotea/tfmg/registry/TFMGElectrodes.java +++ b/src/main/java/com/drmangotea/tfmg/registry/TFMGElectrodes.java @@ -14,7 +14,7 @@ public class TFMGElectrodes { public static final ElectrodeEntry copper = REGISTRATE.electrode("copper", Electrode::new) .properties((p) -> p - .resistance(100) + .resistance(10) .item(TFMGItems.COPPER_ELECTRODE) .operationId("tfmg:electrode") ) @@ -22,7 +22,7 @@ public class TFMGElectrodes { public static final ElectrodeEntry zinc = REGISTRATE.electrode("zinc", Electrode::new) .properties((p) -> p - .resistance(100) + .resistance(10) .item(TFMGItems.ZINC_ELECTRODE) .operationId("tfmg:electrode") ) diff --git a/src/main/resources/assets/tfmg/textures/block/electrodes.png b/src/main/resources/assets/tfmg/textures/block/electrodes.png index bf19f2be25b97ef603e7a3cd9bf192f553d34eb3..fb17ef2a21c2e1995d3c45c8e371c455792954f6 100644 GIT binary patch literal 1191 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE3?yBabR7dyjKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WChAO2Ka=yX5}S!bXP`es#IEQv$C@C^76{d$^HNTfA;M5SpgQJqM|=v9QgnB z?B6#>R&AZTDarl+87`VJU$$U9Ys7HJk?%xF*fu$a-O3C*6d2Zv zGaP(#a*ZOxMm3f#n(V9O85SuruF~Y3AA%>qJjFTafhvC8hr;nR*!UP$7IT%vp`J%;G{lqwZMA&^rIZSz&by*m!g*a8% z7_@m=B^elW_}G-V+2q)n#2FX_*_b8yxFvYGgxFbtp&F%f<0p{HE(!7r28J7*07J!0 z*M~rBISV`@iy0XB4ude`@%$AjKtYKT*NBqf{Irtt#G+J&fW*wa5IesvJDxT7zBWH6cA^& zvw+33fNT&*0Ai4S7>#Br129caU}pe@mw}P70pkLQsURJ!3m_&<0kT1W31|)zSY?o< z1&{^RWoTdkl2vt|*Spwc>rtR>lRRAVj#lyV43GG-;2E-FGirE^b(KVbz*-*Fz6}|No!i`I6TeN`3d=w4W(?HuJk}@g$8T9j7yuJc`1Ne#=2eG_xgQrG(OCret=$zMl=HmpNjDJ&YQiAGfRjW8jI&^zz{8`%*ReH>1}CPrZVY ztXB~Xm)0@MOcLswKf_Lv!7CuDc!rL+MQPPDAC6r-Sz*N|Yy@Y_wzn2k7x+1vBh zw=75sPz_D#JTQ0n_jkV!gtg{2E>M)WsoC<1IqV{jYUqUt{qxtXZ9fodF+noNrgqy) z=J17_9#L05i$~vPT%pYtYu2Ub{pjiH>(+J&p{WaJPZFEz`Q>;1y%%JQf7kqH{KH_^tE5$bQyG*W7(8A5T-G@yGywqkx81b> delta 1013 zcmVK?#6^!xO&!<~!y2 z2T%Q?r2^0r9xwiUsi>;z8-_tXm!r{a;(4Cp`@T;MilQhii3~s?yBZM)@wjLO1P=Pq znqe4py4@&tkAFd1Sz+opjK||;a|Z+-J}6<|FVSyYCNEkl+m$SP)!xiz%QOKPjYa@y z-f!TTDCg&B%YXm*fIvJ5r2yEg_Smju`8`$v;W${PiSPTgS}mBq!fiPLnS1yCJApXn zD_|G~mT6*H7L8^T0KZp7)3jhiubrGgzj16#dIyr%K?&=1LlhAb?Aq19XVTa{DO+n4WZ~Ba@32m4!uQBNk zuYB44>$0(=l)PgF(u5MYZ(K4NNU19Bz)M8n)(V9EpzAu8Wg&!!Dj-G{2Q{eIJlwIB zj6kP(%zsTJLP#kQLLeL`s=&d%WY|+Vu0#9yT1VfA=&P$_C_Q->_!};!U#Ht;V|_gu zMD?QysybmZfrI*@h3|sM1#2I^w~+kg^-&btwvAyJ2qB^hh%|_FhOw#R8Hw_f%9qzD zZf(+f^AGv*+O-?|{eCnFLkJXPTBX*Jcxo~UqJJI$h(8laaEbXQte*KC4o3`CXgJAi z7)emv+Pu>T;W!2uni~59pPGcjQKI~T1i*|0@ev#%)W2A`98O2VrSC&y2&Xb30f0(j zgW}faf&}dB&V<5o5JDhjkj?R-FJZN`N-B0}Ek&TyJf_;N0n9ex&Mv(AH41fI56*&^ z1b-vdL|HXCI+vXJ3D1Ijd5ub8VM%xNb!1@J z*w6hZkrl|-3h)VWH8i(XRoC(j37SUf$)z*^>fA7c^Juld1cv!t{$_9x~yPn;Tm+$-Op1|j= z(YGf|X~7=WXRLV{+&h`_8!I=isMmhNwM5V0e%0UGZ85Ly?7m0voHW~B@xNt7{p}6c zuUmlxJofDr_jkBb&%|&tI^I4kpY`|a)qUq}r!mZ!eyu!-L2OM*LuKK8K1c11{3jbC z?2p=QNEX&>`*rjV^WQ%U=O24?v3o~D-M?K5aq=7t8~OjNspoj~m2r)Jn)0jX`jh%j zckumK!@p!lALE;;mEt|085&|{ZhvUO&(csO+y9xtdU~aT)&%2?Opk2}YM7p>$vkKL z1t!!bo->x|ffY2&J#BN~T&i5c^E|l)&yevQcC{z-zcyYv_Fw+|PJW*g=y*!+cXK8V gg$4#vi324E%%cMgimp{Pnu8+9)78&qol`;+0K@|k?*IS* delta 985 zcmZ3**1$1Al7o$bf#I-S;^~Qs3iX@?9+AZi419+{nDKc2iWCM0=Bb`8jv*CsZ}0ee zhXl$T|M+^T&SaCo4eACf+LV-56bSElDZ3>jackC9fwfhP`??B)x4cNaxTySs+Y82v z3QnsGH5aQp8uD&F_Tkz4lJf=6tgIfN(Rnv>pZtz9JJb7C|NmeA>`pO1o46jITfO7d zH#Zs^Kd;_(WnY!)QBMr#nu!S}(s}<|~>%g(dHUY1o}r z`T6&^=7}Y+eQ>wE#r|2nf}Uj6(zTt@Ev)4$|C`#gR9v&otF?T@k))PD~BS*ErjyQ$)amAAJ&b8mnC zL&?buCm;Cx?cpua{g_BqJ)mjyN=e+Vh?C;x$F+W~BtZy!T-E!#E{2i?( z#?c44HZaBJZC!6?&Us~f;MMF~*T1ZnWUAv3^~wE|^KHfQ_a?{K;;!bGvp(D&(7pGG zn!lyg;*FaEKbXF~{VF~#&TPKN_6xOJqdk{yG<#vg_+#TPtot+=SSOCJ_}i(azQ(hHU2&Gq=WMNinT9&{&)7ZdBls# zbt)US&SP)b-^Kah-?P=9R@?G3?4QZv!B(&Robkc-UFVq(lOlK=1;m`_&w9%H$xRyz}D&3pWB}Wtoid~@q@JA49?EZ7au58GoL-6;$ZY+>Nmzu zKWiqOOnGGeW6e>v_{MGdf8WeFr%o3SHr{}c~IQd@s-Qbwk^xlLhJ zrKzcvjlEMqaD*)*Ll`4tWL&(diB-nNW@(@SoCO|{#S9F5he4R}c>ao%iSy)HjehT8 z-Zt@2kbDAA2_q20=zzq`yb?V>*AN9$JwrXC$;OPH^)Ih}vp97trwXX7-_yl0MB;LC zf(Q#UBb%bCYI3shbOScUix(~gI36@&TbL01_)&thg7T5jn;J(pHaQxY6kT2QvNeh4 z*u$`DKmDMfqyXDhrDbQ8l7rcf_J%Egr=!K2sxf^nlb58lF$b5|x+qiAkRHc~Js~G8 z?p$qhbYV#`Sg=yEnd8K%3l7F?7e6^YO-Ouf#J0^u;e^L&W(Ij)H34&b`BVBbXL}TTe4zDkV!EV7#tz?8Q1^-010qNS#tmY4#5Bb4#5Gqk!$Udm39f)b^!qB z0{{TolN148e`~td8;V3ExYHLjo9Fl z_YFqmdG#IP@6vg0ovoi9-^Ko_J7Q}-XE(jxV$}qo5U*vv)Bpeg07*qoM6N<$f*E6G A-v9sr delta 287 zcmV+)0pR}s1Ed6yK~y$SOjJcbKSWYiT9%%hVrXfMl#+&zjW;(uae8?*H99djJw!@S zO;lH>T0qEjR@Qr4vSLS&Nij7vI;rS(*#H0l32;bRa{vGi!Tu5^ zAVAE}<)m(526uP3C`1I);2?Pe0M&pJT_s9C5W)5_0yPZnm}~DftAMob`8v+mv2JOU zpWIZ=y~*6N)l-hs-Ckl71S^U;{Oeu(nq}t5j-MklKVL121aYF_rEUNK002ovPDHLkV1fd^cMt#o diff --git a/src/main/resources/assets/tfmg/textures/item/aluminum_spool.png b/src/main/resources/assets/tfmg/textures/item/aluminum_spool.png index 114bd63314433a5ec7c2465cf2309d371b13c3ad..53f572236d903aaaa4290b688dc6c18051175cc4 100644 GIT binary patch literal 534 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJV{wqX6T`Z5GB1G~mUKs7M+SzC z{oH>NS%G}r0G|+7Jy|hlT?Jng#Y6{rRdGR66-jkT;lkpM%h#{JegFRd|Nj%G%=Yuo z*|2RFP{&h$9|Iu8UlQaO43t6w3|H>VSO}EjEbxddW?Sb!=FjEoH! z7eGt}>0n&|F=+~r4FXI+bC|#?gDfq8ET}F+15ijXsJhSVU2L-TD3Dp`>Ealo5ggm^ z&3D*=!@0NpXX~Wj^4n)IWQFKQ*fi!A{O3IHA=a+KzRbez~##f+*=(%VN*oy}PA~=*>0 zMoE#JbaB1M;dpYdx_0Nw)!puofQq4s>pmd)tSWB;ctTD6rjif~NS%G}r0G|+7Jy|hlT?Jng#Y6{rRdGR66-jkT;m(4T^M_VEy}SRzr>8R;i^}7| zb}Z-x>bO)DwF*e_mjw9*|3?7~SMJPM2$bS1@Q5sCVBk9p!i>lBSEK+1B}!Z)N`mv# zO3D+9QW*jgGxJLH{9Hp6O!W-)%)76Bw*;!$mKx!i=IN=$zyaj2GDtD9GB5&JUO+4j zWrKXE!N?32X9BVf8JWO7jsmhX+gZTkSwJ=jBmgl;Ka57RlmQq<6WAG8fGP}(j13qU zKuiVcU|j$)X$p`H0!%=2n7}H7EG>X6s4hbT1CXq$`@G)8CR>jJnT4J%jv*SsvHjkB zhaEVad)t4uPWmmseHKGjh<=1kV{XBJ&hs9k4I4}+En>W&$t-bb9izvh?~aKKw&D)m zvzZkRB`b0iocEeJ)9CuXZ*iyXShwky8~ZPalAg6J_UzreTdFt?Z%$fV^*H#;_c^Z$ bJw99$m*?dW{>vjO4swX6tDnm{r-UW|n!}Fz delta 262 zcmV+h0r~!x1eXGk8Gi-<001BJ|6u?C0NzPNK~#8NV_={*(32JWj}N1(M*$!O&bkW! zeN7bqCpyT3F^CPrAURcWLF|TrG@GhOf)%Pu3WG7sRu~^72U3I85RgKcO(4Y}g~%9Y z00?6>03--=KC&0ky@JylAVCm@c?BB=$-&g2>j#6*f|UPH?|<(9KeMsu|BeN{C>SON zQiHA!4nUIU53K+j^5N4{Fb%>WF%SkBQXUtE-vE#XkWC;B$hN~=fYSh&-w3$?XBdD4 zVR4Kr43O2J>qkk2=*bs`@kS#EU`xu#X#l6~$NNn{1`wE}!XT=itdoOKm^O%xLy|rH({Oo| z15mm6mDxLh6kkb@U+{lqz~Fk|&IzClXMsm#F;Kx_5N14{zaj-FC{f}XQ4*Y=R#Ki= zl*$m0n3-3i=jR%tV5(=RXWo77yCqP~w$upEG*3@01`Z&Hl|hP;m4Ok+@&aOMC>!KE z4Mt|LI1`X<$jHPX0HmXUIJ2DvES?2qgFpfhgY?5_G)ozP;WL4qfd#0-z{uEuaRJ0s zkPg-b5R;|=*&x6KG=~YSGRV>b$b#xJG%x_ks=CkXU2L-TD3F=&>Eak75gytf$;WKS z;oSQ;$NAa6>uZ@hZ~bC^$+>~?{eFR`FARE?PB39zd`ap;Pv}9F!0g3_5!Esp8#hR% z-Fe;iV0--kdH-t9JfE5T00000 LNkvXXu0mjfsWEIa diff --git a/src/main/resources/assets/tfmg/textures/item/copper_wire.png b/src/main/resources/assets/tfmg/textures/item/copper_wire.png index 1d7c898d5859d74d4d2c6648e0abd8421cdaeebf..21f087ecc78eb09e70eb6abe57563b734f8310b3 100644 GIT binary patch delta 386 zcmeyuc$0a8n`E@6%JL|O37&?wVsa-+!md?EGcYjZ>hOG-7%x{}#K0g_#2A+v{TL`H zQQ{g=5}cn_Ql40p$`Fv4nOCCc=Nh75s%NNY-hJ)6B~Z<_)CkWsPfsld4j_k>L5h); zff2~^0%B<>I|#_uU}Of1GXdF#j7$syKspMDGuv6f;#oj85Y#iwxx&csf|&tMquI&; zl$yZKzyefjU}S8-xBy}-$V%1)5Tm95*&x6KG?)pjGRV>b$b#xJG%x_kDqEh-Ip%9} z7|0Cqba4#P2+lq4$rpD(fyepce5)V-+}BAhxS%-uM1JDQAEkd7cP9xKzHwL((`5O? z*I?7yIku0>ciggGaaH|=!)wtc^A>PAi`?=K{dsTEnN!(wLVoW4# delta 155 zcmV;M0A&B!1M~rqMj4byNZ@;7xLi_QC^PY^b^p?h0000-tRuCNUmkaJ000tm0gNKK z2LJ#7RY^oaR47wz%|Q~tAP57%XpsLu*&tYLr(9z85aFNu1>CAPTIFWNS%G}B0G|+7RducDbLLeyw@Jw<#i!*=oHG0E`}c*#9ljyqm#<$huBdVG3eZuM zvC&nJjElE7)KU@`0cwq#a^otH5-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~!%)V~9p@Xul)h0R;}0>x-raS@^UW-*3rZ?_Cr{b1ZP(lP?AEhiv2V)2Sq#T7L!UIB*YwyNq{QgTYZA>j-R47?|G4go2y zk|4j}|1iL?>5R^KpeSd7M`SSr10PTY-yud(4X=iYi_7>vl`%5BU}j)|(38~}qw1Yj zu6(rXXX;0wo_tRi#}JL+*uFp^7DpE6%N#}jx$`&PHr+az|EP0ATvNfl1OGUdJU%$( z$efOo0;(GW#Y?={uZf>|QFyzNb$9B%tqOg&_Wxylm($ZLqNtG=5v_TE@gdu^NhRwt v*^Vug+LPX_v+_~hs#UY3rR(Z#eleWRU>6Wzed#?HXg7nWtDnm{r-UW|IG|=M delta 312 zcmZo*nawi6v0f{{C&V>AEhiv2V)2Sq#T7L!UIB*YwyNq{QgTYZA>q^K%R| zDNig)We7;j%q!9Ja}7~2)tk5>k}mqH|vg4;u==8Ly*62S q^TNdo{Bp|kk4aDa_wVuY@9d1TI3;Ix=$QhY!QkoY=d#Wzp$PzBnRovH