From 54442c1ae42705abdeda0b32f94c0a7e90bbd8a5 Mon Sep 17 00:00:00 2001 From: HbmMods Date: Sat, 24 Jun 2017 12:50:39 +0200 Subject: [PATCH] Packet sending, more sounds, drill --- Factory1.png | Bin 979 -> 0 bytes Factory2.png | Bin 1193 -> 0 bytes Factory3.png | Bin 979 -> 0 bytes Fusion1.png | Bin 3484 -> 0 bytes Fusion2.png | Bin 4395 -> 0 bytes Fusion3.png | Bin 4936 -> 0 bytes Fusion4.png | Bin 4395 -> 0 bytes Fusion5.png | Bin 3484 -> 0 bytes Info.txt | 2 - Reactor1.png | Bin 1288 -> 0 bytes Reactor2.png | Bin 2140 -> 0 bytes Reactor3.png | Bin 2366 -> 0 bytes Reactor4.png | Bin 2140 -> 0 bytes Reactor5.png | Bin 1288 -> 0 bytes assets/hbm/lang/de_DE.lang | 34 + assets/hbm/lang/en_US.lang | 36 +- assets/hbm/models/drill_bolt.obj | 1595 +++++++++++++++ assets/hbm/models/drill_main.obj | 1810 +++++++++++++++++ assets/hbm/sounds.json | 3 + assets/hbm/sounds/weapon/defabShoot.ogg | Bin 0 -> 7758 bytes assets/hbm/sounds/weapon/defabSpinup.ogg | Bin 0 -> 7654 bytes assets/hbm/sounds/weapon/sparkShoot1.ogg | Bin 0 -> 7099 bytes assets/hbm/sounds/weapon/sparkShoot2.ogg | Bin 0 -> 6930 bytes assets/hbm/sounds/weapon/sparkShoot3.ogg | Bin 0 -> 7716 bytes .../hbm/textures/blocks/crate_iron_side.png | Bin 0 -> 363 bytes assets/hbm/textures/blocks/crate_iron_top.png | Bin 0 -> 450 bytes .../hbm/textures/blocks/crate_steel_side.png | Bin 0 -> 391 bytes .../hbm/textures/blocks/crate_steel_top.png | Bin 0 -> 330 bytes assets/hbm/textures/blocks/drill_pipe.png | Bin 0 -> 520 bytes .../hbm/textures/blocks/marker_structure.png | Bin 0 -> 197 bytes assets/hbm/textures/blocks/red_pylon.png | Bin 0 -> 216 bytes assets/hbm/textures/gui/gui_drill.png | Bin 0 -> 1970 bytes assets/hbm/textures/gui/gui_nei_refinery.png | Bin 0 -> 6257 bytes .../hbm/textures/items/canister_petroil.png | Bin 0 -> 281 bytes assets/hbm/textures/items/canister_reoil.png | Bin 0 -> 273 bytes .../hbm/textures/items/fragment_actinium.png | Bin 0 -> 231 bytes assets/hbm/textures/items/fragment_cerium.png | Bin 0 -> 236 bytes assets/hbm/textures/items/fragment_cobalt.png | Bin 0 -> 246 bytes .../textures/items/fragment_lanthanium.png | Bin 0 -> 237 bytes .../hbm/textures/items/fragment_neodymium.png | Bin 0 -> 233 bytes .../hbm/textures/items/fragment_niobium.png | Bin 0 -> 230 bytes .../hbm/textures/items/gun_defabricator.png | Bin 0 -> 194 bytes .../textures/items/gun_defabricator_ammo.png | Bin 0 -> 233 bytes assets/hbm/textures/items/gun_hp.png | Bin 0 -> 318 bytes assets/hbm/textures/items/gun_hp_ammo.png | Bin 0 -> 234 bytes assets/hbm/textures/items/gun_spark.png | Bin 0 -> 374 bytes assets/hbm/textures/items/gun_spark_ammo.png | Bin 0 -> 234 bytes assets/hbm/textures/items/ingot_desh.png | Bin 0 -> 310 bytes assets/hbm/textures/items/nugget_desh.png | Bin 0 -> 179 bytes .../hbm/textures/items/plate_dalekanium.png | Bin 0 -> 334 bytes .../hbm/textures/items/powder_cobalt_tiny.png | Bin 0 -> 188 bytes assets/hbm/textures/items/powder_desh.png | Bin 0 -> 257 bytes .../textures/items/powder_lithium_tiny.png | Bin 0 -> 195 bytes .../hbm/textures/items/upgrade_effect_1.png | Bin 0 -> 343 bytes .../hbm/textures/items/upgrade_effect_2.png | Bin 0 -> 343 bytes .../hbm/textures/items/upgrade_effect_3.png | Bin 0 -> 361 bytes .../hbm/textures/items/upgrade_fortune_1.png | Bin 0 -> 329 bytes .../hbm/textures/items/upgrade_fortune_2.png | Bin 0 -> 330 bytes .../hbm/textures/items/upgrade_fortune_3.png | Bin 0 -> 350 bytes assets/hbm/textures/items/upgrade_power_1.png | Bin 0 -> 331 bytes assets/hbm/textures/items/upgrade_power_2.png | Bin 0 -> 332 bytes assets/hbm/textures/items/upgrade_power_3.png | Bin 0 -> 335 bytes assets/hbm/textures/items/upgrade_speed_1.png | Bin 0 -> 315 bytes assets/hbm/textures/items/upgrade_speed_2.png | Bin 0 -> 321 bytes assets/hbm/textures/items/upgrade_speed_3.png | Bin 0 -> 331 bytes .../hbm/textures/items/upgrade_template.png | Bin 0 -> 286 bytes assets/hbm/textures/models/ModelHP.png | Bin 1024 -> 1213 bytes assets/hbm/textures/models/ModelPylon.png | Bin 0 -> 1717 bytes com/hbm/blocks/ModBlocks.java | 151 +- com/hbm/blocks/generic/BlockMarker.java | 209 ++ com/hbm/blocks/generic/BlockOre.java | 8 +- com/hbm/blocks/generic/BlockStorageCrate.java | 43 + com/hbm/blocks/machine/DummyBlockDrill.java | 109 + .../blocks/machine/MachineMiningDrill.java | 180 ++ com/hbm/blocks/machine/PylonRedWire.java | 15 + .../entity/projectile/EntitySparkBeam.java | 536 +++++ com/hbm/handler/FuelHandler.java | 18 +- com/hbm/handler/GUIHandler.java | 19 + com/hbm/handler/MultiblockHandler.java | 1 + com/hbm/inventory/MachineRecipes.java | 75 +- .../container/ContainerMachineDeuterium.java | 2 +- .../ContainerMachineMiningDrill.java | 122 ++ .../inventory/gui/GUIMachineMiningDrill.java | 49 + com/hbm/items/ModItems.java | 179 +- com/hbm/items/special/ItemBattery.java | 8 +- com/hbm/items/special/ItemCustomLore.java | 84 + com/hbm/items/special/ItemStarterKit.java | 2 + com/hbm/items/tool/ItemWandD.java | 7 + com/hbm/items/tool/ItemWiring.java | 80 +- com/hbm/items/weapon/GunDefabricator.java | 94 + com/hbm/items/weapon/GunHP.java | 122 ++ com/hbm/items/weapon/GunSpark.java | 142 ++ com/hbm/lib/HbmChestContents.java | 12 +- com/hbm/lib/Library.java | 43 +- com/hbm/lib/RefStrings.java | 2 +- com/hbm/main/ClientProxy.java | 13 + com/hbm/main/CraftingManager.java | 37 +- com/hbm/main/MainRegistry.java | 21 +- com/hbm/main/ModEventHandler.java | 4 +- com/hbm/packet/PacketDispatcher.java | 28 + com/hbm/packet/TEDrillPacket.java | 67 + com/hbm/packet/TEIGeneratorPacket.java | 66 + com/hbm/packet/TEPylonDestructorPacket.java | 61 + com/hbm/packet/TEPylonSenderPacket.java | 78 + com/hbm/packet/TEStructurePacket.java | 67 + com/hbm/render/entity/RenderBeam4.java | 87 + com/hbm/render/item/ItemRenderOverkill.java | 13 +- com/hbm/render/model/ModelDefabricator.java | 6 + com/hbm/render/model/ModelPylon.java | 73 + com/hbm/render/model/ModelSpark.java | 4 + .../render/tileentity/RenderIGenerator.java | 7 +- .../render/tileentity/RenderMiningDrill.java | 96 + com/hbm/render/tileentity/RenderPylon.java | 79 + .../tileentity/RenderStructureMaker.java | 411 ++++ com/hbm/tileentity/TileEntityLaunchPad.java | 2 +- .../tileentity/TileEntityMachineBattery.java | 27 +- .../TileEntityMachineCMBFactory.java | 4 +- com/hbm/tileentity/TileEntityMachineCoal.java | 2 +- .../TileEntityMachineCyclotron.java | 2 +- .../TileEntityMachineDeuterium.java | 4 +- .../tileentity/TileEntityMachineDiesel.java | 20 +- .../TileEntityMachineElectricFurnace.java | 2 +- .../TileEntityMachineGenerator.java | 2 +- .../TileEntityMachineIGenerator.java | 56 +- .../TileEntityMachineMiningDrill.java | 866 ++++++++ .../tileentity/TileEntityMachineRefinery.java | 4 +- ...eEntityMachineSchrabidiumTransmutator.java | 5 +- .../tileentity/TileEntityPylonRedWire.java | 98 +- .../tileentity/TileEntityStructureMarker.java | 44 + com/hbm/world/FWatz.java | 1176 ++++------- com/hbm/world/FactoryTitanium.java | 18 + com/hbm/world/FusionReactor.java | 98 + com/hbm/world/NuclearReactor.java | 38 + com/hbm/world/Watz.java | 120 ++ 134 files changed, 8499 insertions(+), 1099 deletions(-) delete mode 100644 Factory1.png delete mode 100644 Factory2.png delete mode 100644 Factory3.png delete mode 100644 Fusion1.png delete mode 100644 Fusion2.png delete mode 100644 Fusion3.png delete mode 100644 Fusion4.png delete mode 100644 Fusion5.png delete mode 100644 Info.txt delete mode 100644 Reactor1.png delete mode 100644 Reactor2.png delete mode 100644 Reactor3.png delete mode 100644 Reactor4.png delete mode 100644 Reactor5.png create mode 100644 assets/hbm/models/drill_bolt.obj create mode 100644 assets/hbm/models/drill_main.obj create mode 100644 assets/hbm/sounds/weapon/defabShoot.ogg create mode 100644 assets/hbm/sounds/weapon/defabSpinup.ogg create mode 100644 assets/hbm/sounds/weapon/sparkShoot1.ogg create mode 100644 assets/hbm/sounds/weapon/sparkShoot2.ogg create mode 100644 assets/hbm/sounds/weapon/sparkShoot3.ogg create mode 100644 assets/hbm/textures/blocks/crate_iron_side.png create mode 100644 assets/hbm/textures/blocks/crate_iron_top.png create mode 100644 assets/hbm/textures/blocks/crate_steel_side.png create mode 100644 assets/hbm/textures/blocks/crate_steel_top.png create mode 100644 assets/hbm/textures/blocks/drill_pipe.png create mode 100755 assets/hbm/textures/blocks/marker_structure.png create mode 100644 assets/hbm/textures/blocks/red_pylon.png create mode 100644 assets/hbm/textures/gui/gui_drill.png create mode 100644 assets/hbm/textures/gui/gui_nei_refinery.png create mode 100644 assets/hbm/textures/items/canister_petroil.png create mode 100644 assets/hbm/textures/items/canister_reoil.png create mode 100644 assets/hbm/textures/items/fragment_actinium.png create mode 100644 assets/hbm/textures/items/fragment_cerium.png create mode 100644 assets/hbm/textures/items/fragment_cobalt.png create mode 100644 assets/hbm/textures/items/fragment_lanthanium.png create mode 100644 assets/hbm/textures/items/fragment_neodymium.png create mode 100644 assets/hbm/textures/items/fragment_niobium.png create mode 100644 assets/hbm/textures/items/gun_defabricator.png create mode 100644 assets/hbm/textures/items/gun_defabricator_ammo.png create mode 100644 assets/hbm/textures/items/gun_hp.png create mode 100644 assets/hbm/textures/items/gun_hp_ammo.png create mode 100644 assets/hbm/textures/items/gun_spark.png create mode 100644 assets/hbm/textures/items/gun_spark_ammo.png create mode 100644 assets/hbm/textures/items/ingot_desh.png create mode 100644 assets/hbm/textures/items/nugget_desh.png create mode 100644 assets/hbm/textures/items/plate_dalekanium.png create mode 100644 assets/hbm/textures/items/powder_cobalt_tiny.png create mode 100644 assets/hbm/textures/items/powder_desh.png create mode 100644 assets/hbm/textures/items/powder_lithium_tiny.png create mode 100644 assets/hbm/textures/items/upgrade_effect_1.png create mode 100644 assets/hbm/textures/items/upgrade_effect_2.png create mode 100644 assets/hbm/textures/items/upgrade_effect_3.png create mode 100644 assets/hbm/textures/items/upgrade_fortune_1.png create mode 100644 assets/hbm/textures/items/upgrade_fortune_2.png create mode 100644 assets/hbm/textures/items/upgrade_fortune_3.png create mode 100644 assets/hbm/textures/items/upgrade_power_1.png create mode 100644 assets/hbm/textures/items/upgrade_power_2.png create mode 100644 assets/hbm/textures/items/upgrade_power_3.png create mode 100644 assets/hbm/textures/items/upgrade_speed_1.png create mode 100644 assets/hbm/textures/items/upgrade_speed_2.png create mode 100644 assets/hbm/textures/items/upgrade_speed_3.png create mode 100644 assets/hbm/textures/items/upgrade_template.png create mode 100755 assets/hbm/textures/models/ModelPylon.png create mode 100644 com/hbm/blocks/generic/BlockMarker.java create mode 100644 com/hbm/blocks/generic/BlockStorageCrate.java create mode 100644 com/hbm/blocks/machine/DummyBlockDrill.java create mode 100644 com/hbm/blocks/machine/MachineMiningDrill.java create mode 100644 com/hbm/entity/projectile/EntitySparkBeam.java create mode 100644 com/hbm/inventory/container/ContainerMachineMiningDrill.java create mode 100644 com/hbm/inventory/gui/GUIMachineMiningDrill.java create mode 100644 com/hbm/items/weapon/GunDefabricator.java create mode 100644 com/hbm/items/weapon/GunHP.java create mode 100644 com/hbm/items/weapon/GunSpark.java create mode 100644 com/hbm/packet/PacketDispatcher.java create mode 100644 com/hbm/packet/TEDrillPacket.java create mode 100644 com/hbm/packet/TEIGeneratorPacket.java create mode 100644 com/hbm/packet/TEPylonDestructorPacket.java create mode 100644 com/hbm/packet/TEPylonSenderPacket.java create mode 100644 com/hbm/packet/TEStructurePacket.java create mode 100644 com/hbm/render/entity/RenderBeam4.java create mode 100755 com/hbm/render/model/ModelPylon.java create mode 100644 com/hbm/render/tileentity/RenderMiningDrill.java create mode 100644 com/hbm/render/tileentity/RenderPylon.java create mode 100644 com/hbm/render/tileentity/RenderStructureMaker.java create mode 100644 com/hbm/tileentity/TileEntityMachineMiningDrill.java create mode 100644 com/hbm/tileentity/TileEntityStructureMarker.java diff --git a/Factory1.png b/Factory1.png deleted file mode 100644 index c61802a140161fa6ba16e0ebf7ecf4807f269296..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 979 zcmV;^11$WBP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D02p*dSaefwW^{L9 za%BK;VQFr3E^cLXAT%y8E;(#7eog=Y14KzgK~z{r#hAfv)G!c+^8(!A01~gmlOgrA z7Y@8b)glB72P7m|)b=s@Bz*BVu}zcBCTT2wX|0*@XYY8{Nk{G8CmoVLR5F4DQ0;05 znq&kCpxV_AG|31OK)QWGKPvsMG>*95xQdCSabyGE@gd5X^>I-6L&OEBDc>iAg@1Q< zcXf63Iq6u5@-hX$zLvTvUlM{oolcB@21yWP9DhM0K7KNNXwQL-n8szq7Q=4M$EC)% zn9!bsIdi{F$_rZaB_Rs?GYQ&rFwK+_U~J8ogq%Qd(4HegQ(s^l?aRldW~83^&b!8Q zP|xe@Yc7FUYrZ^X4-XG;{;t20pz}GrmHqaO`H~QvxigUk?K!}3sefxe9(zV}r?B6W z`ghjxcyn_D&6NB41x@+Rl<^VgP?N3;TJwEEScqj==OQd?&G!kRKEt6s&{m|Z!vB}4 zZ58x0__qB}*R9?^UW{3mPK_h3H?CqL=}ClaR`IA$h!0W5thi~zT|>GqKudVCS;eE0 z5Ej1g10GA{GpQ&qQvmF1sW0+mvx=|xFA4cRV2o~MYkxyF7|Z!5`^QhF5A8Xy5!1Mg z*kai8yxE|I{CNNJ*WO}6dk*Hzz3*0*^*3ZAjF#||`-v98Wgi-$r@RMgH9W zB_Sse9JJ?%(9{>rOkqq$Sq`Ft@%CspPx#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D02p*dSaefwW^{L9 za%BK;VQFr3E^cLXAT%y8E;(#7eog=Y1R6<1K~z{r?U+w$RWTHYy8#g=f{STu3))s} zX%SqL&`~E2+(T(WK_`NsmC|L1I1yZf-_3VkZtly?YbuJ9_X9)D$(M6a{+hmxS4n3{ zuM6ox0;n{t2b!b@382!n9%zytB!D!BggzGfQmFRWU%!fmq}uZb{09Hek`#28f^ZfjrO(3?!t9MCM zoc|U4t?|cGc5`zB=emAQg3jY`R}SF|{?=2r#P`G>6M{2$8nU1r2N)*vpLt9^|NZ%W zPT7y62W;nW&+aXqvXbwNAIF~3+?m)9NogtGbHzc^WL!TW56O<^WRV9)jMDn%<|e&r zzBB%YDPtqXp=M1xlsq%^>*XV^qMt7wniDg$y}fN~%}2PE@rQ({A-ZL?Jaj905^`3! zhw==$WHL*9R?7oFB!q?x7taIhij-B@Q>JwfwfM5G435I~9?G^IlpZ92O4E9vNqUd~ zDoyKwCh0)}NOS!jx{V+2Ar54gXHs#K&c1JEZ$(8@%}3~@2%WSPe@uu6%Ir6Ag4Q3P zDZf3aaL_pOii1}3o$+JIv}x{t-*_wf@KDt8P~mQ@dCH#nllKrE{Dz;QZU<&HcgQ?V z+<_c;L zDtE{{v%!^rXu zb)~2)nrgl?{^UJGtiS%gxoiB%dx#EZ&HU#PIHfXlEBUOJXNm8LKY0(8t3au6I`gXJ z%esP8VNaQ!`0Mvjq1rPf#6P^0S+O(!`+La0k2svj`&2Q#GyxFTsg{>ifhKYD&c2^I zPx#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D02p*dSaefwW^{L9 za%BK;VQFr3E^cLXAT%y8E;(#7eog=Y14KzgK~z{r#hAfv)G!c+^8(!A01~gmlOgrA z7Y@8b)glB72P7m|)b=s@Bz*BVu}zcBCTT2wX|0*@XYY8{Nk{G8CmoVLR5F4DQ0;05 znq&kCpxV_AG|31OK)QWGKPvsMG>*95xQdCSabyGE@gd5X^>I-6L&OEBDc>iAg@1Q< zcXf63Iq6u5@-hX$zLvTvUlM{oolcB@21yWP9DhM0K7KNNXwQL-n8szq7Q=4M$EC)% zn9!bsIdi{F$_rZaB_Rs?GYQ&rFwK+_U~J8ogq%Qd(4HegQ(s^l?aRldW~83^&b!8Q zP|xe@Yc7FUYrZ^X4-XG;{;t20pz}GrmHqaO`H~QvxigUk?K!}3sefxe9(zV}r?B6W z`ghjxcyn_D&6NB41x@+Rl<^VgP?N3;TJwEEScqj==OQd?&G!kRKEt6s&{m|Z!vB}4 zZ58x0__qB}*R9?^UW{3mPK_h3H?CqL=}ClaR`IA$h!0W5thi~zT|>GqKudVCS;eE0 z5Ej1g10GA{GpQ&qQvmF1sW0+mvx=|xFA4cRV2o~MYkxyF7|Z!5`^QhF5A8Xy5!1Mg z*kai8yxE|I{CNNJ*WO}6dk*Hzz3*0*^*3ZAjF#||`-v98Wgi-$r@RMgH9W zB_Sse9JJ?%(9{>rOkqq$Sq`Ft@%Csp)kO2iP^!V;E9km|4>!0| zL<({^I2dAp1c4!_gbFGkLRgZ9)TP9@F%mUI5$0y$#|-vN|4;Av?z!i_`M&2}?)yA% ziUR!cMqgNb0Rn-Hya=8_AkZ4H`qtM2EZ>fccLR?#sX=%QsAYJ&9C%q97U0&&U= z7NgdIKzg76-w-TdcXf4z!{KgjZb&2&g+igx=mQ51xVyV!Fc=RH4^K}|EEbEy;qZ7o zfk5!`^78if_VMxY_4W1h^Yi!j4+sbd3=9kp508wDBoc`v66xsCqtVgPWHLD>CMG^U zJ~1(oN~I1#US3{ZU47}&B^HatX0xwfzuwx~+Sb$E1Vjt+4_^NNzCgjs4LgB?ZA>B@P6dI! z>{H)s?ogYe0pnI0Hk1}jCDSsZQjUR=qK+rh91@Swc0e7R9QMaMpY#WT^xt`Tx`$*& zzN#_E7{h^a>pXeoQ=xl`6!nmR`I`uF&`-yobw65Ow(e@(ZGC^50u@b{?^ij*1n-hN zHT!HoVugxn8!75UFaGc`$S+}#;1GSI4Jl6UZG0k+Mp&9@ZBHrg`^_uIx zB~LM5^3h2pI2DC8C6*wWv9Uh56iENX`{BW9xm^C(E$WgFjJwmOlX)w%Ej;|iX)gz% z=Ga~9kqz|Z%pYa_OEZ+cYTH{Wq>VK_G5m6Hl(sJ!jlgR?+FDg^Rx(b|pe&Sc%GE|* zw5?g|Hx?zoTzUMckK`nh*f;8;g=Q@=P_^i6cujm)ZB<@K@R5BFmkpDRbJra^jI1tc zs1lt!8%}uF+8nygaD8VMrR05cD@TL3ueP=(afs|D9(xlFN2QdN&T94!JU|wOOm=;f zZsncfyn9>|_Up2I6~*bR_1MUe4yDGiV}tj8{`ZKrbp5|y4nA8DehQKMdn>T#CB`zv z=qbcdv!q+Wx4#Fk&vn|7y9Q#YA9X-q53|bD7e4T_B&#pE^Kiv)WYku}d`_H2Tz)5W z`pF&i_S)@Mj#m^{-c7;I!1{pP%Jxi#mPL$(I^WN`W0FlAR;BH@T%#A30ecjcrL+O1|pHsW95$STkU zFjujyhXmFln;RFrZb1<3CW;@wmUJsglhBEh?;sN@9K}!k-1j>81;eJjF(GYNXki-P zBy5Za-@I1A3&-juhH*mRIS$~&S9 z!NXnv?=6fN;~lwTN~$3WT8@iZpGPOjOg3?3&3S@h8(Y%IA%mhCJV9`oZMw;=j9G{z z+6yxDgzZg3hSHKoYy#_)_G8xpDW8fB8z<*eabxwo3Eg)OSasSq-4bGw#SbIAL}0An zFZyQjeJGZr8NIZgi|-kg4-oZpC*>#FjuAg9A~1?V{>RE%zUqYYE0seX-BbGM;XATO z5y5Z`@GBO@x{Uby_b#gN+kl>h@y*qyh8IKavhIa^7yH;|x>9y%(ONiu@JaP(dlL)S zH3K*+rc!|Ls%jm!_kMcxS2TM0-QpR5RcAC&TgWw@_;qTinNP|&bk6=~ZojftZP?ZX zqz;>tdlz+l-nZ(Fve-bGxv(&bv_&y)WZHZ_3}t04Dk3s+=~WY7?_@=6Z1bBTO4#^8 zn+SGRMe_31B*%0K{td%S`atc@xFYAn78^h3F^GqQ1vjx|}EQ5yZ zB#N0Edz;1A7AIs7=m_hdNse3YbfAo<8R;pD0{0y33*aS+y?2tDZHZCL-yTY}Y6L9i zLp%vf7$4R}f1MXtipV|bvBTI)Ld@PmAAlW189!3Ae-f$eY772F7oB{ySU%zrq+~NJ z&vjYR^^dBKKZOA4SQ{VaBG%3sN6|OTSe;fDFpOrbZr}Xqu{ASCUyrVTWp3$t^MFSS zXP!=YzNA4Yrt5#oVQn0;!4v_FX$vjW-}#=w1z&b0z_=GRT}H7q@qVd_h43|>jJ!aG z+Q-Hj>Eubxnvk)27iWfZl_{6IUaM63VT6@aK+k=prb6zlNu7oQRruUZK=T&50F`Y_ z=)l=~R^#7lNmV~&^Fd3h(OHvhEoB!HfBG*DX6SM676XLUDPt@|1a!QX!3h8j{KSc8 zK8t=E&;d-G=wQrgwGPz55}KWFsdeB%6;F6kElXIPEJ=<2R$I&yn(G|g!Z2JzvK@ef zI$>C=R+K-4RGP+z2mu*Q1<>2>? zq+B!Cje+|>xU0^r24=kY?4bD1*#QjZ21P`JB7t;1ypYB(rt$sa&lw!X)w$NrwLYC) zu^X_j+M5sN5oFy2nOLx^6D((#$r;sCwr18fbJjJ~&DH9uJi8j{>~O}};f^A|6v#uB z!$Xw|$7|VHfCQUfSX$Yup0og3Brt~08LZy!;0c#v;nH0$^1P5ecg&atJB*_qq<%fm uv||=H{oeXVWdzXF+VRQ}(FbHB%X*Zie!_=eTRy1&YIS$`G&$!KhWS zfQl7S5P}p%1S(ho6++4^LrNKs2;U)u!6xjtQGU5#W2_+nDah2 z8&Gd%W@cewfkvY(EiJKFEDnd;vuBT$m6f%%H2?s3Jl@8}X7Ap;1OkCbB-+~A+S%FJ z+uQHkx6i@B!O_vt+1Yvj{{7zG-oC!Retv%b{{8_00fB*mK|w)Bj~)#R3yX+|h>VPk zii#qW$tO;nh>nhqiHV_5C{!vnHa3<Gia_PsXd91c*T|q~Dv5jq7DYN1 z5p5K4BznDx(GH{CVY?C>VKDXcwscLLCCGYR~uqy}0CzzGjBmp<@uZXEj1kzipRarp)DYX5S1Sg3wLP&kw(? zOJJO+3ODPSdAcxWUd(x=egZJ+Gt*)eO?XP`oBLiFDg#~^C38HDI$uuviy|i=;JUxM zW_*r<7tqpReAiF}`T7VlF)LLq1hL@`E$xrOKjfwNMvy8fxK%nQVo2I`oekG@ z$-JtF*|+&lx#Q#G5x4|*&wyupR)5r@Y3|o{2EHZvcrfj2wvFsNnaAOzCR_*uqXB)PMCIW=KWFrgj<4$j2n)Fb{ ze9;rV*Tyd$u~j&z#-#)Tdxx}|-b#ErWR=$Yp&)qTw2|5Ob4Ep#>$czPmJ&;mAz;K{ z0ELjC2p<%Rx}|9$#0c4qBB%B)$(||9dyShq>}!nRF;|r7l6g8FWnd<6>BtWe_PVau z+pp2sge#ja(D9;PY#_J+LrrWjF`I_JC`hTYw3*VniEN$vrmc1)!&s`u)uh%8`&!Jp zvn^XVsNE@jo4J5wy$Nu81hf``!rc11NRIC9k`~k5#l){GYT7s`(hY_t8<|hH9_`Bd zjy-3;&g=7oe4KiH=D8;uei)Lu)ORGePv@TYCp!9`_pA`p<-6SgvKSs7f44bXFw6af zJZ2o@-2r;9kfxSn4_s~rkt(f>vRQYSw?;nq#CZjbpOy|I6@wjDNQj%$4^W#VuXe(D zv)wv*=%A~q&raH{4vHI54w&emEJ$;kmBSjh3T9q>fh(*1z!USZVD^Md47Zhi@e)^N zm(7w{5t$dEAzuQo+j;A-?8br7`TKJ9Re;@yp6B*vKS+%_XvxWz zHH=;Ks;2nMYt(W4pDb9JC4$h-o?tF@S>!qYln1e2(UJ|y2_C`Xb6Leck$INEBO2?0HCxaV4 zo-iIyudjL(!$=TATf_*CZx?%`H$qEaN^ZUCy#Mgsc6&!!?L#h=)2weGl=@~v-p_gjYn({4Ac?2 z6u^T^1Y9hfcUYml`7{R#3jBh&@cPh6x8=g$rI->Hq?z}@V+4cOOb55P5&nL@TY%J2 z;PnFM00MxB-w|^iqA+ehuj7XUe^UN%XlQx-qm94?G{% z64pj7-OL)$Ha2D*Ui0ZLoomwXN_m$j$cxu(&+O80@d(xh_t+YPon4C5Hpa3JyN}LS zGuCDxm(f%!T?EvHqu1B6*$Rv530!K38k%)@tWDZylWhfoiy5UumtTlUEb6A6gXTji zh&&y37U36>%1LZuJluc_@WJ{}KvV5knWwAjCcUQxe+ia46zj)0%f(Y#!romZgvCw;@n!W54mx|^<`6P1p%RCyYcNYVGbTXa_z5}$+Tp!VD7$z=1Ot_1@cT! zuiU#Q1QoIeiV~;g5<2GksSXy<@Nek`RD@9|nBg|e&1fte4Zn;^3rRCDEB>)(QMZMe zJhMS%O9gFlzlu~L80fOEx&KmyNNjGx88kA7M!txBm~`WW7;amN97uO5Y#BKNs`vnp zvnx5JpSQ}yAjf@=x%qFcaDDEnEw>eovMk07){7d~pB{}&Mm4T2Bv?^#8NJUyq6pRYwGA0liD-mlrKs1S? zd!PL~Hnp;HV9W0**MH$f2Q1dNAchTAzzrw`c_qr77+^oJ+zioCGJjaRj!Qic5l(zu z_1QLvd;iBWxppZ|PG3_1aaFLn5TVsKE%`Pf+jiCUYKo*rF8?CIKJ!X(g!$pJPd=Y2 zo%tk#&E_xm5^B6NtUr^L3Ubv`69p*vZfCKkRTH49q_2MzPBXd>h%-+qx$hM!VrqI! Z4kJ%3`DQ$lo2&RcX=~$%zi)jw@t=9X&4&O0 diff --git a/Fusion3.png b/Fusion3.png deleted file mode 100644 index e513765a9a62e9e2e93dd8c53fd3b82dad9a6ba8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4936 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 xTgduI_~ogkS$`G&$!KhWS zfQl7S5P}p%1S(ho6++4^LrNKs2;U)u!6xjtQGU5#W2_+nDah2 z8&Gd%W@cewfkvY(EiJKFEDnd;vuBT$m6f%%H2?s3Jl@8}X7Ap;1OkCbB-+~A+S%FJ z+uQHkx6i@B!O_vt+1Yvj{{7zG-oC!Retv%b{{8_00fB*mK|w)Bj~)#R3yX+|h>VPk zii#qW$tO;nh>nhqiHV_5C{!vnHa3<Gia_PsXd91c*T|q~Dv5jq7DYN1 z5p5K4BznDx(GH{CVY?C>VKDXcwscLLCCGYR~uqy}0CzzGjBmp<@uZXEj1kzipRarp)DYX5S1Sg3wLP&kw(? zOJJO+3ODPSdAcxWUd(x=egZJ+Gt*)eO?XP`oBLiFDg#~^C38HDI$uuviy|i=;JUxM zW_*r<7tqpReAiF}`T7VlF)LLq1hL@`E$xrOKjfwNMvy8fxK%nQVo2I`oekG@ z$-JtF*|+&lx#Q#G5x4|*&wyupR)5r@Y3|o{2EHZvcrfj2wvFsNnaAOzCR_*uqXB)PMCIW=KWFrgj<4$j2n)Fb{ ze9;rV*Tyd$u~j&z#-#)Tdxx}|-b#ErWR=$Yp&)qTw2|5Ob4Ep#>$czPmJ&;mAz;K{ z0ELjC2p<%Rx}|9$#0c4qBB%B)$(||9dyShq>}!nRF;|r7l6g8FWnd<6>BtWe_PVau z+pp2sge#ja(D9;PY#_J+LrrWjF`I_JC`hTYw3*VniEN$vrmc1)!&s`u)uh%8`&!Jp zvn^XVsNE@jo4J5wy$Nu81hf``!rc11NRIC9k`~k5#l){GYT7s`(hY_t8<|hH9_`Bd zjy-3;&g=7oe4KiH=D8;uei)Lu)ORGePv@TYCp!9`_pA`p<-6SgvKSs7f44bXFw6af zJZ2o@-2r;9kfxSn4_s~rkt(f>vRQYSw?;nq#CZjbpOy|I6@wjDNQj%$4^W#VuXe(D zv)wv*=%A~q&raH{4vHI54w&emEJ$;kmBSjh3T9q>fh(*1z!USZVD^Md47Zhi@e)^N zm(7w{5t$dEAzuQo+j;A-?8br7`TKJ9Re;@yp6B*vKS+%_XvxWz zHH=;Ks;2nMYt(W4pDb9JC4$h-o?tF@S>!qYln1e2(UJ|y2_C`Xb6Leck$INEBO2?0HCxaV4 zo-iIyudjL(!$=TATf_*CZx?%`H$qEaN^ZUCy#Mgsc6&!!?L#h=)2weGl=@~v-p_gjYn({4Ac?2 z6u^T^1Y9hfcUYml`7{R#3jBh&@cPh6x8=g$rI->Hq?z}@V+4cOOb55P5&nL@TY%J2 z;PnFM00MxB-w|^iqA+ehuj7XUe^UN%XlQx-qm94?G{% z64pj7-OL)$Ha2D*Ui0ZLoomwXN_m$j$cxu(&+O80@d(xh_t+YPon4C5Hpa3JyN}LS zGuCDxm(f%!T?EvHqu1B6*$Rv530!K38k%)@tWDZylWhfoiy5UumtTlUEb6A6gXTji zh&&y37U36>%1LZuJluc_@WJ{}KvV5knWwAjCcUQxe+ia46zj)0%f(Y#!romZgvCw;@n!W54mx|^<`6P1p%RCyYcNYVGbTXa_z5}$+Tp!VD7$z=1Ot_1@cT! zuiU#Q1QoIeiV~;g5<2GksSXy<@Nek`RD@9|nBg|e&1fte4Zn;^3rRCDEB>)(QMZMe zJhMS%O9gFlzlu~L80fOEx&KmyNNjGx88kA7M!txBm~`WW7;amN97uO5Y#BKNs`vnp zvnx5JpSQ}yAjf@=x%qFcaDDEnEw>eovMk07){7d~pB{}&Mm4T2Bv?^#8NJUyq6pRYwGA0liD-mlrKs1S? zd!PL~Hnp;HV9W0**MH$f2Q1dNAchTAzzrw`c_qr77+^oJ+zioCGJjaRj!Qic5l(zu z_1QLvd;iBWxppZ|PG3_1aaFLn5TVsKE%`Pf+jiCUYKo*rF8?CIKJ!X(g!$pJPd=Y2 zo%tk#&E_xm5^B6NtUr^L3Ubv`69p*vZfCKkRTH49q_2MzPBXd>h%-+qx$hM!VrqI! Z4kJ%3`DQ$lo2&RcX=~$%zi)jw@t=9X&4&O0 diff --git a/Fusion5.png b/Fusion5.png deleted file mode 100644 index 6f528ffbca563ffd09c2aadad4c6bdd956eb27c1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3484 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 L>gTe~DWM4f7fN>z diff --git a/Reactor2.png b/Reactor2.png deleted file mode 100644 index b3cdd7005068af071e91ec79d5bba0dc26ee5813..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2140 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 diff --git a/Reactor4.png b/Reactor4.png deleted file mode 100644 index b3cdd7005068af071e91ec79d5bba0dc26ee5813..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2140 zcmeAS@N?(olHy`uVBq!ia0vp^0U*r53?z4+XPOVBSkfJR9T^xl_H+M9WMyDrW(e>J zaRrK-o10r%Sy@|K+uGXN+1c6K+uPW9I5;>sIyyQzIXOE!ySTWxy1Kf#xw*T$J2?0_ zIr({bczAkxdU<(ydwcu%`1tzz`uX{}xCFSm2D-Tgxw{8@c!YR*hI)C0`TIu)1Ox;I z1_lJg1O~>&#KgqK#l^?RhlVBsK~hpua&mG?N=j;KYFb)adU|?xc6LrqPF`MKetv#I zK|x_*VNp?0adB};Nl9sGX<1oWd3kw7MMY(0WmQ#GO-)U0ZEam$U44E1Ra=JZ_DnY% zm~T3=+;L%l)>L_?Cl6 zYq+W*3-hc8(YhTP35$ak3r2cuy&AS*+rBGO|NiT5ET24k!rdc5llkA4Se(~(r{CwTYcfZu2SAJLg7Dzv+t?ODsM=k{`&sx(^u{&*>7cW~J^ z*Z(@J)z3dEb9uk-Fl%e}h02N(uQ(-bZTs%bUuRu()2zt2dIwwJ#MYaZuEwX@5~rv} zPMhi}SKRo>=8l!sCjZ^bmrq-NNTuH~go*$355JIwIidFtWE(U*KO(O7(O`T2tWBBQ z9J4lGoN@B)`!Ju&ch+vXz4k8G=RY=XwyK{t+Ql>2kZrecTYgP)a#??v4zw;j5dmbr^@yTFwA zjb%6H@v(jId0c6Dp38FH(**I^mOu2TK1thran{M1w_h*&Sy#RHZcg5Ma@} zZhQ1)#p9f-*Gt|@YiOT)rleC?EXczHGFkqy;=Q8|pH%E8w$EC$;p>wtO{>lUf$yjP zto-%o?F;25@0(O9@i^Y|qe*}lXU&ln%f%}s9?uW@UshafER&VRByV{7ix7YEpVQLL zvDdrX=6OF*28QCNfG6`;o}ACV!24vzv7a3;4dli8Dm6Z>U%f8w`ugs}i_|vGRyvbx zbB4WDQ0~|d_3RC4-`KAk9CJ79Zw&+rgim5`UcLI@(p9P-0?+(zl>wR`{Oar0tBd}H zP8R;5@ocZtymrHXn#V2(-!?O}>#7XX_+W5sf6%|~DdCCP(}jR476v>?6#74>PTWQV zXsZ3whhKggG}d2!e%Suu!sRbNKb!$#??2#N!}}#mf6k15bu$jRbJfmU2+kExBzIl0 z)8VOTGuz6~92v&nx!lvI6;>1s;*b z3=DjSK$uZf!>a)(C{f}XQ4*Y=R#Ki=l*&+$n3-3imzP?iV4`QBXPIMM=La;W&C|s( zq$2L^jN4vcY$V+N&;EKs_PGmukyR}Tcv7lPGtIY_ipU}(C__$-TKzY9ro?p_wL^P`@g;C-gNcd$Mc5i z=a(;6ct3pjaKZd#OwX+v$*#sf-@jjo21m$A3S56m&nketr7n#>Skmz|H!t0x9pT6#oDDv*Z2#{rmZ5Z@==+`($%X zQPHD>hhGYwH!e?@JHhlv5K9UZOMHC%?$f7FKb&>GySw|{pFey0*WK$=r-@ku2^7!_f#sX{ZJ?E6+vd_EyZ6RBH*^-7c=TdG5uRJ<^ZnDB= zxeZru?-R-Tl$s!ZV$V4PhTA*e$}cvHZ%b0x-0^Gf%B#%Lwj17Gs`NfHJ(1feT~5q* zTUAPe!tBs1Z@d**X71)Y@l7Y?^R!#Fnw1m0uU}pxyon{gtHGy1VZG&Axf`z%GZTEr_9*Tqc!2?y~B(a+&5!-fLek+qj}-Uuboro>=$vGu=908&Uq)Ze4s^| zw)Ie-6#Fcjv0sGo=KtBBW*L{->P=tyOnxe73va1t<4S7PP!yaPFb?^Vug~WqN*Td^k`gDLKzt!y9 zsuBd_Pw7l6scJl!@%eg)Vg@u%EdZtA0wY*{0Vh4h;B)`q{$o!$c1ZkLmB(#hsm0*w L>gTe~DWM4f7fN>z diff --git a/assets/hbm/lang/de_DE.lang b/assets/hbm/lang/de_DE.lang index 096e51f4f..f8ba2b85f 100644 --- a/assets/hbm/lang/de_DE.lang +++ b/assets/hbm/lang/de_DE.lang @@ -106,6 +106,7 @@ tile.therm_exo.name=Exothermische Bombe tile.crashed_bomb.name=Blindgänger tile.crate.name=Vorratskiste +tile.marker_structure.name=Multiblock-Strukturvorlage tile.machine_difurnace_off.name=Legierungshochofen tile.machine_difurnace_on.name=Legierungshochofen @@ -167,6 +168,11 @@ tile.machine_flare.name=Abfackelturm container.gasFlare=Abfackelturm tile.gas_duct.name=Gasleitung tile.gas_duct_solid.name=Verstärkte Gasleitung +tile.machine_drill.name=Automatischer Minenbohrer +container.miningDrill=Automatischer Minenbohrer + +tile.red_pylon.name=Strommasten +item.wiring_red_copper.name=Kabeltrommel tile.rail_highspeed.name=Hochgeschwindigkeitsschienen tile.rail_booster.name=Hochgeschwindigkeits-Boosterschienen @@ -291,6 +297,10 @@ item.nugget_unobtainium.name=Unobtainiumnugget item.nugget_daffergon.name=Daffergonnugget item.nugget_verticium.name=Verticiumnugget +item.ingot_desh.name=Deshbarren +item.nugget_desh.name=Deshnugget +item.powder_desh.name=Deshstaub + item.nugget_u235.name=U235-Nugget item.nugget_u238.name=U238-Nugget item.nugget_pu238.name=Pu238-Nugget @@ -337,6 +347,7 @@ tile.block_reiium.name=Reiiumblock tile.block_unobtainium.name=Unobtainiumblock tile.block_daffergon.name=Daffergonblock tile.block_verticium.name=Verticiumblock +tile.block_desh.name=Verstärketer Deshblock tile.ore_aluminium.name=Aluminiumerz tile.ore_copper.name=Kupfererz @@ -376,6 +387,7 @@ tile.reinforced_lamp_on.name=Verstärkte Lampe tile.brick_concrete.name=Betonziegel tile.brick_obsidian.name=Obsidianziegel tile.brick_light.name=Helle Ziegel +tile.asphalt.name=Asphalt tile.cmb_brick.name=CMB-Stahlfliese tile.cmb_brick_reinforced.name=Verstärkte CMB-Ziegel @@ -441,6 +453,8 @@ item.powder_dura_steel.name=Schnellarbeitsstahlstaub item.powder_polymer.name=Polymerstaub item.powder_lanthanium.name=Lanthanstaub item.powder_actinium.name=Actiniumstaub +item.powder_lithium_tiny.name=Kleiner Haufen Lithiumstaub +item.powder_cobalt_tiny.name=Kleiner Haufen Cobaltstaub item.battery_generic.name=Batterie item.battery_advanced.name=Fortgeschrittene Batterie @@ -461,6 +475,20 @@ item.battery_advanced_cell_12.name=Zwölffache fortgeschrittene Energiezelle item.battery_lithium_cell_6.name=Sechsfache Lithium-Ionen-Energiezelle item.battery_schrabidium_cell_4.name=Vierfache Schrabidium-Energiezelle +item.upgrade_template.name=Maschinenupgrade-Vorlage +item.upgrade_speed_1.name=Rotes Maschinenupgrade Mk.I +item.upgrade_speed_2.name=Rotes Maschinenupgrade Mk.II +item.upgrade_speed_3.name=Rotes Maschinenupgrade Mk.III +item.upgrade_effect_1.name=Grünes Maschinenupgrade Mk.I +item.upgrade_effect_2.name=Grünes Maschinenupgrade Mk.II +item.upgrade_effect_3.name=Grünes Maschinenupgrade Mk.III +item.upgrade_power_1.name=Blaues Maschinenupgrade Mk.I +item.upgrade_power_2.name=Blaues Maschinenupgrade Mk.II +item.upgrade_power_3.name=Blaues Maschinenupgrade Mk.III +item.upgrade_fortune_1.name=Lila Maschinenupgrade Mk.I +item.upgrade_fortune_2.name=Lila Maschinenupgrade Mk.II +item.upgrade_fortune_3.name=Lila Maschinenupgrade Mk.III + item.fusion_core.name=Fusionskern item.energy_core.name=Selbstgebauter Energiekern @@ -489,6 +517,7 @@ item.ducttape.name=Klebeband item.magnet_dee.name=Duantenmagnete item.magnet_circular.name=Flachmagnet item.cyclotron_tower.name=Zyklotronenturm +item.plate_dalekanium.name=Wütendes Metall item.cell_empty.name=Leere Zelle item.cell_uf6.name=Uranhexafluorit-Zelle @@ -521,6 +550,8 @@ item.canister_canola.name=Schmiermittelkanister item.canister_oil.name=Rohölkanister item.canister_fuel.name=Treibstoffkanister item.canister_kerosene.name=Kerosinkanister +item.canister_reoil.name=Kanister voll aufbereitetem Industrieöl +item.canister_petroil.name=Gemischkanister item.canister_napalm.name=Napalm B item.canister_NITAN.name=NITAN© 100 Oktan Supertreibstoff item.gas_empty.name=Leerer Gastank @@ -747,6 +778,7 @@ item.gun_jack.name=Jackhammer item.gun_spark.name=Die Zündkerze item.gun_hp.name=HPP Lazerjet item.gun_euthanasia.name=Euthanasia +item.gun_defabricator.name=Defabrikator item.gun_revolver_iron_ammo.name=Patrone item.gun_revolver_ammo.name=Bleipatrone @@ -772,6 +804,7 @@ item.gun_jack_ammo.name=Vierfache Schrotpatrone item.gun_spark_ammo.name=Elektromagnetische Katusche item.gun_hp_ammo.name=Tintenpatrone item.gun_euthanasia_ammo.name=Spritze +item.gun_defabricator_ammo.name=Defabrikator-Energiezelle item.clip_revolver_iron.name=Box voll Eisenkugeln item.clip_revolver.name=.357 Magnum Patronen @@ -815,6 +848,7 @@ entity.hbm.entity_rocket.name=Rakete entity.hbm.entity_schrabnel.name=Schrabnel entity.entity_mob_nuclear_creeper.name=Nuklearer Creeper entity.entity_mob_hunter_chopper.name=Jagdschrauber +entity.entity_cyber_crab.name=Cyber-Krabbe item.cap_aluminium.name=Aluminiumdeckel item.hull_small_steel.name=Kleine Stahlhülle diff --git a/assets/hbm/lang/en_US.lang b/assets/hbm/lang/en_US.lang index 0b49ae06f..339c08e3e 100644 --- a/assets/hbm/lang/en_US.lang +++ b/assets/hbm/lang/en_US.lang @@ -106,6 +106,7 @@ tile.therm_exo.name=Exothermic Bomb tile.crashed_bomb.name=Dud tile.crate.name=Supply Crate +tile.marker_structure.name=Multiblock Structure Marker tile.machine_difurnace_off.name=Alloy Furnace tile.machine_difurnace_on.name=Alloy Furnace @@ -167,6 +168,11 @@ tile.machine_flare.name=Gas Flare container.gasFlare=Gas Flare tile.gas_duct.name=Gas Pipe tile.gas_duct_solid.name=Coated Gas Pipe +tile.machine_drill.name=Automatic Mining Drill +container.miningDrill=Automatic Mining Drill + +tile.red_pylon.name=Electricity Pole +item.wiring_red_copper.name=Cable Drum tile.rail_highspeed.name=High Speed Rail tile.rail_booster.name=High Speed Booster Rail @@ -291,6 +297,10 @@ item.nugget_unobtainium.name=Unobtainium Nugget item.nugget_daffergon.name=Daffergon Nugget item.nugget_verticium.name=Verticium Nugget +item.ingot_desh.name=Desh Ingot +item.nugget_desh.name=Desh Nugget +item.powder_desh.name=Desh Powder + item.nugget_u235.name=U235 Nugget item.nugget_u238.name=U238 Nugget item.nugget_pu238.name=Pu238 Nugget @@ -337,6 +347,7 @@ tile.block_reiium.name=Block of Reiium tile.block_unobtainium.name=Block of Unobtainium tile.block_daffergon.name=Block of Daffergon tile.block_verticium.name=Block of Verticium +tile.block_desh.name=Reinfoced Block of Desh tile.ore_aluminium.name=Aluminium Ore tile.ore_copper.name=Copper Ore @@ -376,6 +387,7 @@ tile.reinforced_lamp_on.name=Reinforced Lamp tile.brick_concrete.name=Concrete Bricks tile.brick_obsidian.name=Obsidian Bricks tile.brick_light.name=Light Bricks +tile.asphalt.name=Asphalt tile.cmb_brick.name=CMB Steel Tile tile.cmb_brick_reinforced.name=Reinforced CMB Bricks @@ -441,6 +453,8 @@ item.powder_dura_steel.name=High-Speed Steel Powder item.powder_polymer.name=Polymer Powder item.powder_lanthanium.name=Lanthanium Powder item.powder_actinium.name=Actinium Powder +item.powder_lithium_tiny.name=Tiny Pile of Lithium Powder +item.powder_cobalt_tiny.name=Tiny Pile of Cobalt Powder item.battery_generic.name=Battery item.battery_advanced.name=Advanced Battery @@ -461,6 +475,20 @@ item.battery_advanced_cell_12.name=Twelvefold Advanced Power Cell item.battery_lithium_cell_6.name=Sixfold Lithium-Ion Power Cell item.battery_schrabidium_cell_4.name=Quadruple Schrabidium Power Cell +item.upgrade_template.name=Machine Upgrade Piece Template +item.upgrade_speed_1.name=Red Machine Upgrade Mk.I +item.upgrade_speed_2.name=Red Machine Upgrade Mk.II +item.upgrade_speed_3.name=Red Machine Upgrade Mk.III +item.upgrade_effect_1.name=Green Machine Upgrade Mk.I +item.upgrade_effect_2.name=Green Machine Upgrade Mk.II +item.upgrade_effect_3.name=Green Machine Upgrade Mk.III +item.upgrade_power_1.name=Blue Machine Upgrade Mk.I +item.upgrade_power_2.name=Blue Machine Upgrade Mk.II +item.upgrade_power_3.name=Blue Machine Upgrade Mk.III +item.upgrade_fortune_1.name=Purple Machine Upgrade Mk.I +item.upgrade_fortune_2.name=Purple Machine Upgrade Mk.II +item.upgrade_fortune_3.name=Purple Machine Upgrade Mk.III + item.fusion_core.name=Fusion Core item.energy_core.name=Makeshift Energy Core @@ -489,6 +517,7 @@ item.ducttape.name=Duct Tape item.magnet_dee.name=Dee Magnets item.magnet_circular.name=Flat Magnet item.cyclotron_tower.name=Cyclotron Tower +item.plate_dalekanium.name=Angry Metal item.cell_empty.name=Empty Cell item.cell_uf6.name=Uranium Hexafluorite Cell @@ -521,6 +550,8 @@ item.canister_canola.name=Engine Lubricant item.canister_oil.name=Crude Oil Canister item.canister_fuel.name=Fuel Canister item.canister_kerosene.name=Kerosene Canister +item.canister_reoil.name=Canister of Reclaimed Industrial Oil +item.canister_petroil.name=Petroil Canister item.canister_napalm.name=Napalm B item.canister_NITAN.name=NITAN© 100 Octane Super Fuel item.gas_empty.name=Empty Gas Tank @@ -747,6 +778,7 @@ item.gun_jack.name=Jackhammer item.gun_spark.name=Spark Plug item.gun_hp.name=HPP Lazerjet item.gun_euthanasia.name=Euthanasia +item.gun_defabricator.name=Defabricator item.gun_revolver_iron_ammo.name=Bullet item.gun_revolver_ammo.name=Lead Bullet @@ -772,6 +804,7 @@ item.gun_jack_ammo.name=Quadruple Shotgun Shell item.gun_spark_ammo.name=Electromagnetic Cartridge item.gun_hp_ammo.name=Ink Cartridge item.gun_euthanasia_ammo.name=Syringe +item.gun_defabricator_ammo.name=Defabricator Energy Cell item.clip_revolver_iron.name=Box of Iron Rounds item.clip_revolver.name=Box of .357 Rounds @@ -814,7 +847,8 @@ entity.hbm.entity_bullet.name=Bullet entity.hbm.entity_rocket.name=Rocket entity.hbm.entity_schrabnel.name=Schrabnel entity.entity_mob_nuclear_creeper.name=Nuclear Creeper -entity.entity_mob_hunter_chopper.name=Hunter Chopper +entity.entity_mob_hunter_chopper.name=Hunter ChopperCreeper +entity.entity_cyber_crab.name=Cyber Crab item.cap_aluminium.name=Aluminium Cap item.hull_small_steel.name=Small Steel Shell diff --git a/assets/hbm/models/drill_bolt.obj b/assets/hbm/models/drill_bolt.obj new file mode 100644 index 000000000..dcf0a5d40 --- /dev/null +++ b/assets/hbm/models/drill_bolt.obj @@ -0,0 +1,1595 @@ +# Blender v2.76 (sub 0) OBJ File: 'drill_bolt.blend' +# www.blender.org +o Cylinder_Cylinder.001 +v 0.125000 3.000000 -0.216506 +v 0.000000 3.000000 -0.250000 +v 0.216506 3.000000 -0.125000 +v 0.250000 3.000000 0.000000 +v 0.216506 3.000000 0.125000 +v 0.125000 3.000000 0.216506 +v 0.000000 3.000000 0.250000 +v -0.125000 3.000000 0.216506 +v -0.216506 3.000000 0.125000 +v -0.250000 3.000000 0.000000 +v -0.216506 3.000000 -0.125000 +v -0.125000 3.000000 -0.216506 +v -0.125000 2.750000 -0.216506 +v -0.000000 2.750000 -0.250000 +v -0.051764 3.000000 -0.443185 +v -0.176764 3.000000 -0.409691 +v 0.125000 2.750000 -0.216506 +v 0.216506 2.750000 -0.125000 +v 0.250000 2.750000 -0.000000 +v 0.216506 2.750000 0.125000 +v 0.125000 2.750000 0.216506 +v 0.000000 2.750000 0.250000 +v -0.125000 2.750000 0.216506 +v -0.216506 2.750000 0.125000 +v -0.250000 2.750000 0.000000 +v -0.216506 2.750000 -0.125000 +v -0.266421 2.750000 -0.357928 +v -0.357928 2.750000 -0.266421 +v 0.443185 3.000000 0.051764 +v 0.409692 3.000000 0.176764 +v 0.443185 2.750000 -0.051764 +v 0.409692 2.750000 -0.176764 +v -0.266421 3.000000 0.357928 +v -0.357928 3.000000 0.266421 +v -0.176764 2.750000 0.409692 +v -0.051764 2.750000 0.443185 +v 0.125000 2.500000 -0.216506 +v -0.000000 2.500000 -0.250000 +v -0.125000 2.500000 -0.216506 +v -0.216506 2.500000 -0.125000 +v 0.216506 2.500000 -0.125000 +v 0.250000 2.500000 -0.000000 +v 0.216506 2.500000 0.125000 +v 0.125000 2.500000 0.216506 +v 0.000000 2.500000 0.250000 +v -0.125000 2.500000 0.216506 +v -0.216506 2.500000 0.125000 +v -0.250000 2.500000 0.000000 +v -0.409692 2.500000 -0.176764 +v -0.443185 2.500000 -0.051763 +v 0.266421 2.500000 -0.357928 +v 0.357928 2.500000 -0.266421 +v 0.176764 2.500000 0.409691 +v 0.051764 2.500000 0.443185 +v -0.000000 2.250000 -0.250000 +v -0.125000 2.250000 -0.216506 +v -0.216506 2.250000 -0.125000 +v -0.250000 2.250000 0.000000 +v 0.125000 2.250000 -0.216506 +v 0.216506 2.250000 -0.125000 +v 0.250000 2.250000 -0.000000 +v 0.216506 2.250000 0.125000 +v 0.125000 2.250000 0.216506 +v 0.000000 2.250000 0.250000 +v -0.125000 2.250000 0.216506 +v -0.216506 2.250000 0.125000 +v -0.443185 2.250000 0.051764 +v -0.409691 2.250000 0.176764 +v 0.051764 2.250000 -0.443185 +v 0.176764 2.250000 -0.409692 +v 0.357928 2.250000 0.266421 +v 0.266422 2.250000 0.357928 +v -0.125000 2.000000 -0.216506 +v -0.216506 2.000000 -0.125000 +v -0.250000 2.000000 0.000000 +v -0.216506 2.000000 0.125000 +v -0.000000 2.000000 -0.250000 +v 0.125000 2.000000 -0.216506 +v 0.216506 2.000000 -0.125000 +v 0.250000 2.000000 -0.000000 +v 0.216506 2.000000 0.125000 +v 0.125000 2.000000 0.216506 +v 0.000000 2.000000 0.250000 +v -0.125000 2.000000 0.216507 +v -0.357928 2.000000 0.266422 +v -0.266421 2.000000 0.357928 +v -0.176764 2.000000 -0.409691 +v -0.051764 2.000000 -0.443185 +v 0.443185 2.000000 0.051763 +v 0.409692 2.000000 0.176763 +v -0.216506 1.750000 -0.125000 +v -0.250000 1.750000 0.000000 +v -0.216506 1.750000 0.125000 +v -0.125000 1.750000 0.216506 +v -0.125000 1.750000 -0.216506 +v -0.000000 1.750000 -0.250000 +v 0.125000 1.750000 -0.216506 +v 0.216506 1.750000 -0.125000 +v 0.250000 1.750000 -0.000000 +v 0.216506 1.750000 0.125000 +v 0.125000 1.750000 0.216506 +v 0.000000 1.750000 0.250000 +v -0.176764 1.750000 0.409692 +v -0.051763 1.750000 0.443185 +v -0.357928 1.750000 -0.266421 +v -0.266422 1.750000 -0.357927 +v 0.409691 1.750000 -0.176764 +v 0.443185 1.750000 -0.051764 +v -0.250000 1.500000 0.000000 +v -0.216506 1.500000 0.125000 +v -0.125000 1.500000 0.216506 +v 0.000000 1.500000 0.250000 +v -0.216506 1.500000 -0.125000 +v -0.125000 1.500000 -0.216506 +v -0.000000 1.500000 -0.250000 +v 0.125000 1.500000 -0.216506 +v 0.216506 1.500000 -0.125000 +v 0.250000 1.500000 -0.000000 +v 0.216506 1.500000 0.125000 +v 0.125000 1.500000 0.216506 +v 0.051764 1.500000 0.443185 +v 0.176764 1.500000 0.409691 +v -0.443185 1.500000 -0.051763 +v -0.409692 1.500000 -0.176763 +v 0.266421 1.500000 -0.357928 +v 0.357927 1.500000 -0.266422 +v -0.216506 1.250000 0.125000 +v -0.125000 1.250000 0.216506 +v 0.000000 1.250000 0.250000 +v 0.125000 1.250000 0.216506 +v -0.250000 1.250000 0.000000 +v -0.216506 1.250000 -0.125000 +v -0.125000 1.250000 -0.216506 +v -0.000000 1.250000 -0.250000 +v 0.125000 1.250000 -0.216506 +v 0.216506 1.250000 -0.125000 +v 0.250000 1.250000 -0.000000 +v 0.216507 1.250000 0.125000 +v 0.266422 1.250000 0.357928 +v 0.357928 1.250000 0.266421 +v -0.409691 1.250000 0.176764 +v -0.443185 1.250000 0.051764 +v 0.051763 1.250000 -0.443185 +v 0.176763 1.250000 -0.409692 +v -0.125000 1.000000 0.216506 +v 0.000000 1.000000 0.250000 +v 0.125000 1.000000 0.216506 +v 0.216506 1.000000 0.125000 +v -0.216506 1.000000 0.125000 +v -0.250000 1.000000 0.000000 +v -0.216506 1.000000 -0.125000 +v -0.125000 1.000000 -0.216506 +v -0.000000 1.000000 -0.250000 +v 0.125000 1.000000 -0.216506 +v 0.216506 1.000000 -0.125000 +v 0.250000 1.000000 -0.000000 +v 0.409692 1.000000 0.176763 +v 0.443185 1.000000 0.051763 +v -0.266421 1.000000 0.357928 +v -0.357927 1.000000 0.266422 +v -0.176764 1.000000 -0.409691 +v -0.051764 1.000000 -0.443185 +v 0.000000 0.750000 0.250000 +v 0.125000 0.750000 0.216506 +v 0.216506 0.750000 0.125000 +v 0.250000 0.750000 -0.000000 +v -0.125000 0.750000 0.216506 +v -0.216506 0.750000 0.125000 +v -0.250000 0.750000 0.000000 +v -0.216506 0.750000 -0.125000 +v -0.125000 0.750000 -0.216506 +v -0.000000 0.750000 -0.250000 +v 0.125000 0.750000 -0.216506 +v 0.216506 0.750000 -0.125000 +v 0.443185 0.750000 -0.051764 +v 0.409691 0.750000 -0.176764 +v -0.051763 0.750000 0.443185 +v -0.176763 0.750000 0.409692 +v -0.357928 0.750000 -0.266421 +v -0.266422 0.750000 -0.357927 +v 0.125000 0.500000 0.216506 +v 0.216506 0.500000 0.125000 +v 0.250000 0.500000 -0.000000 +v 0.216506 0.500000 -0.125000 +v 0.000000 0.500000 0.250000 +v -0.125000 0.500000 0.216506 +v -0.216506 0.500000 0.125000 +v -0.250000 0.500000 0.000000 +v -0.216507 0.500000 -0.125000 +v -0.125000 0.500000 -0.216506 +v -0.000000 0.500000 -0.250000 +v 0.125000 0.500000 -0.216507 +v 0.357927 0.500000 -0.266422 +v 0.266421 0.500000 -0.357928 +v 0.176764 0.500000 0.409691 +v 0.051764 0.500000 0.443185 +v -0.443185 0.500000 -0.051763 +v -0.409692 0.500000 -0.176763 +v 0.216506 0.250000 0.125000 +v 0.250000 0.250000 -0.000000 +v 0.216506 0.250000 -0.125000 +v 0.125000 0.250000 -0.216506 +v 0.125000 0.250000 0.216506 +v 0.000000 0.250000 0.250000 +v -0.125000 0.250000 0.216507 +v -0.216506 0.250000 0.125000 +v -0.250000 0.250000 0.000000 +v -0.216507 0.250000 -0.125000 +v -0.125000 0.250000 -0.216506 +v -0.000001 0.250000 -0.250000 +v 0.176763 0.250000 -0.409692 +v 0.051763 0.250000 -0.443185 +v 0.357928 0.250000 0.266421 +v 0.266422 0.250000 0.357927 +v -0.409691 0.250000 0.176765 +v -0.443185 0.250000 0.051765 +v 0.250000 0.000000 -0.000000 +v 0.216506 0.000000 -0.125000 +v 0.125000 0.000000 -0.216506 +v -0.000000 0.000000 -0.250000 +v 0.216506 0.000000 0.125000 +v 0.125000 0.000000 0.216506 +v 0.000000 0.000000 0.250000 +v -0.125000 0.000000 0.216507 +v -0.216506 0.000000 0.125000 +v -0.250000 0.000000 0.000001 +v -0.216507 0.000000 -0.125000 +v -0.125000 0.000000 -0.216506 +v -0.051765 0.000000 -0.443185 +v -0.176765 0.000000 -0.409691 +v 0.443185 0.000000 0.051763 +v 0.409692 0.000000 0.176763 +v -0.266421 0.000000 0.357928 +v -0.357927 0.000000 0.266422 +vt 0.734654 0.961016 +vt 0.705579 0.975604 +vt 0.705579 0.902663 +vt 0.255629 0.062086 +vt 0.364401 0.091333 +vt 0.284775 0.171236 +vt 0.186790 0.125104 +vt 0.186790 0.091333 +vt 0.238802 0.091333 +vt 0.647427 0.624623 +vt 0.671421 0.602614 +vt 0.671421 0.691005 +vt 0.885455 0.327893 +vt 0.856379 0.342481 +vt 0.856379 0.269539 +vt 0.734654 0.902663 +vt 0.763730 0.888074 +vt 0.763730 0.961016 +vt 0.840715 0.160472 +vt 0.811640 0.175060 +vt 0.811640 0.102118 +vt 0.796471 0.727603 +vt 0.825547 0.713014 +vt 0.825547 0.785956 +vt 0.758571 0.132409 +vt 0.782564 0.110400 +vt 0.782564 0.198791 +vt 0.146287 0.925935 +vt 0.117211 0.940524 +vt 0.117211 0.867582 +vt 0.439954 0.627453 +vt 0.463948 0.605444 +vt 0.463948 0.693835 +vt 0.087681 0.836936 +vt 0.058606 0.851525 +vt 0.058606 0.778583 +vt 0.640691 0.962303 +vt 0.611615 0.976891 +vt 0.611615 0.903950 +vt 0.490791 0.410204 +vt 0.443651 0.429303 +vt 0.432186 0.341922 +vt 0.811640 0.072942 +vt 0.782564 0.087530 +vt 0.782564 0.014588 +vt 0.796471 0.785956 +vt 0.767395 0.800544 +vt 0.767395 0.727603 +vt 0.617057 0.254951 +vt 0.667297 0.262750 +vt 0.658587 0.334853 +vt 0.029076 0.865793 +vt 0.058151 0.851205 +vt 0.058151 0.924147 +vt 0.782564 0.088391 +vt 0.758571 0.110400 +vt 0.758571 0.022009 +vt 0.373580 0.199551 +vt 0.344435 0.216436 +vt 0.318429 0.171236 +vt 0.599637 0.334853 +vt 0.549397 0.342652 +vt 0.558107 0.254951 +vt 0.811640 0.014588 +vt 0.840715 0.000000 +vt 0.840715 0.072942 +vt 0.304001 0.371690 +vt 0.256861 0.390788 +vt 0.245396 0.303408 +vt 0.647427 0.779823 +vt 0.623434 0.801832 +vt 0.623434 0.713440 +vt 0.318429 0.045200 +vt 0.344435 0.000000 +vt 0.373580 0.016886 +vt 0.725867 0.079902 +vt 0.675627 0.087700 +vt 0.684337 0.000000 +vt 0.854622 0.785956 +vt 0.825547 0.800544 +vt 0.825547 0.727603 +vt 0.175817 0.371690 +vt 0.128677 0.390788 +vt 0.117211 0.303408 +vt 0.029076 0.836617 +vt 0.000000 0.851205 +vt 0.000000 0.778263 +vt 0.058606 0.546041 +vt 0.011466 0.565140 +vt 0.000000 0.477760 +vt 0.608347 0.406956 +vt 0.798572 0.443891 +vt 0.827648 0.429303 +vt 0.827648 0.502245 +vt 0.482873 0.338010 +vt 0.450138 0.254951 +vt 0.734577 0.152004 +vt 0.245396 0.751999 +vt 0.274471 0.737410 +vt 0.274471 0.810352 +vt 0.296083 0.299495 +vt 0.263348 0.216436 +vt 0.146287 0.838405 +vt 0.117211 0.852994 +vt 0.117211 0.780052 +vt 0.608347 0.342651 +vt 0.667297 0.406956 +vt 0.167899 0.299495 +vt 0.135164 0.216436 +vt 0.647427 0.727603 +vt 0.676503 0.713014 +vt 0.676503 0.785956 +vt 0.587621 0.713440 +vt 0.611615 0.691432 +vt 0.611615 0.779823 +vt 0.233968 0.836617 +vt 0.204893 0.851205 +vt 0.204893 0.778263 +vt 0.199811 0.675284 +vt 0.223804 0.653275 +vt 0.223804 0.741666 +vt 0.854622 0.961016 +vt 0.825547 0.975604 +vt 0.825547 0.902663 +vt 0.695415 0.691005 +vt 0.671421 0.713014 +vt 0.671421 0.624623 +vt 0.667297 0.342652 +vt 0.717537 0.334853 +vt 0.726247 0.406956 +vt 0.914530 0.269539 +vt 0.943606 0.254951 +vt 0.943606 0.327893 +vt 0.023994 0.741666 +vt 0.000000 0.763675 +vt 0.000000 0.675284 +vt 0.676007 0.254951 +vt 0.726247 0.262750 +vt 0.487941 0.693835 +vt 0.463948 0.715844 +vt 0.463948 0.627453 +vt 0.058151 0.836617 +vt 0.029076 0.851205 +vt 0.029076 0.778263 +vt 0.234423 0.546041 +vt 0.187283 0.565140 +vt 0.175817 0.477759 +vt 0.557727 0.155253 +vt 0.510587 0.174352 +vt 0.499121 0.086971 +vt 0.469030 0.963845 +vt 0.439954 0.978434 +vt 0.439954 0.905492 +vt 0.254106 0.564099 +vt 0.304346 0.571898 +vt 0.295635 0.644001 +vt 0.714326 0.727603 +vt 0.743402 0.713014 +vt 0.743402 0.785956 +vt 0.750585 0.517694 +vt 0.726592 0.539703 +vt 0.726592 0.451312 +vt 0.303547 0.810352 +vt 0.274471 0.824940 +vt 0.274471 0.751999 +vt 0.676503 0.727603 +vt 0.705579 0.713014 +vt 0.705579 0.785956 +vt 0.313056 0.390788 +vt 0.363296 0.398587 +vt 0.354585 0.470690 +vt 0.791389 0.617203 +vt 0.820465 0.602614 +vt 0.820464 0.675556 +vt 0.469030 0.788786 +vt 0.439954 0.803374 +vt 0.439954 0.730432 +vt 0.305887 0.576859 +vt 0.355109 0.564099 +vt 0.355109 0.652234 +vt 1.000000 0.961016 +vt 0.970924 0.975604 +vt 0.970924 0.902663 +vt 0.328339 0.674243 +vt 0.352333 0.652234 +vt 0.352333 0.740625 +vt 0.423998 0.690749 +vt 0.373236 0.687988 +vt 0.374777 0.615374 +vt 0.957018 0.014588 +vt 0.986093 0.000000 +vt 0.986093 0.072942 +vt 0.226504 0.473847 +vt 0.193769 0.390788 +vt 0.549809 0.083058 +vt 0.517074 0.000000 +vt 0.519867 0.874773 +vt 0.490791 0.889362 +vt 0.490791 0.816420 +vt 0.245396 0.651800 +vt 0.304346 0.716104 +vt 0.676503 0.873486 +vt 0.647427 0.888074 +vt 0.647427 0.815133 +vt 0.743402 0.624623 +vt 0.767395 0.602614 +vt 0.767395 0.691005 +vt 0.869791 0.072942 +vt 0.840715 0.087530 +vt 0.840715 0.014588 +vt 0.883698 0.873486 +vt 0.854622 0.888074 +vt 0.854622 0.815133 +vt 0.304346 0.478489 +vt 0.363296 0.542793 +vt 0.058606 0.866113 +vt 0.087681 0.851525 +vt 0.087681 0.924466 +vt 0.640691 0.874773 +vt 0.611615 0.889362 +vt 0.611615 0.816420 +vt 0.050687 0.473847 +vt 0.017952 0.390788 +vt 0.548943 0.816420 +vt 0.578018 0.801832 +vt 0.578018 0.874773 +vt 0.401586 0.000000 +vt 0.440516 0.017026 +vt 0.424375 0.086341 +vt 0.245396 0.927058 +vt 0.274471 0.912470 +vt 0.274471 0.985412 +vt 0.109293 0.299495 +vt 0.058606 0.303408 +vt 0.076558 0.216436 +vt 0.616677 0.152004 +vt 0.579899 0.173311 +vt 0.557727 0.087700 +vt 0.117211 0.371690 +vt 0.070071 0.390788 +vt 0.994918 0.675556 +vt 0.965842 0.690144 +vt 0.965842 0.617202 +vt 0.167974 0.655064 +vt 0.117211 0.652303 +vt 0.118753 0.579689 +vt 0.912773 0.961016 +vt 0.883698 0.975604 +vt 0.883698 0.902663 +vt 0.047987 0.741666 +vt 0.023994 0.763675 +vt 0.023994 0.675284 +vt 1.000000 0.873486 +vt 0.970924 0.888074 +vt 0.970924 0.815133 +vt 0.856723 0.502245 +vt 0.827648 0.516833 +vt 0.827648 0.443891 +vt 0.381946 0.429303 +vt 0.432186 0.437102 +vt 0.423475 0.509205 +vt 0.578018 0.962303 +vt 0.548943 0.976892 +vt 0.548943 0.903950 +vt 0.782564 0.102118 +vt 0.811640 0.087530 +vt 0.811640 0.160472 +vt 0.362607 0.371690 +vt 0.315467 0.390788 +vt 0.304001 0.303408 +vt 0.116757 0.836936 +vt 0.087681 0.778583 +vt 0.421223 0.779140 +vt 0.397229 0.801149 +vt 0.397229 0.712758 +vt 0.303547 0.897882 +vt 0.274471 0.839528 +vt 0.402311 0.961621 +vt 0.373236 0.976209 +vt 0.373236 0.903267 +vt 0.106593 0.741986 +vt 0.082599 0.763995 +vt 0.082599 0.675604 +vt 0.849540 0.617202 +vt 0.878616 0.602614 +vt 0.878616 0.675556 +vt 0.373580 0.084254 +vt 0.423790 0.158969 +vt 0.714326 0.815133 +vt 0.743402 0.800544 +vt 0.743402 0.873486 +vt 0.117211 0.677073 +vt 0.141205 0.655064 +vt 0.141205 0.743455 +vt 0.175362 0.838405 +vt 0.146287 0.852994 +vt 0.146287 0.780052 +vt 0.869791 0.102118 +vt 0.898867 0.087530 +vt 0.898867 0.160472 +vt 0.373236 0.517003 +vt 0.432186 0.581307 +vt 0.898867 0.072942 +vt 0.869791 0.087530 +vt 0.869791 0.014588 +vt 0.912773 0.815133 +vt 0.941849 0.800544 +vt 0.941849 0.873486 +vt 0.354689 0.299495 +vt 0.321954 0.216436 +vt 0.943950 0.502245 +vt 0.914875 0.516833 +vt 0.914875 0.443891 +vt 0.397229 0.779140 +vt 0.373236 0.801149 +vt 0.373236 0.712758 +vt 0.820465 0.617203 +vt 0.849540 0.602614 +vt 0.849540 0.675556 +vt 0.458468 0.000000 +vt 0.499121 0.012321 +vt 0.491203 0.083058 +vt 0.719408 0.691005 +vt 0.695415 0.713014 +vt 0.695415 0.624623 +vt 0.798228 0.269539 +vt 0.827303 0.254951 +vt 0.827303 0.327893 +vt 0.970924 0.785956 +vt 0.941849 0.727603 +vt 0.970924 0.727603 +vt 1.000000 0.713014 +vt 1.000000 0.785956 +vt 0.587621 0.779823 +vt 0.563628 0.801832 +vt 0.563628 0.713441 +vt 0.323257 0.777223 +vt 0.352333 0.762634 +vt 0.352333 0.835576 +vt 0.827303 0.269539 +vt 0.856379 0.254951 +vt 0.856379 0.327893 +vt 0.167974 0.566929 +vt 0.117211 0.564168 +vt 0.118753 0.491554 +vt 0.146287 0.867582 +vt 0.175362 0.852994 +vt 0.175362 0.925935 +vt 0.274471 0.897882 +vt 0.245396 0.912470 +vt 0.245396 0.839528 +vt 0.001541 0.577900 +vt 0.050763 0.565140 +vt 0.050763 0.653275 +vt 0.854622 0.873486 +vt 0.825547 0.888074 +vt 0.825547 0.815133 +vt 0.774579 0.451312 +vt 0.798572 0.429303 +vt 0.798572 0.517694 +vt 0.927942 0.014588 +vt 0.957018 0.000000 +vt 0.957018 0.072942 +vt 0.440516 0.086971 +vt 0.499121 0.155253 +vt 0.743402 0.691005 +vt 0.719408 0.713014 +vt 0.719408 0.624623 +vt 0.883698 0.727603 +vt 0.912773 0.713014 +vt 0.912773 0.785956 +vt 0.607967 0.079902 +vt 0.566437 0.000000 +vt 0.177358 0.577900 +vt 0.226580 0.565140 +vt 0.226580 0.653275 +vt 0.402311 0.815737 +vt 0.431387 0.801149 +vt 0.431387 0.874091 +vt 0.796471 0.961016 +vt 0.767395 0.975604 +vt 0.767395 0.902663 +vt 0.854622 0.902663 +vt 0.883698 0.888074 +vt 0.883698 0.961016 +vt 0.373580 0.341922 +vt 0.424268 0.338010 +vt 0.432186 0.410204 +vt 0.204893 0.836617 +vt 0.175817 0.851205 +vt 0.175817 0.778263 +vt 0.391533 0.254951 +vt 0.432186 0.267273 +vt 0.986093 0.160472 +vt 0.957018 0.175060 +vt 0.957018 0.102118 +vt 0.578018 0.903950 +vt 0.607094 0.889362 +vt 0.607094 0.962303 +vt 0.304346 0.542793 +vt 0.267568 0.564099 +vt 0.245396 0.478489 +vt 0.705579 0.873486 +vt 0.676503 0.888074 +vt 0.676503 0.815133 +vt 0.750585 0.451312 +vt 0.774579 0.429303 +vt 0.774579 0.517694 +vt 0.274471 0.927058 +vt 0.303547 0.912470 +vt 0.303547 0.985412 +vt 0.508744 0.254951 +vt 0.549397 0.267273 +vt 0.541479 0.338010 +vt 0.304346 0.674243 +vt 0.328339 0.652234 +vt 0.328339 0.740625 +vt 0.825547 0.873486 +vt 0.796471 0.888074 +vt 0.796471 0.815133 +vt 0.667641 0.581308 +vt 0.630863 0.602614 +vt 0.608691 0.517003 +vt 0.675627 0.152004 +vt 0.638849 0.173311 +vt 0.616677 0.087700 +vt 0.973026 0.502245 +vt 0.943950 0.516833 +vt 0.943950 0.443891 +vt 0.374741 0.172381 +vt 0.440516 0.229634 +vt 0.767395 0.624623 +vt 0.791389 0.602614 +vt 0.791389 0.691005 +vt 0.519867 0.962303 +vt 0.490791 0.976892 +vt 0.490791 0.903950 +vt 0.726592 0.581308 +vt 0.689813 0.602614 +vt 0.667641 0.517003 +vt 0.941849 0.785956 +vt 0.912773 0.800544 +vt 0.912773 0.727603 +vt 0.295635 0.470690 +vt 0.254106 0.390788 +vt 0.431387 0.961621 +vt 0.402311 0.976209 +vt 0.402311 0.903267 +vt 0.750241 0.276960 +vt 0.774234 0.254951 +vt 0.774234 0.343342 +vt 0.883698 0.785956 +vt 0.854622 0.800544 +vt 0.854622 0.727603 +vt 0.490791 0.341922 +vt 0.549397 0.410204 +vt 0.750241 0.343342 +vt 0.726247 0.365351 +vt 0.726247 0.276960 +vt 0.883698 0.815133 +vt 0.912773 0.873486 +vt 0.658931 0.509205 +vt 0.617402 0.429303 +vt 0.666917 0.079902 +vt 0.625387 0.000000 +vt 0.941849 0.902663 +vt 0.970924 0.961016 +vt 0.490717 0.605444 +vt 0.439954 0.602683 +vt 0.441496 0.530069 +vt 0.907691 0.675556 +vt 0.878616 0.690144 +vt 0.878616 0.617202 +vt 0.514785 0.713441 +vt 0.538778 0.691432 +vt 0.538778 0.779823 +vt 0.373236 0.815737 +vt 0.402311 0.801149 +vt 0.402311 0.874091 +vt 0.175817 0.675284 +vt 0.199811 0.653275 +vt 0.199811 0.741666 +vt 0.058606 0.477759 +vt 0.109293 0.473847 +vt 0.117211 0.546041 +vt 0.936767 0.675556 +vt 0.907691 0.690144 +vt 0.907691 0.617202 +vt 0.539634 0.713441 +vt 0.563628 0.691432 +vt 0.563628 0.779823 +vt 0.352333 0.923106 +vt 0.323257 0.937694 +vt 0.323257 0.864753 +vt 0.076558 0.390788 +vt 0.117211 0.403110 +vt 0.734577 0.022009 +vt 0.758571 0.000000 +vt 0.758571 0.088391 +vt 0.204893 0.924147 +vt 0.175817 0.938735 +vt 0.175817 0.865793 +vt 0.608691 0.581308 +vt 0.571913 0.602614 +vt 0.549741 0.517003 +vt 0.549741 0.581308 +vt 0.512963 0.602614 +vt 0.490791 0.517003 +vt 0.000000 0.865793 +vt 0.029076 0.924147 +vt 0.017952 0.216436 +vt 0.058606 0.228758 +vt 0.050688 0.299495 +vt 0.914530 0.327893 +vt 0.885455 0.342481 +vt 0.885455 0.269540 +vt 0.082599 0.741986 +vt 0.058606 0.763995 +vt 0.058606 0.675604 +vt 0.970924 0.873486 +vt 0.941849 0.888074 +vt 0.941849 0.815133 +vt 0.957018 0.160472 +vt 0.927942 0.175060 +vt 0.927942 0.102118 +vt 0.204742 0.216436 +vt 0.245396 0.228758 +vt 0.237478 0.299495 +vt 0.914875 0.502245 +vt 0.885799 0.516833 +vt 0.885799 0.443891 +vt 0.116757 0.924466 +vt 0.087681 0.939055 +vt 0.087681 0.866113 +vt 0.758571 0.198791 +vt 0.734577 0.220801 +vt 0.734577 0.132409 +vt 0.647427 0.691432 +vt 0.605129 0.687641 +vt 0.598584 0.616762 +vt 0.607094 0.874773 +vt 0.578018 0.889362 +vt 0.578018 0.816420 +vt 0.840716 0.102118 +vt 0.869791 0.160472 +vt 0.599981 0.509205 +vt 0.558452 0.429303 +vt 0.541031 0.509205 +vt 0.499502 0.429303 +vt 0.204893 0.865793 +vt 0.233968 0.851205 +vt 0.233968 0.924147 +vt 0.000000 0.303408 +vt 0.058606 0.371690 +vt 0.972681 0.327893 +vt 0.943606 0.342481 +vt 0.943606 0.269539 +vt 0.165198 0.743455 +vt 0.141205 0.765464 +vt 0.141205 0.677073 +vt 0.705579 0.961016 +vt 0.676503 0.975604 +vt 0.676503 0.902663 +vt 0.856723 0.443891 +vt 0.885799 0.429303 +vt 0.885799 0.502245 +vt 0.186790 0.303408 +vt 0.245396 0.371689 +vt 0.796471 0.873486 +vt 0.767395 0.888074 +vt 0.767395 0.815133 +vt 0.825547 0.961016 +vt 0.796471 0.975604 +vt 0.796471 0.902662 +vt 0.717881 0.509205 +vt 0.676352 0.429303 +vt 0.676503 0.961016 +vt 0.647427 0.975604 +vt 0.647427 0.902663 +vt 0.052012 0.091333 +vt 0.052012 0.125104 +vt 0.000000 0.125104 +vt 0.160784 0.062086 +vt 0.131639 0.171236 +vt 0.157645 0.000000 +vt 0.186790 0.016886 +vt 0.160784 0.154351 +vt 0.186790 0.199551 +vt 0.157645 0.216436 +vt 0.119588 0.406202 +vt 0.159179 0.390788 +vt 0.168049 0.478794 +vt 0.068249 0.576479 +vt 0.109185 0.565140 +vt 0.109185 0.653595 +vt 0.519867 0.816420 +vt 0.548943 0.801832 +vt 0.548943 0.874773 +vt 0.598584 0.691432 +vt 0.556286 0.687641 +vt 0.549741 0.616762 +vt 0.927942 0.160472 +vt 0.898867 0.175060 +vt 0.898867 0.102118 +vt 0.774234 0.276960 +vt 0.798228 0.254951 +vt 0.798228 0.343342 +vt 0.912773 0.902663 +vt 0.941849 0.961016 +vt 0.965842 0.675556 +vt 0.936767 0.690144 +vt 0.936767 0.617202 +vt 0.539634 0.691432 +vt 0.497336 0.687641 +vt 0.490791 0.616762 +vt 0.469030 0.876316 +vt 0.439954 0.890904 +vt 0.439954 0.817962 +vt 0.519867 0.903950 +vt 0.548943 0.889362 +vt 0.548942 0.962303 +vt 0.442331 0.444717 +vt 0.481922 0.429303 +vt 0.490791 0.517309 +vt 0.898867 0.014588 +vt 0.927942 0.000000 +vt 0.927942 0.072942 +vt 0.514785 0.779823 +vt 0.490791 0.801832 +vt 0.490791 0.713441 +vt 0.734654 0.888074 +vt 0.255629 0.154351 +vt 0.238802 0.125104 +vt 0.284775 0.045200 +vt 0.347574 0.062086 +vt 0.364401 0.125104 +vt 0.347574 0.154350 +vt 0.647427 0.713014 +vt 0.885455 0.254951 +vt 0.734654 0.975604 +vt 0.796471 0.800544 +vt 0.758571 0.220800 +vt 0.439954 0.715844 +vt 0.087681 0.763995 +vt 0.640691 0.889362 +vt 0.811640 0.000000 +vt 0.796471 0.713014 +vt 0.029076 0.938735 +vt 0.782564 0.000000 +vt 0.608347 0.262750 +vt 0.734577 0.007799 +vt 0.854622 0.713014 +vt 0.029076 0.763675 +vt 0.571569 0.428262 +vt 0.798572 0.516833 +vt 0.490791 0.267273 +vt 0.697799 0.173311 +vt 0.245396 0.824940 +vt 0.304001 0.228758 +vt 0.146287 0.765464 +vt 0.630519 0.428262 +vt 0.175817 0.228758 +vt 0.647427 0.800544 +vt 0.587621 0.801832 +vt 0.233968 0.763675 +vt 0.199811 0.763675 +vt 0.695415 0.602614 +vt 0.689469 0.428262 +vt 0.914530 0.342481 +vt 0.023994 0.653275 +vt 0.487941 0.605444 +vt 0.058151 0.763675 +vt 0.469030 0.890904 +vt 0.714326 0.800544 +vt 0.750585 0.429303 +vt 0.303547 0.737410 +vt 0.676503 0.800544 +vt 0.791389 0.690144 +vt 0.469030 0.715844 +vt 0.304346 0.649474 +vt 1.000000 0.888074 +vt 0.328339 0.762634 +vt 0.423998 0.602614 +vt 0.957018 0.087530 +vt 0.234423 0.403110 +vt 0.557727 0.012321 +vt 0.519867 0.801832 +vt 0.267568 0.737410 +vt 0.869791 0.000000 +vt 0.883698 0.800544 +vt 0.326518 0.564099 +vt 0.058606 0.939055 +vt 0.640691 0.801832 +vt 0.058606 0.403110 +vt 0.245396 1.000000 +vt 0.117211 0.228758 +vt 0.994918 0.602614 +vt 0.912773 0.888074 +vt 0.047987 0.653275 +vt 1.000000 0.800544 +vt 0.856723 0.429303 +vt 0.782564 0.175060 +vt 0.116757 0.763995 +vt 0.421223 0.690749 +vt 0.303547 0.824940 +vt 0.402311 0.888679 +vt 0.106593 0.653595 +vt 0.849540 0.690144 +vt 0.714326 0.888074 +vt 0.117211 0.765464 +vt 0.175362 0.765464 +vt 0.869791 0.175060 +vt 0.395408 0.602614 +vt 0.898867 0.000000 +vt 0.362607 0.228758 +vt 0.943950 0.429303 +vt 0.397229 0.690749 +vt 0.820465 0.690144 +vt 0.719408 0.602614 +vt 0.798228 0.342481 +vt 0.970924 0.713014 +vt 0.970924 0.800544 +vt 0.587621 0.691432 +vt 0.323257 0.850164 +vt 0.827303 0.342481 +vt 0.146287 0.940524 +vt 0.000000 0.650514 +vt 0.774579 0.539703 +vt 0.927942 0.087530 +vt 0.451981 0.174352 +vt 0.743402 0.602614 +vt 0.616677 0.007799 +vt 0.175817 0.650514 +vt 0.854622 0.975604 +vt 0.385046 0.429303 +vt 0.204893 0.763675 +vt 0.986093 0.087530 +vt 0.578018 0.976892 +vt 0.705579 0.800544 +vt 0.750585 0.539703 +vt 0.274471 1.000000 +vt 0.304346 0.762634 +vt 0.973026 0.429303 +vt 0.406355 0.254951 +vt 0.767395 0.713014 +vt 0.519867 0.889362 +vt 0.941849 0.713014 +vt 0.304346 0.398587 +vt 0.431387 0.888679 +vt 0.750241 0.365351 +vt 0.883698 0.713014 +vt 0.502257 0.429303 +vt 0.750241 0.254951 +vt 0.667641 0.437102 +vt 0.675627 0.007799 +vt 0.941849 0.975604 +vt 0.490717 0.517309 +vt 0.907691 0.602614 +vt 0.514785 0.801832 +vt 0.373236 0.888679 +vt 0.175817 0.763675 +vt 0.070071 0.565140 +vt 0.936767 0.602614 +vt 0.539634 0.801832 +vt 0.352333 0.850164 +vt 0.734577 0.110400 +vt 0.000000 0.938735 +vt 0.914530 0.254951 +vt 0.082599 0.653595 +vt 0.914875 0.429303 +vt 0.116757 0.851525 +vt 0.647427 0.602614 +vt 0.607094 0.801832 +vt 0.840715 0.175060 +vt 0.608691 0.437102 +vt 0.549741 0.437102 +vt 0.204893 0.938735 +vt 0.011466 0.390788 +vt 0.972681 0.254951 +vt 0.165198 0.655064 +vt 0.705579 0.888074 +vt 0.856723 0.516833 +vt 0.198256 0.390788 +vt 0.726592 0.437102 +vt 0.000000 0.091333 +vt 0.068839 0.062086 +vt 0.097984 0.045200 +vt 0.131639 0.045200 +vt 0.177611 0.091333 +vt 0.177611 0.125104 +vt 0.097985 0.171236 +vt 0.068839 0.154351 +vt 0.117211 0.478794 +vt 0.058606 0.648462 +vt 0.598584 0.602614 +vt 0.774234 0.365351 +vt 0.912773 0.975604 +vt 0.965842 0.602614 +vt 0.539634 0.602614 +vt 0.469030 0.803374 +vt 0.519867 0.976892 +vt 0.439954 0.517309 +vt 0.514785 0.691432 +vn 0.707100 0.000000 0.707100 +vn 0.000000 1.000000 0.000000 +vn -0.703100 -0.106600 -0.703100 +vn 0.965900 -0.000000 -0.258800 +vn 0.258800 -0.000000 0.965900 +vn -0.258800 -0.000000 0.965900 +vn 0.257300 -0.106600 0.960400 +vn 0.258800 0.000000 -0.965900 +vn -0.257300 -0.106600 -0.960400 +vn -0.965900 0.000000 0.258800 +vn 0.707100 0.000000 -0.707100 +vn -0.736600 0.646900 0.197400 +vn -0.965900 0.000000 -0.258800 +vn 0.857800 -0.459700 -0.229900 +vn -0.707100 0.000000 -0.707100 +vn 0.960400 -0.106600 0.257300 +vn 0.197400 -0.646900 0.736600 +vn 0.197400 0.646900 -0.736600 +vn -0.703100 -0.106600 0.703100 +vn -0.736600 -0.646900 -0.197400 +vn 0.965900 -0.000000 0.258800 +vn 0.539200 0.646900 0.539200 +vn -0.539200 0.646900 -0.539200 +vn 0.229900 -0.459700 0.857800 +vn -0.539200 0.646900 0.539200 +vn -0.857800 -0.459700 -0.229900 +vn -0.197400 0.646900 -0.736600 +vn -0.258800 -0.000000 -0.965900 +vn 0.628000 -0.459700 -0.628000 +vn 0.736600 0.646900 0.197400 +vn -0.707100 0.000000 0.707100 +vn 0.960400 -0.106600 -0.257300 +vn -0.257300 -0.106600 0.960400 +vn -0.960400 -0.106600 0.257300 +vn -0.628000 -0.459700 0.628000 +vn 0.703100 -0.106600 0.703100 +vn -0.857800 -0.459700 0.229900 +vn -0.960400 -0.106600 -0.257300 +vn 0.736600 0.646900 -0.197400 +vn -0.197400 0.646900 0.736600 +vn 0.229800 -0.459700 -0.857800 +vn 0.703100 -0.106600 -0.703100 +vn 0.628000 -0.459700 0.628000 +vn -0.229800 -0.459700 0.857800 +vn 0.539200 0.646900 -0.539200 +vn 0.197400 0.646900 0.736600 +vn -0.229900 -0.459700 -0.857800 +vn 0.257300 -0.106600 -0.960400 +vn 0.857800 -0.459700 0.229900 +vn -0.736600 0.646900 -0.197400 +vn -0.857800 -0.459700 -0.229800 +vn -0.628000 -0.459700 -0.628000 +vn 0.857800 -0.459700 0.229800 +vn 0.000000 -1.000000 0.000000 +vn -0.960400 0.106600 -0.257300 +vn 0.703100 0.106600 0.703100 +vn -0.703100 0.106600 -0.703100 +vn -0.628000 0.459700 0.628000 +vn 0.539200 -0.646900 -0.539200 +vn 0.960400 0.106600 -0.257300 +vn -0.229900 -0.459700 0.857800 +vn -0.229900 0.459700 -0.857800 +vn -0.257300 0.106600 0.960400 +vn 0.857800 0.459700 0.229800 +vn -0.857800 0.459700 -0.229800 +vn 0.539200 -0.646900 0.539200 +vn -0.229900 0.459700 0.857800 +vn -0.736600 -0.646900 0.197400 +vn -0.628000 0.459700 -0.628000 +vn 0.197400 -0.646900 -0.736600 +vn 0.857800 0.459700 -0.229900 +vn 0.703100 0.106600 -0.703100 +vn 0.257300 0.106600 0.960400 +vn -0.703100 0.106600 0.703100 +vn -0.197400 -0.646900 0.736600 +vn 0.960400 0.106600 0.257300 +vn -0.539200 -0.646900 0.539200 +vn -0.960400 0.106600 0.257300 +vn 0.628000 0.459700 -0.628000 +vn 0.229900 0.459700 0.857800 +vn -0.197400 -0.646900 -0.736600 +vn 0.257300 0.106600 -0.960400 +vn 0.736600 -0.646900 0.197400 +vn 0.229800 0.459700 -0.857800 +vn 0.628000 0.459700 0.628000 +vn -0.539200 -0.646900 -0.539200 +vn -0.257300 0.106600 -0.960400 +vn 0.736600 -0.646900 -0.197400 +vn -0.857800 0.459700 0.229900 +vn -0.229800 0.459700 0.857800 +s off +f 20/1/1 21/2/1 43/3/1 +f 11/4/2 7/5/2 3/6/2 +f 15/7/2 16/8/2 12/9/2 +f 28/10/3 27/11/3 49/12/3 +f 41/13/4 42/14/4 60/15/4 +f 5/16/1 6/17/1 20/18/1 +f 6/19/5 7/20/5 21/21/5 +f 7/22/6 8/23/6 22/24/6 +f 53/25/7 54/26/7 72/27/7 +f 2/28/8 1/29/8 14/30/8 +f 16/31/9 15/32/9 27/33/9 +f 9/34/10 10/35/10 24/36/10 +f 1/37/11 3/38/11 17/39/11 +f 12/40/12 16/41/12 28/42/12 +f 10/43/13 11/44/13 25/45/13 +f 3/46/4 4/47/4 18/48/4 +f 15/49/14 2/50/14 13/51/14 +f 11/52/15 12/53/15 26/54/15 +f 29/55/16 30/56/16 31/57/16 +f 30/58/2 29/59/2 4/60/2 +f 19/61/17 31/62/17 30/63/17 +f 17/64/11 18/65/11 37/66/11 +f 4/67/18 29/68/18 32/69/18 +f 33/70/19 34/71/19 35/72/19 +f 9/73/2 34/74/2 33/75/2 +f 23/76/20 35/77/20 34/78/20 +f 19/79/21 20/80/21 42/81/21 +f 8/82/22 33/83/22 36/84/22 +f 47/85/10 48/86/10 66/87/10 +f 37/88/23 51/89/23 69/90/23 +f 31/62/24 19/61/24 41/91/24 +f 14/92/8 17/93/8 38/94/8 +f 26/95/25 28/42/25 50/96/25 +f 35/77/26 23/76/26 45/97/26 +f 21/98/5 22/99/5 44/100/5 +f 18/101/27 32/69/27 51/102/27 +f 13/103/28 14/104/28 39/105/28 +f 27/106/29 13/51/29 40/107/29 +f 22/108/30 36/84/30 53/109/30 +f 23/110/31 24/111/31 46/112/31 +f 32/113/32 31/114/32 52/115/32 +f 24/116/10 25/117/10 47/118/10 +f 36/119/33 35/120/33 54/121/33 +f 25/122/13 26/123/13 48/124/13 +f 68/125/34 67/126/34 85/127/34 +f 72/128/35 63/129/35 81/130/35 +f 59/131/11 60/132/11 78/133/11 +f 71/134/36 72/135/36 90/136/36 +f 54/137/37 45/138/37 63/129/37 +f 50/139/38 49/140/38 67/141/38 +f 42/142/21 43/143/21 61/144/21 +f 44/145/39 53/146/39 71/147/39 +f 48/148/40 50/149/40 68/150/40 +f 43/151/1 44/152/1 62/153/1 +f 49/154/41 40/155/41 58/156/41 +f 38/157/8 37/158/8 55/159/8 +f 51/160/42 52/161/42 70/162/42 +f 45/163/6 46/164/6 64/165/6 +f 39/166/28 38/167/28 56/168/28 +f 52/169/43 41/170/43 59/171/43 +f 46/172/31 47/173/31 65/174/31 +f 40/175/15 39/176/15 57/177/15 +f 80/178/18 89/179/18 107/180/18 +f 78/181/11 79/182/11 97/183/11 +f 86/184/19 85/185/19 103/186/19 +f 90/187/44 81/188/44 99/189/44 +f 60/190/4 61/191/4 79/192/4 +f 62/193/45 71/147/45 89/194/45 +f 66/195/46 68/150/46 86/196/46 +f 61/197/21 62/198/21 80/199/21 +f 67/200/47 58/156/47 76/201/47 +f 56/202/28 55/203/28 73/204/28 +f 69/205/48 70/206/48 88/207/48 +f 63/208/5 64/209/5 82/210/5 +f 57/211/15 56/212/15 74/213/15 +f 70/214/49 59/171/49 77/215/49 +f 64/216/6 65/217/6 83/218/6 +f 58/219/13 57/220/13 75/221/13 +f 55/222/50 69/90/50 87/223/50 +f 65/224/31 66/225/31 84/226/31 +f 103/227/51 94/228/51 112/229/51 +f 97/230/11 98/231/11 116/232/11 +f 102/233/30 104/234/30 122/235/30 +f 98/236/27 107/237/27 125/238/27 +f 84/239/22 86/240/22 104/234/22 +f 79/241/4 80/242/4 98/243/4 +f 85/244/52 76/245/52 94/246/52 +f 74/247/15 73/248/15 91/249/15 +f 87/250/9 88/251/9 106/252/9 +f 81/253/1 82/254/1 100/255/1 +f 75/256/13 74/257/13 92/258/13 +f 88/259/14 77/260/14 95/261/14 +f 82/262/5 83/263/5 101/264/5 +f 76/265/10 75/266/10 93/267/10 +f 73/268/12 87/269/12 105/270/12 +f 83/271/6 84/217/6 102/272/6 +f 89/273/16 90/274/16 108/275/16 +f 77/276/8 78/231/8 96/277/8 +f 117/278/4 118/279/4 136/280/4 +f 123/281/38 124/282/38 142/283/38 +f 110/284/10 109/285/10 127/286/10 +f 121/287/37 112/229/37 130/288/37 +f 92/289/13 91/290/13 109/291/13 +f 105/292/3 106/293/3 124/294/3 +f 99/295/21 100/296/21 118/297/21 +f 93/298/10 92/299/10 110/300/10 +f 106/301/29 95/261/29 113/302/29 +f 100/303/1 101/304/1 119/305/1 +f 94/306/31 93/307/31 111/308/31 +f 91/309/25 105/270/25 123/310/25 +f 101/311/5 102/312/5 120/313/5 +f 107/314/32 108/315/32 126/316/32 +f 95/317/28 96/318/28 114/319/28 +f 108/320/24 99/321/24 117/322/24 +f 104/323/33 103/324/33 121/325/33 +f 96/326/8 97/327/8 115/328/8 +f 129/329/6 128/307/6 146/330/6 +f 135/331/11 136/332/11 154/333/11 +f 141/334/34 142/335/34 160/336/34 +f 128/337/31 127/338/31 145/339/31 +f 111/340/31 110/341/31 128/342/31 +f 124/343/41 113/344/41 131/345/41 +f 118/346/21 119/347/21 137/348/21 +f 112/349/6 111/350/6 129/351/6 +f 109/352/40 123/353/40 141/354/40 +f 119/355/1 120/356/1 138/357/1 +f 125/358/42 126/359/42 144/360/42 +f 113/361/15 114/362/15 132/363/15 +f 126/364/43 117/322/43 135/365/43 +f 122/366/7 121/367/7 139/368/7 +f 114/369/28 115/370/28 133/371/28 +f 116/372/23 125/238/23 143/373/23 +f 120/374/39 122/375/39 140/376/39 +f 115/377/8 116/378/8 134/379/8 +f 148/380/1 147/381/1 165/382/1 +f 154/383/11 155/384/11 173/385/11 +f 160/386/52 149/387/52 167/388/52 +f 147/389/5 146/390/5 164/391/5 +f 142/392/47 131/393/47 149/387/47 +f 136/394/4 137/395/4 155/396/4 +f 130/397/5 129/398/5 147/399/5 +f 127/400/46 141/401/46 159/402/46 +f 137/403/21 138/404/21 156/405/21 +f 143/406/48 144/407/48 162/408/48 +f 131/409/13 132/410/13 150/411/13 +f 144/412/53 135/413/53 153/414/53 +f 140/415/36 139/416/36 157/417/36 +f 132/418/15 133/419/15 151/420/15 +f 134/421/50 143/422/50 161/423/50 +f 138/424/45 140/425/45 158/426/45 +f 133/427/28 134/428/28 152/429/28 +f 139/430/35 130/288/35 148/431/35 +f 179/432/3 180/433/3 198/434/3 +f 173/435/11 174/436/11 192/437/11 +f 163/438/30 177/439/30 195/440/30 +f 166/441/21 165/442/21 183/443/21 +f 145/444/22 159/402/22 177/445/22 +f 155/446/4 156/447/4 174/448/4 +f 161/449/9 162/450/9 180/451/9 +f 149/452/10 150/453/10 168/454/10 +f 162/455/14 153/414/14 171/456/14 +f 158/457/16 157/458/16 175/459/16 +f 150/460/13 151/442/13 169/461/13 +f 152/462/12 161/423/12 179/463/12 +f 156/464/18 158/426/18 176/465/18 +f 151/466/15 152/254/15 170/467/15 +f 157/468/44 148/469/44 166/470/44 +f 146/471/6 145/472/6 163/473/6 +f 159/474/19 160/475/19 178/476/19 +f 153/477/8 154/478/8 172/479/8 +f 194/480/42 193/481/42 211/482/42 +f 198/483/41 189/484/41 207/485/41 +f 185/486/6 186/487/6 204/488/6 +f 197/489/38 198/490/38 216/491/38 +f 167/492/31 168/493/31 186/494/31 +f 180/495/29 171/496/29 189/484/29 +f 176/497/32 175/498/32 193/499/32 +f 168/500/10 169/501/10 187/502/10 +f 170/503/25 179/504/25 197/505/25 +f 174/506/27 176/507/27 194/508/27 +f 169/509/13 170/143/13 188/510/13 +f 175/511/24 166/512/24 184/513/24 +f 164/514/5 163/515/5 181/516/5 +f 177/517/33 178/518/33 196/519/33 +f 171/520/28 172/521/28 190/522/28 +f 165/523/1 164/524/1 182/525/1 +f 178/526/51 167/527/51 185/528/51 +f 172/529/8 173/530/8 191/531/8 +f 204/532/6 205/533/6 223/534/6 +f 212/535/48 211/536/48 229/537/48 +f 216/538/47 207/539/47 225/540/47 +f 203/541/5 204/542/5 222/543/5 +f 186/544/31 187/304/31 205/545/31 +f 188/546/40 197/505/40 215/547/40 +f 192/548/23 194/508/23 212/549/23 +f 187/550/10 188/551/10 206/552/10 +f 193/553/43 184/513/43 202/554/43 +f 182/555/1 181/556/1 199/557/1 +f 195/558/7 196/559/7 214/560/7 +f 189/561/15 190/562/15 208/563/15 +f 183/564/21 182/565/21 200/566/21 +f 196/567/37 185/528/37 203/568/37 +f 190/569/28 191/570/28 209/571/28 +f 184/572/4 183/573/4 201/574/4 +f 181/575/39 195/440/39 213/576/39 +f 191/577/8 192/578/8 210/579/8 +f 220/580/54 228/581/54 230/582/54 +f 221/583/54 225/584/54 220/580/54 +f 231/585/54 232/586/54 221/583/54 +f 224/587/54 233/588/54 234/589/54 +f 206/590/46 215/591/46 233/592/46 +f 210/593/50 212/594/50 230/595/50 +f 205/596/31 206/597/31 224/598/31 +f 211/599/53 202/600/53 220/601/53 +f 200/602/21 199/603/21 217/604/21 +f 213/605/36 214/606/36 232/607/36 +f 207/608/13 208/521/13 226/609/13 +f 201/610/4 200/611/4 218/612/4 +f 214/613/35 203/614/35 221/615/35 +f 208/616/15 209/617/15 227/618/15 +f 202/619/11 201/620/11 219/621/11 +f 199/622/45 213/623/45 231/624/45 +f 209/625/28 210/626/28 228/627/28 +f 215/628/34 216/629/34 234/630/34 +f 42/631/21 20/1/21 43/3/21 +f 3/6/2 1/632/2 2/633/2 +f 2/633/2 12/9/2 3/6/2 +f 11/4/2 10/634/2 9/73/2 +f 9/73/2 8/635/2 7/5/2 +f 7/5/2 6/636/2 5/637/2 +f 5/637/2 4/60/2 7/5/2 +f 3/6/2 12/9/2 11/4/2 +f 11/4/2 9/73/2 7/5/2 +f 7/5/2 4/60/2 3/6/2 +f 2/633/2 15/7/2 12/9/2 +f 50/638/55 28/10/55 49/12/55 +f 59/639/11 41/13/11 60/15/11 +f 19/640/21 5/16/21 20/18/21 +f 20/209/1 6/19/1 21/21/1 +f 21/641/5 7/22/5 22/24/5 +f 71/642/56 53/25/56 72/27/56 +f 13/296/28 2/28/28 14/30/28 +f 28/643/57 16/31/57 27/33/57 +f 23/644/31 9/34/31 24/36/31 +f 14/645/8 1/37/8 17/39/8 +f 26/95/58 12/40/58 28/42/58 +f 24/646/10 10/43/10 25/45/10 +f 17/647/11 3/46/11 18/48/11 +f 27/106/59 15/49/59 13/51/59 +f 25/648/13 11/52/13 26/54/13 +f 32/649/60 29/55/60 31/57/60 +f 5/637/2 30/58/2 4/60/2 +f 5/650/61 19/61/61 30/63/61 +f 38/266/8 17/64/8 37/66/8 +f 18/101/62 4/67/62 32/69/62 +f 36/538/63 33/70/63 35/72/63 +f 8/635/2 9/73/2 33/75/2 +f 9/651/52 23/76/52 34/78/52 +f 41/652/4 19/79/4 42/81/4 +f 22/108/64 8/82/64 36/84/64 +f 65/653/31 47/85/31 66/87/31 +f 55/222/65 37/88/65 69/90/65 +f 52/654/66 31/62/66 41/91/66 +f 39/655/28 14/92/28 38/94/28 +f 48/656/67 26/95/67 50/96/67 +f 54/657/68 35/77/68 45/97/68 +f 43/658/1 21/98/1 44/100/1 +f 37/659/69 18/101/69 51/102/69 +f 40/660/15 13/103/15 39/105/15 +f 49/661/70 27/106/70 40/107/70 +f 44/662/71 22/108/71 53/109/71 +f 45/663/6 23/110/6 46/112/6 +f 51/664/72 32/113/72 52/115/72 +f 46/665/31 24/116/31 47/118/31 +f 53/666/73 36/119/73 54/121/73 +f 47/212/10 25/122/10 48/124/10 +f 86/667/74 68/125/74 85/127/74 +f 90/668/75 72/128/75 81/130/75 +f 77/669/8 59/131/8 78/133/8 +f 89/670/76 71/134/76 90/136/76 +f 72/128/77 54/137/77 63/129/77 +f 68/671/78 50/139/78 67/141/78 +f 60/672/4 42/142/4 61/144/4 +f 62/193/79 44/145/79 71/147/79 +f 66/195/80 48/148/80 68/150/80 +f 61/673/21 43/151/21 62/153/21 +f 67/200/81 49/154/81 58/156/81 +f 56/674/28 38/157/28 55/159/28 +f 69/675/82 51/160/82 70/162/82 +f 63/676/5 45/163/5 64/165/5 +f 57/677/15 39/166/15 56/168/15 +f 70/214/83 52/169/83 59/171/83 +f 64/678/6 46/172/6 65/174/6 +f 58/679/13 40/175/13 57/177/13 +f 98/680/62 80/178/62 107/180/62 +f 96/681/8 78/181/8 97/183/8 +f 104/682/63 86/184/63 103/186/63 +f 108/683/17 90/187/17 99/189/17 +f 78/684/11 60/190/11 79/192/11 +f 80/685/84 62/193/84 89/194/84 +f 84/686/85 66/195/85 86/196/85 +f 79/687/4 61/197/4 80/199/4 +f 85/688/86 67/200/86 76/201/86 +f 74/677/15 56/202/15 73/204/15 +f 87/158/87 69/205/87 88/207/87 +f 81/689/1 63/208/1 82/210/1 +f 75/690/13 57/211/13 74/213/13 +f 88/691/88 70/214/88 77/215/88 +f 82/692/5 64/216/5 83/218/5 +f 76/693/10 58/219/10 75/221/10 +f 73/694/89 55/222/89 87/223/89 +f 83/620/6 65/224/6 84/226/6 +f 121/287/68 103/227/68 112/229/68 +f 115/695/8 97/230/8 116/232/8 +f 120/696/71 102/233/71 122/235/71 +f 116/372/69 98/236/69 125/238/69 +f 102/233/64 84/239/64 104/234/64 +f 97/697/11 79/241/11 98/243/11 +f 103/343/20 85/244/20 94/246/20 +f 92/698/13 74/247/13 91/249/13 +f 105/699/57 87/250/57 106/252/57 +f 99/700/21 81/253/21 100/255/21 +f 93/701/10 75/256/10 92/258/10 +f 106/301/59 88/259/59 95/261/59 +f 100/542/1 82/262/1 101/264/1 +f 94/702/31 76/265/31 93/267/31 +f 91/309/58 73/268/58 105/270/58 +f 101/703/5 83/271/5 102/272/5 +f 107/704/60 89/273/60 108/275/60 +f 95/705/28 77/276/28 96/277/28 +f 135/706/11 117/278/11 136/280/11 +f 141/707/78 123/281/78 142/283/78 +f 128/708/31 110/284/31 127/286/31 +f 139/430/77 121/287/77 130/288/77 +f 110/709/10 92/289/10 109/291/10 +f 123/710/55 105/292/55 124/294/55 +f 117/711/4 99/295/4 118/297/4 +f 111/712/31 93/298/31 110/300/31 +f 124/713/70 106/301/70 113/302/70 +f 118/714/21 100/303/21 119/305/21 +f 112/698/6 94/306/6 111/308/6 +f 109/715/90 91/309/90 123/310/90 +f 119/716/1 101/311/1 120/313/1 +f 125/717/72 107/314/72 126/316/72 +f 113/718/15 95/317/15 114/319/15 +f 126/364/66 108/320/66 117/322/66 +f 122/719/73 104/323/73 121/325/73 +f 114/720/28 96/326/28 115/328/28 +f 147/721/5 129/329/5 146/330/5 +f 153/722/8 135/331/8 154/333/8 +f 159/723/74 141/334/74 160/336/74 +f 146/724/6 128/337/6 145/339/6 +f 129/725/6 111/340/6 128/342/6 +f 142/592/81 124/343/81 131/345/81 +f 136/726/4 118/346/4 137/348/4 +f 130/164/5 112/349/5 129/351/5 +f 127/727/80 109/352/80 141/354/80 +f 137/453/21 119/355/21 138/357/21 +f 143/728/82 125/358/82 144/360/82 +f 131/729/13 113/361/13 132/363/13 +f 144/730/83 126/364/83 135/365/83 +f 140/731/56 122/366/56 139/368/56 +f 132/690/15 114/369/15 133/371/15 +f 134/732/65 116/372/65 143/373/65 +f 138/733/79 120/374/79 140/376/79 +f 133/706/28 115/377/28 134/379/28 +f 166/419/21 148/380/21 165/382/21 +f 172/734/8 154/383/8 173/385/8 +f 178/735/20 160/386/20 167/388/20 +f 165/736/1 147/389/1 164/391/1 +f 160/386/86 142/392/86 149/387/86 +f 154/737/11 136/394/11 155/396/11 +f 148/738/1 130/397/1 147/399/1 +f 145/444/85 127/400/85 159/402/85 +f 155/739/4 137/403/4 156/405/4 +f 161/740/87 143/406/87 162/408/87 +f 149/741/10 131/409/10 150/411/10 +f 162/455/88 144/412/88 153/414/88 +f 158/742/76 140/415/76 157/417/76 +f 150/80/13 132/418/13 151/420/13 +f 152/462/89 134/421/89 161/423/89 +f 156/464/84 138/424/84 158/426/84 +f 151/743/15 133/427/15 152/429/15 +f 157/744/75 139/430/75 148/431/75 +f 197/745/55 179/432/55 198/434/55 +f 191/746/8 173/435/8 192/437/8 +f 181/575/71 163/438/71 195/440/71 +f 184/747/4 166/441/4 183/443/4 +f 163/748/64 145/444/64 177/445/64 +f 173/749/11 155/446/11 174/448/11 +f 179/750/57 161/449/57 180/451/57 +f 167/751/31 149/452/31 168/454/31 +f 180/752/59 162/455/59 171/456/59 +f 176/753/60 158/457/60 175/459/60 +f 168/384/10 150/460/10 169/461/10 +f 170/754/58 152/462/58 179/463/58 +f 174/755/62 156/464/62 176/465/62 +f 169/756/13 151/466/13 170/467/13 +f 175/757/17 157/468/17 166/470/17 +f 164/758/5 146/471/5 163/473/5 +f 177/759/63 159/474/63 178/476/63 +f 171/760/28 153/477/28 172/479/28 +f 212/761/82 194/480/82 211/482/82 +f 216/762/81 198/483/81 207/485/81 +f 203/763/5 185/486/5 204/488/5 +f 215/764/78 197/489/78 216/491/78 +f 185/765/6 167/492/6 186/494/6 +f 198/483/70 180/495/70 189/484/70 +f 194/766/72 176/497/72 193/499/72 +f 186/117/31 168/500/31 187/502/31 +f 188/546/90 170/503/90 197/505/90 +f 192/548/69 174/506/69 194/508/69 +f 187/767/10 169/509/10 188/510/10 +f 193/553/66 175/511/66 184/513/66 +f 182/768/1 164/514/1 181/516/1 +f 195/769/73 177/517/73 196/519/73 +f 189/722/15 171/520/15 190/522/15 +f 183/684/21 165/523/21 182/525/21 +f 196/567/68 178/526/68 185/528/68 +f 190/770/28 172/529/28 191/531/28 +f 222/771/5 204/532/5 223/534/5 +f 230/56/87 212/535/87 229/537/87 +f 234/772/86 216/538/86 225/540/86 +f 221/773/1 203/541/1 222/543/1 +f 204/774/6 186/544/6 205/545/6 +f 206/775/80 188/546/80 215/547/80 +f 210/776/65 192/548/65 212/549/65 +f 205/777/31 187/550/31 206/552/31 +f 211/778/83 193/553/83 202/554/83 +f 200/779/21 182/555/21 199/557/21 +f 213/780/56 195/558/56 214/560/56 +f 207/781/13 189/561/13 208/563/13 +f 201/782/4 183/564/4 200/566/4 +f 214/783/77 196/567/77 203/568/77 +f 208/641/15 190/569/15 209/571/15 +f 202/356/11 184/572/11 201/574/11 +f 199/784/79 181/575/79 213/576/79 +f 209/404/28 191/577/28 210/579/28 +f 229/785/54 220/580/54 230/582/54 +f 220/580/54 219/786/54 218/787/54 +f 218/787/54 217/788/54 221/583/54 +f 221/583/54 222/789/54 223/790/54 +f 223/790/54 224/587/54 221/583/54 +f 225/584/54 226/791/54 227/792/54 +f 227/792/54 228/581/54 220/580/54 +f 220/580/54 218/787/54 221/583/54 +f 221/583/54 224/587/54 225/584/54 +f 225/584/54 227/792/54 220/580/54 +f 217/788/54 231/585/54 221/583/54 +f 225/584/54 224/587/54 234/589/54 +f 224/793/85 206/590/85 233/592/85 +f 228/794/89 210/593/89 230/595/89 +f 223/746/6 205/596/6 224/598/6 +f 229/795/88 211/599/88 220/601/88 +f 218/729/4 200/602/4 217/604/4 +f 231/796/76 213/605/76 232/607/76 +f 225/797/10 207/608/10 226/609/10 +f 219/798/11 201/610/11 218/612/11 +f 232/799/75 214/613/75 221/615/75 +f 226/800/13 208/616/13 227/618/13 +f 220/801/8 202/619/8 219/621/8 +f 217/802/84 199/622/84 231/624/84 +f 227/299/15 209/625/15 228/627/15 +f 233/803/74 215/628/74 234/630/74 diff --git a/assets/hbm/models/drill_main.obj b/assets/hbm/models/drill_main.obj new file mode 100644 index 000000000..5d0baf4e8 --- /dev/null +++ b/assets/hbm/models/drill_main.obj @@ -0,0 +1,1810 @@ +# Blender v2.76 (sub 0) OBJ File: 'drill_main.blend' +# www.blender.org +o Plane.001 +v -0.500000 0.250000 0.250000 +v -0.500000 0.750000 0.250000 +v -0.500000 0.250000 -0.250000 +v -0.500000 0.750000 -0.250000 +v -1.500000 0.000000 0.500000 +v -1.500000 1.000000 0.500000 +v -1.500000 0.000000 -0.500000 +v -1.500000 1.000000 -0.500000 +v -1.000000 1.000000 -0.500000 +v -1.000000 0.000000 -0.500000 +v -1.000000 1.000000 0.500000 +v -1.000000 0.000000 0.500000 +v -1.500000 0.875000 -0.375000 +v -1.500000 0.125000 -0.375000 +v -1.500000 0.875000 0.375000 +v -1.500000 0.125000 0.375000 +v -1.000000 0.687500 -0.187500 +v -1.000000 0.312500 -0.187500 +v -1.000000 0.687500 0.187500 +v -1.000000 0.312500 0.187500 +v -1.083333 0.250000 -0.600000 +v -1.083333 0.750000 -0.600000 +v -1.333333 0.500000 -0.600000 +v -1.083333 0.250000 0.600000 +v -1.083333 0.750000 0.600000 +v -1.333333 0.500000 0.600000 +v -1.500000 0.000000 1.500000 +v 1.500000 0.000000 1.500000 +v -1.500000 0.000000 -1.500000 +v 1.500000 0.000000 -1.500000 +v -1.500000 0.000000 1.250000 +v 1.250000 0.000000 1.500000 +v 1.500000 0.000000 -1.250000 +v -1.250000 0.000000 -1.500000 +v -1.500000 0.000000 -1.250000 +v -1.250000 0.000000 1.500000 +v 1.500000 0.000000 1.250000 +v 1.250000 0.000000 -1.500000 +v 1.250000 0.000000 1.250000 +v -1.250000 0.000000 1.250000 +v -1.250000 0.000000 -1.250000 +v 1.250000 0.000000 -1.250000 +v -0.000000 3.500000 -0.250000 +v 0.125000 3.500000 -0.216506 +v 0.000000 3.000000 -0.500000 +v 0.000000 3.250000 -0.500000 +v 0.250000 3.000000 -0.433013 +v 0.250000 3.250000 -0.433013 +v 0.433013 3.000000 -0.250000 +v 0.433013 3.250000 -0.250000 +v 0.500000 3.000000 0.000000 +v 0.500000 3.250000 0.000000 +v 0.433013 3.000000 0.250000 +v 0.433013 3.250000 0.250000 +v 0.250000 3.000000 0.433013 +v 0.250000 3.250000 0.433013 +v 0.000000 3.000000 0.500000 +v 0.000000 3.250000 0.500000 +v -0.250000 3.000000 0.433013 +v -0.250000 3.250000 0.433013 +v -0.433013 3.000000 0.250000 +v -0.433013 3.250000 0.250000 +v -0.500000 3.000000 0.000000 +v -0.500000 3.250000 0.000000 +v -0.433013 3.000000 -0.250000 +v -0.433013 3.250000 -0.250000 +v -0.250000 3.000000 -0.433013 +v -0.250000 3.250000 -0.433013 +v 0.216506 3.500000 -0.125000 +v 0.250000 3.500000 0.000000 +v 0.216506 3.500000 0.125000 +v 0.125000 3.500000 0.216506 +v 0.000000 3.500000 0.250000 +v -0.125000 3.500000 0.216506 +v -0.216506 3.500000 0.125000 +v -0.250000 3.500000 0.000000 +v -0.216506 3.500000 -0.125000 +v -0.125000 3.500000 -0.216506 +v -0.000000 3.500000 -0.087500 +v -0.043750 3.500000 -0.075777 +v -0.075777 3.500000 -0.043750 +v -0.087500 3.500000 0.000000 +v -0.075777 3.500000 0.043750 +v -0.043750 3.500000 0.075777 +v 0.000000 3.500000 0.087500 +v 0.043750 3.500000 0.075777 +v 0.075777 3.500000 0.043750 +v 0.087500 3.500000 0.000000 +v 0.075777 3.500000 -0.043750 +v 0.043750 3.500000 -0.075777 +v 0.000001 4.000000 -0.087500 +v -0.043749 4.000000 -0.075777 +v -0.075777 4.000000 -0.043750 +v -0.087499 4.000000 0.000000 +v -0.075777 4.000000 0.043750 +v -0.043749 4.000000 0.075777 +v 0.000001 4.000000 0.087500 +v 0.043751 4.000000 0.075777 +v 0.075778 4.000000 0.043750 +v 0.087501 4.000000 0.000000 +v 0.075778 4.000000 -0.043750 +v 0.043751 4.000000 -0.075777 +v -0.750000 3.000000 -0.750000 +v -0.500000 3.000000 -0.750000 +v -0.750000 3.000000 -0.500000 +v -0.500000 3.000000 -0.500000 +v 0.750000 3.000000 -0.750000 +v 0.750000 3.000000 -0.500000 +v 0.500000 3.000000 -0.750000 +v 0.500000 3.000000 -0.500000 +v 0.750000 3.000000 0.750000 +v 0.500000 3.000000 0.750000 +v 0.750000 3.000000 0.500000 +v 0.500000 3.000000 0.500000 +v -0.750000 3.000000 0.750000 +v -0.750000 3.000000 0.500000 +v -0.500000 3.000000 0.750000 +v -0.500000 3.000000 0.500000 +v 0.156236 0.656250 1.502073 +v -0.156236 0.656250 1.497927 +v 0.156236 0.343750 1.502073 +v -0.156236 0.343750 1.497927 +v 0.159552 0.656250 1.252095 +v -0.152920 0.656250 1.247949 +v 0.159552 0.343750 1.252095 +v -0.152920 0.343750 1.247949 +v -0.500000 0.000000 1.250000 +v -0.500000 1.000000 1.250000 +v -0.500000 0.000000 1.000000 +v -0.500000 1.000000 1.000000 +v 0.500000 0.000000 1.250000 +v 0.500000 1.000000 1.250000 +v 0.500000 0.000000 1.000000 +v 0.500000 1.000000 1.000000 +v -0.496481 0.739070 0.748450 +v -0.500000 0.000000 0.750000 +v 0.503519 0.739070 0.748450 +v 0.500000 0.000000 0.750000 +v 0.156236 0.656250 -1.497927 +v -0.156236 0.656250 -1.502073 +v 0.156236 0.343750 -1.497927 +v -0.156236 0.343750 -1.502073 +v 0.152920 0.656250 -1.247949 +v -0.159552 0.656250 -1.252095 +v 0.152920 0.343750 -1.247949 +v -0.159552 0.343750 -1.252095 +v -0.500000 0.000000 -1.000000 +v -0.500000 1.000000 -1.000000 +v -0.500000 0.000000 -1.250000 +v -0.500000 1.000000 -1.250000 +v 0.500000 0.000000 -1.000000 +v 0.500000 1.000000 -1.000000 +v 0.500000 0.000000 -1.250000 +v 0.500000 1.000000 -1.250000 +v -0.500000 0.000000 -0.750000 +v -0.500000 0.750000 -0.750000 +v 0.500000 0.750000 -0.750000 +v 0.500000 0.000000 -0.750000 +v -0.749622 0.250000 0.750000 +v 0.750378 1.000000 0.750000 +v -0.749622 0.250000 -0.750000 +v 0.750378 1.000000 -0.750000 +v -0.249622 0.500000 -0.433013 +v 0.000378 0.625000 -0.500000 +v 0.250378 0.750000 -0.433012 +v 0.433391 0.841506 -0.250000 +v 0.500378 0.875000 0.000000 +v 0.433390 0.841505 0.250000 +v 0.250378 0.750000 0.433013 +v 0.000378 0.625000 0.500000 +v -0.249622 0.500000 0.433013 +v -0.432635 0.408494 0.250000 +v -0.499622 0.375000 -0.000000 +v -0.432635 0.408494 -0.250000 +v -0.749622 0.750000 0.750000 +v 0.750378 1.500000 0.750000 +v -0.749622 0.750000 -0.750000 +v 0.750378 1.500000 -0.750000 +v -0.249622 1.000000 -0.433013 +v 0.000378 1.125000 -0.500000 +v 0.250378 1.250000 -0.433012 +v 0.433391 1.341506 -0.250000 +v 0.500378 1.375000 0.000000 +v 0.433390 1.341505 0.250000 +v 0.250378 1.250000 0.433013 +v 0.000378 1.125000 0.500000 +v -0.249622 1.000000 0.433013 +v -0.432635 0.908494 0.250000 +v -0.499622 0.875000 -0.000000 +v -0.432635 0.908494 -0.250000 +v -0.999622 0.250000 -0.375000 +v -0.999622 0.250000 0.375000 +v -0.999622 0.750000 -0.375000 +v -0.999622 0.750000 0.375000 +v 0.500000 0.000000 0.500000 +v 0.500000 0.250000 0.500000 +v 0.500000 0.000000 -0.500000 +v 0.500000 0.250000 -0.500000 +v 1.500000 0.000000 0.500000 +v 1.500000 0.250000 0.500000 +v 1.500000 0.000000 -0.500000 +v 1.500000 0.250000 -0.500000 +v 0.750000 0.375000 0.250000 +v 0.750000 0.375000 -0.250000 +v 1.250000 0.375000 -0.250000 +v 1.250000 0.375000 0.250000 +v 0.750000 1.000000 0.250000 +v 0.750000 1.000000 -0.250000 +v 1.250000 1.000000 -0.250000 +v 1.250000 1.000000 0.250000 +v 0.750000 1.500000 0.250000 +v 0.750000 1.500000 -0.250000 +v 1.250000 1.500000 -0.250000 +v 1.250000 1.500000 0.250000 +v 0.750000 2.125000 0.250000 +v 0.750000 2.125000 -0.250000 +v 1.250000 2.125000 -0.250000 +v 1.250000 2.125000 0.250000 +v 0.500000 2.500000 0.500000 +v 0.500000 2.500000 -0.500000 +v 1.500000 2.500000 0.500000 +v 1.500000 2.500000 -0.500000 +v 0.500000 2.250000 -0.500000 +v 0.500000 2.250000 0.500000 +v 1.500000 2.250000 -0.500000 +v 1.500000 2.250000 0.500000 +v 0.750000 3.125000 -0.250000 +v 0.750000 3.125000 0.250000 +v 0.750000 3.125000 -0.178571 +v 0.750000 3.125000 -0.107143 +v 0.750000 3.125000 -0.035714 +v 0.750000 3.125000 0.035714 +v 0.750000 3.125000 0.107143 +v 0.750000 3.125000 0.178571 +v 0.400000 3.125000 -0.250000 +v 0.400000 3.125000 0.250000 +v 0.400000 3.125000 -0.178571 +v 0.400000 3.125000 -0.107143 +v 0.400000 3.125000 -0.035714 +v 0.400000 3.125000 0.035714 +v 0.400000 3.125000 0.107143 +v 0.400000 3.125000 0.178571 +v 1.000000 2.875000 -0.250000 +v 1.000000 2.875000 0.250000 +v 1.000000 2.875000 -0.178571 +v 1.000000 2.875000 -0.107143 +v 1.000000 2.875000 -0.035714 +v 1.000000 2.875000 0.035714 +v 1.000000 2.875000 0.107143 +v 1.000000 2.875000 0.178571 +v 1.000000 2.500000 -0.250000 +v 1.000000 2.500000 0.250000 +v 1.000000 2.500000 -0.178571 +v 1.000000 2.500000 -0.107143 +v 1.000000 2.500000 -0.035714 +v 1.000000 2.500000 0.035714 +v 1.000000 2.500000 0.107143 +v 1.000000 2.500000 0.178571 +v 1.250000 1.000000 -1.250000 +v 1.000000 2.000000 -1.000000 +v 1.000000 1.000000 -1.250000 +v 0.750000 2.000000 -1.000000 +v 1.250000 1.000000 -1.000000 +v 1.000000 2.000000 -0.750000 +v 1.000000 1.000000 -1.000000 +v 0.750000 2.000000 -0.750000 +v -1.000000 1.000000 -1.250000 +v -0.750000 2.000000 -1.000000 +v -1.250000 1.000000 -1.250000 +v -1.000000 2.000000 -1.000000 +v -1.250000 1.000000 -1.000000 +v -1.000000 2.000000 -0.750000 +v -1.000000 1.000000 -1.000000 +v -0.750000 2.000000 -0.750000 +v -1.000000 1.000000 1.000000 +v -0.750000 2.000000 0.750000 +v -1.250000 1.000000 1.000000 +v -1.000000 2.000000 0.750000 +v -1.000000 1.000000 1.250000 +v -0.750000 2.000000 1.000000 +v -1.250000 1.000000 1.250000 +v -1.000000 2.000000 1.000000 +v 1.250000 1.000000 1.250000 +v 1.000000 2.000000 1.000000 +v 1.250000 1.000000 1.000000 +v 1.000000 2.000000 0.750000 +v 1.000000 1.000000 1.250000 +v 0.750000 2.000000 1.000000 +v 1.000000 1.000000 1.000000 +v 0.750000 2.000000 0.750000 +v -1.250000 1.000000 -0.500000 +v -1.000000 1.000000 -0.500000 +v -1.000000 1.000000 0.500000 +v -1.250000 1.000000 0.500000 +v 1.000000 1.000000 0.500000 +v 1.000000 1.000000 -0.500000 +vt 0.742850 0.869892 +vt 0.794307 0.869891 +vt 0.794307 0.921513 +vt 0.788877 0.109438 +vt 0.737417 0.109438 +vt 0.737417 0.006195 +vt 0.429689 0.019100 +vt 0.352503 0.019100 +vt 0.339639 0.006195 +vt 0.736573 0.433689 +vt 0.679039 0.407878 +vt 0.679039 0.356257 +vt 0.748924 0.549321 +vt 0.748924 0.446078 +vt 0.800384 0.446078 +vt 0.736573 0.471889 +vt 0.736573 0.523511 +vt 0.679039 0.549321 +vt 0.454904 0.803419 +vt 0.454904 0.700176 +vt 0.506364 0.700176 +vt 0.736573 0.214814 +vt 0.736573 0.318057 +vt 0.679039 0.292246 +vt 0.679039 0.677343 +vt 0.730499 0.677343 +vt 0.730499 0.780586 +vt 0.679039 0.587521 +vt 0.736573 0.561711 +vt 0.736573 0.664954 +vt 0.348647 0.805319 +vt 0.348647 0.766602 +vt 0.403607 0.747244 +vt 0.352504 0.096532 +vt 0.429689 0.096532 +vt 0.442553 0.109438 +vt 0.339640 0.109438 +vt 0.442553 0.006195 +vt 0.089013 0.920298 +vt 0.127606 0.920298 +vt 0.127606 0.959015 +vt 0.263570 0.790128 +vt 0.263570 0.751411 +vt 0.318529 0.732053 +vt 0.089013 0.803185 +vt 0.089013 0.764469 +vt 0.143973 0.745111 +vt 0.748924 0.619785 +vt 0.748924 0.581069 +vt 0.803884 0.561711 +vt 0.955744 0.406846 +vt 0.955744 0.458468 +vt 0.930014 0.432657 +vt 0.955744 0.330446 +vt 0.930014 0.304635 +vt 0.955744 0.278824 +vt 0.968095 0.214814 +vt 0.993825 0.214814 +vt 0.993825 0.240624 +vt 0.965057 0.750801 +vt 0.990788 0.750801 +vt 0.990788 0.776612 +vt 0.923940 0.638627 +vt 0.949670 0.638627 +vt 0.949670 0.664437 +vt 0.816234 0.638627 +vt 0.841964 0.638627 +vt 0.841964 0.664438 +vt 0.728746 0.896592 +vt 0.728746 0.909952 +vt 0.712591 0.905610 +vt 0.833299 0.970304 +vt 0.806661 0.970304 +vt 0.813320 0.934418 +vt 0.926128 0.106374 +vt 0.926128 0.079653 +vt 0.951858 0.079653 +vt 0.679039 0.909952 +vt 0.679039 0.896592 +vt 0.695194 0.900934 +vt 0.238533 0.982264 +vt 0.211895 0.982264 +vt 0.218555 0.946378 +vt 0.566971 0.992904 +vt 0.566971 0.966183 +vt 0.592702 0.966183 +vt 0.685698 0.921523 +vt 0.697524 0.909660 +vt 0.701561 0.911998 +vt 0.973435 0.157712 +vt 0.946797 0.157712 +vt 0.953457 0.121827 +vt 0.045164 0.992712 +vt 0.045164 0.965990 +vt 0.070894 0.965990 +vt 0.710552 0.878341 +vt 0.706223 0.894546 +vt 0.701561 0.894546 +vt 0.679039 0.976478 +vt 0.685698 0.940593 +vt 0.699017 0.940593 +vt 0.930014 0.545853 +vt 0.930014 0.519131 +vt 0.955744 0.519131 +vt 0.712591 0.900934 +vt 0.710260 0.896884 +vt 0.923940 0.982693 +vt 0.930599 0.946807 +vt 0.943918 0.946807 +vt 0.454904 0.992904 +vt 0.454904 0.966182 +vt 0.480634 0.966182 +vt 0.722086 0.921523 +vt 0.710260 0.909660 +vt 0.956652 0.506742 +vt 0.930014 0.506742 +vt 0.936673 0.470857 +vt 0.826958 0.173449 +vt 0.826958 0.200170 +vt 0.801228 0.200170 +vt 0.710552 0.928203 +vt 0.697233 0.928203 +vt 0.879430 0.989146 +vt 0.886089 0.953260 +vt 0.899408 0.953260 +vt 0.031905 0.965990 +vt 0.031905 0.992712 +vt 0.006175 0.992712 +vt 0.685698 0.885021 +vt 0.697524 0.896884 +vt 0.630782 0.967319 +vt 0.637442 0.931434 +vt 0.650761 0.931434 +vt 0.069983 0.732694 +vt 0.069983 0.705972 +vt 0.095713 0.705972 +vt 0.154777 0.886554 +vt 0.154777 0.834933 +vt 0.159439 0.834933 +vt 0.769488 0.969788 +vt 0.742850 0.969788 +vt 0.749509 0.933903 +vt 0.302558 0.992981 +vt 0.302558 0.966260 +vt 0.328288 0.966260 +vt 0.415916 0.967749 +vt 0.422575 0.931863 +vt 0.435894 0.931863 +vt 0.695194 0.905610 +vt 0.348647 0.993805 +vt 0.348647 0.967084 +vt 0.374377 0.967084 +vt 0.962928 0.597596 +vt 0.969588 0.561711 +vt 0.982907 0.561711 +vt 0.952707 0.750801 +vt 0.952707 0.777522 +vt 0.926977 0.777522 +vt 0.263570 0.992981 +vt 0.263570 0.966260 +vt 0.289300 0.966260 +vt 0.706223 0.911998 +vt 0.172907 0.982264 +vt 0.179567 0.946378 +vt 0.192885 0.946378 +vt 0.272321 0.459494 +vt 0.172907 0.486216 +vt 0.186226 0.436353 +vt 0.722086 0.885021 +vt 0.697233 0.878341 +vt 0.763990 0.345986 +vt 0.748924 0.341936 +vt 0.766321 0.337260 +vt 0.074644 0.809094 +vt 0.074644 0.860715 +vt 0.069983 0.860715 +vt 0.074644 0.745083 +vt 0.074644 0.796704 +vt 0.069983 0.796704 +vt 0.241540 0.650739 +vt 0.241540 0.702361 +vt 0.236878 0.702361 +vt 0.142427 0.834933 +vt 0.142427 0.886554 +vt 0.137765 0.886554 +vt 0.248290 0.882004 +vt 0.248290 0.933626 +vt 0.243629 0.933626 +vt 0.397399 0.888687 +vt 0.397399 0.837066 +vt 0.402061 0.837066 +vt 0.267110 0.535107 +vt 0.267110 0.586729 +vt 0.262448 0.586729 +vt 0.610621 0.892724 +vt 0.610621 0.944346 +vt 0.605960 0.944346 +vt 0.330880 0.847686 +vt 0.330880 0.796064 +vt 0.335541 0.796064 +vt 0.335541 0.732053 +vt 0.335541 0.783675 +vt 0.330880 0.783675 +vt 0.498554 0.892724 +vt 0.498554 0.944346 +vt 0.493892 0.944346 +vt 0.134826 0.217539 +vt 0.134826 0.191728 +vt 0.160556 0.191728 +vt 0.006175 0.217539 +vt 0.006175 0.191728 +vt 0.031905 0.191728 +vt 0.006175 0.346593 +vt 0.006175 0.320782 +vt 0.031905 0.320782 +vt 0.134826 0.346593 +vt 0.134826 0.320782 +vt 0.160556 0.320782 +vt 0.083366 0.320782 +vt 0.031905 0.217539 +vt 0.031905 0.269160 +vt 0.083366 0.217539 +vt 0.134826 0.269160 +vt 0.492260 0.115700 +vt 0.492260 0.006195 +vt 0.517265 0.012278 +vt 0.080887 0.365065 +vt 0.105892 0.358982 +vt 0.105892 0.468488 +vt 0.666688 0.231290 +vt 0.666688 0.340796 +vt 0.641683 0.334712 +vt 0.604327 0.012278 +vt 0.629333 0.006195 +vt 0.629333 0.115701 +vt 0.492260 0.359269 +vt 0.517265 0.353185 +vt 0.517265 0.462691 +vt 0.591977 0.578281 +vt 0.591977 0.687787 +vt 0.566971 0.681703 +vt 0.554621 0.231290 +vt 0.554621 0.340796 +vt 0.529616 0.334712 +vt 0.068536 0.687499 +vt 0.043531 0.693583 +vt 0.043531 0.584077 +vt 0.554621 0.578281 +vt 0.554621 0.687786 +vt 0.529616 0.681703 +vt 0.641683 0.359269 +vt 0.666688 0.353185 +vt 0.666688 0.462691 +vt 0.629333 0.578281 +vt 0.629333 0.687787 +vt 0.604327 0.681703 +vt 0.442553 0.450345 +vt 0.417548 0.456428 +vt 0.417548 0.346922 +vt 0.454904 0.359269 +vt 0.479909 0.353185 +vt 0.479909 0.462691 +vt 0.454904 0.115700 +vt 0.454904 0.006195 +vt 0.479909 0.012278 +vt 0.591977 0.231290 +vt 0.591977 0.340796 +vt 0.566971 0.334712 +vt 0.006175 0.365065 +vt 0.031181 0.358982 +vt 0.031181 0.468488 +vt 0.109096 0.224455 +vt 0.127932 0.243349 +vt 0.057636 0.224455 +vt 0.038800 0.243349 +vt 0.038800 0.294971 +vt 0.057636 0.313866 +vt 0.109096 0.313866 +vt 0.127932 0.294971 +vt 0.911589 0.908608 +vt 0.911589 0.940871 +vt 0.879430 0.940871 +vt 0.991695 0.709606 +vt 0.965965 0.709606 +vt 0.965965 0.677343 +vt 0.962928 0.882281 +vt 0.988658 0.882281 +vt 0.988658 0.914544 +vt 0.962928 0.642249 +vt 0.962928 0.609985 +vt 0.988658 0.609985 +vt 0.988658 0.869891 +vt 0.962928 0.869891 +vt 0.962928 0.837628 +vt 0.198799 0.753983 +vt 0.198799 0.650739 +vt 0.224528 0.650740 +vt 0.172907 0.766735 +vt 0.210210 0.766372 +vt 0.210210 0.869615 +vt 0.403607 0.631612 +vt 0.403607 0.734855 +vt 0.377878 0.734855 +vt 0.339635 0.616421 +vt 0.339635 0.719664 +vt 0.263570 0.719301 +vt 0.768580 0.677343 +vt 0.768580 0.780586 +vt 0.742850 0.780586 +vt 0.442553 0.520439 +vt 0.442553 0.623682 +vt 0.416823 0.623682 +vt 0.172907 0.727043 +vt 0.352150 0.734855 +vt 0.351986 0.658551 +vt 0.794310 0.677343 +vt 0.794310 0.780586 +vt 0.275828 0.191728 +vt 0.275828 0.294971 +vt 0.240789 0.259481 +vt 0.208629 0.259481 +vt 0.172907 0.294971 +vt 0.172907 0.191728 +vt 0.208629 0.227218 +vt 0.348647 0.922431 +vt 0.380807 0.922432 +vt 0.380807 0.954695 +vt 0.522461 0.963697 +vt 0.522461 0.931434 +vt 0.554621 0.931434 +vt 0.972527 0.170102 +vt 0.972527 0.202365 +vt 0.946797 0.202365 +vt 0.962928 0.792975 +vt 0.988658 0.792975 +vt 0.988658 0.825239 +vt 0.965116 0.006195 +vt 0.990846 0.006195 +vt 0.990846 0.038458 +vt 0.965116 0.050847 +vt 0.990846 0.050847 +vt 0.990846 0.083111 +vt 0.006175 0.809215 +vt 0.006175 0.705972 +vt 0.031904 0.705973 +vt 0.391099 0.191728 +vt 0.391099 0.294971 +vt 0.288178 0.294971 +vt 0.592700 0.700176 +vt 0.592700 0.803419 +vt 0.566971 0.803419 +vt 0.875697 0.109438 +vt 0.839309 0.109438 +vt 0.839309 0.006195 +vt 0.748924 0.318057 +vt 0.748924 0.214814 +vt 0.774654 0.214814 +vt 0.143973 0.410603 +vt 0.143973 0.513847 +vt 0.118243 0.513847 +vt 0.172907 0.535107 +vt 0.250098 0.535107 +vt 0.250098 0.638350 +vt 0.618428 0.725986 +vt 0.057632 0.705973 +vt 0.057632 0.783405 +vt 0.800384 0.214814 +vt 0.800384 0.318057 +vt 0.109096 0.006230 +vt 0.083366 0.035052 +vt 0.057636 0.006230 +vt 0.006175 0.179339 +vt 0.031905 0.092767 +vt 0.038800 0.121624 +vt 0.160557 0.179339 +vt 0.127932 0.121624 +vt 0.134826 0.092767 +vt 0.083366 0.150481 +vt 0.250098 0.150481 +vt 0.275828 0.179304 +vt 0.224367 0.179304 +vt 0.198637 0.092767 +vt 0.172907 0.179339 +vt 0.172907 0.006195 +vt 0.294664 0.063909 +vt 0.327288 0.006195 +vt 0.301558 0.092767 +vt 0.250098 0.035052 +vt 0.725066 0.029280 +vt 0.725066 0.202424 +vt 0.679039 0.179339 +vt 0.442553 0.842558 +vt 0.416823 0.803842 +vt 0.416823 0.726409 +vt 0.398013 0.596137 +vt 0.351986 0.619222 +vt 0.351986 0.446078 +vt 0.057632 0.821605 +vt 0.057632 0.886132 +vt 0.006175 0.886132 +vt 0.926977 0.686790 +vt 0.953615 0.677343 +vt 0.953615 0.728964 +vt 0.950578 0.921513 +vt 0.923940 0.934418 +vt 0.923940 0.882797 +vt 0.442553 0.906568 +vt 0.415916 0.919474 +vt 0.415916 0.867852 +vt 0.926128 0.015642 +vt 0.952766 0.006195 +vt 0.952766 0.057816 +vt 0.045164 0.901979 +vt 0.071801 0.898521 +vt 0.071802 0.950143 +vt 0.290207 0.902249 +vt 0.290207 0.953871 +vt 0.263570 0.950413 +vt 0.593609 0.902172 +vt 0.593609 0.953793 +vt 0.566971 0.944346 +vt 0.923940 0.613332 +vt 0.923940 0.561711 +vt 0.950578 0.574616 +vt 0.923940 0.844597 +vt 0.923940 0.792975 +vt 0.950578 0.805881 +vt 0.481542 0.902172 +vt 0.481542 0.953793 +vt 0.454904 0.944346 +vt 0.329196 0.902249 +vt 0.329196 0.953871 +vt 0.302558 0.950413 +vt 0.006175 0.901980 +vt 0.032813 0.898521 +vt 0.032813 0.950143 +vt 0.737417 0.199255 +vt 0.737417 0.121827 +vt 0.788877 0.121827 +vt 0.888061 0.121827 +vt 0.934447 0.121827 +vt 0.934447 0.173449 +vt 0.838465 0.536932 +vt 0.812735 0.498216 +vt 0.812735 0.420784 +vt 0.172907 0.882368 +vt 0.219293 0.882368 +vt 0.219293 0.933989 +vt 0.630782 0.815809 +vt 0.656513 0.815808 +vt 0.656513 0.919045 +vt 0.913777 0.109438 +vt 0.888047 0.109438 +vt 0.888047 0.006195 +vt 0.891933 0.214814 +vt 0.917663 0.214814 +vt 0.917663 0.318050 +vt 0.885859 0.792975 +vt 0.911589 0.792975 +vt 0.911589 0.896218 +vt 0.391099 0.410603 +vt 0.288178 0.410603 +vt 0.288178 0.307360 +vt 0.879583 0.549321 +vt 0.850815 0.523511 +vt 0.850815 0.471889 +vt 0.742850 0.857502 +vt 0.742850 0.792975 +vt 0.794310 0.792975 +vt 0.885859 0.677343 +vt 0.914626 0.703154 +vt 0.914626 0.754775 +vt 0.554621 0.803419 +vt 0.525854 0.777608 +vt 0.525854 0.725987 +vt 0.873509 0.780586 +vt 0.844741 0.754775 +vt 0.844741 0.703154 +vt 0.339635 0.487519 +vt 0.339635 0.539141 +vt 0.288178 0.539141 +vt 0.454904 0.880335 +vt 0.454904 0.815808 +vt 0.506364 0.815808 +vt 0.339635 0.422992 +vt 0.288178 0.487520 +vt 0.263570 0.886402 +vt 0.263570 0.821875 +vt 0.315027 0.821875 +vt 0.385049 0.910042 +vt 0.348647 0.873554 +vt 0.385049 0.837066 +vt 0.875697 0.158329 +vt 0.875710 0.194803 +vt 0.839309 0.158315 +vt 0.891933 0.523511 +vt 0.891933 0.446078 +vt 0.917663 0.471889 +vt 0.850815 0.318057 +vt 0.850815 0.214814 +vt 0.879583 0.240624 +vt 0.566971 0.880335 +vt 0.566971 0.815808 +vt 0.618432 0.815808 +vt 0.816234 0.626238 +vt 0.816234 0.561711 +vt 0.867694 0.561711 +vt 0.339635 0.603668 +vt 0.288178 0.603668 +vt 0.391099 0.173448 +vt 0.339639 0.173409 +vt 0.365369 0.147638 +vt 0.806661 0.870408 +vt 0.832391 0.844597 +vt 0.832391 0.922029 +vt 0.089013 0.871421 +vt 0.125415 0.834933 +vt 0.125415 0.907909 +vt 0.172907 0.410603 +vt 0.172907 0.307360 +vt 0.275828 0.307360 +vt 0.850815 0.433689 +vt 0.850815 0.330446 +vt 0.879583 0.356257 +vt 0.554621 0.919045 +vt 0.528891 0.919045 +vt 0.528891 0.815808 +vt 0.891933 0.330446 +vt 0.917663 0.330446 +vt 0.917663 0.433682 +vt 0.248290 0.869615 +vt 0.222560 0.869615 +vt 0.222560 0.766372 +vt 0.885859 0.561711 +vt 0.911589 0.561711 +vt 0.911589 0.664954 +vt 0.873509 0.792975 +vt 0.873509 0.896218 +vt 0.844741 0.870408 +vt 0.659546 0.700176 +vt 0.659546 0.803419 +vt 0.630779 0.777608 +vt 0.975446 0.350796 +vt 0.975446 0.386931 +vt 0.968095 0.386931 +vt 0.159440 0.950049 +vt 0.159440 0.986184 +vt 0.152088 0.986184 +vt 0.976354 0.470857 +vt 0.976354 0.506992 +vt 0.969002 0.506992 +vt 0.975446 0.399320 +vt 0.975446 0.435455 +vt 0.968095 0.435455 +vt 0.718027 0.940593 +vt 0.725379 0.940593 +vt 0.725379 0.977094 +vt 0.968095 0.301905 +vt 0.975446 0.301905 +vt 0.975446 0.338407 +vt 0.968095 0.253014 +vt 0.975446 0.253014 +vt 0.975446 0.289516 +vt 0.781838 0.933903 +vt 0.789190 0.933903 +vt 0.789190 0.970405 +vt 0.393157 0.922431 +vt 0.400508 0.922431 +vt 0.400508 0.961148 +vt 0.159439 0.937660 +vt 0.152088 0.937660 +vt 0.152088 0.898943 +vt 0.867079 0.947324 +vt 0.859728 0.947324 +vt 0.859728 0.908608 +vt 0.236878 0.714750 +vt 0.244229 0.714750 +vt 0.244229 0.753466 +vt 0.604327 0.231290 +vt 0.629333 0.225206 +vt 0.629333 0.334712 +vt 0.604327 0.121784 +vt 0.666688 0.012278 +vt 0.666688 0.121784 +vt 0.641683 0.115701 +vt 0.641683 0.225206 +vt 0.080887 0.584077 +vt 0.105892 0.577994 +vt 0.105892 0.687499 +vt 0.080887 0.474571 +vt 0.492260 0.334712 +vt 0.492260 0.225206 +vt 0.517265 0.231290 +vt 0.517265 0.121784 +vt 0.068536 0.468488 +vt 0.043531 0.474571 +vt 0.043531 0.365065 +vt 0.068536 0.577994 +vt 0.554621 0.012278 +vt 0.554621 0.121784 +vt 0.529616 0.115701 +vt 0.529616 0.225206 +vt 0.591977 0.359269 +vt 0.591977 0.468775 +vt 0.566971 0.462691 +vt 0.566971 0.572197 +vt 0.492260 0.578281 +vt 0.517265 0.572197 +vt 0.517265 0.681703 +vt 0.492260 0.468775 +vt 0.006175 0.584077 +vt 0.031181 0.577994 +vt 0.031181 0.687499 +vt 0.006175 0.474571 +vt 0.591977 0.012278 +vt 0.591977 0.121784 +vt 0.566971 0.115701 +vt 0.566971 0.225206 +vt 0.454904 0.334712 +vt 0.454904 0.225206 +vt 0.479909 0.231290 +vt 0.479909 0.121784 +vt 0.454904 0.578281 +vt 0.479909 0.572197 +vt 0.479909 0.681703 +vt 0.454904 0.468775 +vt 0.442553 0.231333 +vt 0.417548 0.237417 +vt 0.417548 0.127911 +vt 0.442553 0.340839 +vt 0.629333 0.359269 +vt 0.629333 0.468775 +vt 0.604327 0.462691 +vt 0.604327 0.572197 +vt 0.641683 0.578281 +vt 0.666688 0.572197 +vt 0.666688 0.681703 +vt 0.641683 0.468775 +vt 0.554621 0.359269 +vt 0.554621 0.468775 +vt 0.529616 0.462691 +vt 0.529616 0.572197 +vt 0.442553 0.675304 +vt 0.416823 0.675304 +vt 0.416823 0.520439 +vt 0.416823 0.468818 +vt 0.118243 0.410603 +vt 0.118243 0.358982 +vt 0.143973 0.565468 +vt 0.118243 0.565468 +vt 0.826958 0.006195 +vt 0.826958 0.161059 +vt 0.801228 0.161059 +vt 0.838465 0.214814 +vt 0.838465 0.369678 +vt 0.812735 0.369678 +vt 0.143973 0.577857 +vt 0.143973 0.732722 +vt 0.118243 0.732722 +vt 0.806661 0.832208 +vt 0.806661 0.677343 +vt 0.832391 0.677343 +vt 0.930014 0.342835 +vt 0.955744 0.342835 +vt 0.955744 0.394457 +vt 0.955744 0.266435 +vt 0.930014 0.266435 +vt 0.930014 0.214814 +vt 0.679039 0.865952 +vt 0.679039 0.792975 +vt 0.730499 0.829477 +vt 0.800384 0.397187 +vt 0.748924 0.433689 +vt 0.748924 0.360713 +vt 0.742850 0.921513 +vt 0.788877 0.006195 +vt 0.736573 0.330446 +vt 0.800384 0.549321 +vt 0.679039 0.446078 +vt 0.506364 0.803419 +vt 0.679039 0.240624 +vt 0.679039 0.780586 +vt 0.679039 0.639143 +vt 0.403607 0.824677 +vt 0.089013 0.959014 +vt 0.318529 0.809486 +vt 0.143973 0.822544 +vt 0.803884 0.639143 +vt 0.968095 0.240624 +vt 0.965057 0.776612 +vt 0.923940 0.664437 +vt 0.816234 0.664438 +vt 0.826639 0.934418 +vt 0.951858 0.106374 +vt 0.231874 0.946378 +vt 0.592702 0.992904 +vt 0.966776 0.121827 +vt 0.070894 0.992712 +vt 0.705677 0.976478 +vt 0.955744 0.545853 +vt 0.950578 0.982693 +vt 0.480634 0.992904 +vt 0.949992 0.470857 +vt 0.801228 0.173449 +vt 0.906067 0.989146 +vt 0.006175 0.965990 +vt 0.657420 0.967319 +vt 0.095713 0.732694 +vt 0.159439 0.886554 +vt 0.762828 0.933903 +vt 0.328288 0.992981 +vt 0.442553 0.967749 +vt 0.374377 0.993805 +vt 0.989566 0.597596 +vt 0.926977 0.750801 +vt 0.289300 0.992981 +vt 0.199545 0.982264 +vt 0.209295 0.422992 +vt 0.235933 0.422992 +vt 0.259002 0.436353 +vt 0.272321 0.486216 +vt 0.259002 0.509357 +vt 0.235933 0.522718 +vt 0.209295 0.522718 +vt 0.186226 0.509357 +vt 0.172907 0.459495 +vt 0.759953 0.330872 +vt 0.763990 0.333210 +vt 0.766321 0.341936 +vt 0.759953 0.348324 +vt 0.755292 0.348324 +vt 0.751255 0.345986 +vt 0.748924 0.337260 +vt 0.751255 0.333210 +vt 0.755292 0.330872 +vt 0.069983 0.809094 +vt 0.069983 0.745083 +vt 0.236878 0.650739 +vt 0.137765 0.834933 +vt 0.243629 0.882004 +vt 0.402061 0.888687 +vt 0.262448 0.535107 +vt 0.605960 0.892724 +vt 0.335541 0.847686 +vt 0.330880 0.732053 +vt 0.493892 0.892724 +vt 0.160556 0.217539 +vt 0.031905 0.346593 +vt 0.160556 0.346593 +vt 0.879430 0.908608 +vt 0.991695 0.677343 +vt 0.962928 0.914544 +vt 0.988658 0.642249 +vt 0.988658 0.837628 +vt 0.224528 0.753983 +vt 0.172907 0.869978 +vt 0.377878 0.631612 +vt 0.263570 0.616058 +vt 0.742850 0.677343 +vt 0.173071 0.650739 +vt 0.240789 0.227218 +vt 0.348647 0.954695 +vt 0.554621 0.963697 +vt 0.946797 0.170102 +vt 0.962928 0.825239 +vt 0.965116 0.038458 +vt 0.965116 0.083111 +vt 0.031904 0.809216 +vt 0.288178 0.191728 +vt 0.566971 0.700176 +vt 0.875697 0.006195 +vt 0.774654 0.318057 +vt 0.172907 0.638350 +vt 0.618428 0.803419 +vt 0.038800 0.063909 +vt 0.006175 0.006195 +vt 0.057636 0.042784 +vt 0.160556 0.006195 +vt 0.109096 0.042784 +vt 0.127932 0.063909 +vt 0.057636 0.142749 +vt 0.109096 0.142749 +vt 0.205532 0.121624 +vt 0.224367 0.142749 +vt 0.275828 0.142749 +vt 0.294664 0.121624 +vt 0.327288 0.179339 +vt 0.224367 0.042784 +vt 0.205532 0.063909 +vt 0.275828 0.042784 +vt 0.679039 0.006195 +vt 0.442553 0.687693 +vt 0.398013 0.422992 +vt 0.006175 0.821605 +vt 0.926977 0.738412 +vt 0.950578 0.869891 +vt 0.442553 0.854947 +vt 0.926128 0.067264 +vt 0.045164 0.953601 +vt 0.263570 0.898791 +vt 0.566971 0.892724 +vt 0.950578 0.626238 +vt 0.950578 0.857502 +vt 0.454904 0.892724 +vt 0.302558 0.898791 +vt 0.006175 0.953601 +vt 0.788877 0.199254 +vt 0.888061 0.173449 +vt 0.838465 0.382068 +vt 0.172907 0.933989 +vt 0.630782 0.919045 +vt 0.913777 0.006195 +vt 0.891933 0.318050 +vt 0.885859 0.896218 +vt 0.391099 0.307360 +vt 0.879583 0.446078 +vt 0.794310 0.857502 +vt 0.885859 0.780586 +vt 0.554621 0.700176 +vt 0.873509 0.677343 +vt 0.506364 0.880335 +vt 0.288178 0.422993 +vt 0.315027 0.886402 +vt 0.875710 0.121827 +vt 0.917663 0.523511 +vt 0.879583 0.292246 +vt 0.618432 0.880335 +vt 0.867694 0.626238 +vt 0.391099 0.121827 +vt 0.806661 0.922029 +vt 0.275828 0.410603 +vt 0.879583 0.407878 +vt 0.554621 0.815809 +vt 0.891933 0.433682 +vt 0.248290 0.766372 +vt 0.885859 0.664954 +vt 0.844741 0.818786 +vt 0.630779 0.725987 +vt 0.968095 0.350796 +vt 0.152088 0.950049 +vt 0.969002 0.470857 +vt 0.968095 0.399320 +vt 0.718027 0.977094 +vt 0.968095 0.338407 +vt 0.968095 0.289516 +vt 0.781838 0.970405 +vt 0.393157 0.961148 +vt 0.159439 0.898943 +vt 0.867079 0.908608 +vt 0.236878 0.753466 +vt 0.604327 0.340796 +vt 0.641683 0.006195 +vt 0.080887 0.693583 +vt 0.517265 0.340796 +vt 0.068536 0.358982 +vt 0.529616 0.006195 +vt 0.566971 0.353185 +vt 0.492260 0.687786 +vt 0.006175 0.693583 +vt 0.566971 0.006195 +vt 0.479909 0.340796 +vt 0.454904 0.687787 +vt 0.442553 0.121827 +vt 0.604327 0.353185 +vt 0.641683 0.687787 +vt 0.529616 0.353185 +vt 0.442553 0.468818 +vt 0.143973 0.358982 +vt 0.801228 0.006195 +vt 0.812735 0.214814 +vt 0.118243 0.577857 +vt 0.832391 0.832208 +vt 0.930014 0.394457 +vt 0.955744 0.214814 +vt 0.730499 0.792975 +vt 0.730499 0.865952 +vt 0.800384 0.360713 +vt 0.800384 0.433689 +vn 1.000000 0.000000 0.000000 +vn 0.000000 0.000000 -1.000000 +vn -1.000000 0.000000 0.000000 +vn 0.447200 0.000000 0.894400 +vn 0.000000 -1.000000 0.000000 +vn 0.447200 0.894400 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.447200 -0.894400 0.000000 +vn 0.000000 0.000000 1.000000 +vn 0.447200 0.000000 -0.894400 +vn -0.351100 0.000000 -0.936300 +vn -0.351100 0.000000 0.936300 +vn -0.351100 0.936300 0.000000 +vn -0.351100 -0.936300 0.000000 +vn 0.508600 0.694700 0.508600 +vn 0.258800 0.000000 -0.965900 +vn -0.186200 0.694700 0.694700 +vn 0.707100 0.000000 -0.707100 +vn -0.694700 0.694700 0.186200 +vn 0.965900 0.000000 -0.258800 +vn 0.186200 0.694700 -0.694700 +vn 0.965900 0.000000 0.258800 +vn -0.508600 0.694700 -0.508600 +vn 0.707100 0.000000 0.707100 +vn -0.186200 0.694700 -0.694700 +vn 0.258800 0.000000 0.965900 +vn 0.508600 0.694700 -0.508600 +vn -0.258800 0.000000 0.965900 +vn 0.694700 0.694700 0.186200 +vn -0.707100 0.000000 0.707100 +vn 0.186200 0.694700 0.694700 +vn -0.965900 0.000000 0.258800 +vn -0.694700 0.694700 -0.186200 +vn -0.965900 0.000000 -0.258800 +vn -0.508600 0.694700 0.508600 +vn -0.258800 0.000000 -0.965900 +vn -0.707100 0.000000 -0.707100 +vn 0.694700 0.694700 -0.186200 +vn 0.000000 0.242500 -0.970100 +vn 0.970100 0.242500 0.000000 +vn -0.970100 -0.242500 0.000000 +vn 0.000000 -0.242500 0.970100 +vn -0.970100 0.242500 0.000000 +vn 0.970100 -0.242500 0.000000 +vn 0.000000 0.242500 0.970100 +vn 0.000000 -0.242500 -0.970100 +vn -0.013300 0.000000 0.999900 +vn -0.999900 0.000000 -0.013300 +vn 0.999900 0.000000 0.013300 +vn 0.000000 0.694000 -0.719900 +vn 0.000000 -0.002100 -1.000000 +vn -0.999900 0.000000 -0.014000 +vn 1.000000 -0.004800 0.000000 +vn 0.006200 0.000000 1.000000 +vn -0.013300 0.019200 0.999700 +vn 0.005900 0.000000 1.000000 +vn 0.000000 0.006000 1.000000 +vn 0.013300 0.000000 -0.999900 +vn 0.000000 0.707100 0.707100 +vn 0.447800 -0.894200 0.000000 +vn -0.447800 0.894200 0.000000 +vn -0.447200 0.894400 0.000000 +vn -0.832100 0.000000 0.554700 +vn -0.832100 0.000000 -0.554700 +vn 0.000000 0.894400 -0.447200 +vn 0.000000 0.894400 0.447200 +vn 0.000000 -0.894400 0.447200 +vn 0.000000 -0.894400 -0.447200 +vn -0.447200 -0.894400 0.000000 +vn 0.707100 0.707100 0.000000 +vn 0.707400 -0.000300 -0.706800 +vn 0.707400 -0.000300 0.706800 +vn -1.000000 0.004800 0.000000 +vn 0.999900 0.000000 0.014000 +vn 0.000000 -0.006000 1.000000 +vn -0.013300 -0.019200 0.999700 +vn 0.447600 -0.894200 -0.000300 +vn 0.447600 -0.894200 0.000300 +vn 0.447600 -0.894200 -0.000100 +vn 0.447600 -0.894200 0.000100 +vn -0.447600 0.894200 -0.000300 +vn -0.447600 0.894200 -0.000100 +vn -0.447600 0.894200 0.000100 +vn -0.447600 0.894200 0.000300 +vn 0.707600 0.000000 -0.706600 +vn 0.707600 0.000000 0.706600 +s off +f 1/1/1 3/2/1 4/3/1 +f 10/4/2 7/5/2 8/6/2 +f 16/7/3 14/8/3 7/9/3 +f 12/10/4 1/11/4 2/12/4 +f 5/13/5 7/14/5 10/15/5 +f 2/16/6 4/17/6 9/18/6 +f 11/19/7 9/20/7 8/21/7 +f 12/22/8 10/23/8 3/24/8 +f 5/25/9 12/26/9 11/27/9 +f 3/28/10 10/29/10 9/30/10 +f 19/31/11 20/32/11 16/33/11 +f 13/34/3 15/35/3 6/36/3 +f 14/8/3 13/34/3 8/37/3 +f 15/35/3 16/7/3 5/38/3 +f 18/39/3 20/40/3 19/41/3 +f 18/42/12 17/43/12 13/44/12 +f 20/45/13 18/46/13 14/47/13 +f 17/48/14 19/49/14 15/50/14 +f 22/51/2 21/52/2 23/53/2 +f 25/54/9 26/55/9 24/56/9 +f 38/57/5 30/58/5 33/59/5 +f 39/60/5 37/61/5 28/62/5 +f 31/63/5 40/64/5 36/65/5 +f 29/66/5 34/67/5 41/68/5 +f 73/69/7 72/70/7 86/71/7 +f 56/72/15 54/73/15 71/74/15 +f 46/75/16 48/76/16 47/77/16 +f 43/78/7 78/79/7 80/80/7 +f 60/81/17 58/82/17 73/83/17 +f 48/84/18 50/85/18 49/86/18 +f 44/87/7 90/88/7 89/89/7 +f 64/90/19 62/91/19 75/92/19 +f 50/93/20 52/94/20 51/95/20 +f 75/96/7 83/97/7 82/98/7 +f 46/99/21 43/100/21 44/101/21 +f 52/102/22 54/103/22 53/104/22 +f 73/69/7 85/105/7 84/106/7 +f 66/107/23 77/108/23 78/109/23 +f 54/110/24 56/111/24 55/112/24 +f 71/113/7 87/114/7 86/71/7 +f 46/115/25 68/116/25 78/117/25 +f 56/118/26 58/119/26 57/120/26 +f 70/121/7 69/122/7 89/89/7 +f 48/123/27 44/124/27 69/125/27 +f 58/126/28 60/127/28 59/128/28 +f 77/129/7 81/130/7 80/80/7 +f 52/131/29 70/132/29 71/133/29 +f 60/134/30 62/135/30 61/136/30 +f 85/137/28 97/138/28 96/139/28 +f 58/140/31 56/141/31 72/142/31 +f 62/143/32 64/144/32 63/145/32 +f 64/146/33 76/147/33 77/148/33 +f 43/78/7 79/149/7 90/88/7 +f 64/150/34 66/151/34 65/152/34 +f 60/153/35 74/154/35 75/155/35 +f 68/156/36 46/157/36 45/158/36 +f 66/159/37 68/160/37 67/161/37 +f 71/113/7 70/121/7 88/162/7 +f 50/163/38 69/164/38 70/165/38 +f 51/166/5 63/167/5 67/168/5 +f 74/169/7 84/106/7 83/97/7 +f 76/170/7 82/98/7 81/130/7 +f 93/171/7 97/172/7 91/173/7 +f 82/174/34 94/175/34 93/176/34 +f 89/177/20 101/178/20 100/179/20 +f 86/180/26 98/181/26 97/182/26 +f 83/183/32 95/184/32 94/185/32 +f 90/186/18 102/187/18 101/188/18 +f 80/189/36 92/190/36 91/191/36 +f 87/192/24 99/193/24 98/194/24 +f 84/195/30 96/196/30 95/197/30 +f 79/198/16 91/199/16 102/200/16 +f 81/201/37 93/202/37 92/203/37 +f 88/204/22 100/205/22 99/206/22 +f 106/207/7 104/208/7 103/209/7 +f 108/210/7 107/211/7 109/212/7 +f 111/213/7 113/214/7 114/215/7 +f 117/216/7 118/217/7 116/218/7 +f 57/219/7 118/217/7 117/216/7 +f 110/220/7 51/221/7 108/210/7 +f 109/212/7 104/208/7 45/222/7 +f 116/218/7 118/217/7 63/223/7 +f 262/224/39 109/225/39 107/226/39 +f 107/227/40 108/228/40 264/229/40 +f 266/230/41 110/231/41 109/232/41 +f 108/233/42 110/234/42 266/235/42 +f 103/236/39 104/237/39 268/238/39 +f 272/239/43 105/240/43 103/241/43 +f 274/242/42 106/243/42 105/244/42 +f 41/245/44 34/246/44 267/247/44 +f 286/248/40 113/249/40 111/250/40 +f 111/251/45 112/252/45 288/253/45 +f 285/254/46 37/255/46 39/256/46 +f 112/257/41 114/258/41 290/259/41 +f 40/260/46 31/261/46 277/262/46 +f 279/263/44 36/264/44 40/265/44 +f 280/266/45 117/267/45 115/268/45 +f 115/269/43 116/270/43 278/271/43 +f 106/207/7 67/272/7 45/222/7 +f 63/223/7 65/273/7 106/207/7 +f 106/207/7 65/273/7 67/272/7 +f 110/220/7 45/222/7 47/274/7 +f 110/220/7 47/274/7 49/275/7 +f 49/275/7 51/221/7 110/220/7 +f 114/215/7 51/221/7 53/276/7 +f 114/215/7 53/276/7 55/277/7 +f 55/277/7 57/219/7 114/215/7 +f 57/219/7 59/278/7 118/217/7 +f 118/217/7 59/278/7 61/279/7 +f 61/279/7 63/223/7 118/217/7 +f 121/280/47 119/281/47 120/282/47 +f 120/283/48 124/284/48 126/285/48 +f 121/286/49 125/287/49 123/288/49 +f 121/289/5 122/290/5 126/291/5 +f 119/292/7 123/293/7 124/294/7 +f 130/295/3 129/296/3 127/297/3 +f 134/298/50 137/299/50 135/300/50 +f 132/301/1 131/302/1 133/303/1 +f 135/304/51 137/305/51 138/306/51 +f 129/307/5 133/308/5 131/309/5 +f 134/310/7 130/311/7 128/312/7 +f 129/296/52 130/295/52 135/313/52 +f 133/303/53 138/314/53 137/315/53 +f 129/307/5 136/316/5 138/317/5 +f 131/318/54 132/319/54 123/320/54 +f 124/321/55 123/320/55 132/319/55 +f 128/322/56 127/323/56 126/324/56 +f 126/324/57 127/323/57 131/318/57 +f 140/325/58 139/326/58 141/327/58 +f 145/328/47 143/329/47 144/330/47 +f 142/331/5 141/332/5 145/333/5 +f 140/334/7 144/335/7 143/336/7 +f 142/337/48 146/338/48 144/339/48 +f 139/340/49 143/341/49 145/342/49 +f 150/343/3 149/344/3 147/345/3 +f 154/346/2 153/347/2 149/348/2 +f 152/349/1 151/350/1 153/351/1 +f 148/352/59 156/353/59 157/354/59 +f 149/355/5 153/356/5 151/357/5 +f 154/358/7 150/359/7 148/360/7 +f 156/361/9 155/362/9 158/363/9 +f 151/350/1 152/349/1 157/364/1 +f 147/345/3 155/365/3 156/366/3 +f 151/357/5 158/367/5 155/368/5 +f 207/369/60 167/370/60 208/371/60 +f 161/372/8 164/373/8 163/374/8 +f 159/375/8 171/376/8 170/377/8 +f 173/378/8 159/375/8 161/372/8 +f 183/379/61 211/380/61 212/381/61 +f 180/382/62 178/383/62 177/384/62 +f 187/385/62 175/386/62 186/387/62 +f 189/388/62 177/384/62 175/386/62 +f 177/389/2 178/390/2 162/391/2 +f 177/392/7 193/393/7 194/394/7 +f 160/395/9 176/396/9 175/397/9 +f 211/398/3 215/399/3 216/400/3 +f 168/401/37 169/402/37 185/403/37 +f 186/404/36 185/405/36 169/406/36 +f 170/407/16 171/408/16 187/409/16 +f 171/410/18 172/411/18 188/412/18 +f 172/413/20 173/414/20 189/415/20 +f 174/416/22 190/417/22 189/418/22 +f 163/419/24 179/420/24 190/421/24 +f 164/422/26 180/423/26 179/424/26 +f 165/425/28 181/426/28 180/427/28 +f 166/428/30 182/429/30 181/430/30 +f 167/431/32 183/432/32 182/433/32 +f 167/434/34 168/435/34 184/436/34 +f 194/437/3 193/438/3 191/439/3 +f 175/440/63 194/441/63 192/442/63 +f 159/443/5 192/444/5 191/445/5 +f 161/446/64 191/447/64 193/448/64 +f 198/449/3 197/450/3 195/451/3 +f 202/452/2 201/453/2 197/454/2 +f 200/455/1 199/456/1 201/457/1 +f 196/458/9 195/459/9 199/460/9 +f 197/461/5 201/462/5 199/463/5 +f 198/464/65 204/465/65 205/466/65 +f 206/467/9 210/468/9 207/469/9 +f 202/470/6 205/471/6 206/472/6 +f 196/473/62 203/474/62 204/475/62 +f 200/476/66 206/477/66 203/478/66 +f 209/479/1 213/480/1 214/481/1 +f 204/482/2 208/483/2 209/484/2 +f 205/485/1 209/479/1 210/486/1 +f 203/487/3 207/488/3 208/489/3 +f 214/490/7 211/491/7 176/492/7 +f 295/493/5 160/494/5 207/495/5 +f 285/496/7 210/497/7 295/498/7 +f 226/499/67 224/500/67 215/501/67 +f 214/502/9 218/503/9 215/504/9 +f 212/505/2 216/506/2 217/507/2 +f 213/480/1 217/508/1 218/509/1 +f 208/510/5 162/511/5 296/512/5 +f 296/513/7 209/514/7 263/515/7 +f 212/516/7 213/517/7 178/518/7 +f 221/519/7 222/520/7 220/521/7 +f 225/522/8 226/523/8 218/524/8 +f 221/525/1 226/526/1 225/527/1 +f 220/528/3 223/529/3 224/530/3 +f 219/531/9 224/532/9 226/533/9 +f 222/534/2 225/535/2 223/536/2 +f 223/537/68 225/538/68 217/539/68 +f 224/540/69 223/541/69 216/542/69 +f 234/543/7 242/544/7 236/545/7 +f 232/546/7 240/547/7 241/548/7 +f 230/549/7 238/550/7 239/551/7 +f 227/552/7 235/553/7 237/554/7 +f 245/555/70 243/556/70 227/557/70 +f 247/558/70 246/559/70 230/560/70 +f 249/561/70 248/562/70 232/563/70 +f 244/564/70 250/565/70 234/566/70 +f 253/567/1 251/568/1 243/569/1 +f 255/570/1 254/571/1 246/572/1 +f 257/573/1 256/574/1 248/575/1 +f 252/576/1 258/577/1 250/578/1 +f 263/579/42 265/580/42 42/581/42 +f 264/582/42 266/235/42 265/580/42 +f 42/583/41 265/584/41 261/585/41 +f 265/584/41 266/230/41 262/586/41 +f 259/587/40 263/588/40 33/589/40 +f 260/590/40 264/229/40 263/588/40 +f 38/591/39 261/592/39 259/593/39 +f 261/592/39 262/224/39 260/594/39 +f 274/595/44 268/596/44 104/597/44 +f 273/598/44 267/247/44 268/596/44 +f 41/599/42 273/600/42 271/601/42 +f 273/600/42 274/242/42 272/602/42 +f 35/603/43 271/604/43 269/605/43 +f 271/604/43 272/239/43 270/606/43 +f 269/607/39 267/608/39 34/609/39 +f 270/610/39 268/238/39 267/608/39 +f 281/611/43 277/612/43 31/613/43 +f 282/614/43 278/271/43 277/612/43 +f 36/615/45 279/616/45 281/617/45 +f 279/616/45 280/266/45 282/618/45 +f 117/619/44 280/620/44 276/621/44 +f 280/620/44 279/263/44 275/622/44 +f 276/623/46 278/624/46 116/625/46 +f 275/626/46 277/262/46 278/624/46 +f 287/627/41 289/628/41 39/629/41 +f 288/630/41 290/259/41 289/628/41 +f 113/631/46 286/632/46 290/633/46 +f 286/632/46 285/254/46 289/634/46 +f 283/635/45 287/636/45 32/637/45 +f 284/638/45 288/253/45 287/636/45 +f 37/639/40 285/640/40 283/641/40 +f 285/640/40 286/248/40 284/642/40 +f 275/643/7 279/644/7 128/312/7 +f 134/310/7 132/645/7 287/646/7 +f 154/358/7 152/647/7 265/648/7 +f 267/649/7 273/650/7 148/360/7 +f 262/651/7 268/652/7 274/653/7 +f 272/654/7 278/655/7 276/656/7 +f 290/657/7 276/658/7 280/659/7 +f 286/660/7 264/661/7 266/662/7 +f 273/663/7 271/664/7 291/665/7 +f 277/666/7 275/667/7 293/668/7 +f 178/669/71 213/670/71 296/671/71 +f 295/672/72 214/673/72 176/674/72 +f 2/675/1 1/1/1 4/3/1 +f 9/676/2 10/4/2 8/6/2 +f 5/38/3 16/7/3 7/9/3 +f 11/677/4 12/10/4 2/12/4 +f 12/678/5 5/13/5 10/15/5 +f 11/679/6 2/16/6 9/18/6 +f 6/680/7 11/19/7 8/21/7 +f 1/681/8 12/22/8 3/24/8 +f 6/682/9 5/25/9 11/27/9 +f 4/683/10 3/28/10 9/30/10 +f 15/684/11 19/31/11 16/33/11 +f 8/37/3 13/34/3 6/36/3 +f 7/9/3 14/8/3 8/37/3 +f 6/36/3 15/35/3 5/38/3 +f 17/685/3 18/39/3 19/41/3 +f 14/686/12 18/42/12 13/44/12 +f 16/687/13 20/45/13 14/47/13 +f 13/688/14 17/48/14 15/50/14 +f 42/689/5 38/57/5 33/59/5 +f 32/690/5 39/60/5 28/62/5 +f 27/691/5 31/63/5 36/65/5 +f 35/692/5 29/66/5 41/68/5 +f 85/105/7 73/69/7 86/71/7 +f 72/693/15 56/72/15 71/74/15 +f 45/694/16 46/75/16 47/77/16 +f 79/149/7 43/78/7 80/80/7 +f 74/695/17 60/81/17 73/83/17 +f 47/696/18 48/84/18 49/86/18 +f 69/122/7 44/87/7 89/89/7 +f 76/697/19 64/90/19 75/92/19 +f 49/698/20 50/93/20 51/95/20 +f 76/170/7 75/96/7 82/98/7 +f 48/699/21 46/99/21 44/101/21 +f 51/700/22 52/102/22 53/104/22 +f 74/169/7 73/69/7 84/106/7 +f 68/701/23 66/107/23 78/109/23 +f 53/702/24 54/110/24 55/112/24 +f 72/70/7 71/113/7 86/71/7 +f 43/703/25 46/115/25 78/117/25 +f 55/704/26 56/118/26 57/120/26 +f 88/162/7 70/121/7 89/89/7 +f 50/705/27 48/123/27 69/125/27 +f 57/706/28 58/126/28 59/128/28 +f 78/79/7 77/129/7 80/80/7 +f 54/707/29 52/131/29 71/133/29 +f 59/708/30 60/134/30 61/136/30 +f 84/709/28 85/137/28 96/139/28 +f 73/710/31 58/140/31 72/142/31 +f 61/711/32 62/143/32 63/145/32 +f 66/712/33 64/146/33 77/148/33 +f 44/87/7 43/78/7 90/88/7 +f 63/713/34 64/150/34 65/152/34 +f 62/714/35 60/153/35 75/155/35 +f 67/715/36 68/156/36 45/158/36 +f 65/716/37 66/159/37 67/161/37 +f 87/114/7 71/113/7 88/162/7 +f 52/717/38 50/163/38 70/165/38 +f 67/168/5 45/718/5 47/719/5 +f 47/719/5 49/720/5 67/168/5 +f 51/166/5 53/721/5 55/722/5 +f 55/722/5 57/723/5 59/724/5 +f 59/724/5 61/725/5 63/167/5 +f 63/167/5 65/726/5 67/168/5 +f 67/168/5 49/720/5 51/166/5 +f 51/166/5 55/722/5 59/724/5 +f 59/724/5 63/167/5 51/166/5 +f 75/96/7 74/169/7 83/97/7 +f 77/129/7 76/170/7 81/130/7 +f 101/727/7 102/728/7 91/173/7 +f 91/173/7 92/729/7 93/171/7 +f 93/171/7 94/730/7 97/172/7 +f 95/731/7 96/732/7 97/172/7 +f 97/172/7 98/733/7 99/734/7 +f 99/734/7 100/735/7 97/172/7 +f 101/727/7 91/173/7 97/172/7 +f 94/730/7 95/731/7 97/172/7 +f 97/172/7 100/735/7 101/727/7 +f 81/736/34 82/174/34 93/176/34 +f 88/737/20 89/177/20 100/179/20 +f 85/738/26 86/180/26 97/182/26 +f 82/739/32 83/183/32 94/185/32 +f 89/740/18 90/186/18 101/188/18 +f 79/741/36 80/189/36 91/191/36 +f 86/742/24 87/192/24 98/194/24 +f 83/743/30 84/195/30 95/197/30 +f 90/744/16 79/198/16 102/200/16 +f 80/745/37 81/201/37 92/203/37 +f 87/746/22 88/204/22 99/206/22 +f 105/747/7 106/207/7 103/209/7 +f 110/220/7 108/210/7 109/212/7 +f 112/748/7 111/213/7 114/215/7 +f 115/749/7 117/216/7 116/218/7 +f 117/216/7 112/748/7 57/219/7 +f 114/215/7 57/219/7 112/748/7 +f 113/214/7 108/210/7 51/221/7 +f 51/221/7 114/215/7 113/214/7 +f 106/207/7 45/222/7 104/208/7 +f 110/220/7 109/212/7 45/222/7 +f 63/223/7 106/207/7 105/747/7 +f 105/747/7 116/218/7 63/223/7 +f 260/594/39 262/224/39 107/226/39 +f 260/590/40 107/227/40 264/229/40 +f 262/586/41 266/230/41 109/232/41 +f 264/582/42 108/233/42 266/235/42 +f 270/610/39 103/236/39 268/238/39 +f 270/606/43 272/239/43 103/241/43 +f 272/602/42 274/242/42 105/244/42 +f 273/598/44 41/245/44 267/247/44 +f 284/642/40 286/248/40 111/250/40 +f 284/638/45 111/251/45 288/253/45 +f 289/634/46 285/254/46 39/256/46 +f 288/630/41 112/257/41 290/259/41 +f 275/626/46 40/260/46 277/262/46 +f 275/622/44 279/263/44 40/265/44 +f 282/618/45 280/266/45 115/268/45 +f 282/614/43 115/269/43 278/271/43 +f 122/750/47 121/280/47 120/282/47 +f 122/751/48 120/283/48 126/285/48 +f 119/752/49 121/286/49 123/288/49 +f 125/753/5 121/289/5 126/291/5 +f 120/754/7 119/292/7 124/294/7 +f 128/755/3 130/295/3 127/297/3 +f 130/756/50 134/298/50 135/300/50 +f 134/757/1 132/301/1 133/303/1 +f 136/758/51 135/304/51 138/306/51 +f 127/759/5 129/307/5 131/309/5 +f 132/645/7 134/310/7 128/312/7 +f 136/760/73 129/296/73 135/313/73 +f 134/757/74 133/303/74 137/315/74 +f 133/308/5 129/307/5 138/317/5 +f 125/761/54 131/318/54 123/320/54 +f 128/322/75 124/321/75 132/319/75 +f 124/321/56 128/322/56 126/324/56 +f 125/761/76 126/324/76 131/318/76 +f 142/762/58 140/325/58 141/327/58 +f 146/763/47 145/328/47 144/330/47 +f 146/764/5 142/331/5 145/333/5 +f 139/765/7 140/334/7 143/336/7 +f 140/766/48 142/337/48 144/339/48 +f 141/767/49 139/340/49 145/342/49 +f 148/768/3 150/343/3 147/345/3 +f 150/769/2 154/346/2 149/348/2 +f 154/770/1 152/349/1 153/351/1 +f 152/771/59 148/352/59 157/354/59 +f 147/772/5 149/355/5 151/357/5 +f 152/647/7 154/358/7 148/360/7 +f 157/773/9 156/361/9 158/363/9 +f 158/774/1 151/350/1 157/364/1 +f 148/768/3 147/345/3 156/366/3 +f 147/772/5 151/357/5 155/368/5 +f 165/775/8 162/776/8 166/777/8 +f 207/369/77 160/778/77 168/779/77 +f 166/777/78 162/776/78 208/371/78 +f 160/778/8 169/780/8 168/779/8 +f 166/777/79 208/371/79 167/370/79 +f 207/369/80 168/779/80 167/370/80 +f 174/781/8 173/378/8 161/372/8 +f 161/372/8 162/776/8 164/373/8 +f 163/374/8 174/781/8 161/372/8 +f 162/776/8 165/775/8 164/373/8 +f 170/377/8 169/780/8 160/778/8 +f 159/375/8 173/378/8 172/782/8 +f 170/377/8 160/778/8 159/375/8 +f 159/375/8 172/782/8 171/376/8 +f 178/383/62 181/783/62 182/784/62 +f 184/785/62 185/786/62 176/787/62 +f 178/383/81 182/784/81 212/381/81 +f 183/379/82 184/785/82 211/380/82 +f 212/381/83 182/784/83 183/379/83 +f 184/785/84 176/787/84 211/380/84 +f 177/384/62 189/388/62 190/788/62 +f 180/382/62 181/783/62 178/383/62 +f 177/384/62 190/788/62 179/789/62 +f 179/789/62 180/382/62 177/384/62 +f 176/787/62 185/786/62 186/387/62 +f 188/790/62 189/388/62 175/386/62 +f 176/787/62 186/387/62 175/386/62 +f 187/385/62 188/790/62 175/386/62 +f 161/791/2 177/389/2 162/391/2 +f 175/792/7 177/392/7 194/394/7 +f 159/793/9 160/395/9 175/397/9 +f 212/794/3 211/398/3 216/400/3 +f 184/795/37 168/401/37 185/403/37 +f 170/796/36 186/404/36 169/406/36 +f 186/797/16 170/407/16 187/409/16 +f 187/798/18 171/410/18 188/412/18 +f 188/799/20 172/413/20 189/415/20 +f 173/800/22 174/416/22 189/418/22 +f 174/801/24 163/419/24 190/421/24 +f 163/802/26 164/422/26 179/424/26 +f 164/803/28 165/425/28 180/427/28 +f 165/804/30 166/428/30 181/430/30 +f 166/805/32 167/431/32 182/433/32 +f 183/806/34 167/434/34 184/436/34 +f 192/807/3 194/437/3 191/439/3 +f 159/808/63 175/440/63 192/442/63 +f 161/809/5 159/443/5 191/445/5 +f 177/810/64 161/446/64 193/448/64 +f 196/811/3 198/449/3 195/451/3 +f 198/812/2 202/452/2 197/454/2 +f 202/813/1 200/455/1 201/457/1 +f 200/814/9 196/458/9 199/460/9 +f 195/815/5 197/461/5 199/463/5 +f 202/816/65 198/464/65 205/466/65 +f 203/817/9 206/467/9 207/469/9 +f 200/818/6 202/470/6 206/472/6 +f 198/819/62 196/473/62 204/475/62 +f 196/820/66 200/476/66 203/478/66 +f 210/486/1 209/479/1 214/481/1 +f 205/821/2 204/482/2 209/484/2 +f 206/822/1 205/485/1 210/486/1 +f 204/823/3 203/487/3 208/489/3 +f 210/824/5 295/493/5 207/495/5 +f 289/825/7 285/496/7 295/498/7 +f 218/826/67 226/499/67 215/501/67 +f 211/827/9 214/502/9 215/504/9 +f 213/828/2 212/505/2 217/507/2 +f 214/481/1 213/480/1 218/509/1 +f 209/829/5 208/510/5 296/512/5 +f 265/830/7 296/513/7 263/515/7 +f 219/831/7 221/519/7 220/521/7 +f 217/832/8 225/522/8 218/524/8 +f 222/833/1 221/525/1 225/527/1 +f 219/834/3 220/528/3 224/530/3 +f 221/835/9 219/531/9 226/533/9 +f 220/836/2 222/534/2 223/536/2 +f 216/837/68 223/537/68 217/539/68 +f 215/838/69 224/540/69 216/542/69 +f 228/839/7 234/543/7 236/545/7 +f 233/840/7 232/546/7 241/548/7 +f 231/841/7 230/549/7 239/551/7 +f 229/842/7 227/552/7 237/554/7 +f 229/843/70 245/555/70 227/557/70 +f 231/844/70 247/558/70 230/560/70 +f 233/845/70 249/561/70 232/563/70 +f 228/846/70 244/564/70 234/566/70 +f 245/847/1 253/567/1 243/569/1 +f 247/848/1 255/570/1 246/572/1 +f 249/849/1 257/573/1 248/575/1 +f 244/850/1 252/576/1 250/578/1 +f 33/851/42 263/579/42 42/581/42 +f 263/579/42 264/582/42 265/580/42 +f 38/852/41 42/583/41 261/585/41 +f 261/585/41 265/584/41 262/586/41 +f 30/853/40 259/587/40 33/589/40 +f 259/587/40 260/590/40 263/588/40 +f 30/854/39 38/591/39 259/593/39 +f 259/593/39 261/592/39 260/594/39 +f 106/855/44 274/595/44 104/597/44 +f 274/595/44 273/598/44 268/596/44 +f 35/856/42 41/599/42 271/601/42 +f 271/601/42 273/600/42 272/602/42 +f 29/857/43 35/603/43 269/605/43 +f 269/605/43 271/604/43 270/606/43 +f 29/858/39 269/607/39 34/609/39 +f 269/607/39 270/610/39 267/608/39 +f 27/859/43 281/611/43 31/613/43 +f 281/611/43 282/614/43 277/612/43 +f 27/860/45 36/615/45 281/617/45 +f 281/617/45 279/616/45 282/618/45 +f 118/861/44 117/619/44 276/621/44 +f 276/621/44 280/620/44 275/622/44 +f 118/862/46 276/623/46 116/625/46 +f 276/623/46 275/626/46 278/624/46 +f 32/863/41 287/627/41 39/629/41 +f 287/627/41 288/630/41 289/628/41 +f 114/864/46 113/631/46 290/633/46 +f 290/633/46 286/632/46 289/634/46 +f 28/865/45 283/635/45 32/637/45 +f 283/635/45 284/638/45 287/636/45 +f 28/866/40 37/639/40 283/641/40 +f 283/641/40 285/640/40 284/642/40 +f 130/311/7 275/643/7 128/312/7 +f 289/867/7 134/310/7 287/646/7 +f 261/868/7 154/358/7 265/648/7 +f 150/359/7 267/649/7 148/360/7 +f 266/869/7 262/651/7 274/653/7 +f 274/870/7 272/654/7 276/656/7 +f 288/871/7 290/657/7 280/659/7 +f 290/872/7 286/660/7 266/662/7 +f 292/873/7 273/663/7 291/665/7 +f 294/874/7 277/666/7 293/668/7 +f 209/875/18 296/671/18 213/670/18 +f 162/876/85 178/669/85 296/671/85 +f 176/674/86 160/877/86 295/672/86 +f 295/672/24 210/878/24 214/673/24 diff --git a/assets/hbm/sounds.json b/assets/hbm/sounds.json index 6da239b82..8ab9dd92f 100644 --- a/assets/hbm/sounds.json +++ b/assets/hbm/sounds.json @@ -34,6 +34,9 @@ "weapon.immolatorShoot": {"category": "player", "sounds": [{"name": "weapon/immolatorShoot", "stream": false}]}, "weapon.cryolatorShoot": {"category": "player", "sounds": [{"name": "weapon/cryolatorShoot", "stream": false}]}, "weapon.missileTakeOff": {"category": "player", "sounds": [{"name": "weapon/missileTakeOff", "stream": false}]}, + "weapon.defabSpinup": {"category": "player", "sounds": [{"name": "weapon/defabSpinup", "stream": false}]}, + "weapon.defabShoot": {"category": "player", "sounds": [{"name": "weapon/defabShoot", "stream": false}]}, + "weapon.sparkShoot": {"category": "player", "sounds": ["weapon/sparkShoot1", "weapon/sparkShoot2", "weapon/sparkShoot3"]}, "entity.chopperFlyingLoop": {"category": "hostile", "sounds": [{"name": "entity/chopperFlyingLoop", "stream": true}]}, "entity.chopperDrop": {"category": "hostile", "sounds": [{"name": "entity/chopperDrop", "stream": false}]}, diff --git a/assets/hbm/sounds/weapon/defabShoot.ogg b/assets/hbm/sounds/weapon/defabShoot.ogg new file mode 100644 index 0000000000000000000000000000000000000000..f793c7b6a25e53dbe5e79f9a7cff35687c607fe8 GIT binary patch literal 7758 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 literal 0 HcmV?d00001 diff --git a/assets/hbm/sounds/weapon/defabSpinup.ogg b/assets/hbm/sounds/weapon/defabSpinup.ogg new file mode 100644 index 0000000000000000000000000000000000000000..6e662e35b9f3eceb449bbfcf34c8da1252761af2 GIT binary patch literal 7654 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 Ztwo1?bBJ1GbE&G47W5yj9n#0 zsYuF@Wt4qOi)FN+Rg21VM$dh}@AH1%&+~cydd}y}nd|qv&iS5eJJ)r7yMu#0AQ9+4 zn_}TtS0U+UDSs8F0*j5H1dyr17cg}%;U5I8N&WL*4%;nU`EL`hgn_3jN0VU5Hl_&5X~O^JR%N7A3aD3 zva%k*Hq{6Ycm=wMlpk`2K36yIlLM}2`lCoBa!V}`X6(Xmb-0J@`Z)NhzkS>H@ zp^jh$a@1==6!56@=N-y8P!?i9P(dL&^%YtYp?FgQYKI_%b(D<5MH%NBrOu}s>*4Et z*8p!qa4^p?x!5t4D=V8Yv^TvMvyU z;0MsDMWz{3K1_~pz8F2ZN(4%Tpw(dBI)@q=mk$~}A1!-6{lERswkQaK&Y%O4tNw8T zTuo8IHjg0fCn1MZlCo9C@omdFv=^8pO;WE%l?_}iVZrL_MEt@Z7a$<$pp0qC={60x z8a+TpduLP$3Q*G;J{@th8t`W{1nxFFzOw_LrTZ;kpE}cykZ8R zFhW!zkO2gw%dCJ>0G`qxwE$Cinw0Da8V(c<2d2hjrk+!#WoNChyY%mLk=-+}Cwyoz zeE(wj^MRn}i$P-pLHn|Uo^iwX4er}F6!TyEit350p~Q?SV0F+PGm0H0R-D6tK?o?Z z$TW4*5%?oR)0e45&JK>tE{)4AJEyWT1vmy+4Yb6oD{j;9%`PG5mkOO-QIT3wUQuy4 zw}kxPcacK1N(d5%Amz3wC5I@bwkV-iD;7qrf>01->#k%+(Q9KGI|Cj2cJ_SsbKe@{ z;T`^u6TlQj=X{qbcv z0lUoS%5kC?v4*pFHBLd_gb{~9SQlTKgKI~=DWoy5NjHW@sXdKfReKN{TTV1WM}Ul$#22$D8D^zys5v&!Q5{#W69` z1RYGP4d>(7i98=91JnT|E zFzQ6sFCGja>+=Q!x-mTV7EEu^A)2{(rdpkzor7+!v8RYMz_W>`JICU%;& z=EQf^2y&p)*Nb@{?HTR zHL!#;jTNCsqofQmX-!;nuc%3w%TN;BkZMFaA^m+~9axh`ylz@CF@TK9&Dq zc$|i)o@O6@XVp3!KW~N{qrR^me6hFNuANPL((tV$-q3zvl-9+CU!o$+XVs(MKR(7f zY*0PzM|^8FsF=`g27gMN$M7aR(i(^IFW+bsQzLc)C|WA^TQ1emToB+{{QxM);K~)o z|AiNzSQT8cOQCK?LjbCEwjk{<2s+RVgHX+MBe#(DR0!n?CEB!`agcO823|;K;n0{p z=}zrAG$vM?!y*vjnq1(uOC*9(TQOalsH0gYjVG70dWmQbH=CG_;mX-!%9990T~1v# zu>#BWB0b7sb(vwn3OuGdi$JVY%4A~EO#-_i_hyuHiGWekA5hI*RN8yQiX#`ARx<-4 z++=8iq#CikFRc(!#kC8<<>$FIueww8#W#RQHd+bWaR+kv7&`odyD{O%tN;doy}us zx?w;#yBUFSal_BBsR+Ed8jFC(tI-Jn3LIDw;Q`)ctSKi31hV@h5Q)8ouO^Yl;S)5< ziw508(HuqR^gNzd{M&{;#rW`sZ7lrx^1+PI&W3>rvWwL%B_NOm5Xj;NLSntII5Y(k zIglWS%2!B23Tyc~Lb|ZDr-E`1bQ3Z_sR0ZSj7(7O=?MI+P(BPN8ZZi31akoj$cM=T z;$k=~P?05sxhhO%gndAx>mGK1?63>)&4Sge3Fa4HCC4fb6& zju>8n1scOehP}_DvxsSCVwr?A6Tt)xm@=2fw;J#grcic36?jJl2j=Jl81$~${$jVd z{h5E2fD4VsSKuJ2U1oxGLOK>$Fcr%KmlT^;B#Cb(rbYq`6rCYtAaJv6kQU);(Lx3t zVJ;{D%EEyX!ixR>Q^FKfk(FBhzdry`fnWaXpbfR(YJoK`Kj0~NG5Hb>w6#KK(pN!{ zgbkV#0DPedE*6-)OyH@DGy?uLIInndkU;S8l|h+BzyWsw$Ne*y|3h_{VK|vW#!kKy zMi_t?j?lsX%=?G>_j2>!7(@iRy-5i|Nr$lyYQCh?9^cf=M=MWI%+X|8!^o!20>gcE5m#i&2l5?XtH|E&>Xr9 z9*@al;2g`NSp>9ZmT+}pg}_VX6?@_(%8NY-@VsaSPFu5>2_7?9U@eD*$7@Ct za5@+cIJxC41l|$DaRoK6SO$kyO9JX@a+u)EWqIPnfdm9}AwU5-GYJ?7da;tJ;pUIa zZo)UY+wjFNn4Y&Hu*0joz5*BLY!Lqdgo4Ks;rzmQbBQ(lCp{_N=^8|v(l`stylh0 zV6?Vg`OaFs-F)R0B>c`2UN9%GJn+--_K7412Zx1(gom5^c=>u$LJu8^q;B8qMF|ZF z2?`1biSY68b0DXL9);zyJ|TbHCSBh2eTiv6H0X@lT@?4Le=j>YpLSkT+v;0y3Bvd? ztoDbJ|9L)P`ECC4jy=B+7b+v7;EhwPPQ}hGi)=qX!nF+*_>_z9ul1!9t#rRhSG)OLPhyt7)jFB&Vc61q zef00?`z8x5D$X@-!4B!~6%2{y+(DzOuVZtr=}Q{f=)PlZc?rw6;L4b4K2NmmJo7_I zT$^k~t{saYe>ly5X!P}?dGei{7{Tb7yG8N)!!67HMo-A|K2{L6pUrlvH#w3o`JwSW ze1;H9{P~4@vo=7fFCR6Ro_qAPbXOZDH2jNlOqC^XUaH4XIgHCv{k_Ce(&*QH@x&(U z+=w(=FDZOEVzQq6aor(>KXZ(G}!x%emkBL1Cq$l-xeSZuR9 z)pb`@)SPynW;*-Rxs=81&J;;AEcR%6Sdn9hGN=LCrq$gkmBU@~f?QDRZ4ahpPxvsfPQ$XC%-DTYP%z3yU8S+b&hg~F9;_Kvw z2SgGlA8xIX?qs%{?YVycE@#aj-1q35_rz4r!B)*Xfg4pZ zH@6s$EM&mRA8KB=JFmGH#5+8$n0zwhnUc@GIZUu6mUra3{E2!`NqsB4z-*6YBb2Yx zC3PG1y!p7;8dgCAd~*Q$)3 znla3^)p3VUK8k{W+;IE=;n4dIiab6vW^bSA%)W1{4c~Mt*DuRidujf z0uD=ikSHo0-GjmU$h{vhjrjPcWq$nh1Nr*Sr(LoEP2cj872YSDEZTikFfsU0O0AC? z8Z2>Rz59+}o3C|M)Ah=B>W3bue79GRDE!14?w#nqEpc7;DrWfQ#lJGu(%p?-t%Ay2 zde?1;;3P*7)7*}knHkP#m1VHG<&VDB5mg#ZALB11MVt+9?T9~qNEOcD#s8Oc=*0N)hUD%YYkq`IQB*e3MLtb;cS7*;R1tUkUSciU4K+WRx zP@6Zdm#CU}hFSNkgTH!o>5-i2p8Jq|L5$rlaqT?$`ww4S;V6Tc>w5#V}BjW$=_6~4=vt*Y9i{Kc9WaOA>7)2eFhHt_?V zUb|F&`3vlSY}3!|{_BRDqFp3b$@_sf#?bQ;nSk#ks`LICX;%6R_-?q=Z^tXJSc!fWc#H0fr}V9f zvId7NOu8ef`LkKA(qPuj0K`N~^`)tpAj38gjD1%_K5S^hC7+_7Du_jM0S$b(~y= zJRfEwg7p(a>oPvmxaS1-gWkP(%sMaXO7N=+S@c2e>00iLMbDNNqH@VKHtD>q4Ojf1 zGq_5(SHV<+CSZX!BcQ9kbNJyLK+Ge^$CSLE%PGC=~5X ze)VqiOZ?n*UfM6~roraIF6(TV+<3&cJS#7s;i&nV^vbN!EHHmloRnXGctP^0@^9Cff?Pd;D zO%B!5ocd1On*X%e>2qo(_$qRB_cbbdJC7OezTe!LGJo*i#DvO^53Kn|k3@MLPVL3d zvLEpSZfW!L>!2# zfH;^orh35SlCQG{PM_ExN5bjWz9LBGx3 zIiu0K1-CL#*0ScZ4f2tjkFyV*r8^uRG?2@*D1o*s zrpv&)<{ z;ym?Q_j{_=oHpFjnmg2*uw$#6+^5yv_VD{h4D>&Yzl+DEh-n#4wB9L_72hY07Tuj? z_WOGpGN+;mW}#8`H%X0KROA$YbYr(mNKk$9Owe4->6{G4kDg!t4u)ZYGJXCY6QUkp zJ+yq?zxat$MA%`^PnP(_yWX|ya%XMxe^#{5`@Z9a*v9RZrJC7~vWjef=V|4}yh;{3 z`MMH~c(5O`fVd2HpjF?uiQKRCR@XX{pN>XEi|x4BgVKJFkWkRZt6%*j7hI(#p{hpz zOTt4n)@!Vus;=ez^vbVqSDN&ja`_b}8+N*+8qmiAEAuwTebv~Af-N8st>MehMf}Cn zWvrLh4cpjQk#-RdU)@e${ONR{%H`Dqa?7M_r4-%K@8?t=WzR16QndryKGr5aG8z0( zZ}(fo&OfN{5JL~g@{T=~`MAw_SoB(uLBf$O0X8NYb~OzJ@u&BM)GsxC5%D+s3_e3* zp;SIGh7jCdM&0IN;cS|5@M55iRSFX12zUxxtBuZ{56e8*@?3R?&w}8#yZ1nJpMA7-i}wD!c|M-|SH6E)t;u?a zroVs4ZnKV1pZ(mg50~=3_UT;ZubjDLne`{*%lHGcXP+?FZ5au;q(n$po56)HXgldag%tY^i{Pymi7DUjSx$=AE=oZ^RZh08){lOlyt~h~ zJ8tRP(%)MLH8%tkTdXJxU*mphnGVhBQx=Tx=UW9g^_7G+gLhYSkA4Vzc_g%lCM&Oh Yg7_#i$?5mH=3Ha{BL9llPtnkS08i07h5!Hn literal 0 HcmV?d00001 diff --git a/assets/hbm/sounds/weapon/sparkShoot2.ogg b/assets/hbm/sounds/weapon/sparkShoot2.ogg new file mode 100644 index 0000000000000000000000000000000000000000..3a466efb2ed5c4a0959bba9e60ee40a65a57db6c GIT binary patch literal 6930 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 G=zjq5+0_34 literal 0 HcmV?d00001 diff --git a/assets/hbm/sounds/weapon/sparkShoot3.ogg b/assets/hbm/sounds/weapon/sparkShoot3.ogg new file mode 100644 index 0000000000000000000000000000000000000000..770c05b16de9c3d6efe8a70bd5e2f643382583c9 GIT binary patch literal 7716 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 XVk037KSwW=tSac-3)R7rt@iu}Qww!; literal 0 HcmV?d00001 diff --git a/assets/hbm/textures/blocks/crate_iron_side.png b/assets/hbm/textures/blocks/crate_iron_side.png new file mode 100644 index 0000000000000000000000000000000000000000..f32ef1041f1408e6fe506d946ee8e6be79bf26cf GIT binary patch literal 363 zcmV-x0hIoUP)cH4I)Brt(99Ij|ZG{D9aMwd!&@GZQI*Agdj*8m2+w%qua&ka@cSpdOjp3 zgmCHx`?4&HJY&5N{LTUZv~4Rvo;b~?DV3+pL&fNcyOyZGe*h9q&!bs0Y-Rue002ov JPDHLkV1lHLo85QIPF;pGBpOp(eeq&WgscK-i9%@%>HgmgmSK)r49 zig5SzB~zVq?yNhr7UMX+SRuv;fH8(|h%sV}$?uhkj4>i2s4A+8h!A5Wgn)<;LLkP7 z_nr_!7Azi*$4gbY-EII_YXO+&IiC~O-1T}zRrxW-;JpW6x7%T@<#;@DI-Q6y@_at? z*?Z44O%z3e_nxL{-XomPXRNg>%fd8GjN|w*dn#U*g;bM0P*ni>zRw~e0>FO1M?`XQ z-}f7nOMqb*a;L8AvWWMdVHk38+qT&Y5uvK8w?NZ0%=4T@+P2Li0L!w_b=_tp=Nzg^ znezOPx~{WGUDqG?n>`qYVG~*U?9@GtlQ?T_POdb@WJmwI-E|$8%jIi2&bdDi627?& z-_uDbQ&-@_?KRfvq!d(@VjRa;2!Z?k4zNjM?MqtYbl>+qA%wqw;cz%0A~@&r+B)a* sXvwEFp9NBvw2=u_RekVPRc)Ss0azbH?(vjvG5`Po07*qoM6N<$f*6&|M*si- literal 0 HcmV?d00001 diff --git a/assets/hbm/textures/blocks/crate_steel_side.png b/assets/hbm/textures/blocks/crate_steel_side.png new file mode 100644 index 0000000000000000000000000000000000000000..9765924b794602d18a841a94d58b9d898f39240c GIT binary patch literal 391 zcmV;20eJq2P)j|b=TdDoBQNY0s*(z^pdH~PNE7{mR3$2qt1pUI^Z8Y$qtC#6KrnXc2y$Bpfy?Crz%UFNODPdT z(2leNkxXujF*47yb|T61Jg?4d7<|rbt<_tswX4{&EE>}hYT{kjt!VG5vwtyde zA%tCZ1fq@*V_fMhv_F}MIvWPH&NXfE^*a%DfOmnvXxF}eCmVU)~06&2(RtF}3=xqQ1002ovPDHLkV1kimuGs(p literal 0 HcmV?d00001 diff --git a/assets/hbm/textures/blocks/crate_steel_top.png b/assets/hbm/textures/blocks/crate_steel_top.png new file mode 100644 index 0000000000000000000000000000000000000000..582ba1a63cc37a533e65fd41f9ff54946f30b410 GIT binary patch literal 330 zcmV-Q0k!^#P)0p%?px=1qLc#Q4Y2R~ZP9-;jw31$j4_A^-g~_F7-PD%h+vE< zCdD9xK#URR902ROl2Rh2#Ja8kIOm8l5<805_Ai`Fm}}pp}Sp>sD2S9&>ow2w=Qxf(DL+X>c%SEqh?MV{vt>xV cxm*MM0C;8<%DrseivR!s07*qoM6N<$f?mXoBLDyZ literal 0 HcmV?d00001 diff --git a/assets/hbm/textures/blocks/drill_pipe.png b/assets/hbm/textures/blocks/drill_pipe.png new file mode 100644 index 0000000000000000000000000000000000000000..ce47da7016b8ff8d92acf1f143395a535aae353f GIT binary patch literal 520 zcmV+j0{8uiP)- zhco1G`1trZQ%V4As@!7)pygVG5CC|HFk9PmE~P}R6;WjwM;_Zov=&jNlmdWr?ys8l zIEdDgQo;dMtfp(fnY_o?_wjQwz%m9zl?gBp5tebJl)~u) z(f(m_^S(E~g-hn?1ErM9_9B?s+U_iWR;Fp{a#}Rn(=_4F+MPRFdr4@|bDw9{`~7oW zvO2GXJX<@>-ObFbVcUih_np%(@g^tj3i`Ik)n7k;0&iPo!rwKYI#?K-IKDSZJT{MK swoK1j`<=18{@Q^v^BCXxX}U65%bUpkaQB-h4s-{Dr>mdKI;Vst0DP-QY5)KL literal 0 HcmV?d00001 diff --git a/assets/hbm/textures/blocks/red_pylon.png b/assets/hbm/textures/blocks/red_pylon.png new file mode 100644 index 0000000000000000000000000000000000000000..edaca7755937b9e6499adb4bac5fb0a9a3ee99f4 GIT binary patch literal 216 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#Vf1x~=iS{C(Q5YnQ3dscO3Y)#>-TggF+MMEBgA z?f>Dw`UQ6{O;f?fRZ7qIoW8`W)O7qgr=VrZ3Wv~*KE@$a6Zh3HZtF7G@hd;U1?V&e MPgg&ebxsLQ0DVAEaR2}S literal 0 HcmV?d00001 diff --git a/assets/hbm/textures/gui/gui_drill.png b/assets/hbm/textures/gui/gui_drill.png new file mode 100644 index 0000000000000000000000000000000000000000..7aab1b10c6643d5ac8119d072303b99cebbe83bf GIT binary patch literal 1970 zcmcIlYfzI{8b0|55FwBR2!a>Ds9*t60WoMLsRbehQ4|Db!QhH4q9KtLLb-lfrNm$f zyX*iJ2z0P07l~^sw+f~OH-Zub)UX6d5k$F{OOSv``o&JWGi_%&`(w|a_ndj(^E~h6 znRBil3#6GCZ7>1=nD`y`J`Mm1*`ff(05K5>w_*^3{_7#XU<|U-FwtB94A1#_e-xZt zGBZSp-_$`g{C?m00d{}vh#uM84i0E!7hQS_o|Lq^<4a5`n-gTU?kQ`apw!P1*T!eB7QyYMy1>Uz_SXrO-~S?r*Nk;c{!ZD^J;m zsjfNqz{<+}=%p48la-pfkw9Rx*#xc1Kj=@kn)z;_CO&atS7Ky?C)&dqb<#oG+t=6k zZ~U#Z>+l47ipgqXksIuM&4#ftc3oapPX&XnAt&OlFAqK243p@Aotg_QZH8rGVd1Va zW~7!mKR)R=zNmWqTK+=2mt{bePopgMqxX$s9lMDo{*<;QA(9ITvB~K;>Y-fXDY| z#Y@HT`t|D{YQGKrMiK$*hj1`GuV;$ApSWZ~ABAZ*OV|9w_6z)_^eY`X5CS zrG0d?qC>%bzFl0oyT91~Q=jX$EvmHmg?&+d0~yLs#ID$7Q^@~4+_YvbEFvTQ3xrr+ zhtN;Y@rqUs%+nde!MwCegvCZd6J zaZ6IEv^wSTMO%Ko3;V(OxSK*AwPJ||5P4+9RgdM1NO>POUio>%zKK6<&XhM|!`k2M zY0hwhJg@j$9klPE``G!zW)R#{g$c%0NMa4DFwr_;oH0{}pdG^@=Tq8$Y;^!uAzC7* zAp4Fy6SoC9%n>=7DZI<+C98)~M9zCfUW+N>QB6n8eEC7xP{N~hupJHZ-`pnUxxpk~ zzT*yKFOv$I92qJGhVF$d1QEFDd-ta31jl$5HeXr)lW0`3vccsO|@8fb{B0mYB*Vb z&Ywx-?C5=G0~ix62(1AQ_G0R{G&N1!-dWj`s*6l8cq%K6c#%D`p%w{nMp<>)Ay-J? zeIs`CrhyCJj7UBTY0%N%Pyy~6)!F=j@4C-#pb-GU)Q;RP1&6~=$Ka3_c)plFO%`#( zoGrVBA;*(BmV?8?zTWLaLy=e3bBLb2Y!2Lp0fz$s_0JG6GY5G^0B%QvZT7%!4+>me z_lrxea*v`5M`tVgFDEV3_sOO@RRc9j5SPNZmy}RH`oZ&&FzAmkegpscLJDgpHhcd} z+QCL1b)f3YQYDXi3O8&^7zh^{1!M;6 zzd!=}OKftt|L-|hi+{@5ad%e`v5`{n^B|6d3p9QFd~Q)!jObxo+vRVwq6_{4M95?B wcK}+ugX-riQ4s;X#{Fd-IOK!;zbr9f)i$Gnr|{!E@6-|a`2>2`9g6zfk8botk^lez literal 0 HcmV?d00001 diff --git a/assets/hbm/textures/gui/gui_nei_refinery.png b/assets/hbm/textures/gui/gui_nei_refinery.png new file mode 100644 index 0000000000000000000000000000000000000000..dc2c7f996b0ac248fe0dc5e7cb0a690607afe74a GIT binary patch literal 6257 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 aP*ca}NBqYV#X0{F05jurMpOf0^#1^a{9(}m literal 0 HcmV?d00001 diff --git a/assets/hbm/textures/items/canister_petroil.png b/assets/hbm/textures/items/canister_petroil.png new file mode 100644 index 0000000000000000000000000000000000000000..0c7aa508dccc980078335eb747e7a6bc8e6f0878 GIT binary patch literal 281 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#Vf zeqUU%?uUHVZ%)%v*Zf_zD(&~SLxmHbTe=6PaCM$I5MZ=;#niQ;f`)<{HLqF4_U`}8 zxMT{Wpy91FjW_X=W%LN z$I|MXMatO=SNS;06fxgotGIXNWqZ)vJl_NS8xm(*Ul8h?)$nn7?2r4uK5qJx^Zxn# c`joA9cQxH!8>Q8r0Q!x=)78&qol`;+06GtD9RL6T literal 0 HcmV?d00001 diff --git a/assets/hbm/textures/items/canister_reoil.png b/assets/hbm/textures/items/canister_reoil.png new file mode 100644 index 0000000000000000000000000000000000000000..729168060f339035f93bdb6b934cd150a6159e10 GIT binary patch literal 273 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#Vf@o$tx3CivNCc0GP# zyI+Ovhq=()4c8_eIk$6tZEwlGj9G1;Y~(vTEV?c-u2@^?a@*O($wg?>6aBKT%cWX} ztLHN?l>BwEc|V=6Op$TjtA(c`mKe;b=MiMe<^3YF?6A=Ev`W2-Rtc8%3e(=_&nx}9 zpjqp2;F<}GSa!)h`1R=3@ky)C%fDaVAa?tWLx9vj#?GzX3F}`k6P%Nmcu%c{Av($B Vitw%NOMrf2@O1TaS?83{1OUCCY}o(+ literal 0 HcmV?d00001 diff --git a/assets/hbm/textures/items/fragment_actinium.png b/assets/hbm/textures/items/fragment_actinium.png new file mode 100644 index 0000000000000000000000000000000000000000..24808309d64ad5492b0a4f3a292542734d220cba GIT binary patch literal 231 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#Vf2Kh}*)fqX0>Y2f+%l~m7GUETi^dr7kbE@%w zx$4$rFISha3Ca&P>x&68FbM9I59Ma);8+l~Y)-rLfhnIEuIesfc00i(pvZ9GOvlI9 zT-8ZwGj3jrxww9Vp<&j%^cgqvg+r7(Io{oKSZ=$bsC-4%>BS4>)jQO-`FYoQem$Vq coOhjj@!=rnUs<0cfG%b5boFyt=akR{0LbZ8t^fc4 literal 0 HcmV?d00001 diff --git a/assets/hbm/textures/items/fragment_cerium.png b/assets/hbm/textures/items/fragment_cerium.png new file mode 100644 index 0000000000000000000000000000000000000000..abee3a38eedabfb0a44f384dec840cbfc335059c GIT binary patch literal 236 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#Vf%x>>UG4tBC@GMJ7q++;2d;_y)P>JupmM@OqzJC}05Myz? zaOu0N*(H6>OT;8O{c<;ZJbTS$cxd1A-5$^GUALXe{C?(|gDx(g4DVU}j6CR))RH=r zF<|cgJx6!{j&dkfYhj6rSa@`ss*}fxZ_Ay9mF74`bxg3Fvv8VT8{e86pCl3`7Wry9 i?`8d+V4nJ~f&Y1jN4BHsGDo0u89ZJ6T-G@yGywn%Ok8OI literal 0 HcmV?d00001 diff --git a/assets/hbm/textures/items/fragment_cobalt.png b/assets/hbm/textures/items/fragment_cobalt.png new file mode 100644 index 0000000000000000000000000000000000000000..b844b3222d15a0464515800376d5b3498385b1eb GIT binary patch literal 246 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#Vfn82RY4XqkXuQV+xIcfW;0mQ3j|R8nfUTrPLzH?z3y49$~A`<1uJ t^*9Ing{(^C iWlx~}jrYyrpBdB^g!&pBl$il^FN3G6pUXO@geCyNyjcza literal 0 HcmV?d00001 diff --git a/assets/hbm/textures/items/fragment_neodymium.png b/assets/hbm/textures/items/fragment_neodymium.png new file mode 100644 index 0000000000000000000000000000000000000000..e8ea7cf4f03f440d69b79d5f16e351f1635e5fc3 GIT binary patch literal 233 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#VfFc|4#K; zskw_+{bGK?^+RrUs4asMQ$yq`hE;N#L%b7rvP?OYG|g{<;0)*Q8P4K z9C|kHJ(uxNBx!wVY^UKpKZCnXtK3~qSiV;fOuTbuZR;H4w9NIt9r77#JI>~>mS0)B e;rN32+03PrePdMLe0l?PD}$%2pUXO@geCw{z*yY? literal 0 HcmV?d00001 diff --git a/assets/hbm/textures/items/fragment_niobium.png b/assets/hbm/textures/items/fragment_niobium.png new file mode 100644 index 0000000000000000000000000000000000000000..25782d27066a2cbefa7a59c4725a9ac3088d718c GIT binary patch literal 230 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#Vf8H;r?B-O<%w&FRWfueTDjQ4VPSjRuN?}f@3+@C{8ttFK66jF zzeMM5g{db`7;H&$WQd3~>~Ugr5a4R{S!WW;I#VX*f!Zg_x_s@OTOX*kZQQ`H;6-JA zW%*)p5!Hzd^P)3u-tbTnk$qOO{ei7?nUwGO10Q*R*toUCU5Ni!xBm6pvx!{)6XLn+ a&oQb?*xfMVzTyFND1)b~pUXO@geCyJfmGfA literal 0 HcmV?d00001 diff --git a/assets/hbm/textures/items/gun_defabricator.png b/assets/hbm/textures/items/gun_defabricator.png new file mode 100644 index 0000000000000000000000000000000000000000..e4b21e0b6d3e571e4de10a55db5e08bd90435516 GIT binary patch literal 194 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#Vf0WF9p8s-huPoaGQKw5P z*&n!8Zn64g`1}vU2Z_gjts-l;HZ4h?vqU)S?LIFT8|6x2hG|c;7CF6NT^-l3rdtMb92RdK9y8#gZUtSGg5tnJ@L<$!+;_^SpoC|A`$d zIx-^bV_J_FvK)|bzHAczu9D6A`IgsKNj(fTY_U=g=3Jg*%%G{taBJJ&!oAgp#B6vD zud2W77<>KIUi((YxKzcK1q_!>64x$$|2wwgsY1(w&o<27x7=s*`!}e*HQL}UB)E1} e)>i}bYtl2hy_`gAs@4PD%HZkh=d#Wzp$P!Kvst(R literal 0 HcmV?d00001 diff --git a/assets/hbm/textures/items/gun_hp.png b/assets/hbm/textures/items/gun_hp.png new file mode 100644 index 0000000000000000000000000000000000000000..9c65ba2e28f422a851339ce65e2703d10f9bcffd GIT binary patch literal 318 zcmV-E0m1%>P)NklfD2@ls@gSB>6)(IY; zpME9xUyAM8wc$C50tjz!oQO~#DwQOO^E{8DC;-^)c0^GGK$d0dq`(Bes}EIIwAMNi zp)AX;F$_br))UFZ*b>LF(^?NC#+ZrZtY9oL#sHA#`5?18nfxKob0s2O`0e9;(laaQ z?^wOo!12QS_1PngF@f*2)&P|I7xkwJ#)!yZlB=bHR?>g=MVP?9?6aNY8x81fJDj~j QwEzGB07*qoM6N<$g0z5*+yDRo literal 0 HcmV?d00001 diff --git a/assets/hbm/textures/items/gun_hp_ammo.png b/assets/hbm/textures/items/gun_hp_ammo.png new file mode 100644 index 0000000000000000000000000000000000000000..4c7f3acf5535fd774fc6698f26b59e5ccc071996 GIT binary patch literal 234 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#Vf#%_UtGgSUIn&Mw-qZKF>rFZQ)a;w!mR2s&vgILBAK05b#f`2ehy8ZouID*m z(YLf~&St*3#W6ppOj@~<@y0gZhIOw?PDZWvc7MNDe|J-|Cx@f_`qx#Ta&HScY3yz~ z^=Xc&du7JF`0g~pi#1w1x)~+f7BW=4FP#u{>CX4ROT`5*GaQllx~lx5eogSE#c|>Z gvzC22`JW;Gn~wRSQ-LzxK*ut8y85}Sb4q9e0P;3l5&!@I literal 0 HcmV?d00001 diff --git a/assets/hbm/textures/items/gun_spark.png b/assets/hbm/textures/items/gun_spark.png new file mode 100644 index 0000000000000000000000000000000000000000..d308afeef5434915d73e037dd3ba48999887ddc8 GIT binary patch literal 374 zcmV-+0g3*JP)%IG0Yv5p;8?Q@fBvy zZ?V?$y0hXT$?2g_qLlg)<^g&uX8gVDAvgQSK8aGwr3r^6`j_qXRR{3+(jyE*nkO}K zo3mJJS-Na;--G8xA-)9wtSv7%fVbQP?RI<6e0703+QV8)tJM+%6;fT_J%~ay&HU8Z zNOL9?8qQIvI;E7$=kuQ)nTeD>vD4`QptTlKN~g6JnWIQ42d-OV07*qoM6N<$g8d?$-2eap literal 0 HcmV?d00001 diff --git a/assets/hbm/textures/items/gun_spark_ammo.png b/assets/hbm/textures/items/gun_spark_ammo.png new file mode 100644 index 0000000000000000000000000000000000000000..150780fcb1caae1901bd94ef1d811d7b03ae59bc GIT binary patch literal 234 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#VfAdmLK(&tTPFn-39wr9hW~gazvbGD g=Rdc7JN}q=$vZ!*qyUv&+kA)XIgc1!G-CHOMjx>D&|eVjuhbNvuh7)3{vzy-EEk_x`CYGrE2G#w ze=T0y_sci_)3eG??DfHRPwbw2t$Z!K~UDf9hmaT(^pAKu|Y$L zm+9Pe?!O;*+(_M@F4^Ye$RS^Jy>P<3aGeZ>@^06sTcT@OUsf*pY#F2}?6q`)X~qMK z(1Q;H_B4icnQ%<-+Umsc@nc4nx4fi7nbnckU)@*4h#kn>%(x)^_Sy%gr*BN#B+2oa zdvTt4!|%6lvs6S+YMs^!ury}Yz1U>-Vy%PsBmD*USFtgk!P&yy(>qW;8e3dv6-4(3?7>Lv gUH}QK?xFUwU*}|Q_3+pT_5c6?07*qoM6N<$g6e#b2><{9 literal 0 HcmV?d00001 diff --git a/assets/hbm/textures/items/powder_cobalt_tiny.png b/assets/hbm/textures/items/powder_cobalt_tiny.png new file mode 100644 index 0000000000000000000000000000000000000000..951d383edc2a368bb09378d5cff10a203a2e1b6c GIT binary patch literal 188 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#Vf literal 0 HcmV?d00001 diff --git a/assets/hbm/textures/items/powder_desh.png b/assets/hbm/textures/items/powder_desh.png new file mode 100644 index 0000000000000000000000000000000000000000..5ae4a5f241c74b64326671f7fda892859132a79e GIT binary patch literal 257 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#Vf&82b((FoP%>~an>9udT)@UBd?eJRWdk3eK%)!<34m+g! zTuR~Q$kM;csKLchv~n5=>PTp#~yT)oWzZ9@G%=UP&{T!o;whCk6g;f%NWcM;m2ngqF6lB^3^aF#ZtDnm{r-UW| Dgw$d0 literal 0 HcmV?d00001 diff --git a/assets/hbm/textures/items/powder_lithium_tiny.png b/assets/hbm/textures/items/powder_lithium_tiny.png new file mode 100644 index 0000000000000000000000000000000000000000..d2f3419d3b76a087bec1b6aa4e48515fe90de822 GIT binary patch literal 195 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#Vf r4$a?wP3j(B-T|(ipYC?>Kj5}>*7ZNS@ZWr(D;PXo{an^LB{Ts5lW9tP literal 0 HcmV?d00001 diff --git a/assets/hbm/textures/items/upgrade_effect_1.png b/assets/hbm/textures/items/upgrade_effect_1.png new file mode 100644 index 0000000000000000000000000000000000000000..6c04085e44998f8541a87a1637147514308ac54f GIT binary patch literal 343 zcmV-d0jU0oP)B3@qMb9t%&R~$jGVbe%q1!jrCNl~1a6kJ8xG;-M#T3$}kT%!RaeO_M4OU?03a|wN&(?SE pdqU4Y3mC0nC70J2)>iP}Pw zfG^1X84&=b&8eiz`f1~I0sv?do?qZ|p0Xr@CL#C59t0~^$9FJ&3n2g`aCd<9mHYu* z-GAA++c4w*EeptMq1%fyFmnmBxc2-2XXa6;luEi((q)wF&)3meZwKbC0Bax)Tz&n% pVH$)-0fQAULLD!{!C(CU^bI!;Y`$^@NTvV)002ovPDHLkV1iE$iHiUL literal 0 HcmV?d00001 diff --git a/assets/hbm/textures/items/upgrade_effect_3.png b/assets/hbm/textures/items/upgrade_effect_3.png new file mode 100644 index 0000000000000000000000000000000000000000..197691c46a2d697d0324d0c50d3defd053b28c65 GIT binary patch literal 361 zcmV-v0ha!WP)LZ@~pfFtLCGSnQV8mMi79t{sys z7uaGGNVvcj^j^SF5KV*wjLBH=$HfIhWqjS6dGCAgH@|^@7jY?6TnaU{ULQJ4Wk?Hg zWlmzuxH+3^lL0McU1i*#UV{Ynwp58R>+YT}GHn##7zCp<=tne+uzw>0TFOp!>~pGaVgZ{!?m#12|ub~hx&UGQW;W2Iz^;& z9yIn1Y&I&P^%Y literal 0 HcmV?d00001 diff --git a/assets/hbm/textures/items/upgrade_fortune_1.png b/assets/hbm/textures/items/upgrade_fortune_1.png new file mode 100644 index 0000000000000000000000000000000000000000..e63b62493af3d3bc5deb862dadc927f28cdd4c5b GIT binary patch literal 329 zcmV-P0k-~$P)YU6o`xRi=ZVc0~ z3D2sOm(Pb$zlHsZyL*_tS|{j$9-HMYz+$EVcqe5(UIH}i9IFNRZi=+eV%CoL0`kPj z@lW&d^02_Ls2At@2j>n-ZON*XtV;Q~I5c%lHdukDB)&xgPf6e@c|I>B@YLW7?F9Y` b@Mro0Xi;-vbb*Hb00000NkvXXu0mjf#eI-S literal 0 HcmV?d00001 diff --git a/assets/hbm/textures/items/upgrade_fortune_2.png b/assets/hbm/textures/items/upgrade_fortune_2.png new file mode 100644 index 0000000000000000000000000000000000000000..7b7e8b9806f264f0b992414294a11a045dd9d22d GIT binary patch literal 330 zcmV-Q0k!^#P)#&wyny^nW7RQAgCK?dIzuTGFkNJNF{+)`{N|9O_JHOXgtc+_xvW~w6 z?hiF8w|zI zwbBi43yX|T7M5*rUH{OzgUUGaT9enB_v6i{zRgA}@RYYU6o6&hK})@b4mvl*uAxhV~zHC3C53klD?C z1RnMka;XWVO>(gTG-fw5>-(UtUBB9+UclHtBA2>;?}Gr+BJNg@MaoR336vqASU)Pp zeiNP+F{}6GsNX^vGGD;Sizaw}f--D^?wakbBYKWtyAqYmPgpKBlWD@_>a?}5rQq`T zruOYQ0)Q{EdT%j literal 0 HcmV?d00001 diff --git a/assets/hbm/textures/items/upgrade_power_1.png b/assets/hbm/textures/items/upgrade_power_1.png new file mode 100644 index 0000000000000000000000000000000000000000..0cb39dbf76c046b4de6a971322d92ed16ff2ad08 GIT binary patch literal 331 zcmV-R0kr;!P)3gpl~F-FbZT(7?Y_tgXb_O5gaiHe-^y5+u9m zB=Ee;k))38D&XoS101r8Wchqs`rfi&&A~)?F#M;XJYyX7$PFLw>p}Mj`vngg)~~K&`~f{Z*25cs(L{Z{48w5z1H0_;$ zSX()+G#rPA1>R-l;;QpQm4FQd?)e<@rjY5b=B^p0DIG$i(wi?+a}O d{tEDC`UD$GZlySF8>9dL002ovPDHLkV1n;!iqrrA literal 0 HcmV?d00001 diff --git a/assets/hbm/textures/items/upgrade_power_2.png b/assets/hbm/textures/items/upgrade_power_2.png new file mode 100644 index 0000000000000000000000000000000000000000..0e94921f4b42e30aadd61b5fe71b9d4b2fc2537c GIT binary patch literal 332 zcmV-S0ki&zP)mO9M@a7hTy(l^Z1x6LF-^7;Nioef z>7v9Fh+U3gF~mwpwK9<0;90CY%wnPe5&Wx}_hvrc|MTGADb0+enUS&Y_xg%?X&p$` z@wdSJp+;U>>Q%(_yaFt;j%E39>3XkKG#LcUXNTmab$1^G&^5Y$f;2O7eQ^(M0vMK0 zhWTt4-Zh%{w_-AEp-s5Spm?#=kI&F1JD|JUA2K*PQ=cadZQ)=;`T{sOUH}{4K5Sbb z1f-b}Ke#QdUPVl=Di@sZAG|%tOH0>ix<;c;H=p_@8?7Kz5-*S-R1$tTu eUf{0)f2I$WUUtUOcm?qQ00000iyE}C|0IIauu|aeS@J0tQ=woO9&~y+L_sTnm-yiI)#yzFw)ZZ|4Cai$&3Zb z#y0{dxK8EbaGCT85=i20CgF+PY_00?r+vm1%PJ$ zteH-B;dL4F@tzL4EmQ#y5u~q%;^_sdUsM0;ya-j|b&Ms!wcN^@d zEFg@uG#B>`D^?z(yPV;8n``=q#vLS?p)Oj&k)B|;=B%5JewM3TAW%;hNN3fr?82m5<5iD N002ovPDHLkV1n=3ht~iA literal 0 HcmV?d00001 diff --git a/assets/hbm/textures/items/upgrade_speed_2.png b/assets/hbm/textures/items/upgrade_speed_2.png new file mode 100644 index 0000000000000000000000000000000000000000..2aaa7d1796d32587824f983aa28fd7066f324356 GIT binary patch literal 321 zcmV-H0lxl;P)b;z6vpvCr~{Jk;4ss z12-huTMjQ81-PH3tGA$==>!S+lSSR3c6_#>+f( znCkFw@%`@rWlSg<&Mc|#9%Chs3BWj(H*nFo;mmUJP}dcDXQ8!QXx;l4|GWGGTT)!q TuH(Fe00000NkvXXu0mjfrhAJ1 literal 0 HcmV?d00001 diff --git a/assets/hbm/textures/items/upgrade_speed_3.png b/assets/hbm/textures/items/upgrade_speed_3.png new file mode 100644 index 0000000000000000000000000000000000000000..d7d9f2cd6be5f7262e01f0e2406f5eb0543b2b84 GIT binary patch literal 331 zcmV-R0kr;!P)3q{j0gA-RaJzgDGQ((}wsaKP?|RSoZc_ z&9%4v;9x`UV<%ZsaKFy+!~4002ovPDHLkV1kCZk!k<{ literal 0 HcmV?d00001 diff --git a/assets/hbm/textures/items/upgrade_template.png b/assets/hbm/textures/items/upgrade_template.png new file mode 100644 index 0000000000000000000000000000000000000000..777f5841083c74bda1cca098d46ea415ce901a08 GIT binary patch literal 286 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 YZe=e{b!%mEFHlWyWMynfP)X9~k6vEhO8@`> diff --git a/assets/hbm/textures/models/ModelPylon.png b/assets/hbm/textures/models/ModelPylon.png new file mode 100755 index 0000000000000000000000000000000000000000..65cf39dad4adc1825220bede00388adc8ed67ddc GIT binary patch literal 1717 zcmV;m21@yfP)X2PMQ364?qajoMr20S>5wGZNwhao~c) zH$Z#`P8_*Z>J_!(5E?ZXq$amisl;x*u3gz2mYJQMc$*!+xBIZ-pH$WVv7dLwGxKKN zlO5oe<24l?9UawS7@{mo0KkhEFB-3-kR(YB0AUycfc`D@zg?c^IeQ%dAZRKK!%+WI z72qZeLtI^5Ej4O?f4>HR$zQmwh*g$k|axxRvnjRiKg zYZ_hVeN?%5E%m{yoC0%FKfJ1}>6%SG04f0hoSd9& z%op4=)K?v^vR!p;Pft%PJOKFi>w7f-#9@fcm|N@W-yWZJb|a+s0pET8DFER2XBWuI z(n)t2ADH(f09;JxYpSd6GI|6gdp-^k;dx8l1~VsMZh`I1*e18b0RUuWiPQ58>KK5t zZo|4cfjrMQmJ`tVfcxVZhoeXjZ&%%hRhyY@ZgR8_I6cph?9HEtt8Povw$==q?D9>Z zTW~mvmQJ|pHZ(PART_>v22f}pa52q+>0(a1>b9skZ|4D&gS5-J(W}7WC_=L5-(%${F$AIjugv6_^H_IujgB}5s*A?!MV>~}= zr{Bk9GWp+bmBoF4G)t?%{c)_8j1N*hr(Lxa+6Peb0dYJ)6h+#zyJ|`F z2vG5TTb<`Q#s_I@Ek*AG)WNOy0hD||91oWE^{!eHmV7{#6-Y;kPENXNNm%j$pWXWi z05FUOnB|K(y{`V@mnYrN2R!=X7y$6cpMPPN7fxCdmVCf4nme+8vddOl61IH6ooI;N zIBl(^V95u}@&cDvF9AT$aaSz`TRtG&zl+^C)x+CWOTm&47)AqJUcJPfXxK_i!j=!P z=d-Jpf+ZH1<;C2iXNx)Qs-<9y1$N^U>Hb|kr(LxaEct+8G{Bu`s6D%@mV_-I@HU?z z-M`yfOVRrPb#Uu_03{zVj0Q{ldRHw8OFm$h7ubzcyv=8=v?MI~0IHV!-hd?^K-H4) zydTiv?+w`U0aPso+xG$z-y3kimJg8l-hcz1_XC8!H{gIRA0Y9)0S9dF3U~EgW42hJ ztM3}~ydOZ+lCb3is9K8N2dINv?*mBh2Xy#*1D^K-Zt?d9Jv}`=Jv}`=Jv}`=Jv}`= zJzazRX2$XHaqas)>bi#Kd8q3ezCX{k)^&}#uJyI%b?SUoRiM~EeMrJB+ypc!Deg!VvI0;HOU>Ej2(nHM1An*i&Iy1?&oWo`=y0c<|r@R8@u3(~0)n zP5)Eusj!UzHGI{4Ez89)e)sNrk1OX!wWq@J0L+RgT@=8{$pl3)AHu3}z`}#8#!~F5 zu&e_1ZVmu`9DfDC@a$ML!W`-V$o3RiMu1%*d)YE8Zq9iQdnznDK{X20lBODBuJ7jj zwkuDyr$BxHwl{Cm=K8LV%|=q}$@S;Bi9I(J<_5>?HM;>+dkQQ*;LV#iOVL_WgKQ6O z&UcDE6;C>zm$nb2<9Ts=b2v!H^Ah%fDNME<&r8_{(($~wy>vV;Z68R-^V0T#bUZI@ zuSb9yKCbb2*X;w-OPVLP70*lCdk-Hztao;Hu02ijhW74B{or&uMP1kEvVCBlw4bcP z+?(6+c-QTHb%A6&FKO>L#oybE=f&;qA!4$vcwW*zsB77HUfTX&MI_n_xVBIn00000 LNkvXXu0mjfW%5gz literal 0 HcmV?d00001 diff --git a/com/hbm/blocks/ModBlocks.java b/com/hbm/blocks/ModBlocks.java index c4fc80b80..c6b476233 100644 --- a/com/hbm/blocks/ModBlocks.java +++ b/com/hbm/blocks/ModBlocks.java @@ -1,114 +1,10 @@ package com.hbm.blocks; -import com.hbm.blocks.bomb.BlockCrashedBomb; -import com.hbm.blocks.bomb.BombFlameWar; -import com.hbm.blocks.bomb.BombFloat; -import com.hbm.blocks.bomb.BombMulti; -import com.hbm.blocks.bomb.BombThermo; -import com.hbm.blocks.bomb.CheaterVirus; -import com.hbm.blocks.bomb.CheaterVirusSeed; -import com.hbm.blocks.bomb.CrystalPulsar; -import com.hbm.blocks.bomb.CrystalVirus; -import com.hbm.blocks.bomb.DetCord; -import com.hbm.blocks.bomb.LaunchPad; -import com.hbm.blocks.bomb.NukeBoy; -import com.hbm.blocks.bomb.NukeCustom; -import com.hbm.blocks.bomb.NukeFleija; -import com.hbm.blocks.bomb.NukeGadget; -import com.hbm.blocks.bomb.NukeMan; -import com.hbm.blocks.bomb.NukeMike; -import com.hbm.blocks.bomb.NukePrototype; -import com.hbm.blocks.bomb.NukeTsar; -import com.hbm.blocks.fluid.AcidBlock; -import com.hbm.blocks.fluid.AcidFluid; -import com.hbm.blocks.fluid.MudBlock; -import com.hbm.blocks.fluid.MudFluid; -import com.hbm.blocks.fluid.ToxicBlock; -import com.hbm.blocks.fluid.ToxicFluid; -import com.hbm.blocks.generic.BlockCrate; -import com.hbm.blocks.generic.BlockGeneric; -import com.hbm.blocks.generic.BlockMush; -import com.hbm.blocks.generic.BlockMushHuge; -import com.hbm.blocks.generic.BlockNoDrop; -import com.hbm.blocks.generic.BlockOre; -import com.hbm.blocks.generic.BlockPlasma; -import com.hbm.blocks.generic.DecoBlock; -import com.hbm.blocks.generic.DecoBlockAlt; -import com.hbm.blocks.generic.DecoPoleSatelliteReceiver; -import com.hbm.blocks.generic.DecoPoleTop; -import com.hbm.blocks.generic.DecoSteelPoles; -import com.hbm.blocks.generic.DecoTapeRecorder; -import com.hbm.blocks.generic.Guide; -import com.hbm.blocks.generic.RedBarrel; -import com.hbm.blocks.generic.ReinforcedBlock; -import com.hbm.blocks.generic.ReinforcedLamp; -import com.hbm.blocks.generic.WasteEarth; -import com.hbm.blocks.generic.WasteLog; -import com.hbm.blocks.generic.YellowBarrel; -import com.hbm.blocks.machine.BlockCable; -import com.hbm.blocks.machine.BlockConverterHeRf; -import com.hbm.blocks.machine.BlockConverterRfHe; -import com.hbm.blocks.machine.BlockGasDuct; -import com.hbm.blocks.machine.BlockHatch; -import com.hbm.blocks.machine.BlockOilDuct; -import com.hbm.blocks.machine.OilDuctSolid; -import com.hbm.blocks.machine.PylonRedWire; -import com.hbm.blocks.machine.BlockReactor; -import com.hbm.blocks.machine.BlockSeal; -import com.hbm.blocks.machine.DummyBlockCentrifuge; -import com.hbm.blocks.machine.DummyBlockCyclotron; -import com.hbm.blocks.machine.DummyBlockFlare; -import com.hbm.blocks.machine.DummyBlockIGenerator; -import com.hbm.blocks.machine.DummyBlockWell; -import com.hbm.blocks.machine.FWatzCore; -import com.hbm.blocks.machine.FWatzHatch; -import com.hbm.blocks.machine.FactoryCoreAdvanced; -import com.hbm.blocks.machine.FactoryCoreTitanium; -import com.hbm.blocks.machine.FactoryHatch; -import com.hbm.blocks.machine.FusionCore; -import com.hbm.blocks.machine.FusionHatch; -import com.hbm.blocks.machine.GasDuctSolid; -import com.hbm.blocks.machine.MachineBattery; -import com.hbm.blocks.machine.MachineCMBFactory; -import com.hbm.blocks.machine.MachineCentrifuge; -import com.hbm.blocks.machine.MachineCoal; -import com.hbm.blocks.machine.MachineCyclotron; -import com.hbm.blocks.machine.MachineDeuterium; -import com.hbm.blocks.machine.MachineDiFurnace; -import com.hbm.blocks.machine.MachineDiesel; -import com.hbm.blocks.machine.MachineElectricFurnace; -import com.hbm.blocks.machine.MachineGasFlare; -import com.hbm.blocks.machine.MachineGenerator; -import com.hbm.blocks.machine.MachineIGenerator; -import com.hbm.blocks.machine.MachineNukeFurnace; -import com.hbm.blocks.machine.MachineOilWell; -import com.hbm.blocks.machine.MachinePuF6Tank; -import com.hbm.blocks.machine.MachineRTG; -import com.hbm.blocks.machine.MachineReactor; -import com.hbm.blocks.machine.MachineRefinery; -import com.hbm.blocks.machine.MachineReiXMainframe; -import com.hbm.blocks.machine.MachineRtgFurnace; -import com.hbm.blocks.machine.MachineSchrabidiumTransmutator; -import com.hbm.blocks.machine.MachineShredder; -import com.hbm.blocks.machine.MachineTeleporter; -import com.hbm.blocks.machine.MachineUF6Tank; -import com.hbm.blocks.machine.RailBooster; -import com.hbm.blocks.machine.RailHighspeed; -import com.hbm.blocks.machine.ReactorCore; -import com.hbm.blocks.machine.ReactorHatch; -import com.hbm.blocks.machine.WatzCore; -import com.hbm.blocks.machine.WatzHatch; -import com.hbm.blocks.machine.WireCoated; -import com.hbm.blocks.test.TestBomb; -import com.hbm.blocks.test.TestBombAdvanced; -import com.hbm.blocks.test.TestContainer; -import com.hbm.blocks.test.TestEventTester; -import com.hbm.blocks.test.TestMissile; -import com.hbm.blocks.test.TestNuke; -import com.hbm.blocks.test.TestObjTester; -import com.hbm.blocks.test.TestRender; -import com.hbm.blocks.test.TestRotationTester; -import com.hbm.blocks.test.TestTicker; +import com.hbm.blocks.generic.*; +import com.hbm.blocks.bomb.*; +import com.hbm.blocks.fluid.*; +import com.hbm.blocks.machine.*; +import com.hbm.blocks.test.*; import com.hbm.items.bomb.ItemPrototypeBlock; import com.hbm.items.special.ItemOreBlock; import com.hbm.items.special.ItemPlasmaBlock; @@ -267,6 +163,14 @@ public class ModBlocks { public static Block seal_frame; public static Block seal_controller; public static Block seal_hatch; + + public static Block marker_structure; + + public static Block crate_iron; + public static final int guiID_crate_iron = 46; + + public static Block crate_steel; + public static final int guiID_crate_steel = 47; public static Block nuke_gadget; public static final int guiID_nuke_gadget = 3; @@ -444,6 +348,10 @@ public class ModBlocks { public static Block machine_refinery; public static final int guiID_machine_refinery = 43; + public static Block machine_drill; + public static Block drill_pipe; + public static final int guiID_machine_drill = 45; + public static Block launch_pad; public static Block launch_pad_generic; public static Block launch_pad_incendiary; @@ -501,6 +409,8 @@ public class ModBlocks { public static Block dummy_port_well; public static Block dummy_block_flare; public static Block dummy_port_flare; + public static Block dummy_block_drill; + public static Block dummy_port_drill; private static void initializeBlock() { @@ -580,7 +490,7 @@ public class ModBlocks { block_verticium = new BlockGeneric(Material.iron).setBlockName("block_verticium").setCreativeTab(MainRegistry.tabBlock).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":block_verticium"); gravel_obsidian = new BlockFalling(Material.iron).setBlockName("gravel_obsidian").setCreativeTab(MainRegistry.tabBlock).setStepSound(Block.soundTypeGravel).setHardness(5.0F).setResistance(600.0F).setBlockTextureName(RefStrings.MODID + ":gravel_obsidian"); - asphalt = new BlockGeneric(Material.rock).setBlockName("asphalt").setCreativeTab(MainRegistry.tabBlock).setLightOpacity(15).setHardness(15.0F).setResistance(6000.0F).setBlockTextureName(RefStrings.MODID + ":asphalt"); + asphalt = new BlockGeneric(Material.rock).setBlockName("asphalt").setCreativeTab(MainRegistry.tabBlock).setLightOpacity(15).setHardness(15.0F).setResistance(100.0F).setBlockTextureName(RefStrings.MODID + ":asphalt"); reinforced_brick = new BlockGeneric(Material.rock).setBlockName("reinforced_brick").setCreativeTab(MainRegistry.tabBlock).setLightOpacity(15).setHardness(15.0F).setResistance(6000.0F).setBlockTextureName(RefStrings.MODID + ":reinforced_brick"); reinforced_glass = new ReinforcedBlock(Material.glass).setBlockName("reinforced_glass").setCreativeTab(MainRegistry.tabBlock).setLightOpacity(0).setHardness(15.0F).setResistance(6000.0F).setBlockTextureName(RefStrings.MODID + ":reinforced_glass"); @@ -596,7 +506,7 @@ public class ModBlocks { cmb_brick = new BlockGeneric(Material.rock).setBlockName("cmb_brick").setCreativeTab(MainRegistry.tabBlock).setHardness(25.0F).setResistance(6000.0F).setBlockTextureName(RefStrings.MODID + ":cmb_brick"); cmb_brick_reinforced = new BlockGeneric(Material.rock).setBlockName("cmb_brick_reinforced").setCreativeTab(MainRegistry.tabBlock).setHardness(25.0F).setResistance(60000.0F).setBlockTextureName(RefStrings.MODID + ":cmb_brick_reinforced"); - block_meteor = new BlockGeneric(Material.rock).setBlockName("block_meteor").setCreativeTab(MainRegistry.tabBlock).setHardness(15.0F).setResistance(6000.0F).setBlockTextureName(RefStrings.MODID + ":block_meteor"); + block_meteor = new BlockOre(Material.rock).setBlockName("block_meteor").setCreativeTab(MainRegistry.tabBlock).setHardness(15.0F).setResistance(6000.0F).setBlockTextureName(RefStrings.MODID + ":block_meteor"); tape_recorder = new DecoTapeRecorder(Material.rock).setBlockName("tape_recorder").setCreativeTab(MainRegistry.tabBlock).setHardness(15.0F).setResistance(15.0F).setBlockTextureName(RefStrings.MODID + ":deco_tape_recorder"); steel_poles = new DecoSteelPoles(Material.rock).setBlockName("steel_poles").setCreativeTab(MainRegistry.tabBlock).setHardness(15.0F).setResistance(15.0F).setBlockTextureName(RefStrings.MODID + ":deco_steel_poles"); @@ -748,6 +658,8 @@ public class ModBlocks { seal_controller = new BlockSeal(Material.iron).setBlockName("seal_controller").setHardness(10.0F).setResistance(100.0F).setCreativeTab(MainRegistry.tabBlock); seal_hatch = new BlockHatch(Material.iron).setBlockName("seal_hatch").setHardness(Float.POSITIVE_INFINITY).setResistance(Float.POSITIVE_INFINITY).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":seal_hatch_3"); + marker_structure = new BlockMarker(Material.iron).setBlockName("marker_structure").setHardness(0.0F).setResistance(0.0F).setLightLevel(1.0F).setCreativeTab(MainRegistry.tabBlock).setBlockTextureName(RefStrings.MODID + ":marker_structure"); + launch_pad = new LaunchPad(Material.iron).setBlockName("launch_pad").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.tabNuke).setBlockTextureName(RefStrings.MODID + ":launch_pad"); launch_pad_generic = new LaunchPad(Material.iron).setBlockName("launch_pad_generic").setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":launch_pad"); launch_pad_incendiary = new LaunchPad(Material.iron).setBlockName("launch_pad_incendiary").setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":launch_pad"); @@ -773,11 +685,15 @@ public class ModBlocks { rail_booster = new RailBooster().setBlockName("rail_booster").setHardness(5.0F).setResistance(10.0F).setCreativeTab(CreativeTabs.tabTransport).setBlockTextureName(RefStrings.MODID + ":rail_booster"); crate = new BlockCrate(Material.iron).setBlockName("crate").setStepSound(Block.soundTypeWood).setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.tabNuke).setBlockTextureName(RefStrings.MODID + ":crate"); + crate_iron = new BlockStorageCrate(Material.iron).setBlockName("crate_iron").setStepSound(Block.soundTypeMetal).setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.tabBlock); + crate_steel = new BlockStorageCrate(Material.iron).setBlockName("crate_steel").setStepSound(Block.soundTypeMetal).setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.tabBlock); machine_well = new MachineOilWell(Material.iron).setBlockName("machine_well").setHardness(5.0F).setResistance(100.0F).setCreativeTab(MainRegistry.tabBlock).setBlockTextureName(RefStrings.MODID + ":machine_well"); oil_pipe = new BlockNoDrop(Material.iron).setBlockName("oil_pipe").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":oil_pipe"); machine_flare = new MachineGasFlare(Material.iron).setBlockName("machine_flare").setHardness(5.0F).setResistance(100.0F).setCreativeTab(MainRegistry.tabBlock).setBlockTextureName(RefStrings.MODID + ":machine_flare"); machine_refinery = new MachineRefinery(Material.iron).setBlockName("machine_refinery").setHardness(5.0F).setResistance(100.0F).setCreativeTab(MainRegistry.tabBlock).setBlockTextureName(RefStrings.MODID + ":machine_refinery_side"); + machine_drill = new MachineMiningDrill(Material.iron).setBlockName("machine_drill").setHardness(5.0F).setResistance(100.0F).setCreativeTab(MainRegistry.tabBlock).setBlockTextureName(RefStrings.MODID + ":machine_drill"); + drill_pipe = new BlockNoDrop(Material.iron).setBlockName("drill_pipe").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":drill_pipe"); machine_schrabidium_transmutator = new MachineSchrabidiumTransmutator(Material.iron).setBlockName("machine_schrabidium_transmutator").setHardness(5.0F).setResistance(100.0F).setCreativeTab(MainRegistry.tabBlock); @@ -815,6 +731,8 @@ public class ModBlocks { dummy_port_well = new DummyBlockWell(Material.iron).setBlockName("dummy_port_well").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":block_steel"); dummy_block_flare = new DummyBlockFlare(Material.iron).setBlockName("dummy_block_flare").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":block_steel"); dummy_port_flare = new DummyBlockFlare(Material.iron).setBlockName("dummy_port_flare").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":block_steel"); + dummy_block_drill = new DummyBlockDrill(Material.iron).setBlockName("dummy_block_drill").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":block_steel"); + dummy_port_drill = new DummyBlockDrill(Material.iron).setBlockName("dummy_port_drill").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":block_steel"); } private static void registerBlock() { @@ -970,6 +888,10 @@ public class ModBlocks { GameRegistry.registerBlock(seal_controller, seal_controller.getUnlocalizedName()); GameRegistry.registerBlock(seal_hatch, seal_hatch.getUnlocalizedName()); + //Crates + GameRegistry.registerBlock(crate_iron, crate_iron.getUnlocalizedName()); + GameRegistry.registerBlock(crate_steel, crate_steel.getUnlocalizedName()); + //Machines GameRegistry.registerBlock(machine_difurnace_off, machine_difurnace_off.getUnlocalizedName()); GameRegistry.registerBlock(machine_difurnace_on, machine_difurnace_on.getUnlocalizedName()); @@ -1012,6 +934,7 @@ public class ModBlocks { GameRegistry.registerBlock(machine_well, machine_well.getUnlocalizedName()); GameRegistry.registerBlock(machine_flare, machine_flare.getUnlocalizedName()); GameRegistry.registerBlock(machine_refinery, machine_refinery.getUnlocalizedName()); + GameRegistry.registerBlock(machine_drill, machine_drill.getUnlocalizedName()); GameRegistry.registerBlock(machine_schrabidium_transmutator, machine_schrabidium_transmutator.getUnlocalizedName()); GameRegistry.registerBlock(machine_combine_factory, machine_combine_factory.getUnlocalizedName()); GameRegistry.registerBlock(machine_teleporter, machine_teleporter.getUnlocalizedName()); @@ -1019,6 +942,9 @@ public class ModBlocks { //ReiX Machines //GameRegistry.registerBlock(machine_reix_mainframe, machine_reix_mainframe.getUnlocalizedName()); + //Multiblock Helpers + GameRegistry.registerBlock(marker_structure, marker_structure.getUnlocalizedName()); + //Industrial Factories GameRegistry.registerBlock(factory_titanium_hull, factory_titanium_hull.getUnlocalizedName()); GameRegistry.registerBlock(factory_titanium_furnace, factory_titanium_furnace.getUnlocalizedName()); @@ -1112,9 +1038,12 @@ public class ModBlocks { GameRegistry.registerBlock(dummy_port_well, dummy_port_well.getUnlocalizedName()); GameRegistry.registerBlock(dummy_block_flare, dummy_block_flare.getUnlocalizedName()); GameRegistry.registerBlock(dummy_port_flare, dummy_port_flare.getUnlocalizedName()); + GameRegistry.registerBlock(dummy_block_drill, dummy_block_drill.getUnlocalizedName()); + GameRegistry.registerBlock(dummy_port_drill, dummy_port_drill.getUnlocalizedName()); //Other Technical Blocks GameRegistry.registerBlock(oil_pipe, oil_pipe.getUnlocalizedName()); + GameRegistry.registerBlock(drill_pipe, drill_pipe.getUnlocalizedName()); //??? GameRegistry.registerBlock(crystal_virus, crystal_virus.getUnlocalizedName()); diff --git a/com/hbm/blocks/generic/BlockMarker.java b/com/hbm/blocks/generic/BlockMarker.java new file mode 100644 index 000000000..2bd3626af --- /dev/null +++ b/com/hbm/blocks/generic/BlockMarker.java @@ -0,0 +1,209 @@ +package com.hbm.blocks.generic; + +import static net.minecraftforge.common.util.ForgeDirection.EAST; +import static net.minecraftforge.common.util.ForgeDirection.NORTH; +import static net.minecraftforge.common.util.ForgeDirection.SOUTH; +import static net.minecraftforge.common.util.ForgeDirection.WEST; + +import java.util.Random; + +import com.hbm.blocks.ModBlocks; +import com.hbm.main.MainRegistry; +import com.hbm.tileentity.TileEntityCoreAdvanced; +import com.hbm.tileentity.TileEntityCoreTitanium; +import com.hbm.tileentity.TileEntityStructureMarker; + +import cpw.mods.fml.common.network.internal.FMLNetworkHandler; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.block.Block; +import net.minecraft.block.BlockContainer; +import net.minecraft.block.material.Material; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.AxisAlignedBB; +import net.minecraft.util.ChatComponentText; +import net.minecraft.util.MathHelper; +import net.minecraft.util.MovingObjectPosition; +import net.minecraft.util.Vec3; +import net.minecraft.world.World; + +public class BlockMarker extends BlockContainer { + + public BlockMarker(Material p_i45386_1_) { + super(p_i45386_1_); + } + + @Override + public TileEntity createNewTileEntity(World p_149915_1_, int p_149915_2_) { + return new TileEntityStructureMarker(); + } + + public AxisAlignedBB getCollisionBoundingBoxFromPool(World p_149668_1_, int p_149668_2_, int p_149668_3_, int p_149668_4_) + { + return null; + } + + public boolean isOpaqueCube() + { + return false; + } + + public boolean renderAsNormalBlock() + { + return false; + } + + public int getRenderType() + { + return 2; + } + + private boolean func_150107_m(World p_150107_1_, int p_150107_2_, int p_150107_3_, int p_150107_4_) + { + if (World.doesBlockHaveSolidTopSurface(p_150107_1_, p_150107_2_, p_150107_3_, p_150107_4_)) + { + return true; + } + else + { + Block block = p_150107_1_.getBlock(p_150107_2_, p_150107_3_, p_150107_4_); + return block.canPlaceTorchOnTop(p_150107_1_, p_150107_2_, p_150107_3_, p_150107_4_); + } + } + + public boolean canPlaceBlockAt(World p_149742_1_, int p_149742_2_, int p_149742_3_, int p_149742_4_) + { + return func_150107_m(p_149742_1_, p_149742_2_, p_149742_3_ - 1, p_149742_4_); + } + + @Override + public void onBlockPlacedBy(World world, int x, int y, int z, EntityLivingBase player, ItemStack itemStack) { + int i = MathHelper.floor_double(player.rotationYaw * 4.0F / 360.0F + 0.5D) & 3; + + if(i == 0) + { + world.setBlockMetadataWithNotify(x, y, z, 6, 2); + } + if(i == 1) + { + world.setBlockMetadataWithNotify(x, y, z, 7, 2); + } + if(i == 2) + { + world.setBlockMetadataWithNotify(x, y, z, 8, 2); + } + if(i == 3) + { + world.setBlockMetadataWithNotify(x, y, z, 9, 2); + } + } + + public void updateTick(World p_149674_1_, int p_149674_2_, int p_149674_3_, int p_149674_4_, Random p_149674_5_) + { + super.updateTick(p_149674_1_, p_149674_2_, p_149674_3_, p_149674_4_, p_149674_5_); + + if (p_149674_1_.getBlockMetadata(p_149674_2_, p_149674_3_, p_149674_4_) == 0) + { + this.onBlockAdded(p_149674_1_, p_149674_2_, p_149674_3_, p_149674_4_); + } + } + + public void onNeighborBlockChange(World p_149695_1_, int p_149695_2_, int p_149695_3_, int p_149695_4_, Block p_149695_5_) + { + this.func_150108_b(p_149695_1_, p_149695_2_, p_149695_3_, p_149695_4_, p_149695_5_); + } + + protected boolean func_150108_b(World p_150108_1_, int p_150108_2_, int p_150108_3_, int p_150108_4_, Block p_150108_5_) + { + if (this.func_150109_e(p_150108_1_, p_150108_2_, p_150108_3_, p_150108_4_)) + { + int l = p_150108_1_.getBlockMetadata(p_150108_2_, p_150108_3_, p_150108_4_); + boolean flag = false; + + if (!this.func_150107_m(p_150108_1_, p_150108_2_, p_150108_3_ - 1, p_150108_4_)) + { + flag = true; + } + + if (flag) + { + this.dropBlockAsItem(p_150108_1_, p_150108_2_, p_150108_3_, p_150108_4_, p_150108_1_.getBlockMetadata(p_150108_2_, p_150108_3_, p_150108_4_), 0); + p_150108_1_.setBlockToAir(p_150108_2_, p_150108_3_, p_150108_4_); + return true; + } + else + { + return false; + } + } + else + { + return true; + } + } + + protected boolean func_150109_e(World p_150109_1_, int p_150109_2_, int p_150109_3_, int p_150109_4_) + { + if (!this.canPlaceBlockAt(p_150109_1_, p_150109_2_, p_150109_3_, p_150109_4_)) + { + if (p_150109_1_.getBlock(p_150109_2_, p_150109_3_, p_150109_4_) == this) + { + this.dropBlockAsItem(p_150109_1_, p_150109_2_, p_150109_3_, p_150109_4_, p_150109_1_.getBlockMetadata(p_150109_2_, p_150109_3_, p_150109_4_), 0); + p_150109_1_.setBlockToAir(p_150109_2_, p_150109_3_, p_150109_4_); + } + + return false; + } + else + { + return true; + } + } + + public MovingObjectPosition collisionRayTrace(World p_149731_1_, int p_149731_2_, int p_149731_3_, int p_149731_4_, Vec3 p_149731_5_, Vec3 p_149731_6_) + { + int l = p_149731_1_.getBlockMetadata(p_149731_2_, p_149731_3_, p_149731_4_) & 7; + float f = 0.15F; + f = 0.1F; + this.setBlockBounds(0.5F - f, 0.0F, 0.5F - f, 0.5F + f, 0.6F, 0.5F + f); + + return super.collisionRayTrace(p_149731_1_, p_149731_2_, p_149731_3_, p_149731_4_, p_149731_5_, p_149731_6_); + } + + @Override + public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) { + if(world.isRemote) + { + int i = ((TileEntityStructureMarker)world.getTileEntity(x, y, z)).type + 1; + if(i > 6) + i -= 7; + if(i == 0) + player.addChatMessage(new ChatComponentText("[Structure Marker] Set template: Factory")); + if(i == 1) + player.addChatMessage(new ChatComponentText("[Structure Marker] Set template: Nuclear Reactor")); + if(i == 2) + player.addChatMessage(new ChatComponentText("[Structure Marker] Set template: Nuclear Reactor with Concrete Casing")); + if(i == 3) + player.addChatMessage(new ChatComponentText("[Structure Marker] Set template: Fusion Reactor")); + if(i == 4) + player.addChatMessage(new ChatComponentText("[Structure Marker] Set template: Fusion Reactor with Internal Coating")); + if(i == 5) + player.addChatMessage(new ChatComponentText("[Structure Marker] Set template: Watz Power Plant")); + if(i == 6) + player.addChatMessage(new ChatComponentText("[Structure Marker] Set template: Fusionary Watz Plant")); + return true; + } else if(!player.isSneaking()) + { + if(world.getTileEntity(x, y, z) != null && world.getTileEntity(x, y, z) instanceof TileEntityStructureMarker) { + ((TileEntityStructureMarker)world.getTileEntity(x, y, z)).type ++; + } + return true; + } else { + return false; + } + } + +} diff --git a/com/hbm/blocks/generic/BlockOre.java b/com/hbm/blocks/generic/BlockOre.java index 44cb651da..3197e843f 100644 --- a/com/hbm/blocks/generic/BlockOre.java +++ b/com/hbm/blocks/generic/BlockOre.java @@ -34,7 +34,7 @@ public class BlockOre extends Block { } @Override - public Item getItemDropped(int p_149650_1_, Random p_149650_2_, int p_149650_3_) + public Item getItemDropped(int i, Random rand, int j) { if(this == ModBlocks.ore_fluorite) { @@ -66,7 +66,11 @@ public class BlockOre extends Block { } if(this == ModBlocks.ore_nether_fire) { - return p_149650_2_.nextInt(2) == 0 ? ModItems.powder_fire : Items.blaze_powder; + return rand.nextInt(2) == 0 ? ModItems.powder_fire : Items.blaze_powder; + } + if(this == ModBlocks.block_meteor) + { + return rand.nextInt(10) == 0 ? ModItems.plate_dalekanium : Item.getItemFromBlock(ModBlocks.block_meteor); } return Item.getItemFromBlock(this); diff --git a/com/hbm/blocks/generic/BlockStorageCrate.java b/com/hbm/blocks/generic/BlockStorageCrate.java new file mode 100644 index 000000000..415637c14 --- /dev/null +++ b/com/hbm/blocks/generic/BlockStorageCrate.java @@ -0,0 +1,43 @@ +package com.hbm.blocks.generic; + +import com.hbm.blocks.ModBlocks; +import com.hbm.lib.RefStrings; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.block.Block; +import net.minecraft.block.material.Material; +import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.util.IIcon; + +public class BlockStorageCrate extends Block { + + @SideOnly(Side.CLIENT) + private IIcon iconTop; + + public BlockStorageCrate(Material p_i45394_1_) { + super(p_i45394_1_); + } + + @Override + @SideOnly(Side.CLIENT) + public void registerBlockIcons(IIconRegister iconRegister) { + if(this == ModBlocks.crate_iron) + { + this.iconTop = iconRegister.registerIcon(RefStrings.MODID + ":crate_iron_top"); + this.blockIcon = iconRegister.registerIcon(RefStrings.MODID + ":crate_iron_side"); + } + if(this == ModBlocks.crate_steel) + { + this.iconTop = iconRegister.registerIcon(RefStrings.MODID + ":crate_steel_top"); + this.blockIcon = iconRegister.registerIcon(RefStrings.MODID + ":crate_steel_side"); + } + } + + @Override + @SideOnly(Side.CLIENT) + public IIcon getIcon(int side, int metadata) { + return side == 1 ? this.iconTop : (side == 0 ? this.iconTop : this.blockIcon); + } + +} diff --git a/com/hbm/blocks/machine/DummyBlockDrill.java b/com/hbm/blocks/machine/DummyBlockDrill.java new file mode 100644 index 000000000..d16574e5b --- /dev/null +++ b/com/hbm/blocks/machine/DummyBlockDrill.java @@ -0,0 +1,109 @@ +package com.hbm.blocks.machine; + +import java.util.Random; + +import com.hbm.blocks.ModBlocks; +import com.hbm.interfaces.IDummy; +import com.hbm.main.MainRegistry; +import com.hbm.tileentity.TileEntityDummy; +import com.hbm.tileentity.TileEntityMachineIGenerator; +import com.hbm.tileentity.TileEntityMachineMiningDrill; +import com.hbm.tileentity.TileEntityMachineCentrifuge; +import com.hbm.tileentity.TileEntityMachineElectricFurnace; + +import cpw.mods.fml.common.network.internal.FMLNetworkHandler; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.block.Block; +import net.minecraft.block.BlockContainer; +import net.minecraft.block.material.Material; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.init.Blocks; +import net.minecraft.item.Item; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.world.World; + +public class DummyBlockDrill extends BlockContainer implements IDummy { + + public static boolean safeBreak = false; + + public DummyBlockDrill(Material p_i45386_1_) { + super(p_i45386_1_); + } + + @Override + public TileEntity createNewTileEntity(World p_149915_1_, int p_149915_2_) { + return new TileEntityDummy(); + } + + public void breakBlock(World world, int x, int y, int z, Block block, int i) + { + if(!safeBreak) { + TileEntity te = world.getTileEntity(x, y, z); + if(te != null && te instanceof TileEntityDummy) { + int a = ((TileEntityDummy)te).targetX; + int b = ((TileEntityDummy)te).targetY; + int c = ((TileEntityDummy)te).targetZ; + + //world.getBlock(a, b, c).breakBlock(world, a, b, c, block, i); + if(!world.isRemote) + world.func_147480_a(a, b, c, true); + } + } + world.removeTileEntity(x, y, z); + } + + @Override + public int getRenderType() { + return -1; + } + + @Override + public boolean isOpaqueCube() { + return false; + } + + @Override + public boolean renderAsNormalBlock() { + return false; + } + + @Override + public Item getItemDropped(int p_149650_1_, Random p_149650_2_, int p_149650_3_) + { + return null; + } + + @Override + @SideOnly(Side.CLIENT) + public Item getItem(World world, int x, int y, int z) + { + return Item.getItemFromBlock(ModBlocks.machine_drill); + } + + @Override + public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) { + if(world.isRemote) + { + return true; + } else if(!player.isSneaking()) + { + TileEntity te = world.getTileEntity(x, y, z); + if(te != null && te instanceof TileEntityDummy) { + int a = ((TileEntityDummy)te).targetX; + int b = ((TileEntityDummy)te).targetY; + int c = ((TileEntityDummy)te).targetZ; + + TileEntityMachineMiningDrill entity = (TileEntityMachineMiningDrill) world.getTileEntity(a, b, c); + if(entity != null) + { + FMLNetworkHandler.openGui(player, MainRegistry.instance, ModBlocks.guiID_machine_drill, world, a, b, c); + } + } + return true; + } else { + return false; + } + } + +} diff --git a/com/hbm/blocks/machine/MachineMiningDrill.java b/com/hbm/blocks/machine/MachineMiningDrill.java new file mode 100644 index 000000000..aae8b8467 --- /dev/null +++ b/com/hbm/blocks/machine/MachineMiningDrill.java @@ -0,0 +1,180 @@ +package com.hbm.blocks.machine; + +import java.util.Random; + +import com.hbm.blocks.ModBlocks; +import com.hbm.handler.MultiblockHandler; +import com.hbm.interfaces.IMultiblock; +import com.hbm.tileentity.TileEntityDummy; +import com.hbm.tileentity.TileEntityMachineIGenerator; +import com.hbm.tileentity.TileEntityMachineMiningDrill; + +import net.minecraft.block.BlockContainer; +import net.minecraft.block.material.Material; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.MathHelper; +import net.minecraft.world.World; + +public class MachineMiningDrill extends BlockContainer implements IMultiblock { + + public MachineMiningDrill(Material p_i45386_1_) { + super(p_i45386_1_); + } + + @Override + public TileEntity createNewTileEntity(World p_149915_1_, int p_149915_2_) { + return new TileEntityMachineMiningDrill(); + + } + + @Override + public Item getItemDropped(int p_149650_1_, Random p_149650_2_, int p_149650_3_) { + return Item.getItemFromBlock(ModBlocks.machine_drill); + } + + @Override + public int getRenderType() { + return -1; + } + + @Override + public boolean isOpaqueCube() { + return false; + } + + @Override + public boolean renderAsNormalBlock() { + return false; + } + + @Override + public void onBlockPlacedBy(World world, int x, int y, int z, EntityLivingBase player, ItemStack itemStack) { + int i = MathHelper.floor_double(player.rotationYaw * 4.0F / 360.0F + 0.5D) & 3; + + if (i == 0) { + world.setBlockMetadataWithNotify(x, y, z, 5, 2); + if(MultiblockHandler.checkSpace(world, x, y, z, MultiblockHandler.drillDimension)) { + MultiblockHandler.fillUp(world, x, y, z, MultiblockHandler.drillDimension, ModBlocks.dummy_block_drill); + + // + DummyBlockDrill.safeBreak = true; + world.setBlock(x + 1, y, z, ModBlocks.dummy_port_drill); + TileEntity te = world.getTileEntity(x + 1, y, z); + if(te instanceof TileEntityDummy) { + TileEntityDummy dummy = (TileEntityDummy)te; + dummy.targetX = x; + dummy.targetY = y; + dummy.targetZ = z; + } + world.setBlock(x - 1, y, z, ModBlocks.dummy_port_drill); + TileEntity te2 = world.getTileEntity(x - 1, y, z); + if(te instanceof TileEntityDummy) { + TileEntityDummy dummy = (TileEntityDummy)te2; + dummy.targetX = x; + dummy.targetY = y; + dummy.targetZ = z; + } + DummyBlockDrill.safeBreak = false; + // + + } else + world.func_147480_a(x, y, z, true); + } + if (i == 1) { + world.setBlockMetadataWithNotify(x, y, z, 3, 2); + if(MultiblockHandler.checkSpace(world, x, y, z, MultiblockHandler.drillDimension)) { + MultiblockHandler.fillUp(world, x, y, z, MultiblockHandler.drillDimension, ModBlocks.dummy_block_drill); + + // + DummyBlockDrill.safeBreak = true; + world.setBlock(x, y, z + 1, ModBlocks.dummy_port_drill); + TileEntity te = world.getTileEntity(x, y, z + 1); + if(te instanceof TileEntityDummy) { + TileEntityDummy dummy = (TileEntityDummy)te; + dummy.targetX = x; + dummy.targetY = y; + dummy.targetZ = z; + } + world.setBlock(x, y, z - 1, ModBlocks.dummy_port_drill); + TileEntity te2 = world.getTileEntity(x, y, z - 1); + if(te instanceof TileEntityDummy) { + TileEntityDummy dummy = (TileEntityDummy)te2; + dummy.targetX = x; + dummy.targetY = y; + dummy.targetZ = z; + } + DummyBlockDrill.safeBreak = false; + // + + } else + world.func_147480_a(x, y, z, true); + } + if (i == 2) { + world.setBlockMetadataWithNotify(x, y, z, 4, 2); + if(MultiblockHandler.checkSpace(world, x, y, z, MultiblockHandler.drillDimension)) { + MultiblockHandler.fillUp(world, x, y, z, MultiblockHandler.drillDimension, ModBlocks.dummy_block_drill); + + // + DummyBlockDrill.safeBreak = true; + world.setBlock(x + 1, y, z, ModBlocks.dummy_port_drill); + TileEntity te = world.getTileEntity(x + 1, y, z); + if(te instanceof TileEntityDummy) { + TileEntityDummy dummy = (TileEntityDummy)te; + dummy.targetX = x; + dummy.targetY = y; + dummy.targetZ = z; + } + world.setBlock(x - 1, y, z, ModBlocks.dummy_port_drill); + TileEntity te2 = world.getTileEntity(x - 1, y, z); + if(te instanceof TileEntityDummy) { + TileEntityDummy dummy = (TileEntityDummy)te2; + dummy.targetX = x; + dummy.targetY = y; + dummy.targetZ = z; + } + DummyBlockDrill.safeBreak = false; + // + + } else + world.func_147480_a(x, y, z, true); + } + if (i == 3) { + world.setBlockMetadataWithNotify(x, y, z, 2, 2); + if(MultiblockHandler.checkSpace(world, x, y, z, MultiblockHandler.drillDimension)) { + MultiblockHandler.fillUp(world, x, y, z, MultiblockHandler.drillDimension, ModBlocks.dummy_block_drill); + + // + DummyBlockDrill.safeBreak = true; + world.setBlock(x, y, z + 1, ModBlocks.dummy_port_drill); + TileEntity te = world.getTileEntity(x, y, z + 1); + if(te instanceof TileEntityDummy) { + TileEntityDummy dummy = (TileEntityDummy)te; + dummy.targetX = x; + dummy.targetY = y; + dummy.targetZ = z; + } + world.setBlock(x, y, z - 1, ModBlocks.dummy_port_drill); + TileEntity te2 = world.getTileEntity(x, y, z - 1); + if(te instanceof TileEntityDummy) { + TileEntityDummy dummy = (TileEntityDummy)te2; + dummy.targetX = x; + dummy.targetY = y; + dummy.targetZ = z; + } + DummyBlockDrill.safeBreak = false; + // + + } else + world.func_147480_a(x, y, z, true); + } + } + + @Override + public boolean canPlaceBlockAt(World world, int x, int y, int z) + { + return true; + } +} diff --git a/com/hbm/blocks/machine/PylonRedWire.java b/com/hbm/blocks/machine/PylonRedWire.java index dbd0f9d84..3931cd9c7 100644 --- a/com/hbm/blocks/machine/PylonRedWire.java +++ b/com/hbm/blocks/machine/PylonRedWire.java @@ -17,5 +17,20 @@ public class PylonRedWire extends BlockContainer { public TileEntity createNewTileEntity(World p_149915_1_, int p_149915_2_) { return new TileEntityPylonRedWire(); } + + @Override + public int getRenderType(){ + return -1; + } + + @Override + public boolean isOpaqueCube() { + return false; + } + + @Override + public boolean renderAsNormalBlock() { + return false; + } } diff --git a/com/hbm/entity/projectile/EntitySparkBeam.java b/com/hbm/entity/projectile/EntitySparkBeam.java new file mode 100644 index 000000000..d79eb4d1b --- /dev/null +++ b/com/hbm/entity/projectile/EntitySparkBeam.java @@ -0,0 +1,536 @@ +package com.hbm.entity.projectile; + +import java.util.List; + +import com.hbm.entity.grenade.EntityGrenadeZOMG; +import com.hbm.explosion.ExplosionChaos; +import com.hbm.explosion.ExplosionLarge; +import com.hbm.explosion.ExplosionThermo; +import com.hbm.lib.ModDamageSource; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.block.Block; +import net.minecraft.block.material.Material; +import net.minecraft.enchantment.EnchantmentHelper; +import net.minecraft.entity.Entity; +import net.minecraft.entity.EntityLiving; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.entity.IProjectile; +import net.minecraft.entity.monster.EntityEnderman; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.EntityPlayerMP; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.network.play.server.S2BPacketChangeGameState; +import net.minecraft.util.AxisAlignedBB; +import net.minecraft.util.DamageSource; +import net.minecraft.util.MathHelper; +import net.minecraft.util.MovingObjectPosition; +import net.minecraft.util.Vec3; +import net.minecraft.world.World; + +public class EntitySparkBeam extends Entity implements IProjectile +{ + private int field_145791_d = -1; + private int field_145792_e = -1; + private int field_145789_f = -1; + public double gravity = 0.0D; + private Block field_145790_g; + private int inData; + private boolean inGround; + /** 1 if the player can pick up the arrow */ + public int canBePickedUp; + /** Seems to be some sort of timer for animating an arrow. */ + public int arrowShake; + /** The owner of this arrow. */ + public Entity shootingEntity; + private int ticksInGround; + private int ticksInAir; + private double damage = 2.0D; + /** The amount of knockback an arrow applies when it hits a mob. */ + private int knockbackStrength; + private static final String __OBFID = "CL_00001715"; + + + public EntitySparkBeam(World p_i1753_1_) + { + super(p_i1753_1_); + this.renderDistanceWeight = 10.0D; + this.setSize(0.5F, 0.5F); + } + + public EntitySparkBeam(World p_i1754_1_, double p_i1754_2_, double p_i1754_4_, double p_i1754_6_) + { + super(p_i1754_1_); + this.renderDistanceWeight = 10.0D; + this.setSize(0.5F, 0.5F); + this.setPosition(p_i1754_2_, p_i1754_4_, p_i1754_6_); + this.yOffset = 0.0F; + } + + public EntitySparkBeam(World p_i1755_1_, EntityLivingBase p_i1755_2_, EntityLivingBase p_i1755_3_, float p_i1755_4_, float p_i1755_5_) + { + super(p_i1755_1_); + this.renderDistanceWeight = 10.0D; + this.shootingEntity = p_i1755_2_; + + if (p_i1755_2_ instanceof EntityPlayer) + { + this.canBePickedUp = 1; + } + + this.posY = p_i1755_2_.posY + p_i1755_2_.getEyeHeight() - 0.10000000149011612D; + double d0 = p_i1755_3_.posX - p_i1755_2_.posX; + double d1 = p_i1755_3_.boundingBox.minY + p_i1755_3_.height / 3.0F - this.posY; + double d2 = p_i1755_3_.posZ - p_i1755_2_.posZ; + double d3 = MathHelper.sqrt_double(d0 * d0 + d2 * d2); + + if (d3 >= 1.0E-7D) + { + float f2 = (float)(Math.atan2(d2, d0) * 180.0D / Math.PI) - 90.0F; + float f3 = (float)(-(Math.atan2(d1, d3) * 180.0D / Math.PI)); + double d4 = d0 / d3; + double d5 = d2 / d3; + this.setLocationAndAngles(p_i1755_2_.posX + d4, this.posY, p_i1755_2_.posZ + d5, f2, f3); + this.yOffset = 0.0F; + float f4 = (float)d3 * 0.2F; + this.setThrowableHeading(d0, d1 + f4, d2, p_i1755_4_, p_i1755_5_); + } + } + + public EntitySparkBeam(World p_i1756_1_, EntityLivingBase p_i1756_2_, float p_i1756_3_, int dmgMin, int dmgMax, EntityGrenadeZOMG grenade) { + super(p_i1756_1_); + this.renderDistanceWeight = 10.0D; + this.shootingEntity = p_i1756_2_; + + this.setSize(0.5F, 0.5F); + this.setLocationAndAngles(grenade.posX, grenade.posY + grenade.getEyeHeight(), grenade.posZ, + grenade.rotationYaw, grenade.rotationPitch); + this.posX -= MathHelper.cos(this.rotationYaw / 180.0F * (float) Math.PI) * 0.16F; + this.posY -= 0.10000000149011612D; + this.posZ -= MathHelper.sin(this.rotationYaw / 180.0F * (float) Math.PI) * 0.16F; + this.setPosition(this.posX, this.posY, this.posZ); + this.yOffset = 0.0F; + this.motionX = -MathHelper.sin(this.rotationYaw / 180.0F * (float) Math.PI) + * MathHelper.cos(this.rotationPitch / 180.0F * (float) Math.PI); + this.motionZ = MathHelper.cos(this.rotationYaw / 180.0F * (float) Math.PI) + * MathHelper.cos(this.rotationPitch / 180.0F * (float) Math.PI); + this.motionY = (-MathHelper.sin(this.rotationPitch / 180.0F * (float) Math.PI)); + this.setThrowableHeading(this.motionX, this.motionY, this.motionZ, p_i1756_3_ * 1.5F, 1.0F); + } + + public EntitySparkBeam(World p_i1756_1_, EntityLivingBase p_i1756_2_, float p_i1756_3_) + { + super(p_i1756_1_); + this.renderDistanceWeight = 10.0D; + this.shootingEntity = p_i1756_2_; + + this.setSize(0.5F, 0.5F); + this.setLocationAndAngles(p_i1756_2_.posX, p_i1756_2_.posY + p_i1756_2_.getEyeHeight(), p_i1756_2_.posZ, p_i1756_2_.rotationYaw, p_i1756_2_.rotationPitch); + this.posX -= MathHelper.cos(this.rotationYaw / 180.0F * (float)Math.PI) * 0.16F; + this.posY -= 0.10000000149011612D; + this.posZ -= MathHelper.sin(this.rotationYaw / 180.0F * (float)Math.PI) * 0.16F; + this.setPosition(this.posX, this.posY, this.posZ); + this.yOffset = 0.0F; + this.motionX = -MathHelper.sin(this.rotationYaw / 180.0F * (float)Math.PI) * MathHelper.cos(this.rotationPitch / 180.0F * (float)Math.PI); + this.motionZ = MathHelper.cos(this.rotationYaw / 180.0F * (float)Math.PI) * MathHelper.cos(this.rotationPitch / 180.0F * (float)Math.PI); + this.motionY = (-MathHelper.sin(this.rotationPitch / 180.0F * (float)Math.PI)); + this.setThrowableHeading(this.motionX, this.motionY, this.motionZ, p_i1756_3_ * 1.5F, 1.0F); + } + + public EntitySparkBeam(World world, int x, int y, int z, double mx, double my, double mz, double grav) { + super(world); + this.posX = x + 0.5F; + this.posY = y + 0.5F; + this.posZ = z + 0.5F; + + this.motionX = mx; + this.motionY = my; + this.motionZ = mz; + + this.gravity = grav; + } + + @Override + protected void entityInit() + { + this.dataWatcher.addObject(16, Byte.valueOf((byte)0)); + } + + /** + * Similar to setArrowHeading, it's point the throwable entity to a x, y, z direction. + */ + @Override + public void setThrowableHeading(double p_70186_1_, double p_70186_3_, double p_70186_5_, float p_70186_7_, float p_70186_8_) + { + float f2 = MathHelper.sqrt_double(p_70186_1_ * p_70186_1_ + p_70186_3_ * p_70186_3_ + p_70186_5_ * p_70186_5_); + p_70186_1_ /= f2; + p_70186_3_ /= f2; + p_70186_5_ /= f2; + p_70186_1_ += this.rand.nextGaussian() * (this.rand.nextBoolean() ? -1 : 1) * 0.002499999832361937D * p_70186_8_; + p_70186_3_ += this.rand.nextGaussian() * (this.rand.nextBoolean() ? -1 : 1) * 0.002499999832361937D * p_70186_8_; + p_70186_5_ += this.rand.nextGaussian() * (this.rand.nextBoolean() ? -1 : 1) * 0.002499999832361937D * p_70186_8_; + p_70186_1_ *= p_70186_7_; + p_70186_3_ *= p_70186_7_; + p_70186_5_ *= p_70186_7_; + this.motionX = p_70186_1_; + this.motionY = p_70186_3_; + this.motionZ = p_70186_5_; + float f3 = MathHelper.sqrt_double(p_70186_1_ * p_70186_1_ + p_70186_5_ * p_70186_5_); + this.prevRotationYaw = this.rotationYaw = (float)(Math.atan2(p_70186_1_, p_70186_5_) * 180.0D / Math.PI); + this.prevRotationPitch = this.rotationPitch = (float)(Math.atan2(p_70186_3_, f3) * 180.0D / Math.PI); + this.ticksInGround = 0; + } + + /** + * Sets the position and rotation. Only difference from the other one is no bounding on the rotation. Args: posX, + * posY, posZ, yaw, pitch + */ + @Override + @SideOnly(Side.CLIENT) + public void setPositionAndRotation2(double p_70056_1_, double p_70056_3_, double p_70056_5_, float p_70056_7_, float p_70056_8_, int p_70056_9_) + { + this.setPosition(p_70056_1_, p_70056_3_, p_70056_5_); + this.setRotation(p_70056_7_, p_70056_8_); + } + + /** + * Sets the velocity to the args. Args: x, y, z + */ + @Override + @SideOnly(Side.CLIENT) + public void setVelocity(double p_70016_1_, double p_70016_3_, double p_70016_5_) + { + this.motionX = p_70016_1_; + this.motionY = p_70016_3_; + this.motionZ = p_70016_5_; + + if (this.prevRotationPitch == 0.0F && this.prevRotationYaw == 0.0F) + { + float f = MathHelper.sqrt_double(p_70016_1_ * p_70016_1_ + p_70016_5_ * p_70016_5_); + this.prevRotationYaw = this.rotationYaw = (float)(Math.atan2(p_70016_1_, p_70016_5_) * 180.0D / Math.PI); + this.prevRotationPitch = this.rotationPitch = (float)(Math.atan2(p_70016_3_, f) * 180.0D / Math.PI); + this.prevRotationPitch = this.rotationPitch; + this.prevRotationYaw = this.rotationYaw; + this.setLocationAndAngles(this.posX, this.posY, this.posZ, this.rotationYaw, this.rotationPitch); + this.ticksInGround = 0; + } + } + + /** + * Called to update the entity's position/logic. + */ + //@Override + @Override + public void onUpdate() + { + super.onUpdate(); + + if(this.ticksExisted > 100) + this.setDead(); + + if (this.prevRotationPitch == 0.0F && this.prevRotationYaw == 0.0F) + { + float f = MathHelper.sqrt_double(this.motionX * this.motionX + this.motionZ * this.motionZ); + this.prevRotationYaw = this.rotationYaw = (float)(Math.atan2(this.motionX, this.motionZ) * 180.0D / Math.PI); + //this.prevRotationPitch = this.rotationPitch = (float)(Math.atan2(this.motionY, (double)f) * 180.0D / Math.PI); + } + + Block block = this.worldObj.getBlock(this.field_145791_d, this.field_145792_e, this.field_145789_f); + + if (block.getMaterial() != Material.air) + { + block.setBlockBoundsBasedOnState(this.worldObj, this.field_145791_d, this.field_145792_e, this.field_145789_f); + AxisAlignedBB axisalignedbb = block.getCollisionBoundingBoxFromPool(this.worldObj, this.field_145791_d, this.field_145792_e, this.field_145789_f); + if(!worldObj.isRemote) { + ExplosionLarge.explode(worldObj, posX, posY, posZ, 50, true, true, true); + } + this.setDead(); + } + + if (this.arrowShake > 0) + { + --this.arrowShake; + } + else + { + ++this.ticksInAir; + Vec3 vec31 = Vec3.createVectorHelper(this.posX, this.posY, this.posZ); + Vec3 vec3 = Vec3.createVectorHelper(this.posX + this.motionX, this.posY + this.motionY, this.posZ + this.motionZ); + MovingObjectPosition movingobjectposition = this.worldObj.func_147447_a(vec31, vec3, false, true, false); + vec31 = Vec3.createVectorHelper(this.posX, this.posY, this.posZ); + vec3 = Vec3.createVectorHelper(this.posX + this.motionX, this.posY + this.motionY, this.posZ + this.motionZ); + + if (movingobjectposition != null) + { + vec3 = Vec3.createVectorHelper(movingobjectposition.hitVec.xCoord, movingobjectposition.hitVec.yCoord, movingobjectposition.hitVec.zCoord); + } + + Entity entity = null; + List list = this.worldObj.getEntitiesWithinAABBExcludingEntity(this, this.boundingBox.addCoord(this.motionX, this.motionY, this.motionZ).expand(1.0D, 1.0D, 1.0D)); + double d0 = 0.0D; + int i; + float f1; + + for (i = 0; i < list.size(); ++i) + { + Entity entity1 = (Entity)list.get(i); + + if (entity1.canBeCollidedWith() && (entity1 != this.shootingEntity || this.ticksInAir >= 5)) + { + f1 = 0.3F; + AxisAlignedBB axisalignedbb1 = entity1.boundingBox.expand(f1, f1, f1); + MovingObjectPosition movingobjectposition1 = axisalignedbb1.calculateIntercept(vec31, vec3); + + if (movingobjectposition1 != null) + { + double d1 = vec31.distanceTo(movingobjectposition1.hitVec); + + if (d1 < d0 || d0 == 0.0D) + { + entity = entity1; + d0 = d1; + } + } + } + } + + if (entity != null) + { + movingobjectposition = new MovingObjectPosition(entity); + } + + if (movingobjectposition != null && movingobjectposition.entityHit != null && movingobjectposition.entityHit instanceof EntityPlayer) + { + EntityPlayer entityplayer = (EntityPlayer)movingobjectposition.entityHit; + + if (entityplayer.capabilities.disableDamage || this.shootingEntity instanceof EntityPlayer && !((EntityPlayer)this.shootingEntity).canAttackPlayer(entityplayer)) + { + movingobjectposition = null; + } + } + + float f2; + float f4; + + if (movingobjectposition != null) + { + if (movingobjectposition.entityHit != null) + { + f2 = MathHelper.sqrt_double(this.motionX * this.motionX + this.motionY * this.motionY + this.motionZ * this.motionZ); + int k = MathHelper.ceiling_double_int(f2 * this.damage); + + if (this.getIsCritical()) + { + k += this.rand.nextInt(k / 2 + 2); + } + + DamageSource damagesource = null; + + if (this.shootingEntity == null) + { + damagesource = DamageSource.generic; + } + else + { + damagesource = DamageSource.generic; + } + + if (this.isBurning() && !(movingobjectposition.entityHit instanceof EntityEnderman)) + { + movingobjectposition.entityHit.setFire(5); + } + + if (movingobjectposition.entityHit.attackEntityFrom(damagesource, k)) + { + if (movingobjectposition.entityHit instanceof EntityLivingBase) + { + EntityLivingBase entitylivingbase = (EntityLivingBase)movingobjectposition.entityHit; + + if (this.knockbackStrength > 0) + { + f4 = MathHelper.sqrt_double(this.motionX * this.motionX + this.motionZ * this.motionZ); + + if (f4 > 0.0F) + { + movingobjectposition.entityHit.addVelocity(this.motionX * this.knockbackStrength * 0.6000000238418579D / f4, 0.1D, this.motionZ * this.knockbackStrength * 0.6000000238418579D / f4); + } + } + + if (this.shootingEntity != null && this.shootingEntity instanceof EntityLivingBase) + { + EnchantmentHelper.func_151384_a(entitylivingbase, this.shootingEntity); + EnchantmentHelper.func_151385_b((EntityLivingBase)this.shootingEntity, entitylivingbase); + } + + if (this.shootingEntity != null && movingobjectposition.entityHit != this.shootingEntity && movingobjectposition.entityHit instanceof EntityPlayer && this.shootingEntity instanceof EntityPlayerMP) + { + ((EntityPlayerMP)this.shootingEntity).playerNetServerHandler.sendPacket(new S2BPacketChangeGameState(6, 0.0F)); + } + } + + if (!(movingobjectposition.entityHit instanceof EntityEnderman)) + { + if (!this.worldObj.isRemote && movingobjectposition.entityHit instanceof EntityLivingBase) + { + movingobjectposition.entityHit.attackEntityFrom(damagesource, 25 + rand.nextInt(20)); + if(!worldObj.isRemote) { + ExplosionLarge.explode(worldObj, posX, posY, posZ, 50, true, true, true); + } + this.setDead(); + } + } + } + } + else + { + this.field_145791_d = movingobjectposition.blockX; + this.field_145792_e = movingobjectposition.blockY; + this.field_145789_f = movingobjectposition.blockZ; + this.field_145790_g = this.worldObj.getBlock(this.field_145791_d, this.field_145792_e, this.field_145789_f); + this.inData = this.worldObj.getBlockMetadata(this.field_145791_d, this.field_145792_e, this.field_145789_f); + } + } + + this.posX += this.motionX; + this.posY += this.motionY; + this.posZ += this.motionZ; + f2 = MathHelper.sqrt_double(this.motionX * this.motionX + this.motionZ * this.motionZ); + this.rotationYaw = (float)(Math.atan2(this.motionX, this.motionZ) * 180.0D / Math.PI); + + float f3 = 0.99F; + f1 = 0.05F; + + if (this.isInWater()) + { + this.setDead(); + } + + if (this.isWet()) + { + this.extinguish(); + } + + this.setPosition(this.posX, this.posY, this.posZ); + this.func_145775_I(); + } + } + + /** + * (abstract) Protected helper method to write subclass entity data to NBT. + */ + @Override + public void writeEntityToNBT(NBTTagCompound p_70014_1_) + { + p_70014_1_.setShort("xTile", (short)this.field_145791_d); + p_70014_1_.setShort("yTile", (short)this.field_145792_e); + p_70014_1_.setShort("zTile", (short)this.field_145789_f); + p_70014_1_.setShort("life", (short)this.ticksInGround); + p_70014_1_.setByte("inTile", (byte)Block.getIdFromBlock(this.field_145790_g)); + p_70014_1_.setByte("inData", (byte)this.inData); + p_70014_1_.setByte("shake", (byte)this.arrowShake); + p_70014_1_.setByte("inGround", (byte)(this.inGround ? 1 : 0)); + p_70014_1_.setByte("pickup", (byte)this.canBePickedUp); + p_70014_1_.setDouble("damage", this.damage); + } + + /** + * (abstract) Protected helper method to read subclass entity data from NBT. + */ + @Override + public void readEntityFromNBT(NBTTagCompound p_70037_1_) + { + this.field_145791_d = p_70037_1_.getShort("xTile"); + this.field_145792_e = p_70037_1_.getShort("yTile"); + this.field_145789_f = p_70037_1_.getShort("zTile"); + this.ticksInGround = p_70037_1_.getShort("life"); + this.field_145790_g = Block.getBlockById(p_70037_1_.getByte("inTile") & 255); + this.inData = p_70037_1_.getByte("inData") & 255; + this.arrowShake = p_70037_1_.getByte("shake") & 255; + this.inGround = p_70037_1_.getByte("inGround") == 1; + + if (p_70037_1_.hasKey("damage", 99)) + { + this.damage = p_70037_1_.getDouble("damage"); + } + + if (p_70037_1_.hasKey("pickup", 99)) + { + this.canBePickedUp = p_70037_1_.getByte("pickup"); + } + else if (p_70037_1_.hasKey("player", 99)) + { + this.canBePickedUp = p_70037_1_.getBoolean("player") ? 1 : 0; + } + } + + /** + * returns if this entity triggers Block.onEntityWalking on the blocks they walk on. used for spiders and wolves to + * prevent them from trampling crops + */ + @Override + protected boolean canTriggerWalking() + { + return false; + } + + @Override + @SideOnly(Side.CLIENT) + public float getShadowSize() + { + return 0.0F; + } + + public void setDamage(double p_70239_1_) + { + this.damage = p_70239_1_; + } + + public double getDamage() + { + return this.damage; + } + + /** + * Sets the amount of knockback the arrow applies when it hits a mob. + */ + public void setKnockbackStrength(int p_70240_1_) + { + this.knockbackStrength = p_70240_1_; + } + + /** + * If returns false, the item will not inflict any damage against entities. + */ + @Override + public boolean canAttackWithItem() + { + return false; + } + + /** + * Whether the arrow has a stream of critical hit particles flying behind it. + */ + public void setIsCritical(boolean p_70243_1_) + { + byte b0 = this.dataWatcher.getWatchableObjectByte(16); + + if (p_70243_1_) + { + this.dataWatcher.updateObject(16, Byte.valueOf((byte)(b0 | 1))); + } + else + { + this.dataWatcher.updateObject(16, Byte.valueOf((byte)(b0 & -2))); + } + } + + /** + * Whether the arrow has a stream of critical hit particles flying behind it. + */ + public boolean getIsCritical() + { + byte b0 = this.dataWatcher.getWatchableObjectByte(16); + return (b0 & 1) != 0; + } +} diff --git a/com/hbm/handler/FuelHandler.java b/com/hbm/handler/FuelHandler.java index 132190e10..39492d29d 100644 --- a/com/hbm/handler/FuelHandler.java +++ b/com/hbm/handler/FuelHandler.java @@ -11,9 +11,21 @@ public class FuelHandler implements IFuelHandler { @Override public int getBurnTime(ItemStack fuel) { - + + if(fuel.getItem().equals(ModItems.canister_oil)) + return 3200; + if(fuel.getItem().equals(ModItems.canister_smear)) + return 6400; + if(fuel.getItem().equals(ModItems.canister_reoil)) + return 9600; + if(fuel.getItem().equals(ModItems.canister_petroil)) + return 9200; + if(fuel.getItem().equals(ModItems.canister_canola)) + return 4800; if(fuel.getItem().equals(ModItems.canister_fuel)) return 3200; + if(fuel.getItem().equals(ModItems.canister_kerosene)) + return 2400; if(fuel.getItem().equals(ModItems.powder_coal)) return 1600; if(fuel.getItem().equals(ModItems.scrap)) @@ -22,6 +34,10 @@ public class FuelHandler implements IFuelHandler { return 400; if(fuel.getItem().equals(ModItems.powder_fire)) return 6400; + if(fuel.getItem().equals(Item.getItemFromBlock(ModBlocks.red_barrel))) + return 32000; + if(fuel.getItem().equals(Item.getItemFromBlock(ModBlocks.block_scrap))) + return 8000; return 0; } diff --git a/com/hbm/handler/GUIHandler.java b/com/hbm/handler/GUIHandler.java index a5c0f535b..4d405ac95 100644 --- a/com/hbm/handler/GUIHandler.java +++ b/com/hbm/handler/GUIHandler.java @@ -21,6 +21,7 @@ import com.hbm.inventory.container.ContainerMachineCyclotron; import com.hbm.inventory.container.ContainerMachineDeuterium; import com.hbm.inventory.container.ContainerMachineDiesel; import com.hbm.inventory.container.ContainerMachineGasFlare; +import com.hbm.inventory.container.ContainerMachineMiningDrill; import com.hbm.inventory.container.ContainerMachineOilWell; import com.hbm.inventory.container.ContainerMachineRTG; import com.hbm.inventory.container.ContainerMachineRefinery; @@ -63,6 +64,7 @@ import com.hbm.inventory.gui.GUIMachineDiesel; import com.hbm.inventory.gui.GUIMachineElectricFurnace; import com.hbm.inventory.gui.GUIMachineGasFlare; import com.hbm.inventory.gui.GUIMachineGenerator; +import com.hbm.inventory.gui.GUIMachineMiningDrill; import com.hbm.inventory.gui.GUIMachineOilWell; import com.hbm.inventory.gui.GUIMachinePuF6Tank; import com.hbm.inventory.gui.GUIMachineRTG; @@ -96,6 +98,7 @@ import com.hbm.tileentity.TileEntityDiFurnace; import com.hbm.tileentity.TileEntityFWatzCore; import com.hbm.tileentity.TileEntityFusionMultiblock; import com.hbm.tileentity.TileEntityMachineIGenerator; +import com.hbm.tileentity.TileEntityMachineMiningDrill; import com.hbm.tileentity.TileEntityMachineOilWell; import com.hbm.tileentity.TileEntityLaunchPad; import com.hbm.tileentity.TileEntityMachineBattery; @@ -488,6 +491,14 @@ public class GUIHandler implements IGuiHandler { return new ContainerMachineGasFlare(player.inventory, (TileEntityMachineGasFlare) entity); } } + + case ModBlocks.guiID_machine_drill: + { + if(entity instanceof TileEntityMachineMiningDrill) + { + return new ContainerMachineMiningDrill(player.inventory, (TileEntityMachineMiningDrill) entity); + } + } } return null; } @@ -844,6 +855,14 @@ public class GUIHandler implements IGuiHandler { return new GUIMachineGasFlare(player.inventory, (TileEntityMachineGasFlare) entity); } } + + case ModBlocks.guiID_machine_drill: + { + if(entity instanceof TileEntityMachineMiningDrill) + { + return new GUIMachineMiningDrill(player.inventory, (TileEntityMachineMiningDrill) entity); + } + } } } return null; diff --git a/com/hbm/handler/MultiblockHandler.java b/com/hbm/handler/MultiblockHandler.java index 883060513..98e6da33a 100644 --- a/com/hbm/handler/MultiblockHandler.java +++ b/com/hbm/handler/MultiblockHandler.java @@ -48,6 +48,7 @@ public class MultiblockHandler { public static final int[] cyclDimension = new int[] { 1, 1, 5, 0, 1, 1 }; public static final int[] wellDimension = new int[] { 1, 1, 5, 0, 1, 1 }; public static final int[] flareDimension = new int[] { 1, 1, 9, 0, 1, 1 }; + public static final int[] drillDimension = new int[] { 1, 1, 3, 0, 1, 1 }; //Approved! public static boolean checkSpace(World world, int x, int y, int z, int[] i) { diff --git a/com/hbm/inventory/MachineRecipes.java b/com/hbm/inventory/MachineRecipes.java index afa605f49..09dde17b4 100644 --- a/com/hbm/inventory/MachineRecipes.java +++ b/com/hbm/inventory/MachineRecipes.java @@ -41,8 +41,8 @@ public class MachineRecipes { } } - if (item == ModItems.ingot_tungsten && item2 == Items.coal - || item == Items.coal && item2 == ModItems.ingot_tungsten) { + if (mODE(item, new String[] {"ingotTungsten", "dustTungsten"}) && mODE(item2, "gemCoal") + || mODE(item, "gemCoal") && mODE(item2, new String[] {"ingotTungsten", "dustTungsten"})) { return new ItemStack(ModItems.neutron_reflector, 2); } @@ -65,11 +65,6 @@ public class MachineRecipes { return new ItemStack(ModItems.ingot_red_copper, 2); } - if (item == ModItems.canister_empty && item2 == Items.coal - || item == Items.coal && item2 == ModItems.canister_empty) { - return new ItemStack(ModItems.canister_fuel, 1); - } - if (item == ModItems.canister_fuel && item2 == Items.slime_ball || item == Items.slime_ball && item2 == ModItems.canister_fuel) { return new ItemStack(ModItems.canister_napalm, 1); @@ -152,10 +147,6 @@ public class MachineRecipes { ItemStack[] schrabidium = new ItemStack[] { new ItemStack(ModItems.ingot_schrabidium, 1), new ItemStack(ModItems.sulfur, 1), new ItemStack(ModItems.sulfur, 1), new ItemStack(ModItems.cell_empty, 1) }; - ItemStack[] lithium2 = new ItemStack[] { new ItemStack(ModItems.lithium, 1), new ItemStack(ModItems.lithium, 1), - new ItemStack(ModItems.lithium, 1), new ItemStack(ModItems.lithium, 1) }; - ItemStack[] lithium3 = new ItemStack[] { new ItemStack(ModItems.lithium, 4), new ItemStack(ModItems.lithium, 4), - new ItemStack(ModItems.lithium, 4), new ItemStack(ModItems.lithium, 4) }; ItemStack[] uran1 = new ItemStack[] { new ItemStack(ModItems.nugget_u235, 1), new ItemStack(ModItems.nugget_u238, 3), new ItemStack(ModItems.nugget_pu239, 2), @@ -260,14 +251,6 @@ public class MachineRecipes { return schrabidium3; } - if (item == item.getItemFromBlock(Blocks.quartz_block) || item == item.getItemFromBlock(Blocks.quartz_stairs)) { - return lithium3; - } - - if (item == Items.quartz) { - return lithium2; - } - return null; } @@ -630,8 +613,6 @@ public class MachineRecipes { new ItemStack(ModItems.ingot_red_copper, 2)); recipes.put(new ItemStack[] { new ItemStack(ModItems.ingot_red_copper), new ItemStack(ModItems.ingot_steel) }, new ItemStack(ModItems.ingot_advanced_alloy, 2)); - recipes.put(new ItemStack[] { new ItemStack(ModItems.canister_empty), new ItemStack(Items.coal) }, - new ItemStack(ModItems.canister_fuel, 1)); recipes.put(new ItemStack[] { new ItemStack(ModItems.canister_fuel), new ItemStack(Items.slime_ball) }, new ItemStack(ModItems.canister_napalm, 1)); recipes.put( @@ -705,9 +686,6 @@ public class MachineRecipes { // recipes.put(new // ItemStack(ModItems.rod_quad_schrabidium_fuel_depleted), // getCentrifugeOutput(ModItems.rod_quad_schrabidium_fuel_depleted)); - recipes.put(new ItemStack(Item.getItemFromBlock(Blocks.quartz_block)), - getCentrifugeOutput(Item.getItemFromBlock(Blocks.quartz_block))); - recipes.put(new ItemStack(Items.quartz), getCentrifugeOutput(Items.quartz)); return recipes; } @@ -1443,8 +1421,21 @@ public class MachineRecipes { public ArrayList getBatteries() { ArrayList fuels = new ArrayList(); fuels.add(new ItemStack(ModItems.battery_generic)); + fuels.add(new ItemStack(ModItems.battery_red_cell)); + fuels.add(new ItemStack(ModItems.battery_red_cell_6)); + fuels.add(new ItemStack(ModItems.battery_red_cell_24)); fuels.add(new ItemStack(ModItems.battery_advanced)); + fuels.add(new ItemStack(ModItems.battery_advanced_cell)); + fuels.add(new ItemStack(ModItems.battery_advanced_cell_4)); + fuels.add(new ItemStack(ModItems.battery_advanced_cell_12)); + fuels.add(new ItemStack(ModItems.battery_lithium)); + fuels.add(new ItemStack(ModItems.battery_lithium_cell)); + fuels.add(new ItemStack(ModItems.battery_lithium_cell_3)); + fuels.add(new ItemStack(ModItems.battery_lithium_cell_6)); fuels.add(new ItemStack(ModItems.battery_schrabidium)); + fuels.add(new ItemStack(ModItems.battery_schrabidium_cell)); + fuels.add(new ItemStack(ModItems.battery_schrabidium_cell_2)); + fuels.add(new ItemStack(ModItems.battery_schrabidium_cell_4)); fuels.add(new ItemStack(ModItems.fusion_core)); fuels.add(new ItemStack(ModItems.energy_core)); return fuels; @@ -1462,4 +1453,40 @@ public class MachineRecipes { fuels.add(new ItemStack(ModItems.blades_schrabidium)); return fuels; } + + public static boolean mODE(Item item, String[] names) { + return mODE(new ItemStack(item), names); + } + + public static boolean mODE(ItemStack item, String[] names) { + boolean flag = false; + if(names.length > 0) { + for(int i = 0; i < names.length; i++) { + if(mODE(item, names[i])) + flag = true; + } + } + + return flag; + } + + public static boolean mODE(Item item, String name) { + return mODE(new ItemStack(item), name); + } + + //Matches Ore Dict Entry + public static boolean mODE(ItemStack stack, String name) { + + int[] ids = OreDictionary.getOreIDs(new ItemStack(stack.getItem(), 1, stack.getItemDamage())); + + for(int i = 0; i < ids.length; i++) { + + String s = OreDictionary.getOreName(ids[i]); + + if(s.length() > 0 && s.equals(name)) + return true; + } + + return false; + } } diff --git a/com/hbm/inventory/container/ContainerMachineDeuterium.java b/com/hbm/inventory/container/ContainerMachineDeuterium.java index a6e3be8cf..53832d40e 100644 --- a/com/hbm/inventory/container/ContainerMachineDeuterium.java +++ b/com/hbm/inventory/container/ContainerMachineDeuterium.java @@ -92,7 +92,7 @@ private TileEntityMachineDeuterium nukeBoy; { ICrafting par1 = (ICrafting)this.crafters.get(i); - if(this.power != this.nukeBoy.process) + if(this.progress != this.nukeBoy.process) { par1.sendProgressBarUpdate(this, 0, this.nukeBoy.process); } diff --git a/com/hbm/inventory/container/ContainerMachineMiningDrill.java b/com/hbm/inventory/container/ContainerMachineMiningDrill.java new file mode 100644 index 000000000..c0157100c --- /dev/null +++ b/com/hbm/inventory/container/ContainerMachineMiningDrill.java @@ -0,0 +1,122 @@ +package com.hbm.inventory.container; + +import com.hbm.inventory.SlotMachineOutput; +import com.hbm.tileentity.TileEntityMachineDeuterium; +import com.hbm.tileentity.TileEntityMachineMiningDrill; + +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.InventoryPlayer; +import net.minecraft.inventory.Container; +import net.minecraft.inventory.ICrafting; +import net.minecraft.inventory.Slot; +import net.minecraft.item.ItemStack; + +public class ContainerMachineMiningDrill extends Container { + +private TileEntityMachineMiningDrill nukeBoy; + + private int power; + private int water; + private int sulfur; + private int progress; + + public ContainerMachineMiningDrill(InventoryPlayer invPlayer, TileEntityMachineMiningDrill tedf) { + + nukeBoy = tedf; + + //Battery + this.addSlotToContainer(new Slot(tedf, 0, 44, 53)); + //Outputs + this.addSlotToContainer(new Slot(tedf, 1, 80, 17)); + this.addSlotToContainer(new Slot(tedf, 2, 98, 17)); + this.addSlotToContainer(new Slot(tedf, 3, 116, 17)); + this.addSlotToContainer(new Slot(tedf, 4, 80, 35)); + this.addSlotToContainer(new Slot(tedf, 5, 98, 35)); + this.addSlotToContainer(new Slot(tedf, 6, 116, 35)); + this.addSlotToContainer(new Slot(tedf, 7, 80, 53)); + this.addSlotToContainer(new Slot(tedf, 8, 98, 53)); + this.addSlotToContainer(new Slot(tedf, 9, 116, 53)); + //Upgrades + this.addSlotToContainer(new Slot(tedf, 10, 152, 17)); + this.addSlotToContainer(new Slot(tedf, 11, 152, 35)); + this.addSlotToContainer(new Slot(tedf, 12, 152, 53)); + + for(int i = 0; i < 3; i++) + { + for(int j = 0; j < 9; j++) + { + this.addSlotToContainer(new Slot(invPlayer, j + i * 9 + 9, 8 + j * 18, 84 + i * 18)); + } + } + + for(int i = 0; i < 9; i++) + { + this.addSlotToContainer(new Slot(invPlayer, i, 8 + i * 18, 142)); + } + } + + @Override + public ItemStack transferStackInSlot(EntityPlayer p_82846_1_, int par2) + { + ItemStack var3 = null; + Slot var4 = (Slot) this.inventorySlots.get(par2); + + if (var4 != null && var4.getHasStack()) + { + ItemStack var5 = var4.getStack(); + var3 = var5.copy(); + + if (par2 <= 12) { + if (!this.mergeItemStack(var5, 13, this.inventorySlots.size(), true)) + { + return null; + } + } + else if (!this.mergeItemStack(var5, 0, 13, false)) + { + return null; + } + + if (var5.stackSize == 0) + { + var4.putStack((ItemStack) null); + } + else + { + var4.onSlotChanged(); + } + } + + return var3; + } + + @Override + public boolean canInteractWith(EntityPlayer player) { + return nukeBoy.isUseableByPlayer(player); + } + + @Override + public void detectAndSendChanges() { + super.detectAndSendChanges(); + + for(int i = 0; i < this.crafters.size(); i++) + { + ICrafting par1 = (ICrafting)this.crafters.get(i); + + if(this.power != this.nukeBoy.power) + { + par1.sendProgressBarUpdate(this, 0, this.nukeBoy.power); + } + } + + this.power = this.nukeBoy.power; + } + + @Override + public void updateProgressBar(int i, int j) { + if(i == 0) + { + nukeBoy.power = j; + } + } +} diff --git a/com/hbm/inventory/gui/GUIMachineMiningDrill.java b/com/hbm/inventory/gui/GUIMachineMiningDrill.java new file mode 100644 index 000000000..875661849 --- /dev/null +++ b/com/hbm/inventory/gui/GUIMachineMiningDrill.java @@ -0,0 +1,49 @@ +package com.hbm.inventory.gui; + +import org.lwjgl.opengl.GL11; + +import com.hbm.inventory.container.ContainerMachineDiesel; +import com.hbm.inventory.container.ContainerMachineMiningDrill; +import com.hbm.lib.RefStrings; +import com.hbm.tileentity.TileEntityMachineDiesel; +import com.hbm.tileentity.TileEntityMachineMiningDrill; + +import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.inventory.GuiContainer; +import net.minecraft.client.resources.I18n; +import net.minecraft.entity.player.InventoryPlayer; +import net.minecraft.util.ResourceLocation; + +public class GUIMachineMiningDrill extends GuiContainer { + + private static ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/gui_drill.png"); + private TileEntityMachineMiningDrill diFurnace; + + public GUIMachineMiningDrill(InventoryPlayer invPlayer, TileEntityMachineMiningDrill tedf) { + super(new ContainerMachineMiningDrill(invPlayer, tedf)); + diFurnace = tedf; + + this.xSize = 176; + this.ySize = 166; + } + + @Override + protected void drawGuiContainerForegroundLayer(int i, int j) { + String name = this.diFurnace.hasCustomInventoryName() ? this.diFurnace.getInventoryName() : I18n.format(this.diFurnace.getInventoryName()); + + this.fontRendererObj.drawString(name, this.xSize / 2 - this.fontRendererObj.getStringWidth(name) / 2, 6, 4210752); + this.fontRendererObj.drawString(I18n.format("container.inventory"), 8, this.ySize - 96 + 2, 4210752); + } + + @Override + protected void drawGuiContainerBackgroundLayer(float p_146976_1_, int p_146976_2_, int p_146976_3_) { + GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); + Minecraft.getMinecraft().getTextureManager().bindTexture(texture); + drawTexturedModalRect(guiLeft, guiTop, 0, 0, xSize, ySize); + + if(diFurnace.power > 0) { + int i = diFurnace.getPowerScaled(52); + drawTexturedModalRect(guiLeft + 8, guiTop + 69 - i, 176, 52 - i, 16, i); + } + } +} diff --git a/com/hbm/items/ModItems.java b/com/hbm/items/ModItems.java index 79fbbc410..fc765abd0 100644 --- a/com/hbm/items/ModItems.java +++ b/com/hbm/items/ModItems.java @@ -2,97 +2,12 @@ package com.hbm.items; import com.hbm.blocks.ModBlocks; import com.hbm.handler.BucketHandler; -import com.hbm.items.bomb.ItemBoy; -import com.hbm.items.bomb.ItemFleija; -import com.hbm.items.bomb.ItemGadget; -import com.hbm.items.bomb.ItemMan; -import com.hbm.items.bomb.ItemManMike; -import com.hbm.items.bomb.ItemMike; -import com.hbm.items.bomb.ItemTsar; -import com.hbm.items.food.ItemAppleEuphemium; -import com.hbm.items.food.ItemAppleSchrabidium; -import com.hbm.items.food.ItemCottonCandy; -import com.hbm.items.food.ItemEnergy; -import com.hbm.items.food.ItemLemon; -import com.hbm.items.food.ItemNugget; -import com.hbm.items.food.ItemPill; -import com.hbm.items.food.ItemSchnitzelVegan; -import com.hbm.items.food.ItemTemFlakes; -import com.hbm.items.food.ItemWaffle; -import com.hbm.items.gear.ArmorAsbestos; -import com.hbm.items.gear.ArmorAustralium; -import com.hbm.items.gear.ArmorEuphemium; -import com.hbm.items.gear.ArmorHazmat; -import com.hbm.items.gear.ArmorModel; -import com.hbm.items.gear.ArmorSchrabidium; -import com.hbm.items.gear.ArmorT45; -import com.hbm.items.gear.ArmorTest; -import com.hbm.items.gear.AxeSchrabidium; -import com.hbm.items.gear.BigSword; -import com.hbm.items.gear.HoeSchrabidium; -import com.hbm.items.gear.MaskOfInfamy; -import com.hbm.items.gear.ModArmor; -import com.hbm.items.gear.ModAxe; -import com.hbm.items.gear.ModHoe; -import com.hbm.items.gear.ModPickaxe; -import com.hbm.items.gear.ModSpade; -import com.hbm.items.gear.ModSword; -import com.hbm.items.gear.PickaxeSchrabidium; -import com.hbm.items.gear.RedstoneSword; -import com.hbm.items.gear.SpadeSchrabidium; -import com.hbm.items.gear.SwordSchrabidium; -import com.hbm.items.gear.WeaponSpecial; -import com.hbm.items.special.ItemAntiCheat; -import com.hbm.items.special.ItemBattery; -import com.hbm.items.special.ItemBlades; -import com.hbm.items.special.ItemCapacitor; -import com.hbm.items.special.ItemCell; -import com.hbm.items.special.ItemChopper; -import com.hbm.items.special.ItemCustomLore; -import com.hbm.items.special.ItemDrop; -import com.hbm.items.special.ItemFuelRod; -import com.hbm.items.special.ItemModRecord; -import com.hbm.items.special.ItemPolaroid; -import com.hbm.items.special.ItemRadioactive; -import com.hbm.items.special.ItemStarterKit; -import com.hbm.items.special.ItemSyringe; -import com.hbm.items.special.ItemTankWaste; -import com.hbm.items.special.ItemTeleLink; -import com.hbm.items.special.WatzFuel; -import com.hbm.items.tool.ItemCrateCaller; -import com.hbm.items.tool.ItemDesingator; -import com.hbm.items.tool.ItemDesingatorRange; -import com.hbm.items.tool.ItemDetonator; -import com.hbm.items.tool.ItemMatch; -import com.hbm.items.tool.ItemModBucket; -import com.hbm.items.tool.ItemMultitoolPassive; -import com.hbm.items.tool.ItemMultitoolTool; -import com.hbm.items.tool.ItemOilDetector; -import com.hbm.items.tool.ItemRamManipulator; -import com.hbm.items.tool.ItemWand; -import com.hbm.items.tool.ItemWandD; -import com.hbm.items.tool.ItemWandS; -import com.hbm.items.tool.ItemWiring; -import com.hbm.items.weapon.GunBaleFlare; -import com.hbm.items.weapon.GunCryolator; -import com.hbm.items.weapon.GunEMPRay; -import com.hbm.items.weapon.GunEuthanasia; -import com.hbm.items.weapon.GunFatman; -import com.hbm.items.weapon.GunImmolator; -import com.hbm.items.weapon.GunJack; -import com.hbm.items.weapon.GunMIRV; -import com.hbm.items.weapon.GunMP; -import com.hbm.items.weapon.GunNightmare; -import com.hbm.items.weapon.GunOSIPR; -import com.hbm.items.weapon.GunRevolver; -import com.hbm.items.weapon.GunRpg; -import com.hbm.items.weapon.GunSMG; -import com.hbm.items.weapon.GunShotgun; -import com.hbm.items.weapon.GunSuicide; -import com.hbm.items.weapon.GunXVL1456; -import com.hbm.items.weapon.GunZOMG; -import com.hbm.items.weapon.ItemClip; -import com.hbm.items.weapon.ItemGrenade; +import com.hbm.items.bomb.*; +import com.hbm.items.food.*; +import com.hbm.items.gear.*; +import com.hbm.items.special.*; +import com.hbm.items.tool.*; +import com.hbm.items.weapon.*; import com.hbm.lib.RefStrings; import com.hbm.main.MainRegistry; @@ -173,6 +88,9 @@ public class ModItems { public static Item nugget_unobtainium; public static Item nugget_daffergon; public static Item nugget_verticium; + + public static Item ingot_desh; + public static Item nugget_desh; public static Item nugget_uranium; public static Item nugget_u235; @@ -209,6 +127,7 @@ public class ModItems { public static Item bolt_dura_steel; public static Item pipes_steel; public static Item drill_titanium; + public static Item plate_dalekanium; public static Item ingot_dura_steel; public static Item ingot_polymer; @@ -266,9 +185,12 @@ public class ModItems { public static Item powder_dura_steel; public static Item powder_polymer; + public static Item powder_lithium_tiny; + public static Item powder_cobalt_tiny; public static Item powder_lanthanium; public static Item powder_actinium; + public static Item powder_desh; public static Item coil_copper; public static Item coil_copper_torus; @@ -429,6 +351,8 @@ public class ModItems { public static Item canister_oil; public static Item canister_fuel; public static Item canister_kerosene; + public static Item canister_reoil; + public static Item canister_petroil; public static Item canister_napalm; public static Item canister_NITAN; @@ -751,6 +675,20 @@ public class ModItems { public static Item factory_core_titanium; public static Item factory_core_advanced; + public static Item upgrade_template; + public static Item upgrade_speed_1; + public static Item upgrade_speed_2; + public static Item upgrade_speed_3; + public static Item upgrade_effect_1; + public static Item upgrade_effect_2; + public static Item upgrade_effect_3; + public static Item upgrade_power_1; + public static Item upgrade_power_2; + public static Item upgrade_power_3; + public static Item upgrade_fortune_1; + public static Item upgrade_fortune_2; + public static Item upgrade_fortune_3; + public static Item ingot_euphemium; public static Item nugget_euphemium; public static Item rod_quad_euphemium; @@ -1087,9 +1025,12 @@ public class ModItems { bolt_dura_steel = new Item().setUnlocalizedName("bolt_dura_steel").setCreativeTab(MainRegistry.tabParts).setTextureName(RefStrings.MODID + ":bolt_dura_steel"); pipes_steel = new Item().setUnlocalizedName("pipes_steel").setCreativeTab(MainRegistry.tabParts).setTextureName(RefStrings.MODID + ":pipes_steel"); drill_titanium = new Item().setUnlocalizedName("drill_titanium").setCreativeTab(MainRegistry.tabParts).setTextureName(RefStrings.MODID + ":drill_titanium"); + plate_dalekanium = new Item().setUnlocalizedName("plate_dalekanium").setCreativeTab(MainRegistry.tabParts).setTextureName(RefStrings.MODID + ":plate_dalekanium"); ingot_dura_steel = new ItemCustomLore().setUnlocalizedName("ingot_dura_steel").setCreativeTab(MainRegistry.tabParts).setTextureName(RefStrings.MODID + ":ingot_dura_steel"); ingot_polymer = new ItemCustomLore().setUnlocalizedName("ingot_polymer").setCreativeTab(MainRegistry.tabParts).setTextureName(RefStrings.MODID + ":ingot_polymer"); + ingot_desh = new ItemCustomLore().setUnlocalizedName("ingot_desh").setCreativeTab(MainRegistry.tabParts).setTextureName(RefStrings.MODID + ":ingot_desh"); + nugget_desh = new ItemCustomLore().setUnlocalizedName("nugget_desh").setCreativeTab(MainRegistry.tabParts).setTextureName(RefStrings.MODID + ":nugget_desh"); ingot_lanthanium = new ItemCustomLore().setUnlocalizedName("ingot_lanthanium").setCreativeTab(MainRegistry.tabParts).setTextureName(RefStrings.MODID + ":ingot_lanthanium"); ingot_actinium = new ItemCustomLore().setUnlocalizedName("ingot_actinium").setCreativeTab(MainRegistry.tabParts).setTextureName(RefStrings.MODID + ":ingot_actinium"); @@ -1178,6 +1119,9 @@ public class ModItems { powder_polymer = new ItemCustomLore().setUnlocalizedName("powder_polymer").setCreativeTab(MainRegistry.tabParts).setTextureName(RefStrings.MODID + ":powder_polymer"); powder_lanthanium = new ItemCustomLore().setUnlocalizedName("powder_lanthanium").setCreativeTab(MainRegistry.tabParts).setTextureName(RefStrings.MODID + ":powder_lanthanium"); powder_actinium = new ItemCustomLore().setUnlocalizedName("powder_actinium").setCreativeTab(MainRegistry.tabParts).setTextureName(RefStrings.MODID + ":powder_actinium"); + powder_desh = new Item().setUnlocalizedName("powder_desh").setCreativeTab(MainRegistry.tabParts).setTextureName(RefStrings.MODID + ":powder_desh"); + powder_lithium_tiny = new Item().setUnlocalizedName("powder_lithium_tiny").setCreativeTab(MainRegistry.tabParts).setTextureName(RefStrings.MODID + ":powder_lithium_tiny"); + powder_cobalt_tiny = new Item().setUnlocalizedName("powder_cobalt_tiny").setCreativeTab(MainRegistry.tabParts).setTextureName(RefStrings.MODID + ":powder_cobalt_tiny"); coil_copper = new Item().setUnlocalizedName("coil_copper").setCreativeTab(MainRegistry.tabParts).setTextureName(RefStrings.MODID + ":coil_copper"); coil_copper_torus = new Item().setUnlocalizedName("coil_copper_torus").setCreativeTab(MainRegistry.tabParts).setTextureName(RefStrings.MODID + ":coil_copper_torus"); @@ -1326,6 +1270,8 @@ public class ModItems { canister_oil = new ItemCustomLore().setUnlocalizedName("canister_oil").setCreativeTab(MainRegistry.tabParts).setContainerItem(ModItems.canister_empty).setTextureName(RefStrings.MODID + ":canister_oil"); canister_fuel = new ItemCustomLore().setUnlocalizedName("canister_fuel").setCreativeTab(MainRegistry.tabParts).setContainerItem(ModItems.canister_empty).setTextureName(RefStrings.MODID + ":canister_fuel"); canister_kerosene = new ItemCustomLore().setUnlocalizedName("canister_kerosene").setCreativeTab(MainRegistry.tabParts).setContainerItem(ModItems.canister_empty).setTextureName(RefStrings.MODID + ":canister_kerosene"); + canister_reoil = new ItemCustomLore().setUnlocalizedName("canister_reoil").setCreativeTab(MainRegistry.tabParts).setContainerItem(ModItems.canister_empty).setTextureName(RefStrings.MODID + ":canister_reoil"); + canister_petroil = new ItemCustomLore().setUnlocalizedName("canister_petroil").setCreativeTab(MainRegistry.tabParts).setContainerItem(ModItems.canister_empty).setTextureName(RefStrings.MODID + ":canister_petroil"); canister_napalm = new ItemCustomLore().setUnlocalizedName("canister_napalm").setCreativeTab(MainRegistry.tabParts).setContainerItem(ModItems.canister_empty).setTextureName(RefStrings.MODID + ":canister_napalm"); canister_NITAN = new ItemCustomLore().setUnlocalizedName("canister_NITAN").setCreativeTab(MainRegistry.tabParts).setContainerItem(ModItems.canister_empty).setTextureName(RefStrings.MODID + ":canister_superfuel"); gas_empty = new Item().setUnlocalizedName("gas_empty").setCreativeTab(MainRegistry.tabParts).setTextureName(RefStrings.MODID + ":gas_empty"); @@ -1542,13 +1488,13 @@ public class ModItems { gun_jack_ammo = new Item().setUnlocalizedName("gun_jack_ammo").setCreativeTab(MainRegistry.tabNuke).setTextureName(RefStrings.MODID + ":gun_jack_ammo"); gun_jack = new GunJack().setUnlocalizedName("gun_jack").setCreativeTab(MainRegistry.tabNuke).setTextureName(RefStrings.MODID + ":gun_jack"); gun_spark_ammo = new Item().setUnlocalizedName("gun_spark_ammo").setCreativeTab(MainRegistry.tabNuke).setTextureName(RefStrings.MODID + ":gun_spark_ammo"); - gun_spark = new GunJack().setUnlocalizedName("gun_spark").setCreativeTab(MainRegistry.tabNuke).setTextureName(RefStrings.MODID + ":gun_spark"); + gun_spark = new GunSpark().setUnlocalizedName("gun_spark").setCreativeTab(MainRegistry.tabNuke).setTextureName(RefStrings.MODID + ":gun_spark"); gun_hp_ammo = new Item().setUnlocalizedName("gun_hp_ammo").setCreativeTab(MainRegistry.tabNuke).setTextureName(RefStrings.MODID + ":gun_hp_ammo"); - gun_hp = new GunJack().setUnlocalizedName("gun_hp").setCreativeTab(MainRegistry.tabNuke).setTextureName(RefStrings.MODID + ":gun_hp"); + gun_hp = new GunHP().setUnlocalizedName("gun_hp").setCreativeTab(MainRegistry.tabNuke).setTextureName(RefStrings.MODID + ":gun_hp"); gun_euthanasia_ammo = new Item().setUnlocalizedName("gun_euthanasia_ammo").setCreativeTab(MainRegistry.tabNuke).setTextureName(RefStrings.MODID + ":gun_euthanasia_ammo"); gun_euthanasia = new GunEuthanasia().setUnlocalizedName("gun_euthanasia").setCreativeTab(MainRegistry.tabNuke).setTextureName(RefStrings.MODID + ":gun_euthanasia"); gun_defabricator_ammo = new Item().setUnlocalizedName("gun_defabricator_ammo").setCreativeTab(MainRegistry.tabNuke).setTextureName(RefStrings.MODID + ":gun_defabricator_ammo"); - gun_defabricator = new GunJack().setUnlocalizedName("gun_defabricator").setCreativeTab(MainRegistry.tabNuke).setTextureName(RefStrings.MODID + ":gun_defabricator"); + gun_defabricator = new GunDefabricator().setUnlocalizedName("gun_defabricator").setCreativeTab(MainRegistry.tabNuke).setTextureName(RefStrings.MODID + ":gun_defabricator"); gun_super_shotgun = new ItemCustomLore().setUnlocalizedName("gun_super_shotgun").setMaxStackSize(1).setFull3D().setCreativeTab(MainRegistry.tabNuke).setTextureName(RefStrings.MODID + ":gun_super_shotgun"); gun_moist_nugget = new ItemNugget(3, false).setUnlocalizedName("gun_moist_nugget").setCreativeTab(MainRegistry.tabNuke).setTextureName(RefStrings.MODID + ":gun_moist_nugget"); @@ -1644,6 +1590,20 @@ public class ModItems { factory_core_titanium = new ItemBattery(70400).setUnlocalizedName("factory_core_titanium").setMaxStackSize(1).setCreativeTab(MainRegistry.tabParts).setTextureName(RefStrings.MODID + ":factory_core_titanium"); factory_core_advanced = new ItemBattery(41600).setUnlocalizedName("factory_core_advanced").setMaxStackSize(1).setCreativeTab(MainRegistry.tabParts).setTextureName(RefStrings.MODID + ":factory_core_advanced"); + upgrade_template = new ItemCustomLore().setUnlocalizedName("upgrade_template").setMaxStackSize(1).setCreativeTab(MainRegistry.tabParts).setTextureName(RefStrings.MODID + ":upgrade_template"); + upgrade_speed_1 = new ItemCustomLore().setUnlocalizedName("upgrade_speed_1").setMaxStackSize(1).setCreativeTab(MainRegistry.tabParts).setTextureName(RefStrings.MODID + ":upgrade_speed_1"); + upgrade_speed_2 = new ItemCustomLore().setUnlocalizedName("upgrade_speed_2").setMaxStackSize(1).setCreativeTab(MainRegistry.tabParts).setTextureName(RefStrings.MODID + ":upgrade_speed_2"); + upgrade_speed_3 = new ItemCustomLore().setUnlocalizedName("upgrade_speed_3").setMaxStackSize(1).setCreativeTab(MainRegistry.tabParts).setTextureName(RefStrings.MODID + ":upgrade_speed_3"); + upgrade_effect_1 = new ItemCustomLore().setUnlocalizedName("upgrade_effect_1").setMaxStackSize(1).setCreativeTab(MainRegistry.tabParts).setTextureName(RefStrings.MODID + ":upgrade_effect_1"); + upgrade_effect_2 = new ItemCustomLore().setUnlocalizedName("upgrade_effect_2").setMaxStackSize(1).setCreativeTab(MainRegistry.tabParts).setTextureName(RefStrings.MODID + ":upgrade_effect_2"); + upgrade_effect_3 = new ItemCustomLore().setUnlocalizedName("upgrade_effect_3").setMaxStackSize(1).setCreativeTab(MainRegistry.tabParts).setTextureName(RefStrings.MODID + ":upgrade_effect_3"); + upgrade_power_1 = new ItemCustomLore().setUnlocalizedName("upgrade_power_1").setMaxStackSize(1).setCreativeTab(MainRegistry.tabParts).setTextureName(RefStrings.MODID + ":upgrade_power_1"); + upgrade_power_2 = new ItemCustomLore().setUnlocalizedName("upgrade_power_2").setMaxStackSize(1).setCreativeTab(MainRegistry.tabParts).setTextureName(RefStrings.MODID + ":upgrade_power_2"); + upgrade_power_3 = new ItemCustomLore().setUnlocalizedName("upgrade_power_3").setMaxStackSize(1).setCreativeTab(MainRegistry.tabParts).setTextureName(RefStrings.MODID + ":upgrade_power_3"); + upgrade_fortune_1 = new ItemCustomLore().setUnlocalizedName("upgrade_fortune_1").setMaxStackSize(1).setCreativeTab(MainRegistry.tabParts).setTextureName(RefStrings.MODID + ":upgrade_fortune_1"); + upgrade_fortune_2 = new ItemCustomLore().setUnlocalizedName("upgrade_fortune_2").setMaxStackSize(1).setCreativeTab(MainRegistry.tabParts).setTextureName(RefStrings.MODID + ":upgrade_fortune_2"); + upgrade_fortune_3 = new ItemCustomLore().setUnlocalizedName("upgrade_fortune_3").setMaxStackSize(1).setCreativeTab(MainRegistry.tabParts).setTextureName(RefStrings.MODID + ":upgrade_fortune_3"); + wand = new ItemWand().setUnlocalizedName("wand_k").setMaxStackSize(1).setCreativeTab(MainRegistry.tabNuke).setFull3D().setTextureName(RefStrings.MODID + ":wand"); wand_s = new ItemWandS().setUnlocalizedName("wand_s").setMaxStackSize(1).setCreativeTab(MainRegistry.tabNuke).setFull3D().setTextureName(RefStrings.MODID + ":wand_s"); wand_d = new ItemWandD().setUnlocalizedName("wand_d").setMaxStackSize(1).setCreativeTab(MainRegistry.tabNuke).setFull3D().setTextureName(RefStrings.MODID + ":wand_d"); @@ -1707,7 +1667,7 @@ public class ModItems { goggles = new ArmorModel(ArmorMaterial.IRON, 7, 0).setUnlocalizedName("goggles").setMaxStackSize(1).setTextureName(RefStrings.MODID + ":goggles"); gas_mask = new ArmorModel(ArmorMaterial.IRON, 7, 0).setUnlocalizedName("gas_mask").setMaxStackSize(1).setTextureName(RefStrings.MODID + ":gas_mask"); - oxy_mask = new ArmorModel(ArmorMaterial.IRON, 7, 0).setUnlocalizedName("oxy_mask").setMaxStackSize(1).setTextureName(RefStrings.MODID + ":oxy_mask"); + //oxy_mask = new ArmorModel(ArmorMaterial.IRON, 7, 0).setUnlocalizedName("oxy_mask").setMaxStackSize(1).setTextureName(RefStrings.MODID + ":oxy_mask"); t45_helmet = new ArmorT45(MainRegistry.enumArmorMaterialT45, 2, 0).setUnlocalizedName("t45_helmet").setMaxStackSize(1).setTextureName(RefStrings.MODID + ":t45_helmet"); t45_plate = new ArmorT45(MainRegistry.enumArmorMaterialT45, 2, 1).setUnlocalizedName("t45_plate").setMaxStackSize(1).setTextureName(RefStrings.MODID + ":t45_plate"); @@ -1979,6 +1939,7 @@ public class ModItems { GameRegistry.registerItem(ingot_verticium, ingot_verticium.getUnlocalizedName()); GameRegistry.registerItem(ingot_lanthanium, ingot_lanthanium.getUnlocalizedName()); GameRegistry.registerItem(ingot_actinium, ingot_actinium.getUnlocalizedName()); + GameRegistry.registerItem(ingot_desh, ingot_desh.getUnlocalizedName()); //Dusts & Other GameRegistry.registerItem(lithium, lithium.getUnlocalizedName()); @@ -2029,7 +1990,10 @@ public class ModItems { GameRegistry.registerItem(powder_cerium, powder_cerium.getUnlocalizedName()); GameRegistry.registerItem(powder_lanthanium, powder_lanthanium.getUnlocalizedName()); GameRegistry.registerItem(powder_actinium, powder_actinium.getUnlocalizedName()); + GameRegistry.registerItem(powder_desh, powder_desh.getUnlocalizedName()); GameRegistry.registerItem(dust, dust.getUnlocalizedName()); + GameRegistry.registerItem(powder_lithium_tiny, powder_lithium_tiny.getUnlocalizedName()); + GameRegistry.registerItem(powder_cobalt_tiny, powder_cobalt_tiny.getUnlocalizedName()); //Powders GameRegistry.registerItem(powder_fire, powder_fire.getUnlocalizedName()); @@ -2062,6 +2026,7 @@ public class ModItems { GameRegistry.registerItem(nugget_unobtainium, nugget_unobtainium.getUnlocalizedName()); GameRegistry.registerItem(nugget_daffergon, nugget_daffergon.getUnlocalizedName()); GameRegistry.registerItem(nugget_verticium, nugget_verticium.getUnlocalizedName()); + GameRegistry.registerItem(nugget_desh, nugget_desh.getUnlocalizedName()); //Plates GameRegistry.registerItem(plate_iron, plate_iron.getUnlocalizedName()); @@ -2077,6 +2042,7 @@ public class ModItems { GameRegistry.registerItem(plate_combine_steel, plate_combine_steel.getUnlocalizedName()); GameRegistry.registerItem(plate_mixed, plate_mixed.getUnlocalizedName()); GameRegistry.registerItem(plate_paa, plate_paa.getUnlocalizedName()); + GameRegistry.registerItem(plate_dalekanium, plate_dalekanium.getUnlocalizedName()); //Boards GameRegistry.registerItem(board_copper, board_copper.getUnlocalizedName()); @@ -2259,6 +2225,8 @@ public class ModItems { GameRegistry.registerItem(canister_canola, canister_canola.getUnlocalizedName()); GameRegistry.registerItem(canister_fuel, canister_fuel.getUnlocalizedName()); GameRegistry.registerItem(canister_kerosene, canister_kerosene.getUnlocalizedName()); + GameRegistry.registerItem(canister_reoil, canister_reoil.getUnlocalizedName()); + GameRegistry.registerItem(canister_petroil, canister_petroil.getUnlocalizedName()); GameRegistry.registerItem(canister_napalm, canister_napalm.getUnlocalizedName()); GameRegistry.registerItem(canister_NITAN, canister_NITAN.getUnlocalizedName()); @@ -2288,6 +2256,23 @@ public class ModItems { GameRegistry.registerItem(energy_core, energy_core.getUnlocalizedName()); GameRegistry.registerItem(factory_core_titanium, factory_core_titanium.getUnlocalizedName()); GameRegistry.registerItem(factory_core_advanced, factory_core_advanced.getUnlocalizedName()); + + //Machine Upgrades + GameRegistry.registerItem(upgrade_template, upgrade_template.getUnlocalizedName()); + GameRegistry.registerItem(upgrade_speed_1, upgrade_speed_1.getUnlocalizedName()); + GameRegistry.registerItem(upgrade_speed_2, upgrade_speed_2.getUnlocalizedName()); + GameRegistry.registerItem(upgrade_speed_3, upgrade_speed_3.getUnlocalizedName()); + GameRegistry.registerItem(upgrade_effect_1, upgrade_effect_1.getUnlocalizedName()); + GameRegistry.registerItem(upgrade_effect_2, upgrade_effect_2.getUnlocalizedName()); + GameRegistry.registerItem(upgrade_effect_3, upgrade_effect_3.getUnlocalizedName()); + GameRegistry.registerItem(upgrade_power_1, upgrade_power_1.getUnlocalizedName()); + GameRegistry.registerItem(upgrade_power_2, upgrade_power_2.getUnlocalizedName()); + GameRegistry.registerItem(upgrade_power_3, upgrade_power_3.getUnlocalizedName()); + GameRegistry.registerItem(upgrade_fortune_1, upgrade_fortune_1.getUnlocalizedName()); + GameRegistry.registerItem(upgrade_fortune_2, upgrade_fortune_2.getUnlocalizedName()); + GameRegistry.registerItem(upgrade_fortune_3, upgrade_fortune_3.getUnlocalizedName()); + + //Machine Items GameRegistry.registerItem(fuse, fuse.getUnlocalizedName()); GameRegistry.registerItem(redcoil_capacitor, redcoil_capacitor.getUnlocalizedName()); GameRegistry.registerItem(titanium_filter, titanium_filter.getUnlocalizedName()); @@ -2513,7 +2498,7 @@ public class ModItems { GameRegistry.registerItem(gun_jack_ammo, gun_jack_ammo.getUnlocalizedName()); GameRegistry.registerItem(gun_spark_ammo, gun_spark_ammo.getUnlocalizedName()); GameRegistry.registerItem(gun_hp_ammo, gun_hp_ammo.getUnlocalizedName()); - GameRegistry.registerItem(gun_defabricator, gun_defabricator.getUnlocalizedName()); + GameRegistry.registerItem(gun_defabricator_ammo, gun_defabricator_ammo.getUnlocalizedName()); GameRegistry.registerItem(gun_euthanasia_ammo, gun_euthanasia_ammo.getUnlocalizedName()); //-C-l-i-p-s- Magazines @@ -2711,7 +2696,7 @@ public class ModItems { //Conventional Armor GameRegistry.registerItem(goggles, goggles.getUnlocalizedName()); GameRegistry.registerItem(gas_mask, gas_mask.getUnlocalizedName()); - GameRegistry.registerItem(oxy_mask, oxy_mask.getUnlocalizedName()); + //GameRegistry.registerItem(oxy_mask, oxy_mask.getUnlocalizedName()); GameRegistry.registerItem(steel_helmet, steel_helmet.getUnlocalizedName()); GameRegistry.registerItem(steel_plate, steel_plate.getUnlocalizedName()); diff --git a/com/hbm/items/special/ItemBattery.java b/com/hbm/items/special/ItemBattery.java index 454afc2fc..c588be370 100644 --- a/com/hbm/items/special/ItemBattery.java +++ b/com/hbm/items/special/ItemBattery.java @@ -83,13 +83,13 @@ public class ItemBattery extends Item { } } - public long getCharge(ItemStack stack) { + public static long getCharge(ItemStack stack) { if(stack.getItem() instanceof ItemBattery) { if(stack.hasTagCompound()) { return stack.stackTagCompound.getLong("charge"); } else { stack.stackTagCompound = new NBTTagCompound(); - stack.stackTagCompound.setLong("charge", this.maxCharge); + stack.stackTagCompound.setLong("charge", ((ItemBattery)stack.getItem()).maxCharge); return stack.stackTagCompound.getLong("charge"); } } @@ -101,6 +101,10 @@ public class ItemBattery extends Item { return maxCharge; } + public static long getMaxChargeStatic(ItemStack stack) { + return ((ItemBattery)stack.getItem()).maxCharge; + } + public static ItemStack getEmptyBattery(Item item) { if(item instanceof ItemBattery) { diff --git a/com/hbm/items/special/ItemCustomLore.java b/com/hbm/items/special/ItemCustomLore.java index fee04fc36..df3e2555b 100644 --- a/com/hbm/items/special/ItemCustomLore.java +++ b/com/hbm/items/special/ItemCustomLore.java @@ -417,6 +417,90 @@ public class ItemCustomLore extends ItemRadioactive { list.add("Required for cyclotron operation."); list.add("Do NOT operate cyclotron without it!"); } + + if(this == ModItems.upgrade_speed_1) + { + list.add("Mining drill speed upgrade"); + list.add("Effect: Delay -15 (from 50)"); + list.add("Drawback: Power consumption +300 (from 100)"); + } + + if(this == ModItems.upgrade_speed_2) + { + list.add("Mining drill speed upgrade"); + list.add("Effect: Delay -30 (from 50)"); + list.add("Drawback: Power consumption +600 (from 100)"); + } + + if(this == ModItems.upgrade_speed_3) + { + list.add("Mining drill speed upgrade"); + list.add("Effect: Delay -45 (from 50)"); + list.add("Drawback: Power consumption +900 (from 100)"); + } + + if(this == ModItems.upgrade_effect_1) + { + list.add("Mining drill effectiveness upgrade"); + list.add("Effect: Radius +1 (from 1)"); + list.add("Drawback: Power consumption +80 (from 100)"); + } + + if(this == ModItems.upgrade_effect_2) + { + list.add("Mining drill effectiveness upgrade"); + list.add("Effect: Radius +2 (from 1)"); + list.add("Drawback: Power consumption +160 (from 100)"); + } + + if(this == ModItems.upgrade_effect_3) + { + list.add("Mining drill effectiveness upgrade"); + list.add("Effect: Radius +3 (from 1)"); + list.add("Drawback: Power consumption +240 (from 100)"); + } + + if(this == ModItems.upgrade_power_1) + { + list.add("Mining drill power saving upgrade"); + list.add("Effect: Power consumption -30 (from 100)"); + list.add("Drawback: Delay +5 (from 50)"); + } + + if(this == ModItems.upgrade_power_2) + { + list.add("Mining drill power saving upgrade"); + list.add("Effect: Power consumption -60 (from 100)"); + list.add("Drawback: Delay +10 (from 50)"); + } + + if(this == ModItems.upgrade_power_3) + { + list.add("Mining drill power saving upgrade"); + list.add("Effect: Power consumption -90 (from 100)"); + list.add("Drawback: Delay +15 (from 50)"); + } + + if(this == ModItems.upgrade_fortune_1) + { + list.add("Mining drill fortune upgrade"); + list.add("Effect: Fortune +1 (from 0"); + list.add("Drawback: Delay +15 (from 50)"); + } + + if(this == ModItems.upgrade_fortune_2) + { + list.add("Mining drill fortune upgrade"); + list.add("Effect: Fortune +2 (from 0"); + list.add("Drawback: Delay +30 (from 50)"); + } + + if(this == ModItems.upgrade_fortune_3) + { + list.add("Mining drill fortune upgrade"); + list.add("Effect: Fortune +3 (from 0"); + list.add("Drawback: Delay +45 (from 50)"); + } } @Override diff --git a/com/hbm/items/special/ItemStarterKit.java b/com/hbm/items/special/ItemStarterKit.java index fc52226a3..2804a24b4 100644 --- a/com/hbm/items/special/ItemStarterKit.java +++ b/com/hbm/items/special/ItemStarterKit.java @@ -237,6 +237,7 @@ public class ItemStarterKit extends Item { player.inventory.addItemStackToInventory(new ItemStack(ModItems.grenade_strong, 16)); player.inventory.addItemStackToInventory(new ItemStack(ModItems.grenade_frag, 16)); player.inventory.addItemStackToInventory(new ItemStack(ModItems.grenade_fire, 16)); + player.inventory.addItemStackToInventory(new ItemStack(ModItems.grenade_shrapnel, 16)); player.inventory.addItemStackToInventory(new ItemStack(ModItems.grenade_cluster, 16)); player.inventory.addItemStackToInventory(new ItemStack(ModItems.grenade_flare, 16)); player.inventory.addItemStackToInventory(new ItemStack(ModItems.grenade_electric, 16)); @@ -252,6 +253,7 @@ public class ItemStarterKit extends Item { player.inventory.addItemStackToInventory(new ItemStack(ModItems.grenade_nuke, 16)); player.inventory.addItemStackToInventory(new ItemStack(ModItems.grenade_nuclear, 16)); player.inventory.addItemStackToInventory(new ItemStack(ModItems.grenade_zomg, 16)); + player.inventory.addItemStackToInventory(new ItemStack(ModItems.grenade_black_hole, 16)); } if(this == ModItems.fleija_kit) diff --git a/com/hbm/items/tool/ItemWandD.java b/com/hbm/items/tool/ItemWandD.java index 0caaec5a2..8370ff018 100644 --- a/com/hbm/items/tool/ItemWandD.java +++ b/com/hbm/items/tool/ItemWandD.java @@ -4,6 +4,7 @@ import java.util.List; import com.hbm.blocks.ModBlocks; import com.hbm.main.MainRegistry; +import com.hbm.tileentity.TileEntityPylonRedWire; import net.minecraft.block.Block; import net.minecraft.entity.player.EntityPlayer; @@ -34,6 +35,12 @@ public class ItemWandD extends Item { MainRegistry.z++; if (b == ModBlocks.block_copper) MainRegistry.z--; + if (b == ModBlocks.red_pylon) { + TileEntityPylonRedWire te = (TileEntityPylonRedWire) world.getTileEntity(x, y, z); + for(int i = 0; i < te.connected.size(); i++) + if(world.isRemote) + player.addChatMessage(new ChatComponentText(te.connected.get(i).xCoord + " " + te.connected.get(i).yCoord + " " + te.connected.get(i).zCoord)); + } } return true; diff --git a/com/hbm/items/tool/ItemWiring.java b/com/hbm/items/tool/ItemWiring.java index bbabe2b6c..e45efd67a 100644 --- a/com/hbm/items/tool/ItemWiring.java +++ b/com/hbm/items/tool/ItemWiring.java @@ -1,16 +1,88 @@ package com.hbm.items.tool; +import java.util.List; + +import com.hbm.blocks.ModBlocks; +import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.TEPylonSenderPacket; +import com.hbm.tileentity.TileEntityMachineTeleporter; +import com.hbm.tileentity.TileEntityPylonRedWire; + 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 ItemWiring extends Item { - + @Override - public boolean onItemUse(ItemStack p_77648_1_, EntityPlayer p_77648_2_, World p_77648_3_, int p_77648_4_, int p_77648_5_, int p_77648_6_, int p_77648_7_, float p_77648_8_, float p_77648_9_, float p_77648_10_) - { + 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 (!player.isSneaking()) { + TileEntity te = world.getTileEntity(x, y, z); + + if (te != null && te instanceof TileEntityPylonRedWire) { + + if (stack.stackTagCompound == null) { + stack.stackTagCompound = new NBTTagCompound(); + + stack.stackTagCompound.setInteger("x", x); + stack.stackTagCompound.setInteger("y", y); + stack.stackTagCompound.setInteger("z", z); + + if (world.isRemote) + player.addChatMessage(new ChatComponentText( + "Wire start")); + } else { + int x1 = stack.stackTagCompound.getInteger("x"); + int y1 = stack.stackTagCompound.getInteger("y"); + int z1 = stack.stackTagCompound.getInteger("z"); + + if (world.getTileEntity(x1, y1, z1) != null + && world.getTileEntity(x1, y1, z1) instanceof TileEntityPylonRedWire && this.isLengthValid(x, y, z, x1, y1, z1, 25)) { + + ((TileEntityPylonRedWire) te).connected.add((TileEntityPylonRedWire) world.getTileEntity(x1, y1, z1)); + ((TileEntityPylonRedWire) world.getTileEntity(x1, y1, z1)).connected.add(((TileEntityPylonRedWire) te)); + + if (world.isRemote) + player.addChatMessage( + new ChatComponentText("Wire end")); + + stack.stackTagCompound = null; + } else { + if (world.isRemote) + player.addChatMessage(new ChatComponentText( + "Wire error")); + stack.stackTagCompound = null; + } + } + + player.swingItem(); + return true; + } + } + return false; - } + } + + @Override + public void addInformation(ItemStack itemstack, EntityPlayer player, List list, boolean bool) { + if (itemstack.stackTagCompound != null) { + list.add("Wire start x: " + itemstack.stackTagCompound.getInteger("x")); + list.add("Wire start y: " + itemstack.stackTagCompound.getInteger("y")); + list.add("Wire start z: " + itemstack.stackTagCompound.getInteger("z")); + } else { + list.add("Richt-click poles to connect"); + } + } + + public boolean isLengthValid(int x1, int y1, int z1, int x2, int y2, int z2, int length) { + double l = Math.sqrt(Math.pow(x2 - x1, 2) + Math.pow(y2 - y1, 2) + Math.pow(z2 - z1, 2)); + + return l <= length; + } } diff --git a/com/hbm/items/weapon/GunDefabricator.java b/com/hbm/items/weapon/GunDefabricator.java new file mode 100644 index 000000000..087f183f3 --- /dev/null +++ b/com/hbm/items/weapon/GunDefabricator.java @@ -0,0 +1,94 @@ +package com.hbm.items.weapon; + +import java.util.List; +import java.util.Random; + +import com.google.common.collect.Multimap; +import com.hbm.entity.projectile.EntityBullet; +import com.hbm.items.ModItems; + +import net.minecraft.enchantment.Enchantment; +import net.minecraft.enchantment.EnchantmentHelper; +import net.minecraft.entity.SharedMonsterAttributes; +import net.minecraft.entity.ai.attributes.AttributeModifier; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.EnumAction; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.world.World; +import net.minecraftforge.event.entity.player.ArrowNockEvent; + +public class GunDefabricator extends Item { + + Random rand = new Random(); + + public GunDefabricator() + { + this.maxStackSize = 1; + } + + @Override + public EnumAction getItemUseAction(ItemStack par1ItemStack) { + return EnumAction.bow; + } + + public int getMaxItemUseDuration(ItemStack p_77626_1_) { + return 72000; + } + + @Override + public ItemStack onItemRightClick(ItemStack p_77659_1_, World p_77659_2_, EntityPlayer p_77659_3_) { + ArrowNockEvent event = new ArrowNockEvent(p_77659_3_, p_77659_1_); + { + p_77659_3_.setItemInUse(p_77659_1_, this.getMaxItemUseDuration(p_77659_1_)); + } + + return p_77659_1_; + } + + public void onUsingTick(ItemStack stack, EntityPlayer player, int count) + { + World world = player.worldObj; + + boolean flag = player.capabilities.isCreativeMode + || EnchantmentHelper.getEnchantmentLevel(Enchantment.infinity.effectId, stack) > 0; + if ((player.capabilities.isCreativeMode || player.inventory.hasItem(ModItems.gun_defabricator_ammo)) + && count % 2 == 0) { + EntityBullet entitybullet = new EntityBullet(world, player, 3.0F, 40, 120, false, "tauDay"); + entitybullet.setDamage(40 + rand.nextInt(120 - 40)); + + //world.playSoundAtEntity(player, "random.explode", 1.0F, 1.5F + (rand.nextFloat() / 4)); + world.playSoundAtEntity(player, "hbm:weapon.defabShoot", 1.0F, 0.9F + (rand.nextFloat() * 0.2F)); + if(count == this.getMaxItemUseDuration(stack)) + world.playSoundAtEntity(player, "hbm:weapon.defabSpinup", 1.0F, 1.0F); + + if(count % 20 == 0 && !flag) + player.inventory.consumeInventoryItem(ModItems.gun_defabricator_ammo); + + if (!world.isRemote) { + world.spawnEntityInWorld(entitybullet); + } + } + } + + @Override + public int getItemEnchantability() { + return 0; + } + + @Override + public void addInformation(ItemStack itemstack, EntityPlayer player, List list, boolean bool) { + + list.add("BAD WOLF"); + list.add(""); + list.add("Ammo: Defabricator Energy Cell"); + list.add("Damage: 40 - 120"); + } + + public Multimap getItemAttributeModifiers() { + Multimap multimap = super.getItemAttributeModifiers(); + multimap.put(SharedMonsterAttributes.attackDamage.getAttributeUnlocalizedName(), + new AttributeModifier(field_111210_e, "Weapon modifier", (double) 6.5, 0)); + return multimap; + } +} diff --git a/com/hbm/items/weapon/GunHP.java b/com/hbm/items/weapon/GunHP.java new file mode 100644 index 000000000..385f4a8bc --- /dev/null +++ b/com/hbm/items/weapon/GunHP.java @@ -0,0 +1,122 @@ +package com.hbm.items.weapon; + +import java.util.List; +import java.util.Random; + +import com.google.common.collect.Multimap; +import com.hbm.entity.projectile.EntityBullet; +import com.hbm.entity.projectile.EntityFire; +import com.hbm.entity.projectile.EntityPlasmaBeam; +import com.hbm.items.ModItems; +import com.hbm.lib.Library; + +import net.minecraft.enchantment.Enchantment; +import net.minecraft.enchantment.EnchantmentHelper; +import net.minecraft.entity.SharedMonsterAttributes; +import net.minecraft.entity.ai.attributes.AttributeModifier; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.init.Blocks; +import net.minecraft.item.EnumAction; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.potion.PotionEffect; +import net.minecraft.util.MovingObjectPosition; +import net.minecraft.util.Vec3; +import net.minecraft.world.World; +import net.minecraftforge.event.entity.player.ArrowNockEvent; + +public class GunHP extends Item { + + Random rand = new Random(); + + public GunHP() { + this.maxStackSize = 1; + } + + @Override + public EnumAction getItemUseAction(ItemStack par1ItemStack) { + return EnumAction.bow; + } + + public int getMaxItemUseDuration(ItemStack p_77626_1_) { + return 72000; + } + + @Override + public ItemStack onItemRightClick(ItemStack p_77659_1_, World p_77659_2_, EntityPlayer p_77659_3_) { + ArrowNockEvent event = new ArrowNockEvent(p_77659_3_, p_77659_1_); + { + p_77659_3_.setItemInUse(p_77659_1_, this.getMaxItemUseDuration(p_77659_1_)); + } + + return p_77659_1_; + } + + public void onUsingTick(ItemStack stack, EntityPlayer player, int count) { + World world = player.worldObj; + + boolean flag = player.capabilities.isCreativeMode + || EnchantmentHelper.getEnchantmentLevel(Enchantment.infinity.effectId, stack) > 0; + if ((player.capabilities.isCreativeMode || player.inventory.hasItem(ModItems.gun_hp_ammo))) { + + EntityPlasmaBeam plasma = new EntityPlasmaBeam(world, player, 1F); + EntityPlasmaBeam plasma1 = new EntityPlasmaBeam(world, player, 1F); + EntityPlasmaBeam plasma2 = new EntityPlasmaBeam(world, player, 1F); + EntityPlasmaBeam plasma3 = new EntityPlasmaBeam(world, player, 1F); + EntityPlasmaBeam plasma4 = new EntityPlasmaBeam(world, player, 1F); + plasma1.motionX *= (0.75 + (rand.nextDouble() * 0.5)); + plasma1.motionY *= (0.75 + (rand.nextDouble() * 0.5)); + plasma1.motionZ *= (0.75 + (rand.nextDouble() * 0.5)); + plasma2.motionX *= (0.75 + (rand.nextDouble() * 0.5)); + plasma2.motionY *= (0.75 + (rand.nextDouble() * 0.5)); + plasma2.motionZ *= (0.75 + (rand.nextDouble() * 0.5)); + plasma3.motionX *= (0.75 + (rand.nextDouble() * 0.5)); + plasma3.motionY *= (0.75 + (rand.nextDouble() * 0.5)); + plasma3.motionZ *= (0.75 + (rand.nextDouble() * 0.5)); + plasma4.motionX *= (0.75 + (rand.nextDouble() * 0.5)); + plasma4.motionY *= (0.75 + (rand.nextDouble() * 0.5)); + plasma4.motionZ *= (0.75 + (rand.nextDouble() * 0.5)); + + if (flag) { + plasma.canBePickedUp = 2; + } else { + if (count % 20 == 0) + player.inventory.consumeInventoryItem(ModItems.gun_hp_ammo); + } + + if (count == this.getMaxItemUseDuration(stack)) + world.playSoundAtEntity(player, "hbm:weapon.immolatorIgnite", 1.0F, 1F); + if (count % 10 == 0) + world.playSoundAtEntity(player, "hbm:weapon.immolatorShoot", 1.0F, 1F); + + if (!world.isRemote) { + world.spawnEntityInWorld(plasma); + world.spawnEntityInWorld(plasma1); + world.spawnEntityInWorld(plasma2); + world.spawnEntityInWorld(plasma3); + world.spawnEntityInWorld(plasma4); + } + } + } + + @Override + public int getItemEnchantability() { + return 0; + } + + @Override + public void addInformation(ItemStack itemstack, EntityPlayer player, List list, boolean bool) { + + list.add("Rrrrt - rrrrt - rrrrt, weeee!"); + list.add(""); + list.add("Ammo: Ink Cartridge"); + list.add("Damage: 25 - 45"); + } + + public Multimap getItemAttributeModifiers() { + Multimap multimap = super.getItemAttributeModifiers(); + multimap.put(SharedMonsterAttributes.attackDamage.getAttributeUnlocalizedName(), + new AttributeModifier(field_111210_e, "Weapon modifier", (double) 4, 0)); + return multimap; + } +} diff --git a/com/hbm/items/weapon/GunSpark.java b/com/hbm/items/weapon/GunSpark.java new file mode 100644 index 000000000..b7bfd3003 --- /dev/null +++ b/com/hbm/items/weapon/GunSpark.java @@ -0,0 +1,142 @@ +package com.hbm.items.weapon; + +import java.util.List; +import java.util.Random; + +import com.google.common.collect.Multimap; +import com.hbm.entity.projectile.EntityBullet; +import com.hbm.entity.projectile.EntityPlasmaBeam; +import com.hbm.entity.projectile.EntitySparkBeam; +import com.hbm.items.ModItems; + +import net.minecraft.enchantment.Enchantment; +import net.minecraft.enchantment.EnchantmentHelper; +import net.minecraft.entity.SharedMonsterAttributes; +import net.minecraft.entity.ai.attributes.AttributeModifier; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.EnumAction; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.world.World; +import net.minecraftforge.common.MinecraftForge; +import net.minecraftforge.event.entity.player.ArrowLooseEvent; +import net.minecraftforge.event.entity.player.ArrowNockEvent; + +public class GunSpark extends Item { + Random rand = new Random(); + + public int dmgMin = 12; + public int dmgMax = 24; + + public GunSpark() { + + this.maxStackSize = 1; + } + + /** + * called when the player releases the use item button. Args: itemstack, + * world, entityplayer, itemInUseCount + */ + @Override + public void onPlayerStoppedUsing(ItemStack p_77615_1_, World p_77615_2_, EntityPlayer p_77615_3_, int p_77615_4_) { + int j = this.getMaxItemUseDuration(p_77615_1_) - p_77615_4_; + + ArrowLooseEvent event = new ArrowLooseEvent(p_77615_3_, p_77615_1_, j); + MinecraftForge.EVENT_BUS.post(event); + j = event.charge; + + boolean flag = p_77615_3_.capabilities.isCreativeMode + || EnchantmentHelper.getEnchantmentLevel(Enchantment.infinity.effectId, p_77615_1_) > 0; + + if (flag || p_77615_3_.inventory.hasItem(ModItems.gun_spark_ammo)) { + float f = j / 20.0F; + f = (f * f + f * 2.0F) / 3.0F; + + if (j < 10.0D) { + return; + } + + if (j > 10.0F) { + f = 10.0F; + } + + p_77615_1_.damageItem(1, p_77615_3_); + + p_77615_2_.playSoundAtEntity(p_77615_3_, "hbm:weapon.sparkShoot", 1.0F, 1.0F); + + if (flag) { } else { + p_77615_3_.inventory.consumeInventoryItem(ModItems.gun_spark_ammo); + } + + EntitySparkBeam beam = new EntitySparkBeam(p_77615_2_, p_77615_3_, 3F); + beam.setDamage(dmgMin + rand.nextInt(dmgMax - dmgMin)); + + if(!p_77615_2_.isRemote) + p_77615_2_.spawnEntityInWorld(beam); + } + } + + @Override + public ItemStack onEaten(ItemStack p_77654_1_, World p_77654_2_, EntityPlayer p_77654_3_) { + return p_77654_1_; + } + + /** + * How long it takes to use or consume an item + */ + @Override + public int getMaxItemUseDuration(ItemStack p_77626_1_) { + return 72000; + } + + /** + * returns the action that specifies what animation to play when the items + * is being used + */ + @Override + public EnumAction getItemUseAction(ItemStack p_77661_1_) { + return EnumAction.bow; + } + + /** + * Called whenever this item is equipped and the right mouse button is + * pressed. Args: itemStack, world, entityPlayer + */ + @Override + public ItemStack onItemRightClick(ItemStack p_77659_1_, World p_77659_2_, EntityPlayer p_77659_3_) { + ArrowNockEvent event = new ArrowNockEvent(p_77659_3_, p_77659_1_); + MinecraftForge.EVENT_BUS.post(event); + + if (p_77659_3_.capabilities.isCreativeMode || p_77659_3_.inventory.hasItem(ModItems.gun_jack_ammo)) { + p_77659_3_.setItemInUse(p_77659_1_, this.getMaxItemUseDuration(p_77659_1_)); + } + + return p_77659_1_; + } + + /** + * Return the enchantability factor of the item, most of the time is based + * on material. + */ + @Override + public int getItemEnchantability() { + return 1; + } + + @Override + public void addInformation(ItemStack itemstack, EntityPlayer player, List list, boolean bool) { + + list.add("'magic does not compute'"); + list.add("'aeiou'"); + list.add(""); + list.add("Ammo: Electromagnetic Cartridge"); + list.add("Projectiles explode on impact."); + } + + public Multimap getItemAttributeModifiers() { + Multimap multimap = super.getItemAttributeModifiers(); + multimap.put(SharedMonsterAttributes.attackDamage.getAttributeUnlocalizedName(), + new AttributeModifier(field_111210_e, "Weapon modifier", (double) 4.5, 0)); + return multimap; + } +} diff --git a/com/hbm/lib/HbmChestContents.java b/com/hbm/lib/HbmChestContents.java index 859912063..5b3982f92 100644 --- a/com/hbm/lib/HbmChestContents.java +++ b/com/hbm/lib/HbmChestContents.java @@ -20,8 +20,8 @@ public class HbmChestContents { new WeightedRandomChestContent(ModItems.ingot_titanium, 0, 7, 10, 4), new WeightedRandomChestContent(ModItems.gun_revolver, 0, 1, 1, 1), new WeightedRandomChestContent(ModItems.gun_revolver_ammo, 0, 2, 6, 2), - new WeightedRandomChestContent(ModItems.battery_generic, 50, 1, 1, 4), - new WeightedRandomChestContent(ModItems.battery_advanced, 200, 1, 1, 1), + new WeightedRandomChestContent(ModItems.battery_generic, 0, 1, 1, 4), + new WeightedRandomChestContent(ModItems.battery_advanced, 0, 1, 1, 1), new WeightedRandomChestContent(Item.getItemFromBlock(ModBlocks.block_titanium), 0, 0, 3, 1) }; private static WeightedRandomChestContent[] antenna = new WeightedRandomChestContent[] { @@ -32,8 +32,8 @@ public class HbmChestContents { new WeightedRandomChestContent(ModItems.circuit_aluminium, 0, 1, 5, 3), new WeightedRandomChestContent(ModItems.circuit_copper, 0, 1, 3, 2), new WeightedRandomChestContent(ModItems.circuit_red_copper, 0, 1, 2, 1), - new WeightedRandomChestContent(ModItems.battery_generic, 50, 1, 1, 5), - new WeightedRandomChestContent(ModItems.battery_advanced, 200, 1, 1, 3), + new WeightedRandomChestContent(ModItems.battery_generic, 0, 1, 1, 5), + new WeightedRandomChestContent(ModItems.battery_advanced, 0, 1, 1, 3), new WeightedRandomChestContent(ModItems.powder_iodine, 0, 1, 1, 1), new WeightedRandomChestContent(ModItems.powder_bromine, 0, 1, 1, 1), new WeightedRandomChestContent(Item.getItemFromBlock(ModBlocks.block_titanium), 0, 1, 2, 2), @@ -61,8 +61,8 @@ public class HbmChestContents { new WeightedRandomChestContent(ModItems.gun_xvl1456_ammo, 0, 16, 64, 2), new WeightedRandomChestContent(ModItems.grenade_nuclear, 0, 1, 1, 2), new WeightedRandomChestContent(ModItems.stealth_boy, 0, 1, 1, 2), - new WeightedRandomChestContent(ModItems.battery_advanced, 200, 1, 1, 3), - new WeightedRandomChestContent(ModItems.battery_schrabidium, 10000, 1, 1, 1), + new WeightedRandomChestContent(ModItems.battery_advanced, 0, 1, 1, 3), + new WeightedRandomChestContent(ModItems.battery_schrabidium, 0, 1, 1, 1), new WeightedRandomChestContent(ModItems.syringe_awesome, 0, 1, 1, 1), new WeightedRandomChestContent(ModItems.crate_caller, 0, 1, 1, 1), new WeightedRandomChestContent(ModItems.fusion_core, 0, 1, 1, 4), diff --git a/com/hbm/lib/Library.java b/com/hbm/lib/Library.java index cf648ba69..5d10a3af0 100644 --- a/com/hbm/lib/Library.java +++ b/com/hbm/lib/Library.java @@ -160,10 +160,6 @@ public class Library { book5.add("Supply Drop Requester\nRight click to call in a supply drop, has five uses in survival mode."); book5.add("Magazines\nRight click to retrieve ammo for a specific gun."); book5.add("Syringes\nRight click to inject the syringe's content, hit somebody else to give them the effects."); - book5.add(""); - book5.add(""); - book5.add(""); - book5.add("Coincidences are less likely than most people believe, don't you think? Look at things twice. Try imagining what the creators and inventors were thinking. All things happen for a reason, tough sometimes they are not as clear. \n\nPPPPPPP"); } public static boolean checkArmor(EntityPlayer player, Item helmet, Item plate, Item legs, Item boots) { @@ -283,7 +279,8 @@ public class Library { world.getBlock(x, y, z) == ModBlocks.dummy_port_igenerator || world.getBlock(x, y, z) == ModBlocks.dummy_port_cyclotron || world.getBlock(x, y, z) == ModBlocks.dummy_port_well || - world.getBlock(x, y, z) == ModBlocks.dummy_port_flare) + world.getBlock(x, y, z) == ModBlocks.dummy_port_flare || + world.getBlock(x, y, z) == ModBlocks.dummy_port_drill) { return true; } @@ -796,6 +793,22 @@ public class Library { { tileentity = worldObj.getTileEntity(x, y, z - 1); } + if(block == ModBlocks.dummy_port_drill && worldObj.getBlock(x + 1, y, z) == ModBlocks.machine_drill) + { + tileentity = worldObj.getTileEntity(x + 1, y, z); + } + if(block == ModBlocks.dummy_port_drill && worldObj.getBlock(x - 1, y, z) == ModBlocks.machine_drill) + { + tileentity = worldObj.getTileEntity(x - 1, y, z); + } + if(block == ModBlocks.dummy_port_drill && worldObj.getBlock(x, y, z + 1) == ModBlocks.machine_drill) + { + tileentity = worldObj.getTileEntity(x, y, z + 1); + } + if(block == ModBlocks.dummy_port_drill && worldObj.getBlock(x, y, z - 1) == ModBlocks.machine_drill) + { + tileentity = worldObj.getTileEntity(x, y, z - 1); + } if(tileentity instanceof IConductor) { @@ -858,13 +871,19 @@ public class Library { if(((TileEntityPylonRedWire)tileentity).uoteab.get(i).ticked != newTact) { ((TileEntityPylonRedWire)tileentity).uoteab.get(i).ticked = newTact; - //that.ffgeua(x, y + 1, z, that.getTact()); - //that.ffgeua(x, y - 1, z, that.getTact()); - //that.ffgeua(x - 1, y, z, that.getTact()); - //that.ffgeua(x + 1, y, z, that.getTact()); - //that.ffgeua(x, y, z - 1, that.getTact()); - //that.ffgeua(x, y, z + 1, that.getTact()); - //TODO: connections + for(int j = 0; j < ((TileEntityPylonRedWire)tileentity).connected.size(); j++) { + TileEntityPylonRedWire pylon = ((TileEntityPylonRedWire)tileentity).connected.get(j); + if(pylon != null) { + that.ffgeua(pylon.xCoord + 1, pylon.yCoord, pylon.zCoord, that.getTact()); + that.ffgeua(pylon.xCoord - 1, pylon.yCoord, pylon.zCoord, that.getTact()); + that.ffgeua(pylon.xCoord, pylon.yCoord + 1, pylon.zCoord, that.getTact()); + that.ffgeua(pylon.xCoord, pylon.yCoord - 1, pylon.zCoord, that.getTact()); + that.ffgeua(pylon.xCoord, pylon.yCoord, pylon.zCoord + 1, that.getTact()); + that.ffgeua(pylon.xCoord, pylon.yCoord, pylon.zCoord - 1, that.getTact()); + + that.ffgeua(pylon.xCoord, pylon.yCoord, pylon.zCoord, that.getTact()); + } + } } } } diff --git a/com/hbm/lib/RefStrings.java b/com/hbm/lib/RefStrings.java index 09fd54735..522e150e2 100644 --- a/com/hbm/lib/RefStrings.java +++ b/com/hbm/lib/RefStrings.java @@ -3,7 +3,7 @@ package com.hbm.lib; public class RefStrings { public static final String MODID = "hbm"; public static final String NAME = "Hbm's Nuclear Tech Mod"; - public static final String VERSION = "1.0.25 BETA (Tennessine-Luna-X02)"; + public static final String VERSION = "1.0.25"; //HBM's Beta Naming Convention: //V T (X-Y-Z) //V -> next release version diff --git a/com/hbm/main/ClientProxy.java b/com/hbm/main/ClientProxy.java index 57ec2b164..deed6d3c2 100644 --- a/com/hbm/main/ClientProxy.java +++ b/com/hbm/main/ClientProxy.java @@ -83,6 +83,7 @@ import com.hbm.entity.projectile.EntityRocket; import com.hbm.entity.projectile.EntityRubble; import com.hbm.entity.projectile.EntitySchrab; import com.hbm.entity.projectile.EntityShrapnel; +import com.hbm.entity.projectile.EntitySparkBeam; import com.hbm.items.ModItems; import com.hbm.render.entity.BSmokeRenderer; import com.hbm.render.entity.DSmokeRenderer; @@ -94,6 +95,7 @@ import com.hbm.render.entity.RenderBaleflare; import com.hbm.render.entity.RenderBeam; import com.hbm.render.entity.RenderBeam2; import com.hbm.render.entity.RenderBeam3; +import com.hbm.render.entity.RenderBeam4; import com.hbm.render.entity.RenderBigNuke; import com.hbm.render.entity.RenderBlackHole; import com.hbm.render.entity.RenderChopperMine; @@ -174,6 +176,7 @@ import com.hbm.render.tileentity.RenderGasDuct; import com.hbm.render.tileentity.RenderGasFlare; import com.hbm.render.tileentity.RenderIGenerator; import com.hbm.render.tileentity.RenderLaunchPadTier1; +import com.hbm.render.tileentity.RenderMiningDrill; import com.hbm.render.tileentity.RenderNukeBoy; import com.hbm.render.tileentity.RenderNukeCustom; import com.hbm.render.tileentity.RenderNukeFleija; @@ -186,9 +189,11 @@ import com.hbm.render.tileentity.RenderOilDuct; import com.hbm.render.tileentity.RenderPoleSatelliteReceiver; import com.hbm.render.tileentity.RenderPoleTop; import com.hbm.render.tileentity.RenderPuF6Tank; +import com.hbm.render.tileentity.RenderPylon; import com.hbm.render.tileentity.RenderRedBarrel; import com.hbm.render.tileentity.RenderRotationTester; import com.hbm.render.tileentity.RenderSteelPoles; +import com.hbm.render.tileentity.RenderStructureMaker; import com.hbm.render.tileentity.RenderTapeRecorder; import com.hbm.render.tileentity.RenderTestBombAdvanced; import com.hbm.render.tileentity.RenderTestContainer; @@ -211,6 +216,7 @@ import com.hbm.tileentity.TileEntityDecoSteelPoles; import com.hbm.tileentity.TileEntityDecoTapeRecorder; import com.hbm.tileentity.TileEntityGasDuct; import com.hbm.tileentity.TileEntityMachineIGenerator; +import com.hbm.tileentity.TileEntityMachineMiningDrill; import com.hbm.tileentity.TileEntityMachineOilWell; import com.hbm.tileentity.TileEntityLaunchPad; import com.hbm.tileentity.TileEntityMachineCentrifuge; @@ -228,8 +234,10 @@ import com.hbm.tileentity.TileEntityNukePrototype; import com.hbm.tileentity.TileEntityNukeTsar; import com.hbm.tileentity.TileEntityObjTester; import com.hbm.tileentity.TileEntityOilDuct; +import com.hbm.tileentity.TileEntityPylonRedWire; import com.hbm.tileentity.TileEntityRedBarrel; import com.hbm.tileentity.TileEntityRotationTester; +import com.hbm.tileentity.TileEntityStructureMarker; import com.hbm.tileentity.TileEntityTestBombAdvanced; import com.hbm.tileentity.TileEntityTestContainer; import com.hbm.tileentity.TileEntityTestRender; @@ -270,6 +278,7 @@ public class ClientProxy extends ServerProxy ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineCyclotron.class, new RenderCyclotron()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineOilWell.class, new RenderDerrick()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineGasFlare.class, new RenderGasFlare()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineMiningDrill.class, new RenderMiningDrill()); //RenderingRegistry.registerEntityRenderingHandler(EntityRocket.class, new RenderRocket()); RenderingRegistry.registerEntityRenderingHandler(EntityRocket.class, new RenderSnowball(ModItems.man_core)); @@ -381,6 +390,7 @@ public class ClientProxy extends ServerProxy RenderingRegistry.registerEntityRenderingHandler(EntityPlasmaBeam.class, new RenderBeam()); RenderingRegistry.registerEntityRenderingHandler(EntityLaserBeam.class, new RenderBeam2()); RenderingRegistry.registerEntityRenderingHandler(EntityMinerBeam.class, new RenderBeam3()); + RenderingRegistry.registerEntityRenderingHandler(EntitySparkBeam.class, new RenderBeam4()); RenderingRegistry.registerEntityRenderingHandler(EntityLN2.class, new RenderLN2(ModItems.energy_ball)); RenderingRegistry.registerEntityRenderingHandler(EntityMinecartTest.class, new RenderMinecartTest()); @@ -396,6 +406,9 @@ public class ClientProxy extends ServerProxy ClientRegistry.bindTileEntitySpecialRenderer(TileEntityOilDuct.class, new RenderOilDuct()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityGasDuct.class, new RenderGasDuct()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityPylonRedWire.class, new RenderPylon()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityStructureMarker.class, new RenderStructureMaker()); + RenderingRegistry.registerEntityRenderingHandler(EntityMissileGeneric.class, new RenderMissileGeneric()); RenderingRegistry.registerEntityRenderingHandler(EntityMissileAntiBallistic.class, new RenderMissileGeneric()); RenderingRegistry.registerEntityRenderingHandler(EntityMissileIncendiary.class, new RenderMissileGeneric()); diff --git a/com/hbm/main/CraftingManager.java b/com/hbm/main/CraftingManager.java index 8a8f39529..bfd500e59 100644 --- a/com/hbm/main/CraftingManager.java +++ b/com/hbm/main/CraftingManager.java @@ -46,7 +46,9 @@ public class CraftingManager { GameRegistry.addRecipe(new ItemStack(ModItems.wire_advanced_alloy, 6), new Object[] { "CCC", 'S', Items.string, 'C', ModItems.ingot_advanced_alloy }); GameRegistry.addRecipe(new ItemStack(ModItems.wire_magnetized_tungsten, 6), new Object[] { "CCC", 'S', Items.string, 'C', ModItems.ingot_magnetized_tungsten }); GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.hazmat_cloth, 4), new Object[] { "LN", "LN", 'L', Items.leather, 'N', "nuggetLead" })); - GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.hazmat_cloth, 8), new Object[] { "SCS", "CPC", "SCS", 'S', Items.string, 'P', Items.leather, 'C', "dustLead" })); + GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.hazmat_cloth, 4), new Object[] { "SCS", "CPC", "SCS", 'S', Items.string, 'P', Items.leather, 'C', "dustLead" })); + GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.asbestos_cloth, 4), new Object[] { "SCS", "CPC", "SCS", 'S', Items.string, 'P', Blocks.wool, 'C', "dustNetherQuartz" })); + GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.asbestos_cloth, 16), new Object[] { "SCS", "CPC", "SCS", 'S', Items.string, 'P', ModItems.powder_bromine, 'C', Blocks.wool })); GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.filter_coal, 1), new Object[] { "SCS", "CPC", "SCS", 'S', Items.string, 'P', Items.paper, 'C', "dustCoal" })); GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.plate_mixed, 3), new Object[] { "ANA", "NCN", "ANA", 'A', ModItems.plate_advanced_alloy, 'N', "plateDenseLead", 'C', ModItems.plate_combine_steel })); GameRegistry.addRecipe(new ItemStack(ModItems.bolt_dura_steel, 4), new Object[] { "D", "D", 'D', ModItems.ingot_dura_steel}); @@ -56,6 +58,8 @@ public class CraftingManager { GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.magnet_dee, 1), new Object[] { "SMM", "M M", "MMT", 'S', "ingotSteel", 'M', ModBlocks.fusion_conductor, 'T', ModItems.coil_advanced_torus })); GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.magnet_circular, 2), new Object[] { "PSP", "MMM", "PSP", 'S', "ingotSteel", 'M', ModBlocks.fusion_conductor, 'P', "plateAdvanced" })); GameRegistry.addRecipe(new ItemStack(ModItems.cyclotron_tower, 1), new Object[] { "CDC", "CDC", "CDC", 'C', ModItems.magnet_circular, 'D', ModItems.magnet_dee }); + + GameRegistry.addRecipe(new ItemStack(ModBlocks.marker_structure, 1), new Object[] { "L", "G", "R", 'L', ModItems.powder_lapis, 'G', Items.glowstone_dust, 'R', Blocks.redstone_torch }); GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.circuit_aluminium, 1), new Object[] { "RAR", "ASA", "RAR", 'S', "plateSteel", 'R', "dustRedstone", 'A', ModItems.wire_aluminium })); GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.circuit_copper, 1), new Object[] { "RAR", "ASA", "RAR", 'S', ModItems.circuit_aluminium, 'R', "dustNetherQuartz", 'A', ModItems.wire_copper })); @@ -188,6 +192,10 @@ public class CraftingManager { GameRegistry.addRecipe(new ItemStack(ModItems.nugget_daffergon, 9), new Object[] { "#", '#', ModItems.ingot_daffergon }); GameRegistry.addRecipe(new ItemStack(ModItems.ingot_verticium, 1), new Object[] { "###", "###", "###", '#', ModItems.nugget_verticium }); GameRegistry.addRecipe(new ItemStack(ModItems.nugget_verticium, 9), new Object[] { "#", '#', ModItems.ingot_verticium }); + GameRegistry.addRecipe(new ItemStack(ModItems.powder_lithium, 1), new Object[] { "###", "###", "###", '#', ModItems.powder_lithium_tiny }); + GameRegistry.addRecipe(new ItemStack(ModItems.powder_lithium_tiny, 9), new Object[] { "#", '#', ModItems.powder_lithium }); + GameRegistry.addRecipe(new ItemStack(ModItems.powder_cobalt, 1), new Object[] { "###", "###", "###", '#', ModItems.powder_cobalt_tiny }); + GameRegistry.addRecipe(new ItemStack(ModItems.powder_cobalt_tiny, 9), new Object[] { "#", '#', ModItems.powder_cobalt }); GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.rod_empty, 16), new Object[] { "SSS", "L L", "SSS", 'S', "plateSteel", 'L', "plateLead" })); GameRegistry.addShapelessRecipe(new ItemStack(ModItems.rod_uranium, 1), new Object[] { ModItems.rod_empty, ModItems.nugget_uranium, ModItems.nugget_uranium, ModItems.nugget_uranium, ModItems.nugget_uranium, ModItems.nugget_uranium, ModItems.nugget_uranium }); @@ -457,6 +465,7 @@ public class CraftingManager { GameRegistry.addRecipe(new ItemStack(Item.getItemFromBlock(ModBlocks.machine_industrial_generator), 1), new Object[] { "PPP", "FGG", "WSS", 'P', ModItems.board_copper, 'F', ModItems.generator_front, 'G', ModItems.generator_steel, 'W', ModBlocks.red_wire_coated, 'S', ModItems.pedestal_steel }); GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(Item.getItemFromBlock(ModBlocks.red_wire_coated), 16), new Object[] { "WRW", "RIR", "WRW", 'W', "ingotTungsten", 'I', "ingotRedstoneAlloy", 'R', ModItems.wire_red_copper })); GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(Item.getItemFromBlock(ModBlocks.red_cable), 16), new Object[] { "WRW", "RIR", "WRW", 'W', "plateSteel", 'I', "ingotRedstoneAlloy", 'R', ModItems.wire_red_copper })); + GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(Item.getItemFromBlock(ModBlocks.red_pylon), 4), new Object[] { "CWC", "PWP", " T ", 'C', ModItems.coil_copper_torus, 'W', "plankWood", 'P', "plateSteel", 'T', ModBlocks.red_wire_coated })); GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(Item.getItemFromBlock(ModBlocks.oil_duct_solid), 16), new Object[] { "SPS", "P P", "SPS", 'S', "ingotSteel", 'P', "plateIron" })); GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(Item.getItemFromBlock(ModBlocks.oil_duct), 16), new Object[] { "SIS", " ", "SIS", 'S', "plateSteel", 'I', "plateIron" })); GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(Item.getItemFromBlock(ModBlocks.gas_duct_solid), 16), new Object[] { "SPS", "P P", "SPS", 'S', "ingotSteel", 'P', "plateCopper" })); @@ -547,7 +556,8 @@ public class CraftingManager { GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(Item.getItemFromBlock(ModBlocks.fwatz_hatch), 1), new Object[] { "SSS", "SFS", "SSS", 'S', ModBlocks.fwatz_scaffold, 'F', Blocks.furnace })); GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(Item.getItemFromBlock(ModBlocks.fwatz_computer), 1), new Object[] { "DTD", "TMT", "DTD", 'D', "dustDiamond", 'T', "dustMagnetizedTungsten", 'M', ModBlocks.block_meteor })); GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(Item.getItemFromBlock(ModBlocks.fwatz_core), 1), new Object[] { "CMC", "MAM", "CMC", 'C', ModItems.circuit_schrabidium, 'M', ModBlocks.fwatz_computer, 'A', ModBlocks.fwatz_conductor })); - + + GameRegistry.addRecipe(new ItemStack(Item.getItemFromBlock(ModBlocks.asphalt), 8), new Object[] { "BGB", "GSG", "BGB", 'B', ModItems.canister_smear, 'G', Blocks.gravel, 'S', Blocks.sand }); GameRegistry.addRecipe(new ItemStack(Item.getItemFromBlock(ModBlocks.brick_light), 4), new Object[] { "FBF", "BFB", "FBF", 'F', Blocks.fence, 'B', Blocks.brick_block }); GameRegistry.addRecipe(new ItemStack(Item.getItemFromBlock(ModBlocks.brick_concrete), 4), new Object[] { "FBF", "BFB", "FBF", 'F', Blocks.iron_bars, 'B', Blocks.stone }); GameRegistry.addRecipe(new ItemStack(Item.getItemFromBlock(ModBlocks.brick_obsidian), 4), new Object[] { "FBF", "BFB", "FBF", 'F', Blocks.iron_bars, 'B', Blocks.obsidian }); @@ -632,6 +642,12 @@ public class CraftingManager { GameRegistry.addShapelessRecipe(new ItemStack(ModItems.gun_jack_ammo, 1), new Object[] { ModItems.gun_uboinik_ammo, ModItems.gun_uboinik_ammo, ModItems.gun_uboinik_ammo, ModItems.gun_uboinik_ammo }); GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.gun_euthanasia, 1), new Object[] { "TDT", "AAS", " T ", 'A', "ingotAustralium", 'T', ModItems.toothpicks, 'S', ModItems.gun_mp40, 'D', ModItems.ducttape })); GameRegistry.addShapedRecipe(new ItemStack(ModItems.gun_euthanasia_ammo, 12), new Object[] { "P", "S", "N", 'P', ModItems.powder_poison, 'N', ModItems.niter, 'S', ModItems.syringe_metal_empty }); + GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.gun_spark, 1), new Object[] { "TTD", "AAS", " T", 'A', "ingotDaffergon", 'T', ModItems.toothpicks, 'S', ModItems.gun_rpg, 'D', ModItems.ducttape })); + GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.gun_spark_ammo, 4), new Object[] { "PCP", "DDD", "PCP", 'P', "plateLead", 'C', ModItems.coil_gold, 'D', ModItems.powder_power })); + GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.gun_hp, 1), new Object[] { "TDT", "ASA", " T ", 'A', "ingotReiium", 'T', ModItems.toothpicks, 'S', ModItems.gun_xvl1456, 'D', ModItems.ducttape })); + GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.gun_hp_ammo, 8), new Object[] { " R ", "BSK", " Y ", 'S', "plateSteel", 'K', new ItemStack(Items.dye, 1, 0), 'R', new ItemStack(Items.dye, 1, 1), 'B', new ItemStack(Items.dye, 1, 4), 'Y', new ItemStack(Items.dye, 1, 11) })); + GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.gun_defabricator, 1), new Object[] { " SS", "DDD", "TCB", 'S', "plateSteel", 'D', ModItems.plate_dalekanium, 'T', "plateTitanium", 'C', ModItems.circuit_gold, 'B', ModItems.battery_lithium })); + GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.gun_defabricator_ammo, 16), new Object[] { "PCP", "DDD", "PCP", 'P', "plateSteel", 'C', ModItems.coil_copper, 'D', "dustLithium" })); GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.grenade_generic, 4), new Object[] { "RS ", "ITI", " I ", 'I', "plateIron", 'R', ModItems.wire_red_copper, 'S', "plateSteel", 'T', Item.getItemFromBlock(Blocks.tnt) })); GameRegistry.addRecipe(new ItemStack(ModItems.grenade_strong, 2), new Object[] { " G ", "SGS", " S ", 'G', ModItems.grenade_generic, 'S', Items.gunpowder }); @@ -840,6 +856,8 @@ public class CraftingManager { GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.chainsaw, 1), new Object[] { "TTG", "SSM", 'T', "plateIron", 'S', "plateSteel", 'M', ModItems.motor, 'G', ModItems.circuit_gold })); + GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.wiring_red_copper, 1), new Object[] { "PPP", "PIP", "PPP", 'P', "plateSteel", 'I', "ingotSteel" })); + ItemStack multitool = new ItemStack(ModItems.multitool_dig, 1); multitool.addEnchantment(Enchantment.looting, 3); multitool.addEnchantment(Enchantment.fortune, 3); @@ -851,6 +869,10 @@ public class CraftingManager { GameRegistry.addRecipe(new ItemStack(ModItems.hazmat_plate, 1), new Object[] { "E E", "EEE", "EEE", 'E', ModItems.hazmat_cloth }); GameRegistry.addRecipe(new ItemStack(ModItems.hazmat_legs, 1), new Object[] { "EEE", "E E", "E E", 'E', ModItems.hazmat_cloth }); GameRegistry.addRecipe(new ItemStack(ModItems.hazmat_boots, 1), new Object[] { "E E", "E E", 'E', ModItems.hazmat_cloth }); + GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.asbestos_helmet, 1), new Object[] { "EEE", "EIE", 'E', ModItems.asbestos_cloth, 'I', "plateGold" })); + GameRegistry.addRecipe(new ItemStack(ModItems.asbestos_plate, 1), new Object[] { "E E", "EEE", "EEE", 'E', ModItems.asbestos_cloth }); + GameRegistry.addRecipe(new ItemStack(ModItems.asbestos_legs, 1), new Object[] { "EEE", "E E", "E E", 'E', ModItems.asbestos_cloth }); + GameRegistry.addRecipe(new ItemStack(ModItems.asbestos_boots, 1), new Object[] { "E E", "E E", 'E', ModItems.asbestos_cloth }); GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.hazmat_paa_helmet, 1), new Object[] { "EEE", "IEI", "FPF", 'E', ModItems.plate_paa, 'I', "paneGlass", 'P', "plateSteel", 'F', ModItems.filter_coal })); GameRegistry.addRecipe(new ItemStack(ModItems.hazmat_paa_plate, 1), new Object[] { "E E", "EEE", "EEE", 'E', ModItems.plate_paa }); GameRegistry.addRecipe(new ItemStack(ModItems.hazmat_paa_legs, 1), new Object[] { "EEE", "E E", "E E", 'E', ModItems.plate_paa }); @@ -901,10 +923,12 @@ public class CraftingManager { GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(Items.dye, 1, 4), new Object[] { "#", '#', "dustLapis" })); GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(Items.diamond, 1), new Object[] { "#", '#', "dustDiamond" })); GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(Items.emerald, 1), new Object[] { "#", '#', "dustEmerald" })); - if(MainRegistry.enableNITAN) + if(MainRegistry.enableNITAN) { GameRegistry.addShapelessRecipe(new ItemStack(ModItems.canister_NITAN, 1), new Object[] { ModItems.canister_empty, ModItems.canister_napalm, ModItems.powder_neptunium, ModItems.powder_iodine, ModItems.powder_thorium, ModItems.powder_astatine, ModItems.powder_neodymium, ModItems.powder_caesium }); - GameRegistry.addShapelessRecipe(new ItemStack(ModItems.canister_NITAN, 1), new Object[] { ModItems.canister_empty, ModItems.canister_napalm, ModItems.powder_strontium, ModItems.powder_cobalt, ModItems.powder_bromine, ModItems.powder_tennessine, ModItems.powder_niobium, ModItems.powder_cerium }); - + GameRegistry.addShapelessRecipe(new ItemStack(ModItems.canister_NITAN, 1), new Object[] { ModItems.canister_empty, ModItems.canister_napalm, ModItems.powder_strontium, ModItems.powder_cobalt, ModItems.powder_bromine, ModItems.powder_tennessine, ModItems.powder_niobium, ModItems.powder_cerium }); + } + GameRegistry.addRecipe(new ItemStack(ModItems.canister_petroil, 9), new Object[] { "RRR", "RLR", "RRR", 'R', ModItems.canister_reoil, 'L', ModItems.canister_canola }); + GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.record_lc, 1), new Object[] { " S ", "SDS", " S ", 'S', "ingotSteel", 'D', "dustLapis" })); GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.record_ss, 1), new Object[] { " S ", "SDS", " S ", 'S', "ingotSteel", 'D', "dustAdvanced" })); GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.record_vc, 1), new Object[] { " S ", "SDS", " S ", 'S', "ingotSteel", 'D', "dustCMBSteel" })); @@ -941,7 +965,7 @@ public class CraftingManager { GameRegistry.addShapelessRecipe(new ItemStack(ModItems.crystal_horn, 1), new Object[] { ModItems.powder_neptunium, ModItems.powder_iodine, ModItems.powder_thorium, ModItems.powder_astatine, ModItems.powder_neodymium, ModItems.powder_caesium, ModBlocks.block_meteor, ModBlocks.gravel_obsidian, Items.water_bucket }); GameRegistry.addShapelessRecipe(new ItemStack(ModItems.crystal_charred, 1), new Object[] { ModItems.powder_strontium, ModItems.powder_cobalt, ModItems.powder_bromine, ModItems.powder_niobium, ModItems.powder_tennessine, ModItems.powder_cerium, ModBlocks.block_meteor, ModBlocks.block_aluminium, Items.water_bucket }); GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModBlocks.crystal_virus, 1), new Object[] { "STS", "THT", "STS", 'S', ModItems.cell_sas3, 'T', "dustTungsten", 'H', ModItems.crystal_horn })); - GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModBlocks.crystal_pulsar, 1), new Object[] { "STS", "THT", "STS", 'S', ModItems.cell_uf6, 'T', "dustAluminum", 'H', ModItems.crystal_charred })); + GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModBlocks.crystal_pulsar, 32), new Object[] { "STS", "THT", "STS", 'S', ModItems.cell_uf6, 'T', "dustAluminum", 'H', ModItems.crystal_charred })); } public static void AddSmeltingRec() @@ -997,6 +1021,7 @@ public class CraftingManager { GameRegistry.addSmelting(ModItems.combine_scrap, new ItemStack(ModItems.ingot_combine_steel), 1.0F); GameRegistry.addSmelting(ModItems.tank_waste, new ItemStack(ModItems.tank_waste), 0.0F); + GameRegistry.addSmelting(ModItems.canister_smear, new ItemStack(ModItems.canister_reoil), 1.0F); GameRegistry.addSmelting(Items.bone, new ItemStack(Items.slime_ball, 3), 0.0F); GameRegistry.addSmelting(new ItemStack(Items.dye, 1, 15), new ItemStack(Items.slime_ball, 1), 0.0F); diff --git a/com/hbm/main/MainRegistry.java b/com/hbm/main/MainRegistry.java index fd8f161d9..dcf5a0360 100644 --- a/com/hbm/main/MainRegistry.java +++ b/com/hbm/main/MainRegistry.java @@ -109,6 +109,7 @@ import com.hbm.entity.projectile.EntityRocket; import com.hbm.entity.projectile.EntityRubble; import com.hbm.entity.projectile.EntitySchrab; import com.hbm.entity.projectile.EntityShrapnel; +import com.hbm.entity.projectile.EntitySparkBeam; import com.hbm.handler.FuelHandler; import com.hbm.handler.GUIHandler; import com.hbm.inventory.MachineRecipes; @@ -117,6 +118,7 @@ import com.hbm.items.ModItems; import com.hbm.lib.HbmWorld; import com.hbm.lib.Library; import com.hbm.lib.RefStrings; +import com.hbm.packet.PacketDispatcher; import com.hbm.tileentity.TileEntityBombMulti; import com.hbm.tileentity.TileEntityCable; import com.hbm.tileentity.TileEntityConverterHeRf; @@ -137,6 +139,7 @@ import com.hbm.tileentity.TileEntityGasDuct; import com.hbm.tileentity.TileEntityGasDuctSolid; import com.hbm.tileentity.TileEntityHatch; import com.hbm.tileentity.TileEntityMachineIGenerator; +import com.hbm.tileentity.TileEntityMachineMiningDrill; import com.hbm.tileentity.TileEntityMachineOilWell; import com.hbm.tileentity.TileEntityLaunchPad; import com.hbm.tileentity.TileEntityMachineBattery; @@ -174,6 +177,7 @@ import com.hbm.tileentity.TileEntityReactorMultiblock; import com.hbm.tileentity.TileEntityRedBarrel; import com.hbm.tileentity.TileEntityRotationTester; import com.hbm.tileentity.TileEntityRtgFurnace; +import com.hbm.tileentity.TileEntityStructureMarker; import com.hbm.tileentity.TileEntityTestBombAdvanced; import com.hbm.tileentity.TileEntityTestContainer; import com.hbm.tileentity.TileEntityTestNuke; @@ -200,6 +204,9 @@ public class MainRegistry @SidedProxy(clientSide = RefStrings.CLIENTSIDE, serverSide = RefStrings.SERVERSIDE) public static ServerProxy proxy; + //We'll get to that eventually + //public static PacketHandler packetHandler; + @Metadata public static ModMetadata meta; @@ -246,7 +253,7 @@ public class MainRegistry public static CreativeTabs tabNuke = new NukeTab(CreativeTabs.getNextID(), "tabNuke"); //Achievements - public static Achievement achievementGetTitanium; + /*public static Achievement achievementGetTitanium; public static Achievement achievementGetCopper; public static Achievement achievementCraftAlloyFurnace; public static Achievement achievementCraftElectricFurnace; @@ -284,7 +291,7 @@ public class MainRegistry public static Achievement achievementGetAustalium; public static Achievement achievementGetVerticium; public static Achievement achievementGetUnobtainium; - public static Achievement achievementGetDaffergon; + public static Achievement achievementGetDaffergon;*/ public static boolean enableDebugMode = true; public static boolean enableMycelium = false; @@ -446,6 +453,8 @@ public class MainRegistry GameRegistry.registerTileEntity(TileEntityGasDuctSolid.class, "tileentity_gas_duct_solid"); GameRegistry.registerTileEntity(TileEntityMachineRTG.class, "tileentity_machine_rtg"); GameRegistry.registerTileEntity(TileEntityPylonRedWire.class, "tileentity_pylon_redwire"); + GameRegistry.registerTileEntity(TileEntityStructureMarker.class, "tileentity_structure_marker"); + GameRegistry.registerTileEntity(TileEntityMachineMiningDrill.class, "tileentity_mining_drill"); EntityRegistry.registerModEntity(EntityRocket.class, "entity_rocket", 0, this, 250, 1, true); EntityRegistry.registerModEntity(EntityNukeExplosion.class, "entity_nuke_explosion", 1, this, 250, 1, true); @@ -524,6 +533,7 @@ public class MainRegistry EntityRegistry.registerModEntity(EntityGasFX.class, "entity_spill_fx", 74, this, 1000, 1, true); EntityRegistry.registerModEntity(EntityGasFlameFX.class, "entity_gasflame_fx", 75, this, 1000, 1, true); EntityRegistry.registerModEntity(EntityMinecartTest.class, "entity_minecart_test", 76, this, 1000, 1, true); + EntityRegistry.registerModEntity(EntitySparkBeam.class, "entity_spark_beam", 77, this, 1000, 1, true); EntityRegistry.registerGlobalEntityID(EntityNuclearCreeper.class, "entity_mob_nuclear_creeper", EntityRegistry.findGlobalUniqueEntityId(), 0x204131, 0x75CE00); EntityRegistry.registerGlobalEntityID(EntityHunterChopper.class, "entity_mob_hunter_chopper", EntityRegistry.findGlobalUniqueEntityId(), 0x000020, 0x2D2D72); @@ -533,7 +543,7 @@ public class MainRegistry @EventHandler public static void load(FMLInitializationEvent event) { - achievementGetTitanium = new Achievement("achievement.getTitanium", "getTitanium", 0, -6, ModItems.ingot_titanium, (Achievement)null).initIndependentStat() .registerStat(); + /*achievementGetTitanium = new Achievement("achievement.getTitanium", "getTitanium", 0, -6, ModItems.ingot_titanium, (Achievement)null).initIndependentStat() .registerStat(); achievementCraftAlloyFurnace = new Achievement("achievement.craftAlloyFurnace", "craftAlloyFurnace", -2, -4, Item.getItemFromBlock(ModBlocks.machine_difurnace_off), (Achievement)null).initIndependentStat() .registerStat(); achievementCraftBreedingReactor = new Achievement("achievement.craftBreedingReactor", "craftBreedingReactor", 2, -4, Item.getItemFromBlock(ModBlocks.machine_reactor), (Achievement)null).initIndependentStat() .registerStat(); achievementCraftCentrifuge = new Achievement("achievement.craftCentrifuge", "craftCentrifuge", 2, -2, Item.getItemFromBlock(ModBlocks.machine_centrifuge), achievementCraftBreedingReactor).initIndependentStat() .registerStat(); @@ -542,7 +552,7 @@ public class MainRegistry achievementCraftAlloyFurnace, achievementCraftBreedingReactor, achievementCraftCentrifuge - })); + }));*/ OreDictionary.registerOre("ingotUranium", ModItems.ingot_uranium); OreDictionary.registerOre("ingotUranium235", ModItems.ingot_u235); @@ -764,6 +774,8 @@ public class MainRegistry recipes.overridePreSetRecipe(new ItemStack(Blocks.tnt), new ItemStack(Items.gunpowder, 5)); recipes.overridePreSetRecipe(new ItemStack(Items.wheat_seeds), new ItemStack(ModItems.oil_canola, 1)); recipes.overridePreSetRecipe(new ItemStack(Items.pumpkin_seeds), new ItemStack(ModItems.oil_canola, 2)); + recipes.overridePreSetRecipe(new ItemStack(ModItems.powder_quartz), new ItemStack(ModItems.powder_lithium_tiny, 1)); + recipes.overridePreSetRecipe(new ItemStack(ModItems.powder_lapis), new ItemStack(ModItems.powder_cobalt_tiny, 1)); recipes.PrintRecipes(); } @@ -775,6 +787,7 @@ public class MainRegistry MinecraftForge.EVENT_BUS.register(new ModEventHandler()); MinecraftForge.TERRAIN_GEN_BUS.register(new ModEventHandler()); MinecraftForge.ORE_GEN_BUS.register(new ModEventHandler()); + PacketDispatcher.registerPackets(); Configuration config = new Configuration(event.getSuggestedConfigurationFile()); config.load(); diff --git a/com/hbm/main/ModEventHandler.java b/com/hbm/main/ModEventHandler.java index 3c694ffd3..455eeccb8 100644 --- a/com/hbm/main/ModEventHandler.java +++ b/com/hbm/main/ModEventHandler.java @@ -24,7 +24,7 @@ public class ModEventHandler showMessage = !showMessage; } - @SubscribeEvent + /*@SubscribeEvent public void itemSmelted(PlayerEvent.ItemSmeltedEvent e) { if(e.smelting.getItem().equals(ModItems.ingot_titanium)) { e.player.addStat(MainRegistry.achievementGetTitanium, 1); @@ -52,5 +52,5 @@ public class ModEventHandler if(e.pickedUp.getEntityItem().equals(ModItems.nothing)) { //e.player.addStat(MainRegistry.achievementGetAmblygonite, 1); } - } + }*/ } diff --git a/com/hbm/packet/PacketDispatcher.java b/com/hbm/packet/PacketDispatcher.java new file mode 100644 index 000000000..233844da3 --- /dev/null +++ b/com/hbm/packet/PacketDispatcher.java @@ -0,0 +1,28 @@ +package com.hbm.packet; + +import com.hbm.lib.RefStrings; + +import cpw.mods.fml.common.network.NetworkRegistry; +import cpw.mods.fml.common.network.simpleimpl.SimpleNetworkWrapper; +import cpw.mods.fml.relauncher.Side; + +public class PacketDispatcher { + + //Mark 1 Packet Sending Device + public static final SimpleNetworkWrapper wrapper = NetworkRegistry.INSTANCE.newSimpleChannel(RefStrings.MODID); + + public static final void registerPackets() + { + //Packet sent for every connected electricity pole, for wire rendering + wrapper.registerMessage(TEPylonSenderPacket.Handler.class, TEPylonSenderPacket.class, 0, Side.CLIENT); + //Resets connection list in client-sided pole rendering + wrapper.registerMessage(TEPylonDestructorPacket.Handler.class, TEPylonDestructorPacket.class, 1, Side.CLIENT); + //Flywheel rotation for industrial generator rendering + wrapper.registerMessage(TEIGeneratorPacket.Handler.class, TEIGeneratorPacket.class, 2, Side.CLIENT); + //Machine type for marker rendering + wrapper.registerMessage(TEStructurePacket.Handler.class, TEStructurePacket.class, 3, Side.CLIENT); + //Mingin drill rotation for rendering + wrapper.registerMessage(TEDrillPacket.Handler.class, TEDrillPacket.class, 4, Side.CLIENT); + } + +} diff --git a/com/hbm/packet/TEDrillPacket.java b/com/hbm/packet/TEDrillPacket.java new file mode 100644 index 000000000..6506f1ed7 --- /dev/null +++ b/com/hbm/packet/TEDrillPacket.java @@ -0,0 +1,67 @@ +package com.hbm.packet; + +import java.util.ArrayList; +import java.util.List; + +import com.hbm.tileentity.TileEntityMachineIGenerator; +import com.hbm.tileentity.TileEntityMachineMiningDrill; +import com.hbm.tileentity.TileEntityPylonRedWire; + +import cpw.mods.fml.common.network.simpleimpl.IMessage; +import cpw.mods.fml.common.network.simpleimpl.IMessageHandler; +import cpw.mods.fml.common.network.simpleimpl.MessageContext; +import io.netty.buffer.ByteBuf; +import net.minecraft.client.Minecraft; +import net.minecraft.tileentity.TileEntity; + +public class TEDrillPacket implements IMessage { + + int x; + int y; + int z; + float spin; + + public TEDrillPacket() + { + + } + + public TEDrillPacket(int x, int y, int z, float spin) + { + this.x = x; + this.y = y; + this.z = z; + this.spin = spin; + } + + @Override + public void fromBytes(ByteBuf buf) { + x = buf.readInt(); + y = buf.readInt(); + z = buf.readInt(); + spin = buf.readFloat(); + } + + @Override + public void toBytes(ByteBuf buf) { + buf.writeInt(x); + buf.writeInt(y); + buf.writeInt(z); + buf.writeFloat(spin); + } + + public static class Handler implements IMessageHandler { + + @Override + public IMessage onMessage(TEDrillPacket m, MessageContext ctx) { + TileEntity te = Minecraft.getMinecraft().theWorld.getTileEntity(m.x, m.y, m.z); + + if (te != null && te instanceof TileEntityMachineMiningDrill) { + + TileEntityMachineMiningDrill gen = (TileEntityMachineMiningDrill) te; + gen.rotation = m.spin; + } + return null; + } + } +} diff --git a/com/hbm/packet/TEIGeneratorPacket.java b/com/hbm/packet/TEIGeneratorPacket.java new file mode 100644 index 000000000..86fb32259 --- /dev/null +++ b/com/hbm/packet/TEIGeneratorPacket.java @@ -0,0 +1,66 @@ +package com.hbm.packet; + +import java.util.ArrayList; +import java.util.List; + +import com.hbm.tileentity.TileEntityMachineIGenerator; +import com.hbm.tileentity.TileEntityPylonRedWire; + +import cpw.mods.fml.common.network.simpleimpl.IMessage; +import cpw.mods.fml.common.network.simpleimpl.IMessageHandler; +import cpw.mods.fml.common.network.simpleimpl.MessageContext; +import io.netty.buffer.ByteBuf; +import net.minecraft.client.Minecraft; +import net.minecraft.tileentity.TileEntity; + +public class TEIGeneratorPacket implements IMessage { + + int x; + int y; + int z; + float spin; + + public TEIGeneratorPacket() + { + + } + + public TEIGeneratorPacket(int x, int y, int z, float spin) + { + this.x = x; + this.y = y; + this.z = z; + this.spin = spin; + } + + @Override + public void fromBytes(ByteBuf buf) { + x = buf.readInt(); + y = buf.readInt(); + z = buf.readInt(); + spin = buf.readFloat(); + } + + @Override + public void toBytes(ByteBuf buf) { + buf.writeInt(x); + buf.writeInt(y); + buf.writeInt(z); + buf.writeFloat(spin); + } + + public static class Handler implements IMessageHandler { + + @Override + public IMessage onMessage(TEIGeneratorPacket m, MessageContext ctx) { + TileEntity te = Minecraft.getMinecraft().theWorld.getTileEntity(m.x, m.y, m.z); + + if (te != null && te instanceof TileEntityMachineIGenerator) { + + TileEntityMachineIGenerator gen = (TileEntityMachineIGenerator) te; + gen.rotation = m.spin; + } + return null; + } + } +} diff --git a/com/hbm/packet/TEPylonDestructorPacket.java b/com/hbm/packet/TEPylonDestructorPacket.java new file mode 100644 index 000000000..861285890 --- /dev/null +++ b/com/hbm/packet/TEPylonDestructorPacket.java @@ -0,0 +1,61 @@ +package com.hbm.packet; + +import java.util.ArrayList; +import java.util.List; + +import com.hbm.tileentity.TileEntityPylonRedWire; + +import cpw.mods.fml.common.network.simpleimpl.IMessage; +import cpw.mods.fml.common.network.simpleimpl.IMessageHandler; +import cpw.mods.fml.common.network.simpleimpl.MessageContext; +import io.netty.buffer.ByteBuf; +import net.minecraft.client.Minecraft; +import net.minecraft.tileentity.TileEntity; + +public class TEPylonDestructorPacket implements IMessage { + + int x; + int y; + int z; + + public TEPylonDestructorPacket() + { + + } + + public TEPylonDestructorPacket(int x, int y, int z) + { + this.x = x; + this.y = y; + this.z = z; + } + + @Override + public void fromBytes(ByteBuf buf) { + x = buf.readInt(); + y = buf.readInt(); + z = buf.readInt(); + } + + @Override + public void toBytes(ByteBuf buf) { + buf.writeInt(x); + buf.writeInt(y); + buf.writeInt(z); + } + + public static class Handler implements IMessageHandler { + + @Override + public IMessage onMessage(TEPylonDestructorPacket m, MessageContext ctx) { + TileEntity te = Minecraft.getMinecraft().theWorld.getTileEntity(m.x, m.y, m.z); + + if (te != null && te instanceof TileEntityPylonRedWire) { + + TileEntityPylonRedWire pyl = (TileEntityPylonRedWire) te; + pyl.connected.clear(); + } + return null; + } + } +} diff --git a/com/hbm/packet/TEPylonSenderPacket.java b/com/hbm/packet/TEPylonSenderPacket.java new file mode 100644 index 000000000..bde0c624f --- /dev/null +++ b/com/hbm/packet/TEPylonSenderPacket.java @@ -0,0 +1,78 @@ +package com.hbm.packet; + +import java.util.ArrayList; +import java.util.List; + +import com.hbm.tileentity.TileEntityPylonRedWire; + +import cpw.mods.fml.common.network.simpleimpl.IMessage; +import cpw.mods.fml.common.network.simpleimpl.IMessageHandler; +import cpw.mods.fml.common.network.simpleimpl.MessageContext; +import io.netty.buffer.ByteBuf; +import net.minecraft.client.Minecraft; +import net.minecraft.tileentity.TileEntity; + +public class TEPylonSenderPacket implements IMessage { + + //Pylon connection synchronization packet, Mk.III + //1: try sending list, every entry gets noted in the bit buffer + //2: Up to 3 entries (9 variables in total, not counting origin coordiantes) sync all connections at once + //3: One packet sent for each connection, packets are lighter and work fine for rendering + + int x; + int y; + int z; + int conX; + int conY; + int conZ; + + public TEPylonSenderPacket() + { + + } + + public TEPylonSenderPacket(int x, int y, int z, int conX, int conY, int conZ) + { + this.x = x; + this.y = y; + this.z = z; + this.conX = conX; + this.conY = conY; + this.conZ = conZ; + } + + @Override + public void fromBytes(ByteBuf buf) { + x = buf.readInt(); + y = buf.readInt(); + z = buf.readInt(); + conX = buf.readInt(); + conY = buf.readInt(); + conZ = buf.readInt(); + } + + @Override + public void toBytes(ByteBuf buf) { + buf.writeInt(x); + buf.writeInt(y); + buf.writeInt(z); + buf.writeInt(conX); + buf.writeInt(conY); + buf.writeInt(conZ); + } + + public static class Handler implements IMessageHandler { + + @Override + public IMessage onMessage(TEPylonSenderPacket m, MessageContext ctx) { + TileEntity te = Minecraft.getMinecraft().theWorld.getTileEntity(m.x, m.y, m.z); + + if (te != null && te instanceof TileEntityPylonRedWire) { + + TileEntityPylonRedWire pyl = (TileEntityPylonRedWire) te; + pyl.addTileEntityBasedOnCoords(m.conX, m.conY, m.conZ); + } + return null; + } + } +} diff --git a/com/hbm/packet/TEStructurePacket.java b/com/hbm/packet/TEStructurePacket.java new file mode 100644 index 000000000..5a2bf48ab --- /dev/null +++ b/com/hbm/packet/TEStructurePacket.java @@ -0,0 +1,67 @@ +package com.hbm.packet; + +import java.util.ArrayList; +import java.util.List; + +import com.hbm.tileentity.TileEntityMachineIGenerator; +import com.hbm.tileentity.TileEntityPylonRedWire; +import com.hbm.tileentity.TileEntityStructureMarker; + +import cpw.mods.fml.common.network.simpleimpl.IMessage; +import cpw.mods.fml.common.network.simpleimpl.IMessageHandler; +import cpw.mods.fml.common.network.simpleimpl.MessageContext; +import io.netty.buffer.ByteBuf; +import net.minecraft.client.Minecraft; +import net.minecraft.tileentity.TileEntity; + +public class TEStructurePacket implements IMessage { + + int x; + int y; + int z; + int type; + + public TEStructurePacket() + { + + } + + public TEStructurePacket(int x, int y, int z, int type) + { + this.x = x; + this.y = y; + this.z = z; + this.type = type; + } + + @Override + public void fromBytes(ByteBuf buf) { + x = buf.readInt(); + y = buf.readInt(); + z = buf.readInt(); + type = buf.readInt(); + } + + @Override + public void toBytes(ByteBuf buf) { + buf.writeInt(x); + buf.writeInt(y); + buf.writeInt(z); + buf.writeInt(type); + } + + public static class Handler implements IMessageHandler { + + @Override + public IMessage onMessage(TEStructurePacket m, MessageContext ctx) { + TileEntity te = Minecraft.getMinecraft().theWorld.getTileEntity(m.x, m.y, m.z); + + if (te != null && te instanceof TileEntityStructureMarker) { + + TileEntityStructureMarker marker = (TileEntityStructureMarker) te; + marker.type = m.type; + } + return null; + } + } +} diff --git a/com/hbm/render/entity/RenderBeam4.java b/com/hbm/render/entity/RenderBeam4.java new file mode 100644 index 000000000..09a32c771 --- /dev/null +++ b/com/hbm/render/entity/RenderBeam4.java @@ -0,0 +1,87 @@ +package com.hbm.render.entity; + +import java.util.Random; + +import org.lwjgl.opengl.GL11; + +import com.hbm.entity.projectile.EntityPlasmaBeam; +import com.hbm.entity.projectile.EntityRainbow; +import com.hbm.lib.RefStrings; +import com.hbm.render.model.ModelBullet; +import com.hbm.render.model.ModelMiniNuke; + +import net.minecraft.client.model.ModelRenderer; +import net.minecraft.client.renderer.Tessellator; +import net.minecraft.client.renderer.entity.Render; +import net.minecraft.entity.Entity; +import net.minecraft.util.ResourceLocation; + +public class RenderBeam4 extends Render { + + Random rand = new Random(); + + @Override + public void doRender(Entity rocket, double x, double y, double z, float p_76986_8_, float p_76986_9_) { + //float radius = 0.12F; + //float radius = 0.06F; + float radius = 0.45F; + int distance = 2; + Tessellator tessellator = Tessellator.instance; + + GL11.glPushMatrix(); + GL11.glDisable(GL11.GL_TEXTURE_2D); + GL11.glDisable(GL11.GL_CULL_FACE); + GL11.glEnable(GL11.GL_BLEND); + GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE); + GL11.glTranslatef((float) x, (float) y, (float) z); + + GL11.glRotatef(rocket.rotationYaw, 0.0F, 1.0F, 0.0F); + GL11.glRotatef(-rocket.rotationPitch, 1.0F, 0.0F, 0.0F); + + boolean red = true; + boolean green = true; + boolean blue = false; + + for (float o = 0; o <= radius; o += radius / 8) { + float color = 1f - (o * 8.333f); + if (color < 0) + color = 0; + tessellator.startDrawingQuads(); + tessellator.setColorRGBA_F(red ? 1 : color, green ? 1 : color, blue ? 1 : color, 1f); + tessellator.addVertex(0 + o, 0 - o, 0); + tessellator.addVertex(0 + o, 0 + o, 0); + tessellator.addVertex(0 + o, 0 + o, 0 + distance); + tessellator.addVertex(0 + o, 0 - o, 0 + distance); + tessellator.draw(); + tessellator.startDrawingQuads(); + tessellator.setColorRGBA_F(red ? 1 : color, green ? 1 : color, blue ? 1 : color, 1f); + tessellator.addVertex(0 - o, 0 - o, 0); + tessellator.addVertex(0 + o, 0 - o, 0); + tessellator.addVertex(0 + o, 0 - o, 0 + distance); + tessellator.addVertex(0 - o, 0 - o, 0 + distance); + tessellator.draw(); + tessellator.startDrawingQuads(); + tessellator.setColorRGBA_F(red ? 1 : color, green ? 1 : color, blue ? 1 : color, 1f); + tessellator.addVertex(0 - o, 0 + o, 0); + tessellator.addVertex(0 - o, 0 - o, 0); + tessellator.addVertex(0 - o, 0 - o, 0 + distance); + tessellator.addVertex(0 - o, 0 + o, 0 + distance); + tessellator.draw(); + tessellator.startDrawingQuads(); + tessellator.setColorRGBA_F(red ? 1 : color, green ? 1 : color, blue ? 1 : color, 1f); + tessellator.addVertex(0 + o, 0 + o, 0); + tessellator.addVertex(0 - o, 0 + o, 0); + tessellator.addVertex(0 - o, 0 + o, 0 + distance); + tessellator.addVertex(0 + o, 0 + o, 0 + distance); + tessellator.draw(); + } + GL11.glDisable(GL11.GL_BLEND); + GL11.glEnable(GL11.GL_TEXTURE_2D); + GL11.glPopMatrix(); + } + + @Override + protected ResourceLocation getEntityTexture(Entity p_110775_1_) { + return new ResourceLocation(RefStrings.MODID + ":textures/models/PlasmaBeam.png"); + } +} diff --git a/com/hbm/render/item/ItemRenderOverkill.java b/com/hbm/render/item/ItemRenderOverkill.java index 340bd9ccd..9998aafa4 100644 --- a/com/hbm/render/item/ItemRenderOverkill.java +++ b/com/hbm/render/item/ItemRenderOverkill.java @@ -4,6 +4,7 @@ import org.lwjgl.opengl.GL11; import com.hbm.items.ModItems; import com.hbm.lib.RefStrings; +import com.hbm.main.MainRegistry; import com.hbm.render.model.ModelDefabricator; import com.hbm.render.model.ModelEuthanasia; import com.hbm.render.model.ModelHP; @@ -75,6 +76,8 @@ public class ItemRenderOverkill implements IItemRenderer { GL11.glScalef(0.5F, 0.5F, 0.5F); //GL11.glTranslatef(-0.4F, -0.1F, 0.1F); GL11.glTranslatef(-0.2F, -0.1F, -0.1F); + if(item.getItem() == ModItems.gun_defabricator) + GL11.glTranslatef(0, 0.5F, 0.4F); if(item.getItem() == ModItems.gun_jack) powerJack.render((Entity)data[1], 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F); @@ -109,8 +112,16 @@ public class ItemRenderOverkill implements IItemRenderer { GL11.glTranslatef(0.0F, -0.2F, -0.5F); GL11.glRotatef(-5.0F, 0.0F, 0.0F, 1.0F); GL11.glTranslatef(0.5F, -0.2F, 0.0F); - GL11.glScalef(0.75F, 0.75F, 0.75F); + //GL11.glScalef(0.75F, 0.75F, 0.75F); GL11.glTranslatef(-1.4F, 0.0F, 0.0F); + if(item.getItem() == ModItems.gun_jack) + GL11.glTranslatef(0.3F, 0, 0); + if(item.getItem() == ModItems.gun_spark) + GL11.glTranslatef(0.4F, 0, 0); + if(item.getItem() == ModItems.gun_hp) + GL11.glTranslatef(0.5F, 0.2F, 0); + if(item.getItem() == ModItems.gun_defabricator) + GL11.glTranslatef(0.5F, 0.6F, -0.2F); if(item.getItem() == ModItems.gun_jack) powerJack.render((Entity)data[1], 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F); diff --git a/com/hbm/render/model/ModelDefabricator.java b/com/hbm/render/model/ModelDefabricator.java index 7a4d0b432..9a4986496 100755 --- a/com/hbm/render/model/ModelDefabricator.java +++ b/com/hbm/render/model/ModelDefabricator.java @@ -9,6 +9,8 @@ package com.hbm.render.model; +import org.lwjgl.opengl.GL11; + import net.minecraft.client.model.ModelBase; import net.minecraft.client.model.ModelRenderer; import net.minecraft.entity.Entity; @@ -213,7 +215,11 @@ public class ModelDefabricator extends ModelBase setRotationAngles(f, f1, f2, f3, f4, f5, entity); for(int i = 0; i < 40; i++) { + if(i == 20) + GL11.glDisable(GL11.GL_CULL_FACE); modeldefabricatorModel[i].render(f5); + if(i == 20) + GL11.glEnable(GL11.GL_CULL_FACE); } } diff --git a/com/hbm/render/model/ModelPylon.java b/com/hbm/render/model/ModelPylon.java new file mode 100755 index 000000000..8ca9dce7a --- /dev/null +++ b/com/hbm/render/model/ModelPylon.java @@ -0,0 +1,73 @@ +//This File was created with the Minecraft-SMP Modelling Toolbox 2.3.0.0 +// Copyright (C) 2017 Minecraft-SMP.de +// This file is for Flan's Flying Mod Version 4.0.x+ + +// Model: Pylon +// Model Creator: +// Created on:13.06.2017 - 11:17:46 +// Last changed on: 13.06.2017 - 11:17:46 + +package com.hbm.render.model; + +import net.minecraft.client.model.ModelBase; +import net.minecraft.client.model.ModelRenderer; +import net.minecraft.entity.Entity; + +public class ModelPylon extends ModelBase +{ + int textureX = 64; + int textureY = 128; + + public ModelRenderer pylonModel[]; + + public ModelPylon() + { + textureWidth = 64; + textureHeight = 128; + pylonModel = new ModelRenderer[4]; + pylonModel[0] = new ModelRenderer(this, 0, 96); // Box 0 + pylonModel[1] = new ModelRenderer(this, 1, 1); // Box 1 + pylonModel[2] = new ModelRenderer(this, 24, 1); // Box 2 + pylonModel[3] = new ModelRenderer(this, 25, 17); // Box 3 + + pylonModel[0].addBox(0F, 0F, 0F, 16, 16, 16, 0F); // Box 0 + pylonModel[0].setRotationPoint(-8F, -6F, -8F); + + pylonModel[1].addBox(0F, 0F, 0F, 4, 73, 4, 0F); // Box 1 + pylonModel[1].setRotationPoint(-2F, -79F, -2F); + + pylonModel[2].addBox(0F, 0F, 0F, 6, 4, 6, 0F); // Box 2 + pylonModel[2].setRotationPoint(-3F, -74F, -3F); + + pylonModel[3].addBox(0F, 0F, 0F, 6, 2, 6, 0F); // Box 3 + pylonModel[3].setRotationPoint(-3F, -78F, -3F); + + + for(int i = 0; i < pylonModel.length; i++) { + pylonModel[i].setTextureSize(textureX, textureY); + pylonModel[i].mirror = true; + } + } + + @Override + public void render(Entity entity, float f, float f1, float f2, float f3, float f4, float f5) + { + for(int i = 0; i < 4; i++) + { + pylonModel[i].render(f5); + } + } + + public void renderAll(float f5) + { + for(int i = 0; i < 4; i++) + { + pylonModel[i].render(f5); + } + } + + public void setRotationAngles(float f, float f1, float f2, float f3, float f4, float f5, Entity entity) + { + super.setRotationAngles(f, f1, f2, f3, f4, f5, entity); + } +} \ No newline at end of file diff --git a/com/hbm/render/model/ModelSpark.java b/com/hbm/render/model/ModelSpark.java index 8e7bd6443..5e3fcb0a4 100644 --- a/com/hbm/render/model/ModelSpark.java +++ b/com/hbm/render/model/ModelSpark.java @@ -11,6 +11,8 @@ package com.hbm.render.model; +import org.lwjgl.opengl.GL11; + import net.minecraft.client.model.ModelBase; import net.minecraft.client.model.ModelRenderer; import net.minecraft.entity.Entity; @@ -152,7 +154,9 @@ public class ModelSpark extends ModelBase BarrelMain.render(f5); BarrelSide.render(f5); PlateFront.render(f5); + GL11.glDisable(GL11.GL_CULL_FACE); Sight.render(f5); + GL11.glEnable(GL11.GL_CULL_FACE); Grip.render(f5); Cell1.render(f5); Cell2.render(f5); diff --git a/com/hbm/render/tileentity/RenderIGenerator.java b/com/hbm/render/tileentity/RenderIGenerator.java index 109ac8f02..6cf68f173 100644 --- a/com/hbm/render/tileentity/RenderIGenerator.java +++ b/com/hbm/render/tileentity/RenderIGenerator.java @@ -3,6 +3,7 @@ package com.hbm.render.tileentity; import org.lwjgl.opengl.GL11; import com.hbm.lib.RefStrings; +import com.hbm.tileentity.TileEntityMachineIGenerator; import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; import net.minecraft.tileentity.TileEntity; @@ -61,8 +62,6 @@ public class RenderIGenerator extends TileEntitySpecialRenderer { renderTileEntityAt2(tileEntity, x, y, z, f); } - int i = 0; - public void renderTileEntityAt2(TileEntity tileEntity, double x, double y, double z, float f) { GL11.glPushMatrix(); @@ -85,8 +84,8 @@ public class RenderIGenerator extends TileEntitySpecialRenderer { GL11.glRotatef(0, 0F, 1F, 0F); GL11.glTranslated(0.5D, 0.0D, 0.0D); break; } - i++; - GL11.glRotatef(i, 1F, 0F, 0F); + + GL11.glRotatef(((TileEntityMachineIGenerator)tileEntity).rotation, 1F, 0F, 0F); bindTexture(rotTexture); rotModel.renderAll(); diff --git a/com/hbm/render/tileentity/RenderMiningDrill.java b/com/hbm/render/tileentity/RenderMiningDrill.java new file mode 100644 index 000000000..593f073b7 --- /dev/null +++ b/com/hbm/render/tileentity/RenderMiningDrill.java @@ -0,0 +1,96 @@ +package com.hbm.render.tileentity; + +import org.lwjgl.opengl.GL11; + +import com.hbm.lib.RefStrings; +import com.hbm.tileentity.TileEntityMachineIGenerator; +import com.hbm.tileentity.TileEntityMachineMiningDrill; + +import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.ResourceLocation; +import net.minecraftforge.client.model.AdvancedModelLoader; +import net.minecraftforge.client.model.IModelCustom; + +public class RenderMiningDrill extends TileEntitySpecialRenderer { + + private static final ResourceLocation body = new ResourceLocation(/*"/assets/" + */RefStrings.MODID, "models/drill_main.obj"); + private static final ResourceLocation bolt = new ResourceLocation(/*"/assets/" + */RefStrings.MODID, "models/drill_bolt.obj"); + + private IModelCustom bodyModel; + private ResourceLocation bodyTexture; + private IModelCustom boltModel; + private ResourceLocation boltTexture; + + public RenderMiningDrill() + { + bodyModel = AdvancedModelLoader.loadModel(body); + bodyTexture = new ResourceLocation(RefStrings.MODID, "textures/models/TheGadget3_.png"); + boltModel = AdvancedModelLoader.loadModel(bolt); + boltTexture = new ResourceLocation(RefStrings.MODID, "textures/models/textureIGenRotor.png"); + } + + @Override + public void renderTileEntityAt(TileEntity tileEntity, double x, double y, double z, float f) + { + GL11.glPushMatrix(); + GL11.glTranslated(x + 0.5D, y, z + 0.5D); + GL11.glEnable(GL11.GL_LIGHTING); + GL11.glDisable(GL11.GL_CULL_FACE); + GL11.glRotatef(180, 0F, 1F, 0F); + switch(tileEntity.getBlockMetadata()) + { + case 2: + GL11.glRotatef(180, 0F, 1F, 0F); break; + //GL11.glTranslated(0.5D, 0.0D, 0.0D); break; + case 4: + GL11.glRotatef(270, 0F, 1F, 0F); break; + //GL11.glTranslated(0.5D, 0.0D, 0.0D); break; + case 3: + GL11.glRotatef(0, 0F, 1F, 0F); break; + //GL11.glTranslated(0.5D, 0.0D, 0.0D); break; + case 5: + GL11.glRotatef(90, 0F, 1F, 0F); break; + //GL11.glTranslated(0.5D, 0.0D, 0.0D); break; + } + + bindTexture(bodyTexture); + + bodyModel.renderAll(); + + GL11.glPopMatrix(); + + renderTileEntityAt2(tileEntity, x, y, z, f); + } + + public void renderTileEntityAt2(TileEntity tileEntity, double x, double y, double z, float f) + { + GL11.glPushMatrix(); + GL11.glTranslated(x + 0.5D, y, z + 0.5D); + GL11.glEnable(GL11.GL_LIGHTING); + GL11.glDisable(GL11.GL_CULL_FACE); + GL11.glRotatef(180, 0F, 1F, 0F); + switch(tileEntity.getBlockMetadata()) + { + case 2: + GL11.glRotatef(90, 0F, 1F, 0F); break; + //GL11.glTranslated(0.5D, 0.0D, 0.0D); break; + case 4: + GL11.glRotatef(180, 0F, 1F, 0F); break; + //GL11.glTranslated(0.5D, 0.0D, 0.0D); break; + case 3: + GL11.glRotatef(270, 0F, 1F, 0F); break; + //GL11.glTranslated(0.5D, 0.0D, 0.0D); break; + case 5: + GL11.glRotatef(0, 0F, 1F, 0F); break; + //GL11.glTranslated(0.5D, 0.0D, 0.0D); break; + } + + GL11.glRotatef(((TileEntityMachineMiningDrill)tileEntity).rotation, 0F, 1F, 0F); + + bindTexture(boltTexture); + boltModel.renderAll(); + + GL11.glPopMatrix(); + } +} diff --git a/com/hbm/render/tileentity/RenderPylon.java b/com/hbm/render/tileentity/RenderPylon.java new file mode 100644 index 000000000..e72a26b7c --- /dev/null +++ b/com/hbm/render/tileentity/RenderPylon.java @@ -0,0 +1,79 @@ +package com.hbm.render.tileentity; + +import org.lwjgl.opengl.GL11; + +import com.hbm.blocks.ModBlocks; +import com.hbm.lib.RefStrings; +import com.hbm.render.model.ModelPylon; +import com.hbm.render.model.ModelSteelBeam; +import com.hbm.render.model.ModelSteelCorner; +import com.hbm.render.model.ModelSteelRoof; +import com.hbm.render.model.ModelSteelScaffold; +import com.hbm.render.model.ModelSteelWall; +import com.hbm.tileentity.TileEntityPylonRedWire; + +import net.minecraft.client.renderer.Tessellator; +import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; +import net.minecraft.entity.Entity; +import net.minecraft.entity.EntityHanging; +import net.minecraft.entity.EntityLiving; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.ResourceLocation; + +public class RenderPylon extends TileEntitySpecialRenderer { + + private static final ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":" + "textures/models/ModelPylon.png"); + + private ModelPylon pylon; + + public RenderPylon() { + this.pylon = new ModelPylon(); + } + + @Override + public void renderTileEntityAt(TileEntity tileentity, double x, double y, double z, float f) { + TileEntityPylonRedWire pyl = (TileEntityPylonRedWire)tileentity; + GL11.glPushMatrix(); + GL11.glTranslatef((float) x + 0.5F, (float) y + 1.5F - ((1F / 16F) * 14F), (float) z + 0.5F); + GL11.glRotatef(180, 0F, 0F, 1F); + bindTexture(texture); + this.pylon.renderAll(0.0625F); + GL11.glPopMatrix(); + GL11.glPushMatrix(); + for(TileEntityPylonRedWire wire : pyl.connected) + drawPowerLine(x + 0.5, y + 5.3, z + 0.5, x + (wire.xCoord - pyl.xCoord) + 0.5, y + (wire.yCoord - pyl.yCoord) + 5.3, z + (wire.zCoord - pyl.zCoord) + 0.5); + GL11.glPopMatrix(); + } + + public void drawPowerLine(double x, double y, double z, double a, double b, double c) { + GL11.glDisable(GL11.GL_TEXTURE_2D); + GL11.glDisable(GL11.GL_LIGHTING); + GL11.glDisable(GL11.GL_CULL_FACE); + Tessellator tessellator = Tessellator.instance; + tessellator.startDrawing(5); + tessellator.setColorRGBA_F(0.683F, 0.089F, 0.0F, 1.0F); + tessellator.addVertex(x, y + 0.05F, z); + tessellator.addVertex(x, y - 0.05F, z); + tessellator.addVertex(a, b + 0.05F, c); + tessellator.addVertex(a, b - 0.05F, c); + tessellator.draw(); + tessellator.startDrawing(5); + tessellator.setColorRGBA_F(0.683F, 0.089F, 0.0F, 1.0F); + tessellator.addVertex(x + 0.05F, y, z); + tessellator.addVertex(x - 0.05F, y, z); + tessellator.addVertex(a + 0.05F, b, c); + tessellator.addVertex(a - 0.05F, b, c); + tessellator.draw(); + tessellator.startDrawing(5); + tessellator.setColorRGBA_F(0.683F, 0.089F, 0.0F, 1.0F); + tessellator.addVertex(x, y, z + 0.05F); + tessellator.addVertex(x, y, z - 0.05F); + tessellator.addVertex(a, b, c + 0.05F); + tessellator.addVertex(a, b, c - 0.05F); + tessellator.draw(); + GL11.glEnable(GL11.GL_LIGHTING); + GL11.glEnable(GL11.GL_TEXTURE_2D); + GL11.glEnable(GL11.GL_CULL_FACE); + } + +} diff --git a/com/hbm/render/tileentity/RenderStructureMaker.java b/com/hbm/render/tileentity/RenderStructureMaker.java new file mode 100644 index 000000000..3a60c0ffd --- /dev/null +++ b/com/hbm/render/tileentity/RenderStructureMaker.java @@ -0,0 +1,411 @@ +package com.hbm.render.tileentity; + +import org.lwjgl.opengl.GL11; +import org.lwjgl.opengl.GL14; + +import com.hbm.blocks.ModBlocks; +import com.hbm.lib.RefStrings; +import com.hbm.render.model.ModelTapeRecorder; +import com.hbm.tileentity.TileEntityStructureMarker; +import com.hbm.world.FWatz; +import com.hbm.world.FactoryTitanium; +import com.hbm.world.FusionReactor; +import com.hbm.world.NuclearReactor; +import com.hbm.world.Watz; + +import net.minecraft.block.Block; +import net.minecraft.client.renderer.RenderBlocks; +import net.minecraft.client.renderer.Tessellator; +import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; +import net.minecraft.init.Blocks; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.ResourceLocation; + +public class RenderStructureMaker extends TileEntitySpecialRenderer { + + float pixel = 1F/16F; + + public RenderStructureMaker() { + } + + @Override + public void renderTileEntityAt(TileEntity tileentity, double x, double y, double z, float f) { + GL11.glPushMatrix(); + GL11.glTranslatef((float) x, (float) y, (float) z); + GL11.glRotatef(180, 0F, 0F, 1F); + + GL11.glDisable(GL11.GL_LIGHTING); + GL11.glEnable(GL11.GL_BLEND); + GL14.glBlendFuncSeparate(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA, GL11.GL_ONE, GL11.GL_ZERO); + GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE); + GL14.glBlendEquation(GL14.GL_FUNC_ADD); + GL11.glColor4f(0.5f, 0.25f, 1.0f, 1f); + this.renderBlocks((int)x, (int)y, (int)z, ((TileEntityStructureMarker)tileentity).type, tileentity.getWorldObj().getBlockMetadata(tileentity.xCoord, tileentity.yCoord, tileentity.zCoord)); + GL11.glEnable(GL11.GL_LIGHTING); + GL11.glDisable(GL11.GL_BLEND); + GL11.glPopMatrix(); + } + + public void renderBlocks(int x, int y, int z, int type, int meta) { + int offsetX = 0; + int offsetZ = 0; + if(type == 0) { + + if(meta == 6) { + offsetZ = 2; + } + if(meta == 7) { + offsetX = 2; + } + if(meta == 8) { + offsetZ = -2; + } + if(meta == 9) { + offsetX = -2; + } + + GL11.glTranslatef(-1 + offsetX, -2, -1 + offsetZ); + for(int a = 0; a < 3; a++) { + for(int b = 0; b < 3; b++) { + for(int c = 0; c < 3; c++) { + + Block block = Blocks.air; + if(FactoryTitanium.array[b][a].substring(c, c + 1).equals("H")) + block = ModBlocks.factory_titanium_hull; + if(FactoryTitanium.array[b][a].substring(c, c + 1).equals("F")) + block = ModBlocks.factory_titanium_furnace; + if(FactoryTitanium.array[b][a].substring(c, c + 1).equals("C")) + block = ModBlocks.factory_titanium_core; + if(block != Blocks.air) { + RenderBlocks rb = RenderBlocks.getInstance(); + ResourceLocation loc1 = new ResourceLocation(RefStrings.MODID + ":textures/blocks/" + rb.getBlockIconFromSide(block, 1).getIconName().substring(4, rb.getBlockIconFromSide(block, 1).getIconName().length()) + ".png"); + ResourceLocation loc2 = new ResourceLocation(RefStrings.MODID + ":textures/blocks/" + rb.getBlockIconFromSide(block, 3).getIconName().substring(4, rb.getBlockIconFromSide(block, 3).getIconName().length()) + ".png"); + renderSmolBlockAt(loc1, loc2, a, b, c); + } + } + } + } + } + if(type == 1) { + + if(meta == 6) { + offsetZ = 3; + } + if(meta == 7) { + offsetX = 3; + } + if(meta == 8) { + offsetZ = -3; + } + if(meta == 9) { + offsetX = -3; + } + + GL11.glTranslatef(-2 + offsetX, -3, -2 + offsetZ); + for(int a = 0; a < 5; a++) { + for(int b = 0; b < 5; b++) { + for(int c = 0; c < 5; c++) { + + Block block = Blocks.air; + if(NuclearReactor.array2[b][a].substring(c, c + 1).equals("R")) + block = ModBlocks.reactor_element; + if(NuclearReactor.array2[b][a].substring(c, c + 1).equals("#")) + block = ModBlocks.reactor_computer; + if(NuclearReactor.array2[b][a].substring(c, c + 1).equals("C")) + block = ModBlocks.reactor_control; + if(NuclearReactor.array2[b][a].substring(c, c + 1).equals("A")) + block = ModBlocks.reactor_hatch; + if(NuclearReactor.array2[b][a].substring(c, c + 1).equals("I")) + block = ModBlocks.reactor_conductor; + if(block != Blocks.air) { + RenderBlocks rb = RenderBlocks.getInstance(); + ResourceLocation loc1 = new ResourceLocation(RefStrings.MODID + ":textures/blocks/" + rb.getBlockIconFromSide(block, 1).getIconName().substring(4, rb.getBlockIconFromSide(block, 1).getIconName().length()) + ".png"); + ResourceLocation loc2 = new ResourceLocation(RefStrings.MODID + ":textures/blocks/" + rb.getBlockIconFromSide(block, 3).getIconName().substring(4, rb.getBlockIconFromSide(block, 3).getIconName().length()) + ".png"); + renderSmolBlockAt(loc1, loc2, a, b, c); + } + } + } + } + } + if(type == 2) { + + if(meta == 6) { + offsetZ = 3; + } + if(meta == 7) { + offsetX = 3; + } + if(meta == 8) { + offsetZ = -3; + } + if(meta == 9) { + offsetX = -3; + } + + GL11.glTranslatef(-2 + offsetX, -4, -2 + offsetZ); + for(int a = 0; a < 5; a++) { + for(int b = 0; b < 5; b++) { + for(int c = 0; c < 5; c++) { + + Block block = Blocks.air; + if(NuclearReactor.array2[b][a].substring(c, c + 1).equals("R")) + block = ModBlocks.reactor_element; + if(NuclearReactor.array2[b][a].substring(c, c + 1).equals("#")) + block = ModBlocks.reactor_computer; + if(NuclearReactor.array2[b][a].substring(c, c + 1).equals("C")) + block = ModBlocks.reactor_control; + if(NuclearReactor.array2[b][a].substring(c, c + 1).equals("A")) + block = ModBlocks.reactor_hatch; + if(NuclearReactor.array2[b][a].substring(c, c + 1).equals("I")) + block = ModBlocks.reactor_conductor; + if(NuclearReactor.array2[b][a].substring(c, c + 1).equals("B")) + block = ModBlocks.brick_concrete; + if(block != Blocks.air) { + RenderBlocks rb = RenderBlocks.getInstance(); + ResourceLocation loc1 = new ResourceLocation(RefStrings.MODID + ":textures/blocks/" + rb.getBlockIconFromSide(block, 1).getIconName().substring(4, rb.getBlockIconFromSide(block, 1).getIconName().length()) + ".png"); + ResourceLocation loc2 = new ResourceLocation(RefStrings.MODID + ":textures/blocks/" + rb.getBlockIconFromSide(block, 3).getIconName().substring(4, rb.getBlockIconFromSide(block, 3).getIconName().length()) + ".png"); + renderSmolBlockAt(loc1, loc2, a, b, c); + } + } + } + } + } + if(type == 3) { + + if(meta == 6) { + offsetZ = 9; + } + if(meta == 7) { + offsetX = 9; + } + if(meta == 8) { + offsetZ = -9; + } + if(meta == 9) { + offsetX = -9; + } + + GL11.glTranslatef(-8 + offsetX, -4, -8 + offsetZ); + for(int a = 0; a < 17; a++) { + for(int b = 0; b < 5; b++) { + for(int c = 0; c < 17; c++) { + + Block block = Blocks.air; + if(FusionReactor.array[b][a].substring(c, c + 1).equals("M")) + block = ModBlocks.fusion_conductor; + if(FusionReactor.array[b][a].substring(c, c + 1).equals("H")) + block = ModBlocks.fusion_heater; + if(FusionReactor.array[b][a].substring(c, c + 1).equals("A")) + block = ModBlocks.fusion_hatch; + if(FusionReactor.array[b][a].substring(c, c + 1).equals("R")) + block = ModBlocks.fusion_motor; + if(FusionReactor.array[b][a].substring(c, c + 1).equals("C")) + block = ModBlocks.fusion_center; + if(FusionReactor.array[b][a].substring(c, c + 1).equals("#")) + block = ModBlocks.fusion_core; + if(block != Blocks.air) { + RenderBlocks rb = RenderBlocks.getInstance(); + ResourceLocation loc1 = new ResourceLocation(RefStrings.MODID + ":textures/blocks/" + rb.getBlockIconFromSide(block, 1).getIconName().substring(4, rb.getBlockIconFromSide(block, 1).getIconName().length()) + ".png"); + ResourceLocation loc2 = new ResourceLocation(RefStrings.MODID + ":textures/blocks/" + rb.getBlockIconFromSide(block, 3).getIconName().substring(4, rb.getBlockIconFromSide(block, 3).getIconName().length()) + ".png"); + renderSmolBlockAt(loc1, loc2, a, b, c); + } + } + } + } + } + if(type == 4) { + + if(meta == 6) { + offsetZ = 9; + } + if(meta == 7) { + offsetX = 9; + } + if(meta == 8) { + offsetZ = -9; + } + if(meta == 9) { + offsetX = -9; + } + + GL11.glTranslatef(-8 + offsetX, -4, -8 + offsetZ); + for(int a = 0; a < 17; a++) { + for(int b = 0; b < 5; b++) { + for(int c = 0; c < 17; c++) { + + Block block = Blocks.air; + if(FusionReactor.array[b][a].substring(c, c + 1).equals("M")) + block = ModBlocks.fusion_conductor; + if(FusionReactor.array[b][a].substring(c, c + 1).equals("H")) + block = ModBlocks.fusion_heater; + if(FusionReactor.array[b][a].substring(c, c + 1).equals("A")) + block = ModBlocks.fusion_hatch; + if(FusionReactor.array[b][a].substring(c, c + 1).equals("R")) + block = ModBlocks.fusion_motor; + if(FusionReactor.array[b][a].substring(c, c + 1).equals("C")) + block = ModBlocks.fusion_center; + if(FusionReactor.array[b][a].substring(c, c + 1).equals("#")) + block = ModBlocks.fusion_core; + if(FusionReactor.array[b][a].substring(c, c + 1).equals("T")) + block = ModBlocks.block_tungsten; + if(block != Blocks.air) { + RenderBlocks rb = RenderBlocks.getInstance(); + ResourceLocation loc1 = new ResourceLocation(RefStrings.MODID + ":textures/blocks/" + rb.getBlockIconFromSide(block, 1).getIconName().substring(4, rb.getBlockIconFromSide(block, 1).getIconName().length()) + ".png"); + ResourceLocation loc2 = new ResourceLocation(RefStrings.MODID + ":textures/blocks/" + rb.getBlockIconFromSide(block, 3).getIconName().substring(4, rb.getBlockIconFromSide(block, 3).getIconName().length()) + ".png"); + renderSmolBlockAt(loc1, loc2, a, b, c); + } + } + } + } + } + if(type == 5) { + + if(meta == 6) { + offsetZ = 4; + } + if(meta == 7) { + offsetX = 4; + } + if(meta == 8) { + offsetZ = -4; + } + if(meta == 9) { + offsetX = -4; + } + + GL11.glTranslatef(-3 + offsetX, -12, -3 + offsetZ); + for(int a = 0; a < 7; a++) { + for(int b = 0; b < 13; b++) { + for(int c = 0; c < 7; c++) { + + Block block = Blocks.air; + if(Watz.array[b][a].substring(c, c + 1).equals("C")) + block = ModBlocks.reinforced_brick; + if(Watz.array[b][a].substring(c, c + 1).equals("A")) + block = ModBlocks.watz_hatch; + if(Watz.array[b][a].substring(c, c + 1).equals("R")) + block = ModBlocks.watz_control; + if(Watz.array[b][a].substring(c, c + 1).equals("S")) + block = ModBlocks.watz_end; + if(Watz.array[b][a].substring(c, c + 1).equals("I")) + block = ModBlocks.watz_conductor; + if(Watz.array[b][a].substring(c, c + 1).equals("#")) + block = ModBlocks.watz_core; + if(Watz.array[b][a].substring(c, c + 1).equals("K")) + block = ModBlocks.watz_cooler; + if(Watz.array[b][a].substring(c, c + 1).equals("W")) + block = ModBlocks.watz_element; + if(block != Blocks.air) { + RenderBlocks rb = RenderBlocks.getInstance(); + ResourceLocation loc1 = new ResourceLocation(RefStrings.MODID + ":textures/blocks/" + rb.getBlockIconFromSide(block, 1).getIconName().substring(4, rb.getBlockIconFromSide(block, 1).getIconName().length()) + ".png"); + ResourceLocation loc2 = new ResourceLocation(RefStrings.MODID + ":textures/blocks/" + rb.getBlockIconFromSide(block, 3).getIconName().substring(4, rb.getBlockIconFromSide(block, 3).getIconName().length()) + ".png"); + renderSmolBlockAt(loc1, loc2, a, b, c); + } + } + } + } + } + if(type == 6) { + + if(meta == 6) { + offsetZ = 10; + } + if(meta == 7) { + offsetX = 10; + } + if(meta == 8) { + offsetZ = -10; + } + if(meta == 9) { + offsetX = -10; + } + + GL11.glTranslatef(-9 + offsetX, -18, -9 + offsetZ); + for(int a = 0; a < 19; a++) { + for(int b = 0; b < 19; b++) { + for(int c = 0; c < 19; c++) { + + Block block = Blocks.air; + if(FWatz.fwatz[18 - b][a].substring(c, c + 1).equals("X")) + block = ModBlocks.fwatz_scaffold; + if(FWatz.fwatz[18 - b][a].substring(c, c + 1).equals("H")) + block = ModBlocks.fwatz_hatch; + if(FWatz.fwatz[18 - b][a].substring(c, c + 1).equals("S")) + block = ModBlocks.fwatz_cooler; + if(FWatz.fwatz[18 - b][a].substring(c, c + 1).equals("T")) + block = ModBlocks.fwatz_tank; + if(FWatz.fwatz[18 - b][a].substring(c, c + 1).equals("M")) + block = ModBlocks.fwatz_conductor; + if(FWatz.fwatz[18 - b][a].substring(c, c + 1).equals("C")) + block = ModBlocks.fwatz_computer; + if(FWatz.fwatz[18 - b][a].substring(c, c + 1).equals("#")) + block = ModBlocks.fwatz_core; + if(block != Blocks.air) { + RenderBlocks rb = RenderBlocks.getInstance(); + ResourceLocation loc1 = new ResourceLocation(RefStrings.MODID + ":textures/blocks/" + rb.getBlockIconFromSide(block, 1).getIconName().substring(4, rb.getBlockIconFromSide(block, 1).getIconName().length()) + ".png"); + ResourceLocation loc2 = new ResourceLocation(RefStrings.MODID + ":textures/blocks/" + rb.getBlockIconFromSide(block, 3).getIconName().substring(4, rb.getBlockIconFromSide(block, 3).getIconName().length()) + ".png"); + renderSmolBlockAt(loc1, loc2, a, b, c); + } + } + } + } + } + } + + public void renderSmolBlockAt(ResourceLocation loc1, ResourceLocation loc2, int x, int y, int z) { + GL11.glPushMatrix(); + GL11.glTranslatef((float) x, (float) y, (float) z); + GL11.glRotatef(180, 0F, 0F, 1F); + Tessellator tesseract = Tessellator.instance; + tesseract.startDrawingQuads(); + tesseract.addVertexWithUV(1 - 11 * pixel / 2, 1 - 11 * pixel / 2, 1 - 11 * pixel / 2, 1, 0); + tesseract.addVertexWithUV(11 * pixel / 2, 1 - 11 * pixel / 2, 1 - 11 * pixel / 2, 0, 0); + tesseract.addVertexWithUV(11 * pixel / 2, 11 * pixel / 2, 1 - 11 * pixel / 2, 0, 1); + tesseract.addVertexWithUV(1 - 11 * pixel / 2, 11 * pixel / 2, 1 - 11 * pixel / 2, 1, 1); + this.bindTexture(loc2); + tesseract.draw(); + + tesseract.startDrawingQuads(); + tesseract.addVertexWithUV(1 - 11 * pixel / 2, 1 - 11 * pixel / 2, 11 * pixel / 2, 1, 0); + tesseract.addVertexWithUV(1 - 11 * pixel / 2, 1 - 11 * pixel / 2, 1 - 11 * pixel / 2, 0, 0); + tesseract.addVertexWithUV(1 - 11 * pixel / 2, 11 * pixel / 2, 1 - 11 * pixel / 2, 0, 1); + tesseract.addVertexWithUV(1 - 11 * pixel / 2, 11 * pixel / 2, 11 * pixel / 2, 1, 1); + this.bindTexture(loc2); + tesseract.draw(); + + tesseract.startDrawingQuads(); + tesseract.addVertexWithUV(11 * pixel / 2, 1 - 11 * pixel / 2, 11 * pixel / 2, 1, 0); + tesseract.addVertexWithUV(1 - 11 * pixel / 2, 1 - 11 * pixel / 2, 11 * pixel / 2, 0, 0); + tesseract.addVertexWithUV(1 - 11 * pixel / 2, 11 * pixel / 2, 11 * pixel / 2, 0, 1); + tesseract.addVertexWithUV(11 * pixel / 2, 11 * pixel / 2, 11 * pixel / 2, 1, 1); + this.bindTexture(loc2); + tesseract.draw(); + + tesseract.startDrawingQuads(); + tesseract.addVertexWithUV(11 * pixel / 2, 1 - 11 * pixel / 2, 1 - 11 * pixel / 2, 1, 0); + tesseract.addVertexWithUV(11 * pixel / 2, 1 - 11 * pixel / 2, 11 * pixel / 2, 0, 0); + tesseract.addVertexWithUV(11 * pixel / 2, 11 * pixel / 2, 11 * pixel / 2, 0, 1); + tesseract.addVertexWithUV(11 * pixel / 2, 11 * pixel / 2, 1 - 11 * pixel / 2, 1, 1); + this.bindTexture(loc2); + tesseract.draw(); + + tesseract.startDrawingQuads(); + tesseract.addVertexWithUV(1 - 11 * pixel / 2, 1 - 11 * pixel / 2, 11 * pixel / 2, 1, 0); + tesseract.addVertexWithUV(11 * pixel / 2, 1 - 11 * pixel / 2, 11 * pixel / 2, 0, 0); + tesseract.addVertexWithUV(11 * pixel / 2, 1 - 11 * pixel / 2, 1 - 11 * pixel / 2, 0, 1); + tesseract.addVertexWithUV(1 - 11 * pixel / 2, 1 - 11 * pixel / 2, 1 - 11 * pixel / 2, 1, 1); + this.bindTexture(loc1); + tesseract.draw(); + + tesseract.startDrawingQuads(); + tesseract.addVertexWithUV(11 * pixel / 2, 11 * pixel / 2, 11 * pixel / 2, 1, 0); + tesseract.addVertexWithUV(1 - 11 * pixel / 2, 11 * pixel / 2, 11 * pixel / 2, 0, 0); + tesseract.addVertexWithUV(1 - 11 * pixel / 2, 11 * pixel / 2, 1 - 11 * pixel / 2, 0, 1); + tesseract.addVertexWithUV(11 * pixel / 2, 11 * pixel / 2, 1 - 11 * pixel / 2, 1, 1); + this.bindTexture(loc1); + tesseract.draw(); + GL11.glPopMatrix(); + + } + +} diff --git a/com/hbm/tileentity/TileEntityLaunchPad.java b/com/hbm/tileentity/TileEntityLaunchPad.java index 1e8ca87a8..ef51c0b42 100644 --- a/com/hbm/tileentity/TileEntityLaunchPad.java +++ b/com/hbm/tileentity/TileEntityLaunchPad.java @@ -186,7 +186,7 @@ public class TileEntityLaunchPad extends TileEntity implements ISidedInventory, @Override public boolean canExtractItem(int i, ItemStack itemStack, int j) { - return j != 0 || i != 1 || itemStack.getItem() == Items.bucket; + return false; } public int getPowerScaled(int i) { diff --git a/com/hbm/tileentity/TileEntityMachineBattery.java b/com/hbm/tileentity/TileEntityMachineBattery.java index a36077b3d..7e6b7e669 100644 --- a/com/hbm/tileentity/TileEntityMachineBattery.java +++ b/com/hbm/tileentity/TileEntityMachineBattery.java @@ -9,6 +9,7 @@ import com.hbm.interfaces.IConductor; import com.hbm.interfaces.IConsumer; import com.hbm.interfaces.ISource; import com.hbm.items.ModItems; +import com.hbm.items.special.ItemBattery; import com.hbm.lib.Library; import net.minecraft.block.Block; @@ -107,7 +108,19 @@ public class TileEntityMachineBattery extends TileEntity implements ISidedInvent public void closeInventory() {} @Override - public boolean isItemValidForSlot(int i, ItemStack itemStack) { + public boolean isItemValidForSlot(int i, ItemStack stack) { + switch(i) + { + case 0: + if(stack.getItem() instanceof ItemBattery) + return true; + break; + case 1: + if(stack.getItem() instanceof ItemBattery) + return true; + break; + } + return true; } @@ -186,7 +199,17 @@ public class TileEntityMachineBattery extends TileEntity implements ISidedInvent @Override public boolean canExtractItem(int i, ItemStack itemStack, int j) { - return j != 0 || i != 1 || itemStack.getItem() == Items.bucket; + + if(itemStack.getItem() instanceof ItemBattery) { + if(i == 0 && ItemBattery.getCharge(itemStack) == 0) { + return true; + } + if(i == 1 && ItemBattery.getCharge(itemStack) == ItemBattery.getMaxChargeStatic(itemStack)) { + return true; + } + } + + return false; } public int getPowerRemainingScaled(int i) { diff --git a/com/hbm/tileentity/TileEntityMachineCMBFactory.java b/com/hbm/tileentity/TileEntityMachineCMBFactory.java index 6e77e023f..f56028615 100644 --- a/com/hbm/tileentity/TileEntityMachineCMBFactory.java +++ b/com/hbm/tileentity/TileEntityMachineCMBFactory.java @@ -204,8 +204,8 @@ public class TileEntityMachineCMBFactory extends TileEntity implements ISidedInv public boolean canExtractItem(int i, ItemStack itemStack, int j) { if(i == 4) return true; - if(i == 0 && itemStack.getItem() instanceof ItemBattery) - if(itemStack.getItemDamage() == itemStack.getMaxDamage()) + if(i == 0) + if (itemStack.getItem() instanceof ItemBattery && ItemBattery.getCharge(itemStack) == 0) return true; if(i == 2) if(itemStack.getItem() == Items.bucket || (itemStack.getItem() == ModItems.tank_waste && itemStack.getItemDamage() <= 0)) diff --git a/com/hbm/tileentity/TileEntityMachineCoal.java b/com/hbm/tileentity/TileEntityMachineCoal.java index 327b493e7..a3c628279 100644 --- a/com/hbm/tileentity/TileEntityMachineCoal.java +++ b/com/hbm/tileentity/TileEntityMachineCoal.java @@ -206,7 +206,7 @@ public class TileEntityMachineCoal extends TileEntity implements ISidedInventory if(itemStack.getItem() == Items.bucket || itemStack.getItem() == ModItems.rod_empty || itemStack.getItem() == ModItems.rod_dual_empty || itemStack.getItem() == ModItems.rod_quad_empty) return true; if(i == 2) - if(itemStack.getItemDamage() == 0) + if (itemStack.getItem() instanceof ItemBattery && ItemBattery.getCharge(itemStack) == ItemBattery.getMaxChargeStatic(itemStack)) return true; return false; diff --git a/com/hbm/tileentity/TileEntityMachineCyclotron.java b/com/hbm/tileentity/TileEntityMachineCyclotron.java index 34599b283..bca3ae901 100644 --- a/com/hbm/tileentity/TileEntityMachineCyclotron.java +++ b/com/hbm/tileentity/TileEntityMachineCyclotron.java @@ -311,7 +311,7 @@ public class TileEntityMachineCyclotron extends TileEntity implements ISidedInve worldObj.spawnEntityInWorld(cloud); } if(i == 3) { - EntityBlackHole bl = new EntityBlackHole(worldObj, 0.5F + rand.nextFloat()); + EntityBlackHole bl = new EntityBlackHole(worldObj, 1.5F + rand.nextFloat()); bl.posX = xCoord + 0.5F; bl.posY = yCoord + 3.5F; bl.posZ = zCoord + 0.5F; diff --git a/com/hbm/tileentity/TileEntityMachineDeuterium.java b/com/hbm/tileentity/TileEntityMachineDeuterium.java index b09496976..5c861a7f3 100644 --- a/com/hbm/tileentity/TileEntityMachineDeuterium.java +++ b/com/hbm/tileentity/TileEntityMachineDeuterium.java @@ -207,8 +207,8 @@ public class TileEntityMachineDeuterium extends TileEntity implements ISidedInve public boolean canExtractItem(int i, ItemStack itemStack, int j) { if(i == 4) return true; - if(i == 0 && itemStack.getItem() instanceof ItemBattery) - if(itemStack.getItemDamage() == itemStack.getMaxDamage()) + if(i == 0) + if (itemStack.getItem() instanceof ItemBattery && ItemBattery.getCharge(itemStack) == 0) return true; if(i == 1) if(itemStack.getItem() == Items.bucket || itemStack.getItem() == ModItems.rod_empty || itemStack.getItem() == ModItems.rod_dual_empty || itemStack.getItem() == ModItems.rod_quad_empty) diff --git a/com/hbm/tileentity/TileEntityMachineDiesel.java b/com/hbm/tileentity/TileEntityMachineDiesel.java index fd04803bb..c400677a8 100644 --- a/com/hbm/tileentity/TileEntityMachineDiesel.java +++ b/com/hbm/tileentity/TileEntityMachineDiesel.java @@ -116,7 +116,7 @@ public class TileEntityMachineDiesel extends TileEntity implements ISidedInvento @Override public boolean isItemValidForSlot(int i, ItemStack stack) { if (i == 0) - if (stack.getItem() == ModItems.canister_fuel || stack.getItem() == ModItems.canister_NITAN + if (stack.getItem() == ModItems.canister_fuel || stack.getItem() == ModItems.canister_petroil || stack.getItem() == ModItems.canister_NITAN || stack.getItem() == Item.getItemFromBlock(ModBlocks.red_barrel)) return true; if (i == 2) @@ -201,7 +201,7 @@ public class TileEntityMachineDiesel extends TileEntity implements ISidedInvento if (itemStack.getItem() == ModItems.canister_empty || itemStack.getItem() == ModItems.tank_steel) return true; if (i == 2) - if (itemStack.getItemDamage() == 0) + if (itemStack.getItem() instanceof ItemBattery && ItemBattery.getCharge(itemStack) == ItemBattery.getMaxChargeStatic(itemStack)) return true; return false; @@ -260,6 +260,22 @@ public class TileEntityMachineDiesel extends TileEntity implements ISidedInvento } } + if (slots[0] != null && slots[0].getItem() == ModItems.canister_petroil && diesel + 450 <= maxDiesel) { + if (slots[1] == null || slots[1] != null && slots[1].getItem() == slots[0].getItem().getContainerItem() + && slots[1].stackSize < slots[1].getMaxStackSize()) { + if (slots[1] == null) + slots[1] = new ItemStack(slots[0].getItem().getContainerItem()); + else + slots[1].stackSize++; + + slots[0].stackSize--; + if (slots[0].stackSize <= 0) + slots[0] = null; + + diesel += 450; + } + } + if (slots[0] != null && slots[0].getItem() == ModItems.canister_NITAN && diesel + 625 <= maxDiesel) { if (slots[1] == null || slots[1] != null && slots[1].getItem() == slots[0].getItem().getContainerItem() && slots[1].stackSize < slots[1].getMaxStackSize()) { diff --git a/com/hbm/tileentity/TileEntityMachineElectricFurnace.java b/com/hbm/tileentity/TileEntityMachineElectricFurnace.java index c912571b7..358d8b1bf 100644 --- a/com/hbm/tileentity/TileEntityMachineElectricFurnace.java +++ b/com/hbm/tileentity/TileEntityMachineElectricFurnace.java @@ -190,7 +190,7 @@ public class TileEntityMachineElectricFurnace extends TileEntity implements ISid @Override public boolean canExtractItem(int i, ItemStack itemStack, int j) { if(i == 0) - if(itemStack.getItemDamage() == itemStack.getMaxDamage()) + if (itemStack.getItem() instanceof ItemBattery && ItemBattery.getCharge(itemStack) == 0) return true; if(i == 2) return true; diff --git a/com/hbm/tileentity/TileEntityMachineGenerator.java b/com/hbm/tileentity/TileEntityMachineGenerator.java index d04f78da1..e0aec9d60 100644 --- a/com/hbm/tileentity/TileEntityMachineGenerator.java +++ b/com/hbm/tileentity/TileEntityMachineGenerator.java @@ -248,7 +248,7 @@ public class TileEntityMachineGenerator extends TileEntity implements ISidedInve if(itemStack.getItem() == Items.bucket || itemStack.getItem() == ModItems.rod_empty || itemStack.getItem() == ModItems.rod_dual_empty || itemStack.getItem() == ModItems.rod_quad_empty) return true; if(i == 11) - if(itemStack.getItemDamage() == 0) + if (itemStack.getItem() instanceof ItemBattery && ItemBattery.getCharge(itemStack) == ItemBattery.getMaxChargeStatic(itemStack)) return true; return false; diff --git a/com/hbm/tileentity/TileEntityMachineIGenerator.java b/com/hbm/tileentity/TileEntityMachineIGenerator.java index 34b0674ba..f48d61a5e 100644 --- a/com/hbm/tileentity/TileEntityMachineIGenerator.java +++ b/com/hbm/tileentity/TileEntityMachineIGenerator.java @@ -11,6 +11,9 @@ import com.hbm.interfaces.ISource; import com.hbm.items.ModItems; import com.hbm.items.special.ItemBattery; import com.hbm.lib.Library; +import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.TEIGeneratorPacket; +import com.hbm.packet.TEPylonSenderPacket; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @@ -38,6 +41,7 @@ public class TileEntityMachineIGenerator extends TileEntity implements ISidedInv public int fuel; public int burn; public int soundCycle = 0; + public float rotation; public static final int maxPower = 100000; public static final int maxTorque = 2500; public static final int maxHeat = 7500; @@ -221,6 +225,8 @@ public class TileEntityMachineIGenerator extends TileEntity implements ISidedInv if(age == 9 || age == 19) ffgeuaInit(); + + rotation += ((float)(this.torque / 100F)); if(burn > 0) { burn--; @@ -299,10 +305,13 @@ public class TileEntityMachineIGenerator extends TileEntity implements ISidedInv doWaterTask(); doBatteryTask(); } + + if(!worldObj.isRemote) + PacketDispatcher.wrapper.sendToAll(new TEIGeneratorPacket(xCoord, yCoord, zCoord, rotation)); } public void doFuelTask() { - + if (slots[13] != null && slots[13].getItem() == ModItems.canister_fuel && fuel + 625 <= maxFuel) { if (slots[14] == null || slots[14] != null && slots[14].getItem() == slots[13].getItem().getContainerItem() && slots[14].stackSize < slots[14].getMaxStackSize()) { @@ -318,6 +327,51 @@ public class TileEntityMachineIGenerator extends TileEntity implements ISidedInv fuel += 625; } } + if (slots[13] != null && slots[13].getItem() == ModItems.canister_smear && fuel + 200 <= maxFuel) { + if (slots[14] == null || slots[14] != null && slots[14].getItem() == slots[13].getItem().getContainerItem() + && slots[14].stackSize < slots[14].getMaxStackSize()) { + if (slots[14] == null) + slots[14] = new ItemStack(slots[13].getItem().getContainerItem()); + else + slots[14].stackSize++; + + slots[13].stackSize--; + if (slots[13].stackSize <= 0) + slots[13] = null; + + fuel += 200; + } + } + if (slots[13] != null && slots[13].getItem() == ModItems.canister_reoil && fuel + 350 <= maxFuel) { + if (slots[14] == null || slots[14] != null && slots[14].getItem() == slots[13].getItem().getContainerItem() + && slots[14].stackSize < slots[14].getMaxStackSize()) { + if (slots[14] == null) + slots[14] = new ItemStack(slots[13].getItem().getContainerItem()); + else + slots[14].stackSize++; + + slots[13].stackSize--; + if (slots[13].stackSize <= 0) + slots[13] = null; + + fuel += 350; + } + } + if (slots[13] != null && slots[13].getItem() == ModItems.canister_petroil && fuel + 500 <= maxFuel) { + if (slots[14] == null || slots[14] != null && slots[14].getItem() == slots[13].getItem().getContainerItem() + && slots[14].stackSize < slots[14].getMaxStackSize()) { + if (slots[14] == null) + slots[14] = new ItemStack(slots[13].getItem().getContainerItem()); + else + slots[14].stackSize++; + + slots[13].stackSize--; + if (slots[13].stackSize <= 0) + slots[13] = null; + + fuel += 500; + } + } if (slots[13] != null && slots[13].getItem() == Item.getItemFromBlock(ModBlocks.red_barrel) && fuel + 5000 <= maxFuel) { if (slots[14] == null || slots[14] != null && slots[14].getItem() == ModItems.tank_steel && slots[14].stackSize < slots[14].getMaxStackSize()) { diff --git a/com/hbm/tileentity/TileEntityMachineMiningDrill.java b/com/hbm/tileentity/TileEntityMachineMiningDrill.java new file mode 100644 index 000000000..282e8f9d7 --- /dev/null +++ b/com/hbm/tileentity/TileEntityMachineMiningDrill.java @@ -0,0 +1,866 @@ +package com.hbm.tileentity; + +import java.util.ArrayList; +import java.util.List; +import java.util.Random; + +import com.hbm.blocks.ModBlocks; +import com.hbm.entity.particle.EntityGasFX; +import com.hbm.explosion.ExplosionLarge; +import com.hbm.interfaces.IConsumer; +import com.hbm.interfaces.IGasAcceptor; +import com.hbm.interfaces.IGasSource; +import com.hbm.interfaces.IOilAcceptor; +import com.hbm.interfaces.IOilSource; +import com.hbm.items.ModItems; +import com.hbm.items.special.ItemBattery; +import com.hbm.lib.Library; +import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.TEDrillPacket; +import com.hbm.packet.TEIGeneratorPacket; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.block.Block; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.init.Blocks; +import net.minecraft.inventory.IInventory; +import net.minecraft.inventory.ISidedInventory; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.nbt.NBTTagList; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.tileentity.TileEntityChest; +import net.minecraft.tileentity.TileEntityHopper; +import net.minecraft.util.AxisAlignedBB; +import net.minecraftforge.fluids.BlockFluidBase; +import net.minecraftforge.oredict.OreDictionary; + +public class TileEntityMachineMiningDrill extends TileEntity implements ISidedInventory, IConsumer { + + private ItemStack slots[]; + + public int power; + public int warning; + public static final int maxPower = 100000; + int age = 0; + int timer = 50; + int radius = 100; + int consumption = 100; + int fortune = 0; + boolean flag = true; + public float torque; + public float rotation; + + private static final int[] slots_top = new int[] {1}; + private static final int[] slots_bottom = new int[] {2, 0}; + private static final int[] slots_side = new int[] {0}; + Random rand = new Random(); + + private String customName; + + public TileEntityMachineMiningDrill() { + slots = new ItemStack[13]; + } + + @Override + public int getSizeInventory() { + return slots.length; + } + + @Override + public ItemStack getStackInSlot(int i) { + return slots[i]; + } + + @Override + public ItemStack getStackInSlotOnClosing(int i) { + if(slots[i] != null) + { + ItemStack itemStack = slots[i]; + slots[i] = null; + return itemStack; + } else { + return null; + } + } + + @Override + public void setInventorySlotContents(int i, ItemStack itemStack) { + slots[i] = itemStack; + if(itemStack != null && itemStack.stackSize > getInventoryStackLimit()) + { + itemStack.stackSize = getInventoryStackLimit(); + } + } + + @Override + public String getInventoryName() { + return this.hasCustomInventoryName() ? this.customName : "container.miningDrill"; + } + + @Override + public boolean hasCustomInventoryName() { + return this.customName != null && this.customName.length() > 0; + } + + public void setCustomName(String name) { + this.customName = name; + } + + @Override + public int getInventoryStackLimit() { + return 64; + } + + @Override + public boolean isUseableByPlayer(EntityPlayer player) { + if(worldObj.getTileEntity(xCoord, yCoord, zCoord) != this) + { + return false; + }else{ + return player.getDistanceSq(xCoord + 0.5D, yCoord + 0.5D, zCoord + 0.5D) <=128; + } + } + + //You scrubs aren't needed for anything (right now) + @Override + public void openInventory() {} + @Override + public void closeInventory() {} + + @Override + public boolean isItemValidForSlot(int i, ItemStack itemStack) { + if(i == 0) + if(itemStack.getItem() instanceof ItemBattery) + return true; + + if(i == 1) + return true; + + return false; + } + + @Override + public ItemStack decrStackSize(int i, int j) { + if(slots[i] != null) + { + if(slots[i].stackSize <= j) + { + ItemStack itemStack = slots[i]; + slots[i] = null; + return itemStack; + } + ItemStack itemStack1 = slots[i].splitStack(j); + if (slots[i].stackSize == 0) + { + slots[i] = null; + } + + return itemStack1; + } else { + return null; + } + } + + @Override + public void readFromNBT(NBTTagCompound nbt) { + super.readFromNBT(nbt); + NBTTagList list = nbt.getTagList("items", 10); + + this.power = nbt.getInteger("powerTime"); + slots = new ItemStack[getSizeInventory()]; + + for(int i = 0; i < list.tagCount(); i++) + { + NBTTagCompound nbt1 = list.getCompoundTagAt(i); + byte b0 = nbt1.getByte("slot"); + if(b0 >= 0 && b0 < slots.length) + { + slots[b0] = ItemStack.loadItemStackFromNBT(nbt1); + } + } + } + + @Override + public void writeToNBT(NBTTagCompound nbt) { + super.writeToNBT(nbt); + nbt.setInteger("powerTime", power); + NBTTagList list = new NBTTagList(); + + for(int i = 0; i < slots.length; i++) + { + if(slots[i] != null) + { + NBTTagCompound nbt1 = new NBTTagCompound(); + nbt1.setByte("slot", (byte)i); + slots[i].writeToNBT(nbt1); + list.appendTag(nbt1); + } + } + nbt.setTag("items", list); + } + + @Override + public int[] getAccessibleSlotsFromSide(int p_94128_1_) + { + return p_94128_1_ == 0 ? slots_bottom : (p_94128_1_ == 1 ? slots_top : slots_side); + } + + @Override + public boolean canInsertItem(int i, ItemStack itemStack, int j) { + return this.isItemValidForSlot(i, itemStack); + } + + @Override + public boolean canExtractItem(int i, ItemStack itemStack, int j) { + return false; + } + + public int getPowerScaled(int i) { + return (power * i) / maxPower; + } + + @Override + public void updateEntity() { + + this.consumption = 100; + this.timer = 50; + this.radius = 1; + this.fortune = 0; + + for(int i = 10; i < 13; i++) { + ItemStack stack = slots[i]; + + if(stack != null) { + if(stack.getItem() == ModItems.upgrade_effect_1) { + this.radius += 1; + this.consumption += 80; + } + if(stack.getItem() == ModItems.upgrade_effect_2) { + this.radius += 2; + this.consumption += 160; + } + if(stack.getItem() == ModItems.upgrade_effect_3) { + this.radius += 3; + this.consumption += 240; + } + if(stack.getItem() == ModItems.upgrade_speed_1) { + this.timer -= 15; + this.consumption += 300; + } + if(stack.getItem() == ModItems.upgrade_speed_2) { + this.timer -= 30; + this.consumption += 600; + } + if(stack.getItem() == ModItems.upgrade_speed_3) { + this.timer -= 45; + this.consumption += 900; + } + if(stack.getItem() == ModItems.upgrade_power_1) { + this.consumption -= 30; + this.timer += 5; + } + if(stack.getItem() == ModItems.upgrade_power_2) { + this.consumption -= 60; + this.timer += 10; + } + if(stack.getItem() == ModItems.upgrade_power_3) { + this.consumption -= 90; + this.timer += 15; + } + if(stack.getItem() == ModItems.upgrade_fortune_1) { + this.fortune += 1; + this.timer += 15; + } + if(stack.getItem() == ModItems.upgrade_fortune_2) { + this.fortune += 2; + this.timer += 30; + } + if(stack.getItem() == ModItems.upgrade_fortune_3) { + this.fortune += 3; + this.timer += 45; + } + } + } + + if(timer < 5) + timer = 5; + if(consumption < 40) + consumption = 40; + if(radius > 4) + radius = 4; + if(fortune > 3) + fortune = 3; + + age++; + if(age >= timer) + age -= timer; + + if(!worldObj.isRemote) { + power = Library.chargeTEFromItems(slots, 0, power, maxPower); + + if(power >= consumption) { + + //operation start + + if(age == timer - 1) { + warning = 0; + + //warning 0, green: drill is operational + //warning 1, red: drill is full, has no power or the drill is jammed + //warning 2, yellow: drill has reached max depth + + for(int i = this.yCoord - 1; i > this.yCoord - 1 - 100; i--) { + + if(i <= 5) { + //Code 2: The drilling ended + warning = 2; + break; + } + + Block b = worldObj.getBlock(this.xCoord, i, this.zCoord); + Block b1 = worldObj.getBlock(this.xCoord, i - 1, this.zCoord); + int meta = worldObj.getBlockMetadata(this.xCoord, i, this.zCoord); + int meta1 = worldObj.getBlockMetadata(this.xCoord, i - 1, this.zCoord); + ItemStack stack = new ItemStack(b.getItemDropped(meta, rand, fortune), b.quantityDropped(meta, fortune, rand), b.damageDropped(meta)); + ItemStack stack1 = new ItemStack(b1.getItemDropped(meta1, rand, fortune), b1.quantityDropped(meta1, fortune, rand), b1.damageDropped(meta1)); + + if(i == this.yCoord - 1 && worldObj.getBlock(this.xCoord, i, this.zCoord) != ModBlocks.drill_pipe) { + if(this.isOreo(this.xCoord, i, this.zCoord) && this.hasSpace(stack)) { + //if(stack != null) + //this.addItemToInventory(stack); + worldObj.setBlock(this.xCoord, i, this.zCoord, ModBlocks.drill_pipe); + break; + } else { + //Code 2: Drill jammed + warning = 1; + break; + } + } + + if(b1 == ModBlocks.drill_pipe) { + continue; + } else { + + flag = i != this.yCoord - 1; + + if(this.radius == 1) + if(!this.drill1(this.xCoord, i, this.zCoord)) { + if(this.isOreo(this.xCoord, i - 1, this.zCoord) && this.hasSpace(stack1)) { + //if(stack1 != null) + //this.addItemToInventory(stack1); + worldObj.setBlock(this.xCoord, i - 1, this.zCoord, ModBlocks.drill_pipe); + } else { + //Code 2: Drill jammed + warning = 1; + } + } + if(this.radius == 2) + if(!this.drill2(this.xCoord, i, this.zCoord)) { + if(this.isOreo(this.xCoord, i - 1, this.zCoord) && this.hasSpace(stack1)) { + //if(stack1 != null) + //this.addItemToInventory(stack1); + worldObj.setBlock(this.xCoord, i - 1, this.zCoord, ModBlocks.drill_pipe); + } else { + //Code 2: Drill jammed + warning = 1; + } + } + if(this.radius == 3) + if(!this.drill3(this.xCoord, i, this.zCoord)) { + if(this.isOreo(this.xCoord, i - 1, this.zCoord) && this.hasSpace(stack1)) { + //if(stack1 != null) + //this.addItemToInventory(stack1); + worldObj.setBlock(this.xCoord, i - 1, this.zCoord, ModBlocks.drill_pipe); + } else { + //Code 2: Drill jammed + warning = 1; + } + } + if(this.radius == 4) + if(!this.drill4(this.xCoord, i, this.zCoord)) { + if(this.isOreo(this.xCoord, i - 1, this.zCoord) && this.hasSpace(stack1)) { + //if(stack1 != null) + //this.addItemToInventory(stack1); + worldObj.setBlock(this.xCoord, i - 1, this.zCoord, ModBlocks.drill_pipe); + } else { + //Code 2: Drill jammed + warning = 1; + } + } + break; + } + } + } + + //operation end + + power -= consumption; + } else { + warning = 1; + } + + int meta = worldObj.getBlockMetadata(this.xCoord, this.yCoord, this.zCoord); + TileEntity te = null; + if(meta == 2) { + te = worldObj.getTileEntity(xCoord - 2, yCoord, zCoord); + //worldObj.setBlock(xCoord - 2, yCoord, zCoord, Blocks.dirt); + } + if(meta == 3) { + te = worldObj.getTileEntity(xCoord + 2, yCoord, zCoord); + //worldObj.setBlock(xCoord - 2, yCoord, zCoord, Blocks.dirt); + } + if(meta == 4) { + te = worldObj.getTileEntity(xCoord, yCoord, zCoord + 2); + //worldObj.setBlock(xCoord - 2, yCoord, zCoord, Blocks.dirt); + } + if(meta == 5) { + te = worldObj.getTileEntity(xCoord, yCoord, zCoord - 2); + //worldObj.setBlock(xCoord - 2, yCoord, zCoord, Blocks.dirt); + } + + if(te != null && te instanceof TileEntityChest) { + TileEntityChest chest = (TileEntityChest)te; + + for(int i = 1; i < 10; i++) + if(tryFillContainer(chest, i)) + break; + } + + if(te != null && te instanceof TileEntityHopper) { + TileEntityHopper hopper = (TileEntityHopper)te; + + for(int i = 1; i < 10; i++) + if(tryFillContainer(hopper, i)) + break; + } + + if(warning == 0) { + torque += 0.1; + if(torque > (100/timer)) + torque = (100/timer); + } else { + torque -= 0.1F; + if(torque < -(100/timer)) + torque = -(100/timer); + } + + if(torque < 0) { + torque = 0; + } + rotation += torque; + if(rotation >= 360) + rotation -= 360; + + PacketDispatcher.wrapper.sendToAll(new TEDrillPacket(xCoord, yCoord, zCoord, rotation)); + } + + } + + public boolean tryFillContainer(IInventory inventory, int slot) { + + int size = inventory.getSizeInventory(); + + for(int i = 0; i < size; i++) { + if(inventory.getStackInSlot(i) != null) { + + if(slots[slot] == null) + return false; + + ItemStack sta1 = inventory.getStackInSlot(i).copy(); + ItemStack sta2 = slots[slot].copy(); + if(sta1 != null && sta2 != null) { + sta1.stackSize = 1; + sta2.stackSize = 1; + + if(ItemStack.areItemStacksEqual(sta1, sta2) && ItemStack.areItemStackTagsEqual(sta1, sta2) && inventory.getStackInSlot(i).stackSize < inventory.getStackInSlot(i).getMaxStackSize()) { + slots[slot].stackSize--; + + if(slots[slot].stackSize <= 0) + slots[slot] = null; + + ItemStack sta3 = inventory.getStackInSlot(i).copy(); + sta3.stackSize++; + inventory.setInventorySlotContents(i, sta3); + + return true; + } + } + } + } + for(int i = 0; i < size; i++) { + + if(slots[slot] == null) + return false; + + ItemStack sta2 = slots[slot].copy(); + if(inventory.getStackInSlot(i) == null && sta2 != null) { + sta2.stackSize = 1; + slots[slot].stackSize--; + + if(slots[slot].stackSize <= 0) + slots[slot] = null; + + inventory.setInventorySlotContents(i, sta2); + + return true; + } + } + + return false; + } + + public boolean isOreo(int x, int y, int z) { + + Block b = worldObj.getBlock(x, y, z); + int meta = worldObj.getBlockMetadata(x, y, z); + + if(b == Blocks.air || b == Blocks.grass || b == Blocks.dirt || + b == Blocks.stone || b == Blocks.sand || b == Blocks.sandstone || + b == Blocks.clay || b == Blocks.hardened_clay || b == Blocks.stained_hardened_clay || + b == Blocks.gravel || b.isReplaceable(worldObj, x, y, z)) + return true; + + int[] ids = OreDictionary.getOreIDs(new ItemStack(b, 1, meta)); + + for(int i = 0; i < ids.length; i++) { + + String s = OreDictionary.getOreName(ids[i]); + + if(s.length() > 3 && s.substring(0, 3).equals("ore")) + return true; + } + + return false; + } + + public boolean isMinableOreo(int x, int y, int z) { + + Block b = worldObj.getBlock(x, y, z); + int meta = worldObj.getBlockMetadata(x, y, z); + + if(b == Blocks.grass || b == Blocks.dirt || + b == Blocks.stone || b == Blocks.sand || b == Blocks.sandstone || + b == Blocks.clay || b == Blocks.hardened_clay || b == Blocks.stained_hardened_clay || + b == Blocks.gravel || b.isReplaceable(worldObj, x, y, z)) + return true; + + int[] ids = OreDictionary.getOreIDs(new ItemStack(b, 1, meta)); + + for(int i = 0; i < ids.length; i++) { + + String s = OreDictionary.getOreName(ids[i]); + + if(s.length() > 3 && s.substring(0, 3).equals("ore")) + return true; + } + + return false; + } + + /** + * returns true if there has been a successful mining operation + * returns false if no block could be mined + * */ + public boolean drill1(int x, int y, int z) { + + if(!flag) + return false; + + if(!tryDrill(x + 1, y, z)) + if(!tryDrill(x + 1, y, z + 1)) + if(!tryDrill(x, y, z + 1)) + if(!tryDrill(x - 1, y, z + 1)) + if(!tryDrill(x - 1, y, z)) + if(!tryDrill(x - 1, y, z - 1)) + if(!tryDrill(x, y, z - 1)) + if(!tryDrill(x + 1, y, z - 1)) + return false; + + return true; + } + + public boolean drill2(int x, int y, int z) { + + if(!flag) + return false; + + if(!tryDrill(x + 1, y, z)) + if(!tryDrill(x + 1, y, z + 1)) + if(!tryDrill(x, y, z + 1)) + if(!tryDrill(x - 1, y, z + 1)) + if(!tryDrill(x - 1, y, z)) + if(!tryDrill(x - 1, y, z - 1)) + if(!tryDrill(x, y, z - 1)) + if(!tryDrill(x + 1, y, z - 1)) + + if(!tryDrill(x + 2, y, z)) + if(!tryDrill(x + 2, y, z + 1)) + if(!tryDrill(x + 1, y, z + 2)) + if(!tryDrill(x, y, z + 2)) + if(!tryDrill(x - 1, y, z + 2)) + if(!tryDrill(x - 2, y, z + 1)) + if(!tryDrill(x - 2, y, z)) + if(!tryDrill(x - 2, y, z - 1)) + if(!tryDrill(x - 1, y, z - 2)) + if(!tryDrill(x, y, z - 2)) + if(!tryDrill(x + 1, y, z - 2)) + if(!tryDrill(x + 2, y, z - 1)) + return false; + + return true; + } + + public boolean drill3(int x, int y, int z) { + + if(!flag) + return false; + + if(!tryDrill(x + 1, y, z)) + if(!tryDrill(x + 1, y, z + 1)) + if(!tryDrill(x, y, z + 1)) + if(!tryDrill(x - 1, y, z + 1)) + if(!tryDrill(x - 1, y, z)) + if(!tryDrill(x - 1, y, z - 1)) + if(!tryDrill(x, y, z - 1)) + if(!tryDrill(x + 1, y, z - 1)) + + if(!tryDrill(x + 2, y, z)) + if(!tryDrill(x + 2, y, z + 1)) + if(!tryDrill(x + 1, y, z + 2)) + if(!tryDrill(x, y, z + 2)) + if(!tryDrill(x - 1, y, z + 2)) + if(!tryDrill(x - 2, y, z + 1)) + if(!tryDrill(x - 2, y, z)) + if(!tryDrill(x - 2, y, z - 1)) + if(!tryDrill(x - 1, y, z - 2)) + if(!tryDrill(x, y, z - 2)) + if(!tryDrill(x + 1, y, z - 2)) + if(!tryDrill(x + 2, y, z - 1)) + + if(!tryDrill(x + 3, y, z)) + if(!tryDrill(x + 3, y, z + 1)) + if(!tryDrill(x + 2, y, z + 2)) + if(!tryDrill(x + 1, y, z + 3)) + if(!tryDrill(x, y, z + 3)) + if(!tryDrill(x - 1, y, z + 3)) + if(!tryDrill(x - 2, y, z + 2)) + if(!tryDrill(x - 3, y, z + 1)) + if(!tryDrill(x - 3, y, z)) + if(!tryDrill(x - 3, y, z - 1)) + if(!tryDrill(x - 2, y, z - 2)) + if(!tryDrill(x - 1, y, z - 3)) + if(!tryDrill(x, y, z - 3)) + if(!tryDrill(x + 1, y, z - 3)) + if(!tryDrill(x + 2, y, z - 2)) + if(!tryDrill(x + 3, y, z - 1)) + return false; + + return true; + } + + public boolean drill4(int x, int y, int z) { + + if(!flag) + return false; + + if(!tryDrill(x + 1, y, z)) + if(!tryDrill(x + 1, y, z + 1)) + if(!tryDrill(x, y, z + 1)) + if(!tryDrill(x - 1, y, z + 1)) + if(!tryDrill(x - 1, y, z)) + if(!tryDrill(x - 1, y, z - 1)) + if(!tryDrill(x, y, z - 1)) + if(!tryDrill(x + 1, y, z - 1)) + + if(!tryDrill(x + 2, y, z)) + if(!tryDrill(x + 2, y, z + 1)) + if(!tryDrill(x + 1, y, z + 2)) + if(!tryDrill(x, y, z + 2)) + if(!tryDrill(x - 1, y, z + 2)) + if(!tryDrill(x - 2, y, z + 1)) + if(!tryDrill(x - 2, y, z)) + if(!tryDrill(x - 2, y, z - 1)) + if(!tryDrill(x - 1, y, z - 2)) + if(!tryDrill(x, y, z - 2)) + if(!tryDrill(x + 1, y, z - 2)) + if(!tryDrill(x + 2, y, z - 1)) + + if(!tryDrill(x + 3, y, z)) + if(!tryDrill(x + 3, y, z + 1)) + if(!tryDrill(x + 2, y, z + 2)) + if(!tryDrill(x + 1, y, z + 3)) + if(!tryDrill(x, y, z + 3)) + if(!tryDrill(x - 1, y, z + 3)) + if(!tryDrill(x - 2, y, z + 2)) + if(!tryDrill(x - 3, y, z + 1)) + if(!tryDrill(x - 3, y, z)) + if(!tryDrill(x - 3, y, z - 1)) + if(!tryDrill(x - 2, y, z - 2)) + if(!tryDrill(x - 1, y, z - 3)) + if(!tryDrill(x, y, z - 3)) + if(!tryDrill(x + 1, y, z - 3)) + if(!tryDrill(x + 2, y, z - 2)) + if(!tryDrill(x + 3, y, z - 1)) + + if(!tryDrill(x + 4, y, z)) + if(!tryDrill(x + 4, y, z + 1)) + if(!tryDrill(x + 4, y, z + 2)) + if(!tryDrill(x + 3, y, z + 2)) + if(!tryDrill(x + 3, y, z + 3)) + if(!tryDrill(x + 2, y, z + 3)) + if(!tryDrill(x + 2, y, z + 4)) + if(!tryDrill(x + 1, y, z + 4)) + if(!tryDrill(x, y, z + 4)) + if(!tryDrill(x - 1, y, z + 4)) + if(!tryDrill(x - 2, y, z + 4)) + if(!tryDrill(x - 2, y, z + 3)) + if(!tryDrill(x - 3, y, z + 3)) + if(!tryDrill(x - 3, y, z + 2)) + if(!tryDrill(x - 4, y, z + 2)) + if(!tryDrill(x - 4, y, z + 1)) + if(!tryDrill(x - 4, y, z)) + if(!tryDrill(x - 4, y, z - 1)) + if(!tryDrill(x - 4, y, z - 2)) + if(!tryDrill(x - 3, y, z - 2)) + if(!tryDrill(x - 3, y, z - 3)) + if(!tryDrill(x - 2, y, z - 3)) + if(!tryDrill(x - 2, y, z - 4)) + if(!tryDrill(x - 1, y, z - 4)) + if(!tryDrill(x, y, z - 4)) + if(!tryDrill(x + 1, y, z - 4)) + if(!tryDrill(x + 2, y, z - 4)) + if(!tryDrill(x + 2, y, z - 3)) + if(!tryDrill(x + 3, y, z - 3)) + if(!tryDrill(x + 3, y, z - 2)) + if(!tryDrill(x + 4, y, z - 2)) + if(!tryDrill(x + 4, y, z - 1)) + return false; + + return true; + } + + /** + * returns true if there has been a successful mining operation + * returns false if no block could be mined, as it is either air or unmineable + * */ + public boolean tryDrill(int x, int y, int z) { + + if(worldObj.getBlock(x, y, z) == Blocks.air || !isMinableOreo(x, y, z)) + return false; + if(worldObj.getBlock(x, y, z).getMaterial().isLiquid()) { + worldObj.func_147480_a(x, y, z, false); + return false; + } + + Block b = worldObj.getBlock(x, y, z); + int meta = worldObj.getBlockMetadata(x, y, z); + ItemStack stack = new ItemStack(b.getItemDropped(meta, rand, fortune), b.quantityDropped(meta, fortune, rand), b.damageDropped(meta)); + if(hasSpace(stack)) { + this.addItemToInventory(stack); + worldObj.func_147480_a(x, y, z, false); + return true; + } + + return true; + } + + public boolean hasSpace(ItemStack stack) { + + ItemStack st = stack.copy(); + + if(st == null) + return true; + + for(int i = 1; i < 10; i++) { + if(slots[i] == null) + return true; + } + + int size = st.stackSize; + st.stackSize = 1; + + ItemStack[] fakeArray = slots.clone(); + boolean flag = true; + for(int i = 0; i < stack.stackSize; i++) { + if(!canAddItemToArray(st, fakeArray)) + flag = false; + } + + return flag; + } + + public void addItemToInventory(ItemStack stack) { + + ItemStack st = stack.copy(); + + if(st == null) + return; + + int size = st.stackSize; + st.stackSize = 1; + + for(int i = 0; i < size; i++) + canAddItemToArray(st, this.slots); + + } + + public boolean canAddItemToArray(ItemStack stack, ItemStack[] array) { + + ItemStack st = stack.copy(); + + if(st == null) + return true; + + for(int i = 1; i < 10; i++) { + + if(array[i] != null) { + ItemStack sta = array[i].copy(); + + if(sta != null && sta.getItem() == st.getItem() && sta.stackSize < st.getMaxStackSize()) { + array[i].stackSize++; + return true; + } + } + } + + for(int i = 1; i < 10; i++) { + if(array[i] == null) { + array[i] = stack.copy(); + return true; + } + } + + return false; + } + + @Override + public void setPower(int i) { + power = i; + + } + + @Override + public int getPower() { + return power; + + } + + @Override + public int getMaxPower() { + return maxPower; + } + + @Override + public AxisAlignedBB getRenderBoundingBox() { + return TileEntity.INFINITE_EXTENT_AABB; + } + + @Override + @SideOnly(Side.CLIENT) + public double getMaxRenderDistanceSquared() + { + return 65536.0D; + } +} diff --git a/com/hbm/tileentity/TileEntityMachineRefinery.java b/com/hbm/tileentity/TileEntityMachineRefinery.java index 30643db57..f00d4f3b4 100644 --- a/com/hbm/tileentity/TileEntityMachineRefinery.java +++ b/com/hbm/tileentity/TileEntityMachineRefinery.java @@ -215,8 +215,8 @@ public class TileEntityMachineRefinery extends TileEntity implements ISidedInven @Override public boolean canExtractItem(int i, ItemStack itemStack, int j) { - if(i == 0 && itemStack.getItem() instanceof ItemBattery) - if(itemStack.getItemDamage() == itemStack.getMaxDamage()) + if(i == 0) + if (itemStack.getItem() instanceof ItemBattery && ItemBattery.getCharge(itemStack) == 0) return true; if(i == 2) return true; diff --git a/com/hbm/tileentity/TileEntityMachineSchrabidiumTransmutator.java b/com/hbm/tileentity/TileEntityMachineSchrabidiumTransmutator.java index 2758f1e4f..4a3f277d8 100644 --- a/com/hbm/tileentity/TileEntityMachineSchrabidiumTransmutator.java +++ b/com/hbm/tileentity/TileEntityMachineSchrabidiumTransmutator.java @@ -195,8 +195,9 @@ public class TileEntityMachineSchrabidiumTransmutator extends TileEntity impleme return true; } - if (i == 3 && stack.getItemDamage() == stack.getMaxDamage()) { - return true; + if (i == 3) { + if (stack.getItem() instanceof ItemBattery && ItemBattery.getCharge(stack) == 0) + return true; } return false; diff --git a/com/hbm/tileentity/TileEntityPylonRedWire.java b/com/hbm/tileentity/TileEntityPylonRedWire.java index cdce51946..2799f6645 100644 --- a/com/hbm/tileentity/TileEntityPylonRedWire.java +++ b/com/hbm/tileentity/TileEntityPylonRedWire.java @@ -3,8 +3,12 @@ package com.hbm.tileentity; import java.util.ArrayList; import java.util.List; +import com.hbm.blocks.ModBlocks; import com.hbm.calc.UnionOfTileEntitiesAndBooleans; import com.hbm.interfaces.IConductor; +import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.TEPylonDestructorPacket; +import com.hbm.packet.TEPylonSenderPacket; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @@ -12,11 +16,43 @@ 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.world.World; public class TileEntityPylonRedWire extends TileEntity implements IConductor { public List uoteab = new ArrayList(); public List connected = new ArrayList(); + public boolean scheduleConnectionCheck = false; + public int[][] scheduleBuffer; + + @Override + public void updateEntity() { + + for(int i = connected.size() - 1; i >= 0; i--) { + if(connected.size() >= i + 1 && connected.get(i) == null) + connected.remove(i); + } + + for(int i = connected.size() - 1; i >= 0; i--) { + if(connected.size() >= i + 1 && connected.get(i) != null && + this.worldObj.getBlock(connected.get(i).xCoord, connected.get(i).yCoord, connected.get(i).zCoord) != ModBlocks.red_pylon) + connected.remove(i); + } + + if(scheduleConnectionCheck && this.scheduleBuffer != null) { + scheduleConnectionCheck = false; + this.connected = this.convertArrayToList(this.scheduleBuffer, worldObj); + } + + if(!worldObj.isRemote) {} + if(!connected.isEmpty()) { + PacketDispatcher.wrapper.sendToAll(new TEPylonDestructorPacket(xCoord, yCoord, zCoord)); + for(TileEntityPylonRedWire wire : connected) + PacketDispatcher.wrapper.sendToAll(new TEPylonSenderPacket(xCoord, yCoord, zCoord, + wire.xCoord, wire.yCoord, wire.zCoord)); + } + } @Override public void readFromNBT(NBTTagCompound nbt) { @@ -24,41 +60,41 @@ public class TileEntityPylonRedWire extends TileEntity implements IConductor { int[] conX = nbt.getIntArray("conX"); int[] conY = nbt.getIntArray("conY"); int[] conZ = nbt.getIntArray("conZ"); - if(conX.length == conY.length && conY.length == conZ.length) - { - int[][] con = new int[conX.length][3]; - - for(int i = 0; i < conX.length; i++) { - con[i][0] = conX[i]; - con[i][1] = conY[i]; - con[i][2] = conZ[i]; - } - - this.connected = this.convertArrayToList(con); - } else { - throw new RuntimeException(this.getClass() + " failed to read connected electricity poles from NBT!"); + + int[][] con = new int[conX.length][3]; + + for(int i = 0; i < conX.length; i++) { + con[i][0] = conX[i]; + con[i][1] = conY[i]; + con[i][2] = conZ[i]; } + + scheduleConnectionCheck = true; + scheduleBuffer = con; } @Override public void writeToNBT(NBTTagCompound nbt) { super.writeToNBT(nbt); - int[] conX = new int[this.connected.size()]; - int[] conY = new int[this.connected.size()]; - int[] conZ = new int[this.connected.size()]; + + int[][] con = this.convertListToArray(connected); + + int[] conX = new int[con.length]; + int[] conY = new int[con.length]; + int[] conZ = new int[con.length]; - for(int i = 0; i < this.connected.size(); i++) { - conX[i] = this.connected.get(i).xCoord; - conY[i] = this.connected.get(i).yCoord; - conZ[i] = this.connected.get(i).zCoord; + for(int i = 0; i < conX.length; i++) { + conX[i] = con[i][0]; + conY[i] = con[i][1]; + conZ[i] = con[i][2]; } - + nbt.setIntArray("conX", conX); nbt.setIntArray("conY", conY); nbt.setIntArray("conZ", conZ); } - public List convertArrayToList(int[][] array) { + public static List convertArrayToList(int[][] array, World worldObj) { List list = new ArrayList(); @@ -71,7 +107,7 @@ public class TileEntityPylonRedWire extends TileEntity implements IConductor { return list; } - public int[][] convertListToArray(List list) { + public static int[][] convertListToArray(List list) { int[][] array = new int[list.size()][3]; @@ -85,12 +121,24 @@ public class TileEntityPylonRedWire extends TileEntity implements IConductor { return array; } - /*@Override + public void addTileEntityBasedOnCoords(int x, int y, int z) { + + TileEntity te = worldObj.getTileEntity(x, y, z); + if(te != null && te instanceof TileEntityPylonRedWire) + this.connected.add((TileEntityPylonRedWire)te); + } + + @Override + public AxisAlignedBB getRenderBoundingBox() { + return TileEntity.INFINITE_EXTENT_AABB; + } + + @Override @SideOnly(Side.CLIENT) public double getMaxRenderDistanceSquared() { return 65536.0D; - }*/ + } /*Princess cards she sends me with her regards, Oh, bar-room eyes shine vacancy diff --git a/com/hbm/tileentity/TileEntityStructureMarker.java b/com/hbm/tileentity/TileEntityStructureMarker.java new file mode 100644 index 000000000..c824cafe1 --- /dev/null +++ b/com/hbm/tileentity/TileEntityStructureMarker.java @@ -0,0 +1,44 @@ +package com.hbm.tileentity; + +import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.TEIGeneratorPacket; +import com.hbm.packet.TEStructurePacket; + +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.nbt.NBTTagList; +import net.minecraft.tileentity.TileEntity; + +public class TileEntityStructureMarker extends TileEntity { + + //0: Factory + //1: Nuclear Reactor + //2: Reactor with Coat + //3: Fusion Reactor + //4: Fusion Reactor with Coat + //5: Watz Power Plant + //6: Fusionary Watz Plant + public int type = 0; + + public void updateEntity() { + + if(this.type > 6) + type -= 7; + + if(!worldObj.isRemote) + PacketDispatcher.wrapper.sendToAll(new TEStructurePacket(xCoord, yCoord, zCoord, type)); + } + + @Override + public void readFromNBT(NBTTagCompound nbt) { + super.readFromNBT(nbt); + type = nbt.getInteger("type"); + } + + @Override + public void writeToNBT(NBTTagCompound nbt) { + super.writeToNBT(nbt); + nbt.setInteger("type", type); + } + +} diff --git a/com/hbm/world/FWatz.java b/com/hbm/world/FWatz.java index a27eef316..a9145c656 100644 --- a/com/hbm/world/FWatz.java +++ b/com/hbm/world/FWatz.java @@ -12,395 +12,413 @@ import net.minecraft.world.gen.feature.WorldGenerator; public class FWatz { - static String[][] fwatz = new String[19][19]; - - static String s0101 = " XXX "; - static String s0102 = " XXX "; - static String s0103 = " "; - static String s0104 = " "; - static String s0105 = " "; - static String s0106 = " "; - static String s0107 = " "; - static String s0108 = " SSSSS "; - static String s0109 = "XX SSSSS XX"; - static String s0110 = "XX SSSSS XX"; - static String s0111 = "XX SSSSS XX"; - static String s0112 = " SSSSS "; - static String s0113 = " "; - static String s0114 = " "; - static String s0115 = " "; - static String s0116 = " "; - static String s0117 = " "; - static String s0118 = " XXX "; - static String s0119 = " XXX "; - - static String s0201 = " XHX "; - static String s0202 = " XXX "; - static String s0203 = " "; - static String s0204 = " "; - static String s0205 = " "; - static String s0206 = " "; - static String s0207 = " "; - static String s0208 = " SSSSS "; - static String s0209 = "XX STTTS XX"; - static String s0210 = "HX STTTS XH"; - static String s0211 = "XX STTTS XX"; - static String s0212 = " SSSSS "; - static String s0213 = " "; - static String s0214 = " "; - static String s0215 = " "; - static String s0216 = " "; - static String s0217 = " "; - static String s0218 = " XXX "; - static String s0219 = " XHX "; - - static String s0301 = " XXX "; - static String s0302 = " XXX "; - static String s0303 = " "; - static String s0304 = " "; - static String s0305 = " "; - static String s0306 = " "; - static String s0307 = " "; - static String s0308 = " SSSSS "; - static String s0309 = "XX STTTS XX"; - static String s0310 = "XX STTTS XX"; - static String s0311 = "XX STTTS XX"; - static String s0312 = " SSSSS "; - static String s0313 = " "; - static String s0314 = " "; - static String s0315 = " "; - static String s0316 = " "; - static String s0317 = " "; - static String s0318 = " XXX "; - static String s0319 = " XXX "; - - static String s0401 = " "; - static String s0402 = " XXX "; - static String s0403 = " XXX "; - static String s0404 = " X "; - static String s0405 = " X "; - static String s0406 = " X "; - static String s0407 = " X "; - static String s0408 = " SSXSS "; - static String s0409 = " XX STTTS XX "; - static String s0410 = " XXXXXXXTTTXXXXXXX "; - static String s0411 = " XX STTTS XX "; - static String s0412 = " SSXSS "; - static String s0413 = " X "; - static String s0414 = " X "; - static String s0415 = " X "; - static String s0416 = " X "; - static String s0417 = " XXX "; - static String s0418 = " XXX "; - static String s0419 = " "; - - static String s0501 = " "; - static String s0502 = " XXX "; - static String s0503 = " XXX "; - static String s0504 = " "; - static String s0505 = " "; - static String s0506 = " "; - static String s0507 = " "; - static String s0508 = " SSSSS "; - static String s0509 = " XX STTTS XX "; - static String s0510 = " XX STTTS XX "; - static String s0511 = " XX STTTS XX "; - static String s0512 = " SSSSS "; - static String s0513 = " "; - static String s0514 = " "; - static String s0515 = " "; - static String s0516 = " "; - static String s0517 = " XXX "; - static String s0518 = " XXX "; - static String s0519 = " "; - - static String s0601 = " "; - static String s0602 = " XXX "; - static String s0603 = " XXX "; - static String s0604 = " "; - static String s0605 = " "; - static String s0606 = " "; - static String s0607 = " "; - static String s0608 = " SSSSS "; - static String s0609 = " XX STTTS XX "; - static String s0610 = " XX STTTS XX "; - static String s0611 = " XX STTTS XX "; - static String s0612 = " SSSSS "; - static String s0613 = " "; - static String s0614 = " "; - static String s0615 = " "; - static String s0616 = " "; - static String s0617 = " XXX "; - static String s0618 = " XXX "; - static String s0619 = " "; - - static String s0701 = " "; - static String s0702 = " "; - static String s0703 = " XXX "; - static String s0704 = " XXX "; - static String s0705 = " "; - static String s0706 = " "; - static String s0707 = " "; - static String s0708 = " MMMMM "; - static String s0709 = " XX MMMMM XX "; - static String s0710 = " XX MMMMM XX "; - static String s0711 = " XX MMMMM XX "; - static String s0712 = " MMMMM "; - static String s0713 = " "; - static String s0714 = " "; - static String s0715 = " "; - static String s0716 = " XXX "; - static String s0717 = " XXX "; - static String s0718 = " "; - static String s0719 = " "; - - static String s0801 = " "; - static String s0802 = " "; - static String s0803 = " XXX "; - static String s0804 = " XXX "; - static String s0805 = " XXX "; - static String s0806 = " MMMMM "; - static String s0807 = " MMMMMMM "; - static String s0808 = " MMMMMMMMM "; - static String s0809 = " XXXMMMMMMMMMXXX "; - static String s0810 = " XXXMMMMMMMMMXXX "; - static String s0811 = " XXXMMMMMMMMMXXX "; - static String s0812 = " MMMMMMMMM "; - static String s0813 = " MMMMMMM "; - static String s0814 = " MMMMM "; - static String s0815 = " XXX "; - static String s0816 = " XXX "; - static String s0817 = " XXX "; - static String s0818 = " "; - static String s0819 = " "; - - static String s0901 = " "; - static String s0902 = " "; - static String s0903 = " XXX "; - static String s0904 = " XXX "; - static String s0905 = " MMMMM "; - static String s0906 = " MMMMMMM "; - static String s0907 = " MMMMMMMMM "; - static String s0908 = " MMMMPPPMMMM "; - static String s0909 = " XXMMMPPPPPMMMXX "; - static String s0910 = " XXMMMPPPPPMMMXX "; - static String s0911 = " XXMMMPPPPPMMMXX "; - static String s0912 = " MMMMPPPMMMM "; - static String s0913 = " MMMMMMMMM "; - static String s0914 = " MMMMMMM "; - static String s0915 = " MMMMM "; - static String s0916 = " XXX "; - static String s0917 = " XXX "; - static String s0918 = " "; - static String s0919 = " "; - - static String s1001 = " "; - static String s1002 = " "; - static String s1003 = " "; - static String s1004 = " XXX "; - static String s1005 = " MMMMMMM "; - static String s1006 = " MMMMMMMMM "; - static String s1007 = " MMMMPPPMMMM "; - static String s1008 = " MMMPPPPPMMM "; - static String s1009 = " XMMPPPPPPPMMX "; - static String s1010 = " XMMPPPPPPPMMX "; - static String s1011 = " XMMPPPPPPPMMX "; - static String s1012 = " MMMPPPPPMMM "; - static String s1013 = " MMMMPPPMMMM "; - static String s1014 = " MMMMMMMMM "; - static String s1015 = " MMMMMMM "; - static String s1016 = " XXX "; - static String s1017 = " "; - static String s1018 = " "; - static String s1019 = " "; - - static String s1101 = " "; - static String s1102 = " "; - static String s1103 = " "; - static String s1104 = " MMMMM "; - static String s1105 = " MMMMMMMMM "; - static String s1106 = " MMMMPPPMMMM "; - static String s1107 = " MMMPPPPPMMM "; - static String s1108 = " MMMPPPPPPPMMM "; - static String s1109 = " MMPPPMMMPPPMM "; - static String s1110 = " MMPPPMMMPPPMM "; - static String s1111 = " MMPPPMMMPPPMM "; - static String s1112 = " MMMPPPPPPPMMM "; - static String s1113 = " MMMPPPPPMMM "; - static String s1114 = " MMMMPPPMMMM "; - static String s1115 = " MMMMMMMMM "; - static String s1116 = " MMMMM "; - static String s1117 = " "; - static String s1118 = " "; - static String s1119 = " "; - - static String s1201 = " "; - static String s1202 = " "; - static String s1203 = " "; - static String s1204 = " MMMMM "; - static String s1205 = " MMMMMMMMM "; - static String s1206 = " MMMPPPPPMMM "; - static String s1207 = " MMPPPPPPPMM "; - static String s1208 = " MMPPPMMMPPPMM "; - static String s1209 = " MMPPMMMMMPPMM "; - static String s1210 = " MMPPMMCMMPPMM "; - static String s1211 = " MMPPMMMMMPPMM "; - static String s1212 = " MMPPPMMMPPPMM "; - static String s1213 = " MMPPPPPPPMM "; - static String s1214 = " MMMPPPPPMMM "; - static String s1215 = " MMMMMMMMM "; - static String s1216 = " MMMMM "; - static String s1217 = " "; - static String s1218 = " "; - static String s1219 = " "; - - static String s1301 = " "; - static String s1302 = " "; - static String s1303 = " "; - static String s1304 = " MMMMM "; - static String s1305 = " MMMMMMMMM "; - static String s1306 = " MMMPPPPPMMM "; - static String s1307 = " MMPPPPPPPMM "; - static String s1308 = " MMPPPMMMPPPMM "; - static String s1309 = " MMPPMMCMMPPMM "; - static String s1310 = " MMPPMC#CMPPMM "; - static String s1311 = " MMPPMMCMMPPMM "; - static String s1312 = " MMPPPMMMPPPMM "; - static String s1313 = " MMPPPPPPPMM "; - static String s1314 = " MMMPPPPPMMM "; - static String s1315 = " MMMMMMMMM "; - static String s1316 = " MMMMM "; - static String s1317 = " "; - static String s1318 = " "; - static String s1319 = " "; - - static String s1401 = " "; - static String s1402 = " "; - static String s1403 = " "; - static String s1404 = " MMMMM "; - static String s1405 = " MMMMMMMMM "; - static String s1406 = " MMMPPPPPMMM "; - static String s1407 = " MMPPPPPPPMM "; - static String s1408 = " MMPPPMMMPPPMM "; - static String s1409 = " MMPPMMMMMPPMM "; - static String s1410 = " MMPPMMCMMPPMM "; - static String s1411 = " MMPPMMMMMPPMM "; - static String s1412 = " MMPPPMMMPPPMM "; - static String s1413 = " MMPPPPPPPMM "; - static String s1414 = " MMMPPPPPMMM "; - static String s1415 = " MMMMMMMMM "; - static String s1416 = " MMMMM "; - static String s1417 = " "; - static String s1418 = " "; - static String s1419 = " "; - - static String s1501 = " "; - static String s1502 = " "; - static String s1503 = " "; - static String s1504 = " MMMMM "; - static String s1505 = " MMMMMMMMM "; - static String s1506 = " MMMMPPPMMMM "; - static String s1507 = " MMMPPPPPMMM "; - static String s1508 = " MMMPPPPPPPMMM "; - static String s1509 = " MMPPPMMMPPPMM "; - static String s1510 = " MMPPPMMMPPPMM "; - static String s1511 = " MMPPPMMMPPPMM "; - static String s1512 = " MMMPPPPPPPMMM "; - static String s1513 = " MMMPPPPPMMM "; - static String s1514 = " MMMMPPPMMMM "; - static String s1515 = " MMMMMMMMM "; - static String s1516 = " MMMMM "; - static String s1517 = " "; - static String s1518 = " "; - static String s1519 = " "; - - static String s1601 = " "; - static String s1602 = " "; - static String s1603 = " "; - static String s1604 = " "; - static String s1605 = " MMMMMMM "; - static String s1606 = " MMMMMMMMM "; - static String s1607 = " MMMMPPPMMMM "; - static String s1608 = " MMMPPPPPMMM "; - static String s1609 = " MMPPPPPPPMM "; - static String s1610 = " MMPPPPPPPMM "; - static String s1611 = " MMPPPPPPPMM "; - static String s1612 = " MMMPPPPPMMM "; - static String s1613 = " MMMMPPPMMMM "; - static String s1614 = " MMMMMMMMM "; - static String s1615 = " MMMMMMM "; - static String s1616 = " "; - static String s1617 = " "; - static String s1618 = " "; - static String s1619 = " "; - - static String s1701 = " "; - static String s1702 = " "; - static String s1703 = " "; - static String s1704 = " "; - static String s1705 = " MMMMM "; - static String s1706 = " MMMMMMM "; - static String s1707 = " MMMMMMMMM "; - static String s1708 = " MMMMPPPMMMM "; - static String s1709 = " MMMPPPPPMMM "; - static String s1710 = " MMMPPPPPMMM "; - static String s1711 = " MMMPPPPPMMM "; - static String s1712 = " MMMMPPPMMMM "; - static String s1713 = " MMMMMMMMM "; - static String s1714 = " MMMMMMM "; - static String s1715 = " MMMMM "; - static String s1716 = " "; - static String s1717 = " "; - static String s1718 = " "; - static String s1719 = " "; - - static String s1801 = " "; - static String s1802 = " "; - static String s1803 = " "; - static String s1804 = " "; - static String s1805 = " "; - static String s1806 = " MMMMM "; - static String s1807 = " MMMMMMM "; - static String s1808 = " MMMMMMMMM "; - static String s1809 = " MMMMMMMMM "; - static String s1810 = " MMMMMMMMM "; - static String s1811 = " MMMMMMMMM "; - static String s1812 = " MMMMMMMMM "; - static String s1813 = " MMMMMMM "; - static String s1814 = " MMMMM "; - static String s1815 = " "; - static String s1816 = " "; - static String s1817 = " "; - static String s1818 = " "; - static String s1819 = " "; - - static String s1901 = " "; - static String s1902 = " "; - static String s1903 = " "; - static String s1904 = " "; - static String s1905 = " "; - static String s1906 = " "; - static String s1907 = " "; - static String s1908 = " MMMMM "; - static String s1909 = " MMMMM "; - static String s1910 = " MMMMM "; - static String s1911 = " MMMMM "; - static String s1912 = " MMMMM "; - static String s1913 = " "; - static String s1914 = " "; - static String s1915 = " "; - static String s1916 = " "; - static String s1917 = " "; - static String s1918 = " "; - static String s1919 = " "; + public static String[][] fwatz = new String[][] { + { + " XXX ", + " XXX ", + " ", + " ", + " ", + " ", + " ", + " SSSSS ", + "XX SSSSS XX", + "XX SSSSS XX", + "XX SSSSS XX", + " SSSSS ", + " ", + " ", + " ", + " ", + " ", + " XXX ", + " XXX " + }, + { + " XHX ", + " XXX ", + " ", + " ", + " ", + " ", + " ", + " SSSSS ", + "XX STTTS XX", + "HX STTTS XH", + "XX STTTS XX", + " SSSSS ", + " ", + " ", + " ", + " ", + " ", + " XXX ", + " XHX " + }, + { + " XXX ", + " XXX ", + " ", + " ", + " ", + " ", + " ", + " SSSSS ", + "XX STTTS XX", + "XX STTTS XX", + "XX STTTS XX", + " SSSSS ", + " ", + " ", + " ", + " ", + " ", + " XXX ", + " XXX " + }, + { + " ", + " XXX ", + " XXX ", + " X ", + " X ", + " X ", + " X ", + " SSXSS ", + " XX STTTS XX ", + " XXXXXXXTTTXXXXXXX ", + " XX STTTS XX ", + " SSXSS ", + " X ", + " X ", + " X ", + " X ", + " XXX ", + " XXX ", + " " + }, + { + " ", + " XXX ", + " XXX ", + " ", + " ", + " ", + " ", + " SSSSS ", + " XX STTTS XX ", + " XX STTTS XX ", + " XX STTTS XX ", + " SSSSS ", + " ", + " ", + " ", + " ", + " XXX ", + " XXX ", + " " + }, + { + " ", + " XXX ", + " XXX ", + " ", + " ", + " ", + " ", + " SSSSS ", + " XX STTTS XX ", + " XX STTTS XX ", + " XX STTTS XX ", + " SSSSS ", + " ", + " ", + " ", + " ", + " XXX ", + " XXX ", + " " + }, + { + " ", + " ", + " XXX ", + " XXX ", + " ", + " ", + " ", + " MMMMM ", + " XX MMMMM XX ", + " XX MMMMM XX ", + " XX MMMMM XX ", + " MMMMM ", + " ", + " ", + " ", + " XXX ", + " XXX ", + " ", + " " + }, + { + " ", + " ", + " XXX ", + " XXX ", + " XXX ", + " MMMMM ", + " MMMMMMM ", + " MMMMMMMMM ", + " XXXMMMMMMMMMXXX ", + " XXXMMMMMMMMMXXX ", + " XXXMMMMMMMMMXXX ", + " MMMMMMMMM ", + " MMMMMMM ", + " MMMMM ", + " XXX ", + " XXX ", + " XXX ", + " ", + " " + }, + { + " ", + " ", + " XXX ", + " XXX ", + " MMMMM ", + " MMMMMMM ", + " MMMMMMMMM ", + " MMMMPPPMMMM ", + " XXMMMPPPPPMMMXX ", + " XXMMMPPPPPMMMXX ", + " XXMMMPPPPPMMMXX ", + " MMMMPPPMMMM ", + " MMMMMMMMM ", + " MMMMMMM ", + " MMMMM ", + " XXX ", + " XXX ", + " ", + " " + }, + { + " ", + " ", + " ", + " XXX ", + " MMMMMMM ", + " MMMMMMMMM ", + " MMMMPPPMMMM ", + " MMMPPPPPMMM ", + " XMMPPPPPPPMMX ", + " XMMPPPPPPPMMX ", + " XMMPPPPPPPMMX ", + " MMMPPPPPMMM ", + " MMMMPPPMMMM ", + " MMMMMMMMM ", + " MMMMMMM ", + " XXX ", + " ", + " ", + " " + }, + { + " ", + " ", + " ", + " MMMMM ", + " MMMMMMMMM ", + " MMMMPPPMMMM ", + " MMMPPPPPMMM ", + " MMMPPPPPPPMMM ", + " MMPPPMMMPPPMM ", + " MMPPPMMMPPPMM ", + " MMPPPMMMPPPMM ", + " MMMPPPPPPPMMM ", + " MMMPPPPPMMM ", + " MMMMPPPMMMM ", + " MMMMMMMMM ", + " MMMMM ", + " ", + " ", + " " + }, + { + " ", + " ", + " ", + " MMMMM ", + " MMMMMMMMM ", + " MMMPPPPPMMM ", + " MMPPPPPPPMM ", + " MMPPPMMMPPPMM ", + " MMPPMMMMMPPMM ", + " MMPPMMCMMPPMM ", + " MMPPMMMMMPPMM ", + " MMPPPMMMPPPMM ", + " MMPPPPPPPMM ", + " MMMPPPPPMMM ", + " MMMMMMMMM ", + " MMMMM ", + " ", + " ", + " " + }, + { + " ", + " ", + " ", + " MMMMM ", + " MMMMMMMMM ", + " MMMPPPPPMMM ", + " MMPPPPPPPMM ", + " MMPPPMMMPPPMM ", + " MMPPMMCMMPPMM ", + " MMPPMC#CMPPMM ", + " MMPPMMCMMPPMM ", + " MMPPPMMMPPPMM ", + " MMPPPPPPPMM ", + " MMMPPPPPMMM ", + " MMMMMMMMM ", + " MMMMM ", + " ", + " ", + " " + }, + { + " ", + " ", + " ", + " MMMMM ", + " MMMMMMMMM ", + " MMMPPPPPMMM ", + " MMPPPPPPPMM ", + " MMPPPMMMPPPMM ", + " MMPPMMMMMPPMM ", + " MMPPMMCMMPPMM ", + " MMPPMMMMMPPMM ", + " MMPPPMMMPPPMM ", + " MMPPPPPPPMM ", + " MMMPPPPPMMM ", + " MMMMMMMMM ", + " MMMMM ", + " ", + " ", + " " + }, + { + " ", + " ", + " ", + " MMMMM ", + " MMMMMMMMM ", + " MMMMPPPMMMM ", + " MMMPPPPPMMM ", + " MMMPPPPPPPMMM ", + " MMPPPMMMPPPMM ", + " MMPPPMMMPPPMM ", + " MMPPPMMMPPPMM ", + " MMMPPPPPPPMMM ", + " MMMPPPPPMMM ", + " MMMMPPPMMMM ", + " MMMMMMMMM ", + " MMMMM ", + " ", + " ", + " " + }, + { + " ", + " ", + " ", + " ", + " MMMMMMM ", + " MMMMMMMMM ", + " MMMMPPPMMMM ", + " MMMPPPPPMMM ", + " MMPPPPPPPMM ", + " MMPPPPPPPMM ", + " MMPPPPPPPMM ", + " MMMPPPPPMMM ", + " MMMMPPPMMMM ", + " MMMMMMMMM ", + " MMMMMMM ", + " ", + " ", + " ", + " " + }, + { + " ", + " ", + " ", + " ", + " MMMMM ", + " MMMMMMM ", + " MMMMMMMMM ", + " MMMMPPPMMMM ", + " MMMPPPPPMMM ", + " MMMPPPPPMMM ", + " MMMPPPPPMMM ", + " MMMMPPPMMMM ", + " MMMMMMMMM ", + " MMMMMMM ", + " MMMMM ", + " ", + " ", + " ", + " " + }, + { + " ", + " ", + " ", + " ", + " ", + " MMMMM ", + " MMMMMMM ", + " MMMMMMMMM ", + " MMMMMMMMM ", + " MMMMMMMMM ", + " MMMMMMMMM ", + " MMMMMMMMM ", + " MMMMMMM ", + " MMMMM ", + " ", + " ", + " ", + " ", + " " + }, + { + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " MMMMM ", + " MMMMM ", + " MMMMM ", + " MMMMM ", + " MMMMM ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + } + }; public void generateHull(World world, Random rand, int x, int y, int z) { x -= 9; z -= 9; - uniteStructure(); - for(int i = 0; i < 19; i++) { for(int j = 0; j < 19; j++) { for(int k = 0; k < 19; k++) { @@ -439,8 +457,6 @@ public class FWatz { y -= 12; z -= 9; - uniteStructure(); - boolean flag = true; for(int i = 0; i < 19; i++) { @@ -494,8 +510,6 @@ public class FWatz { y -= 12; z -= 9; - uniteStructure(); - for(int i = 0; i < 19; i++) { for(int j = 0; j < 19; j++) { for(int k = 0; k < 19; k++) { @@ -513,8 +527,6 @@ public class FWatz { y -= 12; z -= 9; - uniteStructure(); - for(int i = 0; i < 19; i++) { for(int j = 0; j < 19; j++) { for(int k = 0; k < 19; k++) { @@ -533,8 +545,6 @@ public class FWatz { y -= 12; z -= 9; - uniteStructure(); - boolean flag = false; for(int i = 0; i < 19; i++) { @@ -550,389 +560,5 @@ public class FWatz { return flag; } - - public static void uniteStructure() { - int x = 0; - fwatz[x][0] = s0101; - fwatz[x][1] = s0102; - fwatz[x][2] = s0103; - fwatz[x][3] = s0104; - fwatz[x][4] = s0105; - fwatz[x][5] = s0106; - fwatz[x][6] = s0107; - fwatz[x][7] = s0108; - fwatz[x][8] = s0109; - fwatz[x][9] = s0110; - fwatz[x][10] = s0111; - fwatz[x][11] = s0112; - fwatz[x][12] = s0113; - fwatz[x][13] = s0114; - fwatz[x][14] = s0115; - fwatz[x][15] = s0116; - fwatz[x][16] = s0117; - fwatz[x][17] = s0118; - fwatz[x][18] = s0119; - x++; - fwatz[x][0] = s0201; - fwatz[x][1] = s0202; - fwatz[x][2] = s0203; - fwatz[x][3] = s0204; - fwatz[x][4] = s0205; - fwatz[x][5] = s0206; - fwatz[x][6] = s0207; - fwatz[x][7] = s0208; - fwatz[x][8] = s0209; - fwatz[x][9] = s0210; - fwatz[x][10] = s0211; - fwatz[x][11] = s0212; - fwatz[x][12] = s0213; - fwatz[x][13] = s0214; - fwatz[x][14] = s0215; - fwatz[x][15] = s0216; - fwatz[x][16] = s0217; - fwatz[x][17] = s0218; - fwatz[x][18] = s0219; - x++; - fwatz[x][0] = s0301; - fwatz[x][1] = s0302; - fwatz[x][2] = s0303; - fwatz[x][3] = s0304; - fwatz[x][4] = s0305; - fwatz[x][5] = s0306; - fwatz[x][6] = s0307; - fwatz[x][7] = s0308; - fwatz[x][8] = s0309; - fwatz[x][9] = s0310; - fwatz[x][10] = s0311; - fwatz[x][11] = s0312; - fwatz[x][12] = s0313; - fwatz[x][13] = s0314; - fwatz[x][14] = s0315; - fwatz[x][15] = s0316; - fwatz[x][16] = s0317; - fwatz[x][17] = s0318; - fwatz[x][18] = s0319; - x++; - fwatz[x][0] = s0401; - fwatz[x][1] = s0402; - fwatz[x][2] = s0403; - fwatz[x][3] = s0404; - fwatz[x][4] = s0405; - fwatz[x][5] = s0406; - fwatz[x][6] = s0407; - fwatz[x][7] = s0408; - fwatz[x][8] = s0409; - fwatz[x][9] = s0410; - fwatz[x][10] = s0411; - fwatz[x][11] = s0412; - fwatz[x][12] = s0413; - fwatz[x][13] = s0414; - fwatz[x][14] = s0415; - fwatz[x][15] = s0416; - fwatz[x][16] = s0417; - fwatz[x][17] = s0418; - fwatz[x][18] = s0419; - x++; - fwatz[x][0] = s0501; - fwatz[x][1] = s0502; - fwatz[x][2] = s0503; - fwatz[x][3] = s0504; - fwatz[x][4] = s0505; - fwatz[x][5] = s0506; - fwatz[x][6] = s0507; - fwatz[x][7] = s0508; - fwatz[x][8] = s0509; - fwatz[x][9] = s0510; - fwatz[x][10] = s0511; - fwatz[x][11] = s0512; - fwatz[x][12] = s0513; - fwatz[x][13] = s0514; - fwatz[x][14] = s0515; - fwatz[x][15] = s0516; - fwatz[x][16] = s0517; - fwatz[x][17] = s0518; - fwatz[x][18] = s0519; - x++; - fwatz[x][0] = s0601; - fwatz[x][1] = s0602; - fwatz[x][2] = s0603; - fwatz[x][3] = s0604; - fwatz[x][4] = s0605; - fwatz[x][5] = s0606; - fwatz[x][6] = s0607; - fwatz[x][7] = s0608; - fwatz[x][8] = s0609; - fwatz[x][9] = s0610; - fwatz[x][10] = s0611; - fwatz[x][11] = s0612; - fwatz[x][12] = s0613; - fwatz[x][13] = s0614; - fwatz[x][14] = s0615; - fwatz[x][15] = s0616; - fwatz[x][16] = s0617; - fwatz[x][17] = s0618; - fwatz[x][18] = s0619; - x++; - fwatz[x][0] = s0701; - fwatz[x][1] = s0702; - fwatz[x][2] = s0703; - fwatz[x][3] = s0704; - fwatz[x][4] = s0705; - fwatz[x][5] = s0706; - fwatz[x][6] = s0707; - fwatz[x][7] = s0708; - fwatz[x][8] = s0709; - fwatz[x][9] = s0710; - fwatz[x][10] = s0711; - fwatz[x][11] = s0712; - fwatz[x][12] = s0713; - fwatz[x][13] = s0714; - fwatz[x][14] = s0715; - fwatz[x][15] = s0716; - fwatz[x][16] = s0717; - fwatz[x][17] = s0718; - fwatz[x][18] = s0719; - x++; - fwatz[x][0] = s0801; - fwatz[x][1] = s0802; - fwatz[x][2] = s0803; - fwatz[x][3] = s0804; - fwatz[x][4] = s0805; - fwatz[x][5] = s0806; - fwatz[x][6] = s0807; - fwatz[x][7] = s0808; - fwatz[x][8] = s0809; - fwatz[x][9] = s0810; - fwatz[x][10] = s0811; - fwatz[x][11] = s0812; - fwatz[x][12] = s0813; - fwatz[x][13] = s0814; - fwatz[x][14] = s0815; - fwatz[x][15] = s0816; - fwatz[x][16] = s0817; - fwatz[x][17] = s0818; - fwatz[x][18] = s0819; - x++; - fwatz[x][0] = s0901; - fwatz[x][1] = s0902; - fwatz[x][2] = s0903; - fwatz[x][3] = s0904; - fwatz[x][4] = s0905; - fwatz[x][5] = s0906; - fwatz[x][6] = s0907; - fwatz[x][7] = s0908; - fwatz[x][8] = s0909; - fwatz[x][9] = s0910; - fwatz[x][10] = s0911; - fwatz[x][11] = s0912; - fwatz[x][12] = s0913; - fwatz[x][13] = s0914; - fwatz[x][14] = s0915; - fwatz[x][15] = s0916; - fwatz[x][16] = s0917; - fwatz[x][17] = s0918; - fwatz[x][18] = s0919; - x++; - fwatz[x][0] = s1001; - fwatz[x][1] = s1002; - fwatz[x][2] = s1003; - fwatz[x][3] = s1004; - fwatz[x][4] = s1005; - fwatz[x][5] = s1006; - fwatz[x][6] = s1007; - fwatz[x][7] = s1008; - fwatz[x][8] = s1009; - fwatz[x][9] = s1010; - fwatz[x][10] = s1011; - fwatz[x][11] = s1012; - fwatz[x][12] = s1013; - fwatz[x][13] = s1014; - fwatz[x][14] = s1015; - fwatz[x][15] = s1016; - fwatz[x][16] = s1017; - fwatz[x][17] = s1018; - fwatz[x][18] = s1019; - x++; - fwatz[x][0] = s1101; - fwatz[x][1] = s1102; - fwatz[x][2] = s1103; - fwatz[x][3] = s1104; - fwatz[x][4] = s1105; - fwatz[x][5] = s1106; - fwatz[x][6] = s1107; - fwatz[x][7] = s1108; - fwatz[x][8] = s1109; - fwatz[x][9] = s1110; - fwatz[x][10] = s1111; - fwatz[x][11] = s1112; - fwatz[x][12] = s1113; - fwatz[x][13] = s1114; - fwatz[x][14] = s1115; - fwatz[x][15] = s1116; - fwatz[x][16] = s1117; - fwatz[x][17] = s1118; - fwatz[x][18] = s1119; - x++; - fwatz[x][0] = s1201; - fwatz[x][1] = s1202; - fwatz[x][2] = s1203; - fwatz[x][3] = s1204; - fwatz[x][4] = s1205; - fwatz[x][5] = s1206; - fwatz[x][6] = s1207; - fwatz[x][7] = s1208; - fwatz[x][8] = s1209; - fwatz[x][9] = s1210; - fwatz[x][10] = s1211; - fwatz[x][11] = s1212; - fwatz[x][12] = s1213; - fwatz[x][13] = s1214; - fwatz[x][14] = s1215; - fwatz[x][15] = s1216; - fwatz[x][16] = s1217; - fwatz[x][17] = s1218; - fwatz[x][18] = s1219; - x++; - fwatz[x][0] = s1301; - fwatz[x][1] = s1302; - fwatz[x][2] = s1303; - fwatz[x][3] = s1304; - fwatz[x][4] = s1305; - fwatz[x][5] = s1306; - fwatz[x][6] = s1307; - fwatz[x][7] = s1308; - fwatz[x][8] = s1309; - fwatz[x][9] = s1310; - fwatz[x][10] = s1311; - fwatz[x][11] = s1312; - fwatz[x][12] = s1313; - fwatz[x][13] = s1314; - fwatz[x][14] = s1315; - fwatz[x][15] = s1316; - fwatz[x][16] = s1317; - fwatz[x][17] = s1318; - fwatz[x][18] = s1319; - x++; - fwatz[x][0] = s1401; - fwatz[x][1] = s1402; - fwatz[x][2] = s1403; - fwatz[x][3] = s1404; - fwatz[x][4] = s1405; - fwatz[x][5] = s1406; - fwatz[x][6] = s1407; - fwatz[x][7] = s1408; - fwatz[x][8] = s1409; - fwatz[x][9] = s1410; - fwatz[x][10] = s1411; - fwatz[x][11] = s1412; - fwatz[x][12] = s1413; - fwatz[x][13] = s1414; - fwatz[x][14] = s1415; - fwatz[x][15] = s1416; - fwatz[x][16] = s1417; - fwatz[x][17] = s1418; - fwatz[x][18] = s1419; - x++; - fwatz[x][0] = s1501; - fwatz[x][1] = s1502; - fwatz[x][2] = s1503; - fwatz[x][3] = s1504; - fwatz[x][4] = s1505; - fwatz[x][5] = s1506; - fwatz[x][6] = s1507; - fwatz[x][7] = s1508; - fwatz[x][8] = s1509; - fwatz[x][9] = s1510; - fwatz[x][10] = s1511; - fwatz[x][11] = s1512; - fwatz[x][12] = s1513; - fwatz[x][13] = s1514; - fwatz[x][14] = s1515; - fwatz[x][15] = s1516; - fwatz[x][16] = s1517; - fwatz[x][17] = s1518; - fwatz[x][18] = s1519; - x++; - fwatz[x][0] = s1601; - fwatz[x][1] = s1602; - fwatz[x][2] = s1603; - fwatz[x][3] = s1604; - fwatz[x][4] = s1605; - fwatz[x][5] = s1606; - fwatz[x][6] = s1607; - fwatz[x][7] = s1608; - fwatz[x][8] = s1609; - fwatz[x][9] = s1610; - fwatz[x][10] = s1611; - fwatz[x][11] = s1612; - fwatz[x][12] = s1613; - fwatz[x][13] = s1614; - fwatz[x][14] = s1615; - fwatz[x][15] = s1616; - fwatz[x][16] = s1617; - fwatz[x][17] = s1618; - fwatz[x][18] = s1619; - x++; - fwatz[x][0] = s1701; - fwatz[x][1] = s1702; - fwatz[x][2] = s1703; - fwatz[x][3] = s1704; - fwatz[x][4] = s1705; - fwatz[x][5] = s1706; - fwatz[x][6] = s1707; - fwatz[x][7] = s1708; - fwatz[x][8] = s1709; - fwatz[x][9] = s1710; - fwatz[x][10] = s1711; - fwatz[x][11] = s1712; - fwatz[x][12] = s1713; - fwatz[x][13] = s1714; - fwatz[x][14] = s1715; - fwatz[x][15] = s1716; - fwatz[x][16] = s1717; - fwatz[x][17] = s1718; - fwatz[x][18] = s1719; - x++; - fwatz[x][0] = s1801; - fwatz[x][1] = s1802; - fwatz[x][2] = s1803; - fwatz[x][3] = s1804; - fwatz[x][4] = s1805; - fwatz[x][5] = s1806; - fwatz[x][6] = s1807; - fwatz[x][7] = s1808; - fwatz[x][8] = s1809; - fwatz[x][9] = s1810; - fwatz[x][10] = s1811; - fwatz[x][11] = s1812; - fwatz[x][12] = s1813; - fwatz[x][13] = s1814; - fwatz[x][14] = s1815; - fwatz[x][15] = s1816; - fwatz[x][16] = s1817; - fwatz[x][17] = s1818; - fwatz[x][18] = s1819; - x++; - fwatz[x][0] = s1901; - fwatz[x][1] = s1902; - fwatz[x][2] = s1903; - fwatz[x][3] = s1904; - fwatz[x][4] = s1905; - fwatz[x][5] = s1906; - fwatz[x][6] = s1907; - fwatz[x][7] = s1908; - fwatz[x][8] = s1909; - fwatz[x][9] = s1910; - fwatz[x][10] = s1911; - fwatz[x][11] = s1912; - fwatz[x][12] = s1913; - fwatz[x][13] = s1914; - fwatz[x][14] = s1915; - fwatz[x][15] = s1916; - fwatz[x][16] = s1917; - fwatz[x][17] = s1918; - fwatz[x][18] = s1919; - - } } \ No newline at end of file diff --git a/com/hbm/world/FactoryTitanium.java b/com/hbm/world/FactoryTitanium.java index d5c15fb8b..f74d7184b 100644 --- a/com/hbm/world/FactoryTitanium.java +++ b/com/hbm/world/FactoryTitanium.java @@ -15,6 +15,24 @@ import net.minecraft.world.gen.feature.WorldGenerator; public class FactoryTitanium extends WorldGenerator { + public static String[][] array = new String[][] { + { + "HHH", + "HHH", + "HHH" + }, + { + "HFH", + "FCF", + "HFH" + }, + { + "HHH", + "HHH", + "HHH" + } + }; + Block Block1 = ModBlocks.factory_titanium_hull; Block Block2 = ModBlocks.factory_titanium_conductor; Block Block3 = ModBlocks.factory_titanium_furnace; diff --git a/com/hbm/world/FusionReactor.java b/com/hbm/world/FusionReactor.java index 17f0d78ea..5f0c0a7be 100644 --- a/com/hbm/world/FusionReactor.java +++ b/com/hbm/world/FusionReactor.java @@ -14,6 +14,104 @@ import net.minecraft.world.gen.feature.WorldGenerator; public class FusionReactor extends WorldGenerator { + public static String[][] array = new String[][] { + { + " HHH ", + " HHH ", + " ", + " MMMMMMM ", + " MMMMMMMMM ", + " MMMMMMMMMMM ", + " MMM MMM ", + "HH MMM RRR MMM HH", + "HH MMM RCR MMM HH", + "HH MMM RRR MMM HH", + " MMM MMM ", + " MMMMMMMMMMM ", + " MMMMMMMMM ", + " MMMMMMM ", + " ", + " HHH ", + " HHH " + }, + { + " HHH ", + " HHH ", + " MMMMMMM ", + " MMMMMMMMM ", + " MMTTTTTTTMM ", + " MMTTMMMMMTTMM ", + " MMTMMMMMMMTMM ", + "HHMMTMM MMTMMHH", + "HHMMTMM C MMTMMHH", + "HHMMTMM MMTMMHH", + " MMTMMMMMMMTMM ", + " MMTTMMMMMTTMM ", + " MMTTTTTTTMM ", + " MMMMMMMMM ", + " MMMMMMM ", + " HHH ", + " HHH " + }, + { + " HAH ", + " HHH ", + " MMMMMMM ", + " MTTTTTTTM ", + " MT TM ", + " MT TTTTT TM ", + " MT TMMMMMT TM ", + "HHMT TM MT TMHH", + "AHMT TM # MT TMHA", + "HHMT TM MT TMHH", + " MT TMMMMMT TM ", + " MT TTTTT TM ", + " MT TM ", + " MTTTTTTTM ", + " MMMMMMM ", + " HHH ", + " HAH " + }, + { + " HHH ", + " HHH ", + " MMMMMMM ", + " MMMMMMMMM ", + " MMTTTTTTTMM ", + " MMTTMMMMMTTMM ", + " MMTMMMMMMMTMM ", + "HHMMTMM MMTMMHH", + "HHMMTMM C MMTMMHH", + "HHMMTMM MMTMMHH", + " MMTMMMMMMMTMM ", + " MMTTMMMMMTTMM ", + " MMTTTTTTTMM ", + " MMMMMMMMM ", + " MMMMMMM ", + " HHH ", + " HHH " + }, + { + " HHH ", + " HHH ", + " ", + " MMMMMMM ", + " MMMMMMMMM ", + " MMMMMMMMMMM ", + " MMM MMM ", + "HH MMM RRR MMM HH", + "HH MMM RCR MMM HH", + "HH MMM RRR MMM HH", + " MMM MMM ", + " MMMMMMMMMMM ", + " MMMMMMMMM ", + " MMMMMMM ", + " ", + " HHH ", + " HHH " + } + }; + Block Block1 = ModBlocks.fusion_heater; Block Block2 = ModBlocks.fusion_conductor; Block Block3 = ModBlocks.fusion_motor; diff --git a/com/hbm/world/NuclearReactor.java b/com/hbm/world/NuclearReactor.java index 115634b96..c8f18962a 100644 --- a/com/hbm/world/NuclearReactor.java +++ b/com/hbm/world/NuclearReactor.java @@ -14,6 +14,44 @@ import net.minecraft.world.gen.feature.WorldGenerator; public class NuclearReactor extends WorldGenerator { + public static String[][] array2 = new String[][] { + { + " ", + " BBB ", + " B B ", + " BBB ", + " " + }, + { + " BBB ", + "BRCRB", + "BCICB", + "BRCRB", + " BBB " + }, + { + " BAB ", + "BRCRB", + "AC#CA", + "BRCRB", + " BAB " + }, + { + " BBB ", + "BRCRB", + "BCICB", + "BRCRB", + " BBB " + }, + { + " ", + " BBB ", + " B B ", + " BBB ", + " " + } + }; + Block Block1 = ModBlocks.brick_concrete; Block Block2 = ModBlocks.reactor_element; Block Block3 = ModBlocks.reactor_control; diff --git a/com/hbm/world/Watz.java b/com/hbm/world/Watz.java index fb7c9b0e7..0a6a36e6a 100644 --- a/com/hbm/world/Watz.java +++ b/com/hbm/world/Watz.java @@ -14,6 +14,126 @@ import net.minecraft.world.gen.feature.WorldGenerator; public class Watz extends WorldGenerator { + public static String[][] array = new String[][] { + { + "SSSSSSS", + "SSSSSSS", + "SSSSSSS", + "SSSISSS", + "SSSSSSS", + "SSSSSSS", + "SSSSSSS" + }, + { + " CCC ", + " CWRWC ", + "CWRKRWC", + "CRKIKRC", + "CWRKRWC", + " CWRWC ", + " CCC " + }, + { + " CCC ", + " CWRWC ", + "CWRKRWC", + "CRKIKRC", + "CWRKRWC", + " CWRWC ", + " CCC " + }, + { + " CCC ", + " CWRWC ", + "CWRKRWC", + "CRKIKRC", + "CWRKRWC", + " CWRWC ", + " CCC " + }, + { + " CCC ", + " CWRWC ", + "CWRKRWC", + "CRKIKRC", + "CWRKRWC", + " CWRWC ", + " CCC " + }, + { + " CCC ", + " CWRWC ", + "CWRKRWC", + "CRKIKRC", + "CWRKRWC", + " CWRWC ", + " CCC " + }, + { + " CAC ", + " CWRWC ", + "CWRKRWC", + "ARK#KRA", + "CWRKRWC", + " CWRWC ", + " CAC " + }, + { + " CCC ", + " CWRWC ", + "CWRKRWC", + "CRKIKRC", + "CWRKRWC", + " CWRWC ", + " CCC " + }, + { + " CCC ", + " CWRWC ", + "CWRKRWC", + "CRKIKRC", + "CWRKRWC", + " CWRWC ", + " CCC " + }, + { + " CCC ", + " CWRWC ", + "CWRKRWC", + "CRKIKRC", + "CWRKRWC", + " CWRWC ", + " CCC " + }, + { + " CCC ", + " CWRWC ", + "CWRKRWC", + "CRKIKRC", + "CWRKRWC", + " CWRWC ", + " CCC " + }, + { + " CCC ", + " CWRWC ", + "CWRKRWC", + "CRKIKRC", + "CWRKRWC", + " CWRWC ", + " CCC " + }, + { + "SSSSSSS", + "SSSSSSS", + "SSSSSSS", + "SSSISSS", + "SSSSSSS", + "SSSSSSS", + "SSSSSSS" + } + }; + public boolean generate(World world, Random rand, int x, int y, int z) { int i = rand.nextInt(1);