From 4d2bda7820807fb5c3557b620a1535430b7cf5c7 Mon Sep 17 00:00:00 2001 From: Boblet Date: Mon, 11 Apr 2022 16:17:46 +0200 Subject: [PATCH 1/5] better hadron diagnostics, chemplant + thermal cache fix (?) --- .../java/com/hbm/inventory/gui/GUIHadron.java | 46 +++++++----- .../hbm/inventory/recipes/HadronRecipes.java | 7 ++ .../hbm/tileentity/TileEntityMachineBase.java | 2 - .../tileentity/machine/TileEntityHadron.java | 70 +++++++++++++++--- .../machine/TileEntityMachineChemplant.java | 2 +- .../TileEntityMachineChemplantBase.java | 2 +- src/main/resources/assets/hbm/lang/de_DE.lang | 6 ++ src/main/resources/assets/hbm/lang/en_US.lang | 6 ++ .../hbm/textures/gui/machine/gui_hadron.png | Bin 7491 -> 7673 bytes 9 files changed, 109 insertions(+), 32 deletions(-) diff --git a/src/main/java/com/hbm/inventory/gui/GUIHadron.java b/src/main/java/com/hbm/inventory/gui/GUIHadron.java index caea1d6d8..1a50397ca 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIHadron.java +++ b/src/main/java/com/hbm/inventory/gui/GUIHadron.java @@ -1,5 +1,8 @@ package com.hbm.inventory.gui; +import java.util.ArrayList; +import java.util.List; + import org.lwjgl.opengl.GL11; import com.hbm.inventory.container.ContainerHadron; @@ -14,6 +17,7 @@ import net.minecraft.client.Minecraft; import net.minecraft.client.audio.PositionedSoundRecord; import net.minecraft.client.resources.I18n; import net.minecraft.entity.player.InventoryPlayer; +import net.minecraft.util.EnumChatFormatting; import net.minecraft.util.ResourceLocation; public class GUIHadron extends GuiInfoContainer { @@ -44,29 +48,37 @@ public class GUIHadron extends GuiInfoContainer { this.drawCustomInfoStat(mouseX, mouseY, guiLeft + 142, guiTop + 107, 18, 18, mouseX, mouseY, I18nUtil.resolveKeyArray("hadron.modeLine")); else this.drawCustomInfoStat(mouseX, mouseY, guiLeft + 142, guiTop + 107, 18, 18, mouseX, mouseY, I18nUtil.resolveKeyArray("hadron.modeCircular")); + + List stats = new ArrayList(); + stats.add(EnumChatFormatting.YELLOW + I18nUtil.resolveKey("hadron.stats")); + stats.add((hadron.stat_success ? EnumChatFormatting.GREEN : EnumChatFormatting.RED) + I18n.format("hadron." + this.hadron.state.name().toLowerCase())); + if(this.hadron.state.showCoord) stats.add(EnumChatFormatting.RED + I18nUtil.resolveKey("hadron.stats_coord", hadron.stat_x, hadron.stat_y, hadron.stat_z)); + stats.add(EnumChatFormatting.GRAY + I18nUtil.resolveKey("hadron.stats_momentum", hadron.stat_charge)); + this.drawCustomInfoStat(mouseX, mouseY, guiLeft + 41, guiTop + 92, 25, 11, mouseX, mouseY, stats.toArray(new String[0])); } + @Override protected void mouseClicked(int x, int y, int i) { - super.mouseClicked(x, y, i); - - //Toggle hadron - if(guiLeft + 19 <= x && guiLeft + 19 + 18 > x && guiTop + 89 < y && guiTop + 89 + 18 >= y) { + super.mouseClicked(x, y, i); + + // Toggle hadron + if(guiLeft + 19 <= x && guiLeft + 19 + 18 > x && guiTop + 89 < y && guiTop + 89 + 18 >= y) { mc.getSoundHandler().playSound(PositionedSoundRecord.func_147674_a(new ResourceLocation("gui.button.press"), 1.0F)); - PacketDispatcher.wrapper.sendToServer(new AuxButtonPacket(hadron.xCoord, hadron.yCoord, hadron.zCoord, 0, 0)); - } - - //Toggle analysis chamber - if(guiLeft + 142 <= x && guiLeft + 142 + 18 > x && guiTop + 107 < y && guiTop + 107 + 18 >= y) { + PacketDispatcher.wrapper.sendToServer(new AuxButtonPacket(hadron.xCoord, hadron.yCoord, hadron.zCoord, 0, 0)); + } + + // Toggle analysis chamber + if(guiLeft + 142 <= x && guiLeft + 142 + 18 > x && guiTop + 107 < y && guiTop + 107 + 18 >= y) { mc.getSoundHandler().playSound(PositionedSoundRecord.func_147674_a(new ResourceLocation("gui.button.press"), 1.0F)); - PacketDispatcher.wrapper.sendToServer(new AuxButtonPacket(hadron.xCoord, hadron.yCoord, hadron.zCoord, 0, 1)); - } - - //Toggle hopper mode - if(guiLeft + 142 <= x && guiLeft + 142 + 18 > x && guiTop + 89 < y && guiTop + 89 + 18 >= y) { + PacketDispatcher.wrapper.sendToServer(new AuxButtonPacket(hadron.xCoord, hadron.yCoord, hadron.zCoord, 0, 1)); + } + + // Toggle hopper mode + if(guiLeft + 142 <= x && guiLeft + 142 + 18 > x && guiTop + 89 < y && guiTop + 89 + 18 >= y) { mc.getSoundHandler().playSound(PositionedSoundRecord.func_147674_a(new ResourceLocation("gui.button.press"), 1.0F)); - PacketDispatcher.wrapper.sendToServer(new AuxButtonPacket(hadron.xCoord, hadron.yCoord, hadron.zCoord, 0, 2)); - } - } + PacketDispatcher.wrapper.sendToServer(new AuxButtonPacket(hadron.xCoord, hadron.yCoord, hadron.zCoord, 0, 2)); + } + } @Override protected void drawGuiContainerForegroundLayer(int i, int j) { diff --git a/src/main/java/com/hbm/inventory/recipes/HadronRecipes.java b/src/main/java/com/hbm/inventory/recipes/HadronRecipes.java index 9cf492908..a144053c1 100644 --- a/src/main/java/com/hbm/inventory/recipes/HadronRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/HadronRecipes.java @@ -6,6 +6,7 @@ import java.util.List; import com.hbm.inventory.RecipesCommon; import com.hbm.inventory.RecipesCommon.ComparableStack; import com.hbm.items.ModItems; +import com.hbm.tileentity.machine.TileEntityHadron.EnumHadronState; import net.minecraft.init.Items; import net.minecraft.item.ItemStack; @@ -112,6 +113,8 @@ public class HadronRecipes { )); } + public static EnumHadronState returnCode = EnumHadronState.NORESULT; + /** * Resolves recipes, simple enough. * @param in1 @@ -126,12 +129,16 @@ public class HadronRecipes { if((r.in1.isApplicable(in1) && r.in2.isApplicable(in2)) || (r.in1.isApplicable(in2) && r.in2.isApplicable(in1))) { + + if(analysisOnly != r.analysisOnly) returnCode = EnumHadronState.NORESULT_WRONG_MODE; + if(momentum < r.momentum) returnCode = EnumHadronState.NORESULT_TOO_SLOW; if(momentum >= r.momentum && analysisOnly == r.analysisOnly) return new ItemStack[] {r.out1, r.out2}; } } + returnCode = EnumHadronState.NORESULT_WRONG_INGREDIENT; return null; } diff --git a/src/main/java/com/hbm/tileentity/TileEntityMachineBase.java b/src/main/java/com/hbm/tileentity/TileEntityMachineBase.java index de2396047..1801c52b5 100644 --- a/src/main/java/com/hbm/tileentity/TileEntityMachineBase.java +++ b/src/main/java/com/hbm/tileentity/TileEntityMachineBase.java @@ -5,14 +5,12 @@ import com.hbm.packet.AuxGaugePacket; import com.hbm.packet.NBTPacket; import com.hbm.packet.PacketDispatcher; -import api.hbm.energy.ILoadedTile; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.ISidedInventory; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagList; -import net.minecraft.tileentity.TileEntity; import net.minecraftforge.common.util.ForgeDirection; import net.minecraftforge.fluids.FluidTank; diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityHadron.java b/src/main/java/com/hbm/tileentity/machine/TileEntityHadron.java index 0d8d4e9c8..03fd546f3 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityHadron.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityHadron.java @@ -43,6 +43,13 @@ public class TileEntityHadron extends TileEntityMachineBase implements IEnergyUs private static final int delayNoResult = 60; private static final int delayError = 100; + public boolean stat_success = false; + public EnumHadronState stat_state = EnumHadronState.IDLE; + public int stat_charge = 0; + public int stat_x = 0; + public int stat_y = 0; + public int stat_z = 0; + public TileEntityHadron() { super(5); } @@ -110,6 +117,13 @@ public class TileEntityHadron extends TileEntityMachineBase implements IEnergyUs data.setBoolean("analysis", analysisOnly); data.setBoolean("hopperMode", hopperMode); data.setByte("state", (byte) state.ordinal()); + + data.setBoolean("stat_success", stat_success); + data.setByte("stat_state", (byte) stat_state.ordinal()); + data.setInteger("stat_charge", stat_charge); + data.setInteger("stat_x", stat_x); + data.setInteger("stat_y", stat_y); + data.setInteger("stat_z", stat_z); this.networkPack(data, 50); } } @@ -119,9 +133,10 @@ public class TileEntityHadron extends TileEntityMachineBase implements IEnergyUs ItemStack[] result = HadronRecipes.getOutput(p.item1, p.item2, p.momentum, analysisOnly); if(result == null) { - this.state = EnumHadronState.NORESULT; + this.state = HadronRecipes.returnCode; this.delay = delayNoResult; worldObj.playSoundEffect(p.posX, p.posY, p.posZ, "random.orb", 2, 0.5F); + this.setStats(this.state, p.momentum, false); return; } @@ -150,6 +165,7 @@ public class TileEntityHadron extends TileEntityMachineBase implements IEnergyUs worldObj.playSoundEffect(p.posX, p.posY, p.posZ, "random.orb", 2, 1F); this.delay = delaySuccess; this.state = EnumHadronState.SUCCESS; + this.setStats(this.state, p.momentum, true); } @Override @@ -159,6 +175,13 @@ public class TileEntityHadron extends TileEntityMachineBase implements IEnergyUs this.analysisOnly = data.getBoolean("analysis"); this.hopperMode = data.getBoolean("hopperMode"); this.state = EnumHadronState.values()[data.getByte("state")]; + + this.stat_success = data.getBoolean("stat_success"); + this.stat_state = EnumHadronState.values()[data.getByte("stat_state")]; + this.stat_charge = data.getInteger("stat_charge"); + this.stat_x = data.getInteger("stat_x"); + this.stat_y = data.getInteger("stat_y"); + this.stat_z = data.getInteger("stat_z"); } @Override @@ -261,6 +284,21 @@ public class TileEntityHadron extends TileEntityMachineBase implements IEnergyUs return false; } + private void setStats(EnumHadronState state, int count, boolean success) { + this.stat_state = state; + this.stat_charge = count; + this.stat_success = success; + } + + private void setExpireStats(EnumHadronState state, int count, int x, int y, int z) { + this.stat_state = state; + this.stat_charge = count; + this.stat_x = x; + this.stat_y = y; + this.stat_z = z; + this.stat_success = false; + } + public class Particle { //Starting values @@ -307,6 +345,7 @@ public class TileEntityHadron extends TileEntityMachineBase implements IEnergyUs TileEntityHadron.this.state = reason; TileEntityHadron.this.delay = delayError; + TileEntityHadron.this.setExpireStats(reason, this.charge, posX, posY, posZ); } public boolean isExpired() { @@ -673,22 +712,31 @@ public class TileEntityHadron extends TileEntityMachineBase implements IEnergyUs PROGRESS(0xffff00), ANALYSIS(0xffff00), NORESULT(0xff8000), + NORESULT_TOO_SLOW(0xff8000), + NORESULT_WRONG_INGREDIENT(0xff8000), + NORESULT_WRONG_MODE(0xff8000), SUCCESS(0x00ff00), - ERROR_NO_CHARGE(0xff0000), - ERROR_NO_ANALYSIS(0xff0000), - ERROR_OBSTRUCTED_CHANNEL(0xff0000), - ERROR_EXPECTED_COIL(0xff0000), - ERROR_MALFORMED_SEGMENT(0xff0000), - ERROR_ANALYSIS_TOO_LONG(0xff0000), - ERROR_ANALYSIS_TOO_SHORT(0xff0000), - ERROR_DIODE_COLLISION(0xff0000), - ERROR_BRANCHING_TURN(0xff0000), - ERROR_GENERIC(0xff0000); + ERROR_NO_CHARGE(0xff0000, true), + ERROR_NO_ANALYSIS(0xff0000, true), + ERROR_OBSTRUCTED_CHANNEL(0xff0000, true), + ERROR_EXPECTED_COIL(0xff0000, true), + ERROR_MALFORMED_SEGMENT(0xff0000, true), + ERROR_ANALYSIS_TOO_LONG(0xff0000, true), + ERROR_ANALYSIS_TOO_SHORT(0xff0000, true), + ERROR_DIODE_COLLISION(0xff0000, true), + ERROR_BRANCHING_TURN(0xff0000, true), + ERROR_GENERIC(0xff0000, true); public int color; + public boolean showCoord; private EnumHadronState(int color) { + this(color, false); + } + + private EnumHadronState(int color, boolean showCoord) { this.color = color; + this.showCoord = showCoord; } } } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineChemplant.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineChemplant.java index ff0901721..8717ebf39 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineChemplant.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineChemplant.java @@ -389,7 +389,7 @@ public class TileEntityMachineChemplant extends TileEntityMachineBase implements for(int j = 0; j < inv.getSizeInventory(); j++) { - if(inv.getStackInSlot(j) == null) { + if(inv.getStackInSlot(j) == null && inv.isItemValidForSlot(j, out)) { ItemStack copy = out.copy(); copy.stackSize = 1; inv.setInventorySlotContents(j, copy); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineChemplantBase.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineChemplantBase.java index 3ad9b2723..30cb133ea 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineChemplantBase.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineChemplantBase.java @@ -286,7 +286,7 @@ public abstract class TileEntityMachineChemplantBase extends TileEntityMachineBa for(int j = 0; j < inv.getSizeInventory(); j++) { - if(inv.getStackInSlot(j) == null) { + if(inv.getStackInSlot(j) == null && inv.isItemValidForSlot(j, out)) { ItemStack copy = out.copy(); copy.stackSize = 1; inv.setInventorySlotContents(j, copy); diff --git a/src/main/resources/assets/hbm/lang/de_DE.lang b/src/main/resources/assets/hbm/lang/de_DE.lang index a5a08ce34..e40fd2465 100644 --- a/src/main/resources/assets/hbm/lang/de_DE.lang +++ b/src/main/resources/assets/hbm/lang/de_DE.lang @@ -437,7 +437,13 @@ hadron.idle=Leerlauf hadron.modeCircular=§eRingbeschleuniger:$Magnete bilden eine Schleife.$Schaltet mehr Rezepte frei. hadron.modeLine=§eLinearbeschleuniger:$Beschleuniger ended mit Analysekammer.$Weniger Rezepte. hadron.noresult=Kein Ergebnis. +hadron.noresult_too_slow=Momentum unz.! +hadron.noresult_wrong_ingredient=Falsches Rezept! +hadron.noresult_wrong_mode=Falscher Modus! hadron.progress=Verarbeite... +hadron.stats=Letztes Ergebnis: +hadron.stats_coord=Position des Fehlers: %s / %s / %s +hadron.stats_momentum=Momentum: %s hadron.success=Abgeschlossen! hazard.prot=Schützt vor Gefahren: diff --git a/src/main/resources/assets/hbm/lang/en_US.lang b/src/main/resources/assets/hbm/lang/en_US.lang index 04d0910b7..97c9a30c7 100644 --- a/src/main/resources/assets/hbm/lang/en_US.lang +++ b/src/main/resources/assets/hbm/lang/en_US.lang @@ -630,7 +630,13 @@ hadron.idle=Idle hadron.modeCircular=§eCircular Accelerator Mode:$Magnets must loop back into core.$Unlocks more recipes. hadron.modeLine=§eLinear Accelerator Mode:$Accelerator ends with analysis chamber.$Fewer Recipes. hadron.noresult=No Result. +hadron.noresult_too_slow=Insuff. momentum! +hadron.noresult_wrong_ingredient=Invalid recipe! +hadron.noresult_wrong_mode=Wrong mode! hadron.progress=In Progress... +hadron.stats=Previous results: +hadron.stats_coord=Erroring position: %s / %s / %s +hadron.stats_momentum=Momentum: %s hadron.success=Completed! hazard.prot=Protects against hazards: diff --git a/src/main/resources/assets/hbm/textures/gui/machine/gui_hadron.png b/src/main/resources/assets/hbm/textures/gui/machine/gui_hadron.png index 972b6bb2b6a9d7e68d9e32f4fa2c2acd0f51bfb3..9c5334115f2d5ce35a0cbd9f21c8b5b0ad860715 100644 GIT binary patch literal 7673 zcmcJUbyQT}x4`cVGcfef4MRyuDF{l9bV(y1HPRxjbPY&1Qliog0@4j5tx^(7my(jw z{l@QF@BP+$f4$#Z>)my0o!DpJz4txwIgwf#O2h>81ONaKt0>Fs000R43Ibrb*oTQ* zu?_YCc_FK!2g4qIFsldvVEU*c|4`5C{dPv63&To!Ux%t}05YIY!+x2AjnW*(vsMV< zO$ToalXOuI&E97k&2fL?bGJvtagKi4XZp$NlVR7Q-m&Dj$4`p=`>04-q{dnbD9{SJPqdk+b>#&vFAC8 zA3yp;=|i9G%24h%JMD^+potbjr=O8ac>C+kKlrZ#dD5RQwUb9ewimWf{n{b7sX;sv z4Y*bNO5bW%f|fEOQXJIV%^Bq#MEo;Mye&>Y1=lZJj3oxg=V%og)w0lcC`BmdA<3lL zVr8N%*1l&u7@@pudmX`PHrMlmh8v*#h#rfcN&YHyef>R$=~{eKQ&WWlNC=Eu3Us#> z5S?#*QMGlj8Ls$fDxS=61(ct?Pr;Yq1MXa(fSEK?REgDgcuJ%a0<1O^UL4O(?dL#1 z;oMmU42o_fczUTr1{Age){;n{6H?q))oC=@0Q?7=Jc8j9KM3MHg@5~5rVl6+4kiFx zsj4I>gJdFM%9fy92KX$wvVbAEYCD90)rF4|Sf=;Tp!eO1D^`akXQFEvMlLxO*zIK( zEx3VhQHNIcsEl}sekd{mJx&ONfTv?s6o8#0Fg8>FZ)R+i6MB?g>-8!W76NOWB;;0Q zgR?%)ZtaR@Ojh>>nZ05LT$zGU@SqHdAT7Ji(0l~90&A`4nOGUkqRw9-5P9>q0?spX z?hrtESapIDl)oz8Nb*-{))lZQtCmxZ`=?9OSXV`GpV;RS1RI&0W0{Q*U#g z60TGC4mU8iq2UI2CnrYe>FK>r#Axd_F{7oOMy7#K{x-K)4K@2Xl)xiwUX(wK$Nu?q zZGCZWUL~Y zp`<>yypfPzJk0LfD0#IhMw6HTNlnkd5M96PB5qRa-;&}m3}}%M+E9XGv&{~0v!OY) zJ7}gHU_IN=b75!4X~v7yNn!ft2QTI8XuNC@ua;wl=1tqa!+~=w#@xXh3sDNRaZG%S;AX-3#Ly3nu@X}RxS^!s3 z>T#>x@_T-KJMtE9oU@l8lV_J_hX*}9sgAyRyVu0T#Pu46U+~yj_ynW`btVcXZ@$ZfPNY z))y6$etmsCZq5qE=7n{ zV`J&UTiu@ZZA#=dPF9me%8!hVz54Ry%XoErdwVj%kO$%<4@p}SOJcX3c9*UrEnNoLdv@@@ba`M0JRmmTCWY3D$Yo1<~P<^=*!hc zBq~#^rD`ePg2+OEljyrp1nCoF<1w~A)p%s&C?U4C(77yOcvmI`NYs`3rN>L4|Mrj$ znUL=L?GPSew7T}P$$8LOz2!=1?%nzYZ{wjl_HouR%s13fjQ#Inh!nKRTFZ*lkg{hP2y$pbBWM_+%bs@LGnn#3BBbH6u32Is>|{pUVq2__CI`qridB@b?mL-&%f6EdW;$`HH7_w zo~5Jh$(~l-P8+zxKFxD)vAOI+-1yIa5HJK5v@o4`8N`Aryz|cBsQbmVT$dEj?-2o~~1C*e8r~ z$3{hiI2ZZn$(Ua)vOPvoy3Jrl+yRPb7Rs8Mn$zO#A`$tmHQa0P2*Tlh?~Nw<4hAj7 z&ATg)i>)E5y3GY^@>aCXWV(>-`ufLp9YuAsTOKirCU*Y*{%>Wo-{ZsjDRjqgmD8#S z^zPOl6ezvN`Gf#}LTPtTX;98Wi_6O=w#3$SbQg*}KFFQ}svFQWwL9@{PpYUIulynf zo@7})W)WH;9v>g?e;t6WXCIsZf2BUwHmCRrtfjASt!y=et*Q8RG3CnJx(=aTqG;mq z*c9aqjOE_va@vR`fwSxNg;zY^dloh3*Xt7tmWCvsqfwx0+pSSkG@93XbJ zJ1DF6UM8T6__T}V28MF0)?!}XGPYEwJFrM{Cc>;0ZX_xiObt>G(p-#|n!O_yqYpGN zph1n)fDRE+LB$ie$(b|_&DX)Q%|Lrag@D00o>)zLdo57##QjNmXNu1o5&8yH7uVb=H##nYRWlS9x+L= z3{ct@VI%>FV=}?yi4QWr_RBg0;E8^)ZS&r{1h$TP2O}hWE$VLMExEJ(Z*u5;TI) z%_U@Y3Ib;b=~5)YK0^u6;Ji#vnsv8{cgFrw~ zrVZ%(i6<;AVlhZs1y>>fqyXClWe#%bXgyTG2DyprT%93BBd*$)G+Wcal0f~+CWkXSN==ga;F>iYZqp{P^Hu=vPq{pCsi)J!9~u7<_5we=3);Y1%9G9y z#(r5;G_?R`MIV%$EcintU}f&Y>oR-mU<89ueVlB0I`Xu&o-fS$?mVV@1;5qb3&Oeb z{Nqlg0CHWo&92dz?6}RR^Fx;9eXMDHfMYI35@R;-HQx^qph_7g6TlHC=Igt^IVK!K z8jBjbjYtGEG=Ud3pc(wO41{>#}=-77GiEes{A2zrH?h z*gq(8!gPmTfV6-p0x94HPc1<;cP=j#h);#6BT7@ipHh&Kwy%4V_HiocL=2pR_d2m< zcb?eq056Z0UbRA|<0XFTxj~MV!hK-zHD`^G=Qm(T{asx2S{&-&+;;Dv=-$%6tb1dt zJ()%Z;}`+a1CoC%bc2%b1d9(5JYO-}7VD`PfW#YXpbgwcHcj2_CM%g)va7vAF#Rh1 z%@A2})h}s3{rm(0R8Lg&Ui$MBw#&&rp$Ff>r`VmBf;SjkjxUKmv|8|6bog|RENms->%Kq_G9^XbAJAyXncNmuiR0E)oc9%(+~g0GfNosS^;@wvv}>X z*sYBcKz}<0$br;B@#qw5%$l=5&BE+Grr*vFf``rKqVYT&FiBFCs3TEJpf^TxJU6Kl z$Y(x&#*r&-`~7GgL>Y<_f+Y?4f^S)W&$$1)3-fK`bkrZyW)7?l;!+RbuD0Qwf=nPl z7yBDee3uiO#j+dNz!Py&$CJ#S;8EKuex1;7bkRbUTTFLJD%XFp1BJ9QLi%ZfNwDPP zWYnY2j)hxUc9yC8I3)*W2{7fpvrs(5;Jkz=(d>=oqU{16^$1HsOtvY;OxJ>pE_ zG|6F=CYhD+HxI=b6+J!0pqQM9DKuM(C-$eUvAv};=CL*a{%!)6JY`yZy@E+6TNIl? zPk4d_B>_n)JlxDc2J?&0O0Gu>0pw}|0$o*dUE+5=X~n&1Iaj{Adg}ve22dT)!y#xt zI(47#$7dzTmx^noba-;2{@7($gUag=4%fMnw85!x>>$K#q#efxPH99rk(vueRF=JBM7QSqd-Z}1sq+`!+svbs)v?^fM%iM@|! zudBWd=8iRq7q{vZqdD#0jW3Yy*o(A=2KJg0Jm9#aV%IX;FEY7P+Yfy1QflLn#(UQ<8oc z0@=?P_C}2{_fK8y!CnXbFK4f$7PGA$FYcc{Y&}2B+MBMR4I^dJn2CR5_lx?3#bq+@ zlRUwm{xDM)_Il;KGk#~|qAXJ)wO;+KZ8DR#t6Z!w8vU00&8Mbrbw+wWJVD7Tg6oC@ z1FyAV&85PL;l%=7v1LBs=OMPWTP?5D7XF%GaCfZUGZ`}dPU_;9Q%B>$8aLRd zqN~>7)9XJge;xkyac0-*(eUEuG^g%zmbrK(^HwIyvCQ7f(UMufS|rfVj)N0|opYeD zFGqg|)`DyO#?~*hiNzMI5Ts{7$3%*m^~K|EAm7ua?!^AjvzOfTM?0dZN zTxr;yJ3~@rZ&Uj3l;!VWGyVIk>ro%J<0j>FF_=?3o%>cU-m-3yT;a!;!j5P+ZqgK&uSQBf~cN7Y5jIGrM*txtZ>5tOLNy6`2 z*;>}_Tt3OF8+mc1!bQsDe?@%z?fs}Pk!FXjO;nMi#FH+@qkGs%QPKI{RLqa^Na?8r zd^B0F;1T#vc@iO;QMfo^P2Nqgn7K^QaKK#n#E-4sx0qxx3Ac42Y*eHUu2LvUcf8~U z-hAG>J1F!Lr|=gDh9kyH)mT~@mF^>-G)95hkjwMh9mvw@c?h*wk1Mu(hNXTsZ08$z zJ|~nHT8yvQZE)U7(M9B2THWrCTX$cZTR&FgF$73tE`y(VigPw-%WZnQ_i zpUQD&CFjg)l=sb;abkyZ2jsAjS@kB|>~P>jESFmu%Rz9W=>D#2sGRX*Inm9X#}lK3 z4k1;YX6ELVPww-=VfjvMiOP_PiHWeCA0@wT1K;dK^xGO}6&?`yFRNQx<`rmGxYA>x zNON0x>O9!9o*nXG!4SpnHa#;lCXX+DOng|u%Tfv$S&xvza?hHfBLeK|oWdNl9(tK1GKj@r=+A5fB29*s3b5yYw-NzERGO+iISsTe3ySu zPJ!67S&IVGV>>u0Wr@+5nVI8v8hk*7-oPjaYxA;zwUXT?XO1@x`kkC^COXbBCbzCm)X`9r zzFRjMpF7qZ(F}Du1`lKqPkv9OC%G*TSqF*ZS!bEkQG6sfYUN1;Y4 zN)p|nvtgWhfZxX=rH`ohG7M~`ELkEpWWRoIZ9#x>6{#Q<`Hv&JCq?zT%e~h!i^1}U z@(`9=Afp&4U4YN}#)it#9LSwjOT*$rS(zGsh@mDgWb}A8>?af$8Nxx#v(XaS<8CeQ zi(dwGd>GE^TvPMGMVG=Gy*EGdL4fQ}Nj%ABXrv96FW(VX?gslwV<}fJ!L7(1i{j#9 zp)Wp&Wbfiq^dtwTo$mXq75gHRb>xLAZfh@eV_(|YIxTeC|31FmK;bcno9ef}`QhFnKo>WZ{*WTXV z>MjTi$#m&nHASF}As8}Kz(Q~t?RI#vsiQz#f|5;?ylSvQT&&9=Ku?_T#8a4!p2D;$KU^Wm`{QpK6vwo9j7I_J}M4wgU=FUbB#xcMN}_H}J|7kd-8Y z{^wHupW2lFha{^Hcv{BB(Y?LB!JeHSlO$DKbSxxaqL2=KB-`A4U=jiI*q^ zM7`yOhap+NB<+8x`+sThUz+lPtC(gQhI=II2SvJmuSFaEbdU)-CGxrJor{r#D`+CBTzmzk7qr!dOH8t()P%4Gy1Gyt)Zvx+8Wk7f?~qkgt$M1^)+10;n_q literal 7491 zcmbt(c{o)6+y9v{!&qYMTecxf_LOX8vW1F4_BCV|WyzYcWhZM1C5l9L^0AI=k*wK` z8H5l<_We1&zvp-TuJ1q3^Lwu6{Bh2?&UL@<{e9o}dA(yWI=3%SaZmvOa6wB`O&plX!f)Mu60C4e8OYPQuzwEV~5YLMX{#`AOoM*sUtvyO? zDvI)xG_7H_!Y>_IN=7ofAZDVl0HeAsYfhp zS9Shngws_jrorKyF0=ARA~8U8VKn|7<*|qwnw=Vn#}aqZPg-L!e=iLnLXAOQ{pF55<91Kg3{`S> zU}<>lV!tcLAS0Ac6~g=G!FMjbKmGzAMPVwiG%GYOQj_pXA4as4#6rLWP!CNRhSWziegGg zRRDxL5@e!|-X3Y2{dFgo9%|!Y^{?{&BA_krA`*5pj@MLm#0jU^_PZ!uGM3)8VzqH}4cj_CvoaVY4e8gPP}b0;E!RcYS}3jpa8r z-KY_pB0VrLU^Fu`yQ|C+2!ZSquP?DH=x9CuwCAqVSq_zi~R30)Ng2iYk4UyPJC+DfpEgf z!ErICJdMubrjdoeRa$wRY-(6IwvtwNXKyb*FAw!u2xDpKzO26Zfq;+wCAi?6zS>dMGu36gGFwY z8z35knk!?ser|99SPY^Cj zH6>fjRaNxyqo$=3)(n=mUVs2%8}8k^cL6x(4(QwRM&z0p1U3aUr!8H2@vvF|NrQqA zPhNXL?U7*y4^9@yDc3GLc^TMnqZ6-Qy9UvW#s2LpV}hZ%JpUe@eCl^`anZL0&fE9tEn`Fk;$zRfhtZ>8 zJ&@W{*_sp%rQhz;!tbsX_1g^!ztHSOE_n*SXMplSv3nhv&=(Zq;^H!>F0&+b+$c2? zK`(Wr;_B|6t^?a{HyxN5gz#3$iK^qYANw+7v;$YvW4x9r7N-((Sf5Q&V9c1}uO8xe z*YR2L|@P)jS{8dvVZlb`h z8921XrO;E8qv9~go^!$)qek32G7LVeuUEh?^^J^-ysN5`S&ejvuxQEBqX%N2HkY7` zA3qxPcYCF`O@pVr)$CSI{elAZi6^PckQ_fT5!2VF11$5PGfPDQlj}^v=1+OSFt@ZQ z``k=hQae)o39@{2bZkW8LHOlwWOL;C`9g4n%#MC6$$>HJrdZ`EmVt)P4 zA2mzM92d@6xbT=kY}6q2y*Ry>4K+1}v7c15ACv!Ff?@oeodpY>Z^K~|?FXZrsUeX< z<<6>4CQifu;cCJA=>xlKQ;vRk3(FN7saLW#te}!$51`w$#OA9j3i1dV1vL zgkEi#LwvhO#*h8}wPhaGX2}+*`lqb{uA#BPk;-))%98MK*uG1oPNvE~6BPf^4Z}vJDLn%h+AC zW>*`UF|GDOv`0EFHf~!a5U8E_cQT)dZeM|>i{N{_P*-T0qAx))=H|syggalRSA2Ul zES$i->l}$zWJF?w3Vz=+lTNjWC%7(skCvkdy9Ent&5N!|6|SQO7iHBFvhUmru9~c% zULX@rXSI;%R+@C~@FnhSU8;8qjx`O&RbR̢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 From db259a9fdc01f7b6ef5e115b75bed920622df0a9 Mon Sep 17 00:00:00 2001 From: Boblet Date: Tue, 12 Apr 2022 16:00:19 +0200 Subject: [PATCH 2/5] some fixes --- .../com/hbm/blocks/generic/BarbedWire.java | 126 +++++++++--------- .../java/com/hbm/handler/HbmKeybinds.java | 1 - .../java/com/hbm/inventory/FluidTank.java | 11 +- .../machine/TileEntityDeuteriumExtractor.java | 3 +- src/main/java/com/hbm/world/feature/Dud.java | 52 +++----- .../java/com/hbm/world/feature/Meteorite.java | 109 ++++++++------- 6 files changed, 145 insertions(+), 157 deletions(-) diff --git a/src/main/java/com/hbm/blocks/generic/BarbedWire.java b/src/main/java/com/hbm/blocks/generic/BarbedWire.java index 5be89ec51..b52d5ff46 100644 --- a/src/main/java/com/hbm/blocks/generic/BarbedWire.java +++ b/src/main/java/com/hbm/blocks/generic/BarbedWire.java @@ -21,93 +21,93 @@ import net.minecraft.world.World; public class BarbedWire extends Block { - public BarbedWire(Material mat) { - super(mat); - } - - public void onEntityCollidedWithBlock(World p_149670_1_, int x, int y, int z, Entity ent) { - - ent.setInWeb(); + public BarbedWire(Material mat) { + super(mat); + } - if(this == ModBlocks.barbed_wire) { - ent.attackEntityFrom(DamageSource.cactus, 2.0F); - } + public void onEntityCollidedWithBlock(World p_149670_1_, int x, int y, int z, Entity ent) { - if(this == ModBlocks.barbed_wire_fire) { - ent.attackEntityFrom(DamageSource.cactus, 2.0F); - ent.setFire(1); - } + //ent.setInWeb(); - if(this == ModBlocks.barbed_wire_poison) { - ent.attackEntityFrom(DamageSource.cactus, 2.0F); - - if(ent instanceof EntityLivingBase) - ((EntityLivingBase)ent).addPotionEffect(new PotionEffect(Potion.poison.id, 5 * 20, 2)); - - } + ent.motionX *= 0.25D; + ent.motionY *= 0.1D; + ent.motionZ *= 0.25D; - if(this == ModBlocks.barbed_wire_acid) { - ent.attackEntityFrom(DamageSource.cactus, 2.0F); + if(this == ModBlocks.barbed_wire) { + ent.attackEntityFrom(DamageSource.cactus, 2.0F); + } - if(ent instanceof EntityPlayer) { - ArmorUtil.damageSuit((EntityPlayer)ent, 0, 1); - ArmorUtil.damageSuit((EntityPlayer)ent, 1, 1); - ArmorUtil.damageSuit((EntityPlayer)ent, 2, 1); - ArmorUtil.damageSuit((EntityPlayer)ent, 3, 1); - } - } + if(this == ModBlocks.barbed_wire_fire) { + ent.attackEntityFrom(DamageSource.cactus, 2.0F); + ent.setFire(1); + } - if(this == ModBlocks.barbed_wire_wither) { - ent.attackEntityFrom(DamageSource.cactus, 2.0F); - - if(ent instanceof EntityLivingBase) - ((EntityLivingBase)ent).addPotionEffect(new PotionEffect(Potion.wither.id, 5 * 20, 4)); - } + if(this == ModBlocks.barbed_wire_poison) { + ent.attackEntityFrom(DamageSource.cactus, 2.0F); - if(this == ModBlocks.barbed_wire_ultradeath) { + if(ent instanceof EntityLivingBase) + ((EntityLivingBase) ent).addPotionEffect(new PotionEffect(Potion.poison.id, 5 * 20, 2)); + + } + + if(this == ModBlocks.barbed_wire_acid) { + ent.attackEntityFrom(DamageSource.cactus, 2.0F); + + if(ent instanceof EntityPlayer) { + ArmorUtil.damageSuit((EntityPlayer) ent, 0, 1); + ArmorUtil.damageSuit((EntityPlayer) ent, 1, 1); + ArmorUtil.damageSuit((EntityPlayer) ent, 2, 1); + ArmorUtil.damageSuit((EntityPlayer) ent, 3, 1); + } + } + + if(this == ModBlocks.barbed_wire_wither) { + ent.attackEntityFrom(DamageSource.cactus, 2.0F); + + if(ent instanceof EntityLivingBase) + ((EntityLivingBase) ent).addPotionEffect(new PotionEffect(Potion.wither.id, 5 * 20, 4)); + } + + if(this == ModBlocks.barbed_wire_ultradeath) { ent.attackEntityFrom(ModDamageSource.pc, 5.0F); - - if(ent instanceof EntityLivingBase) - ((EntityLivingBase)ent).addPotionEffect(new PotionEffect(HbmPotion.radiation.id, 5 * 20, 9)); - } - } - public boolean isOpaqueCube() - { - return false; - } + if(ent instanceof EntityLivingBase) + ((EntityLivingBase) ent).addPotionEffect(new PotionEffect(HbmPotion.radiation.id, 5 * 20, 9)); + } + } - public AxisAlignedBB getCollisionBoundingBoxFromPool(World p_149668_1_, int p_149668_2_, int p_149668_3_, int p_149668_4_) - { - return null; - } - - public static int renderID = RenderingRegistry.getNextAvailableRenderId(); + public boolean isOpaqueCube() { + return false; + } - public int getRenderType() - { - return renderID; - } + public AxisAlignedBB getCollisionBoundingBoxFromPool(World p_149668_1_, int p_149668_2_, int p_149668_3_, int p_149668_4_) { + return null; + } - public boolean renderAsNormalBlock() - { - return false; + public static int renderID = RenderingRegistry.getNextAvailableRenderId(); + + public int getRenderType() { + return renderID; + } + + public boolean renderAsNormalBlock() { + return false; } @Override public void onBlockPlacedBy(World world, int x, int y, int z, EntityLivingBase player, ItemStack itemStack) { int i = MathHelper.floor_double(player.rotationYaw * 4.0F / 360.0F + 0.5D) & 3; - if (i == 0) { + if(i == 0) { world.setBlockMetadataWithNotify(x, y, z, 5, 2); } - if (i == 1) { + if(i == 1) { world.setBlockMetadataWithNotify(x, y, z, 3, 2); } - if (i == 2) { + if(i == 2) { world.setBlockMetadataWithNotify(x, y, z, 4, 2); } - if (i == 3) { + if(i == 3) { world.setBlockMetadataWithNotify(x, y, z, 2, 2); } } diff --git a/src/main/java/com/hbm/handler/HbmKeybinds.java b/src/main/java/com/hbm/handler/HbmKeybinds.java index ee6a995dd..19ae602f3 100644 --- a/src/main/java/com/hbm/handler/HbmKeybinds.java +++ b/src/main/java/com/hbm/handler/HbmKeybinds.java @@ -59,7 +59,6 @@ public class HbmKeybinds { if(last != current) { PacketDispatcher.wrapper.sendToServer(new KeybindPacket(key, current)); props.setKeyPressed(key, current); - System.out.println(key); } } } diff --git a/src/main/java/com/hbm/inventory/FluidTank.java b/src/main/java/com/hbm/inventory/FluidTank.java index f2fac384b..32271f1f1 100644 --- a/src/main/java/com/hbm/inventory/FluidTank.java +++ b/src/main/java/com/hbm/inventory/FluidTank.java @@ -78,11 +78,16 @@ public class FluidTank { //Called on TE update public void updateTank(TileEntity te) { - updateTank(te.xCoord, te.yCoord, te.zCoord, te.getWorldObj().provider.dimensionId); + updateTank(te, 100); + } + public void updateTank(TileEntity te, int range) { + updateTank(te.xCoord, te.yCoord, te.zCoord, te.getWorldObj().provider.dimensionId, range); } - public void updateTank(int x, int y, int z, int dim) { - PacketDispatcher.wrapper.sendToAllAround(new TEFluidPacket(x, y, z, fluid, index, type), new TargetPoint(dim, x, y, z, 100)); + updateTank(x, y, z, dim, 100); + } + public void updateTank(int x, int y, int z, int dim, int range) { + PacketDispatcher.wrapper.sendToAllAround(new TEFluidPacket(x, y, z, fluid, index, type), new TargetPoint(dim, x, y, z, range)); } //Fills tank from canisters diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityDeuteriumExtractor.java b/src/main/java/com/hbm/tileentity/machine/TileEntityDeuteriumExtractor.java index 4c3d339f7..87600125e 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityDeuteriumExtractor.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityDeuteriumExtractor.java @@ -45,7 +45,8 @@ public class TileEntityDeuteriumExtractor extends TileEntityMachineBase implemen this.updateConnections(); - this.tanks[0].updateTank(xCoord, yCoord, zCoord, worldObj.provider.dimensionId); + this.tanks[0].updateTank(this, 25); + this.tanks[1].updateTank(this, 25); age++; if(age >= 10) { diff --git a/src/main/java/com/hbm/world/feature/Dud.java b/src/main/java/com/hbm/world/feature/Dud.java index edda9403b..1622cfae4 100644 --- a/src/main/java/com/hbm/world/feature/Dud.java +++ b/src/main/java/com/hbm/world/feature/Dud.java @@ -4,7 +4,6 @@ import java.util.Random; import com.hbm.blocks.ModBlocks; import com.hbm.config.GeneralConfig; -import com.hbm.main.MainRegistry; import net.minecraft.block.Block; import net.minecraft.block.material.Material; @@ -12,18 +11,16 @@ import net.minecraft.init.Blocks; import net.minecraft.world.World; import net.minecraft.world.gen.feature.WorldGenerator; -public class Dud extends WorldGenerator -{ +public class Dud extends WorldGenerator { + Block Block1 = ModBlocks.steel_scaffold; Block Block2 = ModBlocks.machine_difurnace_off; Block Block3 = ModBlocks.factory_titanium_core; Block Block4 = ModBlocks.steel_wall; Block Block5 = ModBlocks.reinforced_light; - protected Block[] GetValidSpawnBlocks() - { - return new Block[] - { + protected Block[] GetValidSpawnBlocks() { + return new Block[] { Blocks.grass, Blocks.dirt, Blocks.stone, @@ -32,29 +29,21 @@ public class Dud extends WorldGenerator }; } - public boolean LocationIsValidSpawn(World world, int x, int y, int z) - { + public boolean LocationIsValidSpawn(World world, int x, int y, int z) { Block checkBlock = world.getBlock(x, y - 1, z); - Block blockAbove = world.getBlock(x, y , z); + Block blockAbove = world.getBlock(x, y, z); Block blockBelow = world.getBlock(x, y - 2, z); - for (Block i : GetValidSpawnBlocks()) - { - if (blockAbove != Blocks.air) - { + for(Block i : GetValidSpawnBlocks()) { + if(blockAbove != Blocks.air) { return false; } - if (checkBlock == i) - { + if(checkBlock == i) { return true; - } - else if (checkBlock == Blocks.snow_layer && blockBelow == i) - { + } else if(checkBlock == Blocks.snow_layer && blockBelow == i) { return true; - } - else if (checkBlock.getMaterial() == Material.plants && blockBelow == i) - { + } else if(checkBlock.getMaterial() == Material.plants && blockBelow == i) { return true; } } @@ -62,28 +51,25 @@ public class Dud extends WorldGenerator } @Override - public boolean generate(World world, Random rand, int x, int y, int z) - { + public boolean generate(World world, Random rand, int x, int y, int z) { int i = rand.nextInt(1); - if(i == 0) - { - generate_r0(world, rand, x, y, z); + if(i == 0) { + generate_r0(world, rand, x, y, z); } - return true; + return true; } - public boolean generate_r0(World world, Random rand, int x, int y, int z) - { + public boolean generate_r0(World world, Random rand, int x, int y, int z) { if(!LocationIsValidSpawn(world, x, y, z)) return false; - + world.setBlock(x, y, z, ModBlocks.crashed_balefire, rand.nextInt(4) + 2, 3); - + if(GeneralConfig.enableDebugMode) - System.out.print("[Debug] Successfully spawned dud at " + x + " " + y +" " + z + "\n"); + System.out.print("[Debug] Successfully spawned dud at " + x + " " + y + " " + z + "\n"); return true; } diff --git a/src/main/java/com/hbm/world/feature/Meteorite.java b/src/main/java/com/hbm/world/feature/Meteorite.java index 3bbd1612a..5fd973253 100644 --- a/src/main/java/com/hbm/world/feature/Meteorite.java +++ b/src/main/java/com/hbm/world/feature/Meteorite.java @@ -5,26 +5,17 @@ import java.util.List; import java.util.Random; import com.hbm.blocks.ModBlocks; -import com.hbm.config.GeneralConfig; import com.hbm.config.WorldConfig; import com.hbm.explosion.ExplosionLarge; -import com.hbm.explosion.ExplosionNT; -import com.hbm.explosion.ExplosionNukeGeneric; import com.hbm.explosion.ExplosionNukeSmall; -import com.hbm.explosion.ExplosionNT.ExAttrib; import com.hbm.items.ModItems; import com.hbm.lib.ModDamageSource; -import com.hbm.main.MainRegistry; -import com.hbm.packet.AuxParticlePacketNT; -import com.hbm.packet.PacketDispatcher; -import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import net.minecraft.block.Block; import net.minecraft.entity.Entity; import net.minecraft.entity.item.EntityItem; import net.minecraft.init.Blocks; import net.minecraft.item.ItemStack; -import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.AxisAlignedBB; import net.minecraft.world.World; @@ -117,7 +108,7 @@ public class Meteorite { List list10 = new ArrayList(); list10.add(new ItemStack(ModBlocks.block_meteor_broken)); generateSphere5x5(world, rand, x, y, z, list10); - world.setBlock(x, y, z, ModBlocks.taint, 9, 2); + setBlock(world, x, y, z, ModBlocks.taint, 9, 2); return; case 11: // Atomic meteorite @@ -433,7 +424,7 @@ public class Meteorite { generateBox(world, rand, x, y, z, hullL); ItemStack stack = sCore.get(rand.nextInt(sCore.size())); - world.setBlock(x, y, z, Block.getBlockFromItem(stack.getItem()), stack.getItemDamage(), 2); + setBlock(world, x, y, z, Block.getBlockFromItem(stack.getItem()), stack.getItemDamage(), 2); } public void genL1(World world, Random rand, int x, int y, int z, List hull, List op, List ip, List core) { @@ -441,7 +432,7 @@ public class Meteorite { generateStar5x5(world, rand, x, y, z, op); generateStar3x3(world, rand, x, y, z, ip); ItemStack stack = core.get(rand.nextInt(core.size())); - world.setBlock(x, y, z, Block.getBlockFromItem(stack.getItem()), stack.getItemDamage(), 2); + setBlock(world, x, y, z, Block.getBlockFromItem(stack.getItem()), stack.getItemDamage(), 2); } public void genL2(World world, Random rand, int x, int y, int z, List hull, List op, List ip, List core) { @@ -449,7 +440,7 @@ public class Meteorite { generateSphere5x5(world, rand, x, y, z, op); generateStar3x3(world, rand, x, y, z, ip); ItemStack stack = core.get(rand.nextInt(core.size())); - world.setBlock(x, y, z, Block.getBlockFromItem(stack.getItem()), stack.getItemDamage(), 2); + setBlock(world, x, y, z, Block.getBlockFromItem(stack.getItem()), stack.getItemDamage(), 2); } public void genL3(World world, Random rand, int x, int y, int z, List hull, List op, List ip, List core) { @@ -457,7 +448,7 @@ public class Meteorite { generateSphere5x5(world, rand, x, y, z, op); generateBox(world, rand, x, y, z, ip); ItemStack stack = core.get(rand.nextInt(core.size())); - world.setBlock(x, y, z, Block.getBlockFromItem(stack.getItem()), stack.getItemDamage(), 2); + setBlock(world, x, y, z, Block.getBlockFromItem(stack.getItem()), stack.getItemDamage(), 2); } public void genL4(World world, Random rand, int x, int y, int z, List hull, List op, List ip, List core) { @@ -466,7 +457,7 @@ public class Meteorite { generateBox(world, rand, x, y, z, ip); generateStar3x3(world, rand, x, y, z, this.getRandomOre(rand)); ItemStack stack = core.get(rand.nextInt(core.size())); - world.setBlock(x, y, z, Block.getBlockFromItem(stack.getItem()), stack.getItemDamage(), 2); + setBlock(world, x, y, z, Block.getBlockFromItem(stack.getItem()), stack.getItemDamage(), 2); } public void genL5(World world, Random rand, int x, int y, int z, List hull, List op, List ip, List core) { @@ -475,27 +466,27 @@ public class Meteorite { generateStar5x5(world, rand, x, y, z, ip); generateStar3x3(world, rand, x, y, z, this.getRandomOre(rand)); ItemStack stack = core.get(rand.nextInt(core.size())); - world.setBlock(x, y, z, Block.getBlockFromItem(stack.getItem()), stack.getItemDamage(), 2); + setBlock(world, x, y, z, Block.getBlockFromItem(stack.getItem()), stack.getItemDamage(), 2); } public void genM1(World world, Random rand, int x, int y, int z, List hull, List op, List ip, List core) { generateSphere5x5(world, rand, x, y, z, hull); ItemStack stack = core.get(rand.nextInt(core.size())); - world.setBlock(x, y, z, Block.getBlockFromItem(stack.getItem()), stack.getItemDamage(), 2); + setBlock(world, x, y, z, Block.getBlockFromItem(stack.getItem()), stack.getItemDamage(), 2); } public void genM2(World world, Random rand, int x, int y, int z, List hull, List op, List ip, List core) { generateSphere5x5(world, rand, x, y, z, hull); generateStar3x3(world, rand, x, y, z, op); ItemStack stack = core.get(rand.nextInt(core.size())); - world.setBlock(x, y, z, Block.getBlockFromItem(stack.getItem()), stack.getItemDamage(), 2); + setBlock(world, x, y, z, Block.getBlockFromItem(stack.getItem()), stack.getItemDamage(), 2); } public void genM3(World world, Random rand, int x, int y, int z, List hull, List op, List ip, List core) { generateSphere5x5(world, rand, x, y, z, hull); generateBox(world, rand, x, y, z, op); ItemStack stack = core.get(rand.nextInt(core.size())); - world.setBlock(x, y, z, Block.getBlockFromItem(stack.getItem()), stack.getItemDamage(), 2); + setBlock(world, x, y, z, Block.getBlockFromItem(stack.getItem()), stack.getItemDamage(), 2); } public void genM4(World world, Random rand, int x, int y, int z, List hull, List op, List ip, List core) { @@ -503,14 +494,14 @@ public class Meteorite { generateBox(world, rand, x, y, z, op); generateStar3x3(world, rand, x, y, z, ip); ItemStack stack = core.get(rand.nextInt(core.size())); - world.setBlock(x, y, z, Block.getBlockFromItem(stack.getItem()), stack.getItemDamage(), 2); + setBlock(world, x, y, z, Block.getBlockFromItem(stack.getItem()), stack.getItemDamage(), 2); } public void genM5(World world, Random rand, int x, int y, int z, List hull, List op, List ip, List core) { generateSphere5x5(world, rand, x, y, z, hull); generateBox(world, rand, x, y, z, ip); ItemStack stack = core.get(rand.nextInt(core.size())); - world.setBlock(x, y, z, Block.getBlockFromItem(stack.getItem()), stack.getItemDamage(), 2); + setBlock(world, x, y, z, Block.getBlockFromItem(stack.getItem()), stack.getItemDamage(), 2); } public void genM6(World world, Random rand, int x, int y, int z, List hull, List op, List ip, List core) { @@ -518,7 +509,7 @@ public class Meteorite { generateBox(world, rand, x, y, z, ip); generateStar3x3(world, rand, x, y, z, this.getRandomOre(rand)); ItemStack stack = core.get(rand.nextInt(core.size())); - world.setBlock(x, y, z, Block.getBlockFromItem(stack.getItem()), stack.getItemDamage(), 2); + setBlock(world, x, y, z, Block.getBlockFromItem(stack.getItem()), stack.getItemDamage(), 2); } public void generateSphere7x7(World world, Random rand, int x, int y, int z, List set) { @@ -526,38 +517,38 @@ public class Meteorite { for(int b = -1; b < 2; b++) for(int c = -1; c < 2; c++) { ItemStack stack = set.get(rand.nextInt(set.size())); - world.setBlock(x + a, y + b, z + c, Block.getBlockFromItem(stack.getItem()), stack.getItemDamage(), 2); + setBlock(world, x + a, y + b, z + c, Block.getBlockFromItem(stack.getItem()), stack.getItemDamage(), 2); } for(int a = -1; a < 2; a++) for(int b = -3; b < 4; b++) for(int c = -1; c < 2; c++) { ItemStack stack = set.get(rand.nextInt(set.size())); - world.setBlock(x + a, y + b, z + c, Block.getBlockFromItem(stack.getItem()), stack.getItemDamage(), 2); + setBlock(world, x + a, y + b, z + c, Block.getBlockFromItem(stack.getItem()), stack.getItemDamage(), 2); } for(int a = -1; a < 2; a++) for(int b = -1; b < 2; b++) for(int c = -3; c < 4; c++) { ItemStack stack = set.get(rand.nextInt(set.size())); - world.setBlock(x + a, y + b, z + c, Block.getBlockFromItem(stack.getItem()), stack.getItemDamage(), 2); + setBlock(world, x + a, y + b, z + c, Block.getBlockFromItem(stack.getItem()), stack.getItemDamage(), 2); } for(int a = -2; a < 3; a++) for(int b = -2; b < 3; b++) for(int c = -1; c < 2; c++) { ItemStack stack = set.get(rand.nextInt(set.size())); - world.setBlock(x + a, y + b, z + c, Block.getBlockFromItem(stack.getItem()), stack.getItemDamage(), 2); + setBlock(world, x + a, y + b, z + c, Block.getBlockFromItem(stack.getItem()), stack.getItemDamage(), 2); } for(int a = -1; a < 2; a++) for(int b = -2; b < 3; b++) for(int c = -2; c < 3; c++) { ItemStack stack = set.get(rand.nextInt(set.size())); - world.setBlock(x + a, y + b, z + c, Block.getBlockFromItem(stack.getItem()), stack.getItemDamage(), 2); + setBlock(world, x + a, y + b, z + c, Block.getBlockFromItem(stack.getItem()), stack.getItemDamage(), 2); } for(int a = -2; a < 3; a++) for(int b = -1; b < 2; b++) for(int c = -2; c < 3; c++) { ItemStack stack = set.get(rand.nextInt(set.size())); - world.setBlock(x + a, y + b, z + c, Block.getBlockFromItem(stack.getItem()), stack.getItemDamage(), 2); + setBlock(world, x + a, y + b, z + c, Block.getBlockFromItem(stack.getItem()), stack.getItemDamage(), 2); } } @@ -566,19 +557,19 @@ public class Meteorite { for(int b = -1; b < 2; b++) for(int c = -1; c < 2; c++) { ItemStack stack = set.get(rand.nextInt(set.size())); - world.setBlock(x + a, y + b, z + c, Block.getBlockFromItem(stack.getItem()), stack.getItemDamage(), 2); + setBlock(world, x + a, y + b, z + c, Block.getBlockFromItem(stack.getItem()), stack.getItemDamage(), 2); } for(int a = -1; a < 2; a++) for(int b = -2; b < 3; b++) for(int c = -1; c < 2; c++) { ItemStack stack = set.get(rand.nextInt(set.size())); - world.setBlock(x + a, y + b, z + c, Block.getBlockFromItem(stack.getItem()), stack.getItemDamage(), 2); + setBlock(world, x + a, y + b, z + c, Block.getBlockFromItem(stack.getItem()), stack.getItemDamage(), 2); } for(int a = -1; a < 2; a++) for(int b = -1; b < 2; b++) for(int c = -2; c < 3; c++) { ItemStack stack = set.get(rand.nextInt(set.size())); - world.setBlock(x + a, y + b, z + c, Block.getBlockFromItem(stack.getItem()), stack.getItemDamage(), 2); + setBlock(world, x + a, y + b, z + c, Block.getBlockFromItem(stack.getItem()), stack.getItemDamage(), 2); } } @@ -587,57 +578,57 @@ public class Meteorite { for(int b = -1; b < 2; b++) for(int c = -1; c < 2; c++) { ItemStack stack = set.get(rand.nextInt(set.size())); - world.setBlock(x + a, y + b, z + c, Block.getBlockFromItem(stack.getItem()), stack.getItemDamage(), 2); + setBlock(world, x + a, y + b, z + c, Block.getBlockFromItem(stack.getItem()), stack.getItemDamage(), 2); } for(int a = -1; a < 2; a++) for(int b = -4; b < 5; b++) for(int c = -1; c < 2; c++) { ItemStack stack = set.get(rand.nextInt(set.size())); - world.setBlock(x + a, y + b, z + c, Block.getBlockFromItem(stack.getItem()), stack.getItemDamage(), 2); + setBlock(world, x + a, y + b, z + c, Block.getBlockFromItem(stack.getItem()), stack.getItemDamage(), 2); } for(int a = -1; a < 2; a++) for(int b = -1; b < 2; b++) for(int c = -4; c < 5; c++) { ItemStack stack = set.get(rand.nextInt(set.size())); - world.setBlock(x + a, y + b, z + c, Block.getBlockFromItem(stack.getItem()), stack.getItemDamage(), 2); + setBlock(world, x + a, y + b, z + c, Block.getBlockFromItem(stack.getItem()), stack.getItemDamage(), 2); } for(int a = -1; a < 2; a++) for(int b = -3; b < 4; b++) for(int c = -3; c < 4; c++) { ItemStack stack = set.get(rand.nextInt(set.size())); - world.setBlock(x + a, y + b, z + c, Block.getBlockFromItem(stack.getItem()), stack.getItemDamage(), 2); + setBlock(world, x + a, y + b, z + c, Block.getBlockFromItem(stack.getItem()), stack.getItemDamage(), 2); } for(int a = -3; a < 4; a++) for(int b = -1; b < 2; b++) for(int c = -3; c < 4; c++) { ItemStack stack = set.get(rand.nextInt(set.size())); - world.setBlock(x + a, y + b, z + c, Block.getBlockFromItem(stack.getItem()), stack.getItemDamage(), 2); + setBlock(world, x + a, y + b, z + c, Block.getBlockFromItem(stack.getItem()), stack.getItemDamage(), 2); } for(int a = -3; a < 4; a++) for(int b = -3; b < 4; b++) for(int c = -1; c < 2; c++) { ItemStack stack = set.get(rand.nextInt(set.size())); - world.setBlock(x + a, y + b, z + c, Block.getBlockFromItem(stack.getItem()), stack.getItemDamage(), 2); + setBlock(world, x + a, y + b, z + c, Block.getBlockFromItem(stack.getItem()), stack.getItemDamage(), 2); } for(int a = -3; a < 4; a++) for(int b = -2; b < 3; b++) for(int c = -2; c < 3; c++) { ItemStack stack = set.get(rand.nextInt(set.size())); - world.setBlock(x + a, y + b, z + c, Block.getBlockFromItem(stack.getItem()), stack.getItemDamage(), 2); + setBlock(world, x + a, y + b, z + c, Block.getBlockFromItem(stack.getItem()), stack.getItemDamage(), 2); } for(int a = -2; a < 3; a++) for(int b = -3; b < 4; b++) for(int c = -2; c < 3; c++) { ItemStack stack = set.get(rand.nextInt(set.size())); - world.setBlock(x + a, y + b, z + c, Block.getBlockFromItem(stack.getItem()), stack.getItemDamage(), 2); + setBlock(world, x + a, y + b, z + c, Block.getBlockFromItem(stack.getItem()), stack.getItemDamage(), 2); } for(int a = -2; a < 3; a++) for(int b = -2; b < 3; b++) for(int c = -3; c < 4; c++) { ItemStack stack = set.get(rand.nextInt(set.size())); - world.setBlock(x + a, y + b, z + c, Block.getBlockFromItem(stack.getItem()), stack.getItemDamage(), 2); + setBlock(world, x + a, y + b, z + c, Block.getBlockFromItem(stack.getItem()), stack.getItemDamage(), 2); } } @@ -646,7 +637,7 @@ public class Meteorite { for(int b = -1; b < 2; b++) for(int c = -1; c < 2; c++) { ItemStack stack = set.get(rand.nextInt(set.size())); - world.setBlock(x + a, y + b, z + c, Block.getBlockFromItem(stack.getItem()), stack.getItemDamage(), 2); + setBlock(world, x + a, y + b, z + c, Block.getBlockFromItem(stack.getItem()), stack.getItemDamage(), 2); } } @@ -655,39 +646,39 @@ public class Meteorite { for(int b = -1; b < 2; b++) for(int c = -1; c < 2; c++) { ItemStack stack = set.get(rand.nextInt(set.size())); - world.setBlock(x + a, y + b, z + c, Block.getBlockFromItem(stack.getItem()), stack.getItemDamage(), 2); + setBlock(world, x + a, y + b, z + c, Block.getBlockFromItem(stack.getItem()), stack.getItemDamage(), 2); } ItemStack stack = set.get(rand.nextInt(set.size())); - world.setBlock(x + 2, y, z, Block.getBlockFromItem(stack.getItem()), stack.getItemDamage(), 2); + setBlock(world, x + 2, y, z, Block.getBlockFromItem(stack.getItem()), stack.getItemDamage(), 2); stack = set.get(rand.nextInt(set.size())); - world.setBlock(x - 2, y, z, Block.getBlockFromItem(stack.getItem()), stack.getItemDamage(), 2); + setBlock(world, x - 2, y, z, Block.getBlockFromItem(stack.getItem()), stack.getItemDamage(), 2); stack = set.get(rand.nextInt(set.size())); - world.setBlock(x, y + 2, z, Block.getBlockFromItem(stack.getItem()), stack.getItemDamage(), 2); + setBlock(world, x, y + 2, z, Block.getBlockFromItem(stack.getItem()), stack.getItemDamage(), 2); stack = set.get(rand.nextInt(set.size())); - world.setBlock(x, y - 2, z, Block.getBlockFromItem(stack.getItem()), stack.getItemDamage(), 2); + setBlock(world, x, y - 2, z, Block.getBlockFromItem(stack.getItem()), stack.getItemDamage(), 2); stack = set.get(rand.nextInt(set.size())); - world.setBlock(x, y, z + 2, Block.getBlockFromItem(stack.getItem()), stack.getItemDamage(), 2); + setBlock(world, x, y, z + 2, Block.getBlockFromItem(stack.getItem()), stack.getItemDamage(), 2); stack = set.get(rand.nextInt(set.size())); - world.setBlock(x, y, z - 2, Block.getBlockFromItem(stack.getItem()), stack.getItemDamage(), 2); + setBlock(world, x, y, z - 2, Block.getBlockFromItem(stack.getItem()), stack.getItemDamage(), 2); } public void generateStar3x3(World world, Random rand, int x, int y, int z, List set) { ItemStack stack = set.get(rand.nextInt(set.size())); - world.setBlock(x, y, z, Block.getBlockFromItem(stack.getItem()), stack.getItemDamage(), 2); + setBlock(world, x, y, z, Block.getBlockFromItem(stack.getItem()), stack.getItemDamage(), 2); stack = set.get(rand.nextInt(set.size())); - world.setBlock(x + 1, y, z, Block.getBlockFromItem(stack.getItem()), stack.getItemDamage(), 2); + setBlock(world, x + 1, y, z, Block.getBlockFromItem(stack.getItem()), stack.getItemDamage(), 2); stack = set.get(rand.nextInt(set.size())); - world.setBlock(x - 1, y, z, Block.getBlockFromItem(stack.getItem()), stack.getItemDamage(), 2); + setBlock(world, x - 1, y, z, Block.getBlockFromItem(stack.getItem()), stack.getItemDamage(), 2); stack = set.get(rand.nextInt(set.size())); - world.setBlock(x, y + 1, z, Block.getBlockFromItem(stack.getItem()), stack.getItemDamage(), 2); + setBlock(world, x, y + 1, z, Block.getBlockFromItem(stack.getItem()), stack.getItemDamage(), 2); stack = set.get(rand.nextInt(set.size())); - world.setBlock(x, y - 1, z, Block.getBlockFromItem(stack.getItem()), stack.getItemDamage(), 2); + setBlock(world, x, y - 1, z, Block.getBlockFromItem(stack.getItem()), stack.getItemDamage(), 2); stack = set.get(rand.nextInt(set.size())); - world.setBlock(x, y, z + 1, Block.getBlockFromItem(stack.getItem()), stack.getItemDamage(), 2); + setBlock(world, x, y, z + 1, Block.getBlockFromItem(stack.getItem()), stack.getItemDamage(), 2); stack = set.get(rand.nextInt(set.size())); - world.setBlock(x, y, z - 1, Block.getBlockFromItem(stack.getItem()), stack.getItemDamage(), 2); + setBlock(world, x, y, z - 1, Block.getBlockFromItem(stack.getItem()), stack.getItemDamage(), 2); } public List getRandomOre(Random rand) { @@ -717,5 +708,11 @@ public class Meteorite { return ores; } - + + private void setBlock(World world, int x, int y, int z, Block b, int meta, int flag) { + Block target = world.getBlock(x, y, z); + float hardness = target.getBlockHardness(world, x, y, z); + if(hardness != -1 && hardness < 10_000) + world.setBlock(x, y, z, b, meta, flag); + } } From f62695bab1e6eeba86e377bdbf1e53456454393c Mon Sep 17 00:00:00 2001 From: Boblet Date: Wed, 13 Apr 2022 16:43:17 +0200 Subject: [PATCH 3/5] more fluid net stuff, sulfuric acid bucket fix --- src/main/java/api/hbm/fluid/IFluidUser.java | 7 +++++ .../com/hbm/blocks/machine/MachineCoal.java | 2 -- .../com/hbm/inventory/OreDictManager.java | 2 ++ .../inventory/recipes/anvil/AnvilRecipes.java | 2 +- src/main/java/com/hbm/items/ModItems.java | 1 + .../items/machine/ItemFluidIdentifier.java | 7 ++++- .../machine/TileEntityMachineDiesel.java | 12 +++++-- .../machine/storage/TileEntityBarrel.java | 28 +++++++++++++---- .../storage/TileEntityMachineBAT9000.java | 13 ++++++++ .../storage/TileEntityMachineFluidTank.java | 31 ++++++++++++++++++- .../storage/TileEntityMachineOrbus.java | 21 +++++++++++-- 11 files changed, 109 insertions(+), 17 deletions(-) diff --git a/src/main/java/api/hbm/fluid/IFluidUser.java b/src/main/java/api/hbm/fluid/IFluidUser.java index d36dd105b..154d234e2 100644 --- a/src/main/java/api/hbm/fluid/IFluidUser.java +++ b/src/main/java/api/hbm/fluid/IFluidUser.java @@ -53,6 +53,13 @@ public interface IFluidUser extends IFluidConnector { PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(data, x + world.rand.nextDouble(), y + world.rand.nextDouble(), z + world.rand.nextDouble()), new TargetPoint(world.provider.dimensionId, x + 0.5, y + 0.5, z + 0.5, 25)); } } + + public default void sendFluidToAll(FluidType type, TileEntity te) { + + for(ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) { + sendFluid(type, te.getWorldObj(), te.xCoord + dir.offsetX, te.yCoord + dir.offsetY, te.zCoord + dir.offsetZ, dir); + } + } public default long getTotalFluidForSend(FluidType type) { return 0; } public default void removeFluidForTransfer(FluidType type, long amount) { } diff --git a/src/main/java/com/hbm/blocks/machine/MachineCoal.java b/src/main/java/com/hbm/blocks/machine/MachineCoal.java index 8b910d972..4a514f21f 100644 --- a/src/main/java/com/hbm/blocks/machine/MachineCoal.java +++ b/src/main/java/com/hbm/blocks/machine/MachineCoal.java @@ -29,7 +29,6 @@ import cpw.mods.fml.relauncher.SideOnly; public class MachineCoal extends BlockContainer { private final Random field_149933_a = new Random(); - private Random rand; private final boolean isActive; private static boolean keepInventory; @@ -38,7 +37,6 @@ public class MachineCoal extends BlockContainer { public MachineCoal(boolean blockState) { super(Material.iron); - rand = new Random(); isActive = blockState; } diff --git a/src/main/java/com/hbm/inventory/OreDictManager.java b/src/main/java/com/hbm/inventory/OreDictManager.java index ad0448d8f..af0fa9f34 100644 --- a/src/main/java/com/hbm/inventory/OreDictManager.java +++ b/src/main/java/com/hbm/inventory/OreDictManager.java @@ -162,6 +162,7 @@ public class OreDictManager { /** LEAD */ public static final DictFrame PB = new DictFrame("Lead"); //public static final DictFrame BI = new DictFrame("Bismuth"); + public static final DictFrame AS = new DictFrame("Arsenic"); /** TANTALUM */ public static final DictFrame TA = new DictFrame("Tantalum"); public static final DictFrame COLTAN = new DictFrame("Coltan"); @@ -327,6 +328,7 @@ public class OreDictManager { TCALLOY .ingot(ingot_tcalloy) .dust(powder_tcalloy); PB .nugget(nugget_lead) .ingot(ingot_lead) .dust(powder_lead) .plate(plate_lead) .block(block_lead) .ore(ore_lead, ore_meteor_lead); //BI .nugget(nugget_bismuth) .ingot(ingot_bismuth); THAT'S WHAT YOU THOUGHT! + AS .nugget(nugget_arsenic) .ingot(ingot_arsenic); TA .nugget(nugget_tantalium) .gem(gem_tantalium) .ingot(ingot_tantalium) .dust(powder_tantalium) .block(block_tantalium); COLTAN .ingot(fragment_coltan) .dust(powder_coltan_ore) .block(block_coltan) .ore(ore_coltan); NB .nugget(fragment_niobium) .ingot(ingot_niobium) .dustSmall(powder_niobium_tiny) .dust(powder_niobium) .block(block_niobium); diff --git a/src/main/java/com/hbm/inventory/recipes/anvil/AnvilRecipes.java b/src/main/java/com/hbm/inventory/recipes/anvil/AnvilRecipes.java index b00179647..87a06c2bc 100644 --- a/src/main/java/com/hbm/inventory/recipes/anvil/AnvilRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/anvil/AnvilRecipes.java @@ -286,7 +286,7 @@ public class AnvilRecipes { pullFromAssembler(new ComparableStack(ModItems.plate_mixed, 4), 3); constructionRecipes.add(new AnvilConstructionRecipe( - new AStack[] {new ComparableStack(ModItems.ingot_arsenic), new OreDictStack(REDSTONE.dust(), 4), new OreDictStack(ASBESTOS.ingot(), 2)}, + new AStack[] {new OreDictStack(AS.ingot()), new OreDictStack(REDSTONE.dust(), 4), new OreDictStack(ASBESTOS.ingot(), 2)}, new AnvilOutput(new ItemStack(ModItems.circuit_arsenic_raw))).setTier(5)); constructionRecipes.add(new AnvilConstructionRecipe(new ComparableStack(ModItems.ingot_u233, 1), new AnvilOutput(new ItemStack(ModItems.plate_fuel_u233))).setTier(4)); diff --git a/src/main/java/com/hbm/items/ModItems.java b/src/main/java/com/hbm/items/ModItems.java index 6f5489903..6634ff179 100644 --- a/src/main/java/com/hbm/items/ModItems.java +++ b/src/main/java/com/hbm/items/ModItems.java @@ -5631,6 +5631,7 @@ public class ModItems { FluidContainerRegistry.registerFluidContainer(new FluidStack(ModBlocks.acid_fluid, 1000), new ItemStack(ModItems.bucket_acid)); FluidContainerRegistry.registerFluidContainer(new FluidStack(ModBlocks.toxic_fluid, 1000), new ItemStack(ModItems.bucket_toxic)); FluidContainerRegistry.registerFluidContainer(new FluidStack(ModBlocks.schrabidic_fluid, 1000), new ItemStack(ModItems.bucket_schrabidic_acid)); + FluidContainerRegistry.registerFluidContainer(new FluidStack(ModBlocks.sulfuric_acid_fluid, 1000), new ItemStack(ModItems.bucket_sulfuric_acid)); BucketHandler.INSTANCE.buckets.put(ModBlocks.mud_block, ModItems.bucket_mud); BucketHandler.INSTANCE.buckets.put(ModBlocks.acid_block, ModItems.bucket_acid); BucketHandler.INSTANCE.buckets.put(ModBlocks.toxic_block, ModItems.bucket_toxic); diff --git a/src/main/java/com/hbm/items/machine/ItemFluidIdentifier.java b/src/main/java/com/hbm/items/machine/ItemFluidIdentifier.java index 0e2bff87e..335970c7b 100644 --- a/src/main/java/com/hbm/items/machine/ItemFluidIdentifier.java +++ b/src/main/java/com/hbm/items/machine/ItemFluidIdentifier.java @@ -85,6 +85,11 @@ public class ItemFluidIdentifier extends Item implements IItemFluidIdentifier { return Fluids.fromID(stack.getItemDamage()); } + @Override + public boolean doesSneakBypassUse(World world, int x, int y, int z, EntityPlayer player) { + return true; + } + @Override public boolean onItemUse(ItemStack stack, EntityPlayer player, World world, int x, int y, int z, int i, float f1, float f2, float f3) { TileEntity te = world.getTileEntity(x, y, z); @@ -139,7 +144,7 @@ public class ItemFluidIdentifier extends Item implements IItemFluidIdentifier { if (te instanceof TileEntityFluidDuctSimple && ((TileEntityFluidDuctSimple) te).getType() == oldType) { TileEntityFluidDuctSimple nextDuct = (TileEntityFluidDuctSimple) te; - long connectionsCount = Arrays.stream(nextDuct.connections).filter(Objects::nonNull).count(); + long connectionsCount = Arrays.stream(nextDuct.connections).filter(Objects::nonNull).count(); // (o -> Objects.nonNull(o)) if (connectionsCount > 1) { markDuctsRecursively(world, nextX, nextY, nextZ, type, maxRecursion - currentRecursion); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineDiesel.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineDiesel.java index 4dbe06d93..8948ad2fb 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineDiesel.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineDiesel.java @@ -1,8 +1,6 @@ package com.hbm.tileentity.machine; -import java.util.ArrayList; import java.util.HashMap; -import java.util.List; import com.hbm.interfaces.IFluidAcceptor; import com.hbm.interfaces.IFluidContainer; @@ -18,11 +16,12 @@ import com.hbm.tileentity.TileEntityMachineBase; import api.hbm.energy.IBatteryItem; import api.hbm.energy.IEnergyGenerator; +import api.hbm.fluid.IFluidStandardReceiver; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityMachineDiesel extends TileEntityMachineBase implements IEnergyGenerator, IFluidContainer, IFluidAcceptor { +public class TileEntityMachineDiesel extends TileEntityMachineBase implements IEnergyGenerator, IFluidContainer, IFluidAcceptor, IFluidStandardReceiver { public long power; public int soundCycle = 0; @@ -102,6 +101,8 @@ public class TileEntityMachineDiesel extends TileEntityMachineBase implements IE for(ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) this.sendPower(worldObj, xCoord + dir.offsetX, yCoord + dir.offsetY, zCoord + dir.offsetZ, dir); + + this.updateStandardPipes(Fluids.WATER, worldObj, xCoord, yCoord, zCoord); //Tank Management tank.setType(3, 4, slots); @@ -229,4 +230,9 @@ public class TileEntityMachineDiesel extends TileEntityMachineBase implements IE if(type == tank.getTankType()) tank.setFill(i); } + + @Override + public FluidTank[] getReceivingTanks() { + return new FluidTank[] {tank}; + } } diff --git a/src/main/java/com/hbm/tileentity/machine/storage/TileEntityBarrel.java b/src/main/java/com/hbm/tileentity/machine/storage/TileEntityBarrel.java index 3759d41db..504372313 100644 --- a/src/main/java/com/hbm/tileentity/machine/storage/TileEntityBarrel.java +++ b/src/main/java/com/hbm/tileentity/machine/storage/TileEntityBarrel.java @@ -14,14 +14,13 @@ import com.hbm.lib.Library; import com.hbm.main.ModEventHandler; import com.hbm.tileentity.TileEntityMachineBase; -import api.hbm.fluid.IFluidStandardSender; +import api.hbm.fluid.IFluidUser; import net.minecraft.block.Block; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.world.EnumSkyBlock; -import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityBarrel extends TileEntityMachineBase implements IFluidAcceptor, IFluidSource, IFluidStandardSender { +public class TileEntityBarrel extends TileEntityMachineBase implements IFluidAcceptor, IFluidSource, IFluidUser { public FluidTank tank; public short mode = 0; @@ -54,7 +53,13 @@ public class TileEntityBarrel extends TileEntityMachineBase implements IFluidAcc tank.unloadTank(4, 5, slots); tank.updateTank(xCoord, yCoord, zCoord, worldObj.provider.dimensionId); - this.sendFluid(tank.getTankType(), worldObj, xCoord, yCoord - 1, zCoord, ForgeDirection.DOWN); + if(this.mode == 1 || this.mode == 2) { + this.sendFluidToAll(tank.getTankType(), this); + } + + /* + * TODO: these don't work as receivers yet, don't forget how the subscription system works + */ age++; if(age >= 20) @@ -206,7 +211,18 @@ public class TileEntityBarrel extends TileEntityMachineBase implements IFluidAcc } @Override - public FluidTank[] getSendingTanks() { - return new FluidTank[] {tank}; + public long transferFluid(FluidType type, long fluid) { + long toTransfer = Math.min(getDemand(type), fluid); + tank.setFill(tank.getFill() + (int) toTransfer); + return fluid - toTransfer; + } + + @Override + public long getDemand(FluidType type) { + + if(this.mode == 2 || this.mode == 3) + return 0; + + return type == tank.getTankType() ? tank.getMaxFill() - tank.getFill() : 0; } } diff --git a/src/main/java/com/hbm/tileentity/machine/storage/TileEntityMachineBAT9000.java b/src/main/java/com/hbm/tileentity/machine/storage/TileEntityMachineBAT9000.java index 411a42a3f..876ba7dda 100644 --- a/src/main/java/com/hbm/tileentity/machine/storage/TileEntityMachineBAT9000.java +++ b/src/main/java/com/hbm/tileentity/machine/storage/TileEntityMachineBAT9000.java @@ -1,9 +1,11 @@ package com.hbm.tileentity.machine.storage; import com.hbm.inventory.fluid.FluidType; +import com.hbm.lib.Library; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.tileentity.TileEntity; import net.minecraft.util.AxisAlignedBB; public class TileEntityMachineBAT9000 extends TileEntityBarrel { @@ -38,6 +40,17 @@ public class TileEntityMachineBAT9000 extends TileEntityBarrel { fillFluid(this.xCoord - 3, this.yCoord, this.zCoord - 1, getTact(), type); } + public void sendFluidToAll(FluidType type, TileEntity te) { + sendFluid(type, worldObj, xCoord + 1, yCoord, zCoord + 3, Library.POS_Z); + sendFluid(type, worldObj, xCoord - 1, yCoord, zCoord + 3, Library.POS_Z); + sendFluid(type, worldObj, xCoord + 1, yCoord, zCoord - 3, Library.NEG_Z); + sendFluid(type, worldObj, xCoord - 1, yCoord, zCoord - 3, Library.NEG_Z); + sendFluid(type, worldObj, xCoord + 3, yCoord, zCoord + 1, Library.POS_X); + sendFluid(type, worldObj, xCoord - 3, yCoord, zCoord + 1, Library.POS_X); + sendFluid(type, worldObj, xCoord + 3, yCoord, zCoord - 1, Library.NEG_X); + sendFluid(type, worldObj, xCoord - 3, yCoord, zCoord - 1, Library.NEG_X); + } + AxisAlignedBB bb = null; @Override diff --git a/src/main/java/com/hbm/tileentity/machine/storage/TileEntityMachineFluidTank.java b/src/main/java/com/hbm/tileentity/machine/storage/TileEntityMachineFluidTank.java index 63986d44b..ab683fc23 100644 --- a/src/main/java/com/hbm/tileentity/machine/storage/TileEntityMachineFluidTank.java +++ b/src/main/java/com/hbm/tileentity/machine/storage/TileEntityMachineFluidTank.java @@ -14,13 +14,14 @@ import com.hbm.inventory.fluid.Fluids; import com.hbm.lib.Library; import com.hbm.tileentity.TileEntityMachineBase; +import api.hbm.fluid.IFluidUser; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.AxisAlignedBB; -public class TileEntityMachineFluidTank extends TileEntityMachineBase implements IFluidContainer, IFluidSource, IFluidAcceptor { +public class TileEntityMachineFluidTank extends TileEntityMachineBase implements IFluidContainer, IFluidSource, IFluidAcceptor, IFluidUser { public FluidTank tank; public short mode = 0; @@ -49,6 +50,18 @@ public class TileEntityMachineFluidTank extends TileEntityMachineBase implements if(age >= 20) age = 0; + if(this.mode == 1 || this.mode == 2) { + FluidType type = tank.getTankType(); + sendFluid(type, worldObj, xCoord + 2, yCoord, zCoord - 1, Library.POS_X); + sendFluid(type, worldObj, xCoord + 2, yCoord, zCoord + 1, Library.POS_X); + sendFluid(type, worldObj, xCoord - 2, yCoord, zCoord - 1, Library.NEG_X); + sendFluid(type, worldObj, xCoord - 2, yCoord, zCoord + 1, Library.NEG_X); + sendFluid(type, worldObj, xCoord - 1, yCoord, zCoord + 2, Library.POS_Z); + sendFluid(type, worldObj, xCoord + 1, yCoord, zCoord + 2, Library.POS_Z); + sendFluid(type, worldObj, xCoord - 1, yCoord, zCoord - 2, Library.NEG_Z); + sendFluid(type, worldObj, xCoord + 1, yCoord, zCoord - 2, Library.NEG_Z); + } + if((mode == 1 || mode == 2) && (age == 9 || age == 19)) fillFluidInit(tank.getTankType()); @@ -179,4 +192,20 @@ public class TileEntityMachineFluidTank extends TileEntityMachineBase implements nbt.setShort("mode", mode); tank.writeToNBT(nbt, "tank"); } + + @Override + public long transferFluid(FluidType type, long fluid) { + long toTransfer = Math.min(getDemand(type), fluid); + tank.setFill(tank.getFill() + (int) toTransfer); + return fluid - toTransfer; + } + + @Override + public long getDemand(FluidType type) { + + if(this.mode == 2 || this.mode == 3) + return 0; + + return type == tank.getTankType() ? tank.getMaxFill() - tank.getFill() : 0; + } } diff --git a/src/main/java/com/hbm/tileentity/machine/storage/TileEntityMachineOrbus.java b/src/main/java/com/hbm/tileentity/machine/storage/TileEntityMachineOrbus.java index 64e5bf878..243b14f77 100644 --- a/src/main/java/com/hbm/tileentity/machine/storage/TileEntityMachineOrbus.java +++ b/src/main/java/com/hbm/tileentity/machine/storage/TileEntityMachineOrbus.java @@ -5,6 +5,7 @@ import com.hbm.inventory.fluid.FluidType; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.tileentity.TileEntity; import net.minecraft.util.AxisAlignedBB; import net.minecraftforge.common.util.ForgeDirection; @@ -26,13 +27,27 @@ public class TileEntityMachineOrbus extends TileEntityBarrel { public void fillFluidInit(FluidType type) { ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata() - BlockDummyable.offset).getOpposite(); - ForgeDirection d2 = dir.getRotation(ForgeDirection.DOWN); + ForgeDirection rot = dir.getRotation(ForgeDirection.DOWN); for(int i = -1; i < 7; i += 7) { this.fillFluid(xCoord, yCoord + i, zCoord, this.getTact(), this.tank.getTankType()); this.fillFluid(xCoord + dir.offsetX, yCoord + i, zCoord + dir.offsetZ, this.getTact(), this.tank.getTankType()); - this.fillFluid(xCoord + d2.offsetX, yCoord + i, zCoord + d2.offsetZ, this.getTact(), this.tank.getTankType()); - this.fillFluid(xCoord + dir.offsetX + d2.offsetX, yCoord + i, zCoord + dir.offsetZ + d2.offsetZ, this.getTact(), this.tank.getTankType()); + this.fillFluid(xCoord + rot.offsetX, yCoord + i, zCoord + rot.offsetZ, this.getTact(), this.tank.getTankType()); + this.fillFluid(xCoord + dir.offsetX + rot.offsetX, yCoord + i, zCoord + dir.offsetZ + rot.offsetZ, this.getTact(), this.tank.getTankType()); + } + } + + public void sendFluidToAll(FluidType type, TileEntity te) { + + ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata() - BlockDummyable.offset).getOpposite(); + ForgeDirection rot = dir.getRotation(ForgeDirection.DOWN); + + for(int i = -1; i < 7; i += 7) { + ForgeDirection out = i == -1 ? ForgeDirection.DOWN : ForgeDirection.UP; + sendFluid(type, worldObj, xCoord, yCoord + i, zCoord, out); + sendFluid(type, worldObj, xCoord + dir.offsetX, yCoord + i, zCoord + dir.offsetZ, out); + sendFluid(type, worldObj, xCoord + rot.offsetX, yCoord + i, zCoord + rot.offsetZ, out); + sendFluid(type, worldObj, xCoord + dir.offsetX + rot.offsetX, yCoord + i, zCoord + dir.offsetZ + rot.offsetZ, out); } } From 94c394152aea9cf9f69069e45fa828b044a9fa3c Mon Sep 17 00:00:00 2001 From: Boblet Date: Thu, 14 Apr 2022 13:00:11 +0200 Subject: [PATCH 4/5] baby mode -> less bullshit mode, more config options, more effects --- .../java/com/hbm/config/CommonConfig.java | 1 + .../java/com/hbm/config/GeneralConfig.java | 38 ++++++++++++++-- .../java/com/hbm/config/VersatileConfig.java | 10 ++-- .../java/com/hbm/crafting/ArmorRecipes.java | 2 +- .../com/hbm/crafting/ConsumableRecipes.java | 14 ++++-- .../java/com/hbm/crafting/ToolRecipes.java | 33 +++++++++----- .../inventory/recipes/AssemblerRecipes.java | 22 ++++----- .../inventory/recipes/CentrifugeRecipes.java | 27 ++++++----- .../inventory/recipes/ChemplantRecipes.java | 15 ++++-- .../hbm/inventory/recipes/MachineRecipes.java | 11 ++++- .../inventory/recipes/anvil/AnvilRecipes.java | 4 +- .../recipes/anvil/AnvilSmithingRecipe.java | 2 +- .../hbm/items/special/ItemSchraranium.java | 43 +++++++++--------- .../java/com/hbm/main/CraftingManager.java | 2 +- .../assets/hbm/textures/items/plate_mixed.png | Bin 480 -> 483 bytes 15 files changed, 145 insertions(+), 79 deletions(-) diff --git a/src/main/java/com/hbm/config/CommonConfig.java b/src/main/java/com/hbm/config/CommonConfig.java index ee4586092..2cbbab121 100644 --- a/src/main/java/com/hbm/config/CommonConfig.java +++ b/src/main/java/com/hbm/config/CommonConfig.java @@ -23,6 +23,7 @@ public class CommonConfig { public static final String CATEGORY_HAZARD = "14_hazard"; public static final String CATEGORY_528 = "528"; + public static final String CATEGORY_LBSM = "LESS BULLSHIT MODE"; public static int setDefZero(int value, int def) { diff --git a/src/main/java/com/hbm/config/GeneralConfig.java b/src/main/java/com/hbm/config/GeneralConfig.java index cec041226..c60cef36b 100644 --- a/src/main/java/com/hbm/config/GeneralConfig.java +++ b/src/main/java/com/hbm/config/GeneralConfig.java @@ -21,7 +21,6 @@ public class GeneralConfig { public static boolean enableGuns = true; public static boolean enableVirus = true; public static boolean enableCrosshairs = true; - public static boolean enableBabyMode = false; public static boolean enableReflectorCompat = false; public static boolean enableRenderDistCheck = true; public static boolean enableCustomDashKeybind = false; @@ -34,6 +33,19 @@ public class GeneralConfig { public static boolean enable528BedrockSpawn = false; public static int coltanRate = 2; public static int bedrockRate = 50; + + public static boolean enableLBSM = false; + public static boolean enableLBSMFullSchrab = true; + public static boolean enableLBSMShorterDecay = true; + public static boolean enableLBSMSimpleArmorRecipes = true; + public static boolean enableLBSMSimpleToolRecipes = true; + public static boolean enableLBSMSimpleAlloy = true; + public static boolean enableLBSMSimpleChemsitry = true; + public static boolean enableLBSMSimpleCentrifuge = true; + public static boolean enableLBSMUnlockAnvil = true; + public static boolean enableLBSMSimpleCrafting = true; + public static boolean enableLBSMSimpleMedicineRecipes = true; + public static int schrabRate = 20; public static void loadFromConfig(Configuration config) { @@ -55,7 +67,6 @@ public class GeneralConfig { enableGuns = config.get(CATEGORY_GENERAL, "1.20_enableGuns", true).getBoolean(true); enableVirus = config.get(CATEGORY_GENERAL, "1.21_enableVirus", false).getBoolean(false); enableCrosshairs = config.get(CATEGORY_GENERAL, "1.22_enableCrosshairs", true).getBoolean(true); - enableBabyMode = config.get(CATEGORY_GENERAL, "1.23_enableBabyMode", false).getBoolean(false); enableReflectorCompat = config.get(CATEGORY_GENERAL, "1.24_enableReflectorCompat", false).getBoolean(false); enableRenderDistCheck = config.get(CATEGORY_GENERAL, "1.25_enableRenderDistCheck", true).getBoolean(true); enableCustomDashKeybind = config.get(CATEGORY_GENERAL, "1.26_enableCustomDashKeybind", false).getBoolean(false); @@ -76,6 +87,27 @@ public class GeneralConfig { coltanRate = CommonConfig.createConfigInt(config, CATEGORY_528, "X528_oreColtanFrequency", "Determines how many coltan ore veins are to be expected in a chunk. These values do not affect the frequency in deposits, and only apply if random coltan spanwing is enabled.", 2); bedrockRate = CommonConfig.createConfigInt(config, CATEGORY_528, "X528_bedrockColtanFrequency", "Determines how often (1 in X) bedrock coltan ores spawn. Applies for both the bedrock ores in the coltan deposit (if applicable) and the random bedrock ores (if applicable)", 50); - if(enable528) enableBabyMode = false; + + final String CATEGORY_LBSM = CommonConfig.CATEGORY_LBSM; + + config.addCustomCategoryComment(CATEGORY_528, + "Will most likely break standard progression!\n" + + "However, the game gets generally easier and more enjoyable for casual players.\n" + + "Progression-braking recipes are usually not too severe, so the mode is generally server-friendly!"); + + enableLBSM = CommonConfig.createConfigBool(config, CATEGORY_LBSM, "enableLessBullshitMode", "The central toggle for LBS mode. Forced OFF when 528 is enabled!", false); + enableLBSMFullSchrab = CommonConfig.createConfigBool(config, CATEGORY_LBSM, "LBSM_fullSchrab", "When enabled, this will replace schraranium with full schrabidium ingots in the transmutator's output", true); + enableLBSMShorterDecay = CommonConfig.createConfigBool(config, CATEGORY_LBSM, "LBSM_shortDecay", "When enabled, this will highly accelerate the speed at which nuclear waste disposal drums decay their contents. 60x faster than 528 mode and 5-12x faster than on normal mode.", true); + enableLBSMSimpleArmorRecipes = CommonConfig.createConfigBool(config, CATEGORY_LBSM, "LBSM_recipeSimpleArmor", "When enabled, simplifies the recipe for armor sets like starmetal or schrabidium.", true); + enableLBSMSimpleToolRecipes = CommonConfig.createConfigBool(config, CATEGORY_LBSM, "LBSM_recipeSimpleTool", "When enabled, simplifies the recipe for tool sets like starmetal or scrhabidium", true); + enableLBSMSimpleAlloy = CommonConfig.createConfigBool(config, CATEGORY_LBSM, "LBSM_recipeSimpleAlloy", "When enabled, adds some blast furnace recipes to make certain things cheaper", true); + enableLBSMSimpleChemsitry = CommonConfig.createConfigBool(config, CATEGORY_LBSM, "LBSM_recipeSimpleChemistry", "When enabled, simplifies some chemical plant recipes", true); + enableLBSMSimpleCentrifuge = CommonConfig.createConfigBool(config, CATEGORY_LBSM, "LBSM_recipeSimpleCentrifuge", "When enabled, enhances centrifuge outputs to make rare materials more common", true); + enableLBSMUnlockAnvil = CommonConfig.createConfigBool(config, CATEGORY_LBSM, "LBSM_recipeUnlockAnvil", "When enabled, all anvil recipes are available at tier 1", true); + enableLBSMSimpleCrafting = CommonConfig.createConfigBool(config, CATEGORY_LBSM, "LBSM_recipeSimpleCrafting", "When enabled, some uncraftable or more expansive items get simple crafting recipes. Scorched uranium also becomes washable", true); + enableLBSMSimpleMedicineRecipes = CommonConfig.createConfigBool(config, CATEGORY_LBSM, "LBSM_recipeSimpleMedicine", "When enabled, makes some medicine recipes (line ones that require bismuth) much more affordable", true); + schrabRate = CommonConfig.createConfigInt(config, CATEGORY_528, "LBSM_schrabOreRate", "Changes the amount of uranium ore needed on average to create one schrabidium ore using nukes. Standard mode value is 100", 20); + + if(enable528) enableLBSM = false; } } diff --git a/src/main/java/com/hbm/config/VersatileConfig.java b/src/main/java/com/hbm/config/VersatileConfig.java index 218783eb0..851211b76 100644 --- a/src/main/java/com/hbm/config/VersatileConfig.java +++ b/src/main/java/com/hbm/config/VersatileConfig.java @@ -11,7 +11,7 @@ public class VersatileConfig { public static Item getTransmutatorItem() { - if(GeneralConfig.enableBabyMode) + if(GeneralConfig.enableLBSM && GeneralConfig.enableLBSMFullSchrab) return ModItems.ingot_schrabidium; return ModItems.ingot_schraranium; @@ -19,8 +19,8 @@ public class VersatileConfig { public static int getSchrabOreChance() { - if(GeneralConfig.enableBabyMode) - return 20; + if(GeneralConfig.enableLBSM) + return GeneralConfig.schrabRate; return 100; } @@ -52,10 +52,10 @@ public class VersatileConfig { static int hour = 60 * minute; public static int getLongDecayChance() { - return GeneralConfig.enable528 ? 15 * hour : 3 * hour; + return GeneralConfig.enable528 ? 15 * hour : (GeneralConfig.enableLBSM && GeneralConfig.enableLBSMShorterDecay) ? 15 * minute : 3 * hour; } public static int getShortDecayChance() { - return GeneralConfig.enable528 ? 3 * hour : 15 * minute; + return GeneralConfig.enable528 ? 3 * hour : (GeneralConfig.enableLBSM && GeneralConfig.enableLBSMShorterDecay) ? 3 * minute : 15 * minute; } } diff --git a/src/main/java/com/hbm/crafting/ArmorRecipes.java b/src/main/java/com/hbm/crafting/ArmorRecipes.java index f3aa3d607..6287f6f28 100644 --- a/src/main/java/com/hbm/crafting/ArmorRecipes.java +++ b/src/main/java/com/hbm/crafting/ArmorRecipes.java @@ -168,7 +168,7 @@ public class ArmorRecipes { CraftingManager.addRecipeAuto(new ItemStack(ModItems.cape_schrabidium, 1), new Object[] { "W W", "WIW", "WDW", 'W', SA326.ingot(), 'D', KEY_BLACK, 'I', ModItems.circuit_red_copper }); //Configged - if(GeneralConfig.enableBabyMode) { + if(GeneralConfig.enableLBSM && GeneralConfig.enableLBSMSimpleArmorRecipes) { addHelmet( STAR.ingot(), ModItems.starmetal_helmet); addChest( STAR.ingot(), ModItems.starmetal_plate); addLegs( STAR.ingot(), ModItems.starmetal_legs); diff --git a/src/main/java/com/hbm/crafting/ConsumableRecipes.java b/src/main/java/com/hbm/crafting/ConsumableRecipes.java index a54d6de33..f9bb7efc5 100644 --- a/src/main/java/com/hbm/crafting/ConsumableRecipes.java +++ b/src/main/java/com/hbm/crafting/ConsumableRecipes.java @@ -1,6 +1,7 @@ package com.hbm.crafting; import com.hbm.blocks.ModBlocks; +import com.hbm.config.GeneralConfig; import com.hbm.inventory.fluid.Fluids; import com.hbm.items.ModItems; import com.hbm.main.CraftingManager; @@ -113,13 +114,20 @@ public class ConsumableRecipes { CraftingManager.addRecipeAuto(new ItemStack(ModItems.pill_iodine, 8), new Object[] { "IF", 'I', I.dust(), 'F', F.dust() }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.plan_c, 1), new Object[] { "PFP", 'P', ModItems.powder_poison, 'F', F.dust() }); CraftingManager.addShapelessAuto(new ItemStack(ModItems.radx, 1), new Object[] { COAL.dust(), COAL.dust(), F.dust() }); - CraftingManager.addShapelessAuto(new ItemStack(ModItems.siox, 8), new Object[] { COAL.dust(), ASBESTOS.dust(), ModItems.nugget_bismuth }); - CraftingManager.addShapelessAuto(new ItemStack(ModItems.xanax, 1), new Object[] { COAL.dust(), KNO.dust(), BR.dust() }); CraftingManager.addShapelessAuto(new ItemStack(ModItems.fmn, 1), new Object[] { COAL.dust(), PO210.dust(), ST.dust() }); - CraftingManager.addShapelessAuto(new ItemStack(ModItems.pirfenidone, 1), new Object[] {COAL.dust(), KNO.dust(), ModItems.nugget_bismuth }); CraftingManager.addShapelessAuto(new ItemStack(ModItems.five_htp, 1), new Object[] { COAL.dust(), EUPH.dust(), ModItems.canteen_fab }); CraftingManager.addShapelessAuto(new ItemStack(ModItems.cigarette, 16), new Object[] { ASBESTOS.ingot(), ANY_TAR.any(), PO210.nugget() }); + if(GeneralConfig.enableLBSM && GeneralConfig.enableLBSMSimpleMedicineRecipes) { + CraftingManager.addShapelessAuto(new ItemStack(ModItems.siox, 8), new Object[] { COAL.dust(), ASBESTOS.dust(), GOLD.nugget() }); + CraftingManager.addShapelessAuto(new ItemStack(ModItems.xanax, 1), new Object[] { COAL.dust(), KNO.dust(), NETHERQUARTZ.dust() }); + CraftingManager.addShapelessAuto(new ItemStack(ModItems.pirfenidone, 1), new Object[] {COAL.dust(), KNO.dust(), GOLD.nugget() }); + } else { + CraftingManager.addShapelessAuto(new ItemStack(ModItems.siox, 8), new Object[] { COAL.dust(), ASBESTOS.dust(), ModItems.nugget_bismuth }); + CraftingManager.addShapelessAuto(new ItemStack(ModItems.xanax, 1), new Object[] { COAL.dust(), KNO.dust(), BR.dust() }); + CraftingManager.addShapelessAuto(new ItemStack(ModItems.pirfenidone, 1), new Object[] {COAL.dust(), KNO.dust(), ModItems.nugget_bismuth }); + } + //Med bags CraftingManager.addRecipeAuto(new ItemStack(ModItems.med_bag, 1), new Object[] { "LLL", "SIS", "LLL", 'L', Items.leather, 'S', ModItems.syringe_metal_stimpak, 'I', ModItems.syringe_antidote }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.med_bag, 1), new Object[] { "LLL", "SIS", "LLL", 'L', Items.leather, 'S', ModItems.syringe_metal_stimpak, 'I', ModItems.pill_iodine }); diff --git a/src/main/java/com/hbm/crafting/ToolRecipes.java b/src/main/java/com/hbm/crafting/ToolRecipes.java index b5b4d4312..18a2c725e 100644 --- a/src/main/java/com/hbm/crafting/ToolRecipes.java +++ b/src/main/java/com/hbm/crafting/ToolRecipes.java @@ -62,17 +62,6 @@ public class ToolRecipes { CraftingManager.addRecipeAuto(new ItemStack(ModItems.smashing_hammer, 1), new Object[] { "STS", "SPS", " P ", 'S', STEEL.block(), 'T', W.block(), 'P', POLYMER.ingot() }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.meteorite_sword, 1), new Object[] { " B", "GB ", "SG ", 'B', ModItems.blade_meteorite, 'G', GOLD.plate(), 'S', KEY_STICK }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.cobalt_decorated_sword, 1), new Object[] { " I ", " I ", "SBS", 'I', CO.ingot(), 'S', ModItems.ingot_meteorite_forged, 'B', ModItems.cobalt_sword }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.cobalt_decorated_pickaxe, 1), new Object[] { "III", " B ", " S ", 'I', CO.ingot(), 'S', ModItems.ingot_meteorite_forged, 'B', ModItems.cobalt_pickaxe }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.cobalt_decorated_axe, 1), new Object[] { "II", "IB", " S", 'I', CO.ingot(), 'S', ModItems.ingot_meteorite_forged, 'B', ModItems.cobalt_axe }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.cobalt_decorated_shovel, 1), new Object[] { "I", "B", "S", 'I', CO.ingot(), 'S', ModItems.ingot_meteorite_forged, 'B', ModItems.cobalt_shovel }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.cobalt_decorated_hoe, 1), new Object[] { "II", " B", " S", 'I', CO.ingot(), 'S', ModItems.ingot_meteorite_forged, 'B', ModItems.cobalt_hoe }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.starmetal_sword, 1), new Object[] { " I ", " I ", "SBS", 'I', STAR.ingot(), 'S', CO.ingot(), 'B', ModItems.cobalt_decorated_sword }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.starmetal_pickaxe, 1), new Object[] { "III", " B ", " S ", 'I', STAR.ingot(), 'S', CO.ingot(), 'B', ModItems.cobalt_decorated_pickaxe }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.starmetal_axe, 1), new Object[] { "II", "IB", " S", 'I', STAR.ingot(), 'S', CO.ingot(), 'B', ModItems.cobalt_decorated_axe }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.starmetal_shovel, 1), new Object[] { "I", "B", "S", 'I', STAR.ingot(), 'S', CO.ingot(), 'B', ModItems.cobalt_decorated_shovel }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.starmetal_hoe, 1), new Object[] { "II", " B", " S", 'I', STAR.ingot(), 'S', CO.ingot(), 'B', ModItems.cobalt_decorated_hoe }); - //Drax CraftingManager.addRecipeAuto(new ItemStack(ModItems.drax, 1), new Object[] { "BDS", "CDC", "FMF", 'B', ModItems.starmetal_pickaxe, 'S', ModItems.starmetal_shovel, 'C', CO.ingot(), 'F', ModItems.fusion_core, 'D', DESH.ingot(), 'M', ModItems.motor_desh }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.drax_mk2, 1), new Object[] { "SCS", "IDI", "FEF", 'S', STAR.ingot(), 'C', ModItems.crystal_trixite, 'I', BIGMT.ingot(), 'D', ModItems.drax, 'F', ModItems.fusion_core, 'E', ModItems.circuit_targeting_tier5 }); @@ -155,13 +144,33 @@ public class ToolRecipes { CraftingManager.addShapelessAuto(new ItemStack(ModItems.bobmazon_tools), new Object[] { Items.book, Items.gold_nugget, KEY_GREEN }); //Configged - if(GeneralConfig.enableBabyMode) { + if(GeneralConfig.enableLBSM && GeneralConfig.enableLBSMSimpleToolRecipes) { + addSword( CO.block(), ModItems.cobalt_decorated_sword); + addPickaxe( CO.block(), ModItems.cobalt_decorated_pickaxe); + addAxe( CO.block(), ModItems.cobalt_decorated_axe); + addShovel( CO.block(), ModItems.cobalt_decorated_shovel); + addHoe( CO.block(), ModItems.cobalt_decorated_hoe); + addSword( STAR.ingot(), ModItems.starmetal_sword); + addPickaxe( STAR.ingot(), ModItems.starmetal_pickaxe); + addAxe( STAR.ingot(), ModItems.starmetal_axe); + addShovel( STAR.ingot(), ModItems.starmetal_shovel); + addHoe( STAR.ingot(), ModItems.starmetal_hoe); addSword( SA326.ingot(), ModItems.schrabidium_sword); addPickaxe( SA326.ingot(), ModItems.schrabidium_pickaxe); addAxe( SA326.ingot(), ModItems.schrabidium_axe); addShovel( SA326.ingot(), ModItems.schrabidium_shovel); addHoe( SA326.ingot(), ModItems.schrabidium_hoe); } else { + CraftingManager.addRecipeAuto(new ItemStack(ModItems.cobalt_decorated_sword, 1), new Object[] { " I ", " I ", "SBS", 'I', CO.ingot(), 'S', ModItems.ingot_meteorite_forged, 'B', ModItems.cobalt_sword }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.cobalt_decorated_pickaxe, 1), new Object[] { "III", " B ", " S ", 'I', CO.ingot(), 'S', ModItems.ingot_meteorite_forged, 'B', ModItems.cobalt_pickaxe }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.cobalt_decorated_axe, 1), new Object[] { "II", "IB", " S", 'I', CO.ingot(), 'S', ModItems.ingot_meteorite_forged, 'B', ModItems.cobalt_axe }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.cobalt_decorated_shovel, 1), new Object[] { "I", "B", "S", 'I', CO.ingot(), 'S', ModItems.ingot_meteorite_forged, 'B', ModItems.cobalt_shovel }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.cobalt_decorated_hoe, 1), new Object[] { "II", " B", " S", 'I', CO.ingot(), 'S', ModItems.ingot_meteorite_forged, 'B', ModItems.cobalt_hoe }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.starmetal_sword, 1), new Object[] { " I ", " I ", "SBS", 'I', STAR.ingot(), 'S', CO.ingot(), 'B', ModItems.cobalt_decorated_sword }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.starmetal_pickaxe, 1), new Object[] { "III", " B ", " S ", 'I', STAR.ingot(), 'S', CO.ingot(), 'B', ModItems.cobalt_decorated_pickaxe }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.starmetal_axe, 1), new Object[] { "II", "IB", " S", 'I', STAR.ingot(), 'S', CO.ingot(), 'B', ModItems.cobalt_decorated_axe }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.starmetal_shovel, 1), new Object[] { "I", "B", "S", 'I', STAR.ingot(), 'S', CO.ingot(), 'B', ModItems.cobalt_decorated_shovel }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.starmetal_hoe, 1), new Object[] { "II", " B", " S", 'I', STAR.ingot(), 'S', CO.ingot(), 'B', ModItems.cobalt_decorated_hoe }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.schrabidium_sword, 1), new Object[] { "I", "W", "S", 'I', SA326.block(), 'W', ModItems.desh_sword, 'S', POLYMER.ingot() }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.schrabidium_pickaxe, 1), new Object[] { "SWS", " P ", " P ", 'S', ModItems.blades_schrabidium, 'W', ModItems.desh_pickaxe, 'P', POLYMER.ingot() }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.schrabidium_axe, 1), new Object[] { "SW", "SP", " P", 'S', ModItems.blades_schrabidium, 'W', ModItems.desh_axe, 'P', POLYMER.ingot() }); diff --git a/src/main/java/com/hbm/inventory/recipes/AssemblerRecipes.java b/src/main/java/com/hbm/inventory/recipes/AssemblerRecipes.java index 7392c1cc4..3ffa417a4 100644 --- a/src/main/java/com/hbm/inventory/recipes/AssemblerRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/AssemblerRecipes.java @@ -190,14 +190,14 @@ public class AssemblerRecipes { makeRecipe(new ComparableStack(ModItems.thruster_large, 1), new AStack[] {new ComparableStack(ModItems.thruster_medium, 1), new OreDictStack(STEEL.plate(), 4), new ComparableStack(ModItems.hull_big_steel, 2), new ComparableStack(ModItems.wire_red_copper, 4), },200); makeRecipe(new ComparableStack(ModItems.thruster_nuclear, 1), new AStack[] {new ComparableStack(ModItems.thruster_large, 1), new ComparableStack(ModItems.tank_steel, 2), new ComparableStack(ModBlocks.deco_pipe_quad, 3), new ComparableStack(ModItems.board_copper, 6), new ComparableStack(ModItems.motor, 1), new ComparableStack(ModItems.circuit_targeting_tier4, 2), new ComparableStack(ModBlocks.reactor_research, 1), },600); makeRecipe(new ComparableStack(ModItems.sat_base, 1), new AStack[] {new ComparableStack(ModItems.thruster_large, 1), new OreDictStack(STEEL.plate(), 6), new ComparableStack(ModItems.plate_desh, 4), new ComparableStack(ModItems.hull_big_titanium, 3), new ComparableStack(ModItems.fluid_barrel_full, 1, Fluids.KEROSENE.getID()), new ComparableStack(ModItems.photo_panel, 24), new ComparableStack(ModItems.board_copper, 12), new ComparableStack(ModItems.circuit_gold, 6), new ComparableStack(ModItems.battery_lithium_cell_6, 1), },500); - makeRecipe(new ComparableStack(ModItems.sat_head_mapper, 1), new AStack[] {new OreDictStack(STEEL.ingot(), 4), new OreDictStack(STEEL.plate(), 6), new ComparableStack(ModItems.hull_small_steel, 3), new ComparableStack(ModItems.plate_desh, 2), new ComparableStack(ModItems.circuit_gold, 2), new ComparableStack(ModItems.plate_polymer, 12), new OreDictStack(REDSTONE.dust(), 6), new ComparableStack(Items.diamond, 1), new ComparableStack(Blocks.glass_pane, 6), },400); - makeRecipe(new ComparableStack(ModItems.sat_head_scanner, 1), new AStack[] {new OreDictStack(STEEL.ingot(), 6), new OreDictStack(TI.plate(), 32), new ComparableStack(ModItems.plate_desh, 6), new ComparableStack(ModItems.magnetron, 6), new ComparableStack(ModItems.coil_advanced_torus, 2), new ComparableStack(ModItems.circuit_gold, 6), new ComparableStack(ModItems.plate_polymer, 6), new ComparableStack(Items.diamond, 1), },400); - makeRecipe(new ComparableStack(ModItems.sat_head_radar, 1), new AStack[] {new OreDictStack(STEEL.ingot(), 4), new OreDictStack(TI.plate(), 32), new ComparableStack(ModItems.magnetron, 12), new ComparableStack(ModItems.plate_polymer, 16), new ComparableStack(ModItems.wire_red_copper, 16), new ComparableStack(ModItems.coil_gold, 3), new ComparableStack(ModItems.circuit_gold, 5), new ComparableStack(Items.diamond, 1), },400); - makeRecipe(new ComparableStack(ModItems.sat_head_laser, 1), new AStack[] {new OreDictStack(STEEL.ingot(), 12), new OreDictStack(W.ingot(), 16), new OreDictStack(ANY_PLASTIC.ingot(), 6), new ComparableStack(ModItems.plate_polymer, 16), new ComparableStack(ModItems.board_copper, 24), new ComparableStack(ModItems.circuit_targeting_tier5, 2), new OreDictStack(REDSTONE.dust(), 16), new ComparableStack(Items.diamond, 5), new ComparableStack(Blocks.glass_pane, 16), },450); - makeRecipe(new ComparableStack(ModItems.sat_head_resonator, 1), new AStack[] {new OreDictStack(STEEL.ingot(), 32), new OreDictStack(ANY_PLASTIC.ingot(), 48), new ComparableStack(ModItems.plate_polymer, 8), new ComparableStack(ModItems.crystal_xen, 1), new OreDictStack(STAR.ingot(), 7), new ComparableStack(ModItems.circuit_targeting_tier5, 6), new ComparableStack(ModItems.circuit_targeting_tier6, 2), },1000); + makeRecipe(new ComparableStack(ModItems.sat_head_mapper, 1), new AStack[] {new OreDictStack(STEEL.ingot(), 4), new OreDictStack(STEEL.plate(), 6), new ComparableStack(ModItems.hull_small_steel, 3), new ComparableStack(ModItems.plate_desh, 2), new ComparableStack(ModItems.circuit_gold, 2), new OreDictStack(RUBBER.ingot(), 12), new OreDictStack(REDSTONE.dust(), 6), new ComparableStack(Items.diamond, 1), new ComparableStack(Blocks.glass_pane, 6), },400); + makeRecipe(new ComparableStack(ModItems.sat_head_scanner, 1), new AStack[] {new OreDictStack(STEEL.ingot(), 6), new OreDictStack(TI.plate(), 32), new ComparableStack(ModItems.plate_desh, 6), new ComparableStack(ModItems.magnetron, 6), new ComparableStack(ModItems.coil_advanced_torus, 2), new ComparableStack(ModItems.circuit_gold, 6), new OreDictStack(RUBBER.ingot(), 6), new ComparableStack(Items.diamond, 1), },400); + makeRecipe(new ComparableStack(ModItems.sat_head_radar, 1), new AStack[] {new OreDictStack(STEEL.ingot(), 4), new OreDictStack(TI.plate(), 32), new ComparableStack(ModItems.magnetron, 12), new OreDictStack(RUBBER.ingot(), 16), new ComparableStack(ModItems.wire_red_copper, 16), new ComparableStack(ModItems.coil_gold, 3), new ComparableStack(ModItems.circuit_gold, 5), new ComparableStack(Items.diamond, 1), },400); + makeRecipe(new ComparableStack(ModItems.sat_head_laser, 1), new AStack[] {new OreDictStack(STEEL.ingot(), 12), new OreDictStack(W.ingot(), 16), new OreDictStack(ANY_PLASTIC.ingot(), 6), new OreDictStack(RUBBER.ingot(), 16), new ComparableStack(ModItems.board_copper, 24), new ComparableStack(ModItems.circuit_targeting_tier5, 2), new OreDictStack(REDSTONE.dust(), 16), new ComparableStack(Items.diamond, 5), new ComparableStack(Blocks.glass_pane, 16), },450); + makeRecipe(new ComparableStack(ModItems.sat_head_resonator, 1), new AStack[] {new OreDictStack(STEEL.ingot(), 32), new OreDictStack(ANY_PLASTIC.ingot(), 48), new OreDictStack(RUBBER.ingot(), 8), new ComparableStack(ModItems.crystal_xen, 1), new OreDictStack(STAR.ingot(), 7), new ComparableStack(ModItems.circuit_targeting_tier5, 6), new ComparableStack(ModItems.circuit_targeting_tier6, 2), },1000); makeRecipe(new ComparableStack(ModItems.sat_foeq, 1), new AStack[] {new OreDictStack(STEEL.plate(), 8), new OreDictStack(TI.plate(), 12), new ComparableStack(ModItems.plate_desh, 8), new ComparableStack(ModItems.hull_big_titanium, 3), new ComparableStack(ModItems.fluid_barrel_full, 1, Fluids.HYDROGEN.getID()), new ComparableStack(ModItems.photo_panel, 16), new ComparableStack(ModItems.thruster_nuclear, 1), new ComparableStack(ModItems.ingot_uranium_fuel, 6), new ComparableStack(ModItems.circuit_targeting_tier5, 6), new ComparableStack(ModItems.magnetron, 3), new ComparableStack(ModItems.battery_lithium_cell_6, 1), },1200); - makeRecipe(new ComparableStack(ModItems.sat_miner, 1), new AStack[] {new OreDictStack(BIGMT.plate(), 24), new ComparableStack(ModItems.plate_desh, 8), new ComparableStack(ModItems.motor, 2), new ComparableStack(ModItems.drill_titanium, 2), new ComparableStack(ModItems.circuit_targeting_tier4, 2), new ComparableStack(ModItems.fluid_barrel_full, 1, Fluids.KEROSENE.getID()), new ComparableStack(ModItems.thruster_small, 1), new ComparableStack(ModItems.photo_panel, 12), new ComparableStack(ModItems.centrifuge_element, 4), new ComparableStack(ModItems.magnetron, 3), new ComparableStack(ModItems.plate_polymer, 12), new ComparableStack(ModItems.battery_lithium_cell_6, 1), },600); - makeRecipe(new ComparableStack(ModItems.sat_lunar_miner, 1), new AStack[] {new ComparableStack(ModItems.ingot_meteorite, 4), new ComparableStack(ModItems.plate_desh, 4), new ComparableStack(ModItems.motor_desh, 2), new ComparableStack(ModItems.drill_titanium, 2), new ComparableStack(ModItems.circuit_targeting_tier4, 2), new ComparableStack(ModItems.fluid_barrel_full, 1, Fluids.KEROSENE.getID()), new ComparableStack(ModItems.thruster_small, 1), new ComparableStack(ModItems.photo_panel, 12), new ComparableStack(ModItems.magnetron, 3), new ComparableStack(ModItems.plate_polymer, 12), new ComparableStack(ModItems.battery_lithium_cell_6, 1), },600); + makeRecipe(new ComparableStack(ModItems.sat_miner, 1), new AStack[] {new OreDictStack(BIGMT.plate(), 24), new ComparableStack(ModItems.plate_desh, 8), new ComparableStack(ModItems.motor, 2), new ComparableStack(ModItems.drill_titanium, 2), new ComparableStack(ModItems.circuit_targeting_tier4, 2), new ComparableStack(ModItems.fluid_barrel_full, 1, Fluids.KEROSENE.getID()), new ComparableStack(ModItems.thruster_small, 1), new ComparableStack(ModItems.photo_panel, 12), new ComparableStack(ModItems.centrifuge_element, 4), new ComparableStack(ModItems.magnetron, 3), new OreDictStack(RUBBER.ingot(), 12), new ComparableStack(ModItems.battery_lithium_cell_6, 1), },600); + makeRecipe(new ComparableStack(ModItems.sat_lunar_miner, 1), new AStack[] {new ComparableStack(ModItems.ingot_meteorite, 4), new ComparableStack(ModItems.plate_desh, 4), new ComparableStack(ModItems.motor_desh, 2), new ComparableStack(ModItems.drill_titanium, 2), new ComparableStack(ModItems.circuit_targeting_tier4, 2), new ComparableStack(ModItems.fluid_barrel_full, 1, Fluids.KEROSENE.getID()), new ComparableStack(ModItems.thruster_small, 1), new ComparableStack(ModItems.photo_panel, 12), new ComparableStack(ModItems.magnetron, 3), new OreDictStack(RUBBER.ingot(), 12), new ComparableStack(ModItems.battery_lithium_cell_6, 1), },600); makeRecipe(new ComparableStack(ModItems.chopper_head, 1), new AStack[] {new ComparableStack(ModBlocks.reinforced_glass, 2), new ComparableStack(ModBlocks.fwatz_computer, 1), new OreDictStack(CMB.ingot(), 22), new ComparableStack(ModItems.wire_magnetized_tungsten, 4), },300); makeRecipe(new ComparableStack(ModItems.chopper_gun, 1), new AStack[] {new OreDictStack(CMB.plate(), 4), new OreDictStack(CMB.ingot(), 2), new ComparableStack(ModItems.wire_tungsten, 6), new ComparableStack(ModItems.coil_magnetized_tungsten, 1), new ComparableStack(ModItems.motor, 1), },150); makeRecipe(new ComparableStack(ModItems.chopper_torso, 1), new AStack[] {new OreDictStack(CMB.ingot(), 26), new ComparableStack(ModBlocks.fwatz_computer, 1), new ComparableStack(ModItems.wire_magnetized_tungsten, 4), new ComparableStack(ModItems.motor, 2), new ComparableStack(ModItems.chopper_blades, 2), },350); @@ -283,7 +283,7 @@ public class AssemblerRecipes { makeRecipe(new ComparableStack(ModBlocks.machine_mining_laser, 1), new AStack[] {new ComparableStack(ModItems.tank_steel, 3), new OreDictStack(STEEL.plate(), 16), new ComparableStack(ModItems.crystal_redstone, 3), new ComparableStack(Items.diamond, 3), new OreDictStack(ANY_PLASTIC.ingot(), 4), new ComparableStack(ModItems.motor, 3), new OreDictStack(DURA.ingot(), 4), new ComparableStack(ModItems.bolt_dura_steel, 6), new ComparableStack(ModBlocks.machine_battery, 3), },400); makeRecipe(new ComparableStack(ModBlocks.machine_turbofan, 1), new AStack[] {new ComparableStack(ModItems.hull_big_steel, 1), new ComparableStack(ModItems.hull_big_titanium, 3), new ComparableStack(ModItems.hull_small_steel, 2), new ComparableStack(ModItems.turbine_tungsten, 1), new ComparableStack(ModItems.turbine_titanium, 7), new ComparableStack(ModItems.bolt_compound, 8), new OreDictStack(MINGRADE.ingot(), 12), new ComparableStack(ModItems.wire_red_copper, 24), },500); makeRecipe(new ComparableStack(ModBlocks.machine_teleporter, 1), new AStack[] {new OreDictStack(TI.ingot(), 6), new OreDictStack(ALLOY.plate(), 12), new OreDictStack(CMB.plate(), 4), new ComparableStack(ModItems.telepad, 1), new ComparableStack(ModItems.entanglement_kit, 1), new ComparableStack(ModBlocks.machine_battery, 2), new ComparableStack(ModItems.coil_magnetized_tungsten, 4), },300); - makeRecipe(new ComparableStack(ModBlocks.machine_schrabidium_transmutator, 1), new AStack[] {new OreDictStack(MAGTUNG.ingot(), 1), new OreDictStack(TI.ingot(), 24), new OreDictStack(ALLOY.plate(), 18), new OreDictStack(STEEL.plate(), 12), new ComparableStack(ModItems.plate_desh, 6), new ComparableStack(ModItems.plate_polymer, 8), new ComparableStack(ModBlocks.machine_battery, 5), new ComparableStack(ModItems.circuit_gold, 5), },500); + makeRecipe(new ComparableStack(ModBlocks.machine_schrabidium_transmutator, 1), new AStack[] {new OreDictStack(MAGTUNG.ingot(), 1), new OreDictStack(TI.ingot(), 24), new OreDictStack(ALLOY.plate(), 18), new OreDictStack(STEEL.plate(), 12), new ComparableStack(ModItems.plate_desh, 6), new OreDictStack(RUBBER.ingot(), 8), new ComparableStack(ModBlocks.machine_battery, 5), new ComparableStack(ModItems.circuit_gold, 5), },500); makeRecipe(new ComparableStack(ModBlocks.machine_combine_factory, 1), new AStack[] {new OreDictStack(STEEL.ingot(), 8), new OreDictStack(ANY_PLASTIC.ingot(), 6), new OreDictStack(TI.plate(), 4), new OreDictStack(CU.plate(), 6), new ComparableStack(ModItems.circuit_gold, 6), new ComparableStack(ModItems.coil_advanced_alloy, 8), new ComparableStack(ModItems.coil_tungsten, 4), new OreDictStack(MAGTUNG.ingot(), 12), },150); makeRecipe(new ComparableStack(ModBlocks.factory_advanced_hull, 1), new AStack[] {new OreDictStack(ALLOY.ingot(), 4), new OreDictStack(ALLOY.plate(), 4), new ComparableStack(ModItems.wire_advanced_alloy, 6), },50); makeRecipe(new ComparableStack(ModBlocks.factory_advanced_furnace, 1), new AStack[] {new OreDictStack(ALLOY.ingot(), 4), new OreDictStack(ALLOY.plate(), 4), new OreDictStack(STEEL.plate(), 8), new ComparableStack(ModItems.coil_advanced_alloy, 2), },100); @@ -435,7 +435,7 @@ public class AssemblerRecipes { makeRecipe(new ComparableStack(ModItems.mp_warhead_15_nuclear, 1), new AStack[] {new ComparableStack(ModItems.seg_15, 1), new OreDictStack(STEEL.plate(), 24), new OreDictStack(TI.plate(), 12), new OreDictStack(PU239.ingot(), 3), new ComparableStack(ModBlocks.det_charge, 6), new ComparableStack(ModItems.circuit_targeting_tier4, 1), },500); makeRecipe(new ComparableStack(ModItems.mp_warhead_15_n2, 1), new AStack[] {new ComparableStack(ModItems.seg_15, 1), new OreDictStack(STEEL.plate(), 8), new OreDictStack(TI.plate(), 20), new ComparableStack(ModBlocks.det_charge, 24), new ComparableStack(Blocks.redstone_block, 12), new OreDictStack(MAGTUNG.dust(), 6), new ComparableStack(ModItems.circuit_targeting_tier4, 1), },400); makeRecipe(new ComparableStack(ModItems.mp_warhead_15_balefire, 1), new AStack[] {new ComparableStack(ModItems.seg_15, 1), new OreDictStack(OreDictManager.getReflector(), 16), new ComparableStack(ModItems.powder_magic, 6), new ComparableStack(ModItems.egg_balefire_shard, 4), new OreDictStack(ANY_HIGHEXPLOSIVE.ingot(), 8), new ComparableStack(ModItems.circuit_targeting_tier4, 1), }, 60); - makeRecipe(new ComparableStack(ModItems.missile_soyuz, 1), new AStack[] {new ComparableStack(ModItems.rocket_fuel, 40), new ComparableStack(ModBlocks.det_cord, 20), new ComparableStack(ModItems.thruster_medium, 12), new ComparableStack(ModItems.thruster_small, 12), new ComparableStack(ModItems.tank_steel, 10), new ComparableStack(ModItems.circuit_targeting_tier4, 4), new ComparableStack(ModItems.circuit_targeting_tier3, 8), new ComparableStack(ModItems.plate_polymer, 64), new ComparableStack(ModItems.fins_small_steel, 4), new ComparableStack(ModItems.hull_big_titanium, 40), new ComparableStack(ModItems.hull_big_steel, 24), new OreDictStack(FIBER.ingot(), 64), },600); + makeRecipe(new ComparableStack(ModItems.missile_soyuz, 1), new AStack[] {new ComparableStack(ModItems.rocket_fuel, 40), new ComparableStack(ModBlocks.det_cord, 20), new ComparableStack(ModItems.thruster_medium, 12), new ComparableStack(ModItems.thruster_small, 12), new ComparableStack(ModItems.tank_steel, 10), new ComparableStack(ModItems.circuit_targeting_tier4, 2), new ComparableStack(ModItems.circuit_targeting_tier3, 8), new OreDictStack(RUBBER.ingot(), 64), new ComparableStack(ModItems.fins_small_steel, 4), new ComparableStack(ModItems.hull_big_titanium, 32), new ComparableStack(ModItems.hull_big_steel, 18), new OreDictStack(FIBER.ingot(), 64), },600); makeRecipe(new ComparableStack(ModItems.missile_soyuz_lander, 1), new AStack[] {new ComparableStack(ModItems.rocket_fuel, 10), new ComparableStack(ModItems.thruster_small, 3), new ComparableStack(ModItems.tank_steel, 2), new ComparableStack(ModItems.circuit_targeting_tier3, 4), new ComparableStack(ModItems.plate_polymer, 32), new ComparableStack(ModItems.hull_big_aluminium, 2), new ComparableStack(ModItems.sphere_steel, 1), new OreDictStack(FIBER.ingot(), 12), },600); makeRecipe(new ComparableStack(ModItems.fusion_shield_tungsten, 1), new AStack[] {new OreDictStack(W.block(), 32), new OreDictStack(OreDictManager.getReflector(), 96)}, 600); makeRecipe(new ComparableStack(ModItems.fusion_shield_desh, 1), new AStack[] {new OreDictStack(DESH.block(), 16), new OreDictStack(CO.block(), 16), new OreDictStack(BIGMT.plate(), 96)}, 600); @@ -508,7 +508,7 @@ public class AssemblerRecipes { new OreDictStack(STEEL.plate(), 32), new OreDictStack(AL.plate(), 32), new OreDictStack(ANY_PLASTIC.ingot(), 24), - new ComparableStack(ModItems.plate_polymer, 64), + new OreDictStack(RUBBER.ingot(), 24), new ComparableStack(ModItems.board_copper, 8), new ComparableStack(ModItems.circuit_red_copper, 8), new ComparableStack(ModItems.circuit_gold, 3), @@ -855,7 +855,7 @@ public class AssemblerRecipes { new OreDictStack(STEEL.plate(), 32), new OreDictStack(AL.plate(), 32), new OreDictStack(ANY_PLASTIC.ingot(), 24), - new ComparableStack(ModItems.plate_polymer, 64), + new OreDictStack(RUBBER.ingot(), 24), new ComparableStack(ModItems.board_copper, 8), new ComparableStack(ModItems.circuit_red_copper, 8), new ComparableStack(ModItems.circuit_gold, 3), diff --git a/src/main/java/com/hbm/inventory/recipes/CentrifugeRecipes.java b/src/main/java/com/hbm/inventory/recipes/CentrifugeRecipes.java index b3e251350..6933b7026 100644 --- a/src/main/java/com/hbm/inventory/recipes/CentrifugeRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/CentrifugeRecipes.java @@ -6,6 +6,7 @@ import java.util.Map; import java.util.Map.Entry; import com.hbm.blocks.ModBlocks; +import com.hbm.config.GeneralConfig; import com.hbm.handler.imc.IMCCentrifuge; import com.hbm.inventory.RecipesCommon; import com.hbm.inventory.RecipesCommon.ComparableStack; @@ -23,6 +24,8 @@ public class CentrifugeRecipes { public static void register() { + boolean lbs = GeneralConfig.enableLBSM && GeneralConfig.enableLBSMSimpleCentrifuge; + recipes.put(new ComparableStack(ModItems.waste_natural_uranium), new ItemStack[] { new ItemStack(ModItems.nugget_u238, 1), new ItemStack(ModItems.nugget_pu_mix, 2), @@ -138,9 +141,9 @@ public class CentrifugeRecipes { new ItemStack(Blocks.gravel, 1) }); recipes.put("oreGold", new ItemStack[] { + lbs ? new ItemStack(ModItems.powder_gold, 2) : new ItemStack(ModItems.powder_gold, 1), new ItemStack(ModItems.powder_gold, 1), - new ItemStack(ModItems.powder_gold, 1), - new ItemStack(ModItems.powder_gold, 1), + lbs ? new ItemStack(ModItems.nugget_bismuth, 1) : new ItemStack(ModItems.powder_gold, 1), new ItemStack(Blocks.gravel, 1) }); recipes.put("oreDiamond", new ItemStack[] { @@ -156,8 +159,8 @@ public class CentrifugeRecipes { new ItemStack(Blocks.gravel, 1) }); recipes.put("oreTitanium", new ItemStack[] { - new ItemStack(ModItems.powder_titanium, 1), - new ItemStack(ModItems.powder_titanium, 1), + lbs ? new ItemStack(ModItems.powder_titanium, 2) : new ItemStack(ModItems.powder_titanium, 1), + lbs ? new ItemStack(ModItems.powder_titanium, 2) : new ItemStack(ModItems.powder_titanium, 1), new ItemStack(ModItems.powder_iron, 1), new ItemStack(Blocks.gravel, 1) }); @@ -168,13 +171,13 @@ public class CentrifugeRecipes { new ItemStack(Blocks.netherrack, 1) }); recipes.put("oreTungsten", new ItemStack[] { - new ItemStack(ModItems.powder_tungsten, 1), + lbs ? new ItemStack(ModItems.powder_tungsten, 2) : new ItemStack(ModItems.powder_tungsten, 1), new ItemStack(ModItems.powder_tungsten, 1), new ItemStack(ModItems.powder_iron, 1), new ItemStack(Blocks.gravel, 1) }); recipes.put("oreCopper", new ItemStack[] { - new ItemStack(ModItems.powder_copper, 1), + lbs ? new ItemStack(ModItems.powder_copper, 2) : new ItemStack(ModItems.powder_copper, 1), new ItemStack(ModItems.powder_copper, 1), new ItemStack(ModItems.powder_gold, 1), new ItemStack(Blocks.gravel, 1) }); @@ -186,8 +189,8 @@ public class CentrifugeRecipes { new ItemStack(Blocks.gravel, 1) }); recipes.put("oreLead", new ItemStack[] { - new ItemStack(ModItems.powder_lead, 1), - new ItemStack(ModItems.powder_lead, 1), + lbs ? new ItemStack(ModItems.powder_lead, 2) : new ItemStack(ModItems.powder_lead, 1), + lbs ? new ItemStack(ModItems.nugget_bismuth, 1) : new ItemStack(ModItems.powder_lead, 1), new ItemStack(ModItems.powder_gold, 1), new ItemStack(Blocks.gravel, 1) }); @@ -210,9 +213,9 @@ public class CentrifugeRecipes { new ItemStack(Blocks.gravel, 1) }); recipes.put("oreUranium", new ItemStack[] { - new ItemStack(ModItems.powder_uranium, 1), - new ItemStack(ModItems.powder_uranium, 1), - new ItemStack(ModItems.nugget_ra226, 1), + lbs ? new ItemStack(ModItems.powder_uranium, 2) : new ItemStack(ModItems.powder_uranium, 1), + lbs ? new ItemStack(ModItems.nugget_technetium, 2) : new ItemStack(ModItems.powder_uranium, 1), + lbs ? new ItemStack(ModItems.nugget_ra226, 2) : new ItemStack(ModItems.nugget_ra226, 1), new ItemStack(Blocks.gravel, 1) }); recipes.put("oreThorium", new ItemStack[] { @@ -230,7 +233,7 @@ public class CentrifugeRecipes { recipes.put("oreRedstone", new ItemStack[] { new ItemStack(Items.redstone, 3), new ItemStack(Items.redstone, 3), - new ItemStack(ModItems.ingot_mercury, 1), + lbs ? new ItemStack(ModItems.ingot_mercury, 3) : new ItemStack(ModItems.ingot_mercury, 1), new ItemStack(Blocks.gravel, 1) }); recipes.put(new ComparableStack(ModBlocks.ore_tikite), new ItemStack[] { diff --git a/src/main/java/com/hbm/inventory/recipes/ChemplantRecipes.java b/src/main/java/com/hbm/inventory/recipes/ChemplantRecipes.java index 348a91b1c..64a1bb1bf 100644 --- a/src/main/java/com/hbm/inventory/recipes/ChemplantRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/ChemplantRecipes.java @@ -45,7 +45,7 @@ public class ChemplantRecipes { recipes.add(new ChemRecipe(38, "DESH", 300) .inputItems(new ComparableStack(ModItems.powder_desh_mix)) .inputFluids( - GeneralConfig.enableBabyMode ? + (GeneralConfig.enableLBSM && GeneralConfig.enableLBSMSimpleChemsitry) ? new FluidStack[] {new FluidStack(Fluids.LIGHTOIL, 200)} : new FluidStack[] {new FluidStack(Fluids.MERCURY, 200), new FluidStack(Fluids.LIGHTOIL, 200)}) .outputItems(new ItemStack(ModItems.ingot_desh))); @@ -171,7 +171,10 @@ public class ChemplantRecipes { new OreDictStack(KNO.dust(), 2), new OreDictStack(KEY_PLANKS), new ComparableStack(Items.sugar)) - .inputFluids(new FluidStack(Fluids.HEATINGOIL, 200)) + .inputFluids( + (GeneralConfig.enableLBSM && GeneralConfig.enableLBSMSimpleChemsitry) ? + new FluidStack(Fluids.HEATINGOIL, 200) : + new FluidStack(Fluids.GAS, 200)) .outputItems(new ItemStack(ModItems.cordite, 4))); recipes.add(new ChemRecipe(54, "KEVLAR", 40) .inputItems( @@ -190,7 +193,9 @@ public class ChemplantRecipes { .inputItems( new ComparableStack(Blocks.gravel, 2), new ComparableStack(Blocks.sand, 2), - new OreDictStack(ASBESTOS.ingot(), 4)) + (GeneralConfig.enableLBSM && GeneralConfig.enableLBSMSimpleChemsitry) ? + new OreDictStack(ASBESTOS.ingot(), 1) : + new OreDictStack(ASBESTOS.ingot(), 4)) .inputFluids(new FluidStack(Fluids.WATER, 2000)) .outputItems(new ItemStack(ModBlocks.concrete_asbestos, 16))); recipes.add(new ChemRecipe(79, "DUCRETE", 150) @@ -224,7 +229,9 @@ public class ChemplantRecipes { new OreDictStack(P_RED.dust())) .inputFluids( new FluidStack(Fluids.ACID, 100), - new FluidStack(Fluids.MERCURY, 50)) + (GeneralConfig.enableLBSM && GeneralConfig.enableLBSMSimpleChemsitry) ? + new FluidStack(Fluids.WATER, 200) : + new FluidStack(Fluids.MERCURY, 50)) .outputItems(new ItemStack(ModItems.ingot_saturnite, 2))); recipes.add(new ChemRecipe(62, "BALEFIRE", 100) .inputItems(new ComparableStack(ModItems.egg_balefire_shard)) diff --git a/src/main/java/com/hbm/inventory/recipes/MachineRecipes.java b/src/main/java/com/hbm/inventory/recipes/MachineRecipes.java index f1b8148e5..2bec947ed 100644 --- a/src/main/java/com/hbm/inventory/recipes/MachineRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/MachineRecipes.java @@ -115,11 +115,16 @@ public class MachineRecipes { return new ItemStack(ModItems.ingot_starmetal, 2); } - if(GeneralConfig.enableBabyMode) { + if(GeneralConfig.enableLBSM && GeneralConfig.enableLBSMSimpleAlloy) { if(mODE(item, new String[] { "gemCoal", "dustCoal" }) && item2.getItem() == ModItems.canister_empty || item.getItem() == ModItems.canister_empty && mODE(item2, new String[] { "gemCoal", "dustCoal" })) { return new ItemStack(ModItems.canister_full, 1, Fluids.OIL.getID()); } + + if(item.getItem() == Item.getItemFromBlock(ModBlocks.block_meteor_cobble) && mODE(item2, new String[] { "ingotSteel", "dustSteel" }) + || mODE(item, new String[] { "ingotSteel", "dustSteel" }) && item2.getItem() == Item.getItemFromBlock(ModBlocks.block_meteor_cobble)) { + return new ItemStack(ModItems.ingot_meteorite); + } } if (item.getItem() == Item.getItemFromBlock(ModBlocks.block_meteor) && mODE(item2, new String[] {"ingotCobalt", "dustCobalt"}) @@ -431,9 +436,11 @@ public class MachineRecipes { recipes.put(new ItemStack[] { new ItemStack(ModItems.ingot_cobalt), new ItemStack(ModBlocks.block_meteor) }, getFurnaceOutput(new ItemStack(ModItems.ingot_cobalt), new ItemStack(ModBlocks.block_meteor)).copy()); - if(GeneralConfig.enableBabyMode) { + if(GeneralConfig.enableLBSMFullSchrab && GeneralConfig.enableLBSMSimpleAlloy) { recipes.put(new ItemStack[] { new ItemStack(ModItems.canister_empty), new ItemStack(Items.coal) }, getFurnaceOutput(new ItemStack(ModItems.canister_empty), new ItemStack(Items.coal)).copy()); + recipes.put(new ItemStack[] { new ItemStack(ModBlocks.block_meteor_cobble), new ItemStack(ModItems.ingot_steel) }, + getFurnaceOutput(new ItemStack(ModBlocks.block_meteor_cobble), new ItemStack(ModItems.ingot_steel)).copy()); } } catch (Exception x) { diff --git a/src/main/java/com/hbm/inventory/recipes/anvil/AnvilRecipes.java b/src/main/java/com/hbm/inventory/recipes/anvil/AnvilRecipes.java index 87a06c2bc..fa1f6ad7a 100644 --- a/src/main/java/com/hbm/inventory/recipes/anvil/AnvilRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/anvil/AnvilRecipes.java @@ -737,14 +737,14 @@ public class AnvilRecipes { public AnvilConstructionRecipe setTier(int tier) { this.tierLower = tier; - if(GeneralConfig.enableBabyMode) this.tierLower = 1; + if(GeneralConfig.enableLBSM && GeneralConfig.enableLBSMUnlockAnvil) this.tierLower = 1; return this; } public AnvilConstructionRecipe setTierRange(int lower, int upper) { this.tierLower = lower; this.tierUpper = upper; - if(GeneralConfig.enableBabyMode) this.tierLower = this.tierUpper = 1; + if(GeneralConfig.enableLBSM && GeneralConfig.enableLBSMUnlockAnvil) this.tierLower = this.tierUpper = 1; return this; } diff --git a/src/main/java/com/hbm/inventory/recipes/anvil/AnvilSmithingRecipe.java b/src/main/java/com/hbm/inventory/recipes/anvil/AnvilSmithingRecipe.java index 3924d34ef..9677efdc9 100644 --- a/src/main/java/com/hbm/inventory/recipes/anvil/AnvilSmithingRecipe.java +++ b/src/main/java/com/hbm/inventory/recipes/anvil/AnvilSmithingRecipe.java @@ -21,7 +21,7 @@ public class AnvilSmithingRecipe { this.output = out; this.left = left; this.right = right; - if(GeneralConfig.enableBabyMode) this.tier = 1; + if(GeneralConfig.enableLBSMShorterDecay && GeneralConfig.enableLBSMUnlockAnvil) this.tier = 1; } public AnvilSmithingRecipe makeShapeless() { diff --git a/src/main/java/com/hbm/items/special/ItemSchraranium.java b/src/main/java/com/hbm/items/special/ItemSchraranium.java index b4b489052..4e092b9a6 100644 --- a/src/main/java/com/hbm/items/special/ItemSchraranium.java +++ b/src/main/java/com/hbm/items/special/ItemSchraranium.java @@ -9,41 +9,40 @@ import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.client.renderer.texture.IIconRegister; import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.util.IIcon; public class ItemSchraranium extends ItemCustomLore { - + IIcon nikonium; - @SideOnly(Side.CLIENT) - public void registerIcons(IIconRegister reg) { - this.itemIcon = reg.registerIcon(this.getIconString()); - this.nikonium = reg.registerIcon("hbm:ingot_nikonium"); - } - - @SideOnly(Side.CLIENT) - public IIcon getIconFromDamage(int meta) { - - if(GeneralConfig.enableBabyMode) - return this.nikonium; + @SideOnly(Side.CLIENT) + public void registerIcons(IIconRegister reg) { + this.itemIcon = reg.registerIcon(this.getIconString()); + this.nikonium = reg.registerIcon("hbm:ingot_nikonium"); + } + + @SideOnly(Side.CLIENT) + public IIcon getIconFromDamage(int meta) { + + if(GeneralConfig.enableLBSM && GeneralConfig.enableLBSMFullSchrab) + return this.nikonium; return this.itemIcon; - } + } - public String getItemStackDisplayName(ItemStack stack) { + public String getItemStackDisplayName(ItemStack stack) { - if(GeneralConfig.enableBabyMode) + if(GeneralConfig.enableLBSM && GeneralConfig.enableLBSMFullSchrab) return "Nikonium Ingot"; else return super.getItemStackDisplayName(stack); - } - - @Override + } + + @Override public void addInformation(ItemStack itemstack, EntityPlayer player, List list, boolean bool) { - if(GeneralConfig.enableBabyMode) - list.add("shut up peer please for the love of god shut up i can't stand it any longer shut up shut up shut up shut up shut up"); + if(GeneralConfig.enableLBSM && GeneralConfig.enableLBSMFullSchrab) + list.add("pankæk"); else super.addInformation(itemstack, player, list, bool); - } + } } diff --git a/src/main/java/com/hbm/main/CraftingManager.java b/src/main/java/com/hbm/main/CraftingManager.java index 43ec20b93..653ebc302 100644 --- a/src/main/java/com/hbm/main/CraftingManager.java +++ b/src/main/java/com/hbm/main/CraftingManager.java @@ -899,7 +899,7 @@ public class CraftingManager { addShapelessAuto(DictFrame.fromOne(ModItems.parts_legendary, EnumLegendaryType.TIER2, 3), new Object[] { DictFrame.fromOne(ModItems.parts_legendary, EnumLegendaryType.TIER3) }); addShapelessAuto(DictFrame.fromOne(ModItems.parts_legendary, EnumLegendaryType.TIER3), new Object[] { ModItems.ingot_chainsteel, ModItems.ingot_smore, ModItems.gem_alexandrite, ModItems.gem_alexandrite, ModItems.gem_alexandrite }); - if(GeneralConfig.enableBabyMode) { + if(GeneralConfig.enableLBSM && GeneralConfig.enableLBSMSimpleCrafting) { addShapelessAuto(new ItemStack(ModItems.cordite, 3), new Object[] { ModItems.ballistite, Items.gunpowder, new ItemStack(Blocks.wool, 1, OreDictionary.WILDCARD_VALUE) }); addShapelessAuto(new ItemStack(ModItems.ingot_semtex, 3), new Object[] { Items.slime_ball, Blocks.tnt, KNO.dust() }); addShapelessAuto(new ItemStack(ModItems.canister_full, 1, Fluids.DIESEL.getID()), new Object[] { new ItemStack(ModItems.canister_full, 1, Fluids.OIL.getID()), REDSTONE.dust(), ModItems.canister_empty }); diff --git a/src/main/resources/assets/hbm/textures/items/plate_mixed.png b/src/main/resources/assets/hbm/textures/items/plate_mixed.png index 768dff6af58d0cc7896631d229ab0db28b0aa6bd..8dd03d0c49372ae9d360fd1e4597fba5c0f11722 100644 GIT binary patch delta 457 zcmV;)0XF{N1LFgbB!2{RLP=Bz2nYy#2xN!=00EjwL_t(IjlGh;OR7;A$3N%NyBx*9 zl0Dg38t#R*s3Dpg+8yp6kZVKJy9rGVE!|7tbO%8Y0vlQ?Cw+UdIJ}7P zG#sTm`YVjlu~k%$xzC{ z(vn?YT?Kb8>_oj60;JPvB9RDMYm70}Qyt=QxW2Zq%ga|M>b=#ShYX2C0sv#o1b(s7 z!SkTk3zws+AbY!5?yjWd4?hyn5!{Ly@V88)TD^|u9n&ScsWuaIRcMdsSMC5l~{^aa9 z7K;h?k;QQwp->ixj`Qs|7RrLwxL4<-QsDd0xP=-}6gVe600000NkvXXu0mjfWggLM delta 454 zcmV;%0XhET1KpGbxA})R5(wilD|vCKorNnCw8+-6iZPQsV%mkgl=LH^&b$r=-?J&<+`dqR@(FNvTMMGw+=V{eO`t*e`^;_j2#^e%uKu zB}UQM&-!nT39z-nG4|+CLMQ76mBoYZ2#;t2rA*CIB3qN5X()_iJM#Jd~CJns<(jchQ w0SccJe%ZYW1bFg5)pzi~*g2qI0e=hl2A|l&8fvH4p#T5?07*qoM6N<$g1QLBlmGw# From 218b43933eea35cca9064ce76e9e4301edc09ee1 Mon Sep 17 00:00:00 2001 From: Bob Date: Thu, 14 Apr 2022 23:43:27 +0200 Subject: [PATCH 5/5] some fixes, upgrade retexture --- .../com/hbm/main/ModEventHandlerClient.java | 2 +- .../com/hbm/main/ModEventHandlerRenderer.java | 81 ++++++++++++++++++ .../machine/TileEntityDeuteriumExtractor.java | 2 +- src/main/resources/assets/hbm/lang/de_DE.lang | 2 +- src/main/resources/assets/hbm/lang/en_US.lang | 2 +- .../hbm/textures/gui/centrifuge_gas.png | Bin 3225 -> 3362 bytes .../assets/hbm/textures/gui/gui_field.png | Bin 2309 -> 2383 bytes .../assets/hbm/textures/items/rope.png | Bin 0 -> 290 bytes .../textures/items/upgrade_afterburn_1.png | Bin 338 -> 398 bytes .../textures/items/upgrade_afterburn_2.png | Bin 339 -> 394 bytes .../textures/items/upgrade_afterburn_3.png | Bin 323 -> 380 bytes .../hbm/textures/items/upgrade_centrifuge.png | Bin 353 -> 382 bytes .../textures/items/upgrade_crystallizer.png | Bin 359 -> 376 bytes .../hbm/textures/items/upgrade_effect_1.png | Bin 361 -> 397 bytes .../hbm/textures/items/upgrade_effect_2.png | Bin 353 -> 400 bytes .../hbm/textures/items/upgrade_effect_3.png | Bin 345 -> 365 bytes .../hbm/textures/items/upgrade_fortune_1.png | Bin 360 -> 390 bytes .../hbm/textures/items/upgrade_fortune_2.png | Bin 351 -> 386 bytes .../hbm/textures/items/upgrade_fortune_3.png | Bin 338 -> 373 bytes .../hbm/textures/items/upgrade_gc_speed.png | Bin 287 -> 382 bytes .../hbm/textures/items/upgrade_health.png | Bin 340 -> 393 bytes .../hbm/textures/items/upgrade_nullifier.png | Bin 345 -> 342 bytes .../textures/items/upgrade_overdrive_1.png | Bin 314 -> 338 bytes .../textures/items/upgrade_overdrive_2.png | Bin 310 -> 316 bytes .../textures/items/upgrade_overdrive_3.png | Bin 295 -> 303 bytes .../hbm/textures/items/upgrade_power_1.png | Bin 360 -> 376 bytes .../hbm/textures/items/upgrade_power_2.png | Bin 356 -> 359 bytes .../hbm/textures/items/upgrade_power_3.png | Bin 331 -> 344 bytes .../hbm/textures/items/upgrade_radius.png | Bin 327 -> 388 bytes .../hbm/textures/items/upgrade_screm.png | Bin 286 -> 311 bytes .../hbm/textures/items/upgrade_shredder.png | Bin 344 -> 375 bytes .../hbm/textures/items/upgrade_smelter.png | Bin 359 -> 369 bytes 32 files changed, 85 insertions(+), 4 deletions(-) create mode 100644 src/main/resources/assets/hbm/textures/items/rope.png diff --git a/src/main/java/com/hbm/main/ModEventHandlerClient.java b/src/main/java/com/hbm/main/ModEventHandlerClient.java index bd4d894f2..d7bea7ba1 100644 --- a/src/main/java/com/hbm/main/ModEventHandlerClient.java +++ b/src/main/java/com/hbm/main/ModEventHandlerClient.java @@ -585,7 +585,7 @@ public class ModEventHandlerClient { private ResourceLocation ashes = new ResourceLocation(RefStrings.MODID + ":textures/misc/overlay_ash.png"); @SideOnly(Side.CLIENT) - @SubscribeEvent + //@SubscribeEvent public void onRenderStorm(RenderHandEvent event) { if(BlockAshes.ashes == 0) diff --git a/src/main/java/com/hbm/main/ModEventHandlerRenderer.java b/src/main/java/com/hbm/main/ModEventHandlerRenderer.java index 91c8a06d7..30c29a402 100644 --- a/src/main/java/com/hbm/main/ModEventHandlerRenderer.java +++ b/src/main/java/com/hbm/main/ModEventHandlerRenderer.java @@ -1,15 +1,26 @@ package com.hbm.main; +import org.lwjgl.opengl.GL11; + +import com.hbm.blocks.generic.BlockAshes; import com.hbm.items.armor.IArmorDisableModel; import com.hbm.items.armor.IArmorDisableModel.EnumPlayerPart; +import com.hbm.lib.RefStrings; import cpw.mods.fml.common.eventhandler.EventPriority; import cpw.mods.fml.common.eventhandler.SubscribeEvent; +import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.ScaledResolution; import net.minecraft.client.model.ModelRenderer; +import net.minecraft.client.renderer.OpenGlHelper; +import net.minecraft.client.renderer.Tessellator; import net.minecraft.client.renderer.entity.RenderPlayer; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; +import net.minecraft.util.ResourceLocation; +import net.minecraftforge.client.event.RenderGameOverlayEvent; import net.minecraftforge.client.event.RenderPlayerEvent; +import net.minecraftforge.client.event.RenderGameOverlayEvent.ElementType; public class ModEventHandlerRenderer { @@ -69,4 +80,74 @@ public class ModEventHandlerRenderer { default: return null; } } + + private ResourceLocation ashes = new ResourceLocation(RefStrings.MODID + ":textures/misc/overlay_ash.png"); + public static int currentBrightness = 0; + public static int lastBrightness = 0; + + @SubscribeEvent + public void onOverlayRender(RenderGameOverlayEvent.Pre event) { + + if(event.type == ElementType.AIR) { + + Minecraft mc = Minecraft.getMinecraft(); + + ScaledResolution resolution = new ScaledResolution(mc, mc.displayWidth, mc.displayHeight); + + GL11.glPushMatrix(); + GL11.glDisable(GL11.GL_DEPTH_TEST); + GL11.glDepthMask(false); + GL11.glEnable(GL11.GL_BLEND); + OpenGlHelper.glBlendFunc(770, 771, 1, 0); + GL11.glEnable(GL11.GL_ALPHA_TEST); + GL11.glAlphaFunc(GL11.GL_GEQUAL, 0.0F); + + int w = resolution.getScaledWidth(); + int h = resolution.getScaledHeight(); + double off = System.currentTimeMillis() / 10000D % 10000D; + double aw = 1; + + Tessellator tessellator = Tessellator.instance; + + int cX = currentBrightness % 65536; + int cY = currentBrightness / 65536; + int lX = lastBrightness % 65536; + int lY = lastBrightness / 65536; + float interp = (mc.theWorld.getTotalWorldTime() % 20) * 0.05F; + + if(mc.theWorld.getTotalWorldTime() == 1) + lastBrightness = currentBrightness; + + OpenGlHelper.setLightmapTextureCoords(OpenGlHelper.lightmapTexUnit, (float)(lX + (cX - lX) * interp) / 1.0F, (float)(lY + (cY - lY) * interp) / 1.0F); + + //mc.entityRenderer.enableLightmap((double)event.partialTicks); + + mc.getTextureManager().bindTexture(ashes); + + for(int i = 1; i < 3; i++) { + + GL11.glTranslated(w, h, 0); + GL11.glRotatef(-15, 0, 0, 1); + GL11.glTranslated(-w, -h, 0); + GL11.glColor4f(1.0F, 1.0F, 1.0F, BlockAshes.ashes / 256F * 0.98F / i); + + tessellator.startDrawingQuads(); + tessellator.addVertexWithUV(-w * 1.25, h * 1.25, aw, 0.0D + off * i, 1.0D); + tessellator.addVertexWithUV(w * 1.25, h * 1.25, aw, 1.0D + off * i, 1.0D); + tessellator.addVertexWithUV(w * 1.25, -h * 1.25, aw, 1.0D + off * i, 0.0D); + tessellator.addVertexWithUV(-w * 1.25, -h * 1.25, aw, 0.0D + off * i, 0.0D); + tessellator.draw(); + } + + mc.entityRenderer.disableLightmap((double)event.partialTicks); + + GL11.glDepthMask(true); + GL11.glEnable(GL11.GL_DEPTH_TEST); + GL11.glDisable(GL11.GL_BLEND); + GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); + GL11.glAlphaFunc(GL11.GL_GEQUAL, 0.1F); + + GL11.glPopMatrix(); + } + } } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityDeuteriumExtractor.java b/src/main/java/com/hbm/tileentity/machine/TileEntityDeuteriumExtractor.java index 87600125e..da47131a8 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityDeuteriumExtractor.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityDeuteriumExtractor.java @@ -30,7 +30,7 @@ public class TileEntityDeuteriumExtractor extends TileEntityMachineBase implemen super(0); tanks = new FluidTank[2]; tanks[0] = new FluidTank(Fluids.WATER, 1000, 0); - tanks[1] = new FluidTank(Fluids.HEAVYWATER, 100, 0); + tanks[1] = new FluidTank(Fluids.HEAVYWATER, 100, 1); } @Override diff --git a/src/main/resources/assets/hbm/lang/de_DE.lang b/src/main/resources/assets/hbm/lang/de_DE.lang index e40fd2465..80ac65a75 100644 --- a/src/main/resources/assets/hbm/lang/de_DE.lang +++ b/src/main/resources/assets/hbm/lang/de_DE.lang @@ -3488,7 +3488,7 @@ tile.pink_stairs.name=Pinke Holztreppen tile.plant_flower.foxglove.name=Roter Fingerhut tile.plant_flower.nightshade.name=Schwarze Tollkirsche tile.plant_flower.tobacco.name=Tabakpflanze -tile.plant_flower.weed.name=Weed Version 420(0) +tile.plant_flower.weed.name=Hanf tile.plasma.name=Plasma tile.plasma_heater.name=Plasmaerhitzer tile.pole_satellite_receiver.name=Satellitenschüssel diff --git a/src/main/resources/assets/hbm/lang/en_US.lang b/src/main/resources/assets/hbm/lang/en_US.lang index 97c9a30c7..248ae199d 100644 --- a/src/main/resources/assets/hbm/lang/en_US.lang +++ b/src/main/resources/assets/hbm/lang/en_US.lang @@ -3862,7 +3862,7 @@ tile.pink_stairs.name=Pink Wood Stairs tile.plant_flower.foxglove.name=Foxglove tile.plant_flower.nightshade.name=Deadly Nightshade tile.plant_flower.tobacco.name=Tobacco Plant -tile.plant_flower.weed.name=Weed Version 420(0) +tile.plant_flower.weed.name=Hemp tile.plasma.name=Plasma tile.plasma_heater.name=Plasma Heater tile.pole_satellite_receiver.name=Satellite Dish diff --git a/src/main/resources/assets/hbm/textures/gui/centrifuge_gas.png b/src/main/resources/assets/hbm/textures/gui/centrifuge_gas.png index 79e0723bf49e1eebc0e8495930a8e9975f80fae5..1300c56f928c03969ebe1ce3ff1f7062525e1ab5 100644 GIT binary patch literal 3362 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 KR(|SI%s&Ctm?+k zN!e2hiDZdlvKAHjO}BfW`{(cPd!FY!=e(cyyzl4pp5=K?0?FKHC&yk60KiUTqP`^n z2-Xw<*paNkr_|Q!mlbGfqzB4+1wXP3l!vaFE&vsmF&i#u03cP8sg(f>2b-daiHWMJ zs_pIVTU%RTU81?6q^`QKrLlB%>AkwTx}u_@hK7c}zdu;Q|NJrceyq3aSzSkaO?z7v zl}dGRa4GtA+FYihqN1gx1!}!Og+Hh`1MZyzCBf4Z zFKQp&9(~hECX*Eu6l`s6!EG8S44WK(J~unW{Pd=(yr90e$jQmc-QC^O(-V)!D=RC5 z+^CwWTk`Vq;A+AmbJWMj2c)KMZ7oGaM1aIh5SsU~|}6E!c?OVj~<4SUwm6l7_BoONgZvkheHM@z5@*-jyz39vaD7UE65Q;{WYTmZI^F50D${Q~Z z-_@&M%PNYt`MzE6-M*_YHR~j%PnA7Y^H10~+aduL zWe|kVayS;(^XP2r!t4U?a3s6!6Akxw{EPm`^ZJ|9dng&u+{we0_xMy)(*4RHLBB%7>m$H1PVg838dd;F9mX zd->Cd2uUCa?qcwJ<_rpA7cY&!!Uhw-T%|-7P-7n4c$gZqxV!GoI=5uM%|ui?wFiN) zuW8KG$>pNgmv)H3OA7is>&6SCf2>IN$%e1*Nx9fgRe|Bb-2>l1Y1efJXk1bK@i*ZO z5W{mT-=(prJhYkn!V9@RHtb?-q=qmYd@{oy6)#wKiKZQX@x2r0n(Eqs+Ar^&zr7Y9 zA|+1q*(*xMWhQ@xP%>5SV0v^&GQ=KgqWfEfICL=8b|;1xIn=! zo=XY=ziU}Ig!|(?Pk5RidUmCfJv3{@Df%~e2#U@rQqH{#*O@uJQq8cZr)C+@e+Y|9 zc@uCAFe(7yy6^p5zvP`p8HiwYz?)E@1Q9HY*=Piy!MRS;Aw8)t^)l9JVnl-_KI|*x z^UL%3r@FgD$4{XHQ2h^*Y_pW_vy<%+*Z6l8tnT(#oj%RIXq;|wgX_kwxeikdBxg|e z6df-?JxNYThUH}w;XYBqjMYhh=dC^6X#lT!G4$qB%y7N3HIbc$8aXTA(rqFv$hAkr zc|Q*HX-4~vjA@roc6D>LXqchK4dZ?N6rd^T=H?{14_>J8qw(`ZN%BmuW5e2fFkZ(Y z=Dd#;``c~}#Q7xZ$EYHEeJ%}zGxPiRY$nniOKES15ws^e6sJ4ZPN!QryCaZBDSxOd%vym5&O1&e1J4Nz22marfGQqXOOV5;4QW#r z;f7ir2T)o9@$`XaSCqm|YCWs4^^4We*Dq^a%r{iiGl*n>DFQg(t@aNK-T*vktIx=OEYtf^VXD)rE0!Ee>`Z z{69T((pC@~oW<{unXIj-+}_@p`O6JUibm$bu6c;q2Zz0api4Pi&m?r5jy$?03BIfTDZ>Uo;#UrOTwaDYP`|L<$BQ@9olgg@HqKK`Hb8w=hrz2Z3fOTaBAHCj~ zDgcNxc2Qo}R=^r0x}1|AD9BO%6R%LJ#!KQPg6%j&=va&{^w(@CjAe?$sB!8Zw(U9y z*K`Ta-Vp}>2fjgwvKObnlCKn78-q#(JUYME{~O5)V!^3DXO<@KKdAsYAqf<<+9>(Q z_nuS(K`#-`ZGp{v|3v*m@E6tZWN^c^oSSxn7&3i#|_is&o&qzxR6nT~JzXSB4 c2fVkCJzDqricBcetS=NWHZa#O(<4Xz4+25ac>n+a diff --git a/src/main/resources/assets/hbm/textures/gui/gui_field.png b/src/main/resources/assets/hbm/textures/gui/gui_field.png index 850c67f606685c18b38ab0d5ed9f35f3b7e0834f..a503c60307c76ddfc232801b7019788749bc3656 100644 GIT binary patch delta 2193 zcmaJ>dpy(o8~<#^G{O{z5G_$IxxR`Ki*Q8bltpqWx1-}On~?8RN~uFhDbY$ugqln4 z>qa%VI77^BE0@hM*PX?7);X`=zrW|7=Xt%KKc4sdc|WfwO|e@s%M98i<$UPi@q~xm zk=8%dXH=03p=XMmW5(4>85YQaBF~*gZWAYk5_Tu|ORY2x%OKhUDlB|&VPK^(EQ|xz z8Dak#f zzOB_wK>Tr!S%*gRETHXe^1QM1^n_nTc@~o%$uW>?sr4$6*N(x4&(F28cwV9swd+q* zoK)eOn%Xs<1a>8h_B62JtkJm?>?E75CnqNtX+O>yeao8KQ~8a)wt@=yvKId}w6&ST z;Y2({8gQ4F%?oTUY@3>zV)6M)Piv0@C9G}!QZ`DjNvrt-Sq+-O6L5co^;;{VH%dC(u&@=k7NGX9O4t*%hD&!_}37 z+tQ$+6HC&DlOkPCq1O3x9{x(yt=*4o-GwkGC#RT%gj|MOo-Ot7*#SjOkl_a+eTdFvmg95&aXOjw30qf@xi_j=|S7Uoid3+n%)R1VX5wsWOa1B9~I&Kxx=cb2HUN9F6>p4xA^OwJF z&?Z8cd4il3xE|=Q81l&LfSFs`(8{3qv2h^IruBp*)v>(y;Jumk;6{2arC#8qZ6t|@ zRhb;YhV%vI;bogWYJW%#HMx19ZDZA`b0H#cj* z{E$)YSdMVTfLb!+<}{OehW#U$sCKq2-?Q1u%0(cYA8pMXD=E1AQ|Dlo&JTrxhYuOV zZvv&J7lg!jKRpPz#QvdxZ!K6Ah4{W1J{#&=V4GmfTbb$X6r^}9R#3$SIKP2XNUZzIg|(3Y3ImQw_P*FNWTf_)fS-Mb2f0HKV-D zk;b8_(U(y;5KeurX%`zCtB8gkVHcVR#W@?4p_!a8dy-TcJgyR?)N;3c^o~Dc6nwk# z1pzz5@_XNT>C-@abCG{0>$LTsS9$Tt=S4z~WE0-=?Z;X^+j6i^%rS-$V~o z-VD1-r|Cm8ZN8+f@BoS8_`%rPlp$10?<;$fx0#4C6gK?CMEJz=BBb39(?$ay^C;%t zq8AZ9oN_2XUVPZp2RUnFw6f?ebbW%@9G4nYF42`!F7Yb{^v^CV7*|wQmfYpjcKicr| zY{~xLu7D2~KcJu6@Y+Dxa5jpEyy=Y;3V&|nM~&!V+5=fwv4MgqvI@4x{e6yL(KYG3 z?zshtFglsqDFZuiHTo8@1Vw!{tdcx&AXs?$!!(FWm{1$aALU5nZz*@O_!g)-T z86_O)y?-v#8TWCpe+sbw7$Alnlo?sAv|W#7a-hnVjqbZ$LBxm}__OYylDT9Fb4m@! zjaPG#rcQ=8!_!}Lm+4o}kU9t1>eTA8W)#>L%E>0_Yy>1Rq%Pms1U}{h(*II~AqW|n z^NDX)BiHAjLV}2@Rmg+`v;yNK0)~WfWxto@*Uk?8UDYt4=@-0V4L!#|m^K!Vi+A3~ zAj`P9yYIv>*VnD3ARl2I2vu#qnI4*^kxI^RjM}1>U>43Y$9{^yB?hjuqK8X*EcHO* z>Gj##i<;9YTl1w!)U^eu7 zFg^%+TrO>#+_k_mmb!v?ga*sK(-90jJV!w#q-i`<8HR&K;`xcYsJf97z5Y486kd=; zOh)voUTRavW>T$9f8)&y!kX+Tt0OkbDa*0ymqPmaUV4!K-7Vn2zQpCuv~n>4j29>%eASe;NKLI4?X7C%LK3 zI=vSfm);y!__WkQ0_3Gx>1u2o$TEQeRWk&csC-~K+d60(4Z~H+uI_X!oLCQ(vfmNi zt^iD-VmSFxNW}Ur-VKqt9uS0%R@f2{546B^(VG-kKknEd`uA=2AhDEzp0+_0Y(PLhRb1;T-;4w%04YQ01w3GK1f!K9_3VUd>BaYqRk6CGVe-;%213Tg|5 tGU`#^4ak=Hn%R$~U9+pCWmQPq1-6WggZNX1vI9UI&JJ#eD(nI-{sY_s8UFwP delta 2075 zcmXApdpy(oAICqN?N}q%9G6^{gj_nvNm;QR`=yIZDVH3!a;Z*f36slw=a-OMviuZ{ zLL`d0E#@+(i=<2~_lBaPnM>O=_uqET=b!f<@5kr$e!gGt_v6h`yQY@46GAl~bl!jb z%3T4kjil?UEkAeW`Z?1qaJ0o0S5zDs=;`^Cyat@}jkA|od`sU{L;NO*r77-mp6zzi z$qNd2C({1p#1Z3jBS6iPk@@$?#KrKog^-^Mn-5@uGqDXHXfpe9hf) z6W%(*2I1gv=&y?D4{a%hMtWRt`TIidPCGlhu!x8V1Gs^5pMKk+=xv3oO($WMv4ld( z{4lGfMeunqF;G)ebAFCe?^jC(W?-`R`4%b~ zELoJpZ$AP}4ltKvXOxKTda)WnH27!>j zQ9c@T9o!qOlyflzlg#H2*f$LH#V24EbJK&h69$)JVstt>Iywcm=N>{;7I)-aY8IGL zF)?`}NUpoPd*R2H;`?hYHMAAmF=az1Bv`GBL|$qOz###pVM>>sox%Euq&oQRLJVBO zk1^*@eLXLw>Y7%$_tj<$r9qVz{)m(nwljy(P+-XwDJ2sPh{fX9>xD0zwz1$QssI~7 zp|pgRRfb=fl1Q$Enkr`cC(uw3Rd28~ux~?x1r|!&Lv@A|u4Cgy&6rWmvgQ8`hLvQTIrWj)i3^~)k>MRkMH!S8o`MjP)O9)Jl=`3gZxlt?c=J} zMdQYdsN7stPGQ;ar?<%f5-!^neShNA6+mLqLt9wQM`G6dXGc3o$K0J{ZBD-`qM$e& z&UkNy_hAAd0!eyAZ?9I8PGjIcepzM5aQ>V~6fvdITuvVPG5xN%arU>FnW5!Voh*0- zIC~Tlr}_t!cPX*HFAthu5u@8ev7uh@-b@0eB?n_AFDrn1t@QkhM)NegTu^sng9U%3 zH&90z<}N24JJw6^oZl)1+jShfX#Ah%qghJua>^>~^d^3I58}c09 zTaw0Nxp&wGAS?6bd>D$mosbv+og~M_=`xwj@NFwa+RMJR-m^79vKD-85f2$=9?}h1 zm?!ds*{Ws$)>Ctfv*pi7P2w>57pDGLw?B20bY4mEnna!!#M9lc#s}Fbpws`o63U4L z2NAfg%TE|U`_iyJn2{>5^s|j6l-(joHS)QIWV|c(9Mv)g@V4UG9Ur zPevvI1=)s>F<%0%oHPAd-DNH*tzz=J`wAT0N8c2~prx*~lAr6A`W<}b-^OpWt#m+n z_-D`RYS9?+r(6DxTsNqBZO&$D6DbfO76bZCKt!2v5B0lR{|LAM+24n$}MZN|2A8+O`Z$)k3W55$RsmB4XN3WN);ayqcDlmXabpE~)Pb%ypmY_Y zO3{ZCw*GB|*=HBMS?1s&&~v`{S;}r*$fQ2Zz%Y75Qw4|$^b#7*C;=N|fC)?jirr1g z@!83Wa)vBgKPpQZ_ZjE^tIr)m&bu3wS94`2dUGw#Sy(>H)uw}+{sJiUbX(mN|S zck|1Hzo#OMb`iDBh>UpOJ;MAWc3P^~LORo%i3?jN-L@Q5b-~7ty7BZ92JY_3Mp@a* zH1rbcYJUoP3Z#JT4mDdn!WChdK={9{o14G{=*oYf%&p!s%&W-@t$H-Bz#2hYmA7@) z@R7|fRbO2z3RRgbTi_pip^ZG#g4&vRMpEwc!`+q$1*_r?V diff --git a/src/main/resources/assets/hbm/textures/items/rope.png b/src/main/resources/assets/hbm/textures/items/rope.png new file mode 100644 index 0000000000000000000000000000000000000000..1ce320241ccf54599d45770488312eaac562e225 GIT binary patch literal 290 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#Vf1VvR>D;?i9zo~mQKJ4U((o4G` zo6o|ab2Dc1^ou+Uk$#@jf}I==%zHmCdehE?-itaVmbn%TBBhs&qjfASY_11#iIj`3 zNs>La%e8EI7W>D#v-_v2O}CnJfvsWE)+o!s2igmh!(S(g{HT#Ia=jINa`9=SS|weF m7M_{Utvb&4pA7yRCZ8)+u*Uwq*;}9|89ZJ6T-G@yGywq4By(N> literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/items/upgrade_afterburn_1.png b/src/main/resources/assets/hbm/textures/items/upgrade_afterburn_1.png index 556089052f6dd2d6a5a6b57b976d5daf0b8ab887..20da9273d11fd8ea141e56ca711b2e971719b216 100644 GIT binary patch delta 355 zcmV-p0i6EQ0*(WaG=D`&L_t(Ijg^zJPr^VL#eYag3Ccn=aR8GpE=?R5t|Nod)zPrK z87DU5KVTXMx)c5a6OD@e;4)EmB@KnjE;T5WD1Ad@rdtR-ny_CFMGWn zmC+ zv0bcS7b}_|jn^P`B`^C4zcGc^W9*N}WfPoJ_+Pf`sA)0^?8X29002ovPDHLkV1lh6 BqD%k) delta 295 zcmV+?0oeYI1JVMJG=B+6L_t(Ijg^zHP6I&@#(zsL0lWA*1h#@?k-S5Zyg&snfu#n4 zsKPb~5cdw9q+%`pl9O#JPYq&w{|7j}WRsn5zMY-fnS}u~6sn=nsr=cH01y$2HhI^* zp;cB8&W#9(7ZGl`cjF8`p5SfPh*ygZcNY)opj51$Ka<@pp?_D~am{+uI`cfIEX$D{ zn4_W4E$`|y6e=PF=4Ra%gxKseCo|W)fmD-&)Nhat9geFX4|(s|A9g)%6rhGKJH{ip zYg=c|fdagq7QhSWmmMIprt2@%T@aB}!mtYty9Do(DMXM~o6ZedC=hS-sljuHimm! zG`U6pKs*|JyZ9FbMNp$g4u*>mAw8VLDZ^P#!&5QudueC-?z#7z@7{avg(aw8*Xtfy zm)}?>@O{P;gN@}A^A6RK00OTIKyjVRxKpuq1OhsxcC$s? xY|#+J@di|J^t2oC8)JAg#@>KbGQv5A{{cXstPN|*LPh`p002ovPDHLkV1mltr=I`- delta 296 zcmV+@0oVSD1JeSKG=B<7L_t(Ijg^zJPQyS9hQF&KF&{e{18WDQW6MkM3JeT9NhSt{ zz5(i*cc`Tfw{~DVDQvA6JDK5{G`SiGmQIR)JHOBVeNdQ&q#BaW#TO+2AR-oQ;%;2w zoOy(BWiVu1M0nuQO=237>gSW{4plz#Dg35sw61I2upWvnCV#zstysN}SPQ>xTe_|z zutY=B4Qq88l8Oj{rP;SR3*zuyIk|De4CFYQq@O`m1{}9P{^Y%9f7nj23xeMCdE~r+ zyR-AmJy3wR(*bw|-Pr_{wOxN%uY!o=7D^Qyb_?ETSBN0z+VS0{jAyGk*ayNkl!hl0hOkjBy?#a@|0w6zp_ zJF&V>`~z}WhLTs37XwCajN%*oq4-EyRZNmwB%(6 zS(RT~B#2|i6OFavP+RS^4?H4%h!1yDv@JfoNjQ!cmliY(-EInJojMBQqS`*HHaR)ZE zvo65=2zmSE4;c|YTy{fw^QLwZbTz*(`rXIkU>j`W6~&@XWu)#WB=d?fY*n6 z@IeqNQ&Hg7kV`Wq^oQsv02OB=7Xq73*|>FM3bRMD3bYhv;=rvDxHU~+<26XAc83Gk*a3NkluGggWkT^tUr3J6MueUiKSv&HWn-ulSE?a z_U+Ds+bho_BneW=&TT@7zhXDzGsUa{ zDJ9$O*8T=Iwc~$$y$zrzg=1~@DVu$Is>N=w*{4)hMOl_7O^g&;RaJ%Od3c^jS(b2a zG0;=cP5PGSI7|g6NfMM&TwPeF?3I)f*LAxo=u2`+MhflWa1s(u!rrm_xS=SD8sGPg lUuWY+jCEb(x~^et8l1Vcc6VsxO7;bk2STT(yVJ+J19}iVZw1fWYx%oA0RXC0 z6ixDhdxEufr7?aO51cKpN`;TZdoZ}c&;1Fz?XP-zX34e5@p(_o({z5uQyriLf za#0kh>l%1G6W;=2?|7fr(I|r8d8LH~;_u07*qo IM6N<$g8V3sb^rhX diff --git a/src/main/resources/assets/hbm/textures/items/upgrade_crystallizer.png b/src/main/resources/assets/hbm/textures/items/upgrade_crystallizer.png index 2ed360b646c5c98b28df188a9d5d5036b3d2ddfe..352391668922866e35320d44ba911866cd82ca6e 100644 GIT binary patch delta 333 zcmV-T0kZz*0{8-uG=DEiL_t(Ijg6BrOT$1IhM$%UH#ii8fEgSL87xkcf+d?ne@4kK z5&Bm|3a*YBGGwqBB6QN>18)~X*N}p7C<*OdPJE}A=kB}jyL%Hblq5+zole{T^05g- zgu1Rx?Bt`)JRS}$Kq>;jG7Qf)p7KzeKOen+E}!tDh^shmo2Fr$=Q&#Ivu?ZH?r8RF-rli2ptYu|D)$?> z)Q$hOT8&^Jg-%6wGw4lOkJ#zt?7WALu%Kb^^cBLM~LklGAN?snaRRFeuN(BH5`1*$mAKH5S6=$F`12QO7s0Fw%0 zaKb_2duUr6+kW O0000?gp zE6>IOj>Gm-qp3U-n0vVq05ux|V3+E92culghV;sQ1|T2L7=I6pb2S_CI(gf5Aj`hs zIJBGZ*rhrbYk^Id_D2Q(@(X~9n+^TR^%m1IxV<}s#fq#~YcX=iyHcAjkCWZ&bUID+ zBX^AFy`=wxGzINHTs>zXX$t>TVuD`T51&z=By9=+4OOI9_GzeM7#w)516lS(I#r2& z`@o*lP(=pzd|S^4GA#q?R7K9uB=6N)KO5Gp>~(N-d=OTR`amOhOd%KB#Q2i@CT$8q zuxS~XmZ1ftaZS>xiZT;!V+z;DxL8rhC1g(F-~CFU=9CAk>i_@%07*qoM6N<$f|TZ@ AZ2$lO delta 318 zcmV-E0m1%_1L*>gG=CsTL_t(Ijg^zHPs2bI$3I7ECl13TY9RyJ{{lHsb5)4CY5s%C zsRj2{@sl9{ zpp^2#UR>;FFnZDEoClYVvB8y6yj;Hvr-H?Iz~b|vH|B9lI)B?zw7GU(-;&O@R?xuu z*Vl^GGjOM`X_``&C09uM9!ior>XcFlqm09m_uoFLvc}(oqRo#EV0sV?AD3ru2OXu9 z%r_GY^U}z&+nxKmN1O@(h=q2D#m+evAf+3?H(h_pI2`pX1fVC(V!>oIWgGqe6wpnq z&{OHK@O1IZrSUoqD&?hdVU>XA=Q_0DnoLrn_*U Q0RR9107*qoM6N<$f;&Z>X#fBK diff --git a/src/main/resources/assets/hbm/textures/items/upgrade_effect_2.png b/src/main/resources/assets/hbm/textures/items/upgrade_effect_2.png index e9a3832ac1dbff334fc5c41e415dc208c7a0ca7c..2575ffc16f7445243381f0e04ae9a9c5f0ba890e 100644 GIT binary patch delta 357 zcmV-r0h<2d0+0icG=E1)L_t(Ijg^xF_X(@xW|0 z3;ei0!F8XL-ylhT`S({(DTwRBKNXvxSMq{2?Bf*a0zh3A=#@O`st^SGK2m|K1|sc> zgzrAI7t~dOpUZ5^U{gWOv<00000NkvXXu0mjf DY#XL7 delta 310 zcmV-60m=T51K|RYG=CULL_t(Ijg^zHPQ*YE#(zs{Pb`L$s0#sP-vSA!b5)4C)4W0D zsS_A-f&^LKVM%IBE(lW9G$9qFjx;G^v%PC~4vsN9`|bSO`DS1wNgZ`b9d(D|M`HlM z7$d!Auilhb!Qwk$@%hjjyL-{*)_?i&mh}2#5HuM4>ubg8 z3AmH*X_``&C6}QlsiV#qgL29=oQVIHq{cUe3jBlyHy6|7;?_4~49tkYge@IRF3v07*qo IM6N<$f&saZ`Tzg` diff --git a/src/main/resources/assets/hbm/textures/items/upgrade_effect_3.png b/src/main/resources/assets/hbm/textures/items/upgrade_effect_3.png index 449a42e87abb1220265d1a176f216b70188777b1..e1d3b4d408b6abafa2418004a4773a0414138136 100644 GIT binary patch delta 322 zcmV-I0log&0__5jG=C&XL_t(Ijg^x>OT$nU#ZPR(K}tp;;G$z_hGdLuz{yDnh>QIc z*{q+UTLdYTu9<}As_4)R4Fv}sx+qQ}&T<^m7t{Br=vm&$FS+;Kmy-aBxE%9g5Bw|N zQUOLIe0^)w${lGY91;LTRR92z{_)y_Z7!+;c~Ck4&{aFCg?}m+Re{&p=kE-@$B#?g&j9o-ex=*%JM=mm-hoYW z{G0O^2Qa1ZPZ=BJLD{TrZ<3Y*0Hnf49+XIh-xN!)O(0WfpM9DvkP08uWU=O@yvT(; zh1CQ*yW7pKZ96YzOhNldHb_fB7JHEkFLJd48`s1vrtl1ZqlN1+KEI*YF?6=@9{~Ec UyRMj*M*si-07*qoM6N<$f;U!`5dZ)H delta 302 zcmV+}0nz^L0@(tPG=C6DL_t(Ijg^z3Zo@DThCffH1s+-8P&I8}q;D}=Ru)tcR=hU| zTT#K-z@*Z>gC~Wis)hn1O#xHb6wL#XlP11)-A{b}@9aC@e})m#Dt2iVyL0)AF#%w$ zm1vPyhZ($GG&$G$E(rF#wU+I}P6ZXLzBQ}Q=PuaqizcUNa(|wF?mNGS9=z*o!{!xO zp58~x327BOYc0wf(QG2VTSA%Dau13oKl=jT13h-GuilRyG{&&lPY0YRBWu^Mhqi#A z0ss=#9!OMwI8k6sc!4xse<7OnDrjgYY@mYA=*#x@<0a5Gv80{KK!ul^kCWLK`{{8N z%B=1Jq_WGb7AJiJq*d(ZZ@1!al=wi#|NKONUvluDYnq}Fg8%>k07*qoM6N<$f=lF& AIRF3v diff --git a/src/main/resources/assets/hbm/textures/items/upgrade_fortune_1.png b/src/main/resources/assets/hbm/textures/items/upgrade_fortune_1.png index 762eb24dfdb3f9339b2f69ed90779beca40c455d..748ef593ddc9a444d05473325f42976006f6babb 100644 GIT binary patch delta 347 zcmV-h0i^!u0)_*SG=DuwL_t(Ijg6B%NW(xFhM)dSLaBo;EnS>UAQIx(xa#5}IJ&qB zt|gng>L}Q;Al+R`7ajc_A|;TL!KH(!Ac(jXC8vn@^?zfQRKXA2Al z12AXxMs-r(T;5SB<=lZz@%GQZ4+@Z#!klWM#VE9L4YdZf&|(wVfm{=?5Va002ovPDHLkV1iVBpY#9# delta 317 zcmV-D0mA-<1Ly*fG=CpSL_t(Ijg?ceYQr!PeJUc9W>O$yCPTJ{<~!0qFa)yXE84B2 z$p>UCWawHn2C{0FmtxQuFD63=d%X^h63aff=>s9@-RX4Fy8~L#aYj1M=vMx&O#px~ zhND?tG;i?hBCRlfeCRlP-WY>7w-lWW7D-6IMHUC6%Tz{iTD->yk({hjGxDJBK z;9cKaY(Id3&q{0Lc@Er%`)D|Wjx#dGK=?&8oU!lb;7ZH?L6KHB2k?I&+s2iB>OH8G z!e(*^I9A3Bi0bhR`U4Pw0FV#V1Ibm_Uudczfx5yvDhL7LZx$jjxzfU&i&8%CrUJOC zpp?3Ljz;y|)@%i03yIHQ;7o$W@B@2K#fP6U7-Ji(bv^|0=r P00000NkvXXu0mjfpAeVW diff --git a/src/main/resources/assets/hbm/textures/items/upgrade_fortune_2.png b/src/main/resources/assets/hbm/textures/items/upgrade_fortune_2.png index ad713c35b3f049919a012bfab8965a71e771e725..4cb00479ae81e5c111f1665af1ac2b88a5907e56 100644 GIT binary patch delta 343 zcmV-d0jU1p0)hjOG=DisL_t(Ijg6B%NW)MRg}?qxLaBo;DP5dwp%Uttxa#5}IJ&qB zt|gng>L}Q;Al+R;79IT^A|VjT;F3X95JcPxavj=Wo0k_n)8)Il=e?Kn9%LlRQ0|+^ ze|b3z==b^lQK*)e(jx4Q1i*J=09H4bXFiPaHpwxb<^tAP551 z>f`$A{DxYk;2-FeZvXUauLOB1Ov#8kBvGf(P-|dB9oB&@C^XR;+yNo*1{@acAWb2A z_PLhF1+W1ew@|#9UbkVRPhq0Pa+8mi#|f}dZYnG1rl4Gs0x2n^!`+5Ww_z&-I<80@ pOD>I^*QnuY3eT_9Dml&?{tKA{s8eJVq!IuC002ovPDHLkV1jwzpI-m~ delta 308 zcmV-40n7e^1K$FWG=COJL_t(Ijg?ceYQr!PeJUbDGbzw9lObC}{v-JVL!e8)BHcQg zd_cxRhwd5!S#Op%gT{I>9Xicy9^5cJdokd2@4u@CLf?d~&PNjm8-4=ckAhWxRm7 z9lu~a0W%l?heRXLQg{7@t_m7xJ8YnWQc$6?QjyEo4*uMfdh@@A-X(A1Z#g_ diff --git a/src/main/resources/assets/hbm/textures/items/upgrade_fortune_3.png b/src/main/resources/assets/hbm/textures/items/upgrade_fortune_3.png index 2e020a71a344ede516d3661c9137acd2310dcb4e..7073d3010c301f3acc9dc2a1a21ff2c027674e0e 100644 GIT binary patch delta 330 zcmV-Q0k!_p0`&rrG=D5fL_t(Ijg6B%NW)MRg}?qxLeW8&hAd8|5QjJ>vo0=zql>HH zTDqyLj)ENv(%mIw(b3-_4uMLBE*V4xLBy>f*P#uz@8w0$bo0G;PwvZk0Y#Ga<=#gA z%d0A&+vV$9qefoIi=;ggfH+J6Sle8g**MMPFlF~?wE|FA9e>qEmB(Sq zjxW7dB1wBB@^&DSBE42pSntoDjh{Qd$o8_-AA+6n*%l^_A4lBAf7HO$`3;R)$u}@5 zAOG}ouL4CWOsP3=$p&tzq0yi@a9Ibopwz@@a0ev7D{xpgL7swo_Bkiw0@whKooHsw zvjWU1Ote(Bc|&(1PJqR#t-ZN01?`fQNJ}Aa_N)NU3bY0j*CZWZE}I2^qk-!w3}0x} c3Y-o62U7d1xUv2HVgLXD07*qoM6N<$f;&{6F8}}l delta 295 zcmV+?0oeZa0@4DIG=B+6L_t(Ijg?a|ZUQk797h&KsEkBObyB*V@{s(%QlvC_1tm2P zpg}@Pk={M+mdG^7l4}a86i2%hhv9s;mm?!twrA~K+cO4Qa5k{Bfgk0c+5`X)kwlBU zYF0?&)BcR<>vLyu;)w{0_@T0(vw`{e#e4v-%N?)FUGIEeY=3UWbat=b6;?mMXkcE9 zOE?>th@jG-7?P|M`gkZ~+9>rDhCfWKRG9002ovPDHLkV1gW_ir)YL diff --git a/src/main/resources/assets/hbm/textures/items/upgrade_gc_speed.png b/src/main/resources/assets/hbm/textures/items/upgrade_gc_speed.png index ee98c7201f5ead8ac4488592b1eeaab866a490b8..faaf919f3a0991346bb62940526c51bf528e4bc2 100644 GIT binary patch delta 366 zcmV-!0g?Wn0{#M!8Gi-<001BJ|6u?C00eVFNmK|32nc)#WQYI&0X0cPK~y-6os%(3 z!$25@-?Z66r)~xjL|igt5~9hNx(kkVxBnokKcG{G&c^--!AwH69fSnVL1=~|+ChRt zyN1u9y)@TLPVrgtaLIl7-h4Sg0nJA=*$3@NOua6m za4amwalDrA8$7*0cGWlFoz%fQIC~ptl@U0PzJc)QtGJdi9San=M3;x8PrWXdIdI&$ z5*|v^6pS(Cd1nsB7-0Cq{U{ux)dY0seH~-v+tL_SF*=|4eT;ROjs?1K3A4rj3IN*( z!W4FY5*5W1_yXT-Iu=aFDq7|KXDD##VQ+H+OJ0Y38fOc%niXEd517)Rgt@z&MF0Q* M07*qoM6N<$f+J&}c>n+a delta 271 zcmeyzG@ogLWIZzj1A~Sxe=v|@EDmyaVpw-h<|UBBlJ4m1$iT3%pZiZDE0C`n;1lBd zzkb`*pq_{EGkSV@92^|}KTrFAgF#JAZDu1-1;c>@2NolBSEK+%6FglULo|YWd!zXdC~&YuX31-P z{dZi~d+o2AzB7(EI?QqpW7{x6HcrXg`njxgN@xNA D#(8W# diff --git a/src/main/resources/assets/hbm/textures/items/upgrade_health.png b/src/main/resources/assets/hbm/textures/items/upgrade_health.png index c019e249a92e0e7d66e54cdd47f3696ef271010f..0febff32d37459ca029a6f7bd9d779649ad4c139 100644 GIT binary patch delta 350 zcmV-k0ipiX0*M2VG=D%zL_t(Ijg6DBO9EjSho4gyhawJX5IQ6-f~K1!xQ6o|XsBGI zzo4znErj;Q+e2Kkq1J+23JZdp0^y)EP$wP4C6KqlzT?vK^qC&sj(5*E9$d;T~-}$)GA{SUjw|~~a8+0i4Z>I}LyDGRY z{(YWo$-%B)0C4kDzQ)U|8Yh z9X26w#pCreYsr{@un2F^0SF=_q+Jy$+Y;4i=31D!)?D4v4Ww*~oNP;E1l1gN|7-W( zcNHPE|2>T{K38*Anu3Z^>=PfM`DsM@$`LYJI%v#j>A6!xPC;FgRS2e_3aZ)C4J_RV wjvD2$NZFQ$?B5Gq;9=%pqu*mKxx_>K0u__NkX%?xs{jB107*qoM6N<$f?b@c!T(C%f_oF#$kX ztF*?OFvG-F4V<6O1xCKCG4Bs%R>9-h2NzrSv-$oNZdX388h?0s^YZ{%n7Jql+O~zm zf%sapeugWe`Er3=I-#sFlKX(=LO-{Lu21x!YIYVFdyvIzW^FxprE5-xPT?{eUC vST`Fwsp>-h|LFvc)VQ{JlI`9j;a==f)_+7vu6LwTib^S>B>BB0 zKXA!k-ieabS~JTsPO7R3dTW}-lAjf}dxRW7*L9Fm#@`@{!^Y0X7J?Mc!CZj3xKsCUNInr*h_OV*68#r{SONgxIxoQ@uF4lC z#{n=~Awj}j=YjW~T2*kke&X@#WpcheA8~n7a6{B-AN5kI@_*&FZPE9Aw%*P-TL7D- z-oRKQ*Lf(upl-yzMG1Kpvl+PIjs$52)ynvmd*t32(OP5t_@23oG;**?XGQ*B2{^c{ z;I|}|^t)I%P%RC0W}yPo$0%4R1IxQ+hv4Bts=&P}1!NYqj&2(OG>-AEbq;0`SqMH( zIq^Izy>22NUOP A!2kdN diff --git a/src/main/resources/assets/hbm/textures/items/upgrade_overdrive_1.png b/src/main/resources/assets/hbm/textures/items/upgrade_overdrive_1.png index 7e56997dcef6b40d21cfda7bd2b67195bca12287..246316531257a2b35d8cecf57486f9e24f8c1ea4 100644 GIT binary patch delta 296 zcmV+@0oVSz0@4DIGk*aINkl z-Pm{oUIc+EIKFaynjC50LLw=TS1=Z0D!LR zV(h(#h@fpZ1ol{cJr@0J#h=A-i?`3gv1uBJNQ?s?_fIJDW%>=#sY`z1MBx_D*KXngrKtw>+BrVUkFmYd(rP@i@Ld0525g~v}&zO)b uB5EN;*CA`Z-yvNozfsqfE$qj$&FH^w{+#z|>W(4+00005L=* delta 272 zcmV+r0q_3O0=fc_Gk*Z_Nkl8O}(n)e;K;=#Ww>DW&pX{?roypsF72@}a(Ae>O8P^B~^&%_s~N z+&?e4f9Oj*&oh`AW(G6EvMhsfY;rxXxZZw0uIq}N^YAVrV1MSKst75iqN)%PH@An{ z^rWf*K=3mEfdC-HckTsMmjMtFrfF*Q?ijtFk8o&E8x7l2A$r@@SJ4aVDMa9B!}=+_ zD?jJ_>Q&sP0A?;`1|n+2UyldQM4-{9y<>|~L}ZWM9ES%`HPP9JP#=ds#8Km2{u{nz WbdpWl3dxQ`sW`Qv@$z3iO8-3D24_dGX#qpce*eD-%6(SHFO Xz_3wQ&Q@js015yANkvXXu0mjfW6ym5 delta 267 zcmV+m0rdX70=5E>G=J?$L_t(Ijg3;ft-~-3JOyf8D(bic2gq6;CmRH5U1f}L2X;*G zCeSNl8~V_B?*IYPi8}E}0v(vSFmw4Yf9eSU5D|}d`B49`?ad51=OK9GSD`Ru@O)hG zyvrWEoy`nphIyU`;n?{4x#D`OZoBicEKpSt5pvE&L=c#{h<^x($o1_(Rrmc#L;`@| zdHw?dK#1Se3#uvuNGV~OrY7EPqxbj-hXS?GFg+EbH(h-eeL&rX2z(~2@4~nARdugb zT)Tjrb1^fdl$zkz`;Bu-NTW{s$7-bz(Pq0@4iBIzqB9SnUJieVqr$uVFP@rpQ8rEF RjQ{`u07*qoLT3b z6;}@+2v)W}3$w<=S>p$R$z$hl9}6@f${MH06?DS zwS%9!a}M77j#;3MGP%knNwT1bP*usxoIHRcV#YxE&w`|~cYL0u;BG0L*mLO&-+lB9it;6iiv&+Z`(hzQ~?G`f$n z%$y{+@J3ZBA_Va7S0^Nkh*`+cZODR~@xXYEwr;qvtMAsLKLMLzv;rhh@XG)I002ov JPDHLkV1nW%djJ3c delta 251 zcmV2ok9kl4jZTN?fa#awO9Ey1u(PMT0ulz^7VGZ zo(Qzn**Xz;x(=Vx*A?&pnkEK*NbL&vDQ1li`3GdadtEdy?+5?@002ovPDHLkV1gz~ Bb@~7R diff --git a/src/main/resources/assets/hbm/textures/items/upgrade_power_1.png b/src/main/resources/assets/hbm/textures/items/upgrade_power_1.png index e148acce3e5e7c1a85b60538c37fbd9d866c4b05..924ab8f1928ef985adef6f69f85822d8ae5a7c3d 100644 GIT binary patch delta 333 zcmV-T0kZz+0{8-uG=DEiL_t(Ijh&M{OT$nUhM%?pLC7pfC7_V}h?p^3$>iwbP@G(x zy4F>k95Q4P$uE#>aSIk5gsv$C2?UB$hl0>Sj)NxEn-7Zbba-ygd(O$Z7Zgbr%JTuT zE$^xT-)Hq%p^dy#1eaHD0uaSH00X!G=fmGTigRX((*e*_M}IX@Gy0$KbFfelh;k<>2!+e zY~r0g7l6n6C-h#+KWI|X{`&p819e+alm<@gd8rfjBHV7 zw}wesUG2g!Jw{|?i<}%vbqiaLP`d^7lC-I^g(BH7Jq**UBsB4gWMoUcU-KFpcy$Z& f1$wW>xq*KHIti96d7-cq00000NkvXXu0mjf%(a)B delta 317 zcmV-D0mAL1Xt%E;E`*kY-PT2`binMj6=W(aQMS|5XSmk{h}=Z z01biJ1+d^Cj!7PHP4)gVIlyP P00000NkvXXu0mjfY(kP9 diff --git a/src/main/resources/assets/hbm/textures/items/upgrade_power_2.png b/src/main/resources/assets/hbm/textures/items/upgrade_power_2.png index 95d1caa9b08887a9e89df3b6c0371a956d2cf5e6..158b78449c838c8a226f6f330abd338d6288f739 100644 GIT binary patch delta 316 zcmV-C0mJ^}0_OsdG=CmRL_t(Ijh$1mN&`U@oJ#_!QU^piP}sEFpIfGrt1NBv0|DVW zF|8kv;yTF}$aQD8C|U?tdO-*W2a?Ld%0k8>uA1H3BRJJ#-oAP7?d$>;SS|Q)0Pf0n zYy$H+-aj4I%LgWy&Q=6~EUy6oC*%FCgMaxfud&oB0DzvYXnz;le3sX!mN&l%RtqwT zD3s=Owj$RTtd9 O0000zh>DsBM@mh>6`-=j1;8AG zQy}D)ij>jbAkEU*61D;@k{hbnh0CQdHvSn$;Z^(I&dkp4n}q>_Fg8ILn?v=Zp#Y$@ zmSj=4x+gU2Br9279FKwJChnKPsou`+oA=(%E?|K5oDWCfzI@9h zFq`51(_+1Rq=WHfMF1$u1^{q&did+$E?<-lmP$qd&@mOwM1PYn$_DjvvE5)jC$oe? zDvl>Ba(zWUgF-52-0fd()>%TH57>D;x!BBh{H^$Qjr*rRVgR={cj&bPci@9=|6@Ik z0GA5}s$2&5g9249F&wG?3FyjIE`wdPv9Kq>=^+*D+T+qp} zND+(FO7QU(m?kAG4;;VI!`m*ryrS23D0}!X{(7oP;!&#t00000NkvXXu0mjfrx}cs delta 288 zcmV+*0pI@E0?PuBG=Bm~L_t(Ijg?a|Zo@DPJQZF%)PM?P>>31hfXp5Ig>L#n)h8AC zLDzi23r87<1EXt(44vu>9@)WFAlX!!-o!gfl&GVC35<1Ytm9ktyQu&GL?p?guEG<1 z+#Jr>Jl)S0d!2}IY~ECqG}bYnUYR@avZ{Gm)k*%idA}T%MSp#LZ?XLdswQ||lrYvY z5kdJNFG{g*2}9q?Z_pghHy7}4kWG`Hb(P$xwZ>w-i!{+j0O0OAzgmDhK&{d|L?%s_ zTE&|@e|R2w=t2gJ6BfFVx`EasANm%4C}%Ew?O)`({$jD-rCk{M_Of7#yeKjBt(c2o mtcynVFMa01e;Ixv0Q>-T;HC6RutbdKa53LT|jseJ(p z$?DQBb8iDjm!1U=v~zjc3W>lAG`Qg?k}_czt;-BZoXp zHd?^4*!-q=h>S1y@+JVig#$pdq963n>Rl%B18MXY4l8HI=6~AG0OZB%3zkJ~;n1w; zJe}VH@blc@qp*Q>hg$wI@Q2A2imvi)YQlU;)~z=f*yEj3rqk(G)*UAA#2pyeV_f%Z z|3BEr%9#NK5wha-MNCc78p9~MikOAb1E-)*xvwvT=_YnJ)(=?^3Dq!J= zpCiY2;GW)o>N-wxqSjzO)$gsLs0U_{mE#jMGl<3E&2BKx7{mA1Q^4sm0vlGU-G}VJ z3+N{~@FsjG+6&uq=vLqEFmF`&c(hW5F*EQ~h>6xtiADuu%wU25stQFdDgX8lrJ_KxLHTNFdwn0QV3`acmC(DUDe Sm0$n>002ovP6b4+LSTYRZFx}u delta 242 zcmVt z$8l>qc)ntcx33qAh%xgy0W;qUGMdf_Aq0dp(QBS(A|moU6Kjek)wu-s3jbi}B?vzY zy(!!V<(BhST62X^egCJ({{uwC%*<5PK7bius_MR%WwCW#t;FpLZvfc$OQn8K(}Zo? s&e0RDWI2h4n(uncjh^xidI~-M3vHy&BY&ISEWtA8C;qsp^Hu=xC5b32Nn zI!#luL@=663Gd$kcs^TlbbATKjIW22b-j4nA@Ik9#a>-i6$2pzQp(P0aU8FTV#ez` zdJRY^$@AQN2PQS+U%&iVuptFi^WoLjb?p-S8XFlWIL{t?HPcdPbhtYN;G${t{|$6f zu!Rt-7k0Y8aYc%Qma#18BL3vd51i8aPv$Q5AmO>Kc1Y2OQy+6~a9kQOco;N>l76LPcGNw@GulOVc0P0Fh zu!tvah5>Cf%v8+K<8`IE+jg;D1+Q027Q5;A^YcAC>h8PI@PD%Ie76EO^I|upZCmya zUmdW4_fJ?Ki2c5j#1zWZm1ce;wk^-%{M!r~d3X|moxyc@nY{Uap6A1vrYXnO$-5V2 zbc5VeGLaw*x=W#0|6>dLL0J1C_vbuI$ojesh z0=o~c&elTQ5++1u3T3{Z5MQH&M=Jd1B?9~an4pj20%|b*00000NkvXXu0mjf?S+ba diff --git a/src/main/resources/assets/hbm/textures/items/upgrade_smelter.png b/src/main/resources/assets/hbm/textures/items/upgrade_smelter.png index 1889537386a5c1ebbc121d2c79034355325f0358..d15f22f327ae9a4eb86f53985d79b064cf064ba7 100644 GIT binary patch delta 326 zcmV-M0lEI?0`UTnG=C^bL_t(Ijg6BrPQx%5g5vz~>WQ-+=2IjPoF^H5g;zcM#HW z{IxiEy%t>UpS#)h*?_M<%(DTbSzOKr#6k#CO2M?%$qJ+G2lfEYACr+CS}4d`i-nXD zT5Hcp$2*@mg+JCB#+Ydf?ng4GwcEmAF7gCLo_K~3_ry7;G)=v~F2ubSthHc_dBGw6 Y0|5(`u+=Y|kpKVy07*qoM6N<$f}=2+z5oCK delta 316 zcmV-C0mJ_B0_OsdG=CmRL_t(Ijh&OdPJ}=dg}*V|qKulYurS8L&ep_IVrQan;XaTB zFJNqJ7HxO{Ey*Ti3L6SSfgu8|#aOT)KjVs?>du*&d(XXR1_r26EriJ4L1+Y-+ODl z0C88xQc70K{uQH*rprHJV}d5hCd^E)Ygm1#q;VlqaXo|oxR7LVtzi2k5b*7SloEj5 zd(exIbu3xaEj5fTB$>@>S+qXCvJb%XMJ>Co{ENKig-zv0F8t*u0(=2CjhyhceTSX^ O0000