From 57363a81a5a1f1818c5c37359180af2c590bb5c8 Mon Sep 17 00:00:00 2001 From: HbmMods Date: Sat, 2 May 2020 01:44:35 +0200 Subject: [PATCH] satellite rework, more soyuz stuff, new textures --- assets/hbm/lang/de_DE.lang | 11 +- assets/hbm/lang/en_US.lang | 11 +- assets/hbm/sounds.json | 4 +- assets/hbm/sounds/alarm/soyuzed.ogg | Bin 0 -> 117613 bytes assets/hbm/textures/blocks/block_euphemium | Bin 0 -> 297 bytes assets/hbm/textures/blocks/soyuz_capsule.png | Bin 0 -> 377 bytes .../textures/gui/satellites/gui_sat_coord.png | Bin 0 -> 3020 bytes .../{ => satellites}/gui_sat_interface.png | Bin .../textures/items/ammo_12gauge_marauder.png | Bin 0 -> 381 bytes assets/hbm/textures/items/ammo_grenade.png | Bin 288 -> 363 bytes assets/hbm/textures/items/ammo_grenade_FG.png | Bin 232 -> 358 bytes .../items/ammo_grenade_concussion.png | Bin 291 -> 340 bytes .../textures/items/ammo_grenade_finned.png | Bin 279 -> 357 bytes assets/hbm/textures/items/ammo_grenade_he.png | Bin 307 -> 359 bytes .../items/ammo_grenade_incendiary.png | Bin 308 -> 369 bytes .../textures/items/ammo_grenade_nuclear.png | Bin 300 -> 336 bytes .../hbm/textures/items/ammo_grenade_sleek.png | Bin 285 -> 327 bytes .../hbm/textures/items/ammo_grenade_toxic.png | Bin 308 -> 352 bytes assets/hbm/textures/items/sat_coord.png | Bin 0 -> 280 bytes assets/hbm/textures/items/sat_gerald.png | Bin 662 -> 822 bytes assets/hbm/textures/items/sat_gerald_mask.png | Bin 0 -> 303 bytes assets/hbm/textures/items/soyuz_0.png | Bin 0 -> 245 bytes assets/hbm/textures/items/soyuz_1.png | Bin 0 -> 253 bytes assets/hbm/textures/items/soyuz_2.png | Bin 0 -> 355 bytes com/hbm/entity/missile/EntityCarrier.java | 33 +---- com/hbm/entity/missile/EntitySoyuz.java | 35 ++++- com/hbm/handler/BulletConfigSyncingUtil.java | 2 + com/hbm/handler/GUIHandler.java | 2 + com/hbm/handler/guncfg/Gun12GaugeFactory.java | 33 +++++ com/hbm/inventory/MachineRecipes.java | 9 +- com/hbm/inventory/gui/GUIRadiobox.java | 2 - com/hbm/inventory/gui/GUIScreenSatCoord.java | 139 ++++++++++++++++++ .../inventory/gui/GUIScreenSatInterface.java | 57 +++---- com/hbm/inventory/gui/GUISoyuzLauncher.java | 18 ++- com/hbm/items/ModItems.java | 9 +- com/hbm/items/special/ItemCustomLore.java | 5 + com/hbm/items/special/ItemSoyuz.java | 28 +++- com/hbm/items/tool/ItemSatInterface.java | 39 +++-- com/hbm/items/weapon/ItemAmmo.java | 4 + com/hbm/main/MainRegistry.java | 14 +- com/hbm/packet/PacketDispatcher.java | 4 +- com/hbm/packet/SatCoordPacket.java | 71 +++++++++ com/hbm/packet/SatLaserPacket.java | 41 ++---- com/hbm/packet/SatPanelPacket.java | 73 +++++---- com/hbm/saveddata/SatelliteSaveStructure.java | 65 -------- com/hbm/saveddata/SatelliteSavedData.java | 64 +++++--- com/hbm/saveddata/satellites/Satellite.java | 123 ++++++++++++++++ .../satellites/SatelliteHorizons.java | 19 +++ .../saveddata/satellites/SatelliteLaser.java | 42 ++++++ .../saveddata/satellites/SatelliteMapper.java | 9 ++ .../saveddata/satellites/SatelliteMiner.java | 20 +++ .../saveddata/satellites/SatelliteRadar.java | 10 ++ .../saveddata/satellites/SatelliteRelay.java | 19 +++ .../satellites/SatelliteResonator.java | 9 ++ .../satellites/SatelliteScanner.java | 9 ++ .../tileentity/machine/TileEntityAMSBase.java | 4 +- .../machine/TileEntityMachineSatDock.java | 15 +- .../machine/TileEntitySoyuzLauncher.java | 46 +++++- 58 files changed, 844 insertions(+), 254 deletions(-) create mode 100644 assets/hbm/sounds/alarm/soyuzed.ogg create mode 100644 assets/hbm/textures/blocks/block_euphemium create mode 100644 assets/hbm/textures/blocks/soyuz_capsule.png create mode 100644 assets/hbm/textures/gui/satellites/gui_sat_coord.png rename assets/hbm/textures/gui/{ => satellites}/gui_sat_interface.png (100%) create mode 100644 assets/hbm/textures/items/ammo_12gauge_marauder.png create mode 100644 assets/hbm/textures/items/sat_coord.png create mode 100644 assets/hbm/textures/items/sat_gerald_mask.png create mode 100644 assets/hbm/textures/items/soyuz_0.png create mode 100644 assets/hbm/textures/items/soyuz_1.png create mode 100644 assets/hbm/textures/items/soyuz_2.png create mode 100644 com/hbm/inventory/gui/GUIScreenSatCoord.java create mode 100644 com/hbm/packet/SatCoordPacket.java delete mode 100644 com/hbm/saveddata/SatelliteSaveStructure.java create mode 100644 com/hbm/saveddata/satellites/Satellite.java create mode 100644 com/hbm/saveddata/satellites/SatelliteHorizons.java create mode 100644 com/hbm/saveddata/satellites/SatelliteLaser.java create mode 100644 com/hbm/saveddata/satellites/SatelliteMapper.java create mode 100644 com/hbm/saveddata/satellites/SatelliteMiner.java create mode 100644 com/hbm/saveddata/satellites/SatelliteRadar.java create mode 100644 com/hbm/saveddata/satellites/SatelliteRelay.java create mode 100644 com/hbm/saveddata/satellites/SatelliteResonator.java create mode 100644 com/hbm/saveddata/satellites/SatelliteScanner.java diff --git a/assets/hbm/lang/de_DE.lang b/assets/hbm/lang/de_DE.lang index e072d9fec..7d68af631 100644 --- a/assets/hbm/lang/de_DE.lang +++ b/assets/hbm/lang/de_DE.lang @@ -45,6 +45,12 @@ achievement.nuclear=Atomwissenschaft achievement.nuclear.desc=Bobmazon Level 5 (Urankernbrennstoff) achievement.hidden=Versteckter Katalog achievement.hidden.desc=Töte einen Enderman mit einem fallenden Güterwagon wärend du brennst und mehr als 250 RADs hast. +achievement.horizonsStart=The Horizons? +achievement.horizonsStart.desc=Sende einen netten Typen zum Mond. +achievement.horizonsEnd=The Horizons. +achievement.horizonsEnd.desc=Bring Tom nach Hause. +achievement.horizonsBonus=The Horizons! +achievement.horizonsBonus.desc=mist kacke mist kacke mist kacke mist kacke mist kacke mist kacke mist kacke mist kacke mist kacke mist kacke mist kacke mist kacke mist kacke mist kacke mist kacke potion.hbm_taint=Verdorben potion.hbm_mutation=Verdorbenes Herz @@ -474,6 +480,8 @@ tile.machine_reactor_small.name=Atomreaktor container.reactorSmall=Atomreaktor tile.machine_controller.name=Reaktorfernsteuerung container.reactorControl=Reaktorfernsteuerung +tile.soyuz_capsule.name=Landekapsel +container.soyuzCapsule=Landekapsel tile.barrel_plastic.name=Sicheres Fass™ tile.barrel_corroded.name=Verrostetes Fass @@ -1484,6 +1492,7 @@ item.ammo_12gauge.name=Kaliber 12 Schrot item.ammo_12gauge_incendiary.name=Kaliber 12 Schrot (Brand) item.ammo_12gauge_shrapnel.name=Kaliber 12 Schrot (Schrapnell) item.ammo_12gauge_du.name=Kaliber 12 Schrot (Uranbeschichtung) +item.ammo_12gauge_marauder.name=Kaliber 12 Taktische Anti-Marauder Schrotpatrone item.ammo_20gauge.name=Kaliber 20 Schrot item.ammo_20gauge_slug.name=Kaliber 20 Brenneke item.ammo_20gauge_flechette.name=Kaliber 20 Flechet @@ -1889,7 +1898,7 @@ item.missile_custom.name=Spezialgefertigte Rakete item.missile_carrier.name=HTR-01 Trägerrakete item.missile_soyuz.name=Soyuz-FG -item.missile_soyuz_lander.name=Soyuz-Orbitalmodul +item.missile_soyuz_lander.name=Orbitalmodul item.sat_mapper.name=Oberflächen-Abtastungssatellit item.sat_scanner.name=Satellit mit Tiefenscanning-Modul item.sat_radar.name=Radar-Überwachungssatellit diff --git a/assets/hbm/lang/en_US.lang b/assets/hbm/lang/en_US.lang index 0d3b4e4b3..bb8e0415c 100644 --- a/assets/hbm/lang/en_US.lang +++ b/assets/hbm/lang/en_US.lang @@ -45,6 +45,12 @@ achievement.nuclear=Atomic Science achievement.nuclear.desc=Bobmazon Level 5 (Uranium Fuel) achievement.hidden=Hidden Catalog achievement.hidden.desc=Kill an enderman with a falling boxcar while being on fire and having more than 250 RADs. +achievement.horizonsStart=The Horizons? +achievement.horizonsStart.desc=Send a lad to the moon. +achievement.horizonsEnd=The Horizons. +achievement.horizonsEnd.desc=Send Tom home. +achievement.horizonsBonus=The Horizons! +achievement.horizonsBonus.desc=oh poop oh crap oh poop oh crap oh poop oh crap oh poop oh crap oh poop oh crap oh poop oh crap oh poop oh crap oh poop oh crap oh poop oh crap oh poop oh crap potion.hbm_taint=Tainted potion.hbm_mutation=Tainted Heart @@ -474,6 +480,8 @@ tile.machine_reactor_small.name=Nuclear Reactor container.reactorSmall=Nuclear Reactor tile.machine_controller.name=Reactor Remote Control Block container.reactorControl=Reactor Remote Control Block +tile.soyuz_capsule.name=Cargo Landing Capsule +container.soyuzCapsule=Cargo Landing Capsule tile.barrel_plastic.name=Safe Barrel™ tile.barrel_corroded.name=Corroded Barrel @@ -1484,6 +1492,7 @@ item.ammo_12gauge.name=12 Gauge Buckshot item.ammo_12gauge_incendiary.name=12 Gauge Buckshot (Incendiary) item.ammo_12gauge_shrapnel.name=12 Gauge Buckshot (Shrapnel) item.ammo_12gauge_du.name=12 Gauge Buckshot (Uranium Coated) +item.ammo_12gauge_marauder.name=12 Gauge Tactical Anti-Marauder Shell item.ammo_20gauge.name=20 Gauge Buckshot item.ammo_20gauge_slug.name=20 Gauge Brenneke Slug item.ammo_20gauge_flechette.name=20 Gauge Flechette Shell @@ -1889,7 +1898,7 @@ item.missile_custom.name=Custom Missile item.missile_carrier.name=HTR-01 Carrier Rocket item.missile_soyuz.name=Soyuz-FG -item.missile_soyuz_lander.name=Soyuz Orbital Module +item.missile_soyuz_lander.name=Orbital Module item.sat_mapper.name=Surface Mapping Satellite item.sat_scanner.name=Satellite with Depth-Resource Scanning Module item.sat_radar.name=Radar Survey Satellite diff --git a/assets/hbm/sounds.json b/assets/hbm/sounds.json index 3682a81d9..2fbea25a9 100644 --- a/assets/hbm/sounds.json +++ b/assets/hbm/sounds.json @@ -132,6 +132,7 @@ "entity.chopperCrashingLoop": {"category": "hostile", "sounds": [{"name": "entity/chopperCrashingLoop", "stream": true}]}, "entity.oldExplosion": {"category": "ambient", "sounds": [{"name": "entity/oldExplosion", "stream": false}]}, "entity.rocketTakeoff": {"category": "player", "sounds": [{"name": "entity/rocketTakeoff", "stream": false}]}, + "entity.soyuzTakeoff": {"category": "player", "sounds": [{"name": "entity/soyuzTakeoff", "stream": false}]}, "entity.bombDet": {"category": "player", "sounds": ["entity/bombDet1", "entity/bombDet2", "entity/bombDet3"]}, "entity.bombWhistle": {"category": "player", "sounds": [{"name": "entity/bombWhistle", "stream": false}]}, "entity.bomberLoop": {"category": "player", "sounds": [{"name": "entity/bomber1", "stream": false}]}, @@ -167,5 +168,6 @@ "alarm.easAlarm": {"category": "record", "sounds": [{"name": "alarm/easAlarm", "stream": false}]}, "alarm.airRaid": {"category": "record", "sounds": [{"name": "alarm/airRaid", "stream": true}]}, "alarm.classic": {"category": "record", "sounds": [{"name": "alarm/classicSiren", "stream": false}]}, - "alarm.gambit": {"category": "record", "sounds": [{"name": "alarm/gambit", "stream": true}]} + "alarm.gambit": {"category": "record", "sounds": [{"name": "alarm/gambit", "stream": true}]}, + "alarm.soyuzed": {"category": "record", "sounds": [{"name": "alarm/soyuzed", "stream": false}]} } diff --git a/assets/hbm/sounds/alarm/soyuzed.ogg b/assets/hbm/sounds/alarm/soyuzed.ogg new file mode 100644 index 0000000000000000000000000000000000000000..d254b7fbdc8a05e593230ef28dff3d9f33f1ce42 GIT binary patch literal 117613 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�+Iju;;;ui9m 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 literal 0 HcmV?d00001 diff --git a/assets/hbm/textures/blocks/block_euphemium b/assets/hbm/textures/blocks/block_euphemium new file mode 100644 index 0000000000000000000000000000000000000000..804a764ed803e30dce6a7375a0d3c48e1ea99ba1 GIT binary patch literal 297 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 literal 0 HcmV?d00001 diff --git a/assets/hbm/textures/gui/gui_sat_interface.png b/assets/hbm/textures/gui/satellites/gui_sat_interface.png similarity index 100% rename from assets/hbm/textures/gui/gui_sat_interface.png rename to assets/hbm/textures/gui/satellites/gui_sat_interface.png diff --git a/assets/hbm/textures/items/ammo_12gauge_marauder.png b/assets/hbm/textures/items/ammo_12gauge_marauder.png new file mode 100644 index 0000000000000000000000000000000000000000..4adaf3bb51e08a245adfea5d51f733e045abeb5d GIT binary patch literal 381 zcmV-@0fPRCP)1u*h)tI)E)Gs1V?l=!Itawv;J@qWgUtDxKM;y6wNA^^fLlxkNY?e`Y0 z>oS|o5JHe;8J_161i|(nl;R{wb|xJJfplG$JkRO(`^0ffnx@;kItO*gcs!Qn`S5 literal 0 HcmV?d00001 diff --git a/assets/hbm/textures/items/ammo_grenade.png b/assets/hbm/textures/items/ammo_grenade.png index 6329ca5d88cac81cf8c51fdb1c4a6ee2a24666a3..fef56db60d1b5351d59a5fa0878a736f9c93fb79 100644 GIT binary patch delta 321 zcmV-H0lxmA0_y^hGk*ahNklk_*zdD3q@ zTtu9oju4Swk$zRY&zBzH9*a+IqGMDtW;UA<$1%R|yTxMBcqdzvqh#m~c8@T|FqurS z)&h{{IZa5TDk3fnLxLbcDMe8fSZf=ReiN`-tvtX1XsuC70g$FCK&_odpbOIb38)Zb z3}soOwI+%p@;W>xP18SLrxp=$S(Z5wantG4ZEkM$T`MFELyR$1d)?FN*lqI-<;Hd@ T>^fT(00000NkvXXu0mjfIp&ZE delta 245 zcmV0-yqrGk*ZrNklr1g1mE}R_xn4M(x3)G&$f@w&{{Jdk1@sokftfK*{sxG zIcX8Gp6B7ZE>RS*SS&EcR3ZmezJ|&Rz$>xVQ59fP9_su++6Fs=7{HcXsz?>?Vr7lT{qu!40d>KrdPHA O0000AR#)?W5*E=}m*=br}j= zM6iw!2<0{YjYslY3qR(taTZqd0wfDMZCozE9k>Bk-~#9?cx(ttg%yyxb{5zYe4PCS zX2x+`c)p!F`e7Iri#@j_F~%$+s4A*T&e`Plufcx=-ut(`zBcbofmy_q5+MY-uERNp rh%nEyDQGrRjB#22!Zb}=jrV;X9c(ERXbgA000000NkvXXu0mjf;Kx#R diff --git a/assets/hbm/textures/items/ammo_grenade_concussion.png b/assets/hbm/textures/items/ammo_grenade_concussion.png index beb267bc991055a4505a83bf61bcae4b74a6d6ba..1751e2c620a6ab08a28a7616b3a346bf1fc8f34c 100644 GIT binary patch delta 298 zcmV+_0oDGa0@MPKGk*aKNkl_nS+oq zgQIKLyg=W;XK-|L=um<$aECrXws14psTTsebU98fktF5T#eX^n&i`@F`GNnIRc{_1 zCw!#fxsZ>o1FeBtnFd4cKu7{i-B<~5iR000*6*BD;)F@G8j@RnX0L4E;t+b`(P zZ@fP5@$|CC{4N3!8EtYrBmZ#O7Y?Us%0$F*9CHu^osh<(eBtozUvIWY#8--YGy?mX=ZqRaGI&GI*W`DJ6su w=cPkL9EKqi(IYV(V{;qiY;zs*XLFZ+09)gAkif}lkN^Mx07*qoM6N<$g5H0IzW@LL delta 248 zcmVJt+ZlG z!Lkk84xCR==skeX%8FD483pC>wb)YE`1T7vkqDSIUvtxj3~>-!sE%OK0_}h~fH^{C z@ByH>s#6+<_ui8eadKvh)^AOKmG5r!cEzVGif=>*O}28VzxVvJ$4*^p%! zv)PQIDDZuszBKE!qP3PF2t;cwX_~f9+xt;=5v3HynC*J!=d9YN<_8{Bek|$U^9%q0 N002ovPDHLkV1gPNm2v<8 delta 236 zcmV`rzH<;u_1OiRBM&zEyddCmpXQCqTFcDL)><~k1Z97)@R?bb@%{=33H05w z(lq6&s%Db_0B}2OK}2xQ!8sSaG?>Cv{V5=h$ zihBZETM0gaK7g&hfe#P_DfNO!fKx3pp9Hcd*NO4eJB|+&rDJ?Tm1o5r2=j-<^;@z|X40u1X%R zKe)O(;`G=@L^{1>-Nxt3Sp8tCNs_3DXdK5no6R;NjY0XrRQGodF~+c1EU?xBkYyRm z<+4%VI%yG6&+~9ymne!TiUMnGE3(xFMCbFlipY99)m^9WS|Oh2VT`HT>mR+I-8FszygzluP)O84 P00000NkvXXu0mjfvoDb> delta 265 zcmV+k0rvjq0`$`5n(Y~ zsou8lFcD!sD6sq}z|0s;a?!k`4v9bkVY(T@IR+7fnbo9ff`3P(0=~Peo7q>VxSu+j zi2j}B2KG%H&0l_&2JH}~$RxeWl0C4%SFvh@I3u~=6?Q2SW zKOm0dn^}@1DnKo2W!bf}j%@SGwkNj07PP5*=ceYpGI!GFgpF8Tw{ z@EFEZ}7 zpSgZL;^L%-i2RED0F&{H_5L>J)}C-RKBVsrh~t=Uw@atfS&5Ve)$`hBZ|eZ16vN>V ztu+8ik}#c4OZ}CT77^n(4y{&;Fbql46s>h7vQY)hW-|*g08tbXh9LmH?*o`3QVFbs zG*$sQqLd=bGC-mz!gXDeB*FLnKVN4lB4UCdFd||`qme0YuJv7W#Bm&yQu+1P&sxW> Zn{S7`bm(KH8lnII002ovPDHLkV1h1*oBaR) delta 266 zcmV+l0rmdz0<;2Pe;hdXZ=I8rCEjm6b$_*#ny z>($20p2iM~2#=pNPx~5G*ll}m&dx~^Ap}K(^7^v-c>{p=H;;1;?>*l8SnQ96 z`2T=B&qrQS6ehqNV%K$)Wl5T*WLbuDj<#)0K=d0onen0?-1GGk*aGNkl&5x sk>hsy-sE%bgCBLy_2bRgEZbA{4YXr=h#0u@X#fBK07*qoM6N<$f+}>46aWAK delta 257 zcmV+c0sj8b0;~d%Gk*Z%Nkl1p=5JjIwiruZHQVK#>Fa|>kyG|`IDPmtG z5ONLQz@2buaN`T4wj;Mvo3$%VDuY2Ikdh|9+Wq_Y&-`5m{)kc6!Fh+=*498Y?bfQ7 zs{@jzsbpCux4ou)&`4{*88~iF_zUIOp)*%Cb}qItL`rbGiS8qA2=W7G=Kg{L_t(Ijm46oZiPS)MGr3(WF?xAumXi>gIb3}BS`uKd;{OM zNp;s%AsPf}R#t#2cB**c1)6~BRWsR{lRG;D|E*w~D5YeLmt_g|<$K*WvHW~2WLZWO zMGvsE0A6073BwSj6kl)4X~^9{9LJJnnaC%il#;e>MQeQx@_+q~0Md1xXsxBLYsvHc zPsq_nNm-V7?`fKbX_^3V&e8Y%uKu=bhroMJk|YenKv5J#QG_vuBPUNsw#IP`00FSp zQdJcI#uxzEIynSffgFwS0P)^4&okCq(lo_6hcSjr+tFG}S(c);zHeuJJ9VxrBuNsy i_v?7qb@ixD=@l13MsO)8UoNl!0000D7{#g%D1k;M^5%+6N~P zLO8}4qA0>RjxY+u_jzrCm{EUDw!b zFK-=G)f!68Q;-G#&@>G==P<^=7z3>}sryZd|2Ig}bjD>_MjDVM4#R-5ED^^sk|Y7= r9DU!D2HpW_+t$7QLf3WS!}JO6eg;!5RXrcG00000NkvXXu0mjfnTBsd diff --git a/assets/hbm/textures/items/ammo_grenade_toxic.png b/assets/hbm/textures/items/ammo_grenade_toxic.png index cf1e8c5519e9ee251af0e4ca7867caecc0619729..28e62d022480bba94baeab23e006c472fc1d9c34 100644 GIT binary patch delta 310 zcmV-60m=Tf0^kCWGk*aWNklBDz)w}%P{%QBtM=X;UXpu%XTr$^^lYgsH7IOhP!^PI9QTlJlj z77_J*AJ6kh)0E9-gLAGEIp_k`>-7jw0AmbkngS5VF@WwOoxl)eybov)Yb|wMV~imP z0`fd3j^kn55ib!N*oMC_`_2Jw2{O-ziO+;AE zSE{$+J4{4q&vJAYIhYxPVNWzKsY4=AK-f>e;2eX9!OUt>HGjb)QUR^;>Sop)<@Zwu z!=7x;kgY&AXUO^psh3)p+QH%Xgx#c%ARsu$V8{6TIjEPZ0021tTNqyhgcTN*?j$NBcW$&8w z{pvTxKKO@(KD~bDt@y&?yv^k&6Z|b2gWk#>lrVmMMP=RVs_!2Rc&fL|_X#;+cfY@K z?rX!kk~!0Jg<~_#IJBQu39c*lHp^0d^< z;#S)9Q0Shr&4bu!jcZi}Ke`4s%)I#Bw#RVEIUWv$i0U2nnL^G6#tmOe)D)HCT=e|k aYVH$=@j7ygTjC+mYYd*QelF{r5}E)dS8L?} literal 0 HcmV?d00001 diff --git a/assets/hbm/textures/items/sat_gerald.png b/assets/hbm/textures/items/sat_gerald.png index f9e369741260f1c49eb99aa4ac95069d97346174..6363635816316182909afa2a3951110a19a84f78 100644 GIT binary patch delta 783 zcmV+q1MvKo1-1r|G=J?$L_t(&f$f{mOWR-=$3KywNH6x(F<2`?B(PIZk)0xV3rKJ8 z{sF<`F1vXU58nI}_7C{p2I6gp9EU>iGU^6nIuN&mRn}0ghwNYz)1>>+HZ8?H-&339 z`@B!yBp<$nH!z?K0Hsu@wKkGFlu}{xe|moip#es`(RJPM;D6x2NE_4AS{u=^aRBn$mruI2S+CbKMu1kUl{q$^#N`AJlNU_jqPpW0b|31QkBq|>Wv5OC-c4oXG(EY)_*5XxmcHcFmg#g5FU`^ zfz~6yiK<+%yT2rcmbv4NQgR6jV zOCC!bm46Hqga<>Cy9A1mVGuB>6yi!1(h3I+=hH9t=g24}=GdoCovzl0EaZ_w`5-6Fw;$%bM=k zCp^eOk`IIjjGPD8t3FE`6^_@YdtaYes=~APHh;(ak`Hp1D%PDHLkV1mc@g8l#i delta 621 zcmV-z0+Ri<29^boG=EJ=L_t(&f$f^HZo)7ShW}LEkdT-VQ>03W^_K1o>`bVS&==^= z3-BTpQ+FQXR#d4{rl=DVFW?TukvZ&;keDL4UqT|-ceWGz(~o1Ir4j%jBE!syTR=p{ zy_V$$FbR+(ZU8eUGEmCau?Z_%tx9qEv!7G3;0`?) zWrY3AzXC(Sc7J6aJ%!17htF|#IS;mr0f+|5gKJCu!Ts<6fC;U@kdAmjL}fSY277t1 zpD|wFQ*0N5s#e21=x+$yjrxQCk@|ynx+fllR$wUD%Y!^+^u~u}UD0Zo2cwLD46sH+ zN_h}T>JO9$=$r@4jN$xrtfJL3`v)0djfP}`@*t+vAAhuy@*viJqBR=Qh%U4 z!0qzD8V$(=7RrNoQh(4+%7cbHaL*^4 z%mepE%HCKexGyfcpGb9++#wItA1DuSbso6q6KeYdtKl3N73ULNDG$1m`h#|QR31#$ zyUTdso@P&I%mV-*9NtH|QXX_5^#_m5gTlFA#)JKg%Oi-5_Yds(gv)q9%7b`Pf6z`h z!h^T()Pzn5hqRwDepZD)DC~Rf;5_B>pM3oNL|?fp#aE(<7R%0X!t(m((%9FZx8=@Qwz6ou z*cwOf=|Ks3$HFGy7S#by2c$0Ua|e#HWAvGC_I`lp>5esYy%hTW^4cGGqF zApxfCO5H4C-@Ta&H>TeTJ$#mJ{-dZ5`Be<}^0o%vIP+~U(8mm(u6{1-oD!M<(CK*M literal 0 HcmV?d00001 diff --git a/assets/hbm/textures/items/soyuz_0.png b/assets/hbm/textures/items/soyuz_0.png new file mode 100644 index 0000000000000000000000000000000000000000..ea5988aeea06ab8146548cf6d49efca4c802a902 GIT binary patch literal 245 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#VfM=smulmt*$fX$Ep7u0BeUkM{HM{IP$} z|HpY!PN@e+Vr_@Y>7_S&%yM_Ho1`M$rZ_vrXvw{-Y5eE*qvQs<--$7Ywu@_Rz2 zsn*_qJV*IhN3q^}^LxL)KYhSZxxTvbvKLm*zMgc%CKsc*0MA0vPUkL rRnBdxe{Eo$9Qka?)wB~w;#RTeZ0zk_Fvs&I(A^B4u6{1-oD!Mjn$C3r^jd^hDJyXWawg328sRJk&fqH{06a z3Foc{=eElB%(t^i1xX|%PyMrgX=?lRXp3Ahd(o;>AG#a68RvH!#4vp4nw4h9n7Jmg z`7%Sv*%xgaHhTR#p3P7cvEXvfno0lb|JI%BxXuvM7Gt@$*U>d}s^j&&Q-6E`x#9i^ st)KQfVIG%wm_@SF5)u^7-aNv@aM3RIiKoX`kOvt&UHx3vIVCg!07Bkus{jB1 literal 0 HcmV?d00001 diff --git a/assets/hbm/textures/items/soyuz_2.png b/assets/hbm/textures/items/soyuz_2.png new file mode 100644 index 0000000000000000000000000000000000000000..4486f182dd55140bfa5040278fad30cc0fdb9462 GIT binary patch literal 355 zcmV-p0i6DcP)At56ot=ANvH`tLQ@(-$d)*yTbDvf#X+otL;Vf?5gq(n zB6bt%=Gfv8913YDSxR_|V8z=hsjZqC^=$9Gd%kz>0gj=1(58bSS2qubL+U}BT)$Nc zB&{CaKNqMtx20D41(;3-Y!*F3)eP*KMEZL%oeWqQCE&UZMYhQIYgCkoZF^8;i(Jpc z94feOgG&j9qu$#5T7pcq>q}gmad6#+NMop)v9X)2fCWw=mL^0RgX=cJD1lg-c{hq| zQ6XSB>M@bVs5&ONl;laWZsuPftPlYF6sl@QZhjs2;d&mL_m2b=l(;I_Z&B4T@fMDO z$~jJ)JG?w~ck<>^WQ!U>gR-AXn*pHN*~9#wz5(|PUvB{jO2+^I002ovPDHLkV1hU! Bk`@2} literal 0 HcmV?d00001 diff --git a/com/hbm/entity/missile/EntityCarrier.java b/com/hbm/entity/missile/EntityCarrier.java index 965e4e9f0..b32dfb282 100644 --- a/com/hbm/entity/missile/EntityCarrier.java +++ b/com/hbm/entity/missile/EntityCarrier.java @@ -5,9 +5,7 @@ import com.hbm.explosion.ExplosionLarge; import com.hbm.items.ModItems; import com.hbm.items.tool.ItemSatChip; import com.hbm.main.MainRegistry; -import com.hbm.saveddata.SatelliteSaveStructure; -import com.hbm.saveddata.SatelliteSaveStructure.SatelliteType; -import com.hbm.saveddata.SatelliteSavedData; +import com.hbm.saveddata.satellites.Satellite; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @@ -118,33 +116,10 @@ public class EntityCarrier extends EntityThrowable { } if(payload.getItem() instanceof ItemSatChip) { - SatelliteSavedData data = (SatelliteSavedData)worldObj.perWorldStorage.loadData(SatelliteSavedData.class, "satellites"); - if(data == null) { - worldObj.perWorldStorage.setData("satellites", new SatelliteSavedData(worldObj)); - - data = (SatelliteSavedData)worldObj.perWorldStorage.loadData(SatelliteSavedData.class, "satellites"); - } - + int freq = ItemSatChip.getFreq(payload); - - if(!data.isFreqTaken(freq)) { - if(payload.getItem() == ModItems.sat_mapper) - data.satellites.add(new SatelliteSaveStructure(freq, SatelliteType.MAPPER, this.dimension)); - if(payload.getItem() == ModItems.sat_scanner) - data.satellites.add(new SatelliteSaveStructure(freq, SatelliteType.SCANNER, this.dimension)); - if(payload.getItem() == ModItems.sat_radar) - data.satellites.add(new SatelliteSaveStructure(freq, SatelliteType.RADAR, this.dimension)); - if(payload.getItem() == ModItems.sat_laser) - data.satellites.add(new SatelliteSaveStructure(freq, SatelliteType.LASER, this.dimension)); - if(payload.getItem() == ModItems.sat_foeq) - data.satellites.add(new SatelliteSaveStructure(freq, SatelliteType.RELAY, this.dimension)); - if(payload.getItem() == ModItems.sat_resonator) - data.satellites.add(new SatelliteSaveStructure(freq, SatelliteType.RESONATOR, this.dimension)); - if(payload.getItem() == ModItems.sat_miner) - data.satellites.add(new SatelliteSaveStructure(freq, SatelliteType.MINER, this.dimension)); - - data.markDirty(); - } + + Satellite.orbit(worldObj, Satellite.getIDFromItem(payload.getItem()), freq, posX, posY, posZ); } } diff --git a/com/hbm/entity/missile/EntitySoyuz.java b/com/hbm/entity/missile/EntitySoyuz.java index ba6ff5f2f..7edf072db 100644 --- a/com/hbm/entity/missile/EntitySoyuz.java +++ b/com/hbm/entity/missile/EntitySoyuz.java @@ -2,12 +2,17 @@ package com.hbm.entity.missile; import java.util.List; +import com.hbm.explosion.ExplosionLarge; +import com.hbm.items.ModItems; +import com.hbm.items.tool.ItemSatChip; import com.hbm.lib.ModDamageSource; import com.hbm.main.MainRegistry; +import com.hbm.saveddata.satellites.Satellite; 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.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagList; @@ -21,6 +26,7 @@ public class EntitySoyuz extends Entity { public int mode; public int targetX; public int targetZ; + boolean memed = false; private ItemStack[] payload; @@ -48,6 +54,11 @@ public class EntitySoyuz extends Entity { for(Entity e : list) { e.setFire(15); e.attackEntityFrom(ModDamageSource.exhaust, 100.0F); + + if(!memed && e instanceof EntityPlayer) { + memed = true; + worldObj.playSoundEffect(posX, posY, posZ, "hbm:alarm.soyuzed", 100, 1.0F); + } } } @@ -81,7 +92,29 @@ public class EntitySoyuz extends Entity { private void deployPayload() { if(mode == 0 && payload != null) { - + + if(payload[0] != null) { + + ItemStack load = payload[0]; + + if(load.getItem() == ModItems.flame_pony) { + ExplosionLarge.spawnTracers(worldObj, posX, posY, posZ, 25); + for(Object p : worldObj.playerEntities) + ((EntityPlayer)p).triggerAchievement(MainRegistry.achSpace); + } + + if(load.getItem() == ModItems.sat_foeq) { + for(Object p : worldObj.playerEntities) + ((EntityPlayer)p).triggerAchievement(MainRegistry.achFOEQ); + } + + if(load.getItem() instanceof ItemSatChip) { + + int freq = ItemSatChip.getFreq(load); + + Satellite.orbit(worldObj, Satellite.getIDFromItem(load.getItem()), freq, posX, posY, posZ); + } + } } if(mode == 1) { diff --git a/com/hbm/handler/BulletConfigSyncingUtil.java b/com/hbm/handler/BulletConfigSyncingUtil.java index a4d79bfdd..fefac2807 100644 --- a/com/hbm/handler/BulletConfigSyncingUtil.java +++ b/com/hbm/handler/BulletConfigSyncingUtil.java @@ -71,6 +71,7 @@ public class BulletConfigSyncingUtil { public static int G12_INCENDIARY = i++; public static int G12_SHRAPNEL = i++; public static int G12_DU = i++; + public static int G12_AM = i++; public static int LR22_NORMAL = i++; public static int LR22_AP = i++; @@ -178,6 +179,7 @@ public class BulletConfigSyncingUtil { configSet.add(new ConfigKeyPair(Gun12GaugeFactory.get12GaugeFireConfig(), G12_INCENDIARY)); configSet.add(new ConfigKeyPair(Gun12GaugeFactory.get12GaugeShrapnelConfig(), G12_SHRAPNEL)); configSet.add(new ConfigKeyPair(Gun12GaugeFactory.get12GaugeDUConfig(), G12_DU)); + configSet.add(new ConfigKeyPair(Gun12GaugeFactory.get12GaugeAMConfig(), G12_AM)); configSet.add(new ConfigKeyPair(Gun22LRFactory.get22LRConfig(), LR22_NORMAL)); configSet.add(new ConfigKeyPair(Gun22LRFactory.get22LRAPConfig(), LR22_AP)); diff --git a/com/hbm/handler/GUIHandler.java b/com/hbm/handler/GUIHandler.java index d72ce4973..19cd6a40c 100644 --- a/com/hbm/handler/GUIHandler.java +++ b/com/hbm/handler/GUIHandler.java @@ -1691,6 +1691,8 @@ public class GUIHandler implements IGuiHandler { return new GUIScreenDesignator(player); case ModItems.guiID_item_sat_interface: return new GUIScreenSatInterface(player); + case ModItems.guiID_item_sat_coord: + return new GUIScreenSatCoord(player); case ModItems.guiID_item_box: return new GUILeadBox(new ContainerLeadBox(player, player.inventory, new InventoryLeadBox(player.getHeldItem()))); case ModItems.guiID_item_bobmazon: diff --git a/com/hbm/handler/guncfg/Gun12GaugeFactory.java b/com/hbm/handler/guncfg/Gun12GaugeFactory.java index 88e261f96..6690f26fb 100644 --- a/com/hbm/handler/guncfg/Gun12GaugeFactory.java +++ b/com/hbm/handler/guncfg/Gun12GaugeFactory.java @@ -2,12 +2,19 @@ package com.hbm.handler.guncfg; import java.util.ArrayList; +import com.hbm.entity.projectile.EntityBulletBase; import com.hbm.handler.BulletConfigSyncingUtil; import com.hbm.handler.BulletConfiguration; import com.hbm.handler.GunConfiguration; +import com.hbm.interfaces.IBulletHurtBehavior; import com.hbm.items.ModItems; +import com.hbm.potion.HbmPotion; import com.hbm.render.util.RenderScreenOverlay.Crosshair; +import net.minecraft.entity.Entity; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.potion.PotionEffect; + public class Gun12GaugeFactory { public static GunConfiguration getUboinikConfig() { @@ -40,6 +47,7 @@ public class Gun12GaugeFactory { config.config.add(BulletConfigSyncingUtil.G12_INCENDIARY); config.config.add(BulletConfigSyncingUtil.G12_SHRAPNEL); config.config.add(BulletConfigSyncingUtil.G12_DU); + config.config.add(BulletConfigSyncingUtil.G12_AM); return config; } @@ -76,6 +84,7 @@ public class Gun12GaugeFactory { config.config.add(BulletConfigSyncingUtil.G12_INCENDIARY); config.config.add(BulletConfigSyncingUtil.G12_SHRAPNEL); config.config.add(BulletConfigSyncingUtil.G12_DU); + config.config.add(BulletConfigSyncingUtil.G12_AM); return config; } @@ -132,5 +141,29 @@ public class Gun12GaugeFactory { return bullet; } + + public static BulletConfiguration get12GaugeAMConfig() { + + BulletConfiguration bullet = BulletConfigFactory.standardBuckshotConfig(); + + bullet.ammo = ModItems.ammo_12gauge_marauder; + bullet.wear = 20; + bullet.dmgMin = 100; + bullet.dmgMax = 500; + bullet.leadChance = 50; + + bullet.bHurt = new IBulletHurtBehavior() { + + @Override + public void behaveEntityHurt(EntityBulletBase bullet, Entity hit) { + + if(hit instanceof EntityLivingBase) + ((EntityLivingBase)hit).addPotionEffect(new PotionEffect(HbmPotion.bang.id, 20, 0)); + } + + }; + + return bullet; + } } diff --git a/com/hbm/inventory/MachineRecipes.java b/com/hbm/inventory/MachineRecipes.java index 6244b46ed..370c2c500 100644 --- a/com/hbm/inventory/MachineRecipes.java +++ b/com/hbm/inventory/MachineRecipes.java @@ -2025,7 +2025,7 @@ public class MachineRecipes { if(name.length() > 5 && name.substring(0, 5).equals("ingot")) { ItemStack dust = getDustByName(name.substring(5)); - if(dust != null) { + if(dust != null && dust.getItem() != ModItems.scrap) { for(ItemStack stack : matches) { shredderRecipes.put(new StackWrapper(stack), dust); @@ -2034,7 +2034,7 @@ public class MachineRecipes { } else if(name.length() > 3 && name.substring(0, 3).equals("ore")) { ItemStack dust = getDustByName(name.substring(3)); - if(dust != null) { + if(dust != null && dust.getItem() != ModItems.scrap) { dust.stackSize = 2; @@ -2045,7 +2045,7 @@ public class MachineRecipes { } else if(name.length() > 5 && name.substring(0, 5).equals("block")) { ItemStack dust = getDustByName(name.substring(5)); - if(dust != null) { + if(dust != null && dust.getItem() != ModItems.scrap) { dust.stackSize = 9; @@ -2056,7 +2056,7 @@ public class MachineRecipes { } else if(name.length() > 3 && name.substring(0, 3).equals("gem")) { ItemStack dust = getDustByName(name.substring(3)); - if(dust != null) { + if(dust != null && dust.getItem() != ModItems.scrap) { for(ItemStack stack : matches) { shredderRecipes.put(new StackWrapper(stack), dust); @@ -2065,7 +2065,6 @@ public class MachineRecipes { } else if(name.length() > 3 && name.substring(0, 4).equals("dust")) { for(ItemStack stack : matches) { - System.out.println("DUST Added " + stack.getDisplayName() + " to dust"); shredderRecipes.put(new StackWrapper(stack), new ItemStack(ModItems.dust)); } } diff --git a/com/hbm/inventory/gui/GUIRadiobox.java b/com/hbm/inventory/gui/GUIRadiobox.java index 9edae4559..8ba4fadfb 100644 --- a/com/hbm/inventory/gui/GUIRadiobox.java +++ b/com/hbm/inventory/gui/GUIRadiobox.java @@ -189,8 +189,6 @@ public class GUIRadiobox extends GuiInfoContainer { protected void save() { rectify(); - - //TODO: send packet here } diff --git a/com/hbm/inventory/gui/GUIScreenSatCoord.java b/com/hbm/inventory/gui/GUIScreenSatCoord.java new file mode 100644 index 000000000..7e9ee1df0 --- /dev/null +++ b/com/hbm/inventory/gui/GUIScreenSatCoord.java @@ -0,0 +1,139 @@ +package com.hbm.inventory.gui; + +import java.util.Arrays; + +import org.lwjgl.input.Keyboard; +import org.lwjgl.opengl.GL11; + +import com.hbm.inventory.gui.GUIRadioRec.RadioButton; +import com.hbm.items.tool.ItemSatInterface; +import com.hbm.lib.RefStrings; +import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.SatLaserPacket; +import com.hbm.saveddata.satellites.Satellite.CoordActions; +import com.hbm.saveddata.satellites.Satellite.InterfaceActions; +import com.hbm.saveddata.satellites.Satellite.Interfaces; + +import net.minecraft.client.Minecraft; +import net.minecraft.client.audio.PositionedSoundRecord; +import net.minecraft.client.gui.GuiScreen; +import net.minecraft.client.gui.GuiTextField; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.util.ResourceLocation; + +public class GUIScreenSatCoord extends GuiScreen { + + protected static final ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/satellites/gui_sat_coord.png"); + protected int xSize = 176; + protected int ySize = 126; + protected int guiLeft; + protected int guiTop; + private final EntityPlayer player; + int x; + int z; + + private GuiTextField xField; + private GuiTextField yField; + private GuiTextField zField; + + public GUIScreenSatCoord(EntityPlayer player) { + + this.player = player; + } + + public void initGui() + { + super.initGui(); + this.guiLeft = (this.width - this.xSize) / 2; + this.guiTop = (this.height - this.ySize) / 2; + + Keyboard.enableRepeatEvents(true); + this.xField = new GuiTextField(this.fontRendererObj, guiLeft + 66, guiTop + 21, 48, 12); + this.xField.setTextColor(-1); + this.xField.setDisabledTextColour(-1); + this.xField.setEnableBackgroundDrawing(false); + this.xField.setMaxStringLength(5); + this.yField = new GuiTextField(this.fontRendererObj, guiLeft + 66, guiTop + 56, 48, 12); + this.yField.setTextColor(-1); + this.yField.setDisabledTextColour(-1); + this.yField.setEnableBackgroundDrawing(false); + this.yField.setMaxStringLength(5); + this.zField = new GuiTextField(this.fontRendererObj, guiLeft + 66, guiTop + 92, 48, 12); + this.zField.setTextColor(-1); + this.zField.setDisabledTextColour(-1); + this.zField.setEnableBackgroundDrawing(false); + this.zField.setMaxStringLength(5); + } + + protected void mouseClicked(int i, int j, int k) + { + super.mouseClicked(i, j, k); + this.xField.mouseClicked(i, j, k); + if(ItemSatInterface.currentSat.coordAcs.contains(CoordActions.HAS_Y)) this.yField.mouseClicked(i, j, k); + this.zField.mouseClicked(i, j, k); + + if(i >= this.guiLeft + 133 && i < this.guiLeft + 133 + 18 && j >= this.guiTop + 52 && j < this.guiTop + 52 + 18 && player != null) { + + mc.getSoundHandler().playSound(PositionedSoundRecord.func_147674_a(new ResourceLocation("hbm:item.techBleep"), 1.0F)); + + PacketDispatcher.wrapper.sendToServer(new SatLaserPacket(x, z, ItemSatInterface.getFreq(player.getHeldItem()))); + } + } + + public void drawScreen(int mouseX, int mouseY, float f) + { + this.drawDefaultBackground(); + this.drawGuiContainerBackgroundLayer(f, mouseX, mouseY); + GL11.glEnable(GL11.GL_LIGHTING); + GL11.glDisable(GL11.GL_LIGHTING); + this.drawGuiContainerForegroundLayer(mouseX, mouseY); + GL11.glEnable(GL11.GL_LIGHTING); + } + + @Override + public boolean doesGuiPauseGame() { + return false; + } + + protected void drawGuiContainerForegroundLayer(int i, int j) { + + this.xField.drawTextBox(); + if(ItemSatInterface.currentSat.coordAcs.contains(CoordActions.HAS_Y)) this.yField.drawTextBox(); + this.zField.drawTextBox(); + } + + protected void drawGuiContainerBackgroundLayer(float f, int i, int j) { + GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); + Minecraft.getMinecraft().getTextureManager().bindTexture(texture); + drawTexturedModalRect(guiLeft, guiTop, 0, 0, xSize, ySize); + + if(ItemSatInterface.currentSat != null) { + + drawTexturedModalRect(guiLeft + 120, guiTop + 17, 194, 0, 7, 7); + + if(ItemSatInterface.currentSat.satIface == Interfaces.SAT_COORD) { + + drawTexturedModalRect(guiLeft + 120, guiTop + 25, 194, 0, 7, 7); + } + } + } + + protected void keyTyped(char p_73869_1_, int p_73869_2_) { + + + if (this.xField.textboxKeyTyped(p_73869_1_, p_73869_2_)) { + } else if (ItemSatInterface.currentSat.coordAcs.contains(CoordActions.HAS_Y) && this.yField.textboxKeyTyped(p_73869_1_, p_73869_2_)) { + } else if (this.zField.textboxKeyTyped(p_73869_1_, p_73869_2_)) { + } else { + + super.keyTyped(p_73869_1_, p_73869_2_); + } + + if (p_73869_2_ == 1 || p_73869_2_ == this.mc.gameSettings.keyBindInventory.getKeyCode()) + { + this.mc.thePlayer.closeScreen(); + } + + } + +} diff --git a/com/hbm/inventory/gui/GUIScreenSatInterface.java b/com/hbm/inventory/gui/GUIScreenSatInterface.java index e8ecdb563..f2f8435ed 100644 --- a/com/hbm/inventory/gui/GUIScreenSatInterface.java +++ b/com/hbm/inventory/gui/GUIScreenSatInterface.java @@ -7,14 +7,12 @@ import org.lwjgl.opengl.GL11; import com.hbm.entity.missile.EntityMissileBaseAdvanced; import com.hbm.inventory.MachineRecipes; -import com.hbm.items.ModItems; -import com.hbm.items.tool.ItemSatChip; import com.hbm.items.tool.ItemSatInterface; import com.hbm.lib.RefStrings; import com.hbm.packet.PacketDispatcher; import com.hbm.packet.SatLaserPacket; -import com.hbm.saveddata.SatelliteSaveStructure; -import com.hbm.saveddata.SatelliteSaveStructure.SatelliteType; +import com.hbm.saveddata.satellites.Satellite.InterfaceActions; +import com.hbm.saveddata.satellites.Satellite.Interfaces; import net.minecraft.client.Minecraft; import net.minecraft.client.audio.PositionedSoundRecord; @@ -30,13 +28,12 @@ import net.minecraftforge.oredict.OreDictionary; public class GUIScreenSatInterface extends GuiScreen { - protected static final ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/gui_sat_interface.png"); + protected static final ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/satellites/gui_sat_interface.png"); protected int xSize = 216; protected int ySize = 216; protected int guiLeft; protected int guiTop; private final EntityPlayer player; - protected SatelliteSaveStructure connectedSat; int x; int z; @@ -50,15 +47,15 @@ public class GUIScreenSatInterface extends GuiScreen { protected void mouseClicked(int i, int j, int k) { - if(connectedSat != null && connectedSat.satelliteType == SatelliteType.LASER) { + if(ItemSatInterface.currentSat != null && ItemSatInterface.currentSat.ifaceAcs.contains(InterfaceActions.CAN_CLICK)) { if(i >= this.guiLeft + 8 && i < this.guiLeft + 208 && j >= this.guiTop + 8 && j < this.guiTop + 208 && player != null) { + mc.getSoundHandler().playSound(PositionedSoundRecord.func_147674_a(new ResourceLocation("hbm:item.techBleep"), 1.0F)); - int x = this.x - guiLeft + i - 8 - 100; int z = this.z - guiTop + j - 8 - 100; - PacketDispatcher.wrapper.sendToServer(new SatLaserPacket(x, z, connectedSat.satelliteID)); + PacketDispatcher.wrapper.sendToServer(new SatLaserPacket(x, z, ItemSatInterface.getFreq(player.getHeldItem()))); } } } @@ -80,13 +77,6 @@ public class GUIScreenSatInterface extends GuiScreen { x = (int) player.posX; z = (int) player.posZ; - - if(ItemSatInterface.satData != null && player.getHeldItem() != null && player.getHeldItem().getItem() == ModItems.sat_interface) { - - int freq = ItemSatChip.getFreq(player.getHeldItem()); - - connectedSat = ItemSatInterface.satData.getSatFromFreq(freq); - } } @Override @@ -96,8 +86,7 @@ public class GUIScreenSatInterface extends GuiScreen { protected void drawGuiContainerForegroundLayer(int i, int j) { - if(connectedSat != null && connectedSat.satelliteType == SatelliteType.LASER) { - + if(ItemSatInterface.currentSat != null && ItemSatInterface.currentSat.ifaceAcs.contains(InterfaceActions.SHOW_COORDS)) { if(i >= this.guiLeft + 8 && i < this.guiLeft + 208 && j >= this.guiTop + 8 && j < this.guiTop + 208 && player != null) { @@ -113,27 +102,23 @@ public class GUIScreenSatInterface extends GuiScreen { Minecraft.getMinecraft().getTextureManager().bindTexture(texture); drawTexturedModalRect(guiLeft, guiTop, 0, 0, xSize, ySize); - if(connectedSat == null) { + if(ItemSatInterface.currentSat == null) { drawNotConnected(); - } else if(connectedSat.satDim != player.dimension) { - drawNoService(); } else { - switch(connectedSat.satelliteType) { + + if(ItemSatInterface.currentSat.satIface != Interfaces.SAT_PANEL) { + drawNoService(); + return; + } - case LASER: - case MAPPER: - drawMap(); break; - - case RADAR: - drawRadar(); break; - - case SCANNER: - drawScan(); break; - - case RELAY: - case RESONATOR: - case MINER: - drawNoService(); break; + if(ItemSatInterface.currentSat.ifaceAcs.contains(InterfaceActions.HAS_MAP)) { + drawMap(); + } + if(ItemSatInterface.currentSat.ifaceAcs.contains(InterfaceActions.HAS_ORES)) { + drawScan(); + } + if(ItemSatInterface.currentSat.ifaceAcs.contains(InterfaceActions.HAS_RADAR)) { + drawRadar(); } } } diff --git a/com/hbm/inventory/gui/GUISoyuzLauncher.java b/com/hbm/inventory/gui/GUISoyuzLauncher.java index 702c5380d..01e6acf83 100644 --- a/com/hbm/inventory/gui/GUISoyuzLauncher.java +++ b/com/hbm/inventory/gui/GUISoyuzLauncher.java @@ -36,8 +36,12 @@ public class GUISoyuzLauncher extends GuiInfoContainer { launcher.tanks[1].renderTankInfo(this, mouseX, mouseY, guiLeft + 26, guiTop + 36, 16, 52); this.drawElectricityInfo(this, mouseX, mouseY, guiLeft + 49, guiTop + 72, 6, 34, launcher.power, launcher.maxPower); - //this.drawCustomInfoStat(mouseX, mouseY, guiLeft + 43, guiTop + 17, 18, 18, mouseX, mouseY, new String[]{"The Soyuz goes here"} ); - //this.drawCustomInfoStat(mouseX, mouseY, guiLeft + 43, guiTop + 35, 18, 18, mouseX, mouseY, new String[]{"Designator for cargo mode"} ); + this.drawCustomInfoStat(mouseX, mouseY, guiLeft + 43, guiTop + 17, 18, 18, mouseX, mouseY, new String[]{"The Soyuz goes here"} ); + this.drawCustomInfoStat(mouseX, mouseY, guiLeft + 43, guiTop + 35, 18, 18, mouseX, mouseY, new String[]{"Designator only for CARGO MODE"} ); + this.drawCustomInfoStat(mouseX, mouseY, guiLeft + 133, guiTop + 17, 18, 18, mouseX, mouseY, new String[]{"The payload for SATELLITE MODE"} ); + this.drawCustomInfoStat(mouseX, mouseY, guiLeft + 133, guiTop + 35, 18, 18, mouseX, mouseY, new String[]{"The orbital module for special payloads"} ); + this.drawCustomInfoStat(mouseX, mouseY, guiLeft + 88, guiTop + 17, 18, 18, mouseX, mouseY, new String[]{"SATELLITE MODE"} ); + this.drawCustomInfoStat(mouseX, mouseY, guiLeft + 88, guiTop + 35, 18, 18, mouseX, mouseY, new String[]{"CARGO MODE"} ); } protected void mouseClicked(int x, int y, int i) { @@ -100,6 +104,16 @@ public class GUISoyuzLauncher extends GuiInfoContainer { int k = launcher.mode; drawTexturedModalRect(guiLeft + 88, guiTop + 17 + k * 18, 176, 18 + k * 18, 18, 18); + int l = launcher.orbital(); + + if(l > 0) + drawTexturedModalRect(guiLeft + 115, guiTop + 35, 176 + (l - 1) * 18, 0, 18, 18); + + int m = launcher.satellite(); + + if(m > 0) + drawTexturedModalRect(guiLeft + 115, guiTop + 17, 176 + (m - 1) * 18, 0, 18, 18); + if(launcher.starting) drawTexturedModalRect(guiLeft + 151, guiTop + 17, 176, 54, 18, 18); diff --git a/com/hbm/items/ModItems.java b/com/hbm/items/ModItems.java index 2db39b645..54f06df18 100644 --- a/com/hbm/items/ModItems.java +++ b/com/hbm/items/ModItems.java @@ -1037,11 +1037,13 @@ public class ModItems { public static Item sat_gerald; public static Item sat_chip; public static Item sat_interface; + public static Item sat_coord; public static Item ammo_12gauge; public static Item ammo_12gauge_incendiary; public static Item ammo_12gauge_shrapnel; public static Item ammo_12gauge_du; + public static Item ammo_12gauge_marauder; public static Item ammo_20gauge; public static Item ammo_20gauge_slug; public static Item ammo_20gauge_flechette; @@ -1806,6 +1808,7 @@ public class ModItems { public static final int guiID_item_sat_interface = 101; public static final int guiID_item_box = 102; public static final int guiID_item_bobmazon = 103; + public static final int guiID_item_sat_coord = 104; public static Item mysteryshovel; public static Item memory; @@ -2581,7 +2584,7 @@ public class ModItems { missile_emp = new Item().setUnlocalizedName("missile_emp").setMaxStackSize(1).setCreativeTab(MainRegistry.missileTab).setTextureName(RefStrings.MODID + ":missile_emp"); missile_carrier = new Item().setUnlocalizedName("missile_carrier").setMaxStackSize(1).setCreativeTab(MainRegistry.missileTab).setTextureName(RefStrings.MODID + ":missile_carrier"); missile_soyuz = new ItemSoyuz().setUnlocalizedName("missile_soyuz").setMaxStackSize(1).setCreativeTab(MainRegistry.missileTab).setTextureName(RefStrings.MODID + ":soyuz"); - missile_soyuz_lander = new Item().setUnlocalizedName("missile_soyuz_lander").setMaxStackSize(1).setCreativeTab(MainRegistry.missileTab).setTextureName(RefStrings.MODID + ":soyuz_lander"); + missile_soyuz_lander = new ItemCustomLore().setUnlocalizedName("missile_soyuz_lander").setMaxStackSize(1).setCreativeTab(MainRegistry.missileTab).setTextureName(RefStrings.MODID + ":soyuz_lander"); missile_custom = new ItemCustomMissile().setUnlocalizedName("missile_custom").setMaxStackSize(1).setCreativeTab(null).setTextureName(RefStrings.MODID + ":missile_custom"); sat_mapper = new ItemSatChip().setUnlocalizedName("sat_mapper").setMaxStackSize(1).setCreativeTab(MainRegistry.missileTab).setTextureName(RefStrings.MODID + ":sat_mapper"); sat_scanner = new ItemSatChip().setUnlocalizedName("sat_scanner").setMaxStackSize(1).setCreativeTab(MainRegistry.missileTab).setTextureName(RefStrings.MODID + ":sat_scanner"); @@ -2593,6 +2596,7 @@ public class ModItems { sat_gerald = new ItemSatChip().setUnlocalizedName("sat_gerald").setMaxStackSize(1).setCreativeTab(MainRegistry.missileTab).setTextureName(RefStrings.MODID + ":sat_gerald"); sat_chip = new ItemSatChip().setUnlocalizedName("sat_chip").setMaxStackSize(1).setCreativeTab(MainRegistry.missileTab).setTextureName(RefStrings.MODID + ":sat_chip"); sat_interface = new ItemSatInterface().setUnlocalizedName("sat_interface").setMaxStackSize(1).setCreativeTab(MainRegistry.missileTab).setTextureName(RefStrings.MODID + ":sat_interface"); + sat_coord = new ItemSatInterface().setUnlocalizedName("sat_coord").setMaxStackSize(1).setCreativeTab(MainRegistry.missileTab).setTextureName(RefStrings.MODID + ":sat_coord"); mp_thruster_10_kerosene = new ItemMissile().makeThruster(FuelType.KEROSENE, 1F, 1.5F, PartSize.SIZE_10).setHealth(10F) .setUnlocalizedName("mp_thruster_10_kerosene"); mp_thruster_10_kerosene_tec = new ItemMissile().makeThruster(FuelType.KEROSENE, 1F, 1.5F, PartSize.SIZE_10).setHealth(15F).setRarity(Rarity.COMMON).setUnlocalizedName("mp_thruster_10_kerosene_tec"); @@ -2747,6 +2751,7 @@ public class ModItems { ammo_12gauge_incendiary = new ItemAmmo().setUnlocalizedName("ammo_12gauge_incendiary").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":ammo_12gauge_incendiary"); ammo_12gauge_shrapnel = new ItemAmmo().setUnlocalizedName("ammo_12gauge_shrapnel").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":ammo_12gauge_shrapnel"); ammo_12gauge_du = new ItemAmmo().setUnlocalizedName("ammo_12gauge_du").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":ammo_12gauge_du"); + ammo_12gauge_marauder = new ItemAmmo().setUnlocalizedName("ammo_12gauge_marauder").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":ammo_12gauge_marauder"); ammo_20gauge = new ItemAmmo().setUnlocalizedName("ammo_20gauge").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":ammo_20gauge"); ammo_20gauge_slug = new ItemAmmo().setUnlocalizedName("ammo_20gauge_slug").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":ammo_20gauge_slug"); ammo_20gauge_flechette = new ItemAmmo().setUnlocalizedName("ammo_20gauge_flechette").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":ammo_20gauge_flechette"); @@ -4605,6 +4610,7 @@ public class ModItems { GameRegistry.registerItem(sat_gerald, sat_gerald.getUnlocalizedName()); GameRegistry.registerItem(sat_chip, sat_chip.getUnlocalizedName()); GameRegistry.registerItem(sat_interface, sat_interface.getUnlocalizedName()); + GameRegistry.registerItem(sat_coord, sat_coord.getUnlocalizedName()); //Guns GameRegistry.registerItem(gun_revolver_iron, gun_revolver_iron.getUnlocalizedName()); @@ -4715,6 +4721,7 @@ public class ModItems { GameRegistry.registerItem(ammo_12gauge_incendiary, ammo_12gauge_incendiary.getUnlocalizedName()); GameRegistry.registerItem(ammo_12gauge_shrapnel, ammo_12gauge_shrapnel.getUnlocalizedName()); GameRegistry.registerItem(ammo_12gauge_du, ammo_12gauge_du.getUnlocalizedName()); + GameRegistry.registerItem(ammo_12gauge_marauder, ammo_12gauge_marauder.getUnlocalizedName()); GameRegistry.registerItem(ammo_20gauge, ammo_20gauge.getUnlocalizedName()); GameRegistry.registerItem(ammo_20gauge_slug, ammo_20gauge_slug.getUnlocalizedName()); GameRegistry.registerItem(ammo_20gauge_flechette, ammo_20gauge_flechette.getUnlocalizedName()); diff --git a/com/hbm/items/special/ItemCustomLore.java b/com/hbm/items/special/ItemCustomLore.java index d3c363122..789dc99ae 100644 --- a/com/hbm/items/special/ItemCustomLore.java +++ b/com/hbm/items/special/ItemCustomLore.java @@ -736,6 +736,11 @@ public class ItemCustomLore extends Item { { list.add("High in fiber, high in glass. Everything the body needs."); } + + if(this == ModItems.missile_soyuz_lander) + { + list.add("Doubles as a crappy lander!"); + } } @Override diff --git a/com/hbm/items/special/ItemSoyuz.java b/com/hbm/items/special/ItemSoyuz.java index dda1b04af..7644a0880 100644 --- a/com/hbm/items/special/ItemSoyuz.java +++ b/com/hbm/items/special/ItemSoyuz.java @@ -2,17 +2,24 @@ package com.hbm.items.special; import java.util.List; +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.entity.player.EntityPlayer; import net.minecraft.item.EnumRarity; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.util.EnumChatFormatting; +import net.minecraft.util.IIcon; +import net.minecraft.util.MathHelper; public class ItemSoyuz extends Item { + IIcon[] icons = new IIcon[3]; + public ItemSoyuz() { this.setHasSubtypes(true); } @@ -20,9 +27,9 @@ public class ItemSoyuz extends Item { @Override @SideOnly(Side.CLIENT) public void getSubItems(Item item, CreativeTabs tab, List list) { - list.add(new ItemStack(item, 1, 0)); - list.add(new ItemStack(item, 1, 1)); - list.add(new ItemStack(item, 1, 2)); + + for(int i = 0; i < icons.length; i++) + list.add(new ItemStack(item, 1, i)); } @Override @@ -52,4 +59,19 @@ public class ItemSoyuz extends Item { } } + @SideOnly(Side.CLIENT) + public void registerIcons(IIconRegister reg) + { + for(int i = 0; i < icons.length; i++) { + icons[i] = reg.registerIcon(RefStrings.MODID + ":soyuz_" + i); + } + } + + @SideOnly(Side.CLIENT) + public IIcon getIconFromDamage(int meta) + { + int j = MathHelper.clamp_int(meta, 0, icons.length - 1); + return icons[j]; + } + } diff --git a/com/hbm/items/tool/ItemSatInterface.java b/com/hbm/items/tool/ItemSatInterface.java index f972bd935..77a3f1273 100644 --- a/com/hbm/items/tool/ItemSatInterface.java +++ b/com/hbm/items/tool/ItemSatInterface.java @@ -5,7 +5,10 @@ import com.hbm.main.MainRegistry; import com.hbm.packet.PacketDispatcher; import com.hbm.packet.SatPanelPacket; import com.hbm.saveddata.SatelliteSavedData; +import com.hbm.saveddata.satellites.Satellite; +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.entity.player.EntityPlayerMP; @@ -14,30 +17,36 @@ import net.minecraft.world.World; public class ItemSatInterface extends ItemSatChip { - public static SatelliteSavedData satData; + @SideOnly(Side.CLIENT) + public static Satellite currentSat; @Override public ItemStack onItemRightClick(ItemStack stack, World world, EntityPlayer player) { - - if(world.isRemote) - player.openGui(MainRegistry.instance, ModItems.guiID_item_sat_interface, world, 0, 0, 0); + if(world.isRemote) { + + if(this == ModItems.sat_interface) + player.openGui(MainRegistry.instance, ModItems.guiID_item_sat_interface, world, 0, 0, 0); + if(this == ModItems.sat_coord) + player.openGui(MainRegistry.instance, ModItems.guiID_item_sat_coord, world, 0, 0, 0); + } return stack; } - //TODO: fix this shit public void onUpdate(ItemStack stack, World world, Entity entity, int i, boolean b) { - - if(!world.isRemote && entity instanceof EntityPlayerMP) { - SatelliteSavedData data = (SatelliteSavedData)entity.worldObj.perWorldStorage.loadData(SatelliteSavedData.class, "satellites"); - - if(data != null) { - for(int j = 0; j < data.satellites.size(); j++) { - PacketDispatcher.wrapper.sendTo(new SatPanelPacket(data.satellites.get(j)), (EntityPlayerMP) entity); - } - } - } + + if(world.isRemote || !(entity instanceof EntityPlayerMP)) + return; + + if(((EntityPlayerMP)entity).getHeldItem() != stack) + return; + + Satellite sat = SatelliteSavedData.getData(world).getSatFromFreq(this.getFreq(stack)); + + if(sat != null && entity.ticksExisted % 2 == 0) { + PacketDispatcher.wrapper.sendTo(new SatPanelPacket(sat), (EntityPlayerMP) entity); + } } } diff --git a/com/hbm/items/weapon/ItemAmmo.java b/com/hbm/items/weapon/ItemAmmo.java index b57126504..d09ce32fe 100644 --- a/com/hbm/items/weapon/ItemAmmo.java +++ b/com/hbm/items/weapon/ItemAmmo.java @@ -30,6 +30,10 @@ public class ItemAmmo extends Item { list.add(EnumChatFormatting.YELLOW + "* Heavy Metal"); list.add(EnumChatFormatting.RED + "- Highly increased wear"); } + if(this == ModItems.ammo_12gauge_marauder) { + list.add(EnumChatFormatting.BLUE + "+ Instantly removes annoying and unbalanced enemies"); + list.add(EnumChatFormatting.YELLOW + "* No drawbacks lole"); + } //20 GAUGE if(this == ModItems.ammo_20gauge_flechette) { diff --git a/com/hbm/main/MainRegistry.java b/com/hbm/main/MainRegistry.java index 8bd3dc879..d47433a24 100644 --- a/com/hbm/main/MainRegistry.java +++ b/com/hbm/main/MainRegistry.java @@ -56,6 +56,7 @@ import com.hbm.lib.Library; import com.hbm.lib.RefStrings; import com.hbm.packet.PacketDispatcher; import com.hbm.potion.HbmPotion; +import com.hbm.saveddata.satellites.Satellite; import com.hbm.tileentity.bomb.*; import com.hbm.tileentity.conductor.*; import com.hbm.tileentity.deco.*; @@ -211,6 +212,9 @@ public class MainRegistry public static Achievement bobOil; public static Achievement bobNuclear; public static Achievement bobHidden; + public static Achievement horizonsStart; + public static Achievement horizonsEnd; + public static Achievement horizonsBonus; public static boolean enableDebugMode = true; public static boolean enableMycelium = false; @@ -358,6 +362,7 @@ public class MainRegistry HbmPotion.init(); BulletConfigSyncingUtil.loadConfigsForSync(); CellularDungeonFactory.init(); + Satellite.register(); Library.superuser.add("192af5d7-ed0f-48d8-bd89-9d41af8524f8"); Library.superuser.add("5aee1e3d-3767-4987-a222-e7ce1fbdf88e"); @@ -1030,6 +1035,10 @@ public class MainRegistry bobOil = new Achievement("achievement.oil", "oil", 4, 4, ModItems.bob_oil, bobChemistry).initIndependentStat().registerStat(); bobNuclear = new Achievement("achievement.nuclear", "nuclear", 6, 4, ModItems.bob_nuclear, bobOil).initIndependentStat().registerStat(); bobHidden = new Achievement("achievement.hidden", "hidden", 8, 4, ModItems.gun_dampfmaschine, bobNuclear).initIndependentStat().registerStat(); + + horizonsStart = new Achievement("achievement.horizonsStart", "horizonsStart", -2, 6, ModItems.sat_gerald, null).initIndependentStat().registerStat(); + horizonsEnd = new Achievement("achievement.horizonsEnd", "horizonsEnd", 0, 6, ModItems.sat_gerald, horizonsStart).initIndependentStat().registerStat(); + horizonsBonus = new Achievement("achievement.horizonsBonus", "horizonsBonus", 2, 6, ModItems.sat_gerald, horizonsEnd).initIndependentStat().registerStat().setSpecial(); AchievementPage.registerAchievementPage(new AchievementPage("Nuclear Tech", new Achievement[]{ achSacrifice, @@ -1049,7 +1058,10 @@ public class MainRegistry bobChemistry, bobOil, bobNuclear, - bobHidden + bobHidden, + horizonsStart, + horizonsEnd, + horizonsBonus })); //MUST be initialized AFTER achievements!! diff --git a/com/hbm/packet/PacketDispatcher.java b/com/hbm/packet/PacketDispatcher.java index 56200ef67..48f6306a0 100644 --- a/com/hbm/packet/PacketDispatcher.java +++ b/com/hbm/packet/PacketDispatcher.java @@ -61,7 +61,7 @@ public class PacketDispatcher { wrapper.registerMessage(TERadarPacket.Handler.class, TERadarPacket.class, i++, Side.CLIENT); //Siren packet for looped sounds wrapper.registerMessage(TERadarDestructorPacket.Handler.class, TERadarDestructorPacket.class, i++, Side.CLIENT); - //Signals server to perform orbital strike + //Signals server to perform orbital strike, among other things wrapper.registerMessage(SatLaserPacket.Handler.class, SatLaserPacket.class, i++, Side.SERVER); //Universal package for sending small info packs back to server wrapper.registerMessage(AuxButtonPacket.Handler.class, AuxButtonPacket.class, i++, Side.SERVER); @@ -91,6 +91,8 @@ public class PacketDispatcher { wrapper.registerMessage(NBTPacket.Handler.class, NBTPacket.class, i++, Side.CLIENT); //Aux Particle Packet, New Technology: like the APP but with NBT wrapper.registerMessage(AuxParticlePacketNT.Handler.class, AuxParticlePacketNT.class, i++, Side.CLIENT); + //Signals server to do coord based satellite stuff + wrapper.registerMessage(SatCoordPacket.Handler.class, SatCoordPacket.class, i++, Side.SERVER); } } diff --git a/com/hbm/packet/SatCoordPacket.java b/com/hbm/packet/SatCoordPacket.java new file mode 100644 index 000000000..49fc67f20 --- /dev/null +++ b/com/hbm/packet/SatCoordPacket.java @@ -0,0 +1,71 @@ +package com.hbm.packet; + +import com.hbm.items.tool.ItemSatInterface; +import com.hbm.saveddata.SatelliteSavedData; +import com.hbm.saveddata.satellites.Satellite; + +import cpw.mods.fml.common.network.simpleimpl.IMessage; +import cpw.mods.fml.common.network.simpleimpl.IMessageHandler; +import cpw.mods.fml.common.network.simpleimpl.MessageContext; +import io.netty.buffer.ByteBuf; +import net.minecraft.entity.player.EntityPlayer; + +public class SatCoordPacket implements IMessage { + + int x; + int y; + int z; + int freq; + + public SatCoordPacket() + { + + } + + public SatCoordPacket(int x, int y, int z, int freq) + { + this.x = x; + this.y = y; + this.z = z; + this.freq = freq; + } + + @Override + public void fromBytes(ByteBuf buf) { + x = buf.readInt(); + y = buf.readInt(); + z = buf.readInt(); + freq = buf.readInt(); + } + + @Override + public void toBytes(ByteBuf buf) { + buf.writeInt(x); + buf.writeInt(y); + buf.writeInt(z); + buf.writeInt(freq); + } + + public static class Handler implements IMessageHandler { + + @Override + public IMessage onMessage(SatCoordPacket m, MessageContext ctx) { + + EntityPlayer p = ctx.getServerHandler().playerEntity; + + if(p.getHeldItem() != null && p.getHeldItem().getItem() instanceof ItemSatInterface) { + + int freq = ItemSatInterface.getFreq(p.getHeldItem()); + + if(freq == m.freq) { + Satellite sat = SatelliteSavedData.getData(p.worldObj).getSatFromFreq(m.freq); + + if(sat != null) + sat.onCoordAction(p.worldObj, m.x, m.y, m.z); + } + } + + return null; + } + } +} diff --git a/com/hbm/packet/SatLaserPacket.java b/com/hbm/packet/SatLaserPacket.java index 09606d683..d5e6ad749 100644 --- a/com/hbm/packet/SatLaserPacket.java +++ b/com/hbm/packet/SatLaserPacket.java @@ -1,8 +1,8 @@ package com.hbm.packet; -import com.hbm.entity.logic.EntityDeathBlast; -import com.hbm.saveddata.SatelliteSaveStructure; +import com.hbm.items.tool.ItemSatInterface; import com.hbm.saveddata.SatelliteSavedData; +import com.hbm.saveddata.satellites.Satellite; import cpw.mods.fml.common.network.simpleimpl.IMessage; import cpw.mods.fml.common.network.simpleimpl.IMessageHandler; @@ -51,31 +51,18 @@ public class SatLaserPacket implements IMessage { public IMessage onMessage(SatLaserPacket m, MessageContext ctx) { EntityPlayer p = ctx.getServerHandler().playerEntity; - - SatelliteSavedData data = (SatelliteSavedData)p.worldObj.perWorldStorage.loadData(SatelliteSavedData.class, "satellites"); - if(data == null) { - p.worldObj.perWorldStorage.setData("satellites", new SatelliteSavedData(p.worldObj)); - - data = (SatelliteSavedData)p.worldObj.perWorldStorage.loadData(SatelliteSavedData.class, "satellites"); - } - - SatelliteSaveStructure sat = data.getSatFromFreq(m.freq); - - if(sat != null) { - if(sat.lastOp + 10000 < System.currentTimeMillis()) { - sat.lastOp = System.currentTimeMillis(); - - int y = p.worldObj.getHeightValue(m.x, m.z); - - //ExplosionLarge.explodeFire(p.worldObj, m.x, y, m.z, 50, true, true, true); - EntityDeathBlast blast = new EntityDeathBlast(p.worldObj); - blast.posX = m.x; - blast.posY = y; - blast.posZ = m.z; - - p.worldObj.spawnEntityInWorld(blast); - } - } + + if(p.getHeldItem() != null && p.getHeldItem().getItem() instanceof ItemSatInterface) { + + int freq = ItemSatInterface.getFreq(p.getHeldItem()); + + if(freq == m.freq) { + Satellite sat = SatelliteSavedData.getData(p.worldObj).getSatFromFreq(m.freq); + + if(sat != null) + sat.onClick(p.worldObj, m.x, m.z); + } + } return null; } diff --git a/com/hbm/packet/SatPanelPacket.java b/com/hbm/packet/SatPanelPacket.java index cbbd06a34..89252d7e1 100644 --- a/com/hbm/packet/SatPanelPacket.java +++ b/com/hbm/packet/SatPanelPacket.java @@ -1,50 +1,65 @@ package com.hbm.packet; +import java.io.IOException; + import com.hbm.items.tool.ItemSatInterface; -import com.hbm.saveddata.SatelliteSaveStructure; -import com.hbm.saveddata.SatelliteSaveStructure.SatelliteType; -import com.hbm.saveddata.SatelliteSavedData; +import com.hbm.saveddata.satellites.Satellite; + import cpw.mods.fml.common.network.simpleimpl.IMessage; import cpw.mods.fml.common.network.simpleimpl.IMessageHandler; import cpw.mods.fml.common.network.simpleimpl.MessageContext; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import io.netty.buffer.ByteBuf; +import io.netty.buffer.Unpooled; import net.minecraft.client.Minecraft; -import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.network.PacketBuffer; public class SatPanelPacket implements IMessage { - - int id; - int dim; - SatelliteType type; - long lastOp; + + PacketBuffer buffer; + int type; public SatPanelPacket() { } - public SatPanelPacket(SatelliteSaveStructure sat) { - id = sat.satelliteID; - dim = sat.satDim; - type = sat.satelliteType; - lastOp = sat.lastOp; + public SatPanelPacket(Satellite sat) { + type = sat.getID(); + + this.buffer = new PacketBuffer(Unpooled.buffer()); + NBTTagCompound nbt = new NBTTagCompound(); + sat.writeToNBT(nbt); + + try { + buffer.writeNBTTagCompoundToBuffer(nbt); + + } catch (IOException e) { + e.printStackTrace(); + } } @Override public void fromBytes(ByteBuf buf) { - id = buf.readInt(); - dim = buf.readInt(); - type = SatelliteType.getEnum(buf.readInt()); - lastOp = buf.readLong(); + + type = buf.readInt(); + + if (buffer == null) { + buffer = new PacketBuffer(Unpooled.buffer()); + } + buffer.writeBytes(buf); } @Override public void toBytes(ByteBuf buf) { - buf.writeInt(id); - buf.writeInt(dim); - buf.writeInt(type.getID()); - buf.writeLong(lastOp); + + buf.writeInt(type); + + if (buffer == null) { + buffer = new PacketBuffer(Unpooled.buffer()); + } + buf.writeBytes(buffer); } public static class Handler implements IMessageHandler { @@ -53,19 +68,15 @@ public class SatPanelPacket implements IMessage { @SideOnly(Side.CLIENT) public IMessage onMessage(SatPanelPacket m, MessageContext ctx) { - EntityPlayer p = Minecraft.getMinecraft().thePlayer; + Minecraft.getMinecraft(); try { - if(ItemSatInterface.satData == null) { - ItemSatInterface.satData = new SatelliteSavedData(p.worldObj); - } + NBTTagCompound nbt = m.buffer.readNBTTagCompoundFromBuffer(); + ItemSatInterface.currentSat = Satellite.create(m.type); - SatelliteSaveStructure sat = new SatelliteSaveStructure(m.id, m.type, m.dim); - sat.lastOp = m.lastOp; - ItemSatInterface.satData.satellites.add(sat); - - ItemSatInterface.satData.satCount = ItemSatInterface.satData.satellites.size(); + if(nbt != null) + ItemSatInterface.currentSat.readFromNBT(nbt); } catch (Exception x) { } diff --git a/com/hbm/saveddata/SatelliteSaveStructure.java b/com/hbm/saveddata/SatelliteSaveStructure.java deleted file mode 100644 index 8b50b4b8c..000000000 --- a/com/hbm/saveddata/SatelliteSaveStructure.java +++ /dev/null @@ -1,65 +0,0 @@ -package com.hbm.saveddata; - -import java.util.Arrays; - -import net.minecraft.nbt.NBTTagCompound; - -public class SatelliteSaveStructure { - - public int satelliteID; - public int satDim; - public SatelliteType satelliteType; - public long lastOp; - - public SatelliteSaveStructure() { } - - public SatelliteSaveStructure(int id, SatelliteType type, int dim) { - satelliteID = id; - satelliteType = type; - satDim = dim; - } - - public enum SatelliteType { - - //Prints map remotely - MAPPER, - //Displays entities - RADAR, - //Prints map, ores only - SCANNER, - //Does nothing - RELAY, - //Death ray - LASER, - //Allows use of AMS - RESONATOR, - //Farms ores for free - MINER; - - public static SatelliteType getEnum(int i) { - if(i < SatelliteType.values().length) - return SatelliteType.values()[i]; - else - return SatelliteType.RELAY; - } - - public int getID() { - return Arrays.asList(SatelliteType.values()).indexOf(this); - } - } - - public void readFromNBT(NBTTagCompound nbt, int index) { - satelliteID = nbt.getInteger("sat_" + index + "_id"); - satelliteType = SatelliteType.getEnum(nbt.getInteger("sat_" + index + "_type")); - satDim = nbt.getInteger("sat_" + index + "_dim"); - lastOp = nbt.getLong("sat_" + index + "_op"); - } - - public void writeToNBT(NBTTagCompound nbt, int index) { - nbt.setInteger("sat_" + index + "_id", satelliteID); - nbt.setInteger("sat_" + index + "_type", satelliteType.getID()); - nbt.setInteger("sat_" + index + "_dim", satDim); - nbt.setLong("sat_" + index + "_op", lastOp); - } - -} diff --git a/com/hbm/saveddata/SatelliteSavedData.java b/com/hbm/saveddata/SatelliteSavedData.java index 562f1e2ce..2eefd843c 100644 --- a/com/hbm/saveddata/SatelliteSavedData.java +++ b/com/hbm/saveddata/SatelliteSavedData.java @@ -1,7 +1,9 @@ package com.hbm.saveddata; -import java.util.ArrayList; -import java.util.List; +import java.util.HashMap; +import java.util.Map.Entry; + +import com.hbm.saveddata.satellites.Satellite; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.world.World; @@ -9,9 +11,7 @@ import net.minecraft.world.WorldSavedData; public class SatelliteSavedData extends WorldSavedData { - public int satCount; - - public List satellites = new ArrayList(); + public HashMap sats = new HashMap(); private World worldObj; @@ -31,34 +31,60 @@ public class SatelliteSavedData extends WorldSavedData { return getSatFromFreq(freq) != null; } - public SatelliteSaveStructure getSatFromFreq(int freq) { + public Satellite getSatFromFreq(int freq) { - for(SatelliteSaveStructure sat : satellites) - if(sat.satelliteID == freq) - return sat; - - return null; + return sats.get(freq); } @Override public void readFromNBT(NBTTagCompound nbt) { - satCount = nbt.getInteger("satCount"); + int satCount = nbt.getInteger("satCount"); for(int i = 0; i < satCount; i++) { - SatelliteSaveStructure struct = new SatelliteSaveStructure(); - struct.readFromNBT(nbt, i); - satellites.add(struct); + Satellite sat = Satellite.create(nbt.getInteger("sat_id_" + i)); + sat.readFromNBT((NBTTagCompound) nbt.getTag("sat_data_" + i)); + + int freq = nbt.getInteger("sat_freq_" + i); + + sats.put(freq, sat); + + System.out.println("Loaded sat" + i + " " + sat.getClass().getSimpleName()); } } @Override public void writeToNBT(NBTTagCompound nbt) { - nbt.setInteger("satCount", satellites.size()); + nbt.setInteger("satCount", sats.size()); - for(int i = 0; i < satellites.size(); i++) { - satellites.get(i).writeToNBT(nbt, i); - } + int i = 0; + + for(Entry struct : sats.entrySet()) { + + NBTTagCompound data = new NBTTagCompound(); + struct.getValue().writeToNBT(data); + + nbt.setInteger("sat_id_" + i, struct.getValue().getID()); + nbt.setTag("sat_data_" + i, data); + nbt.setInteger("sat_freq_" + i, struct.getKey()); + i++; + + System.out.println("Saved sat" + i + " " + struct.getValue().getClass().getSimpleName()); + } + } + + public static SatelliteSavedData getData(World worldObj) { + + SatelliteSavedData data = (SatelliteSavedData)worldObj.perWorldStorage.loadData(SatelliteSavedData.class, "satellites"); + if(data == null) { + worldObj.perWorldStorage.setData("satellites", new SatelliteSavedData(worldObj)); + + data = (SatelliteSavedData)worldObj.perWorldStorage.loadData(SatelliteSavedData.class, "satellites"); + } + + data.worldObj = worldObj; + + return data; } } diff --git a/com/hbm/saveddata/satellites/Satellite.java b/com/hbm/saveddata/satellites/Satellite.java new file mode 100644 index 000000000..0aa422577 --- /dev/null +++ b/com/hbm/saveddata/satellites/Satellite.java @@ -0,0 +1,123 @@ +package com.hbm.saveddata.satellites; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; + +import com.hbm.items.ModItems; +import com.hbm.saveddata.SatelliteSavedData; + +import net.minecraft.item.Item; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.world.World; + +public abstract class Satellite { + + public static List satellites = new ArrayList(); + public static HashMap itemToClass = new HashMap(); + + public static enum InterfaceActions { + HAS_MAP, //lets the interface display loaded chunks + CAN_CLICK, //enables onClick events + SHOW_COORDS, //enables coordinates as a mouse tooltip + HAS_RADAR, //lets the interface display loaded entities + HAS_ORES //like HAS_MAP but only shows ores + } + + public static enum CoordActions { + HAS_Y //enables the Y-coord field which is disabled by default + } + + public static enum Interfaces { + NONE, //does not interact with any sat interface (i.e. asteroid miners) + SAT_PANEL, //allows to interact with the sat interface panel (for graphical applications) + SAT_COORD //allows to interact with the sat coord remote (for teleportation or other coord related actions) + } + + public List ifaceAcs = new ArrayList(); + public List coordAcs = new ArrayList(); + public Interfaces satIface = Interfaces.NONE; + + public static void register() { + + registerSatellite(SatelliteMapper.class, ModItems.sat_mapper); + registerSatellite(SatelliteScanner.class, ModItems.sat_scanner); + registerSatellite(SatelliteRadar.class, ModItems.sat_radar); + registerSatellite(SatelliteLaser.class, ModItems.sat_laser); + registerSatellite(SatelliteResonator.class, ModItems.sat_resonator); + registerSatellite(SatelliteRelay.class, ModItems.sat_foeq); + registerSatellite(SatelliteMiner.class, ModItems.sat_miner); + registerSatellite(SatelliteHorizons.class, ModItems.sat_gerald); + } + + private static void registerSatellite(Class sat, Item item) { + + satellites.add(sat); + itemToClass.put(item, sat); + } + + public static void orbit(World world, int id, int freq, double x, double y, double z) { + + Satellite sat = create(id); + + if(sat != null && !world.isRemote) { + SatelliteSavedData data = SatelliteSavedData.getData(world); + data.sats.put(freq, sat); + sat.onOrbit(world, x, y, z); + data.markDirty(); + } + } + + public static Satellite create(int id) { + + Satellite sat = null; + + try { + Class c = satellites.get(id); + sat = (Satellite) c.newInstance(); + } catch(Exception ex) { + + } + + return sat; + } + + public static int getIDFromItem(Item item) { + + Class sat = itemToClass.get(item); + int i = satellites.indexOf(sat); + + return i; + } + + public int getID() { + return satellites.indexOf(this.getClass()); + } + + public void writeToNBT(NBTTagCompound nbt) { } + + public void readFromNBT(NBTTagCompound nbt) { } + + /** + * Called when the satellite reaches space, used to trigger achievements and other funny stuff. + * @param x posX of the rocket + * @param y ditto + * @param z ditto + */ + public void onOrbit(World world, double x, double y, double z) { } + + /** + * Called by the sat interface when clicking on the screen + * @param x the x-coordinate translated from the on-screen coords to actual world coordinates + * @param z ditto + */ + public void onClick(World world, int x, int z) { } + + /** + * Called by the coord sat interface + * @param x the specified x-coordinate + * @param y ditto + * @param z ditto + */ + public void onCoordAction(World world, int x, int y, int z) { } +} diff --git a/com/hbm/saveddata/satellites/SatelliteHorizons.java b/com/hbm/saveddata/satellites/SatelliteHorizons.java new file mode 100644 index 000000000..6a6885680 --- /dev/null +++ b/com/hbm/saveddata/satellites/SatelliteHorizons.java @@ -0,0 +1,19 @@ +package com.hbm.saveddata.satellites; + +import com.hbm.main.MainRegistry; + +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.world.World; + +public class SatelliteHorizons extends Satellite { + + public SatelliteHorizons() { + this.satIface = Interfaces.SAT_COORD; + } + + public void onOrbit(World world, double x, double y, double z) { + + for(Object p : world.playerEntities) + ((EntityPlayer)p).triggerAchievement(MainRegistry.horizonsStart); + } +} diff --git a/com/hbm/saveddata/satellites/SatelliteLaser.java b/com/hbm/saveddata/satellites/SatelliteLaser.java new file mode 100644 index 000000000..46c5f89a6 --- /dev/null +++ b/com/hbm/saveddata/satellites/SatelliteLaser.java @@ -0,0 +1,42 @@ +package com.hbm.saveddata.satellites; + +import com.hbm.entity.logic.EntityDeathBlast; + +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.world.World; + +public class SatelliteLaser extends Satellite { + + public long lastOp; + + public SatelliteLaser() { + this.ifaceAcs.add(InterfaceActions.HAS_MAP); + this.ifaceAcs.add(InterfaceActions.SHOW_COORDS); + this.ifaceAcs.add(InterfaceActions.CAN_CLICK); + this.satIface = Interfaces.SAT_PANEL; + } + + public void writeToNBT(NBTTagCompound nbt) { + nbt.setLong("lastOp", lastOp); + } + + public void readFromNBT(NBTTagCompound nbt) { + lastOp = nbt.getLong("lastOp"); + } + + public void onClick(World world, int x, int z) { + + if(lastOp + 10000 < System.currentTimeMillis()) { + lastOp = System.currentTimeMillis(); + + int y = world.getHeightValue(x, z); + + EntityDeathBlast blast = new EntityDeathBlast(world); + blast.posX = x; + blast.posY = y; + blast.posZ = z; + + world.spawnEntityInWorld(blast); + } + } +} diff --git a/com/hbm/saveddata/satellites/SatelliteMapper.java b/com/hbm/saveddata/satellites/SatelliteMapper.java new file mode 100644 index 000000000..a23ee8e50 --- /dev/null +++ b/com/hbm/saveddata/satellites/SatelliteMapper.java @@ -0,0 +1,9 @@ +package com.hbm.saveddata.satellites; + +public class SatelliteMapper extends Satellite { + + public SatelliteMapper() { + this.ifaceAcs.add(InterfaceActions.HAS_MAP); + this.satIface = Interfaces.SAT_PANEL; + } +} diff --git a/com/hbm/saveddata/satellites/SatelliteMiner.java b/com/hbm/saveddata/satellites/SatelliteMiner.java new file mode 100644 index 000000000..f54beb254 --- /dev/null +++ b/com/hbm/saveddata/satellites/SatelliteMiner.java @@ -0,0 +1,20 @@ +package com.hbm.saveddata.satellites; + +import net.minecraft.nbt.NBTTagCompound; + +public class SatelliteMiner extends Satellite { + + public long lastOp; + + public SatelliteMiner() { + this.satIface = Interfaces.NONE; + } + + public void writeToNBT(NBTTagCompound nbt) { + nbt.setLong("lastOp", lastOp); + } + + public void readFromNBT(NBTTagCompound nbt) { + lastOp = nbt.getLong("lastOp"); + } +} diff --git a/com/hbm/saveddata/satellites/SatelliteRadar.java b/com/hbm/saveddata/satellites/SatelliteRadar.java new file mode 100644 index 000000000..337475080 --- /dev/null +++ b/com/hbm/saveddata/satellites/SatelliteRadar.java @@ -0,0 +1,10 @@ +package com.hbm.saveddata.satellites; + +public class SatelliteRadar extends Satellite { + + public SatelliteRadar() { + this.ifaceAcs.add(InterfaceActions.HAS_MAP); + this.ifaceAcs.add(InterfaceActions.HAS_RADAR); + this.satIface = Interfaces.SAT_PANEL; + } +} diff --git a/com/hbm/saveddata/satellites/SatelliteRelay.java b/com/hbm/saveddata/satellites/SatelliteRelay.java new file mode 100644 index 000000000..a7aa0a251 --- /dev/null +++ b/com/hbm/saveddata/satellites/SatelliteRelay.java @@ -0,0 +1,19 @@ +package com.hbm.saveddata.satellites; + +import com.hbm.main.MainRegistry; + +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.world.World; + +public class SatelliteRelay extends Satellite { + + public SatelliteRelay() { + this.satIface = Interfaces.NONE; + } + + public void onOrbit(World world, double x, double y, double z) { + + for(Object p : world.playerEntities) + ((EntityPlayer)p).triggerAchievement(MainRegistry.achFOEQ); + } +} diff --git a/com/hbm/saveddata/satellites/SatelliteResonator.java b/com/hbm/saveddata/satellites/SatelliteResonator.java new file mode 100644 index 000000000..1aebe82c4 --- /dev/null +++ b/com/hbm/saveddata/satellites/SatelliteResonator.java @@ -0,0 +1,9 @@ +package com.hbm.saveddata.satellites; + +public class SatelliteResonator extends Satellite { + + public SatelliteResonator() { + this.coordAcs.add(CoordActions.HAS_Y); + this.satIface = Interfaces.SAT_COORD; + } +} diff --git a/com/hbm/saveddata/satellites/SatelliteScanner.java b/com/hbm/saveddata/satellites/SatelliteScanner.java new file mode 100644 index 000000000..7d0ec86ab --- /dev/null +++ b/com/hbm/saveddata/satellites/SatelliteScanner.java @@ -0,0 +1,9 @@ +package com.hbm.saveddata.satellites; + +public class SatelliteScanner extends Satellite { + + public SatelliteScanner() { + this.ifaceAcs.add(InterfaceActions.HAS_ORES); + this.satIface = Interfaces.SAT_PANEL; + } +} diff --git a/com/hbm/tileentity/machine/TileEntityAMSBase.java b/com/hbm/tileentity/machine/TileEntityAMSBase.java index 0c73f8f6c..c75fb8aae 100644 --- a/com/hbm/tileentity/machine/TileEntityAMSBase.java +++ b/com/hbm/tileentity/machine/TileEntityAMSBase.java @@ -20,8 +20,8 @@ import com.hbm.lib.ModDamageSource; import com.hbm.packet.AuxElectricityPacket; import com.hbm.packet.AuxGaugePacket; import com.hbm.packet.PacketDispatcher; -import com.hbm.saveddata.SatelliteSaveStructure.SatelliteType; import com.hbm.saveddata.SatelliteSavedData; +import com.hbm.saveddata.satellites.SatelliteResonator; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import cpw.mods.fml.relauncher.Side; @@ -551,7 +551,7 @@ public class TileEntityAMSBase extends TileEntity implements ISidedInventory, IS int i3 = ItemSatChip.getFreq(slots[15]); if(data.getSatFromFreq(i1) != null && data.getSatFromFreq(i2) != null && data.getSatFromFreq(i3) != null && - data.getSatFromFreq(i1).satelliteType.getID() == SatelliteType.RESONATOR.getID() && data.getSatFromFreq(i2).satelliteType.getID() == SatelliteType.RESONATOR.getID() && data.getSatFromFreq(i3).satelliteType.getID() == SatelliteType.RESONATOR.getID() && + data.getSatFromFreq(i1) instanceof SatelliteResonator && data.getSatFromFreq(i2) instanceof SatelliteResonator && data.getSatFromFreq(i3) instanceof SatelliteResonator && i1 != i2 && i1 != i3 && i2 != i3) return true; diff --git a/com/hbm/tileentity/machine/TileEntityMachineSatDock.java b/com/hbm/tileentity/machine/TileEntityMachineSatDock.java index 8df7dae06..21c155828 100644 --- a/com/hbm/tileentity/machine/TileEntityMachineSatDock.java +++ b/com/hbm/tileentity/machine/TileEntityMachineSatDock.java @@ -6,9 +6,9 @@ import java.util.Random; import com.hbm.entity.missile.EntityMinerRocket; import com.hbm.items.ModItems; import com.hbm.items.tool.ItemSatChip; -import com.hbm.saveddata.SatelliteSaveStructure; -import com.hbm.saveddata.SatelliteSaveStructure.SatelliteType; import com.hbm.saveddata.SatelliteSavedData; +import com.hbm.saveddata.satellites.Satellite; +import com.hbm.saveddata.satellites.SatelliteMiner; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @@ -204,19 +204,22 @@ public class TileEntityMachineSatDock extends TileEntity implements ISidedInvent if(data != null && slots[15] != null) { int freq = ItemSatChip.getFreq(slots[15]); - SatelliteSaveStructure sat = data.getSatFromFreq(freq); + Satellite sat = data.getSatFromFreq(freq); int delay = 10 * 60 * 1000; - if(sat != null && sat.satelliteID == freq && sat.satelliteType.name().equals(SatelliteType.MINER.name())) { - if(sat.lastOp + delay < System.currentTimeMillis()) { + if(sat != null && sat instanceof SatelliteMiner) { + + SatelliteMiner miner = (SatelliteMiner)sat; + + if(miner.lastOp + delay < System.currentTimeMillis()) { EntityMinerRocket rocket = new EntityMinerRocket(worldObj); rocket.posX = xCoord + 0.5; rocket.posY = 300; rocket.posZ = zCoord + 0.5; worldObj.spawnEntityInWorld(rocket); - sat.lastOp = System.currentTimeMillis(); + miner.lastOp = System.currentTimeMillis(); data.markDirty(); } } diff --git a/com/hbm/tileentity/machine/TileEntitySoyuzLauncher.java b/com/hbm/tileentity/machine/TileEntitySoyuzLauncher.java index 336501d77..7cafc82ab 100644 --- a/com/hbm/tileentity/machine/TileEntitySoyuzLauncher.java +++ b/com/hbm/tileentity/machine/TileEntitySoyuzLauncher.java @@ -75,7 +75,7 @@ public class TileEntitySoyuzLauncher extends TileEntityMachineBase implements IS countdown = maxCount; starting = false; } else if(countdown > 0) { - countdown--; + countdown-=30; //TODO: remove speedy countdown if(countdown % 100 == 0 && countdown > 0) worldObj.playSoundEffect(xCoord, yCoord, zCoord, "hbm:alarm.hatch", 100F, 1.1F); @@ -175,12 +175,18 @@ public class TileEntitySoyuzLauncher extends TileEntityMachineBase implements IS soyuz.setLocationAndAngles(xCoord + 0.5, yCoord + 5, zCoord + 0.5, 0, 0); worldObj.spawnEntityInWorld(soyuz); + worldObj.playSoundEffect(xCoord, yCoord, zCoord, "hbm:entity.soyuzTakeoff", 100F, 1.1F); + tanks[0].setFill(tanks[0].getFill() - req); tanks[1].setFill(tanks[1].getFill() - req); power -= pow; if(mode == 0) { soyuz.setSat(slots[2]); + + if(this.orbital() == 2) + slots[3] = null; + slots[2] = null; } @@ -202,10 +208,7 @@ public class TileEntitySoyuzLauncher extends TileEntityMachineBase implements IS public boolean canLaunch() { - if(mode == 0 && slots[2] == null) - return false; - - return hasRocket() && hasFuel() && hasRocket() && hasPower() && (designator() == 0 || designator() == 2); + return hasRocket() && hasFuel() && hasRocket() && hasPower() && designator() != 1 && orbital() != 1 && satellite() != 1; } public boolean hasFuel() { @@ -264,6 +267,9 @@ public class TileEntitySoyuzLauncher extends TileEntityMachineBase implements IS return slots[0] != null && slots[0].getItem() == ModItems.missile_soyuz; } + //0: designator not required + //1: designator required but not present + //2: designator present public int designator() { if(mode == 0) @@ -272,6 +278,36 @@ public class TileEntitySoyuzLauncher extends TileEntityMachineBase implements IS return 2; return 1; } + + //0: sat not required + //1: sat required but not present + //2: sat present + public int satellite() { + + if(mode == 1) + return 0; + + if(slots[2] != null) { + return 2; + } + return 1; + } + + //0: module not required + //1: module required but not present + //2: module present + public int orbital() { + + if(mode == 1) + return 0; + + if(slots[2] != null && slots[2].getItem() == ModItems.sat_gerald) { + if(slots[3] != null && slots[3].getItem() == ModItems.missile_soyuz_lander) + return 2; + return 1; + } + return 0; + } @Override public void readFromNBT(NBTTagCompound nbt) {