From d54e882ae57c1a5432453852a349c9f4b9551995 Mon Sep 17 00:00:00 2001 From: Bob Date: Fri, 16 Oct 2020 23:54:52 +0200 Subject: [PATCH] more igen work, an actual turning dial, more inventory 3d models --- src/main/java/assets/hbm/models/armor/BJ.obj | 170 ++++++++++++++++++ .../java/assets/hbm/textures/blocks/chain.png | Bin 0 -> 135 bytes .../assets/hbm/textures/blocks/chain_end.png | Bin 0 -> 138 bytes .../hbm/textures/gui/generators/gui_igen.png | Bin 4271 -> 4583 bytes .../assets/hbm/textures/items/bj_boots.png | Bin 0 -> 207 bytes .../assets/hbm/textures/items/bj_helmet.png | Bin 0 -> 225 bytes .../assets/hbm/textures/items/bj_legs.png | Bin 0 -> 225 bytes .../assets/hbm/textures/items/bj_plate.png | Bin 0 -> 251 bytes .../assets/hbm/textures/items/gas_xenon.png | Bin 0 -> 274 bytes .../textures/items/tritium_deuterium_cake.png | Bin 268 -> 309 bytes src/main/java/com/hbm/blocks/ModBlocks.java | 3 + .../com/hbm/inventory/gui/GUIIGenerator.java | 70 +++++++- src/main/java/com/hbm/items/ModItems.java | 17 ++ .../java/com/hbm/items/armor/ArmorBJ.java | 33 ++++ .../com/hbm/items/armor/ArmorFSBPowered.java | 122 +++++++++++++ .../java/com/hbm/items/armor/ArmorT45.java | 4 + .../java/com/hbm/main/ResourceManager.java | 11 ++ .../hbm/render/item/ItemRenderLibrary.java | 140 +++++++++++++++ .../hbm/render/loader/ModelRendererObj.java | 36 ++++ .../com/hbm/render/model/ModelArmorBJ.java | 92 ++++++++++ .../tileentity/RenderLaunchPadTier1.java | 33 +--- .../hbm/render/tileentity/RenderPuF6Tank.java | 15 +- .../hbm/render/tileentity/RenderUF6Tank.java | 15 +- .../com/hbm/render/util/SoyuzPronter.java | 9 +- .../machine/TileEntityMachineIGenerator.java | 153 +++++++++++++++- .../TileEntityMachinePlasmaHeater.java | 24 +-- 26 files changed, 871 insertions(+), 76 deletions(-) create mode 100644 src/main/java/assets/hbm/models/armor/BJ.obj create mode 100644 src/main/java/assets/hbm/textures/blocks/chain.png create mode 100644 src/main/java/assets/hbm/textures/blocks/chain_end.png create mode 100644 src/main/java/assets/hbm/textures/items/bj_boots.png create mode 100644 src/main/java/assets/hbm/textures/items/bj_helmet.png create mode 100644 src/main/java/assets/hbm/textures/items/bj_legs.png create mode 100644 src/main/java/assets/hbm/textures/items/bj_plate.png create mode 100644 src/main/java/assets/hbm/textures/items/gas_xenon.png create mode 100644 src/main/java/com/hbm/items/armor/ArmorBJ.java create mode 100644 src/main/java/com/hbm/items/armor/ArmorFSBPowered.java create mode 100644 src/main/java/com/hbm/render/loader/ModelRendererObj.java create mode 100644 src/main/java/com/hbm/render/model/ModelArmorBJ.java diff --git a/src/main/java/assets/hbm/models/armor/BJ.obj b/src/main/java/assets/hbm/models/armor/BJ.obj new file mode 100644 index 000000000..962168449 --- /dev/null +++ b/src/main/java/assets/hbm/models/armor/BJ.obj @@ -0,0 +1,170 @@ +# Blender v2.79 (sub 0) OBJ File: 'BJ.blend' +# www.blender.org +o Head +v -0.250000 1.500000 0.250000 +v -0.250000 1.500000 -0.250000 +v 0.250000 1.500000 0.250000 +v 0.250000 1.500000 -0.250000 +v -0.250000 2.000000 0.250000 +v -0.250000 2.000000 -0.250000 +v 0.250000 2.000000 -0.250000 +v 0.250000 2.000000 0.250000 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 1.0000 0.0000 +vn 1.0000 0.0000 0.0000 +vn -1.0000 0.0000 0.0000 +vn 0.0000 0.0000 1.0000 +vn 0.0000 0.0000 -1.0000 +s off +f 3//1 2//1 4//1 +f 6//2 8//2 7//2 +f 4//3 8//3 3//3 +f 1//4 6//4 2//4 +f 3//5 5//5 1//5 +f 2//6 7//6 4//6 +f 3//1 1//1 2//1 +f 6//2 5//2 8//2 +f 4//3 7//3 8//3 +f 1//4 5//4 6//4 +f 3//5 8//5 5//5 +f 2//6 6//6 7//6 +o RightArm +v 0.125000 0.750000 0.500000 +v 0.125000 1.500000 0.500000 +v -0.125000 0.750000 0.500000 +v -0.125000 1.500000 0.500000 +v 0.125000 0.750000 0.250000 +v 0.125000 1.500000 0.250000 +v -0.125000 0.750000 0.250000 +v -0.125000 1.500000 0.250000 +vn 0.0000 0.0000 1.0000 +vn -1.0000 0.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +vn 1.0000 0.0000 -0.0000 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 1.0000 0.0000 +s off +f 10//7 11//7 9//7 +f 12//8 15//8 11//8 +f 16//9 13//9 15//9 +f 14//10 9//10 13//10 +f 15//11 9//11 11//11 +f 12//12 14//12 16//12 +f 10//7 12//7 11//7 +f 12//8 16//8 15//8 +f 16//9 14//9 13//9 +f 14//10 10//10 9//10 +f 15//11 13//11 9//11 +f 12//12 10//12 14//12 +o LeftArm +v 0.125000 0.750000 -0.250000 +v 0.125000 1.500000 -0.250000 +v -0.125000 0.750000 -0.250000 +v -0.125000 1.500000 -0.250000 +v 0.125000 0.750000 -0.500000 +v 0.125000 1.500000 -0.500000 +v -0.125000 0.750000 -0.500000 +v -0.125000 1.500000 -0.500000 +vn 0.0000 0.0000 1.0000 +vn -1.0000 0.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +vn 1.0000 0.0000 -0.0000 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 1.0000 -0.0000 +s off +f 18//13 19//13 17//13 +f 20//14 23//14 19//14 +f 24//15 21//15 23//15 +f 22//16 17//16 21//16 +f 23//17 17//17 19//17 +f 20//18 22//18 24//18 +f 18//13 20//13 19//13 +f 20//14 24//14 23//14 +f 24//15 22//15 21//15 +f 22//16 18//16 17//16 +f 23//17 21//17 17//17 +f 20//18 18//18 22//18 +o Body +v 0.125000 0.750000 0.250000 +v 0.125000 1.500000 0.250000 +v -0.125000 0.750000 0.250000 +v -0.125000 1.500000 0.250000 +v 0.125000 0.750000 -0.250000 +v 0.125000 1.500000 -0.250000 +v -0.125000 0.750000 -0.250000 +v -0.125000 1.500000 -0.250000 +vn 0.0000 0.0000 1.0000 +vn -1.0000 0.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +vn 1.0000 0.0000 -0.0000 +vn 0.0000 -1.0000 -0.0000 +vn 0.0000 1.0000 0.0000 +s off +f 26//19 27//19 25//19 +f 28//20 31//20 27//20 +f 32//21 29//21 31//21 +f 30//22 25//22 29//22 +f 31//23 25//23 27//23 +f 28//24 30//24 32//24 +f 26//19 28//19 27//19 +f 28//20 32//20 31//20 +f 32//21 30//21 29//21 +f 30//22 26//22 25//22 +f 31//23 29//23 25//23 +f 28//24 26//24 30//24 +o RightLeg +v 0.125000 0.000000 0.250000 +v 0.125000 0.750000 0.250000 +v -0.125000 0.000000 0.250000 +v -0.125000 0.750000 0.250000 +v 0.125000 0.000000 -0.000000 +v 0.125000 0.750000 -0.000000 +v -0.125000 0.000000 0.000000 +v -0.125000 0.750000 0.000000 +vn 0.0000 0.0000 1.0000 +vn -1.0000 0.0000 0.0000 +vn -0.0000 0.0000 -1.0000 +vn 1.0000 0.0000 -0.0000 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 1.0000 0.0000 +s off +f 34//25 35//25 33//25 +f 36//26 39//26 35//26 +f 40//27 37//27 39//27 +f 38//28 33//28 37//28 +f 39//29 33//29 35//29 +f 36//30 38//30 40//30 +f 34//25 36//25 35//25 +f 36//26 40//26 39//26 +f 40//27 38//27 37//27 +f 38//28 34//28 33//28 +f 39//29 37//29 33//29 +f 36//30 34//30 38//30 +o LeftLeg +v 0.125000 0.000000 -0.000000 +v 0.125000 0.750000 -0.000000 +v -0.125000 0.000000 0.000000 +v -0.125000 0.750000 0.000000 +v 0.125000 0.000000 -0.250000 +v 0.125000 0.750000 -0.250000 +v -0.125000 0.000000 -0.250000 +v -0.125000 0.750000 -0.250000 +vn 0.0000 0.0000 1.0000 +vn -1.0000 0.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +vn 1.0000 0.0000 -0.0000 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 1.0000 -0.0000 +s off +f 42//31 43//31 41//31 +f 44//32 47//32 43//32 +f 48//33 45//33 47//33 +f 46//34 41//34 45//34 +f 47//35 41//35 43//35 +f 44//36 46//36 48//36 +f 42//31 44//31 43//31 +f 44//32 48//32 47//32 +f 48//33 46//33 45//33 +f 46//34 42//34 41//34 +f 47//35 45//35 41//35 +f 44//36 42//36 46//36 diff --git a/src/main/java/assets/hbm/textures/blocks/chain.png b/src/main/java/assets/hbm/textures/blocks/chain.png new file mode 100644 index 0000000000000000000000000000000000000000..893f9f4ab3411c7cf58c01bbc175e661f1f2dd5e GIT binary patch literal 135 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 literal 4271 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 Q{r5-%JyYHC8>py%0V1C5Bme*a diff --git a/src/main/java/assets/hbm/textures/items/bj_boots.png b/src/main/java/assets/hbm/textures/items/bj_boots.png new file mode 100644 index 0000000000000000000000000000000000000000..74079d09fde58a506c2039152eac8190515576aa GIT binary patch literal 207 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#Vfen+$#-fp%y0IXLCl-m3BqevqwuQ()p;l{>O&WtD1K zXW2YgXn8of{1eLAyh3@CeA7g?l*_Ejd!rYuvS!$F?NO|EuHlMRwl%XA+8-~`-gG+M z=CE;!Hp7nUy!W@mCzdi9YhO2=?7E)k-e2+l5{9z47-w6l!$v?CF?hQAxvX$q`<;qFVn*#>(XjKwzmte!8wjM2qanwj~XfkXuZ!|rX~ V2XET0mIbHu%7rGfE$|K4 zJ>znA5*x#WmJXX&+4pPPc{vonT$OS;VyG?tp)hxow=*9bPG?!#;5iYUw79#eEN9JoVj7n=k2z8@A=1i VO`kZ^<0R0H44$rjF6*2UngH{qQyTyP literal 0 HcmV?d00001 diff --git a/src/main/java/assets/hbm/textures/items/bj_plate.png b/src/main/java/assets/hbm/textures/items/bj_plate.png new file mode 100644 index 0000000000000000000000000000000000000000..6c43793ffeb7ac756bc86eab5c19101a86bcf3ca GIT binary patch literal 251 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#Vfs=qTzW*sx|KFK2p{~LI`G?IF3`U=-&q~*aRsmhl;OXk;vd$@?2>?XhWK947 literal 0 HcmV?d00001 diff --git a/src/main/java/assets/hbm/textures/items/gas_xenon.png b/src/main/java/assets/hbm/textures/items/gas_xenon.png new file mode 100644 index 0000000000000000000000000000000000000000..8987c5b3a46ef75d5194648a1502da9f3c6b38e6 GIT binary patch literal 274 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#VfyU#$+x`v@CO1dH*Q$F}%rAu5v?_GO9} zC_9}b!u>xhA$?bATlHKC>zbhxyad=$bv-$gezGqH_6C~ZQ9c6I+_aNJral5^H Vy_m_l5}>CTJYD@<);T3K0RYh|Y2E+; literal 0 HcmV?d00001 diff --git a/src/main/java/assets/hbm/textures/items/tritium_deuterium_cake.png b/src/main/java/assets/hbm/textures/items/tritium_deuterium_cake.png index 28a1ff5c926f37f196eb0555a4510ec2c06648ae..cca6324a66722bc0690f53707ea1ad7cac2d9d17 100644 GIT binary patch delta 281 zcmV+!0p|XU0<{8=C4X~5NmK|32nc)#WQYI&0PIObK~y-6&62SWf-n$<4`R{@1{&)` z;s6tD4(>jM58*R7_zXS|&J1oc!JuJlLkFCQ0}ch!E1;v^cD?(*-k&>wUxzhU2%@sp z^CI&ndlz%UFm}OXM60NG6NHi=D%-ITN16x(vA>B|`zx#ukAETG?v}_NvY?B@;}c#| z!u`BKK*<}FBLHOts;(hFIRM~{#9{10dJ)5$tvBSi8Ym+`4I7d-Kp9cuM4;Me3l(pM zpY+MnL_pPnJ_7VYN7v=CLLE}1Rw{X;YzZ}mE}jIK fpgv6D|HK=O&=O;;HpXWK00000NkvXXu0mjfHAr>w delta 239 zcmV#9J1~tMV p5>>YQIsh#ch+sIJVK{tGP8S;ggVC$Kv*`c;002ovPDHLkV1f-VS_J?A diff --git a/src/main/java/com/hbm/blocks/ModBlocks.java b/src/main/java/com/hbm/blocks/ModBlocks.java index 88da05672..69e0e5af8 100644 --- a/src/main/java/com/hbm/blocks/ModBlocks.java +++ b/src/main/java/com/hbm/blocks/ModBlocks.java @@ -398,6 +398,7 @@ public class ModBlocks { public static final int guiID_puf6_tank = 8; public static Block machine_reactor; + public static Block machine_reactor_on; public static final int guiID_reactor = 9; public static Block machine_nuke_furnace_off; @@ -1106,6 +1107,7 @@ public class ModBlocks { machine_puf6_tank = new MachinePuF6Tank(Material.iron).setBlockName("machine_puf6_tank").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab); machine_reactor = new MachineReactor(Material.iron).setBlockName("machine_reactor").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":machine_reactor"); + machine_reactor_on = new MachineReactor(Material.iron).setBlockName("machine_reactor_on").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":machine_reactor_on"); machine_nuke_furnace_off = new MachineNukeFurnace(false).setBlockName("machine_nuke_furnace_off").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab); machine_nuke_furnace_on = new MachineNukeFurnace(true).setBlockName("machine_nuke_furnace_on").setHardness(5.0F).setLightLevel(1.0F).setResistance(10.0F); @@ -1820,6 +1822,7 @@ public class ModBlocks { GameRegistry.registerBlock(machine_uf6_tank, machine_uf6_tank.getUnlocalizedName()); GameRegistry.registerBlock(machine_puf6_tank, machine_puf6_tank.getUnlocalizedName()); GameRegistry.registerBlock(machine_reactor, machine_reactor.getUnlocalizedName()); + //GameRegistry.registerBlock(machine_reactor_on, machine_reactor_on.getUnlocalizedName()); GameRegistry.registerBlock(machine_nuke_furnace_off, machine_nuke_furnace_off.getUnlocalizedName()); GameRegistry.registerBlock(machine_nuke_furnace_on, machine_nuke_furnace_on.getUnlocalizedName()); GameRegistry.registerBlock(machine_rtg_furnace_off, machine_rtg_furnace_off.getUnlocalizedName()); diff --git a/src/main/java/com/hbm/inventory/gui/GUIIGenerator.java b/src/main/java/com/hbm/inventory/gui/GUIIGenerator.java index 2eee6598f..4be6bf1b6 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIIGenerator.java +++ b/src/main/java/com/hbm/inventory/gui/GUIIGenerator.java @@ -1,5 +1,6 @@ package com.hbm.inventory.gui; +import org.lwjgl.input.Mouse; import org.lwjgl.opengl.GL11; import com.hbm.inventory.container.ContainerIGenerator; @@ -12,14 +13,17 @@ import com.hbm.tileentity.machine.TileEntityMachineIGenerator; import net.minecraft.client.Minecraft; import net.minecraft.client.audio.PositionedSoundRecord; +import net.minecraft.client.renderer.Tessellator; import net.minecraft.client.resources.I18n; import net.minecraft.entity.player.InventoryPlayer; import net.minecraft.util.ResourceLocation; +import net.minecraft.util.Vec3; public class GUIIGenerator extends GuiInfoContainer { private static ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/generators/gui_igen.png"); private TileEntityMachineIGenerator igen; + boolean caughtMouse = false; public GUIIGenerator(InventoryPlayer invPlayer, TileEntityMachineIGenerator tedf) { super(new ContainerIGenerator(invPlayer, tedf)); @@ -30,8 +34,23 @@ public class GUIIGenerator extends GuiInfoContainer { } @Override - public void drawScreen(int mouseX, int mouseY, float f) { - super.drawScreen(mouseX, mouseY, f); + public void drawScreen(int x, int y, float f) { + super.drawScreen(x, y, f); + + if(!caughtMouse && Mouse.isButtonDown(0) && guiLeft + 85 <= x && guiLeft + 85 + 18 > x && guiTop + 71 < y && guiTop + 71 + 18 >= y) { + caughtMouse = true; + } + + if(caughtMouse && !Mouse.isButtonDown(0)) { + int dial = (int) Math.round(Math.toDegrees(getAngle(x, y))); + igen.setDialByAngle(dial); + PacketDispatcher.wrapper.sendToServer(new AuxButtonPacket(igen.xCoord, igen.yCoord, igen.zCoord, dial, 2)); + caughtMouse = false; + } + + igen.tanks[0].renderTankInfo(this, x, y, guiLeft + 148, guiTop + 26, 18, 18); + igen.tanks[1].renderTankInfo(this, x, y, guiLeft + 148, guiTop + 62, 18, 18); + igen.tanks[2].renderTankInfo(this, x, y, guiLeft + 148, guiTop + 98, 18, 18); } protected void mouseClicked(int x, int y, int i) { @@ -58,10 +77,12 @@ public class GUIIGenerator extends GuiInfoContainer { this.fontRendererObj.drawString(name, this.xSize / 2 - this.fontRendererObj.getStringWidth(name) / 2, 6, 4210752); this.fontRendererObj.drawString(I18n.format("container.inventory"), 14, this.ySize - 96 + 2, 4210752); + this.fontRendererObj.drawString(igen.getConversion() + "", 100, this.ySize - 96 + 2, 0xffffff); + this.fontRendererObj.drawString(igen.getBrake() + "", 100, this.ySize - 96 + 12, 0xffffff); } @Override - protected void drawGuiContainerBackgroundLayer(float p_146976_1_, int p_146976_2_, int p_146976_3_) { + protected void drawGuiContainerBackgroundLayer(float iinterpolation, int x, int y) { GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); Minecraft.getMinecraft().getTextureManager().bindTexture(texture); drawTexturedModalRect(guiLeft, guiTop, 0, 0, xSize, ySize); @@ -72,14 +93,51 @@ public class GUIIGenerator extends GuiInfoContainer { drawTexturedModalRect(guiLeft + 6, guiTop + 106 - 4 * i, 188, igen.pellets[i].offset, 14, 9); } + drawDial(x, y); + GaugeUtil.renderGauge(Gauge.BOW_SMALL, guiLeft + 40, guiTop + 26, this.zLevel, igen.getSolidGauge()); GaugeUtil.renderGauge(Gauge.BAR_SMALL, guiLeft + 76, guiTop + 20, this.zLevel, igen.getTempGauge()); GaugeUtil.renderGauge(Gauge.BAR_SMALL, guiLeft + 76, guiTop + 56, this.zLevel, igen.getTorqueGauge()); GaugeUtil.renderGauge(Gauge.BAR_SMALL, guiLeft + 76, guiTop + 92, this.zLevel, igen.getPowerGauge()); - GaugeUtil.renderGauge(Gauge.WIDE_SMALL, guiLeft + 148, guiTop + 26, this.zLevel, Math.sin(System.currentTimeMillis() * 0.0025D) * 0.5 + 0.5); - GaugeUtil.renderGauge(Gauge.WIDE_SMALL, guiLeft + 148, guiTop + 62, this.zLevel, Math.sin(System.currentTimeMillis() * 0.0025D) * 0.5 + 0.5); - GaugeUtil.renderGauge(Gauge.WIDE_SMALL, guiLeft + 148, guiTop + 98, this.zLevel, Math.sin(System.currentTimeMillis() * 0.0025D) * 0.5 + 0.5); + GaugeUtil.renderGauge(Gauge.WIDE_SMALL, guiLeft + 148, guiTop + 26, this.zLevel, (double)igen.tanks[0].getFill() / (double)igen.tanks[0].getMaxFill()); + GaugeUtil.renderGauge(Gauge.WIDE_SMALL, guiLeft + 148, guiTop + 62, this.zLevel, (double)igen.tanks[1].getFill() / (double)igen.tanks[1].getMaxFill()); + GaugeUtil.renderGauge(Gauge.WIDE_SMALL, guiLeft + 148, guiTop + 98, this.zLevel, (double)igen.tanks[2].getFill() / (double)igen.tanks[2].getMaxFill()); + } + + private void drawDial(float x, float y) { + + float angle = (float) getAngle(x, y); + double pixel = 1D/256D; + + Vec3 vec = Vec3.createVectorHelper(8, 8, 0); + vec.rotateAroundZ(-angle); + + Tessellator tessellator = Tessellator.instance; + tessellator.startDrawingQuads(); + + tessellator.addVertexWithUV(guiLeft + 94 + vec.xCoord, guiTop + 80 + vec.yCoord, this.zLevel, pixel * 218, 0); + vec.rotateAroundZ((float)Math.toRadians(90)); + tessellator.addVertexWithUV(guiLeft + 94 + vec.xCoord, guiTop + 80 + vec.yCoord, this.zLevel, pixel * 218, pixel * 16); + vec.rotateAroundZ((float)Math.toRadians(90)); + tessellator.addVertexWithUV(guiLeft + 94 + vec.xCoord, guiTop + 80 + vec.yCoord, this.zLevel, pixel * 202, pixel * 16); + vec.rotateAroundZ((float)Math.toRadians(90)); + tessellator.addVertexWithUV(guiLeft + 94 + vec.xCoord, guiTop + 80 + vec.yCoord, this.zLevel, pixel * 202, 0); + + tessellator.draw(); + } + + private double getAngle(float x, float y) { + + if(!caughtMouse) + return Math.toRadians(igen.getAngleFromDial()); + + double angle = -Math.atan2(guiLeft + 94 - x, guiTop + 80 - y) + (float) Math.PI * 1; + + angle = Math.max(angle, Math.PI * 0.25); + angle = Math.min(angle, Math.PI * 1.75); + + return angle; } } diff --git a/src/main/java/com/hbm/items/ModItems.java b/src/main/java/com/hbm/items/ModItems.java index 800c4935e..9a419aea3 100644 --- a/src/main/java/com/hbm/items/ModItems.java +++ b/src/main/java/com/hbm/items/ModItems.java @@ -1582,6 +1582,10 @@ public class ModItems { public static Item starmetal_plate; public static Item starmetal_legs; public static Item starmetal_boots; + public static Item bj_helmet; + public static Item bj_plate; + public static Item bj_legs; + public static Item bj_boots; public static Item australium_iii; public static Item australium_iv; @@ -1651,6 +1655,7 @@ public class ModItems { public static Item shimmer_sledge; public static Item shimmer_axe; public static Item bottle_opener; + public static Item pch; //for compat please do not hit me public static Item wood_gavel; public static Item lead_gavel; public static Item diamond_gavel; @@ -3604,6 +3609,12 @@ public class ModItems { starmetal_plate = new ArmorFSB(MainRegistry.aMatStarmetal, 7, 1, RefStrings.MODID + ":textures/armor/starmetal_1.png").cloneStats((ArmorFSB) starmetal_helmet).setUnlocalizedName("starmetal_plate").setTextureName(RefStrings.MODID + ":starmetal_plate"); starmetal_legs = new ArmorFSB(MainRegistry.aMatStarmetal, 7, 2, RefStrings.MODID + ":textures/armor/starmetal_2.png").cloneStats((ArmorFSB) starmetal_helmet).setUnlocalizedName("starmetal_legs").setTextureName(RefStrings.MODID + ":starmetal_legs"); starmetal_boots = new ArmorFSB(MainRegistry.aMatStarmetal, 7, 3, RefStrings.MODID + ":textures/armor/starmetal_1.png").cloneStats((ArmorFSB) starmetal_helmet).setUnlocalizedName("starmetal_boots").setTextureName(RefStrings.MODID + ":starmetal_boots"); + + bj_helmet = new ArmorBJ(MainRegistry.aMatStarmetal, 7, 0, RefStrings.MODID + ":textures/armor/starmetal_1.png", 10000, 100, 10).setMod(0.5F).setCap(15F) + .setFireproof(true).setUnlocalizedName("bj_helmet").setTextureName(RefStrings.MODID + ":bj_helmet"); + bj_plate = new ArmorBJ(MainRegistry.aMatStarmetal, 7, 1, RefStrings.MODID + ":textures/armor/starmetal_1.png", 10000, 100, 10).cloneStats((ArmorFSB) bj_helmet).setUnlocalizedName("bj_plate").setTextureName(RefStrings.MODID + ":bj_plate"); + bj_legs = new ArmorBJ(MainRegistry.aMatStarmetal, 7, 2, RefStrings.MODID + ":textures/armor/starmetal_2.png", 10000, 100, 10).cloneStats((ArmorFSB) bj_helmet).setUnlocalizedName("bj_legs").setTextureName(RefStrings.MODID + ":bj_legs"); + bj_boots = new ArmorBJ(MainRegistry.aMatStarmetal, 7, 3, RefStrings.MODID + ":textures/armor/starmetal_1.png", 10000, 100, 10).cloneStats((ArmorFSB) bj_helmet).setUnlocalizedName("bj_boots").setTextureName(RefStrings.MODID + ":bj_boots"); jackt = new ModArmor(MainRegistry.aMatSteel, 7, 1).setUnlocalizedName("jackt").setTextureName(RefStrings.MODID + ":jackt"); jackt2 = new ModArmor(MainRegistry.aMatSteel, 7, 1).setUnlocalizedName("jackt2").setTextureName(RefStrings.MODID + ":jackt2"); @@ -3852,6 +3863,7 @@ public class ModItems { shimmer_sledge = new WeaponSpecial(MainRegistry.enumToolMaterialSledge).setUnlocalizedName("shimmer_sledge").setMaxStackSize(1).setTextureName(RefStrings.MODID + ":shimmer_sledge_original"); shimmer_axe = new WeaponSpecial(MainRegistry.enumToolMaterialSledge).setUnlocalizedName("shimmer_axe").setMaxStackSize(1).setTextureName(RefStrings.MODID + ":shimmer_axe"); bottle_opener = new WeaponSpecial(MainRegistry.enumToolMaterialBottleOpener).setUnlocalizedName("bottle_opener").setCreativeTab(MainRegistry.consumableTab).setMaxStackSize(1).setTextureName(RefStrings.MODID + ":bottle_opener"); + pch = new WeaponSpecial(MainRegistry.tMatHammmer).setUnlocalizedName("pch").setMaxStackSize(1).setCreativeTab(null).setTextureName(RefStrings.MODID + ":schrabidium_hammer"); euphemium_stopper = new ItemSyringe().setUnlocalizedName("euphemium_stopper").setMaxStackSize(1).setFull3D().setTextureName(RefStrings.MODID + ":euphemium_stopper"); matchstick = new ItemMatch().setUnlocalizedName("matchstick").setCreativeTab(CreativeTabs.tabTools).setFull3D().setTextureName(RefStrings.MODID + ":matchstick"); balefire_and_steel = new ItemBalefireMatch().setUnlocalizedName("balefire_and_steel").setCreativeTab(CreativeTabs.tabTools).setFull3D().setTextureName(RefStrings.MODID + ":balefire_and_steel"); @@ -5502,6 +5514,7 @@ public class ModItems { GameRegistry.registerItem(schrabidium_hammer, schrabidium_hammer.getUnlocalizedName()); GameRegistry.registerItem(shimmer_sledge, shimmer_sledge.getUnlocalizedName()); GameRegistry.registerItem(shimmer_axe, shimmer_axe.getUnlocalizedName()); + //GameRegistry.registerItem(pch, pch.getUnlocalizedName()); //sike, nevermind GameRegistry.registerItem(wood_gavel, wood_gavel.getUnlocalizedName()); GameRegistry.registerItem(lead_gavel, lead_gavel.getUnlocalizedName()); GameRegistry.registerItem(diamond_gavel, diamond_gavel.getUnlocalizedName()); @@ -5783,6 +5796,10 @@ public class ModItems { GameRegistry.registerItem(t45_plate, t45_plate.getUnlocalizedName()); GameRegistry.registerItem(t45_legs, t45_legs.getUnlocalizedName()); GameRegistry.registerItem(t45_boots, t45_boots.getUnlocalizedName()); + GameRegistry.registerItem(bj_helmet, bj_helmet.getUnlocalizedName()); + GameRegistry.registerItem(bj_plate, bj_plate.getUnlocalizedName()); + GameRegistry.registerItem(bj_legs, bj_legs.getUnlocalizedName()); + GameRegistry.registerItem(bj_boots, bj_boots.getUnlocalizedName()); //Nobody will ever read this anyway, so it shouldn't matter. GameRegistry.registerItem(chainsaw, chainsaw.getUnlocalizedName()); diff --git a/src/main/java/com/hbm/items/armor/ArmorBJ.java b/src/main/java/com/hbm/items/armor/ArmorBJ.java new file mode 100644 index 000000000..094feca1b --- /dev/null +++ b/src/main/java/com/hbm/items/armor/ArmorBJ.java @@ -0,0 +1,33 @@ +package com.hbm.items.armor; + +import com.hbm.render.model.ModelArmorBJ; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.client.model.ModelBiped; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.item.ItemStack; + +public class ArmorBJ extends ArmorFSBPowered { + + public ArmorBJ(ArmorMaterial material, int layer, int slot, String texture, long maxPower, long chargeRate, long consumption) { + super(material, layer, slot, texture, maxPower, chargeRate, consumption); + } + + @SideOnly(Side.CLIENT) + ModelArmorBJ[] models; + + @Override + @SideOnly(Side.CLIENT) + public ModelBiped getArmorModel(EntityLivingBase entityLiving, ItemStack itemStack, int armorSlot) { + + if(models == null) { + models = new ModelArmorBJ[4]; + + for(int i = 0; i < 4; i++) + models[i] = new ModelArmorBJ(i); + } + + return models[armorSlot]; + } +} diff --git a/src/main/java/com/hbm/items/armor/ArmorFSBPowered.java b/src/main/java/com/hbm/items/armor/ArmorFSBPowered.java new file mode 100644 index 000000000..add4f19b1 --- /dev/null +++ b/src/main/java/com/hbm/items/armor/ArmorFSBPowered.java @@ -0,0 +1,122 @@ +package com.hbm.items.armor; + +import java.util.List; + +import com.hbm.lib.Library; + +import api.hbm.energy.IBatteryItem; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; + +public class ArmorFSBPowered extends ArmorFSB implements IBatteryItem { + + public long maxPower = 1; + public long chargeRate; + public long consumption; + + public ArmorFSBPowered(ArmorMaterial material, int layer, int slot, String texture, long maxPower, long chargeRate, long consumption) { + super(material, layer, slot, texture); + this.maxPower = maxPower; + this.chargeRate = chargeRate; + this.consumption = consumption; + this.setMaxDamage(1); + } + + @SideOnly(Side.CLIENT) + public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean ext) { + + list.add("Charge: " + Library.getShortNumber(getCharge(stack)) + " / " + Library.getShortNumber(maxPower)); + + super.addInformation(stack, player, list, ext); + } + + @Override + public void chargeBattery(ItemStack stack, long i) { + if(stack.getItem() instanceof ArmorFSBPowered) { + if(stack.hasTagCompound()) { + stack.stackTagCompound.setLong("charge", stack.stackTagCompound.getLong("charge") + i); + } else { + stack.stackTagCompound = new NBTTagCompound(); + stack.stackTagCompound.setLong("charge", i); + } + } + } + + @Override + public void setCharge(ItemStack stack, long i) { + if(stack.getItem() instanceof ArmorFSBPowered) { + if(stack.hasTagCompound()) { + stack.stackTagCompound.setLong("charge", i); + } else { + stack.stackTagCompound = new NBTTagCompound(); + stack.stackTagCompound.setLong("charge", i); + } + } + } + + @Override + public void dischargeBattery(ItemStack stack, long i) { + if(stack.getItem() instanceof ArmorFSBPowered) { + if(stack.hasTagCompound()) { + stack.stackTagCompound.setLong("charge", stack.stackTagCompound.getLong("charge") - i); + } else { + stack.stackTagCompound = new NBTTagCompound(); + stack.stackTagCompound.setLong("charge", this.maxPower - i); + } + + if(stack.stackTagCompound.getLong("charge") < 0) + stack.stackTagCompound.setLong("charge", 0); + } + } + + @Override + public long getCharge(ItemStack stack) { + if(stack.getItem() instanceof ArmorFSBPowered) { + if(stack.hasTagCompound()) { + return stack.stackTagCompound.getLong("charge"); + } else { + stack.stackTagCompound = new NBTTagCompound(); + stack.stackTagCompound.setLong("charge", ((ArmorFSBPowered)stack.getItem()).maxPower); + return stack.stackTagCompound.getLong("charge"); + } + } + + return 0; + } + + @Override + public boolean showDurabilityBar(ItemStack stack) { + + return getCharge(stack) < maxPower; + } + + @Override + public double getDurabilityForDisplay(ItemStack stack) { + + return 1 - (double)getCharge(stack) / (double)maxPower; + } + + @Override + public long getMaxCharge() { + return maxPower; + } + + @Override + public long getChargeRate() { + return chargeRate; + } + + @Override + public long getDischargeRate() { + return 0; + } + + @Override + public void setDamage(ItemStack stack, int damage) + { + this.dischargeBattery(stack, damage * consumption); + } +} diff --git a/src/main/java/com/hbm/items/armor/ArmorT45.java b/src/main/java/com/hbm/items/armor/ArmorT45.java index 2183f76ec..ce65e788a 100644 --- a/src/main/java/com/hbm/items/armor/ArmorT45.java +++ b/src/main/java/com/hbm/items/armor/ArmorT45.java @@ -33,10 +33,14 @@ import net.minecraftforge.common.ISpecialArmor; @Spaghetti("kill it") public class ArmorT45 extends ItemArmor implements ISpecialArmor { + @SideOnly(Side.CLIENT) private ModelT45Helmet helmet; + @SideOnly(Side.CLIENT) private ModelT45Chest plate; + @SideOnly(Side.CLIENT) private ModelT45Legs legs; + @SideOnly(Side.CLIENT) private ModelT45Boots boots; public ArmorT45(ArmorMaterial armorMaterial, int renderIndex, int armorType) { diff --git a/src/main/java/com/hbm/main/ResourceManager.java b/src/main/java/com/hbm/main/ResourceManager.java index 9daad6120..cfc53fba7 100644 --- a/src/main/java/com/hbm/main/ResourceManager.java +++ b/src/main/java/com/hbm/main/ResourceManager.java @@ -95,6 +95,9 @@ public class ResourceManager { public static final IModelCustom chemplant_fluid = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/chemplant_new_fluid.hmf")); public static final IModelCustom chemplant_fluidcap = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/chemplant_new_fluidcap.hmf")); + //F6 TANKS + public static final IModelCustom tank = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/tank.obj")); + //Centrifuge public static final IModelCustom centrifuge_new = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/centrifuge_new.obj")); @@ -312,6 +315,10 @@ public class ResourceManager { public static final ResourceLocation chemplant_spinner_tex = new ResourceLocation(RefStrings.MODID, "textures/models/chemplant_spinner_new.png"); public static final ResourceLocation chemplant_piston_tex = new ResourceLocation(RefStrings.MODID, "textures/models/chemplant_piston_new.png"); public static final ResourceLocation chemplant_fluid_tex = new ResourceLocation(RefStrings.MODID, "textures/models/lavabase_small.png"); + + //F6 TANKS + public static final ResourceLocation uf6_tex = new ResourceLocation(RefStrings.MODID, "textures/models/UF6Tank.png"); + public static final ResourceLocation puf6_tex = new ResourceLocation(RefStrings.MODID, "textures/models/PUF6Tank.png"); //Centrifuge public static final ResourceLocation centrifuge_new_tex = new ResourceLocation(RefStrings.MODID, "textures/models/centrifuge_new.png"); @@ -479,6 +486,8 @@ public class ResourceManager { public static final IModelCustom thompson = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/weapons/thompson.obj")); public static final IModelCustom grenade_frag = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/weapons/grenade_frag.obj")); + + public static final IModelCustom armor_bj = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/armor/BJ.obj")); ////Texture Items @@ -558,6 +567,7 @@ public class ResourceManager { public static final IModelCustom soyuz_launcher_support = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/launch_table/soyuz_launcher_support.obj")); //Missile Parts + public static final IModelCustom missile_pad = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/missilePad.obj")); public static final IModelCustom missile_assembly = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/missile_assembly.obj")); public static final IModelCustom strut = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/strut.obj")); public static final IModelCustom compact_launcher = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/compact_launcher.obj")); @@ -729,6 +739,7 @@ public class ResourceManager { public static final ResourceLocation soyuz_launcher_support_tex = new ResourceLocation(RefStrings.MODID, "textures/models/soyuz_launcher/launcher_support.png"); //Missile Parts + public static final ResourceLocation missile_pad_tex = new ResourceLocation(RefStrings.MODID, "textures/models/missilePad.png"); public static final ResourceLocation missile_assembly_tex = new ResourceLocation(RefStrings.MODID, "textures/models/missile_assembly.png"); public static final ResourceLocation strut_tex = new ResourceLocation(RefStrings.MODID, "textures/models/strut.png"); public static final ResourceLocation compact_launcher_tex = new ResourceLocation(RefStrings.MODID, "textures/models/compact_launcher.png"); diff --git a/src/main/java/com/hbm/render/item/ItemRenderLibrary.java b/src/main/java/com/hbm/render/item/ItemRenderLibrary.java index a3928d00e..2bd9c921a 100644 --- a/src/main/java/com/hbm/render/item/ItemRenderLibrary.java +++ b/src/main/java/com/hbm/render/item/ItemRenderLibrary.java @@ -634,6 +634,146 @@ public class ItemRenderLibrary { ResourceManager.mine_fat.renderAll(); GL11.glEnable(GL11.GL_CULL_FACE); }}); + + renderers.put(Item.getItemFromBlock(ModBlocks.machine_forcefield), new ItemRenderBase() { + public void renderInventory() { + GL11.glTranslated(0, -4, 0); + GL11.glScaled(6, 6, 6); + } + public void renderCommon() { + bindTexture(ResourceManager.forcefield_base_tex); ResourceManager.radar_body.renderAll(); + GL11.glTranslated(0, 1D, 0); + bindTexture(ResourceManager.forcefield_top_tex); ResourceManager.forcefield_top.renderAll(); + }}); + + renderers.put(Item.getItemFromBlock(ModBlocks.machine_missile_assembly), new ItemRenderBase() { + public void renderInventory() { + GL11.glTranslated(0, -2.5, 0); + GL11.glScaled(10, 10, 10); + } + public void renderCommon() { + GL11.glDisable(GL11.GL_CULL_FACE); + bindTexture(ResourceManager.missile_assembly_tex); ResourceManager.missile_assembly.renderAll(); + GL11.glEnable(GL11.GL_CULL_FACE); + }}); + + renderers.put(Item.getItemFromBlock(ModBlocks.launch_pad), new ItemRenderBase() { + public void renderInventory() { + GL11.glTranslated(0, -1, 0); + GL11.glScaled(3, 3, 3); + } + public void renderCommon() { + bindTexture(ResourceManager.missile_pad_tex); ResourceManager.missile_pad.renderAll(); + }}); + + renderers.put(Item.getItemFromBlock(ModBlocks.compact_launcher), new ItemRenderBase() { + public void renderInventory() { + GL11.glTranslated(0, -4, 0); + GL11.glScaled(3.5, 3.5, 3.5); + } + public void renderCommon() { + GL11.glScaled(0.5, 0.5, 0.5); + bindTexture(ResourceManager.compact_launcher_tex); ResourceManager.compact_launcher.renderAll(); + }}); + + renderers.put(Item.getItemFromBlock(ModBlocks.launch_table), new ItemRenderBase() { + public void renderInventory() { + GL11.glTranslated(0, -2, 0); + GL11.glScaled(2.5, 2.5, 2.5); + } + public void renderCommon() { + GL11.glScaled(0.5, 0.5, 0.5); + bindTexture(ResourceManager.launch_table_base_tex); ResourceManager.launch_table_base.renderAll(); + bindTexture(ResourceManager.launch_table_small_pad_tex); ResourceManager.launch_table_small_pad.renderAll(); + GL11.glTranslatef(0F, 0F, 2.5F); + for(int i = 0; i < 8; i++) { + GL11.glTranslatef(0F, 1F, 0.F); + if(i < 6) { + bindTexture(ResourceManager.launch_table_small_scaffold_base_tex); ResourceManager.launch_table_small_scaffold_base.renderAll(); + } + if(i == 6) { + bindTexture(ResourceManager.launch_table_small_scaffold_connector_tex); ResourceManager.launch_table_small_scaffold_connector.renderAll(); + } + if(i > 6) { + bindTexture(ResourceManager.launch_table_small_scaffold_base_tex); ResourceManager.launch_table_small_scaffold_empty.renderAll(); + } + } + }}); + + renderers.put(Item.getItemFromBlock(ModBlocks.soyuz_capsule), new ItemRenderBase() { + public void renderInventory() { + GL11.glTranslated(0, -4, 0); + GL11.glScaled(5, 5, 5); + } + public void renderCommon() { + GL11.glShadeModel(GL11.GL_SMOOTH); + bindTexture(ResourceManager.soyuz_lander_tex); ResourceManager.soyuz_lander.renderPart("Capsule"); + GL11.glShadeModel(GL11.GL_FLAT); + }}); + + renderers.put(Item.getItemFromBlock(ModBlocks.machine_radar), new ItemRenderBase() { + public void renderInventory() { + GL11.glTranslated(0, -4, 0); + GL11.glScaled(6, 6, 6); + } + public void renderCommon() { + GL11.glDisable(GL11.GL_CULL_FACE); + GL11.glRotated(90, 0, -1, 0); + bindTexture(ResourceManager.radar_body_tex); ResourceManager.radar_body.renderAll(); + bindTexture(ResourceManager.radar_head_tex); ResourceManager.radar_head.renderAll(); + GL11.glEnable(GL11.GL_CULL_FACE); + }}); + + renderers.put(Item.getItemFromBlock(ModBlocks.machine_uf6_tank), new ItemRenderBase() { + public void renderInventory() { + GL11.glTranslated(0, -4, 0); + GL11.glScaled(6, 6, 6); + } + public void renderCommon() { + GL11.glRotated(90, 0, -1, 0); + bindTexture(ResourceManager.uf6_tex); ResourceManager.tank.renderAll(); + }}); + + renderers.put(Item.getItemFromBlock(ModBlocks.machine_puf6_tank), new ItemRenderBase() { + public void renderInventory() { + GL11.glTranslated(0, -4, 0); + GL11.glScaled(6, 6, 6); + } + public void renderCommon() { + GL11.glRotated(90, 0, -1, 0); + bindTexture(ResourceManager.puf6_tex); ResourceManager.tank.renderAll(); + }}); + + renderers.put(Item.getItemFromBlock(ModBlocks.sat_dock), new ItemRenderBase() { + public void renderInventory() { + GL11.glScaled(3, 3, 3); + } + public void renderCommon() { + GL11.glRotated(90, 0, -1, 0); + bindTexture(ResourceManager.satdock_tex); ResourceManager.satDock.renderAll(); + }}); + + renderers.put(Item.getItemFromBlock(ModBlocks.vault_door), new ItemRenderBase() { + public void renderInventory() { + GL11.glTranslated(0, -5, 0); + GL11.glScaled(3, 3, 3); + } + public void renderCommon() { + bindTexture(ResourceManager.vault_cog_tex); ResourceManager.vault_cog.renderAll(); + bindTexture(ResourceManager.vault_label_101_tex); ResourceManager.vault_label.renderAll(); + }}); + + renderers.put(Item.getItemFromBlock(ModBlocks.blast_door), new ItemRenderBase() { + public void renderInventory() { + GL11.glTranslated(0, -3, 0); + GL11.glScaled(3, 3, 3); + } + public void renderCommon() { + bindTexture(ResourceManager.blast_door_base_tex); ResourceManager.blast_door_base.renderAll(); + bindTexture(ResourceManager.blast_door_tooth_tex); ResourceManager.blast_door_tooth.renderAll(); + bindTexture(ResourceManager.blast_door_slider_tex); ResourceManager.blast_door_slider.renderAll(); + bindTexture(ResourceManager.blast_door_block_tex); ResourceManager.blast_door_block.renderAll(); + }}); } private static void bindTexture(ResourceLocation res) { diff --git a/src/main/java/com/hbm/render/loader/ModelRendererObj.java b/src/main/java/com/hbm/render/loader/ModelRendererObj.java new file mode 100644 index 000000000..303f3b23f --- /dev/null +++ b/src/main/java/com/hbm/render/loader/ModelRendererObj.java @@ -0,0 +1,36 @@ +package com.hbm.render.loader; + +import org.lwjgl.opengl.GL11; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraftforge.client.model.IModelCustom; + +public class ModelRendererObj { + + public float rotationPointX; + public float rotationPointY; + public float rotationPointZ; + public float rotateAngleX; + public float rotateAngleY; + public float rotateAngleZ; + public float offsetX; + public float offsetY; + public float offsetZ; + + String[] parts; + IModelCustom model; + + public ModelRendererObj(IModelCustom model, String... parts) { + this.model = model; + this.parts = parts; + } + + @SideOnly(Side.CLIENT) + public void render(float p_78785_1_) { + + GL11.glTranslatef(this.offsetX, this.offsetY, this.offsetZ); + + } + +} diff --git a/src/main/java/com/hbm/render/model/ModelArmorBJ.java b/src/main/java/com/hbm/render/model/ModelArmorBJ.java new file mode 100644 index 000000000..de4400951 --- /dev/null +++ b/src/main/java/com/hbm/render/model/ModelArmorBJ.java @@ -0,0 +1,92 @@ +package com.hbm.render.model; + +import org.lwjgl.opengl.GL11; + +import com.hbm.main.ResourceManager; + +import net.minecraft.client.Minecraft; +import net.minecraft.client.model.ModelBiped; +import net.minecraft.entity.Entity; + +public class ModelArmorBJ extends ModelBiped { + + int type; + + public ModelArmorBJ(int type) { + this.type = type; + } + + @Override + public void render(Entity par1Entity, float par2, float par3, float par4, float par5, float par6, float par7) { + + setRotationAngles(par2, par3, par4, par5, par6, par7, par1Entity); + GL11.glPushMatrix(); + + Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.launch_table_base_tex); + GL11.glRotated(180, 0, 0, 1); + GL11.glRotated(90, 0, 1, 0); + GL11.glTranslated(0, -1.5, 0); + + if(type == 0) { + GL11.glPushMatrix(); + GL11.glTranslated(0, 1.5, 0); + GL11.glRotated(-Math.toDegrees(this.bipedHead.rotateAngleY), 0, 1, 0); + GL11.glRotated(-Math.toDegrees(this.bipedHead.rotateAngleX), 0, 0, 1); + GL11.glTranslated(0, -1.5, 0); + ResourceManager.armor_bj.renderPart("Head"); + GL11.glPopMatrix(); + } + + if(type == 1) { + GL11.glPushMatrix(); + GL11.glTranslated(0, 1.5, 0); + GL11.glRotated(-Math.toDegrees(this.bipedBody.rotateAngleY), 0, 1, 0); + GL11.glRotated(-Math.toDegrees(this.bipedBody.rotateAngleX), 0, 0, 1); + GL11.glTranslated(0, -1.5, 0); + ResourceManager.armor_bj.renderPart("Body"); + GL11.glPopMatrix(); + + double height = 22; + + GL11.glPushMatrix(); + GL11.glTranslated(0, 0.0625 * height, -0.25); + GL11.glRotated(-Math.toDegrees(this.bipedLeftArm.rotateAngleZ), 1, 0, 0); + GL11.glRotated(-Math.toDegrees(this.bipedLeftArm.rotateAngleY), 0, 1, 0); + GL11.glRotated(-Math.toDegrees(this.bipedLeftArm.rotateAngleX), 0, 0, 1); + GL11.glTranslated(0, -0.0625 * height, 0.25); + ResourceManager.armor_bj.renderPart("LeftArm"); + GL11.glPopMatrix(); + + GL11.glPushMatrix(); + GL11.glTranslated(0, 0.0625 * height, 0.25); + GL11.glRotated(-Math.toDegrees(this.bipedRightArm.rotateAngleZ), 1, 0, 0); + GL11.glRotated(-Math.toDegrees(this.bipedRightArm.rotateAngleY), 0, 1, 0); + GL11.glRotated(-Math.toDegrees(this.bipedRightArm.rotateAngleX), 0, 0, 1); + GL11.glTranslated(0, -0.0625 * height, -0.25); + ResourceManager.armor_bj.renderPart("RightArm"); + GL11.glPopMatrix(); + } + + if(type == 2) { + GL11.glPushMatrix(); + GL11.glTranslated(0, 0.75, 0); + GL11.glRotated(-Math.toDegrees(this.bipedLeftLeg.rotateAngleX), 0, 0, 1); + GL11.glTranslated(0, -0.75, 0); + ResourceManager.armor_bj.renderPart("LeftLeg"); + GL11.glPopMatrix(); + + GL11.glPushMatrix(); + GL11.glTranslated(0, 0.75, 0); + GL11.glRotated(-Math.toDegrees(this.bipedRightLeg.rotateAngleX), 0, 0, 1); + GL11.glTranslated(0, -0.75, 0); + ResourceManager.armor_bj.renderPart("RightLeg"); + GL11.glPopMatrix(); + } + + if(type == 3) { + } + + GL11.glPopMatrix(); + } + +} diff --git a/src/main/java/com/hbm/render/tileentity/RenderLaunchPadTier1.java b/src/main/java/com/hbm/render/tileentity/RenderLaunchPadTier1.java index f2734be69..43a3989b0 100644 --- a/src/main/java/com/hbm/render/tileentity/RenderLaunchPadTier1.java +++ b/src/main/java/com/hbm/render/tileentity/RenderLaunchPadTier1.java @@ -2,27 +2,13 @@ package com.hbm.render.tileentity; import org.lwjgl.opengl.GL11; -import com.hbm.lib.RefStrings; import com.hbm.main.ResourceManager; import com.hbm.tileentity.bomb.TileEntityLaunchPad; import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.ResourceLocation; -import net.minecraftforge.client.model.AdvancedModelLoader; -import net.minecraftforge.client.model.IModelCustom; public class RenderLaunchPadTier1 extends TileEntitySpecialRenderer { - - private static final ResourceLocation objTesterModelRL = new ResourceLocation(/*"/assets/" + */RefStrings.MODID, "models/missilePad.obj"); - private IModelCustom padModel; - private ResourceLocation padTexture; - - public RenderLaunchPadTier1() - { - padModel = AdvancedModelLoader.loadModel(objTesterModelRL); - padTexture = new ResourceLocation(RefStrings.MODID, "textures/models/missilePad.png"); - } @Override public void renderTileEntityAt(TileEntity tileEntity, double x, double y, double z, float f) @@ -31,22 +17,9 @@ public class RenderLaunchPadTier1 extends TileEntitySpecialRenderer { GL11.glTranslated(x + 0.5D, y, z + 0.5D); GL11.glEnable(GL11.GL_LIGHTING); GL11.glDisable(GL11.GL_CULL_FACE); - /*switch(tileEntity.getBlockMetadata()) - { - case 5: - GL11.glRotatef(90, 0F, 1F, 0F); break; - case 2: - GL11.glRotatef(180, 0F, 1F, 0F); break; - case 4: - GL11.glRotatef(270, 0F, 1F, 0F); break; - case 3: - GL11.glRotatef(0, 0F, 1F, 0F); break; - }*/ - - //GL11.glScalef(1.5F, 1.0F, 1.5F); - bindTexture(padTexture); - padModel.renderAll(); - //GL11.glScalef(2/3F, 1.0F, 2/3F); + + bindTexture(ResourceManager.missile_pad_tex); + ResourceManager.missile_pad.renderAll(); GL11.glDisable(GL11.GL_CULL_FACE); int state = 0; diff --git a/src/main/java/com/hbm/render/tileentity/RenderPuF6Tank.java b/src/main/java/com/hbm/render/tileentity/RenderPuF6Tank.java index 80aba0d6f..428cc617e 100644 --- a/src/main/java/com/hbm/render/tileentity/RenderPuF6Tank.java +++ b/src/main/java/com/hbm/render/tileentity/RenderPuF6Tank.java @@ -3,6 +3,7 @@ package com.hbm.render.tileentity; import org.lwjgl.opengl.GL11; import com.hbm.lib.RefStrings; +import com.hbm.main.ResourceManager; import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; import net.minecraft.tileentity.TileEntity; @@ -12,16 +13,6 @@ import net.minecraftforge.client.model.IModelCustom; public class RenderPuF6Tank extends TileEntitySpecialRenderer { - private static final ResourceLocation tankModel = new ResourceLocation(/*"/assets/" + */RefStrings.MODID, "models/tank.obj"); - private IModelCustom tankModelC; - private ResourceLocation tankTexture; - - public RenderPuF6Tank() - { - tankModelC = AdvancedModelLoader.loadModel(tankModel); - tankTexture = new ResourceLocation(RefStrings.MODID, "textures/models/PUF6Tank.png"); - } - @Override public void renderTileEntityAt(TileEntity tileEntity, double x, double y, double z, float f) { @@ -40,8 +31,8 @@ public class RenderPuF6Tank extends TileEntitySpecialRenderer { GL11.glRotatef(0, 0F, 1F, 0F); break; } - bindTexture(tankTexture); - tankModelC.renderAll(); + bindTexture(ResourceManager.puf6_tex); + ResourceManager.tank.renderAll(); GL11.glPopMatrix(); } diff --git a/src/main/java/com/hbm/render/tileentity/RenderUF6Tank.java b/src/main/java/com/hbm/render/tileentity/RenderUF6Tank.java index 741ed4998..42d4e9048 100644 --- a/src/main/java/com/hbm/render/tileentity/RenderUF6Tank.java +++ b/src/main/java/com/hbm/render/tileentity/RenderUF6Tank.java @@ -3,6 +3,7 @@ package com.hbm.render.tileentity; import org.lwjgl.opengl.GL11; import com.hbm.lib.RefStrings; +import com.hbm.main.ResourceManager; import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; import net.minecraft.tileentity.TileEntity; @@ -11,16 +12,6 @@ import net.minecraftforge.client.model.AdvancedModelLoader; import net.minecraftforge.client.model.IModelCustom; public class RenderUF6Tank extends TileEntitySpecialRenderer { - - private static final ResourceLocation tankModel = new ResourceLocation(/*"/assets/" + */RefStrings.MODID, "models/tank.obj"); - private IModelCustom tankModelC; - private ResourceLocation tankTexture; - - public RenderUF6Tank() - { - tankModelC = AdvancedModelLoader.loadModel(tankModel); - tankTexture = new ResourceLocation(RefStrings.MODID, "textures/models/UF6Tank.png"); - } @Override public void renderTileEntityAt(TileEntity tileEntity, double x, double y, double z, float f) @@ -40,8 +31,8 @@ public class RenderUF6Tank extends TileEntitySpecialRenderer { GL11.glRotatef(0, 0F, 1F, 0F); break; } - bindTexture(tankTexture); - tankModelC.renderAll(); + bindTexture(ResourceManager.uf6_tex); + ResourceManager.tank.renderAll(); GL11.glPopMatrix(); } diff --git a/src/main/java/com/hbm/render/util/SoyuzPronter.java b/src/main/java/com/hbm/render/util/SoyuzPronter.java index 59658b263..4211cb228 100644 --- a/src/main/java/com/hbm/render/util/SoyuzPronter.java +++ b/src/main/java/com/hbm/render/util/SoyuzPronter.java @@ -91,7 +91,14 @@ public class SoyuzPronter { this.boosterside = boosterside; } } - + + /* TODO + * int list = GL11.glGenLists(1); + * GL11.glNewList(list, GL11.GL_COMPILE); + * //Render + * GL11.glEndList(); + * GL11.glCallList(list); + */ public static void prontSoyuz(int type) { diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineIGenerator.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineIGenerator.java index 7e00e33be..982528874 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineIGenerator.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineIGenerator.java @@ -3,17 +3,22 @@ package com.hbm.tileentity.machine; import java.util.List; import com.google.common.collect.HashBiMap; +import com.hbm.handler.FluidTypeHandler.FluidType; import com.hbm.interfaces.IConsumer; +import com.hbm.interfaces.IFluidAcceptor; import com.hbm.interfaces.ISource; +import com.hbm.inventory.FluidTank; import com.hbm.items.ModItems; +import com.hbm.lib.Library; import com.hbm.tileentity.TileEntityMachineBase; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntityFurnace; +import scala.actors.threadpool.Arrays; -public class TileEntityMachineIGenerator extends TileEntityMachineBase implements ISource { +public class TileEntityMachineIGenerator extends TileEntityMachineBase implements ISource, IFluidAcceptor { public long power; public static final long maxPower = 1000000; @@ -23,11 +28,17 @@ public class TileEntityMachineIGenerator extends TileEntityMachineBase implement public static final int maxTemperature = 1000; public int torque; public static final int maxTorque = 10000; + public float limiter = 0.0F; /// 0 - 1 /// public IGenRTG[] pellets = new IGenRTG[12]; + public FluidTank[] tanks; public TileEntityMachineIGenerator() { super(15); + tanks = new FluidTank[3]; + tanks[0] = new FluidTank(FluidType.WATER, 8000, 0); + tanks[1] = new FluidTank(FluidType.HEATINGOIL, 16000, 1); + tanks[2] = new FluidTank(FluidType.LUBRICANT, 2000, 2); } @Override @@ -39,12 +50,25 @@ public class TileEntityMachineIGenerator extends TileEntityMachineBase implement public void updateEntity() { if(!worldObj.isRemote) { + + tanks[0].loadTank(7, 8, slots); + tanks[1].loadTank(9, 10, slots); + tanks[1].setType(11, 12, slots); + tanks[2].loadTank(13, 14, slots); loadFuel(); - rtgAction(); + pelletAction(); - if(burnTime > 0) + if(burnTime > 0) { burnTime --; + temperature += 100; + } + + rtgAction(); + rotorAction(); + generatorAction(); + + this.power = Library.chargeItemsFromTE(slots, 6, power, maxPower); NBTTagCompound data = new NBTTagCompound(); int[] rtgs = new int[pellets.length]; @@ -57,9 +81,16 @@ public class TileEntityMachineIGenerator extends TileEntityMachineBase implement } data.setIntArray("rtgs", rtgs); + data.setInteger("temp", temperature); + data.setInteger("torque", torque); + data.setInteger("power", (int)power); data.setShort("burn", (short) burnTime); data.setShort("lastBurn", (short) lastBurnTime); + data.setFloat("dial", limiter); this.networkPack(data, 250); + + for(int i = 0; i < 3; i++) + tanks[i].updateTank(xCoord, yCoord, zCoord, this.worldObj.provider.dimensionId); } } @@ -80,8 +111,17 @@ public class TileEntityMachineIGenerator extends TileEntityMachineBase implement } } + this.temperature = nbt.getInteger("temp"); + this.torque = nbt.getInteger("torque"); + this.power = nbt.getInteger("power"); this.burnTime = nbt.getShort("burn"); this.lastBurnTime = nbt.getShort("lastBurn"); + + if(ignoreNext <= 0) { + this.limiter = nbt.getFloat("dial"); + } else { + ignoreNext--; + } } @Override @@ -91,6 +131,8 @@ public class TileEntityMachineIGenerator extends TileEntityMachineBase implement pushPellet(); if(meta == 1) popPellet(); + if(meta == 2) + setDialByAngle(value); } /** @@ -118,6 +160,20 @@ public class TileEntityMachineIGenerator extends TileEntityMachineBase implement } } + /** + * Creates heat from RTG pellets + */ + private void pelletAction() { + + for(int i = 0; i < pellets.length; i++) { + if(pellets[i] != null) + this.temperature += pellets[i].heat; + } + + if(temperature > maxTemperature) + temperature = maxTemperature; + } + /** * does the thing with the thermo elements */ @@ -135,6 +191,43 @@ public class TileEntityMachineIGenerator extends TileEntityMachineBase implement this.temperature -= pow; this.power += pow; + + if(power > maxPower) + power = maxPower; + } + + /** + * Turns heat into rotational energy + */ + private void rotorAction() { + + int conversion = getConversion(); + + this.torque += conversion; + this.temperature -= conversion; + + if(torque > maxTorque) + worldObj.createExplosion(null, xCoord + 0.5, yCoord + 0.5, zCoord + 0.5, 5, true); + } + + /** + * Do the power stuff + */ + private void generatorAction() { + + this.power += this.torque; + torque -= getBrake(); + + if(power > maxPower) + power = maxPower; + } + + public int getBrake() { + return (int) Math.ceil(torque * 0.1 * (tanks[2].getFill() > 0 ? 0.5 : 1)); + } + + public int getConversion() { + return (int) (temperature * limiter * (tanks[0].getFill() > 0 ? 1 : 0.35)); } /** @@ -203,6 +296,16 @@ public class TileEntityMachineIGenerator extends TileEntityMachineBase implement public double getTorqueGauge() { return (double) torque / (double) maxTorque; } + + public float getAngleFromDial() { + return (45F + limiter * 270F) % 360F; + } + + int ignoreNext = 0; + public void setDialByAngle(float angle) { + this.limiter = (angle - 45F) / 270F; + ignoreNext = 5; + } @Override public void ffgeuaInit() { @@ -245,6 +348,48 @@ public class TileEntityMachineIGenerator extends TileEntityMachineBase implement // TODO Auto-generated method stub } + + @Override + public void setFillstate(int fill, int index) { + tanks[index].setFill(fill); + } + + @Override + public void setFluidFill(int fill, FluidType type) { + // TODO Auto-generated method stub + + } + + @Override + public void setType(FluidType type, int index) { + // TODO Auto-generated method stub + + } + + @Override + public List getTanks() { + return Arrays.asList(tanks); + } + + @Override + public int getFluidFill(FluidType type) { + + for(int i = 0; i < 3; i++) + if(tanks[i].getTankType() == type) + return tanks[i].getFill(); + + return 0; + } + + @Override + public int getMaxFluidFill(FluidType type) { + + for(int i = 0; i < 3; i++) + if(tanks[i].getTankType() == type) + return tanks[i].getMaxFill(); + + return 0; + } @Override public void readFromNBT(NBTTagCompound nbt) { @@ -263,6 +408,7 @@ public class TileEntityMachineIGenerator extends TileEntityMachineBase implement this.burnTime = nbt.getInteger("burn"); this.lastBurnTime = nbt.getInteger("lastBurn"); + this.limiter = nbt.getFloat("limiter"); } @Override @@ -280,6 +426,7 @@ public class TileEntityMachineIGenerator extends TileEntityMachineBase implement nbt.setInteger("burn", burnTime); nbt.setInteger("lastBurn", lastBurnTime); + nbt.setFloat("limiter", limiter); } private static HashBiMap rtgPellets = HashBiMap.create(); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachinePlasmaHeater.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachinePlasmaHeater.java index fd41498e3..a96cf53a6 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachinePlasmaHeater.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachinePlasmaHeater.java @@ -178,18 +178,6 @@ public class TileEntityMachinePlasmaHeater extends TileEntityMachineBase impleme tanks[1].writeToNBT(nbt, "fuel_2"); plasma.writeToNBT(nbt, "plasma"); } - - @Override - public AxisAlignedBB getRenderBoundingBox() { - return TileEntity.INFINITE_EXTENT_AABB; - } - - @Override - @SideOnly(Side.CLIENT) - public double getMaxRenderDistanceSquared() - { - return 65536.0D; - } @Override public int getMaxFluidFill(FluidType type) { @@ -267,4 +255,16 @@ public class TileEntityMachinePlasmaHeater extends TileEntityMachineBase impleme public long getMaxPower() { return maxPower; } + + @Override + public AxisAlignedBB getRenderBoundingBox() { + return TileEntity.INFINITE_EXTENT_AABB; + } + + @Override + @SideOnly(Side.CLIENT) + public double getMaxRenderDistanceSquared() + { + return 65536.0D; + } }