From b6ce025998868355ec5e2ac74c314b59300ed25e Mon Sep 17 00:00:00 2001 From: Aidan Brady Date: Wed, 23 Jan 2013 15:42:45 -0500 Subject: [PATCH] v5.2.0 Beta #1 *Updated textures. *Added top and bottom textures for Smelting Factory. *Revamped and simplified Recipe Handler. *Individual GUI classes for NEI. *Fixed portable teleporter text and button. *Added Purification Chamber. *Added Chunks. *Added Dirty Dusts. *Made Smelting Factory work with ISidedInventory, and in turn changed some slot IDs. *Fixed portable teleporters able to provide electricity. *Fixed ore dictionary names. *Made the Combiner require 8 dusts of a resource to function. *Added config for update notifications. *Fixed damage when teleporting. *Added sounds when teleporting. *Fixed secondary energy calculations on AdvancedElectricMachine. *Made machines able to maintain their progress when unable to operate. *Fixed Energy Cubes unable to input BC power. *Other minor bugfixes. --- .../mekanism/animate/CompressorFront.png | Bin 2225 -> 3410 bytes .../animate/PurificationChamberFront.png | Bin 0 -> 5375 bytes .../mekanism/gui/GuiPurificationChamber.png | Bin 0 -> 5263 bytes .../mekanism/sound/PurificationChamber.ogg | Bin 0 -> 82220 bytes .../resources/mekanism/textures/items.png | Bin 29988 -> 33729 bytes .../resources/mekanism/textures/terrain.png | Bin 21258 -> 35304 bytes .../mekanism/api/IElectricMachine.java | 8 +- .../mekanism/client/ClientProxy.java | 13 +- .../mekanism/client/GuiCombiner.java | 12 ++ src/minecraft/mekanism/client/GuiCrusher.java | 12 ++ .../mekanism/client/GuiEnrichmentChamber.java | 12 ++ .../client/GuiPlatinumCompressor.java | 12 ++ .../client/GuiPortableTeleporter.java | 7 +- .../client/GuiPurificationChamber.java | 12 ++ .../mekanism/client/GuiSmeltingFactory.java | 6 +- .../mekanism/common/BlockMachine.java | 57 +++++- .../mekanism/common/CommonProxy.java | 7 +- .../common/ContainerMetallurgicInfuser.java | 3 +- .../common/ContainerSmeltingFactory.java | 76 ++++--- .../mekanism/common/ItemBlockMachine.java | 4 + src/minecraft/mekanism/common/ItemClump.java | 48 +++++ .../mekanism/common/ItemDirtyDust.java | 48 +++++ .../common/ItemPortableTeleporter.java | 6 + src/minecraft/mekanism/common/Mekanism.java | 130 ++++++++++-- .../mekanism/common/MekanismUtils.java | 25 ++- .../mekanism/common/PacketHandler.java | 9 +- .../mekanism/common/RecipeHandler.java | 53 ++++- .../TileEntityAdvancedElectricMachine.java | 84 +++----- .../mekanism/common/TileEntityCombiner.java | 7 +- .../mekanism/common/TileEntityCrusher.java | 7 +- .../common/TileEntityElectricMachine.java | 59 ++---- .../mekanism/common/TileEntityEnergyCube.java | 7 +- .../common/TileEntityEnrichmentChamber.java | 7 +- .../common/TileEntityMetallurgicInfuser.java | 7 +- .../common/TileEntityPlatinumCompressor.java | 9 +- .../common/TileEntityPurificationChamber.java | 31 +++ .../common/TileEntitySmeltingFactory.java | 50 ++++- .../mekanism/common/TileEntityTeleporter.java | 5 +- .../TileEntityTheoreticalElementizer.java | 4 +- .../generators/common/MekanismGenerators.java | 8 +- .../common/TileEntityBioGenerator.java | 31 ++- .../TileEntityElectrolyticSeparator.java | 2 +- .../common/TileEntityHeatGenerator.java | 39 ++-- .../common/TileEntityHydrogenGenerator.java | 1 - .../common/TileEntitySolarGenerator.java | 1 - .../nei/AdvancedMachineRecipeHandler.java | 139 +++++++++++++ .../mekanism/nei/CombinerRecipeHandler.java | 57 ++++++ .../mekanism/nei/CrusherRecipeHandler.java | 47 +++++ .../nei/EnrichmentChamberRecipeHandler.java | 47 +++++ .../mekanism/nei/MachineRecipeHandler.java | 124 ++++++++++++ .../nei/MetallurgicInfuserRecipeHandler.java | 188 ++++++++++++++++++ .../mekanism/nei/NEIMekanismConfig.java | 36 ++++ .../nei/PlatinumCompressorRecipeHandler.java | 56 ++++++ .../nei/PurificationChamberRecipeHandler.java | 55 +++++ .../mekanism/tools/common/MekanismTools.java | 2 +- 55 files changed, 1395 insertions(+), 275 deletions(-) create mode 100644 bin/minecraft/resources/mekanism/animate/PurificationChamberFront.png create mode 100755 bin/minecraft/resources/mekanism/gui/GuiPurificationChamber.png create mode 100644 bin/minecraft/resources/mekanism/sound/PurificationChamber.ogg create mode 100644 src/minecraft/mekanism/client/GuiCombiner.java create mode 100644 src/minecraft/mekanism/client/GuiCrusher.java create mode 100644 src/minecraft/mekanism/client/GuiEnrichmentChamber.java create mode 100644 src/minecraft/mekanism/client/GuiPlatinumCompressor.java create mode 100644 src/minecraft/mekanism/client/GuiPurificationChamber.java create mode 100644 src/minecraft/mekanism/common/ItemClump.java create mode 100644 src/minecraft/mekanism/common/ItemDirtyDust.java create mode 100644 src/minecraft/mekanism/common/TileEntityPurificationChamber.java create mode 100644 src/minecraft/mekanism/nei/AdvancedMachineRecipeHandler.java create mode 100644 src/minecraft/mekanism/nei/CombinerRecipeHandler.java create mode 100644 src/minecraft/mekanism/nei/CrusherRecipeHandler.java create mode 100644 src/minecraft/mekanism/nei/EnrichmentChamberRecipeHandler.java create mode 100644 src/minecraft/mekanism/nei/MachineRecipeHandler.java create mode 100644 src/minecraft/mekanism/nei/MetallurgicInfuserRecipeHandler.java create mode 100644 src/minecraft/mekanism/nei/NEIMekanismConfig.java create mode 100644 src/minecraft/mekanism/nei/PlatinumCompressorRecipeHandler.java create mode 100644 src/minecraft/mekanism/nei/PurificationChamberRecipeHandler.java diff --git a/bin/minecraft/resources/mekanism/animate/CompressorFront.png b/bin/minecraft/resources/mekanism/animate/CompressorFront.png index 60d9e938f8f44ee0b5d087814b73a85395499dfc..b99d0059271d169f7a6249bee9def463f3aabc1a 100644 GIT binary patch literal 3410 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 literal 2225 zcmaJ>2{aUX7azt_k*Q~yhz!Q^Xz(i0V8-6eBPLSzt(thUFO4NcLW7Wyy_YOyO_Q;X z9*+tUBd-xAW11SfF=IsIqwhQ4Iqy~P{Lla1d+z^tfA@cW_ne!8u|BzXkIWtb0I(O0 zGPB+G5CDK5uuEt=qM`j~0RZ5VkEtmJZE6a^1P5S!E?)!y^!n25Cj!RLNFY-JT*{=7 zr48v~lK47%JLl$uGBrIy=-UrInaDH`{H0#@BFtaLZtVEe5kLD94u60s7Z~?g_)rGU zL`Jlm^LU=`3EIwBauix-7)mknzRih$7+70p*Xr6s%&dz&!MK80e63^DdoG`rhnDu3 zTyfPY$-GsPm!p4HVfUc1>Z(yid6adFizdHjPvXfpUG56cCUu1=vs)oyXR9iJ&|;Iz z=M1kNTK0*{uF|gsK_)HMmwuiyez$BeEvKoH?BI#Zp&jlzDk~4tvtz1x<>1T42tE5ySag}yDiHw_cO`==g`m}D}PjP77Vs@;>LX44vmNZJc9s}D{wQnUA!7fuFF zjr8;-N9~LKNMQ;LIy#hN-RQhTjdXXhkbQ4pjb~;MDQ4}ZJw^*-6+J}Q2`Wt?*!hU- z(R2wDUeVs1$`mN83aN7-XOX5Va~;NIkV^k>B`4SJ-S2};12bC zM=CRtL_6dHPul^3R@oS`ZT5kb3Qw_%^AYs8uAuI`z13rPbu4@a-|t_zE?W>Po;cUb zfc%_gdLb`0&T0}Gkl6*r5AP2S9C<2>AM~1dyUIcw8`7Z3CGkAvz*;Ri{|dgJowJ5$-n zJCbw}dRy=n=iKpdH1`bmEcZ0mn(M}uzVJRP(2@oVWn1_`v^{dZf9FLwlfr)r*X~@(Z zVnXT{A*A2sE1#{w8d#A~)|8OmDtOXSSMhBqkm?I6-5{XeBwd+qEa7v}E7g6Mxb(^f z8pF5r+s4{*tgCcefxk`xXsLtA74V?Zu&fd~HiTxmN)ifuu?cnr1mOscZ1VOB5c0A- zX$IKZIi>9tx3@F915u740Dy@2&gBE-7arJ73WuUknG3%Y5t9JzBdO}X1^@(1&}PPG zaFqE8lCQX@Z11v7zKWk0S@F7<*mN0wS`i-llk7MeBOoVv<~ox~u4zL1Nc;Pu>QtPDa@Gv9db4<=^ackK+V$Hy2(d}K6&HI=4bDdve zetnP+tqPv;p5ui#Hqdy%Y|Mq$Wm+rL$85vJqU*W;WV6iM29ACtmEqo_zfr`^@g{i9 z>erBRo_2n8&~cyfl$OTV)RKQ^&l5)FNS(YUBioresp5I27CbD7vLdCew8iD#gMM;W zpp4u2n-2yNkp!OcQZQ#Y%+k4YZXPS}KHRArYnjNtgoVioCLUy2I%kDOs#7d;b2(Uv zRC|zRR>xsdgP+8Kkd4H7m;amHaE3vs-wR^&`io3{_!!O z>Z?=c1?2~#n+DvF;hMU=Y)P*XsM4V%GHx%!pj{rxQ;fY_NXxUm{^ z`za1Y-9h}_QHw#)2^b@cf2~*^g+E*;zO?yI$o~qc?lH#xs(}cShl6UT@Dg7%K>k}7 z%My7EzlK~FOn_e_-2WcpYgssq1R2=9*{Agv?8jVND6ZP z;5;^u0WLf7Zw-$ik=oVbLDWZTT)$l!e)4S83Pc`U!)^(80n*(=#u+e()+b3hehR|CWej?OJ`YMmOD)Zusx%cwelP z8PQ8XB22ilcnR4;xOFQ^`H0KHi@f&h9%LtSqfuzVJBO5qR(~QV zx(GJ!x*^gDcN%hk%;I1;RC!Tt9`lcWEe*Agf?LKnJ-v$a^~Q=*ZkfZ6RNraaC$yh> zQ1iO!6{3r)Iv`V|OVFsbZ}9}S$n`(BV`C%CHEBX)iRlylD}F4(k4I3oT1tOd#DCch zS~!2rB3@azcv0F^@Qm}%d?W2_Oq%Me=DN%3Ipr?yu3Wo9pR`TH(^^ zWT~O_tk!#a`q3V4$4@+c(57DM)%vxGGE!1@hW5Y$qV4!!TykdTMnDr=khH`FTkwD^ z=dw5X7HQ04tSl>M=>SiXKGBG3*X{1F`b{dJf28Mo zs9dPhkx882t!k+w8N1i@FBF+IYu4-1Wk-Tb9Gv(j;_TdidZwR~yKdSUJS#N!idIYe zq9azyU*&K-DR;JRV})(+2gi{_ovzt%p{ZcG&$=Nk8nuSf;o>8Wsi&sdoz894#p*ImH&zS*dFG^U4!}A7=%6=T52z zR@OB=&625)kb1tLH%YC(6fnW@VD0wBCyXZTWh?jFd3>R(Ji85|W6>L?A%E09K85X8 z*GaJU!v}tuF|-f1_9KqBcT9lu@i9s_h`f5bV3Vjk*PT7<6Au zo(}}#NjAKwXBh-uwYye$+)yB_q)NlpnS_kgYc}_h)E9I{rk*T*HOi{UBtcTJtMt)S ze2I^A3d41Yun6(`jK>lN;t4#Bz@scIu6#7-6Ele>l?Rm_KdF9G^W(mzH~oM9@~%V7 zriJfY`G>xr*UT-bDeNg)n><`Ib6`w;mRebPzj*J$c88g)=Tt+mTRClZ(d=zNAbq=J zjpA}5kQ4T6aAhl@!Hv8g>d57`KK`|haP&km3su`tliH1~q`v5w5{KW%(#oBz2FC~O zX^uxOI4#*lLL^Kdgp=h>dxfg^-!@aDhlnIxi1q`^XHVO#rc<|C^tL~&^1Xzu9z##} z|GaKD#*^__(Qdi38daG{4p)_Z&o~TpO+ZLovjsgP9jlr&=7%t?6Wsn(7nisy^tRZz z;MOnHrhks3Ul}?4-PN#oA}1kzB!5sRLsX9st;<$R9iCdgN2r@f!&zrAQT9?xM8P=` z@LmV?8@k(3+kYrSQ;czmR046(x({!iA-JAeQg^2y?7y!+B^ZH2N=jk-S#Pc#MARTs zW`YAJ)!I_s@agHnUtNOMa>5RGR?}(S%6p$uw^2Gpd;95rx9Su2kMHKHo!b{B98K&~%Sr>__tz&Eg+eu^4$r+7 zj}J86l|NN7+TqsYw;B>=I`WP%U;T0Sw&QYh*z@d;`O_(M{6LQxnn4_OLwSyEB5Bay z2(tCY=3y^H)usju@(eWXN}faDxFKNQ??T0Ux-o|b#29aozHvQxP>Ww5nI^m)b2IOn%cg}5F?&`F68)Q(20e9`18*5+Yj60=R@<9d z(y_d^Lbp4eJ&jkMNrzxLml9@LG4R;lToPyGB4gum?O8S!t@h#NCvVWh)97Gtu&?Z$ z%z7>~rf5%=0V=-&>gn;HM<9c48XS2nA~4Rf9ty}R7+dHArK0!#+I2c+2e7<_7NPGb z9y&g3_AUIyag#zL?w;@sZqm+gM22jLI32&i-Tt=y^Q#>@%cbKoO{k2b%z;#2rSs}^ zu&K!+LfMX}S+gc>C^Qr&d{m`|Q?=OovHF(pGU|-?93mrxSN}dM>-SuL25#uRhZ@V< z(UvIPD-w!Uo;OY1rL9^U^>`rp^u@w#Mh`S4nKaK1?!EuHPl^l(1QB`JQbL~D=6AaY zLtNs8`cfWcUO1Du!(E!l`6u3(4t8HZgB-@IY}l*XQ zBFgU(Y6qMGd49Hyjvqnc9^x>el1qi(7~1FIO(?YV6D%%y;~@psghIMV(V)(8ExdrT z5mpB1S**uE&P^``*I^S+!j<1X4BR5*f}2?T$E(51St3hROrB7Skb|qSGpZp z6Eg!a<>M$cMj};_#Jv5nGWV1@?*hCvP0s1Vm;m2$u5%gAExF+H_NVaROHrW6 z;g@gO)0&i-%A@oB9-wl^q`1ctY=}bl^q#t3(=1gkGGU;@c)t7;FPqdzv?<8F$cDF+ z+`d;~hF@ZQGB{rJKBOLp)ACwGAS;uV1RbZ4m#w3*XqQMVu%hBIzIJS*d3P1uz){hF zN>K;Nt6`U9=E@MM78S_%Cw z4QW>wD+4yC=h{6^c3WqW`Si~zTFry!(Q?mt(5*NoPuc0mXn)@XC)R~Hm&JTCDQpl@ zPfE(@2n}0RDc=`NBxJDE3g&$}J{+A?jf7#wP`Chl^D?yQ$t_Q6?JR;sjyQs@h&5}K z?{H@;H$ze+SQWmbKvgnjfwE~zG4pU`DQ5UAIj-d9Mw?x>~9J015111)78Tz2} z(akSuP?j0c08gIf*Fvir+X2qle)6BCekNH=()GmOjqsGxdZ3U2x9~{O zxnY$$FYua>A>$a=QD?&0Q<2F7>`|Ji5gpGT%|lwz!T&Q?yKHPDmF*S@Uno~(Lxt5o zas~_HSkub;hy4@tI1gjvf>4=XZ9*DwLow?@lyh^o`;e5fy9!>_lrX)JhK#eN6oQW!&c_BG*)gi}xO7cV^MP**wGYN0$oZo7O)O%y{zJDYq=BThxVHPWA@hN^C zD95X|i?T*S?g58dxO)|2!xY$mBcu0Au{dVrM~BFMAXbcpN+J)(COc7RpOeOj7YZiM z3{V@fz(o^&5AVW2uOMQMpqu~lQb3Jh(I04@ADqbgPij}TrCYJ;nZWNARM^I$zUhas5S{S`js48fjqcZ`e5b)n)m7zX=wgf0*wd9a{dnzDRSbQCLYMCfVAe?KYOd!WgfjaQVF080QZaEfhDJ$|J!g9 zRRA`qv^f7An>d^SN^?RJ%M}hn4SM2|>c)sDkYf*9tmL;Dl?^~t_>wj2g2@N3RYb?U(@|ubuhzKGh)Vc7`43*U(1K-dWiIwPtwiTsG3rh&`Mw#ijvzz<^uhw5 z;7fTX>yvgw4gqM8xsSJp0nQ5Z_N6VqaQNBtN6=_oF|yrPrZNysW%Jv96+Xv>O2ia~ zcAzpkWR9RsK8C$QIGiIT-sI#RA%*1wNc_Xi7D~NS$P|yX{sjE+`%i|1Ex>r9>Hngj z>(J-A6^ni3v0fo}&xP`Ld`sasa_0Uq(X_+rfDSGLH4;AcKKpN|H$E(R-dQrS5Jv+% zc-p2;$NMjIt*m+=?@E^YHT%ykw*qk~Tq;kAB*te{$jg;)0*ePnXP@YXYMn4+E#-}Q z)g(op?2iT&B}$`{<~xlKj*IVd;w_ok?JjzDlGyuEnBm{AFfkPl$O=oda~e#MnKo%z zzz9!aj@H2KQmtevGoWsPlcQ*#o3-@@vS6RPG^6+V5w!ffISr`U$0aPY6?L$qgK_IZ zB=OCoa7q|>$~$QPXusOY$?LNC$--yf0@ugaHm0e}vV^vM_~hb~&KH@g@;T$|r)bbC zp9uN84zPB&RXV<+0dR18YgC2QW$YRUN%d%az@*Fn(g&|O#0Htj19@K}J(QV)MMg=w z>BW6GVPP~}EM^$K#Ui-CUaHz@yEwx0a5c{G+oneu2p%G&Jk@r+u`Y)b?0uZObH<9C z=*Aipz;ws0lAQ zcee=jPmLxbfYMWb&hJ0pHRiTf6!DZux{~lXr$6JZpX(sO)N6+zuF~kA# z&vH6T09?&maFi2(vlf@E0!b(uq5F|ipQ#CVr{8D=DnxkeKIaTIn#N$z=}BHAI+fH+ z5#8W~fSQ>n`|JK?Q!0&nWmt0esPBiUA*{rRR+;yqav%>C2DAyU`wA%ybOKHkFfwj5 zi`?KqG(2@iH3sf^satYa=MjmHl#Y_*vhP-)omhL%(FAQz@+o7r&Z;^+Y z>-E-zpT0?9e)g^056txRadJ797y%uyM&1Cww#dAEd&-pGk~tdJiMVD8?qxg6WWnM8 zeJpI~LCDzO_HIWq@^mJlkP(T@X`4E2=X!-=n2UE_MuFfwRKUscK$Eer{;we77(`)% zeC7yxibIl&-}SG1jYZ$qq(RHDIF}yVn737(K|X@OSW{4Y+$3Jzu%$h28ltxv{z_=S T{4(%i6J&VF^kT8TWBC67h89u1 literal 0 HcmV?d00001 diff --git a/bin/minecraft/resources/mekanism/gui/GuiPurificationChamber.png b/bin/minecraft/resources/mekanism/gui/GuiPurificationChamber.png new file mode 100755 index 0000000000000000000000000000000000000000..1d93991a8a01bc8bf2fb6682aea4dbfaae9a966c GIT binary patch literal 5263 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 literal 0 HcmV?d00001 diff --git a/bin/minecraft/resources/mekanism/textures/items.png b/bin/minecraft/resources/mekanism/textures/items.png index 7f53eb50e227de6ba034459177d3fe3ce19b588b..abccf18cb6ee6ee2a366f4c858929a38f9ec086a 100644 GIT binary patch literal 33729 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 diff --git a/bin/minecraft/resources/mekanism/textures/terrain.png b/bin/minecraft/resources/mekanism/textures/terrain.png index ed4f1da0d501d8c42df57e101568eb21008b1ae9..3e45ba82eddfcd863c819fb9970e4a7eea52187b 100755 GIT binary patch literal 35304 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 diff --git a/src/minecraft/mekanism/api/IElectricMachine.java b/src/minecraft/mekanism/api/IElectricMachine.java index 83c124b3c..9ec67892e 100644 --- a/src/minecraft/mekanism/api/IElectricMachine.java +++ b/src/minecraft/mekanism/api/IElectricMachine.java @@ -1,5 +1,6 @@ package mekanism.api; +import java.util.HashMap; import java.util.Map; /** @@ -24,10 +25,9 @@ public interface IElectricMachine * Runs this machine's operation -- or smelts the item. */ public void operate(); - + /** - * Gets the recipe vector from the machine tile entity. - * @return recipes + * Gets this machine's recipes. */ - public Map getRecipes(); + public HashMap getRecipes(); } diff --git a/src/minecraft/mekanism/client/ClientProxy.java b/src/minecraft/mekanism/client/ClientProxy.java index 3882e9e72..0e217e385 100644 --- a/src/minecraft/mekanism/client/ClientProxy.java +++ b/src/minecraft/mekanism/client/ClientProxy.java @@ -12,6 +12,7 @@ import mekanism.common.TileEntityElectricMachine; import mekanism.common.TileEntityEnergyCube; import mekanism.common.TileEntityGasTank; import mekanism.common.TileEntityMetallurgicInfuser; +import mekanism.common.TileEntityPurificationChamber; import mekanism.common.TileEntitySmeltingFactory; import mekanism.common.TileEntityTeleporter; import mekanism.common.TileEntityTheoreticalElementizer; @@ -77,6 +78,7 @@ public class ClientProxy extends CommonProxy MinecraftForgeClient.preloadTexture("/resources/mekanism/animate/ElementizerSide.png"); MinecraftForgeClient.preloadTexture("/resources/mekanism/animate/HydrogenFront.png"); MinecraftForgeClient.preloadTexture("/resources/mekanism/animate/HydrogenSide.png"); + MinecraftForgeClient.preloadTexture("/resources/mekanism/animate/PurificationChamberFront.png"); //Register animated TextureFX try { @@ -88,6 +90,7 @@ public class ClientProxy extends CommonProxy TextureFXManager.instance().addAnimation(new TextureAnimatedFX("/resources/mekanism/animate/ElementizerSide.png", Mekanism.ANIMATED_TEXTURE_INDEX+6)); TextureFXManager.instance().addAnimation(new TextureAnimatedFX("/resources/mekanism/animate/InfuserFront.png", Mekanism.ANIMATED_TEXTURE_INDEX+7)); TextureFXManager.instance().addAnimation(new TextureAnimatedFX("/resources/mekanism/animate/InfuserSide.png", Mekanism.ANIMATED_TEXTURE_INDEX+8)); + TextureFXManager.instance().addAnimation(new TextureAnimatedFX("/resources/mekanism/animate/PurificationChamberFront.png", Mekanism.ANIMATED_TEXTURE_INDEX+9)); } catch (IOException e) { System.err.println("[Mekanism] Error registering animation with FML: " + e.getMessage()); } @@ -135,13 +138,13 @@ public class ClientProxy extends CommonProxy case 2: return new GuiWeatherOrb(player); case 3: - return new GuiElectricMachine(player.inventory, (TileEntityElectricMachine)tileEntity); + return new GuiEnrichmentChamber(player.inventory, (TileEntityElectricMachine)tileEntity); case 4: - return new GuiAdvancedElectricMachine(player.inventory, (TileEntityAdvancedElectricMachine)tileEntity); + return new GuiPlatinumCompressor(player.inventory, (TileEntityAdvancedElectricMachine)tileEntity); case 5: - return new GuiAdvancedElectricMachine(player.inventory, (TileEntityAdvancedElectricMachine)tileEntity); + return new GuiCombiner(player.inventory, (TileEntityAdvancedElectricMachine)tileEntity); case 6: - return new GuiElectricMachine(player.inventory, (TileEntityElectricMachine)tileEntity); + return new GuiCrusher(player.inventory, (TileEntityElectricMachine)tileEntity); case 7: return new GuiTheoreticalElementizer(player.inventory, (TileEntityTheoreticalElementizer)tileEntity); case 8: @@ -162,6 +165,8 @@ public class ClientProxy extends CommonProxy { return new GuiPortableTeleporter(player, itemStack); } + case 15: + return new GuiPurificationChamber(player.inventory, (TileEntityAdvancedElectricMachine)tileEntity); } return null; } diff --git a/src/minecraft/mekanism/client/GuiCombiner.java b/src/minecraft/mekanism/client/GuiCombiner.java new file mode 100644 index 000000000..e81f286b3 --- /dev/null +++ b/src/minecraft/mekanism/client/GuiCombiner.java @@ -0,0 +1,12 @@ +package mekanism.client; + +import mekanism.common.TileEntityAdvancedElectricMachine; +import net.minecraft.entity.player.InventoryPlayer; + +public class GuiCombiner extends GuiAdvancedElectricMachine +{ + public GuiCombiner(InventoryPlayer inventory, TileEntityAdvancedElectricMachine tentity) + { + super(inventory, tentity); + } +} diff --git a/src/minecraft/mekanism/client/GuiCrusher.java b/src/minecraft/mekanism/client/GuiCrusher.java new file mode 100644 index 000000000..131754499 --- /dev/null +++ b/src/minecraft/mekanism/client/GuiCrusher.java @@ -0,0 +1,12 @@ +package mekanism.client; + +import mekanism.common.TileEntityElectricMachine; +import net.minecraft.entity.player.InventoryPlayer; + +public class GuiCrusher extends GuiElectricMachine +{ + public GuiCrusher(InventoryPlayer inventory, TileEntityElectricMachine tentity) + { + super(inventory, tentity); + } +} diff --git a/src/minecraft/mekanism/client/GuiEnrichmentChamber.java b/src/minecraft/mekanism/client/GuiEnrichmentChamber.java new file mode 100644 index 000000000..9062749e3 --- /dev/null +++ b/src/minecraft/mekanism/client/GuiEnrichmentChamber.java @@ -0,0 +1,12 @@ +package mekanism.client; + +import mekanism.common.TileEntityElectricMachine; +import net.minecraft.entity.player.InventoryPlayer; + +public class GuiEnrichmentChamber extends GuiElectricMachine +{ + public GuiEnrichmentChamber(InventoryPlayer inventory, TileEntityElectricMachine tentity) + { + super(inventory, tentity); + } +} diff --git a/src/minecraft/mekanism/client/GuiPlatinumCompressor.java b/src/minecraft/mekanism/client/GuiPlatinumCompressor.java new file mode 100644 index 000000000..065c313d7 --- /dev/null +++ b/src/minecraft/mekanism/client/GuiPlatinumCompressor.java @@ -0,0 +1,12 @@ +package mekanism.client; + +import mekanism.common.TileEntityAdvancedElectricMachine; +import net.minecraft.entity.player.InventoryPlayer; + +public class GuiPlatinumCompressor extends GuiAdvancedElectricMachine +{ + public GuiPlatinumCompressor(InventoryPlayer inventory, TileEntityAdvancedElectricMachine tentity) + { + super(inventory, tentity); + } +} diff --git a/src/minecraft/mekanism/client/GuiPortableTeleporter.java b/src/minecraft/mekanism/client/GuiPortableTeleporter.java index 9b676548d..c21c804c6 100644 --- a/src/minecraft/mekanism/client/GuiPortableTeleporter.java +++ b/src/minecraft/mekanism/client/GuiPortableTeleporter.java @@ -65,8 +65,11 @@ public class GuiPortableTeleporter extends GuiScreen ItemPortableTeleporter item = (ItemPortableTeleporter)itemStack.getItem(); - fontRenderer.drawString("Portable Teleporter", 160, 43, 0x404040); - fontRenderer.drawString(item.getStatusAsString(item.getStatus(itemStack)), 178, 56, 0x00CD00); + ((GuiButton)controlList.get(0)).xPosition = guiWidth+48; + ((GuiButton)controlList.get(0)).yPosition = guiHeight+68; + + fontRenderer.drawString("Portable Teleporter", guiWidth+39, guiHeight+6, 0x404040); + fontRenderer.drawString(item.getStatusAsString(item.getStatus(itemStack)), guiWidth+53, guiHeight+19, 0x00CD00); super.drawScreen(i, j, f); } diff --git a/src/minecraft/mekanism/client/GuiPurificationChamber.java b/src/minecraft/mekanism/client/GuiPurificationChamber.java new file mode 100644 index 000000000..fc7796e50 --- /dev/null +++ b/src/minecraft/mekanism/client/GuiPurificationChamber.java @@ -0,0 +1,12 @@ +package mekanism.client; + +import mekanism.common.TileEntityAdvancedElectricMachine; +import net.minecraft.entity.player.InventoryPlayer; + +public class GuiPurificationChamber extends GuiAdvancedElectricMachine +{ + public GuiPurificationChamber(InventoryPlayer inventory, TileEntityAdvancedElectricMachine tentity) + { + super(inventory, tentity); + } +} diff --git a/src/minecraft/mekanism/client/GuiSmeltingFactory.java b/src/minecraft/mekanism/client/GuiSmeltingFactory.java index 6a712e035..ea05ef6e0 100644 --- a/src/minecraft/mekanism/client/GuiSmeltingFactory.java +++ b/src/minecraft/mekanism/client/GuiSmeltingFactory.java @@ -50,8 +50,7 @@ public class GuiSmeltingFactory extends GuiContainer drawTexturedModalRect(guiWidth + xAxis, guiHeight + 33, 176, 52, 8, displayInt); } } - - if(tileEntity.tier == SmeltingFactoryTier.ADVANCED) + else if(tileEntity.tier == SmeltingFactoryTier.ADVANCED) { for(int i = 0; i < tileEntity.tier.processes; i++) { @@ -61,8 +60,7 @@ public class GuiSmeltingFactory extends GuiContainer drawTexturedModalRect(guiWidth + xAxis, guiHeight + 33, 176, 52, 8, displayInt); } } - - if(tileEntity.tier == SmeltingFactoryTier.ELITE) + else if(tileEntity.tier == SmeltingFactoryTier.ELITE) { for(int i = 0; i < tileEntity.tier.processes; i++) { diff --git a/src/minecraft/mekanism/common/BlockMachine.java b/src/minecraft/mekanism/common/BlockMachine.java index 4ee829bb2..7d9579621 100644 --- a/src/minecraft/mekanism/common/BlockMachine.java +++ b/src/minecraft/mekanism/common/BlockMachine.java @@ -34,6 +34,7 @@ import cpw.mods.fml.relauncher.SideOnly; * 6: Advanced Smelting Factory * 7: Elite Smelting Factory * 8: Metallurgic Infuser + * 9: Purification Chamber * @author AidanBrady * */ @@ -130,7 +131,7 @@ public class BlockMachine extends BlockContainer return 9; } else { - return 2; + return 26; } } else if(meta == 1) @@ -140,7 +141,7 @@ public class BlockMachine extends BlockContainer return 14; } else { - return 2; + return 26; } } else if(meta == 2) @@ -183,6 +184,10 @@ public class BlockMachine extends BlockContainer { return 41; } + else if(side == 0 || side == 1) + { + return 47; + } else { return 44; } @@ -193,6 +198,10 @@ public class BlockMachine extends BlockContainer { return 42; } + else if(side == 0 || side == 1) + { + return 48; + } else { return 45; } @@ -203,6 +212,10 @@ public class BlockMachine extends BlockContainer { return 43; } + else if(side == 0 || side == 1) + { + return 49; + } else { return 46; } @@ -217,6 +230,16 @@ public class BlockMachine extends BlockContainer return 32; } } + else if(meta == 9) + { + if(side == 3) + { + return 12; + } + else { + return 2; + } + } else { return 0; } @@ -236,7 +259,7 @@ public class BlockMachine extends BlockContainer return MekanismUtils.isActive(world, x, y, z) ? 8 : 9; } else { - return 2; + return 26; } } else if(metadata == 1) @@ -246,7 +269,7 @@ public class BlockMachine extends BlockContainer return MekanismUtils.isActive(world, x, y, z) ? Mekanism.ANIMATED_TEXTURE_INDEX+2 : 14; } else { - return 2; + return 26; } } else if(metadata == 2) @@ -295,6 +318,10 @@ public class BlockMachine extends BlockContainer { return 41; } + else if(side == 0 || side == 1) + { + return 47; + } else { return 44; } @@ -305,6 +332,10 @@ public class BlockMachine extends BlockContainer { return 42; } + else if(side == 0 || side == 1) + { + return 48; + } else { return 45; } @@ -315,6 +346,10 @@ public class BlockMachine extends BlockContainer { return 43; } + else if(side == 0 || side == 1) + { + return 49; + } else { return 46; } @@ -329,6 +364,16 @@ public class BlockMachine extends BlockContainer return MekanismUtils.isActive(world, x, y, z) ? Mekanism.ANIMATED_TEXTURE_INDEX+8 : 32; } } + else if(metadata == 9) + { + if(side == tileEntity.facing) + { + return MekanismUtils.isActive(world, x, y, z) ? Mekanism.ANIMATED_TEXTURE_INDEX+9 : 12; + } + else { + return 2; + } + } else { return 0; } @@ -358,6 +403,7 @@ public class BlockMachine extends BlockContainer list.add(new ItemStack(i, 1, 6)); list.add(new ItemStack(i, 1, 7)); list.add(new ItemStack(i, 1, 8)); + list.add(new ItemStack(i, 1, 9)); } @Override @@ -504,7 +550,8 @@ public class BlockMachine extends BlockContainer BASIC_SMELTING_FACTORY(5, 11, TileEntitySmeltingFactory.class, false), ADVANCED_SMELTING_FACTORY(6, 11, TileEntityAdvancedSmeltingFactory.class, false), ELITE_SMELTING_FACTORY(7, 11, TileEntityEliteSmeltingFactory.class, false), - METALLURGIC_INFUSER(8, 12, TileEntityMetallurgicInfuser.class, false); + METALLURGIC_INFUSER(8, 12, TileEntityMetallurgicInfuser.class, false), + PURIFICATION_CHAMBER(9, 15, TileEntityPurificationChamber.class, false); public int meta; public int guiId; diff --git a/src/minecraft/mekanism/common/CommonProxy.java b/src/minecraft/mekanism/common/CommonProxy.java index dc6c00657..c920ec888 100644 --- a/src/minecraft/mekanism/common/CommonProxy.java +++ b/src/minecraft/mekanism/common/CommonProxy.java @@ -66,8 +66,9 @@ public class CommonProxy Mekanism.gasTankID = Mekanism.configuration.getBlock("GasTank", 3006).getInt(); Mekanism.extrasEnabled = Mekanism.configuration.get(Configuration.CATEGORY_GENERAL, "ExtrasEnabled", true).getBoolean(true); Mekanism.platinumGenerationEnabled = Mekanism.configuration.get(Configuration.CATEGORY_GENERAL, "PlatinumGenerationEnabled", true).getBoolean(true); - Mekanism.disableBCSteelCrafting = Mekanism.configuration.get(Configuration.CATEGORY_GENERAL, "DisableBCSteelCrafting", true).getBoolean(true); - Mekanism.disableBCBronzeCrafting = Mekanism.configuration.get(Configuration.CATEGORY_GENERAL, "DisableBCBronzeCrafting", true).getBoolean(true); + Mekanism.disableBCSteelCrafting = Mekanism.configuration.get(Configuration.CATEGORY_GENERAL, "DisableBCSteelCrafting", false).getBoolean(true); + Mekanism.disableBCBronzeCrafting = Mekanism.configuration.get(Configuration.CATEGORY_GENERAL, "DisableBCBronzeCrafting", false).getBoolean(true); + Mekanism.notifyNewReleases = Mekanism.configuration.get(Configuration.CATEGORY_GENERAL, "NotifyNewReleases", false).getBoolean(true); Mekanism.configuration.save(); } @@ -145,6 +146,8 @@ public class CommonProxy return new ContainerMetallurgicInfuser(player.inventory, (TileEntityMetallurgicInfuser)tileEntity); case 13: return new ContainerTeleporter(player.inventory, (TileEntityTeleporter)tileEntity); + case 15: + return new ContainerAdvancedElectricMachine(player.inventory, (TileEntityAdvancedElectricMachine)tileEntity); } return null; } diff --git a/src/minecraft/mekanism/common/ContainerMetallurgicInfuser.java b/src/minecraft/mekanism/common/ContainerMetallurgicInfuser.java index 124dfa044..ab8ac00a8 100644 --- a/src/minecraft/mekanism/common/ContainerMetallurgicInfuser.java +++ b/src/minecraft/mekanism/common/ContainerMetallurgicInfuser.java @@ -4,6 +4,7 @@ import ic2.api.IElectricItem; import mekanism.api.InfusionInput; import mekanism.api.InfusionOutput; import mekanism.api.InfusionType; +import mekanism.common.RecipeHandler.Recipe; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.InventoryPlayer; import net.minecraft.inventory.Container; @@ -97,7 +98,7 @@ public class ContainerMetallurgicInfuser extends Container return null; } } - else if(RecipeHandler.getOutput(InfusionInput.getInfusion(tileEntity.type, tileEntity.infuseStored, slotStack), false, TileEntityMetallurgicInfuser.recipes) != null) + else if(RecipeHandler.getOutput(InfusionInput.getInfusion(tileEntity.type, tileEntity.infuseStored, slotStack), false, Recipe.METALLURGIC_INFUSER.get()) != null) { if(!mergeItemStack(slotStack, 2, 3, false)) { diff --git a/src/minecraft/mekanism/common/ContainerSmeltingFactory.java b/src/minecraft/mekanism/common/ContainerSmeltingFactory.java index 6d3013dab..8abf979f3 100644 --- a/src/minecraft/mekanism/common/ContainerSmeltingFactory.java +++ b/src/minecraft/mekanism/common/ContainerSmeltingFactory.java @@ -30,30 +30,46 @@ public class ContainerSmeltingFactory extends Container { int xAxis = 55 + (i*38); - addSlotToContainer(new Slot(tentity, 2+i*2, xAxis, 13)); - addSlotToContainer(new SlotFurnace(inventory.player, tentity, 3+i*2, xAxis, 57)); + addSlotToContainer(new Slot(tentity, 2+i, xAxis, 13)); + } + + for(int i = 0; i < tileEntity.tier.processes; i++) + { + int xAxis = 55 + (i*38); + + addSlotToContainer(new SlotFurnace(inventory.player, tentity, tileEntity.tier.processes+2+i, xAxis, 57)); } } - else if(tileEntity.tier == SmeltingFactoryTier.ADVANCED) { for(int i = 0; i < tileEntity.tier.processes; i++) { int xAxis = 35 + (i*26); - addSlotToContainer(new Slot(tentity, 2+i*2, xAxis, 13)); - addSlotToContainer(new SlotFurnace(inventory.player, tentity, 3+i*2, xAxis, 57)); + addSlotToContainer(new Slot(tentity, 2+i, xAxis, 13)); + } + + for(int i = 0; i < tileEntity.tier.processes; i++) + { + int xAxis = 35 + (i*26); + + addSlotToContainer(new SlotFurnace(inventory.player, tentity, tileEntity.tier.processes+2+i, xAxis, 57)); } } - else if(tileEntity.tier == SmeltingFactoryTier.ELITE) { for(int i = 0; i < tileEntity.tier.processes; i++) { int xAxis = 29 + (i*19); - addSlotToContainer(new Slot(tentity, 2+i*2, xAxis, 13)); - addSlotToContainer(new SlotFurnace(inventory.player, tentity, 3+i*2, xAxis, 57)); + addSlotToContainer(new Slot(tentity, 2+i, xAxis, 13)); + } + + for(int i = 0; i < tileEntity.tier.processes; i++) + { + int xAxis = 29 + (i*19); + + addSlotToContainer(new SlotFurnace(inventory.player, tentity, tileEntity.tier.processes+2+i, xAxis, 57)); } } @@ -127,34 +143,10 @@ public class ContainerSmeltingFactory extends Container { if(!isInputSlot(slotID)) { - if(!mergeItemStack(slotStack, 2, 3, false)) - { - if(!mergeItemStack(slotStack, 4, 5, false)) - { - if(!mergeItemStack(slotStack, 6, 7, false)) - { - if(tileEntity.tier != SmeltingFactoryTier.BASIC) - { - if(!mergeItemStack(slotStack, 8, 9, false)) - { - if(!mergeItemStack(slotStack, 10, 11, false)) - { - if(tileEntity.tier != SmeltingFactoryTier.ADVANCED) - { - if(!mergeItemStack(slotStack, 12, 13, false)) - { - if(!mergeItemStack(slotStack, 14, 15, false)) - { - return null; - } - } - } - } - } - } - } - } - } + if(!mergeItemStack(slotStack, 2, 2+tileEntity.tier.processes, false)) + { + return null; + } } else { if(!mergeItemStack(slotStack, tileEntity.inventory.length, inventorySlots.size(), true)) @@ -227,11 +219,11 @@ public class ContainerSmeltingFactory extends Container public boolean isInputSlot(int slot) { if(tileEntity.tier == Tier.SmeltingFactoryTier.BASIC) - return slot == 2 || slot == 4 || slot == 6; + return slot >= 2 && slot <= 4; if(tileEntity.tier == Tier.SmeltingFactoryTier.ADVANCED) - return slot == 2 || slot == 4 || slot == 6 || slot == 8 || slot == 10; + return slot >= 2 && slot <= 6; if(tileEntity.tier == Tier.SmeltingFactoryTier.ELITE) - return slot == 2 || slot == 4 || slot == 6 || slot == 8 || slot == 12 || slot == 14; + return slot >= 2 && slot <= 8; return false; } @@ -239,11 +231,11 @@ public class ContainerSmeltingFactory extends Container public boolean isOutputSlot(int slot) { if(tileEntity.tier == Tier.SmeltingFactoryTier.BASIC) - return slot == 3 || slot == 5 || slot == 7; + return slot >= 5 && slot <= 7; if(tileEntity.tier == Tier.SmeltingFactoryTier.ADVANCED) - return slot == 3 || slot == 5 || slot == 7 || slot == 9 || slot == 11; + return slot >= 7 && slot <= 11; if(tileEntity.tier == Tier.SmeltingFactoryTier.ELITE) - return slot == 3 || slot == 5 || slot == 7 || slot == 9 || slot == 11 || slot == 13 || slot == 15; + return slot >= 9 && slot <= 15; return false; } diff --git a/src/minecraft/mekanism/common/ItemBlockMachine.java b/src/minecraft/mekanism/common/ItemBlockMachine.java index 02bc1bfc9..52c7391f6 100644 --- a/src/minecraft/mekanism/common/ItemBlockMachine.java +++ b/src/minecraft/mekanism/common/ItemBlockMachine.java @@ -15,6 +15,7 @@ import net.minecraft.item.ItemStack; * 6: Advanced Smelting Factory * 7: Elite Smelting Factory * 8: Metallurgic Infuser + * 9: Purification Chamber * @author AidanBrady * */ @@ -74,6 +75,9 @@ public class ItemBlockMachine extends ItemBlock case 8: name = "MetallurgicInfuser"; break; + case 9: + name = "PurificationChamber"; + break; default: name = "Unknown"; break; diff --git a/src/minecraft/mekanism/common/ItemClump.java b/src/minecraft/mekanism/common/ItemClump.java new file mode 100644 index 000000000..e170339b7 --- /dev/null +++ b/src/minecraft/mekanism/common/ItemClump.java @@ -0,0 +1,48 @@ +package mekanism.common; + +import java.util.List; + +import net.minecraft.creativetab.CreativeTabs; +import net.minecraft.item.ItemStack; + +public class ItemClump extends ItemMekanism +{ + public static String[] en_USNames = {"Iron", "Gold", "Platinum", + "Copper", "Tin"}; + + public ItemClump(int id) + { + super(id); + setHasSubtypes(true); + setCreativeTab(Mekanism.tabMekanism); + } + + @Override + public int getIconFromDamage(int meta) + { + switch (meta) + { + case 0: return 216; + case 1: return 218; + case 2: return 210; + case 3: return 211; + case 4: return 212; + default: return 0; + } + } + + @Override + public void getSubItems(int id, CreativeTabs tabs, List itemList) + { + for (int counter = 0; counter <= 4; ++counter) + { + itemList.add(new ItemStack(this, 1, counter)); + } + } + + @Override + public String getItemNameIS(ItemStack item) + { + return "item." + en_USNames[item.getItemDamage()].toLowerCase() + "Clump"; + } +} diff --git a/src/minecraft/mekanism/common/ItemDirtyDust.java b/src/minecraft/mekanism/common/ItemDirtyDust.java new file mode 100644 index 000000000..34ccc63b2 --- /dev/null +++ b/src/minecraft/mekanism/common/ItemDirtyDust.java @@ -0,0 +1,48 @@ +package mekanism.common; + +import java.util.List; + +import net.minecraft.creativetab.CreativeTabs; +import net.minecraft.item.ItemStack; + +public class ItemDirtyDust extends ItemMekanism +{ + public static String[] en_USNames = {"Iron", "Gold", "Platinum", + "Copper", "Tin"}; + + public ItemDirtyDust(int id) + { + super(id); + setHasSubtypes(true); + setCreativeTab(Mekanism.tabMekanism); + } + + @Override + public int getIconFromDamage(int meta) + { + switch (meta) + { + case 0: return 200; + case 1: return 202; + case 2: return 194; + case 3: return 195; + case 4: return 196; + default: return 0; + } + } + + @Override + public void getSubItems(int id, CreativeTabs tabs, List itemList) + { + for (int counter = 0; counter <= 4; ++counter) + { + itemList.add(new ItemStack(this, 1, counter)); + } + } + + @Override + public String getItemNameIS(ItemStack item) + { + return "item.dirty" + en_USNames[item.getItemDamage()] + "Dust"; + } +} diff --git a/src/minecraft/mekanism/common/ItemPortableTeleporter.java b/src/minecraft/mekanism/common/ItemPortableTeleporter.java index e5f5fc9ab..91c0b8203 100644 --- a/src/minecraft/mekanism/common/ItemPortableTeleporter.java +++ b/src/minecraft/mekanism/common/ItemPortableTeleporter.java @@ -103,4 +103,10 @@ public class ItemPortableTeleporter extends ItemEnergized itemstack.stackTagCompound.setInteger("digit"+index, digit); } + + @Override + public boolean canProduceElectricity() + { + return false; + } } diff --git a/src/minecraft/mekanism/common/Mekanism.java b/src/minecraft/mekanism/common/Mekanism.java index a0866ec06..719bf99d1 100644 --- a/src/minecraft/mekanism/common/Mekanism.java +++ b/src/minecraft/mekanism/common/Mekanism.java @@ -49,7 +49,7 @@ import cpw.mods.fml.server.FMLServerHandler; * @author AidanBrady * */ -@Mod(modid = "Mekanism", name = "Mekanism", version = "5.1.1") +@Mod(modid = "Mekanism", name = "Mekanism", version = "5.2.0") @NetworkMod(channels = {"Mekanism"}, clientSideRequired = true, serverSideRequired = false, packetHandler = PacketHandler.class) public class Mekanism { @@ -71,7 +71,7 @@ public class Mekanism public static Configuration configuration; /** Mekanism version number */ - public static Version versionNumber = new Version(5, 1, 1); + public static Version versionNumber = new Version(5, 2, 0); /** Map of Teleporter info. */ public static Map> teleporters = new HashMap>(); @@ -138,12 +138,15 @@ public class Mekanism //MultiID Items public static Item Dust; public static Item Ingot; + public static Item Clump; + public static Item DirtyDust; //Boolean Values public static boolean extrasEnabled = true; public static boolean platinumGenerationEnabled = true; public static boolean disableBCBronzeCrafting = true; public static boolean disableBCSteelCrafting = true; + public static boolean notifyNewReleases = true; //Extra data public static float ObsidianTNTBlastRadius = 12.0F; @@ -172,13 +175,13 @@ public class Mekanism "*", Character.valueOf('*'), new ItemStack(BasicBlock, 1, 3) })); CraftingManager.getInstance().getRecipeList().add(new ShapedOreRecipe(new ItemStack(BasicBlock, 1, 2), new Object[] { - "***", "***", "***", Character.valueOf('*'), "ingotObsidian" + "***", "***", "***", Character.valueOf('*'), "ingotRefinedObsidian" })); CraftingManager.getInstance().getRecipeList().add(new ShapedOreRecipe(new ItemStack(Ingot, 9, 0), new Object[] { "*", Character.valueOf('*'), new ItemStack(BasicBlock, 1, 2) })); CraftingManager.getInstance().getRecipeList().add(new ShapedOreRecipe(new ItemStack(BasicBlock, 1, 4), new Object[] { - "***", "***", "***", Character.valueOf('*'), "ingotGlowstone" + "***", "***", "***", Character.valueOf('*'), "ingotRefinedGlowstone" })); CraftingManager.getInstance().getRecipeList().add(new ShapedOreRecipe(new ItemStack(Ingot, 9, 3), new Object[] { "*", Character.valueOf('*'), new ItemStack(BasicBlock, 1, 4) @@ -234,7 +237,7 @@ public class Mekanism "AOA", "PDP", "AOA", Character.valueOf('A'), EnrichedAlloy, Character.valueOf('O'), "dustObsidian", Character.valueOf('P'), "dustPlatinum", Character.valueOf('D'), Item.diamond })); CraftingManager.getInstance().getRecipeList().add(new ShapedOreRecipe(AtomicDisassembler.getUnchargedItem(), new Object[] { - "AEA", "ACA", " O ", Character.valueOf('A'), EnrichedAlloy, Character.valueOf('E'), EnergyTablet.getUnchargedItem(), Character.valueOf('C'), AtomicCore, Character.valueOf('O'), "ingotObsidian" + "AEA", "ACA", " O ", Character.valueOf('A'), EnrichedAlloy, Character.valueOf('E'), EnergyTablet.getUnchargedItem(), Character.valueOf('C'), AtomicCore, Character.valueOf('O'), "ingotRefinedObsidian" })); CraftingManager.getInstance().getRecipeList().add(new ShapedOreRecipe(new ItemStack(EnrichedAlloy), new Object[] { " R ", "RIR", " R ", Character.valueOf('R'), Item.redstone, Character.valueOf('I'), Item.ingotIron @@ -317,15 +320,15 @@ public class Mekanism //Platinum Compressor Recipes RecipeHandler.addPlatinumCompressorRecipe(new ItemStack(Item.lightStoneDust), new ItemStack(Ingot, 1, 3)); - //Combiner Recipes - RecipeHandler.addCombinerRecipe(new ItemStack(Item.redstone, 10), new ItemStack(Block.oreRedstone)); - RecipeHandler.addCombinerRecipe(new ItemStack(Item.dyePowder, 8, 4), new ItemStack(Block.oreLapis)); - //Crusher Recipes RecipeHandler.addCrusherRecipe(new ItemStack(Item.diamond), new ItemStack(Dust, 1, 4)); RecipeHandler.addCrusherRecipe(new ItemStack(Item.ingotIron), new ItemStack(Dust, 1, 0)); RecipeHandler.addCrusherRecipe(new ItemStack(Item.ingotGold), new ItemStack(Dust, 1, 1)); + //Purification Chamber Recipes + RecipeHandler.addPurificationChamberRecipe(new ItemStack(Block.oreIron), new ItemStack(Clump, 1, 0)); + RecipeHandler.addPurificationChamberRecipe(new ItemStack(Block.oreGold), new ItemStack(Clump, 1, 1)); + //Metallurgic Infuser Recipes RecipeHandler.addMetallurgicInfuserRecipe(InfusionInput.getInfusion(InfusionType.COAL, 10, new ItemStack(EnrichedIron)), new ItemStack(Dust, 1, 5)); } @@ -383,6 +386,7 @@ public class Mekanism LanguageRegistry.instance().addStringLocalization("tile.MachineBlock.AdvancedSmeltingFactory.name", "Advanced Smelting Factory"); LanguageRegistry.instance().addStringLocalization("tile.MachineBlock.EliteSmeltingFactory.name", "Elite Smelting Factory"); LanguageRegistry.instance().addStringLocalization("tile.MachineBlock.MetallurgicInfuser.name", "Metallurgic Infuser"); + LanguageRegistry.instance().addStringLocalization("tile.MachineBlock.PurificationChamber.name", "Purification Chamber"); //Localization for OreBlock LanguageRegistry.instance().addStringLocalization("tile.OreBlock.PlatinumOre.name", "Platinum Ore"); @@ -402,6 +406,20 @@ public class Mekanism LanguageRegistry.instance().addStringLocalization("item.copperDust.name", "Copper Dust"); LanguageRegistry.instance().addStringLocalization("item.tinDust.name", "Tin Dust"); + //Localization for Clump + LanguageRegistry.instance().addStringLocalization("item.ironClump.name", "Iron Clump"); + LanguageRegistry.instance().addStringLocalization("item.goldClump.name", "Gold Clump"); + LanguageRegistry.instance().addStringLocalization("item.platinumClump.name", "Platinum Clump"); + LanguageRegistry.instance().addStringLocalization("item.copperClump.name", "Copper Clump"); + LanguageRegistry.instance().addStringLocalization("item.tinClump.name", "Tin Clump"); + + //Localization for Dirty Dust + LanguageRegistry.instance().addStringLocalization("item.dirtyIronDust.name", "Dirty Iron Dust"); + LanguageRegistry.instance().addStringLocalization("item.dirtyGoldDust.name", "Dirty Gold Dust"); + LanguageRegistry.instance().addStringLocalization("item.dirtyPlatinumDust.name", "Dirty Platinum Dust"); + LanguageRegistry.instance().addStringLocalization("item.dirtyCopperDust.name", "Dirty Copper Dust"); + LanguageRegistry.instance().addStringLocalization("item.dirtyTinDust.name", "Dirty Tin Dust"); + //Localization for Ingot LanguageRegistry.instance().addStringLocalization("item.obsidianIngot.name", "Obsidian Ingot"); LanguageRegistry.instance().addStringLocalization("item.platinumIngot.name", "Platinum Ingot"); @@ -467,6 +485,8 @@ public class Mekanism CompressedCarbon = new ItemMekanism(configuration.getItem("CompressedCarbon", 11216).getInt()).setItemName("CompressedCarbon"); PortableTeleporter = new ItemPortableTeleporter(configuration.getItem("PortableTeleporter", 11217).getInt()).setItemName("PortableTeleporter"); TeleportationCore = new ItemMekanism(configuration.getItem("TeleportationCore", 11218).getInt()).setItemName("TeleportationCore"); + Clump = new ItemClump(configuration.getItem("Clump", 11219).getInt()-256); + DirtyDust = new ItemDirtyDust(configuration.getItem("DirtyDust", 11220).getInt()-256); configuration.save(); } @@ -511,10 +531,10 @@ public class Mekanism OreDictionary.registerOre("dustCopper", new ItemStack(Dust, 1, 6)); OreDictionary.registerOre("dustTin", new ItemStack(Dust, 1, 7)); - OreDictionary.registerOre("ingotObsidian", new ItemStack(Ingot, 1, 0)); + OreDictionary.registerOre("ingotRefinedObsidian", new ItemStack(Ingot, 1, 0)); OreDictionary.registerOre("ingotPlatinum", new ItemStack(Ingot, 1, 1)); OreDictionary.registerOre("ingotBronze", new ItemStack(Ingot, 1, 2)); - OreDictionary.registerOre("ingotGlowstone", new ItemStack(Ingot, 1, 3)); + OreDictionary.registerOre("ingotRefinedGlowstone", new ItemStack(Ingot, 1, 3)); OreDictionary.registerOre("ingotSteel", new ItemStack(Ingot, 1, 4)); OreDictionary.registerOre("blockPlatinum", new ItemStack(BasicBlock, 1, 0)); @@ -524,6 +544,18 @@ public class Mekanism OreDictionary.registerOre("blockRefinedGlowstone", new ItemStack(BasicBlock, 1, 4)); OreDictionary.registerOre("blockSteel", new ItemStack(BasicBlock, 1, 5)); + OreDictionary.registerOre("dirtyDustIron", new ItemStack(DirtyDust, 1, 0)); + OreDictionary.registerOre("dirtyDustGold", new ItemStack(DirtyDust, 1, 1)); + OreDictionary.registerOre("dirtyDustPlatinum", new ItemStack(DirtyDust, 1, 2)); + OreDictionary.registerOre("dirtyDustCopper", new ItemStack(DirtyDust, 1, 3)); + OreDictionary.registerOre("dirtyDustTin", new ItemStack(DirtyDust, 1, 4)); + + OreDictionary.registerOre("clumpIron", new ItemStack(Clump, 1, 0)); + OreDictionary.registerOre("clumpGold", new ItemStack(Clump, 1, 1)); + OreDictionary.registerOre("clumpPlatinum", new ItemStack(Clump, 1, 2)); + OreDictionary.registerOre("clumpCopper", new ItemStack(Clump, 1, 3)); + OreDictionary.registerOre("clumpTin", new ItemStack(Clump, 1, 4)); + OreDictionary.registerOre("orePlatinum", new ItemStack(OreBlock, 1, 0)); OreDictionary.registerOre("basicCircuit", new ItemStack(ControlCircuit)); @@ -538,25 +570,78 @@ public class Mekanism RecipeHandler.addCrusherRecipe(new ItemStack(Item.coal), hooks.IC2CoalDust); } + for(ItemStack ore : OreDictionary.getOres("clumpIron")) + { + RecipeHandler.addCrusherRecipe(ore, new ItemStack(DirtyDust, 1, 0)); + } + + for(ItemStack ore : OreDictionary.getOres("clumpGold")) + { + RecipeHandler.addCrusherRecipe(ore, new ItemStack(DirtyDust, 1, 1)); + } + + for(ItemStack ore : OreDictionary.getOres("clumpPlatinum")) + { + RecipeHandler.addCrusherRecipe(ore, new ItemStack(DirtyDust, 1, 2)); + } + + for(ItemStack ore : OreDictionary.getOres("clumpCopper")) + { + RecipeHandler.addCrusherRecipe(ore, new ItemStack(DirtyDust, 1, 3)); + } + + for(ItemStack ore : OreDictionary.getOres("clumpTin")) + { + RecipeHandler.addCrusherRecipe(ore, new ItemStack(DirtyDust, 1, 4)); + } + + for(ItemStack ore : OreDictionary.getOres("dirtyDustIron")) + { + RecipeHandler.addEnrichmentChamberRecipe(ore, new ItemStack(Dust, 1, 0)); + } + + for(ItemStack ore : OreDictionary.getOres("dirtyDustGold")) + { + RecipeHandler.addEnrichmentChamberRecipe(ore, new ItemStack(Dust, 1, 1)); + } + + for(ItemStack ore : OreDictionary.getOres("dirtyDustPlatinum")) + { + RecipeHandler.addEnrichmentChamberRecipe(ore, new ItemStack(Dust, 1, 2)); + } + + for(ItemStack ore : OreDictionary.getOres("dirtyDustCopper")) + { + RecipeHandler.addEnrichmentChamberRecipe(ore, new ItemStack(Dust, 1, 6)); + } + + for(ItemStack ore : OreDictionary.getOres("dirtyDustTin")) + { + RecipeHandler.addEnrichmentChamberRecipe(ore, new ItemStack(Dust, 1, 7)); + } + for(ItemStack ore : OreDictionary.getOres("oreCopper")) { RecipeHandler.addEnrichmentChamberRecipe(ore, new ItemStack(Dust, 2, 6)); + RecipeHandler.addPurificationChamberRecipe(ore, new ItemStack(Clump, 3, 3)); } for(ItemStack ore : OreDictionary.getOres("oreTin")) { RecipeHandler.addEnrichmentChamberRecipe(ore, new ItemStack(Dust, 2, 7)); + RecipeHandler.addPurificationChamberRecipe(ore, new ItemStack(Clump, 3, 4)); } for(ItemStack ore : OreDictionary.getOres("orePlatinum")) { RecipeHandler.addEnrichmentChamberRecipe(ore, new ItemStack(Dust, 2, 2)); + RecipeHandler.addPurificationChamberRecipe(ore, new ItemStack(Clump, 3, 2)); } try { for(ItemStack ore : OreDictionary.getOres("oreLead")) { - RecipeHandler.addEnrichmentChamberRecipe(ore, OreDictionary.getOres("dustLead").get(0)); + RecipeHandler.addEnrichmentChamberRecipe(ore, MekanismUtils.getStackWithSize(OreDictionary.getOres("dustLead").get(0), 2)); } for(ItemStack ore : OreDictionary.getOres("ingotLead")) @@ -568,7 +653,7 @@ public class Mekanism try { for(ItemStack ore : OreDictionary.getOres("oreSilver")) { - RecipeHandler.addEnrichmentChamberRecipe(ore, OreDictionary.getOres("dustSilver").get(0)); + RecipeHandler.addEnrichmentChamberRecipe(ore, MekanismUtils.getStackWithSize(OreDictionary.getOres("dustSilver").get(0), 2)); } for(ItemStack ore : OreDictionary.getOres("ingotSilver")) @@ -577,7 +662,7 @@ public class Mekanism } } catch(Exception e) {} - for(ItemStack ore : OreDictionary.getOres("ingotObsidian")) + for(ItemStack ore : OreDictionary.getOres("ingotRefinedObsidian")) { RecipeHandler.addCrusherRecipe(ore, new ItemStack(Dust, 1, 3)); } @@ -592,7 +677,7 @@ public class Mekanism RecipeHandler.addCrusherRecipe(ore, new ItemStack(Item.redstone)); } - for(ItemStack ore : OreDictionary.getOres("ingotGlowstone")) + for(ItemStack ore : OreDictionary.getOres("ingotRefinedGlowstone")) { RecipeHandler.addCrusherRecipe(ore, new ItemStack(Item.lightStoneDust)); } @@ -621,12 +706,12 @@ public class Mekanism for(ItemStack ore : OreDictionary.getOres("dustIron")) { - RecipeHandler.addCombinerRecipe(MekanismUtils.getStackWithSize(ore, 2), new ItemStack(Block.oreIron)); + RecipeHandler.addCombinerRecipe(MekanismUtils.getStackWithSize(ore, 8), new ItemStack(Block.oreIron)); } for(ItemStack ore : OreDictionary.getOres("dustGold")) { - RecipeHandler.addCombinerRecipe(MekanismUtils.getStackWithSize(ore, 2), new ItemStack(Block.oreGold)); + RecipeHandler.addCombinerRecipe(MekanismUtils.getStackWithSize(ore, 8), new ItemStack(Block.oreGold)); } for(ItemStack ore : OreDictionary.getOres("dustObsidian")) @@ -637,13 +722,13 @@ public class Mekanism for(ItemStack ore : OreDictionary.getOres("dustPlatinum")) { - RecipeHandler.addCombinerRecipe(MekanismUtils.getStackWithSize(ore, 2), new ItemStack(OreBlock, 1, 0)); + RecipeHandler.addCombinerRecipe(MekanismUtils.getStackWithSize(ore, 8), new ItemStack(OreBlock, 1, 0)); } try { for(ItemStack ore : OreDictionary.getOres("dustCopper")) { - RecipeHandler.addCombinerRecipe(MekanismUtils.getStackWithSize(ore, 2), OreDictionary.getOres("oreCopper").get(0)); + RecipeHandler.addCombinerRecipe(MekanismUtils.getStackWithSize(ore, 8), OreDictionary.getOres("oreCopper").get(0)); } } catch(Exception e) {} @@ -657,21 +742,21 @@ public class Mekanism try { for(ItemStack ore : OreDictionary.getOres("dustTin")) { - RecipeHandler.addCombinerRecipe(MekanismUtils.getStackWithSize(ore, 2), OreDictionary.getOres("oreTin").get(0)); + RecipeHandler.addCombinerRecipe(MekanismUtils.getStackWithSize(ore, 8), OreDictionary.getOres("oreTin").get(0)); } } catch(Exception e) {} try { for(ItemStack ore : OreDictionary.getOres("dustLead")) { - RecipeHandler.addCombinerRecipe(MekanismUtils.getStackWithSize(ore, 2), OreDictionary.getOres("oreLead").get(0)); + RecipeHandler.addCombinerRecipe(MekanismUtils.getStackWithSize(ore, 8), OreDictionary.getOres("oreLead").get(0)); } } catch(Exception e) {} try { for(ItemStack ore : OreDictionary.getOres("dustSilver")) { - RecipeHandler.addCombinerRecipe(MekanismUtils.getStackWithSize(ore, 2), OreDictionary.getOres("oreSilver").get(0)); + RecipeHandler.addCombinerRecipe(MekanismUtils.getStackWithSize(ore, 8), OreDictionary.getOres("oreSilver").get(0)); } } catch(Exception e) {} } @@ -701,6 +786,7 @@ public class Mekanism GameRegistry.registerTileEntity(TileEntityEliteSmeltingFactory.class, "UltimateSmeltingFactory"); GameRegistry.registerTileEntity(TileEntityMetallurgicInfuser.class, "MetallurgicInfuser"); GameRegistry.registerTileEntity(TileEntityTeleporter.class, "MekanismTeleporter"); + GameRegistry.registerTileEntity(TileEntityPurificationChamber.class, "PurificationChamber"); //Load tile entities that have special renderers. proxy.registerSpecialTileEntities(); diff --git a/src/minecraft/mekanism/common/MekanismUtils.java b/src/minecraft/mekanism/common/MekanismUtils.java index 09060d75f..5d1eb05ef 100644 --- a/src/minecraft/mekanism/common/MekanismUtils.java +++ b/src/minecraft/mekanism/common/MekanismUtils.java @@ -36,22 +36,25 @@ public final class MekanismUtils */ public static void checkForUpdates(EntityPlayer entityplayer) { - if(!Mekanism.latestVersionNumber.equals("Error retrieving data.")) + if(Mekanism.notifyNewReleases) { - if(!Mekanism.latestVersionNumber.contains(Mekanism.versionNumber.toString())) + if(!Mekanism.latestVersionNumber.equals("Error retrieving data.")) { - entityplayer.addChatMessage(EnumColor.GREY + "------------- " + EnumColor.DARK_BLUE + "[Mekanism]" + EnumColor.GREY + " -------------"); - entityplayer.addChatMessage(EnumColor.GREY + " Using outdated version " + EnumColor.DARK_GREY + Mekanism.versionNumber + EnumColor.GREY + " for Minecraft 1.4.6/7."); - entityplayer.addChatMessage(EnumColor.GREY + " Consider updating to version " + EnumColor.DARK_GREY + Mekanism.latestVersionNumber); - entityplayer.addChatMessage(EnumColor.GREY + " New features: " + EnumColor.INDIGO + Mekanism.recentNews); - entityplayer.addChatMessage(EnumColor.GREY + "------------- " + EnumColor.DARK_BLUE + "[=======]" + EnumColor.GREY + " -------------"); + if(!Mekanism.latestVersionNumber.contains(Mekanism.versionNumber.toString())) + { + entityplayer.addChatMessage(EnumColor.GREY + "------------- " + EnumColor.DARK_BLUE + "[Mekanism]" + EnumColor.GREY + " -------------"); + entityplayer.addChatMessage(EnumColor.GREY + " Using outdated version " + EnumColor.DARK_GREY + Mekanism.versionNumber + EnumColor.GREY + " for Minecraft 1.4.6/7."); + entityplayer.addChatMessage(EnumColor.GREY + " Consider updating to version " + EnumColor.DARK_GREY + Mekanism.latestVersionNumber); + entityplayer.addChatMessage(EnumColor.GREY + " New features: " + EnumColor.INDIGO + Mekanism.recentNews); + entityplayer.addChatMessage(EnumColor.GREY + "------------- " + EnumColor.DARK_BLUE + "[=======]" + EnumColor.GREY + " -------------"); + return; + } + } + else { + System.out.println("[Mekanism] Minecraft is in offline mode, could not check for updates."); return; } } - else { - System.out.println("[Mekanism] Minecraft is in offline mode, could not check for updates."); - return; - } } /** diff --git a/src/minecraft/mekanism/common/PacketHandler.java b/src/minecraft/mekanism/common/PacketHandler.java index 13bedf088..303c4db9a 100644 --- a/src/minecraft/mekanism/common/PacketHandler.java +++ b/src/minecraft/mekanism/common/PacketHandler.java @@ -193,14 +193,17 @@ public class PacketHandler implements IPacketHandler { Teleporter.Coords coords = Mekanism.teleporters.get(new Teleporter.Code(item.getDigit(itemstack, 0), item.getDigit(itemstack, 1), item.getDigit(itemstack, 2), item.getDigit(itemstack, 3))).get(0); + item.onUse(item.calculateEnergyCost(entityPlayerMP, coords), itemstack); + if(entityPlayerMP.worldObj.provider.dimensionId != coords.dimensionId) { entityPlayerMP.travelToDimension(coords.dimensionId); } - entityPlayerMP.playerNetServerHandler.setPlayerLocation(coords.xCoord, coords.yCoord, coords.zCoord, entityPlayerMP.rotationYaw, entityPlayerMP.rotationPitch); + entityPlayerMP.playerNetServerHandler.setPlayerLocation(coords.xCoord+0.5, coords.yCoord, coords.zCoord+0.5, entityPlayerMP.rotationYaw, entityPlayerMP.rotationPitch); - item.onUse(item.calculateEnergyCost(entityPlayerMP, coords), itemstack); + entityplayer.worldObj.playSound(coords.xCoord, coords.yCoord, coords.zCoord, "mob.endermen.portal", 1.0F, 1.0F, true); + PacketHandler.sendPortalFX(coords.xCoord, coords.yCoord, coords.zCoord, coords.dimensionId); } } } @@ -479,6 +482,6 @@ public class PacketHandler implements IPacketHandler packet.data = bytes.toByteArray(); packet.length = packet.data.length; PacketDispatcher.sendPacketToServer(packet); - System.out.println("[Mekanism] Sent data int packet '" + i + "' to server"); + System.out.println("[Mekanism] Sent data int packet '" + type.id + ":" + i + "' to server"); } } diff --git a/src/minecraft/mekanism/common/RecipeHandler.java b/src/minecraft/mekanism/common/RecipeHandler.java index fd130df27..114de5957 100644 --- a/src/minecraft/mekanism/common/RecipeHandler.java +++ b/src/minecraft/mekanism/common/RecipeHandler.java @@ -1,5 +1,6 @@ package mekanism.common; +import java.util.HashMap; import java.util.Map; import mekanism.api.InfusionInput; @@ -13,6 +14,11 @@ import net.minecraft.item.ItemStack; */ public final class RecipeHandler { + public static void addRecipe(Recipe recipe, Object input, Object output) + { + recipe.put(input, output); + } + /** * Add an Enrichment Chamber recipe. * @param input - input ItemStack @@ -20,7 +26,7 @@ public final class RecipeHandler */ public static void addEnrichmentChamberRecipe(ItemStack input, ItemStack output) { - TileEntityEnrichmentChamber.recipes.put(input, output); + Recipe.ENRICHMENT_CHAMBER.put(input, output); } /** @@ -30,7 +36,7 @@ public final class RecipeHandler */ public static void addPlatinumCompressorRecipe(ItemStack input, ItemStack output) { - TileEntityPlatinumCompressor.recipes.put(input, output); + Recipe.PLATINUM_COMPRESSOR.put(input, output); } /** @@ -40,7 +46,7 @@ public final class RecipeHandler */ public static void addCombinerRecipe(ItemStack input, ItemStack output) { - TileEntityCombiner.recipes.put(input, output); + Recipe.COMBINER.put(input, output); } /** @@ -50,7 +56,17 @@ public final class RecipeHandler */ public static void addCrusherRecipe(ItemStack input, ItemStack output) { - TileEntityCrusher.recipes.put(input, output); + Recipe.CRUSHER.put(input, output); + } + + /** + * Add a Purification Chamber recipe. + * @param input - input ItemStack + * @param output - output ItemStack + */ + public static void addPurificationChamberRecipe(ItemStack input, ItemStack output) + { + Recipe.PURIFICATION_CHAMBER.put(input, output); } /** @@ -60,7 +76,7 @@ public final class RecipeHandler */ public static void addMetallurgicInfuserRecipe(InfusionInput input, ItemStack output) { - TileEntityMetallurgicInfuser.recipes.put(input, InfusionOutput.getInfusion(input, output)); + Recipe.METALLURGIC_INFUSER.put(input, InfusionOutput.getInfusion(input, output)); } /** @@ -115,4 +131,31 @@ public final class RecipeHandler return null; } + + public static enum Recipe + { + ENRICHMENT_CHAMBER(new HashMap()), + PLATINUM_COMPRESSOR(new HashMap()), + COMBINER(new HashMap()), + CRUSHER(new HashMap()), + PURIFICATION_CHAMBER(new HashMap()), + METALLURGIC_INFUSER(new HashMap()); + + private HashMap recipes; + + private Recipe(HashMap map) + { + recipes = map; + } + + public void put(Object input, Object output) + { + recipes.put(input, output); + } + + public HashMap get() + { + return recipes; + } + } } diff --git a/src/minecraft/mekanism/common/TileEntityAdvancedElectricMachine.java b/src/minecraft/mekanism/common/TileEntityAdvancedElectricMachine.java index 6a828b548..2c5fe2076 100644 --- a/src/minecraft/mekanism/common/TileEntityAdvancedElectricMachine.java +++ b/src/minecraft/mekanism/common/TileEntityAdvancedElectricMachine.java @@ -110,12 +110,12 @@ public abstract class TileEntityAdvancedElectricMachine extends TileEntityBasicM } } - if(inventory[1] != null && secondaryEnergyStored == 0) + if(inventory[1] != null) { int fuelTicks = getFuelTicks(inventory[1]); - if(fuelTicks > 0) + int energyNeeded = MAX_SECONDARY_ENERGY - secondaryEnergyStored; + if(fuelTicks > 0 && fuelTicks <= energyNeeded) { - int energyNeeded = MAX_SECONDARY_ENERGY - secondaryEnergyStored; if(fuelTicks <= energyNeeded) { setSecondaryEnergy(secondaryEnergyStored + fuelTicks); @@ -157,41 +157,24 @@ public abstract class TileEntityAdvancedElectricMachine extends TileEntityBasicM currentMaxElectricity = MAX_ELECTRICITY; } - if(canOperate() && (operatingTicks+1) < currentTicksRequired && secondaryEnergyStored >= SECONDARY_ENERGY_PER_TICK) + if(electricityStored >= ENERGY_PER_TICK && secondaryEnergyStored >= SECONDARY_ENERGY_PER_TICK) { - ++operatingTicks; - secondaryEnergyStored -= SECONDARY_ENERGY_PER_TICK; - electricityStored -= ENERGY_PER_TICK; - } - else if((operatingTicks+1) >= currentTicksRequired) - { - if(!worldObj.isRemote) + if(canOperate() && (operatingTicks+1) < currentTicksRequired && secondaryEnergyStored >= SECONDARY_ENERGY_PER_TICK) { - operate(); + ++operatingTicks; + secondaryEnergyStored -= SECONDARY_ENERGY_PER_TICK; + electricityStored -= ENERGY_PER_TICK; + } + else if((operatingTicks+1) >= currentTicksRequired) + { + if(!worldObj.isRemote) + { + operate(); + } + operatingTicks = 0; + secondaryEnergyStored -= SECONDARY_ENERGY_PER_TICK; + electricityStored -= ENERGY_PER_TICK; } - operatingTicks = 0; - secondaryEnergyStored -= SECONDARY_ENERGY_PER_TICK; - electricityStored -= ENERGY_PER_TICK; - } - - if(electricityStored < 0) - { - electricityStored = 0; - } - - if(secondaryEnergyStored < 0) - { - secondaryEnergyStored = 0; - } - - if(electricityStored > currentMaxElectricity) - { - electricityStored = currentMaxElectricity; - } - - if(secondaryEnergyStored > MAX_SECONDARY_ENERGY) - { - secondaryEnergyStored = MAX_SECONDARY_ENERGY; } if(!canOperate()) @@ -201,16 +184,12 @@ public abstract class TileEntityAdvancedElectricMachine extends TileEntityBasicM if(!worldObj.isRemote) { - if(testActive != operatingTicks > 0) + if(canOperate() && electricityStored >= ENERGY_PER_TICK && secondaryEnergyStored >= SECONDARY_ENERGY_PER_TICK) { - if(operatingTicks > 0) - { - setActive(true); - } - else if(!canOperate()) - { - setActive(false); - } + setActive(true); + } + else { + setActive(false); } } } @@ -218,11 +197,6 @@ public abstract class TileEntityAdvancedElectricMachine extends TileEntityBasicM @Override public void operate() { - if (!canOperate()) - { - return; - } - ItemStack itemstack = RecipeHandler.getOutput(inventory[0], true, getRecipes()); if (inventory[0].stackSize <= 0) @@ -247,16 +221,6 @@ public abstract class TileEntityAdvancedElectricMachine extends TileEntityBasicM { return false; } - - if(electricityStored < ENERGY_PER_TICK) - { - return false; - } - - if(secondaryEnergyStored < SECONDARY_ENERGY_PER_TICK) - { - return false; - } ItemStack itemstack = RecipeHandler.getOutput(inventory[0], false, getRecipes()); @@ -363,7 +327,7 @@ public abstract class TileEntityAdvancedElectricMachine extends TileEntityBasicM */ public void setSecondaryEnergy(int energy) { - secondaryEnergyStored = Math.max(Math.min(energy, getFuelTicks(inventory[1])), 0); + secondaryEnergyStored = Math.max(Math.min(energy, MAX_SECONDARY_ENERGY), 0); } /** diff --git a/src/minecraft/mekanism/common/TileEntityCombiner.java b/src/minecraft/mekanism/common/TileEntityCombiner.java index 14014a673..e09847672 100644 --- a/src/minecraft/mekanism/common/TileEntityCombiner.java +++ b/src/minecraft/mekanism/common/TileEntityCombiner.java @@ -3,23 +3,22 @@ package mekanism.common; import java.util.HashMap; import java.util.Map; +import mekanism.common.RecipeHandler.Recipe; import net.minecraft.block.Block; import net.minecraft.item.ItemBlock; import net.minecraft.item.ItemStack; public class TileEntityCombiner extends TileEntityAdvancedElectricMachine { - public static Map recipes = new HashMap(); - public TileEntityCombiner() { super("Combiner.ogg", "Combiner", "/resources/mekanism/gui/GuiCombiner.png", 5, 1, 200, 1000, 200); } @Override - public Map getRecipes() + public HashMap getRecipes() { - return recipes; + return Recipe.COMBINER.get(); } @Override diff --git a/src/minecraft/mekanism/common/TileEntityCrusher.java b/src/minecraft/mekanism/common/TileEntityCrusher.java index 5b4aaf9fc..b44fffec6 100644 --- a/src/minecraft/mekanism/common/TileEntityCrusher.java +++ b/src/minecraft/mekanism/common/TileEntityCrusher.java @@ -3,20 +3,19 @@ package mekanism.common; import java.util.HashMap; import java.util.Map; +import mekanism.common.RecipeHandler.Recipe; import net.minecraft.item.ItemStack; public class TileEntityCrusher extends TileEntityElectricMachine { - public static Map recipes = new HashMap(); - public TileEntityCrusher() { super("Crusher.ogg", "Crusher", "/resources/mekanism/gui/GuiCrusher.png", 5, 200, 1000); } @Override - public Map getRecipes() + public HashMap getRecipes() { - return recipes; + return Recipe.CRUSHER.get(); } } diff --git a/src/minecraft/mekanism/common/TileEntityElectricMachine.java b/src/minecraft/mekanism/common/TileEntityElectricMachine.java index 83d454dde..3ea2fac31 100644 --- a/src/minecraft/mekanism/common/TileEntityElectricMachine.java +++ b/src/minecraft/mekanism/common/TileEntityElectricMachine.java @@ -40,8 +40,6 @@ public abstract class TileEntityElectricMachine extends TileEntityBasicMachine { super.onUpdate(); - boolean testActive = operatingTicks > 0; - if(inventory[1] != null) { if(electricityStored < currentMaxElectricity) @@ -113,29 +111,22 @@ public abstract class TileEntityElectricMachine extends TileEntityBasicMachine currentMaxElectricity = MAX_ELECTRICITY; } - if(canOperate() && (operatingTicks+1) < currentTicksRequired) + if(electricityStored >= ENERGY_PER_TICK) { - ++operatingTicks; - electricityStored -= ENERGY_PER_TICK; - } - else if(canOperate() && (operatingTicks+1) >= currentTicksRequired) - { - if(!worldObj.isRemote) + if(canOperate() && (operatingTicks+1) < currentTicksRequired) { - operate(); + operatingTicks++; + electricityStored -= ENERGY_PER_TICK; + } + else if(canOperate() && (operatingTicks+1) >= currentTicksRequired) + { + if(!worldObj.isRemote) + { + operate(); + } + operatingTicks = 0; + electricityStored -= ENERGY_PER_TICK; } - operatingTicks = 0; - electricityStored -= ENERGY_PER_TICK; - } - - if(electricityStored < 0) - { - electricityStored = 0; - } - - if(electricityStored > currentMaxElectricity) - { - electricityStored = currentMaxElectricity; } if(!canOperate()) @@ -145,16 +136,12 @@ public abstract class TileEntityElectricMachine extends TileEntityBasicMachine if(!worldObj.isRemote) { - if(testActive != operatingTicks > 0) + if(canOperate() && electricityStored >= ENERGY_PER_TICK) { - if(operatingTicks > 0) - { - setActive(true); - } - else if(!canOperate()) - { - setActive(false); - } + setActive(true); + } + else { + setActive(false); } } } @@ -162,11 +149,6 @@ public abstract class TileEntityElectricMachine extends TileEntityBasicMachine @Override public void operate() { - if (!canOperate()) - { - return; - } - ItemStack itemstack = RecipeHandler.getOutput(inventory[0], true, getRecipes()); if (inventory[0].stackSize <= 0) @@ -191,11 +173,6 @@ public abstract class TileEntityElectricMachine extends TileEntityBasicMachine { return false; } - - if(electricityStored < ENERGY_PER_TICK) - { - return false; - } ItemStack itemstack = RecipeHandler.getOutput(inventory[0], false, getRecipes()); diff --git a/src/minecraft/mekanism/common/TileEntityEnergyCube.java b/src/minecraft/mekanism/common/TileEntityEnergyCube.java index e74e8ddc9..5db993f50 100644 --- a/src/minecraft/mekanism/common/TileEntityEnergyCube.java +++ b/src/minecraft/mekanism/common/TileEntityEnergyCube.java @@ -63,7 +63,12 @@ public class TileEntityEnergyCube extends TileEntityElectricBlock implements IEn public TileEntityEnergyCube(String name, int maxEnergy, int i) { super(name, maxEnergy); - powerProvider.configure(5, 2, 10, 1, maxEnergy/10); + + if(powerProvider != null) + { + powerProvider.configure(5, 2, 10, 1, maxEnergy/10); + } + ElectricityConnections.registerConnector(this, EnumSet.allOf(ForgeDirection.class)); inventory = new ItemStack[2]; output = i; diff --git a/src/minecraft/mekanism/common/TileEntityEnrichmentChamber.java b/src/minecraft/mekanism/common/TileEntityEnrichmentChamber.java index 604d99fae..541dab541 100644 --- a/src/minecraft/mekanism/common/TileEntityEnrichmentChamber.java +++ b/src/minecraft/mekanism/common/TileEntityEnrichmentChamber.java @@ -3,20 +3,19 @@ package mekanism.common; import java.util.HashMap; import java.util.Map; +import mekanism.common.RecipeHandler.Recipe; import net.minecraft.item.ItemStack; public class TileEntityEnrichmentChamber extends TileEntityElectricMachine { - public static Map recipes = new HashMap(); - public TileEntityEnrichmentChamber() { super("Chamber.ogg", "Enrichment Chamber", "/resources/mekanism/gui/GuiChamber.png", 5, 200, 1000); } @Override - public Map getRecipes() + public HashMap getRecipes() { - return recipes; + return Recipe.ENRICHMENT_CHAMBER.get(); } } diff --git a/src/minecraft/mekanism/common/TileEntityMetallurgicInfuser.java b/src/minecraft/mekanism/common/TileEntityMetallurgicInfuser.java index 0fe88f341..2dd34a541 100644 --- a/src/minecraft/mekanism/common/TileEntityMetallurgicInfuser.java +++ b/src/minecraft/mekanism/common/TileEntityMetallurgicInfuser.java @@ -15,6 +15,7 @@ import mekanism.api.InfusionInput; import mekanism.api.InfusionOutput; import mekanism.api.InfusionType; import mekanism.client.Sound; +import mekanism.common.RecipeHandler.Recipe; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; @@ -42,8 +43,6 @@ import dan200.computer.api.IPeripheral; public class TileEntityMetallurgicInfuser extends TileEntityElectricBlock implements IEnergySink, IJouleStorage, IVoltage, IPeripheral, IActiveState { - public static Map recipes = new HashMap(); - /** The Sound instance for this machine. */ @SideOnly(Side.CLIENT) public Sound audio; @@ -316,7 +315,7 @@ public class TileEntityMetallurgicInfuser extends TileEntityElectricBlock implem return; } - InfusionOutput output = RecipeHandler.getOutput(InfusionInput.getInfusion(type, infuseStored, inventory[2]), true, recipes); + InfusionOutput output = RecipeHandler.getOutput(InfusionInput.getInfusion(type, infuseStored, inventory[2]), true, Recipe.METALLURGIC_INFUSER.get()); infuseStored -= output.getInfuseRequired(); @@ -346,7 +345,7 @@ public class TileEntityMetallurgicInfuser extends TileEntityElectricBlock implem return false; } - InfusionOutput output = RecipeHandler.getOutput(InfusionInput.getInfusion(type, infuseStored, inventory[2]), false, recipes); + InfusionOutput output = RecipeHandler.getOutput(InfusionInput.getInfusion(type, infuseStored, inventory[2]), false, Recipe.METALLURGIC_INFUSER.get()); if (output == null) { diff --git a/src/minecraft/mekanism/common/TileEntityPlatinumCompressor.java b/src/minecraft/mekanism/common/TileEntityPlatinumCompressor.java index d863f22e4..94f8f0ca8 100644 --- a/src/minecraft/mekanism/common/TileEntityPlatinumCompressor.java +++ b/src/minecraft/mekanism/common/TileEntityPlatinumCompressor.java @@ -3,22 +3,21 @@ package mekanism.common; import java.util.HashMap; import java.util.Map; +import mekanism.common.RecipeHandler.Recipe; import net.minecraft.item.ItemStack; import net.minecraftforge.oredict.OreDictionary; public class TileEntityPlatinumCompressor extends TileEntityAdvancedElectricMachine { - public static Map recipes = new HashMap(); - public TileEntityPlatinumCompressor() { super("Compressor.ogg", "Platinum Compressor", "/resources/mekanism/gui/GuiCompressor.png", 5, 1, 200, 1000, 200); } - + @Override - public Map getRecipes() + public HashMap getRecipes() { - return recipes; + return Recipe.PLATINUM_COMPRESSOR.get(); } @Override diff --git a/src/minecraft/mekanism/common/TileEntityPurificationChamber.java b/src/minecraft/mekanism/common/TileEntityPurificationChamber.java new file mode 100644 index 000000000..3592cd8c2 --- /dev/null +++ b/src/minecraft/mekanism/common/TileEntityPurificationChamber.java @@ -0,0 +1,31 @@ +package mekanism.common; + +import java.util.HashMap; + +import net.minecraft.block.Block; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; + +import mekanism.common.RecipeHandler.Recipe; + +public class TileEntityPurificationChamber extends TileEntityAdvancedElectricMachine +{ + public TileEntityPurificationChamber() + { + super("PurificationChamber.ogg", "Purification Chamber", "/resources/mekanism/gui/GuiPurificationChamber.png", 20, 1, 200, 12000, 1200); + } + + @Override + public HashMap getRecipes() + { + return Recipe.PURIFICATION_CHAMBER.get(); + } + + @Override + public int getFuelTicks(ItemStack itemstack) + { + if(itemstack.isItemEqual(new ItemStack(Block.sand))) return 10; + if(itemstack.isItemEqual(new ItemStack(Item.flint))) return 300; + return 0; + } +} diff --git a/src/minecraft/mekanism/common/TileEntitySmeltingFactory.java b/src/minecraft/mekanism/common/TileEntitySmeltingFactory.java index cf9848414..5b72edf57 100644 --- a/src/minecraft/mekanism/common/TileEntitySmeltingFactory.java +++ b/src/minecraft/mekanism/common/TileEntitySmeltingFactory.java @@ -390,6 +390,52 @@ public class TileEntitySmeltingFactory extends TileEntityElectricBlock implement inventory[outputSlot].stackSize += itemstack.stackSize; } } + + @Override + public int getStartInventorySide(ForgeDirection side) + { + if(side == ForgeDirection.getOrientation(1) || side == MekanismUtils.getLeft(facing)) + { + return 2; + } + else if(side == ForgeDirection.getOrientation(0) || side == MekanismUtils.getRight(facing)) + { + return 2+tier.processes; + } + else if(side == ForgeDirection.getOrientation(facing)) + { + return 0; + } + else if(side == ForgeDirection.getOrientation(facing).getOpposite()) + { + return 1; + } + + return 0; + } + + @Override + public int getSizeInventorySide(ForgeDirection side) + { + if(side == ForgeDirection.getOrientation(1) || side == MekanismUtils.getLeft(facing)) + { + return tier.processes; + } + else if(side == ForgeDirection.getOrientation(0) || side == MekanismUtils.getRight(facing)) + { + return tier.processes; + } + else if(side == ForgeDirection.getOrientation(facing)) + { + return 1; + } + else if(side == ForgeDirection.getOrientation(facing).getOpposite()) + { + return 1; + } + + return 0; + } @Override public void handlePacketData(INetworkManager network, Packet250CustomPayload packet, EntityPlayer player, ByteArrayDataInput dataStream) @@ -465,12 +511,12 @@ public class TileEntitySmeltingFactory extends TileEntityElectricBlock implement public int getInputSlot(int operation) { - return (operation+operation)+2; + return operation+2; } public int getOutputSlot(int operation) { - return (operation+operation)+3; + return tier.processes+2+operation; } @Override diff --git a/src/minecraft/mekanism/common/TileEntityTeleporter.java b/src/minecraft/mekanism/common/TileEntityTeleporter.java index 7bad18775..6a7657621 100644 --- a/src/minecraft/mekanism/common/TileEntityTeleporter.java +++ b/src/minecraft/mekanism/common/TileEntityTeleporter.java @@ -264,15 +264,14 @@ public class TileEntityTeleporter extends TileEntityElectricBlock implements IEn { setJoules(electricityStored - calculateEnergyCost(entity, closestCoords)); - entity.worldObj.playSoundAtEntity((EntityPlayerMP)entity, "mob.enderman.portal", 1.0F, 1.0F); + worldObj.playSoundAtEntity((EntityPlayerMP)entity, "mob.endermen.portal", 1.0F, 1.0F); if(entity.worldObj.provider.dimensionId != closestCoords.dimensionId) { entity.travelToDimension(closestCoords.dimensionId); } - ((EntityPlayerMP)entity).setLocationAndAngles(closestCoords.xCoord, closestCoords.yCoord, closestCoords.zCoord, entity.rotationYaw, entity.rotationPitch); - ((EntityPlayerMP)entity).playerNetServerHandler.setPlayerLocation(closestCoords.xCoord, closestCoords.yCoord, closestCoords.zCoord, entity.rotationYaw, entity.rotationPitch); + ((EntityPlayerMP)entity).playerNetServerHandler.setPlayerLocation(closestCoords.xCoord+0.5, closestCoords.yCoord, closestCoords.zCoord+0.5, entity.rotationYaw, entity.rotationPitch); for(Teleporter.Coords coords : Mekanism.teleporters.get(code)) { diff --git a/src/minecraft/mekanism/common/TileEntityTheoreticalElementizer.java b/src/minecraft/mekanism/common/TileEntityTheoreticalElementizer.java index d49bc431b..727bd2f81 100644 --- a/src/minecraft/mekanism/common/TileEntityTheoreticalElementizer.java +++ b/src/minecraft/mekanism/common/TileEntityTheoreticalElementizer.java @@ -16,9 +16,9 @@ public class TileEntityTheoreticalElementizer extends TileEntityAdvancedElectric } @Override - public Map getRecipes() + public HashMap getRecipes() { - return Collections.synchronizedMap(new HashMap()); + return (HashMap)Collections.synchronizedMap(new HashMap()); } @Override diff --git a/src/minecraft/mekanism/generators/common/MekanismGenerators.java b/src/minecraft/mekanism/generators/common/MekanismGenerators.java index 68420614e..61f8be619 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.1.1", dependencies = "required-after:Mekanism") +@Mod(modid = "MekanismGenerators", name = "MekanismGenerators", version = "5.2.0", dependencies = "required-after:Mekanism") @NetworkMod(clientSideRequired = true, serverSideRequired = false) public class MekanismGenerators { @@ -93,13 +93,15 @@ public class MekanismGenerators //BioFuel Crusher Recipes RecipeHandler.addCrusherRecipe(new ItemStack(Block.sapling), new ItemStack(BioFuel, 2)); RecipeHandler.addCrusherRecipe(new ItemStack(Block.tallGrass), new ItemStack(BioFuel, 2)); + RecipeHandler.addCrusherRecipe(new ItemStack(Item.reed), new ItemStack(BioFuel, 1)); RecipeHandler.addCrusherRecipe(new ItemStack(Item.seeds), new ItemStack(BioFuel, 1)); RecipeHandler.addCrusherRecipe(new ItemStack(Item.wheat), new ItemStack(BioFuel, 2)); RecipeHandler.addCrusherRecipe(new ItemStack(Item.pumpkinSeeds), new ItemStack(BioFuel, 1)); RecipeHandler.addCrusherRecipe(new ItemStack(Item.melonSeeds), new ItemStack(BioFuel, 1)); - RecipeHandler.addCrusherRecipe(new ItemStack(Item.appleRed), new ItemStack(BioFuel, 3)); - RecipeHandler.addCrusherRecipe(new ItemStack(Item.bread), new ItemStack(BioFuel, 3)); + RecipeHandler.addCrusherRecipe(new ItemStack(Item.appleRed), new ItemStack(BioFuel, 2)); + RecipeHandler.addCrusherRecipe(new ItemStack(Item.bread), new ItemStack(BioFuel, 2)); RecipeHandler.addCrusherRecipe(new ItemStack(Item.potato), new ItemStack(BioFuel, 2)); + RecipeHandler.addCrusherRecipe(new ItemStack(Item.carrot), new ItemStack(BioFuel, 2)); for(int i = 0; i < BlockLeaves.LEAF_TYPES.length; i++) { diff --git a/src/minecraft/mekanism/generators/common/TileEntityBioGenerator.java b/src/minecraft/mekanism/generators/common/TileEntityBioGenerator.java index 38ae594df..935cf35f5 100644 --- a/src/minecraft/mekanism/generators/common/TileEntityBioGenerator.java +++ b/src/minecraft/mekanism/generators/common/TileEntityBioGenerator.java @@ -34,6 +34,9 @@ public class TileEntityBioGenerator extends TileEntityGenerator implements ITank @SideOnly(Side.CLIENT) public Sound audio; + /** The amount of electricity this machine can produce with a unit of fuel. */ + public final int GENERATION = 560; + /** The LiquidSlot biofuel instance for this generator. */ public LiquidSlot bioFuelSlot = new LiquidSlot(24000, Mekanism.hooks.ForestryBiofuelID); @@ -93,22 +96,19 @@ public class TileEntityBioGenerator extends TileEntityGenerator implements ITank } } - if(electricityStored < MAX_ELECTRICITY) - { - if(canOperate()) - { - if(!worldObj.isRemote) - { - setActive(true); - } - bioFuelSlot.setLiquid(bioFuelSlot.liquidStored - 10); - setJoules(electricityStored + 560); + if(canOperate()) + { + if(!worldObj.isRemote) + { + setActive(true); } - else { - if(!worldObj.isRemote) - { - setActive(false); - } + bioFuelSlot.setLiquid(bioFuelSlot.liquidStored - 10); + setJoules(electricityStored + GENERATION); + } + else { + if(!worldObj.isRemote) + { + setActive(false); } } } @@ -189,7 +189,6 @@ public class TileEntityBioGenerator extends TileEntityGenerator implements ITank bioFuelSlot.liquidStored = dataStream.readInt(); worldObj.markBlockForRenderUpdate(xCoord, yCoord, zCoord); worldObj.updateAllLightTypes(xCoord, yCoord, zCoord); - worldObj.notifyBlocksOfNeighborChange(xCoord, yCoord, zCoord, MekanismGenerators.generatorID); } catch (Exception e) { System.out.println("[Mekanism] Error while handling tile entity packet."); diff --git a/src/minecraft/mekanism/generators/common/TileEntityElectrolyticSeparator.java b/src/minecraft/mekanism/generators/common/TileEntityElectrolyticSeparator.java index 463354eec..7fdb96919 100644 --- a/src/minecraft/mekanism/generators/common/TileEntityElectrolyticSeparator.java +++ b/src/minecraft/mekanism/generators/common/TileEntityElectrolyticSeparator.java @@ -228,7 +228,7 @@ public class TileEntityElectrolyticSeparator extends TileEntityElectricBlock imp waterSlot.setLiquid(waterSlot.liquidStored - 10); setJoules(electricityStored - 4); setGas(EnumGas.OXYGEN, oxygenStored + 1); - setGas(EnumGas.HYDROGEN, hydrogenStored + 1); + setGas(EnumGas.HYDROGEN, hydrogenStored + 2); } if(outputType != EnumGas.NONE && getGas(outputType) > 0 && !worldObj.isRemote) diff --git a/src/minecraft/mekanism/generators/common/TileEntityHeatGenerator.java b/src/minecraft/mekanism/generators/common/TileEntityHeatGenerator.java index 503f4b6db..a0dbf341f 100644 --- a/src/minecraft/mekanism/generators/common/TileEntityHeatGenerator.java +++ b/src/minecraft/mekanism/generators/common/TileEntityHeatGenerator.java @@ -35,6 +35,9 @@ public class TileEntityHeatGenerator extends TileEntityGenerator implements ITan /** The LiquidSlot fuel instance for this generator. */ public LiquidSlot fuelSlot = new LiquidSlot(24000, Mekanism.hooks.BuildCraftFuelID); + /** The amount of electricity this machine can produce with a unit of fuel. */ + public final int GENERATION = 100; + public TileEntityHeatGenerator() { super("Heat Generator", 160000, 480); @@ -88,27 +91,29 @@ public class TileEntityHeatGenerator extends TileEntityGenerator implements ITan { inventory[0] = null; } + + if(prevStack.isItemEqual(new ItemStack(Item.bucketLava))) + { + inventory[0] = new ItemStack(Item.bucketEmpty); + } } } - if(electricityStored < MAX_ELECTRICITY) - { - setJoules(electricityStored + getEnvironmentBoost()); - - if(canOperate()) - { - if(!worldObj.isRemote) - { - setActive(true); - } - fuelSlot.setLiquid(fuelSlot.liquidStored - 10); - setJoules(electricityStored + 100); + setJoules(electricityStored + getEnvironmentBoost()); + + if(canOperate()) + { + if(!worldObj.isRemote) + { + setActive(true); } - else { - if(!worldObj.isRemote) - { - setActive(false); - } + fuelSlot.setLiquid(fuelSlot.liquidStored - 10); + setJoules(electricityStored + GENERATION); + } + else { + if(!worldObj.isRemote) + { + setActive(false); } } } diff --git a/src/minecraft/mekanism/generators/common/TileEntityHydrogenGenerator.java b/src/minecraft/mekanism/generators/common/TileEntityHydrogenGenerator.java index d2afcad06..6d65b8150 100644 --- a/src/minecraft/mekanism/generators/common/TileEntityHydrogenGenerator.java +++ b/src/minecraft/mekanism/generators/common/TileEntityHydrogenGenerator.java @@ -195,7 +195,6 @@ public class TileEntityHydrogenGenerator extends TileEntityGenerator implements isActive = dataStream.readBoolean(); worldObj.markBlockForRenderUpdate(xCoord, yCoord, zCoord); worldObj.updateAllLightTypes(xCoord, yCoord, zCoord); - worldObj.notifyBlocksOfNeighborChange(xCoord, yCoord, zCoord, MekanismGenerators.generatorID); } catch (Exception e) { System.out.println("[Mekanism] Error while handling tile entity packet."); diff --git a/src/minecraft/mekanism/generators/common/TileEntitySolarGenerator.java b/src/minecraft/mekanism/generators/common/TileEntitySolarGenerator.java index cad20e9c6..bea4acdbb 100644 --- a/src/minecraft/mekanism/generators/common/TileEntitySolarGenerator.java +++ b/src/minecraft/mekanism/generators/common/TileEntitySolarGenerator.java @@ -148,7 +148,6 @@ public class TileEntitySolarGenerator extends TileEntityGenerator isActive = dataStream.readBoolean(); seesSun = dataStream.readBoolean(); worldObj.markBlockForRenderUpdate(xCoord, yCoord, zCoord); - worldObj.notifyBlocksOfNeighborChange(xCoord, yCoord, zCoord, MekanismGenerators.generatorID); } catch (Exception e) { System.out.println("[Mekanism] Error while handling tile entity packet."); diff --git a/src/minecraft/mekanism/nei/AdvancedMachineRecipeHandler.java b/src/minecraft/mekanism/nei/AdvancedMachineRecipeHandler.java new file mode 100644 index 000000000..aba4076b1 --- /dev/null +++ b/src/minecraft/mekanism/nei/AdvancedMachineRecipeHandler.java @@ -0,0 +1,139 @@ +package mekanism.nei; + +import java.awt.Rectangle; +import java.util.List; +import java.util.Map; +import java.util.Map.Entry; +import java.util.Set; + +import net.minecraft.item.ItemStack; + +import org.lwjgl.opengl.GL11; + +import codechicken.nei.NEIServerUtils; +import codechicken.nei.PositionedStack; +import codechicken.nei.forge.GuiContainerManager; +import codechicken.nei.recipe.TemplateRecipeHandler; + +public abstract class AdvancedMachineRecipeHandler extends TemplateRecipeHandler +{ + int ticksPassed; + + public abstract String getRecipeId(); + + public abstract ItemStack getFuelStack(); + + public abstract Set> getRecipes(); + + @Override + public void drawBackground(GuiContainerManager guimanager, int i) + { + GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); + guimanager.bindTextureByName(getGuiTexture()); + guimanager.drawTexturedModalRect(12, 0, 28, 5, 144, 68); + } + + @Override + public void drawExtras(GuiContainerManager guimanager, int i) + { + float f = ticksPassed >= 40 ? (ticksPassed - 40) % 20 / 20.0F : 0.0F; + drawProgressBar(guimanager, 63, 34, 176, 0, 24, 7, f, 0); + + f = ticksPassed >= 20 && ticksPassed < 40 ? (ticksPassed - 20) % 20 / 20.0F : 1.0F; + if(ticksPassed < 20) f = 0.0F; + drawProgressBar(guimanager, 45, 32, 176, 7, 5, 12, f, 3); + + f = ticksPassed <= 20 ? ticksPassed / 20.0F : 1.0F; + drawProgressBar(guimanager, 149, 12, 176, 19, 4, 52, f, 3); + } + + @Override + public void onUpdate() + { + super.onUpdate(); + ticksPassed++; + } + + @Override + public void loadTransferRects() + { + transferRects.add(new TemplateRecipeHandler.RecipeTransferRect(new Rectangle(63, 34, 24, 7), getRecipeId(), new Object[0])); + } + + @Override + public void loadCraftingRecipes(String outputId, Object... results) + { + if(outputId.equals(getRecipeId())) + { + for(Map.Entry irecipe : getRecipes()) + { + arecipes.add(new CachedIORecipe(irecipe, getFuelStack())); + } + } + else { + super.loadCraftingRecipes(outputId, results); + } + } + + @Override + public void loadCraftingRecipes(ItemStack result) + { + for(Map.Entry irecipe : getRecipes()) + { + if(NEIServerUtils.areStacksSameTypeCrafting((ItemStack)irecipe.getValue(), result)) + { + arecipes.add(new CachedIORecipe(irecipe, getFuelStack())); + } + } + } + + @Override + public void loadUsageRecipes(ItemStack ingredient) + { + for(Map.Entry irecipe : getRecipes()) + { + if(NEIServerUtils.areStacksSameTypeCrafting((ItemStack)irecipe.getKey(), ingredient)) + { + arecipes.add(new CachedIORecipe(irecipe, getFuelStack())); + } + } + } + + public class CachedIORecipe extends TemplateRecipeHandler.CachedRecipe + { + public PositionedStack inputStack; + public PositionedStack outputStack; + public PositionedStack fuelStack; + + @Override + public PositionedStack getIngredient() + { + return inputStack; + } + + @Override + public PositionedStack getResult() + { + return outputStack; + } + + @Override + public PositionedStack getOtherStack() + { + return fuelStack; + } + + public CachedIORecipe(ItemStack input, ItemStack output, ItemStack fuel) + { + super(); + inputStack = new PositionedStack(input, 40, 12); + outputStack = new PositionedStack(output, 100, 30); + fuelStack = new PositionedStack(fuel, 40, 48); + } + + public CachedIORecipe(Map.Entry recipe, ItemStack fuel) + { + this((ItemStack)recipe.getKey(), (ItemStack)recipe.getValue(), fuel); + } + } +} diff --git a/src/minecraft/mekanism/nei/CombinerRecipeHandler.java b/src/minecraft/mekanism/nei/CombinerRecipeHandler.java new file mode 100644 index 000000000..def3e00a1 --- /dev/null +++ b/src/minecraft/mekanism/nei/CombinerRecipeHandler.java @@ -0,0 +1,57 @@ +package mekanism.nei; + +import java.util.List; +import java.util.Set; + +import net.minecraft.block.Block; +import net.minecraft.item.ItemStack; + +import mekanism.client.GuiAdvancedElectricMachine; +import mekanism.client.GuiCombiner; +import mekanism.common.TileEntityCombiner; +import mekanism.common.RecipeHandler.Recipe; + +public class CombinerRecipeHandler extends AdvancedMachineRecipeHandler +{ + @Override + public String getRecipeName() + { + return "Combiner"; + } + + @Override + public String getRecipeId() + { + return "mekanism.combiner"; + } + + @Override + public String getOverlayIdentifier() + { + return "combiner"; + } + + @Override + public Set getRecipes() + { + return Recipe.COMBINER.get().entrySet(); + } + + @Override + public String getGuiTexture() + { + return "/resources/mekanism/gui/GuiCombiner.png"; + } + + @Override + public ItemStack getFuelStack() + { + return new ItemStack(Block.cobblestone); + } + + @Override + public Class getGuiClass() + { + return GuiCombiner.class; + } +} diff --git a/src/minecraft/mekanism/nei/CrusherRecipeHandler.java b/src/minecraft/mekanism/nei/CrusherRecipeHandler.java new file mode 100644 index 000000000..2df964ded --- /dev/null +++ b/src/minecraft/mekanism/nei/CrusherRecipeHandler.java @@ -0,0 +1,47 @@ +package mekanism.nei; + +import java.util.Set; + +import mekanism.client.GuiCrusher; +import mekanism.client.GuiElectricMachine; +import mekanism.common.TileEntityCrusher; +import mekanism.common.RecipeHandler.Recipe; + +public class CrusherRecipeHandler extends MachineRecipeHandler +{ + @Override + public String getRecipeName() + { + return "Crusher"; + } + + @Override + public String getRecipeId() + { + return "mekanism.crusher"; + } + + @Override + public String getOverlayIdentifier() + { + return "crusher"; + } + + @Override + public Set getRecipes() + { + return Recipe.CRUSHER.get().entrySet(); + } + + @Override + public String getGuiTexture() + { + return "/resources/mekanism/gui/GuiCrusher.png"; + } + + @Override + public Class getGuiClass() + { + return GuiCrusher.class; + } +} diff --git a/src/minecraft/mekanism/nei/EnrichmentChamberRecipeHandler.java b/src/minecraft/mekanism/nei/EnrichmentChamberRecipeHandler.java new file mode 100644 index 000000000..a7c7d8a69 --- /dev/null +++ b/src/minecraft/mekanism/nei/EnrichmentChamberRecipeHandler.java @@ -0,0 +1,47 @@ +package mekanism.nei; + +import java.util.Set; + +import mekanism.client.GuiElectricMachine; +import mekanism.client.GuiEnrichmentChamber; +import mekanism.common.TileEntityEnrichmentChamber; +import mekanism.common.RecipeHandler.Recipe; + +public class EnrichmentChamberRecipeHandler extends MachineRecipeHandler +{ + @Override + public String getRecipeName() + { + return "Enrichment Chamber"; + } + + @Override + public String getRecipeId() + { + return "mekanism.chamber"; + } + + @Override + public String getOverlayIdentifier() + { + return "chamber"; + } + + @Override + public Set getRecipes() + { + return Recipe.ENRICHMENT_CHAMBER.get().entrySet(); + } + + @Override + public String getGuiTexture() + { + return "/resources/mekanism/gui/GuiChamber.png"; + } + + @Override + public Class getGuiClass() + { + return GuiEnrichmentChamber.class; + } +} diff --git a/src/minecraft/mekanism/nei/MachineRecipeHandler.java b/src/minecraft/mekanism/nei/MachineRecipeHandler.java new file mode 100644 index 000000000..3632d39e3 --- /dev/null +++ b/src/minecraft/mekanism/nei/MachineRecipeHandler.java @@ -0,0 +1,124 @@ +package mekanism.nei; + +import java.awt.Rectangle; +import java.util.List; +import java.util.Map; +import java.util.Map.Entry; +import java.util.Set; + +import net.minecraft.item.ItemStack; + +import org.lwjgl.opengl.GL11; + +import codechicken.nei.NEIServerUtils; +import codechicken.nei.PositionedStack; +import codechicken.nei.forge.GuiContainerManager; +import codechicken.nei.recipe.TemplateRecipeHandler; + +public abstract class MachineRecipeHandler extends TemplateRecipeHandler +{ + int ticksPassed; + + public abstract String getRecipeId(); + + public abstract Set> getRecipes(); + + @Override + public void drawBackground(GuiContainerManager guimanager, int i) + { + GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); + guimanager.bindTextureByName(getGuiTexture()); + guimanager.drawTexturedModalRect(12, 0, 28, 5, 144, 68); + } + + @Override + public void drawExtras(GuiContainerManager guimanager, int i) + { + float f = ticksPassed >= 20 ? (ticksPassed - 20) % 20 / 20.0F : 0.0F; + drawProgressBar(guimanager, 63, 34, 176, 0, 24, 7, f, 0); + f = ticksPassed <= 20 ? ticksPassed / 20.0F : 1.0F; + drawProgressBar(guimanager, 149, 12, 176, 7, 4, 52, f, 3); + } + + @Override + public void onUpdate() + { + super.onUpdate(); + ticksPassed++; + } + + @Override + public void loadTransferRects() + { + transferRects.add(new TemplateRecipeHandler.RecipeTransferRect(new Rectangle(63, 34, 24, 7), getRecipeId(), new Object[0])); + } + + @Override + public void loadCraftingRecipes(String outputId, Object... results) + { + if(outputId.equals(getRecipeId())) + { + for(Map.Entry irecipe : getRecipes()) + { + arecipes.add(new CachedIORecipe(irecipe)); + } + } + else { + super.loadCraftingRecipes(outputId, results); + } + } + + @Override + public void loadCraftingRecipes(ItemStack result) + { + for(Map.Entry irecipe : getRecipes()) + { + if(NEIServerUtils.areStacksSameTypeCrafting((ItemStack)irecipe.getValue(), result)) + { + arecipes.add(new CachedIORecipe(irecipe)); + } + } + } + + @Override + public void loadUsageRecipes(ItemStack ingredient) + { + for(Map.Entry irecipe : getRecipes()) + { + if(NEIServerUtils.areStacksSameTypeCrafting((ItemStack)irecipe.getKey(), ingredient)) + { + arecipes.add(new CachedIORecipe(irecipe)); + } + } + } + + public class CachedIORecipe extends TemplateRecipeHandler.CachedRecipe + { + public PositionedStack input; + public PositionedStack output; + + @Override + public PositionedStack getIngredient() + { + return input; + } + + @Override + public PositionedStack getResult() + { + return output; + } + + public CachedIORecipe(ItemStack itemstack, ItemStack itemstack1) + { + super(); + input = new PositionedStack(itemstack, 40, 12); + output = new PositionedStack(itemstack1, 100, 30); + } + + public CachedIORecipe(Map.Entry recipe) + { + this((ItemStack)recipe.getKey(), (ItemStack)recipe.getValue()); + } + } +} diff --git a/src/minecraft/mekanism/nei/MetallurgicInfuserRecipeHandler.java b/src/minecraft/mekanism/nei/MetallurgicInfuserRecipeHandler.java new file mode 100644 index 000000000..4a1514ac8 --- /dev/null +++ b/src/minecraft/mekanism/nei/MetallurgicInfuserRecipeHandler.java @@ -0,0 +1,188 @@ +package mekanism.nei; + +import java.awt.Rectangle; +import java.util.List; +import java.util.Map; +import java.util.Map.Entry; +import java.util.Set; + +import mekanism.api.InfusionInput; +import mekanism.api.InfusionOutput; +import mekanism.api.InfusionType; +import mekanism.client.GuiMetallurgicInfuser; +import mekanism.common.Mekanism; +import mekanism.common.TileEntityMetallurgicInfuser; +import mekanism.common.RecipeHandler.Recipe; +import net.minecraft.item.ItemStack; + +import org.lwjgl.opengl.GL11; + +import codechicken.nei.NEIServerUtils; +import codechicken.nei.PositionedStack; +import codechicken.nei.forge.GuiContainerManager; +import codechicken.nei.recipe.TemplateRecipeHandler; + +public class MetallurgicInfuserRecipeHandler extends TemplateRecipeHandler +{ + int ticksPassed; + + @Override + public String getRecipeName() + { + return "Metallurgic Infuser"; + } + + @Override + public String getOverlayIdentifier() + { + return "infuser"; + } + + @Override + public String getGuiTexture() + { + return "/resources/mekanism/gui/GuiMetallurgicInfuser.png"; + } + + @Override + public Class getGuiClass() + { + return GuiMetallurgicInfuser.class; + } + + public String getRecipeId() + { + return "mekanism.infuser"; + } + + public ItemStack getInfuseStack(InfusionType type) + { + return type == InfusionType.COAL ? new ItemStack(Mekanism.CompressedCarbon) : new ItemStack(Mekanism.Dust, 1, 7); + } + + public Set> getRecipes() + { + return Recipe.METALLURGIC_INFUSER.get().entrySet(); + } + + @Override + public void drawBackground(GuiContainerManager guimanager, int i) + { + GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); + guimanager.bindTextureByName(getGuiTexture()); + guimanager.drawTexturedModalRect(0, 0, 5, 5, 166, 78); + } + + @Override + public void drawExtras(GuiContainerManager guimanager, int i) + { + float f = ticksPassed >= 40 ? (ticksPassed - 40) % 20 / 20.0F : 0.0F; + drawProgressBar(guimanager, 67, 42, 176, 104, 32, 8, f, 0); + + f = ticksPassed >= 20 && ticksPassed < 40 ? (ticksPassed - 20) % 20 / 20.0F : 1.0F; + if(ticksPassed < 20) f = 0.0F; + int infuseX = 176 + (getOtherStacks(i).get(0).item.isItemEqual(new ItemStack(Mekanism.CompressedCarbon)) ? 4 : 0); + int infuseY = getOtherStacks(i).get(0).item.isItemEqual(new ItemStack(Mekanism.CompressedCarbon)) ? 0 : 52; + + drawProgressBar(guimanager, 2, 22, infuseX, infuseY, 4, 52, f, 3); + + f = ticksPassed <= 20 ? ticksPassed / 20.0F : 1.0F; + drawProgressBar(guimanager, 160, 12, 176, 0, 4, 52, f, 3); + } + + @Override + public void onUpdate() + { + super.onUpdate(); + ticksPassed++; + } + + @Override + public void loadTransferRects() + { + transferRects.add(new TemplateRecipeHandler.RecipeTransferRect(new Rectangle(67, 42, 32, 8), getRecipeId(), new Object[0])); + } + + @Override + public void loadCraftingRecipes(String outputId, Object... results) + { + if(outputId.equals(getRecipeId())) + { + for(Map.Entry irecipe : getRecipes()) + { + arecipes.add(new CachedIORecipe(irecipe, getInfuseStack(((InfusionInput)irecipe.getKey()).infusionType))); + } + } + else { + super.loadCraftingRecipes(outputId, results); + } + } + + @Override + public int recipiesPerPage() + { + return 1; + } + + @Override + public void loadCraftingRecipes(ItemStack result) + { + for(Map.Entry irecipe : getRecipes()) + { + if(NEIServerUtils.areStacksSameTypeCrafting(((InfusionOutput)irecipe.getValue()).resource, result)) + { + arecipes.add(new CachedIORecipe(irecipe, getInfuseStack(((InfusionInput)irecipe.getKey()).infusionType))); + } + } + } + + @Override + public void loadUsageRecipes(ItemStack ingredient) + { + for(Map.Entry irecipe : getRecipes()) + { + if(NEIServerUtils.areStacksSameTypeCrafting(((InfusionInput)irecipe.getKey()).inputSlot, ingredient)) + { + arecipes.add(new CachedIORecipe(irecipe, getInfuseStack(((InfusionInput)irecipe.getKey()).infusionType))); + } + } + } + + public class CachedIORecipe extends TemplateRecipeHandler.CachedRecipe + { + public PositionedStack inputStack; + public PositionedStack outputStack; + public PositionedStack infuseStack; + + @Override + public PositionedStack getIngredient() + { + return inputStack; + } + + @Override + public PositionedStack getResult() + { + return outputStack; + } + + @Override + public PositionedStack getOtherStack() + { + return infuseStack; + } + + public CachedIORecipe(ItemStack input, ItemStack output, ItemStack infuse) + { + super(); + inputStack = new PositionedStack(input, 46, 38); + outputStack = new PositionedStack(output, 104, 38); + infuseStack = new PositionedStack(infuse, 12, 30); + } + + public CachedIORecipe(Map.Entry recipe, ItemStack infuse) + { + this(((InfusionInput)recipe.getKey()).inputSlot, ((InfusionOutput)recipe.getValue()).resource, infuse); + } + } +} diff --git a/src/minecraft/mekanism/nei/NEIMekanismConfig.java b/src/minecraft/mekanism/nei/NEIMekanismConfig.java new file mode 100644 index 000000000..627cff21a --- /dev/null +++ b/src/minecraft/mekanism/nei/NEIMekanismConfig.java @@ -0,0 +1,36 @@ +package mekanism.nei; + +import codechicken.nei.api.API; +import codechicken.nei.api.IConfigureNEI; + +public class NEIMekanismConfig implements IConfigureNEI +{ + @Override + public void loadConfig() + { + API.registerRecipeHandler(new EnrichmentChamberRecipeHandler()); + API.registerUsageHandler(new EnrichmentChamberRecipeHandler()); + API.registerRecipeHandler(new PlatinumCompressorRecipeHandler()); + API.registerUsageHandler(new PlatinumCompressorRecipeHandler()); + API.registerRecipeHandler(new CrusherRecipeHandler()); + API.registerUsageHandler(new CrusherRecipeHandler()); + API.registerRecipeHandler(new CombinerRecipeHandler()); + API.registerUsageHandler(new CombinerRecipeHandler()); + API.registerRecipeHandler(new MetallurgicInfuserRecipeHandler()); + API.registerUsageHandler(new MetallurgicInfuserRecipeHandler()); + API.registerRecipeHandler(new PurificationChamberRecipeHandler()); + API.registerUsageHandler(new PurificationChamberRecipeHandler()); + } + + @Override + public String getName() + { + return "Mekanism NEI Plugin"; + } + + @Override + public String getVersion() + { + return "1.0.1"; + } +} diff --git a/src/minecraft/mekanism/nei/PlatinumCompressorRecipeHandler.java b/src/minecraft/mekanism/nei/PlatinumCompressorRecipeHandler.java new file mode 100644 index 000000000..abba4bd7e --- /dev/null +++ b/src/minecraft/mekanism/nei/PlatinumCompressorRecipeHandler.java @@ -0,0 +1,56 @@ +package mekanism.nei; + +import java.util.Set; + +import net.minecraft.item.ItemStack; + +import mekanism.client.GuiAdvancedElectricMachine; +import mekanism.client.GuiPlatinumCompressor; +import mekanism.common.Mekanism; +import mekanism.common.TileEntityPlatinumCompressor; +import mekanism.common.RecipeHandler.Recipe; + +public class PlatinumCompressorRecipeHandler extends AdvancedMachineRecipeHandler +{ + @Override + public String getRecipeName() + { + return "Platinum Compressor"; + } + + @Override + public String getRecipeId() + { + return "mekanism.compressor"; + } + + @Override + public String getOverlayIdentifier() + { + return "compressor"; + } + + @Override + public Set getRecipes() + { + return Recipe.PLATINUM_COMPRESSOR.get().entrySet(); + } + + @Override + public String getGuiTexture() + { + return "/resources/mekanism/gui/GuiCompressor.png"; + } + + @Override + public ItemStack getFuelStack() + { + return new ItemStack(Mekanism.Ingot, 1, 1); + } + + @Override + public Class getGuiClass() + { + return GuiPlatinumCompressor.class; + } +} diff --git a/src/minecraft/mekanism/nei/PurificationChamberRecipeHandler.java b/src/minecraft/mekanism/nei/PurificationChamberRecipeHandler.java new file mode 100644 index 000000000..c26731b2c --- /dev/null +++ b/src/minecraft/mekanism/nei/PurificationChamberRecipeHandler.java @@ -0,0 +1,55 @@ +package mekanism.nei; + +import java.util.Set; + +import mekanism.client.GuiAdvancedElectricMachine; +import mekanism.client.GuiPurificationChamber; +import mekanism.common.Mekanism; +import mekanism.common.RecipeHandler.Recipe; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; + +public class PurificationChamberRecipeHandler extends AdvancedMachineRecipeHandler +{ + @Override + public String getRecipeName() + { + return "Purification Chamber"; + } + + @Override + public String getRecipeId() + { + return "mekanism.purificationchamber"; + } + + @Override + public String getOverlayIdentifier() + { + return "purificationchamber"; + } + + @Override + public Set getRecipes() + { + return Recipe.PURIFICATION_CHAMBER.get().entrySet(); + } + + @Override + public String getGuiTexture() + { + return "/resources/mekanism/gui/GuiPurificationChamber.png"; + } + + @Override + public ItemStack getFuelStack() + { + return new ItemStack(Item.flint); + } + + @Override + public Class getGuiClass() + { + return GuiPurificationChamber.class; + } +} diff --git a/src/minecraft/mekanism/tools/common/MekanismTools.java b/src/minecraft/mekanism/tools/common/MekanismTools.java index 9f1f2c138..d1b95cf2a 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.1.1", dependencies = "required-after:Mekanism") +@Mod(modid = "MekanismTools", name = "MekanismTools", version = "5.2.0", dependencies = "required-after:Mekanism") @NetworkMod(clientSideRequired = true, serverSideRequired = false) public class MekanismTools {