From 573c21d8ad12770f00bdca8efb69b099ac38816a Mon Sep 17 00:00:00 2001 From: Aidan Brady Date: Sun, 30 Dec 2012 16:34:45 -0500 Subject: [PATCH] v5.0.3 Release *Synchronized sound system around SoundHandler.sounds ArrayList. *Bumped version to 5.0.3. *Removed unbalanced Enriched Iron uses. *Fixed block IDs. *Replaced Refined Steel with Steel. *Replaced Redstone with Bronze. *Updated to use Forge's new block registration system. *Fixed bronze Metallurgic Infuser recipe. *Bumped Advanced Solar Generator output to 512v. *Made Platinum Compressor cooperate with Ore Dictionary. *Fixed infusion notification. *Revamped and removed bugs in sound system. *Fixed crash when removing iterated sounds. *Fixed configuration usage. *Other minor bugfixes and formatting. --- bin/minecraft/armor/bronze_1.png | Bin 0 -> 1965 bytes bin/minecraft/armor/bronze_2.png | Bin 0 -> 955 bytes bin/minecraft/armor/redstone_1.png | Bin 2164 -> 0 bytes bin/minecraft/armor/redstone_2.png | Bin 1608 -> 0 bytes .../resources/mekanism/textures/items.png | Bin 28663 -> 29123 bytes .../resources/mekanism/textures/terrain.png | Bin 21168 -> 21129 bytes src/minecraft/mekanism/api/InfusionType.java | 4 +- .../mekanism/client/ClientProxy.java | 15 ++ .../mekanism/client/ClientTickHandler.java | 5 +- src/minecraft/mekanism/client/Sound.java | 110 ++++++----- .../mekanism/client/SoundHandler.java | 44 +++-- src/minecraft/mekanism/common/BlockBasic.java | 2 +- .../mekanism/common/CommonProxy.java | 15 +- .../mekanism/common/ItemBlockBasic.java | 4 +- src/minecraft/mekanism/common/ItemDust.java | 2 +- src/minecraft/mekanism/common/ItemIngot.java | 2 +- src/minecraft/mekanism/common/Mekanism.java | 58 +++--- .../common/TileEntityBasicMachine.java | 63 ++++--- .../common/TileEntityMetallurgicInfuser.java | 32 +++- .../common/TileEntityPlatinumCompressor.java | 14 +- src/minecraft/mekanism/common/Version.java | 2 + .../generators/common/MekanismGenerators.java | 2 +- .../TileEntityAdvancedSolarGenerator.java | 2 +- .../mekanism/tools/common/MekanismTools.java | 178 +++++++++--------- 24 files changed, 315 insertions(+), 239 deletions(-) create mode 100755 bin/minecraft/armor/bronze_1.png create mode 100755 bin/minecraft/armor/bronze_2.png delete mode 100755 bin/minecraft/armor/redstone_1.png delete mode 100755 bin/minecraft/armor/redstone_2.png diff --git a/bin/minecraft/armor/bronze_1.png b/bin/minecraft/armor/bronze_1.png new file mode 100755 index 0000000000000000000000000000000000000000..b3e0d96519e2793f46230030d6682a8a2222e76b GIT binary patch literal 1965 zcmV;e2U7TnP)_7C)?|De5zq8=b=D>W#U z%Hg6(dQqu2edY1p80(NL>%Fj$;l2Oj0FdMkYdzk3+OZ=HBy$VdlMlec zaz;GWz3~6-?r9h&!q@5U)6jVx@G`j~vpar?{ND1?cIql3*2_;Gj>V2BrdIBYg)8d{i zaqRxt-+HPebgicE)%oMQiw_Np{eAXwOm012f8zwLBjXqcCUuyKCe(1@N}GD0X8R9L z0bqVJ0f6(cb&KTEwGIF;ygm)U-4DlcnIkMotQTCr)#?2fP%DMqeYCqcpe1qYv8g4= z9o0y2?%h$GgUw$qBL)0>KB3dLRI7?4FIW;!H3+mI)RH){v{S?ULW+(GFqbA9XbCn_ z80X14mifiJ_W)$Zu{7CWxtTN2ueo@&O&nY5eVS^dSX|1xH1*#5Pu}0vmA@ws414Q5 zfBE?^HuID#if1=O0EFe@!<7^)d@zQw#W5{C2&fEb>WjMf08}HzrK^RcJ%1(Un+MK4 za8I6lca%V@?s(T*_xAy(4vzRJ5Xe{-RCk^vD_Bxh3hzB(P=FJKs`p87y(gI7KkNaX zf4YS8kmU~J;M2tvB}LDhsn2clQwK+UC6Y)fNi)liAI?11UE~uJYp%kTU%lennWNP) zK=1qi^Y88QX=bUEG}Tb>?02Uh>3!A|^v$-RofINywPf}(uHEb~yk~|;3r=5dt-ln0 zW<$vBX3kUfLLv4#N`d6g;W26@Ni|aI55T|X65`l0H=lJyPcLJzKj8X&N}vU+627NZ z;KF;OUMq>Qj@)=M<4{sCvUm2so_+GbuvbzLXn}LEX)t6lwzN8iK#BXR!t9|DAB76% z9P^7ggZ%+X?kEM4C{$SINwY$&21=l$pjOuOR}?oFGo%FPShLzZvJ_jqn=|(IX_h7% zT|qUvXNKP|@9?V%a`w=Oe`!mVE1#xRL%}oO`76oM39jBw$P&lSw@-7@jQBXVC@Ba_ zlHolw%pBTDC6c`M&KUqcd4CsiV!OS^i320}+%x*)j{*3@Pj_%j3dZ-HUM;P)YldZJpIgw1hy3 zu2FjD@EF^-)EIqpmb)L0(^@v<)}vRPBq@q}19h(%D~EzK_bhxc#+`+Xjr9QMaqDl{JI4VEq|TjuibBg|UTYw(23QCaBht zafA?*$`UES7)PLs7nf2Zr6rzfU{>;Lo>-)SQdx5GYMWA7a&xgTUrV7R$sBhUvcg-? zigsc+dpRaEjw~ti&xs379=2jXG60oO(&`wp#E}_CsVs@7iY*ZZ0^bL(yJk=o0eb-Ia(i4^>ff6_m^}41n4rr%_ zG!Ir7V7m+mOOiNVf6Glu0bhILBwM%CkW!Kx&(`mqV%u|70wuWB%-OkjhEPjx%q2u+ z#m>Dm?0T_}p@E>wfM(PDPX=f$QNni_kXw%w&}UUs+MFYifO(FpyNM z>)$Tx8*>SprW)kd(@qRG=QB1>HmLRm)M`0_65ROpH>man3=IYZTH!w0O}(xuElS#% zqj@7Cx4xjWE^56L1*J6(w8Z9~p$!qav7G*UtH=v0*4wI%SngPqC>Z0tr@3s_AAoX2 zkz0=tg4}vG4Ta3jXMAZWWb?*|#n`fOC|of;6;gn6j!x!jwG6NBJ9FP2{qw#Ze*23x zz;(^f%eRsTHd1GQvC~I^B2WczoxBh^pNCaRg9l2{SNEL}rw)$z%oLttp#Q(|vF-c4^9IE9{$bx~7Yb~k zU*jCzTD@w2yOn>SX~$BpYob8W>J;Z5cVpu}e?)Y&mozY500000NkvXXu0mjf30tx3 literal 0 HcmV?d00001 diff --git a/bin/minecraft/armor/bronze_2.png b/bin/minecraft/armor/bronze_2.png new file mode 100755 index 0000000000000000000000000000000000000000..e50712ecd893177897d93858be69903821d57e88 GIT binary patch literal 955 zcmV;s14R6ZP)VGd000McNliru+zAT-2{vql*JA(x14v0k zK~!ko?Up@n990yCpZhs8yOXRx#A4auQ$QpX6hIV~W##uEQ6P#4npAWY{DMeSC`D56 z8`2_(kwOz;fsEtCHul?Yibf%blU%lr&2Rb@BIyyQ!IyyQ! zIyyQ!o;SqV!rB+_hS*9Xqp%8=KKxc(WC7&ag3*GjAAiT<(6T$OFT4Z(CO{f%_~r&y zOJ-AZ;RVoV3whPB@uZ-1f!Z|}KLhUHx)uOt2ZrImGMdzAB`NEMvJOZAjSoyF4Mw$b zkfxfsR8uwZ+DFr!5qfrDSe&!iShBvEqoiPIXaK|dW=`D%-h8>w(YWU6L4_2sIA`$z zwnoMDXFyT=RtYU>d_c6^kW5pQiA>cnuD>UXC+#~tBWy>5A5!h0Bmg+{PJY_Lr_ccNAF81DXWI;*tJ`s z5^RraUY~ffN$Y?#)l`MY8p-^O;m0rE3q|D_4lJA71^W}nTwh~jd72S<)?j1FZ=;IK ziKgFI6t$-+JpI1n+3IahS}U&uWz|qOf%iXMJJ+DmTRR1L*-+FTqXbX)Dk|skp`G_e z34T~VVt&RjKWi{rF`Bf8i;W~JJs*6wMs;tM-EqxQPjUU`gVP@rcURF8ipujiQDmj( z`ppL%e7(ZYk8>Iyc>9y@|8l6}?kWI3ZDi-~fE%Ab{8tL!zjZC_++M~e?HG+tg7Nsy z3eLAPT0Q+ApBW;^IAq1KrPQU%9tMET%c3_YavSY{i$dPA) zo!iUI%xKa-1*K~|0YPL0)<}A>=B0%M?>*JMReGt$Ie(fzv6WQL|NjLT9oAe~h)H^i zrC~(l1D6My+65l2kLkslH?G9^0LQr_&l;9q4D=&Uqy^(Fkd>Y)_iXMJSS@+$l^y_> d4%E2|@H<~WVZ>+l5D)+W002ovPDHLkV1nCBv)KRu literal 0 HcmV?d00001 diff --git a/bin/minecraft/armor/redstone_1.png b/bin/minecraft/armor/redstone_1.png deleted file mode 100755 index de670b471dac8a79df24cc17e52f977dc8b44161..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2164 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

4=1-mBK$@nP;vgI%!+eYXyn)3WEM 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νbR1)tU*8a_& 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 Dpv4lw delta 14007 zcmeHt`B#$b`>xt(?XohnGKbQ%w6e*}0WmX8&7sW5k=kXZrj`>4!fU(C%*v9KoN!1* zMWu2Ug?3t|mN=6Gl2eE%B#6j-==1rWv(7(oemkspu~-bx^Kw7;a9!7ZCl@QfQ(XS5 zfsM`DUPunZAnB3$gMU_sU3?7*_1K~xuToRL;qQo)a}kZbDQk~ldMSaMtzNI1YMWsDbt)%{@@<}ObAt74r25wK zHyLL-Ucf+CcvI+EoUCf9oILbx{uRtY6L7cBq;&Q6XI>RfZ0vnIlL&wPV-NDJW4PGc zQBLW4XdgQgEGQZ~f?#`HMfIncE`7_ZW`#GxO)C(`ljUQNv(dk2FwpK9;wxIL3yYF% zZi*DC8WtvSxuLtQ+7jQq~elL7g{q3Me43P{;MhWO+dmII{x=y-*O;U3C}KLp6MsEkqM&*6CM-Sl~bqFz@*^QAW=VLB#~>7(pXNNI(T zOvjJ{Ye?mm0|OiWm5Didp`ZNs?)05BSNY<1zcHg^-;~fZr}Mz+5g^VB#RaoqHg8P$ z3_ylyygw?8Vz6^&!$#}&oQHbGwvsm z=EK7g0KcAS449~L8bhr$f%#sE;O>!XJuW(LnneJPRLY~oMbt(8)H|*r-aJRJR92S- z+|ux~GB}g(lK;GeJbHTFmIS5Mde{uDq`itbBKCRUM~-W5|@*fCBbb$9Dm zk9?dwCe+6T;IvjPj?jBsHy~txiZssKbl6Zn8csYsni$;PNpCpTg4%8@eRJbQ<`pBi z16}mG!~7@X4RWhAk-mD|=*p`g&U{UFhL)Cl>shtariVusJ%cAmNqxju~IU!xbVLA^iwilbYc2Qhf zs{t#riXMf&;J!<~4$E#yo2X-?P-ro!23`KD+HfRn24ZwNwCY9V#1SH+-#mtdi%dMe zRUk1HqfG-Nv%%K$KRhF!H}N8l0O+sZ47OMqZ@<(U0()(L|iGo@)^D24ou zCsSm4i3pB6@+O`NJZGp`e>LTs{O*oV|47NWeov=iM z(XE^ylE+%%=O^pOjom@%@w`{e4Hg2bqbhuCX zqRTp2NaV_o5i@7!Pm9S*pRj}8s!s}QaviBSSnjiE_Cb&RbfKCt)RN6Nr2w+M5s+6t z6D@RUQW2IF2Q)m-WC1m3|>F~q|B5Kl5QOlUX>Xm|1;h#+}v)A8c_w`aM6I2pK^ z=?ls}1H_!2bg}fvDg7S3PI9>er^_D7Sk2fxp&-VRvld0LPT+?UB zHI1Me{NpOSw-#(&Z>yxTrPN-L2)^jM0AAyOaIwWe5r_Q8fWvhWy?F}b~)`Siggw^<`^?Asg59P3N63hySdC4aiz>N6W5 z$taT8zqTDwp%;yrj6T(U^*fimG}=wcUAozZkfKXA90cTH zaOt4GYELKSA9c5M`)!>(pubMn@Lo%Vz2Hc2Ah)1fC5O1}cTcW7V<4(OY9IR5aVe1? zi>~i1NYdHevef6&J5n1;47R)*W5=HnnsXlDK!`3Yd3Mw7ZA}2+zv^R=`IB(X)ss%m z-Hf?SkfAaM?f+PAr_zJqwFzjqjcP#UitEELge)8wYoPLOf91jW+cAy=4+L+6SNKe4 zddEa3(0oL-RwY03LmQZvN!gy^X~k|?4VE(9(*t*lu$~x(DFwB#sVs?rP#Opxq|#*0 z)D~r6B?%}kG8h1@fsI|13_P&jQ~7n;IA|X!(iw8GUVBDP6%>C-7ZCvNT;60D13>^{ zKB_;4%dm5_o1xO{i;^{Mv{6Wt9hC=ZqVP<8cfDjFSvbotGMwiW&0qB{Wb=%WB?=(C zh_;Ix4=1|4uVTnkHRJUhOh zE=}|Pu_Y-x4lA;zosA++mDlf7pWUs*j*hSD@-}!oOPLG9nU;~noI_a44pQ3xi6G9-|u>8G5JLQb^6AL zCT58N>XWLGLBV7=s2J~8^{V4*mYEQ@c1*IcfBZEADu}OK${yzla><-3Adf+a9W$35 zq}3nKk55c}Rz#8NA|70VC;2oEY?z+S*4%!jbR_(`{;KoVzgl!7&K1ueOt@mdYWKo! zCFMZi;D=S}2eMbPt@+8f#t--1#N6JfvL)f;GyR`tN}cRAzvE<8?c^{nb=4&0HiIpP zyj=>Pb?t33K&DR1xpEPIrHd^Sw2VSQ8(X@dGqj!-@g*VGRs(W>$UBI6R27-C#>@A*Lv@<_W|+i#aT54A z9qIEC_x9dh(EZQFZ#{HKrch?M1+z5w124h~Dm_4y$)$kYss48S?`8UFBTdtkl`467 zOPWUg5TB^M>%}U%zkDt?!ksSo0v_Zgj)cMl<1`Kk^t>o`spaj`(r7^A#Ug;XI9N5Q zM$53#$WJQ}8SCzLCS0Jm$j(AkI>(nZN8BOchJd^^Eo*J_7A|S4^sjF~%WG5&{-mGT zGkT~cQ}OVPR8ZlHZXSHK1N4c`rgG*e4+cWjzYn`8x@DZ`OXL(rxzuT?NzM?5EZ_Iv z7UirAePccxmJK5QQ)B)?vS*B{K@B@_Me$SO62p{{wByaDt8X`ma2gX>8n(c6u zj4Sa9Fj@CczQ(E+HCt>g7yq~_30h0)#N+~_!Z}CptAkUpQJ%k?P3)n;pVk)>mXQLY>CSu9f%%q&BTs?kRNu(R_p6zTq5C?utl8-GC$~lAg zjyFk-dtv3SDMS1fe1M!}E^uXe46bHK`s=eVhdtu{2P!B6<_>lB&5!BWM{L!dseQ0q zqDBqX)Ez41uE3Ii?RR3r6C%4>n-FsDiYM9X>GlkhUoH(9cWtP;qk+^V$lCfClqrf; z*9}-T2T`1i7fu=>P3@MPM;>EYoFlguNQkt(6sU6(>k4_>>^NWdT*UdO?8RtVfYKn< za~(UNhTCPgAWdQmF}1jO5TgpG^!f;Hg`RBx|BH!oswhu4QY<;{Vvf%YCBcfZ3V)XuD$ZrzR|!4LntRoH~e`av_91 z2qxfILfEpTy}e%}0Rp`M_`4yl^-;%3SQ89Geu)t$Z-v1xpF?|?tkutj9_#mS;QrQU z2!S}shN$OWPnN_vK;~;!0cJsp2gS+Q8~))ce0u{DD}<1^=|xYtGw+Ga5JwYbV`v6D z!&7*D#K$VPQBhy@vSemaVWrv8egQ~85V^+5LI{yR7%PyWD3koW zEsHW~WAl@B;_=mQOa|=QawRe5BqHN*uyk$0xRd}wnjfJ+DRO+y zvJAP97v(1UMHsHG)jE}SJ~ejP*eD08x+l3W(pgu_MG#A0%DRDur&h_&Yq;ld8=pt{0zm&?N~+uJY*(*% zfnVu8Qb6r@Q(J!TR%+7x2q35OhysGSxDg>AVL=Yu%zi5y0+6-PmkH`kI>21g=|p4u z+IG&B;bt@16bvLU1IY(IMe!8XkBzGL|BMuJmoUiR(?zAI!@s{EP$lI~_vu6C1_jv7 zFT)Au$~LlxBx&;$X0MD_pP#k^55}RU}w!{K+GyO>Ws$=I`j+aCR zPNYW27y$Mhin&5R^ew`f{BE(M4Fv*fS-hom&f}(a*On_JG5qJDvCdCrL%~9v+Ltf= z_aaACpHr3=>q)Y#A;E5?0?pMku@_Vr0rdu=6f_}ZdOE|OXkeTr(F)FS_*2(y^LHo{ zl=BhFomerZd|4DzPwvxTYqadOh_`HlI05MjhymkpVIZU#8!mz0NasFm?WPr}=Yqb6 z`PLbD(TFC4*kzG_Dv-h$S6Y~1u>lan)E$LlK;#3YE321IehhxmZt6}(n4ZB+S~HkR zwUF&!91=KFh-&CX;mZyvrICmba>o?8sFq65P>GW?jY1J~env-jpMgzaoRTGFIos8~jqH6?^~3LdcpC`JhptiNux^ZC z6l^iZNwsp+QXj2gwy~YSB=Tw|*sOSj%nPJQKiur?O)$Zq(jptdqJpd)tY8Wt61_ZR2@|mV zWd(ntxRfMD{Axl#b%@po;aj%n=B7KBQT0Igh6m&N`2wX<|H_>QE`w^-ch`Z0U1u># zx+A88ymZs9REJAyPKqC`+%`b+irGUzaFj?VX}CJ(TnRPl%6f;O8F|sbi;?G+h#3;f z2bahH=INyA0GJ|2u8&@YySEhzkcXV8eBW59*gAZW$|rZ}h^O7+TFFK3j?DysC!p4$ z+?o^5`%|F)_Y_puBw8R#uR1!wg9tNE$%d$TwI~s!s@Ld|t(r=hy9`v+@sA>al^#4+ zeYQtOdSy~HEBy8R;@re*=AEZQ{6mvA430@NY$?GsRF4^9CGSd)jvcW;wv$=Il;QnI z7&)6A8Xu06bh{UkMGO-FM;{#`sFdeeBRkE#jx=e&;|y=`m*$Rx89 zNjmOXT6yO|uJsGv`en~YuE>Teg@TI>qOkVb4?RP|^hGOSjz+rMdnOC$!nfoBu~yWY zKMKoBlVd$ArgG=S2>f5=>ImIHu`~!IJK+x|2UwKiH|GKc`?k2Z#s4Q#uHD+Y(?XFi zqUw`KzwJc!(h^r@c$49}VoohJ0HoS+LtBd_5&7e4Mmz­ewC#c#P`ESGwwhtxC_ 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 diff --git a/src/minecraft/mekanism/api/InfusionType.java b/src/minecraft/mekanism/api/InfusionType.java index 862bd23f6..2417e46fc 100644 --- a/src/minecraft/mekanism/api/InfusionType.java +++ b/src/minecraft/mekanism/api/InfusionType.java @@ -1,7 +1,5 @@ package mekanism.api; -import mekanism.api.Tier.EnergyCubeTier; - public enum InfusionType { COAL("COAL"), @@ -20,7 +18,7 @@ public enum InfusionType } } - System.out.println("[Mekanism] Invalid tier identifier when retrieving with name."); + System.out.println("[Mekanism] Invalid infusion identifier when retrieving with name."); return NONE; } diff --git a/src/minecraft/mekanism/client/ClientProxy.java b/src/minecraft/mekanism/client/ClientProxy.java index 0c40d76b4..7ec709e58 100644 --- a/src/minecraft/mekanism/client/ClientProxy.java +++ b/src/minecraft/mekanism/client/ClientProxy.java @@ -165,4 +165,19 @@ public class ClientProxy extends CommonProxy { Mekanism.audioHandler = new SoundHandler(); } + + @Override + public void unloadSoundHandler() + { + synchronized(Mekanism.audioHandler.sounds) + { + for(Sound sound : Mekanism.audioHandler.sounds) + { + sound.stop(); + Mekanism.audioHandler.soundSystem.removeSource(sound.identifier); + } + + Mekanism.audioHandler.sounds.clear(); + } + } } diff --git a/src/minecraft/mekanism/client/ClientTickHandler.java b/src/minecraft/mekanism/client/ClientTickHandler.java index e00e77e46..bd44f748b 100644 --- a/src/minecraft/mekanism/client/ClientTickHandler.java +++ b/src/minecraft/mekanism/client/ClientTickHandler.java @@ -32,7 +32,10 @@ public class ClientTickHandler implements ITickHandler @Override public void tickEnd(EnumSet type, Object... tickData) { - Mekanism.audioHandler.onTick(); + synchronized(Mekanism.audioHandler.sounds) + { + Mekanism.audioHandler.onTick(); + } } @Override diff --git a/src/minecraft/mekanism/client/Sound.java b/src/minecraft/mekanism/client/Sound.java index ad2a5f822..18a2550fb 100644 --- a/src/minecraft/mekanism/client/Sound.java +++ b/src/minecraft/mekanism/client/Sound.java @@ -17,24 +17,21 @@ import paulscode.sound.SoundSystem; */ public class Sound { - /** The PaulsCode SoundSystem */ - public SoundSystem soundSystem; - /** The bundled path where the sound is */ public String soundPath; + /** A unique identifier for this sound */ public String identifier; /** X coordinate of this sound effect */ public int xCoord; + /** Y coordinate of this sound effect */ public int yCoord; + /** Z coordinate of this sound effect */ public int zCoord; - /** The world in which this sound is playing */ - public World worldObj; - /** Whether or not this sound is playing */ public boolean isPlaying = false; @@ -48,25 +45,26 @@ public class Sound * @param y - y coord * @param z - z coord */ - public Sound(SoundSystem system, String id, String sound, World world, int x, int y, int z) + public Sound(String id, String sound, World world, int x, int y, int z) { - soundSystem = system; - soundPath = sound; - identifier = id; - worldObj = world; - xCoord = x; - yCoord = y; - zCoord = z; - - URL url = getClass().getClassLoader().getResource("resources/mekanism/sound/" + sound); - if(url == null) + synchronized(Mekanism.audioHandler.sounds) { - System.out.println("[Mekanism] Invalid sound file: " + sound); + soundPath = sound; + identifier = id; + xCoord = x; + yCoord = y; + zCoord = z; + + URL url = getClass().getClassLoader().getResource("resources/mekanism/sound/" + sound); + if(url == null) + { + System.out.println("[Mekanism] Invalid sound file: " + sound); + } + + Mekanism.audioHandler.sounds.add(this); + Mekanism.audioHandler.soundSystem.newSource(false, id, url, sound, true, x, y, z, 0, 16F); + Mekanism.audioHandler.soundSystem.activate(id); } - - Mekanism.audioHandler.sounds.add(this); - soundSystem.newSource(false, id, url, sound, true, x, y, z, 0, 16F); - soundSystem.activate(id); } /** @@ -74,13 +72,16 @@ public class Sound */ public void play() { - if(isPlaying) + synchronized(Mekanism.audioHandler.sounds) { - return; + if(isPlaying) + { + return; + } + + Mekanism.audioHandler.soundSystem.play(identifier); + isPlaying = true; } - - soundSystem.play(identifier); - isPlaying = true; } /** @@ -88,13 +89,16 @@ public class Sound */ public void stop() { - if(!isPlaying) + synchronized(Mekanism.audioHandler.sounds) { - return; + if(!isPlaying) + { + return; + } + + Mekanism.audioHandler.soundSystem.stop(identifier); + isPlaying = false; } - - soundSystem.stop(identifier); - isPlaying = false; } /** @@ -102,31 +106,37 @@ public class Sound */ public void remove() { - if(isPlaying) + synchronized(Mekanism.audioHandler.sounds) { - stop(); + if(isPlaying) + { + stop(); + } + + Mekanism.audioHandler.sounds.remove(this); + Mekanism.audioHandler.soundSystem.removeSource(identifier); } - - Mekanism.audioHandler.sounds.remove(this); - soundSystem.removeSource(identifier); } - /** Updates the volume based on how far away the player is from the machine + /** Updates the volume based on how far away the player is from the machine. * - * @param entityplayer - player who is near the machine, usually Minecraft.thePlayer + * @param entityplayer - player who is near the machine, always Minecraft.thePlayer */ public void updateVolume(EntityPlayer entityplayer) { - float volume = 0; - if (!isPlaying) - { - volume = 0.0F; - return; - } - - double distanceVolume = entityplayer.getDistanceSq(xCoord, yCoord, zCoord)*0.01; - volume = (float)Math.max(Mekanism.audioHandler.masterVolume-distanceVolume, 0); - - soundSystem.setVolume(identifier, volume); + synchronized(Mekanism.audioHandler.sounds) + { + float volume = 0; + + if (!isPlaying) + { + return; + } + + double distanceVolume = entityplayer.getDistanceSq(xCoord, yCoord, zCoord)*0.01; + volume = (float)Math.max(Mekanism.audioHandler.masterVolume-distanceVolume, 0); + + Mekanism.audioHandler.soundSystem.setVolume(identifier, volume); + } } } diff --git a/src/minecraft/mekanism/client/SoundHandler.java b/src/minecraft/mekanism/client/SoundHandler.java index 42c42b45f..95b8c4167 100644 --- a/src/minecraft/mekanism/client/SoundHandler.java +++ b/src/minecraft/mekanism/client/SoundHandler.java @@ -1,9 +1,11 @@ package mekanism.client; import java.util.ArrayList; +import java.util.Collections; import java.util.List; import java.util.Random; +import mekanism.common.TileEntityBasicMachine; import net.minecraft.world.World; import paulscode.sound.SoundSystem; import cpw.mods.fml.client.FMLClientHandler; @@ -19,7 +21,7 @@ public class SoundHandler /** The PaulsCode SoundSystem */ public SoundSystem soundSystem; - public List sounds = new ArrayList(); + public List sounds = Collections.synchronizedList(new ArrayList()); public float masterVolume = 0; @@ -35,13 +37,18 @@ public class SoundHandler public void onTick() { - for(Sound sound : sounds) + synchronized(sounds) { - if(FMLClientHandler.instance().getClient().theWorld != null && FMLClientHandler.instance().getClient().thePlayer != null) - sound.updateVolume(FMLClientHandler.instance().getClient().thePlayer); + for(Sound sound : sounds) + { + if(FMLClientHandler.instance().getClient().thePlayer != null && FMLClientHandler.instance().getClient().theWorld != null) + { + sound.updateVolume(FMLClientHandler.instance().getClient().thePlayer); + } + } + + masterVolume = FMLClientHandler.instance().getClient().gameSettings.soundVolume; } - - masterVolume = FMLClientHandler.instance().getClient().gameSettings.soundVolume; } /** Create and return an instance of a Sound. @@ -56,26 +63,25 @@ public class SoundHandler */ public Sound getSound(String name, String path, World world, int x, int y, int z) { - if(soundSystem != null) + synchronized(sounds) { - return new Sound(soundSystem, getSoundName(name), path, world, x, y, z); - } - else { - soundSystem = FMLClientHandler.instance().getClient().sndManager.sndSystem; - return new Sound(soundSystem, getSoundName(name), path, world, x, y, z); + String s = getIdentifier(); + System.out.println(s); + return new Sound(s, path, world, x, y, z); } } /** - * Get a unique identifier for a sound effect instance by getting adding a random - * number between 0 and 10,000 to the end of the effect's name. Example: - * EnrichmentChamber_2859 - * @param s - sound name + * Get a unique identifier for a sound effect instance by combining the mod's name, + * Mekanism, the new sound's unique position on the 'sounds' ArrayList, and a random + * number between 0 and 10,000. Example: "Mekanism_6_6123" * @return unique identifier */ - public String getSoundName(String s) + public String getIdentifier() { - Random random = new Random(); - return s + "_" + random.nextInt(10000); + synchronized(sounds) + { + return "Mekanism_" + sounds.size()+1 + "_" + new Random().nextInt(10000); + } } } diff --git a/src/minecraft/mekanism/common/BlockBasic.java b/src/minecraft/mekanism/common/BlockBasic.java index e989122b2..e8f217970 100644 --- a/src/minecraft/mekanism/common/BlockBasic.java +++ b/src/minecraft/mekanism/common/BlockBasic.java @@ -23,7 +23,7 @@ import net.minecraftforge.common.ForgeChunkManager; /** * Block class for handling multiple metal block IDs. * 0: Platinum Block - * 1: Redstone Block + * 1: Bronze Block * 2: Refined Obsidian * 3: Coal Block * 4: Refined Glowstone diff --git a/src/minecraft/mekanism/common/CommonProxy.java b/src/minecraft/mekanism/common/CommonProxy.java index 4af82d3d4..fd7c33c22 100644 --- a/src/minecraft/mekanism/common/CommonProxy.java +++ b/src/minecraft/mekanism/common/CommonProxy.java @@ -34,7 +34,7 @@ public class CommonProxy /** * Gets the armor index number from ClientProxy. - * @param armor indicator + * @param string - armor indicator * @return armor index number */ public int getArmorIndex(String string) @@ -53,10 +53,10 @@ public class CommonProxy Mekanism.oreBlockID = Mekanism.configuration.getBlock("OreBlock", 3002).getInt(); Mekanism.obsidianTNTID = Mekanism.configuration.getBlock("ObsidianTNT", 3003).getInt(); Mekanism.energyCubeID = Mekanism.configuration.getBlock("EnergyCube", 3004).getInt(); - Mekanism.nullRenderID = Mekanism.configuration.getBlock("NullRender", 3007).getInt(); - Mekanism.gasTankID = Mekanism.configuration.getBlock("GasTank", 3009).getInt(); - Mekanism.extrasEnabled = Mekanism.configuration.get("ExtrasEnabled", Configuration.CATEGORY_GENERAL, true).getBoolean(true); - Mekanism.oreGenerationEnabled = Mekanism.configuration.get("OreGenerationEnabled", Configuration.CATEGORY_GENERAL, true).getBoolean(true); + Mekanism.nullRenderID = Mekanism.configuration.getBlock("NullRender", 3005).getInt(); + Mekanism.gasTankID = Mekanism.configuration.getBlock("GasTank", 3006).getInt(); + Mekanism.extrasEnabled = Mekanism.configuration.get(Configuration.CATEGORY_GENERAL, "ExtrasEnabled", true).getBoolean(true); + Mekanism.oreGenerationEnabled = Mekanism.configuration.get(Configuration.CATEGORY_GENERAL, "OreGenerationEnabled", true).getBoolean(true); Mekanism.configuration.save(); } @@ -75,6 +75,11 @@ public class CommonProxy */ public void loadSoundHandler() {} + /** + * Unload the sound handler. + */ + public void unloadSoundHandler() {} + /** * Get the actual interface for a GUI. Client-only. * @param ID - gui ID diff --git a/src/minecraft/mekanism/common/ItemBlockBasic.java b/src/minecraft/mekanism/common/ItemBlockBasic.java index e21e64507..4dff935cc 100644 --- a/src/minecraft/mekanism/common/ItemBlockBasic.java +++ b/src/minecraft/mekanism/common/ItemBlockBasic.java @@ -7,7 +7,7 @@ import net.minecraft.item.ItemStack; /** * Item class for handling multiple metal block IDs. * 0: Platinum Block - * 1: Redstone Block + * 1: Bronze Block * 2: Refined Obsidian * 3: Coal Block * 4: Refined Glowstone @@ -49,7 +49,7 @@ public class ItemBlockBasic extends ItemBlock name = "PlatinumBlock"; break; case 1: - name = "RedstoneBlock"; + name = "BronzeBlock"; break; case 2: name = "RefinedObsidian"; diff --git a/src/minecraft/mekanism/common/ItemDust.java b/src/minecraft/mekanism/common/ItemDust.java index 3d8d25a70..09f16db8f 100644 --- a/src/minecraft/mekanism/common/ItemDust.java +++ b/src/minecraft/mekanism/common/ItemDust.java @@ -8,7 +8,7 @@ import net.minecraft.item.ItemStack; public class ItemDust extends ItemMekanism { public static String[] en_USNames = {"Iron", "Gold", "Platinum", - "Obsidian", "Diamond", "RefinedSteel"}; + "Obsidian", "Diamond", "Steel"}; public ItemDust(int id) { diff --git a/src/minecraft/mekanism/common/ItemIngot.java b/src/minecraft/mekanism/common/ItemIngot.java index b0b8c6634..b7ab72dc8 100644 --- a/src/minecraft/mekanism/common/ItemIngot.java +++ b/src/minecraft/mekanism/common/ItemIngot.java @@ -7,7 +7,7 @@ import net.minecraft.item.ItemStack; public class ItemIngot extends ItemMekanism { - public static String[] en_USNames = {"Obsidian", "Platinum", "Redstone", "Glowstone", "RefinedSteel"}; + public static String[] en_USNames = {"Obsidian", "Platinum", "Bronze", "Glowstone", "Steel"}; public ItemIngot(int id) { diff --git a/src/minecraft/mekanism/common/Mekanism.java b/src/minecraft/mekanism/common/Mekanism.java index 3488a2b03..3bb72058d 100644 --- a/src/minecraft/mekanism/common/Mekanism.java +++ b/src/minecraft/mekanism/common/Mekanism.java @@ -25,10 +25,12 @@ import cpw.mods.fml.common.Mod.Init; import cpw.mods.fml.common.Mod.Instance; import cpw.mods.fml.common.Mod.PostInit; import cpw.mods.fml.common.Mod.PreInit; +import cpw.mods.fml.common.Mod.ServerStopping; import cpw.mods.fml.common.SidedProxy; import cpw.mods.fml.common.event.FMLInitializationEvent; import cpw.mods.fml.common.event.FMLPostInitializationEvent; import cpw.mods.fml.common.event.FMLPreInitializationEvent; +import cpw.mods.fml.common.event.FMLServerStoppingEvent; import cpw.mods.fml.common.network.NetworkMod; import cpw.mods.fml.common.network.NetworkRegistry; import cpw.mods.fml.common.registry.EntityRegistry; @@ -42,7 +44,7 @@ import cpw.mods.fml.relauncher.SideOnly; * @author AidanBrady * */ -@Mod(modid = "Mekanism", name = "Mekanism", version = "5.0.2") +@Mod(modid = "Mekanism", name = "Mekanism", version = "5.0.3") @NetworkMod(channels = {"Mekanism"}, clientSideRequired = true, serverSideRequired = false, packetHandler = PacketHandler.class) public class Mekanism { @@ -64,7 +66,7 @@ public class Mekanism public static Configuration configuration; /** Mekanism version number */ - public static Version versionNumber = new Version(5, 0, 2); + public static Version versionNumber = new Version(5, 0, 3); /** Mekanism creative tab */ public static CreativeTabMekanism tabMekanism = new CreativeTabMekanism(); @@ -94,8 +96,8 @@ public class Mekanism public static int oreBlockID = 3002; public static int obsidianTNTID = 3003; public static int energyCubeID = 3004; - public static int nullRenderID = 3007; - public static int gasTankID = 3009; + public static int nullRenderID = 3005; + public static int gasTankID = 3006; //Extra Items @@ -177,13 +179,13 @@ public class Mekanism "*", Character.valueOf('*'), new ItemStack(BasicBlock, 1, 0) })); CraftingManager.getInstance().getRecipeList().add(new ShapedOreRecipe(new ItemStack(BasicBlock, 1, 1), new Object[] { - "***", "***", "***", Character.valueOf('*'), "ingotRedstone" + "***", "***", "***", Character.valueOf('*'), "ingotBronze" })); CraftingManager.getInstance().getRecipeList().add(new ShapedOreRecipe(new ItemStack(Ingot, 9, 2), new Object[] { "*", Character.valueOf('*'), new ItemStack(BasicBlock, 1, 1) })); CraftingManager.getInstance().getRecipeList().add(new ShapedOreRecipe(new ItemStack(BasicBlock, 1, 5), new Object[] { - "***", "***", "***", Character.valueOf('*'), "ingotRefinedSteel" + "***", "***", "***", Character.valueOf('*'), "ingotSteel" })); //Extra @@ -244,13 +246,13 @@ public class Mekanism CraftingManager.getInstance().getRecipeList().add(new ShapedOreRecipe(new ItemStack(ControlCircuit), new Object[] { " P ", "PEP", " P ", Character.valueOf('P'), "ingotPlatinum", Character.valueOf('E'), EnrichedAlloy })); - CraftingManager.getInstance().getRecipeList().add(new ShapedOreRecipe(new ItemStack(EnrichedIron, 2), new Object[] { + CraftingManager.getInstance().getRecipeList().add(new ShapedOreRecipe(new ItemStack(EnrichedIron, 6), new Object[] { "A", "I", "A", Character.valueOf('A'), EnrichedAlloy, Character.valueOf('I'), Item.ingotIron })); - CraftingManager.getInstance().getRecipeList().add(new ShapedOreRecipe(new ItemStack(EnrichedIron, 1), new Object[] { + CraftingManager.getInstance().getRecipeList().add(new ShapedOreRecipe(new ItemStack(EnrichedIron, 4), new Object[] { "C", "I", "C", Character.valueOf('C'), "dustCopper", Character.valueOf('I'), Item.ingotIron })); - CraftingManager.getInstance().getRecipeList().add(new ShapedOreRecipe(new ItemStack(EnrichedIron, 1), new Object[] { + CraftingManager.getInstance().getRecipeList().add(new ShapedOreRecipe(new ItemStack(EnrichedIron, 4), new Object[] { "T", "I", "T", Character.valueOf('T'), "dustTin", Character.valueOf('I'), Item.ingotIron })); CraftingManager.getInstance().getRecipeList().add(new ShapedOreRecipe(new ItemStack(MachineBlock, 1, 5), new Object[] { @@ -280,7 +282,6 @@ public class Mekanism FurnaceRecipes.smelting().addSmelting(Dust.shiftedIndex, 1, new ItemStack(Item.ingotGold), 1.0F); FurnaceRecipes.smelting().addSmelting(Dust.shiftedIndex, 5, new ItemStack(Ingot, 1, 4), 1.0F); GameRegistry.addSmelting(Item.coal.shiftedIndex, new ItemStack(CompressedCarbon), 1.0F); - GameRegistry.addSmelting(EnrichedIron.shiftedIndex, new ItemStack(EnrichedAlloy), 1.0F); //Enrichment Chamber Recipes RecipeHandler.addEnrichmentChamberRecipe(new ItemStack(Dust, 1, 4), new ItemStack(Item.diamond)); @@ -288,11 +289,9 @@ public class Mekanism RecipeHandler.addEnrichmentChamberRecipe(new ItemStack(Block.obsidian), new ItemStack(Dust, 1, 3)); RecipeHandler.addEnrichmentChamberRecipe(new ItemStack(Block.oreIron), new ItemStack(Dust, 2, 0)); RecipeHandler.addEnrichmentChamberRecipe(new ItemStack(Block.oreGold), new ItemStack(Dust, 2, 1)); - RecipeHandler.addEnrichmentChamberRecipe(new ItemStack(EnrichedIron, 2), new ItemStack(Dust, 1, 2)); RecipeHandler.addEnrichmentChamberRecipe(new ItemStack(Item.coal, 4), new ItemStack(CompressedCarbon, 8)); //Platinum Compressor Recipes - RecipeHandler.addPlatinumCompressorRecipe(new ItemStack(Item.redstone), new ItemStack(Ingot, 1, 2)); RecipeHandler.addPlatinumCompressorRecipe(new ItemStack(Item.lightStoneDust), new ItemStack(Ingot, 1, 3)); //Combiner Recipes @@ -347,7 +346,7 @@ public class Mekanism //Localization for MultiBlock LanguageRegistry.instance().addStringLocalization("tile.BasicBlock.PlatinumBlock.name", "Platinum Block"); - LanguageRegistry.instance().addStringLocalization("tile.BasicBlock.RedstoneBlock.name", "Redstone Block"); + LanguageRegistry.instance().addStringLocalization("tile.BasicBlock.BronzeBlock.name", "Bronze Block"); LanguageRegistry.instance().addStringLocalization("tile.BasicBlock.RefinedObsidian.name", "Refined Obsidian"); LanguageRegistry.instance().addStringLocalization("tile.BasicBlock.CoalBlock.name", "Coal Block"); LanguageRegistry.instance().addStringLocalization("tile.BasicBlock.RefinedGlowstone.name", "Refined Glowstone"); @@ -379,14 +378,14 @@ public class Mekanism LanguageRegistry.instance().addStringLocalization("item.platinumDust.name", "Platinum Dust"); LanguageRegistry.instance().addStringLocalization("item.obsidianDust.name", "Obsidian Dust"); LanguageRegistry.instance().addStringLocalization("item.diamondDust.name", "Diamond Dust"); - LanguageRegistry.instance().addStringLocalization("item.refinedsteelDust.name", "Refined Steel Dust"); + LanguageRegistry.instance().addStringLocalization("item.steelDust.name", "Steel Dust"); //Localization for Ingot LanguageRegistry.instance().addStringLocalization("item.obsidianIngot.name", "Obsidian Ingot"); LanguageRegistry.instance().addStringLocalization("item.platinumIngot.name", "Platinum Ingot"); - LanguageRegistry.instance().addStringLocalization("item.redstoneIngot.name", "Redstone Ingot"); + LanguageRegistry.instance().addStringLocalization("item.bronzeIngot.name", "Bronze Ingot"); LanguageRegistry.instance().addStringLocalization("item.glowstoneIngot.name", "Glowstone Ingot"); - LanguageRegistry.instance().addStringLocalization("item.refinedsteelIngot.name", "Refined Steel Ingot"); + LanguageRegistry.instance().addStringLocalization("item.steelIngot.name", "Steel Ingot"); //Localization for Mekanism creative tab LanguageRegistry.instance().addStringLocalization("itemGroup.tabMekanism", "Mekanism"); @@ -460,9 +459,9 @@ public class Mekanism GasTank = new BlockGasTank(gasTankID).setBlockName("GasTank"); //Registrations - GameRegistry.registerBlock(ObsidianTNT); - GameRegistry.registerBlock(NullRender); - GameRegistry.registerBlock(GasTank); + GameRegistry.registerBlock(ObsidianTNT, "ObsidianTNT"); + GameRegistry.registerBlock(NullRender, "NullRender"); + GameRegistry.registerBlock(GasTank, "GasTank"); //Add block items into itemsList for blocks with common IDs. Item.itemsList[basicBlockID] = new ItemBlockBasic(basicBlockID - 256, BasicBlock).setItemName("BasicBlock"); @@ -482,13 +481,13 @@ public class Mekanism OreDictionary.registerOre("dustPlatinum", new ItemStack(Dust, 1, 2)); OreDictionary.registerOre("dustObsidian", new ItemStack(Dust, 1, 3)); OreDictionary.registerOre("dustDiamond", new ItemStack(Dust, 1, 4)); - OreDictionary.registerOre("dustRefinedSteel", new ItemStack(Dust, 1, 5)); + OreDictionary.registerOre("dustSteel", new ItemStack(Dust, 1, 5)); OreDictionary.registerOre("ingotObsidian", new ItemStack(Ingot, 1, 0)); OreDictionary.registerOre("ingotPlatinum", new ItemStack(Ingot, 1, 1)); - OreDictionary.registerOre("ingotRedstone", new ItemStack(Ingot, 1, 2)); + OreDictionary.registerOre("ingotBronze", new ItemStack(Ingot, 1, 2)); OreDictionary.registerOre("ingotGlowstone", new ItemStack(Ingot, 1, 3)); - OreDictionary.registerOre("ingotRefinedSteel", new ItemStack(Ingot, 1, 4)); + OreDictionary.registerOre("ingotSteel", new ItemStack(Ingot, 1, 4)); OreDictionary.registerOre("orePlatinum", new ItemStack(OreBlock, 1, 0)); @@ -541,13 +540,6 @@ public class Mekanism } } catch(Exception e) {} - try { - for(ItemStack ore : OreDictionary.getOres("ingotRefinedSteel")) - { - RecipeHandler.addEnrichmentChamberRecipe(ore, OreDictionary.getOres("ingotSteel").get(0)); - } - } catch(Exception e) {} - for(ItemStack ore : OreDictionary.getOres("ingotObsidian")) { RecipeHandler.addCrusherRecipe(ore, new ItemStack(Dust, 1, 3)); @@ -618,7 +610,7 @@ public class Mekanism try { for(ItemStack ore : OreDictionary.getOres("ingotCopper")) { - RecipeHandler.addMetallurgicInfuserRecipe(Infusion.getInfusion(InfusionType.TIN, ore), MekanismUtils.getStackWithSize(OreDictionary.getOres("ingotBronze").get(0), 1)); + RecipeHandler.addMetallurgicInfuserRecipe(Infusion.getInfusion(InfusionType.TIN, ore), new ItemStack(Ingot, 1, 2)); } } catch(Exception e) {} @@ -682,6 +674,12 @@ public class Mekanism ServerCommandHandler.initialize(); } + @ServerStopping + public void serverStopping(FMLServerStoppingEvent event) + { + proxy.unloadSoundHandler(); + } + @PreInit public void preInit(FMLPreInitializationEvent event) { diff --git a/src/minecraft/mekanism/common/TileEntityBasicMachine.java b/src/minecraft/mekanism/common/TileEntityBasicMachine.java index ee8fa82d9..897bd0773 100644 --- a/src/minecraft/mekanism/common/TileEntityBasicMachine.java +++ b/src/minecraft/mekanism/common/TileEntityBasicMachine.java @@ -95,23 +95,20 @@ public abstract class TileEntityBasicMachine extends TileEntityElectricBlock imp { for(ForgeDirection direction : ForgeDirection.values()) { - if(direction != ForgeDirection.getOrientation(facing)) + TileEntity tileEntity = Vector3.getTileEntityFromSide(worldObj, new Vector3(this), direction); + if(tileEntity != null) { - TileEntity tileEntity = Vector3.getTileEntityFromSide(worldObj, new Vector3(this), direction); - if(tileEntity != null) + if(tileEntity instanceof IConductor) { - if(tileEntity instanceof IConductor) + if(electricityStored < currentMaxElectricity) { - if(electricityStored < currentMaxElectricity) - { - double electricityNeeded = currentMaxElectricity - electricityStored; - ((IConductor)tileEntity).getNetwork().startRequesting(this, electricityNeeded, electricityNeeded >= getVoltage() ? getVoltage() : electricityNeeded); - setJoules(electricityStored + ((IConductor)tileEntity).getNetwork().consumeElectricity(this).getWatts()); - } - else if(electricityStored >= currentMaxElectricity) - { - ((IConductor)tileEntity).getNetwork().stopRequesting(this); - } + double electricityNeeded = currentMaxElectricity - electricityStored; + ((IConductor)tileEntity).getNetwork().startRequesting(this, electricityNeeded, electricityNeeded >= getVoltage() ? getVoltage() : electricityNeeded); + setJoules(electricityStored + ((IConductor)tileEntity).getNetwork().consumeElectricity(this).getWatts()); + } + else if(electricityStored >= currentMaxElectricity) + { + ((IConductor)tileEntity).getNetwork().stopRequesting(this); } } } @@ -120,30 +117,38 @@ public abstract class TileEntityBasicMachine extends TileEntityElectricBlock imp if(worldObj.isRemote) { - handleSound(); + try { + synchronized(Mekanism.audioHandler.sounds) + { + handleSound(); + } + } catch(NoSuchMethodError e) {} } } - + @SideOnly(Side.CLIENT) public void handleSound() { - if(audio == null && worldObj != null && worldObj.isRemote) + synchronized(Mekanism.audioHandler.sounds) { - if(FMLClientHandler.instance().getClient().sndManager.sndSystem != null) + if(audio == null && worldObj != null && worldObj.isRemote) { - audio = Mekanism.audioHandler.getSound(fullName.replace(" ", ""), soundURL, worldObj, xCoord, yCoord, zCoord); + if(FMLClientHandler.instance().getClient().sndManager.sndSystem != null) + { + audio = Mekanism.audioHandler.getSound(fullName.replace(" ", ""), soundURL, worldObj, xCoord, yCoord, zCoord); + } } - } - - if(worldObj != null && worldObj.isRemote && audio != null) - { - if(!audio.isPlaying && isActive == true) + + if(worldObj != null && worldObj.isRemote && audio != null) { - audio.play(); - } - else if(audio.isPlaying && isActive == false) - { - audio.stop(); + if(!audio.isPlaying && isActive == true) + { + audio.play(); + } + else if(audio.isPlaying && isActive == false) + { + audio.stop(); + } } } } diff --git a/src/minecraft/mekanism/common/TileEntityMetallurgicInfuser.java b/src/minecraft/mekanism/common/TileEntityMetallurgicInfuser.java index 50876ee3e..e9928886b 100644 --- a/src/minecraft/mekanism/common/TileEntityMetallurgicInfuser.java +++ b/src/minecraft/mekanism/common/TileEntityMetallurgicInfuser.java @@ -5,6 +5,7 @@ import ic2.api.ElectricItem; import ic2.api.IElectricItem; import ic2.api.energy.tile.IEnergySink; +import java.util.EnumSet; import java.util.HashMap; import java.util.Map; @@ -21,9 +22,12 @@ import net.minecraft.network.packet.Packet250CustomPayload; import net.minecraft.tileentity.TileEntity; import net.minecraftforge.common.ForgeDirection; import net.minecraftforge.oredict.OreDictionary; +import universalelectricity.core.electricity.ElectricityConnections; +import universalelectricity.core.implement.IConductor; import universalelectricity.core.implement.IItemElectric; import universalelectricity.core.implement.IJouleStorage; import universalelectricity.core.implement.IVoltage; +import universalelectricity.core.vector.Vector3; import com.google.common.io.ByteArrayDataInput; @@ -41,7 +45,7 @@ public class TileEntityMetallurgicInfuser extends TileEntityElectricBlock implem public int MAX_INFUSE = 1000; /** How much energy this machine consumes per-tick. */ - public double ENERGY_PER_TICK = 100; + public double ENERGY_PER_TICK = 12; /** How many ticks it takes to run an operation. */ public int TICKS_REQUIRED = 200; @@ -72,6 +76,8 @@ public class TileEntityMetallurgicInfuser extends TileEntityElectricBlock implem currentTicksRequired = TICKS_REQUIRED; currentMaxElectricity = MAX_ELECTRICITY; + + ElectricityConnections.registerConnector(this, EnumSet.allOf(ForgeDirection.class)); } @Override @@ -81,6 +87,30 @@ public class TileEntityMetallurgicInfuser extends TileEntityElectricBlock implem boolean testActive = operatingTicks > 0; + if(!worldObj.isRemote) + { + for(ForgeDirection direction : ForgeDirection.values()) + { + TileEntity tileEntity = Vector3.getTileEntityFromSide(worldObj, new Vector3(this), direction); + if(tileEntity != null) + { + if(tileEntity instanceof IConductor) + { + if(electricityStored < currentMaxElectricity) + { + double electricityNeeded = currentMaxElectricity - electricityStored; + ((IConductor)tileEntity).getNetwork().startRequesting(this, electricityNeeded, electricityNeeded >= getVoltage() ? getVoltage() : electricityNeeded); + setJoules(electricityStored + ((IConductor)tileEntity).getNetwork().consumeElectricity(this).getWatts()); + } + else if(electricityStored >= currentMaxElectricity) + { + ((IConductor)tileEntity).getNetwork().stopRequesting(this); + } + } + } + } + } + if(inventory[4] != null) { if(electricityStored < currentMaxElectricity) diff --git a/src/minecraft/mekanism/common/TileEntityPlatinumCompressor.java b/src/minecraft/mekanism/common/TileEntityPlatinumCompressor.java index 1a1c38e27..d863f22e4 100644 --- a/src/minecraft/mekanism/common/TileEntityPlatinumCompressor.java +++ b/src/minecraft/mekanism/common/TileEntityPlatinumCompressor.java @@ -4,6 +4,7 @@ import java.util.HashMap; import java.util.Map; import net.minecraft.item.ItemStack; +import net.minecraftforge.oredict.OreDictionary; public class TileEntityPlatinumCompressor extends TileEntityAdvancedElectricMachine { @@ -23,7 +24,18 @@ public class TileEntityPlatinumCompressor extends TileEntityAdvancedElectricMach @Override public int getFuelTicks(ItemStack itemstack) { - if (itemstack.itemID == new ItemStack(Mekanism.Ingot, 1, 1).itemID) return 200; + boolean hasPlatinum = false; + + for(ItemStack ore : OreDictionary.getOres("ingotPlatinum")) + { + if(ore.isItemEqual(itemstack)) + { + hasPlatinum = true; + break; + } + } + + if(hasPlatinum) return 200; return 0; } } diff --git a/src/minecraft/mekanism/common/Version.java b/src/minecraft/mekanism/common/Version.java index 5b566dcdf..b7061606e 100644 --- a/src/minecraft/mekanism/common/Version.java +++ b/src/minecraft/mekanism/common/Version.java @@ -9,8 +9,10 @@ public class Version { /** Major number for version */ public int major; + /** Minor number for version */ public int minor; + /** Build number for version */ public int build; diff --git a/src/minecraft/mekanism/generators/common/MekanismGenerators.java b/src/minecraft/mekanism/generators/common/MekanismGenerators.java index 0fe80162f..f5e915bd9 100644 --- a/src/minecraft/mekanism/generators/common/MekanismGenerators.java +++ b/src/minecraft/mekanism/generators/common/MekanismGenerators.java @@ -19,7 +19,7 @@ import cpw.mods.fml.common.network.NetworkRegistry; import cpw.mods.fml.common.registry.GameRegistry; import cpw.mods.fml.common.registry.LanguageRegistry; -@Mod(modid = "MekanismGenerators", name = "MekanismGenerators", version = "5.0.2", dependencies = "required-after:Mekanism") +@Mod(modid = "MekanismGenerators", name = "MekanismGenerators", version = "5.0.3", dependencies = "required-after:Mekanism") @NetworkMod(clientSideRequired = true, serverSideRequired = false) public class MekanismGenerators { diff --git a/src/minecraft/mekanism/generators/common/TileEntityAdvancedSolarGenerator.java b/src/minecraft/mekanism/generators/common/TileEntityAdvancedSolarGenerator.java index ef390eebb..6f0be181d 100644 --- a/src/minecraft/mekanism/generators/common/TileEntityAdvancedSolarGenerator.java +++ b/src/minecraft/mekanism/generators/common/TileEntityAdvancedSolarGenerator.java @@ -10,7 +10,7 @@ public class TileEntityAdvancedSolarGenerator extends TileEntitySolarGenerator i { public TileEntityAdvancedSolarGenerator() { - super("Advanced Solar Generator", 600000, 256, 256); + super("Advanced Solar Generator", 600000, 512, 512); } @Override diff --git a/src/minecraft/mekanism/tools/common/MekanismTools.java b/src/minecraft/mekanism/tools/common/MekanismTools.java index 49edc0c80..dc376b3b2 100644 --- a/src/minecraft/mekanism/tools/common/MekanismTools.java +++ b/src/minecraft/mekanism/tools/common/MekanismTools.java @@ -26,7 +26,7 @@ import cpw.mods.fml.common.network.NetworkMod; import cpw.mods.fml.common.registry.EntityRegistry; import cpw.mods.fml.common.registry.LanguageRegistry; -@Mod(modid = "MekanismTools", name = "MekanismTools", version = "5.0.2", dependencies = "required-after:Mekanism") +@Mod(modid = "MekanismTools", name = "MekanismTools", version = "5.0.3", dependencies = "required-after:Mekanism") @NetworkMod(clientSideRequired = true, serverSideRequired = false) public class MekanismTools { @@ -34,14 +34,14 @@ public class MekanismTools public static MekanismTools instance; //Enums: Tools - public static EnumToolMaterial toolOBSIDIAN = EnumHelper.addToolMaterial("OBSIDIAN", 3, 2500, 20F, 10, 50); + public static EnumToolMaterial toolOBSIDIAN = EnumHelper.addToolMaterial("OBSIDIAN", 3, 2500, 20F, 10, 100); public static EnumToolMaterial toolOBSIDIAN2 = EnumHelper.addToolMaterial("OBSIDIAN2", 3, 3000, 25F, 10, 100); public static EnumToolMaterial toolLAZULI = EnumHelper.addToolMaterial("LAZULI", 2, 200, 5F, 2, 22); public static EnumToolMaterial toolLAZULI2 = EnumHelper.addToolMaterial("LAZULI2", 2, 250, 6F, 4, 50); public static EnumToolMaterial toolPLATINUM = EnumHelper.addToolMaterial("PLATINUM", 2, 500, 10F, 4, 30); public static EnumToolMaterial toolPLATINUM2 = EnumHelper.addToolMaterial("PLATINUM2", 3, 700, 12F, 5, 40); - public static EnumToolMaterial toolREDSTONE = EnumHelper.addToolMaterial("REDSTONE", 2, 250, 10F, 6, 50); - public static EnumToolMaterial toolREDSTONE2 = EnumHelper.addToolMaterial("REDSTONE2", 2, 400, 12F, 6, 60); + public static EnumToolMaterial toolBRONZE = EnumHelper.addToolMaterial("BRONZE", 3, 1000, 16F, 6, 100); + public static EnumToolMaterial toolBRONZE2 = EnumHelper.addToolMaterial("BRONZE2", 3, 1400, 22F, 10, 100); public static EnumToolMaterial toolGLOWSTONE = EnumHelper.addToolMaterial("GLOWSTONE", 2, 300, 14F, 5, 80); public static EnumToolMaterial toolGLOWSTONE2 = EnumHelper.addToolMaterial("GLOWSTONE2", 2, 450, 18F, 5, 100); public static EnumToolMaterial toolSTEEL = EnumHelper.addToolMaterial("STEEL", 3, 850, 14F, 4, 100); @@ -50,10 +50,10 @@ public class MekanismTools //Enums: Armor public static EnumArmorMaterial armorOBSIDIAN = EnumHelper.addArmorMaterial("OBSIDIAN", 50, new int[]{5, 12, 8, 5}, 50); public static EnumArmorMaterial armorLAZULI = EnumHelper.addArmorMaterial("LAZULI", 13, new int[]{2, 5, 4, 2}, 50); - public static EnumArmorMaterial armorPLATINUM = EnumHelper.addArmorMaterial("PLATINUM", 30, new int[]{4, 10, 7, 4}, 50); - public static EnumArmorMaterial armorREDSTONE = EnumHelper.addArmorMaterial("REDSTONE", 16, new int[]{2, 7, 5, 3}, 50); + public static EnumArmorMaterial armorPLATINUM = EnumHelper.addArmorMaterial("PLATINUM", 30, new int[]{3, 9, 7, 3}, 50); + public static EnumArmorMaterial armorBRONZE = EnumHelper.addArmorMaterial("BRONZE", 42, new int[]{4, 10, 8, 4}, 50); public static EnumArmorMaterial armorGLOWSTONE = EnumHelper.addArmorMaterial("GLOWSTONE", 18, new int[]{3, 7, 6, 3}, 50); - public static EnumArmorMaterial armorSTEEL = EnumHelper.addArmorMaterial("STEEL", 40, new int[] {4, 11, 8, 4}, 50); + public static EnumArmorMaterial armorSTEEL = EnumHelper.addArmorMaterial("STEEL", 40, new int[] {4, 10, 8, 4}, 50); //Base Items public static Item WoodPaxel; @@ -75,16 +75,16 @@ public class MekanismTools public static Item GlowstoneBoots; //Redstone Items - public static Item RedstonePaxel; - public static Item RedstonePickaxe; - public static Item RedstoneAxe; - public static Item RedstoneSpade; - public static Item RedstoneHoe; - public static Item RedstoneSword; - public static Item RedstoneHelmet; - public static Item RedstoneBody; - public static Item RedstoneLegs; - public static Item RedstoneBoots; + public static Item BronzePaxel; + public static Item BronzePickaxe; + public static Item BronzeAxe; + public static Item BronzeSpade; + public static Item BronzeHoe; + public static Item BronzeSword; + public static Item BronzeHelmet; + public static Item BronzeBody; + public static Item BronzeLegs; + public static Item BronzeBoots; //Platinum Items public static Item PlatinumPaxel; @@ -298,68 +298,68 @@ public class MekanismTools "* *", "* *", Character.valueOf('*'), "ingotPlatinum" })); - //Redstone - CraftingManager.getInstance().getRecipeList().add(new ShapedOreRecipe(new ItemStack(RedstonePaxel, 1), new Object[] { - "XYZ", " T ", " T ", Character.valueOf('X'), RedstoneAxe, Character.valueOf('Y'), RedstonePickaxe, Character.valueOf('Z'), RedstoneSpade, Character.valueOf('T'), Item.stick + //Bronze + CraftingManager.getInstance().getRecipeList().add(new ShapedOreRecipe(new ItemStack(BronzePaxel, 1), new Object[] { + "XYZ", " T ", " T ", Character.valueOf('X'), BronzeAxe, Character.valueOf('Y'), BronzePickaxe, Character.valueOf('Z'), BronzeSpade, Character.valueOf('T'), Item.stick })); - CraftingManager.getInstance().getRecipeList().add(new ShapedOreRecipe(new ItemStack(RedstonePickaxe, 1), new Object[] { - "XXX", " T ", " T ", Character.valueOf('X'), "ingotRedstone", Character.valueOf('T'), Item.stick + CraftingManager.getInstance().getRecipeList().add(new ShapedOreRecipe(new ItemStack(BronzePickaxe, 1), new Object[] { + "XXX", " T ", " T ", Character.valueOf('X'), "ingotBronze", Character.valueOf('T'), Item.stick })); - CraftingManager.getInstance().getRecipeList().add(new ShapedOreRecipe(new ItemStack(RedstoneAxe, 1), new Object[] { - "XX", "XT", " T", Character.valueOf('X'), "ingotRedstone", Character.valueOf('T'), Item.stick + CraftingManager.getInstance().getRecipeList().add(new ShapedOreRecipe(new ItemStack(BronzeAxe, 1), new Object[] { + "XX", "XT", " T", Character.valueOf('X'), "ingotBronze", Character.valueOf('T'), Item.stick })); - CraftingManager.getInstance().getRecipeList().add(new ShapedOreRecipe(new ItemStack(RedstoneSpade, 1), new Object[] { - "X", "T", "T", Character.valueOf('X'), "ingotRedstone", Character.valueOf('T'), Item.stick + CraftingManager.getInstance().getRecipeList().add(new ShapedOreRecipe(new ItemStack(BronzeSpade, 1), new Object[] { + "X", "T", "T", Character.valueOf('X'), "ingotBronze", Character.valueOf('T'), Item.stick })); - CraftingManager.getInstance().getRecipeList().add(new ShapedOreRecipe(new ItemStack(RedstoneHoe, 1), new Object[] { - "XX", " T", " T", Character.valueOf('X'), "ingotRedstone", Character.valueOf('T'), Item.stick + CraftingManager.getInstance().getRecipeList().add(new ShapedOreRecipe(new ItemStack(BronzeHoe, 1), new Object[] { + "XX", " T", " T", Character.valueOf('X'), "ingotBronze", Character.valueOf('T'), Item.stick })); - CraftingManager.getInstance().getRecipeList().add(new ShapedOreRecipe(new ItemStack(RedstoneSword, 1), new Object[] { - "X", "X", "T", Character.valueOf('X'), "ingotRedstone", Character.valueOf('T'), Item.stick + CraftingManager.getInstance().getRecipeList().add(new ShapedOreRecipe(new ItemStack(BronzeSword, 1), new Object[] { + "X", "X", "T", Character.valueOf('X'), "ingotBronze", Character.valueOf('T'), Item.stick })); - CraftingManager.getInstance().getRecipeList().add(new ShapedOreRecipe(new ItemStack(RedstoneHelmet, 1), new Object[] { - "***", "* *", Character.valueOf('*'), "ingotRedstone" + CraftingManager.getInstance().getRecipeList().add(new ShapedOreRecipe(new ItemStack(BronzeHelmet, 1), new Object[] { + "***", "* *", Character.valueOf('*'), "ingotBronze" })); - CraftingManager.getInstance().getRecipeList().add(new ShapedOreRecipe(new ItemStack(RedstoneBody, 1), new Object[] { - "* *", "***", "***", Character.valueOf('*'), "ingotRedstone" + CraftingManager.getInstance().getRecipeList().add(new ShapedOreRecipe(new ItemStack(BronzeBody, 1), new Object[] { + "* *", "***", "***", Character.valueOf('*'), "ingotBronze" })); - CraftingManager.getInstance().getRecipeList().add(new ShapedOreRecipe(new ItemStack(RedstoneLegs, 1), new Object[] { - "***", "* *", "* *", Character.valueOf('*'), "ingotRedstone" + CraftingManager.getInstance().getRecipeList().add(new ShapedOreRecipe(new ItemStack(BronzeLegs, 1), new Object[] { + "***", "* *", "* *", Character.valueOf('*'), "ingotBronze" })); - CraftingManager.getInstance().getRecipeList().add(new ShapedOreRecipe(new ItemStack(RedstoneBoots, 1), new Object[] { - "* *", "* *", Character.valueOf('*'), "ingotRedstone" + CraftingManager.getInstance().getRecipeList().add(new ShapedOreRecipe(new ItemStack(BronzeBoots, 1), new Object[] { + "* *", "* *", Character.valueOf('*'), "ingotBronze" })); //Steel CraftingManager.getInstance().getRecipeList().add(new ShapedOreRecipe(new ItemStack(SteelPaxel, 1), new Object[] { - "XYZ", " T ", " T ", Character.valueOf('X'), SteelAxe, Character.valueOf('Y'), SteelPickaxe, Character.valueOf('Z'), SteelSpade, Character.valueOf('T'), Item.stick + "XYZ", " I ", " I ", Character.valueOf('X'), SteelAxe, Character.valueOf('Y'), SteelPickaxe, Character.valueOf('Z'), SteelSpade, Character.valueOf('I'), Item.ingotIron })); CraftingManager.getInstance().getRecipeList().add(new ShapedOreRecipe(new ItemStack(SteelPickaxe, 1), new Object[] { - "XXX", " T ", " T ", Character.valueOf('X'), "ingotRefinedSteel", Character.valueOf('T'), Item.stick + "XXX", " I ", " I ", Character.valueOf('X'), "ingotSteel", Character.valueOf('I'), Item.ingotIron })); CraftingManager.getInstance().getRecipeList().add(new ShapedOreRecipe(new ItemStack(SteelAxe, 1), new Object[] { - "XX", "XT", " T", Character.valueOf('X'), "ingotRefinedSteel", Character.valueOf('T'), Item.stick + "XX", "XI", " I", Character.valueOf('X'), "ingotSteel", Character.valueOf('I'), Item.ingotIron })); CraftingManager.getInstance().getRecipeList().add(new ShapedOreRecipe(new ItemStack(SteelSpade, 1), new Object[] { - "X", "T", "T", Character.valueOf('X'), "ingotRefinedSteel", Character.valueOf('T'), Item.stick + "X", "I", "I", Character.valueOf('X'), "ingotSteel", Character.valueOf('I'), Item.ingotIron })); CraftingManager.getInstance().getRecipeList().add(new ShapedOreRecipe(new ItemStack(SteelHoe, 1), new Object[] { - "XX", " T", " T", Character.valueOf('X'), "ingotRefinedSteel", Character.valueOf('T'), Item.stick + "XX", " I", " I", Character.valueOf('X'), "ingotSteel", Character.valueOf('I'), Item.ingotIron })); CraftingManager.getInstance().getRecipeList().add(new ShapedOreRecipe(new ItemStack(SteelSword, 1), new Object[] { - "X", "X", "T", Character.valueOf('X'), "ingotRefinedSteel", Character.valueOf('T'), Item.stick + "X", "X", "I", Character.valueOf('X'), "ingotSteel", Character.valueOf('I'), Item.ingotIron })); CraftingManager.getInstance().getRecipeList().add(new ShapedOreRecipe(new ItemStack(SteelHelmet, 1), new Object[] { - "***", "* *", Character.valueOf('*'), "ingotRefinedSteel" + "***", "I I", Character.valueOf('*'), "ingotSteel", Character.valueOf('I'), Item.ingotIron })); CraftingManager.getInstance().getRecipeList().add(new ShapedOreRecipe(new ItemStack(SteelBody, 1), new Object[] { - "* *", "***", "***", Character.valueOf('*'), "ingotRefinedSteel" + "I I", "*I*", "***", Character.valueOf('*'), "ingotSteel", Character.valueOf('I'), Item.ingotIron })); CraftingManager.getInstance().getRecipeList().add(new ShapedOreRecipe(new ItemStack(SteelLegs, 1), new Object[] { - "***", "* *", "* *", Character.valueOf('*'), "ingotRefinedSteel" + "I*I", "* *", "* *", Character.valueOf('*'), "ingotSteel", Character.valueOf('I'), Item.ingotIron })); CraftingManager.getInstance().getRecipeList().add(new ShapedOreRecipe(new ItemStack(SteelBoots, 1), new Object[] { - "* *", "* *", Character.valueOf('*'), "ingotRefinedSteel" + "I *", "* I", Character.valueOf('*'), "ingotSteel", Character.valueOf('I'), Item.ingotIron })); } @@ -409,16 +409,16 @@ public class MekanismTools LanguageRegistry.addName(PlatinumSword, "Platinum Sword"); //Redstone - LanguageRegistry.addName(RedstoneHelmet, "Redstone Helmet"); - LanguageRegistry.addName(RedstoneBody, "Redstone Chestplate"); - LanguageRegistry.addName(RedstoneLegs, "Redstone Leggings"); - LanguageRegistry.addName(RedstoneBoots, "Redstone Boots"); - LanguageRegistry.addName(RedstonePaxel, "Redstone Paxel"); - LanguageRegistry.addName(RedstonePickaxe, "Redstone Pickaxe"); - LanguageRegistry.addName(RedstoneAxe, "Redstone Axe"); - LanguageRegistry.addName(RedstoneSpade, "Redstone Shovel"); - LanguageRegistry.addName(RedstoneHoe, "Redstone Hoe"); - LanguageRegistry.addName(RedstoneSword, "Redstone Sword"); + LanguageRegistry.addName(BronzeHelmet, "Bronze Helmet"); + LanguageRegistry.addName(BronzeBody, "Bronze Chestplate"); + LanguageRegistry.addName(BronzeLegs, "Bronze Leggings"); + LanguageRegistry.addName(BronzeBoots, "Bronze Boots"); + LanguageRegistry.addName(BronzePaxel, "Bronze Paxel"); + LanguageRegistry.addName(BronzePickaxe, "Bronze Pickaxe"); + LanguageRegistry.addName(BronzeAxe, "Bronze Axe"); + LanguageRegistry.addName(BronzeSpade, "Bronze Shovel"); + LanguageRegistry.addName(BronzeHoe, "Bronze Hoe"); + LanguageRegistry.addName(BronzeSword, "Bronze Sword"); //Glowstone LanguageRegistry.addName(GlowstonePaxel, "Glowstone Paxel"); @@ -467,16 +467,16 @@ public class MekanismTools GlowstoneSword.setIconIndex(132); //Redstone - RedstoneHelmet.setIconIndex(3); - RedstoneBody.setIconIndex(19); - RedstoneLegs.setIconIndex(35); - RedstoneBoots.setIconIndex(51); - RedstonePaxel.setIconIndex(147); - RedstonePickaxe.setIconIndex(67); - RedstoneAxe.setIconIndex(83); - RedstoneSpade.setIconIndex(99); - RedstoneHoe.setIconIndex(115); - RedstoneSword.setIconIndex(131); + BronzeHelmet.setIconIndex(3); + BronzeBody.setIconIndex(19); + BronzeLegs.setIconIndex(35); + BronzeBoots.setIconIndex(51); + BronzePaxel.setIconIndex(147); + BronzePickaxe.setIconIndex(67); + BronzeAxe.setIconIndex(83); + BronzeSpade.setIconIndex(99); + BronzeHoe.setIconIndex(115); + BronzeSword.setIconIndex(131); //Platinum PlatinumHelmet.setIconIndex(2); @@ -529,17 +529,17 @@ public class MekanismTools public void addItems() { - //Redstone - RedstoneHelmet = (new ItemMekanismArmor(11400, armorREDSTONE, Mekanism.proxy.getArmorIndex("redstone"), 0)).setItemName("RedstoneHelmet"); - RedstoneBody = (new ItemMekanismArmor(11401, armorREDSTONE, Mekanism.proxy.getArmorIndex("redstone"), 1)).setItemName("RedstoneBody"); - RedstoneLegs = (new ItemMekanismArmor(11402, armorREDSTONE, Mekanism.proxy.getArmorIndex("redstone"), 2)).setItemName("RedstoneLegs"); - RedstoneBoots = (new ItemMekanismArmor(11403, armorREDSTONE, Mekanism.proxy.getArmorIndex("redstone"), 3)).setItemName("RedstoneBoots"); - RedstonePaxel = new ItemMekanismPaxel(11404, toolREDSTONE2).setItemName("RedstonePaxel"); - RedstonePickaxe = new ItemMekanismPickaxe(11405, toolREDSTONE).setItemName("RedstonePickaxe"); - RedstoneAxe = new ItemMekanismAxe(11406, toolREDSTONE).setItemName("RedstoneAxe"); - RedstoneSpade = new ItemMekanismSpade(11407, toolREDSTONE).setItemName("RedstoneSpade"); - RedstoneHoe = new ItemMekanismHoe(11408, toolREDSTONE).setItemName("RedstoneHoe"); - RedstoneSword = new ItemMekanismSword(11409, toolREDSTONE).setItemName("RedstoneSword"); + //Bronze + BronzeHelmet = (new ItemMekanismArmor(11400, armorBRONZE, Mekanism.proxy.getArmorIndex("bronze"), 0)).setItemName("BronzeHelmet"); + BronzeBody = (new ItemMekanismArmor(11401, armorBRONZE, Mekanism.proxy.getArmorIndex("bronze"), 1)).setItemName("BronzeBody"); + BronzeLegs = (new ItemMekanismArmor(11402, armorBRONZE, Mekanism.proxy.getArmorIndex("bronze"), 2)).setItemName("BronzeLegs"); + BronzeBoots = (new ItemMekanismArmor(11403, armorBRONZE, Mekanism.proxy.getArmorIndex("bronze"), 3)).setItemName("BronzeBoots"); + BronzePaxel = new ItemMekanismPaxel(11404, toolBRONZE2).setItemName("BronzePaxel"); + BronzePickaxe = new ItemMekanismPickaxe(11405, toolBRONZE).setItemName("BronzePickaxe"); + BronzeAxe = new ItemMekanismAxe(11406, toolBRONZE).setItemName("BronzeAxe"); + BronzeSpade = new ItemMekanismSpade(11407, toolBRONZE).setItemName("BronzeSpade"); + BronzeHoe = new ItemMekanismHoe(11408, toolBRONZE).setItemName("BronzeHoe"); + BronzeSword = new ItemMekanismSword(11409, toolBRONZE).setItemName("BronzeSword"); //Platinum PlatinumHelmet = (new ItemMekanismArmor(11410, EnumArmorMaterial.DIAMOND, Mekanism.proxy.getArmorIndex("platinum"), 0)).setItemName("PlatinumHelmet"); @@ -603,10 +603,10 @@ public class MekanismTools SteelSpade = new ItemMekanismSpade(11458, toolSTEEL).setItemName("SteelSpade"); SteelHoe = new ItemMekanismHoe(11459, toolSTEEL).setItemName("SteelHoe"); SteelSword = new ItemMekanismSword(11460, toolSTEEL).setItemName("SteelSword"); - SteelHelmet = new ItemMekanismArmor(11461, armorSTEEL, Mekanism.proxy.getArmorIndex("Steel"), 0).setItemName("SteelHelmet"); - SteelBody = new ItemMekanismArmor(11462, armorSTEEL, Mekanism.proxy.getArmorIndex("Steel"), 1).setItemName("SteelBody"); - SteelLegs = new ItemMekanismArmor(11463, armorSTEEL, Mekanism.proxy.getArmorIndex("Steel"), 2).setItemName("SteelLegs"); - SteelBoots = new ItemMekanismArmor(11464, armorSTEEL, Mekanism.proxy.getArmorIndex("Steel"), 3).setItemName("SteelBoots"); + SteelHelmet = new ItemMekanismArmor(11461, armorSTEEL, Mekanism.proxy.getArmorIndex("steel"), 0).setItemName("SteelHelmet"); + SteelBody = new ItemMekanismArmor(11462, armorSTEEL, Mekanism.proxy.getArmorIndex("steel"), 1).setItemName("SteelBody"); + SteelLegs = new ItemMekanismArmor(11463, armorSTEEL, Mekanism.proxy.getArmorIndex("steel"), 2).setItemName("SteelLegs"); + SteelBoots = new ItemMekanismArmor(11464, armorSTEEL, Mekanism.proxy.getArmorIndex("steel"), 3).setItemName("SteelBoots"); } @ForgeSubscribe @@ -615,9 +615,9 @@ public class MekanismTools Random random = new Random(); int chance = random.nextInt(100); - int secondChance = random.nextInt(4); + int secondChance = random.nextInt(3); - if(chance < 5) + if(chance < 4) { if(event.entityLiving instanceof EntityZombie || event.entityLiving instanceof EntitySkeleton) { @@ -638,14 +638,6 @@ public class MekanismTools event.entityLiving.setCurrentItemOrArmor(4, new ItemStack(LazuliBoots)); } else if(secondChance == 2) - { - if(event.entityLiving instanceof EntityZombie) event.entityLiving.setCurrentItemOrArmor(0, new ItemStack(RedstoneSword)); - event.entityLiving.setCurrentItemOrArmor(1, new ItemStack(RedstoneHelmet)); - event.entityLiving.setCurrentItemOrArmor(2, new ItemStack(RedstoneBody)); - event.entityLiving.setCurrentItemOrArmor(3, new ItemStack(RedstoneLegs)); - event.entityLiving.setCurrentItemOrArmor(4, new ItemStack(RedstoneBoots)); - } - else if(secondChance == 3) { if(event.entityLiving instanceof EntityZombie) event.entityLiving.setCurrentItemOrArmor(0, new ItemStack(PlatinumSword)); event.entityLiving.setCurrentItemOrArmor(1, new ItemStack(PlatinumHelmet));