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 000000000..04a1bd2ab Binary files /dev/null and b/assets/hbm/textures/blocks/fusion_center_side_alt.png differ diff --git a/assets/hbm/textures/blocks/fusion_center_top_alt.png b/assets/hbm/textures/blocks/fusion_center_top_alt.png new file mode 100644 index 000000000..d190eba5c Binary files /dev/null and b/assets/hbm/textures/blocks/fusion_center_top_alt.png differ diff --git a/assets/hbm/textures/blocks/fusion_conductor_side_alt2.png b/assets/hbm/textures/blocks/fusion_conductor_side_alt2.png new file mode 100644 index 000000000..72bfdc87d Binary files /dev/null and b/assets/hbm/textures/blocks/fusion_conductor_side_alt2.png differ diff --git a/assets/hbm/textures/blocks/fusion_conductor_side_alt3.png b/assets/hbm/textures/blocks/fusion_conductor_side_alt3.png new file mode 100644 index 000000000..ce10fb10b Binary files /dev/null and b/assets/hbm/textures/blocks/fusion_conductor_side_alt3.png differ 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 000000000..44e0b99a1 Binary files /dev/null and b/assets/hbm/textures/blocks/fusion_core_side_alt.png differ diff --git a/assets/hbm/textures/blocks/fusion_motor_side_alt.png b/assets/hbm/textures/blocks/fusion_motor_side_alt.png new file mode 100644 index 000000000..ba5d78f9b Binary files /dev/null and b/assets/hbm/textures/blocks/fusion_motor_side_alt.png differ 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 000000000..817e13d98 Binary files /dev/null and b/assets/hbm/textures/blocks/fusion_motor_top_alt.png differ diff --git a/assets/hbm/textures/blocks/machine_selenium.png b/assets/hbm/textures/blocks/machine_selenium.png new file mode 100644 index 000000000..05523101a Binary files /dev/null and b/assets/hbm/textures/blocks/machine_selenium.png differ diff --git a/assets/hbm/textures/gui/gui_selenium.png b/assets/hbm/textures/gui/gui_selenium.png new file mode 100644 index 000000000..5cf250a6b Binary files /dev/null and b/assets/hbm/textures/gui/gui_selenium.png differ diff --git a/assets/hbm/textures/gui/gui_utility.png b/assets/hbm/textures/gui/gui_utility.png new file mode 100644 index 000000000..ba9e4ffb4 Binary files /dev/null and b/assets/hbm/textures/gui/gui_utility.png differ diff --git a/assets/hbm/textures/gui/n2Schematic.png b/assets/hbm/textures/gui/n2Schematic.png index 6cfad0e4d..844979862 100644 Binary files a/assets/hbm/textures/gui/n2Schematic.png and b/assets/hbm/textures/gui/n2Schematic.png differ diff --git a/assets/hbm/textures/items/circuit_targeting_burnt.png b/assets/hbm/textures/items/circuit_targeting_burnt.png new file mode 100644 index 000000000..351d6a4cb Binary files /dev/null and b/assets/hbm/textures/items/circuit_targeting_burnt.png differ diff --git a/assets/hbm/textures/items/n2_charge.png b/assets/hbm/textures/items/n2_charge.png new file mode 100644 index 000000000..5360e488f Binary files /dev/null and b/assets/hbm/textures/items/n2_charge.png differ diff --git a/assets/hbm/textures/items/piston_selenium.png b/assets/hbm/textures/items/piston_selenium.png new file mode 100644 index 000000000..eee384940 Binary files /dev/null and b/assets/hbm/textures/items/piston_selenium.png differ diff --git a/com/hbm/blocks/ModBlocks.java b/com/hbm/blocks/ModBlocks.java index c79b7e4ed..02936f3dc 100644 --- a/com/hbm/blocks/ModBlocks.java +++ b/com/hbm/blocks/ModBlocks.java @@ -410,6 +410,9 @@ public class ModBlocks { public static Block machine_turbofan; public static final int guiID_machine_turbofan = 52; + public static Block machine_selenium; + public static final int guiID_machine_selenium = 63; + public static Block machine_press; public static final int guiID_machine_press = 53; @@ -803,6 +806,7 @@ public class ModBlocks { machine_fluidtank = new MachineFluidTank(Material.iron).setBlockName("machine_fluidtank").setHardness(5.0F).setResistance(100.0F).setCreativeTab(MainRegistry.tabBlock).setBlockTextureName(RefStrings.MODID + ":machine_fluidtank"); machine_turbofan = new MachineTurbofan(Material.iron).setBlockName("machine_turbofan").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.tabBlock).setBlockTextureName(RefStrings.MODID + ":machine_turbofan"); machine_press = new MachinePress(Material.iron).setBlockName("machine_press").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.tabBlock).setBlockTextureName(RefStrings.MODID + ":machine_press"); + machine_selenium = new MachineSeleniumEngine(Material.iron).setBlockName("machine_selenium").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.tabBlock).setBlockTextureName(RefStrings.MODID + ":machine_selenium"); machine_schrabidium_transmutator = new MachineSchrabidiumTransmutator(Material.iron).setBlockName("machine_schrabidium_transmutator").setHardness(5.0F).setResistance(100.0F).setCreativeTab(MainRegistry.tabBlock); @@ -1082,6 +1086,7 @@ public class ModBlocks { GameRegistry.registerBlock(machine_coal_off, machine_coal_off.getUnlocalizedName()); GameRegistry.registerBlock(machine_coal_on, machine_coal_on.getUnlocalizedName()); GameRegistry.registerBlock(machine_diesel, machine_diesel.getUnlocalizedName()); + GameRegistry.registerBlock(machine_selenium, machine_selenium.getUnlocalizedName()); GameRegistry.registerBlock(machine_generator, machine_generator.getUnlocalizedName()); GameRegistry.registerBlock(machine_industrial_generator, machine_industrial_generator.getUnlocalizedName()); GameRegistry.registerBlock(machine_radgen, machine_radgen.getUnlocalizedName()); diff --git a/com/hbm/blocks/bomb/NukeMike.java b/com/hbm/blocks/bomb/NukeMike.java index e957c0a2c..2116e56a4 100644 --- a/com/hbm/blocks/bomb/NukeMike.java +++ b/com/hbm/blocks/bomb/NukeMike.java @@ -145,19 +145,11 @@ public class NukeMike extends BlockContainer implements IBomb { world.spawnEntityInWorld(EntityNukeExplosionMK4.statFac(world, MainRegistry.mikeRadius, x + 0.5, y + 0.5, z + 0.5)); if (MainRegistry.enableNukeClouds) { - if (r < 200) { - EntityNukeCloudSmall entity2 = new EntityNukeCloudSmall(world, 1000, r * 0.005F); - entity2.posX = x; - entity2.posY = y; - entity2.posZ = z; - world.spawnEntityInWorld(entity2); - } else { - EntityNukeCloudSmall entity2 = new EntityNukeCloudSmall(world, 1000, r * 0.005F); - entity2.posX = x; - entity2.posY = y; - entity2.posZ = z; - world.spawnEntityInWorld(entity2); - } + EntityNukeCloudSmall entity2 = new EntityNukeCloudSmall(world, 1000, r * 0.005F); + entity2.posX = x; + entity2.posY = y; + entity2.posZ = z; + world.spawnEntityInWorld(entity2); } else { EntityNukeCloudSmall entity2 = new EntityNukeCloudNoShroom(world, 1000); entity2.posX = x; diff --git a/com/hbm/blocks/bomb/NukeN2.java b/com/hbm/blocks/bomb/NukeN2.java index a12a4126d..a4750cc03 100644 --- a/com/hbm/blocks/bomb/NukeN2.java +++ b/com/hbm/blocks/bomb/NukeN2.java @@ -6,7 +6,9 @@ import java.util.Random; import com.hbm.blocks.ModBlocks; import com.hbm.entity.effect.EntityCloudSolinium; +import com.hbm.entity.effect.EntityNukeCloudSmall; import com.hbm.entity.logic.EntityNukeExplosionMK3; +import com.hbm.entity.logic.EntityNukeExplosionMK4; import com.hbm.interfaces.IBomb; import com.hbm.main.MainRegistry; import com.hbm.tileentity.bomb.TileEntityNukeN2; @@ -127,7 +129,7 @@ public class NukeN2 extends BlockContainer implements IBomb { this.onBlockDestroyedByPlayer(p_149695_1_, x, y, z, 1); entity.clearSlots(); p_149695_1_.setBlockToAir(x, y, z); - igniteTestBomb(p_149695_1_, x, y, z, MainRegistry.fleijaRadius); + igniteTestBomb(p_149695_1_, x, y, z, MainRegistry.n2Radius); } } } @@ -137,24 +139,14 @@ public class NukeN2 extends BlockContainer implements IBomb { if (!world.isRemote) { world.playSoundEffect(x, y, z, "random.explode", 1.0f, world.rand.nextFloat() * 0.1F + 0.9F); - - EntityNukeExplosionMK3 entity = new EntityNukeExplosionMK3(world); - entity.posX = x; - entity.posY = y; - entity.posZ = z; - entity.destructionRange = r; - entity.speed = MainRegistry.blastSpeed; - entity.coefficient = 1.0F; - entity.waste = false; - entity.extType = 1; - - world.spawnEntityInWorld(entity); + + world.spawnEntityInWorld(EntityNukeExplosionMK4.statFacNoRad(world, r, x + 0.5, y + 0.5, z + 0.5)); - EntityCloudSolinium cloud = new EntityCloudSolinium(world, r); - cloud.posX = x; - cloud.posY = y; - cloud.posZ = z; - world.spawnEntityInWorld(cloud); + EntityNukeCloudSmall entity2 = new EntityNukeCloudSmall(world, 1000, r * 0.005F); + entity2.posX = x; + entity2.posY = y; + entity2.posZ = z; + world.spawnEntityInWorld(entity2); } return false; diff --git a/com/hbm/blocks/bomb/NukeSolinium.java b/com/hbm/blocks/bomb/NukeSolinium.java index fc4beede9..5a6edec42 100644 --- a/com/hbm/blocks/bomb/NukeSolinium.java +++ b/com/hbm/blocks/bomb/NukeSolinium.java @@ -128,7 +128,7 @@ public class NukeSolinium extends BlockContainer implements IBomb { this.onBlockDestroyedByPlayer(p_149695_1_, x, y, z, 1); entity.clearSlots(); p_149695_1_.setBlockToAir(x, y, z); - igniteTestBomb(p_149695_1_, x, y, z, MainRegistry.fleijaRadius); + igniteTestBomb(p_149695_1_, x, y, z, MainRegistry.soliniumRadius); } } } diff --git a/com/hbm/blocks/machine/BlockReactor.java b/com/hbm/blocks/machine/BlockReactor.java index c4dc2ccb2..0467166c1 100644 --- a/com/hbm/blocks/machine/BlockReactor.java +++ b/com/hbm/blocks/machine/BlockReactor.java @@ -40,17 +40,17 @@ public class BlockReactor extends Block { if(this == ModBlocks.fusion_conductor) { this.iconTop = iconRegister.registerIcon(RefStrings.MODID + /*":fusion_conductor_top_alt"*/":block_steel"); - this.blockIcon = iconRegister.registerIcon(RefStrings.MODID + /*":fusion_conductor_alt"*/":fusion_conductor_side"); + this.blockIcon = iconRegister.registerIcon(RefStrings.MODID + /*":fusion_conductor_alt"*/":fusion_conductor_side_alt3"); } if(this == ModBlocks.fusion_center) { - this.iconTop = iconRegister.registerIcon(RefStrings.MODID + ":fusion_center_top"); - this.blockIcon = iconRegister.registerIcon(RefStrings.MODID + ":fusion_center_side"); + this.iconTop = iconRegister.registerIcon(RefStrings.MODID + ":fusion_center_top_alt"); + this.blockIcon = iconRegister.registerIcon(RefStrings.MODID + ":fusion_center_side_alt"); } if(this == ModBlocks.fusion_motor) { - this.iconTop = iconRegister.registerIcon(RefStrings.MODID + ":block_steel"); - this.blockIcon = iconRegister.registerIcon(RefStrings.MODID + ":fusion_motor_side"); + this.iconTop = iconRegister.registerIcon(RefStrings.MODID + ":fusion_motor_top_alt"); + this.blockIcon = iconRegister.registerIcon(RefStrings.MODID + ":fusion_motor_side_alt"); } if(this == ModBlocks.fusion_heater) { diff --git a/com/hbm/blocks/machine/FusionCore.java b/com/hbm/blocks/machine/FusionCore.java index 54e758974..d2a26bc1d 100644 --- a/com/hbm/blocks/machine/FusionCore.java +++ b/com/hbm/blocks/machine/FusionCore.java @@ -24,8 +24,8 @@ public class FusionCore extends BlockContainer { @Override @SideOnly(Side.CLIENT) public void registerBlockIcons(IIconRegister iconRegister) { - this.iconTop = iconRegister.registerIcon(RefStrings.MODID + ":fusion_center_top"); - this.blockIcon = iconRegister.registerIcon(RefStrings.MODID + ":fusion_core_side"); + this.iconTop = iconRegister.registerIcon(RefStrings.MODID + ":fusion_center_top_alt"); + this.blockIcon = iconRegister.registerIcon(RefStrings.MODID + ":fusion_core_side_alt"); } @Override diff --git a/com/hbm/blocks/machine/MachineSeleniumEngine.java b/com/hbm/blocks/machine/MachineSeleniumEngine.java new file mode 100644 index 000000000..ecf331c43 --- /dev/null +++ b/com/hbm/blocks/machine/MachineSeleniumEngine.java @@ -0,0 +1,146 @@ +package com.hbm.blocks.machine; + +import java.util.Random; + +import com.hbm.blocks.ModBlocks; +import com.hbm.handler.MultiblockHandler; +import com.hbm.main.MainRegistry; +import com.hbm.tileentity.machine.TileEntityMachineCentrifuge; +import com.hbm.tileentity.machine.TileEntityMachineSeleniumEngine; + +import cpw.mods.fml.common.network.internal.FMLNetworkHandler; +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.item.EntityItem; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.MathHelper; +import net.minecraft.world.World; + +public class MachineSeleniumEngine extends BlockContainer { + + private final Random field_149933_a = new Random(); + private static boolean keepInventory; + + + public MachineSeleniumEngine(Material p_i45386_1_) { + super(p_i45386_1_); + } + + @Override + public TileEntity createNewTileEntity(World p_149915_1_, int p_149915_2_) { + return new TileEntityMachineSeleniumEngine(); + } + + @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, 2, 2); + } + if(i == 1) + { + world.setBlockMetadataWithNotify(x, y, z, 5, 2); + } + if(i == 2) + { + world.setBlockMetadataWithNotify(x, y, z, 3, 2); + } + if(i == 3) + { + world.setBlockMetadataWithNotify(x, y, z, 4, 2); + } + } + + @Override + public void breakBlock(World p_149749_1_, int p_149749_2_, int p_149749_3_, int p_149749_4_, Block p_149749_5_, int p_149749_6_) + { + if (!keepInventory) + { + TileEntityMachineSeleniumEngine tileentityfurnace = (TileEntityMachineSeleniumEngine)p_149749_1_.getTileEntity(p_149749_2_, p_149749_3_, p_149749_4_); + + if (tileentityfurnace != null) + { + for (int i1 = 0; i1 < tileentityfurnace.getSizeInventory(); ++i1) + { + ItemStack itemstack = tileentityfurnace.getStackInSlot(i1); + + if (itemstack != null) + { + float f = this.field_149933_a.nextFloat() * 0.8F + 0.1F; + float f1 = this.field_149933_a.nextFloat() * 0.8F + 0.1F; + float f2 = this.field_149933_a.nextFloat() * 0.8F + 0.1F; + + while (itemstack.stackSize > 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); + } +}