From 39a77a67d89e07a45d8d4aaa20e854a26d69ceac Mon Sep 17 00:00:00 2001 From: Bob Date: Fri, 22 Jan 2021 22:54:16 +0100 Subject: [PATCH] more armor mod stuff --- .../gui/machine/gui_armor_modifier.png | Bin 2294 -> 2919 bytes .../hbm/textures/items/insert_esapi.png | Bin 0 -> 221 bytes .../hbm/textures/items/insert_kevlar.png | Bin 0 -> 334 bytes .../assets/hbm/textures/items/insert_sapi.png | Bin 0 -> 229 bytes .../hbm/textures/items/insert_xsapi.png | Bin 0 -> 257 bytes .../java/com/hbm/handler/ArmorModHandler.java | 24 +++++- .../container/ContainerArmorTable.java | 75 +++++++---------- .../com/hbm/inventory/gui/GUIArmorTable.java | 79 +++++++++++++----- .../com/hbm/items/armor/ItemArmorMod.java | 10 ++- .../com/hbm/items/special/ItemCladding.java | 38 +-------- 10 files changed, 123 insertions(+), 103 deletions(-) create mode 100644 src/main/java/assets/hbm/textures/items/insert_esapi.png create mode 100644 src/main/java/assets/hbm/textures/items/insert_kevlar.png create mode 100644 src/main/java/assets/hbm/textures/items/insert_sapi.png create mode 100644 src/main/java/assets/hbm/textures/items/insert_xsapi.png diff --git a/src/main/java/assets/hbm/textures/gui/machine/gui_armor_modifier.png b/src/main/java/assets/hbm/textures/gui/machine/gui_armor_modifier.png index 0ff74fa7e00bc9be70b2bf341592f36ab92d1395..c600c39567eb27b845fa574a3f70c832203a359d 100644 GIT binary patch literal 2919 zcmbtWc|6ox8$Z7>Wym&J(luk4t~H6WWGW^@=!!{tWfwx2Ml@5#Hr~3XNJ5M3ltx(! z*)Bz)QI@I1l!;OH<|5QE);ssT@BO^*`{%vy`R93_^PF?O&vHKJd@mCnY@{WBkOTlo z+u2$<0RV|q2p~3!ghzOBfJne2EbW{Tq7jYozXZT0RXeK#&gZkI1}wt42NhVe;weAn zHj9UK`^>^ly{$NOLsNW6s<+N?;I3ido^%r%wT8NvkX7=|&+?CKBqiT&ZuNzHE7k`W zdRno?8pUC89zI)SZ#3TD&`vnHMofBljBj`=Dwb*0g~=}uS+bZT9=p-r5m;;Tv@U@< zA#ym+T;IDU>$ zEC*8`o(!K@85pe3gN-~>f}M@s3j@}t7$Bz!1JOU9rJTjZnZf|^3c#Q7(1K7co<7;g=+0+YV?W45Vj~X=axM`9V-Oi+5 z8so+W?e(+SV2&%D%7*L53bEK-Wf?5i)QD!~jgNMC^ATk}yX|oz9y6lHyP=8yhNR18 zbp^beKi4q8Z(>}9-Girxtaq+LmbzGA<^N8%PWjH2r>lPNE*vj}(<5&-g?y4m!w}p0 z5zT$iCKvI0JT|FKQ^c>>5+C?>L-xH}V1~FRlDF@UYnHbWfS}8pL#e7?SA!n8m6aYn zF{beT{bZw=Kr7*$K%54bppS;1%Gnr#@n&cTzp1q_yjx@8to`-^0h}$gOqJ>UcNYBg(Z;(sv%MeFVy9@XND_~>YM(kW53=tn_PBEAwK|4U#?SHZk34- zxH;k?OPW&JWTu-%Q3pQ8f|^r?jZbTsF+u&yv%`#A0wJYx5MWsMO&-Ds1Lf?$Q1?atO#QKj6a#-*PTlN_<$PhL(cq+ zQWA${ismdf)P$s2gHFRhHjZAI!H2FM?6UZ9nw;>xd@9pQmj3z}Il@c4dDqzKv1CQ_94{{cd=lC0>Cxu$@eJogS}OYl-cnGYjl`Vf#Xzqz|zhIMh*GIYQe&rh* zZA>5^{ekbt6cngOWvenOI|)jV!M7}b`y<5b&&GS{7?VKZYGrXo2?QbQb?;>s23((I z3*SW6#Mwu=`JXXX`@D<1PT8lL?sjNDs}Oy7Q#=BE+cmSuT`?7`f={v#U{VoAPKfyW zJ}9W*GYbFfb`W#;avKdZ)y?xt-8#PlLu*s6$t>-Z@ zEi3O?Di%{1fO{`bHj5jw;>k5u2L^{Y zwrW4?9Eg}+n;8~)c%wC69)>h%!ok51oMQv-XlXZD<^w6|eCBvvO$Y(_RAw+>yb}J> zlfxQ$0jfBzW=Wg?)^j&tN{k9`i3K$3-aCE6+!Jht6J0 z3}euw;PD@-;sT6S+_fCblrXR4&T9B@M(>QVyZi{|ACKNFNtoEy(0^fXPUZ_rVR=;KQ_2;pLs3Z3v#ueZ@m43K*^@s2k*~QHijeHVZ&TYaqLH%Ld zTknfUY(zFkpEQ6)y(-kko|!Wm zZdQ*z8!@Qt|7GBmNmlZ$DDIo9gVZ|jw&*?ZzlU2fNCPFkhfK1%Mz)AR4rJ;g@AH3A zLe}dv;;q&C?Fw?J*7<)jo{_n&FLH_zR(oI860GxuVKTonn!kbj#}OBVMC2uE8kv!Z zpD)15P5sD|QH&pJG5ed9yYt5pV?FLjge_7re&v&hy!;s+%@O9Lm_c<4VtOhnuMtJ6 z2sgcF{=e7!rIr;-+KZ|nNev1H^{+eA%>}2b zqN4%;P<3)V;sF4pP$7U=sStjVRly1YC)+uBArvhEaqFa`~#XR z-Qvt2pKUr3g@ImN2mQF*i)9_t%gm~yTGl3+nip9MU1JVi>61I~Wg^1jr{Yqzg1Pn5 zyvc%2X@%9a#p&)BK)U2F^UUZN&E?43CtqG1zDs0hFTXn`yQPWEUszst7Rk4SuK$|& z*1&s8F3vp!eVyReM!rnh5D*yXi8p-N+FIF2+FCl_x>PAk8?N;B)Q8#xk`hs1%AwV1 zlwr(va3DVvVemZyM(Gk6MYRcBfelHa-=QIy7#PJ<6fk4vzeD{77}}d2I*&{_p|DYD zd^7kW5xJ$Ek$>}JWCg2H@I8kenEKP=w@^vofUf&>WX zA5#O^I-pJk6b2l?w*$SpWU>`=W@cu5e+~CsTwENl)M8QThB1`G;X<^x;%I&pKT-x2 z0QKWdYZ>no6B5euT1qlAT1p;c?IWcboCN& z?lL>b)@os(^B<$>CX2Fyf&ziO#8SnV zJXbUxNXO=M8N&3+8$-1GGVg!$m9G{XmOFw*$+Xnug}ZtV?#Wt)TZ&NvvppW-e4{Dp zYjlq9m4aTKRVf;6*zWZWThBXzM%__k$@CS!dN^Y?4qd2n&NaoPsFVKyyG^$m`{w30 zP+VNRvho#;%RRXNsrG~`5;u{JzB(L^v@x^PY$Kt5&n^K3pK--T$2gr$&ZcQY<`18{ z^L<9%NvmC}ZYeVF5|6ACX4xJr8odm>Wf-4?!@dIncGtzjXBr|w*+5xx&7 zww4y<5TrgM+IDao{H5F4!kkZ+_NFZ}w^!Mfnwmn?YT}0q`S|)^I3uV6wS-8aA;C%$ zS>N9APZ~d0((=UKUH9k;2D`pbk+1g~-NhyRhrzt}(FXs(9$jIB&km#ZFMn{^_Z4?h zap<3jL3E;OvZWVrRvqQvMv=QFbK5Bmihfz1(D=eu5a_IAM{2_XLPa4@;t`)GGMRr6 z3ykkX^2UpTgQ1~og#Xr=QPLVcX-)IKTBW+{cdE74Q1Yf(9bB3kV|Q@Vm|}gFZxE%s z_TexQXaU}A7O%tD^Y%q^RfMA6e^FGc7dNvkplVEaCY!(N{!k=+xG`VoC>P8u(Dw=g=$@T!Q_V|@GeXw4xw$!d zAi-E9_`t3F_W7S=rVb#mya|J`(;=IkwUTEfd_G^IPE{$}C%Z@Xj_EyZ)L#J=v|KZ8 zUt$SS$(Ha)%|Z4=_h5c|lpc|pgk&F%&A58TWvcdA4R7_Y1)6e>&2diaoSK!G8+?A8 zHH#%OX&QCJ`9xduW_GW!kJx2)Ht}V}e8F5;mF#|9l#JzFp9RuYlBqzOKBV8m1o@C21^En#e{lJ?=dudFXZiF-c}1RSLC5I#g#}St8tLv@#%Oys y#=#Oscm_SYF}W(%jI+wuWlBl$Ir;Nuxv)n2*o{=k{o#fm1DzaPj?~zZF8>=@edk*M diff --git a/src/main/java/assets/hbm/textures/items/insert_esapi.png b/src/main/java/assets/hbm/textures/items/insert_esapi.png new file mode 100644 index 0000000000000000000000000000000000000000..f44e4e760b2b5f572047395af2866c7981283f3c GIT binary patch literal 221 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#Vf_Zt2oLLv?=yKrhX`T9K zPHN@yQYkMkif^`1nl-tY*C90X%mR@Qs%&?w4tc#7o6)J%)X~tvvoq_-Oudqn^7vmL z-%a-oR6j96%D!P!>Z2@c=7j5eG#_ODuWf#&{oT`8dcm55A*-qwBj*0!#hCm$|I60Y S*y}*|F?hQAxvX(I5S`4N1hm`15(N&0)TT4+qS_u*K}9_UQdmbQV{_ZbH4(59prPh3J>zL zkJEv9o)Ke&*1A}vlmZc*)>N9F27Oi)~vWBADbP*E)Ue17@o|TEgs<2xQea6 zzji@u)a$bg#CwwsJU@#i-)UT`z9vQgqDVz^>I1HbJh4UY6IwbL4(yZ{5S);+N=j*i z>B-_6>v#r-P-ibr75(h;DxK%S!t>*vt9{s7x$eLlofx-DmE-TC*_JnaP4w7ybJDVn ZOiXjVKH3F-asj%N!PC{xWt~$(69BHLQDguB literal 0 HcmV?d00001 diff --git a/src/main/java/assets/hbm/textures/items/insert_xsapi.png b/src/main/java/assets/hbm/textures/items/insert_xsapi.png new file mode 100644 index 0000000000000000000000000000000000000000..c51c60c0fd247bb8cdb21913fc1ab2b4297f468f GIT binary patch literal 257 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#VfH~AcPHYrydZ;g0{Z4}E z{3FVdQ&MBb@ E0I^JBO8@`> literal 0 HcmV?d00001 diff --git a/src/main/java/com/hbm/handler/ArmorModHandler.java b/src/main/java/com/hbm/handler/ArmorModHandler.java index 4b9e23cb1..10e6519b5 100644 --- a/src/main/java/com/hbm/handler/ArmorModHandler.java +++ b/src/main/java/com/hbm/handler/ArmorModHandler.java @@ -1,5 +1,10 @@ package com.hbm.handler; +import com.hbm.items.armor.ItemArmorMod; + +import net.minecraft.item.ItemArmor; +import net.minecraft.item.ItemStack; + public class ArmorModHandler { public static final int helmet_only = 0; @@ -10,5 +15,22 @@ public class ArmorModHandler { public static final int cladding = 5; public static final int kevlar = 6; public static final int plating = 7; - + + public static boolean isApplicable(ItemStack armor, ItemStack mod) { + + if(armor == null || mod == null) + return false; + + if(!(armor.getItem() instanceof ItemArmor)) + return false; + + if(!(mod.getItem() instanceof ItemArmorMod)) + return false; + + int type = ((ItemArmor)armor.getItem()).armorType; + + ItemArmorMod aMod = (ItemArmorMod)mod.getItem(); + + return (type == 0 && aMod.helmet) || (type == 1 && aMod.chestplate) || (type == 2 && aMod.leggings) || (type == 3 && aMod.boots); + } } diff --git a/src/main/java/com/hbm/inventory/container/ContainerArmorTable.java b/src/main/java/com/hbm/inventory/container/ContainerArmorTable.java index 8847d5c45..482307157 100644 --- a/src/main/java/com/hbm/inventory/container/ContainerArmorTable.java +++ b/src/main/java/com/hbm/inventory/container/ContainerArmorTable.java @@ -20,7 +20,24 @@ public class ContainerArmorTable extends Container { public ContainerArmorTable(InventoryPlayer inventory) { - resetSlots(); + this.addSlotToContainer(new UpgradeSlot(upgrades, ArmorModHandler.helmet_only, 26, 27)); // helmet only + this.addSlotToContainer(new UpgradeSlot(upgrades, ArmorModHandler.plate_only, 62, 27)); // chestplate only + this.addSlotToContainer(new UpgradeSlot(upgrades, ArmorModHandler.legs_only, 98, 27)); // leggins only + this.addSlotToContainer(new UpgradeSlot(upgrades, ArmorModHandler.boots_only, 134, 45)); // boots only + this.addSlotToContainer(new UpgradeSlot(upgrades, ArmorModHandler.servos, 134, 81)); //servos/frame + this.addSlotToContainer(new UpgradeSlot(upgrades, ArmorModHandler.cladding, 98, 99)); //radiation cladding + this.addSlotToContainer(new UpgradeSlot(upgrades, ArmorModHandler.kevlar, 62, 99)); //kevlar/sapi/(ERA? :) ) + this.addSlotToContainer(new UpgradeSlot(upgrades, ArmorModHandler.plating, 26, 99)); //explosive/heavy plating + + this.addSlotToContainer(new Slot(armor, 0, 44, 63) { + + public boolean isItemValid(ItemStack stack) { + return stack.getItem() instanceof ItemArmor; + } + + public void onSlotChanged() { + } + }); for(int i = 0; i < 3; i++) { @@ -34,6 +51,8 @@ public class ContainerArmorTable extends Container { { this.addSlotToContainer(new Slot(inventory, i, 8 + i * 18, 142 + 56)); } + + this.onCraftMatrixChanged(this.upgrades); } @Override @@ -41,62 +60,28 @@ public class ContainerArmorTable extends Container { return true; } - public void resetSlots() { - - //this.inventorySlots.clear(); - //this.inventoryItemStacks.clear(); + public void onContainerClosed(EntityPlayer player) { + super.onContainerClosed(player); - this.addSlotToContainer(new Slot(armor, 0, 44, 36) { + if(!player.worldObj.isRemote) { + for(int i = 0; i < this.upgrades.getSizeInventory(); ++i) { + ItemStack itemstack = this.upgrades.getStackInSlotOnClosing(i); - public boolean isItemValid(ItemStack stack) { - return stack.getItem() instanceof ItemArmor; + if(itemstack != null) { + player.dropPlayerItemWithRandomChoice(itemstack, false); + } } - - public void onSlotChanged() { - resetSlots(); - } - }); - - ItemStack armor = this.armor.getStackInSlot(0); - - if(armor != null && armor.getItem() instanceof ItemArmor) { - - ItemArmor item = (ItemArmor) armor.getItem(); - - if(item.armorType == 0) { - this.addSlotToContainer(new UpgradeSlot(upgrades, ArmorModHandler.helmet_only, 26, 27)); // helmet only - } - - if(item.armorType == 1) { - this.addSlotToContainer(new UpgradeSlot(upgrades, ArmorModHandler.plate_only, 62, 27)); // chestplate only - } - if(item.armorType == 2) { - this.addSlotToContainer(new UpgradeSlot(upgrades, ArmorModHandler.legs_only, 98, 27)); // leggins only - } - if(item.armorType == 3) { - this.addSlotToContainer(new UpgradeSlot(upgrades, ArmorModHandler.boots_only, 134, 45)); // boots only - } - - if(item.armorType == 2 || item.armorType == 3) { - this.addSlotToContainer(new UpgradeSlot(upgrades, ArmorModHandler.servos, 134, 81)); //servos/frame - } - - this.addSlotToContainer(new UpgradeSlot(upgrades, ArmorModHandler.cladding, 98, 99)); //radiation cladding - this.addSlotToContainer(new UpgradeSlot(upgrades, ArmorModHandler.kevlar, 62, 99)); //kevlar/sapi/(ERA? :) ) - this.addSlotToContainer(new UpgradeSlot(upgrades, ArmorModHandler.plating, 26, 99)); //explosive/heavy plating } - - this.onCraftMatrixChanged(this.upgrades); } - public static class UpgradeSlot extends Slot { + public class UpgradeSlot extends Slot { public UpgradeSlot(IInventory inventory, int index, int x, int y) { super(inventory, index, x, y); } public boolean isItemValid(ItemStack stack) { - return stack.getItem() instanceof ItemArmorMod && ((ItemArmorMod)stack.getItem()).type == this.slotNumber; + return armor.getStackInSlot(0) != null && stack.getItem() instanceof ItemArmorMod && ((ItemArmorMod)stack.getItem()).type == this.slotNumber; } } } diff --git a/src/main/java/com/hbm/inventory/gui/GUIArmorTable.java b/src/main/java/com/hbm/inventory/gui/GUIArmorTable.java index 95326495e..02217bf14 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIArmorTable.java +++ b/src/main/java/com/hbm/inventory/gui/GUIArmorTable.java @@ -2,39 +2,74 @@ package com.hbm.inventory.gui; import org.lwjgl.opengl.GL11; +import com.hbm.handler.ArmorModHandler; import com.hbm.inventory.container.ContainerArmorTable; import com.hbm.lib.RefStrings; -import net.minecraft.client.Minecraft; import net.minecraft.client.gui.inventory.GuiContainer; import net.minecraft.entity.player.InventoryPlayer; +import net.minecraft.inventory.Slot; +import net.minecraft.item.ItemArmor; +import net.minecraft.item.ItemStack; import net.minecraft.util.ResourceLocation; public class GUIArmorTable extends GuiContainer { - - public static ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/machine/gui_armor_modifier.png"); - public GUIArmorTable(InventoryPlayer player) { - super(new ContainerArmorTable(player)); - + public static ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/machine/gui_armor_modifier.png"); + public int left; + public int top; + + public GUIArmorTable(InventoryPlayer player) { + super(new ContainerArmorTable(player)); + this.xSize = 176; this.ySize = 222; - } - - protected void drawGuiContainerForegroundLayer(int mX, int mY) { - - Minecraft.getMinecraft().standardGalacticFontRenderer.drawString("Extended 4-Slot Crafting", 28, 6, 4210752); - Minecraft.getMinecraft().standardGalacticFontRenderer.drawString("Standard Inventory", 8, this.ySize - 96 + 2, 4210752); - } - protected void drawGuiContainerBackgroundLayer(float inter, int mX, int mY) { - - GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); - this.mc.getTextureManager().bindTexture(texture); - int left = (this.width - this.xSize) / 2; - int top = (this.height - this.ySize) / 2; - - this.drawTexturedModalRect(left, top, 0, 0, this.xSize, this.ySize); - } + guiLeft = (this.width - this.xSize) / 2; + guiTop = (this.height - this.ySize) / 2; + } + protected void drawGuiContainerForegroundLayer(int mX, int mY) { + + this.fontRendererObj.drawString("Armor Modification Table", 28, 6, 4210752); + this.fontRendererObj.drawString("Inventory", 8, this.ySize - 96 + 2, 4210752); + } + + protected void drawGuiContainerBackgroundLayer(float inter, int mX, int mY) { + + GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); + this.mc.getTextureManager().bindTexture(texture); + + this.drawTexturedModalRect(guiLeft, guiTop, 0, 0, this.xSize, this.ySize); + + ItemStack armor = this.inventorySlots.getSlot(8).getStack(); + + if(armor != null) { + + if(armor.getItem() instanceof ItemArmor) + this.drawTexturedModalRect(guiLeft + 41, guiTop + 60, 176, 74, 22, 22); + else + this.drawTexturedModalRect(guiLeft + 41, guiTop + 60, 176, 52, 22, 22); + } + + for(int i = 0; i < 8; i++) { + Slot slot = this.inventorySlots.getSlot(i); + drawIndicator(i, slot.xDisplayPosition - 1, slot.yDisplayPosition - 1); + } + } + + private void drawIndicator(int index, int x, int y) { + + ItemStack mod = this.inventorySlots.getSlot(index).getStack(); + ItemStack armor = this.inventorySlots.getSlot(8).getStack(); + + if(mod == null) + return; + + if(ArmorModHandler.isApplicable(armor, mod)) { + this.drawTexturedModalRect(guiLeft + x, guiTop + y, 176, 34, 18, 18); + } else { + this.drawTexturedModalRect(guiLeft + x, guiTop + y, 176, 16, 18, 18); + } + } } diff --git a/src/main/java/com/hbm/items/armor/ItemArmorMod.java b/src/main/java/com/hbm/items/armor/ItemArmorMod.java index 9d8f83be8..347ad9a19 100644 --- a/src/main/java/com/hbm/items/armor/ItemArmorMod.java +++ b/src/main/java/com/hbm/items/armor/ItemArmorMod.java @@ -5,8 +5,16 @@ import net.minecraft.item.Item; public class ItemArmorMod extends Item { public final int type; + public final boolean helmet; + public final boolean chestplate; + public final boolean leggings; + public final boolean boots; - public ItemArmorMod(int type) { + public ItemArmorMod(int type, boolean helmet, boolean chestplate, boolean leggings, boolean boots) { this.type = type; + this.helmet = helmet; + this.chestplate = chestplate; + this.leggings = leggings; + this.boots = boots; } } diff --git a/src/main/java/com/hbm/items/special/ItemCladding.java b/src/main/java/com/hbm/items/special/ItemCladding.java index 69b0ae62f..0d107699b 100644 --- a/src/main/java/com/hbm/items/special/ItemCladding.java +++ b/src/main/java/com/hbm/items/special/ItemCladding.java @@ -2,51 +2,21 @@ package com.hbm.items.special; import java.util.List; -import com.hbm.handler.HazmatRegistry; +import com.hbm.handler.ArmorModHandler; +import com.hbm.items.armor.ItemArmorMod; import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.Item; import net.minecraft.item.ItemStack; -import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.EnumChatFormatting; -import net.minecraft.world.World; -public class ItemCladding extends Item { +public class ItemCladding extends ItemArmorMod { float rad; public ItemCladding(float rad) { + super(ArmorModHandler.cladding, true, true, true, true); this.rad = rad; } - - @Override - public ItemStack onItemRightClick(ItemStack stack, World world, EntityPlayer player) { - - if(!world.isRemote) { - - boolean used = false; - - for(ItemStack armor : player.inventory.armorInventory) { - - if(armor != null && HazmatRegistry.getCladding(armor) < rad) { - - if(!armor.hasTagCompound()) - armor.stackTagCompound = new NBTTagCompound(); - - armor.stackTagCompound.setFloat("hfr_cladding", rad); - - used = true; - } - } - - if(used) { - world.playSoundAtEntity(player, "hbm:item.repair", 1.0F, 1.0F); - stack.stackSize--; - } - } - - return stack; - } @Override public void addInformation(ItemStack itemstack, EntityPlayer player, List list, boolean bool) {