From e8f593aca85bdbcc31fd7d7adc9ae0faf7c3973c Mon Sep 17 00:00:00 2001 From: Bob Date: Fri, 2 Oct 2020 23:53:37 +0200 Subject: [PATCH] new igen GUI, gauge util --- .../hbm/textures/gui/gauges/large_bow.png | Bin 2878 -> 2842 bytes .../hbm/textures/gui/gauges/large_round.png | Bin 3550 -> 3566 bytes .../hbm/textures/gui/gauges/large_wide.png | Bin 0 -> 1133 bytes .../hbm/textures/gui/gauges/small_bar.png | Bin 0 -> 762 bytes .../hbm/textures/gui/gauges/small_bow.png | Bin 1298 -> 1257 bytes .../hbm/textures/gui/gauges/small_round.png | Bin 1599 -> 1573 bytes .../hbm/textures/gui/gauges/small_wide.png | Bin 0 -> 582 bytes .../hbm/textures/gui/generators/gui_igen.png | Bin 0 -> 4099 bytes .../assets/hbm/textures/gui/gui_refinery.png | Bin 2640 -> 3005 bytes .../hbm/textures/items/fins_big_steel.png | Bin 320 -> 319 bytes .../hbm/textures/items/fins_small_steel.png | Bin 323 -> 295 bytes .../items/ingot_electronium.png.mcmeta | 6 +- .../hbm/blocks/machine/MachineIGenerator.java | 244 +-------------- .../com/hbm/inventory/MachineRecipes.java | 6 - .../container/ContainerIGenerator.java | 157 +++------- .../com/hbm/inventory/gui/GUIIGenerator.java | 64 ++-- .../com/hbm/packet/LoopedSoundPacket.java | 16 +- .../java/com/hbm/packet/PacketDispatcher.java | 2 - .../com/hbm/packet/TEIGeneratorPacket.java | 67 ---- .../render/tileentity/RenderIGenerator.java | 159 +++++----- .../render/tileentity/RendererObjTester.java | 8 +- .../java/com/hbm/render/util/GaugeUtil.java | 59 ++++ .../java/com/hbm/sound/SoundLoopIGen.java | 38 --- .../machine/TileEntityMachineIGenerator.java | 291 ++---------------- 24 files changed, 250 insertions(+), 867 deletions(-) create mode 100644 src/main/java/assets/hbm/textures/gui/gauges/large_wide.png create mode 100644 src/main/java/assets/hbm/textures/gui/gauges/small_bar.png create mode 100644 src/main/java/assets/hbm/textures/gui/gauges/small_wide.png create mode 100644 src/main/java/assets/hbm/textures/gui/generators/gui_igen.png delete mode 100644 src/main/java/com/hbm/packet/TEIGeneratorPacket.java create mode 100644 src/main/java/com/hbm/render/util/GaugeUtil.java delete mode 100644 src/main/java/com/hbm/sound/SoundLoopIGen.java diff --git a/src/main/java/assets/hbm/textures/gui/gauges/large_bow.png b/src/main/java/assets/hbm/textures/gui/gauges/large_bow.png index 3675290745d540026633bb057ff5c9ce5fa994fc..ac5d0cbcb159904348a3e8c0782ebcd1d7c41ba6 100644 GIT binary patch literal 2842 zcmai0do)yQ8{gxWYaCJg!_Y-eCxx9!nxqL$X2LNFQKGg>q>GGOnGBAjvKybFklfBD zO5=Vnm(UC+UC3Q>XAlaL4DxNQ^Vhe&wZ6U9UhiJ-df)Xt&+qyDe$T#RZFO8uT16TF z06B`enGLpT0syW}QUd$38NIt7Tf}@#D5oT`Cs@+;HULPsP|S{=3Vbx33|;N*Q2EpO zU>|-;zT7lRmPI(&bj@04+Z`SDUMsdRUv3L!rRz}aM24@`)J;?wHIMZ`Ku55#E_CTa%p+4O`*=+Ou4Ck#E_r^xb*O=1g!lPZK{#Eqig%Ps6 zy1Y1h!hyT0rQLu=mcj9i1<j#itHVJJ?4D-#?Mn^}}P_=$gPfQuucOJ+VE&ZULW|Pbtd>QQ}dSq?E)FpiE()x|n0P()HMF0@E z%K`aftKErL-fj<1enWA;nP;>A5za<=5Dm1lXwzN+!M&Q{{E zy7Q&A*2m3amDlsLsKOq|RyC;?VBV^Ue)Z~A?JV0O&)Xx%MvAj3Vc(hiB3EtYB!J+4 zUQ?6Q#!p7RCVaTBCg8OrzVbp>ZW~O^j?M)9Az_lxrF-lrqM!pukfgLX+ z>j%FyCY0{cqgf|%RX0Y~*OxtCe@%Ne=niRI^{d}^4%b;+GIG~qPdJIbhkB0kK}(QG zR#m|7!0+ILed(~pCL)>0_1U+dx68oH{syJfZ*TnH(4?c*8?xpmU&KJ6f6*s67|G1c zteraPhtRgN_Yies;kK&xnk0+tHkOadR<;GJz*#4fQ@M$N#)n-nPFuq= z=r(NgTmRxoTQ6^3S4FqF0P@<9>kw0Htr!nKikgB6{g%4UMpC;DV`rMQW8@5+w`MUd zi0-iO8T^Q+8oJTF_pKwExa#Pc^d;_|(sd5~V?-Qn$)hhCl99#3iV8%s{d$*&UH;;- z@hD6`+5%Ok@xer+e{laiI}L96JEhP|gjNp6HJfRmX3fV383-lzk_PJeft^sCmlsV_ z^y3uIM6yp!TxD?R7kJsn?QeQI!Hw^>f;nxxsvN+UjeBAvb$DBhwG@C6yB|v|x@aD(bd` zwycaftQBo8^bi&hd|5Gz@FU?Wc)5&(NT)6hVT{+NBNP%JbV`RaU?lvG%8CD#RyS{# zONFzxQ+4IK*Uhy@bYDXh`xm2XG|+AzTMVJww%QA~5QA~UO$@{)`K%B`72RBAFb&-E z-o|PP_BeL9n-IVQ7tcmNS%fC1%vsUV$?q7J8Suh{3J-etPO|ja(+oA#;4&S_9p!_= zrKY@H)^x<34+`Ext&j*EX)@(CYObS1M|AQ-STNzGbO55i)*L_AF7D=zh1%onWL-1Q zsOj>kPOy^$tdcwc>2f=w^y7bzQ+r(+8pmcp)P*S`#G1~0gmEC@BOb2lFRSb7XnF)#%vU5V zLmMT+YdHr-oo70!y-KMmGbQJYJE_k}*f@~s1Fv7ecGY0D+s`)naTeOtP&qT3(;BFh zO#)0WNooBlBa9pbQ(kr?rm|nsU<-93Sqn2$tXuTZ7DyVz=mbB+1ZVTTq}4s}2$!ID z66;BjM6~`+$_&rYhgU8bIEY!r=Npv@hcBm$hG0tAIlJZCSblLa!HEZM7@+2|S{{5T z(ogF=x!Dpo(KG5-_oOmpwxf$x;PuRuXTHu^6brjR8OfAdioqIzIPU)?}i^cK2aJ5?d|NI;T!0P$hN5u(B#j7!TpO1yKl!Bf)$LJ zv^au+0$Kh<(>>p-*q2SgPREI>ohH~Ia*>v zYmc#b1yu)sHM2~Vvc0G=%pLPLmr6}ZRvri6P;s>p6%|8xbmGbH@7~_^LpEGZ5jXOC y1k1`jn@wD5-x1ZJU-O9%w?YpwUR$Uy$;hwpT%VdZX=6XT0OgpKS+0po*na>$T4dt@ literal 2878 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 diff --git a/src/main/java/assets/hbm/textures/gui/gauges/large_round.png b/src/main/java/assets/hbm/textures/gui/gauges/large_round.png index 5796614e6458a8c4829fb1096c9c3f492ecd83d1..d436e99c0641fe217a896916a976fd327bc1e99c 100644 GIT binary patch literal 3566 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 literal 3550 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 diff --git a/src/main/java/assets/hbm/textures/gui/gauges/large_wide.png b/src/main/java/assets/hbm/textures/gui/gauges/large_wide.png new file mode 100644 index 0000000000000000000000000000000000000000..c3dc33b72b3e817c99f232ac6061d168c6b2be91 GIT binary patch literal 1133 zcmV-z1d{uSP)F;Ck-7=~Y0NGKaW1*wB)wg}ki$VReOND&f9kw8L7?3Arz z*=dz68JnqyAJG|g%j6D`E$5Q+cXzgPUy}Ek5ZHIG?#}Y}=xmc9fHX}rm*b|>Y2w@V zUP$M|n{zxozTo5I1NV0q)}M#BSUOh2!*4`T6CxSB3jz z21(O2o6Tkz-khV;={R@pO1bU4zokI=AIuPg%QGAt9N_Buxpt89RGQ(+!S>QL&3=EL z;_pA;9p@Nap5fu~1y|S43n!ZlF3-GvUllH&+APbmJpdRTKcV}p5B%uk{mYYgh&soc z;Z`o{azid7CUtCfT6KJquN?sBp7t>YFnhI+Qk!&7dW%7Mkw zjvxK}=5>4#Xuhyf-1%)G^2O&$mSshWx++|GK?A^25M_UG*lC+YIWSW zm(_({)+AOhGilq?=w+@jkc4xfbrt;dG6@Ef@ba-sF-7`uTT2S3Lsv5rDt-OW{BpxD)7PLP+aqpsFBWw8U8Fp$LNds*98n$9WH zMA&{=*29tG@$|CLaJIJTW%M!$dResR7+nlxE8Z{TbBq%D0>!QtbGTpTN^qdIYU}M8 zp|;q3FKZhHlBo9_ql2H(%RYRalgzJ29jtsP>6l(hL_cWfh5}fPJY${JcWf`Cbdm3qnAn0 z%QnKxe8NT9FRR+v<9?Zhx;NVV1XLIN^fCzsl7vy6mlc8L3me=oGu!?TIzmaOI#z=|00000NkvXXu0mjf?usx6 literal 0 HcmV?d00001 diff --git a/src/main/java/assets/hbm/textures/gui/gauges/small_bar.png b/src/main/java/assets/hbm/textures/gui/gauges/small_bar.png new file mode 100644 index 0000000000000000000000000000000000000000..82d4994712606b525adb7dde9b7f5fa29977aeeb GIT binary patch literal 762 zcmeAS@N?(olHy`uVBq!ia0vp^DnNXIgAGXLTs_DGq*#ibJVQ8upoSx*gMoo*qo<2w zNX4ADS8elNIfxwnnCx=6>x__&>fdb5$#$1kPq=aPwntaV%1EKBdz2(iBo)5jn%5sZ z=kkrBui`N;%^40@^f9tn&p&@y?bw?#>lnT1dFL;GY!Gm|!EoSZ#fx93m)t%weSd!a zF1!4u2siO9z516wYpXHH%O*1}emz4&|M&X4Nz0Z`U%y}HSdH5Iy>8{s zCXSacb2B6`Gzc)U${sf0iDtO*{`=nOb(2%CrOY(lwIKK3!tI&ir!Ofi=m%1tX3Sf5 z@veaH1f9=*(;|UtUNq(DbiYo$)tj0raN*h(X`l)@bQN+@V%KkNX`i;#(LwsMT-3DV zTTFW2wPiG=%q-t@W|q!oH}Mppic=<+H<@s($exuMDR=ph$u8+doRd=ToixhcbVe$6 z!tG5vZY|rX>)qU71*A?VXUzh;ebX81$TZ(+k&C%!SZHJ3BX0F8DB- z85fdHKk}Nr?FP^mjpSQNK$lKJcWGF(Soo#rWb@J9_Ue)n#W|$A8PA5N`f##c4d69FjZ+QiB$oplX+jaUsqN~VCi=2}h zWekj%2m3P50?nv1Msw$FI@ k$)HfRalBu3G4h+d)uxvw-hslGfr**H)78&qol`;+0N%1>RsaA1 literal 0 HcmV?d00001 diff --git a/src/main/java/assets/hbm/textures/gui/gauges/small_bow.png b/src/main/java/assets/hbm/textures/gui/gauges/small_bow.png index 7fc15dd1e04faadb0dee24903ab056cd68db4e2e..93ad0fcf9beb2fbfe1fb0fb4943c4a36e5dde07b 100644 GIT binary patch delta 1221 zcmV;$1UmbY3h4=uG=HE;L_t(|ob8*xYa2-v$G_T3FIIoS6<4LuZmNY8X13GWaFs!v z!H^;lIf1JLBIX1JhcgCOA!dEu!9jvSm60rU5-tK;+3Ui%yuTo){R8Z|VsFMXv!nI? zkdr$+-^SMH?bF-Q?1%T>jA~dQ&-18mJPgB{Zv4q22Rr>2+J6t&*#*@(lpJ}UN121x z4_g2Lze4~3)1z5p)DO5rZFHXJ(eW^#^cs|2gAzjcU)Ob|F?x-}mQt#9f)A7%kB0#r z4+HADE_Gd(zvd2K%g$1BG+Up-@A&9-lh=FiUP+oqOf(eW^#p65~a{&*PhHKeX1OLZE@F@KMwwbnrxhP5yZYdgDt07$+q z|B7I;8c5giXGMI@0HC$jL9JGko~1lC002s<{u$CtLzWG9mT8dFrnI!Q0}LSzAv5)0 zgp}q;q#k3E<2dCAY4;o0*xW`O#{i(6GaVtNi0poYJJ6Ali4ijO?Xh)aSr%VQY~7S1 zW*9Yh>UfiXv<%7dVasK<3i^!7=thFrUw{x2iZ| zVmuO6oRI5xIb@b{=aBa)R}Q%pLb9j~Asw0`*x^?Dru@bS;z zQpTb(33>behSzHwo7+5V)9KzEve|56baKcYR)4OtM<<6oYpYacGv&=84I%T}05F6! zgyj9BqJ-4;kAS-ha_`+MiIR&5X{k9RW0B}gRIl5{WHo?)MbJ9k!en#=N-5RmkoP$Q z3RKz5nd3Os`;dl^hL9y~O6#!^lEG~$IV5vdxyp{?Gt}$#E7b{^HEsxL2>B3tY=jhPsM4}@l`ZZ^7Rn(LLK5x#uv^s;@`;v^8NJ9} zw~Yzf2_dnC39vYa%%jXcBmlgf&n4iqKBOpJAJP!g5K?uPX^_*Vv>r1d#T=4Bu2LUT zbW)0td8_PPgj93M2PI^#y==#Eq|Dajkbj1dhLHagLN0ZuhLf_&UUt?#N$wm{J+|kU zA*Al?Uui;$PPBv+zrrj+s!fCxA=v^ngfxV#AVbKnxR+fzhirVZrRxe;*-;ds5!s02 zIN7N|vaY1bo~=*OgZ@a2NJ#*=>DVNHLncD%^);gp8s{x-gC{G@H%hgv{DUk{lHwB!GVjd0_}?2niTM8bZp^=76eBY^WO4li8y*^Xj=Vl~00000NkvXXu0mjfBB58` delta 1262 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 UQ_qQ_asU7T07*qoM6N<$f?-e?ZvX%Q literal 0 HcmV?d00001 diff --git a/src/main/java/assets/hbm/textures/gui/generators/gui_igen.png b/src/main/java/assets/hbm/textures/gui/generators/gui_igen.png new file mode 100644 index 0000000000000000000000000000000000000000..fcc7c3aec435924a27f6e022f1693d9997d9bc0f GIT binary patch literal 4099 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 literal 0 HcmV?d00001 diff --git a/src/main/java/assets/hbm/textures/gui/gui_refinery.png b/src/main/java/assets/hbm/textures/gui/gui_refinery.png index fd4ced3ab3cf57e926ad0b3a6cb58de78ad6e509..3ada7e8b8ec73cbdcf9e741d4ae02f20beca9712 100644 GIT binary patch literal 3005 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 Y^-Z1I%(BDHxq?XhZ=7r>$FV>D3)b;SHUIzs literal 2640 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 japd1}&~M-W9$RPpG@WHu1B;~&uPwBVM-uN5sog diff --git a/src/main/java/assets/hbm/textures/items/fins_big_steel.png b/src/main/java/assets/hbm/textures/items/fins_big_steel.png index e96ac8f83d8c88443c57af04f47d0781af393e41..bf68f1b52a78cf415ce511051b9b7d6152047c84 100644 GIT binary patch delta 292 zcmV+<0o(q-0>1)~B!2{RLP=Bz2nYy#2xN!=008z$L_t(Ijir;ljl>`jMxR%k(}hXt z!Ub5O05^ezpGNDc<&j< zk-qN%npbTULTt`C0E{s>=P<^QQbH+3j1izv0lc$08X%dMs qvaV~n##QmV&mD9%3y(kEpY#J%C3Hsg+|f+{0000A>0B!2;OQb$4nuFf3k00004XF*Lt006O%3;baP00009a7bBm000id z000id0mpBsWB>pF7<5HgbW?9;ba!ELWdLwtX>N2bZe?^JG%heMHvEiZ-v9sru}MTh zR5(wikkJjqAPhsAd`@!owF36 zq5{5v^!uE#ZvYk!kzQEk2oU%I5CnOEpaR4Pd;o4^fm9ZN8Ot;8m)l$gZba;wTQ(Zg rTm=uv%4jpDxgH8$F(aks@3L|N?RYpa{_U>;00000NkvXXu0mjfA*6KV diff --git a/src/main/java/assets/hbm/textures/items/fins_small_steel.png b/src/main/java/assets/hbm/textures/items/fins_small_steel.png index 79b6419aa521a48338c146c0a9af6fd07f45d3d0..2ca10465e8de15f03644d738a9a2b9ecf49904a9 100644 GIT binary patch delta 268 zcmV+n0rURD0;d9yB!2{RLP=Bz2nYy#2xN!=007=eL_t(IjjfWwZN?xJgFmX?vqj#O zEf^pY?7{#Ug8`7T3s=~J3EE3RkU#k&we<~y{fq(r2=#PeS(dLWzSat$KA*%P1ai)u zODPd!?CX!;i1&SeZ}21@6TDpEEKVr_5M$&xj>!~GCEgVVV1JB3YfX$1Yc1Y;7)xwo zV+_tYfIiK8kJh@U5s|rrak6ucobyXm5uudAx~|h+FENC0mwrk!CYcP*6C1`7t+j|q zdj&NaJQ+1?+t$V1pw`-2y~Wu4$hQOvP(S~>$4)6xN&&bOUlF(e;7a^2_y#LYeMl=Z S9Gd_D002ovP6b4+LSTX&O>$rW delta 296 zcmV+@0oVSg0>c83B!2;OQb$4nuFf3k00004XF*Lt006O%3;baP00009a7bBm000id z000id0mpBsWB>pF7<5HgbW?9;ba!ELWdLwtX>N2bZe?^JG%heMHvEiZ-v9srv`Iuk zR5(wik`Xu9+v{FBwz}R;|q<@&%Ur7&rYOQt({S;Cd zT5H*y^GfgCT5E5rd>1^y>>mX*J?LT1*dGOgJt&wPv8PYX{0%+@8GW6HqYd1%ji170FTHK?XHU%>(+cZvqCrK(PKmeEm%TNP|_NUi7pT*&FPZ>0000 getDrops(World world, int x, int y, int z, int metadata, int fortune) { - - ArrayList ret = new ArrayList(); - - //front - ret.add(new ItemStack(ModItems.ingot_steel, 3)); - ret.add(new ItemStack(ModItems.plate_steel, 6)); - ret.add(new ItemStack(ModItems.tank_steel, 4)); - ret.add(new ItemStack(ModItems.turbine_titanium, 1)); - ret.add(new ItemStack(ModItems.wire_red_copper, 6)); - ret.add(new ItemStack(ModItems.wire_gold, 4)); - - //body - ret.add(new ItemStack(ModItems.wire_gold, 42)); - ret.add(new ItemStack(Items.iron_ingot, 6)); - ret.add(new ItemStack(ModItems.ingot_steel, 3)); - - ret.add(new ItemStack(ModItems.plate_iron, 1)); - ret.add(new ItemStack(ModItems.wire_gold, 42)); - ret.add(new ItemStack(ModItems.ingot_steel, 3)); - - //rotor - ret.add(new ItemStack(ModItems.wire_gold, 42)); - ret.add(new ItemStack(Items.iron_ingot, 6)); - ret.add(new ItemStack(ModItems.ingot_steel, 3)); - - ret.add(new ItemStack(ModItems.ingot_steel, 6)); - ret.add(new ItemStack(ModItems.board_copper, 4)); - ret.add(new ItemStack(ModItems.wire_gold, 8)); - ret.add(new ItemStack(ModBlocks.red_wire_coated, 2)); - ret.add(new ItemStack(ModItems.pedestal_steel, 2)); - ret.add(new ItemStack(ModItems.circuit_copper, 4)); - - return ret; - } - @Override public int getRenderType() { return -1; @@ -91,128 +36,6 @@ public class MachineIGenerator extends BlockContainer implements IMultiblock { public boolean renderAsNormalBlock() { return false; } - - @Override - public void onBlockPlacedBy(World world, int x, int y, int z, EntityLivingBase player, ItemStack itemStack) { - int i = MathHelper.floor_double(player.rotationYaw * 4.0F / 360.0F + 0.5D) & 3; - - if (i == 0) { - world.setBlockMetadataWithNotify(x, y, z, 5, 2); - if(MultiblockHandler.checkSpace(world, x, y, z, MultiblockHandler.iGenDimensionEast)) { - MultiblockHandler.fillUp(world, x, y, z, MultiblockHandler.iGenDimensionEast, ModBlocks.dummy_block_igenerator); - - // - DummyBlockIGenerator.safeBreak = true; - world.setBlock(x + 2, y, z, ModBlocks.dummy_port_igenerator); - TileEntity te = world.getTileEntity(x + 2, y, z); - if(te instanceof TileEntityDummy) { - TileEntityDummy dummy = (TileEntityDummy)te; - dummy.targetX = x; - dummy.targetY = y; - dummy.targetZ = z; - } - world.setBlock(x - 3, y, z, ModBlocks.dummy_port_igenerator); - TileEntity te2 = world.getTileEntity(x - 3, y, z); - if(te2 instanceof TileEntityDummy) { - TileEntityDummy dummy = (TileEntityDummy)te2; - dummy.targetX = x; - dummy.targetY = y; - dummy.targetZ = z; - } - DummyBlockIGenerator.safeBreak = false; - // - - } else - world.func_147480_a(x, y, z, true); - } - if (i == 1) { - world.setBlockMetadataWithNotify(x, y, z, 3, 2); - if(MultiblockHandler.checkSpace(world, x, y, z, MultiblockHandler.iGenDimensionSouth)) { - MultiblockHandler.fillUp(world, x, y, z, MultiblockHandler.iGenDimensionSouth, ModBlocks.dummy_block_igenerator); - - // - DummyBlockIGenerator.safeBreak = true; - world.setBlock(x, y, z + 2, ModBlocks.dummy_port_igenerator); - TileEntity te = world.getTileEntity(x, y, z + 2); - if(te instanceof TileEntityDummy) { - TileEntityDummy dummy = (TileEntityDummy)te; - dummy.targetX = x; - dummy.targetY = y; - dummy.targetZ = z; - } - world.setBlock(x, y, z - 3, ModBlocks.dummy_port_igenerator); - TileEntity te2 = world.getTileEntity(x, y, z - 3); - if(te2 instanceof TileEntityDummy) { - TileEntityDummy dummy = (TileEntityDummy)te2; - dummy.targetX = x; - dummy.targetY = y; - dummy.targetZ = z; - } - DummyBlockIGenerator.safeBreak = false; - // - - } else - world.func_147480_a(x, y, z, true); - } - if (i == 2) { - world.setBlockMetadataWithNotify(x, y, z, 4, 2); - if(MultiblockHandler.checkSpace(world, x, y, z, MultiblockHandler.iGenDimensionWest)) { - MultiblockHandler.fillUp(world, x, y, z, MultiblockHandler.iGenDimensionWest, ModBlocks.dummy_block_igenerator); - - // - DummyBlockIGenerator.safeBreak = true; - world.setBlock(x + 3, y, z, ModBlocks.dummy_port_igenerator); - TileEntity te = world.getTileEntity(x + 3, y, z); - if(te instanceof TileEntityDummy) { - TileEntityDummy dummy = (TileEntityDummy)te; - dummy.targetX = x; - dummy.targetY = y; - dummy.targetZ = z; - } - world.setBlock(x - 2, y, z, ModBlocks.dummy_port_igenerator); - TileEntity te2 = world.getTileEntity(x - 2, y, z); - if(te2 instanceof TileEntityDummy) { - TileEntityDummy dummy = (TileEntityDummy)te2; - dummy.targetX = x; - dummy.targetY = y; - dummy.targetZ = z; - } - DummyBlockIGenerator.safeBreak = false; - // - - } else - world.func_147480_a(x, y, z, true); - } - if (i == 3) { - world.setBlockMetadataWithNotify(x, y, z, 2, 2); - if(MultiblockHandler.checkSpace(world, x, y, z, MultiblockHandler.iGenDimensionNorth)) { - MultiblockHandler.fillUp(world, x, y, z, MultiblockHandler.iGenDimensionNorth, ModBlocks.dummy_block_igenerator); - - // - DummyBlockIGenerator.safeBreak = true; - world.setBlock(x, y, z + 3, ModBlocks.dummy_port_igenerator); - TileEntity te = world.getTileEntity(x, y, z + 3); - if(te instanceof TileEntityDummy) { - TileEntityDummy dummy = (TileEntityDummy)te; - dummy.targetX = x; - dummy.targetY = y; - dummy.targetZ = z; - } - world.setBlock(x, y, z - 2, ModBlocks.dummy_port_igenerator); - TileEntity te2 = world.getTileEntity(x, y, z - 2); - if(te2 instanceof TileEntityDummy) { - TileEntityDummy dummy = (TileEntityDummy)te2; - dummy.targetX = x; - dummy.targetY = y; - dummy.targetZ = z; - } - DummyBlockIGenerator.safeBreak = false; - // - - } else - world.func_147480_a(x, y, z, true); - } - } @Override public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) { @@ -221,65 +44,20 @@ public class MachineIGenerator extends BlockContainer implements IMultiblock { return true; } else if(!player.isSneaking()) { - player.addChatComponentMessage(new ChatComponentText("The IGen has been retired, you may break it for recycling.")); + FMLNetworkHandler.openGui(player, MainRegistry.instance, ModBlocks.guiID_machine_industrial_generator, world, x, y, z); return true; } else { return false; } } - - private final Random field_149933_a = new Random(); - private static boolean keepInventory; - + @Override - public void breakBlock(World p_149749_1_, int p_149749_2_, int p_149749_3_, int p_149749_4_, Block p_149749_5_, int p_149749_6_) - { - if (!keepInventory) - { - ISidedInventory tileentityfurnace = (ISidedInventory)p_149749_1_.getTileEntity(p_149749_2_, p_149749_3_, p_149749_4_); + public int[] getDimensions() { + return new int [] {0,0,0,0,0,0}; + } - if (tileentityfurnace != null) - { - for (int i1 = 0; i1 < tileentityfurnace.getSizeInventory(); ++i1) - { - ItemStack itemstack = tileentityfurnace.getStackInSlot(i1); - - if (itemstack != null) - { - float f = this.field_149933_a.nextFloat() * 0.8F + 0.1F; - float f1 = this.field_149933_a.nextFloat() * 0.8F + 0.1F; - float f2 = this.field_149933_a.nextFloat() * 0.8F + 0.1F; - - while (itemstack.stackSize > 0) - { - int j1 = this.field_149933_a.nextInt(21) + 10; - - if (j1 > itemstack.stackSize) - { - j1 = itemstack.stackSize; - } - - itemstack.stackSize -= j1; - EntityItem entityitem = new EntityItem(p_149749_1_, p_149749_2_ + f, p_149749_3_ + f1, p_149749_4_ + f2, new ItemStack(itemstack.getItem(), j1, itemstack.getItemDamage())); - - if (itemstack.hasTagCompound()) - { - entityitem.getEntityItem().setTagCompound((NBTTagCompound)itemstack.getTagCompound().copy()); - } - - float f3 = 0.05F; - entityitem.motionX = (float)this.field_149933_a.nextGaussian() * f3; - entityitem.motionY = (float)this.field_149933_a.nextGaussian() * f3 + 0.2F; - entityitem.motionZ = (float)this.field_149933_a.nextGaussian() * f3; - p_149749_1_.spawnEntityInWorld(entityitem); - } - } - } - - p_149749_1_.func_147453_f(p_149749_2_, p_149749_3_, p_149749_4_, p_149749_5_); - } - } - - super.breakBlock(p_149749_1_, p_149749_2_, p_149749_3_, p_149749_4_, p_149749_5_, p_149749_6_); - } + @Override + public int getOffset() { + return 1; + } } diff --git a/src/main/java/com/hbm/inventory/MachineRecipes.java b/src/main/java/com/hbm/inventory/MachineRecipes.java index eafba3c21..b41666170 100644 --- a/src/main/java/com/hbm/inventory/MachineRecipes.java +++ b/src/main/java/com/hbm/inventory/MachineRecipes.java @@ -126,12 +126,6 @@ public class MachineRecipes { List list = new ArrayList(); switch(fluid) { - case LAVA: - list.add(new GasCentOutput(1, new ItemStack(ModBlocks.gravel_obsidian), 1)); - list.add(new GasCentOutput(2, new ItemStack(Blocks.gravel), 2)); - list.add(new GasCentOutput(1, new ItemStack(ModItems.powder_lithium), 3)); - list.add(new GasCentOutput(1, new ItemStack(ModItems.powder_iron, 2), 4)); - return list; case UF6: list.add(new GasCentOutput(4, new ItemStack(ModItems.nugget_u238), 1)); list.add(new GasCentOutput(4, new ItemStack(ModItems.nugget_u238), 2)); diff --git a/src/main/java/com/hbm/inventory/container/ContainerIGenerator.java b/src/main/java/com/hbm/inventory/container/ContainerIGenerator.java index 71f1d91d9..2625dac8b 100644 --- a/src/main/java/com/hbm/inventory/container/ContainerIGenerator.java +++ b/src/main/java/com/hbm/inventory/container/ContainerIGenerator.java @@ -12,69 +12,58 @@ import net.minecraft.item.ItemStack; public class ContainerIGenerator extends Container { - private TileEntityMachineIGenerator diFurnace; - - private int torque; - private int heat; - private int water; - private int lubricant; - private int fuel; - private int burn; + private TileEntityMachineIGenerator igen; - public ContainerIGenerator(InventoryPlayer invPlayer, TileEntityMachineIGenerator tedf) { + public ContainerIGenerator(InventoryPlayer invPlayer, TileEntityMachineIGenerator te) { - diFurnace = tedf; + igen = te; - //Multi Purpose Slots - this.addSlotToContainer(new Slot(tedf, 0, 8, 18)); - this.addSlotToContainer(new Slot(tedf, 1, 26, 18)); - this.addSlotToContainer(new Slot(tedf, 2, 44, 18)); - this.addSlotToContainer(new Slot(tedf, 3, 62, 18)); - this.addSlotToContainer(new Slot(tedf, 4, 80, 18)); - this.addSlotToContainer(new Slot(tedf, 5, 98, 18)); - this.addSlotToContainer(new Slot(tedf, 6, 8, 36)); - this.addSlotToContainer(new Slot(tedf, 7, 26, 36)); - this.addSlotToContainer(new Slot(tedf, 8, 44, 36)); - this.addSlotToContainer(new Slot(tedf, 9, 62, 36)); - this.addSlotToContainer(new Slot(tedf, 10, 80, 36)); - this.addSlotToContainer(new Slot(tedf, 11, 98, 36)); - //Solid Fuel Slot - this.addSlotToContainer(new Slot(tedf, 12, 62, 108)); - //Fluid Slot - this.addSlotToContainer(new Slot(tedf, 13, 98, 108)); - //Container Slot - this.addSlotToContainer(new SlotMachineOutput(tedf, 14, 98, 72)); - //Battery Slot - this.addSlotToContainer(new Slot(tedf, 15, 152, 108)); + //Solid Fuel + this.addSlotToContainer(new Slot(te, 0, 5, 27)); + //RTG In + this.addSlotToContainer(new Slot(te, 1, 41, 63)); + //RTG Out + this.addSlotToContainer(new SlotMachineOutput(te, 2, 41, 99)); + //Thermo Slots + this.addSlotToContainer(new Slot(te, 3, 68, 36)); + this.addSlotToContainer(new Slot(te, 4, 86, 36)); + this.addSlotToContainer(new Slot(te, 5, 104, 36)); + //Battery + this.addSlotToContainer(new Slot(te, 6, 86, 108)); + //Water In + this.addSlotToContainer(new Slot(te, 7, 131, 27)); + //Water Out + this.addSlotToContainer(new SlotMachineOutput(te, 8, 167, 27)); + //Fuel In + this.addSlotToContainer(new Slot(te, 9, 131, 63)); + //Fuel Out + this.addSlotToContainer(new SlotMachineOutput(te, 10, 167, 63)); + //ID In + this.addSlotToContainer(new Slot(te, 11, 131, 81)); + //ID Out + this.addSlotToContainer(new SlotMachineOutput(te, 12, 167, 81)); + //Lube In + this.addSlotToContainer(new Slot(te, 13, 131, 99)); + //Lube Out + this.addSlotToContainer(new SlotMachineOutput(te, 14, 167, 99)); for(int i = 0; i < 3; i++) { for(int j = 0; j < 9; j++) { - this.addSlotToContainer(new Slot(invPlayer, j + i * 9 + 9, 8 + j * 18, 84 + i * 18 + 56)); + this.addSlotToContainer(new Slot(invPlayer, j + i * 9 + 9, 14 + j * 18, 84 + i * 18 + 56)); } } for(int i = 0; i < 9; i++) { - this.addSlotToContainer(new Slot(invPlayer, i, 8 + i * 18, 142 + 56)); + this.addSlotToContainer(new Slot(invPlayer, i, 14 + i * 18, 142 + 56)); } } + //TODO: use smart shift click magic @Override - public void addCraftingToCrafters(ICrafting crafting) { - super.addCraftingToCrafters(crafting); - crafting.sendProgressBarUpdate(this, 1, this.diFurnace.torque); - crafting.sendProgressBarUpdate(this, 2, this.diFurnace.heat); - crafting.sendProgressBarUpdate(this, 3, this.diFurnace.water); - crafting.sendProgressBarUpdate(this, 4, this.diFurnace.lubricant); - crafting.sendProgressBarUpdate(this, 5, this.diFurnace.fuel); - crafting.sendProgressBarUpdate(this, 6, this.diFurnace.burn); - } - - @Override - public ItemStack transferStackInSlot(EntityPlayer p_82846_1_, int par2) - { + public ItemStack transferStackInSlot(EntityPlayer p_82846_1_, int par2) { ItemStack var3 = null; Slot var4 = (Slot) this.inventorySlots.get(par2); @@ -83,8 +72,8 @@ public class ContainerIGenerator extends Container { ItemStack var5 = var4.getStack(); var3 = var5.copy(); - if (par2 <= 15) { - if (!this.mergeItemStack(var5, 16, this.inventorySlots.size(), true)) + if (par2 <= 14) { + if (!this.mergeItemStack(var5, 15, this.inventorySlots.size(), true)) { return null; } @@ -107,76 +96,6 @@ public class ContainerIGenerator extends Container { @Override public boolean canInteractWith(EntityPlayer player) { - return diFurnace.isUseableByPlayer(player); - } - - @Override - public void detectAndSendChanges() { - super.detectAndSendChanges(); - - for(int i = 0; i < this.crafters.size(); i++) - { - ICrafting par1 = (ICrafting)this.crafters.get(i); - - if(this.torque != this.diFurnace.torque) - { - par1.sendProgressBarUpdate(this, 1, this.diFurnace.torque); - } - if(this.heat != this.diFurnace.heat) - { - par1.sendProgressBarUpdate(this, 2, this.diFurnace.heat); - } - if(this.water != this.diFurnace.water) - { - par1.sendProgressBarUpdate(this, 3, this.diFurnace.water); - } - if(this.lubricant != this.diFurnace.lubricant) - { - par1.sendProgressBarUpdate(this, 4, this.diFurnace.lubricant); - } - if(this.fuel != this.diFurnace.fuel) - { - par1.sendProgressBarUpdate(this, 5, this.diFurnace.fuel); - } - if(this.burn != this.diFurnace.burn) - { - par1.sendProgressBarUpdate(this, 6, this.diFurnace.burn); - } - } - - this.torque = this.diFurnace.torque; - this.heat = this.diFurnace.heat; - this.water = this.diFurnace.water; - this.lubricant = this.diFurnace.lubricant; - this.fuel = this.diFurnace.fuel; - this.burn = this.diFurnace.burn; - } - - @Override - public void updateProgressBar(int i, int j) { - if(i == 1) - { - diFurnace.torque = j; - } - if(i == 2) - { - diFurnace.heat = j; - } - if(i == 3) - { - diFurnace.water = j; - } - if(i == 4) - { - diFurnace.lubricant = j; - } - if(i == 5) - { - diFurnace.fuel = j; - } - if(i == 6) - { - diFurnace.burn = j; - } + return igen.isUseableByPlayer(player); } } diff --git a/src/main/java/com/hbm/inventory/gui/GUIIGenerator.java b/src/main/java/com/hbm/inventory/gui/GUIIGenerator.java index 699485c9f..f59f84d9a 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIIGenerator.java +++ b/src/main/java/com/hbm/inventory/gui/GUIIGenerator.java @@ -4,6 +4,8 @@ import org.lwjgl.opengl.GL11; import com.hbm.inventory.container.ContainerIGenerator; import com.hbm.lib.RefStrings; +import com.hbm.render.util.GaugeUtil; +import com.hbm.render.util.GaugeUtil.Gauge; import com.hbm.tileentity.machine.TileEntityMachineIGenerator; import net.minecraft.client.Minecraft; @@ -13,22 +15,20 @@ import net.minecraft.util.ResourceLocation; public class GUIIGenerator extends GuiInfoContainer { - private static ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/gui_igenerator.png"); + private static ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/generators/gui_igen.png"); private TileEntityMachineIGenerator diFurnace; public GUIIGenerator(InventoryPlayer invPlayer, TileEntityMachineIGenerator tedf) { super(new ContainerIGenerator(invPlayer, tedf)); diFurnace = tedf; - this.xSize = 176; + this.xSize = 188; this.ySize = 222; } @Override public void drawScreen(int mouseX, int mouseY, float f) { super.drawScreen(mouseX, mouseY, f); - - this.drawElectricityInfo(this, mouseX, mouseY, guiLeft + 152, guiTop + 106 - 88, 16, 88, diFurnace.power, diFurnace.maxPower); } @Override @@ -44,48 +44,20 @@ public class GUIIGenerator extends GuiInfoContainer { GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); Minecraft.getMinecraft().getTextureManager().bindTexture(texture); drawTexturedModalRect(guiLeft, guiTop, 0, 0, xSize, ySize); + + int[] pellets = new int[] {0,1,0,1,0,0,0,1,2,0,0,2}; + + for(int i = 0; i < pellets.length; i++) { + + drawTexturedModalRect(guiLeft + 6, guiTop + 106 - 4 * i, 188, 9 * pellets[i], 14, 9); + } - if(diFurnace.fuel > 0) - { - int j = diFurnace.getFuelScaled(88); - drawTexturedModalRect(guiLeft + 122, guiTop + 106 - j, 176, 88 - j, 4, j); - } - if(diFurnace.lubricant > 0) - { - int j = diFurnace.getLubeScaled(88); - drawTexturedModalRect(guiLeft + 128, guiTop + 106 - j, 180, 88 - j, 4, j); - } - if(diFurnace.water > 0) - { - int j = diFurnace.getWaterScaled(88); - drawTexturedModalRect(guiLeft + 134, guiTop + 106 - j, 184, 88 - j, 4, j); - } - if(diFurnace.heat > 0) - { - int j = diFurnace.getHeatScaled(88); - drawTexturedModalRect(guiLeft + 140, guiTop + 106 - j, 188, 88 - j, 4, j); - } - if(diFurnace.torque > 0) - { - int j = diFurnace.getTorqueScaled(88); - drawTexturedModalRect(guiLeft + 146, guiTop + 106 - j, 192, 88 - j, 4, j); - } - if(diFurnace.power > 0) - { - int j = (int)diFurnace.getPowerScaled(88); - drawTexturedModalRect(guiLeft + 152, guiTop + 106 - j, 196, 88 - j, 16, j); - } - if(diFurnace.burn > 0) - { - drawTexturedModalRect(guiLeft + 62, guiTop + 90, 212, 0, 18, 18); - } - if(diFurnace.getHeatScaled(100) < 90 && diFurnace.fuel > 0) { - drawTexturedModalRect(guiLeft + 62 + 18 + 18, guiTop + 90 - 18 - 18, 212, 0, 18, 18); - } - if(diFurnace.water <= 0) { - drawTexturedModalRect(guiLeft + 12, guiTop + 59, 230, 0, 6, 6); - } else { - drawTexturedModalRect(guiLeft + 12, guiTop + 59 + 24, 230, 0, 6, 6); - } + GaugeUtil.renderGauge(Gauge.BAR_SMALL, guiLeft + 76, guiTop + 20, this.zLevel, Math.sin(System.currentTimeMillis() * 0.0025D) * 0.5 + 0.5); + GaugeUtil.renderGauge(Gauge.BAR_SMALL, guiLeft + 76, guiTop + 56, this.zLevel, Math.sin(System.currentTimeMillis() * 0.0025D) * 0.5 + 0.5); + GaugeUtil.renderGauge(Gauge.BAR_SMALL, guiLeft + 76, guiTop + 92, this.zLevel, Math.sin(System.currentTimeMillis() * 0.0025D) * 0.5 + 0.5); + + GaugeUtil.renderGauge(Gauge.WIDE_SMALL, guiLeft + 148, guiTop + 26, this.zLevel, Math.sin(System.currentTimeMillis() * 0.0025D) * 0.5 + 0.5); + GaugeUtil.renderGauge(Gauge.WIDE_SMALL, guiLeft + 148, guiTop + 62, this.zLevel, Math.sin(System.currentTimeMillis() * 0.0025D) * 0.5 + 0.5); + GaugeUtil.renderGauge(Gauge.WIDE_SMALL, guiLeft + 148, guiTop + 98, this.zLevel, Math.sin(System.currentTimeMillis() * 0.0025D) * 0.5 + 0.5); } } diff --git a/src/main/java/com/hbm/packet/LoopedSoundPacket.java b/src/main/java/com/hbm/packet/LoopedSoundPacket.java index 6fb1b4445..c7598f70a 100644 --- a/src/main/java/com/hbm/packet/LoopedSoundPacket.java +++ b/src/main/java/com/hbm/packet/LoopedSoundPacket.java @@ -1,10 +1,10 @@ package com.hbm.packet; +import com.hbm.interfaces.Spaghetti; import com.hbm.sound.SoundLoopAssembler; import com.hbm.sound.SoundLoopBroadcaster; import com.hbm.sound.SoundLoopCentrifuge; import com.hbm.sound.SoundLoopChemplant; -import com.hbm.sound.SoundLoopIGen; import com.hbm.sound.SoundLoopMiner; import com.hbm.sound.SoundLoopTurbofan; import com.hbm.tileentity.machine.TileEntityBroadcaster; @@ -12,7 +12,6 @@ import com.hbm.tileentity.machine.TileEntityMachineAssembler; import com.hbm.tileentity.machine.TileEntityMachineCentrifuge; import com.hbm.tileentity.machine.TileEntityMachineChemplant; import com.hbm.tileentity.machine.TileEntityMachineGasCent; -import com.hbm.tileentity.machine.TileEntityMachineIGenerator; import com.hbm.tileentity.machine.TileEntityMachineMiningDrill; import com.hbm.tileentity.machine.TileEntityMachineTurbofan; @@ -26,6 +25,7 @@ import net.minecraft.client.Minecraft; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.ResourceLocation; +@Spaghetti("this class should be destroyed") public class LoopedSoundPacket implements IMessage { int x; @@ -102,18 +102,6 @@ public class LoopedSoundPacket implements IMessage { Minecraft.getMinecraft().getSoundHandler().playSound(new SoundLoopAssembler(new ResourceLocation("hbm:block.assemblerOperate"), te)); } - if (te != null && te instanceof TileEntityMachineIGenerator) { - - boolean flag = true; - for(int i = 0; i < SoundLoopIGen.list.size(); i++) { - if(SoundLoopIGen.list.get(i).getTE() == te && !SoundLoopIGen.list.get(i).isDonePlaying()) - flag = false; - } - - if(flag && te.getWorldObj().isRemote && ((TileEntityMachineIGenerator)te).torque > 0) - Minecraft.getMinecraft().getSoundHandler().playSound(new SoundLoopIGen(new ResourceLocation("hbm:block.igeneratorOperate"), te)); - } - if (te != null && te instanceof TileEntityMachineTurbofan) { boolean flag = true; diff --git a/src/main/java/com/hbm/packet/PacketDispatcher.java b/src/main/java/com/hbm/packet/PacketDispatcher.java index fd42085cb..1ef1daa25 100644 --- a/src/main/java/com/hbm/packet/PacketDispatcher.java +++ b/src/main/java/com/hbm/packet/PacketDispatcher.java @@ -19,8 +19,6 @@ public class PacketDispatcher { wrapper.registerMessage(TEPylonSenderPacket.Handler.class, TEPylonSenderPacket.class, i++, Side.CLIENT); //Resets connection list in client-sided pole rendering wrapper.registerMessage(TEPylonDestructorPacket.Handler.class, TEPylonDestructorPacket.class, i++, Side.CLIENT); - //Flywheel rotation for industrial generator rendering - wrapper.registerMessage(TEIGeneratorPacket.Handler.class, TEIGeneratorPacket.class, i++, Side.CLIENT); //Machine type for marker rendering wrapper.registerMessage(TEStructurePacket.Handler.class, TEStructurePacket.class, i++, Side.CLIENT); //Mining drill rotation for rendering diff --git a/src/main/java/com/hbm/packet/TEIGeneratorPacket.java b/src/main/java/com/hbm/packet/TEIGeneratorPacket.java deleted file mode 100644 index d9f100c2c..000000000 --- a/src/main/java/com/hbm/packet/TEIGeneratorPacket.java +++ /dev/null @@ -1,67 +0,0 @@ -package com.hbm.packet; - -import com.hbm.tileentity.machine.TileEntityMachineIGenerator; - -import cpw.mods.fml.common.network.simpleimpl.IMessage; -import cpw.mods.fml.common.network.simpleimpl.IMessageHandler; -import cpw.mods.fml.common.network.simpleimpl.MessageContext; -import io.netty.buffer.ByteBuf; -import net.minecraft.client.Minecraft; -import net.minecraft.tileentity.TileEntity; - -public class TEIGeneratorPacket implements IMessage { - - int x; - int y; - int z; - float spin; - int torque; - - public TEIGeneratorPacket() - { - - } - - public TEIGeneratorPacket(int x, int y, int z, float spin, int torque) - { - this.x = x; - this.y = y; - this.z = z; - this.spin = spin; - this.torque = torque; - } - - @Override - public void fromBytes(ByteBuf buf) { - x = buf.readInt(); - y = buf.readInt(); - z = buf.readInt(); - spin = buf.readFloat(); - torque = buf.readInt(); - } - - @Override - public void toBytes(ByteBuf buf) { - buf.writeInt(x); - buf.writeInt(y); - buf.writeInt(z); - buf.writeFloat(spin); - buf.writeInt(torque); - } - - public static class Handler implements IMessageHandler { - - @Override - public IMessage onMessage(TEIGeneratorPacket m, MessageContext ctx) { - TileEntity te = Minecraft.getMinecraft().theWorld.getTileEntity(m.x, m.y, m.z); - - if (te != null && te instanceof TileEntityMachineIGenerator) { - - TileEntityMachineIGenerator gen = (TileEntityMachineIGenerator) te; - gen.rotation = m.spin; - gen.torque = m.torque; - } - return null; - } - } -} diff --git a/src/main/java/com/hbm/render/tileentity/RenderIGenerator.java b/src/main/java/com/hbm/render/tileentity/RenderIGenerator.java index 8309be623..9e920a763 100644 --- a/src/main/java/com/hbm/render/tileentity/RenderIGenerator.java +++ b/src/main/java/com/hbm/render/tileentity/RenderIGenerator.java @@ -2,94 +2,111 @@ package com.hbm.render.tileentity; import org.lwjgl.opengl.GL11; -import com.hbm.lib.RefStrings; -import com.hbm.tileentity.machine.TileEntityMachineIGenerator; +import com.hbm.main.ResourceManager; +import com.hbm.render.util.BeamPronter; +import com.hbm.render.util.BeamPronter.EnumBeamType; +import com.hbm.render.util.BeamPronter.EnumWaveType; import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.ResourceLocation; -import net.minecraftforge.client.model.AdvancedModelLoader; -import net.minecraftforge.client.model.IModelCustom; +import net.minecraft.util.Vec3; public class RenderIGenerator extends TileEntitySpecialRenderer { - private static final ResourceLocation body = new ResourceLocation(/*"/assets/" + */RefStrings.MODID, "models/generator_body.obj"); - private static final ResourceLocation rotor = new ResourceLocation(/*"/assets/" + */RefStrings.MODID, "models/generator_rotor.obj"); - private IModelCustom genModel; - private IModelCustom rotModel; - private ResourceLocation genTexture; - private ResourceLocation rotTexture; - - public RenderIGenerator() - { - genModel = AdvancedModelLoader.loadModel(body); - rotModel = AdvancedModelLoader.loadModel(rotor); - //gadgetTexture = new ResourceLocation(RefStrings.MODID, "textures/models/TheGadget3_.png"); - genTexture = new ResourceLocation(RefStrings.MODID, "textures/models/textureIGen.png"); - rotTexture = new ResourceLocation(RefStrings.MODID, "textures/models/textureIGenRotor.png"); - } - @Override - public void renderTileEntityAt(TileEntity tileEntity, double x, double y, double z, float f) - { + public void renderTileEntityAt(TileEntity te, double x, double y, double z, float f) { GL11.glPushMatrix(); GL11.glTranslated(x + 0.5D, y, z + 0.5D); + GL11.glEnable(GL11.GL_LIGHTING); GL11.glDisable(GL11.GL_CULL_FACE); - GL11.glRotatef(180, 0F, 1F, 0F); - switch(tileEntity.getBlockMetadata()) - { - case 2: - GL11.glRotatef(90, 0F, 1F, 0F); - GL11.glTranslated(0.5D, 0.0D, 0.0D); break; - case 4: - GL11.glRotatef(180, 0F, 1F, 0F); - GL11.glTranslated(0.5D, 0.0D, 0.0D); break; - case 3: - GL11.glRotatef(270, 0F, 1F, 0F); - GL11.glTranslated(0.5D, 0.0D, 0.0D); break; - case 5: - GL11.glRotatef(0, 0F, 1F, 0F); - GL11.glTranslated(0.5D, 0.0D, 0.0D); break; - } - - bindTexture(genTexture); + GL11.glShadeModel(GL11.GL_SMOOTH); - genModel.renderAll(); - + bindTexture(ResourceManager.igen_tex); + ResourceManager.igen.renderPart("Base"); + + float angle = System.currentTimeMillis() * 1 % 360; + float px = 0.0625F; + float sine = (float) Math.sin(Math.toRadians(angle)); + float cosine = (float) Math.cos(Math.toRadians(angle)); + float armAng = 22.5F; + + GL11.glPushMatrix(); + GL11.glTranslated(0, 3.5, 0); + GL11.glRotatef(angle, 0, 0, 1); + GL11.glTranslated(0, -3.5, 0); + + bindTexture(ResourceManager.igen_rotor); + ResourceManager.igen.renderPart("Rotor"); GL11.glPopMatrix(); - renderTileEntityAt2(tileEntity, x, y, z, f); - } - - public void renderTileEntityAt2(TileEntity tileEntity, double x, double y, double z, float f) - { + + GL11.glPushMatrix(); - GL11.glTranslated(x + 0.5D, y + 1.5D, z + 0.5D); - GL11.glEnable(GL11.GL_LIGHTING); - GL11.glDisable(GL11.GL_CULL_FACE); - GL11.glRotatef(180, 0F, 1F, 0F); - switch(tileEntity.getBlockMetadata()) - { - case 2: - GL11.glRotatef(90, 0F, 1F, 0F); - GL11.glTranslated(0.5D, 0.0D, 0.0D); break; - case 4: - GL11.glRotatef(180, 0F, 1F, 0F); - GL11.glTranslated(0.5D, 0.0D, 0.0D); break; - case 3: - GL11.glRotatef(270, 0F, 1F, 0F); - GL11.glTranslated(0.5D, 0.0D, 0.0D); break; - case 5: - GL11.glRotatef(0, 0F, 1F, 0F); - GL11.glTranslated(0.5D, 0.0D, 0.0D); break; - } - - GL11.glRotatef(((TileEntityMachineIGenerator)tileEntity).rotation, 1F, 0F, 0F); + GL11.glTranslated(0, 3.5, px * 5); + GL11.glRotatef(angle, -1, 0, 0); + GL11.glTranslated(0, -3.5, px * -5); + + bindTexture(ResourceManager.igen_cog); + ResourceManager.igen.renderPart("CogLeft"); + GL11.glPopMatrix(); + + + + GL11.glPushMatrix(); + GL11.glTranslated(0, 3.5, px * 5); + GL11.glRotatef(angle, 1, 0, 0); + GL11.glTranslated(0, -3.5, px * -5); + + bindTexture(ResourceManager.igen_cog); + ResourceManager.igen.renderPart("CogRight"); + GL11.glPopMatrix(); + + + + GL11.glPushMatrix(); + GL11.glTranslated(0, 0, cosine * 0.8725 - 1); + + bindTexture(ResourceManager.igen_pistons); + ResourceManager.igen.renderPart("Pistons"); + GL11.glPopMatrix(); + + GL11.glPushMatrix(); + + GL11.glTranslated(0, sine * 0.55, cosine * 0.8725 - 1.125); + + GL11.glTranslated(0, 3.5, px * 6.5); + GL11.glRotatef(sine * -armAng, 1, 0, 0); + GL11.glTranslated(0, -3.5, px * -5); + + bindTexture(ResourceManager.igen_arm); + ResourceManager.igen.renderPart("ArmLeft"); + GL11.glPopMatrix(); + + GL11.glPushMatrix(); + + GL11.glTranslated(0, -sine * 0.55, cosine * 0.8725 - 1.125); + + GL11.glTranslated(0, 3.5, px * 6.5); + GL11.glRotatef(sine * armAng, 1, 0, 0); + GL11.glTranslated(0, -3.5, px * -5); + + bindTexture(ResourceManager.igen_arm); + ResourceManager.igen.renderPart("ArmRight"); + GL11.glPopMatrix(); - bindTexture(rotTexture); - rotModel.renderAll(); + GL11.glTranslated(-0.75, 5.5625, -7); + for(int i = 0; i < 2; i++) { + BeamPronter.prontBeam(Vec3.createVectorHelper(1.5, 0, 0), EnumWaveType.RANDOM, EnumBeamType.LINE, 0x8080ff, 0x0000ff, (int)te.getWorldObj().getTotalWorldTime() % 1000 + i, 5, px * 4, 0, 0); + BeamPronter.prontBeam(Vec3.createVectorHelper(1.5, 0, 0), EnumWaveType.RANDOM, EnumBeamType.LINE, 0xffffff, 0x0000ff, (int)te.getWorldObj().getTotalWorldTime() % 1000 + 2 + i, 5, px * 4, 0, 0); + } + + GL11.glShadeModel(GL11.GL_FLAT); + GL11.glEnable(GL11.GL_CULL_FACE); + te.getWorldObj().spawnParticle("splash", te.xCoord + 2.1, te.yCoord + 5.875, te.zCoord + 0.5, 0, 0, -0.25); + te.getWorldObj().spawnParticle("smoke", te.xCoord + 2.8, te.yCoord + 5.05, te.zCoord + 2, 0, 0, -0.1); + GL11.glPopMatrix(); } } diff --git a/src/main/java/com/hbm/render/tileentity/RendererObjTester.java b/src/main/java/com/hbm/render/tileentity/RendererObjTester.java index 85f62969f..aa1ba0f02 100644 --- a/src/main/java/com/hbm/render/tileentity/RendererObjTester.java +++ b/src/main/java/com/hbm/render/tileentity/RendererObjTester.java @@ -169,7 +169,7 @@ public class RendererObjTester extends TileEntitySpecialRenderer { GL11.glShadeModel(GL11.GL_FLAT);*/ - /*GL11.glShadeModel(GL11.GL_SMOOTH); + GL11.glShadeModel(GL11.GL_SMOOTH); GL11.glEnable(GL11.GL_CULL_FACE); GL11.glEnable(GL11.GL_LIGHTING); @@ -183,9 +183,9 @@ public class RendererObjTester extends TileEntitySpecialRenderer { bindTexture(ResourceManager.soyuz_module_solar_tex); ResourceManager.soyuz_module.renderPart("Solar"); - GL11.glShadeModel(GL11.GL_FLAT);*/ + GL11.glShadeModel(GL11.GL_FLAT); - GL11.glDisable(GL11.GL_CULL_FACE); + /*GL11.glDisable(GL11.GL_CULL_FACE); GL11.glShadeModel(GL11.GL_SMOOTH); bindTexture(ResourceManager.igen_tex); @@ -279,7 +279,7 @@ public class RendererObjTester extends TileEntitySpecialRenderer { for(int i = 0; i < 5; i++) { tileEntity.getWorldObj().spawnParticle("smoke", tileEntity.xCoord + 2.8, tileEntity.yCoord + 5.05, tileEntity.zCoord + 2, 0, 0, -0.3); } - } + }*/ GL11.glPopMatrix(); } diff --git a/src/main/java/com/hbm/render/util/GaugeUtil.java b/src/main/java/com/hbm/render/util/GaugeUtil.java new file mode 100644 index 000000000..e31455bac --- /dev/null +++ b/src/main/java/com/hbm/render/util/GaugeUtil.java @@ -0,0 +1,59 @@ +package com.hbm.render.util; + +import com.hbm.lib.RefStrings; + +import net.minecraft.client.Minecraft; +import net.minecraft.client.renderer.Tessellator; +import net.minecraft.util.ResourceLocation; + +public class GaugeUtil { + + public static enum Gauge { + + ROUND_SMALL(new ResourceLocation(RefStrings.MODID + ":textures/gui/gauges/small_round.png"), 18, 18, 13), + ROUND_LARGE(new ResourceLocation(RefStrings.MODID + ":textures/gui/gauges/large_round.png"), 36, 36, 13), + BOW_SMALL(new ResourceLocation(RefStrings.MODID + ":textures/gui/gauges/small_bow.png"), 18, 18, 13), + BOW_LARGE(new ResourceLocation(RefStrings.MODID + ":textures/gui/gauges/large_bow.png"), 36, 36, 13), + WIDE_SMALL(new ResourceLocation(RefStrings.MODID + ":textures/gui/gauges/small_wide.png"), 18, 12, 7), + WIDE_LARGE(new ResourceLocation(RefStrings.MODID + ":textures/gui/gauges/large_wide.png"), 36, 24, 11), + BAR_SMALL(new ResourceLocation(RefStrings.MODID + ":textures/gui/gauges/small_bar.png"), 36, 12, 16); + + ResourceLocation texture; + int width; + int height; + int count; + + private Gauge(ResourceLocation texture, int width, int height, int count) { + this.texture = texture; + this.width = width; + this.height = height; + this.count = count; + } + } + + /** + * + * @param gauge The gauge enum to use + * @param x The x coord in the GUI (left) + * @param y The y coord in the GUI (top) + * @param z The z-level (from GUI.zLevel) + * @param progress Double from 0-1 how far the gauge has progressed + */ + public static void renderGauge(Gauge gauge, double x, double y, double z, double progress) { + + Minecraft.getMinecraft().renderEngine.bindTexture(gauge.texture); + + int frameNum = (int) Math.round((gauge.count - 1) * progress); + double singleFrame = 1D / (double)gauge.count; + double frameOffset = singleFrame * frameNum; + + Tessellator tess = Tessellator.instance; + tess.startDrawingQuads(); + tess.addVertexWithUV(x, y + gauge.height, z, 0, frameOffset + singleFrame); + tess.addVertexWithUV(x + gauge.width, y + gauge.height, z, 1, frameOffset + singleFrame); + tess.addVertexWithUV(x + gauge.width, y, z, 1, frameOffset); + tess.addVertexWithUV(x, y, z, 0, frameOffset); + tess.draw(); + } + +} diff --git a/src/main/java/com/hbm/sound/SoundLoopIGen.java b/src/main/java/com/hbm/sound/SoundLoopIGen.java deleted file mode 100644 index 5daab81cc..000000000 --- a/src/main/java/com/hbm/sound/SoundLoopIGen.java +++ /dev/null @@ -1,38 +0,0 @@ -package com.hbm.sound; - -import java.util.ArrayList; -import java.util.List; - -import com.hbm.tileentity.machine.TileEntityMachineIGenerator; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.ResourceLocation; - -public class SoundLoopIGen extends SoundLoopMachine { - - public static List list = new ArrayList(); - - public SoundLoopIGen(ResourceLocation path, TileEntity te) { - super(path, te); - list.add(this); - } - - @Override - public void update() { - super.update(); - - if(te instanceof TileEntityMachineIGenerator) { - TileEntityMachineIGenerator drill = (TileEntityMachineIGenerator)te; - - if(this.volume != 3) - volume = 3; - - if(drill.torque <= 0) - this.donePlaying = true; - } - } - - public TileEntity getTE() { - return te; - } - -} diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineIGenerator.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineIGenerator.java index 6c2cb64df..44db6506c 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineIGenerator.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineIGenerator.java @@ -1,308 +1,69 @@ package com.hbm.tileentity.machine; -import java.util.ArrayList; import java.util.List; -import com.hbm.blocks.ModBlocks; import com.hbm.interfaces.IConsumer; import com.hbm.interfaces.ISource; -import com.hbm.items.ModItems; -import com.hbm.lib.Library; -import com.hbm.packet.AuxElectricityPacket; -import com.hbm.packet.LoopedSoundPacket; -import com.hbm.packet.PacketDispatcher; -import com.hbm.packet.TEIGeneratorPacket; +import com.hbm.tileentity.TileEntityMachineBase; -import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.init.Blocks; -import net.minecraft.init.Items; -import net.minecraft.inventory.ISidedInventory; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.nbt.NBTTagList; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.AxisAlignedBB; - -public class TileEntityMachineIGenerator extends TileEntity implements ISidedInventory, ISource { - - private ItemStack slots[]; - - public long power; - public int torque; - public int heat; - public int water; - public int lubricant; - public int fuel; - public int burn; - public int soundCycle = 0; - public float rotation; - public static final long maxPower = 100000; - public static final int maxTorque = 2500; - public static final int maxHeat = 7500; - public static final int maxWater = 10000; - public static final int maxLubricant = 10000; - public static final int maxFuel = 50000; - public int age = 0; - public List list = new ArrayList(); - - private static final int[] slots_top = new int[] { 0 }; - private static final int[] slots_bottom = new int[] { 0, 0 }; - private static final int[] slots_side = new int[] { 0 }; - - private String customName; +public class TileEntityMachineIGenerator extends TileEntityMachineBase implements ISource { public TileEntityMachineIGenerator() { - slots = new ItemStack[16]; + super(15); } @Override - public int getSizeInventory() { - return slots.length; + public String getName() { + return "container.iGenerator"; } @Override - public ItemStack getStackInSlot(int i) { - return slots[i]; - } - - @Override - public ItemStack getStackInSlotOnClosing(int i) { - if (slots[i] != null) { - ItemStack itemStack = slots[i]; - slots[i] = null; - return itemStack; - } else { - return null; - } - } - - @Override - public void setInventorySlotContents(int i, ItemStack itemStack) { - slots[i] = itemStack; - if (itemStack != null && itemStack.stackSize > getInventoryStackLimit()) { - itemStack.stackSize = getInventoryStackLimit(); - } - } - - @Override - public String getInventoryName() { - return this.hasCustomInventoryName() ? this.customName : "container.iGenerator"; - } - - @Override - public boolean hasCustomInventoryName() { - return this.customName != null && this.customName.length() > 0; - } - - public void setCustomName(String name) { - this.customName = name; - } - - @Override - public int getInventoryStackLimit() { - return 64; - } - - @Override - public boolean isUseableByPlayer(EntityPlayer player) { - if (worldObj.getTileEntity(xCoord, yCoord, zCoord) != this) { - return false; - } else { - return player.getDistanceSq(xCoord + 0.5D, yCoord + 0.5D, zCoord + 0.5D) <= 64; - } - } - - // You scrubs aren't needed for anything (right now) - @Override - public void openInventory() { - } - - @Override - public void closeInventory() { - } - - @Override - public boolean isItemValidForSlot(int i, ItemStack stack) { - return false; - } - - @Override - public ItemStack decrStackSize(int i, int j) { - if (slots[i] != null) { - if (slots[i].stackSize <= j) { - ItemStack itemStack = slots[i]; - slots[i] = null; - return itemStack; - } - ItemStack itemStack1 = slots[i].splitStack(j); - if (slots[i].stackSize == 0) { - slots[i] = null; - } - - return itemStack1; - } else { - return null; - } - } - - @Override - public void readFromNBT(NBTTagCompound nbt) { - super.readFromNBT(nbt); - NBTTagList list = nbt.getTagList("items", 10); - - this.power = nbt.getLong("power"); - this.torque = nbt.getInteger("torque"); - this.heat = nbt.getInteger("heat"); - this.water = nbt.getInteger("water"); - this.lubricant = nbt.getInteger("lubricant"); - this.fuel = nbt.getInteger("fuel"); - this.burn = nbt.getInteger("burn"); - slots = new ItemStack[getSizeInventory()]; - - for (int i = 0; i < list.tagCount(); i++) { - NBTTagCompound nbt1 = list.getCompoundTagAt(i); - byte b0 = nbt1.getByte("slot"); - if (b0 >= 0 && b0 < slots.length) { - slots[b0] = ItemStack.loadItemStackFromNBT(nbt1); - } - } - } - - @Override - public void writeToNBT(NBTTagCompound nbt) { - super.writeToNBT(nbt); - nbt.setLong("power", power); - nbt.setInteger("torque", torque); - nbt.setInteger("heat", heat); - nbt.setInteger("water", water); - nbt.setInteger("lubricant", lubricant); - nbt.setInteger("fuel", fuel); - nbt.setInteger("burn", burn); - NBTTagList list = new NBTTagList(); - - for (int i = 0; i < slots.length; i++) { - if (slots[i] != null) { - NBTTagCompound nbt1 = new NBTTagCompound(); - nbt1.setByte("slot", (byte) i); - slots[i].writeToNBT(nbt1); - list.appendTag(nbt1); - } - } - nbt.setTag("items", list); - } - - @Override - public int[] getAccessibleSlotsFromSide(int p_94128_1_) { - return p_94128_1_ == 0 ? slots_bottom : (p_94128_1_ == 1 ? slots_top : slots_side); - } - - @Override - public boolean canInsertItem(int i, ItemStack itemStack, int j) { - return this.isItemValidForSlot(i, itemStack); - } - - @Override - public boolean canExtractItem(int i, ItemStack itemStack, int j) { - return false; - } - - @Override - public void updateEntity() { } - - public int getFuelScaled(int i) { - return (fuel * i) / maxFuel; - } - - public int getLubeScaled(int i) { - return (lubricant * i) / maxLubricant; - } - - public int getWaterScaled(int i) { - return (water * i) / maxWater; - } - - public int getHeatScaled(int i) { - return (heat * i) / maxHeat; - } - - public int getTorqueScaled(int i) { - return (torque * i) / maxTorque; - } - - public long getPowerScaled(long i) { - return (power * i) / maxPower; - } - - @Override - public void ffgeua(int x, int y, int z, boolean newTact) { + public void updateEntity() { - Library.ffgeua(x, y, z, newTact, this, worldObj); + if(!worldObj.isRemote) { + + } } @Override public void ffgeuaInit() { - int i = this.worldObj.getBlockMetadata(this.xCoord, this.yCoord, this.zCoord); - if(i == 5) { - ffgeua(this.xCoord + 3, this.yCoord, this.zCoord, getTact()); - ffgeua(this.xCoord - 4, this.yCoord, this.zCoord, getTact()); - } - if(i == 3) { - ffgeua(this.xCoord, this.yCoord, this.zCoord + 3, getTact()); - ffgeua(this.xCoord, this.yCoord, this.zCoord - 4, getTact()); - } - if(i == 4) { - ffgeua(this.xCoord + 4, this.yCoord, this.zCoord, getTact()); - ffgeua(this.xCoord - 3, this.yCoord, this.zCoord, getTact()); - } - if(i == 2) { - ffgeua(this.xCoord, this.yCoord, this.zCoord + 4, getTact()); - ffgeua(this.xCoord, this.yCoord, this.zCoord - 3, getTact()); - } + // TODO Auto-generated method stub + + } + + @Override + public void ffgeua(int x, int y, int z, boolean newTact) { + // TODO Auto-generated method stub + } @Override public boolean getTact() { - if (age >= 0 && age < 10) { - return true; - } - + // TODO Auto-generated method stub return false; } - - @Override - public AxisAlignedBB getRenderBoundingBox() { - return TileEntity.INFINITE_EXTENT_AABB; - } - - @Override - @SideOnly(Side.CLIENT) - public double getMaxRenderDistanceSquared() - { - return 65536.0D; - } @Override public long getSPower() { - return power; + // TODO Auto-generated method stub + return 0; } @Override public void setSPower(long i) { - this.power = i; + // TODO Auto-generated method stub + } @Override public List getList() { - return list; + // TODO Auto-generated method stub + return null; } @Override public void clearList() { - this.list.clear(); + // TODO Auto-generated method stub + } - }