From 4064efd028356df06784707d026b7c51a924ac86 Mon Sep 17 00:00:00 2001 From: HbmMods Date: Sun, 19 Jul 2026 16:47:23 +0200 Subject: [PATCH] guh? --- .../blocks/machine/pile/BlockPileDevice.java | 10 +- src/main/java/com/hbm/items/ModItems.java | 34 ++++--- .../com/hbm/items/machine/ItemPileRodMK2.java | 90 ++++++++++++++++++ .../render/tileentity/RenderPileLoader.java | 2 +- .../machine/pile/TileEntityPileCore.java | 62 +++++++++++- .../machine/pile/TileEntityPileLoader.java | 32 +++++-- .../assets/hbm/textures/items/pile_rod.nu.png | Bin 0 -> 274 bytes .../hbm/textures/items/pile_rod.po210be.png | Bin 0 -> 274 bytes .../hbm/textures/items/pile_rod.pu239.png | Bin 0 -> 279 bytes .../hbm/textures/items/pile_rod.ra226be.png | Bin 0 -> 274 bytes .../hbm/textures/items/pile_rod.rgp.png | Bin 0 -> 275 bytes .../hbm/textures/items/pile_rod.waste.png | Bin 0 -> 231 bytes .../assets/hbm/textures/items/pile_rod.zr.png | Bin 0 -> 271 bytes 13 files changed, 201 insertions(+), 29 deletions(-) create mode 100644 src/main/java/com/hbm/items/machine/ItemPileRodMK2.java create mode 100644 src/main/resources/assets/hbm/textures/items/pile_rod.nu.png create mode 100644 src/main/resources/assets/hbm/textures/items/pile_rod.po210be.png create mode 100644 src/main/resources/assets/hbm/textures/items/pile_rod.pu239.png create mode 100644 src/main/resources/assets/hbm/textures/items/pile_rod.ra226be.png create mode 100644 src/main/resources/assets/hbm/textures/items/pile_rod.rgp.png create mode 100644 src/main/resources/assets/hbm/textures/items/pile_rod.waste.png create mode 100644 src/main/resources/assets/hbm/textures/items/pile_rod.zr.png diff --git a/src/main/java/com/hbm/blocks/machine/pile/BlockPileDevice.java b/src/main/java/com/hbm/blocks/machine/pile/BlockPileDevice.java index 4d07078c6..d362e0c7e 100644 --- a/src/main/java/com/hbm/blocks/machine/pile/BlockPileDevice.java +++ b/src/main/java/com/hbm/blocks/machine/pile/BlockPileDevice.java @@ -133,9 +133,10 @@ public class BlockPileDevice extends BlockContainer implements IBlockMulti, ILoo @Override public boolean isSideSolid(IBlockAccess world, int x, int y, int z, ForgeDirection side) { int meta = world.getBlockMetadata(x, y, z); - if(meta < BLOCK_META_CONTROL) return false; - - return side.ordinal() == meta % 4 + 2; + if(meta >= BLOCK_META_CONTROL) return side.ordinal() == meta % 4 + 2; + if(meta >= BLOCK_META_VENT) return false; + if(meta >= BLOCK_META_LOADER) return side.ordinal() == meta % 4 + 2; + return false; } @Override @@ -153,6 +154,7 @@ public class BlockPileDevice extends BlockContainer implements IBlockMulti, ILoo if(tile instanceof TileEntityPileLoader) { TileEntityPileLoader device = (TileEntityPileLoader) tile; text.add("Index: " + device.chanNum); + if(device.syncStack != null) text.add("Loading: " + device.syncStack.getDisplayName()); } if(tile instanceof TileEntityPileVent) { @@ -162,8 +164,8 @@ public class BlockPileDevice extends BlockContainer implements IBlockMulti, ILoo if(tile instanceof TileEntityPileControl) { TileEntityPileControl device = (TileEntityPileControl) tile; - text.add("Extraction level: " + (int) + (device.level * 100) + "%"); text.add("Index: " + device.chanNum); + text.add("Extraction level: " + (int) + (device.level * 100) + "%"); } if(!text.isEmpty()) diff --git a/src/main/java/com/hbm/items/ModItems.java b/src/main/java/com/hbm/items/ModItems.java index f44a125be..aeae45ce9 100644 --- a/src/main/java/com/hbm/items/ModItems.java +++ b/src/main/java/com/hbm/items/ModItems.java @@ -973,13 +973,15 @@ public class ModItems { public static Item waste_plate_ra226be; public static Item waste_plate_pu238be; - public static Item pile_rod_uranium; - public static Item pile_rod_pu239; - public static Item pile_rod_plutonium; - public static Item pile_rod_source; - public static Item pile_rod_boron; - public static Item pile_rod_lithium; - public static Item pile_rod_detector; + @Deprecated public static Item pile_rod_uranium; + @Deprecated public static Item pile_rod_pu239; + @Deprecated public static Item pile_rod_plutonium; + @Deprecated public static Item pile_rod_source; + @Deprecated public static Item pile_rod_boron; + @Deprecated public static Item pile_rod_lithium; + @Deprecated public static Item pile_rod_detector; + + public static Item pile_rod; public static Item plate_fuel_u233; public static Item plate_fuel_u235; @@ -2998,13 +3000,15 @@ public class ModItems { waste_plate_ra226be = new ItemDepletedFuel().setUnlocalizedName("waste_plate_ra226be").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":waste_plate_ra226be"); waste_plate_pu238be = new ItemDepletedFuel().setUnlocalizedName("waste_plate_pu238be").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":waste_plate_pu238be"); - pile_rod_uranium = new ItemPileRod().setUnlocalizedName("pile_rod_uranium").setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":pile_rod_uranium"); - pile_rod_pu239 = new ItemPileRod().setUnlocalizedName("pile_rod_pu239").setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":pile_rod_pu239"); - pile_rod_plutonium = new ItemPileRod().setUnlocalizedName("pile_rod_plutonium").setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":pile_rod_plutonium"); - pile_rod_source = new ItemPileRod().setUnlocalizedName("pile_rod_source").setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":pile_rod_source"); - pile_rod_boron = new ItemPileRod().setUnlocalizedName("pile_rod_boron").setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":pile_rod_boron"); - pile_rod_lithium = new ItemPileRod().setUnlocalizedName("pile_rod_lithium").setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":pile_rod_lithium"); - pile_rod_detector = new ItemPileRod().setUnlocalizedName("pile_rod_detector").setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":pile_rod_detector"); + pile_rod_uranium = new ItemPileRod().setUnlocalizedName("pile_rod_uranium").setCreativeTab(null).setTextureName(RefStrings.MODID + ":pile_rod_uranium"); + pile_rod_pu239 = new ItemPileRod().setUnlocalizedName("pile_rod_pu239").setCreativeTab(null).setTextureName(RefStrings.MODID + ":pile_rod_pu239"); + pile_rod_plutonium = new ItemPileRod().setUnlocalizedName("pile_rod_plutonium").setCreativeTab(null).setTextureName(RefStrings.MODID + ":pile_rod_plutonium"); + pile_rod_source = new ItemPileRod().setUnlocalizedName("pile_rod_source").setCreativeTab(null).setTextureName(RefStrings.MODID + ":pile_rod_source"); + pile_rod_boron = new ItemPileRod().setUnlocalizedName("pile_rod_boron").setCreativeTab(null).setTextureName(RefStrings.MODID + ":pile_rod_boron"); + pile_rod_lithium = new ItemPileRod().setUnlocalizedName("pile_rod_lithium").setCreativeTab(null).setTextureName(RefStrings.MODID + ":pile_rod_lithium"); + pile_rod_detector = new ItemPileRod().setUnlocalizedName("pile_rod_detector").setCreativeTab(null).setTextureName(RefStrings.MODID + ":pile_rod_detector"); + + pile_rod = new ItemPileRodMK2().setUnlocalizedName("pile_rod").setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":pile_rod"); plate_fuel_u233 = new ItemPlateFuel(2200000).setFunction(FunctionEnum.SQUARE_ROOT, 50).setUnlocalizedName("plate_fuel_u233").setMaxStackSize(1).setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":plate_fuel_u233"); plate_fuel_u235 = new ItemPlateFuel(2200000).setFunction(FunctionEnum.SQUARE_ROOT, 40).setUnlocalizedName("plate_fuel_u235").setMaxStackSize(1).setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":plate_fuel_u235"); @@ -5357,6 +5361,8 @@ public class ModItems { GameRegistry.registerItem(pile_rod_boron, pile_rod_boron.getUnlocalizedName()); GameRegistry.registerItem(pile_rod_lithium, pile_rod_lithium.getUnlocalizedName()); GameRegistry.registerItem(pile_rod_detector, pile_rod_detector.getUnlocalizedName()); + + GameRegistry.registerItem(pile_rod, pile_rod.getUnlocalizedName()); //Plate Fuels GameRegistry.registerItem(plate_fuel_u233, plate_fuel_u233.getUnlocalizedName()); diff --git a/src/main/java/com/hbm/items/machine/ItemPileRodMK2.java b/src/main/java/com/hbm/items/machine/ItemPileRodMK2.java new file mode 100644 index 000000000..2fd4fc344 --- /dev/null +++ b/src/main/java/com/hbm/items/machine/ItemPileRodMK2.java @@ -0,0 +1,90 @@ +package com.hbm.items.machine; + +import com.hbm.items.ItemEnumMulti; +import com.hbm.util.BobMathUtil; +import com.hbm.util.EnumUtil; + +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; + +public class ItemPileRodMK2 extends ItemEnumMulti { + + /* _____ + * / \ + * \_____/ + * | | + * | | + * | | + * | | + * \_____/ + * + * Not terribly sophisticated, + * it's a cylinder. + */ + + public static final String KEY_NBT_DEPLETION = "depletion"; + + public ItemPileRodMK2() { + super(EnumPileRod.class, true, true); + } + + public static enum EnumPileRod { + RA226BE(1D), + PO210BE(1D), + ZR( 0D, 0D, 0D), + NU( 1D, 1_000D, 1D), + RGP( 1D, 1_000D, 1D), + PU239( 1D, 1_000D, 1D), + WASTE( 1D, 1_000D, 1D); + + public double reactionMult = 1.0D; + public double life = 1_000D; + public double heatMult = 1.0D; + public double neutronSource = 0D; + + private EnumPileRod(double neutronSource) { + this.neutronSource = neutronSource; + this.reactionMult = 0; + this.life = 0; + this.heatMult = 0; + } + + private EnumPileRod(double reaction, double life, double heat) { + this.reactionMult = reaction; + this.life = life; + this.heatMult = heat; + } + } + + @Override + public boolean showDurabilityBar(ItemStack stack) { + return getDurabilityForDisplay(stack) > 0D; + } + + @Override + public double getDurabilityForDisplay(ItemStack stack) { + EnumPileRod rod = EnumUtil.grabEnumSafely(EnumPileRod.class, stack.getItemDamage()); + double life = rod.life; + if(life <= 0) return 0D; + return getDepletion(stack) / life; + } + + public static double getDepletion(ItemStack stack) { + if(!stack.hasTagCompound()) return 0D; + return stack.stackTagCompound.getDouble(KEY_NBT_DEPLETION); + } + + public static void setDepletion(ItemStack stack, double depletion) { + if(!stack.hasTagCompound()) stack.stackTagCompound = new NBTTagCompound(); + stack.stackTagCompound.setDouble(KEY_NBT_DEPLETION, depletion); + } + + public static double getReactivity(ItemStack stack, double inFlux) { + EnumPileRod rod = EnumUtil.grabEnumSafely(EnumPileRod.class, stack.getItemDamage()); + double outFlux = rod.neutronSource; + if(rod.reactionMult > 0) { + outFlux += BobMathUtil.squirt(inFlux) * rod.reactionMult; + } + return outFlux; + } +} diff --git a/src/main/java/com/hbm/render/tileentity/RenderPileLoader.java b/src/main/java/com/hbm/render/tileentity/RenderPileLoader.java index b08f82c0a..35f557bb5 100644 --- a/src/main/java/com/hbm/render/tileentity/RenderPileLoader.java +++ b/src/main/java/com/hbm/render/tileentity/RenderPileLoader.java @@ -44,7 +44,7 @@ public class RenderPileLoader extends TileEntitySpecialRenderer implements IItem GL11.glTranslated(position * -0.5, 0, 0); ResourceManager.pile_loader.renderPart("Slider"); - if(loader.hasRod) ResourceManager.pile_loader.renderPart("Rod"); + if(loader.syncStack != null) ResourceManager.pile_loader.renderPart("Rod"); GL11.glShadeModel(GL11.GL_FLAT); GL11.glPopMatrix(); diff --git a/src/main/java/com/hbm/tileentity/machine/pile/TileEntityPileCore.java b/src/main/java/com/hbm/tileentity/machine/pile/TileEntityPileCore.java index 0fc73eed9..a92e97f8d 100644 --- a/src/main/java/com/hbm/tileentity/machine/pile/TileEntityPileCore.java +++ b/src/main/java/com/hbm/tileentity/machine/pile/TileEntityPileCore.java @@ -15,9 +15,11 @@ import com.hbm.tileentity.TileEntityTickingBase; import com.hbm.util.fauxpointtwelve.DirPos; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; +import net.minecraft.entity.item.EntityItem; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.nbt.NBTTagList; import net.minecraftforge.common.util.ForgeDirection; @NotableComments @@ -246,6 +248,7 @@ public class TileEntityPileCore extends TileEntityTickingBase { public final PileChannelType type; public final ItemStack[] rods; + public double heat = 0D; public int air; public double control = 1D; // pulled out by default, unlike me who never pulls out @@ -255,7 +258,7 @@ public class TileEntityPileCore extends TileEntityTickingBase { this.length = type == PileChannelType.CONTROL ? height : type == PileChannelType.FUEL ? depth : width; - + this.rods = new ItemStack[length]; } @@ -271,6 +274,47 @@ public class TileEntityPileCore extends TileEntityTickingBase { nbt.setInteger(name + "_y", entry.getY()); nbt.setInteger(name + "_z", entry.getZ()); nbt.setByte(name + "_d", (byte) entry.getDir().ordinal()); + + if(type == type.FUEL) { + NBTTagList list = new NBTTagList(); + for(int i = 0; i < rods.length; i++) { + if(rods[i] != null) { + NBTTagCompound nbt1 = new NBTTagCompound(); + nbt1.setByte("slot", (byte)i); + rods[i].writeToNBT(nbt1); + list.appendTag(nbt1); + } + } + nbt.setTag("items", list); + } + } + + public void loadItem(ItemStack stack) { + if(stack == null) return; + if(rods.length <= 0) { dropItem(stack, -1); return; } + + for(int i = 0; i < rods.length; i++) { + if(rods[i] == null) { + rods[i] = stack; + return; + + } else { + ItemStack prev = rods[i]; + rods[i] = stack; + stack = prev; + } + } + + if(stack != null) dropItem(stack, length); + } + + public void dropItem(ItemStack stack, int depth) { + int x = entry.getX() + entry.getDir().offsetX * depth; + int y = entry.getY(); + int z = entry.getZ() + entry.getDir().offsetZ * depth; + + EntityItem item = new EntityItem(worldObj, x + 0.5, y + 0.5, z + 0.5, stack); + worldObj.spawnEntityInWorld(item); } } @@ -279,7 +323,21 @@ public class TileEntityPileCore extends TileEntityTickingBase { int y = nbt.getInteger(name + "_y"); int z = nbt.getInteger(name + "_z"); ForgeDirection dir = ForgeDirection.getOrientation(nbt.getByte(name + "_d")); - return new PileChannel(x, y, z, dir); + + PileChannel chan = new PileChannel(x, y, z, dir); + + if(chan.type == chan.type.FUEL) { + NBTTagList list = nbt.getTagList("fuel", 10); + for(int i = 0; i < list.tagCount(); i++) { + NBTTagCompound nbt1 = list.getCompoundTagAt(i); + byte b0 = nbt1.getByte("slot"); + if(b0 >= 0 && b0 < chan.rods.length) { + chan.rods[b0] = ItemStack.loadItemStackFromNBT(nbt1); + } + } + } + + return chan; } public static enum PileChannelType { diff --git a/src/main/java/com/hbm/tileentity/machine/pile/TileEntityPileLoader.java b/src/main/java/com/hbm/tileentity/machine/pile/TileEntityPileLoader.java index de16d3a7c..503d7684e 100644 --- a/src/main/java/com/hbm/tileentity/machine/pile/TileEntityPileLoader.java +++ b/src/main/java/com/hbm/tileentity/machine/pile/TileEntityPileLoader.java @@ -2,6 +2,7 @@ package com.hbm.tileentity.machine.pile; import com.hbm.blocks.ModBlocks; import com.hbm.blocks.machine.pile.BlockPile; +import com.hbm.items.ModItems; import com.hbm.main.NTMSounds; import com.hbm.tileentity.machine.pile.TileEntityPileCore.PileChannel; import com.hbm.util.Compat; @@ -9,6 +10,7 @@ import com.hbm.util.Compat; import io.netty.buffer.ByteBuf; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.ISidedInventory; +import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.tileentity.TileEntity; import net.minecraftforge.common.util.ForgeDirection; @@ -25,17 +27,17 @@ public class TileEntityPileLoader extends TileEntityPileDeviceBase implements IS public boolean loading = false; public int delay = 0; - public boolean hasRod = false; + public ItemStack syncStack; public ItemStack stack; + public boolean wasRedstone; @Override public void updateEntity() { if(!worldObj.isRemote) { - this.hasRod = this.stack != null; - ForgeDirection dir = getOrientation(); + PileChannel fuelChan = null; int x = xCoord - dir.offsetX; int y = yCoord; @@ -49,7 +51,7 @@ public class TileEntityPileLoader extends TileEntityPileDeviceBase implements IS TileEntityPileCore core = pile.getCore(); if(core != null) { - PileChannel fuelChan = core.getFuelChannel(x, y, z); + fuelChan = core.getFuelChannel(x, y, z); if(fuelChan != null) { this.chanNum = core.getFuelChannelNum(fuelChan); @@ -58,6 +60,10 @@ public class TileEntityPileLoader extends TileEntityPileDeviceBase implements IS } } + boolean redstone = worldObj.getIndirectPowerOutput(xCoord + dir.offsetX, yCoord, zCoord + dir.offsetZ, dir.getOpposite().ordinal()); + if(redstone && !wasRedstone && this.delay <= 0 && this.level <= 0) this.loading = true; + this.wasRedstone = redstone; + if(this.delay > 0) { this.delay--; } else { @@ -76,7 +82,10 @@ public class TileEntityPileLoader extends TileEntityPileDeviceBase implements IS if(this.level == 1) { worldObj.playSoundEffect(xCoord + 0.5, yCoord + 0.5, zCoord + 0.5, NTMSounds.GUN_BOLT_OPEN, this.getVolume(1F), 0.75F); - this.setInventorySlotContents(0, null); + if(fuelChan != null) { + fuelChan.loadItem(stack); + this.setInventorySlotContents(0, null); + } } if(this.level > 0D) { @@ -105,7 +114,12 @@ public class TileEntityPileLoader extends TileEntityPileDeviceBase implements IS public void serialize(ByteBuf buf) { super.serialize(buf); buf.writeDouble(this.level); - buf.writeBoolean(this.hasRod); + if(this.stack != null) { + buf.writeInt(Item.getIdFromItem(this.stack.getItem())); + buf.writeShort(this.stack.getItemDamage()); + } else { + buf.writeInt(-1); + } } @Override @@ -113,13 +127,15 @@ public class TileEntityPileLoader extends TileEntityPileDeviceBase implements IS super.deserialize(buf); double lastSync = this.syncLevel; this.syncLevel = buf.readDouble(); - this.hasRod = buf.readBoolean(); + int itemId = buf.readInt(); + if(itemId != -1) this.syncStack = new ItemStack(Item.getItemById(itemId), 1, buf.readShort()); + else this.syncStack = null; if(this.syncLevel != lastSync) this.turnProgress = 2; } public static boolean isItemLoadable(ItemStack stack) { - return true; + return stack.getItem() == ModItems.pile_rod; } @Override diff --git a/src/main/resources/assets/hbm/textures/items/pile_rod.nu.png b/src/main/resources/assets/hbm/textures/items/pile_rod.nu.png new file mode 100644 index 0000000000000000000000000000000000000000..cfffc6c48ee3d6b603c21852d90529b54bf9190f GIT binary patch literal 274 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#VfyU$h>-?ncy@x7TgCjVij_MY5RB+k$H_iQ4#iy8XAc_0@gKdowM^7zCY2xhK zKl|p-{Qn2^YF7H)J*YEBWc}BlC4uSHrO!0FCM;x7P|CR}Cbi_!jMm9YaYs^hl`7sd zTFCWHRf*MYoEz=3#N_wvfRY*yUTbqoeC z_zjLtIdH9ESr+Sw_dn%@GPZAFs+oIW>2<$JDpMVw%joT`t2^c2yZqqo^h;;#FEXEh WW-al;wQMEOQw*N2elF{r5}E*=S#c!* literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/items/pile_rod.po210be.png b/src/main/resources/assets/hbm/textures/items/pile_rod.po210be.png new file mode 100644 index 0000000000000000000000000000000000000000..f31b52872560faaa0dd8d4503fdb91de2e1df437 GIT binary patch literal 274 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#Vfe_Mh4R=Z|sNR-GLt(l>4!aeV%4WB>#oK64ux=*0b!pRFjtv}@9y z|8xKDc~DbV=h)USf8Q9S;?3PHyoXhNZp0)cWgR?lUZ3OopKp)T*@T0+bG$ZICw@Hh zl4s+~nG#7Z(g#i+KfNLCr%>Db`F6=yTX;59HG)8R$ehN>{o;8FC)otJJ&YdwJ)U1u zz-SijVbqW$Zu9fo^p9sga!YWnkK23t!;{ZW!B P&{GVau6{1-oD!M@TOAvdw`O{-*YT{{`|P@$3=S?G{D#~Yr7mr}l^|VWD(I-m z%3v}7oK(s&)ekZJE?0P0?{0ctHD{`SLVixm?hV)bzX^WIUZ*;vI7E?UQgYL-bvM^G zhchq~CpvLlWOQfVcU8mTbH=|34Y!TB3@jZ(r?|~pHp}p|QHZPMpDFQCCrjTO7aq31 aC@kP;e^=@0#WiU>eMNo8k-s(5U{yp!^30B^M9jclVU(v@Q3>W z_XW;9fA}o%$EUB{%s_DXXZLf%m_sdRS*>PSfs_}VoxiUp>B7Y;2bYQL7T@;n)~N?? zpYI7`JP}{EiM5BJ9g}lxN-C5L$*md3>zC%nD5orxU-8V zY;ILy)+jqT=VZ6U`g=RN7JfMQ*P5qTORvml?Pc}`St2H%dW75n0 zcc1Qm|IdLbXUg}N3R5orh%>)B_v@y!0d9-0Nx85vC@4uJM|51~NHsZDXmiztC0mz4 z;e0XsrpH1WOC4M;Z`dm4rFrg@`h-tCDm%~o%FGG~HCI14Z!yYg=vy2ZPd~eebjOvt=l@>=P99(qwotr~Qn(^}Xu;jxPn8tnc?)t+Hy| zI!)s7Ss%^9dCw;VGM=+!$XdI-i7j9~LqbntYulO%8o-UMWUTM29t0wc6 c@!o5!8ml#8x7mxV1iF;L)78&qol`;+01T{H+yDRo literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/items/pile_rod.zr.png b/src/main/resources/assets/hbm/textures/items/pile_rod.zr.png new file mode 100644 index 0000000000000000000000000000000000000000..d37b23242c514c2abf5a72602241c0fd42b36d87 GIT binary patch literal 271 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#VfSsN5M436=% zt>&GUG}ZC;wt9~RzLBXLEFJIK?AfHFeq`0E6|;|jU;gLV%ZeXAd}jSnuVC8CZ`pWU TX!{+Yj~F~%{an^LB{Ts51gvcJ literal 0 HcmV?d00001