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.BlockConveyorBelt;
import assemblyline.belts.TileEntityConveyorBelt; import assemblyline.belts.TileEntityConveyorBelt;
import assemblyline.interaction.BlockInteraction; import assemblyline.interaction.BlockInteraction;
import assemblyline.interaction.BlockInteraction.InteractMachineMetadata; import assemblyline.interaction.BlockInteraction.MachineType;
import assemblyline.interaction.ItemBlockInteraction; import assemblyline.interaction.ItemBlockInteraction;
import assemblyline.interaction.TileEntityEjector; import assemblyline.interaction.TileEntityEjector;
import assemblyline.interaction.TileEntityInjector; import assemblyline.interaction.TileEntityInjector;
@ -73,8 +73,8 @@ public class AssemblyLine
proxy.init(); proxy.init();
// Names // Names
LanguageRegistry.addName(new ItemStack(blockConveyorBelt, 1), "Coneveyor Belt"); 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, MachineType.EJECTOR.metadata), MachineType.EJECTOR.name);
LanguageRegistry.addName(new ItemStack(blockInteraction, 1, InteractMachineMetadata.INJECTOR.metadata), InteractMachineMetadata.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, 8), "FutureBlock");
LanguageRegistry.addName(new ItemStack(blockInteraction, 1, 12), "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.Material;
import net.minecraft.src.TileEntity; import net.minecraft.src.TileEntity;
import net.minecraft.src.World; import net.minecraft.src.World;
import net.minecraftforge.common.ForgeDirection;
import universalelectricity.prefab.BlockMachine; import universalelectricity.prefab.BlockMachine;
import assemblyline.AssemblyLine; import assemblyline.AssemblyLine;
import assemblyline.render.RenderHelper; import assemblyline.render.RenderHelper;
@ -16,49 +17,93 @@ import assemblyline.render.RenderHelper;
*/ */
public class BlockInteraction extends BlockMachine 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 String name;
public int metadata; 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.name = name;
this.metadata = metadata; 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]; } for(MachineType value : MachineType.values())
else if (metadata >= 4 && metadata < 8) { return InteractMachineMetadata.values()[4]; } {
else if (metadata >= 8 && metadata < 12) { return InteractMachineMetadata.values()[8]; } if(metadata >= value.metadata && metadata < value.metadata + 4)
else { return InteractMachineMetadata.values()[12]; } {
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) public BlockInteraction(int id)
{ {
super("Machine", id, Material.iron); super("Interaction Machine", id, Material.iron);
this.setCreativeTab(CreativeTabs.tabTransport); this.setCreativeTab(CreativeTabs.tabTransport);
} }
public int damageDropped(int metadata) 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) public boolean onMachineActivated(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)
{ {
if (!par1World.isRemote) 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;
} }
return true; return true;
@ -68,90 +113,21 @@ public class BlockInteraction extends BlockMachine
public boolean onUseWrench(World par1World, int x, int y, int z, EntityPlayer par5EntityPlayer) public boolean onUseWrench(World par1World, int x, int y, int z, EntityPlayer par5EntityPlayer)
{ {
int metadata = par1World.getBlockMetadata(x, y, z); int metadata = par1World.getBlockMetadata(x, y, z);
MachineType machineType = MachineType.getBase(metadata);
if (metadata == 3) par1World.setBlockAndMetadataWithNotify(x, y, z, this.blockID, machineType.getNextDirectionMeta(MachineType.getDirection(metadata)));
{
par1World.setBlockAndMetadataWithNotify(x, y, z, this.blockID, 0);
return true; 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;
}
}
/** @Override
* gets the correct facing direction from meta public boolean onSneakUseWrench(World par1World, int x, int y, int z, EntityPlayer par5EntityPlayer)
* data
*
* @param meta
* @return facing direction(int)
*/
public byte getDirection(int meta)
{ {
return this.onUseWrench(par1World, x, y, z, 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;
} }
@Override @Override
public TileEntity createNewTileEntity(World var1, int metadata) public TileEntity createNewTileEntity(World var1, int metadata)
{ {
if (metadata >= 0 && metadata < 4) { return new TileEntityEjector(); } return MachineType.getBase(metadata).instantiateTileEntity();
if (metadata >= 4 && metadata < 8) { return new TileEntityInjector(); }
if (metadata >= 8 && metadata < 12) { return null; }
if (metadata >= 12 && metadata < 16) { return null; }
return null;
} }
@Override @Override

View file

@ -10,7 +10,7 @@ import net.minecraft.src.ItemStack;
import net.minecraft.src.MathHelper; import net.minecraft.src.MathHelper;
import net.minecraft.src.World; import net.minecraft.src.World;
import assemblyline.AssemblyLine; import assemblyline.AssemblyLine;
import assemblyline.interaction.BlockInteraction.InteractMachineMetadata; import assemblyline.interaction.BlockInteraction.MachineType;
public class ItemBlockInteraction extends ItemBlock public class ItemBlockInteraction extends ItemBlock
{ {
@ -23,7 +23,7 @@ public class ItemBlockInteraction extends ItemBlock
public void getSubItems(int par1, CreativeTabs par2CreativeTabs, List par3List) 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)); par3List.add(new ItemStack(AssemblyLine.blockInteraction, 1, machine.metadata));
} }
@ -31,7 +31,7 @@ public class ItemBlockInteraction extends ItemBlock
public String getItemNameIS(ItemStack itemstack) public String getItemNameIS(ItemStack itemstack)
{ {
return InteractMachineMetadata.getBase(itemstack.getItemDamage()).name; return MachineType.getBase(itemstack.getItemDamage()).name;
} }
@Override @Override

View file

@ -5,6 +5,7 @@ import net.minecraft.src.TileEntitySpecialRenderer;
import org.lwjgl.opengl.GL11; import org.lwjgl.opengl.GL11;
import assemblyline.AssemblyLine;
import assemblyline.belts.TileEntityConveyorBelt; import assemblyline.belts.TileEntityConveyorBelt;
import assemblyline.model.ModelConveyorBelt; import assemblyline.model.ModelConveyorBelt;
@ -23,7 +24,7 @@ public class RenderConveyorBelt extends TileEntitySpecialRenderer
GL11.glRotatef(180f, 0f, 0f, 1f); GL11.glRotatef(180f, 0f, 0f, 1f);
int pos = 0; 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==2){ GL11.glRotatef(180f, 0f, 1f, 0f);}
if(face==3){ GL11.glRotatef(0f, 0f, 1f, 0f);} if(face==3){ GL11.glRotatef(0f, 0f, 1f, 0f);}
if(face==4){ GL11.glRotatef(90f, 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 org.lwjgl.opengl.GL11;
import assemblyline.AssemblyLine; import assemblyline.AssemblyLine;
import assemblyline.interaction.BlockInteraction.InteractMachineMetadata; import assemblyline.interaction.BlockInteraction.MachineType;
import assemblyline.model.ModelConveyorBelt; import assemblyline.model.ModelConveyorBelt;
import assemblyline.model.ModelEjector; import assemblyline.model.ModelEjector;
import assemblyline.model.ModelInjector; import assemblyline.model.ModelInjector;
@ -31,15 +31,15 @@ public class RenderHelper implements ISimpleBlockRenderingHandler
GL11.glPushMatrix(); GL11.glPushMatrix();
GL11.glTranslatef((float) 0.0F, (float) 1.5F, (float) 0.0F); GL11.glTranslatef((float) 0.0F, (float) 1.5F, (float) 0.0F);
GL11.glRotatef(180f, 0f, 0f, 1f); 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); modelConveyorBelt.render(0.0625F, 0, false, false, false);
GL11.glPopMatrix(); GL11.glPopMatrix();
} }
else if (block.blockID == AssemblyLine.blockInteraction.blockID) 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.glPushMatrix();
GL11.glTranslatef((float) 0.6F, (float) 1.5F, (float) 0.6F); GL11.glTranslatef((float) 0.6F, (float) 1.5F, (float) 0.6F);
GL11.glRotatef(180f, 0f, 0f, 1f); GL11.glRotatef(180f, 0f, 0f, 1f);
@ -48,9 +48,9 @@ public class RenderHelper implements ISimpleBlockRenderingHandler
modelEjector.renderPiston(0.0625F, 1); modelEjector.renderPiston(0.0625F, 1);
GL11.glPopMatrix(); 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.glPushMatrix();
GL11.glTranslatef((float) 0.6F, (float) 1.5F, (float) 0.6F); GL11.glTranslatef((float) 0.6F, (float) 1.5F, (float) 0.6F);
GL11.glRotatef(180f, 0f, 0f, 1f); 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); int ent = tileEntity.worldObj.getBlockId(tileEntity.xCoord, tileEntity.yCoord, tileEntity.zCoord);
model.render(0.0625F, true, 0); model.render(0.0625F, true, 0);
//TODO change the true part to check if there is a TE on the input side //TODO change the true part to check if there is a TE on the input side
System.out.println("RENDERING MACHINE BELT");
GL11.glPopMatrix(); GL11.glPopMatrix();
} }