From f2fa19c86077de668ebc6f792fa2aae2b3b0286b Mon Sep 17 00:00:00 2001 From: HbmMods Date: Thu, 12 Oct 2017 21:32:41 +0200 Subject: [PATCH] Turret AI chip, better template icons, small fixes & adjustments --- assets/hbm/textures/gui/fluids2.png | Bin 11439 -> 11953 bytes .../hbm/textures/items/chem_icon_ASPHALT.png | Bin 0 -> 229 bytes .../textures/items/chem_icon_BP_BIOFUEL.png | Bin 0 -> 230 bytes .../textures/items/chem_icon_BP_BIOGAS.png | Bin 0 -> 253 bytes .../textures/items/chem_icon_CC_HEATING.png | Bin 0 -> 226 bytes .../hbm/textures/items/chem_icon_CC_HEAVY.png | Bin 0 -> 225 bytes assets/hbm/textures/items/chem_icon_CC_I.png | Bin 0 -> 225 bytes .../textures/items/chem_icon_CC_NAPHTHA.png | Bin 0 -> 224 bytes .../hbm/textures/items/chem_icon_CC_OIL.png | Bin 0 -> 217 bytes .../textures/items/chem_icon_CIRCUIT_4.png | Bin 0 -> 322 bytes .../textures/items/chem_icon_CIRCUIT_5.png | Bin 0 -> 305 bytes .../hbm/textures/items/chem_icon_COOLANT.png | Bin 0 -> 263 bytes assets/hbm/textures/items/chem_icon_DESH.png | Bin 0 -> 252 bytes .../textures/items/chem_icon_DEUTERIUM.png | Bin 0 -> 197 bytes .../items/chem_icon_FC_DIESEL_KEROSENE.png | Bin 0 -> 263 bytes .../items/chem_icon_FC_GAS_PETROLEUM.png | Bin 0 -> 261 bytes .../textures/items/chem_icon_FC_I_NAPHTHA.png | Bin 0 -> 218 bytes .../items/chem_icon_FC_KEROSENE_PETROLEUM.png | Bin 0 -> 264 bytes .../textures/items/chem_icon_FP_HEAVYOIL.png | Bin 0 -> 255 bytes .../textures/items/chem_icon_FP_LIGHTOIL.png | Bin 0 -> 310 bytes .../textures/items/chem_icon_FP_NAPHTHA.png | Bin 0 -> 275 bytes .../hbm/textures/items/chem_icon_FP_SMEAR.png | Bin 0 -> 257 bytes .../textures/items/chem_icon_FR_PETROIL.png | Bin 0 -> 266 bytes .../hbm/textures/items/chem_icon_FR_REOIL.png | Bin 0 -> 203 bytes .../hbm/textures/items/chem_icon_PEROXIDE.png | Bin 0 -> 213 bytes .../hbm/textures/items/chem_icon_POLYMER.png | Bin 0 -> 274 bytes assets/hbm/textures/items/chem_icon_PUF6.png | Bin 0 -> 203 bytes .../textures/items/chem_icon_SF_BIOFUEL.png | Bin 0 -> 256 bytes .../textures/items/chem_icon_SF_BIOGAS.png | Bin 0 -> 255 bytes .../textures/items/chem_icon_SF_DIESEL.png | Bin 0 -> 257 bytes .../hbm/textures/items/chem_icon_SF_GAS.png | Bin 0 -> 246 bytes .../items/chem_icon_SF_HEATINGOIL.png | Bin 0 -> 229 bytes .../textures/items/chem_icon_SF_HEAVYOIL.png | Bin 0 -> 227 bytes .../textures/items/chem_icon_SF_KEROSENE.png | Bin 0 -> 250 bytes .../textures/items/chem_icon_SF_LIGHTOIL.png | Bin 0 -> 241 bytes .../textures/items/chem_icon_SF_LUBRICANT.png | Bin 0 -> 227 bytes .../textures/items/chem_icon_SF_NAPHTHA.png | Bin 0 -> 233 bytes .../hbm/textures/items/chem_icon_SF_OIL.png | Bin 0 -> 217 bytes .../textures/items/chem_icon_SF_PETROIL.png | Bin 0 -> 230 bytes .../textures/items/chem_icon_SF_PETROLEUM.png | Bin 0 -> 256 bytes .../textures/items/chem_icon_SF_RECLAIMED.png | Bin 0 -> 233 bytes .../hbm/textures/items/chem_icon_SF_SMEAR.png | Bin 0 -> 226 bytes assets/hbm/textures/items/chem_icon_STEAM.png | Bin 0 -> 209 bytes assets/hbm/textures/items/chem_icon_TEST.png | Bin 0 -> 164 bytes assets/hbm/textures/items/chem_icon_UF6.png | Bin 0 -> 186 bytes .../hbm/textures/items/schrabidium_hammer.png | Bin 318 -> 278 bytes assets/hbm/textures/items/turret_chip.png | Bin 0 -> 264 bytes .../hbm/textures/items/turret_flamer_ammo.png | Bin 0 -> 241 bytes .../hbm/textures/items/turret_heavy_ammo.png | Bin 0 -> 197 bytes .../hbm/textures/items/turret_light_ammo.png | Bin 0 -> 291 bytes .../textures/items/turret_missile_ammo.png | Bin 0 -> 335 bytes assets/hbm/textures/items/turret_tau_ammo.png | Bin 0 -> 456 bytes assets/hbm/textures/models/tank_BIOFUEL.png | Bin 0 -> 3862 bytes assets/hbm/textures/models/tank_BIOGAS.png | Bin 0 -> 5006 bytes com/hbm/blocks/bomb/TurretHeavy.java | 12 +-- com/hbm/inventory/MachineRecipes.java | 50 +++++++--- .../gui/GUIScreenTemplateFolder.java | 15 ++- com/hbm/items/ModItems.java | 6 ++ com/hbm/items/special/ItemCustomLore.java | 5 - com/hbm/items/tool/ItemAssemblyTemplate.java | 8 +- com/hbm/items/tool/ItemChemistryIcon.java | 72 ++++++++++++++ com/hbm/items/tool/ItemChemistryTemplate.java | 8 +- com/hbm/items/tool/ItemTurretChip.java | 38 +++++++ com/hbm/items/tool/ItemTurretControl.java | 14 +-- com/hbm/items/weapon/GunZOMG.java | 3 +- com/hbm/main/CraftingManager.java | 1 + com/hbm/main/NEIConfig.java | 54 +++++++--- com/hbm/packet/TEFluidPacket.java | 2 + com/hbm/packet/TEPumpjackPacket.java | 2 + .../tileentity/bomb/TileEntityTurretBase.java | 93 ++++++++++++++++++ .../machine/TileEntityMachineDiesel.java | 6 +- .../machine/TileEntityMachineTurbofan.java | 14 +++ 72 files changed, 351 insertions(+), 52 deletions(-) create mode 100644 assets/hbm/textures/items/chem_icon_ASPHALT.png create mode 100644 assets/hbm/textures/items/chem_icon_BP_BIOFUEL.png create mode 100644 assets/hbm/textures/items/chem_icon_BP_BIOGAS.png create mode 100644 assets/hbm/textures/items/chem_icon_CC_HEATING.png create mode 100644 assets/hbm/textures/items/chem_icon_CC_HEAVY.png create mode 100644 assets/hbm/textures/items/chem_icon_CC_I.png create mode 100644 assets/hbm/textures/items/chem_icon_CC_NAPHTHA.png create mode 100644 assets/hbm/textures/items/chem_icon_CC_OIL.png create mode 100644 assets/hbm/textures/items/chem_icon_CIRCUIT_4.png create mode 100644 assets/hbm/textures/items/chem_icon_CIRCUIT_5.png create mode 100644 assets/hbm/textures/items/chem_icon_COOLANT.png create mode 100644 assets/hbm/textures/items/chem_icon_DESH.png create mode 100644 assets/hbm/textures/items/chem_icon_DEUTERIUM.png create mode 100644 assets/hbm/textures/items/chem_icon_FC_DIESEL_KEROSENE.png create mode 100644 assets/hbm/textures/items/chem_icon_FC_GAS_PETROLEUM.png create mode 100644 assets/hbm/textures/items/chem_icon_FC_I_NAPHTHA.png create mode 100644 assets/hbm/textures/items/chem_icon_FC_KEROSENE_PETROLEUM.png create mode 100644 assets/hbm/textures/items/chem_icon_FP_HEAVYOIL.png create mode 100644 assets/hbm/textures/items/chem_icon_FP_LIGHTOIL.png create mode 100644 assets/hbm/textures/items/chem_icon_FP_NAPHTHA.png create mode 100644 assets/hbm/textures/items/chem_icon_FP_SMEAR.png create mode 100644 assets/hbm/textures/items/chem_icon_FR_PETROIL.png create mode 100644 assets/hbm/textures/items/chem_icon_FR_REOIL.png create mode 100644 assets/hbm/textures/items/chem_icon_PEROXIDE.png create mode 100644 assets/hbm/textures/items/chem_icon_POLYMER.png create mode 100644 assets/hbm/textures/items/chem_icon_PUF6.png create mode 100644 assets/hbm/textures/items/chem_icon_SF_BIOFUEL.png create mode 100644 assets/hbm/textures/items/chem_icon_SF_BIOGAS.png create mode 100644 assets/hbm/textures/items/chem_icon_SF_DIESEL.png create mode 100644 assets/hbm/textures/items/chem_icon_SF_GAS.png create mode 100644 assets/hbm/textures/items/chem_icon_SF_HEATINGOIL.png create mode 100644 assets/hbm/textures/items/chem_icon_SF_HEAVYOIL.png create mode 100644 assets/hbm/textures/items/chem_icon_SF_KEROSENE.png create mode 100644 assets/hbm/textures/items/chem_icon_SF_LIGHTOIL.png create mode 100644 assets/hbm/textures/items/chem_icon_SF_LUBRICANT.png create mode 100644 assets/hbm/textures/items/chem_icon_SF_NAPHTHA.png create mode 100644 assets/hbm/textures/items/chem_icon_SF_OIL.png create mode 100644 assets/hbm/textures/items/chem_icon_SF_PETROIL.png create mode 100644 assets/hbm/textures/items/chem_icon_SF_PETROLEUM.png create mode 100644 assets/hbm/textures/items/chem_icon_SF_RECLAIMED.png create mode 100644 assets/hbm/textures/items/chem_icon_SF_SMEAR.png create mode 100644 assets/hbm/textures/items/chem_icon_STEAM.png create mode 100644 assets/hbm/textures/items/chem_icon_TEST.png create mode 100644 assets/hbm/textures/items/chem_icon_UF6.png create mode 100644 assets/hbm/textures/items/turret_chip.png create mode 100644 assets/hbm/textures/items/turret_flamer_ammo.png create mode 100644 assets/hbm/textures/items/turret_heavy_ammo.png create mode 100644 assets/hbm/textures/items/turret_light_ammo.png create mode 100644 assets/hbm/textures/items/turret_missile_ammo.png create mode 100644 assets/hbm/textures/items/turret_tau_ammo.png create mode 100644 assets/hbm/textures/models/tank_BIOFUEL.png create mode 100644 assets/hbm/textures/models/tank_BIOGAS.png create mode 100644 com/hbm/items/tool/ItemChemistryIcon.java create mode 100644 com/hbm/items/tool/ItemTurretChip.java diff --git a/assets/hbm/textures/gui/fluids2.png b/assets/hbm/textures/gui/fluids2.png index 08a98abeda8fd675149bb065e7f726f3a57d6ce1..75641be0b49cf1de6f4920b881bc4259155c61f8 100755 GIT binary patch literal 11953 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 Q4m!k8-&C*symR#b0+1G-(f|Me literal 11439 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 H&f)(7pwM!( diff --git a/assets/hbm/textures/items/chem_icon_ASPHALT.png b/assets/hbm/textures/items/chem_icon_ASPHALT.png new file mode 100644 index 0000000000000000000000000000000000000000..37438f61551d804e20a7c6f219fa197a2e69b940 GIT binary patch literal 229 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#VfGU^|668>-h_3FBCsfyE|o`ae0v9DA|vp8xNd+g%xb@|f+Ub*zX zz11LaXk&VshbAM#j;lsrkDOV)`4#u#o7u&hPgnRS=QwwqcsfV%ScIf&{6_mtC+fcb a56rjRX_5ZVXJb9koeZ9?elF{r5}E+T09=;< literal 0 HcmV?d00001 diff --git a/assets/hbm/textures/items/chem_icon_BP_BIOFUEL.png b/assets/hbm/textures/items/chem_icon_BP_BIOFUEL.png new file mode 100644 index 0000000000000000000000000000000000000000..73bca44c7495a8a93567922f208519eb6d0db907 GIT binary patch literal 230 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#VfBHI#>~!V;5S#3 zH+=Hke^UgHGL#fNIKb$(Xzs+YrGM)GKb`gexBm4%|NqyYug^&|EM4~HfBAf`fBS!j zeER?YzwZCU#6}@DJ}W*JUEwFLq0LDL8nxLuq(1yJUM01|e&Sr))o=B}{wupH>Ik?q bGBY#muX5V`O1r`j=uievS3j3^P6=6zWtq^{crJZ zCb^CiX4V!K6Xx-Ku(V$5^|L-DMTHp%4xhO;QzNl);)H|)2M<29-{mb+B4co6W5VT{ y2L~9}tg|e5%Fw3h(r&hCbNbf1s3LEm(Nkm&UUlWL5?rARaFNb>)vRYx%=4C zDF%J<3HbMHwzcHFv}??X5YecYouG#@GuHE`Ms;tF3PxX{wo)|MG$U3jV#N z3m1ytz3}CzhPtDnm{r-UW|aGYAz literal 0 HcmV?d00001 diff --git a/assets/hbm/textures/items/chem_icon_CC_HEAVY.png b/assets/hbm/textures/items/chem_icon_CC_HEAVY.png new file mode 100644 index 0000000000000000000000000000000000000000..e0f0d88f14c615cef8eba36895086a2f2766ceba GIT binary patch literal 225 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#Vfq$Ih$#<_h*#l2@3&`^B<&EzD0=FtgjpEv_$cqTERG!TYl>TRLVPu}n`t zp3l&+q7`WTQV|A+wW4QgxWByQuKL+o$@!(}$eBCm%}esD=VnYu{yCBFFKglD=w~Ot z)R>#pTwe`H&U+2{_nhIFG UVw$`#8|X#`Pgg&ebxsLQ02!83fB*mh literal 0 HcmV?d00001 diff --git a/assets/hbm/textures/items/chem_icon_CC_I.png b/assets/hbm/textures/items/chem_icon_CC_I.png new file mode 100644 index 0000000000000000000000000000000000000000..efbf998ee4448d1f6460956e0893f5b35673634f GIT binary patch literal 225 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#Vf#esV0w9_Wc`gh@YI=*+@YJAaaSXBO zy&7Q2b;N*2hW)W$ebL7Hh)?tX9-egnhrb@nu?M+I0zpELl#X(-Sf#nKfA}s|;^gA| zC@TBI2X00sDNR)dhiqPk3)Sq#@m#vw7Mv{C@mjzsWW4z(|BTIx{kEL&+xL~-+VRfU zYu`_QUBu|?U*dnpa=tG+L(cvFoT?p-!kSB2Ldzr67jUxMsv8w=w#)q$e*Px^y+rF@ Ujn9M60-ea<>FVdQ&MBb@0Lz_FGynhq literal 0 HcmV?d00001 diff --git a/assets/hbm/textures/items/chem_icon_CC_OIL.png b/assets/hbm/textures/items/chem_icon_CC_OIL.png new file mode 100644 index 0000000000000000000000000000000000000000..aa029c58a85d676c7fb47063c2a973c4b43de83c GIT binary patch literal 217 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#VfK@a@xDTiOb=DuyUlS4fz4Gw4vTvR2mHPIV68CSg`O=~B<&#-S zjbTSb_TMsD1_h<=m+owgOSVpn`8(x7Yop-A&J(Wfljr}cSFH!S Ojlt8^&t;ucLK6V|q*wF+ literal 0 HcmV?d00001 diff --git a/assets/hbm/textures/items/chem_icon_CIRCUIT_4.png b/assets/hbm/textures/items/chem_icon_CIRCUIT_4.png new file mode 100644 index 0000000000000000000000000000000000000000..c250c1c4153dc6b34dc4597bdd9e81f41ba668c1 GIT binary patch literal 322 zcmV-I0lof-P)UQx<4Qmru>QMQ*}77&{lL% z913^mqi!ZMnQ3M^sc4!sle>Up)!lo$`}Xd^z2P}K^Ht&O?OrO~L#H@RnD#FK?DvlV zXdU7EHMMO}ii_<47%-b%Fvj3b)Nemu0HUJztO?Qtt)p556z@Jt#Hd%%pxU2cfj3d* zbQ%eq22wWfO2kz?4F4Iol=D?F&E5bwe2-8f#$P-)IUn(rE&L(R>LhsvN6{MC{=_t? zj=|TN^*SI(KbR07*qoM6N<$g7wCTy8r+H literal 0 HcmV?d00001 diff --git a/assets/hbm/textures/items/chem_icon_CIRCUIT_5.png b/assets/hbm/textures/items/chem_icon_CIRCUIT_5.png new file mode 100644 index 0000000000000000000000000000000000000000..714fc12625b35a1482f1fc5dfd93a1fa4d267517 GIT binary patch literal 305 zcmV-10nYx3P)^X9Q)Hy&>I0s0bI*?lg_7-m3 z8EjM-RJj_VExgt`i)2WZ{6^>x|IgQq;MMp@74kgysan@{LHD^PcFs|jB>>-t!&Gb< z*zM8@W^s4D0`PS@VXdX_djM3GVHnmEIOm{gkmC`46PVj=>JASHq6RU@c8jV4Ff91A z!8kr#O;!Ez`+eY}GboAzfV!?RRW&_jX=cp&3}&cmNb-Mp$pj+e=hazj1K+l7)F7H* zDSR3t;_*e^a&`;x?O<_MrPfbPmub44$rj JF6*2UngAaiWc~mE literal 0 HcmV?d00001 diff --git a/assets/hbm/textures/items/chem_icon_DESH.png b/assets/hbm/textures/items/chem_icon_DESH.png new file mode 100644 index 0000000000000000000000000000000000000000..e5065899b4437bb33ab5187bfc87a28dd8816360 GIT binary patch literal 252 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#VfrL z43;0x*`*#>)n@bH!2<^a#)p>Fh zs?D?YLxjV(W3RX8Ka`Mm2bP0l+XkKOb%)4 literal 0 HcmV?d00001 diff --git a/assets/hbm/textures/items/chem_icon_DEUTERIUM.png b/assets/hbm/textures/items/chem_icon_DEUTERIUM.png new file mode 100644 index 0000000000000000000000000000000000000000..6d60f0df02710147a3bf6b4b30be1c279aa4685a GIT binary patch literal 197 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#Vf{6FQ7~EU{Y}mfn^m?7-97#`=ylgC zrb$XGGpBjDeOer=^tnq&z~d69d{g_j?kAsEz8fhhO!<1-Q0kla>=YA)?GgzRDmrP6 t52hT^JaBc-&m*h8^6jYpJ*hsO^|hj%Zqm`+{6Kdwc)I$ztaD0e0sxzGN<;tv literal 0 HcmV?d00001 diff --git a/assets/hbm/textures/items/chem_icon_FC_DIESEL_KEROSENE.png b/assets/hbm/textures/items/chem_icon_FC_DIESEL_KEROSENE.png new file mode 100644 index 0000000000000000000000000000000000000000..61401b9314a64b5abb6151d1a0b1607f852f557f GIT binary patch literal 263 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#Vf9+AI%jZC`x&xmM@uVEm!j?N)`^XcjCzbu zg`YA_I$$*a)c^m}<9_wO;S$k*z@@Q>(T+J`+yD5gm;e7S|Nn5^0S|Tq=L?xFOtB(* zUO{er8WPgVANXS23|p2=aOK;xLig>I<6O)@z)(Lg>)E#@hw_0wVeoYIb6Mw<&;$Tf CduHPR literal 0 HcmV?d00001 diff --git a/assets/hbm/textures/items/chem_icon_FC_GAS_PETROLEUM.png b/assets/hbm/textures/items/chem_icon_FC_GAS_PETROLEUM.png new file mode 100644 index 0000000000000000000000000000000000000000..2e94b85b049d6b05b35d912ed55ed692bc4c79ec GIT binary patch literal 261 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#VfiaH%cX<@mti5M!`cIKQjwHsFtO0uiNOK z{=fQP`h)p}yXVcUUfv)$Ei8-)Qyn<7btmuI{NBUJW1?HawVNza z4eu8;bV#@dT|n>+GfG_MFJx#_xIl8F7jY83-RZnezb z8JrefFMqAgzf$>iYVG1Xby@RH1b3!bzMlPk*POcfTns!;+3{Dhp4Kl1`h&sK)z4*} HQ$iB}^C)G$ literal 0 HcmV?d00001 diff --git a/assets/hbm/textures/items/chem_icon_FC_I_NAPHTHA.png b/assets/hbm/textures/items/chem_icon_FC_I_NAPHTHA.png new file mode 100644 index 0000000000000000000000000000000000000000..7e28e9430a2a446728888d7637c3a5881ed23322 GIT binary patch literal 218 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#VfFpYoDz76f9kT28$ol0>KIE+) z=?Sw~GSAs}j|E(c1DR(rrhT+vxjF45>&vc1T634ocxG-DaD3wJ%SU`0R8yj#ukqZ; zY`(Wz|Ku)ahI9ADPab8S5Hsb!?)TcRt!FnO$rOVlw=KA*@Y(s6r<7fYPb z>6712mp9ZOtK2*Fjj1*v9@ zVh`K{8fNw?Ypjl%D8jH|=NsOJ@`bNs=DAD|O$|N$u1a{mldWRfl^B)Yi>2GIF)_?~ z_Tgia(gTfSuea|DdVV$hTW`_tjg@E0RVO`NlYj4X$)8#+h7U|(l5qhWCals0dWFH$ L)z4*}Q$iB}BuQwu literal 0 HcmV?d00001 diff --git a/assets/hbm/textures/items/chem_icon_FP_HEAVYOIL.png b/assets/hbm/textures/items/chem_icon_FP_HEAVYOIL.png new file mode 100644 index 0000000000000000000000000000000000000000..f43936e13a1f3a22a82d82f419005f11a6e2cd65 GIT binary patch literal 255 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#Vf( z&*qor=3iGY?$utudeZB+d=Fey3O?Plc9^~Gagp88a&^XD4^>bP0l+XkK D2a{;c literal 0 HcmV?d00001 diff --git a/assets/hbm/textures/items/chem_icon_FP_LIGHTOIL.png b/assets/hbm/textures/items/chem_icon_FP_LIGHTOIL.png new file mode 100644 index 0000000000000000000000000000000000000000..ee8bb41eba04d34936462fa78df44b0c18544037 GIT binary patch literal 310 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#VfU~b>%RjEpFkYXR%b=oJF4@yz;k7F3k;am(Vhk2i z=X;zVIEVV?O8@2CF@q(>hbhn8TP#)3U2*+$WgznWG_`edV@F8W)?2aZWgH<}KU}IZ zsI}e|>vt|vn4wIPXVMgg2`Vp>zkT58y%*E_HNk7$w==snYMcI-#vfL%SXsPP-B@hb zkBmhf9}ahZ@p7H3GCIR9#p{0!v>vl4$J>Sk*YR;h= WeAHserd*(}7(8A5T-G@yGywoBa&E8y literal 0 HcmV?d00001 diff --git a/assets/hbm/textures/items/chem_icon_FP_SMEAR.png b/assets/hbm/textures/items/chem_icon_FP_SMEAR.png new file mode 100644 index 0000000000000000000000000000000000000000..302af341c9900e475e6a79d34fade20a906b850e GIT binary patch literal 257 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#Vfcqp_mU&U*1Yy&DA+#5wPnpMu|k%&xApJa%R4A` zzu;p~Y>5~1WIGd6dd9M|p(En|l}7=cQ}!O0$_A}fv8=qo9-9Vkm{Z+A~S{qNtx2@D>;QKB6 zBt7x>I@Sj@R#ko`%*kgKC7$RJ`Eps9}9jCA;`9(DrE!?{8u)!0T5P{EP z*A!yk`yANG-19hMPOI}rzDt?Q&vi2?33X24)BY_v&DQtws_s8h`VyyXOdi#2S`73I NgQu&X%Q~loCIDF{Y|;P# literal 0 HcmV?d00001 diff --git a/assets/hbm/textures/items/chem_icon_FR_REOIL.png b/assets/hbm/textures/items/chem_icon_FR_REOIL.png new file mode 100644 index 0000000000000000000000000000000000000000..c14934e6b134a7cc1677eef591bca551e1f8d64c GIT binary patch literal 203 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#VfKg?-IUvRU%t^;flt}hx=9Rj~wu*cW0An`(u7BEGYp9G|u@ot#;&OW@l%&nU);h uoOGa(nVmzbVI7;QKw*dRgcWH=7#V)1D_2>mK8OOkhQZU-&t;ucLK6UTd)R=-hE;D9zxV?#t))iV74lQHE>*DVJ#gLAa5uK=KtqN^2lIBThPw~#m}J>Q z{-sQLVbQ;Pn)7SDNe1T?CN!_IQa9$_>auJKL&Hzg*5-!xnXUFsAzc%co>)vukG>*w z^6Ot)y*t|rq*ug!sH&PIY_MBlLuJtA&AoH|e{a{nRZ7gpPIH0jKk+}-QxFspHD zVEOgAv5m$Tzd394?ws@M*W0gr)u9?oowhvUniAyb#i^5t-tF2V)N^)@UI)wn>}Q-TMm`%~?8`I;x`x5i)z4*}Q$iB}C2CDv literal 0 HcmV?d00001 diff --git a/assets/hbm/textures/items/chem_icon_SF_BIOFUEL.png b/assets/hbm/textures/items/chem_icon_SF_BIOFUEL.png new file mode 100644 index 0000000000000000000000000000000000000000..5514b756f6cb5099984bed8b614be181d0505a3d GIT binary patch literal 256 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#Vf#%}|%kfLS^1EJGP5&rm=_q#dnO5Wzmc0)A4^lVzD(bNa)`d@<9}?}YS>g~- zcu$_KasMR?(?2Vpe|URg@tk|xbQ`$8-(AyVc+})t)K`{@uO3?5a?9JMmp(|9o$>S3 zQoW*QzU#%}|%kfLS|D|qz6No#^{X{_VwTzPZ301C-d@s$G7bw;+?O)yHxpnIlCw3Om z=YJCgerRuvRi0nvcc0I8`Q^1+8Pp`(LnV{DGUpV(;{5O`aFx!Ew^B2w$30srK5_Mw zT_NRKd%^S2`F}tkFnGH9xvXnn{Z+GYZUln_u;nEiK(9qCJXD#|(DSXH~=^j$?!aDMq=d?;8!HFT_ zhD8?+{w(s9^xDOxG~>9fR?xJk4?pc%$FPbar|et+hCHryvOjS$z_w3%?EAh($ literal 0 HcmV?d00001 diff --git a/assets/hbm/textures/items/chem_icon_SF_HEATINGOIL.png b/assets/hbm/textures/items/chem_icon_SF_HEATINGOIL.png new file mode 100644 index 0000000000000000000000000000000000000000..06f059560a99391f719b3a8e946796c3153939b2 GIT binary patch literal 229 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#Vf6M?%vxZu{=_y!}nD#c_t&*JQJ4_JUs=E+pG!b^oPay{pWXZQIztIpmt_wJ0o^UAEzxkL;-fH3BA2{?@oY$au82;a~Zp ztmW+Q3wGNxI2@HYYNDxXx~lj?-^a&NlMLD4TT~psemc@b^5CxQ2x+^Xb-UXXGkPA@ z?G3K8N!lE~w{dHkrLbVpIfey(LMB3jwO5z@cjUevwOw*bkl2RS#?Bl1p7qJo?g#pt X@Y!@X$yhM~UCH3->gTe~DWM4f)fH4t literal 0 HcmV?d00001 diff --git a/assets/hbm/textures/items/chem_icon_SF_KEROSENE.png b/assets/hbm/textures/items/chem_icon_SF_KEROSENE.png new file mode 100644 index 0000000000000000000000000000000000000000..5a86022412b2cd7254633f6ac6a6711dedbf9292 GIT binary patch literal 250 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#VfQuj$=A$ehBMKG|o2=PXX6hV+c|7c4&wIGTS2W=%Pg7wff$6_5{hVT1WBp~t^6K}D4!BVdh-EN^h z=MK!xYFoAL8q>olmbF_q#pLTjG9Gl_D%dFLG9vZzW>|c8+`@cngQC6?>T!D^f@O1TaS?83{1OPO+WUK%H literal 0 HcmV?d00001 diff --git a/assets/hbm/textures/items/chem_icon_SF_LIGHTOIL.png b/assets/hbm/textures/items/chem_icon_SF_LIGHTOIL.png new file mode 100644 index 0000000000000000000000000000000000000000..178ea10e6b6d3e19bf5b701cb6412e6eab5e1198 GIT binary patch literal 241 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#Vfm literal 0 HcmV?d00001 diff --git a/assets/hbm/textures/items/chem_icon_SF_LUBRICANT.png b/assets/hbm/textures/items/chem_icon_SF_LUBRICANT.png new file mode 100644 index 0000000000000000000000000000000000000000..dca30e9d1a7cfc94c7df32b9be55d3c431e344ce GIT binary patch literal 227 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#VfTwuDSEYWjVdpBN+> zBp&^~7iE0ufzA1!X=zh}7!Jrtm8hou`*HhTv*^3M_l;L<^($y?Ol6B-qI*^Ezx!T> YpI2NFVdQ&MBb@0L_tDO#lD@ literal 0 HcmV?d00001 diff --git a/assets/hbm/textures/items/chem_icon_SF_NAPHTHA.png b/assets/hbm/textures/items/chem_icon_SF_NAPHTHA.png new file mode 100644 index 0000000000000000000000000000000000000000..6d9b196efcac0debebff29044d15e190533a3085 GIT binary patch literal 233 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#VfG!b-$6cZKzmrd*Zvx)>Gy!_`dOC?NvOE2&@dEGm2&hcmV zt;hrQw=bT2_uA<3zZ(n(1Sif^TY6<@<`NGt>G%E_uZ@@)@~(3yoN4NqW%g~=0j`u~ zpH@8(;88T$`)x|Tvq<%F-lU$tXU?3kWNw(P^TOlIpF;CL{3e(429N9TJfB8~NvV_AQ^b$PjbvP(8E zgG$Q=pUFX!BJX-g*~KKM=BV^8IVv$-&3K0M;oT1}zmSnywxIajv9BIKzjWM4OYvH#kw7_=j;_n#DQjt9Dp N!PC{xWt~$(699u3QVswB literal 0 HcmV?d00001 diff --git a/assets/hbm/textures/items/chem_icon_SF_PETROIL.png b/assets/hbm/textures/items/chem_icon_SF_PETROIL.png new file mode 100644 index 0000000000000000000000000000000000000000..84bb29e184e91b872b3b0b903fc4bd771ee53e36 GIT binary patch literal 230 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#Vf#%}=>;6f-_cRR}V^()N^@pywpuAIn?O>kNOh4lUj@CMXkY|5?@-h8iRwnWx z-P-DAZEV^dd4Glimy~6mnx%PCnv*UayDfZc*BOR}+h3U^HY+Sz*1K101Jlfvd$ew_ zI&=80*L`|i;OM=~W{G5bW8A{r literal 0 HcmV?d00001 diff --git a/assets/hbm/textures/items/chem_icon_SF_PETROLEUM.png b/assets/hbm/textures/items/chem_icon_SF_PETROLEUM.png new file mode 100644 index 0000000000000000000000000000000000000000..cd10e6add4edda5ce5fc75461e0a1bf515599a29 GIT binary patch literal 256 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#Vfa^`YK;Tv}*;>3k;sFelF{r5}E*z CZD5c9 literal 0 HcmV?d00001 diff --git a/assets/hbm/textures/items/chem_icon_SF_RECLAIMED.png b/assets/hbm/textures/items/chem_icon_SF_RECLAIMED.png new file mode 100644 index 0000000000000000000000000000000000000000..5b0e27ba81b263b5db79e87dce5446d52401dc05 GIT binary patch literal 233 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#Vf1E;tTx`artDlG?lIGB`UU~E#7ipOhUbo{>bzlhY_F`}r&M6_ zG0fq=b>P;^&E-4p$}=oT>Peb4Ws=lY%ZlSa3VBb?XfBu8^Z4~somo8zcTLyu%DY{U zJuF~ytYH5=O?$bGH&@>~5VdM^Lx4J`RA^D69euX-xmhJKv5$54Qw=#IT`njxgN@xNAvc6g< literal 0 HcmV?d00001 diff --git a/assets/hbm/textures/items/chem_icon_SF_SMEAR.png b/assets/hbm/textures/items/chem_icon_SF_SMEAR.png new file mode 100644 index 0000000000000000000000000000000000000000..318306a9734bcf700bddc36c62d6b343f7b6c903 GIT binary patch literal 226 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#Vf@#GpZFmKpV_|*XKU6gy=Yu;xF&y|(ue#>dmDb2 zDfM0sR*6~1#4x4U?DCW#kJa8?DnAN%Pe%l)cuss$V>L@n>dmsY^21kO0@UvMIK_J#%KoRwf2n9S>pS{a2>_KgjX@-gn6@*USo98e4CaN7g4#{l748 XBD;-uFRNGr(2)$Du6{1-oD!Mci@2$Dz6#DXAN%^EF zTU~D~n6fkUoaG0F1T*m$d)e*2$Rw}t|9f0KPPvZ3FL|#`Kj-#!%0M?Uc)I$ztaD0e F0sy8CO>qDK literal 0 HcmV?d00001 diff --git a/assets/hbm/textures/items/chem_icon_TEST.png b/assets/hbm/textures/items/chem_icon_TEST.png new file mode 100644 index 0000000000000000000000000000000000000000..e936eab6fba9170b51e60191456a3c865026a331 GIT binary patch literal 164 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#Vf1&p`-eOf+ ho!Y4LVgK102LGczMlWj9B!HGPc)I$ztaD0e0syWSLX`jj literal 0 HcmV?d00001 diff --git a/assets/hbm/textures/items/schrabidium_hammer.png b/assets/hbm/textures/items/schrabidium_hammer.png index 88fa578d3a29076ec61ce6d64d2877b5c188967f..d0aa0169be0daab168a291aee2b43457c1f62289 100644 GIT binary patch delta 249 zcmVAQstlau5`PL9mEYC<7%7DAr^$llNwKe;`&$2}()y-4tAjNG0-x zBCc`jvH-ej{$*ciI5}a6SS}%i z{;qX@TFbP++N1?R>pT1`5v)z7JFqrkkies4v7j=B7Ub;+`F6`;+;#}CUXvC@baF=9 z?jv;WmPj<#2Y9GY|HMmpB>5hW)t|xuKf%BSi4uh>KD8;-00000NkvXXu0mjfL$_*# delta 290 zcmV+-0p0$V0=@!}C4Xl@O+f$vv5yP&t`O~$svh73R@v@1-z%)%Mi z>0z*;2y|e(5UKUk{sv&$IxvLbk3iO2Q6As7-)W1WqL;0Y0{D~jHG2~$ThBin$t6+| oz4jUGQgbq>J{uWO?a3=lUn2{o<#_9y?EnA(07*qoM6N<$f&qbeCjbBd diff --git a/assets/hbm/textures/items/turret_chip.png b/assets/hbm/textures/items/turret_chip.png new file mode 100644 index 0000000000000000000000000000000000000000..29034d31e48f52c8e34348fce447e4d339fa65b8 GIT binary patch literal 264 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#VfRhLn>00M|`?&4({BUrD?WlW;yDVF=xt*(T2W9Vx2$`p$m0!|PDS4UUGm9ceio1Mx zR=l)?#N~!J9EvB7&ydWFY>n;il{hn5KPBzOLUvrmJ5L|w730ZSUr6OsTi|zA#Zj(-SD@?ZH-}|R4_#c`JeT}Ab#3?V z|L-5Xzj9?~_NzOxsc{zt#d7VvG}C(+9kOMQ_}yM~D(Y8elEA}HPqrL?^t4c)OaGqk z=@^dgp8>m>!B nS_ebwbyvkVss{zXug_rXSXJzzA@{fi=w=2_S3j3^P6B_kh#;q%+6r qy~6$EmweuVhM)5r6HRzlFfpW5l&PQ7YAFV~gTd3)&t;ucLK6Tv?neLs literal 0 HcmV?d00001 diff --git a/assets/hbm/textures/items/turret_light_ammo.png b/assets/hbm/textures/items/turret_light_ammo.png new file mode 100644 index 0000000000000000000000000000000000000000..13143457cd7866de04832bda58738993e4ce1240 GIT binary patch literal 291 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#Vfj0B{SR1R|nu4>ZlPV;4&7CP(SNpH^ zs;h?HkDm|Ofp+ef^!o1fXz%IHnTjdDqGR?YCL}m;Gn>Vku>rxHZGZp$>VEjM(f!8Z m2j8#9^X%WBblqYHBSY&`pQh)wYde9yWbkzLb6Mw<&;$TpCVv6| literal 0 HcmV?d00001 diff --git a/assets/hbm/textures/items/turret_missile_ammo.png b/assets/hbm/textures/items/turret_missile_ammo.png new file mode 100644 index 0000000000000000000000000000000000000000..e75662c457a49e40fbbaf02b67b7b0792b60e031 GIT binary patch literal 335 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 literal 0 HcmV?d00001 diff --git a/com/hbm/blocks/bomb/TurretHeavy.java b/com/hbm/blocks/bomb/TurretHeavy.java index fc481eba0..2b7acc869 100644 --- a/com/hbm/blocks/bomb/TurretHeavy.java +++ b/com/hbm/blocks/bomb/TurretHeavy.java @@ -41,9 +41,9 @@ public class TurretHeavy extends TurretBase { if(!world.isRemote) { EntityBullet bullet = new EntityBullet(world); - bullet.posX = x + vector.xCoord * 2 + 0.5; - bullet.posY = y + vector.yCoord * 2 + 1; - bullet.posZ = z + vector.zCoord * 2 + 0.5; + bullet.posX = x + vector.xCoord * 1 + 0.5; + bullet.posY = y + vector.yCoord * 1 + 1; + bullet.posZ = z + vector.zCoord * 1 + 0.5; bullet.motionX = vector.xCoord * 3; bullet.motionY = vector.yCoord * 3; @@ -54,9 +54,9 @@ public class TurretHeavy extends TurretBase { world.spawnEntityInWorld(bullet); EntityGasFlameFX fx = new EntityGasFlameFX(world); - fx.posX = x + vector.xCoord * 2 + 0.5; - fx.posY = y + vector.yCoord * 2 + 1; - fx.posZ = z + vector.zCoord * 2 + 0.5; + fx.posX = x + vector.xCoord * 2.2 + 0.5; + fx.posY = y + vector.yCoord * 2.2 + 1; + fx.posZ = z + vector.zCoord * 2.2 + 0.5; world.spawnEntityInWorld(fx); } diff --git a/com/hbm/inventory/MachineRecipes.java b/com/hbm/inventory/MachineRecipes.java index 45470f2c5..b0728efe8 100644 --- a/com/hbm/inventory/MachineRecipes.java +++ b/com/hbm/inventory/MachineRecipes.java @@ -625,9 +625,6 @@ public class MachineRecipes { recipes.put(new ItemStack(Item.getItemFromBlock(ModBlocks.test_render)), getCentrifugeOutput(Item.getItemFromBlock(ModBlocks.test_render))); } - // [REDACTED] - // recipes.put(new ItemStack(ModItems.rod_quad_euphemium), - // getCentrifugeOutput(ModItems.rod_quad_euphemium)); recipes.put(new ItemStack(ModItems.cell_sas3), getCentrifugeOutput(ModItems.cell_sas3)); recipes.put(new ItemStack(ModItems.rod_uranium_fuel_depleted), getCentrifugeOutput(ModItems.rod_uranium_fuel_depleted)); @@ -694,9 +691,7 @@ public class MachineRecipes { recipes.put(new ItemStack(ModItems.rod_neptunium), getReactorOutput(ModItems.rod_neptunium)); recipes.put(new ItemStack(ModItems.rod_dual_neptunium), getReactorOutput(ModItems.rod_dual_neptunium)); recipes.put(new ItemStack(ModItems.rod_quad_neptunium), getReactorOutput(ModItems.rod_quad_neptunium)); - // [REDACTED] - // recipes.put(new ItemStack(ModItems.rod_quad_schrabidium), - // getReactorOutput(ModItems.rod_quad_schrabidium)); + recipes.put(new ItemStack(ModItems.rod_quad_schrabidium), getReactorOutput(ModItems.rod_quad_schrabidium)); recipes.put(new ItemStack(ModItems.rod_lithium), getReactorOutput(ModItems.rod_lithium)); recipes.put(new ItemStack(ModItems.rod_dual_lithium), getReactorOutput(ModItems.rod_dual_lithium)); recipes.put(new ItemStack(ModItems.rod_quad_lithium), getReactorOutput(ModItems.rod_quad_lithium)); @@ -2146,15 +2141,22 @@ public class MachineRecipes { list.add(new ItemStack(ModItems.bolt_dura_steel, 2)); list.add(new ItemStack(ModItems.drill_titanium, 1)); break; - case SCHRABTRANS: + case TELEPORTER: list.add(new ItemStack(ModItems.ingot_titanium, 6)); list.add(new ItemStack(ModItems.plate_advanced_alloy, 12)); list.add(new ItemStack(ModItems.plate_combine_steel, 4)); list.add(new ItemStack(ModItems.telepad, 1)); list.add(new ItemStack(ModItems.entanglement_kit, 1)); - list.add(new ItemStack(ModBlocks.machine_battery, 5)); + list.add(new ItemStack(ModBlocks.machine_battery, 2)); list.add(new ItemStack(ModItems.coil_magnetized_tungsten, 4)); break; + case SCHRABTRANS: + list.add(new ItemStack(ModItems.ingot_titanium, 24)); + list.add(new ItemStack(ModItems.plate_advanced_alloy, 18)); + list.add(new ItemStack(ModItems.plate_steel, 12)); + list.add(new ItemStack(ModBlocks.machine_battery, 5)); + list.add(new ItemStack(ModItems.ingot_magnetized_tungsten, 1)); + break; case CMB_FURNACE: list.add(new ItemStack(ModItems.ingot_steel, 8)); list.add(new ItemStack(ModItems.ingot_polymer, 6)); @@ -2283,6 +2285,10 @@ public class MachineRecipes { list.add(new ItemStack(ModItems.circuit_schrabidium, 2)); list.add(new ItemStack(ModItems.wire_magnetized_tungsten, 12)); break; + case FW_PORT: + list.add(new ItemStack(ModItems.ingot_tungsten, 6)); + list.add(new ItemStack(ModItems.plate_combine_steel, 4)); + break; case FW_MAGNET: list.add(new ItemStack(ModItems.plate_combine_steel, 10)); list.add(new ItemStack(ModItems.coil_magnetized_tungsten, 5)); @@ -3070,6 +3076,9 @@ public class MachineRecipes { case MINER: output = new ItemStack(ModBlocks.machine_drill, 1); break; + case TELEPORTER: + output = new ItemStack(ModBlocks.machine_teleporter, 1); + break; case SCHRABTRANS: output = new ItemStack(ModBlocks.machine_schrabidium_transmutator, 1); break; @@ -3139,6 +3148,9 @@ public class MachineRecipes { case LW_CORE: output = new ItemStack(ModBlocks.watz_core, 1); break; + case FW_PORT: + output = new ItemStack(ModBlocks.fwatz_hatch, 1); + break; case FW_MAGNET: output = new ItemStack(ModBlocks.fwatz_conductor, 1); break; @@ -3649,6 +3661,12 @@ public class MachineRecipes { case SF_PETROLEUM: input[0] = new FluidStack(600, FluidType.PETROLEUM); break; + case SF_BIOGAS: + input[0] = new FluidStack(400, FluidType.BIOGAS); + break; + case SF_BIOFUEL: + input[0] = new FluidStack(300, FluidType.BIOFUEL); + break; case POLYMER: input[0] = new FluidStack(600, FluidType.PETROLEUM); break; @@ -3659,7 +3677,7 @@ public class MachineRecipes { input[0] = new FluidStack(1000, FluidType.WATER); break; case BP_BIOFUEL: - input[0] = new FluidStack(1000, FluidType.BIOGAS); + input[0] = new FluidStack(2000, FluidType.BIOGAS); break; default: break; @@ -3747,6 +3765,14 @@ public class MachineRecipes { output[0] = new ItemStack(ModItems.solid_fuel, 1); output[1] = new ItemStack(ModItems.solid_fuel, 1); break; + case SF_BIOGAS: + output[0] = new ItemStack(ModItems.solid_fuel, 1); + output[1] = new ItemStack(ModItems.solid_fuel, 1); + break; + case SF_BIOFUEL: + output[0] = new ItemStack(ModItems.solid_fuel, 1); + output[1] = new ItemStack(ModItems.solid_fuel, 1); + break; case POLYMER: output[0] = new ItemStack(ModItems.ingot_polymer, 1); break; @@ -3827,13 +3853,13 @@ public class MachineRecipes { input[0] = new FluidStack(500, FluidType.DEUTERIUM); break; case STEAM: - input[0] = new FluidStack(1000, FluidType.DEUTERIUM); + input[0] = new FluidStack(1000, FluidType.STEAM); break; case BP_BIOGAS: - input[0] = new FluidStack(1000, FluidType.BIOGAS); + input[0] = new FluidStack(4000, FluidType.BIOGAS); break; case BP_BIOFUEL: - input[0] = new FluidStack(500, FluidType.BIOFUEL); + input[0] = new FluidStack(1000, FluidType.BIOFUEL); break; default: break; diff --git a/com/hbm/inventory/gui/GUIScreenTemplateFolder.java b/com/hbm/inventory/gui/GUIScreenTemplateFolder.java index 903b9b94b..767c05807 100644 --- a/com/hbm/inventory/gui/GUIScreenTemplateFolder.java +++ b/com/hbm/inventory/gui/GUIScreenTemplateFolder.java @@ -7,6 +7,7 @@ import java.util.List; import org.lwjgl.opengl.GL11; import com.hbm.handler.FluidTypeHandler.FluidType; +import com.hbm.inventory.MachineRecipes; import com.hbm.items.ModItems; import com.hbm.items.tool.ItemAssemblyTemplate.EnumAssemblyTemplate; import com.hbm.items.tool.ItemChemistryTemplate; @@ -174,8 +175,18 @@ public class GUIScreenTemplateFolder extends GuiScreen { } public void drawIcon(boolean b) { - if(stack != null) - itemRender.renderItemAndEffectIntoGUI(fontRendererObj, mc.getTextureManager(), stack, xPos + 1, yPos + 1); + try { + GL11.glDisable(GL11.GL_LIGHTING); + if(stack != null) { + if(stack.getItem() == ModItems.assembly_template) + itemRender.renderItemAndEffectIntoGUI(fontRendererObj, mc.getTextureManager(), MachineRecipes.getOutputFromTempate(stack), xPos + 1, yPos + 1); + else if(stack.getItem() == ModItems.chemistry_template) + itemRender.renderItemAndEffectIntoGUI(fontRendererObj, mc.getTextureManager(), new ItemStack(ModItems.chemistry_icon, 1, stack.getItemDamage()), xPos + 1, yPos + 1); + else + itemRender.renderItemAndEffectIntoGUI(fontRendererObj, mc.getTextureManager(), stack, xPos + 1, yPos + 1); + } + GL11.glEnable(GL11.GL_LIGHTING); + } catch(Exception x) { } } public void drawString(int x, int y) { diff --git a/com/hbm/items/ModItems.java b/com/hbm/items/ModItems.java index 6ae021e3b..7e90adf19 100644 --- a/com/hbm/items/ModItems.java +++ b/com/hbm/items/ModItems.java @@ -544,6 +544,7 @@ public class ModItems { public static Item template_folder; public static Item assembly_template; public static Item chemistry_template; + public static Item chemistry_icon; public static Item fluid_identifier; public static Item fluid_icon; @@ -923,6 +924,7 @@ public class ModItems { public static Item crate_caller; public static Item remote; public static Item turret_control; + public static Item turret_chip; public static Item chopper; public static Item bucket_mud; @@ -1750,11 +1752,13 @@ public class ModItems { linker = new ItemTeleLink().setUnlocalizedName("linker").setMaxStackSize(1).setCreativeTab(MainRegistry.tabNuke).setTextureName(RefStrings.MODID + ":linker"); oil_detector = new ItemOilDetector().setUnlocalizedName("oil_detector").setMaxStackSize(1).setCreativeTab(MainRegistry.tabNuke).setTextureName(RefStrings.MODID + ":oil_detector"); turret_control = new ItemTurretControl().setUnlocalizedName("turret_control").setFull3D().setMaxStackSize(1).setCreativeTab(MainRegistry.tabNuke).setTextureName(RefStrings.MODID + ":turret_control"); + turret_chip = new ItemTurretChip().setUnlocalizedName("turret_chip").setFull3D().setMaxStackSize(1).setCreativeTab(MainRegistry.tabNuke).setTextureName(RefStrings.MODID + ":turret_chip"); geiger_counter = new ItemGeigerCounter().setUnlocalizedName("geiger_counter").setMaxStackSize(1).setCreativeTab(MainRegistry.tabNuke).setTextureName(RefStrings.MODID + ":geiger_counter"); template_folder = new ItemTemplateFolder().setUnlocalizedName("template_folder").setMaxStackSize(1).setCreativeTab(MainRegistry.tabMachine).setTextureName(RefStrings.MODID + ":template_folder"); assembly_template = new ItemAssemblyTemplate().setUnlocalizedName("assembly_template").setMaxStackSize(1).setCreativeTab(MainRegistry.tabMachine).setTextureName(RefStrings.MODID + ":assembly_template"); chemistry_template = new ItemChemistryTemplate().setUnlocalizedName("chemistry_template").setMaxStackSize(1).setCreativeTab(MainRegistry.tabMachine).setTextureName(RefStrings.MODID + ":chemistry_template"); + chemistry_icon = new ItemChemistryIcon().setUnlocalizedName("chemistry_icon").setMaxStackSize(1).setCreativeTab(null); fluid_identifier = new ItemFluidIdentifier().setUnlocalizedName("fluid_identifier").setMaxStackSize(1).setCreativeTab(MainRegistry.tabMachine).setTextureName(RefStrings.MODID + ":fluid_identifier"); fluid_icon = new ItemFluidIcon().setUnlocalizedName("fluid_icon").setCreativeTab(null).setTextureName(RefStrings.MODID + ":fluid_icon"); fluid_tank_full = new ItemFluidTank().setUnlocalizedName("fluid_tank_full").setCreativeTab(MainRegistry.tabParts).setTextureName(RefStrings.MODID + ":fluid_tank"); @@ -2426,6 +2430,7 @@ public class ModItems { GameRegistry.registerItem(fluid_icon, fluid_icon.getUnlocalizedName()); GameRegistry.registerItem(assembly_template, assembly_template.getUnlocalizedName()); GameRegistry.registerItem(chemistry_template, chemistry_template.getUnlocalizedName()); + GameRegistry.registerItem(chemistry_icon, chemistry_icon.getUnlocalizedName()); //Machine Items GameRegistry.registerItem(fuse, fuse.getUnlocalizedName()); @@ -2576,6 +2581,7 @@ public class ModItems { GameRegistry.registerItem(designator, designator.getUnlocalizedName()); GameRegistry.registerItem(designator_range, designator_range.getUnlocalizedName()); GameRegistry.registerItem(turret_control, turret_control.getUnlocalizedName()); + GameRegistry.registerItem(turret_chip, turret_chip.getUnlocalizedName()); GameRegistry.registerItem(linker, linker.getUnlocalizedName()); GameRegistry.registerItem(oil_detector, oil_detector.getUnlocalizedName()); GameRegistry.registerItem(geiger_counter, geiger_counter.getUnlocalizedName()); diff --git a/com/hbm/items/special/ItemCustomLore.java b/com/hbm/items/special/ItemCustomLore.java index ccd52ec95..5f4c892bd 100644 --- a/com/hbm/items/special/ItemCustomLore.java +++ b/com/hbm/items/special/ItemCustomLore.java @@ -280,11 +280,6 @@ public class ItemCustomLore extends ItemRadioactive { { list.add("A quad fuel rod which contains a"); list.add("very small ammount of a strange new element."); - list.add(""); - list.add("If you tell anybody about this, I will"); - list.add("tear your living guts out and use them to"); - list.add("grease the treads of my tank."); - list.add("Got that? Good."); } if(this == ModItems.ingot_euphemium) diff --git a/com/hbm/items/tool/ItemAssemblyTemplate.java b/com/hbm/items/tool/ItemAssemblyTemplate.java index a1cb479dd..3ab543c4f 100644 --- a/com/hbm/items/tool/ItemAssemblyTemplate.java +++ b/com/hbm/items/tool/ItemAssemblyTemplate.java @@ -129,6 +129,7 @@ public class ItemAssemblyTemplate extends Item { CHEMPLANT, TANK, MINER, + TELEPORTER, SCHRABTRANS, CMB_FURNACE, FA_HULL, @@ -152,6 +153,7 @@ public class ItemAssemblyTemplate extends Item { LW_HATCH, LW_PORT, LW_CORE, + FW_PORT, FW_MAGNET, FW_COMPUTER, FW_CORE, @@ -506,8 +508,10 @@ public class ItemAssemblyTemplate extends Item { return 150; case MINER: return 200; - case SCHRABTRANS: + case TELEPORTER: return 300; + case SCHRABTRANS: + return 500; case CMB_FURNACE: return 150; case FA_HULL: @@ -552,6 +556,8 @@ public class ItemAssemblyTemplate extends Item { return 250; case LW_CORE: return 350; + case FW_PORT: + return 250; case FW_MAGNET: return 250; case FW_COMPUTER: diff --git a/com/hbm/items/tool/ItemChemistryIcon.java b/com/hbm/items/tool/ItemChemistryIcon.java new file mode 100644 index 000000000..8f6d6eee9 --- /dev/null +++ b/com/hbm/items/tool/ItemChemistryIcon.java @@ -0,0 +1,72 @@ +package com.hbm.items.tool; + +import java.util.List; + +import com.hbm.items.ModItems; +import com.hbm.items.tool.ItemChemistryTemplate.EnumChemistryTemplate; +import com.hbm.lib.RefStrings; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.creativetab.CreativeTabs; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.util.IIcon; +import net.minecraft.util.MathHelper; +import net.minecraft.util.ResourceLocation; +import net.minecraft.util.StatCollector; + +public class ItemChemistryIcon extends Item { + + @SideOnly(Side.CLIENT) + private IIcon[] icons; + + public ItemChemistryIcon() + { + this.setHasSubtypes(true); + this.setMaxDamage(0); + } + + public String getItemStackDisplayName(ItemStack stack) + { + String s = ("" + StatCollector.translateToLocal(ModItems.chemistry_template.getUnlocalizedName() + ".name")).trim(); + String s1 = ("" + StatCollector.translateToLocal("chem." + EnumChemistryTemplate.getEnum(stack.getItemDamage()).name())).trim(); + + if (s1 != null) + { + s = s + " " + s1; + } + + return s; + } + + @Override + @SideOnly(Side.CLIENT) + public void getSubItems(Item item, CreativeTabs tabs, List list) + { + for (int i = 0; i < EnumChemistryTemplate.values().length; ++i) + { + list.add(new ItemStack(item, 1, i)); + } + } + + @SideOnly(Side.CLIENT) + public void registerIcons(IIconRegister reg) + { + this.icons = new IIcon[EnumChemistryTemplate.values().length]; + + for (int i = 0; i < icons.length; ++i) + { + this.icons[i] = reg.registerIcon("hbm:chem_icon_" + EnumChemistryTemplate.getEnum(i).name()); + } + } + + @SideOnly(Side.CLIENT) + public IIcon getIconFromDamage(int i) + { + int j = MathHelper.clamp_int(i, 0, icons.length - 1); + return this.icons[j]; + } + +} diff --git a/com/hbm/items/tool/ItemChemistryTemplate.java b/com/hbm/items/tool/ItemChemistryTemplate.java index 408e1c86b..f2c25b59c 100644 --- a/com/hbm/items/tool/ItemChemistryTemplate.java +++ b/com/hbm/items/tool/ItemChemistryTemplate.java @@ -54,6 +54,8 @@ public class ItemChemistryTemplate extends Item { SF_KEROSENE, SF_GAS, SF_PETROLEUM, + SF_BIOGAS, + SF_BIOFUEL, BP_BIOGAS, BP_BIOFUEL, ASPHALT, @@ -188,6 +190,10 @@ public class ItemChemistryTemplate extends Item { return 20; case SF_PETROLEUM: return 20; + case SF_BIOGAS: + return 20; + case SF_BIOFUEL: + return 20; case POLYMER: return 100; case DEUTERIUM: @@ -197,7 +203,7 @@ public class ItemChemistryTemplate extends Item { case BP_BIOGAS: return 200; case BP_BIOFUEL: - return 300; + return 100; default: return 100; } diff --git a/com/hbm/items/tool/ItemTurretChip.java b/com/hbm/items/tool/ItemTurretChip.java new file mode 100644 index 000000000..6a21a4b25 --- /dev/null +++ b/com/hbm/items/tool/ItemTurretChip.java @@ -0,0 +1,38 @@ +package com.hbm.items.tool; + +import com.hbm.blocks.bomb.TurretBase; +import com.hbm.tileentity.bomb.TileEntityTurretBase; + +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.ChatComponentText; +import net.minecraft.world.World; + +public class ItemTurretChip extends Item { + + @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((world.getBlock(x, y, z) instanceof TurretBase)) + { + TileEntity te = world.getTileEntity(x, y, z); + if(te instanceof TileEntityTurretBase) { + ((TileEntityTurretBase)te).isAI = true; + ((TileEntityTurretBase)te).uuid = player.getUniqueID().toString(); + } + if(world.isRemote) + { + player.addChatMessage(new ChatComponentText("Turret ownership set to: " + player.getDisplayName())); + } + world.playSoundAtEntity(player, "hbm:item.techBleep", 1.0F, 1.0F); + + return true; + } + + return false; + } + +} diff --git a/com/hbm/items/tool/ItemTurretControl.java b/com/hbm/items/tool/ItemTurretControl.java index 475fb2234..fbd8a7d9f 100644 --- a/com/hbm/items/tool/ItemTurretControl.java +++ b/com/hbm/items/tool/ItemTurretControl.java @@ -42,12 +42,14 @@ public class ItemTurretControl extends Item { if(te != null && te instanceof TileEntityTurretBase) { TileEntityTurretBase turret = (TileEntityTurretBase)te; - turret.rotationYaw = player.rotationYaw; - turret.rotationPitch = player.rotationPitch; - if(turret.rotationPitch < -60) - turret.rotationPitch = -60; - if(turret.rotationPitch > 30) - turret.rotationPitch = 30; + if(!turret.isAI) { + turret.rotationYaw = player.rotationYaw; + turret.rotationPitch = player.rotationPitch; + if(turret.rotationPitch < -60) + turret.rotationPitch = -60; + if(turret.rotationPitch > 30) + turret.rotationPitch = 30; + } } } } diff --git a/com/hbm/items/weapon/GunZOMG.java b/com/hbm/items/weapon/GunZOMG.java index 26ad97c6b..d542ae056 100644 --- a/com/hbm/items/weapon/GunZOMG.java +++ b/com/hbm/items/weapon/GunZOMG.java @@ -85,7 +85,8 @@ public class GunZOMG extends Item { player.addChatMessage(new ChatComponentText("[ZOMG] Gun has been validated!")); } - if (Library.superuser.contains(player.getUniqueID().toString())) { + //if(Library.superuser.contains(player.getUniqueID().toString())) { + if(player.inventory.hasItem(ModItems.polaroid)) { if (world.isRemote) { player.addChatMessage(new ChatComponentText("[ZOMG] Welcome, superuser!")); } diff --git a/com/hbm/main/CraftingManager.java b/com/hbm/main/CraftingManager.java index 789d99feb..b3f278a9a 100644 --- a/com/hbm/main/CraftingManager.java +++ b/com/hbm/main/CraftingManager.java @@ -352,6 +352,7 @@ public class CraftingManager { GameRegistry.addShapelessRecipe(new ItemStack(ModItems.biomass, 4), new Object[] { Items.melon, Items.melon, Items.melon, Items.melon, Items.melon, Items.melon, Items.melon }); GameRegistry.addShapelessRecipe(new ItemStack(ModItems.biomass, 4), new Object[] { Items.apple, Items.apple, Items.apple, Items.apple, Items.apple, Items.apple, Items.apple, Items.apple, Items.apple }); + GameRegistry.addShapelessRecipe(new ItemStack(ModItems.biomass, 4), new Object[] { Items.reeds, Items.reeds, Items.reeds, Items.reeds, Items.reeds, Items.reeds, Items.reeds, Items.reeds, Items.reeds }); GameRegistry.addShapelessRecipe(new ItemStack(ModItems.biomass, 4), new Object[] { Items.rotten_flesh, Items.rotten_flesh, Items.rotten_flesh, Items.rotten_flesh, Items.rotten_flesh, Items.rotten_flesh, Items.rotten_flesh }); GameRegistry.addShapelessRecipe(new ItemStack(ModItems.biomass, 4), new Object[] { Items.carrot, Items.carrot, Items.carrot, Items.carrot, Items.carrot, Items.carrot, Items.carrot, Items.carrot, Items.carrot }); GameRegistry.addShapelessRecipe(new ItemStack(ModItems.biomass, 4), new Object[] { Items.potato, Items.potato, Items.potato, Items.potato, Items.potato, Items.potato, Items.potato, Items.potato, Items.potato }); diff --git a/com/hbm/main/NEIConfig.java b/com/hbm/main/NEIConfig.java index ef12a86d8..466477220 100644 --- a/com/hbm/main/NEIConfig.java +++ b/com/hbm/main/NEIConfig.java @@ -40,8 +40,8 @@ public class NEIConfig implements IConfigureNEI { API.registerUsageHandler(new AssemblerRecipeHandler()); API.registerRecipeHandler(new RefineryRecipeHandler()); API.registerUsageHandler(new RefineryRecipeHandler()); - API.registerRecipeHandler(new ModInfoHandler()); - API.registerUsageHandler(new ModInfoHandler()); + //API.registerRecipeHandler(new ModInfoHandler()); + //API.registerUsageHandler(new ModInfoHandler()); API.registerRecipeHandler(new ChemplantRecipeHandler()); API.registerUsageHandler(new ChemplantRecipeHandler()); API.registerRecipeHandler(new FluidRecipeHandler()); @@ -60,21 +60,45 @@ public class NEIConfig implements IConfigureNEI { API.hideItem(new ItemStack(Item.getItemFromBlock(ModBlocks.statue_elb_f))); API.hideItem(new ItemStack(Item.getItemFromBlock(ModBlocks.cheater_virus))); API.hideItem(new ItemStack(Item.getItemFromBlock(ModBlocks.cheater_virus_seed))); - API.hideItem(new ItemStack(ModItems.euphemium_helmet)); - API.hideItem(new ItemStack(ModItems.euphemium_plate)); - API.hideItem(new ItemStack(ModItems.euphemium_legs)); - API.hideItem(new ItemStack(ModItems.euphemium_boots)); - API.hideItem(new ItemStack(ModItems.apple_euphemium)); - API.hideItem(new ItemStack(ModItems.ingot_euphemium)); - API.hideItem(new ItemStack(ModItems.nugget_euphemium)); + //API.hideItem(new ItemStack(ModItems.euphemium_helmet)); + //API.hideItem(new ItemStack(ModItems.euphemium_plate)); + //API.hideItem(new ItemStack(ModItems.euphemium_legs)); + //API.hideItem(new ItemStack(ModItems.euphemium_boots)); + //API.hideItem(new ItemStack(ModItems.apple_euphemium)); + //API.hideItem(new ItemStack(ModItems.ingot_euphemium)); + //API.hideItem(new ItemStack(ModItems.nugget_euphemium)); API.hideItem(new ItemStack(ModItems.euphemium_kit)); - API.hideItem(new ItemStack(ModItems.euphemium_stopper)); - API.hideItem(new ItemStack(ModItems.watch)); - API.hideItem(new ItemStack(ModItems.rod_quad_euphemium)); - API.hideItem(new ItemStack(ModItems.rod_euphemium)); - API.hideItem(new ItemStack(ModItems.book_secret)); - if(MainRegistry.polaroidID != 11) + //API.hideItem(new ItemStack(ModItems.euphemium_stopper)); + //API.hideItem(new ItemStack(ModItems.watch)); + //API.hideItem(new ItemStack(ModItems.rod_quad_euphemium)); + //API.hideItem(new ItemStack(ModItems.rod_euphemium)); + if(MainRegistry.polaroidID != 11) { + API.hideItem(new ItemStack(ModItems.book_secret)); API.hideItem(new ItemStack(ModItems.burnt_bark)); + } + API.hideItem(new ItemStack(ModBlocks.dummy_block_assembler)); + API.hideItem(new ItemStack(ModBlocks.dummy_block_centrifuge)); + API.hideItem(new ItemStack(ModBlocks.dummy_block_chemplant)); + API.hideItem(new ItemStack(ModBlocks.dummy_block_cyclotron)); + API.hideItem(new ItemStack(ModBlocks.dummy_block_drill)); + API.hideItem(new ItemStack(ModBlocks.dummy_block_flare)); + API.hideItem(new ItemStack(ModBlocks.dummy_block_fluidtank)); + API.hideItem(new ItemStack(ModBlocks.dummy_block_igenerator)); + API.hideItem(new ItemStack(ModBlocks.dummy_block_pumpjack)); + API.hideItem(new ItemStack(ModBlocks.dummy_block_refinery)); + API.hideItem(new ItemStack(ModBlocks.dummy_block_turbofan)); + API.hideItem(new ItemStack(ModBlocks.dummy_block_well)); + API.hideItem(new ItemStack(ModBlocks.dummy_port_assembler)); + API.hideItem(new ItemStack(ModBlocks.dummy_port_chemplant)); + API.hideItem(new ItemStack(ModBlocks.dummy_port_cyclotron)); + API.hideItem(new ItemStack(ModBlocks.dummy_port_drill)); + API.hideItem(new ItemStack(ModBlocks.dummy_port_flare)); + API.hideItem(new ItemStack(ModBlocks.dummy_port_fluidtank)); + API.hideItem(new ItemStack(ModBlocks.dummy_port_igenerator)); + API.hideItem(new ItemStack(ModBlocks.dummy_port_pumpjack)); + API.hideItem(new ItemStack(ModBlocks.dummy_port_refinery)); + API.hideItem(new ItemStack(ModBlocks.dummy_port_turbofan)); + API.hideItem(new ItemStack(ModBlocks.dummy_port_well)); } @Override diff --git a/com/hbm/packet/TEFluidPacket.java b/com/hbm/packet/TEFluidPacket.java index 4aa70a3a1..405b19cc5 100644 --- a/com/hbm/packet/TEFluidPacket.java +++ b/com/hbm/packet/TEFluidPacket.java @@ -58,6 +58,7 @@ public class TEFluidPacket implements IMessage { @Override public IMessage onMessage(TEFluidPacket m, MessageContext ctx) { + try{ TileEntity te = Minecraft.getMinecraft().theWorld.getTileEntity(m.x, m.y, m.z); if (te != null && te instanceof IFluidContainer) { @@ -66,6 +67,7 @@ public class TEFluidPacket implements IMessage { gen.setFillstate(m.fill, m.index); gen.setType(FluidType.getEnum(m.type), m.index); } + } catch(Exception x) { } return null; } } diff --git a/com/hbm/packet/TEPumpjackPacket.java b/com/hbm/packet/TEPumpjackPacket.java index 25f3b784f..aefb80281 100644 --- a/com/hbm/packet/TEPumpjackPacket.java +++ b/com/hbm/packet/TEPumpjackPacket.java @@ -54,6 +54,7 @@ public class TEPumpjackPacket implements IMessage { @Override public IMessage onMessage(TEPumpjackPacket m, MessageContext ctx) { + try { TileEntity te = Minecraft.getMinecraft().theWorld.getTileEntity(m.x, m.y, m.z); if (te != null && te instanceof TileEntityMachinePumpjack) { @@ -62,6 +63,7 @@ public class TEPumpjackPacket implements IMessage { gen.rotation = m.spin; gen.isProgressing = m.progress; } + } catch(Exception x) { } return null; } } diff --git a/com/hbm/tileentity/bomb/TileEntityTurretBase.java b/com/hbm/tileentity/bomb/TileEntityTurretBase.java index 037f344bc..d190f43f3 100644 --- a/com/hbm/tileentity/bomb/TileEntityTurretBase.java +++ b/com/hbm/tileentity/bomb/TileEntityTurretBase.java @@ -1,25 +1,100 @@ package com.hbm.tileentity.bomb; +import com.hbm.blocks.bomb.TurretBase; import com.hbm.packet.LoopedSoundPacket; import com.hbm.packet.PacketDispatcher; import com.hbm.packet.TETurretPacket; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.entity.Entity; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.entity.player.EntityPlayer; +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; +import net.minecraft.util.MovingObjectPosition; +import net.minecraft.util.Vec3; public abstract class TileEntityTurretBase extends TileEntity { public double rotationYaw; public double rotationPitch; + public boolean isAI = false; + public String uuid; + public int use; @Override public void updateEntity() { + + if(isAI) { + + Object[] iter = worldObj.loadedEntityList.toArray(); + double radius = 500; + Entity target = null; + for (int i = 0; i < iter.length; i++) + { + Entity e = (Entity) iter[i]; + if (isInSight(e)) + { + double distance = e.getDistanceSq(xCoord + 0.5, yCoord + 0.5, zCoord + 0.5); + if (distance < radius) + { + radius = distance; + target = e; + } + } + } + + if(target != null) { + Vec3 turret = Vec3.createVectorHelper(target.posX - (xCoord + 0.5), target.posY + target.getEyeHeight() - (yCoord + 1), target.posZ - (zCoord + 0.5)); + rotationPitch = -Math.asin(turret.yCoord/turret.lengthVector()) * 180 / Math.PI; + rotationYaw = -Math.atan2(turret.xCoord, turret.zCoord) * 180 / Math.PI; + + if(rotationPitch < -60) + rotationPitch = -60; + if(rotationPitch > 30) + rotationPitch = 30; + + use++; + + if(worldObj.getBlock(xCoord, yCoord, zCoord) instanceof TurretBase) { + ((TurretBase)worldObj.getBlock(xCoord, yCoord, zCoord)).executeHoldAction(worldObj, use, rotationYaw, rotationPitch, xCoord, yCoord, zCoord); + } + + } else { + use = 0; + } + } + if(!worldObj.isRemote) PacketDispatcher.wrapper.sendToAll(new TETurretPacket(xCoord, yCoord, zCoord, rotationYaw, rotationPitch)); } + private boolean isInSight(Entity e) { + if(!(e instanceof EntityLivingBase)) + return false; + + if(e instanceof EntityPlayer && ((EntityPlayer)e).getUniqueID().toString().equals(uuid)) + return false; + + Vec3 turret = Vec3.createVectorHelper(xCoord + 0.5, yCoord + 1, zCoord + 0.5); + Vec3 entity = Vec3.createVectorHelper(e.posX, e.posY + e.getEyeHeight(), e.posZ); + Vec3 side = Vec3.createVectorHelper(entity.xCoord - turret.xCoord, entity.yCoord - turret.yCoord, entity.zCoord - turret.zCoord); + side = side.normalize(); + + turret.xCoord += side.xCoord * 1.5; + turret.yCoord += side.yCoord * 1.5; + turret.zCoord += side.zCoord * 1.5; + + MovingObjectPosition pos = worldObj.rayTraceBlocks(entity, turret); + + return true; + //return pos != null; + } + @Override public AxisAlignedBB getRenderBoundingBox() { return TileEntity.INFINITE_EXTENT_AABB; @@ -31,5 +106,23 @@ public abstract class TileEntityTurretBase extends TileEntity { { return 65536.0D; } + + @Override + public void readFromNBT(NBTTagCompound nbt) { + super.readFromNBT(nbt); + rotationYaw = nbt.getDouble("yaw"); + rotationPitch = nbt.getDouble("pitch"); + isAI = nbt.getBoolean("AI"); + uuid = nbt.getString("player"); + } + + @Override + public void writeToNBT(NBTTagCompound nbt) { + super.writeToNBT(nbt); + nbt.setDouble("yaw", rotationYaw); + nbt.setDouble("pitch", rotationPitch); + nbt.setBoolean("AI", isAI); + nbt.setString("player", uuid); + } } diff --git a/com/hbm/tileentity/machine/TileEntityMachineDiesel.java b/com/hbm/tileentity/machine/TileEntityMachineDiesel.java index a82b9b1f2..bd6e48d87 100644 --- a/com/hbm/tileentity/machine/TileEntityMachineDiesel.java +++ b/com/hbm/tileentity/machine/TileEntityMachineDiesel.java @@ -238,11 +238,11 @@ public class TileEntityMachineDiesel extends TileEntity implements ISidedInvento public int getHEFromFuel() { FluidType type = tank.getTankType(); if(type.name().equals(FluidType.DIESEL.name())) - return 250; + return 500; if(type.name().equals(FluidType.PETROIL.name())) - return 150; + return 300; if(type.name().equals(FluidType.BIOFUEL.name())) - return 200; + return 400; return 0; } diff --git a/com/hbm/tileentity/machine/TileEntityMachineTurbofan.java b/com/hbm/tileentity/machine/TileEntityMachineTurbofan.java index d92719db7..da4adab98 100644 --- a/com/hbm/tileentity/machine/TileEntityMachineTurbofan.java +++ b/com/hbm/tileentity/machine/TileEntityMachineTurbofan.java @@ -23,6 +23,8 @@ import com.hbm.packet.PacketDispatcher; import com.hbm.packet.TEIGeneratorPacket; import com.hbm.packet.TETurbofanPacket; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.entity.Entity; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.ISidedInventory; @@ -555,4 +557,16 @@ public class TileEntityMachineTurbofan extends TileEntity implements ISidedInven if(type.name().equals(tank.getTankType().name())) tank.setFill(i); } + + @Override + public AxisAlignedBB getRenderBoundingBox() { + return TileEntity.INFINITE_EXTENT_AABB; + } + + @Override + @SideOnly(Side.CLIENT) + public double getMaxRenderDistanceSquared() + { + return 65536.0D; + } }