From f4a2d72e5a02bc36b3ce232b3c74af9e5e7235ed Mon Sep 17 00:00:00 2001 From: Boblet Date: Mon, 31 Jan 2022 15:46:55 +0100 Subject: [PATCH] fixed colored concrete recipes, some solidifier code removed the math question from the issue template because it didn't really achieve anything --- .../issue-template--mandatory-.md | 4 - .../java/com/hbm/blocks/BlockDummyable.java | 18 +++ src/main/java/com/hbm/blocks/ModBlocks.java | 2 + .../blocks/machine/MachineLiquefactor.java | 14 +-- .../hbm/blocks/machine/MachineSolidifier.java | 94 +++++++++++++++ .../recipes/SolidificationRecipes.java | 42 +++++++ .../java/com/hbm/main/CraftingManager.java | 5 +- .../machine/TileEntityMachineLiquefactor.java | 3 +- .../machine/TileEntityMachineSolidifier.java | 114 ++++++++++++++++++ .../gui/processing/gui_liquefactor.png | Bin 2874 -> 2893 bytes .../gui/processing/gui_solidifier.png | Bin 0 -> 3114 bytes 11 files changed, 276 insertions(+), 20 deletions(-) create mode 100644 src/main/java/com/hbm/blocks/machine/MachineSolidifier.java create mode 100644 src/main/java/com/hbm/inventory/recipes/SolidificationRecipes.java create mode 100644 src/main/java/com/hbm/tileentity/machine/TileEntityMachineSolidifier.java create mode 100644 src/main/resources/assets/hbm/textures/gui/processing/gui_solidifier.png diff --git a/.github/ISSUE_TEMPLATE/issue-template--mandatory-.md b/.github/ISSUE_TEMPLATE/issue-template--mandatory-.md index 02e9585b0..e72104c8c 100644 --- a/.github/ISSUE_TEMPLATE/issue-template--mandatory-.md +++ b/.github/ISSUE_TEMPLATE/issue-template--mandatory-.md @@ -10,7 +10,3 @@ assignees: '' ### Describe the bug Please describe the issue in as much detail as possible. Also mention the version of the mod you're running, if it's not the newest. In the case of a crash, please attach a crash log. - -### Please solve this equation to x - -x²+3x-19=√(9x²)+6 diff --git a/src/main/java/com/hbm/blocks/BlockDummyable.java b/src/main/java/com/hbm/blocks/BlockDummyable.java index 14e296608..309a9b2e0 100644 --- a/src/main/java/com/hbm/blocks/BlockDummyable.java +++ b/src/main/java/com/hbm/blocks/BlockDummyable.java @@ -6,7 +6,9 @@ import java.util.Random; import com.hbm.handler.MultiblockHandlerXR; import com.hbm.handler.ThreeInts; +import com.hbm.main.MainRegistry; +import cpw.mods.fml.common.network.internal.FMLNetworkHandler; import net.minecraft.block.Block; import net.minecraft.block.BlockContainer; import net.minecraft.block.material.Material; @@ -336,4 +338,20 @@ public abstract class BlockDummyable extends BlockContainer { return 0; } + protected boolean standardOpenBehavior(World world, int x, int y, int z, EntityPlayer player, int id) { + + if(world.isRemote) { + return true; + } else if(!player.isSneaking()) { + int[] pos = this.findCore(world, x, y, z); + + if(pos == null) + return false; + + FMLNetworkHandler.openGui(player, MainRegistry.instance, id, world, pos[0], pos[1], pos[2]); + return true; + } else { + return true; + } + } } diff --git a/src/main/java/com/hbm/blocks/ModBlocks.java b/src/main/java/com/hbm/blocks/ModBlocks.java index 54d7493e7..5d65dd3f6 100644 --- a/src/main/java/com/hbm/blocks/ModBlocks.java +++ b/src/main/java/com/hbm/blocks/ModBlocks.java @@ -2063,6 +2063,7 @@ public class ModBlocks { machine_deuterium_tower = new DeuteriumTower(Material.iron).setBlockName("machine_deuterium_tower").setHardness(10.0F).setResistance(20.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":concrete"); machine_liquefactor = new MachineLiquefactor().setBlockName("machine_liquefactor").setHardness(10.0F).setResistance(20.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); + machine_solidifier = new MachineSolidifier().setBlockName("machine_solidifier").setHardness(10.0F).setResistance(20.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel_machine"); anvil_iron = new NTMAnvil(Material.iron, 1).setBlockName("anvil_iron").setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":anvil_iron"); anvil_lead = new NTMAnvil(Material.iron, 1).setBlockName("anvil_lead").setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":anvil_lead"); @@ -2943,6 +2944,7 @@ public class ModBlocks { GameRegistry.registerBlock(machine_deuterium_extractor, machine_deuterium_extractor.getUnlocalizedName()); GameRegistry.registerBlock(machine_deuterium_tower, machine_deuterium_tower.getUnlocalizedName()); GameRegistry.registerBlock(machine_liquefactor, ItemBlockBase.class, machine_liquefactor.getUnlocalizedName()); + GameRegistry.registerBlock(machine_solidifier, ItemBlockBase.class, machine_solidifier.getUnlocalizedName()); GameRegistry.registerBlock(machine_deaerator, machine_deaerator.getUnlocalizedName()); GameRegistry.registerBlock(machine_waste_drum, machine_waste_drum.getUnlocalizedName()); GameRegistry.registerBlock(machine_storage_drum, machine_storage_drum.getUnlocalizedName()); diff --git a/src/main/java/com/hbm/blocks/machine/MachineLiquefactor.java b/src/main/java/com/hbm/blocks/machine/MachineLiquefactor.java index 0be904f1d..d63e89512 100644 --- a/src/main/java/com/hbm/blocks/machine/MachineLiquefactor.java +++ b/src/main/java/com/hbm/blocks/machine/MachineLiquefactor.java @@ -44,19 +44,7 @@ public class MachineLiquefactor extends BlockDummyable implements ITooltipProvid @Override public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) { - if(world.isRemote) { - return true; - } else if(!player.isSneaking()) { - int[] pos = this.findCore(world, x, y, z); - - if(pos == null) - return false; - - FMLNetworkHandler.openGui(player, MainRegistry.instance, 0, world, pos[0], pos[1], pos[2]); - return true; - } else { - return true; - } + return this.standardOpenBehavior(world, x, y, z, player, 0); } @Override diff --git a/src/main/java/com/hbm/blocks/machine/MachineSolidifier.java b/src/main/java/com/hbm/blocks/machine/MachineSolidifier.java new file mode 100644 index 000000000..3c27f6d11 --- /dev/null +++ b/src/main/java/com/hbm/blocks/machine/MachineSolidifier.java @@ -0,0 +1,94 @@ +package com.hbm.blocks.machine; + +import java.util.List; + +import org.lwjgl.input.Keyboard; + +import com.hbm.blocks.BlockDummyable; +import com.hbm.blocks.ITooltipProvider; +import com.hbm.tileentity.TileEntityProxyCombo; +import com.hbm.tileentity.machine.TileEntityMachineSolidifier; + +import net.minecraft.block.material.Material; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.EnumChatFormatting; +import net.minecraft.world.World; +import net.minecraftforge.common.util.ForgeDirection; + +public class MachineSolidifier extends BlockDummyable implements ITooltipProvider { + + public MachineSolidifier() { + super(Material.iron); + } + + @Override + public TileEntity createNewTileEntity(World world, int meta) { + + if(meta >= 12) + return new TileEntityMachineSolidifier(); + + if(meta >= extra) + return new TileEntityProxyCombo(true, true, true); + + return null; + } + + @Override + public int[] getDimensions() { + return new int[] {3, 0, 1, 1, 1, 1}; + } + + @Override + public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) { + return this.standardOpenBehavior(world, x, y, z, player, 0); + } + + @Override + public int getOffset() { + return 1; + } + + @Override + public void fillSpace(World world, int x, int y, int z, ForgeDirection dir, int o) { + super.fillSpace(world, x, y, z, dir, o); + + x = x + dir.offsetX * o; + z = z + dir.offsetZ * o; + + this.makeExtra(world, x, y + 3, z); + + this.makeExtra(world, x + 1, y + 1, z); + this.makeExtra(world, x - 1, y + 1, z); + this.makeExtra(world, x, y + 1, z + 1); + this.makeExtra(world, x, y + 1, z - 1); + } + + @Override + public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean ext) { + + if(Keyboard.isKeyDown(Keyboard.KEY_LSHIFT)) { + list.add(EnumChatFormatting.YELLOW + "beb"); + } else { + list.add(EnumChatFormatting.DARK_GRAY + "" + EnumChatFormatting.ITALIC +"Hold <" + + EnumChatFormatting.YELLOW + "" + EnumChatFormatting.ITALIC + "LSHIFT" + + EnumChatFormatting.DARK_GRAY + "" + EnumChatFormatting.ITALIC + "> to display more info"); + } + } + + @Override + public int getRenderType() { + return 0; + } + + @Override + public boolean isOpaqueCube() { + return true; + } + + @Override + public boolean renderAsNormalBlock() { + return true; + } +} diff --git a/src/main/java/com/hbm/inventory/recipes/SolidificationRecipes.java b/src/main/java/com/hbm/inventory/recipes/SolidificationRecipes.java new file mode 100644 index 000000000..807398ba9 --- /dev/null +++ b/src/main/java/com/hbm/inventory/recipes/SolidificationRecipes.java @@ -0,0 +1,42 @@ +package com.hbm.inventory.recipes; + +import static com.hbm.inventory.fluid.Fluids.*; + +import java.util.HashMap; + +import com.hbm.inventory.FluidStack; +import com.hbm.inventory.OreDictManager.DictFrame; +import com.hbm.inventory.fluid.FluidType; +import com.hbm.items.ItemEnums.EnumTarType; +import com.hbm.items.ModItems; +import com.hbm.util.Tuple.Pair; + +import net.minecraft.block.Block; +import net.minecraft.init.Blocks; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; + +public class SolidificationRecipes { + + private static HashMap> recipes = new HashMap(); + + public static void register() { + registerRecipe(WATER, 1000, Blocks.ice); + registerRecipe(LAVA, 1000, Blocks.obsidian); + + //temporary recipes with incorrect quantities + registerRecipe(OIL, 1000, DictFrame.fromOne(ModItems.oil_tar, EnumTarType.CRUDE)); + registerRecipe(BITUMEN, 1000, DictFrame.fromOne(ModItems.oil_tar, EnumTarType.CRUDE)); + registerRecipe(HEATINGOIL, 1000, ModItems.solid_fuel); + } + + private static void registerRecipe(FluidType type, int quantity, Item output) { registerRecipe(type, quantity, new ItemStack(output)); } + private static void registerRecipe(FluidType type, int quantity, Block output) { registerRecipe(type, quantity, new ItemStack(output)); } + private static void registerRecipe(FluidType type, int quantity, ItemStack output) { + recipes.put(type, new Pair(quantity, output)); + } + + public static Pair getOutput(FluidType type) { + return recipes.get(type); + } +} diff --git a/src/main/java/com/hbm/main/CraftingManager.java b/src/main/java/com/hbm/main/CraftingManager.java index 436664c12..267dfb971 100644 --- a/src/main/java/com/hbm/main/CraftingManager.java +++ b/src/main/java/com/hbm/main/CraftingManager.java @@ -377,9 +377,10 @@ public class CraftingManager { addShapelessAuto(new ItemStack(ModBlocks.asphalt, 1), new Object[] { ModBlocks.asphalt_light }); addRecipeAuto(new ItemStack(ModBlocks.block_niter_reinforced, 1), new Object[] { "TCT", "CNC", "TCT", 'T', TCALLOY.ingot(), 'C', ModBlocks.concrete, 'N', KNO.block() }); + String[] dyes = { "Black", "Red", "Green", "Brown", "Blue", "Purple", "Cyan", "LightGray", "Gray", "Pink", "Lime", "Yellow", "LightBlue", "Magenta", "Orange", "White" }; + for(int i = 0; i < 16; i++) { - String dyeName = ItemDye.field_150923_a[15 - i]; - dyeName = "dye" + dyeName.substring(0, 1).toUpperCase() + dyeName.substring(1); + String dyeName = "dye" + dyes[15 - i]; addRecipeAuto(new ItemStack(ModBlocks.concrete_colored, 8, i), new Object[] { "CCC", "CDC", "CCC", 'C', ModBlocks.concrete_smooth, 'D', dyeName }); addRecipeAuto(new ItemStack(ModBlocks.concrete_colored, 8, i), new Object[] { "CCC", "CDC", "CCC", 'C', ModBlocks.concrete_colored, 'D', dyeName }); } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineLiquefactor.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineLiquefactor.java index c466e4229..9503a4751 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineLiquefactor.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineLiquefactor.java @@ -115,7 +115,8 @@ public class TileEntityMachineLiquefactor extends TileEntityMachineBase implemen this.markDirty(); } } - + + @Override public void networkUnpack(NBTTagCompound nbt) { this.power = nbt.getLong("power"); this.progress = nbt.getInteger("progress"); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineSolidifier.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineSolidifier.java new file mode 100644 index 000000000..0096b6ac6 --- /dev/null +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineSolidifier.java @@ -0,0 +1,114 @@ +package com.hbm.tileentity.machine; + +import com.hbm.inventory.FluidTank; +import com.hbm.inventory.fluid.Fluids; +import com.hbm.inventory.recipes.LiquefactionRecipes; +import com.hbm.inventory.recipes.SolidificationRecipes; +import com.hbm.lib.Library; +import com.hbm.tileentity.TileEntityMachineBase; + +import api.hbm.energy.IEnergyUser; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.AxisAlignedBB; + +public class TileEntityMachineSolidifier extends TileEntityMachineBase implements IEnergyUser { + + public long power; + public static final long maxPower = 100000; + public static final int usage = 500; + public int progress; + public static final int processTime = 200; + + public FluidTank tank; + + public TileEntityMachineSolidifier() { + super(5); + tank = new FluidTank(Fluids.NONE, 24000, 0); + } + + @Override + public String getName() { + return "container.machineSolidifier"; + } + + @Override + public void updateEntity() { + + if(!worldObj.isRemote) { + this.power = Library.chargeTEFromItems(slots, 1, power, maxPower); + tank.updateTank(this); + + this.trySubscribe(worldObj, xCoord + 2, yCoord + 1, zCoord, Library.POS_X); + this.trySubscribe(worldObj, xCoord - 2, yCoord + 1, zCoord, Library.NEG_X); + this.trySubscribe(worldObj, xCoord, yCoord + 1, zCoord + 2, Library.POS_Z); + this.trySubscribe(worldObj, xCoord, yCoord + 1, zCoord - 2, Library.NEG_Z); + + NBTTagCompound data = new NBTTagCompound(); + data.setLong("power", this.power); + data.setInteger("progress", this.progress); + this.networkPack(data, 50); + } + } + + @Override + public void networkUnpack(NBTTagCompound nbt) { + this.power = nbt.getLong("power"); + this.progress = nbt.getInteger("progress"); + } + + @Override + public void readFromNBT(NBTTagCompound nbt) { + super.readFromNBT(nbt); + tank.readFromNBT(nbt, "tank"); + } + + @Override + public void writeToNBT(NBTTagCompound nbt) { + super.writeToNBT(nbt); + tank.writeToNBT(nbt, "tank"); + } + + @Override + public void setPower(long power) { + this.power = power; + } + + @Override + public long getPower() { + return power; + } + + @Override + public long getMaxPower() { + return maxPower; + } + + AxisAlignedBB bb = null; + + @Override + public AxisAlignedBB getRenderBoundingBox() { + + if(bb == null) { + bb = AxisAlignedBB.getBoundingBox( + xCoord - 1, + yCoord, + zCoord - 1, + xCoord + 2, + yCoord + 4, + zCoord + 2 + ); + } + + return bb; + } + + @Override + @SideOnly(Side.CLIENT) + public double getMaxRenderDistanceSquared() { + return 65536.0D; + } +} diff --git a/src/main/resources/assets/hbm/textures/gui/processing/gui_liquefactor.png b/src/main/resources/assets/hbm/textures/gui/processing/gui_liquefactor.png index 738d436d83c1ced828c5d8d056332363ce1f0032..a0878acabbfb6fdfd906ac2d0b7bf842d33cd69c 100644 GIT binary patch delta 2553 zcmYLJdpy(YAAfd{xx|L9Y;y~TLZ#y}Ym>PYp>q(SR&o%Pl1nPz32`d7mLtg}shm?x zQtnJn2<2|Mv|+9d8zscHv(EXwUccwB=k>|fxi~O+%GaY(@V3CLz2UeVEG$ZciU)fIYv@_uv} zKc&iW&qRB>Jipb1zxOFSL9^}3imhsWVoRju<|DWZ+UE@|uI&n)Vng$-tbY9-ojDBC zF)`5peZ#23!0_uk$cR)8}55pW{3rnb;Cwa_0273q%P;rXIR77tEh~<~W1`T2&VM235(;XOQ4fmeW(KC6Q*dEvTE| zqjz?@Qk8+Nnp$1(no5mFI5y=X3iK|{4(v5260?ao`3>FtWmQs2xj1S0Xk^#;2$uv6 zPMiO|_Q`q&{hc;6RMah8nH8L%6ma+*`&M2X%G_a*jzEmPwLV8pTv>X`Z^rX7hG^3{ z4OI0q?{7*6Md%O`5$>wC5oeNu`L`;^`*$$5YE|!q6m3l72w! zq#9Ef&*%{4%)NTq{HpczuI(CkGxd6zDBv_$rwts<|^N>dNsg{AUeZNakiV@twLV#!(g@-)}Mpe;-6V}59z z6IbBJFmq}^U1=&BXlMZRzGChtG>~d-mkJr^G_(chP=J!ei!?=&WuRM8m*-XDVlcF< zLO#48sibhX zAznIOENT=ILQ^=x9&TkbUN~?1DuP=ZwS>T6wsETV9BnS;y6-r@vMIbFfu~fDg+JlRR`d)mkSV{vtFpLH`SFFtV6;WBU zvubpgFHZ~h+oHs`n~R~q%@(vpt(JDYvQVO8X{vB?8c&U^kKgbN=OxL+M%ai|pE<2e znj;>wnP6?_RQf!eMc&jp5H))GQ5|BpDE7OU%AH?}mq114!>; zCW1_ChgE0*mA-65h-X-f4}deJB$U}}&o6@J`YNK;d@arv8n^Zpv0(rQu;k*-v5{o~??ohuhr zx45U2YxX4pUoYfDbLKDqt$h!mFF@vMCv? zj=EnsS6S=kZ{vV~xpWQ?;OWcHf~Ne1(6^qKq zBwL~;p%0Z(C%`LLC#%br?J)2>W+jg3?-|STkOn3(K+mPzE<)%{(}ybLLf8qcX~4$ed*bx2X|)Fp72@$bh$IPyRb3fL5f zf>~7D6DeijGdR~2h9wUX;2Sp}wk6rJPe{+n>40uFL$1sg?w1loAQIDcopa3kc5juJ zY(ax;%vDH62UO)bz{6B_vU4I0SPRcd0vK;8-I;FV-f08$K40ue zIj8v_YDC~S^pplL0B5X3-YLIwSD4c3IrMY9qbk9Mh zL4DF#CvS;@f^FIo*ObzthQr-7KIPU$cLXJJ@~28(zSPou%$|x!$;I*}L>zcjRMAWa&lsno7DU=UqYa~CUSNQ;O6&n*C z9!{a0-jkX5K&bFYCmfldGr~J*rw-ji&`-!3(L-cW%KsH(NV6ykv4Pc?Ocs^Uf0sG5 z^QU193WXuSXGWEP@ofO)wE$?8)rAdgx)*hzP`BQ|_-l!Q@e=ZcBE5&MDq~?cE9)pB zKtLZiZS6XFluGo5gBut?JBbAOcND}Axme81QdI4@K#+Rgkm_gwpDtoB%A+*Nn;gOC u76?Ii{{SycZc?O=%39F{vT|F=2|`6Bcci*k0j2%N2oBmfQHl>xum1zSvAaG1 delta 2526 zcmYLIc{~*8AAV;{&5U!V)F1}KRzE9Am~zduW|2sTqYatDrd95kFlMM^;(%8`<_ zJVx+QT~uycyWV*+w(bbE%>EoY?Pl<+V@2+~YZp`xmiY9MHTYC5-jKA{xvKVFb~-M!;;!dZ{P-y1@I;uJf*@Ex}T3#Drm zT^x?l@%y7xOXW@)ny9l}S^WYv>c-Gi#`R% zaX(oesTkI!eJ&ml@|IRTNRnrIM!XU|WLg#BLg{f@gS(5dVd%>xUw9j(v2@-vhK zl~SwBNU83}zHE62gdRNiwI*2YR8iD6H$gN^|aq1n@ax zU6Dm?WQT9&&?k5Jq)FYxzzliM+7C1)inPP>K5&bFVuDinUc-%Jt_v&I=AUlXNpvcd zeLL+*0B7=K>5-)ktZHZFd<DP^;(-e*bu-u82FJb609R$Ok@s3+vC{GMQ^(cdv}v8$!+vtPZ%p z^L^Bj{sC)=myqtARVBVGeBSIdhwhP|1EZwlP@5XN(Ho85r`%WHJ$RB{#}yZa91M)t z10(BIP3k6tftxH^TVf1ur=jAuqFUA8m6+}om=_vyZmN|aZz~q=z{Aq9G+x`GGsy(u znEwGzYs4n24Tm#mpnCt2lsE1C9f!9sw58AmH_=@AVZK=9_7Y8Gd!U+>ff=EYSy}!*5$dw{r-z<+Z;19$Q0v8+vA>1kMwv60_07 z^G7{4Yn-j2MN$El;BZj3l+Elr@|fp`f9y0XFomaVP4472y%aXQs4DG`I-9ExpS%xN znJYHrknOa3{#4;#mGyB&S=-(3lc2it!ix{UCiEX9gi|H!bP zkSY5`J7xJxLXvB%D*XVoS*kOY-Y$;d$&?w&H+E=5o3A{`~U?Gr&R+9DC$)h4`pPRLw?G(}vhFMD==<_}vF_XV_Sd zwOtGnpt<;(dqGD>y$N(hQ|ME-;mk`h!=6DY1-p>KI}xcRL$=OOWu_J%H?Tr1^CX_I{f z?V%>H&0_Zk$E(y!lFXEY5r2JQUdx_`_P4mxzgpB-aXj`xm~q{^d?sGr7SXO(2{U+w zG2q;vXNhqV?;*J|^h=Tvd?NKE0eUJ2qvHm-&@wI5h}AzqAX{s^J|Z!y&ktWB`HJIc zA48Q6FM~A^wWom$)mRqtiN4zBHml$C^1tjlH_v^4Yx6# ze6D0)GMbq;(D0L_o{B~4_j52%;`#PqK>f*!w#!`-dJC>#;n2TT^70;GRA~fC;)E9D zPl+#z>#EH+jX!X*(~EQw7bRPzu52gl7nC6mf9t2&1>w2D=@hhNcB(dAqyeNiZp7kJ z!`Wa6-7XJh5_3Zjzw|w!TAmq;hSAYQQq4L`aG=zRVCJuzM-9^0fYL_J=%SY8J)2ov z(YpU6ItEaJbS%XVl*!0mE32#f9`|T`;hqtr17U#Qcz233RyQw@Gsfe+{r!`}3-SZa@qVKL zCGf&xVaQ}>r+vPESw)3bL_|ctrFkOz%Pp2D0Lg$zA7{{|VTR9lAUFN|-gk8+eZ@b; zvQA~}#-(YW#^Hkergw$H@^VnD4i4h=H%?r|u-(j3n3CKp#yZk=|5a-Z7P1i=3R{m= zi!M0C3zzt)KF9ciP-cuGu=of6f|Cx5Nkn4Y5ZXo|9ni1B09gqFl$=eF?Iq3qdw($B zc8`7<>mL1wq&_2SEA|Yd6sgbXLBg#)UC7_s^WK#-$H~`0*_Vn`GFksKb;b{VgLXD diff --git a/src/main/resources/assets/hbm/textures/gui/processing/gui_solidifier.png b/src/main/resources/assets/hbm/textures/gui/processing/gui_solidifier.png new file mode 100644 index 0000000000000000000000000000000000000000..c98d968378761beb3050ff975b1261e3d9943386 GIT binary patch literal 3114 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