Enum Organization

This commit is contained in:
Calclavia 2012-10-28 15:47:58 +08:00
parent cbad7f40cd
commit 4bbaded7a4
6 changed files with 86 additions and 110 deletions

View file

@ -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");
}

View file

@ -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<? extends TileEntity> tileEntity;
InteractMachineMetadata(String name, int metadata)
MachineType(String name, int metadata, Class<? extends TileEntity> 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

View file

@ -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

View file

@ -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);}

View file

@ -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);

View file

@ -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();
}