diff --git a/src/main/java/com/hbm/blocks/ModBlocks.java b/src/main/java/com/hbm/blocks/ModBlocks.java index d21a6497e..287405541 100644 --- a/src/main/java/com/hbm/blocks/ModBlocks.java +++ b/src/main/java/com/hbm/blocks/ModBlocks.java @@ -8,6 +8,7 @@ import com.hbm.blocks.generic.*; import com.hbm.blocks.generic.BlockHazard.ExtDisplayEffect; import com.hbm.blocks.machine.*; import com.hbm.blocks.machine.albion.*; +import com.hbm.blocks.machine.fusion.MachineFusionTorus; import com.hbm.blocks.machine.pile.*; import com.hbm.blocks.machine.rbmk.*; import com.hbm.blocks.network.*; @@ -903,8 +904,9 @@ public class ModBlocks { public static Block iter; public static Block plasma_heater; - + public static Block fusion_component; + public static Block fusion_torus; public static Block machine_icf_press; public static Block icf_component; @@ -2046,6 +2048,7 @@ public class ModBlocks { plasma_heater = new MachinePlasmaHeater().setBlockName("plasma_heater").setHardness(5.0F).setResistance(60.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":plasma_heater"); fusion_component = new BlockFusionComponent().setBlockName("fusion_component").setHardness(5.0F).setResistance(30.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":fusion_component"); + fusion_torus = new MachineFusionTorus().setBlockName("fusion_torus").setHardness(5.0F).setResistance(60.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); machine_icf_press = new MachineICFPress().setBlockName("machine_icf_press").setHardness(5.0F).setResistance(60.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); icf = new MachineICF().setBlockName("icf").setHardness(5.0F).setResistance(60.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); @@ -3429,6 +3432,7 @@ public class ModBlocks { GameRegistry.registerBlock(plasma_heater, plasma_heater.getUnlocalizedName()); register(fusion_component); + register(fusion_torus); register(watz_element); register(watz_cooler); diff --git a/src/main/java/com/hbm/blocks/machine/fusion/MachineFusionTorus.java b/src/main/java/com/hbm/blocks/machine/fusion/MachineFusionTorus.java new file mode 100644 index 000000000..45b2d2ca7 --- /dev/null +++ b/src/main/java/com/hbm/blocks/machine/fusion/MachineFusionTorus.java @@ -0,0 +1,159 @@ +package com.hbm.blocks.machine.fusion; + +import com.hbm.blocks.BlockDummyable; +import com.hbm.tileentity.TileEntityProxyCombo; +import com.hbm.tileentity.machine.fusion.TileEntityFusionTorus; + +import net.minecraft.block.material.Material; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.world.World; +import net.minecraftforge.common.util.ForgeDirection; + +public class MachineFusionTorus extends BlockDummyable { + + public static final int[][][] layout = new int[][][] { + + new int[][] { + new int[] {0,0,0,0,3,3,3,3,3,3,3,0,0,0,0}, + new int[] {0,0,0,3,1,1,1,1,1,1,1,3,0,0,0}, + new int[] {0,0,3,1,1,1,1,1,1,1,1,1,3,0,0}, + new int[] {0,3,1,1,1,1,1,1,1,1,1,1,1,3,0}, + new int[] {3,1,1,1,1,3,3,3,3,3,1,1,1,1,3}, + new int[] {3,1,1,1,3,3,3,3,3,3,3,1,1,1,3}, + new int[] {3,1,1,1,3,3,3,3,3,3,3,1,1,1,3}, + new int[] {3,1,1,1,3,3,3,3,3,3,3,1,1,1,3}, + new int[] {3,1,1,1,3,3,3,3,3,3,3,1,1,1,3}, + new int[] {3,1,1,1,3,3,3,3,3,3,3,1,1,1,3}, + new int[] {3,1,1,1,1,3,3,3,3,3,1,1,1,1,3}, + new int[] {0,3,1,1,1,1,1,1,1,1,1,1,1,3,0}, + new int[] {0,0,3,1,1,1,1,1,1,1,1,1,3,0,0}, + new int[] {0,0,0,3,1,1,1,1,1,1,1,3,0,0,0}, + new int[] {0,0,0,0,3,3,3,3,3,3,3,0,0,0,0}, + }, + new int[][] { + new int[] {0,0,0,0,1,1,3,3,3,1,1,0,0,0,0}, + new int[] {0,0,0,1,1,1,1,1,1,1,1,1,0,0,0}, + new int[] {0,0,1,1,2,2,2,2,2,2,2,1,1,0,0}, + new int[] {0,1,1,2,1,1,1,1,1,1,1,2,1,1,0}, + new int[] {1,1,2,1,1,1,1,1,1,1,1,1,2,1,1}, + new int[] {1,1,2,1,1,3,3,3,3,3,1,1,2,1,1}, + new int[] {3,1,2,1,1,3,3,3,3,3,1,1,2,1,3}, + new int[] {3,1,2,1,1,3,3,3,3,3,1,1,2,1,3}, + new int[] {3,1,2,1,1,3,3,3,3,3,1,1,2,1,3}, + new int[] {1,1,2,1,1,3,3,3,3,3,1,1,2,1,1}, + new int[] {1,1,2,1,1,1,1,1,1,1,1,1,2,1,1}, + new int[] {0,1,1,2,1,1,1,1,1,1,1,2,1,1,0}, + new int[] {0,0,1,1,2,2,2,2,2,2,2,1,1,0,0}, + new int[] {0,0,0,1,1,1,1,1,1,1,1,1,0,0,0}, + new int[] {0,0,0,0,1,1,3,3,3,1,1,0,0,0,0}, + }, + new int[][] { + new int[] {0,0,0,0,1,1,3,3,3,1,1,0,0,0,0}, + new int[] {0,0,0,1,2,2,2,2,2,2,2,1,0,0,0}, + new int[] {0,0,1,2,2,2,2,2,2,2,2,2,1,0,0}, + new int[] {0,1,2,2,2,2,2,2,2,2,2,2,2,1,0}, + new int[] {1,2,2,2,1,1,1,1,1,1,1,2,2,2,1}, + new int[] {1,2,2,2,1,3,3,3,3,3,1,2,2,2,1}, + new int[] {3,2,2,2,1,3,3,3,3,3,1,2,2,2,3}, + new int[] {3,2,2,2,1,3,3,3,3,3,1,2,2,2,3}, + new int[] {3,2,2,2,1,3,3,3,3,3,1,2,2,2,3}, + new int[] {1,2,2,2,1,3,3,3,3,3,1,2,2,2,1}, + new int[] {1,2,2,2,1,1,1,1,1,1,1,2,2,2,1}, + new int[] {0,1,2,2,2,2,2,2,2,2,2,2,2,1,0}, + new int[] {0,0,1,2,2,2,2,2,2,2,2,2,1,0,0}, + new int[] {0,0,0,1,2,2,2,2,2,2,2,1,0,0,0}, + new int[] {0,0,0,0,1,1,3,3,3,1,1,0,0,0,0}, + } + }; + + public MachineFusionTorus() { + super(Material.iron); + } + + @Override + public TileEntity createNewTileEntity(World world, int meta) { + if(meta >= 12) return new TileEntityFusionTorus(); + if(meta >= 6) return new TileEntityProxyCombo().inventory().power().fluid(); + + return null; + } + + @Override + public int[] getDimensions() { + return new int[] { 4, 0, 7, 7, 7, 7 }; + } + + @Override + public int getOffset() { + return 7; + } + + @Override + public boolean checkRequirement(World world, int x, int y, int z, ForgeDirection dir, int o) { + + x = x + dir.offsetX * o; + z = z + dir.offsetZ * o; + + for(int iy = 0; iy < 5; iy++) { + + int l = iy > 2 ? 4 - iy : iy; + int[][] layer = layout[l]; + + for(int ix = 0; ix < layer.length; ix++) { + + for(int iz = 0; iz < layer.length; iz++) { + + int ex = ix - layer.length / 2; + int ez = iz - layer.length / 2; + + if(!world.getBlock(x + ex, y + iy, z + ez).canPlaceBlockAt(world, x + ex, y + iy, z + ez)) { + return false; + } + } + } + } + + return true; + } + + @Override + public void fillSpace(World world, int x, int y, int z, ForgeDirection dir, int o) { + + x = x + dir.offsetX * o; + z = z + dir.offsetZ * o; + + for(int iy = 0; iy < 5; iy++) { + + int l = iy > 2 ? 4 - iy : iy; + int[][] layer = layout[l]; + + for(int ix = 0; ix < layer.length; ix++) { + + for(int iz = 0; iz < layer[0].length; iz++) { + + int ex = ix - layer.length / 2; + int ez = iz - layer.length / 2; + + int meta = 0; + + if(iy > 0) { + meta = ForgeDirection.UP.ordinal(); + } else if(ex < 0) { + meta = ForgeDirection.WEST.ordinal(); + } else if(ex > 0) { + meta = ForgeDirection.EAST.ordinal(); + } else if(ez < 0) { + meta = ForgeDirection.NORTH.ordinal(); + } else if(ez > 0) { + meta = ForgeDirection.SOUTH.ordinal(); + } else { + continue; + } + + if(layout[l][ix][iz] > 0) + world.setBlock(x + ex, y + iy, z + ez, this, meta, 3); + } + } + } + } +} diff --git a/src/main/java/com/hbm/main/ClientProxy.java b/src/main/java/com/hbm/main/ClientProxy.java index c45044797..f87d3a4ef 100644 --- a/src/main/java/com/hbm/main/ClientProxy.java +++ b/src/main/java/com/hbm/main/ClientProxy.java @@ -75,6 +75,7 @@ import com.hbm.tileentity.bomb.*; import com.hbm.tileentity.deco.*; import com.hbm.tileentity.machine.*; import com.hbm.tileentity.machine.albion.*; +import com.hbm.tileentity.machine.fusion.*; import com.hbm.tileentity.machine.oil.*; import com.hbm.tileentity.machine.rbmk.*; import com.hbm.tileentity.machine.storage.*; @@ -422,6 +423,8 @@ public class ClientProxy extends ServerProxy { ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachinePlasmaHeater.class, new RenderPlasmaHeater()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityICF.class, new RenderICF()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityICFController.class, new RenderICFController()); + //Fusion + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityFusionTorus.class, new RenderFusionTorus()); //Watz ClientRegistry.bindTileEntitySpecialRenderer(TileEntityWatz.class, new RenderWatz()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityWatzPump.class, new RenderWatzPump()); diff --git a/src/main/java/com/hbm/main/ResourceManager.java b/src/main/java/com/hbm/main/ResourceManager.java index 6af5c6005..207d5c181 100644 --- a/src/main/java/com/hbm/main/ResourceManager.java +++ b/src/main/java/com/hbm/main/ResourceManager.java @@ -248,6 +248,7 @@ public class ResourceManager { //ITER public static final IModelCustom iter = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/reactors/iter.obj")).asVBO(); + public static final IModelCustom fusion_torus = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/fusion/torus.obj")).asVBO(); //ICF public static final IModelCustom icf = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/reactors/icf.obj")).asVBO(); @@ -698,6 +699,7 @@ public class ResourceManager { public static final ResourceLocation iter_torus_desh = new ResourceLocation(RefStrings.MODID, "textures/models/iter/torus_desh.png"); public static final ResourceLocation iter_torus_chlorophyte = new ResourceLocation(RefStrings.MODID, "textures/models/iter/torus_chlorophyte.png"); public static final ResourceLocation iter_torus_vaporwave = new ResourceLocation(RefStrings.MODID, "textures/models/iter/torus_vaporwave.png"); + public static final ResourceLocation fusion_torus_tex = new ResourceLocation(RefStrings.MODID, "textures/models/fusion/torus.png"); //ICF public static final ResourceLocation icf_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/icf.png"); diff --git a/src/main/java/com/hbm/render/tileentity/RenderFusionTorus.java b/src/main/java/com/hbm/render/tileentity/RenderFusionTorus.java new file mode 100644 index 000000000..ea1f116a8 --- /dev/null +++ b/src/main/java/com/hbm/render/tileentity/RenderFusionTorus.java @@ -0,0 +1,51 @@ +package com.hbm.render.tileentity; + +import org.lwjgl.opengl.GL11; + +import com.hbm.blocks.ModBlocks; +import com.hbm.main.ResourceManager; +import com.hbm.render.item.ItemRenderBase; + +import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; +import net.minecraft.item.Item; +import net.minecraft.tileentity.TileEntity; +import net.minecraftforge.client.IItemRenderer; + +public class RenderFusionTorus extends TileEntitySpecialRenderer implements IItemRendererProvider { + + @Override + public void renderTileEntityAt(TileEntity tile, double x, double y, double z, float interp) { + GL11.glPushMatrix(); + GL11.glTranslated(x + 0.5, y, z + 0.5); + GL11.glEnable(GL11.GL_LIGHTING); + GL11.glEnable(GL11.GL_CULL_FACE); + + GL11.glShadeModel(GL11.GL_SMOOTH); + bindTexture(ResourceManager.fusion_torus_tex); + ResourceManager.fusion_torus.renderAll(); + GL11.glShadeModel(GL11.GL_FLAT); + + GL11.glPopMatrix(); + } + + @Override + public Item getItemForRenderer() { + return Item.getItemFromBlock(ModBlocks.fusion_torus); + } + + @Override + public IItemRenderer getRenderer() { + return new ItemRenderBase() { + public void renderInventory() { + GL11.glScaled(2, 2, 2); + } + public void renderCommon() { + GL11.glScaled(0.5, 0.5, 0.5); + GL11.glRotatef(90, 0F, 1F, 0F); + GL11.glShadeModel(GL11.GL_SMOOTH); + bindTexture(ResourceManager.fusion_torus_tex); + ResourceManager.fusion_torus.renderAll(); + GL11.glShadeModel(GL11.GL_FLAT); + }}; + } +} diff --git a/src/main/java/com/hbm/tileentity/TileMappings.java b/src/main/java/com/hbm/tileentity/TileMappings.java index 313b1057c..0b425e1b8 100644 --- a/src/main/java/com/hbm/tileentity/TileMappings.java +++ b/src/main/java/com/hbm/tileentity/TileMappings.java @@ -48,6 +48,7 @@ import com.hbm.tileentity.bomb.*; import com.hbm.tileentity.deco.*; import com.hbm.tileentity.machine.*; import com.hbm.tileentity.machine.albion.*; +import com.hbm.tileentity.machine.fusion.*; import com.hbm.tileentity.machine.oil.*; import com.hbm.tileentity.machine.pile.*; import com.hbm.tileentity.machine.rbmk.*; @@ -253,6 +254,7 @@ public class TileMappings { putMachines(); putPile(); putRBMK(); + putFusion(); TileEntityMachineRadarNT.registerEntityClasses(); TileEntityMachineRadarNT.registerConverters(); @@ -410,6 +412,10 @@ public class TileMappings { put(TileEntityRBMKAutoloader.class, "tileentity_rbmk_autoloader"); } + private static void putFusion() { + put(TileEntityFusionTorus.class, "tileentity_fusion_torus"); + } + private static void putNetwork() { put(TileEntityCableBaseNT.class, "tileentity_cable", "tileentity_wirecoated"); put(TileEntityCablePaintable.class, "tileentity_cable_paintable"); diff --git a/src/main/java/com/hbm/tileentity/machine/fusion/TileEntityFusionTorus.java b/src/main/java/com/hbm/tileentity/machine/fusion/TileEntityFusionTorus.java new file mode 100644 index 000000000..b3aa16bc0 --- /dev/null +++ b/src/main/java/com/hbm/tileentity/machine/fusion/TileEntityFusionTorus.java @@ -0,0 +1,60 @@ +package com.hbm.tileentity.machine.fusion; + +import com.hbm.tileentity.machine.albion.TileEntityCooledBase; +import com.hbm.util.fauxpointtwelve.DirPos; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.util.AxisAlignedBB; + +public class TileEntityFusionTorus extends TileEntityCooledBase { + + public TileEntityFusionTorus() { + super(3); + } + + @Override + public String getName() { + return "container.fusionTorus"; + } + + @Override + public void updateEntity() { + + } + + @Override + public long getMaxPower() { + return 0; + } + + @Override + public DirPos[] getConPos() { + return null; + } + + AxisAlignedBB bb = null; + + @Override + public AxisAlignedBB getRenderBoundingBox() { + + if(bb == null) { + bb = AxisAlignedBB.getBoundingBox( + xCoord - 8, + yCoord, + zCoord - 8, + xCoord + 9, + yCoord + 5, + zCoord + 9 + ); + } + + return bb; + } + + @Override + @SideOnly(Side.CLIENT) + public double getMaxRenderDistanceSquared() { + return 65536.0D; + } +} diff --git a/src/main/resources/assets/hbm/textures/gui/reactors/gui_fusion_torus.png b/src/main/resources/assets/hbm/textures/gui/reactors/gui_fusion_torus.png index 18630903e..323837eb3 100644 Binary files a/src/main/resources/assets/hbm/textures/gui/reactors/gui_fusion_torus.png and b/src/main/resources/assets/hbm/textures/gui/reactors/gui_fusion_torus.png differ diff --git a/src/main/resources/assets/hbm/textures/gui/reactors/gui_fusion_torus_alt.png b/src/main/resources/assets/hbm/textures/gui/reactors/gui_fusion_torus_alt.png deleted file mode 100644 index 323837eb3..000000000 Binary files a/src/main/resources/assets/hbm/textures/gui/reactors/gui_fusion_torus_alt.png and /dev/null differ