From ae70542bbdddc823b869358f083c5a30476478aa Mon Sep 17 00:00:00 2001 From: Aidan Brady Date: Sun, 4 Aug 2013 23:44:58 -0400 Subject: [PATCH] Battery is mostly working! --- .../textures/gui/batterybox_gui.png | Bin 5781 -> 5742 bytes .../battery/BlockBattery.java | 5 ++ .../battery/ContainerBattery.java | 4 +- src/resonantinduction/battery/GuiBattery.java | 9 +++- .../battery/SynchronizedBatteryData.java | 9 +++- .../battery/TileEntityBattery.java | 50 ++++++++++-------- 6 files changed, 52 insertions(+), 25 deletions(-) diff --git a/resources/assets/resonantinduction/textures/gui/batterybox_gui.png b/resources/assets/resonantinduction/textures/gui/batterybox_gui.png index 9d845a2cb21d71a3ccd65dd5a417180bb4de770f..a44d57d5fd4eb82f482972ec09db179b38118e81 100644 GIT binary patch delta 4678 zcmbVPdo+}5+n;$F+YCuY*^W_W9Llkr$xIFzgE2Z$*o2~XL~2mXGh;h!hsZgF8NEb0 zkwTHC(@Y}dup1=jB;%a(>AP!v>s#wv@80X(?|%Mz*8N=TcmICZ@4Bz+elj%2HA)Ym zU?E$peTPDkW4R7VgItOI)q|PapJ#5AHcyc{cKY_+RnpDArv&-PjjuW=`D{Ybp3y0D zDzIo5Qx_@ZY5y_;BS>UGrR5A$cT6Hi4dE?2Zs+NX+QP^c`Zz-Nv?n5^TLV2{$W)n) z5NPyLoFQ*Wg!2Pl1_1aXL!MxzC8-Fm-p4FXBU%k%Dq7W=!MVzSbZ++5qG;{F3ksyIauQT9gW}hKWKC4?SA#-R@Y2L&5Q*5Zs^Ee zloXzg(1<_ijrB`lK+Q*Lz8!%QuvCQ9>sz{*ht@=-->zRS?qXU4r3w9QS5cii*ocQ) zwV!5iZUBDPL8t8@e~_Wh_^eN4PbZ-ChLOGsvjPUf{9oIh#h0o9(M~zCX+&2LU(sJ! ziFHW_`BS4@wqgGqvC?e@H+kGhf9U?g!=LP#fKm}+7%sY9%I3LA zqT!qDV#L9QM?(I#U#-GJ()~2;aRJ78cg+JKS<{!r8>gCX^9gF-|Zabe;C%OtiIcqh8IHp~537vbz} z6DTt;Z>Ay)u%x2x%u7JbJheO-Wncl!At~j?pvJee5g#qznPd5Apih~3UKU#w%YXvK z^_NMW%BXQziZL}m%UiY!l-b85ud$pX(D1ZT| zXk0VpAe03Xl2z=Y%FG2hqGA1t)R}g`UAsef(m0gwC5?d}wx)CNP};NVR>3uVeiH-DVQ|{6Pp0Hp3U6J_vm`OBRzJKn74kY}8@cpUjp32+GVB z2TZyW89$43O@809_!Bi3X$IzG`wm2S8 zJ#2J-KQszX>Ypybe=qE>qB!GgQk)Nw&X3m4e-2UkuKiK(vzhqdg%b1v`af*_0~7v_ z41a`i27hK|hDICo)GW_+o%MA*X4;CbY~X$P&5=iM?65_0bVPrp^vyP+88oef=}jlJ zj*gB#PqWItn~XS7b^0*m0Bpa8PNR_78-eW`o$r#_-|I&5INV|j8a=SRujDXB4-}5y z4to=I=5Ap7ZnsA}nJU0AhbUWBJT(R|jk$dU-~7FB;&es|P;UX~+rah`)HP5ydJ-zR z=|mX-Ds%5x22m0KsJtjh!>U<=Vtje{Hr6kaGq{XckfX0{yA<%gQE%U({mj%E*cgg! z{8qMW6|HCVh`Fg}$E01&V^s@ZX~S8yGm(lMec= z?=zcB!f)D43FM(#i7%9kcC}MnLs55eC>5*?&TM<{%o>Yo|_L%L}JpPdNC*zxw-s4N>&v(vyIrD#gPZX9~ z4X{tk$3%lU1QJ|d*483|nx2EB^J%c|E9LcavUAcz&og-QxR%#A4nIj|Kifb=)vip} ze;|k8sHVtu*U}R^&VNZ=Z^wo}_l3tvY%gey#i&OOPbSAcQ&?~BSbDtNXNP3b2#O&D zLhhX6w&o~Hj}K$tqUSndG*{0pTUN3v_-oCx>mv>@ci~p0U6&<6WuQX!S1FOIZlURt{Q zmyFGYB}InKP5q76l04jv=QWLlV@uzKksEU(zD|x#@ZcpyPw3SHBc_eiQ5B7Z3k3PZyOu_w<_Lj+CH zSFY6H^ei?*63}b&SzO@KjAf5X;~wG8(!$brG|TB|abxYy!ins}ocg((rU9QfK~kMV zX6Nh_`mJqQE!(^>!ku|M<{wfR4aeRKPfter9=Kw!!F4GpW4#>qf`_Fy;KsZ^%!wEM zl&vTKfHlja`Nz~|PYzTkcvmj`D{t4DVzpvtnlvsrb8lVkC9aTsb?=%e_ zUkr91o+I!CJ55Z7d3?6V+7(82RCmCHTvxJ(KewuF$XhsKBn|W0cupoulkU@XXX19X zNA|)(&|Oa!J?yYA9j!X+9puTuXGVb)1>pY4ph4q*`w{IE^q!pL*kDC|+ zR+kI*~lRD-X_cpo2~B1j~#s3V{gKZ!`b(oQVhWhoVc|`Mn3SF*ZwA5q-oO1^KFsYLa?-UWt%r) zCDFezJ6Qdi06yrKRkJJt+j<^{l2bOn^hy+xb*5ukss1jBIZe34*I{1>?E1kss5j9~ zH&i;x#b^1wb2(iR>GENjd*J)EwR4+}b1)JjJpMD`sEeaI z2kp$MA6~Urs|Xt^lo^RpShDHg$WpNKvbI=zWJ=JQ5)cv-&MrPi)&@1W=mxm;wepVN zG3(KX<+m;k)N?c`FZ9i}g}<|5*Ob?ljp&ZUb-%dGR-!VuPd@oHooQemm0&HGKqp-# z-Ig}O=B*avQ+6zJ<7DE@X&Ftz(t47+2uckGI1d#ooLA0bLHYVbtMTd5myTP)Nn!m# zUK*Y$p*^|BK3B2??C+cW zW9Y;3w<<}Vr=V3|L|EbR`ix8=M<}qt>zxoQ&Z4DUaR>2|)Tq)HoIb1Hce$o;qJ(~! z)L(`!ZK}ex8!ggDR{B|6rnJ-4!hhd2&lf&37@MM7bnnJ4z8svF;v9}mS(EowaJ7P? z%O<03A_re&2i<5j6j8IH=S~quz2xeeq|-M?Z%IBb=ew%OJb_94@TKmYTmC{D zL5Lw4{v@|@9`|CtJ4mauMwG1}8WCQ2Gr-8vLX7wD#73#T6(l!vs|MVgU1y!!a}#)y zQ8DI5jruIjh=E3YR4ja%=;CK%OPGQ8T)s2Bp=PBmkCu2n?yauS@4VZ5%RH&o5d%!xz?rqLEC@rCVL)*?t7s6-@f(oF8eI(Ic)iwAk6g-R3U^w z;fp6Xi`EJ(`%_)A?_|qQHON(dRoBU>M;R+>rzV@E#urew*F}xr{j4~KwmxXCb4HxCaU1~t`kY;n8DU>t+VT%FV@`PzPKFKf7%Y4;$yrY=YYmU_%(@- zJrJ|a#8BLqbSbsrK4|R`Io46w=fG_D6AylpuJAq%ZON|sVMfm{KK4t^N!6RazD)iS zQkQ(s_H0`4!*>Q#&+#F4PSRPy-h`KPlMAo-zwgw2GuO?uhOE&!tGd(_3B8?2%pp6@ z&yk1ZWEIkgVc;?t#!XUUo(5Ny_L%)V95oMIBJ;|WN$g|b+oSyVx-cdkTv5_}1!!z> zCiv*@citWv0`WsKrje);@X!7CvHl4Z{1?3b3D!S>GXJ|0*Ee|lvb&(0GVg-`kF7Pu K>YjyXGlH1=UKv@t`LiYQBVW2@W9P-82JqEN{sM3!T2WDAv$+t{U$t%R~o zJdwLXH)e&_o9KA+Eb`~7|>B`cTPAgGeL zsgX?pW;&xIVX{iRrFGo$eYPe4;=y^zlWu8Vg#Ja*3;kwQ*E1E~1Tg~RmPn_FaRubq z^};t+tzV-v*%Yr>!Mz(;_FcvK+1cv>25k*e{mpX$!PeTlge%l`&+#%s`SLY_#y-|o z=mp7MPhKbdUh%oLPhU){#NN~;asWli^JQdFyd_^<&~k$AhvaArvyM{k%-2TeHuVcc z>nPU3!h+k%__%posxAY5EB!shoXh0p;MfKXH4K~Un?^#2xAA1iXUCL@i#vh~%h5z-aV>WU;&Aio6&cDYEyy0T%=l+wU4 z30ND05FfrYK>UwD81_k4+5yA|#*(SwA=s%~5M2H=Ow9@V9c=P<2HP=+i#x{s1@1K; z5z-b~B9*JbU22%JcdK)AbG?O|wcI$BhJcl+ryZdm8VaVfgi>rDAG~rQp`U`3mZVdf zr$0>PqEPgospxt>w%y+QtHJ4@zpO3$EU1^R9$%B6^*`IcIKArdWlq%PaloK5VkZ{{ zJ&wh@;w0lBSkmH-!vks-TRF$b}?%pi>9{xbmr3|l~^c<67ENQ+DubW2>NE|OIQ z7~5VwCkVR&?JcnqUyNOBVJxdi>mV=6r~nSRz7p^zmG1+3Y?+ebEC=v^#ZY85&LJ6y z-bcM<7!AMPLo9i`|Nfl_EnDY_AezP? zTE7v~c#$8ZFzB;MyaA4l1!80wZaZ)_Q4mZQ(O4t9$O2jM$X!qJfD}-p-#x~|h(~cX zj?nzq$x+TFdfW6c=MuYx7a^+R!Pg7;DI*BZ6RY8rVJ>mE)f7x0=ZXA^dt?-*8@9s+ zs5ZhXeZlA%7!a&X61gvY&B{D$*`9)A7X^f{g)DfFB{%GKqhR1!Yi!7Bs}<##Rmc9i z3$?FRGf3t5U)Gpsr^zGe0T7Y{$8&^XT|j+mPvc zBp|2yTQ(gJYXHR>kIv!YaDc$ex9y5C;DBWF+Fmwx!NGAIJd$q0ho7HZASoQyHg?7O zl3lLDtnlA-9Q8Mj=*$F-@w41NBU?fzEef>XPz>}39iLM zgWW^9i5sNp;;AdJVG^!LP0aTF{T(+32R zUeHN;=P#&ZeL*J~+qX-LhfxLoud3TF1Urd3tdlx-BzAsKnQ7pzO%9p6x^Ev$S)C1- z9cHI8owh;SKQ!&zd!z0t0_mpiZ5ll!@o_$Yp7iMHuq=6ZsY4_S2cSqz5lOg5CLqAg z;>9@0-$8&)@1t}v*bg}3S94ArHUSa7iN#ZmvxNaIVf)9%E?AJsxU)^>*lv(E-Gi~V zSV52?k}}7%_!v3>ROfUBKZ67SOd|LcNYdc@c7Dg;24~q_cFr_gZI}C2%Bf6W-<#j3Tr3UB zvapNm>w57&7Z>wi6>A)Op2Qm39d>!&ZMjH=FG^kE9V!cfA!kqhc=^c@JG+~uT;y_LlMy~v7QO0pqIJP9)>i4L756D_Zqvn z0!{H-?v0ZN2tfJ&7wvz55wfsX;Q(VX(Cq0sS7qfDKijd?7ajW4kj$G2=RwWHmFN$ zB$%G60nk-xSPoDYyRjI_8UQaZd7?QuMIiBBXPyee3+hQwiu^f>4BAh2gj5JgRSSro zg@z0e3b00Q5gij?yaX8@z7@AjvIZ?hG3Tf=RuBwpNxiTd5r!D33_kreV;B0bQXhyp z{N{b6)lP#qdGx9X))1aS5$uwHpJDY34Xp~YGBc$TTJt`r4pTvYt-)-PS{of4wC;t2z!Z!$E+%xt6oy$^~ zO#ah}$|?Ir2MSq}jA2>U4W$Z%F$j!qjuea{l}iEd^-~-!l3CT8LN|L~;k*}7!{U6O z;N>6vJoM|L*W~#a5^&eE<0%m3M>*m~SnfkJHmqnxCnqs}du`+2YM?~bW z=w_Q#|AO45D|sbrfgGpaYGu@`(P9G)=y7&kSN&w$*Q{R9@>Iyn*3Dj1xNv&;VaTVy zB(w7ExfTW9T@@h-+*aDANv{-*^IH1ZaYu>OT$%Lw@n)Lt)BDtd>iZVA&KfRUJC~b# zO**SehkL}kkjWu1!%f&90>wL=I7La$s5X}tg$+}*wv$yIP9&t^?a(+Y&b|tqEU6N^ z5ILTI2h+pRnl@NJP|wZFpsi|^I6ix?^_6)yl(0>1^XjSZXTBO{-tBB7skM4eN8MHo zOzsqey@@L7yDV1B+|R~LuLf0 z$+USgTKp{dNvR>r!gAdvr%zpX7vw?!{z8cwV2k>=SXm+)`7t&?@}XR$Ad+yQlNFi~9{f zfA~rByK!ykP2wf9CA6o*-tV1NQ{md_U6o}AhvPUN#XfBf?S=Jyk9Kc?FNxjv>4-Zc zpeANW$XM2J$$WH2eT_L;`+JR1wd;$GWjIyHDZV+y``x$Ljp;q`9h{FT-}hIUi5W$- z-_5c_?v|W{=5?dA%0lmSUYl=oR>)|1|Hk|ee_BlKUAEzJ|Ih%+eIi~x-h1Tk(V_In zsVJ2v3aEN!by3%@<_`9ab{+Tk-3_t5Y0EY*cOrIsvY!P~q5}`M!14PV#SFdkUOif% zHaRe(#szc~qVOyM=eSdCKMaaeh59om{hhB19;i}zAKfu?2TIDL$*x`tUNMm@BvP|Qks{+sOr;cbV6#ucJWp!e8Y6gEU;p{O@CCPbD0|};HYvIWoPrr_O zg+DVRYgS5E^{ZW;{QRIc{JD4#t|lw&<7nk;-<>59_Qr|_ovE2(N8%g{^M>;0+`X1* zK4UxS63U=K+&*umB3DPKYq^hCv}MM&uP!v;DUQy8J;%o7QQZmY7&Y`dE=HVh^`WnU z%G@VZ>adu8!f<+mhTW~5_5mEN#NmbK!}rsJ)1JQyyegFF?z|!T`nsl+qy9WMbt=;K z3(1;FbiPFU%k$-{RC-!Eqyr(!%6xPG=qTg`h_c!>irQF0XKR3d7{m-om7-!Iq z&uf!pL?2Gvn?<9d(5&{tBmRrAGSW&`Yg%^%9QJ%U{4hnzK8kmsq-7zHlO4EL+S0ZQ z_CIuAb3(#++t7&G*-Hflt}*FmlvYyiwVgkoiCjISu?_p!%H`DZ88@9ynGeZ!0$*BB zJw7u_i)u^Ml9tI{I#v19TCwn_azh^{C3IqK!qS`>7q(=AMh{V&+m>nb7MuBsn@rOu zDqn{v1{~r}?x8~?_x7E*)4004y(D_JnWz54<;$_0Ei~4ZW>iru+$-m_&(0gZ2NB93nEAe}v~ zE6y38Q9oU#GCQw=Xq4h@H*DOT4J?9fn72m`*emM}&hh{} zOJWlNo)o?RA^k3i;Gv{B%@HVH$QjDw`KHNkD>EyWM!&v2mm|$lyqfGlwNtPR9*KAK z6L|X|f1!qol}o)}fGHjqG&q#_1$Uk6V(4BRM+D7PVd4 zJtuG3Jj`{ipRdvh%~&s@ZLZ|ls2+==UF{nfK2?QtNM%(v)JG?u?oBi+%a86mFSOn7 zs@Z(5uMav_M|et6`uv-slUK4Si!!`cKgL}kO8b7yS)2Vf8Z+JSL^gf?xYu;?=J}?kZ<^1u&IWN; z_Mmb_nTcKx`1!&8dG-kEHb2^!Y`AjGwoH{5gH=aK^rcaj~5fydm8YFcXS^80@QaoOkW diff --git a/src/resonantinduction/battery/BlockBattery.java b/src/resonantinduction/battery/BlockBattery.java index 023c3c93..df07d278 100644 --- a/src/resonantinduction/battery/BlockBattery.java +++ b/src/resonantinduction/battery/BlockBattery.java @@ -96,6 +96,11 @@ public class BlockBattery extends BlockBase implements ITileEntityProvider } } } + + if(!world.isRemote) + { + entityPlayer.openGui(ResonantInduction.INSTNACE, 0, world, x, y, z); + } return true; } diff --git a/src/resonantinduction/battery/ContainerBattery.java b/src/resonantinduction/battery/ContainerBattery.java index de7d54ae..1b9df965 100644 --- a/src/resonantinduction/battery/ContainerBattery.java +++ b/src/resonantinduction/battery/ContainerBattery.java @@ -25,13 +25,13 @@ public class ContainerBattery extends Container { for(int slotY = 0; slotY < 9; ++slotY) { - addSlotToContainer(new Slot(inventory, slotY + slotX * 9 + 9, 8 + slotY * 18, 84 + slotX * 18)); + addSlotToContainer(new Slot(inventory, slotY + slotX * 9 + 9, 8 + slotY * 18, 125 + slotX * 18)); } } for(slotX = 0; slotX < 9; ++slotX) { - addSlotToContainer(new Slot(inventory, slotX, 8 + slotX * 18, 142)); + addSlotToContainer(new Slot(inventory, slotX, 8 + slotX * 18, 183)); } tileEntity.openChest(); diff --git a/src/resonantinduction/battery/GuiBattery.java b/src/resonantinduction/battery/GuiBattery.java index bab1ec8e..d5a00c6c 100644 --- a/src/resonantinduction/battery/GuiBattery.java +++ b/src/resonantinduction/battery/GuiBattery.java @@ -18,6 +18,7 @@ public class GuiBattery extends GuiContainer { super(new ContainerBattery(inventory, tentity)); tileEntity = tentity; + ySize+=41; } @Override @@ -27,7 +28,10 @@ public class GuiBattery extends GuiContainer int yAxis = (mouseY - (height - ySize) / 2); fontRenderer.drawString("Battery", 43, 6, 0x404040); - fontRenderer.drawString(StatCollector.translateToLocal("container.inventory"), 8, ySize - 96 + 2, 0x00CD00); + fontRenderer.drawString(StatCollector.translateToLocal("container.inventory"), 8, ySize - 96 + 2, 0x404040); + fontRenderer.drawString("Cells: " + tileEntity.clientCells + " / " + tileEntity.structure.getMaxCells(), 62, 23, 0x404040); + fontRenderer.drawString("Energy: " + tileEntity.getEnergyStored() + " / " + tileEntity.getMaxEnergyStored(), 62, 32, 0x404040); + fontRenderer.drawString("Volume: " + tileEntity.structure.getVolume(), 62, 41, 0x404040); } @Override @@ -41,5 +45,8 @@ public class GuiBattery extends GuiContainer int xAxis = (mouseX - (width - xSize) / 2); int yAxis = (mouseY - (height - ySize) / 2); + + int scale = (int)((tileEntity.getEnergyStored() / tileEntity.getMaxEnergyStored()) * 105); + drawTexturedModalRect(guiWidth + 61, guiHeight + 102, 0, 207, scale, 12); } } diff --git a/src/resonantinduction/battery/SynchronizedBatteryData.java b/src/resonantinduction/battery/SynchronizedBatteryData.java index c0ca748c..9a613f9d 100644 --- a/src/resonantinduction/battery/SynchronizedBatteryData.java +++ b/src/resonantinduction/battery/SynchronizedBatteryData.java @@ -45,7 +45,14 @@ public class SynchronizedBatteryData public void sortInventory() { - ItemStack[] toSort = (ItemStack[])SetUtil.copy(inventory).toArray(); + Object[] array = SetUtil.copy(inventory).toArray(); + + ItemStack[] toSort = new ItemStack[array.length]; + + for(int i = 0; i < array.length-1; i++) + { + toSort[i] = (ItemStack)array[i]; + } boolean cont = true; ItemStack temp; diff --git a/src/resonantinduction/battery/TileEntityBattery.java b/src/resonantinduction/battery/TileEntityBattery.java index e6d06fcf..b4fb2e12 100644 --- a/src/resonantinduction/battery/TileEntityBattery.java +++ b/src/resonantinduction/battery/TileEntityBattery.java @@ -33,6 +33,7 @@ public class TileEntityBattery extends TileEntityBase implements IPacketReceiver public float clientEnergy; public int clientCells; + public float clientMaxEnergy; @Override public void updateEntity() @@ -43,6 +44,11 @@ public class TileEntityBattery extends TileEntityBase implements IPacketReceiver if(!worldObj.isRemote) { + if(playersUsing.size() > 0) + { + PacketHandler.sendTileEntityPacketToClients(this, getNetworkedData(new ArrayList()).toArray()); + } + if(ticks == 5 && !structure.isMultiblock) { update(); @@ -65,7 +71,7 @@ public class TileEntityBattery extends TileEntityBase implements IPacketReceiver player.closeScreen(); } - PacketHandler.sendTileEntityPacketToClients(this, getNetworkedData(new ArrayList())); + PacketHandler.sendTileEntityPacketToClients(this, getNetworkedData(new ArrayList()).toArray()); } prevStructure = structure; @@ -187,20 +193,26 @@ public class TileEntityBattery extends TileEntityBase implements IPacketReceiver public float getMaxEnergyStored() { - float max = 0; - - for (ItemStack itemStack : structure.inventory) + if(!worldObj.isRemote) { - if (itemStack != null) + float max = 0; + + for (ItemStack itemStack : structure.inventory) { - if (itemStack.getItem() instanceof IBattery) + if (itemStack != null) { - max += ((IBattery) itemStack.getItem()).getMaxEnergyStored(); + if (itemStack.getItem() instanceof IBattery) + { + max += ((IBattery) itemStack.getItem()).getMaxEnergyStored(); + } } } + + return max; + } + else { + return clientMaxEnergy; } - - return max; } public float getEnergyStored() @@ -235,13 +247,11 @@ public class TileEntityBattery extends TileEntityBase implements IPacketReceiver clientEnergy = input.readFloat(); clientCells = input.readInt(); + clientMaxEnergy = input.readFloat(); - if(structure.isMultiblock) - { - structure.height = input.readInt(); - structure.length = input.readInt(); - structure.width = input.readInt(); - } + structure.height = input.readInt(); + structure.length = input.readInt(); + structure.width = input.readInt(); } catch(Exception e) {} } @@ -252,13 +262,11 @@ public class TileEntityBattery extends TileEntityBase implements IPacketReceiver data.add(getEnergyStored()); data.add(structure.inventory.size()); + data.add(getMaxEnergyStored()); - if(structure.isMultiblock) - { - data.add(structure.height); - data.add(structure.length); - data.add(structure.width); - } + data.add(structure.height); + data.add(structure.length); + data.add(structure.width); return data; }