diff --git a/src/common/assemblyline/AssemblyLine.java b/src/common/assemblyline/AssemblyLine.java index 39002842..f455de8c 100644 --- a/src/common/assemblyline/AssemblyLine.java +++ b/src/common/assemblyline/AssemblyLine.java @@ -13,7 +13,7 @@ import universalelectricity.prefab.network.PacketManager; import assemblyline.belts.BlockConveyorBelt; import assemblyline.belts.TileEntityConveyorBelt; import assemblyline.interaction.BlockInteraction; -import assemblyline.interaction.BlockInteraction.InteractMachineMetadata; +import assemblyline.interaction.BlockInteraction.MachineType; import assemblyline.interaction.ItemBlockInteraction; import assemblyline.interaction.TileEntityEjector; import assemblyline.interaction.TileEntityInjector; @@ -73,8 +73,8 @@ public class AssemblyLine proxy.init(); // Names LanguageRegistry.addName(new ItemStack(blockConveyorBelt, 1), "Coneveyor Belt"); - LanguageRegistry.addName(new ItemStack(blockInteraction, 1, InteractMachineMetadata.EJECTOR.metadata), InteractMachineMetadata.EJECTOR.name); - LanguageRegistry.addName(new ItemStack(blockInteraction, 1, InteractMachineMetadata.INJECTOR.metadata), InteractMachineMetadata.EJECTOR.name); + LanguageRegistry.addName(new ItemStack(blockInteraction, 1, MachineType.EJECTOR.metadata), MachineType.EJECTOR.name); + LanguageRegistry.addName(new ItemStack(blockInteraction, 1, MachineType.INJECTOR.metadata), MachineType.EJECTOR.name); LanguageRegistry.addName(new ItemStack(blockInteraction, 1, 8), "FutureBlock"); LanguageRegistry.addName(new ItemStack(blockInteraction, 1, 12), "FutureBlock"); } diff --git a/src/common/assemblyline/interaction/BlockInteraction.java b/src/common/assemblyline/interaction/BlockInteraction.java index d53f547e..6e0e5df6 100644 --- a/src/common/assemblyline/interaction/BlockInteraction.java +++ b/src/common/assemblyline/interaction/BlockInteraction.java @@ -5,6 +5,7 @@ import net.minecraft.src.EntityPlayer; import net.minecraft.src.Material; import net.minecraft.src.TileEntity; import net.minecraft.src.World; +import net.minecraftforge.common.ForgeDirection; import universalelectricity.prefab.BlockMachine; import assemblyline.AssemblyLine; import assemblyline.render.RenderHelper; @@ -16,142 +17,117 @@ import assemblyline.render.RenderHelper; */ public class BlockInteraction extends BlockMachine { - public static enum InteractMachineMetadata + public static enum MachineType { - EJECTOR("Ejector", 0), INJECTOR("Injector", 4); + EJECTOR("Ejector", 0, TileEntityEjector.class), + INJECTOR("Injector", 4, TileEntityInjector.class), + INVALID_1("Invalid", 8, null), + INVALID_2("Invalid", 12, null); public String name; public int metadata; + public Class tileEntity; - InteractMachineMetadata(String name, int metadata) + MachineType(String name, int metadata, Class tileEntity) { this.name = name; this.metadata = metadata; + this.tileEntity = tileEntity; } - public static InteractMachineMetadata getBase(int metadata) + public static MachineType getBase(int metadata) { - if (metadata >= 0 && metadata < 4) { return InteractMachineMetadata.values()[0]; } - else if (metadata >= 4 && metadata < 8) { return InteractMachineMetadata.values()[4]; } - else if (metadata >= 8 && metadata < 12) { return InteractMachineMetadata.values()[8]; } - else { return InteractMachineMetadata.values()[12]; } + for(MachineType value : MachineType.values()) + { + if(metadata >= value.metadata && metadata < value.metadata + 4) + { + return value; + } + } + + return null; + } + + /** + * Gets the direction based on the metadata + * @return A direction value from 0 to 4. + */ + public static int getDirection(int metadata) + { + return metadata - MachineType.getBase(metadata).metadata; + } + + /** + * @param currentDirection - An integer from 0 to 4. + * @return The metadata this block should change into. + */ + public int getNextDirectionMeta(int currentDirection) + { + currentDirection ++; + + if(currentDirection >= 4) + { + currentDirection = 0; + } + + return currentDirection + this.metadata; + } + + public TileEntity instantiateTileEntity() + { + try + { + return this.tileEntity.newInstance(); + } + catch (Exception e) + { + e.printStackTrace(); + return null; + } } } public BlockInteraction(int id) { - super("Machine", id, Material.iron); + super("Interaction Machine", id, Material.iron); this.setCreativeTab(CreativeTabs.tabTransport); } public int damageDropped(int metadata) { - return InteractMachineMetadata.getBase(metadata).metadata; + return MachineType.getBase(metadata).metadata; } - public boolean onSneakUseWrench(World par1World, int x, int y, int z, EntityPlayer par5EntityPlayer) - { - return this.onSneakMachineActivated(par1World, x, y, z, par5EntityPlayer); - } - - public boolean onSneakMachineActivated(World par1World, int x, int y, int z, EntityPlayer par5EntityPlayer) + public boolean onMachineActivated(World par1World, int x, int y, int z, EntityPlayer par5EntityPlayer) { if (!par1World.isRemote) { - par5EntityPlayer.openGui(AssemblyLine.instance, 0, par1World, x, y, z); + int metadata = par1World.getBlockMetadata(x, y, z); + par5EntityPlayer.openGui(AssemblyLine.instance, MachineType.getBase(metadata).metadata, par1World, x, y, z); return true; } return true; } - + @Override public boolean onUseWrench(World par1World, int x, int y, int z, EntityPlayer par5EntityPlayer) - { + { int metadata = par1World.getBlockMetadata(x, y, z); - - if (metadata == 3) - { - par1World.setBlockAndMetadataWithNotify(x, y, z, this.blockID, 0); - return true; - } - else if (metadata == 7) - { - par1World.setBlockAndMetadataWithNotify(x, y, z, this.blockID, 4); - return true; - } - else if (metadata == 11) - { - par1World.setBlockAndMetadataWithNotify(x, y, z, this.blockID, 8); - return true; - } - else if (metadata == 15) - { - par1World.setBlockAndMetadataWithNotify(x, y, z, this.blockID, 12); - return true; - } - else - { - par1World.setBlockAndMetadataWithNotify(x, y, z, this.blockID, metadata + 1); - return true; - } + MachineType machineType = MachineType.getBase(metadata); + par1World.setBlockAndMetadataWithNotify(x, y, z, this.blockID, machineType.getNextDirectionMeta(MachineType.getDirection(metadata))); + return true; } - - /** - * gets the correct facing direction from meta - * data - * - * @param meta - * @return facing direction(int) - */ - public byte getDirection(int meta) + + @Override + public boolean onSneakUseWrench(World par1World, int x, int y, int z, EntityPlayer par5EntityPlayer) { - - switch (meta) - { - case 0: - return 2; - case 1: - return 5; - case 2: - return 3; - case 3: - return 4; - case 4: - return 2; - case 5: - return 5; - case 6: - return 3; - case 7: - return 4; - case 8: - return 2; - case 9: - return 5; - case 10: - return 3; - case 11: - return 4; - case 12: - return 2; - case 13: - return 5; - case 14: - return 3; - case 15: - return 4; - } - return 0; + return this.onUseWrench(par1World, x, y, z, par5EntityPlayer); } @Override public TileEntity createNewTileEntity(World var1, int metadata) { - if (metadata >= 0 && metadata < 4) { return new TileEntityEjector(); } - if (metadata >= 4 && metadata < 8) { return new TileEntityInjector(); } - if (metadata >= 8 && metadata < 12) { return null; } - if (metadata >= 12 && metadata < 16) { return null; } - return null; + return MachineType.getBase(metadata).instantiateTileEntity(); } @Override diff --git a/src/common/assemblyline/interaction/ItemBlockInteraction.java b/src/common/assemblyline/interaction/ItemBlockInteraction.java index d0a1707d..41f206a6 100644 --- a/src/common/assemblyline/interaction/ItemBlockInteraction.java +++ b/src/common/assemblyline/interaction/ItemBlockInteraction.java @@ -10,7 +10,7 @@ import net.minecraft.src.ItemStack; import net.minecraft.src.MathHelper; import net.minecraft.src.World; import assemblyline.AssemblyLine; -import assemblyline.interaction.BlockInteraction.InteractMachineMetadata; +import assemblyline.interaction.BlockInteraction.MachineType; public class ItemBlockInteraction extends ItemBlock { @@ -23,7 +23,7 @@ public class ItemBlockInteraction extends ItemBlock public void getSubItems(int par1, CreativeTabs par2CreativeTabs, List par3List) { - for (InteractMachineMetadata machine : InteractMachineMetadata.values()) + for (MachineType machine : MachineType.values()) { par3List.add(new ItemStack(AssemblyLine.blockInteraction, 1, machine.metadata)); } @@ -31,7 +31,7 @@ public class ItemBlockInteraction extends ItemBlock public String getItemNameIS(ItemStack itemstack) { - return InteractMachineMetadata.getBase(itemstack.getItemDamage()).name; + return MachineType.getBase(itemstack.getItemDamage()).name; } @Override diff --git a/src/minecraft/assemblyline/render/RenderConveyorBelt.java b/src/minecraft/assemblyline/render/RenderConveyorBelt.java index 9aba9d34..5f49b7fd 100644 --- a/src/minecraft/assemblyline/render/RenderConveyorBelt.java +++ b/src/minecraft/assemblyline/render/RenderConveyorBelt.java @@ -5,6 +5,7 @@ import net.minecraft.src.TileEntitySpecialRenderer; import org.lwjgl.opengl.GL11; +import assemblyline.AssemblyLine; import assemblyline.belts.TileEntityConveyorBelt; import assemblyline.model.ModelConveyorBelt; @@ -23,7 +24,7 @@ public class RenderConveyorBelt extends TileEntitySpecialRenderer GL11.glRotatef(180f, 0f, 0f, 1f); int pos = 0; - bindTextureByName("/textures/BeltTexture"+flip+".png"); + bindTextureByName(AssemblyLine.TEXTURE_PATH+"BeltTexture"+flip+".png"); if(face==2){ GL11.glRotatef(180f, 0f, 1f, 0f);} if(face==3){ GL11.glRotatef(0f, 0f, 1f, 0f);} if(face==4){ GL11.glRotatef(90f, 0f, 1f, 0f);} diff --git a/src/minecraft/assemblyline/render/RenderHelper.java b/src/minecraft/assemblyline/render/RenderHelper.java index 7c5f90d7..7be462f7 100644 --- a/src/minecraft/assemblyline/render/RenderHelper.java +++ b/src/minecraft/assemblyline/render/RenderHelper.java @@ -7,7 +7,7 @@ import net.minecraft.src.RenderBlocks; import org.lwjgl.opengl.GL11; import assemblyline.AssemblyLine; -import assemblyline.interaction.BlockInteraction.InteractMachineMetadata; +import assemblyline.interaction.BlockInteraction.MachineType; import assemblyline.model.ModelConveyorBelt; import assemblyline.model.ModelEjector; import assemblyline.model.ModelInjector; @@ -31,15 +31,15 @@ public class RenderHelper implements ISimpleBlockRenderingHandler GL11.glPushMatrix(); GL11.glTranslatef((float) 0.0F, (float) 1.5F, (float) 0.0F); GL11.glRotatef(180f, 0f, 0f, 1f); - GL11.glBindTexture(GL11.GL_TEXTURE_2D, FMLClientHandler.instance().getClient().renderEngine.getTexture("/textures/BeltTexture.png")); + GL11.glBindTexture(GL11.GL_TEXTURE_2D, FMLClientHandler.instance().getClient().renderEngine.getTexture(AssemblyLine.TEXTURE_PATH+"BeltTexture.png")); modelConveyorBelt.render(0.0625F, 0, false, false, false); GL11.glPopMatrix(); } else if (block.blockID == AssemblyLine.blockInteraction.blockID) { - if(metadata == InteractMachineMetadata.EJECTOR.metadata) + if(metadata == MachineType.EJECTOR.metadata) { - GL11.glBindTexture(GL11.GL_TEXTURE_2D, FMLClientHandler.instance().getClient().renderEngine.getTexture("/textures/Ejector.png")); + GL11.glBindTexture(GL11.GL_TEXTURE_2D, FMLClientHandler.instance().getClient().renderEngine.getTexture(AssemblyLine.TEXTURE_PATH+"ejector.png")); GL11.glPushMatrix(); GL11.glTranslatef((float) 0.6F, (float) 1.5F, (float) 0.6F); GL11.glRotatef(180f, 0f, 0f, 1f); @@ -48,9 +48,9 @@ public class RenderHelper implements ISimpleBlockRenderingHandler modelEjector.renderPiston(0.0625F, 1); GL11.glPopMatrix(); } - else if(metadata == InteractMachineMetadata.INJECTOR.metadata) + else if(metadata == MachineType.INJECTOR.metadata) { - GL11.glBindTexture(GL11.GL_TEXTURE_2D, FMLClientHandler.instance().getClient().renderEngine.getTexture("/textures/Ejector.png")); + GL11.glBindTexture(GL11.GL_TEXTURE_2D, FMLClientHandler.instance().getClient().renderEngine.getTexture(AssemblyLine.TEXTURE_PATH+"injector.png")); GL11.glPushMatrix(); GL11.glTranslatef((float) 0.6F, (float) 1.5F, (float) 0.6F); GL11.glRotatef(180f, 0f, 0f, 1f); diff --git a/src/minecraft/assemblyline/render/RenderInjector.java b/src/minecraft/assemblyline/render/RenderInjector.java index d293522a..cfc00b14 100644 --- a/src/minecraft/assemblyline/render/RenderInjector.java +++ b/src/minecraft/assemblyline/render/RenderInjector.java @@ -33,7 +33,6 @@ public class RenderInjector extends TileEntitySpecialRenderer int ent = tileEntity.worldObj.getBlockId(tileEntity.xCoord, tileEntity.yCoord, tileEntity.zCoord); model.render(0.0625F, true, 0); //TODO change the true part to check if there is a TE on the input side - System.out.println("RENDERING MACHINE BELT"); GL11.glPopMatrix(); }