From e1293271c1a728470f892d1986b20bf815c4966c Mon Sep 17 00:00:00 2001 From: HbmMods Date: Mon, 29 Aug 2016 09:56:31 +0200 Subject: [PATCH] More weapons --- assets/hbm/textures/gui/gui_nei.png | Bin 7696 -> 8390 bytes assets/hbm/textures/gui/gui_nei_shredder.png | Bin 0 -> 8038 bytes assets/hbm/textures/items/gun_pm.png | Bin 0 -> 271 bytes assets/hbm/textures/items/gun_pm_ammo.png | Bin 0 -> 268 bytes .../hbm/textures/items/gun_rpg_ammo_new.png | Bin 0 -> 259 bytes assets/hbm/textures/items/gun_rpg_new.png | Bin 0 -> 300 bytes assets/hbm/textures/items/gun_zomg.png | Bin 308 -> 310 bytes assets/hbm/textures/items/remote.png | Bin 0 -> 304 bytes assets/hbm/textures/models/At4New.png | Bin 0 -> 643 bytes assets/hbm/textures/models/ModelOSIPR.png | Bin 0 -> 764 bytes com/hbm/gui/MachineRecipes.java | 139 ++++++++-- com/hbm/handler/ShredderRecipeHandler.java | 158 +++++++++++ com/hbm/items/GunFatman.java | 12 + com/hbm/items/GunOSIPR.java | 5 + com/hbm/items/GunPM.java | 85 ++++++ com/hbm/items/GunRevolver.java | 51 ++++ com/hbm/items/GunRpg.java | 11 + com/hbm/items/GunXVL1456.java | 5 + com/hbm/items/GunZOMG.java | 5 + com/hbm/items/ItemCustomLore.java | 2 +- com/hbm/items/ItemRamManipulator.java | 88 +++++++ com/hbm/items/ModItems.java | 24 +- com/hbm/lib/Library.java | 15 ++ com/hbm/main/ClientProxy.java | 4 +- com/hbm/main/CraftingManager.java | 4 +- com/hbm/main/MainRegistry.java | 19 +- com/hbm/main/NEIConfig.java | 3 + com/hbm/render/ItemRenderOSIPR.java | 72 +++++ com/hbm/render/ItemRenderRpg.java | 15 +- com/hbm/render/ModelAt4.java | 132 ++++++++++ com/hbm/render/ModelHunterChopper.java | 2 +- com/hbm/render/ModelOSIPR.java | 247 ++++++++++++++++++ com/hbm/render/RenderRainbow.java | 2 +- 33 files changed, 1055 insertions(+), 45 deletions(-) create mode 100644 assets/hbm/textures/gui/gui_nei_shredder.png create mode 100644 assets/hbm/textures/items/gun_pm.png create mode 100644 assets/hbm/textures/items/gun_pm_ammo.png create mode 100644 assets/hbm/textures/items/gun_rpg_ammo_new.png create mode 100644 assets/hbm/textures/items/gun_rpg_new.png create mode 100644 assets/hbm/textures/items/remote.png create mode 100644 assets/hbm/textures/models/At4New.png create mode 100644 assets/hbm/textures/models/ModelOSIPR.png create mode 100644 com/hbm/handler/ShredderRecipeHandler.java create mode 100644 com/hbm/items/GunPM.java create mode 100644 com/hbm/items/ItemRamManipulator.java create mode 100644 com/hbm/render/ItemRenderOSIPR.java create mode 100644 com/hbm/render/ModelAt4.java create mode 100644 com/hbm/render/ModelOSIPR.java diff --git a/assets/hbm/textures/gui/gui_nei.png b/assets/hbm/textures/gui/gui_nei.png index 2a9f65814c6b02703e168e3ebbb6f3e7ef9ca293..f6dd77f37432c828f3053bef1a60381e4e944a1b 100644 GIT binary patch literal 8390 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 literal 7696 zcmeHsc{r5s+xI@t?V*^MIdtt<)2GNeL=ic0n^5sf8e8N*OnzRCzcl(j@6TNq20 z5m6B%yCIXEF_ti7n0asY9MAFl^LhVxj^}va%Ql>=RD8ry3X_SIX~CLT`@O0 zz$4BB0Kfqg1*xf6<4Gu7O12Y2vsKE2?IwL#MK*`%JK<2cPijvk{wQzF)kV-H)Z*VQxftH0O z$z8y9Y$2XBG*9s!Svwjhc*OI~l`El~;;Y&3xgh-Jhl4-({oryUec(w^?LFlZXV7^~ z=wy=d(dW3h{2MPTP8@f8D|Gdo0DrA^?bM8Zh}N>c{xy{9f=>`@Hk1+0xZ8v3@y2iN zUBh|?xnl~p7P2OM>M^(H#MrN;@V7lLDhi*;4e4j4 zY+NmEo}+*e)xfh=?FCh*p8-Ez76UwTLYbmEvwtib|nnMlgTH^IU8WyPz;d?C_!%k&E5jMc0^rukU0@6uG&hi#j`} zEb+|VV3Mq$XwGPO+bbbM$ z^7QrM%6J>8brnq;DYO|{L2<4XbG8x%^uh9S8s8;5uf`-Cg$i#UA4Hd=mNk~y`1Rt! z7`@*nx87Wh;fMnwS)B^qZ?i)t-!8JUb@D=YD%KaLeOEXmS~>O#)Hz3h=9y{TVu`d} zo6XioeMs&yzX6Nqh9kM^j%Ys!vJDUl>__+plMc z=oY7`omTbE_~^h`%{H%{s`_hswA-V@OS{fjBWi+O3mTT@fIDHdnlWb@!J1v%4jQ|f z70lEf_<&j7YH99fuR0}}I1@-hhL$b}Hgs-qnQJyiTGD#$6PCDqYro4qz#unl2iS7L z%mRBj9j>C!u24Lu>Nx9QPVLNe1^u!g%;JP9v0c zb{K2$IKQSVlkKh#rRjJ=`8w42&`r*Dj^G2Yu%v<>JufKp3${dKyVJWkM5F;_cjC&F-j63bt_WCKXCKO z(C=x05hW&0KT1au8cTSqj91!27t;d`(Ag7#y@vvY* zXD!6{K1C(ST`j%w_d$OdICAQpcVfH({Juwg{%2*S;SkXQzPjhRV4^ung$iuk2-xeD zP%$`Z6m)EkIb#FVNmJs`UNqTyM*2WUucRUHc-`;$3bR?~T|ITua7i6V2Ob6^A|s|U zcCDdmcY$xx8W6jNj&3bLa_#80k9ONpSTaoIbnKAYX>;IRxMel^WC7vH!D@8=@S!SK zVe(7tEXgFInP8XtYc-o+ul8;Kjl_3Z!CeU6iy7vbOIZpib)BC>cu^tBwH(PkEL_H% z|7MMJk12_99%qTYw~;2TpD9_sJcyTa?pa{X`+Rp&*!B)5FKdu`)$|jmVk255a$K`l zoG&xbjBmEo&*%8qa8)9s0ae~XX#k~~vpxjigWNho3Sg}{G-SWH3QY{O93b>wM3dv+ zpj}lnq6os(w3D}My)CO~aibG@Z_I8zgRd-5TB9YrWIt7B_0l>!8eLyJ!CBmIS=&QkIUWSyxzj*9z;J zZbdulwa__8<3^Mz9^y(PQ;Y6_&qFE!p_2t_Xe}7>3+43TM7n;)C=BO}TY&T@ly)e95?X4*!hqX!S2Xe?@4zElj$7g={Y2hA|@%*s7cDz2eI=_ro=eK28t>5obO% z`D`4n{i7~#@rw9mSRkAzA7pP??&{&OwGJaBl><>H=xNnBqCiblS92Dmesd z$zdNFFf(&W-)?-1GGIhLkCR1416;uyd@3k?YcXgp-+pungG;l~5MwA;C~~%}2gr3N z9fo{5tJqGRy;1C+G`jP`OdoTH{OJWtDXEtLnQFH6it*iF%xRu6JF?h#fTzOD%bZ7* zW>6JKV|i$Nr!SF#W*o-WvSNuqE!c2QC}Z=AX#}bHgT&%9jsOlRGms#WM$f3cO$VMHSk zBAqa&ptxc>;wuf8^h91R}JxJ61J4ApagYy zC|75X1+B8pliG6dw%D$Vr%>z=xpp!r$htr*bsdE9Ng-m5Rgh4mwDe5A(UmQpFlGJ6 z!Z4`4?ia>T1-((mfHH*R3P;WBZo@lz7zrzAaKs0Q79Oym-=3*$HF>L!M zDb>DBgOu|8-2)FA;<(!!NEt3uffk7x&tnR;ANgi2QuFMSaCGsRS7u?smpKu~y!#8H zz@5f=nJEa)J74LbW08Oz<$;sYmUMC$=w{@pK)Ky4WK}N-h?2JAa?!0r5Kr`vB5&CG zqO~ zgrKRPeIZCLp6337mrtr^D%Q4MzA4d!SN9w`?q*307x#{ko>Y4!GehfbJbPlt7A`?$ zZ!5zFUv^LBc6#o#fe@+QIOiq0`@%Jj2n%=IVk2IajC`DH1SLLoSmwkbpe0B&B17&< zcebL631EnOy<%glyW3+*RW5(>EnyV%!a3uzg{_aYXU@qRUkU`gG1&!I($tN%&Oko> z+^Gve{!Y=4M{&xINwZb~M~UO?$k|_yS2%IR)O7}zw|1vb`(CXW*D^biVw-%&SZ2!dF4_!Z`&z1{Cs#K~f& zdv;>r)vXXY?lDEt*N|S`^5lo|+Z8%v2G5JC6;X=9;;B7uX=f(`)qjT}TGA!gH(bp? zNYgq}ZS5>p|J3E2-q>fARWwnyR#ibDfwfl#!PFse%?EFqvwMfI%E*{K-FxF}^g^E% z&hqm22SV#~L}y6CMA;_e5_J9F+HrJ;w<%xmq=i-my6(HVexM}twk(P?ME&Iuxl8-; z?uP=d7&&SJ!%A%nMADL>OW=;qFT38D;Ah_z0D^#vTL=R@43}$kS>K%P3yYh$3OE)F zYG|Rx2}>SY1B;P1BRA2F!w0L-L4iUxBjC+))9CTl&R15Hf2&01VAwW)v=MVh&@gIe z2zN%C5(@a;Bi3&QJ4Ag~h+0EH&6*H^IYe)DVQ2&cbrQwp=|ZIp*>utv5DUX zc5tBaktw_qbbsIeUs4w^$~V5Wd%F1-4*XSAA`G%JdRWB9{)OVhnbn~BA*JCpQ6JMU zU`uH3r;EEB@h+LyA9RthQ7bDDMb7@I<{I{^1s=W`;{_$L5uZkM)R-4ZGj}u4VsbHG z(gltB5wGpbmX|qA4j+pd`coFQ zi)ClERu~ZD8tL(nW4chuAA-B{i+OyZfT(=#+r6iWCeTxyq#Gq>mS5W1sj)UAlAeK& zJgIF3xo8PGyURJyGGyjMv*lpcZw>%e3xb7Gm;)g(fFangLHa5i&WrmF0%0R?qVn}F zDhL5l29bm@ulgx%q`g+x@{5NjHSl^dr>C21^`^^yxD_jeK%wBv#m7&xBMSB+;YI2m z!Uh?%LVp0U_kPyFFYx3aHggX^0*@C|xnot4@~|0A$UP*W1A>#Hz8oO=>!@niP(o}#cj2Met+O!}gBPgTg6pN#>C-SZKIirnC zu8&^DT;?NVl14-AX%F?1iw$kD?bp-?m ztM_-2c0oys9^_?D<77&V;OdtNu@Ajva>spqxo1I!25-EWd8%eNT3T)aS4xTqe?f zfo-rftNRW8aU`Mg)!!Z~k37+c;{W74u9~b?4RB`qT7Pz{cpJ@QF&J|v zqDu|Z7S+4B5+KxavPD`x>g*@%3Xz}le9pnuCfFG$5(N{Q{vn`W<%SK>`YD_1mogDt z`hE-9zLmk+{&@ck&JDh;%`R)=R0_1sc8NJI}`WIyQL_=y9 z;r1-EIjOrnJWhImJ9O!6fo5WT^63lr3$M_$(_az75uSlyvw^`MJkj*%M&qgD3vkPUtpzK%j15lyVu_vYG0r94xTPUsLB;a z9Eh!CE9DeW;CyR~pF28_JtE3FOqymuoKC?-SQHT)mv_LL;26D5>nE835%n_=kY}y> zJ8_3^9D2TV!c3nLt({tky$otL*%%x9{h^8*R7L1>4W;ltX1W_RU0yURfLxm0pf~bJ z3!IADui8S+$R~Z_1QALM+nL3wd5~0{qNJN8h>eh^qPZw&dz|Wk38gW(gJ+;A{*EX4 zP9A{<4sjou!!Wdj)?KKce?t>!{FoBt#Kg@fH|~1S#y}GZ)1rM-g05k5urV1}r^@$^ zQw{EOkU_~?X+vAwtA;p&CyF=xDnrj=fKZb@ssRp~p9@R?5Aq#X%PL9?h_HFJuvNm> ztW3rp&~*l3kdUVrCD9tmS*ADIM9_q&8sM`d$Aly`*&^o!KMCZPsJ>}Y_M9*=@yrQ% zj!wemqJ31!rxdqe?9baBnpj%QbP?gKaOQLo7H{d^?)A0oD)I~Y=H|1FuVGBxA6JZt)eoxz49$3na=e}6RF!{g0 z@c=5V8KxEov^>dSx`+wkQ2Z_lz@*lBu>e-DEa`q!NHI1ItncVd7so84BZ;BaJ*Q2; zpq~oW_N5@rF=cU18;h^WnCZ(MQOJN3g6YH+YB<0Z0Mi7!sD!+RF}S`tWHJodc536G zz;-QOCYsG7N^ju)yKB`eC&0qP{tX$?w7}EF3Kl?ky~pldN_*_EiK>rbxrqFmT*&RX z9HpAwApmd#mAmr?ob+TG5P^(+AXtzruRyofn65dq_I!;tIt|) zg7j7g)f~Fdx0qnMUP!xT-`~^$9_f6w<-R$b>MLO*Ww!sy_NjY`UfLXi9r+>s_fORq zJIiQ-XWSy#bb1US`O4YzCcIVAuL5F|4tX3fSr9mSk|dt=?eHa=Ty?p8!;~t0FXKxw z$L>T9CZ_OT{RS;LtSI&J6}ye0#s3FCi+7f(Q`-0a20Oq=(Ht~eCh(fga zn77tlZ)0~yZ(mz42f)MjzMHqSn}fHAytJ&eoNPWjdp!UMPw8CMxaDWHoQnA(rWMrO zi8!u>oStELvwh93H^S^(LPGI7Bg%?4tNXL@bFE>Q-f3{0zuR=RH9|~V%2=oL+Nn3r zQ1Jw_=S{_*Ul(1!%BFEwxcW=0y@tO`L}cOX`29x|cenI9!b5{j@6M^=z2HykJ{_qS zFRD>hNK}1FTgq=8q}D>{UE|w*Ne@}|s-H?S4_c47wL%S{J>n-{G-Ttf%mg5$xugxugbPN9prpixU-u%)XozN|pp1QDf6d_QA%CI{v-#^R?u$Hj?-N7zN3N18aDpYDT1LrRnhwY+@sGmq={9OJAb*j z@v*Quq@Fw-iSF*#$MsG2_exK-{cUV%V63vs5_)M6@05R;tW@%6AV8y`U4%hxbU=DB z!1-Vd44!9(DX?pTH>Q4;F$KcPKtOy#4 zCPR)N+lSsr0u4mP9DS6aGe35}4{w@WsQa(_x)&-K4E(dSUB%%$%Ov%C|Dvz!2ePU4 zzuYA-^ihA+m>+AqeBuBkn}d%SO|3yEFBIEHU;GDCi#< zkrmzR8O(3HbTmO5V@HbUYfR_RmlrV^;ihedwv?`LJRCgd;uob~_%X z-Lk}NWaT}$F-RcpkQ+X!(AORMVCp{id`Ory#}7f2Y*^twr7!w(f%+qa%2ohTj|R7`PNNyp^}x4%x~3_35| z2&AFaW{56(E!u&>kvr5w113ubLq?r4g@`&zbWXhRv-<5R>Zo1WYP%|I`S;De&HeUP z5;gR(=xEVQQQuZF*QWx+Uj1SMg5JK^RIZ*`wJ>6kj~6NrDO+x2_>|m%aVeu}b`~?$ zcaZj-ZjI5G1a4J#hUC0@%wH`&S&ck%sVp@+*DP7t1ugMAguo+sFO6}VTw#i3G}inEtL%GOUO#xUYzM2M6DJ&__ui=N71J$@SePlou|G4ZF_9Th*iC z{x`N>U`CBbC^KRw7^D>R|M&zrqu<`)LHs6#H|6(rt{@u3FE<*&)9tH*qO%CA zhi#6lYeFg}q@v45_VTRC-F>okXy>DXulnr41@A6jrg-#>guIhtrkAW7CO_nh#L$C+ ze8xiDKCbL_KXBy~6^^*i+c3j@z1=Td$Ebe@M^x~(9djP)YE)9l+gt9zs82-o+%a@f zi&yJx^;+;2CFpvIZbw>S^-vqhl%-($&&BxxYm?g9&&he&H$w*J#J)>OHC=azO+-am)BygO01(d83fc4(n{&^i$S+1c})? zl#SOH6FiPizWLI=m^h|hJ9qIO#IO@Gy!TCVMsz$ZzMwcv#~Qx;YHQ9hxP}O|9n~#H z_;n6_?q0^d7g*}tt0^8nWDYm63>psZ^ZB6GRCj8}h%bf)f-2z{34Ra5P@YD2#aIE~ zp{?UJkbPzzc;luC;R0L8SIC`YnzdT582tm6_wF}t8K)oTfZ~G8KD<m16Yjw{G*YMQd~L!R-pR0UTkr@zhx0>qHau8Gi2i%D`EKin zKOxe&?bH*U>YsPNN?6|-*{d|UQ$4zKPerg^=WDfkbwSk@0|6b*uzkXWP1YOWfi?CD zPl!##(#C=UFICR6t=x|MDj{5Ar>waI6Z7gSto^Dcp>_LkrF*us3S=6&3>2LLe)3+5S+Q*a@1fuAk!9dTw3L6ZoRmvU; z@+Bz?QANYlk*gN#3SCPZu;;C|ek@{6z#Za+QS??Tng^9#4iV!w2wm$4vV;N8_s60y zn$ljocn!o`c86j&C(8s$a)2@BKO9m zgC^b-&pU9`Lr#cnN3%oS(EdgQNF+jzs}Rt#h|bt;9HGrxOtyhpWc>@%I6B%)odtWk zPLzHryfV}#5(r~n_X=xbLMFI>!WZ=Q_Q$@%7w`>*Dk&665f#Eab}0{f9Fh!HcWfFQ zGV!6Ww;JvD@5=sOPx?K&wpba4+TT5*3AI>^2a^-h_#M*PKjp6zV9n~0YY?^H%@FZ| zAz@@M(`o3z?if8;fXEwYQuhd+JU@R-q{Xw5@P`)c;ws!hhB`vpG3k@wkmCe+WE#DT zec&d*_;;3S5^xmy<2kZtuh|JyQX5oK|F${mM43-v4nC^SmEBIlWy!qV<9Ckp5^q@u z^>gA6dC;R@o5IdNIDMupt)=WlPOV#RtgibSj_$D;U1k|%4YXk}m&RYI%Q5 zj299YsYLq-2vFcKuHz5>w59Kw## zWTo9H<_wlXrM`~v>1NdmJywuea;1Qy%!$ItARcbZkQCnfu8eveq^YzPdWXja-G0;D zs)Q}#SZ{xiwy8C5=@xQ%tl;~plmn*z5<3x!X3XxtSh<)e8QWD+>2$y6RnN1G6^LKM zH!R`TX<3rUThE7`ox*-4I-B{%YJdqaEOrGmjhnQ|86q({3VSd7dV^Dec>0bB3Dgbp zLj`x_7?IzyoUpdg**7PFSqPXh-o-nyZbz}FupE`0@_)@dvlHLRu z8akPspY?RV`kJ;m%S-x*nc%nkAiEf!^VH3E^7_7R`cogF`ym->!xM17M;bFQ)}52; zb2!EdYBeB4sa^bNFI_$dSlLEC9^QNc#Xi;6sJ9I9OBH6W7=Vva998zi!SZ)6-f9I> z|GZvBCLp)Ag{5bD7T#tr14+t+1Tb^2dYeQ>_BN!*c_xQ zyV;0P$5%1aTKpQKNBER~wYUnEc!TfxzwBy_@ z(Yyh^v<6*QcR&pysuZRszmV9@4odt zQ-+Rwh11cnlYi>0^33Dy;`#U^T1e^%l8zo&n^{iqv6SUz^ahAqkEMw5sOc>Z7NoOa zPXxyNF+Vyb3g;0-J>p~3!;ye(K`lThT7|JFMHQ9-E8A{%Y2C`j>ldwGINR8|iDo~a zAlH(*QQp}2R}-?Hh~U?&tGd*xw7y<`#4?Z`Z;i1ARyZ5qh9C$v?@l1zY--@(M2e%Z z#YPDQ`h!+y^P@pccBNc`+JX7B3>k#lL~RVDMeS3YZWXf_Q ziWJlo_O0a0X2J}I@OR%TGX3#kVmF+7C?>ScJ$j{Y;um3SE!PT3JAlomDKN_>PWODI zJLYmI9^w6oJF#(f(H~HXJRKXmc?MAGZY2S0ni*&bRU$uIn^PfQ;wkLOdQC;Q+?Cxq zpDlqw?dMr!Q|F^3QL!k?1>O&4h7riyl6XYCQv|~3Wm@OStp&oZZP5HUS^Xk zk9H{PqALZ53NDUH>%Uce<}o7XTHV2yFlSk(p_lXBKDgN{c5Oi|{nrs}NDyv?keWQ* z)yeP$u_1>F@?Q4Dk3~`1&sXhLBWSMXB6tE@!;>ejka}fc_&nAYkUsQNV7N&s?JUXJ zrFAB$WW{61@hy~Wgx*tTCpzUlN9$-*(QS(x{Em;>Cvh?yG;Tkj8EFjLIA0mey8o*; z@mQ|}gx>D1v-@WR#e~K6vFxhY@1+u2-H?oqOqdB|F%P0W+;;Ic5H&JDX7#9qvAJQG z9}UyJF&i+_4}E=xjmiwRhjT0{zI4gym zeMpSJ_33Gt`xeL%RZH~j9ViG@qJe&S#k+B^G0Zv-qz8v2*iH^TMR`r7AeHth1m-`c z{ek^EHkEu8OO^z;^etbC7-}f1E=ah(TU}vchHTRoo(5R0Yq=D)+W7LumDO?Zo$mI8rTir#!rep8!~Ff0c~g^qJHY#mlgNS(<}nR7aQWJ~}fV z4){T3tLWDP_yAG00I1h7!~JxC6Sn5yQgqgKvC08;KDVE%clK3Z!VCQa6H2;fU+HTs zt>o205&8j4AdmMrK_Z%IU{_Y|ICYUTnznU5jB%?F;^|Yr1x!w29hTN>L~CUjdk~CC zd#Zp1v}TXDv%HhBUKT)ML@$Ri`^j`N)E7dQf75lXCIWzYsT54b-i5NknR6^V|34=HHLO9PWNY?gkXufxrLjJp z#^Y#hN3Da`o>=cqqyd|N$MhI!%l=cfI>}1~7TItx$%SNsXkj;=Wjizn>zkFz?oa#J z4o?onyA6t&VeELi%M=T@eTg%RE5U|*p*w2_ss6G62;3|z7Tom*y7N)K!q=k#l%FV~ zYB!NZ4dCRJE!>NZIScjT%E&j*e+oYGgDqc8j;T#xU&Z0K zf6w2;OGA2_*E|@Mq3HMc=WbT(=D;R%%;r3kO;YW&Qx)}^pT97mj*8Z(Yg1@i*L#aH zHkUTZ7y8(KB2P--Kx{-%d45T~lbLzu*=_k{F4vFzUE-k%OGcfLz_ryR%>J{oiUgSf z@`pbb{DGrAQ=%eGG^LYg2y8KPka0D3KpOH682=&jEHhdK(%|oyD}{S-Lxosebk=#P z9b0yF{c8IkP;L(K)oSOu)%1MtC9%u~MqKCTZeG^?rabTErD-l+3-yaXcK~Gs zRv2Qnj^w79Sd(??;cDNw7-Z{k>xAXSft2PL8I=> z92wcpeGjXmb=4`7#^cg!1(358CI%+J5`#JaWnuR8y63%S1FW22MR3noaujlt(-1J^ z>oP}D;A&7bO6Q1kkA2yy_#JcUX8h92a$R1MEnWAdRY*Zb-gI+7P|_n*I+IPBjaLV* znDd`X(KSEOa?yP}FZm&2&yv`@&)&5sxh+erOo7#Nk3V)7b}u~YtfKoVlx+HupL!Qv zd9oKTb!S%pq=hfrkSIbALfVmEjsmMf2_Yq0w4!>Vxn_08AGqeaz?8v)r3(#?k}*Fa zd|isBr%$?d;PfcsHMH`d`r<+%1y~ z4;IFzFd*%wj`%{Z(9W>>ve|u(rV9%)eI>K&Wg<81Y0+uO14-J+sNP93bN- z9QDmkmgxIRhgl0TPpH;Uz)p3ld$?#{$I8{Mt z#3L&NL2xIwOX;UOqCt%cpQ5IQ(5`~>XX(&he5jGAM*+|hJ<zlK0^!))-Q`KsVb z*=VNtsX~hp-aCq_8v}($d3p)VjeU@TKL@(}W>VZ{9k(8x+nG!PJTAZ#>Ei;}Yi{1_ zvBTtA<&B{^$Wc#C?i>3PbMktx_X%3b-`dg}8>|qj(e`LxM7^AOy5c00q}V@e_sa%j2C4 zvM8^Y3+s_`>g-Tq?$G;3SM86hm&`#F;C3GdI@#7Vv3Qp@-C!fC`pv%n@+9JAa8Yc{ z(E^;8?%NxePKW;;;xd&IL7G3{m=Z18Yy@w4HBo;sdhMg(P`fx`H3olCC1GahuhTIn zk>>U{nk~Uidu6gf9B2^|uLyK}O@ep@18UG3u#B)FE6C9Wh&VVZSQQ4? zhbT*6uV8tfoMFT_+eB)tgm9fJ)d#)c7Itf>DJQCk74*scU%s>oFiE(!xpqcIEwsv{ zYaK*DFUmw%aVG;9KY|K821W8gIAOA!$jtgT4767hPw>3&*}V=tkPebne!l%V=-I#Y z1&?H6DGtxC!s0LE!B%Hn9T04foxT=0y#FFgm7O6@5Xa6JEVEdV}OtWAoS@@AW-{;N>7l#YJwX{XN=7q#Ny4 zH;ZMk^H{RKM@#1@hseSCt6S}!%vZgWNUy06gv2nYhy;sg6fmjQs5-x&h00iF)XWRQ zS$;xm>J$}n8L_^%L?=5gfDX9HR{)Fw;g$v>H)`jlqNL(zq{Qq$VzxDkLp} zwyZh41_wUQ#VFm@kIVPGvu#f)8kw6!feL9-QSyBfgsKK3BJMp?T)lEYugtUVI#DSb zNX7%LZYcPM;LiWfMX1Q*heiax>(sbXB!_7Bi!=8h^Iy9zVAKtjig_*l?md&4$XUy) zIvl0Qn^h5U{LYWxdmk2)>VoPloVsq7!4%i6_40#LT=By}Z;C1rt33 zJwt=FTwDi$it0UG978Ppm-ZX-9Z=w5o>{?Yto^?}F)Ey^Yc_+Ib*GG zLV25lq`0d0OpalnYNE1(vPC^67*DGFskM-SlSQ&qdy`POLqo8tz#ElBNzX6$XK!Gc zaHBL#C_Lhes#ceZh?3vy3m>}fTIE%=PQ5X&&F_Vk7+2+zm}v$pYR{^z3kN!d!PC{x JWt~$(69CR;R}}yN literal 0 HcmV?d00001 diff --git a/assets/hbm/textures/items/gun_pm_ammo.png b/assets/hbm/textures/items/gun_pm_ammo.png new file mode 100644 index 0000000000000000000000000000000000000000..3dc23229a391fa6a15837dbbd16fa797f7f47b45 GIT binary patch literal 268 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBugD~Uq{1qucLCF%=h?3y^w370~qEv>0#LT=By}Z;C1rt33 zJwt=FTwDi$ifTMv978Ppmrgv$*N$I?ba z|73nf_spdejGCrAiEzI??V;@}s|i90KkU+Xe_JW7r263Pk?WmP_RN+3vMqzfq2a!Q z%!GRjW4F7xg`7P;Dcv`;3rttfX@9XciCj;HV;OXk; Jvd$@?2>^sBVcq}$ literal 0 HcmV?d00001 diff --git a/assets/hbm/textures/items/gun_rpg_ammo_new.png b/assets/hbm/textures/items/gun_rpg_ammo_new.png new file mode 100644 index 0000000000000000000000000000000000000000..188aa1311f80554060c4f9ea99cb23555fb2f17e GIT binary patch literal 259 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Ea{HEjtmSN`?>!lvI6;>1s;*b z3=DjSK$uZf!>a)(C|TkfQ4*Y=R#Ki=l*&+$n3-3imzP?iV4`QBXK1jNi|YVTQG=(8 zV~ByIlq85!z4d8?!lvI6;>1s;*b z3=DjSK$uZf!>a)(C|TkfQ4*Y=R#Ki=l*&+$n3-3imzP?iV4`QBXK1jNi|YVT(MnGj z#}EtuVHXC`vFX%uZx$FgU?b)3%_%!R*kD zBT`L@42O^GVrgYQykrNhT8iZ{CT(k&ILM}!PC{xWt~$(69Cn)XT1Ob literal 0 HcmV?d00001 diff --git a/assets/hbm/textures/items/gun_zomg.png b/assets/hbm/textures/items/gun_zomg.png index 22e1afb1e0ac66d926bcbff436e9d8f90f841680..b0e443d764a6348dae172ae8209ebe3c9f76e2d9 100644 GIT binary patch delta 225 zcmV<703QFe0=5E>B#|)~3c>&Y4#EKyC`y2lQz(D4NklUMM|lsd*dDB zu(F6T_VT-_*6MQ0I1rIbDGf=3ZN4%NNuXxU|7c=w$Z zmmmt|tbH2d5`nzd7&@X2?VD@-gyaxH5B>Le--H!pfvg(!O*nyQhi*+zSXsEo-)Ywi XM6?Zl8*eD#00000NkvXXu0mjfQ8Zu& diff --git a/assets/hbm/textures/items/remote.png b/assets/hbm/textures/items/remote.png new file mode 100644 index 0000000000000000000000000000000000000000..18abcca6bbb255d2f220c9187647df0b4eb09da5 GIT binary patch literal 304 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBugD~Uq{1qucLCF%=h?3y^w370~qEv>0#LT=By}Z;C1rt33 zJwt=FTwDi$iWYdfIEGmGFP*fJ^RR({YiQd9t);UYxbqkAn)J*GI=teP!M&r+F<)5O zAAMooxuk+)|L*^+ha6r0HF@!eG$rrd)_mS=1&ij=vJW>orYan}!DlDEP-we$S=vIO zgHhS~6>kH5>y9_cJny?PgYc*m~;y#1Cu=RVU_U8o74@-OAwU>gTe~DWM4fPx#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D0rp8mK~!i%?N~ia z1VIcPw6zrO3K6su4z?7o5{oVD7O@bn(ozt_>aek}RV>BcQt>wk{s+MyGxD+t#5h5V zyXD;6gOE&SZZHIXf8kdtv@3wiD5u(|^XNCHqvXiHWT6>a@I9nI(c#_Q8I zVu9xAmY6$`?WSpHnU-{^O3>EN)BSk`=x10P{XAVaz|x<^K?rg$udOcad2L&*Z4PUR z&VcG+1$b31RU6v+Q9Y~xugaxrLt8(G)g2K0EUrSHj)1mD*z41_Y$cv+t#EB0t@okUZWT=i6yR!rd+qFy7+0`F|nAh5YsT0SR}zK;>6f zdzOIvtHXE+2)6}v#Wit}%hP=l?ZX&U9EA0kT*=3eSzLe+n`A?z>L9+oxt^YNbmnYyebcV`y$=FHUu9WpXb;bTp*%dgC299tHpa literal 0 HcmV?d00001 diff --git a/assets/hbm/textures/models/ModelOSIPR.png b/assets/hbm/textures/models/ModelOSIPR.png new file mode 100644 index 0000000000000000000000000000000000000000..ddc1ef3a37f3b70e9a2c68bdf5b8b7c23fa93281 GIT binary patch literal 764 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=Ea{HEjtmSN`?>!lvI6;>1s;*b z3=DjSK$uZf!>a)(C|TkfQ4*Y=R#Ki=l*&+$n3-3imzP?iV4`QBXK1jNi|YUb15>4^ zi(^Pd+}mjv^9~zuxc>fcf0t7`!u-XqgAzjJw~V!NSQyDg#DNakRc_MVp5RTrA@k4e=*EH5ludse2XzZ4__sH>t{+Weh*PLs3zRi$K zPqaO9JF!3FBKL0XJm%^-5eH?BmmU27+i=~2^Okp*Vx%5({hD)F_rOxabBn(3`(Rj* z*|Yh;yx2+AJii4@xwq+@o|??=Hn;U_!nDi#tduOzCihI3C2CaFlIg85>9Wl+j+K#$ zi`{2zW5FghbLn@93hA7RBat5-o1VQN-N5f;yn*}n{_PLGXml7KsN1%G2kUZo$2pAO zHvc`UYhlavh^Oj)V|0Uea*Si@dxIS&$3#QE@h$G(6c%vvxAKmNw!pCW?V0wu-A}&q zBy+F)eCd5$gkSX@*H2Y#8(XhbW|p&bhO!ntl~F$L5qI8T+XO59w|xp5S2?Vkll(;T zEGw`*FRSMWjIiv<}JUq(E*rJ89ZJ6T-G@yGywpaiBkjs literal 0 HcmV?d00001 diff --git a/com/hbm/gui/MachineRecipes.java b/com/hbm/gui/MachineRecipes.java index 651a063df..1d7b1fed7 100644 --- a/com/hbm/gui/MachineRecipes.java +++ b/com/hbm/gui/MachineRecipes.java @@ -2,8 +2,10 @@ package com.hbm.gui; import java.util.ArrayList; import java.util.HashMap; +import java.util.HashSet; import java.util.List; import java.util.Map; +import java.util.Set; import com.hbm.blocks.ModBlocks; import com.hbm.items.ModItems; @@ -523,23 +525,35 @@ public class MachineRecipes { //Makes the OreDict easily accessible. Neat. + System.out.println("Loading all items and blocks, please wait..."); + System.out.println("This process normally takes very long due to the incompetence of other modders I have to compensate for. Sorry for the inconvenience."); + for (Object item : GameData.getItemRegistry()) { List list = new ArrayList(); int[] array; if (item instanceof Item) { + + int x = 1; + //if(((Item)item).getHasSubtypes()) + // x = 126; - ItemStack stack = new ItemStack((Item) item); - array = OreDictionary.getOreIDs(stack); + for(int j = 0; j < x; j++) + { + ItemStack stack = new ItemStack((Item) item, 1, j); + array = OreDictionary.getOreIDs(stack); - for (int i = 0; i < array.length; i++) { - //if (!OreDictionary.getOreName(array[i]).equals("Unknown")) { + for (int i = 0; i < array.length; i++) { + // if + // (!OreDictionary.getOreName(array[i]).equals("Unknown")) + // { list.add(OreDictionary.getOreName(array[i])); - //} - } - //if(list.size() > 0) + // } + } + // if(list.size() > 0) theWholeThing.add(new DictCouple(stack, list)); + } } } @@ -549,23 +563,44 @@ public class MachineRecipes { int[] array; if (block instanceof Block) { - - ItemStack stack = new ItemStack((Block) block); - array = OreDictionary.getOreIDs(stack); - - for (int i = 0; i < array.length; i++) { - //if (!OreDictionary.getOreName(array[i]).equals("Unknown")) { - list.add(OreDictionary.getOreName(array[i])); - //} - } + Item item = Item.getItemFromBlock((Block)block); - //if(list.size() > 0) - theWholeThing.add(new DictCouple(stack, list)); + int x = 1; + //if(item != null && item.getHasSubtypes()) + // x = 16; + + for(int j = 0; j < x; j++) + { + ItemStack stack = new ItemStack((Block) block, 1, j); + array = OreDictionary.getOreIDs(stack); + + for (int i = 0; i < array.length; i++) { + // if + // (!OreDictionary.getOreName(array[i]).equals("Unknown")) + // { + list.add(OreDictionary.getOreName(array[i])); + // } + } + + // if(list.size() > 0) + if(!doesExist(stack)) + theWholeThing.add(new DictCouple(stack, list)); + } } } System.out.println("Added " + theWholeThing.size() + " elements from the Ore Dict!"); } + + public boolean doesExist(ItemStack stack) { + + for(DictCouple dic : theWholeThing) { + if(dic.item.getItem() == stack.getItem()) + return true; + } + + return false; + } public void addRecipes() { @@ -652,17 +687,41 @@ public class MachineRecipes { { if(recipes.get(i) != null && recipes.get(i).input != null && - recipes.get(i).input.getItem() != null && recipes.get(i).output != null && inp != null && - inp.getItem() != null && outp != null && - recipes.get(i).input.getItem().equals(inp.getItem())) - //TODO: check if i didn't break anything + recipes.get(i).input.getItem() == inp.getItem() && + recipes.get(i).input.getItemDamage() == inp.getItemDamage()) recipes.get(i).output = outp; } } + public void removeDuplicates() { + List newList = new ArrayList(); + + for(ShredderRecipe piv : recipes) + { + boolean flag = false; + + if(newList.size() == 0) + { + newList.add(piv); + } else { + for(ShredderRecipe rec : newList) { + if(piv != null && rec != null && piv.input != null && rec.input != null && rec.input.getItem() != null && piv.input.getItem() != null && rec.input.getItemDamage() == piv.input.getItemDamage() && rec.input.getItem() == piv.input.getItem()) + flag = true; + if(piv == null || rec == null || piv.input == null || rec.input == null) + flag = true; + } + } + + if(!flag) + { + newList.add(piv); + } + } + } + public void PrintRecipes() { /*for(int i = 0; i < recipes.size(); i++) { System.out.println("Recipe #" + i + ", " + recipes.get(i).input + " - " + recipes.get(i).output); @@ -679,13 +738,13 @@ public class MachineRecipes { }*/ - for (int j = 0; j < recipes.size(); j++) { + /*for (int j = 0; j < recipes.size(); j++) { if (recipes.get(j) != null && recipes.get(j).input != null && recipes.get(j).output != null && recipes.get(j).input.getItem() != null && recipes.get(j).output.getItem() != null) System.out.println(recipes.get(j).input + " | " + recipes.get(j).output); else System.out.println(recipes.get(j)); - } + }*/ System.out.println("TWT: " + theWholeThing.size() + ", REC: " + recipes.size()); } @@ -703,7 +762,7 @@ public class MachineRecipes { public static List findWithStack(ItemStack stack) { for(DictCouple couple : theWholeThing) { - if(couple.item.equals(stack)); + if(couple.item == stack); return couple.list; } @@ -718,7 +777,9 @@ public class MachineRecipes { public static ItemStack getShredderResult(ItemStack stack) { for(ShredderRecipe rec : recipes) { - if(stack != null && rec.input.getItem().equals(stack.getItem())) + if(stack != null && + rec.input.getItem() == stack.getItem() && + rec.input.getItemDamage() == stack.getItemDamage()) return rec.output.copy(); } @@ -729,9 +790,33 @@ public class MachineRecipes { Map recipes = new HashMap(); for(int i = 0; i < this.recipes.size(); i++) { - recipes.put(((ShredderRecipe)recipes.get(i)).input, ((ShredderRecipe)recipes.get(i)).output); + if(this.recipes.get(i) != null && this.recipes.get(i).output.getItem() != ModItems.dust && this.recipes.get(i).output.getItem() != ModItems.scrap) + recipes.put(((ShredderRecipe)this.recipes.get(i)).input, getShredderResult(((ShredderRecipe)this.recipes.get(i)).input)); } return recipes; } + + public ArrayList getBatteries() { + ArrayList fuels = new ArrayList(); + fuels.add(new ItemStack(ModItems.battery_generic)); + fuels.add(new ItemStack(ModItems.battery_advanced)); + fuels.add(new ItemStack(ModItems.battery_schrabidium)); + fuels.add(new ItemStack(ModItems.fusion_core)); + fuels.add(new ItemStack(ModItems.energy_core)); + return fuels; + } + + public ArrayList getBlades() { + ArrayList fuels = new ArrayList(); + fuels.add(new ItemStack(ModItems.blades_advanced_alloy)); + fuels.add(new ItemStack(ModItems.blades_aluminium)); + fuels.add(new ItemStack(ModItems.blades_combine_steel)); + fuels.add(new ItemStack(ModItems.blades_gold)); + fuels.add(new ItemStack(ModItems.blades_iron)); + fuels.add(new ItemStack(ModItems.blades_steel)); + fuels.add(new ItemStack(ModItems.blades_titanium)); + fuels.add(new ItemStack(ModItems.blades_schrabidium)); + return fuels; + } } diff --git a/com/hbm/handler/ShredderRecipeHandler.java b/com/hbm/handler/ShredderRecipeHandler.java new file mode 100644 index 000000000..b87c77c54 --- /dev/null +++ b/com/hbm/handler/ShredderRecipeHandler.java @@ -0,0 +1,158 @@ +package com.hbm.handler; + +import static codechicken.lib.gui.GuiDraw.drawTexturedModalRect; + +import java.awt.Rectangle; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import java.util.Map; + +import com.hbm.gui.GUIMachineReactor; +import com.hbm.gui.GUIMachineShredder; +import com.hbm.gui.MachineRecipes; +import com.hbm.handler.ReactorRecipeHandler.Fuel; +import com.hbm.handler.ReactorRecipeHandler.SmeltingSet; +import com.hbm.lib.RefStrings; + +import codechicken.nei.NEIServerUtils; +import codechicken.nei.PositionedStack; +import codechicken.nei.api.IOverlayHandler; +import codechicken.nei.api.IRecipeOverlayRenderer; +import codechicken.nei.recipe.GuiRecipe; +import codechicken.nei.recipe.ICraftingHandler; +import codechicken.nei.recipe.TemplateRecipeHandler; +import codechicken.nei.recipe.TemplateRecipeHandler.RecipeTransferRect; +import net.minecraft.client.gui.inventory.GuiContainer; +import net.minecraft.inventory.Container; +import net.minecraft.item.ItemStack; + +public class ShredderRecipeHandler extends TemplateRecipeHandler { + + public static ArrayList fuels; + + public class SmeltingSet extends TemplateRecipeHandler.CachedRecipe + { + PositionedStack input; + PositionedStack result; + + public SmeltingSet(ItemStack input, ItemStack result) { + input.stackSize = 1; + this.input = new PositionedStack(input, 83 - 27 - 18 + 1, 5 + 18 + 1); + this.result = new PositionedStack(result, 83 + 27 + 18 + 1, 5 + 18 + 1); + } + + public List getIngredients() { + return getCycledIngredients(cycleticks / 48, Arrays.asList(new PositionedStack[] {input})); + } + + public List getOtherStacks() { + List stacks = new ArrayList(); + stacks.add(fuels.get((cycleticks / 24) % fuels.size()).stack0); + stacks.add(fuels.get((cycleticks / 24) % fuels.size()).stack1); + return stacks; + } + + public PositionedStack getResult() { + return result; + } + } + + public static class Fuel + { + public Fuel(ItemStack ingred) { + + this.stack0 = new PositionedStack(ingred, 83 + 1, 5 + 1, false); + this.stack1 = new PositionedStack(ingred, 83 + 1, 5 + 36 + 1, false); + } + + public PositionedStack stack0; + public PositionedStack stack1; + } + + @Override + public String getRecipeName() { + return "Shredder"; + } + + @Override + public String getGuiTexture() { + return RefStrings.MODID + ":textures/gui/gui_nei_shredder.png"; + } + + public void loadCraftingRecipes(String outputId, Object... results) { + if ((outputId.equals("shredding")) && getClass() == ShredderRecipeHandler.class) { + Map recipes = MachineRecipes.instance().getShredderRecipes(); + for (Map.Entry recipe : recipes.entrySet()) { + this.arecipes.add(new SmeltingSet((ItemStack)recipe.getKey(), (ItemStack)recipe.getValue())); + } + } else { + super.loadCraftingRecipes(outputId, results); + } + } + + public void loadCraftingRecipes(ItemStack result) { + Map recipes = MachineRecipes.instance().getShredderRecipes(); + for (Map.Entry recipe : recipes.entrySet()) { + if (NEIServerUtils.areStacksSameType((ItemStack)recipe.getValue(), result)) + this.arecipes.add(new SmeltingSet((ItemStack)recipe.getKey(), (ItemStack)recipe.getValue())); + } + } + + public void loadUsageRecipes(String inputId, Object... ingredients) { + if ((inputId.equals("shredding")) && getClass() == ShredderRecipeHandler.class) { + loadCraftingRecipes("shredding", new Object[0]); + } else { + super.loadUsageRecipes(inputId, ingredients); + } + } + + public void loadUsageRecipes(ItemStack ingredient) { + Map recipes = MachineRecipes.instance().getShredderRecipes(); + for (Map.Entry recipe : recipes.entrySet()) { + if (NEIServerUtils.areStacksSameType(ingredient, (ItemStack)recipe.getKey())) + this.arecipes.add(new SmeltingSet((ItemStack)recipe.getKey(), (ItemStack)recipe.getValue())); + } + } + + @Override + public Class getGuiClass() { + return GUIMachineShredder.class; + } + + @Override + public void loadTransferRects() { + transferRects.add(new RecipeTransferRect(new Rectangle(74, 23, 24, 18), "shredding")); + } + + @Override + public void drawExtras(int recipe) { + /*//Top + drawTexturedModalRect(83, 5, 0, 140, 18, 18); + //Bottom + drawTexturedModalRect(83, 5 + 36, 0, 140, 18, 18); + //Right + drawTexturedModalRect(83 + 27 + 18, 5 + 18, 0, 140, 18, 18); + //Left + drawTexturedModalRect(83 - 27 - 18, 5 + 18, 0, 140, 18, 18); + //Progress + drawTexturedModalRect(83 - 3, 5 + 19, 100, 102, 24, 16); + //Power + drawTexturedModalRect(83 - (18 * 4) - 9, 5, 0, 86, 18, 18 * 3);*/ + + drawProgressBar(83 - (18 * 4) - 9 + 1, 6, 36, 86, 16, 18 * 3 - 2, 480, 7); + + drawProgressBar(83 - 3, 5 + 19, 100, 118, 24, 16, 48, 0); + } + + @Override + public TemplateRecipeHandler newInstance() { + if (fuels == null || fuels.isEmpty()) + fuels = new ArrayList(); + for(ItemStack i : MachineRecipes.instance().getBlades()) + { + fuels.add(new Fuel(i)); + } + return super.newInstance(); + } +} diff --git a/com/hbm/items/GunFatman.java b/com/hbm/items/GunFatman.java index 8c481a25c..fe4920149 100644 --- a/com/hbm/items/GunFatman.java +++ b/com/hbm/items/GunFatman.java @@ -1,5 +1,7 @@ package com.hbm.items; +import java.util.List; + import com.google.common.collect.Multimap; import com.hbm.entity.EntityMiniNuke; import com.hbm.entity.EntityRocket; @@ -146,4 +148,14 @@ public class GunFatman extends Item { multimap.put(SharedMonsterAttributes.movementSpeed.getAttributeUnlocalizedName(), new AttributeModifier(field_111210_e, "Weapon modifier", (double)-0.3, 1)); return multimap; } + + @Override + public void addInformation(ItemStack itemstack, EntityPlayer player, List list, boolean bool) { + + list.add("When normal nukes aren't enough..."); + list.add(""); + list.add("Ammo: Mini Nukes"); + list.add("Damage: 1000"); + list.add("Creates small nuclear explosion."); + } } diff --git a/com/hbm/items/GunOSIPR.java b/com/hbm/items/GunOSIPR.java index fe9f26bf2..e99de0150 100644 --- a/com/hbm/items/GunOSIPR.java +++ b/com/hbm/items/GunOSIPR.java @@ -108,6 +108,11 @@ public class GunOSIPR extends Item { list.add("to shoot,"); list.add("sneak to shoot a"); list.add("dark energy ball!"); + list.add(""); + list.add("Ammo: Dark Energy Plugs"); + list.add("Secondary Ammo: Combine Ball"); + list.add("Damage: 35 - 45"); + list.add("Secondary Damage: 1000"); } } diff --git a/com/hbm/items/GunPM.java b/com/hbm/items/GunPM.java new file mode 100644 index 000000000..1c0069b64 --- /dev/null +++ b/com/hbm/items/GunPM.java @@ -0,0 +1,85 @@ +package com.hbm.items; + +import java.util.List; +import java.util.Random; + +import com.hbm.entity.EntityBullet; +import com.hbm.entity.EntityCombineBall; + +import net.minecraft.enchantment.Enchantment; +import net.minecraft.enchantment.EnchantmentHelper; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.EnumAction; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.world.World; +import net.minecraftforge.event.entity.player.ArrowNockEvent; + +public class GunPM extends Item { + + Random rand = new Random(); + + public GunPM() + { + this.maxStackSize = 1; + this.setMaxDamage(10000); + } + + @Override + public EnumAction getItemUseAction(ItemStack par1ItemStack) { + return EnumAction.bow; + } + + public int getMaxItemUseDuration(ItemStack p_77626_1_) { + return 72000; + } + + @Override + public ItemStack onItemRightClick(ItemStack p_77659_1_, World p_77659_2_, EntityPlayer p_77659_3_) { + ArrowNockEvent event = new ArrowNockEvent(p_77659_3_, p_77659_1_); + { + p_77659_3_.setItemInUse(p_77659_1_, this.getMaxItemUseDuration(p_77659_1_)); + } + + return p_77659_1_; + } + + public void onUsingTick(ItemStack stack, EntityPlayer player, int count) + { + World world = player.worldObj; + + boolean flag = player.capabilities.isCreativeMode + || EnchantmentHelper.getEnchantmentLevel(Enchantment.infinity.effectId, stack) > 0; + if ((player.capabilities.isCreativeMode || player.inventory.hasItem(ModItems.gun_osipr_ammo)) + && count % 3 == 0) { + EntityBullet entityarrow = new EntityBullet(world, player, 3.0F, 35, 45, false, false); + entityarrow.setDamage(100 + rand.nextInt(50)); + + world.playSoundAtEntity(player, "random.explode", 1.0F, 1.5F + (rand.nextFloat() / 4)); + + if (flag) { + entityarrow.canBePickedUp = 2; + } else { + player.inventory.consumeInventoryItem(ModItems.gun_osipr_ammo); + } + + if (!world.isRemote) { + world.spawnEntityInWorld(entityarrow); + } + } + } + + @Override + public int getItemEnchantability() { + return 0; + } + + @Override + public void addInformation(ItemStack itemstack, EntityPlayer player, List list, boolean bool) { + + list.add("EVERYBODY HAS TO DIE!"); + list.add(""); + list.add("Ammo: x"); + list.add("Damage: x - x"); + } +} diff --git a/com/hbm/items/GunRevolver.java b/com/hbm/items/GunRevolver.java index faa64ae78..c51dbb8e6 100644 --- a/com/hbm/items/GunRevolver.java +++ b/com/hbm/items/GunRevolver.java @@ -1,5 +1,6 @@ package com.hbm.items; +import java.util.List; import java.util.Random; import net.minecraft.enchantment.Enchantment; @@ -199,4 +200,54 @@ public class GunRevolver extends Item { return 1; } + + @Override + public void addInformation(ItemStack itemstack, EntityPlayer player, List list, boolean bool) { + + if(this == ModItems.gun_revolver_iron) + { + list.add("Cheap."); + list.add(""); + list.add("Ammo: Iron Bullets"); + list.add("Damage: 5 - 15"); + } + if(this == ModItems.gun_revolver) + { + list.add("I feel like a cowboy!"); + list.add(""); + list.add("Ammo: Lead Bullets"); + list.add("Damage: 10 - 25"); + } + if(this == ModItems.gun_revolver_gold) + { + list.add("GoldenEye would be proud!"); + list.add(""); + list.add("Ammo: Golden Bullets"); + list.add("Damage: 20 - 30"); + } + if(this == ModItems.gun_revolver_lead) + { + list.add("Made from lead for your safety!"); + list.add(""); + list.add("Ammo: Atomic Bullets"); + list.add("Damage: 5 - 15"); + list.add("Bullets are radioactive."); + } + if(this == ModItems.gun_revolver_schrabidium) + { + list.add("Kills everyone and everything."); + list.add(""); + list.add("Ammo: Schrabidium Bullets"); + list.add("Damage: 10000 - 100000"); + list.add("Sets enemy's health to zero."); + } + if(this == ModItems.gun_revolver_cursed) + { + list.add("You're dead."); + list.add(""); + list.add("Ammo: Steel Bullets"); + list.add("Damage: 25 - 40"); + list.add("33% chance of user being withered."); + } + } } diff --git a/com/hbm/items/GunRpg.java b/com/hbm/items/GunRpg.java index 55c92d320..e0ba9f777 100644 --- a/com/hbm/items/GunRpg.java +++ b/com/hbm/items/GunRpg.java @@ -1,5 +1,7 @@ package com.hbm.items; +import java.util.List; + import com.hbm.entity.EntityMiniNuke; import com.hbm.entity.EntityRocket; @@ -142,4 +144,13 @@ public class GunRpg extends Item { return 1; } + + @Override + public void addInformation(ItemStack itemstack, EntityPlayer player, List list, boolean bool) { + + list.add("Kaboom!"); + list.add(""); + list.add("Ammo: Rockets"); + list.add("Projectiles explodes on impact."); + } } \ No newline at end of file diff --git a/com/hbm/items/GunXVL1456.java b/com/hbm/items/GunXVL1456.java index b09f093a9..2f211746d 100644 --- a/com/hbm/items/GunXVL1456.java +++ b/com/hbm/items/GunXVL1456.java @@ -165,6 +165,11 @@ public class GunXVL1456 extends Item { list.add("to shoot tauons,"); list.add("sneak to charge up for"); list.add("stronger shots!"); + list.add(""); + list.add("Ammo: Depleted Uranium"); + list.add("Damage: 35 - 45"); + list.add("Charged Damage: 40 - 400"); + list.add("Projectiles penetrate walls."); } } diff --git a/com/hbm/items/GunZOMG.java b/com/hbm/items/GunZOMG.java index 99e263624..6ae964ea9 100644 --- a/com/hbm/items/GunZOMG.java +++ b/com/hbm/items/GunZOMG.java @@ -202,5 +202,10 @@ public class GunZOMG extends Item { } else { list.add("Gun not validated."); } + list.add(""); + list.add("Ammo: None (Requires Validation)"); + list.add("Damage: 35 - 45"); + list.add("Energy Damage: 10000 - 100000"); + list.add("Energy projectiles destroy blocks."); } } diff --git a/com/hbm/items/ItemCustomLore.java b/com/hbm/items/ItemCustomLore.java index 4a1ac9fbb..7a80fe56f 100644 --- a/com/hbm/items/ItemCustomLore.java +++ b/com/hbm/items/ItemCustomLore.java @@ -361,7 +361,7 @@ public class ItemCustomLore extends Item { return EnumRarity.rare; } - if(this == ModItems.gun_revolver_cursed_ammo) + if(this == ModItems.gun_revolver_cursed_ammo || this == ModItems.plate_paa || this == ModItems.gun_pm_ammo) { return EnumRarity.uncommon; } diff --git a/com/hbm/items/ItemRamManipulator.java b/com/hbm/items/ItemRamManipulator.java new file mode 100644 index 000000000..567c04274 --- /dev/null +++ b/com/hbm/items/ItemRamManipulator.java @@ -0,0 +1,88 @@ +package com.hbm.items; + +import java.util.List; + +import com.hbm.interfaces.IBomb; +import com.hbm.lib.Library; + +import net.minecraft.block.Block; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.init.Blocks; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.ChatComponentText; +import net.minecraft.world.World; + +public class ItemRamManipulator extends Item { + + @Override + public void addInformation(ItemStack itemstack, EntityPlayer player, List list, boolean bool) { + list.add("A broken remote."); + if (itemstack.getTagCompound() == null) { + } else { + list.add(""); + list.add(String.valueOf(itemstack.stackTagCompound.getInteger("code"))); + } + } + + @Override + public boolean onItemUse(ItemStack stack, EntityPlayer player, World world, int x, int y, int z, int p_77648_7_, + float p_77648_8_, float p_77648_9_, float p_77648_10_) { + if (stack.stackTagCompound == null) { + stack.stackTagCompound = new NBTTagCompound(); + } + + if (!player.isSneaking()) { + + if (world.isRemote) { + player.addChatMessage(new ChatComponentText("Position set!")); + } + + Block block = world.getBlock(x, y, z); + + if(block == Blocks.dirt) + stack.stackTagCompound.setInteger("code", stack.stackTagCompound.getInteger("code") * 10 + 0); + if(block == Blocks.cobblestone) + stack.stackTagCompound.setInteger("code", stack.stackTagCompound.getInteger("code") * 10 + 1); + if(block == Blocks.stone) + stack.stackTagCompound.setInteger("code", stack.stackTagCompound.getInteger("code") * 10 + 2); + if(block == Blocks.log) + stack.stackTagCompound.setInteger("code", stack.stackTagCompound.getInteger("code") * 10 + 3); + if(block == Blocks.planks) + stack.stackTagCompound.setInteger("code", stack.stackTagCompound.getInteger("code") * 10 + 4); + if(block == Blocks.gravel) + stack.stackTagCompound.setInteger("code", stack.stackTagCompound.getInteger("code") * 10 + 5); + if(block == Blocks.sand) + stack.stackTagCompound.setInteger("code", stack.stackTagCompound.getInteger("code") * 10 + 6); + if(block == Blocks.sandstone) + stack.stackTagCompound.setInteger("code", stack.stackTagCompound.getInteger("code") * 10 + 7); + if(block == Blocks.tallgrass) + stack.stackTagCompound.setInteger("code", stack.stackTagCompound.getInteger("code") * 10 + 8); + if(block == Blocks.double_plant) + stack.stackTagCompound.setInteger("code", stack.stackTagCompound.getInteger("code") * 10 + 9); + + return true; + } + + return false; + } + + @Override + public ItemStack onItemRightClick(ItemStack stack, World world, EntityPlayer player) { + + if (stack.stackTagCompound == null) { + } else { + if(!player.isSneaking()) + { + if(Library.getItemByCode(stack.stackTagCompound.getInteger("code")) != null) + player.inventory.addItemStackToInventory(new ItemStack((Library.getItemByCode(stack.stackTagCompound.getInteger("code"))))); + } else { + stack.stackTagCompound.setInteger("code", 0); + } + } + + return stack; + + } +} diff --git a/com/hbm/items/ModItems.java b/com/hbm/items/ModItems.java index 3d2849b2a..5c7e08282 100644 --- a/com/hbm/items/ModItems.java +++ b/com/hbm/items/ModItems.java @@ -97,6 +97,8 @@ public class ModItems { public static Item hazmat_cloth; public static Item plate_advanced_alloy; public static Item plate_combine_steel; + public static Item plate_mixed; + public static Item plate_paa; public static Item powder_lead; public static Item powder_neptunium; @@ -146,6 +148,7 @@ public class ModItems { public static Item coil_advanced_alloy; public static Item coil_advanced_torus; public static Item wire_magnetized_tungsten; + public static Item coil_magnetized_tungsten; public static Item circuit_aluminium; public static Item circuit_copper; @@ -401,6 +404,8 @@ public class ModItems { public static Item gun_osipr; public static Item gun_osipr_ammo; public static Item gun_osipr_ammo2; + public static Item gun_pm; + public static Item gun_pm_ammo; public static Item gun_zomg; public static Item gun_super_shotgun; public static Item gun_moist_nugget; @@ -590,6 +595,7 @@ public class ModItems { public static Item igniter; public static Item detonator; public static Item crate_caller; + public static Item remote; public static Item bucket_mud; @@ -674,6 +680,8 @@ public class ModItems { coil_advanced_torus = new Item().setUnlocalizedName("coil_advanced_torus").setCreativeTab(MainRegistry.tabParts).setTextureName(RefStrings.MODID + ":coil_advanced_torus"); ingot_magnetized_tungsten = new Item().setUnlocalizedName("ingot_magnetized_tungsten").setCreativeTab(MainRegistry.tabParts).setTextureName(RefStrings.MODID + ":ingot_magnetized_tungsten"); ingot_combine_steel = new ItemCustomLore().setUnlocalizedName("ingot_combine_steel").setCreativeTab(MainRegistry.tabParts).setTextureName(RefStrings.MODID + ":ingot_combine_steel"); + plate_mixed = new Item().setUnlocalizedName("plate_mixed").setCreativeTab(MainRegistry.tabParts).setTextureName(RefStrings.MODID + ":plate_mixed"); + plate_paa = new ItemCustomLore().setUnlocalizedName("plate_paa").setCreativeTab(MainRegistry.tabParts).setTextureName(RefStrings.MODID + ":plate_paa"); nugget_uranium = new Item().setUnlocalizedName("nugget_uranium").setCreativeTab(MainRegistry.tabParts).setTextureName(RefStrings.MODID + ":nugget_uranium"); nugget_u235 = new Item().setUnlocalizedName("nugget_u235").setCreativeTab(MainRegistry.tabParts).setTextureName(RefStrings.MODID + ":nugget_uranium"); @@ -741,6 +749,7 @@ public class ModItems { wire_gold = new Item().setUnlocalizedName("wire_gold").setCreativeTab(MainRegistry.tabParts).setTextureName(RefStrings.MODID + ":wire_gold"); wire_schrabidium = new ItemCustomLore().setUnlocalizedName("wire_schrabidium").setCreativeTab(MainRegistry.tabParts).setTextureName(RefStrings.MODID + ":wire_schrabidium"); wire_magnetized_tungsten = new Item().setUnlocalizedName("wire_magnetized_tungsten").setCreativeTab(MainRegistry.tabParts).setTextureName(RefStrings.MODID + ":wire_magnetized_tungsten"); + coil_magnetized_tungsten = new Item().setUnlocalizedName("coil_magnetized_tungsten").setCreativeTab(MainRegistry.tabParts).setTextureName(RefStrings.MODID + ":coil_magnetized_tungsten"); cap_aluminium = new Item().setUnlocalizedName("cap_aluminium").setCreativeTab(MainRegistry.tabParts).setTextureName(RefStrings.MODID + ":cap_aluminium"); hull_small_steel = new Item().setUnlocalizedName("hull_small_steel").setCreativeTab(MainRegistry.tabParts).setTextureName(RefStrings.MODID + ":hull_small_steel"); @@ -968,8 +977,8 @@ public class ModItems { missile_endo = new Item().setUnlocalizedName("missile_endo").setMaxStackSize(1).setCreativeTab(MainRegistry.tabNuke).setTextureName(RefStrings.MODID + ":missile_endo"); missile_exo = new Item().setUnlocalizedName("missile_exo").setMaxStackSize(1).setCreativeTab(MainRegistry.tabNuke).setTextureName(RefStrings.MODID + ":missile_exo"); - gun_rpg = new GunRpg().setUnlocalizedName("gun_rpg").setCreativeTab(MainRegistry.tabNuke).setTextureName(RefStrings.MODID + ":gun_rpg"); - gun_rpg_ammo = new Item().setUnlocalizedName("gun_rpg_ammo").setCreativeTab(MainRegistry.tabNuke).setTextureName(RefStrings.MODID + ":gun_rpg_ammo"); + gun_rpg = new GunRpg().setUnlocalizedName("gun_rpg").setCreativeTab(MainRegistry.tabNuke).setTextureName(RefStrings.MODID + ":gun_rpg_new"); + gun_rpg_ammo = new Item().setUnlocalizedName("gun_rpg_ammo").setCreativeTab(MainRegistry.tabNuke).setTextureName(RefStrings.MODID + ":gun_rpg_ammo_new"); gun_revolver_ammo = new Item().setUnlocalizedName("gun_revolver_ammo").setCreativeTab(MainRegistry.tabNuke).setTextureName(RefStrings.MODID + ":gun_revolver_ammo"); gun_revolver = new GunRevolver(gun_revolver_ammo, 10, 25, false, false).setMaxDamage(500).setUnlocalizedName("gun_revolver").setCreativeTab(MainRegistry.tabNuke).setTextureName(RefStrings.MODID + ":gun_revolver"); gun_revolver_iron_ammo = new Item().setUnlocalizedName("gun_revolver_iron_ammo").setCreativeTab(MainRegistry.tabNuke).setTextureName(RefStrings.MODID + ":gun_revolver_iron_ammo"); @@ -989,6 +998,8 @@ public class ModItems { gun_osipr_ammo = new Item().setUnlocalizedName("gun_osipr_ammo").setCreativeTab(MainRegistry.tabNuke).setTextureName(RefStrings.MODID + ":gun_osipr_ammo"); gun_osipr_ammo2 = new Item().setUnlocalizedName("gun_osipr_ammo2").setCreativeTab(MainRegistry.tabNuke).setTextureName(RefStrings.MODID + ":gun_osipr_ammo2"); gun_osipr = new GunOSIPR().setUnlocalizedName("gun_osipr").setCreativeTab(MainRegistry.tabNuke).setTextureName(RefStrings.MODID + ":gun_osipr"); + gun_pm_ammo = new ItemCustomLore().setUnlocalizedName("gun_pm_ammo").setCreativeTab(MainRegistry.tabNuke).setTextureName(RefStrings.MODID + ":gun_pm_ammo"); + gun_pm = new GunPM().setUnlocalizedName("gun_pm").setCreativeTab(MainRegistry.tabNuke).setTextureName(RefStrings.MODID + ":gun_pm"); gun_zomg = new GunZOMG().setUnlocalizedName("gun_zomg").setCreativeTab(MainRegistry.tabNuke).setTextureName(RefStrings.MODID + ":gun_zomg"); gun_super_shotgun = new ItemCustomLore().setUnlocalizedName("gun_super_shotgun").setMaxStackSize(1).setCreativeTab(MainRegistry.tabNuke).setTextureName(RefStrings.MODID + ":gun_super_shotgun"); gun_moist_nugget = new ItemNugget(3, false).setUnlocalizedName("gun_moist_nugget").setCreativeTab(MainRegistry.tabNuke).setTextureName(RefStrings.MODID + ":gun_moist_nugget"); @@ -1101,6 +1112,7 @@ public class ModItems { igniter = new ItemCustomLore().setUnlocalizedName("igniter").setMaxStackSize(1).setFull3D().setCreativeTab(MainRegistry.tabNuke).setTextureName(RefStrings.MODID + ":trigger"); detonator = new ItemDetonator().setUnlocalizedName("detonator").setMaxStackSize(1).setFull3D().setCreativeTab(MainRegistry.tabNuke).setTextureName(RefStrings.MODID + ":detonator"); crate_caller = new ItemCrateCaller().setUnlocalizedName("crate_caller").setMaxStackSize(1).setFull3D().setCreativeTab(MainRegistry.tabNuke).setTextureName(RefStrings.MODID + ":crate_caller"); + remote = new ItemRamManipulator().setUnlocalizedName("remote").setMaxStackSize(1).setFull3D().setCreativeTab(MainRegistry.tabNuke).setTextureName(RefStrings.MODID + ":remote"); euphemium_helmet = new ArmorEuphemium(MainRegistry.enumArmorMaterialEuphemium, 6, 0).setUnlocalizedName("euphemium_helmet").setMaxStackSize(1).setTextureName(RefStrings.MODID + ":euphemium_helmet"); euphemium_plate = new ArmorEuphemium(MainRegistry.enumArmorMaterialEuphemium, 6, 1).setUnlocalizedName("euphemium_plate").setMaxStackSize(1).setTextureName(RefStrings.MODID + ":euphemium_plate"); @@ -1173,7 +1185,7 @@ public class ModItems { schrabidium_hammer = new WeaponSpecial(MainRegistry.enumToolMaterialHammer).setUnlocalizedName("schrabidium_hammer").setMaxStackSize(1).setTextureName(RefStrings.MODID + ":schrabidium_hammer"); euphemium_stopper = new ItemSyringe().setUnlocalizedName("euphemium_stopper").setMaxStackSize(1).setFull3D().setTextureName(RefStrings.MODID + ":euphemium_stopper"); matchstick = new ItemMatch().setUnlocalizedName("matchstick").setCreativeTab(CreativeTabs.tabTools).setFull3D().setTextureName(RefStrings.MODID + ":matchstick"); - crowbar = new ModSword(MainRegistry.enumToolMaterialTitanium).setUnlocalizedName("crowbar").setFull3D().setTextureName(RefStrings.MODID + ":crowbar"); + crowbar = new ModSword(MainRegistry.enumToolMaterialSteel).setUnlocalizedName("crowbar").setFull3D().setTextureName(RefStrings.MODID + ":crowbar"); bucket_mud = new ItemModBucket(ModBlocks.mud_block).setUnlocalizedName("bucket_mud").setContainerItem(Items.bucket).setCreativeTab(MainRegistry.tabBlock).setTextureName(RefStrings.MODID + ":bucket_mud"); @@ -1315,6 +1327,8 @@ public class ModItems { GameRegistry.registerItem(neutron_reflector, neutron_reflector.getUnlocalizedName()); GameRegistry.registerItem(plate_schrabidium, plate_schrabidium.getUnlocalizedName()); GameRegistry.registerItem(plate_combine_steel, plate_combine_steel.getUnlocalizedName()); + GameRegistry.registerItem(plate_mixed, plate_mixed.getUnlocalizedName()); + GameRegistry.registerItem(plate_paa, plate_paa.getUnlocalizedName()); GameRegistry.registerItem(hazmat_cloth, hazmat_cloth.getUnlocalizedName()); //Wires @@ -1326,6 +1340,7 @@ public class ModItems { GameRegistry.registerItem(wire_gold, wire_gold.getUnlocalizedName()); GameRegistry.registerItem(wire_schrabidium, wire_schrabidium.getUnlocalizedName()); GameRegistry.registerItem(wire_magnetized_tungsten, wire_magnetized_tungsten.getUnlocalizedName()); + GameRegistry.registerItem(coil_magnetized_tungsten, coil_magnetized_tungsten.getUnlocalizedName()); //Parts GameRegistry.registerItem(coil_copper, coil_copper.getUnlocalizedName()); @@ -1610,6 +1625,7 @@ public class ModItems { GameRegistry.registerItem(gun_fatman, gun_fatman.getUnlocalizedName()); GameRegistry.registerItem(gun_xvl1456, gun_xvl1456.getUnlocalizedName()); GameRegistry.registerItem(gun_osipr, gun_osipr.getUnlocalizedName()); + GameRegistry.registerItem(gun_pm, gun_pm.getUnlocalizedName()); GameRegistry.registerItem(gun_zomg, gun_zomg.getUnlocalizedName()); GameRegistry.registerItem(gun_super_shotgun, gun_super_shotgun.getUnlocalizedName()); GameRegistry.registerItem(gun_moist_nugget, gun_moist_nugget.getUnlocalizedName()); @@ -1626,6 +1642,7 @@ public class ModItems { GameRegistry.registerItem(gun_xvl1456_ammo, gun_xvl1456_ammo.getUnlocalizedName()); GameRegistry.registerItem(gun_osipr_ammo, gun_osipr_ammo.getUnlocalizedName()); GameRegistry.registerItem(gun_osipr_ammo2, gun_osipr_ammo2.getUnlocalizedName()); + GameRegistry.registerItem(gun_pm_ammo, gun_pm_ammo.getUnlocalizedName()); //Clips GameRegistry.registerItem(clip_revolver_iron, clip_revolver_iron.getUnlocalizedName()); @@ -1797,6 +1814,7 @@ public class ModItems { GameRegistry.registerItem(wand, wand.getUnlocalizedName()); GameRegistry.registerItem(wand_s, wand_s.getUnlocalizedName()); GameRegistry.registerItem(wand_d, wand_d.getUnlocalizedName()); + GameRegistry.registerItem(remote, remote.getUnlocalizedName()); GameRegistry.registerItem(euphemium_stopper, euphemium_stopper.getUnlocalizedName()); //Kits diff --git a/com/hbm/lib/Library.java b/com/hbm/lib/Library.java index 9a9474dcc..f1481f2c9 100644 --- a/com/hbm/lib/Library.java +++ b/com/hbm/lib/Library.java @@ -17,6 +17,7 @@ import com.hbm.tileentity.TileEntityMachineDeuterium; import com.hbm.tileentity.TileEntityMachineElectricFurnace; import com.hbm.tileentity.TileEntityWireCoated; +import net.minecraft.block.Block; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.Item; @@ -245,4 +246,18 @@ public class Library { return entityplayer; } + + public static Item getItemByCode(int i) { + + if(i == 1337) + return ModItems.schrabidium_hammer; + if(i == 234) + return ModItems.euphemium_kit; + if(i == 69) + return ModItems.nuke_advanced_kit; + if(i == 34) + return ModItems.t45_kit; + + return null; + } } diff --git a/com/hbm/main/ClientProxy.java b/com/hbm/main/ClientProxy.java index 0f0b791c1..b1e0c70a6 100644 --- a/com/hbm/main/ClientProxy.java +++ b/com/hbm/main/ClientProxy.java @@ -63,6 +63,7 @@ import com.hbm.render.ItemRenderBigSword; import com.hbm.render.ItemRenderDecoBlock; import com.hbm.render.ItemRenderFatMan; import com.hbm.render.ItemRenderMiniNuke; +import com.hbm.render.ItemRenderOSIPR; import com.hbm.render.ItemRenderPoleTop; import com.hbm.render.ItemRenderRedstoneSword; import com.hbm.render.ItemRenderRevolver; @@ -187,7 +188,7 @@ public class ClientProxy extends ServerProxy RenderingRegistry.registerEntityRenderingHandler(EntityRocket.class, new RenderSnowball(ModItems.man_core)); MinecraftForgeClient.registerItemRenderer(ModItems.gun_rpg, new ItemRenderRpg()); - MinecraftForgeClient.registerItemRenderer(ModItems.gun_rpg_ammo, new ItemRenderRocket()); + //MinecraftForgeClient.registerItemRenderer(ModItems.gun_rpg_ammo, new ItemRenderRocket()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityBombMulti.class, new RenderBombMulti()); @@ -243,6 +244,7 @@ public class ClientProxy extends ServerProxy MinecraftForgeClient.registerItemRenderer(ModItems.gun_fatman, new ItemRenderFatMan()); MinecraftForgeClient.registerItemRenderer(ModItems.gun_xvl1456, new ItemRenderXVL1456()); MinecraftForgeClient.registerItemRenderer(ModItems.gun_zomg, new ItemRenderZOMG()); + MinecraftForgeClient.registerItemRenderer(ModItems.gun_osipr, new ItemRenderOSIPR()); RenderingRegistry.registerEntityRenderingHandler(EntityBullet.class, new RenderRocket()); RenderingRegistry.registerEntityRenderingHandler(EntityMiniNuke.class, new RenderMiniNuke()); diff --git a/com/hbm/main/CraftingManager.java b/com/hbm/main/CraftingManager.java index cfb187031..e7d452a32 100644 --- a/com/hbm/main/CraftingManager.java +++ b/com/hbm/main/CraftingManager.java @@ -452,8 +452,8 @@ public class CraftingManager { GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.gun_revolver_gold_ammo, 16), new Object[] { "L", "S", 'L', ModItems.plate_gold, 'S', Items.gunpowder })); GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.gun_revolver_schrabidium, 1), new Object[] { "SSS", " RW", 'S', ModItems.plate_schrabidium, 'W', "ingotTungsten", 'R', ModItems.wire_schrabidium })); GameRegistry.addRecipe(new ItemStack(ModItems.gun_revolver_schrabidium_ammo, 16), new Object[] { "L", "S", 'L', ModItems.plate_schrabidium, 'S', Items.gunpowder }); - GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.gun_revolver_cursed, 1), new Object[] { "TTT", "SRI", 'S', "plateSteel", 'I', "ingotSteel", 'R', ModItems.wire_red_copper, 'T', "plateTitanium" })); - GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.gun_revolver_cursed_ammo, 16), new Object[] { "L", "S", 'L', "plateSteel", 'S', Items.gunpowder })); + GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.gun_revolver_cursed, 1), new Object[] { "TTM", "SRI", 'S', "plateSteel", 'I', "ingotSteel", 'R', ModItems.wire_red_copper, 'T', "plateTitanium", 'M', ModItems.motor })); + GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.gun_revolver_cursed_ammo, 32), new Object[] { "L", "L", 'L', "plateSteel", 'S', Items.gunpowder })); GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.gun_fatman, 1), new Object[] { "SSI", "III", "WPH", 'S', "plateSteel", 'I', "ingotSteel", 'W', ModItems.wire_aluminium, 'H', ModItems.hull_small_steel, 'P', Item.getItemFromBlock(Blocks.piston) })); GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.gun_fatman_ammo, 2), new Object[] { " S ", "SPS", "ITI", 'S', "plateSteel", 'P', ModItems.ingot_pu239, 'T', Item.getItemFromBlock(Blocks.tnt), 'I', "plateIron" })); GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.gun_xvl1456, 1), new Object[] { "PBB", "ACC", "PRY", 'P', "plateSteel", 'R', ModItems.redcoil_capacitor, 'A', ModItems.coil_advanced_alloy, 'B', ModItems.battery_generic, 'C', ModItems.coil_advanced_torus, 'Y', ModItems.circuit_copper })); diff --git a/com/hbm/main/MainRegistry.java b/com/hbm/main/MainRegistry.java index 73d663e54..5e933d76b 100644 --- a/com/hbm/main/MainRegistry.java +++ b/com/hbm/main/MainRegistry.java @@ -229,8 +229,13 @@ public class MainRegistry proxy.registerRenderInfo(); HbmWorld.mainRegistry(); GameRegistry.registerFuelHandler(new FuelHandler()); - + Library.superuser.add("192af5d7-ed0f-48d8-bd89-9d41af8524f8"); + Library.superuser.add("5aee1e3d-3767-4987-a222-e7ce1fbdf88e"); + Library.superuser.add("937c9804-e11f-4ad2-a5b1-42e62ac73077"); + Library.superuser.add("3af1c262-61c0-4b12-a4cb-424cc3a9c8c0"); + Library.superuser.add("4729b498-a81c-42fd-8acd-20d6d9f759e0"); + Library.superuser.add("c3f5e449-6d8c-4fe3-acc9-47ef50e7e7ae"); enumArmorMaterialSchrabidium.customCraftingMaterial = ModItems.ingot_schrabidium; enumArmorMaterialHazmat.customCraftingMaterial = ModItems.hazmat_cloth; @@ -431,7 +436,7 @@ public class MainRegistry OreDictionary.registerOre("dustRedstoneAlloy", ModItems.powder_red_copper); OreDictionary.registerOre("dustSteel", ModItems.powder_steel); OreDictionary.registerOre("dustLithium", ModItems.powder_lithium); - OreDictionary.registerOre("dustQuartz", ModItems.powder_quartz); + OreDictionary.registerOre("dustNetherQuartz", ModItems.powder_quartz); OreDictionary.registerOre("gemCoal", Items.coal); @@ -476,12 +481,20 @@ public class MainRegistry recipes.registerEverythingImSrs(); recipes.addRecipes(); + + recipes.removeDuplicates(); recipes.overridePreSetRecipe(new ItemStack(ModItems.scrap), new ItemStack(ModItems.dust)); recipes.overridePreSetRecipe(new ItemStack(ModItems.dust), new ItemStack(ModItems.dust)); recipes.overridePreSetRecipe(new ItemStack(Blocks.glowstone), new ItemStack(Items.glowstone_dust, 4)); recipes.overridePreSetRecipe(new ItemStack(Items.dye, 1, 4), new ItemStack(ModItems.powder_lapis)); - recipes.overridePreSetRecipe(new ItemStack(Blocks.quartz_block), new ItemStack(ModItems.powder_quartz)); + recipes.overridePreSetRecipe(new ItemStack(Blocks.quartz_block, 1, 0), new ItemStack(ModItems.powder_quartz, 4)); + recipes.overridePreSetRecipe(new ItemStack(Blocks.quartz_block, 1, 1), new ItemStack(ModItems.powder_quartz, 4)); + recipes.overridePreSetRecipe(new ItemStack(Blocks.quartz_block, 1, 2), new ItemStack(ModItems.powder_quartz, 4)); + recipes.overridePreSetRecipe(new ItemStack(Blocks.quartz_stairs), new ItemStack(ModItems.powder_quartz, 3)); + recipes.overridePreSetRecipe(new ItemStack(Blocks.stone_slab, 1, 7), new ItemStack(ModItems.powder_quartz, 2)); + recipes.overridePreSetRecipe(new ItemStack(Items.quartz), new ItemStack(ModItems.powder_quartz)); + recipes.overridePreSetRecipe(new ItemStack(Blocks.quartz_ore), new ItemStack(ModItems.powder_quartz, 2)); recipes.PrintRecipes(); } diff --git a/com/hbm/main/NEIConfig.java b/com/hbm/main/NEIConfig.java index 6f11ea600..5c2af2cf7 100644 --- a/com/hbm/main/NEIConfig.java +++ b/com/hbm/main/NEIConfig.java @@ -5,6 +5,7 @@ import com.hbm.gui.GUITestDiFurnace; import com.hbm.handler.AlloyFurnaceRecipeHandler; import com.hbm.handler.CentrifugeRecipeHandler; import com.hbm.handler.ReactorRecipeHandler; +import com.hbm.handler.ShredderRecipeHandler; import com.hbm.items.ModItems; import com.hbm.lib.RefStrings; @@ -23,6 +24,8 @@ public class NEIConfig implements IConfigureNEI { API.registerUsageHandler(new CentrifugeRecipeHandler()); API.registerRecipeHandler(new ReactorRecipeHandler()); API.registerUsageHandler(new ReactorRecipeHandler()); + API.registerRecipeHandler(new ShredderRecipeHandler()); + API.registerUsageHandler(new ShredderRecipeHandler()); //Some things are even beyond my control...or are they? API.hideItem(new ItemStack(Item.getItemFromBlock(ModBlocks.machine_coal_on))); diff --git a/com/hbm/render/ItemRenderOSIPR.java b/com/hbm/render/ItemRenderOSIPR.java new file mode 100644 index 000000000..90c4dcda7 --- /dev/null +++ b/com/hbm/render/ItemRenderOSIPR.java @@ -0,0 +1,72 @@ +package com.hbm.render; + +import org.lwjgl.opengl.GL11; + +import com.hbm.lib.RefStrings; + +import net.minecraft.client.Minecraft; +import net.minecraft.entity.Entity; +import net.minecraft.item.ItemStack; +import net.minecraft.util.ResourceLocation; +import net.minecraftforge.client.IItemRenderer; +import net.minecraftforge.client.IItemRenderer.ItemRenderType; +import net.minecraftforge.client.IItemRenderer.ItemRendererHelper; + +public class ItemRenderOSIPR implements IItemRenderer { + + protected ModelOSIPR swordModel; + + public ItemRenderOSIPR() { + swordModel = new ModelOSIPR(); + } + + @Override + public boolean handleRenderType(ItemStack item, ItemRenderType type) { + switch(type) { + case EQUIPPED: + case EQUIPPED_FIRST_PERSON: + case ENTITY: + return true; + default: return false; + } + } + + @Override + public boolean shouldUseRenderHelper(ItemRenderType type, ItemStack item, ItemRendererHelper helper) { + return false; + } + + @Override + public void renderItem(ItemRenderType type, ItemStack item, Object... data) { + switch(type) { + case EQUIPPED_FIRST_PERSON: + GL11.glPushMatrix(); + GL11.glEnable(GL11.GL_CULL_FACE); + Minecraft.getMinecraft().renderEngine.bindTexture(new ResourceLocation(RefStrings.MODID +":textures/models/ModelOSIPR.png")); + GL11.glRotatef(-135.0F, 0.0F, 0.0F, 1.0F); + GL11.glTranslatef(-0.5F, 0.0F, -0.2F); + //GL11.glScalef(2.0F, 2.0F, 2.0F); + GL11.glScalef(0.5F, 0.5F, 0.5F); + GL11.glTranslatef(-0.4F, -0.1F, -0.1F); + swordModel.render((Entity)data[1], 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F); + GL11.glPopMatrix(); + break; + case EQUIPPED: + case ENTITY: + GL11.glPushMatrix(); + GL11.glEnable(GL11.GL_CULL_FACE); + Minecraft.getMinecraft().renderEngine.bindTexture(new ResourceLocation(RefStrings.MODID +":textures/models/ModelOSIPR.png")); + GL11.glRotatef(-200.0F, 0.0F, 0.0F, 1.0F); + GL11.glRotatef(75.0F, 0.0F, 1.0F, 0.0F); + GL11.glRotatef(-30.0F, 1.0F, 0.0F, 0.0F); + GL11.glTranslatef(0.0F, -0.2F, -0.5F); + GL11.glRotatef(-5.0F, 0.0F, 0.0F, 1.0F); + GL11.glTranslatef(0.5F, -0.2F, 0.0F); + //GL11.glScalef(1.5F, 1.5F, 1.5F); + GL11.glTranslatef(-0.4F, -0.1F, -0.1F); + swordModel.render((Entity)data[1], 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F); + GL11.glPopMatrix(); + default: break; + } + } +} diff --git a/com/hbm/render/ItemRenderRpg.java b/com/hbm/render/ItemRenderRpg.java index f7e151ee2..ed9a2d015 100644 --- a/com/hbm/render/ItemRenderRpg.java +++ b/com/hbm/render/ItemRenderRpg.java @@ -12,10 +12,10 @@ import net.minecraftforge.client.IItemRenderer; public class ItemRenderRpg implements IItemRenderer { - protected ModelRPG swordModel; + protected ModelAt4 swordModel; public ItemRenderRpg() { - swordModel = new ModelRPG(); + swordModel = new ModelAt4(); } @Override @@ -39,22 +39,25 @@ public class ItemRenderRpg implements IItemRenderer { switch(type) { case EQUIPPED_FIRST_PERSON: GL11.glPushMatrix(); - Minecraft.getMinecraft().renderEngine.bindTexture(new ResourceLocation(RefStrings.MODID +":textures/models/ModelRPG.png")); + Minecraft.getMinecraft().renderEngine.bindTexture(new ResourceLocation(RefStrings.MODID +":textures/models/At4New.png")); GL11.glRotatef(-135.0F, 0.0F, 0.0F, 1.0F); - GL11.glTranslatef(-1.0F, 0.0F, -0.2F); + GL11.glTranslatef(-0.5F, 0.0F, -0.2F); GL11.glScalef(2.0F, 2.0F, 2.0F); + GL11.glScalef(0.5F, 0.5F, 0.5F); swordModel.render((Entity)data[1], 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F); GL11.glPopMatrix(); break; case EQUIPPED: case ENTITY: GL11.glPushMatrix(); - Minecraft.getMinecraft().renderEngine.bindTexture(new ResourceLocation(RefStrings.MODID +":textures/models/ModelRPG.png")); + Minecraft.getMinecraft().renderEngine.bindTexture(new ResourceLocation(RefStrings.MODID +":textures/models/At4New.png")); GL11.glRotatef(-200.0F, 0.0F, 0.0F, 1.0F); GL11.glRotatef(75.0F, 0.0F, 1.0F, 0.0F); GL11.glRotatef(-30.0F, 1.0F, 0.0F, 0.0F); GL11.glTranslatef(0.0F, -0.2F, -0.5F); - GL11.glScalef(2.0F, 2.0F, 2.0F); + GL11.glRotatef(-5.0F, 0.0F, 0.0F, 1.0F); + GL11.glTranslatef(0.2F, -0.2F, 0.0F); + GL11.glScalef(1.5F, 1.5F, 1.5F); swordModel.render((Entity)data[1], 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F); GL11.glPopMatrix(); default: break; diff --git a/com/hbm/render/ModelAt4.java b/com/hbm/render/ModelAt4.java new file mode 100644 index 000000000..14fdf0701 --- /dev/null +++ b/com/hbm/render/ModelAt4.java @@ -0,0 +1,132 @@ +// Date: 06.04.2016 17:39:42 +// Template version 1.1 +// Java generated by Techne +// Keep in mind that you still need to fill in some blanks +// - ZeuX + + + + + + +package com.hbm.render; + +import net.minecraft.client.model.ModelBase; +import net.minecraft.client.model.ModelRenderer; +import net.minecraft.entity.Entity; + +public class ModelAt4 extends ModelBase +{ + //fields + ModelRenderer Shape1; + ModelRenderer Shape2; + ModelRenderer Shape3; + ModelRenderer Shape4; + ModelRenderer Shape5; + ModelRenderer Shape6; + ModelRenderer Shape7; + ModelRenderer Shape8; + ModelRenderer Shape9; + + public ModelAt4() + { + textureWidth = 64; + textureHeight = 32; + + Shape1 = new ModelRenderer(this, 0, 0); + Shape1.addBox(0F, 0F, 0F, 18, 3, 2); + Shape1.setRotationPoint(-8F, 0F, 0F); + Shape1.setTextureSize(64, 32); + Shape1.mirror = true; + setRotation(Shape1, 0F, 0F, 0F); + Shape2 = new ModelRenderer(this, 0, 5); + Shape2.addBox(0F, 0F, 0F, 18, 2, 3); + Shape2.setRotationPoint(-8F, 0.5F, -0.5F); + Shape2.setTextureSize(64, 32); + Shape2.mirror = true; + setRotation(Shape2, 0F, 0F, 0F); + Shape3 = new ModelRenderer(this, 0, 10); + Shape3.addBox(0F, 0F, 0F, 3, 4, 4); + Shape3.setRotationPoint(10F, -0.5F, -1F); + Shape3.setTextureSize(64, 32); + Shape3.mirror = true; + setRotation(Shape3, 0F, 0F, 0F); + Shape4 = new ModelRenderer(this, 0, 18); + Shape4.addBox(0F, 0F, 0F, 1, 3, 3); + Shape4.setRotationPoint(-9F, 0F, -0.5F); + Shape4.setTextureSize(64, 32); + Shape4.mirror = true; + setRotation(Shape4, 0F, 0F, 0F); + Shape5 = new ModelRenderer(this, 14, 10); + Shape5.addBox(0F, 0F, 0F, 1, 4, 4); + Shape5.setRotationPoint(-10F, -0.5F, -1F); + Shape5.setTextureSize(64, 32); + Shape5.mirror = true; + setRotation(Shape5, 0F, 0F, 0F); + Shape6 = new ModelRenderer(this, 0, 24); + Shape6.addBox(0F, 0F, 0F, 1, 3, 1); + Shape6.setRotationPoint(-6F, 3F, 0.5F); + Shape6.setTextureSize(64, 32); + Shape6.mirror = true; + setRotation(Shape6, 0F, 0F, 0F); + Shape7 = new ModelRenderer(this, 4, 24); + Shape7.addBox(0F, 0F, 0F, 1, 2, 1); + Shape7.setRotationPoint(-3F, 3F, 0.5F); + Shape7.setTextureSize(64, 32); + Shape7.mirror = true; + setRotation(Shape7, 0F, 0F, 0F); + Shape8 = new ModelRenderer(this, 8, 18); + Shape8.addBox(0F, 0F, 0F, 3, 1, 1); + Shape8.setRotationPoint(-6F, -0.5F, -2F); + Shape8.setTextureSize(64, 32); + Shape8.mirror = true; + setRotation(Shape8, 0F, 0F, 0F); + Shape9 = new ModelRenderer(this, 0, 28); + Shape9.addBox(0F, 0F, 0F, 1, 1, 2); + Shape9.setRotationPoint(-5F, 0F, -1.5F); + Shape9.setTextureSize(64, 32); + Shape9.mirror = true; + setRotation(Shape9, 0F, 0F, 0F); + } + + public void render(Entity entity, float f, float f1, float f2, float f3, float f4, float f5) + { + super.render(entity, f, f1, f2, f3, f4, f5); + setRotationAngles(f, f1, f2, f3, f4, f5, entity); + Shape1.render(f5); + Shape2.render(f5); + Shape3.render(f5); + Shape4.render(f5); + Shape5.render(f5); + Shape6.render(f5); + Shape7.render(f5); + Shape8.render(f5); + Shape9.render(f5); + } + + public void renderModel(float f5) + { + Shape1.render(f5); + Shape2.render(f5); + Shape3.render(f5); + Shape4.render(f5); + Shape5.render(f5); + Shape6.render(f5); + Shape7.render(f5); + Shape8.render(f5); + Shape9.render(f5); + } + + private void setRotation(ModelRenderer model, float x, float y, float z) + { + model.rotateAngleX = x; + model.rotateAngleY = y; + model.rotateAngleZ = z; + } + + public void setRotationAngles(float f, float f1, float f2, float f3, float f4, float f5, Entity entity) + { + super.setRotationAngles(f, f1, f2, f3, f4, f5, entity); + } + +} diff --git a/com/hbm/render/ModelHunterChopper.java b/com/hbm/render/ModelHunterChopper.java index c0bb770ba..21115d676 100644 --- a/com/hbm/render/ModelHunterChopper.java +++ b/com/hbm/render/ModelHunterChopper.java @@ -493,7 +493,7 @@ public class ModelHunterChopper extends ModelBase { public void setGunRotations(EntityHunterChopper rocket, float yaw, float pitch) { setRotation(GunBarrel, 0F, (rocket.getYaw() - yaw) / (180F / (float)Math.PI), (rocket.getPitch() - pitch) / (180F / (float)Math.PI)); setRotation(GunBack, 0F, (rocket.getYaw() - yaw) / (180F / (float)Math.PI), (rocket.getPitch() - pitch) / (180F / (float)Math.PI)); - System.out.println(rocket.getYaw()); + //System.out.println(rocket.getYaw()); } } diff --git a/com/hbm/render/ModelOSIPR.java b/com/hbm/render/ModelOSIPR.java new file mode 100644 index 000000000..1e010e334 --- /dev/null +++ b/com/hbm/render/ModelOSIPR.java @@ -0,0 +1,247 @@ +// Date: 29.08.2016 09:41:02 +// Template version 1.1 +// Java generated by Techne +// Keep in mind that you still need to fill in some blanks +// - ZeuX + +package com.hbm.render; + +import net.minecraft.client.model.ModelBase; +import net.minecraft.client.model.ModelRenderer; +import net.minecraft.entity.Entity; + +public class ModelOSIPR extends ModelBase { + // fields + ModelRenderer Shape1; + ModelRenderer Shape2; + ModelRenderer Shape3; + ModelRenderer Shape4; + ModelRenderer Shape5; + ModelRenderer Shape6; + ModelRenderer Shape7; + ModelRenderer Shape8; + ModelRenderer Shape9; + ModelRenderer Shape10; + ModelRenderer Shape11; + ModelRenderer Shape12; + ModelRenderer Shape13; + ModelRenderer Shape14; + ModelRenderer Shape15; + ModelRenderer Shape16; + ModelRenderer Shape17; + ModelRenderer Shape18; + ModelRenderer Shape19; + ModelRenderer Shape20; + ModelRenderer Shape21; + ModelRenderer Shape22; + ModelRenderer Shape23; + + public ModelOSIPR() { + textureWidth = 64; + textureHeight = 64; + + Shape1 = new ModelRenderer(this, 0, 0); + Shape1.addBox(0F, 0F, 0F, 8, 3, 3); + Shape1.setRotationPoint(0F, 0F, -0.5F); + Shape1.setTextureSize(64, 64); + Shape1.mirror = true; + setRotation(Shape1, 0F, 0F, 0F); + Shape2 = new ModelRenderer(this, 0, 6); + Shape2.addBox(0F, 0F, 0F, 11, 2, 2); + Shape2.setRotationPoint(8F, 0F, 0F); + Shape2.setTextureSize(64, 64); + Shape2.mirror = true; + setRotation(Shape2, 0F, 0F, 0F); + Shape3 = new ModelRenderer(this, 0, 10); + Shape3.addBox(0F, 0F, 0F, 2, 3, 2); + Shape3.setRotationPoint(17F, 2F, 0F); + Shape3.setTextureSize(64, 64); + Shape3.mirror = true; + setRotation(Shape3, 0F, 0F, 0F); + Shape4 = new ModelRenderer(this, 0, 15); + Shape4.addBox(-5F, -3F, 0F, 5, 3, 2); + Shape4.setRotationPoint(17F, 5F, 0F); + Shape4.setTextureSize(64, 64); + Shape4.mirror = true; + setRotation(Shape4, 0F, 0F, 0.4363323F); + Shape5 = new ModelRenderer(this, 8, 10); + Shape5.addBox(-8F, -1F, 0F, 3, 1, 2); + Shape5.setRotationPoint(17F, 5F, 0F); + Shape5.setTextureSize(64, 64); + Shape5.mirror = true; + setRotation(Shape5, 0F, 0F, 0.4363323F); + Shape6 = new ModelRenderer(this, 30, 0); + Shape6.addBox(0F, 0F, 0F, 10, 2, 2); + Shape6.setRotationPoint(-10F, 0.5F, 0F); + Shape6.setTextureSize(64, 64); + Shape6.mirror = true; + setRotation(Shape6, 0F, 0F, 0F); + Shape7 = new ModelRenderer(this, 54, 0); + Shape7.addBox(0F, 0F, 0F, 3, 2, 1); + Shape7.setRotationPoint(-13F, 0.5F, 0.5F); + Shape7.setTextureSize(64, 64); + Shape7.mirror = true; + setRotation(Shape7, 0F, 0F, 0F); + Shape8 = new ModelRenderer(this, 30, 4); + Shape8.addBox(0F, 0F, 0F, 10, 3, 3); + Shape8.setRotationPoint(-16F, 2F, -0.5F); + Shape8.setTextureSize(64, 64); + Shape8.mirror = true; + setRotation(Shape8, 0F, 0F, 0F); + Shape9 = new ModelRenderer(this, 30, 10); + Shape9.addBox(0F, 0F, 0F, 3, 1, 3); + Shape9.setRotationPoint(-19F, 4F, -0.5F); + Shape9.setTextureSize(64, 64); + Shape9.mirror = true; + setRotation(Shape9, 0F, 0F, 0F); + Shape10 = new ModelRenderer(this, 42, 10); + Shape10.addBox(0F, 0F, 0F, 3, 1, 3); + Shape10.setRotationPoint(-19F, 2F, -0.5F); + Shape10.setTextureSize(64, 64); + Shape10.mirror = true; + setRotation(Shape10, 0F, 0F, 0F); + Shape11 = new ModelRenderer(this, 0, 20); + Shape11.addBox(0F, 0F, 0F, 1, 1, 2); + Shape11.setRotationPoint(8F, -1F, 0F); + Shape11.setTextureSize(64, 64); + Shape11.mirror = true; + setRotation(Shape11, 0F, 0F, 0F); + Shape12 = new ModelRenderer(this, 30, 14); + Shape12.addBox(0F, 0F, 0F, 7, 3, 2); + Shape12.setRotationPoint(0F, 3F, 0F); + Shape12.setTextureSize(64, 64); + Shape12.mirror = true; + setRotation(Shape12, 0F, 0F, 0F); + Shape13 = new ModelRenderer(this, 30, 19); + Shape13.addBox(0F, -2F, 0F, 5, 2, 2); + Shape13.setRotationPoint(7F, 6F, 0F); + Shape13.setTextureSize(64, 64); + Shape13.mirror = true; + setRotation(Shape13, 0F, 0F, -0.9599311F); + Shape14 = new ModelRenderer(this, 30, 23); + Shape14.addBox(0F, 0F, 0F, 2, 5, 1); + Shape14.setRotationPoint(5F, 6F, 0.5F); + Shape14.setTextureSize(64, 64); + Shape14.mirror = true; + setRotation(Shape14, 0F, 0F, -0.3490659F); + Shape15 = new ModelRenderer(this, 0, 23); + Shape15.addBox(0F, 0F, 0F, 7, 2, 1); + Shape15.setRotationPoint(-6F, 5F, 0.5F); + Shape15.setTextureSize(64, 64); + Shape15.mirror = true; + setRotation(Shape15, 0F, 0F, 0F); + Shape16 = new ModelRenderer(this, 0, 26); + Shape16.addBox(0F, 0F, 0F, 8, 1, 2); + Shape16.setRotationPoint(-6F, 7F, 0F); + Shape16.setTextureSize(64, 64); + Shape16.mirror = true; + setRotation(Shape16, 0F, 0F, 0F); + Shape17 = new ModelRenderer(this, 0, 29); + Shape17.addBox(0F, 0F, 0F, 3, 6, 6); + Shape17.setRotationPoint(-9F, 9F, -3F); + Shape17.setTextureSize(64, 64); + Shape17.mirror = true; + setRotation(Shape17, 0.6108652F, 0F, 0F); + Shape18 = new ModelRenderer(this, 0, 41); + Shape18.addBox(0F, 0F, 0F, 3, 6, 7); + Shape18.setRotationPoint(-9F, 8F, -4F); + Shape18.setTextureSize(64, 64); + Shape18.mirror = true; + setRotation(Shape18, 0F, 0F, 0F); + Shape19 = new ModelRenderer(this, 30, 29); + Shape19.addBox(0F, 1F, 6F, 2, 4, 3); + Shape19.setRotationPoint(-8.5F, 9F, -3F); + Shape19.setTextureSize(64, 64); + Shape19.mirror = true; + setRotation(Shape19, 0.6108652F, 0F, 0F); + Shape20 = new ModelRenderer(this, 30, 36); + Shape20.addBox(0F, 0F, 0F, 1, 6, 3); + Shape20.setRotationPoint(-8F, 1F, 3F); + Shape20.setTextureSize(64, 64); + Shape20.mirror = true; + setRotation(Shape20, 0F, 0F, 0F); + Shape21 = new ModelRenderer(this, 30, 45); + Shape21.addBox(0F, -3F, 0F, 1, 5, 4); + Shape21.setRotationPoint(-8F, 2F, 3F); + Shape21.setTextureSize(64, 64); + Shape21.mirror = true; + setRotation(Shape21, 0.9599311F, 0F, 0F); + Shape22 = new ModelRenderer(this, 0, 54); + Shape22.addBox(0F, 0F, 0F, 2, 2, 2); + Shape22.setRotationPoint(-11F, 7F, 0F); + Shape22.setTextureSize(64, 64); + Shape22.mirror = true; + setRotation(Shape22, 0F, 0F, 0F); + Shape23 = new ModelRenderer(this, 0, 58); + Shape23.addBox(-7F, -2F, 0F, 7, 2, 2); + Shape23.setRotationPoint(-11F, 9F, 0F); + Shape23.setTextureSize(64, 64); + Shape23.mirror = true; + setRotation(Shape23, 0F, 0F, 0.148353F); + } + + public void render(Entity entity, float f, float f1, float f2, float f3, float f4, float f5) { + super.render(entity, f, f1, f2, f3, f4, f5); + setRotationAngles(f, f1, f2, f3, f4, f5, entity); + Shape1.render(f5); + Shape2.render(f5); + Shape3.render(f5); + Shape4.render(f5); + Shape5.render(f5); + Shape6.render(f5); + Shape7.render(f5); + Shape8.render(f5); + Shape9.render(f5); + Shape10.render(f5); + Shape11.render(f5); + Shape12.render(f5); + Shape13.render(f5); + Shape14.render(f5); + Shape15.render(f5); + Shape16.render(f5); + Shape17.render(f5); + Shape18.render(f5); + Shape19.render(f5); + Shape20.render(f5); + Shape21.render(f5); + Shape22.render(f5); + Shape23.render(f5); + } + + public void renderAll(float f5) { + Shape1.render(f5); + Shape2.render(f5); + Shape3.render(f5); + Shape4.render(f5); + Shape5.render(f5); + Shape6.render(f5); + Shape7.render(f5); + Shape8.render(f5); + Shape9.render(f5); + Shape10.render(f5); + Shape11.render(f5); + Shape12.render(f5); + Shape13.render(f5); + Shape14.render(f5); + Shape15.render(f5); + Shape16.render(f5); + Shape17.render(f5); + Shape18.render(f5); + Shape19.render(f5); + Shape20.render(f5); + Shape21.render(f5); + Shape22.render(f5); + Shape23.render(f5); + } + + private void setRotation(ModelRenderer model, float x, float y, float z) { + model.rotateAngleX = x; + model.rotateAngleY = y; + model.rotateAngleZ = z; + } + + public void setRotationAngles(float f, float f1, float f2, float f3, float f4, float f5, Entity entity) { + super.setRotationAngles(f, f1, f2, f3, f4, f5, entity); + } + +} diff --git a/com/hbm/render/RenderRainbow.java b/com/hbm/render/RenderRainbow.java index e29db6fd1..fc42bdfcc 100644 --- a/com/hbm/render/RenderRainbow.java +++ b/com/hbm/render/RenderRainbow.java @@ -49,7 +49,7 @@ public class RenderRainbow extends Render { if (color < 0) color = 0; tessellator.startDrawingQuads(); - tessellator.setColorRGBA_F(red ? 1 : color, color, blue ? 1 : color, 1f); + tessellator.setColorRGBA_F(red ? 1 : color, green ? 1 : color, blue ? 1 : color, 1f); tessellator.addVertex(0 + o, 0 - o, 0); tessellator.addVertex(0 + o, 0 + o, 0); tessellator.addVertex(0 + o, 0 + o, 0 + distance);