From 6e9ebe5d527cbbfe90ab542a9d705b0d8c3b4fa8 Mon Sep 17 00:00:00 2001 From: HbmMods Date: Tue, 3 Apr 2018 16:36:24 +0200 Subject: [PATCH] Rotary engine, N2 functionality, gui info panel --- assets/hbm/lang/de_DE.lang | 6 + assets/hbm/lang/en_US.lang | 6 + assets/hbm/models/selenium_engine_body.obj | 362 +++++++++++++++++ assets/hbm/models/selenium_engine_piston.obj | 327 +++++++++++++++ assets/hbm/models/selenium_engine_rotor.obj | 108 +++++ .../blocks/fusion_center_side_alt.png | Bin 0 -> 335 bytes .../textures/blocks/fusion_center_top_alt.png | Bin 0 -> 571 bytes .../blocks/fusion_conductor_side_alt2.png | Bin 0 -> 333 bytes .../blocks/fusion_conductor_side_alt3.png | Bin 0 -> 348 bytes .../textures/blocks/fusion_core_side_alt.png | Bin 0 -> 713 bytes .../textures/blocks/fusion_motor_side_alt.png | Bin 0 -> 342 bytes .../textures/blocks/fusion_motor_top_alt.png | Bin 0 -> 287 bytes .../hbm/textures/blocks/machine_selenium.png | Bin 0 -> 257 bytes assets/hbm/textures/gui/gui_selenium.png | Bin 0 -> 3647 bytes assets/hbm/textures/gui/gui_utility.png | Bin 0 -> 733 bytes assets/hbm/textures/gui/n2Schematic.png | Bin 1834 -> 2239 bytes .../items/circuit_targeting_burnt.png | Bin 0 -> 360 bytes assets/hbm/textures/items/n2_charge.png | Bin 0 -> 389 bytes assets/hbm/textures/items/piston_selenium.png | Bin 0 -> 400 bytes com/hbm/blocks/ModBlocks.java | 5 + com/hbm/blocks/bomb/NukeMike.java | 18 +- com/hbm/blocks/bomb/NukeN2.java | 28 +- com/hbm/blocks/bomb/NukeSolinium.java | 2 +- com/hbm/blocks/machine/BlockReactor.java | 10 +- com/hbm/blocks/machine/FusionCore.java | 4 +- .../blocks/machine/MachineSeleniumEngine.java | 146 +++++++ .../entity/logic/EntityNukeExplosionMK4.java | 18 +- com/hbm/handler/GUIHandler.java | 38 ++ .../container/ContainerMachineSelenium.java | 94 +++++ .../inventory/container/ContainerNukeN2.java | 84 ++++ .../container/ContainerNukeSolinium.java | 4 +- com/hbm/inventory/gui/GUIMachineDiesel.java | 9 + com/hbm/inventory/gui/GUIMachineSelenium.java | 86 ++++ com/hbm/inventory/gui/GUINukeN2.java | 57 +++ com/hbm/inventory/gui/GuiInfoContainer.java | 27 ++ com/hbm/items/ModItems.java | 28 +- com/hbm/items/bomb/ItemN2.java | 18 + com/hbm/main/ClientProxy.java | 1 + com/hbm/main/MainRegistry.java | 13 + com/hbm/main/ResourceManager.java | 5 + com/hbm/packet/AuxGaugePacket.java | 6 + com/hbm/render/tileentity/RenderSelenium.java | 56 +++ .../tileentity/bomb/TileEntityCelPrime.java | 10 +- com/hbm/tileentity/bomb/TileEntityNukeN2.java | 27 +- .../TileEntityMachineSeleniumEngine.java | 375 ++++++++++++++++++ 45 files changed, 1916 insertions(+), 62 deletions(-) create mode 100644 assets/hbm/models/selenium_engine_body.obj create mode 100644 assets/hbm/models/selenium_engine_piston.obj create mode 100644 assets/hbm/models/selenium_engine_rotor.obj create mode 100644 assets/hbm/textures/blocks/fusion_center_side_alt.png create mode 100644 assets/hbm/textures/blocks/fusion_center_top_alt.png create mode 100644 assets/hbm/textures/blocks/fusion_conductor_side_alt2.png create mode 100644 assets/hbm/textures/blocks/fusion_conductor_side_alt3.png create mode 100644 assets/hbm/textures/blocks/fusion_core_side_alt.png create mode 100644 assets/hbm/textures/blocks/fusion_motor_side_alt.png create mode 100644 assets/hbm/textures/blocks/fusion_motor_top_alt.png create mode 100644 assets/hbm/textures/blocks/machine_selenium.png create mode 100644 assets/hbm/textures/gui/gui_selenium.png create mode 100644 assets/hbm/textures/gui/gui_utility.png create mode 100644 assets/hbm/textures/items/circuit_targeting_burnt.png create mode 100644 assets/hbm/textures/items/n2_charge.png create mode 100644 assets/hbm/textures/items/piston_selenium.png create mode 100644 com/hbm/blocks/machine/MachineSeleniumEngine.java create mode 100644 com/hbm/inventory/container/ContainerMachineSelenium.java create mode 100644 com/hbm/inventory/container/ContainerNukeN2.java create mode 100644 com/hbm/inventory/gui/GUIMachineSelenium.java create mode 100644 com/hbm/inventory/gui/GUINukeN2.java create mode 100644 com/hbm/items/bomb/ItemN2.java create mode 100644 com/hbm/render/tileentity/RenderSelenium.java create mode 100644 com/hbm/tileentity/machine/TileEntityMachineSeleniumEngine.java diff --git a/assets/hbm/lang/de_DE.lang b/assets/hbm/lang/de_DE.lang index bf322d439..9865c1666 100644 --- a/assets/hbm/lang/de_DE.lang +++ b/assets/hbm/lang/de_DE.lang @@ -180,6 +180,8 @@ item.solinium_igniter.name=SOL-Impulszünder item.solinium_propellant.name=SOL-Verdichtungsladung item.solinium_core.name=Semistabiler Soliniumkern +item.n2_charge.name=Große Sprengladung + container.nukeGadget=The Gadget container.nukeBoy=Little Boy container.nukeMan=Fat Man @@ -189,6 +191,7 @@ container.nukeFleija=F.L.E.I.J.A. container.nukePrototype=Der Prototyp container.nukeCustom=Anpassbare Bombe container.nukeSolinium=Die Blauspülung +container.nukeN2=N²-Mine container.bombMulti=Mehrzweckbombe @@ -201,6 +204,7 @@ tile.nuke_fleija.name=F.L.E.I.J.A. tile.nuke_prototype.name=Der Prototyp tile.nuke_custom.name=Anpassbare Bombe tile.nuke_solinium.name=Die Blauspülung +tile.nuke_n2.name=N²-Mine tile.turret_light.name=Leichtes MG-Geschütz tile.turret_heavy.name=Schweres MG-Geschütz @@ -316,6 +320,8 @@ tile.machine_siren.name=Sirene container.siren=Sirene tile.machine_radgen.name=Strahlenbetriebener Generator [WIP] container.radGen=Strahlenbetriebener Generator [WIP] +tile.machine_selenium.name=Hochleistungs-Sternmotor +container.machineSelenium=Hochleistungs-Sternmotor tile.broadcaster_pc.name=Korrupter Sender diff --git a/assets/hbm/lang/en_US.lang b/assets/hbm/lang/en_US.lang index d046d36e3..bdecc06ae 100644 --- a/assets/hbm/lang/en_US.lang +++ b/assets/hbm/lang/en_US.lang @@ -180,6 +180,8 @@ item.solinium_igniter.name=SOL Pulse Igniter item.solinium_propellant.name=SOL Compression Charge item.solinium_core.name=Semi-Stable Solinium Core +item.n2_charge.name=Large Explosive Charge + container.nukeGadget=The Gadget container.nukeBoy=Little Boy container.nukeMan=Fat Man @@ -189,6 +191,7 @@ container.nukeFleija=F.L.E.I.J.A. container.nukePrototype=The Prototype container.nukeCustom=Custom Nuke container.nukeSolinium=The Blue Rinse +container.nukeN2=N² Mine container.bombMulti=Multi Purpose Bomb @@ -201,6 +204,7 @@ tile.nuke_fleija.name=F.L.E.I.J.A. tile.nuke_prototype.name=The Prototype tile.nuke_custom.name=Custom Nuke tile.nuke_solinium.name=The Blue Rinse +tile.nuke_n2.name=N² Mine tile.bomb_multi.name=Multi Purpose Bomb tile.rejuvinator.name=Rejuvination Device @@ -316,6 +320,8 @@ tile.machine_siren.name=Siren container.siren=Siren tile.machine_radgen.name=Radiation-Powered Engine [WIP] container.radGen=Radiation-Powered Engine [WIP] +tile.machine_selenium.name=Radial Performance Engine +container.machineSelenium=Radial Performance Engine tile.broadcaster_pc.name=Corrupted Broadcaster diff --git a/assets/hbm/models/selenium_engine_body.obj b/assets/hbm/models/selenium_engine_body.obj new file mode 100644 index 000000000..d11247226 --- /dev/null +++ b/assets/hbm/models/selenium_engine_body.obj @@ -0,0 +1,362 @@ +# Blender v2.76 (sub 0) OBJ File: 'selenium_engine_body.blend' +# www.blender.org +o Cylinder_Cylinder.001 +v 0.000000 1.350000 -0.175000 +v 0.000000 1.350000 0.175000 +v 0.175000 1.303109 -0.175000 +v 0.175000 1.303109 0.175000 +v 0.303109 1.175000 -0.175000 +v 0.303109 1.175000 0.175000 +v 0.350000 1.000000 -0.175000 +v 0.350000 1.000000 0.175000 +v 0.303109 0.825000 -0.175000 +v 0.303109 0.825000 0.175000 +v 0.175000 0.696891 -0.175000 +v 0.175000 0.696891 0.175000 +v 0.000000 0.650000 -0.175000 +v 0.000000 0.650000 0.175000 +v -0.175000 0.696891 -0.175000 +v -0.175000 0.696891 0.175000 +v -0.303109 0.825000 -0.175000 +v -0.303109 0.825000 0.175000 +v -0.350000 1.000000 -0.175000 +v -0.350000 1.000000 0.175000 +v -0.303109 1.175000 -0.175000 +v -0.303109 1.175000 0.175000 +v -0.175000 1.303109 -0.175000 +v -0.175000 1.303109 0.175000 +v -0.000000 1.210000 -0.175000 +v 0.105000 1.181865 -0.175000 +v 0.105000 1.181865 0.175000 +v -0.000000 1.210000 0.175000 +v 0.181865 1.105000 -0.175000 +v 0.181865 1.105000 0.175000 +v 0.210000 1.000000 -0.175000 +v 0.210000 1.000000 0.175000 +v 0.181865 0.895000 -0.175000 +v 0.181865 0.895000 0.175000 +v 0.105000 0.818135 -0.175000 +v 0.105000 0.818135 0.175000 +v 0.000000 0.790000 -0.175000 +v 0.000000 0.790000 0.175000 +v -0.105000 0.818135 -0.175000 +v -0.105000 0.818135 0.175000 +v -0.181865 0.895000 -0.175000 +v -0.181865 0.895000 0.175000 +v -0.210000 1.000000 -0.175000 +v -0.210000 1.000000 0.175000 +v -0.181865 1.105000 -0.175000 +v -0.181865 1.105000 0.175000 +v -0.105000 1.181865 -0.175000 +v -0.105000 1.181865 0.175000 +v 0.105000 1.181865 0.225000 +v -0.000000 1.210000 0.225000 +v -0.105000 1.181865 0.225000 +v -0.181865 1.105000 0.225000 +v -0.210000 1.000000 0.225000 +v -0.181865 0.895000 0.225000 +v -0.105000 0.818135 0.225000 +v 0.000000 0.790000 0.225000 +v 0.105000 0.818135 0.225000 +v 0.181865 0.895000 0.225000 +v 0.210000 1.000000 0.225000 +v 0.181865 1.105000 0.225000 +v -0.000000 1.210000 -0.225000 +v 0.105000 1.181865 -0.225000 +v 0.181865 1.105000 -0.225000 +v 0.210000 1.000000 -0.225000 +v 0.181865 0.895000 -0.225000 +v 0.105000 0.818135 -0.225000 +v 0.000000 0.790000 -0.225000 +v -0.105000 0.818135 -0.225000 +v -0.181865 0.895000 -0.225000 +v -0.210000 1.000000 -0.225000 +v -0.181865 1.105000 -0.225000 +v -0.105000 1.181865 -0.225000 +v -0.375000 0.000000 0.237500 +v -0.250000 0.000000 0.237500 +v 0.250000 0.000000 0.237500 +v 0.375000 0.000000 0.237500 +v -0.375000 0.000000 0.175000 +v -0.250000 0.000000 0.175000 +v 0.250000 0.000000 0.175000 +v 0.375000 0.000000 0.175000 +v -0.375000 0.000000 -0.175000 +v -0.250000 0.000000 -0.175000 +v 0.250000 0.000000 -0.175000 +v 0.375000 0.000000 -0.175000 +v -0.375000 0.000000 -0.237500 +v -0.250000 0.000000 -0.237500 +v 0.250000 0.000000 -0.237500 +v 0.375000 0.000000 -0.237500 +v 0.335000 1.000000 -0.237500 +v 0.210000 1.000000 -0.237500 +v -0.210000 1.000000 -0.237500 +v -0.335000 1.000000 -0.237500 +v 0.210000 1.040000 -0.175000 +v 0.335000 1.040000 -0.175000 +v -0.335000 1.030000 -0.175000 +v -0.210000 1.030000 -0.175000 +v 0.335000 1.030000 0.175000 +v 0.210000 1.030000 0.175000 +v -0.210000 1.030000 0.175000 +v -0.335000 1.030000 0.175000 +v 0.210000 1.000000 0.237500 +v 0.335000 1.000000 0.237500 +v -0.335000 1.000000 0.237500 +v -0.210000 1.000000 0.237500 +v -0.156250 0.000000 -0.156250 +v -0.156250 0.000000 0.156250 +v 0.156250 0.000000 -0.156250 +v 0.156250 0.000000 0.156250 +v -0.078125 0.156250 -0.078125 +v -0.078125 0.156250 0.078125 +v 0.078125 0.156250 0.078125 +v 0.078125 0.156250 -0.078125 +v -0.078125 0.706250 -0.078125 +v -0.078125 0.706250 0.078125 +v 0.078125 0.706250 0.078125 +v 0.078125 0.706250 -0.078125 +vn 0.258800 0.965900 0.000000 +vn 0.707100 0.707100 0.000000 +vn 0.965900 0.258800 0.000000 +vn 0.965900 -0.258800 0.000000 +vn 0.707100 -0.707100 0.000000 +vn 0.258800 -0.965900 0.000000 +vn -0.258800 -0.965900 0.000000 +vn -0.707100 -0.707100 0.000000 +vn -0.965900 -0.258800 0.000000 +vn -0.965900 0.258800 0.000000 +vn 0.000000 0.000000 1.000000 +vn -0.258800 0.965900 0.000000 +vn -0.707100 0.707100 0.000000 +vn 0.000000 -0.000000 -1.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.999200 -0.040000 0.000000 +vn -0.999200 -0.040000 0.000000 +vn 0.999100 -0.038800 -0.018600 +vn -0.999100 0.038800 -0.018600 +vn -0.999200 0.040000 0.000000 +vn 0.999200 0.040000 0.000000 +vn 0.999100 0.038800 0.018600 +vn -0.999000 -0.038400 0.024600 +vn 0.000000 0.842300 -0.539100 +vn 0.000000 0.901500 -0.432700 +vn 0.000000 0.901500 0.432700 +vn 0.000000 0.447200 0.894400 +vn -0.894400 0.447200 0.000000 +vn 0.000000 0.447200 -0.894400 +vn 0.894400 0.447200 0.000000 +vn -1.000000 0.000000 0.000000 +vn 1.000000 0.000000 0.000000 +vn 0.999100 -0.038800 0.018600 +vn -0.999100 -0.038800 -0.018600 +vn -0.999100 0.038800 0.018600 +vn 0.999000 0.038400 -0.024600 +s off +f 2//1 4//1 3//1 +f 4//2 6//2 5//2 +f 6//3 8//3 7//3 +f 8//4 10//4 9//4 +f 10//5 12//5 11//5 +f 12//6 14//6 13//6 +f 14//7 16//7 15//7 +f 16//8 18//8 17//8 +f 18//9 20//9 19//9 +f 20//10 22//10 21//10 +f 16//11 14//11 38//11 +f 24//12 2//12 1//12 +f 22//13 24//13 23//13 +f 4//11 27//11 30//11 +f 24//11 48//11 28//11 +f 11//14 35//14 33//14 +f 21//14 45//14 43//14 +f 10//11 34//11 36//11 +f 20//11 44//11 46//11 +f 7//14 31//14 29//14 +f 15//14 17//14 41//14 +f 3//14 26//14 25//14 +f 6//11 30//11 32//11 +f 16//11 40//11 42//11 +f 2//11 28//11 27//11 +f 13//14 37//14 35//14 +f 21//14 23//14 47//14 +f 12//11 36//11 38//11 +f 22//11 46//11 48//11 +f 9//14 33//14 31//14 +f 17//14 19//14 43//14 +f 8//11 32//11 34//11 +f 18//11 42//11 44//11 +f 3//14 5//14 29//14 +f 15//14 39//14 37//14 +f 1//14 25//14 47//14 +f 52//11 58//11 60//11 +f 50//1 49//1 27//1 +f 51//12 50//12 28//12 +f 46//13 52//13 51//13 +f 44//10 53//10 52//10 +f 42//9 54//9 53//9 +f 40//8 55//8 54//8 +f 56//7 55//7 40//7 +f 57//6 56//6 38//6 +f 58//5 57//5 36//5 +f 59//4 58//4 34//4 +f 60//3 59//3 32//3 +f 49//2 60//2 30//2 +f 66//14 68//14 72//14 +f 62//1 61//1 25//1 +f 63//2 62//2 26//2 +f 64//3 63//3 29//3 +f 65//4 64//4 31//4 +f 66//5 65//5 33//5 +f 67//6 66//6 35//6 +f 68//7 67//7 37//7 +f 69//8 68//8 39//8 +f 43//9 70//9 69//9 +f 45//10 71//10 70//10 +f 47//13 72//13 71//13 +f 61//12 72//12 47//12 +f 77//15 78//15 74//15 +f 79//15 80//15 76//15 +f 85//15 86//15 82//15 +f 87//15 88//15 84//15 +f 78//14 77//14 100//14 +f 82//16 86//16 91//16 +f 79//17 75//17 101//17 +f 78//18 99//18 104//18 +f 82//11 96//11 95//11 +f 74//11 104//11 103//11 +f 81//19 95//19 92//19 +f 77//20 73//20 103//20 +f 87//14 90//14 89//14 +f 79//14 98//14 97//14 +f 84//21 88//21 89//21 +f 80//22 97//22 102//22 +f 83//11 84//11 94//11 +f 86//14 85//14 92//14 +f 75//11 76//11 102//11 +f 83//23 93//23 90//23 +f 94//24 89//24 90//24 +f 96//25 91//25 92//25 +f 102//26 97//26 98//26 +f 104//26 99//26 100//26 +f 106//15 105//15 107//15 +f 111//11 115//11 114//11 +f 108//27 111//27 110//27 +f 106//28 110//28 109//28 +f 105//29 109//29 112//29 +f 107//30 112//30 111//30 +f 110//31 114//31 113//31 +f 109//14 113//14 116//14 +f 112//32 116//32 115//32 +f 1//1 2//1 3//1 +f 3//2 4//2 5//2 +f 5//3 6//3 7//3 +f 7//4 8//4 9//4 +f 9//5 10//5 11//5 +f 11//6 12//6 13//6 +f 13//7 14//7 15//7 +f 15//8 16//8 17//8 +f 17//9 18//9 19//9 +f 19//10 20//10 21//10 +f 40//11 16//11 38//11 +f 23//12 24//12 1//12 +f 21//13 22//13 23//13 +f 6//11 4//11 30//11 +f 2//11 24//11 28//11 +f 9//14 11//14 33//14 +f 19//14 21//14 43//14 +f 12//11 10//11 36//11 +f 22//11 20//11 46//11 +f 5//14 7//14 29//14 +f 39//14 15//14 41//14 +f 1//14 3//14 25//14 +f 8//11 6//11 32//11 +f 18//11 16//11 42//11 +f 4//11 2//11 27//11 +f 11//14 13//14 35//14 +f 45//14 21//14 47//14 +f 14//11 12//11 38//11 +f 24//11 22//11 48//11 +f 7//14 9//14 31//14 +f 41//14 17//14 43//14 +f 10//11 8//11 34//11 +f 20//11 18//11 44//11 +f 26//14 3//14 29//14 +f 13//14 15//14 37//14 +f 23//14 1//14 47//14 +f 60//11 49//11 50//11 +f 50//11 51//11 60//11 +f 52//11 53//11 54//11 +f 54//11 55//11 52//11 +f 56//11 57//11 58//11 +f 58//11 59//11 60//11 +f 60//11 51//11 52//11 +f 52//11 55//11 56//11 +f 56//11 58//11 52//11 +f 28//1 50//1 27//1 +f 48//12 51//12 28//12 +f 48//13 46//13 51//13 +f 46//10 44//10 52//10 +f 44//9 42//9 53//9 +f 42//8 40//8 54//8 +f 38//7 56//7 40//7 +f 36//6 57//6 38//6 +f 34//5 58//5 36//5 +f 32//4 59//4 34//4 +f 30//3 60//3 32//3 +f 27//2 49//2 30//2 +f 72//14 61//14 62//14 +f 62//14 63//14 64//14 +f 64//14 65//14 66//14 +f 66//14 67//14 68//14 +f 68//14 69//14 70//14 +f 70//14 71//14 72//14 +f 72//14 62//14 64//14 +f 64//14 66//14 72//14 +f 68//14 70//14 72//14 +f 26//1 62//1 25//1 +f 29//2 63//2 26//2 +f 31//3 64//3 29//3 +f 33//4 65//4 31//4 +f 35//5 66//5 33//5 +f 37//6 67//6 35//6 +f 39//7 68//7 37//7 +f 41//8 69//8 39//8 +f 41//9 43//9 69//9 +f 43//10 45//10 70//10 +f 45//13 47//13 71//13 +f 25//12 61//12 47//12 +f 73//15 77//15 74//15 +f 75//15 79//15 76//15 +f 81//15 85//15 82//15 +f 83//15 87//15 84//15 +f 99//14 78//14 100//14 +f 96//33 82//33 91//33 +f 98//34 79//34 101//34 +f 74//16 78//16 104//16 +f 81//11 82//11 95//11 +f 73//11 74//11 103//11 +f 85//20 81//20 92//20 +f 100//35 77//35 103//35 +f 88//14 87//14 89//14 +f 80//14 79//14 97//14 +f 94//36 84//36 89//36 +f 76//21 80//21 102//21 +f 93//11 83//11 94//11 +f 91//14 86//14 92//14 +f 101//11 75//11 102//11 +f 87//17 83//17 90//17 +f 93//24 94//24 90//24 +f 95//25 96//25 92//25 +f 101//26 102//26 98//26 +f 103//26 104//26 100//26 +f 108//15 106//15 107//15 +f 110//11 111//11 114//11 +f 106//27 108//27 110//27 +f 105//28 106//28 109//28 +f 107//29 105//29 112//29 +f 108//30 107//30 111//30 +f 109//31 110//31 113//31 +f 112//14 109//14 116//14 +f 111//32 112//32 115//32 diff --git a/assets/hbm/models/selenium_engine_piston.obj b/assets/hbm/models/selenium_engine_piston.obj new file mode 100644 index 000000000..3a1176bbe --- /dev/null +++ b/assets/hbm/models/selenium_engine_piston.obj @@ -0,0 +1,327 @@ +# Blender v2.76 (sub 0) OBJ File: 'selenium_engine_piston.blend' +# www.blender.org +o Cube_Cube.001 +v 0.088388 0.650000 0.088388 +v 0.088388 0.250000 0.088388 +v 0.125000 0.650000 0.000000 +v 0.125000 0.250000 0.000000 +v 0.088388 0.650000 -0.088388 +v 0.088388 0.250000 -0.088388 +v -0.000000 0.650000 -0.125000 +v -0.000000 0.250000 -0.125000 +v -0.088389 0.650000 -0.088388 +v -0.088388 0.250000 -0.088388 +v -0.125000 0.650000 -0.000000 +v -0.125000 0.250000 -0.000000 +v -0.088389 0.650000 0.088388 +v -0.088388 0.250000 0.088388 +v -0.000000 0.650000 0.125000 +v -0.000000 0.250000 0.125000 +v -0.000000 0.650000 0.156250 +v -0.000000 0.775000 0.156250 +v -0.110486 0.650000 0.110485 +v -0.110486 0.775000 0.110485 +v -0.156250 0.650000 -0.000000 +v -0.156250 0.775000 -0.000000 +v -0.110486 0.650000 -0.110485 +v -0.110486 0.775000 -0.110485 +v -0.000000 0.650000 -0.156250 +v -0.000000 0.775000 -0.156250 +v 0.110485 0.650000 -0.110485 +v 0.110485 0.775000 -0.110485 +v 0.156250 0.650000 0.000000 +v 0.156250 0.775000 0.000000 +v 0.110485 0.650000 0.110485 +v 0.110485 0.775000 0.110485 +v 0.200000 0.750000 0.050000 +v 0.135000 0.750000 -0.050000 +v 0.200000 0.750000 -0.050000 +v 0.135000 0.750000 0.050000 +v 0.235000 0.715000 0.050000 +v 0.235000 0.715000 -0.050000 +v 0.235000 0.615000 0.050000 +v 0.235000 0.615000 -0.050000 +v 0.160000 0.465000 0.050000 +v 0.160000 0.465000 -0.050000 +v 0.160000 0.265000 0.050000 +v 0.160000 0.265000 -0.050000 +v -0.125000 0.300000 0.107322 +v -0.125000 0.650000 0.107322 +v -0.107322 0.300000 0.125000 +v -0.107323 0.650000 0.125000 +v -0.142678 0.300000 0.125000 +v -0.142678 0.650000 0.125000 +v -0.125000 0.300000 0.142678 +v -0.125000 0.650000 0.142678 +v -0.125000 0.650000 0.098483 +v -0.098484 0.650000 0.125000 +v -0.151517 0.650000 0.125000 +v -0.125000 0.650000 0.151516 +v -0.110000 0.750000 0.083483 +v -0.083484 0.750000 0.110000 +v -0.110000 0.750000 0.136516 +v -0.136517 0.750000 0.110000 +v 0.125000 0.300000 0.107322 +v 0.125000 0.650000 0.107322 +v 0.142678 0.300000 0.125000 +v 0.142677 0.650000 0.125000 +v 0.107322 0.300000 0.125000 +v 0.107322 0.650000 0.125000 +v 0.125000 0.300000 0.142678 +v 0.125000 0.650000 0.142678 +v 0.125000 0.650000 0.098484 +v 0.151516 0.650000 0.125000 +v 0.098483 0.650000 0.125000 +v 0.125000 0.650000 0.151517 +v 0.110000 0.750000 0.083484 +v 0.136516 0.750000 0.110000 +v 0.110000 0.750000 0.136517 +v 0.083483 0.750000 0.110000 +v 0.125000 0.300000 -0.142678 +v 0.125000 0.650000 -0.142678 +v 0.142678 0.300000 -0.125000 +v 0.142678 0.650000 -0.125000 +v 0.107322 0.300000 -0.125000 +v 0.107322 0.650000 -0.125000 +v 0.125000 0.300000 -0.107322 +v 0.125000 0.650000 -0.107322 +v 0.125000 0.650000 -0.151516 +v 0.151516 0.650000 -0.125000 +v 0.098483 0.650000 -0.125000 +v 0.125000 0.650000 -0.098483 +v 0.110000 0.750000 -0.136516 +v 0.136516 0.750000 -0.110000 +v 0.110000 0.750000 -0.083483 +v 0.083483 0.750000 -0.110000 +v -0.125000 0.300000 -0.142678 +v -0.125000 0.650000 -0.142678 +v -0.107322 0.300000 -0.125000 +v -0.107322 0.650000 -0.125000 +v -0.142678 0.300000 -0.125000 +v -0.142678 0.650000 -0.125000 +v -0.125000 0.300000 -0.107322 +v -0.125000 0.650000 -0.107322 +v -0.125000 0.650000 -0.151517 +v -0.098484 0.650000 -0.125000 +v -0.151517 0.650000 -0.125000 +v -0.125000 0.650000 -0.098484 +v -0.110000 0.750000 -0.136517 +v -0.083484 0.750000 -0.110000 +v -0.110000 0.750000 -0.083484 +v -0.136517 0.750000 -0.110000 +v -0.100000 0.200000 -0.075000 +v -0.100000 0.712500 -0.075000 +v -0.100000 0.200000 0.075000 +v -0.100000 0.712500 0.075000 +v -0.200000 0.200000 -0.075000 +v -0.200000 0.612500 -0.075000 +v -0.200000 0.200000 0.075000 +v -0.200000 0.612500 0.075000 +vn 0.382700 0.000000 -0.923900 +vn -0.923900 -0.000000 -0.382700 +vn 0.923900 0.000000 0.382700 +vn 0.382700 0.000000 0.923900 +vn -0.382700 -0.000000 -0.923900 +vn -0.923900 -0.000000 0.382700 +vn 0.923900 0.000000 -0.382700 +vn -0.382700 -0.000000 0.923900 +vn -0.000000 1.000000 -0.000000 +vn 0.000000 -1.000000 -0.000000 +vn 0.707100 0.707100 0.000000 +vn 1.000000 0.000000 0.000000 +vn 0.894400 -0.447200 0.000000 +vn 0.707100 0.000000 -0.707100 +vn 0.707100 0.000000 0.707100 +vn -0.707100 -0.000000 0.707100 +vn -0.707100 -0.000000 -0.707100 +vn -0.691700 0.207500 0.691700 +vn 0.691700 -0.207500 -0.691700 +vn -0.691700 -0.207500 -0.691700 +vn 0.691700 0.207500 0.691700 +vn -0.691700 -0.207500 0.691700 +vn 0.691700 0.207500 -0.691700 +vn -0.691700 0.207500 -0.691700 +vn 0.691700 -0.207500 0.691700 +vn -0.000000 -0.000000 1.000000 +vn -1.000000 -0.000000 -0.000000 +vn 0.000000 0.000000 -1.000000 +vn -0.707100 0.707100 -0.000000 +s off +f 7//1 5//1 6//1 +f 11//2 9//2 10//2 +f 3//3 1//3 2//3 +f 1//4 15//4 16//4 +f 9//5 7//5 8//5 +f 13//6 11//6 12//6 +f 5//7 3//7 4//7 +f 15//8 13//8 14//8 +f 18//8 20//8 19//8 +f 20//6 22//6 21//6 +f 22//2 24//2 23//2 +f 24//5 26//5 25//5 +f 26//1 28//1 27//1 +f 28//7 30//7 29//7 +f 30//9 24//9 22//9 +f 32//4 18//4 17//4 +f 30//3 32//3 31//3 +f 3//10 5//10 27//10 +f 3//10 29//10 31//10 +f 15//10 1//10 31//10 +f 15//10 17//10 19//10 +f 11//10 13//10 19//10 +f 11//10 21//10 23//10 +f 7//10 9//10 23//10 +f 7//10 25//10 27//10 +f 35//9 34//9 36//9 +f 33//11 37//11 38//11 +f 39//12 40//12 38//12 +f 41//13 42//13 40//13 +f 43//12 44//12 42//12 +f 48//14 47//14 45//14 +f 52//15 51//15 47//15 +f 50//16 49//16 51//16 +f 46//17 45//17 49//17 +f 46//10 53//10 54//10 +f 46//10 50//10 55//10 +f 48//10 54//10 56//10 +f 52//10 56//10 55//10 +f 53//17 55//17 60//17 +f 60//9 59//9 58//9 +f 54//15 58//15 59//15 +f 56//18 59//18 60//18 +f 54//19 53//19 57//19 +f 64//14 63//14 61//14 +f 68//15 67//15 63//15 +f 66//16 65//16 67//16 +f 62//17 61//17 65//17 +f 62//10 69//10 70//10 +f 66//10 71//10 69//10 +f 64//10 70//10 72//10 +f 68//10 72//10 71//10 +f 69//20 71//20 76//20 +f 76//9 75//9 74//9 +f 70//21 74//21 75//21 +f 71//16 72//16 75//16 +f 69//14 73//14 74//14 +f 80//14 79//14 77//14 +f 84//15 83//15 79//15 +f 82//16 81//16 83//16 +f 78//17 77//17 81//17 +f 78//10 85//10 86//10 +f 78//10 82//10 87//10 +f 84//10 80//10 86//10 +f 84//10 88//10 87//10 +f 87//17 92//17 89//17 +f 89//9 92//9 91//9 +f 88//15 86//15 90//15 +f 88//22 91//22 92//22 +f 86//23 85//23 89//23 +f 96//14 95//14 93//14 +f 100//15 99//15 95//15 +f 98//16 97//16 99//16 +f 94//17 93//17 97//17 +f 96//10 94//10 101//10 +f 94//10 98//10 103//10 +f 96//10 102//10 104//10 +f 98//10 100//10 104//10 +f 103//24 108//24 105//24 +f 108//9 107//9 106//9 +f 102//25 106//25 107//25 +f 104//16 107//16 108//16 +f 102//14 101//14 105//14 +f 112//12 111//12 109//12 +f 116//26 115//26 111//26 +f 114//27 113//27 115//27 +f 114//28 110//28 109//28 +f 116//29 112//29 110//29 +f 8//1 7//1 6//1 +f 12//2 11//2 10//2 +f 4//3 3//3 2//3 +f 2//4 1//4 16//4 +f 10//5 9//5 8//5 +f 14//6 13//6 12//6 +f 6//7 5//7 4//7 +f 16//8 15//8 14//8 +f 17//8 18//8 19//8 +f 19//6 20//6 21//6 +f 21//2 22//2 23//2 +f 23//5 24//5 25//5 +f 25//1 26//1 27//1 +f 27//7 28//7 29//7 +f 22//9 20//9 30//9 +f 18//9 32//9 30//9 +f 30//9 28//9 26//9 +f 26//9 24//9 30//9 +f 20//9 18//9 30//9 +f 31//4 32//4 17//4 +f 29//3 30//3 31//3 +f 29//10 3//10 27//10 +f 1//10 3//10 31//10 +f 17//10 15//10 31//10 +f 13//10 15//10 19//10 +f 21//10 11//10 19//10 +f 9//10 11//10 23//10 +f 25//10 7//10 23//10 +f 5//10 7//10 27//10 +f 33//9 35//9 36//9 +f 35//11 33//11 38//11 +f 37//12 39//12 38//12 +f 39//13 41//13 40//13 +f 41//12 43//12 42//12 +f 46//14 48//14 45//14 +f 48//15 52//15 47//15 +f 52//16 50//16 51//16 +f 50//17 46//17 49//17 +f 48//10 46//10 54//10 +f 53//10 46//10 55//10 +f 52//10 48//10 56//10 +f 50//10 52//10 55//10 +f 57//17 53//17 60//17 +f 57//9 60//9 58//9 +f 56//15 54//15 59//15 +f 55//18 56//18 60//18 +f 58//19 54//19 57//19 +f 62//14 64//14 61//14 +f 64//15 68//15 63//15 +f 68//16 66//16 67//16 +f 66//17 62//17 65//17 +f 64//10 62//10 70//10 +f 62//10 66//10 69//10 +f 68//10 64//10 72//10 +f 66//10 68//10 71//10 +f 73//20 69//20 76//20 +f 73//9 76//9 74//9 +f 72//21 70//21 75//21 +f 76//16 71//16 75//16 +f 70//14 69//14 74//14 +f 78//14 80//14 77//14 +f 80//15 84//15 79//15 +f 84//16 82//16 83//16 +f 82//17 78//17 81//17 +f 80//10 78//10 86//10 +f 85//10 78//10 87//10 +f 88//10 84//10 86//10 +f 82//10 84//10 87//10 +f 85//17 87//17 89//17 +f 90//9 89//9 91//9 +f 91//15 88//15 90//15 +f 87//22 88//22 92//22 +f 90//23 86//23 89//23 +f 94//14 96//14 93//14 +f 96//15 100//15 95//15 +f 100//16 98//16 99//16 +f 98//17 94//17 97//17 +f 102//10 96//10 101//10 +f 101//10 94//10 103//10 +f 100//10 96//10 104//10 +f 103//10 98//10 104//10 +f 101//24 103//24 105//24 +f 105//9 108//9 106//9 +f 104//25 102//25 107//25 +f 103//16 104//16 108//16 +f 106//14 102//14 105//14 +f 110//12 112//12 109//12 +f 112//26 116//26 111//26 +f 116//27 114//27 115//27 +f 113//28 114//28 109//28 +f 114//29 116//29 110//29 diff --git a/assets/hbm/models/selenium_engine_rotor.obj b/assets/hbm/models/selenium_engine_rotor.obj new file mode 100644 index 000000000..c46d7a29b --- /dev/null +++ b/assets/hbm/models/selenium_engine_rotor.obj @@ -0,0 +1,108 @@ +# Blender v2.76 (sub 0) OBJ File: 'selenium_engine_rotor.blend' +# www.blender.org +o Cylinder.001_Cylinder.002 +v 0.000000 0.050000 -0.262500 +v 0.000000 0.050000 0.262500 +v -0.035355 -0.035355 -0.262500 +v -0.035355 -0.035355 0.262500 +v -0.050000 -0.000000 -0.262500 +v -0.050000 0.000000 0.262500 +v -0.035355 0.035355 -0.262500 +v -0.035355 0.035355 0.262500 +v 0.000000 0.150000 -0.262500 +v 0.000000 0.150000 0.262500 +v -0.106066 -0.106066 -0.262500 +v -0.106066 -0.106066 0.262500 +v -0.150000 -0.000000 -0.262500 +v -0.150000 0.000000 0.262500 +v -0.106066 0.106066 -0.262500 +v -0.106066 0.106066 0.262500 +v 0.035355 0.035355 0.325000 +v 0.000000 0.050000 0.325000 +v -0.035355 0.035355 0.325000 +v -0.050000 0.000000 0.325000 +v -0.035355 -0.035355 0.325000 +v -0.000000 -0.050000 0.325000 +v 0.035355 -0.035355 0.325000 +v 0.050000 0.000000 0.325000 +v 0.000000 0.050000 -0.325000 +v 0.035355 0.035355 -0.325000 +v 0.050000 -0.000000 -0.325000 +v 0.035355 -0.035355 -0.325000 +v -0.000000 -0.050000 -0.325000 +v -0.035355 -0.035355 -0.325000 +v -0.050000 -0.000000 -0.325000 +v -0.035355 0.035355 -0.325000 +vn 0.707100 -0.707100 0.000000 +vn -0.923900 -0.382700 0.000000 +vn -0.382700 0.923900 -0.000000 +vn -0.923900 0.382700 -0.000000 +vn 0.000000 0.000000 1.000000 +vn 1.000000 0.000000 0.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.382700 0.923900 -0.000000 +vn 0.923900 0.382700 -0.000000 +vn 0.923900 -0.382700 0.000000 +vn 0.382700 -0.923900 0.000000 +vn -0.382700 -0.923900 0.000000 +s off +f 3//1 4//1 12//1 +f 12//2 14//2 13//2 +f 16//3 10//3 9//3 +f 14//4 16//4 15//4 +f 6//5 14//5 12//5 +f 8//5 16//5 14//5 +f 1//6 9//6 10//6 +f 2//5 10//5 16//5 +f 7//7 15//7 9//7 +f 3//7 11//7 13//7 +f 5//7 13//7 15//7 +f 20//5 22//5 18//5 +f 8//3 19//3 18//3 +f 20//4 19//4 8//4 +f 21//2 20//2 6//2 +f 29//7 30//7 32//7 +f 2//8 26//8 1//8 +f 31//2 30//2 3//2 +f 32//4 31//4 5//4 +f 25//3 32//3 7//3 +f 24//9 27//9 26//9 +f 23//10 28//10 27//10 +f 22//11 29//11 28//11 +f 29//12 22//12 4//12 +f 11//1 3//1 12//1 +f 11//2 12//2 13//2 +f 15//3 16//3 9//3 +f 13//4 14//4 15//4 +f 4//5 6//5 12//5 +f 6//5 8//5 14//5 +f 2//6 1//6 10//6 +f 8//5 2//5 16//5 +f 1//7 7//7 9//7 +f 5//7 3//7 13//7 +f 7//7 5//7 15//7 +f 24//5 17//5 18//5 +f 18//5 19//5 20//5 +f 20//5 21//5 22//5 +f 22//5 23//5 24//5 +f 24//5 18//5 22//5 +f 2//3 8//3 18//3 +f 6//4 20//4 8//4 +f 4//2 21//2 6//2 +f 32//7 25//7 28//7 +f 26//7 27//7 28//7 +f 28//7 29//7 32//7 +f 30//7 31//7 32//7 +f 25//7 26//7 28//7 +f 25//8 1//8 26//8 +f 2//8 18//8 17//8 +f 17//8 26//8 2//8 +f 5//2 31//2 3//2 +f 7//4 32//4 5//4 +f 1//3 25//3 7//3 +f 17//9 24//9 26//9 +f 24//10 23//10 27//10 +f 23//11 22//11 28//11 +f 4//12 3//12 29//12 +f 30//12 29//12 3//12 +f 22//12 21//12 4//12 diff --git a/assets/hbm/textures/blocks/fusion_center_side_alt.png b/assets/hbm/textures/blocks/fusion_center_side_alt.png new file mode 100644 index 0000000000000000000000000000000000000000..04a1bd2ab3e413fdc922d0901817525522185445 GIT binary patch literal 335 zcmV-V0kHmwP)*;yPJkM`s z9ur>znx?sZ$k)gLS0E8VhGBq+Ktxi5yTi;&bqkW2K~+!T z$>C;(bzT1u4^P)eYMos?_m#EFlE`XF2DvAq4L3?hp~Q)&Rs9DWzbH0U)JB zDFvXN_1-F_@ZKXLIOhP^Znv!0Ypk^xW0*P+6#%U@HO^XVndh0l?@>yz-|rcQ zfn`}*#$gy3$B}UyIh{_Vlt?Kt3u5F!j z=JoZJ5CS4{0|+5-e}B)iEToipd3j+RNBX{}TAXucnkLTYGt07|l)_p|j1dd8S*Wxw zmkU~Jj4^1fi7}E=YIC5q{%9`e9NznusZy<ciANfSfpk8fad!aRol?rfgnLSt%Z0x00UFDakVMY8adbQ$n-=(dMS9=s`)#AI zP1489G7j#btL*g3T4}f2VP@o<$vKl!!pxAwS!PDtwwPIEOY`}h#bNgqI5d literal 0 HcmV?d00001 diff --git a/assets/hbm/textures/blocks/fusion_core_side_alt.png b/assets/hbm/textures/blocks/fusion_core_side_alt.png new file mode 100644 index 0000000000000000000000000000000000000000..44e0b99a1ca91e1355759c1fcfb07a0d6a94285d GIT binary patch literal 713 zcmV;)0yh1LP){y9uNUHfD?cz;5Gu zNlaWM7#l*0;E;t4!Kex_JkC8wt*@_3Q51YHlu}GgOrS*s&+|}9jcWvJEqR_(mL-)+1rb3+01y$1qChV$ zE&@=m*D=PRl%iU#Qmt0eTBDRANs=!fR!Y(Bb^*}F7yxRu8cRz{08}a!eth~1|37?3 zmSrp)ZqVI5;?n&!(q@}53>nR7-}eE?^PH>Cexuimi6W>5kYyS1)*8J477jP)MBsh= zh41?)rO?O6$7rpYot@?1yRVsk@H5Vfx10kQLl8jp_=qzREBIzgZqWB{GCe&_k|d1Qyl}WduNTAZ=QJ9PpQuT2m;VA{{n^@e2z{h zCT+IIgaA4WL#(wdFE3O6ew`=+FOG3tmn_Q=5nR_DvImfU^gtMfIF5rJF<)F;Gj#6W-kyjE^Yim#wMTvja2)3wL6uURo}Lb~v%0z}TI(;G*4lBf%Ca2ae_mx- v4!z(w4nM6lE81b~PXa(I4%Z8n>V$T^n; zLrz30t|T}fj~`XuR&Y2R5D_Mm2>{dSbkuu~h@k5_0NfpS$Ck_G*J`TDY&NSn+3j|@ zS65Xc0y7&`F|4v`;e0;7RCIT4w;Mn;*!g^3l3ClfU$^iKe=-t`-D&If`hOK%E*BPy z1^4?MRV{s{l&Y2Wu8auW9eB*e_WOMa`W^fZ{Z?$XT5-KzF|(4u-D#SpaJ_+s|3pL{ oF)1ZfwG3?Ni5|}k1kiOIKjpcMV1{n*qyPW_07*qoM6N<$f`HwK_y7O^ literal 0 HcmV?d00001 diff --git a/assets/hbm/textures/blocks/fusion_motor_top_alt.png b/assets/hbm/textures/blocks/fusion_motor_top_alt.png new file mode 100644 index 0000000000000000000000000000000000000000..817e13d98243df15679aa5cef48f1e141786e832 GIT binary patch literal 287 zcmV+)0pR|LP)>SeN`;wi97#k3Ru71AD(MP3E;Hd` z>&Z{8^kmIRVo81vC^&nc@rbxQcrxuNxifDQ`=Lu!ZYK5~`+BnVE3cQj l#F&}L%&j0I9-p#?FhBDOYuPyqw@3g0002ovPDHLkV1iJucoF~r literal 0 HcmV?d00001 diff --git a/assets/hbm/textures/blocks/machine_selenium.png b/assets/hbm/textures/blocks/machine_selenium.png new file mode 100644 index 0000000000000000000000000000000000000000..05523101a9d08976c1a3b5c2b5f6e3d2eb1f2273 GIT binary patch literal 257 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#VffnuIvo|MNaw{t*?sP z`;fDQW5XdXqgOZ6zDOkJyM=1+V@sGIq1^X43Tpk2O& zzdcOnEZO`2%YKoD!28SZFKQJq6P)RPK|HPM(&wpqi_8-w7=H#&1^R)()78&qol`;+ E06R8jDgXcg literal 0 HcmV?d00001 diff --git a/assets/hbm/textures/gui/gui_selenium.png b/assets/hbm/textures/gui/gui_selenium.png new file mode 100644 index 0000000000000000000000000000000000000000..5cf250a6bb21588d2fe0737a051f7c570d11f9c5 GIT binary patch literal 3647 zcma)9c|4R||33H3m?q0KQxP$bt=EzsYgEQEwmjZSDrHR*qA1ETGBG9zB}S=`Wl%}k z5?K;Pkrr##W~||nWg21(+1^|4^KO6qKA+$H&$;h&pL4#~_j_H}xzByW#@bR$c)KtF zK+Nh7^P>Pj@GS%|Xt;6q%kh94l)tH!Ee5_qFz(UtxOppc6WhzF+&(Q|nFevzOquq* zkJkq^1|QwNId`K@&AC1r;&e_N!1!SI>Yh{4^D-aYUO&M4qc(RJ5}mbE$f}KGL{Ex* zibSdQI=su46O@+`E6XZ%iitYBH6(U3W2E;I?@w;Zo?`#xUR6}IS?S8D8Dg%0yI3F8 zb$Gw|$n>-(XYJU~zVeka72%)8U*pd>$e+P2Ot-y0tmG$%XlA@mWin&#N=-%~E1l|< zH5gPw+5j`A)?_6vCMITI`i52xwd($p!_1H4t9EM(mEFeP zJK@>+YE^4|vY_h-vfOI2aCD_CjNKo!Wov=2&Nb;#0gOJyT!I8hy%U6=-Hh)(W;f|& zY0FKXLG4%em<++m=0;AFy8P>$htXcHIw0krAR-cG9|IqwMot?5bZa z(gJgEI&dO?o+YsKUKTbZmKS)OHRpjdLS+NKSn;nNmQz8UMV(G^*t?uD&V)-OfP&@H*(g|tP*TfOSf(yRWnZC=d z>`S%vxHIaUgXEV#R_#v`XwzEfr4jB^ew_^&p!HsOqCjBPZsy%^eL}h{&u-yz@2H>Z zB%d8zX`}-cesKuIkecp!SxEKZ`iJe} zmfNH~ot8rVFbI-BndU&YVn(oH)E+X@bN2+E<@Oj*Ubc7Fe4ky8JeX1;ico0p0_GHC z@$vW_!2UF5(8h2@gV_)-r};>+?#{*q8Eg@jg*5{W&Zw*M{SM8X!^e?1+Eq#q8L`}> z_L|kX(srf2vUJ&i1<*G4eMin>D@~Z^>bHRw9Pv+_XWL z$ayh+>PZcD{5G8uN{H9wvK!MbeT>$;{P>0kWG*A_v(y3X(Y;=__~$Zi-8@DGf$1Db z!wV9#njMfAe>^DK+Ve3-o@AINozfNA)x6bI_~7wloxoY>O}-z76eW9IVbI)^yYN_5 z8#0~*mqj?=45%mDk9IBz4xPN-6{i-O%{3h>Mr(eUkq7qU2Gr~#zRd-A7kZw+Uhi6A>on*)O=w58nPXWQn>8}&nysd}t0GpALbi&IcP-jCin zdCJs&1355660tsN)bzCk85apol*>peZ1xu;4>~3B5yW3lmz16tqFLI5)>D{Ay{WoD z`JfqS{!yicvQcO2gpI$22>l2%dfo2kZ@L!&4G3 zJsB!%Onbc&b~YwFI}f_N&nOT1{7oDQo8Rs2pq?1puqoK2^{yvPqai8~oan*7FDl&= z9GzC<^=vzRcGwI}zD~GmkW=%)jJK>X>w!4Y5Vf7Yp30+;1kQI3kK;TEQVFst@}NCx zD-`Nj*liL-yB(anW*yfOFAoUS@>_0asrX3J5t`A4j@xdd0|Wu>gt) z2+_t*-jdgy!i?Bsq;HGj-w3l*U5K5*v<(!LpGw4+sG{uG5*fK~8$v|g>f%Uo9mdlN zrQY}u4@9QB=h?4*CupLVg!VN#)_i&L9+j<+zTg%b2@XwR+-o~$ zh86>IjhRM7MCUb<11fLr^*rIKJ`&)vw4B24Ri%RGF@b>YiUK4p1nEt4b93sd%;&ee zz@3g0s5*6Rdc^M%G4HA)xSo7E()4R^95Ti#^qpm>-U!lPIMsyOTB_%tvep>*6x z_?ky?Ct$na{`BtiQbSQfjVTtN#10jEg2))1K~`&rQP<2`%}vEh^b5B=hj$#!L)xhD z!w25pw+=lcy=!ybZgN&+_PnZ?&_Tk=v%Owoq7QCEJ3aYdow#p+(cP89uH|g-s`L_ieHc3+~hqN-gQ8(o0_v4pJ z{D-G}^_F&#PE=}%44$Z(P27!wruI02!K~PETVoa7NXFr}0Ur5KYui$B@>iWSE=QZ5 zkdWX~o4I@uTX*3OfWJfUD}#<1*xtGS>2YA2&wHL=@yn>6Q~-`Fk-@Y=uw0ACKEXS- zr42+Gw2Xd8P&TP9$c|gpB>w3ths=f)+xe$cl$DiTI6-{L>bABeMPTkeu(PW4=9(e6|2UJ#trJMY$rwXjUIaBK8^waHK$9Bp_W zF;88f8JPvC=)W2fPLP*G$XW48tSHgu88-k>dAD0G zYre%;v&!=tppPuKZr)Puj%sD$fYqYBPEde;jg%C)(=LH(HAe%L{QzuL1mNZoB+0LO z*8?4>1Jwv?l-MYzcao6ym3+(-3@TRPa;cWSPSP0!-F31471sgm_^?}qM98=y3O;BB z26%wRb%E+r!%)DS8&$)er}PaY5a9Fdp#x87hrDbo#lX2mrC$*6QsDDC1k!&&259*rvXU#M=)OF$Ql*Fs-9e()&HB(SCW;))M^R>kURiqPkh z^r;*+7|r>`1*pfsw(0=!>7@=}0*JYTKMpuqdZJm;qF_App#VM*b^Ny4pq^jjH)r5# z0Z4uYaZLhag9r1$b@c7vj@!hyO$;{jng=}bs3E3xvFSbRvh_88Sryol(X6~;Oww3I z-U+qI4KNmyByGIv&95G#wxPp96jW9kj{TH}DRC*ZFdvzlD-k4Dr3z^_VsolVbi&oM z$_tcKE+zu)^F^EI!A=J^P9R+psB?U`6<>B)A_kMoLkVJN9p-7H#j3&a$ zw;V%FmHlWq?QoDb0B5zXfnQ8MT<;X7ZG~djA;WC^<^fUNEali6s|gG3Qa~>ymS3Pg z+N@b(Ms(xA7*Rnz_-IPFZxrF`awa@kQ>0b8_*cDrEBBN3X@f^masAQ|II^_5aJ`ck z)7O+jJglT(aisTFV$Wqr%f7H%LBWqoWjoG!rwD0wpl!Ep zfYrY*JNy(!7s1vNp^w1MhY!YH>|>Xm(jan$v!gMog1C#@+T26w5$}pAGCiNV*PcGcoJNj4Xe-9G_#KNiQ7jomWyg}|0*}h_T!wak4*F* z_s=+7qS2abh3=~A(5I%SFLo&-L`|U9*q_jd;&Ggaeht!L=9V>M(S6|a?J;va?%#Z^ nJMaI2J!%gg=2{4dHugSB%~_k)Ye zcfC7)>YKw}8-^=q_)1^kfYGj%wZ9%$KQwKOHM#n~Ht7H1OS?Kg@#HidDn2d7xc1cHZ7GZk z{6)Y1SoqUset+3jV$O!p zyZaMYdEPGk^X1|dTQzz98E-?F-h99Qp07>bX7eAN1C^Z`=L)=aKu&tQp=ZpJ!-$_-$AHoxEdF2Q7|He|OmEmJvh3RX@gr zb6NlE?uRffnJdIF?b=fN`{o|?@}Fc5Fo7Iz6FJ*_8c$kXMA$Zt8GKW@i%h%Q!bASc z6@=eoZs0v##<(iDNR?qtR5T~Unp#ceM-;$qgIi!ibtK#{?32zuIJhq1!ZQKDB{|bh_*^JjcpBuP z>#T*HOwfq%R2_d|+MU}#FkLxG*H^pyy*A&W@*GdTXD#QIpKvMf^d7BU+41`R{zK*IZ}N1m+2~VB9T~eJOKZ=NM0*TTE}{lhgMQTQWf$ui;IhGZ1>-0q#UlC^~2LR zf0?11I2sEMTI;FKC=~54!(QC4J8o<1o3bMe4+_>~YfHC;8!U>?TZK0c6xZviSbv>HkIu{`LA~e;}168RGEcwQ~3uvU$8q4k32L{*#vtodBV}RSF z7AbSsfF@kKu@5hp)}j~qVt9~wkl?|av82|-SZ;4#Nd z7zR44MQ@8#nQU-MTf~3Xj4Nzw@+Wy)wrpq3Euroi(Vu3>E(~CK6?q&IX0oXgO`o4O zz@eT$*P3*x^iZ7WwoS7RrUeNG5)RtTQmm}3@_Ma%jd_;t7+zo=N6j2lsgSM8Qd&AX zh(`yTibJY^=xZXRORlkMg_I#z%9Lc|a~ z8h{l3iY^_QHlX3trm!jNv#+HUf|q~pIrA+{d?$vw&}Uz*kDi@~3eZ1i3~PzMvt2Dh zOpIQ@x2<@{%>>6{8{;csO(&kHkk)_RuoV!}*0RT3T1-jhSq)myDDWsa3y~@u z=ykK?F^cQ$2NulHC!e4KN+7&$x>^418ZcrZ-OjGZ+^>_JH*T$rw_p)?;e5`+$eJlD z$%k3x>IdvlYP28823gencmlXV!E#RlOVZiAoKvMM)v1Sp!PSxJVR5T|Js#ne9hEXL zUk(_9tC=IyJiaGWZI*f>s|_ z0nRO^x zioF4O%asKrVCt3U>6%6DNPRnIs&F4o}y;ZkRXxjM5!SB$YDU?S^#I_V5WLE~7uOUy-N@(r8R^RE2uxGKOlV#H}p^ zxI;?biR$2?BU5~31lMheE;WSGHc2zzoW7}7W`#D-0=SQ$BECKK5Q=1Of&gVM{_X%U zYPEe;6{kpWN}QlYi=%#0&y1Q!QA7Q}PGv?Jwl(jv#0bJr=|gdIiOkoVRJW38lnhW1 zcL>)Q><1pw0_p-*>mjL4ELbf~c%>A^p-J~(Kssq7jsT;r4EH_`xeSHNgF?Grvn zp&I$kdJ6{Wt^sHzg#$#C8gF1=z;tHsP>-QqzH+$1>GcsAkjzow3Lbpw2B@KEpwa3A zM@q*no2U(e?#Q!f6Qn5v>Ejm!u4t65sF_L66y9D!HR_POy z$9{E79l1636gmGjZ;DmD!kUN>H$?j8pvps3x$>Hz6`@MzrrF+%1DH8kdrb5A7*T}H zE7@@pLp3JrJwE+b15`V0aoC!@|B>E1kzJcEt9jgAv2Al4b#%mwv)OF+k&Aj0Nvlbd zvp0gm;0u?);hfhKUE9}N`>a16|Hl~rw||(K)z1y6g2adpp{Ih}W3Fl*>tft1TK>$% zxc*yhOY~l&PD)i4HAR^3<gSS`hA0oK18`1pUkKc6@)%)^{z2uFb3;doJin_Ye zjkI(3`hh|N`&6G45(}@3NGK`j9N&G|z`^P5@Gs-Puiau|wUM5e1)}@&rlPZ>2d(ZT H{i}Zht%|q{ literal 1834 zcmb7Fc~Dbl5dU&vxRih#RT~0YVzC7jkO&weMmZ!D5iPYiaws53B$4}ksDoiFjTjJ= zvrH9H3?Oa61SBI0MvI|FT$9 ztF=Z80HEvPPW1%<0hIL^*&RZfP;!WhQ6sN5nt&_km^J!FVwEB&s7zt%*dq@ zHlNSm7a1QPFXC1b3kRA@yesG`-3@g;$317~`-)2&*lcz?H>`OezoMd|y)E6g#QMIp z!gkfFRacZ#o@FxWSbtZ3`XI+6Mr@ZiHqe|uH@~2t;W7!pLRGiDB*qB^U-HbLHcosi^F74OH29M?1>zPrKfTD_Lyea}u?EvJp0?mNC*1-$Ud=_;#7u~&(4IQ&==HyH(v29j zLH%#agG{WL)=5G}9RJW1$+Q-xaSjATOo+^Pm%Sfw_%UP~p8Zqn?ao(SuvSB;=+{D* zb0&z#Va8?Na(gI}ws6TlBUbON?5@UOuNvow(H2mDS!s(4{E`ohB_G0X$q>bI) zX(~lEc`x`@At(`xTf4zxaW#WK|~6&UM!lxa$hpxjvs8Y z3~PDEetLXPi*0%K&J;RAt;W4Y%I;o^(kwY67KnnYl?pf7u0JbY)EGG=V`?s93zStt z+6hDw8xo3o`%-kvy40b)90wFl?Du|dzOIzAcJ}jd3zx{wk$$Lp*I+d17haLWC1urj z;wXW<9tA(?QqF<$-2y4`wBCwSUShxBo<|KoN@!L4h>iEpoHn{VfCQsh@KItl&Cvz$ zS3M6}Yyzb73#~$@$MpIe__JN9GjW5>?2&`P>)M#k`0S9P`;vqkGgA$i|0KJN`7&pu z{~gE-+9)9%aA7fi*y&a1`|x#)W1jCrmlf6|+yfG>H8Ih=!;W?(*Z0lX*q+&`b)jZN zcv`t+ew36e9WXNMD~sRY)8EK0t_ zNWI$XIoHM;BZ{?-7hxrh&V~h#7?w4RyX+8#BB>Agshi~&xCp|qwCQJ9j?4a5n75@_ z`D)9Zi@sY6+h0zOj}LORg}+yWtpj&bBa_UcS87A~Zzl{ABAABJWR5BPKl}gFa6tuH Wo`jXSo8b-BnI5~msa)5Yk6i3gOq^%7B38Cqr7P`2Ipa^0IXQ`;*;Ghp6n8`P2 z`Vi(7@&fMeg3nO!&tMUvU~Ns>UWbS@Bv3~O&vJ(E-XGt+7ykJb+ckvUvJ|~(^O`pu zau%O^=O4R_Y@992-Fbowy5X>&|=2M};-eU~F@k0z%IC@Sn6r9|RU?>m_ z3itGb=Xo+~-}f^vB6G$liZbr^`x(y-INQ&<-HI~)n|uM1VqlaMt|Kr20000cb;piz*Z5F`s`WC#QS0|YTD zCMF0ZkW4HgnV3RhQHY9(WePvHtSdRuG%4ziYqw$HXWp0Gd+&Ge-N9eW`t5MgX=DKH ze#pgPjUpeMJzHX3vG4m?cQ|1>ol>n<&$&Ox(|l#<8GU9OI5nosw(X!k>% zyVPLNX=D}G;r#xcpjijdJYPtnSdykGUfBU4H$w5+H@#4^Dppb~OlP&EyOSM?eB1k= zwZDy5b`avnw*>I^)XFNZ!^7(*L9T$iDAy!OawDj-D3*-J_A@s8O7mhF39x2UzH-=Kh`BbMC;GFq#Uh)hYvs;}`(n_iKAA$$ZeVEC7-uAt#EW zi1m7HG!iTpi)=g|>o^~NJRUk1hGB{1w@BbP4*UIHzl+0R7y{7gbV?hS2mnT-5vFNs zB7i80a9x+@^I6)aLU6raX}8+|OePbA5C|b~9EUVbD{=sSib1c}BS{i2m&^afxZQ5t z?{~W0?t2NAWnr2o=kpmUB~nUuyB$g?T-SXsp$OZy5kj!tZi(XfxYB3lL^c7yO7l*@vG))PDp!p}}n9t|gY&O#-3L)@3 uueP_=#LZ@709n7^=X5&No;AnUCjJ56W~I=z>?>FR0000 0) + { + int j1 = this.field_149933_a.nextInt(21) + 10; + + if (j1 > itemstack.stackSize) + { + j1 = itemstack.stackSize; + } + + itemstack.stackSize -= j1; + EntityItem entityitem = new EntityItem(p_149749_1_, p_149749_2_ + f, p_149749_3_ + f1, p_149749_4_ + f2, new ItemStack(itemstack.getItem(), j1, itemstack.getItemDamage())); + + if (itemstack.hasTagCompound()) + { + entityitem.getEntityItem().setTagCompound((NBTTagCompound)itemstack.getTagCompound().copy()); + } + + float f3 = 0.05F; + entityitem.motionX = (float)this.field_149933_a.nextGaussian() * f3; + entityitem.motionY = (float)this.field_149933_a.nextGaussian() * f3 + 0.2F; + entityitem.motionZ = (float)this.field_149933_a.nextGaussian() * f3; + p_149749_1_.spawnEntityInWorld(entityitem); + } + } + } + + p_149749_1_.func_147453_f(p_149749_2_, p_149749_3_, p_149749_4_, p_149749_5_); + } + } + + super.breakBlock(p_149749_1_, p_149749_2_, p_149749_3_, p_149749_4_, p_149749_5_, p_149749_6_); + } + + @Override + public 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()) + { + TileEntityMachineSeleniumEngine entity = (TileEntityMachineSeleniumEngine) world.getTileEntity(x, y, z); + if(entity != null) + { + FMLNetworkHandler.openGui(player, MainRegistry.instance, ModBlocks.guiID_machine_selenium, world, x, y, z); + } + return true; + } else { + return false; + } + } + +} diff --git a/com/hbm/entity/logic/EntityNukeExplosionMK4.java b/com/hbm/entity/logic/EntityNukeExplosionMK4.java index d0394e5b0..b9374b053 100644 --- a/com/hbm/entity/logic/EntityNukeExplosionMK4.java +++ b/com/hbm/entity/logic/EntityNukeExplosionMK4.java @@ -20,6 +20,8 @@ public class EntityNukeExplosionMK4 extends Entity { public int speed; public int length; + public boolean fallout = true; + ExplosionNukeRay explosion; public EntityNukeExplosionMK4(World p_i1582_1_) { @@ -55,7 +57,7 @@ public class EntityNukeExplosionMK4 extends Entity { //if(!worldObj.isRemote) //MainRegistry.logger.info(explosion.getProgress() + " / " + count / length); explosion.processTip(speed); - } else { + } else if(fallout) { EntityFalloutRain fallout = new EntityFalloutRain(this.worldObj, (int)(this.length * 1.8) * 10); fallout.posX = this.posX; @@ -96,5 +98,19 @@ public class EntityNukeExplosionMK4 extends Entity { mk4.length = mk4.strength / 2; return mk4; } + + public static EntityNukeExplosionMK4 statFacNoRad(World world, int r, double x, double y, double z) { + + r *= 2; + + EntityNukeExplosionMK4 mk4 = new EntityNukeExplosionMK4(world); + mk4.strength = (int)(r); + mk4.count = (int)(4 * Math.PI * Math.pow(mk4.strength, 2) * 25); + mk4.speed = (int)Math.ceil(100000 / mk4.strength); + mk4.setPosition(x, y, z); + mk4.length = mk4.strength / 2; + mk4.fallout = false; + return mk4; + } } diff --git a/com/hbm/handler/GUIHandler.java b/com/hbm/handler/GUIHandler.java index 025984a6a..a7b27c481 100644 --- a/com/hbm/handler/GUIHandler.java +++ b/com/hbm/handler/GUIHandler.java @@ -14,6 +14,7 @@ import com.hbm.tileentity.bomb.TileEntityNukeFleija; import com.hbm.tileentity.bomb.TileEntityNukeGadget; import com.hbm.tileentity.bomb.TileEntityNukeMan; import com.hbm.tileentity.bomb.TileEntityNukeMike; +import com.hbm.tileentity.bomb.TileEntityNukeN2; import com.hbm.tileentity.bomb.TileEntityNukePrototype; import com.hbm.tileentity.bomb.TileEntityNukeSolinium; import com.hbm.tileentity.bomb.TileEntityNukeTsar; @@ -56,6 +57,7 @@ import com.hbm.tileentity.machine.TileEntityMachineRadar; import com.hbm.tileentity.machine.TileEntityMachineReactor; import com.hbm.tileentity.machine.TileEntityMachineRefinery; import com.hbm.tileentity.machine.TileEntityMachineSchrabidiumTransmutator; +import com.hbm.tileentity.machine.TileEntityMachineSeleniumEngine; import com.hbm.tileentity.machine.TileEntityMachineShredder; import com.hbm.tileentity.machine.TileEntityMachineSiren; import com.hbm.tileentity.machine.TileEntityMachineTeleporter; @@ -610,6 +612,15 @@ public class GUIHandler implements IGuiHandler { return null; } + case ModBlocks.guiID_nuke_n2: + { + if(entity instanceof TileEntityNukeN2) + { + return new ContainerNukeN2(player.inventory, (TileEntityNukeN2) entity); + } + return null; + } + case ModBlocks.guiID_cel_prime: { if(entity instanceof TileEntityCelPrime) @@ -618,6 +629,15 @@ public class GUIHandler implements IGuiHandler { } return null; } + + case ModBlocks.guiID_machine_selenium: + { + if(entity instanceof TileEntityMachineSeleniumEngine) + { + return new ContainerMachineSelenium(player.inventory, (TileEntityMachineSeleniumEngine) entity); + } + return null; + } } return null; } @@ -1160,6 +1180,15 @@ public class GUIHandler implements IGuiHandler { return null; } + case ModBlocks.guiID_nuke_n2: + { + if(entity instanceof TileEntityNukeN2) + { + return new GUINukeN2(player.inventory, (TileEntityNukeN2) entity); + } + return null; + } + case ModBlocks.guiID_cel_prime: { if(entity instanceof TileEntityCelPrime) @@ -1168,6 +1197,15 @@ public class GUIHandler implements IGuiHandler { } return null; } + + case ModBlocks.guiID_machine_selenium: + { + if(entity instanceof TileEntityMachineSeleniumEngine) + { + return new GUIMachineSelenium(player.inventory, (TileEntityMachineSeleniumEngine) entity); + } + return null; + } } } else { //CLIENTONLY GUIS diff --git a/com/hbm/inventory/container/ContainerMachineSelenium.java b/com/hbm/inventory/container/ContainerMachineSelenium.java new file mode 100644 index 000000000..3b5ae94d3 --- /dev/null +++ b/com/hbm/inventory/container/ContainerMachineSelenium.java @@ -0,0 +1,94 @@ +package com.hbm.inventory.container; + +import com.hbm.inventory.SlotMachineOutput; +import com.hbm.tileentity.bomb.TileEntityCelPrime; +import com.hbm.tileentity.machine.TileEntityMachineSeleniumEngine; + +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.InventoryPlayer; +import net.minecraft.inventory.Container; +import net.minecraft.inventory.Slot; +import net.minecraft.item.ItemStack; + +public class ContainerMachineSelenium extends Container { + +private TileEntityMachineSeleniumEngine seleniumEngine; + + public ContainerMachineSelenium(InventoryPlayer invPlayer, TileEntityMachineSeleniumEngine tedf) { + + seleniumEngine = tedf; + + //Pistons + this.addSlotToContainer(new Slot(tedf, 0, 8, 18)); + this.addSlotToContainer(new Slot(tedf, 1, 26, 18)); + this.addSlotToContainer(new Slot(tedf, 2, 44, 18)); + this.addSlotToContainer(new Slot(tedf, 3, 8, 36)); + this.addSlotToContainer(new Slot(tedf, 4, 26, 36)); + this.addSlotToContainer(new Slot(tedf, 5, 44, 36)); + this.addSlotToContainer(new Slot(tedf, 6, 8, 54)); + this.addSlotToContainer(new Slot(tedf, 7, 26, 54)); + this.addSlotToContainer(new Slot(tedf, 8, 44, 54)); + + //Fluid IO + this.addSlotToContainer(new Slot(tedf, 9, 80, 18)); + this.addSlotToContainer(new SlotMachineOutput(invPlayer.player, tedf, 10, 80, 54)); + + //Fluid IDs + this.addSlotToContainer(new Slot(tedf, 11, 152, 18)); + this.addSlotToContainer(new SlotMachineOutput(invPlayer.player, tedf, 12, 152, 54)); + + //Battery + this.addSlotToContainer(new Slot(tedf, 13, 116, 90)); + + for(int i = 0; i < 3; i++) + { + for(int j = 0; j < 9; j++) + { + this.addSlotToContainer(new Slot(invPlayer, j + i * 9 + 9, 8 + j * 18, 84 + i * 18 + 56)); + } + } + + for(int i = 0; i < 9; i++) + { + this.addSlotToContainer(new Slot(invPlayer, i, 8 + i * 18, 142 + 56)); + } + } + + @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 <= 13) { + if (!this.mergeItemStack(var5, 14, this.inventorySlots.size(), true)) + { + return null; + } + } else { + return null; + } + + if (var5.stackSize == 0) + { + var4.putStack((ItemStack) null); + } + else + { + var4.onSlotChanged(); + } + } + + return var3; + } + + @Override + public boolean canInteractWith(EntityPlayer player) { + return seleniumEngine.isUseableByPlayer(player); + } +} diff --git a/com/hbm/inventory/container/ContainerNukeN2.java b/com/hbm/inventory/container/ContainerNukeN2.java new file mode 100644 index 000000000..5e1af94dc --- /dev/null +++ b/com/hbm/inventory/container/ContainerNukeN2.java @@ -0,0 +1,84 @@ +package com.hbm.inventory.container; + +import com.hbm.tileentity.bomb.TileEntityNukeN2; +import com.hbm.tileentity.bomb.TileEntityNukeSolinium; + +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.InventoryPlayer; +import net.minecraft.inventory.Container; +import net.minecraft.inventory.Slot; +import net.minecraft.item.ItemStack; + +public class ContainerNukeN2 extends Container { + +private TileEntityNukeN2 nukeSol; + + public ContainerNukeN2(InventoryPlayer invPlayer, TileEntityNukeN2 tedf) { + + nukeSol = tedf; + + this.addSlotToContainer(new Slot(tedf, 0, 98, 36)); + this.addSlotToContainer(new Slot(tedf, 1, 116, 36)); + this.addSlotToContainer(new Slot(tedf, 2, 134, 36)); + this.addSlotToContainer(new Slot(tedf, 3, 98, 54)); + this.addSlotToContainer(new Slot(tedf, 4, 116, 54)); + this.addSlotToContainer(new Slot(tedf, 5, 134, 54)); + this.addSlotToContainer(new Slot(tedf, 6, 98, 72)); + this.addSlotToContainer(new Slot(tedf, 7, 116, 72)); + this.addSlotToContainer(new Slot(tedf, 8, 134, 72)); + this.addSlotToContainer(new Slot(tedf, 9, 98, 90)); + this.addSlotToContainer(new Slot(tedf, 10, 116, 90)); + this.addSlotToContainer(new Slot(tedf, 11, 134, 90)); + + for(int i = 0; i < 3; i++) + { + for(int j = 0; j < 9; j++) + { + this.addSlotToContainer(new Slot(invPlayer, j + i * 9 + 9, 8 + j * 18, 84 + i * 18 + 56)); + } + } + + for(int i = 0; i < 9; i++) + { + this.addSlotToContainer(new Slot(invPlayer, i, 8 + i * 18, 142 + 56)); + } + } + + @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 <= 11) { + if (!this.mergeItemStack(var5, 12, this.inventorySlots.size(), true)) + { + return null; + } + } else { + return null; + } + + if (var5.stackSize == 0) + { + var4.putStack((ItemStack) null); + } + else + { + var4.onSlotChanged(); + } + } + + return var3; + } + + @Override + public boolean canInteractWith(EntityPlayer player) { + return nukeSol.isUseableByPlayer(player); + } +} diff --git a/com/hbm/inventory/container/ContainerNukeSolinium.java b/com/hbm/inventory/container/ContainerNukeSolinium.java index f7f79f5db..dd87096be 100644 --- a/com/hbm/inventory/container/ContainerNukeSolinium.java +++ b/com/hbm/inventory/container/ContainerNukeSolinium.java @@ -52,8 +52,8 @@ private TileEntityNukeSolinium nukeSol; ItemStack var5 = var4.getStack(); var3 = var5.copy(); - if (par2 <= 10) { - if (!this.mergeItemStack(var5, 11, this.inventorySlots.size(), true)) + if (par2 <= 8) { + if (!this.mergeItemStack(var5, 9, this.inventorySlots.size(), true)) { return null; } diff --git a/com/hbm/inventory/gui/GUIMachineDiesel.java b/com/hbm/inventory/gui/GUIMachineDiesel.java index a930dfd81..aea20724e 100644 --- a/com/hbm/inventory/gui/GUIMachineDiesel.java +++ b/com/hbm/inventory/gui/GUIMachineDiesel.java @@ -32,6 +32,13 @@ public class GUIMachineDiesel extends GuiInfoContainer { diFurnace.tank.renderTankInfo(this, mouseX, mouseY, guiLeft + 80, guiTop + 69 - 52, 16, 52); this.drawElectricityInfo(this, mouseX, mouseY, guiLeft + 152, guiTop + 69 - 52, 16, 52, diFurnace.power, diFurnace.maxPower); + + String[] text = new String[] { "Accepted Fuels:", + " Diesel (500 HE/t)", + " Petroil (300 HE/t)", + " Biofuel (400 HE/t)", + " NITAN Superfuel (5000 HE/t)" }; + this.drawCustomInfoStat(mouseX, mouseY, guiLeft - 16, guiTop + 36, 16, 16, guiLeft - 8, guiTop + 36 + 16, text); } @Override @@ -58,6 +65,8 @@ public class GUIMachineDiesel extends GuiInfoContainer { drawTexturedModalRect(guiLeft + 43 + 18 * 4, guiTop + 34, 208, 0, 18, 18); } + this.drawInfoPanel(guiLeft - 16, guiTop + 36, 16, 16, 2); + Minecraft.getMinecraft().getTextureManager().bindTexture(diFurnace.tank.getSheet()); diFurnace.tank.renderTank(this, guiLeft + 80, guiTop + 69, diFurnace.tank.getTankType().textureX() * FluidTank.x, diFurnace.tank.getTankType().textureY() * FluidTank.y, 16, 52); } diff --git a/com/hbm/inventory/gui/GUIMachineSelenium.java b/com/hbm/inventory/gui/GUIMachineSelenium.java new file mode 100644 index 000000000..28b752936 --- /dev/null +++ b/com/hbm/inventory/gui/GUIMachineSelenium.java @@ -0,0 +1,86 @@ +package com.hbm.inventory.gui; + +import org.lwjgl.opengl.GL11; + +import com.hbm.inventory.FluidTank; +import com.hbm.inventory.container.ContainerMachineDiesel; +import com.hbm.inventory.container.ContainerMachineSelenium; +import com.hbm.lib.RefStrings; +import com.hbm.tileentity.machine.TileEntityMachineDiesel; +import com.hbm.tileentity.machine.TileEntityMachineSeleniumEngine; + +import net.minecraft.client.Minecraft; +import net.minecraft.client.resources.I18n; +import net.minecraft.entity.player.InventoryPlayer; +import net.minecraft.util.ResourceLocation; + +public class GUIMachineSelenium extends GuiInfoContainer { + + private static ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/gui_selenium.png"); + private TileEntityMachineSeleniumEngine diFurnace; + + public GUIMachineSelenium(InventoryPlayer invPlayer, TileEntityMachineSeleniumEngine tedf) { + super(new ContainerMachineSelenium(invPlayer, tedf)); + diFurnace = tedf; + + this.xSize = 176; + this.ySize = 222; + } + + @Override + public void drawScreen(int mouseX, int mouseY, float f) { + super.drawScreen(mouseX, mouseY, f); + + diFurnace.tank.renderTankInfo(this, mouseX, mouseY, guiLeft + 116, guiTop + 18, 16, 52); + this.drawElectricityInfo(this, mouseX, mouseY, guiLeft + 8, guiTop + 108, 160, 16, diFurnace.power, diFurnace.powerCap); + + String[] text = new String[] { "Accepted Fuels:", + " Industrial Oil (100 HE/t)", + " Heating Oil (150 HE/t)", + " Diesel (450 HE/t)", + " Kerosene (600 HE/t)", + " Reclaimed Oil (200 HE/t)", + " Petroil (250 HE/t)", + " Biofuel (400 HE/t)", + " NITAN Superfuel (5000 HE/t)", + "(These numbers are base values,", + "actual HE/t can deviate)" }; + this.drawCustomInfoStat(mouseX, mouseY, guiLeft - 16, guiTop + 36, 16, 16, guiLeft - 8, guiTop + 36 + 16, text); + } + + @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 = (int)diFurnace.getPowerScaled(160); + drawTexturedModalRect(guiLeft + 8, guiTop + 108, 0, 222, i, 16); + } + + if(diFurnace.tank.getFill() > 0 && diFurnace.hasAcceptableFuel() && diFurnace.pistonCount > 2) + { + drawTexturedModalRect(guiLeft + 115, guiTop + 71, 192, 0, 18, 18); + } + + if(diFurnace.pistonCount > 0) + { + int k = diFurnace.pistonCount; + drawTexturedModalRect(guiLeft + 26, guiTop + 81, 176, 52 + 16 * k - 16, 16, 16); + } + + this.drawInfoPanel(guiLeft - 16, guiTop + 36, 16, 16, 2); + + Minecraft.getMinecraft().getTextureManager().bindTexture(diFurnace.tank.getSheet()); + diFurnace.tank.renderTank(this, guiLeft + 80 + 36, guiTop + 70, diFurnace.tank.getTankType().textureX() * FluidTank.x, diFurnace.tank.getTankType().textureY() * FluidTank.y, 16, 52); + } +} diff --git a/com/hbm/inventory/gui/GUINukeN2.java b/com/hbm/inventory/gui/GUINukeN2.java new file mode 100644 index 000000000..78b22071a --- /dev/null +++ b/com/hbm/inventory/gui/GUINukeN2.java @@ -0,0 +1,57 @@ +package com.hbm.inventory.gui; + +import org.lwjgl.opengl.GL11; + +import com.hbm.inventory.container.ContainerNukeN2; +import com.hbm.inventory.container.ContainerNukeSolinium; +import com.hbm.items.ModItems; +import com.hbm.lib.RefStrings; +import com.hbm.tileentity.bomb.TileEntityNukeN2; +import com.hbm.tileentity.bomb.TileEntityNukeSolinium; + +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 GUINukeN2 extends GuiContainer { + + private static ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/n2Schematic.png"); + private TileEntityNukeN2 testNuke; + + public GUINukeN2(InventoryPlayer invPlayer, TileEntityNukeN2 tedf) { + super(new ContainerNukeN2(invPlayer, tedf)); + testNuke = tedf; + + this.xSize = 176; + this.ySize = 222; + } + + @Override + protected void drawGuiContainerForegroundLayer( int i, int j) { + String name = this.testNuke.hasCustomInventoryName() ? this.testNuke.getInventoryName() : I18n.format(this.testNuke.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); + + int count = 0; + + for(int i = 0; i < 12; i++) { + if(this.testNuke.slots[i] != null && this.testNuke.slots[i].getItem() == ModItems.n2_charge) + count++; + } + + if(count > 0) + { + drawTexturedModalRect(guiLeft + 35, guiTop + 120 - 6 * count, 176, 0, 34, 6 * count); + } + } +} diff --git a/com/hbm/inventory/gui/GuiInfoContainer.java b/com/hbm/inventory/gui/GuiInfoContainer.java index 560fba6b3..fe3e75920 100644 --- a/com/hbm/inventory/gui/GuiInfoContainer.java +++ b/com/hbm/inventory/gui/GuiInfoContainer.java @@ -3,12 +3,17 @@ package com.hbm.inventory.gui; import java.util.Arrays; import com.hbm.lib.Library; +import com.hbm.lib.RefStrings; +import net.minecraft.client.Minecraft; import net.minecraft.client.gui.inventory.GuiContainer; import net.minecraft.client.resources.I18n; import net.minecraft.inventory.Container; +import net.minecraft.util.ResourceLocation; public abstract class GuiInfoContainer extends GuiContainer { + + ResourceLocation guiUtil = new ResourceLocation(RefStrings.MODID + ":textures/gui/gui_utility.png"); public GuiInfoContainer(Container p_i1072_1_) { super(p_i1072_1_); @@ -27,5 +32,27 @@ public abstract class GuiInfoContainer extends GuiContainer { if(x <= mouseX && x + width > mouseX && y < mouseY && y + height >= mouseY) this.func_146283_a(Arrays.asList(text), mouseX, mouseY); } + + public void drawCustomInfoStat(int mouseX, int mouseY, int x, int y, int width, int height, int tPosX, int tPosY, String[] text) { + + if(x <= mouseX && x + width > mouseX && y < mouseY && y + height >= mouseY) + this.func_146283_a(Arrays.asList(text), tPosX, tPosY); + } + + public void drawInfoPanel(int x, int y, int width, int height, int type) { + + Minecraft.getMinecraft().getTextureManager().bindTexture(guiUtil); + + switch(type) { + case 0: + drawTexturedModalRect(x, y, 0, 0, 8, 8); break; + case 1: + drawTexturedModalRect(x, y, 0, 8, 8, 8); break; + case 2: + drawTexturedModalRect(x, y, 8, 0, 16, 16); break; + case 3: + drawTexturedModalRect(x, y, 24, 0, 16, 16); break; + } + } } diff --git a/com/hbm/items/ModItems.java b/com/hbm/items/ModItems.java index c55b798ed..f99dabd1c 100644 --- a/com/hbm/items/ModItems.java +++ b/com/hbm/items/ModItems.java @@ -404,6 +404,8 @@ public class ModItems { public static Item pellet_lead; public static Item pellet_advanced; + public static Item piston_selenium; + public static Item crystal_energy; public static Item pellet_coolant; @@ -823,6 +825,8 @@ public class ModItems { public static Item solinium_propellant; public static Item solinium_core; + public static Item n2_charge; + public static Item battery_generic; public static Item battery_advanced; public static Item battery_lithium; @@ -1519,6 +1523,8 @@ public class ModItems { pellet_rtg = new ItemCustomLore().setUnlocalizedName("pellet_rtg").setCreativeTab(MainRegistry.tabParts).setMaxStackSize(1).setTextureName(RefStrings.MODID + ":pellet_rtg"); pellet_rtg_weak = new ItemCustomLore().setUnlocalizedName("pellet_rtg_weak").setCreativeTab(MainRegistry.tabParts).setMaxStackSize(1).setTextureName(RefStrings.MODID + ":pellet_rtg_weak"); tritium_deuterium_cake = new ItemCustomLore().setUnlocalizedName("tritium_deuterium_cake").setCreativeTab(MainRegistry.tabParts).setMaxStackSize(1).setTextureName(RefStrings.MODID + ":tritium_deuterium_cake"); + + piston_selenium = new Item().setUnlocalizedName("piston_selenium").setCreativeTab(MainRegistry.tabParts).setMaxStackSize(1).setTextureName(RefStrings.MODID + ":piston_selenium"); crystal_energy = new ItemCustomLore().setUnlocalizedName("crystal_energy").setCreativeTab(MainRegistry.tabParts).setMaxStackSize(1).setTextureName(RefStrings.MODID + ":crystal_energy"); pellet_coolant = new ItemCustomLore().setUnlocalizedName("pellet_coolant").setMaxDamage(41400).setCreativeTab(MainRegistry.tabParts).setMaxStackSize(1).setTextureName(RefStrings.MODID + ":pellet_coolant"); @@ -1533,18 +1539,18 @@ public class ModItems { ams_catalyst_blank = new Item().setUnlocalizedName("ams_catalyst_blank").setCreativeTab(MainRegistry.tabParts).setMaxStackSize(1).setTextureName(RefStrings.MODID + ":ams_catalyst_blank"); ams_catalyst_aluminium = new ItemCatalyst(0xCCCCCC, 1000000, 1.15F, 0.85F, 1.15F).setUnlocalizedName("ams_catalyst_aluminium").setCreativeTab(MainRegistry.tabParts).setMaxStackSize(1).setTextureName(RefStrings.MODID + ":ams_catalyst_aluminium"); ams_catalyst_beryllium = new ItemCatalyst(0x97978B, 0, 1.25F, 0.95F, 1.05F).setUnlocalizedName("ams_catalyst_beryllium").setCreativeTab(MainRegistry.tabParts).setMaxStackSize(1).setTextureName(RefStrings.MODID + ":ams_catalyst_beryllium"); - ams_catalyst_caesium = new ItemCatalyst(0x6400FF, 2500000, 1.0F, 0.85F, 1.15F).setUnlocalizedName("ams_catalyst_caesium").setCreativeTab(MainRegistry.tabParts).setMaxStackSize(1).setTextureName(RefStrings.MODID + ":ams_catalyst_caesium"); + ams_catalyst_caesium = new ItemCatalyst(0x6400FF, 2500000, 1.00F, 0.85F, 1.15F).setUnlocalizedName("ams_catalyst_caesium").setCreativeTab(MainRegistry.tabParts).setMaxStackSize(1).setTextureName(RefStrings.MODID + ":ams_catalyst_caesium"); ams_catalyst_cerium = new ItemCatalyst(0x1D3FFF, 1000000, 1.15F, 1.15F, 0.85F).setUnlocalizedName("ams_catalyst_cerium").setCreativeTab(MainRegistry.tabParts).setMaxStackSize(1).setTextureName(RefStrings.MODID + ":ams_catalyst_cerium"); ams_catalyst_cobalt = new ItemCatalyst(0x789BBE, 0, 1.25F, 1.05F, 0.95F).setUnlocalizedName("ams_catalyst_cobalt").setCreativeTab(MainRegistry.tabParts).setMaxStackSize(1).setTextureName(RefStrings.MODID + ":ams_catalyst_cobalt"); - ams_catalyst_copper = new ItemCatalyst(0xAADE29, 0, 1.25F, 1.0F, 1.0F).setUnlocalizedName("ams_catalyst_copper").setCreativeTab(MainRegistry.tabParts).setMaxStackSize(1).setTextureName(RefStrings.MODID + ":ams_catalyst_copper"); - ams_catalyst_dineutronium = new ItemCatalyst(0x334077, 2500000, 1.0F, 1.15F, 0.85F).setUnlocalizedName("ams_catalyst_dineutronium").setCreativeTab(MainRegistry.tabParts).setMaxStackSize(1).setTextureName(RefStrings.MODID + ":ams_catalyst_dineutronium"); - ams_catalyst_euphemium = new ItemCatalyst(0xFF9CD2, 2500000, 1.0F, 1.0F, 1.0F).setUnlocalizedName("ams_catalyst_euphemium").setCreativeTab(MainRegistry.tabParts).setMaxStackSize(1).setTextureName(RefStrings.MODID + ":ams_catalyst_euphemium"); + ams_catalyst_copper = new ItemCatalyst(0xAADE29, 0, 1.25F, 1.00F, 1.00F).setUnlocalizedName("ams_catalyst_copper").setCreativeTab(MainRegistry.tabParts).setMaxStackSize(1).setTextureName(RefStrings.MODID + ":ams_catalyst_copper"); + ams_catalyst_dineutronium = new ItemCatalyst(0x334077, 2500000, 1.00F, 1.15F, 0.85F).setUnlocalizedName("ams_catalyst_dineutronium").setCreativeTab(MainRegistry.tabParts).setMaxStackSize(1).setTextureName(RefStrings.MODID + ":ams_catalyst_dineutronium"); + ams_catalyst_euphemium = new ItemCatalyst(0xFF9CD2, 2500000, 1.00F, 1.00F, 1.00F).setUnlocalizedName("ams_catalyst_euphemium").setCreativeTab(MainRegistry.tabParts).setMaxStackSize(1).setTextureName(RefStrings.MODID + ":ams_catalyst_euphemium"); ams_catalyst_iron = new ItemCatalyst(0xFF7E22, 1000000, 1.15F, 0.95F, 1.05F).setUnlocalizedName("ams_catalyst_iron").setCreativeTab(MainRegistry.tabParts).setMaxStackSize(1).setTextureName(RefStrings.MODID + ":ams_catalyst_iron"); ams_catalyst_lithium = new ItemCatalyst(0xFF2727, 0, 1.25F, 0.85F, 1.15F).setUnlocalizedName("ams_catalyst_lithium").setCreativeTab(MainRegistry.tabParts).setMaxStackSize(1).setTextureName(RefStrings.MODID + ":ams_catalyst_lithium"); ams_catalyst_niobium = new ItemCatalyst(0x3BF1B6, 1000000, 1.15F, 1.05F, 0.95F).setUnlocalizedName("ams_catalyst_niobium").setCreativeTab(MainRegistry.tabParts).setMaxStackSize(1).setTextureName(RefStrings.MODID + ":ams_catalyst_niobium"); - ams_catalyst_schrabidium = new ItemCatalyst(0x32FFFF, 2500000, 1.0F, 1.05F, 0.95F).setUnlocalizedName("ams_catalyst_schrabidium").setCreativeTab(MainRegistry.tabParts).setMaxStackSize(1).setTextureName(RefStrings.MODID + ":ams_catalyst_schrabidium"); - ams_catalyst_strontium = new ItemCatalyst(0xDD0D35, 1000000, 1.15F, 1.0F, 1.0F).setUnlocalizedName("ams_catalyst_strontium").setCreativeTab(MainRegistry.tabParts).setMaxStackSize(1).setTextureName(RefStrings.MODID + ":ams_catalyst_strontium"); - ams_catalyst_thorium = new ItemCatalyst(0x653B22, 2500000, 1.0F, 0.95F, 1.05F).setUnlocalizedName("ams_catalyst_thorium").setCreativeTab(MainRegistry.tabParts).setMaxStackSize(1).setTextureName(RefStrings.MODID + ":ams_catalyst_thorium"); + ams_catalyst_schrabidium = new ItemCatalyst(0x32FFFF, 2500000, 1.00F, 1.05F, 0.95F).setUnlocalizedName("ams_catalyst_schrabidium").setCreativeTab(MainRegistry.tabParts).setMaxStackSize(1).setTextureName(RefStrings.MODID + ":ams_catalyst_schrabidium"); + ams_catalyst_strontium = new ItemCatalyst(0xDD0D35, 1000000, 1.15F, 1.00F, 1.00F).setUnlocalizedName("ams_catalyst_strontium").setCreativeTab(MainRegistry.tabParts).setMaxStackSize(1).setTextureName(RefStrings.MODID + ":ams_catalyst_strontium"); + ams_catalyst_thorium = new ItemCatalyst(0x653B22, 2500000, 1.00F, 0.95F, 1.05F).setUnlocalizedName("ams_catalyst_thorium").setCreativeTab(MainRegistry.tabParts).setMaxStackSize(1).setTextureName(RefStrings.MODID + ":ams_catalyst_thorium"); ams_catalyst_tungsten = new ItemCatalyst(0xF5FF48, 0, 1.25F, 1.15F, 0.85F).setUnlocalizedName("ams_catalyst_tungsten").setCreativeTab(MainRegistry.tabParts).setMaxStackSize(1).setTextureName(RefStrings.MODID + ":ams_catalyst_tungsten"); cell_empty = new ItemCell().setUnlocalizedName("cell_empty").setCreativeTab(MainRegistry.tabParts).setTextureName(RefStrings.MODID + ":cell_empty"); @@ -1950,6 +1956,8 @@ public class ModItems { solinium_igniter = new ItemSolinium().setUnlocalizedName("solinium_igniter").setMaxStackSize(1).setCreativeTab(MainRegistry.tabNuke).setTextureName(RefStrings.MODID + ":solinium_igniter"); solinium_propellant = new ItemSolinium().setUnlocalizedName("solinium_propellant").setMaxStackSize(1).setCreativeTab(MainRegistry.tabNuke).setTextureName(RefStrings.MODID + ":solinium_propellant"); solinium_core = new ItemSolinium().setUnlocalizedName("solinium_core").setMaxStackSize(1).setCreativeTab(MainRegistry.tabNuke).setTextureName(RefStrings.MODID + ":solinium_core"); + + n2_charge = new ItemN2().setUnlocalizedName("n2_charge").setMaxStackSize(1).setCreativeTab(MainRegistry.tabNuke).setTextureName(RefStrings.MODID + ":n2_charge"); battery_generic = new ItemBattery(50).setUnlocalizedName("battery_generic").setMaxStackSize(1).setCreativeTab(MainRegistry.tabParts).setTextureName(RefStrings.MODID + ":battery_generic"); battery_advanced = new ItemBattery(200).setUnlocalizedName("battery_advanced").setMaxStackSize(1).setCreativeTab(MainRegistry.tabParts).setTextureName(RefStrings.MODID + ":battery_advanced"); @@ -2728,6 +2736,9 @@ public class ModItems { GameRegistry.registerItem(pellet_lead, pellet_lead.getUnlocalizedName()); GameRegistry.registerItem(pellet_advanced, pellet_advanced.getUnlocalizedName()); + //Engine Pieces + GameRegistry.registerItem(piston_selenium, piston_selenium.getUnlocalizedName()); + //Cells GameRegistry.registerItem(cell_empty, cell_empty.getUnlocalizedName()); GameRegistry.registerItem(cell_uf6, cell_uf6.getUnlocalizedName()); @@ -3412,6 +3423,9 @@ public class ModItems { GameRegistry.registerItem(solinium_propellant, solinium_propellant.getUnlocalizedName()); GameRegistry.registerItem(solinium_core, solinium_core.getUnlocalizedName()); + //N2 + GameRegistry.registerItem(n2_charge, n2_charge.getUnlocalizedName()); + //Conventional Armor GameRegistry.registerItem(goggles, goggles.getUnlocalizedName()); GameRegistry.registerItem(gas_mask, gas_mask.getUnlocalizedName()); diff --git a/com/hbm/items/bomb/ItemN2.java b/com/hbm/items/bomb/ItemN2.java new file mode 100644 index 000000000..c837fee78 --- /dev/null +++ b/com/hbm/items/bomb/ItemN2.java @@ -0,0 +1,18 @@ +package com.hbm.items.bomb; + +import java.util.List; + +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; + +public class ItemN2 extends Item { + + @Override + public void addInformation(ItemStack itemstack, EntityPlayer player, List list, boolean bool) + { + list.add("Used in:"); + list.add("N² Mine"); + } + +} diff --git a/com/hbm/main/ClientProxy.java b/com/hbm/main/ClientProxy.java index 57c7a58df..5d2ce35df 100644 --- a/com/hbm/main/ClientProxy.java +++ b/com/hbm/main/ClientProxy.java @@ -94,6 +94,7 @@ public class ClientProxy extends ServerProxy ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachinePress.class, new RenderPress()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineRadGen.class, new RenderRadGen()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineRadar.class, new RenderRadar()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineSeleniumEngine.class, new RenderSelenium()); //RenderingRegistry.registerEntityRenderingHandler(EntityRocket.class, new RenderRocket()); RenderingRegistry.registerEntityRenderingHandler(EntityRocket.class, new RenderSnowball(ModItems.man_core)); diff --git a/com/hbm/main/MainRegistry.java b/com/hbm/main/MainRegistry.java index 4297ea72d..2d92a9217 100644 --- a/com/hbm/main/MainRegistry.java +++ b/com/hbm/main/MainRegistry.java @@ -253,6 +253,7 @@ import com.hbm.tileentity.machine.TileEntityMachineReactor; import com.hbm.tileentity.machine.TileEntityMachineRefinery; import com.hbm.tileentity.machine.TileEntityMachineSPP; import com.hbm.tileentity.machine.TileEntityMachineSchrabidiumTransmutator; +import com.hbm.tileentity.machine.TileEntityMachineSeleniumEngine; import com.hbm.tileentity.machine.TileEntityMachineShredder; import com.hbm.tileentity.machine.TileEntityMachineSiren; import com.hbm.tileentity.machine.TileEntityMachineTeleporter; @@ -404,6 +405,7 @@ public class MainRegistry public static int tungstenSpawn = 10; public static int leadSpawn = 6; public static int berylliumSpawn = 6; + public static int gadgetRadius = 150; public static int boyRadius = 120; public static int manRadius = 175; @@ -411,12 +413,16 @@ public class MainRegistry public static int tsarRadius = 500; public static int prototypeRadius = 150; public static int fleijaRadius = 50; + public static int soliniumRadius = 75; + public static int n2Radius = 100; public static int missileRadius = 100; public static int mirvRadius = 100; public static int fatmanRadius = 35; public static int nukaRadius = 25; public static int aSchrabRadius = 20; + public static int blastSpeed = 1024; + public static int radioStructure = 500; public static int antennaStructure = 250; public static int atomStructure = 500; @@ -602,6 +608,7 @@ public class MainRegistry GameRegistry.registerTileEntity(TileEntityCelPrimeBattery.class, "tileentity_cel_prime_energy"); GameRegistry.registerTileEntity(TileEntityCelPrimePort.class, "tileentity_cel_prime_connector"); GameRegistry.registerTileEntity(TileEntityCelPrimeTanks.class, "tileentity_cel_prime_storage"); + GameRegistry.registerTileEntity(TileEntityMachineSeleniumEngine.class, "tileentity_selenium_engine"); EntityRegistry.registerModEntity(EntityRocket.class, "entity_rocket", 0, this, 250, 1, true); EntityRegistry.registerModEntity(EntityNukeExplosion.class, "entity_nuke_explosion", 1, this, 250, 1, true); @@ -1309,6 +1316,12 @@ public class MainRegistry Property propASchrab = config.get(Configuration.CATEGORY_GENERAL, "3.11_aSchrabRadius", 20); propASchrab.comment = "Radius of dropped anti schrabidium"; aSchrabRadius = propASchrab.getInt(); + Property propSolinium = config.get(Configuration.CATEGORY_GENERAL, "3.12_soliniumRadius", 75); + propSolinium.comment = "Radius of the blue rinse"; + soliniumRadius = propSolinium.getInt(); + Property propN2 = config.get(Configuration.CATEGORY_GENERAL, "3.13_n2Radius", 100); + propN2.comment = "Radius of the N2 mine"; + n2Radius = propN2.getInt(); Property propRadio = config.get(Configuration.CATEGORY_GENERAL, "4.00_radioSpawn", 500); propRadio.comment = "Spawn radio station on every nTH chunk"; diff --git a/com/hbm/main/ResourceManager.java b/com/hbm/main/ResourceManager.java index 4430498ba..55a9b7300 100644 --- a/com/hbm/main/ResourceManager.java +++ b/com/hbm/main/ResourceManager.java @@ -43,6 +43,11 @@ public class ResourceManager { public static final IModelCustom turbofan_body = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/turbofan_body.obj")); public static final IModelCustom turbofan_blades = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/turbofan_blades.obj")); + //Selenium Engine + public static final IModelCustom selenium_body = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/selenium_engine_body.obj")); + public static final IModelCustom selenium_rotor = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/selenium_engine_rotor.obj")); + public static final IModelCustom selenium_piston = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/selenium_engine_piston.obj")); + //Press public static final IModelCustom press_body = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/press_body.obj")); public static final IModelCustom press_head = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/press_head.obj")); diff --git a/com/hbm/packet/AuxGaugePacket.java b/com/hbm/packet/AuxGaugePacket.java index 1a034b45c..01adf4b92 100644 --- a/com/hbm/packet/AuxGaugePacket.java +++ b/com/hbm/packet/AuxGaugePacket.java @@ -7,6 +7,7 @@ import com.hbm.tileentity.bomb.TileEntityTurretCheapo; import com.hbm.tileentity.machine.TileEntityAMSBase; import com.hbm.tileentity.machine.TileEntityAMSEmitter; import com.hbm.tileentity.machine.TileEntityAMSLimiter; +import com.hbm.tileentity.machine.TileEntityMachineSeleniumEngine; import cpw.mods.fml.common.network.simpleimpl.IMessage; import cpw.mods.fml.common.network.simpleimpl.IMessageHandler; @@ -101,6 +102,11 @@ public class AuxGaugePacket implements IMessage { cwis.rotation = m.value; } + if (te instanceof TileEntityMachineSeleniumEngine) { + TileEntityMachineSeleniumEngine selenium = (TileEntityMachineSeleniumEngine)te; + + selenium.pistonCount = m.value; + } } catch (Exception x) { } return null; diff --git a/com/hbm/render/tileentity/RenderSelenium.java b/com/hbm/render/tileentity/RenderSelenium.java new file mode 100644 index 000000000..3c3a0eb6c --- /dev/null +++ b/com/hbm/render/tileentity/RenderSelenium.java @@ -0,0 +1,56 @@ +package com.hbm.render.tileentity; + +import org.lwjgl.opengl.GL11; + +import com.hbm.main.MainRegistry; +import com.hbm.main.ResourceManager; +import com.hbm.tileentity.machine.TileEntityMachineSeleniumEngine; + +import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; +import net.minecraft.tileentity.TileEntity; + +public class RenderSelenium extends TileEntitySpecialRenderer { + + @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); + GL11.glRotatef(-90, 0F, 1F, 0F); + + switch(tileEntity.getBlockMetadata()) + { + case 2: + GL11.glRotatef(90, 0F, 1F, 0F); break; + case 4: + GL11.glRotatef(180, 0F, 1F, 0F); break; + case 3: + GL11.glRotatef(270, 0F, 1F, 0F); break; + case 5: + GL11.glRotatef(0, 0F, 1F, 0F); break; + } + + bindTexture(ResourceManager.universal); + ResourceManager.selenium_body.renderAll(); + + GL11.glTranslated(0.0D, 1.0D, 0.0D); + + int count = ((TileEntityMachineSeleniumEngine)tileEntity).pistonCount; + + float rot = 360F / count; + + for(int i = 0; i < count; i++) { + ResourceManager.selenium_piston.renderAll(); + GL11.glRotatef(rot, 0, 0, 1); + } + + GL11.glRotatef((System.currentTimeMillis() / 10) % 360, 0F, 0F, -1F); + + ResourceManager.selenium_rotor.renderAll(); + + GL11.glPopMatrix(); + } +} diff --git a/com/hbm/tileentity/bomb/TileEntityCelPrime.java b/com/hbm/tileentity/bomb/TileEntityCelPrime.java index 310586c84..0d8bc7428 100644 --- a/com/hbm/tileentity/bomb/TileEntityCelPrime.java +++ b/com/hbm/tileentity/bomb/TileEntityCelPrime.java @@ -174,7 +174,7 @@ public class TileEntityCelPrime extends TileEntity implements ISidedInventory { case 2: appendText("No external PCI devices found!"); appendText(""); - appendText("Self-test in progres..."); + appendText("Self-test in progress..."); break; case 3: appendText("Hardware self-test successful!"); @@ -202,6 +202,14 @@ public class TileEntityCelPrime extends TileEntity implements ISidedInventory { break; case 9: appendText("All systems ready!"); + appendText(""); + appendText(""); + appendText(""); + appendText("=============================="); + appendText("CEL PRIME is a WIP feature and not"); + appendText("yet functional. please don't ask me how"); + appendText("it works because it DOESN'T!"); + appendText("=============================="); break; } } diff --git a/com/hbm/tileentity/bomb/TileEntityNukeN2.java b/com/hbm/tileentity/bomb/TileEntityNukeN2.java index f01d6640d..fc12a1bf6 100644 --- a/com/hbm/tileentity/bomb/TileEntityNukeN2.java +++ b/com/hbm/tileentity/bomb/TileEntityNukeN2.java @@ -19,7 +19,7 @@ public class TileEntityNukeN2 extends TileEntity implements ISidedInventory { private String customName; public TileEntityNukeN2() { - slots = new ItemStack[9]; + slots = new ItemStack[12]; } @Override @@ -77,7 +77,7 @@ public class TileEntityNukeN2 extends TileEntity implements ISidedInventory { @Override public String getInventoryName() { - return this.hasCustomInventoryName() ? this.customName : "container.nukeSolinium"; + return this.hasCustomInventoryName() ? this.customName : "container.nukeN2"; } @Override @@ -171,16 +171,19 @@ public class TileEntityNukeN2 extends TileEntity implements ISidedInventory { public boolean isReady() { - if(slots[0] != null && slots[1] != null && slots[2] != null && slots[3] != null && slots[4] != null && slots[5] != null && slots[6] != null && slots[7] != null && slots[8] != null) - if(slots[0].getItem() == ModItems.solinium_igniter && - slots[1].getItem() == ModItems.solinium_propellant && - slots[2].getItem() == ModItems.solinium_propellant && - slots[3].getItem() == ModItems.solinium_igniter && - slots[4].getItem() == ModItems.solinium_core && - slots[5].getItem() == ModItems.solinium_igniter && - slots[6].getItem() == ModItems.solinium_propellant && - slots[7].getItem() == ModItems.solinium_propellant && - slots[8].getItem() == ModItems.solinium_igniter) + if(slots[0] != null && slots[1] != null && slots[2] != null && slots[3] != null && slots[4] != null && slots[5] != null && slots[6] != null && slots[7] != null && slots[8] != null && slots[9] != null && slots[10] != null && slots[11] != null) + if(slots[0].getItem() == ModItems.n2_charge && + slots[1].getItem() == ModItems.n2_charge && + slots[2].getItem() == ModItems.n2_charge && + slots[3].getItem() == ModItems.n2_charge && + slots[4].getItem() == ModItems.n2_charge && + slots[5].getItem() == ModItems.n2_charge && + slots[6].getItem() == ModItems.n2_charge && + slots[7].getItem() == ModItems.n2_charge && + slots[8].getItem() == ModItems.n2_charge && + slots[9].getItem() == ModItems.n2_charge && + slots[10].getItem() == ModItems.n2_charge && + slots[11].getItem() == ModItems.n2_charge) { return true; } diff --git a/com/hbm/tileentity/machine/TileEntityMachineSeleniumEngine.java b/com/hbm/tileentity/machine/TileEntityMachineSeleniumEngine.java new file mode 100644 index 000000000..f43ffaf2d --- /dev/null +++ b/com/hbm/tileentity/machine/TileEntityMachineSeleniumEngine.java @@ -0,0 +1,375 @@ +package com.hbm.tileentity.machine; + +import java.util.ArrayList; +import java.util.List; + +import com.hbm.blocks.ModBlocks; +import com.hbm.handler.FluidTypeHandler.FluidType; +import com.hbm.interfaces.IConsumer; +import com.hbm.interfaces.IFluidAcceptor; +import com.hbm.interfaces.IFluidContainer; +import com.hbm.interfaces.ISource; +import com.hbm.inventory.FluidTank; +import com.hbm.items.ModItems; +import com.hbm.items.special.ItemBattery; +import com.hbm.lib.Library; +import com.hbm.packet.AuxElectricityPacket; +import com.hbm.packet.AuxGaugePacket; +import com.hbm.packet.PacketDispatcher; + +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.inventory.ISidedInventory; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.nbt.NBTTagList; +import net.minecraft.tileentity.TileEntity; + +public class TileEntityMachineSeleniumEngine extends TileEntity implements ISidedInventory, ISource, IFluidContainer, IFluidAcceptor { + + private ItemStack slots[]; + + public long power; + public int soundCycle = 0; + public static final long maxPower = 100000; + public long powerCap = 100000; + public int age = 0; + public List list = new ArrayList(); + public FluidTank tank; + public int pistonCount = 0; + + private static final int[] slots_top = new int[] { 0 }; + private static final int[] slots_bottom = new int[] { 1, 2 }; + private static final int[] slots_side = new int[] { 2 }; + + private String customName; + + public TileEntityMachineSeleniumEngine() { + slots = new ItemStack[14]; + tank = new FluidTank(FluidType.DIESEL, 16000, 0); + } + + @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.machineSelenium"; + } + + @Override + public boolean hasCustomInventoryName() { + return this.customName != null && this.customName.length() > 0; + } + + public void setCustomName(String name) { + this.customName = name; + } + + @Override + public int getInventoryStackLimit() { + return 64; + } + + @Override + public boolean isUseableByPlayer(EntityPlayer player) { + if (worldObj.getTileEntity(xCoord, yCoord, zCoord) != this) { + return false; + } else { + return player.getDistanceSq(xCoord + 0.5D, yCoord + 0.5D, zCoord + 0.5D) <= 64; + } + } + + // You scrubs aren't needed for anything (right now) + @Override + public void openInventory() { + } + + @Override + public void closeInventory() { + } + + @Override + public boolean isItemValidForSlot(int i, ItemStack stack) { + return false; + } + + @Override + public ItemStack decrStackSize(int i, int j) { + if (slots[i] != null) { + if (slots[i].stackSize <= j) { + ItemStack itemStack = slots[i]; + slots[i] = null; + return itemStack; + } + ItemStack itemStack1 = slots[i].splitStack(j); + if (slots[i].stackSize == 0) { + slots[i] = null; + } + + return itemStack1; + } else { + return null; + } + } + + @Override + public void readFromNBT(NBTTagCompound nbt) { + super.readFromNBT(nbt); + NBTTagList list = nbt.getTagList("items", 10); + + this.power = nbt.getLong("powerTime"); + this.powerCap = nbt.getLong("powerCap"); + tank.readFromNBT(nbt, "fuel"); + slots = new ItemStack[getSizeInventory()]; + + for (int i = 0; i < list.tagCount(); i++) { + NBTTagCompound nbt1 = list.getCompoundTagAt(i); + byte b0 = nbt1.getByte("slot"); + if (b0 >= 0 && b0 < slots.length) { + slots[b0] = ItemStack.loadItemStackFromNBT(nbt1); + } + } + } + + @Override + public void writeToNBT(NBTTagCompound nbt) { + super.writeToNBT(nbt); + nbt.setLong("powerTime", power); + nbt.setLong("powerCap", powerCap); + tank.writeToNBT(nbt, "fuel"); + 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) { + if (i == 1) + if (itemStack.getItem() == ModItems.canister_empty || itemStack.getItem() == ModItems.tank_steel) + return true; + if (i == 2) + if (itemStack.getItem() instanceof ItemBattery && ItemBattery.getCharge(itemStack) == ItemBattery.getMaxChargeStatic(itemStack)) + return true; + + return false; + } + + public long getPowerScaled(long i) { + return (power * i) / powerCap; + } + + @Override + public void updateEntity() { + if (!worldObj.isRemote) { + age++; + if (age >= 20) { + age = 0; + } + + if (age == 9 || age == 19) + ffgeuaInit(); + + pistonCount = countPistons(); + + //Tank Management + tank.setType(11, 12, slots); + tank.loadTank(9, 10, slots); + tank.updateTank(xCoord, yCoord, zCoord); + + FluidType type = tank.getTankType(); + if(type.name().equals(FluidType.NITAN.name())) + powerCap = maxPower * 10; + else + powerCap = maxPower; + + // Battery Item + power = Library.chargeItemsFromTE(slots, 13, power, powerCap); + + generate(); + + PacketDispatcher.wrapper.sendToAll(new AuxElectricityPacket(xCoord, yCoord, zCoord, power)); + PacketDispatcher.wrapper.sendToAll(new AuxGaugePacket(xCoord, yCoord, zCoord, pistonCount, 0)); + } + } + + public int countPistons() { + int count = 0; + + for(int i = 0; i < 9; i++) { + if(slots[i] != null && slots[i].getItem() == ModItems.piston_selenium) + count++; + } + + return count; + } + + public boolean hasAcceptableFuel() { + return getHEFromFuel() > 0; + } + + public int getHEFromFuel() { + FluidType type = tank.getTankType(); + if(type.name().equals(FluidType.SMEAR.name())) + return 100; + if(type.name().equals(FluidType.HEATINGOIL.name())) + return 150; + if(type.name().equals(FluidType.DIESEL.name())) + return 450; + if(type.name().equals(FluidType.KEROSENE.name())) + return 600; + if(type.name().equals(FluidType.RECLAIMED.name())) + return 200; + if(type.name().equals(FluidType.PETROIL.name())) + return 250; + if(type.name().equals(FluidType.BIOFUEL.name())) + return 400; + if(type.name().equals(FluidType.NITAN.name())) + return 5000; + return 0; + } + + public void generate() { + if (hasAcceptableFuel()) { + if (tank.getFill() > 0) { + if (soundCycle == 0) { + //if (tank.getTankType().name().equals(FluidType.) > 0) + // this.worldObj.playSoundEffect(this.xCoord, this.yCoord, this.zCoord, "fireworks.blast", 1.0F, 1.0F); + //else + this.worldObj.playSoundEffect(this.xCoord, this.yCoord, this.zCoord, "fireworks.blast", 1.0F, 0.5F); + } + soundCycle++; + + if (soundCycle >= 3) + soundCycle = 0; + //if (this.superTimer > 0) + // soundCycle = 0; + + tank.setFill(tank.getFill() - 10); + if (tank.getFill() < 0) + tank.setFill(0); + + if (power + getHEFromFuel() <= powerCap) { + power += getHEFromFuel(); + } else { + power = powerCap; + } + } + } + } + + @Override + public void ffgeua(int x, int y, int z, boolean newTact) { + + Library.ffgeua(x, y, z, newTact, this, worldObj); + } + + @Override + public void ffgeuaInit() { + ffgeua(this.xCoord, this.yCoord + 1, this.zCoord, getTact()); + ffgeua(this.xCoord, this.yCoord - 1, this.zCoord, getTact()); + ffgeua(this.xCoord - 1, this.yCoord, this.zCoord, getTact()); + ffgeua(this.xCoord + 1, this.yCoord, this.zCoord, getTact()); + ffgeua(this.xCoord, this.yCoord, this.zCoord - 1, getTact()); + ffgeua(this.xCoord, this.yCoord, this.zCoord + 1, getTact()); + } + + @Override + public boolean getTact() { + if (age >= 0 && age < 10) { + return true; + } + + return false; + } + + @Override + public long getSPower() { + return power; + } + + @Override + public void setSPower(long i) { + this.power = i; + } + + @Override + public List getList() { + return list; + } + + @Override + public void clearList() { + this.list.clear(); + } + + @Override + public void setFillstate(int fill, int index) { + tank.setFill(fill); + } + + @Override + public void setType(FluidType type, int index) { + tank.setTankType(type); + } + + @Override + public int getMaxAFluidFill(FluidType type) { + return type.name().equals(this.tank.getTankType().name()) ? tank.getMaxFill() : 0; + } + + @Override + public int getAFluidFill(FluidType type) { + return type.name().equals(this.tank.getTankType().name()) ? tank.getFill() : 0; + } + + @Override + public void setAFluidFill(int i, FluidType type) { + if(type.name().equals(tank.getTankType().name())) + tank.setFill(i); + } +}