From 8973fb0ed1d10698d8b618dc255b8990f1a50483 Mon Sep 17 00:00:00 2001 From: HbmMods Date: Mon, 30 Mar 2020 22:23:35 +0200 Subject: [PATCH] DFC stabilizer, finishing touch on all outer blocks --- assets/hbm/textures/gui/dfc/gui_core.png | Bin 1545 -> 1871 bytes .../hbm/textures/gui/dfc/gui_stabilizer.png | Bin 0 -> 1591 bytes .../hbm/textures/models/core_stabilizer.png | Bin 0 -> 391 bytes com/hbm/blocks/ModBlocks.java | 4 + com/hbm/blocks/machine/CoreComponent.java | 6 + com/hbm/handler/GUIHandler.java | 36 +++++ .../inventory/container/ContainerCore.java | 72 ++++++++++ .../container/ContainerCoreStabilizer.java | 36 +++++ com/hbm/inventory/gui/GUICore.java | 64 +++++++++ com/hbm/inventory/gui/GUICoreStabilizer.java | 102 +++++++++++++ com/hbm/main/ClientProxy.java | 1 + com/hbm/main/MainRegistry.java | 1 + com/hbm/main/ResourceManager.java | 1 + com/hbm/packet/AuxButtonPacket.java | 9 ++ .../tileentity/RenderCoreComponent.java | 27 +++- .../tileentity/machine/TileEntityCore.java | 32 +++++ .../machine/TileEntityCoreInjector.java | 4 + .../machine/TileEntityCoreStabilizer.java | 134 ++++++++++++++++++ 18 files changed, 526 insertions(+), 3 deletions(-) create mode 100644 assets/hbm/textures/gui/dfc/gui_stabilizer.png create mode 100644 assets/hbm/textures/models/core_stabilizer.png create mode 100644 com/hbm/inventory/container/ContainerCore.java create mode 100644 com/hbm/inventory/container/ContainerCoreStabilizer.java create mode 100644 com/hbm/inventory/gui/GUICore.java create mode 100644 com/hbm/inventory/gui/GUICoreStabilizer.java create mode 100644 com/hbm/tileentity/machine/TileEntityCoreStabilizer.java diff --git a/assets/hbm/textures/gui/dfc/gui_core.png b/assets/hbm/textures/gui/dfc/gui_core.png index a850cc9d692b3d82d74b9e46c9ca4c0822297b00..c5b3f255fc2f94d6d26f19241c1c0e61799cdd1a 100644 GIT binary patch literal 1871 zcmcIlX;70_6n$U9UMag&ML;c}paHQ8lmd~Z7Q!}wKs7NzsGUv%$f5)YNoa9Uk!3_D z0YbnH6f}S=icp|f1QC%%ArLVj%1&6)0D%zt0W-y^op#!pzCZWOJ$E_xzBltOc)A}^ zR@$lr08n=R#?cD^2!;?)kb@02{Pro>$VAvX`zXMNq7ZZ*0C_oQ$HP8k)?}YuNZ?UT z`F`RT>IgSkbqxA?eCEv?Cn2^?+t;&qPhKpW*l_~+9l`{C{YLiI!#`YX*~Us-`L(8k zZ)L?dy0&FvnCQWtnqo&?#=hvK`6`Dq<0L#kJG+`tyQP|Pnyzl>(h?*82uRnQaTHYUXzbG;PSXHp)T$ZT&a$BJajpJ(~%+Wbj+Ebvc5z2g-L#ZqJj*`=Mgj-pTptkIuQIt$9X3p((C|to@fzV2o6QpuB2(6NDd{F z$=pbtgs|9H-ka*^PJuw+YfQKGK-9f6+OCCWtQ-Yt7nO38fWCzmS{p)#7}HS*`fDG6 zlL3`?z#|0^?hQq%fp>X`k)5E)O}5Pmq-Fgn!5Y~=G?cfbI3$cdj$#;X8D3m`6st3b zIrHWyz|Hvrp}2ZnadVOrOiniPsl4dd<55#=$qGJ{Z@YcC8^3(NLpJ*@Wgp{NdNu7V zI||m7ghO27o8{ZGJ6$4bU^Vsgz?QQ&siDj?;rq%3u@@Ans0WPWu_)>qD_6IW=_RYm z3mV4Awi%Fszc`{D*|diQHvI;|VPrr7w`JA<35-DRuFI!+b3yU!@H+Tx-Gx~Io{Fm+ zh6~z|O-?HM`Na_7{fl*Aw(ep~L%Hg!9HSV@l}}63MY{(e>zZ@c0b$*R8bG2ARykAv z60M@IZ9`|(%h9jet%JIC7q(uW?y|~ZVGa(B0aoXffeCFD;PwLP1N%#)SmY?=y6gGc zyh~5fKd0XC$Q0f}jHu74|EId=l5)f;coNavWcms!IIdohbv{dgr%Cdj(wdm2Xc6c2llC0S)7jyQ*$BwW46iJV0 zyqQK<>BtWFcJ{y&GsY>}-N3A-3vWm53?2-#=&K!PHs#skbqpz>nmQjc`|3SY)!#0J z!oy@s?loBAzru4dfbZAZAZ~_-a6IP3E;Uc}n-@ucS*QqJPH>3%wB7MbIBEeyzf-g) zHA6Dq7)snEsJg;E;~M0hWBRFvEkMP&Rla!`D>x|5yI`wJq)1R%_5_}PJN%m9`yq@G zo4uu~FLv;EVryyMs!j(*;NVM?qTkVo-;p2r+rOvt(CVSbb{Xkz8Rr@~`E5RBS_O>00t*F;}h0a-gwfSK9|@1p3!1 zd)CSfP|gYzWYl`pMj|&R<+d8;;^LDv0$4MgI#$Xmr0P5$6^1E(xVgWPxe<|(epb5JTR~tAxxjS;~2|xZ04rT)a literal 1545 zcmeAS@N?(olHy`uVBq!ia0y~yU<5K5893O0R7}x|G$6%N?Bp530R%N1DIE+9tOq<@ z978JRyuE9fryVN7_8?n?(~(oi+hI}TtR>03lWi}!eX_f>sr`(U#$#25ix<-v17;}| z&M@ye?s?8)=I3+YP2ZoKDf3%(=l?(RY~u58)qmqHx?%JG?e6<>^?Cb$?c7>l*1!Gl z-`~sK>;HOJ+dX^m@`k-!U9HUJsOpMe7v?Xv{{62Yy!kfY@qY$2I-IdKe|O%0zqY>U zMvmF^bX4vq<)18^)XFPL5 zh)IJ0qeGsQLkEL`Ij@2X!-Uyv0!j=ge3>}}8J;X-Y~f%iy3F9j!mu-wL6NE94yy7L zGlsmpyhG&|N@HLDuA68X9v=SCa?Z3@zt=Ig%*kPhz25pRVfWo_``(Mse0&%fBU?rZJ-RS?g={PXp)+NYQI^}bq6(voCYYpXY- z<89gPU;E;(&bgac{>wq)$D_sa2c9o`|NErzuZ_1KDo@R2INl@vGW-0Qb}xII)$(ck zp6bZg+8DSqTRhZFfBW!Ie9_0lmsk!69%il1QuM2>`SCNj`@gC2+^?46j0TrV?|yEI zR$`eJ_2+n+V+(`DLsdnCx^?z8b+5L4ytA_ZyezY~AcOvgX#x^*=KIb*O4ns!5K&`@ zd!U;B?BmVaS4s~yF6Ro~{Fklay8?q>#py@#a`vUSE8bl>{=BboDM!P^hpoG(+o{jr zeXIUec+2r;yy<7oHgPZ(xO{24bH(+*!tE^#I=&2Z1S0<&P80Yk-&&v-$88`KTM~So zd0CwNhq!+BXB-W!ve6sFjIvFnfhl6^+cN2Wlb1fzNzMJQ7cXyjYT4Fp_uqeCyEV<3 zGib-&y}4_*mX()ZzxDXMLH-jZ1)y6O7%(!lax!T6FgPSKF>nbp1k7M)I0W_vOe*Kw z)rR@6Z)eP&ob7jVyKTL?`gi7t%eUia2N(B+ubkJv9E%=2#(|_(-jlmCXI8Pr{F~d^ zw<}Mu%${LR;X8q%R4$s!q^~pA#J8p{CQCKaoW}3PAm*t#(*~T-Ge`Tzh<|47O zNq1!#i&6SlkRxRq6MElpY?1M2M1+abg4o8hk%#AeTz5d{___liS9f22{#X-~0AQ-H zIuawiLFW9GIR`XkNpkpurxje#2$^td;lIs2-PdlVZNB;D{rmT|g$rjmGvA1bi>rIV y+<3i!u|V>%{)2zca;$si9pwj>yEFj@(qF_!b>CfTxc&25kOiKuelF{r5}E*ZTts~U diff --git a/assets/hbm/textures/gui/dfc/gui_stabilizer.png b/assets/hbm/textures/gui/dfc/gui_stabilizer.png new file mode 100644 index 0000000000000000000000000000000000000000..83d3715f439e304842356d2b96e640eaafb0744f GIT binary patch literal 1591 zcmeAS@N?(olHy`uVBq!ia0y~yU<5K5893O0R7}x|G$6%N?Bp530R%N1DIE+9tnWNs z978JRyuE9iEfX%n_F!}093|HSDmw%+n^y1WKB%@ahV9Z)sq%C291`1jZ^T+P);lP~ zc6?#Kv}B5vIa~S59>vCpBd%Q@iNQBMwWqALJGUn7-Mr_F#?v;Oi{ra>z4-mPJ2Q`D zZ*DO2iTj)TE%Vj)Z`~))e{_uLtbg>~v48*3`umg2=kZp_oNE2>Y`I}{bhO~_^flGmEA4l06#joKzFEF~Q_%3k~c9jM5 z3ZL&8(M7xqtnMz(UB;lv)Ua)C7FWT8s_BmF_DYKb)vRG$@p08$^IMoiuH@di8YkyF}I)2+2#z_1|qxF6%a9e=ieiT-<+ zg&}t{+k{2cTYMQ1Zir!@pu~_d+q*Hiq<`B?CXj?NtA`-Nma~#z*JXoU>cbcW)Ls2t zZ%MvyViBTEV24xkOel7Gdnxm?6bry29Jxjx6~MdfF?z<_<+nf-T?9^P&dSI z4u)ILcobZ}XUsMQyL+YPfj2+uH$4HFZOU5k^L->ogYuV;clPhAsCyvu|EK7=3wtd$ zo&Wo~`#Jl$L|(8?f3RUY`4n6kE|{eQU02TX{g?S6DWGd*5AOZfYXEV*2vBj~hBen2 zYbu{!ubDXa_r||D+VRWz`|p?E^lxIA@p!p>y+jqq$C~G!G4Z=Ezb{F7Uia$wd)tm5 zzx@1@69bqYNSrU9$Mfr#|NMWJFJ5oHqsL>*kYI6+p=Aw`nru8;Y(tD#;+C#<0L3n4$0Qjq_U)Dmfb-`4vsQZyv8(C&P1Cgn_G=&EWXw zx$5tZC9mvNV>q^rJ^p%WVQnsFe%1Y*?{C$`&2%}EV^;k!LbdwA#ip-czjk!oxN)Q7 zgTe-pY=(dt3=M}^AT}^Ev~n_N_%JvmGBI!oBTH@ASUzSMCo;~~3isENh?}B1wg0Y)ofX{;8j9}ZaKLQ{R;f1}OU}J`y}<%u2!cg{amD2FZ{ibJ={LcirC(4b6U|i1 z5{)v2p@1lDjftIf=^dYZbC2JPY$pV&U(qxFQK%q!B=Pm%g#v`?25%*YAK*ikJN>cA=0P!-Kk?768C56sewLsbK3i^eg)40CHonRLG5i zEavAu0F3!;`xeL!KjEYRbzM`}^-(d;b4QzZQ2~-H%YtV5{xaFWpMZr0D!d?t+mt8G!0V9DB&jnT5H<2bsBuu3X6_9zcI%x0Q|$aKK+`nWJ&2@~f9^hJ l_z^&?vwaXij9YD}J^&$gU^bn6)!YC8002ovPDHLkV1o99s0#o9 literal 0 HcmV?d00001 diff --git a/com/hbm/blocks/ModBlocks.java b/com/hbm/blocks/ModBlocks.java index 210ec0cf1..4ff9aca47 100644 --- a/com/hbm/blocks/ModBlocks.java +++ b/com/hbm/blocks/ModBlocks.java @@ -470,6 +470,8 @@ public class ModBlocks { public static final int guiID_dfc_injector = 90; public static Block dfc_receiver; public static final int guiID_dfc_receiver = 88; + public static Block dfc_stabilizer; + public static final int guiID_dfc_stabilizer = 91; public static Block dfc_core; public static final int guiID_dfc_core = 89; @@ -1083,6 +1085,7 @@ public class ModBlocks { dfc_emitter = new CoreComponent(Material.iron).setBlockName("dfc_emitter").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":dfc_emitter"); dfc_injector = new CoreComponent(Material.iron).setBlockName("dfc_injector").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":dfc_injector"); dfc_receiver = new CoreComponent(Material.iron).setBlockName("dfc_receiver").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":dfc_receiver"); + dfc_stabilizer = new CoreComponent(Material.iron).setBlockName("dfc_stabilizer").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":dfc_stabilizer"); dfc_core = new CoreCore(Material.iron).setBlockName("dfc_core").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":dfc_core"); seal_frame = new BlockGeneric(Material.iron).setBlockName("seal_frame").setHardness(10.0F).setResistance(100.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":seal_frame"); @@ -1737,6 +1740,7 @@ public class ModBlocks { GameRegistry.registerBlock(dfc_emitter, dfc_emitter.getUnlocalizedName()); GameRegistry.registerBlock(dfc_injector, dfc_injector.getUnlocalizedName()); GameRegistry.registerBlock(dfc_receiver, dfc_receiver.getUnlocalizedName()); + GameRegistry.registerBlock(dfc_stabilizer, dfc_stabilizer.getUnlocalizedName()); GameRegistry.registerBlock(dfc_core, dfc_core.getUnlocalizedName()); //Missile Blocks diff --git a/com/hbm/blocks/machine/CoreComponent.java b/com/hbm/blocks/machine/CoreComponent.java index ff3e4ebaa..c81fbc18f 100644 --- a/com/hbm/blocks/machine/CoreComponent.java +++ b/com/hbm/blocks/machine/CoreComponent.java @@ -5,6 +5,7 @@ import com.hbm.main.MainRegistry; import com.hbm.tileentity.machine.TileEntityCoreEmitter; import com.hbm.tileentity.machine.TileEntityCoreInjector; import com.hbm.tileentity.machine.TileEntityCoreReceiver; +import com.hbm.tileentity.machine.TileEntityCoreStabilizer; import cpw.mods.fml.common.network.internal.FMLNetworkHandler; import net.minecraft.block.BlockContainer; @@ -31,6 +32,8 @@ public class CoreComponent extends BlockContainer { return new TileEntityCoreReceiver(); if(this == ModBlocks.dfc_injector) return new TileEntityCoreInjector(); + if(this == ModBlocks.dfc_stabilizer) + return new TileEntityCoreStabilizer(); return null; } @@ -72,6 +75,9 @@ public class CoreComponent extends BlockContainer { if(this == ModBlocks.dfc_injector) FMLNetworkHandler.openGui(player, MainRegistry.instance, ModBlocks.guiID_dfc_injector, world, x, y, z); + if(this == ModBlocks.dfc_stabilizer) + FMLNetworkHandler.openGui(player, MainRegistry.instance, ModBlocks.guiID_dfc_stabilizer, world, x, y, z); + return true; } else { diff --git a/com/hbm/handler/GUIHandler.java b/com/hbm/handler/GUIHandler.java index a58364db6..2a96a6682 100644 --- a/com/hbm/handler/GUIHandler.java +++ b/com/hbm/handler/GUIHandler.java @@ -804,6 +804,24 @@ public class GUIHandler implements IGuiHandler { } return null; } + + case ModBlocks.guiID_dfc_core: + { + if(entity instanceof TileEntityCore) + { + return new ContainerCore(player.inventory, (TileEntityCore) entity); + } + return null; + } + + case ModBlocks.guiID_dfc_stabilizer: + { + if(entity instanceof TileEntityCoreStabilizer) + { + return new ContainerCoreStabilizer(player.inventory, (TileEntityCoreStabilizer) entity); + } + return null; + } } } else { //NON-TE CONTAINERS @@ -1607,6 +1625,24 @@ public class GUIHandler implements IGuiHandler { } return null; } + + case ModBlocks.guiID_dfc_core: + { + if(entity instanceof TileEntityCore) + { + return new GUICore(player.inventory, (TileEntityCore) entity); + } + return null; + } + + case ModBlocks.guiID_dfc_stabilizer: + { + if(entity instanceof TileEntityCoreStabilizer) + { + return new GUICoreStabilizer(player.inventory, (TileEntityCoreStabilizer) entity); + } + return null; + } } } else { //CLIENTONLY GUIS diff --git a/com/hbm/inventory/container/ContainerCore.java b/com/hbm/inventory/container/ContainerCore.java new file mode 100644 index 000000000..6a6b838e3 --- /dev/null +++ b/com/hbm/inventory/container/ContainerCore.java @@ -0,0 +1,72 @@ +package com.hbm.inventory.container; + +import com.hbm.tileentity.machine.TileEntityCore; + +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.InventoryPlayer; +import net.minecraft.inventory.Container; +import net.minecraft.inventory.Slot; +import net.minecraft.item.ItemStack; + +public class ContainerCore extends Container { + + private TileEntityCore nukeBoy; + + public ContainerCore(InventoryPlayer invPlayer, TileEntityCore tedf) { + + nukeBoy = tedf; + + this.addSlotToContainer(new Slot(tedf, 0, 62, 53)); + this.addSlotToContainer(new Slot(tedf, 1, 80, 53)); + this.addSlotToContainer(new Slot(tedf, 2, 98, 53)); + + for(int i = 0; i < 3; i++) + { + for(int j = 0; j < 9; j++) + { + this.addSlotToContainer(new Slot(invPlayer, j + i * 9 + 9, 8 + j * 18, 84 + i * 18)); + } + } + + for(int i = 0; i < 9; i++) + { + this.addSlotToContainer(new Slot(invPlayer, i, 8 + i * 18, 142)); + } + } + + @Override + public ItemStack transferStackInSlot(EntityPlayer p_82846_1_, int par2) + { + ItemStack var3 = null; + Slot var4 = (Slot) this.inventorySlots.get(par2); + + if (var4 != null && var4.getHasStack()) + { + ItemStack var5 = var4.getStack(); + var3 = var5.copy(); + + if (par2 <= 2) { + if (!this.mergeItemStack(var5, 3, this.inventorySlots.size(), true)) + { + return null; + } + } + + if (var5.stackSize == 0) + { + var4.putStack((ItemStack) null); + } + else + { + var4.onSlotChanged(); + } + } + + return var3; + } + + @Override + public boolean canInteractWith(EntityPlayer player) { + return nukeBoy.isUseableByPlayer(player); + } +} diff --git a/com/hbm/inventory/container/ContainerCoreStabilizer.java b/com/hbm/inventory/container/ContainerCoreStabilizer.java new file mode 100644 index 000000000..1f13f478e --- /dev/null +++ b/com/hbm/inventory/container/ContainerCoreStabilizer.java @@ -0,0 +1,36 @@ +package com.hbm.inventory.container; + +import com.hbm.tileentity.machine.TileEntityCoreStabilizer; + +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.InventoryPlayer; +import net.minecraft.inventory.Container; +import net.minecraft.inventory.Slot; + +public class ContainerCoreStabilizer extends Container { + + private TileEntityCoreStabilizer nukeBoy; + + public ContainerCoreStabilizer(InventoryPlayer invPlayer, TileEntityCoreStabilizer tedf) { + + nukeBoy = tedf; + + for(int i = 0; i < 3; i++) + { + for(int j = 0; j < 9; j++) + { + this.addSlotToContainer(new Slot(invPlayer, j + i * 9 + 9, 8 + j * 18, 84 + i * 18)); + } + } + + for(int i = 0; i < 9; i++) + { + this.addSlotToContainer(new Slot(invPlayer, i, 8 + i * 18, 142)); + } + } + + @Override + public boolean canInteractWith(EntityPlayer player) { + return nukeBoy.isUseableByPlayer(player); + } +} diff --git a/com/hbm/inventory/gui/GUICore.java b/com/hbm/inventory/gui/GUICore.java new file mode 100644 index 000000000..50bca6c66 --- /dev/null +++ b/com/hbm/inventory/gui/GUICore.java @@ -0,0 +1,64 @@ +package com.hbm.inventory.gui; + +import org.lwjgl.opengl.GL11; + +import com.hbm.inventory.FluidTank; +import com.hbm.inventory.container.ContainerCore; +import com.hbm.lib.RefStrings; +import com.hbm.tileentity.machine.TileEntityCore; + +import net.minecraft.client.Minecraft; +import net.minecraft.client.resources.I18n; +import net.minecraft.entity.player.InventoryPlayer; +import net.minecraft.util.ResourceLocation; + +public class GUICore extends GuiInfoContainer { + + private static ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/dfc/gui_core.png"); + private TileEntityCore core; + + public GUICore(InventoryPlayer invPlayer, TileEntityCore tedf) { + super(new ContainerCore(invPlayer, tedf)); + core = tedf; + + this.xSize = 176; + this.ySize = 166; + } + + @Override + public void drawScreen(int mouseX, int mouseY, float f) { + super.drawScreen(mouseX, mouseY, f); + + core.tanks[0].renderTankInfo(this, mouseX, mouseY, guiLeft + 26, guiTop + 17, 16, 52); + core.tanks[1].renderTankInfo(this, mouseX, mouseY, guiLeft + 134, guiTop + 17, 16, 52); + + String[] text = new String[] { "Restriction Field: " + core.field + "%" }; + this.drawCustomInfoStat(mouseX, mouseY, guiLeft + 8, guiTop + 17, 16, 52, mouseX, mouseY, text); + } + + @Override + protected void drawGuiContainerForegroundLayer( int i, int j) { + + String name = this.core.hasCustomInventoryName() ? this.core.getInventoryName() : I18n.format(this.core.getInventoryName()); + this.fontRendererObj.drawString(name, this.xSize / 2 - this.fontRendererObj.getStringWidth(name) / 2, 6, 4210752); + this.fontRendererObj.drawString(I18n.format("container.inventory"), 8, this.ySize - 96 + 2, 4210752); + } + + @Override + protected void drawGuiContainerBackgroundLayer(float p_146976_1_, int p_146976_2_, int p_146976_3_) { + GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); + Minecraft.getMinecraft().getTextureManager().bindTexture(texture); + drawTexturedModalRect(guiLeft, guiTop, 0, 0, xSize, ySize); + + int i = core.getFieldScaled(52); + drawTexturedModalRect(guiLeft + 8, guiTop + 69 - i, 176, 52 - i, 16, i); + + int j = core.getHeatScaled(52); + drawTexturedModalRect(guiLeft + 152, guiTop + 69 - j, 192, 52 - j, 16, j); + + Minecraft.getMinecraft().getTextureManager().bindTexture(core.tanks[0].getSheet()); + core.tanks[0].renderTank(this, guiLeft + 26, guiTop + 69, core.tanks[0].getTankType().textureX() * FluidTank.x, core.tanks[0].getTankType().textureY() * FluidTank.y, 16, 52); + Minecraft.getMinecraft().getTextureManager().bindTexture(core.tanks[1].getSheet()); + core.tanks[1].renderTank(this, guiLeft + 134, guiTop + 69, core.tanks[1].getTankType().textureX() * FluidTank.x, core.tanks[1].getTankType().textureY() * FluidTank.y, 16, 52); + } +} diff --git a/com/hbm/inventory/gui/GUICoreStabilizer.java b/com/hbm/inventory/gui/GUICoreStabilizer.java new file mode 100644 index 000000000..36cff060a --- /dev/null +++ b/com/hbm/inventory/gui/GUICoreStabilizer.java @@ -0,0 +1,102 @@ +package com.hbm.inventory.gui; + +import org.apache.commons.lang3.math.NumberUtils; +import org.lwjgl.input.Keyboard; +import org.lwjgl.opengl.GL11; + +import com.hbm.inventory.container.ContainerCoreStabilizer; +import com.hbm.lib.RefStrings; +import com.hbm.packet.AuxButtonPacket; +import com.hbm.packet.PacketDispatcher; +import com.hbm.tileentity.machine.TileEntityCoreStabilizer; + +import net.minecraft.client.Minecraft; +import net.minecraft.client.audio.PositionedSoundRecord; +import net.minecraft.client.gui.GuiTextField; +import net.minecraft.client.resources.I18n; +import net.minecraft.entity.player.InventoryPlayer; +import net.minecraft.util.MathHelper; +import net.minecraft.util.ResourceLocation; + +public class GUICoreStabilizer extends GuiInfoContainer { + + private static ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/dfc/gui_stabilizer.png"); + private TileEntityCoreStabilizer stabilizer; + private GuiTextField field; + + public GUICoreStabilizer(InventoryPlayer invPlayer, TileEntityCoreStabilizer tedf) { + super(new ContainerCoreStabilizer(invPlayer, tedf)); + stabilizer = tedf; + + this.xSize = 176; + this.ySize = 166; + } + + public void initGui() { + + super.initGui(); + + Keyboard.enableRepeatEvents(true); + this.field = new GuiTextField(this.fontRendererObj, guiLeft + 75, guiTop + 57, 29, 12); + this.field.setTextColor(-1); + this.field.setDisabledTextColour(-1); + this.field.setEnableBackgroundDrawing(false); + this.field.setMaxStringLength(3); + this.field.setText(String.valueOf(stabilizer.watts)); + } + + @Override + public void drawScreen(int mouseX, int mouseY, float f) { + super.drawScreen(mouseX, mouseY, f); + + this.drawElectricityInfo(this, mouseX, mouseY, guiLeft + 35, guiTop + 17, 16, 52, stabilizer.power, stabilizer.maxPower); + } + + protected void mouseClicked(int x, int y, int i) { + super.mouseClicked(x, y, i); + this.field.mouseClicked(x, y, i); + + if(guiLeft + 124 <= x && guiLeft + 124 + 18 > x && guiTop + 52 < y && guiTop + 52 + 18 >= y) { + + if(NumberUtils.isNumber(field.getText())) { + int j = MathHelper.clamp_int(Integer.parseInt(field.getText()), 1, 100); + field.setText(j + ""); + mc.getSoundHandler().playSound(PositionedSoundRecord.func_147674_a(new ResourceLocation("gui.button.press"), 1.0F)); + PacketDispatcher.wrapper.sendToServer(new AuxButtonPacket(stabilizer.xCoord, stabilizer.yCoord, stabilizer.zCoord, j, 0)); + } + } + } + + @Override + protected void drawGuiContainerForegroundLayer( int i, int j) { + String name = this.stabilizer.hasCustomInventoryName() ? this.stabilizer.getInventoryName() : I18n.format(this.stabilizer.getInventoryName()); + this.fontRendererObj.drawString(name, this.xSize / 2 - this.fontRendererObj.getStringWidth(name) / 2, 6, 4210752); + + this.fontRendererObj.drawString(I18n.format("container.inventory"), 8, this.ySize - 96 + 2, 4210752); + } + + @Override + protected void drawGuiContainerBackgroundLayer(float p_146976_1_, int p_146976_2_, int p_146976_3_) { + GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); + Minecraft.getMinecraft().getTextureManager().bindTexture(texture); + drawTexturedModalRect(guiLeft, guiTop, 0, 0, xSize, ySize); + + if(field.isFocused()) + drawTexturedModalRect(guiLeft + 71, guiTop + 53, 192, 4, 34, 16); + + drawTexturedModalRect(guiLeft + 71, guiTop + 45, 192, 0, stabilizer.watts * 34 / 100, 4); + + int i = (int) stabilizer.getPowerScaled(52); + drawTexturedModalRect(guiLeft + 35, guiTop + 69 - i, 176, 52 - i, 16, i); + + this.field.drawTextBox(); + } + + protected void keyTyped(char p_73869_1_, int p_73869_2_) + { + if (this.field.textboxKeyTyped(p_73869_1_, p_73869_2_)) { } + else { + super.keyTyped(p_73869_1_, p_73869_2_); + } + } +} diff --git a/com/hbm/main/ClientProxy.java b/com/hbm/main/ClientProxy.java index 9f958b28d..2f14772e9 100644 --- a/com/hbm/main/ClientProxy.java +++ b/com/hbm/main/ClientProxy.java @@ -345,6 +345,7 @@ public class ClientProxy extends ServerProxy ClientRegistry.bindTileEntitySpecialRenderer(TileEntityCoreEmitter.class, new RenderCoreComponent()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityCoreReceiver.class, new RenderCoreComponent()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityCoreInjector.class, new RenderCoreComponent()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityCoreStabilizer.class, new RenderCoreComponent()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityCore.class, new RenderCore()); RenderingRegistry.registerEntityRenderingHandler(EntityMissileCustom.class, new RenderMissileCustom()); diff --git a/com/hbm/main/MainRegistry.java b/com/hbm/main/MainRegistry.java index 273df4016..e378138f5 100644 --- a/com/hbm/main/MainRegistry.java +++ b/com/hbm/main/MainRegistry.java @@ -521,6 +521,7 @@ public class MainRegistry GameRegistry.registerTileEntity(TileEntityCoreEmitter.class, "tileentity_v0_emitter"); GameRegistry.registerTileEntity(TileEntityCoreReceiver.class, "tileentity_v0_receiver"); GameRegistry.registerTileEntity(TileEntityCoreInjector.class, "tileentity_v0_injector"); + GameRegistry.registerTileEntity(TileEntityCoreStabilizer.class, "tileentity_v0_stabilizer"); GameRegistry.registerTileEntity(TileEntityCore.class, "tileentity_v0"); GameRegistry.registerTileEntity(TileEntityMachineArcFurnace.class, "tileentity_arc_furnace"); GameRegistry.registerTileEntity(TileEntityMachineAmgen.class, "tileentity_amgen"); diff --git a/com/hbm/main/ResourceManager.java b/com/hbm/main/ResourceManager.java index f48eb7c0e..46f5312b2 100644 --- a/com/hbm/main/ResourceManager.java +++ b/com/hbm/main/ResourceManager.java @@ -216,6 +216,7 @@ public class ResourceManager { public static final ResourceLocation dfc_emitter_tex = new ResourceLocation(RefStrings.MODID, "textures/models/core_emitter.png"); public static final ResourceLocation dfc_receiver_tex = new ResourceLocation(RefStrings.MODID, "textures/models/core_receiver.png"); public static final ResourceLocation dfc_injector_tex = new ResourceLocation(RefStrings.MODID, "textures/models/core_injector.png"); + public static final ResourceLocation dfc_stabilizer_tex = new ResourceLocation(RefStrings.MODID, "textures/models/core_stabilizer.png"); //Radgen public static final ResourceLocation radgen_body_tex = new ResourceLocation(RefStrings.MODID, "textures/models/rad_gen_body.png"); diff --git a/com/hbm/packet/AuxButtonPacket.java b/com/hbm/packet/AuxButtonPacket.java index c81f9ab0a..a74183925 100644 --- a/com/hbm/packet/AuxButtonPacket.java +++ b/com/hbm/packet/AuxButtonPacket.java @@ -4,6 +4,7 @@ import com.hbm.handler.FluidTypeHandler.FluidType; import com.hbm.items.weapon.ItemMissile.PartSize; import com.hbm.tileentity.bomb.TileEntityLaunchTable; import com.hbm.tileentity.machine.TileEntityCoreEmitter; +import com.hbm.tileentity.machine.TileEntityCoreStabilizer; import com.hbm.tileentity.machine.TileEntityForceField; import com.hbm.tileentity.machine.TileEntityMachineMissileAssembly; import com.hbm.tileentity.machine.TileEntityMachineReactorLarge; @@ -217,6 +218,14 @@ public class AuxButtonPacket implements IMessage { } } + if (te instanceof TileEntityCoreStabilizer) { + TileEntityCoreStabilizer core = (TileEntityCoreStabilizer)te; + + if(m.id == 0) { + core.watts = m.value; + } + } + //} catch (Exception x) { } return null; diff --git a/com/hbm/render/tileentity/RenderCoreComponent.java b/com/hbm/render/tileentity/RenderCoreComponent.java index 68bc8f87c..999418b1c 100644 --- a/com/hbm/render/tileentity/RenderCoreComponent.java +++ b/com/hbm/render/tileentity/RenderCoreComponent.java @@ -9,6 +9,7 @@ import com.hbm.render.util.BeamPronter.EnumWaveType; import com.hbm.tileentity.machine.TileEntityCoreEmitter; import com.hbm.tileentity.machine.TileEntityCoreInjector; import com.hbm.tileentity.machine.TileEntityCoreReceiver; +import com.hbm.tileentity.machine.TileEntityCoreStabilizer; import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; import net.minecraft.tileentity.TileEntity; @@ -70,11 +71,31 @@ public class RenderCoreComponent extends TileEntitySpecialRenderer { ResourceManager.dfc_injector.renderAll(); GL11.glTranslated(0, 0.5, 0); - int range = ((TileEntityCoreInjector)tileEntity).beam; + TileEntityCoreInjector injector = (TileEntityCoreInjector)tileEntity; + int range = injector.beam; if(range > 0) { - BeamPronter.prontBeam(Vec3.createVectorHelper(0, 0, range), EnumWaveType.RANDOM, EnumBeamType.LINE, 0x0000ff, 0x8080ff, (int)tileEntity.getWorldObj().getTotalWorldTime() % 1000, range, 0.0625F, 0, 0); - BeamPronter.prontBeam(Vec3.createVectorHelper(0, 0, range), EnumWaveType.RANDOM, EnumBeamType.LINE, 0x0000ff, 0x8080ff, (int)tileEntity.getWorldObj().getTotalWorldTime() % 1000 + 1, range, 0.0625F, 0, 0); + + if(injector.tanks[0].getFill() > 0) + BeamPronter.prontBeam(Vec3.createVectorHelper(0, 0, range), EnumWaveType.RANDOM, EnumBeamType.LINE, injector.tanks[0].getTankType().getColor(), 0x808080, (int)tileEntity.getWorldObj().getTotalWorldTime() % 1000, range, 0.0625F, 0, 0); + if(injector.tanks[1].getFill() > 0) + BeamPronter.prontBeam(Vec3.createVectorHelper(0, 0, range), EnumWaveType.RANDOM, EnumBeamType.LINE, injector.tanks[1].getTankType().getColor(), 0x808080, (int)tileEntity.getWorldObj().getTotalWorldTime() % 1000 + 1, range, 0.0625F, 0, 0); + } + } + + if(tileEntity instanceof TileEntityCoreStabilizer) { + bindTexture(ResourceManager.dfc_stabilizer_tex); + ResourceManager.dfc_injector.renderAll(); + + + GL11.glTranslated(0, 0.5, 0); + TileEntityCoreStabilizer stabilizer = (TileEntityCoreStabilizer)tileEntity; + int range = stabilizer.beam; + + if(range > 0) { + BeamPronter.prontBeam(Vec3.createVectorHelper(0, 0, range), EnumWaveType.SPIRAL, EnumBeamType.LINE, 0xffa200, 0xffd000, (int)tileEntity.getWorldObj().getTotalWorldTime() * -25 % 360, range * 3, 0.125F, 0, 0); + BeamPronter.prontBeam(Vec3.createVectorHelper(0, 0, range), EnumWaveType.SPIRAL, EnumBeamType.LINE, 0xffa200, 0xffd000, (int)tileEntity.getWorldObj().getTotalWorldTime() * -15 % 360 + 180, range * 3, 0.125F, 0, 0); + BeamPronter.prontBeam(Vec3.createVectorHelper(0, 0, range), EnumWaveType.SPIRAL, EnumBeamType.LINE, 0xffa200, 0xffd000, (int)tileEntity.getWorldObj().getTotalWorldTime() * -5 % 360 + 180, range * 3, 0.125F, 0, 0); } } diff --git a/com/hbm/tileentity/machine/TileEntityCore.java b/com/hbm/tileentity/machine/TileEntityCore.java index 2ecc2e8d7..5bf78f194 100644 --- a/com/hbm/tileentity/machine/TileEntityCore.java +++ b/com/hbm/tileentity/machine/TileEntityCore.java @@ -4,6 +4,8 @@ import com.hbm.handler.FluidTypeHandler.FluidType; import com.hbm.inventory.FluidTank; import com.hbm.tileentity.TileEntityMachineBase; +import net.minecraft.nbt.NBTTagCompound; + public class TileEntityCore extends TileEntityMachineBase { public int field; @@ -26,6 +28,36 @@ public class TileEntityCore extends TileEntityMachineBase { @Override public void updateEntity() { + if(!worldObj.isRemote) { + + NBTTagCompound data = new NBTTagCompound(); + data.setInteger("tank0", tanks[0].getTankType().ordinal()); + data.setInteger("tank1", tanks[1].getTankType().ordinal()); + data.setInteger("fill0", tanks[0].getFill()); + data.setInteger("fill1", tanks[1].getFill()); + data.setInteger("field", field); + data.setInteger("heat", heat); + networkPack(data, 250); + } + + } + + public void networkUnpack(NBTTagCompound data) { + + tanks[0].setTankType(FluidType.getEnum(data.getInteger("tank0"))); + tanks[1].setTankType(FluidType.getEnum(data.getInteger("tank1"))); + tanks[0].setFill(data.getInteger("fill0")); + tanks[1].setFill(data.getInteger("fill1")); + field = data.getInteger("field"); + heat = data.getInteger("heat"); + } + + public int getFieldScaled(int i) { + return (field * i) / 100; + } + + public int getHeatScaled(int i) { + return (heat * i) / 100; } public long burn(long joules) { diff --git a/com/hbm/tileentity/machine/TileEntityCoreInjector.java b/com/hbm/tileentity/machine/TileEntityCoreInjector.java index bb4d51086..8724008b1 100644 --- a/com/hbm/tileentity/machine/TileEntityCoreInjector.java +++ b/com/hbm/tileentity/machine/TileEntityCoreInjector.java @@ -10,6 +10,7 @@ import com.hbm.tileentity.TileEntityMachineBase; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.init.Blocks; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.AxisAlignedBB; @@ -80,6 +81,9 @@ public class TileEntityCoreInjector extends TileEntityMachineBase implements IFl beam = i; break; } + + if(worldObj.getBlock(x, y, z) != Blocks.air) + break; } this.markDirty(); diff --git a/com/hbm/tileentity/machine/TileEntityCoreStabilizer.java b/com/hbm/tileentity/machine/TileEntityCoreStabilizer.java new file mode 100644 index 000000000..15ef6d38c --- /dev/null +++ b/com/hbm/tileentity/machine/TileEntityCoreStabilizer.java @@ -0,0 +1,134 @@ +package com.hbm.tileentity.machine; + +import com.hbm.interfaces.IConsumer; +import com.hbm.tileentity.TileEntityMachineBase; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.init.Blocks; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.AxisAlignedBB; +import net.minecraft.util.MathHelper; +import net.minecraftforge.common.util.ForgeDirection; + +public class TileEntityCoreStabilizer extends TileEntityMachineBase implements IConsumer { + + public long power; + public static final long maxPower = 2500000000L; + public int watts; + public int beam; + + public static final int range = 15; + + public TileEntityCoreStabilizer() { + super(1); + } + + @Override + public String getName() { + return "container.dfcStabilizer"; + } + + @Override + public void updateEntity() { + + if(!worldObj.isRemote) { + + watts = MathHelper.clamp_int(watts, 1, 100); + int demand = (int) Math.pow(watts, 4); + + beam = 0; + + if(power >= demand) { + + ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata()); + for(int i = 1; i <= range; i++) { + + int x = xCoord + dir.offsetX * i; + int y = yCoord + dir.offsetY * i; + int z = zCoord + dir.offsetZ * i; + + TileEntity te = worldObj.getTileEntity(x, y, z); + + if(te instanceof TileEntityCore) { + + TileEntityCore core = (TileEntityCore)te; + core.field = watts; + this.power -= demand; + beam = i; + break; + } + + if(worldObj.getBlock(x, y, z) != Blocks.air) + break; + } + } + + NBTTagCompound data = new NBTTagCompound(); + data.setLong("power", power); + data.setInteger("watts", watts); + data.setInteger("beam", beam); + this.networkPack(data, 250); + } + } + + public void networkUnpack(NBTTagCompound data) { + + power = data.getLong("power"); + watts = data.getInteger("watts"); + beam = data.getInteger("beam"); + } + + public long getPowerScaled(long i) { + return (power * i) / maxPower; + } + + public int getWattsScaled(int i) { + return (watts * i) / 100; + } + + @Override + public void setPower(long i) { + this.power = i; + } + + @Override + public long getPower() { + return this.power; + } + + @Override + public long getMaxPower() { + return this.maxPower; + } + + @Override + public AxisAlignedBB getRenderBoundingBox() { + return TileEntity.INFINITE_EXTENT_AABB; + } + + @Override + @SideOnly(Side.CLIENT) + public double getMaxRenderDistanceSquared() + { + return 65536.0D; + } + + @Override + public void readFromNBT(NBTTagCompound nbt) { + super.readFromNBT(nbt); + + power = nbt.getLong("power"); + watts = nbt.getInteger("watts"); + } + + @Override + public void writeToNBT(NBTTagCompound nbt) { + super.writeToNBT(nbt); + + nbt.setLong("power", power); + nbt.setInteger("watts", watts); + } + +}