v4.0.5 Beta #1
*Update FML *Fix server side errors *Updated machine code *Bugfixes
This commit is contained in:
parent
cb4e028169
commit
a7c52eefe7
17 changed files with 887 additions and 1984 deletions
|
@ -55,17 +55,6 @@ public class BlockBase extends Block
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void addCreativeItems(ArrayList itemList)
|
|
||||||
{
|
|
||||||
if(blockID != ObsidianIngots.platinumOreID)
|
|
||||||
{
|
|
||||||
itemList.add(new ItemStack(this));
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
//Do nothing
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getTextureFile() {
|
public String getTextureFile() {
|
||||||
return "/obsidian/terrain.png";
|
return "/obsidian/terrain.png";
|
||||||
}
|
}
|
||||||
|
|
|
@ -10,96 +10,29 @@ import net.minecraft.src.*;
|
||||||
|
|
||||||
public class BlockCombiner extends BlockContainer
|
public class BlockCombiner extends BlockContainer
|
||||||
{
|
{
|
||||||
private Random combinerRand = new Random();
|
public Random machineRand = new Random();
|
||||||
|
|
||||||
private static int currentFrontTextureIndex = 0;
|
public static int currentFrontTextureIndex = 0;
|
||||||
|
|
||||||
public static boolean isActive = false;
|
|
||||||
|
|
||||||
public BlockCombiner(int par1)
|
public BlockCombiner(int par1)
|
||||||
{
|
{
|
||||||
super(par1, Material.iron);
|
super(par1, Material.iron);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void setDefaultDirection(World world, int par2, int par3, int par4)
|
public void onBlockPlacedBy(World world, int x, int y, int z, EntityLiving entityliving)
|
||||||
{
|
{
|
||||||
if (!world.isRemote)
|
int side = MathHelper.floor_double((double)(entityliving.rotationYaw * 4.0F / 360.0F) + 0.5D) & 3;
|
||||||
|
int change = 3;
|
||||||
|
|
||||||
|
switch(side)
|
||||||
{
|
{
|
||||||
int var5 = world.getBlockId(par2, par3, par4 - 1);
|
case 0: change = 2; break;
|
||||||
int var6 = world.getBlockId(par2, par3, par4 + 1);
|
case 1: change = 5; break;
|
||||||
int var7 = world.getBlockId(par2 - 1, par3, par4);
|
case 2: change = 3; break;
|
||||||
int var8 = world.getBlockId(par2 + 1, par3, par4);
|
case 3: change = 4; break;
|
||||||
byte var9 = 3;
|
|
||||||
|
|
||||||
if (Block.opaqueCubeLookup[var5] && !Block.opaqueCubeLookup[var6])
|
|
||||||
{
|
|
||||||
var9 = 3;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (Block.opaqueCubeLookup[var6] && !Block.opaqueCubeLookup[var5])
|
|
||||||
{
|
|
||||||
var9 = 2;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (Block.opaqueCubeLookup[var7] && !Block.opaqueCubeLookup[var8])
|
|
||||||
{
|
|
||||||
var9 = 5;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (Block.opaqueCubeLookup[var8] && !Block.opaqueCubeLookup[var7])
|
|
||||||
{
|
|
||||||
var9 = 4;
|
|
||||||
}
|
|
||||||
|
|
||||||
world.setBlockMetadataWithNotify(par2, par3, par4, var9);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public void onBlockPlacedBy(World world, int par2, int par3, int par4, EntityLiving par5EntityLiving)
|
|
||||||
{
|
|
||||||
int var6 = MathHelper.floor_double((double)(par5EntityLiving.rotationYaw * 4.0F / 360.0F) + 0.5D) & 3;
|
|
||||||
|
|
||||||
if (var6 == 0)
|
|
||||||
{
|
|
||||||
world.setBlockMetadataWithNotify(par2, par3, par4, 2);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (var6 == 1)
|
world.setBlockMetadataWithNotify(x, y, z, change);
|
||||||
{
|
|
||||||
world.setBlockMetadataWithNotify(par2, par3, par4, 5);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (var6 == 2)
|
|
||||||
{
|
|
||||||
world.setBlockMetadataWithNotify(par2, par3, par4, 3);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (var6 == 3)
|
|
||||||
{
|
|
||||||
world.setBlockMetadataWithNotify(par2, par3, par4, 4);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public int idDropped(int par1, Random random, int par3)
|
|
||||||
{
|
|
||||||
return blockID;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void onBlockAdded(World world, int par2, int par3, int par4)
|
|
||||||
{
|
|
||||||
TileEntityCombiner tileEntity = (TileEntityCombiner)world.getBlockTileEntity(par2, par3, par4);
|
|
||||||
if(tileEntity != null)
|
|
||||||
{
|
|
||||||
tileEntity.machineBurnTime = 0;
|
|
||||||
}
|
|
||||||
setDefaultDirection(world, par2, par3, par4);
|
|
||||||
super.onBlockAdded(world, par2, par3, par4);
|
|
||||||
}
|
|
||||||
|
|
||||||
public int getLightValue(IBlockAccess world, int x, int y, int z)
|
|
||||||
{
|
|
||||||
if(isActive) return 14;
|
|
||||||
else return 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@SideOnly(Side.CLIENT)
|
@SideOnly(Side.CLIENT)
|
||||||
|
@ -109,29 +42,32 @@ public class BlockCombiner extends BlockContainer
|
||||||
|
|
||||||
if(side == metadata)
|
if(side == metadata)
|
||||||
{
|
{
|
||||||
return isActive ? currentFrontTextureIndex : 17;
|
return ObsidianUtils.isActive(world, x, y, z) ? currentFrontTextureIndex : 17;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
return 16;
|
return 16;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@SideOnly(Side.CLIENT)
|
public static void updateTexture(World world, int x, int y, int z)
|
||||||
public void randomDisplayTick(World world, int par2, int par3, int par4, Random par5Random)
|
|
||||||
{
|
{
|
||||||
if(currentFrontTextureIndex < 15 && currentFrontTextureIndex > -1)
|
if(currentFrontTextureIndex < 15 && currentFrontTextureIndex > -1)
|
||||||
{
|
{
|
||||||
currentFrontTextureIndex++;
|
currentFrontTextureIndex++;
|
||||||
world.markBlockAsNeedsUpdate(par2, par3, par4);
|
|
||||||
}
|
}
|
||||||
else if(currentFrontTextureIndex == 15)
|
else if(currentFrontTextureIndex == 15)
|
||||||
{
|
{
|
||||||
currentFrontTextureIndex = 0;
|
currentFrontTextureIndex = 0;
|
||||||
world.markBlockAsNeedsUpdate(par2, par3, par4);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
world.markBlockAsNeedsUpdate(x, y, z);
|
||||||
|
}
|
||||||
|
|
||||||
|
@SideOnly(Side.CLIENT)
|
||||||
|
public void randomDisplayTick(World world, int par2, int par3, int par4, Random par5Random)
|
||||||
|
{
|
||||||
int metadata = world.getBlockMetadata(par2, par3, par4);
|
int metadata = world.getBlockMetadata(par2, par3, par4);
|
||||||
if (isActive)
|
if (ObsidianUtils.isActive(world, par2, par3, par4))
|
||||||
{
|
{
|
||||||
float var7 = (float)par2 + 0.5F;
|
float var7 = (float)par2 + 0.5F;
|
||||||
float var8 = (float)par3 + 0.0F + par5Random.nextFloat() * 6.0F / 16.0F;
|
float var8 = (float)par3 + 0.0F + par5Random.nextFloat() * 6.0F / 16.0F;
|
||||||
|
@ -200,8 +136,6 @@ public class BlockCombiner extends BlockContainer
|
||||||
|
|
||||||
public static void updateBlock(boolean active, World world, int x, int y, int z)
|
public static void updateBlock(boolean active, World world, int x, int y, int z)
|
||||||
{
|
{
|
||||||
isActive = active;
|
|
||||||
|
|
||||||
TileEntity tileEntity = world.getBlockTileEntity(x, y, z);
|
TileEntity tileEntity = world.getBlockTileEntity(x, y, z);
|
||||||
|
|
||||||
world.markBlockAsNeedsUpdate(x, y, z);
|
world.markBlockAsNeedsUpdate(x, y, z);
|
||||||
|
@ -226,13 +160,13 @@ public class BlockCombiner extends BlockContainer
|
||||||
|
|
||||||
if (var7 != null)
|
if (var7 != null)
|
||||||
{
|
{
|
||||||
float var8 = this.combinerRand.nextFloat() * 0.8F + 0.1F;
|
float var8 = this.machineRand.nextFloat() * 0.8F + 0.1F;
|
||||||
float var9 = this.combinerRand.nextFloat() * 0.8F + 0.1F;
|
float var9 = this.machineRand.nextFloat() * 0.8F + 0.1F;
|
||||||
float var10 = this.combinerRand.nextFloat() * 0.8F + 0.1F;
|
float var10 = this.machineRand.nextFloat() * 0.8F + 0.1F;
|
||||||
|
|
||||||
while (var7.stackSize > 0)
|
while (var7.stackSize > 0)
|
||||||
{
|
{
|
||||||
int var11 = this.combinerRand.nextInt(21) + 10;
|
int var11 = this.machineRand.nextInt(21) + 10;
|
||||||
|
|
||||||
if (var11 > var7.stackSize)
|
if (var11 > var7.stackSize)
|
||||||
{
|
{
|
||||||
|
@ -248,9 +182,9 @@ public class BlockCombiner extends BlockContainer
|
||||||
}
|
}
|
||||||
|
|
||||||
float var13 = 0.05F;
|
float var13 = 0.05F;
|
||||||
var12.motionX = (double)((float)this.combinerRand.nextGaussian() * var13);
|
var12.motionX = (double)((float)this.machineRand.nextGaussian() * var13);
|
||||||
var12.motionY = (double)((float)this.combinerRand.nextGaussian() * var13 + 0.2F);
|
var12.motionY = (double)((float)this.machineRand.nextGaussian() * var13 + 0.2F);
|
||||||
var12.motionZ = (double)((float)this.combinerRand.nextGaussian() * var13);
|
var12.motionZ = (double)((float)this.machineRand.nextGaussian() * var13);
|
||||||
world.spawnEntityInWorld(var12);
|
world.spawnEntityInWorld(var12);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -260,17 +194,13 @@ public class BlockCombiner extends BlockContainer
|
||||||
super.breakBlock(world, par2, par3, par4, i1, i2);
|
super.breakBlock(world, par2, par3, par4, i1, i2);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void addCreativeItems(ArrayList itemList)
|
|
||||||
{
|
|
||||||
itemList.add(new ItemStack(this));
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getTextureFile()
|
public String getTextureFile()
|
||||||
{
|
{
|
||||||
return "/obsidian/Combiner.png";
|
return "/obsidian/Combiner.png";
|
||||||
}
|
}
|
||||||
|
|
||||||
public TileEntity createNewTileEntity(World var1) {
|
public TileEntity createNewTileEntity(World var1)
|
||||||
|
{
|
||||||
return new TileEntityCombiner();
|
return new TileEntityCombiner();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -10,94 +10,27 @@ import net.minecraft.src.*;
|
||||||
|
|
||||||
public class BlockCrusher extends BlockContainer
|
public class BlockCrusher extends BlockContainer
|
||||||
{
|
{
|
||||||
private Random crusherRand = new Random();
|
private Random machineRand = new Random();
|
||||||
|
|
||||||
public static boolean isActive = false;
|
|
||||||
|
|
||||||
public BlockCrusher(int par1)
|
public BlockCrusher(int par1)
|
||||||
{
|
{
|
||||||
super(par1, Material.iron);
|
super(par1, Material.iron);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void setDefaultDirection(World world, int par2, int par3, int par4)
|
public void onBlockPlacedBy(World world, int x, int y, int z, EntityLiving entityliving)
|
||||||
{
|
{
|
||||||
if (!world.isRemote)
|
int side = MathHelper.floor_double((double)(entityliving.rotationYaw * 4.0F / 360.0F) + 0.5D) & 3;
|
||||||
|
int change = 3;
|
||||||
|
|
||||||
|
switch(side)
|
||||||
{
|
{
|
||||||
int var5 = world.getBlockId(par2, par3, par4 - 1);
|
case 0: change = 2; break;
|
||||||
int var6 = world.getBlockId(par2, par3, par4 + 1);
|
case 1: change = 5; break;
|
||||||
int var7 = world.getBlockId(par2 - 1, par3, par4);
|
case 2: change = 3; break;
|
||||||
int var8 = world.getBlockId(par2 + 1, par3, par4);
|
case 3: change = 4; break;
|
||||||
byte var9 = 3;
|
|
||||||
|
|
||||||
if (Block.opaqueCubeLookup[var5] && !Block.opaqueCubeLookup[var6])
|
|
||||||
{
|
|
||||||
var9 = 3;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (Block.opaqueCubeLookup[var6] && !Block.opaqueCubeLookup[var5])
|
|
||||||
{
|
|
||||||
var9 = 2;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (Block.opaqueCubeLookup[var7] && !Block.opaqueCubeLookup[var8])
|
|
||||||
{
|
|
||||||
var9 = 5;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (Block.opaqueCubeLookup[var8] && !Block.opaqueCubeLookup[var7])
|
|
||||||
{
|
|
||||||
var9 = 4;
|
|
||||||
}
|
|
||||||
|
|
||||||
world.setBlockMetadataWithNotify(par2, par3, par4, var9);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public void onBlockPlacedBy(World world, int par2, int par3, int par4, EntityLiving par5EntityLiving)
|
|
||||||
{
|
|
||||||
int var6 = MathHelper.floor_double((double)(par5EntityLiving.rotationYaw * 4.0F / 360.0F) + 0.5D) & 3;
|
|
||||||
|
|
||||||
if (var6 == 0)
|
|
||||||
{
|
|
||||||
world.setBlockMetadataWithNotify(par2, par3, par4, 2);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (var6 == 1)
|
world.setBlockMetadataWithNotify(x, y, z, change);
|
||||||
{
|
|
||||||
world.setBlockMetadataWithNotify(par2, par3, par4, 5);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (var6 == 2)
|
|
||||||
{
|
|
||||||
world.setBlockMetadataWithNotify(par2, par3, par4, 3);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (var6 == 3)
|
|
||||||
{
|
|
||||||
world.setBlockMetadataWithNotify(par2, par3, par4, 4);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public int idDropped(int par1, Random random, int par3)
|
|
||||||
{
|
|
||||||
return blockID;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void onBlockAdded(World world, int par2, int par3, int par4)
|
|
||||||
{
|
|
||||||
TileEntityCrusher tileEntity = (TileEntityCrusher)world.getBlockTileEntity(par2, par3, par4);
|
|
||||||
if(tileEntity != null)
|
|
||||||
{
|
|
||||||
tileEntity.machineBurnTime = 0;
|
|
||||||
}
|
|
||||||
setDefaultDirection(world, par2, par3, par4);
|
|
||||||
super.onBlockAdded(world, par2, par3, par4);
|
|
||||||
}
|
|
||||||
|
|
||||||
public int getLightValue(IBlockAccess world, int x, int y, int z)
|
|
||||||
{
|
|
||||||
if(isActive) return 14;
|
|
||||||
else return 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@SideOnly(Side.CLIENT)
|
@SideOnly(Side.CLIENT)
|
||||||
|
@ -107,7 +40,7 @@ public class BlockCrusher extends BlockContainer
|
||||||
|
|
||||||
if(side == metadata)
|
if(side == metadata)
|
||||||
{
|
{
|
||||||
return isActive ? 16 : 17;
|
return ObsidianUtils.isActive(world, x, y, z) ? 16 : 17;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
return 2;
|
return 2;
|
||||||
|
@ -118,7 +51,7 @@ public class BlockCrusher extends BlockContainer
|
||||||
public void randomDisplayTick(World world, int par2, int par3, int par4, Random par5Random)
|
public void randomDisplayTick(World world, int par2, int par3, int par4, Random par5Random)
|
||||||
{
|
{
|
||||||
int metadata = world.getBlockMetadata(par2, par3, par4);
|
int metadata = world.getBlockMetadata(par2, par3, par4);
|
||||||
if (isActive)
|
if (ObsidianUtils.isActive(world, par2, par3, par4))
|
||||||
{
|
{
|
||||||
float var7 = (float)par2 + 0.5F;
|
float var7 = (float)par2 + 0.5F;
|
||||||
float var8 = (float)par3 + 0.0F + par5Random.nextFloat() * 6.0F / 16.0F;
|
float var8 = (float)par3 + 0.0F + par5Random.nextFloat() * 6.0F / 16.0F;
|
||||||
|
@ -187,8 +120,6 @@ public class BlockCrusher extends BlockContainer
|
||||||
|
|
||||||
public static void updateBlock(boolean active, World world, int x, int y, int z)
|
public static void updateBlock(boolean active, World world, int x, int y, int z)
|
||||||
{
|
{
|
||||||
isActive = active;
|
|
||||||
|
|
||||||
TileEntity tileEntity = world.getBlockTileEntity(x, y, z);
|
TileEntity tileEntity = world.getBlockTileEntity(x, y, z);
|
||||||
|
|
||||||
world.markBlockAsNeedsUpdate(x, y, z);
|
world.markBlockAsNeedsUpdate(x, y, z);
|
||||||
|
@ -201,11 +132,6 @@ public class BlockCrusher extends BlockContainer
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public TileEntity getBlockEntity()
|
|
||||||
{
|
|
||||||
return new TileEntityCrusher();
|
|
||||||
}
|
|
||||||
|
|
||||||
public void breakBlock(World world, int par2, int par3, int par4, int i1, int i2)
|
public void breakBlock(World world, int par2, int par3, int par4, int i1, int i2)
|
||||||
{
|
{
|
||||||
TileEntityCrusher var5 = (TileEntityCrusher)world.getBlockTileEntity(par2, par3, par4);
|
TileEntityCrusher var5 = (TileEntityCrusher)world.getBlockTileEntity(par2, par3, par4);
|
||||||
|
@ -218,13 +144,13 @@ public class BlockCrusher extends BlockContainer
|
||||||
|
|
||||||
if (var7 != null)
|
if (var7 != null)
|
||||||
{
|
{
|
||||||
float var8 = this.crusherRand.nextFloat() * 0.8F + 0.1F;
|
float var8 = this.machineRand.nextFloat() * 0.8F + 0.1F;
|
||||||
float var9 = this.crusherRand.nextFloat() * 0.8F + 0.1F;
|
float var9 = this.machineRand.nextFloat() * 0.8F + 0.1F;
|
||||||
float var10 = this.crusherRand.nextFloat() * 0.8F + 0.1F;
|
float var10 = this.machineRand.nextFloat() * 0.8F + 0.1F;
|
||||||
|
|
||||||
while (var7.stackSize > 0)
|
while (var7.stackSize > 0)
|
||||||
{
|
{
|
||||||
int var11 = this.crusherRand.nextInt(21) + 10;
|
int var11 = this.machineRand.nextInt(21) + 10;
|
||||||
|
|
||||||
if (var11 > var7.stackSize)
|
if (var11 > var7.stackSize)
|
||||||
{
|
{
|
||||||
|
@ -240,9 +166,9 @@ public class BlockCrusher extends BlockContainer
|
||||||
}
|
}
|
||||||
|
|
||||||
float var13 = 0.05F;
|
float var13 = 0.05F;
|
||||||
var12.motionX = (double)((float)this.crusherRand.nextGaussian() * var13);
|
var12.motionX = (double)((float)this.machineRand.nextGaussian() * var13);
|
||||||
var12.motionY = (double)((float)this.crusherRand.nextGaussian() * var13 + 0.2F);
|
var12.motionY = (double)((float)this.machineRand.nextGaussian() * var13 + 0.2F);
|
||||||
var12.motionZ = (double)((float)this.crusherRand.nextGaussian() * var13);
|
var12.motionZ = (double)((float)this.machineRand.nextGaussian() * var13);
|
||||||
world.spawnEntityInWorld(var12);
|
world.spawnEntityInWorld(var12);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -252,11 +178,6 @@ public class BlockCrusher extends BlockContainer
|
||||||
super.breakBlock(world, par2, par3, par4, i1, i2);
|
super.breakBlock(world, par2, par3, par4, i1, i2);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void addCreativeItems(ArrayList itemList)
|
|
||||||
{
|
|
||||||
itemList.add(new ItemStack(this));
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getTextureFile()
|
public String getTextureFile()
|
||||||
{
|
{
|
||||||
return "/obsidian/terrain.png";
|
return "/obsidian/terrain.png";
|
||||||
|
|
|
@ -10,97 +10,27 @@ import net.minecraft.src.*;
|
||||||
|
|
||||||
public class BlockEnrichmentChamber extends BlockContainer
|
public class BlockEnrichmentChamber extends BlockContainer
|
||||||
{
|
{
|
||||||
private Random chamberRand = new Random();
|
private Random machineRand = new Random();
|
||||||
|
|
||||||
public static boolean isActive = false;
|
|
||||||
|
|
||||||
public BlockEnrichmentChamber(int par1)
|
public BlockEnrichmentChamber(int par1)
|
||||||
{
|
{
|
||||||
super(par1, Material.iron);
|
super(par1, Material.iron);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
public void onBlockPlacedBy(World world, int x, int y, int z, EntityLiving entityliving)
|
||||||
* Called when the block is placed in the world.
|
|
||||||
*/
|
|
||||||
public void onBlockPlacedBy(World world, int par2, int par3, int par4, EntityLiving par5EntityLiving)
|
|
||||||
{
|
{
|
||||||
int var6 = MathHelper.floor_double((double)(par5EntityLiving.rotationYaw * 4.0F / 360.0F) + 0.5D) & 3;
|
int side = MathHelper.floor_double((double)(entityliving.rotationYaw * 4.0F / 360.0F) + 0.5D) & 3;
|
||||||
|
int change = 3;
|
||||||
|
|
||||||
if (var6 == 0)
|
switch(side)
|
||||||
{
|
{
|
||||||
world.setBlockMetadataWithNotify(par2, par3, par4, 2);
|
case 0: change = 2; break;
|
||||||
|
case 1: change = 5; break;
|
||||||
|
case 2: change = 3; break;
|
||||||
|
case 3: change = 4; break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (var6 == 1)
|
world.setBlockMetadataWithNotify(x, y, z, change);
|
||||||
{
|
|
||||||
world.setBlockMetadataWithNotify(par2, par3, par4, 5);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (var6 == 2)
|
|
||||||
{
|
|
||||||
world.setBlockMetadataWithNotify(par2, par3, par4, 3);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (var6 == 3)
|
|
||||||
{
|
|
||||||
world.setBlockMetadataWithNotify(par2, par3, par4, 4);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void setDefaultDirection(World world, int par2, int par3, int par4)
|
|
||||||
{
|
|
||||||
if (!world.isRemote)
|
|
||||||
{
|
|
||||||
int var5 = world.getBlockId(par2, par3, par4 - 1);
|
|
||||||
int var6 = world.getBlockId(par2, par3, par4 + 1);
|
|
||||||
int var7 = world.getBlockId(par2 - 1, par3, par4);
|
|
||||||
int var8 = world.getBlockId(par2 + 1, par3, par4);
|
|
||||||
byte var9 = 3;
|
|
||||||
|
|
||||||
if (Block.opaqueCubeLookup[var5] && !Block.opaqueCubeLookup[var6])
|
|
||||||
{
|
|
||||||
var9 = 3;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (Block.opaqueCubeLookup[var6] && !Block.opaqueCubeLookup[var5])
|
|
||||||
{
|
|
||||||
var9 = 2;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (Block.opaqueCubeLookup[var7] && !Block.opaqueCubeLookup[var8])
|
|
||||||
{
|
|
||||||
var9 = 5;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (Block.opaqueCubeLookup[var8] && !Block.opaqueCubeLookup[var7])
|
|
||||||
{
|
|
||||||
var9 = 4;
|
|
||||||
}
|
|
||||||
|
|
||||||
world.setBlockMetadataWithNotify(par2, par3, par4, var9);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public int idDropped(int par1, Random random, int par3)
|
|
||||||
{
|
|
||||||
return blockID;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void onBlockAdded(World world, int par2, int par3, int par4)
|
|
||||||
{
|
|
||||||
TileEntityEnrichmentChamber tileEntity = (TileEntityEnrichmentChamber)world.getBlockTileEntity(par2, par3, par4);
|
|
||||||
if(tileEntity != null)
|
|
||||||
{
|
|
||||||
tileEntity.machineBurnTime = 0;
|
|
||||||
}
|
|
||||||
setDefaultDirection(world, par2, par3, par4);
|
|
||||||
super.onBlockAdded(world, par2, par3, par4);
|
|
||||||
}
|
|
||||||
|
|
||||||
public int getLightValue(IBlockAccess world, int x, int y, int z)
|
|
||||||
{
|
|
||||||
if(isActive) return 14;
|
|
||||||
else return 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@SideOnly(Side.CLIENT)
|
@SideOnly(Side.CLIENT)
|
||||||
|
@ -110,7 +40,7 @@ public class BlockEnrichmentChamber extends BlockContainer
|
||||||
|
|
||||||
if(side == metadata)
|
if(side == metadata)
|
||||||
{
|
{
|
||||||
return isActive ? 8 : 9;
|
return ObsidianUtils.isActive(world, x, y, z) ? 8 : 9;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
return 2;
|
return 2;
|
||||||
|
@ -121,7 +51,7 @@ public class BlockEnrichmentChamber extends BlockContainer
|
||||||
public void randomDisplayTick(World world, int par2, int par3, int par4, Random par5Random)
|
public void randomDisplayTick(World world, int par2, int par3, int par4, Random par5Random)
|
||||||
{
|
{
|
||||||
int metadata = world.getBlockMetadata(par2, par3, par4);
|
int metadata = world.getBlockMetadata(par2, par3, par4);
|
||||||
if (isActive)
|
if (ObsidianUtils.isActive(world, par2, par3, par4))
|
||||||
{
|
{
|
||||||
float var7 = (float)par2 + 0.5F;
|
float var7 = (float)par2 + 0.5F;
|
||||||
float var8 = (float)par3 + 0.0F + par5Random.nextFloat() * 6.0F / 16.0F;
|
float var8 = (float)par3 + 0.0F + par5Random.nextFloat() * 6.0F / 16.0F;
|
||||||
|
@ -190,8 +120,6 @@ public class BlockEnrichmentChamber extends BlockContainer
|
||||||
|
|
||||||
public static void updateBlock(boolean active, World world, int x, int y, int z)
|
public static void updateBlock(boolean active, World world, int x, int y, int z)
|
||||||
{
|
{
|
||||||
isActive = active;
|
|
||||||
|
|
||||||
TileEntity tileEntity = world.getBlockTileEntity(x, y, z);
|
TileEntity tileEntity = world.getBlockTileEntity(x, y, z);
|
||||||
|
|
||||||
world.markBlockAsNeedsUpdate(x, y, z);
|
world.markBlockAsNeedsUpdate(x, y, z);
|
||||||
|
@ -204,12 +132,7 @@ public class BlockEnrichmentChamber extends BlockContainer
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public TileEntity getBlockEntity()
|
public void breakBlock(World world, int par2, int par3, int par4, int i1, int i2)
|
||||||
{
|
|
||||||
return new TileEntityEnrichmentChamber();
|
|
||||||
}
|
|
||||||
|
|
||||||
public void onBlockRemoval(World world, int par2, int par3, int par4, int i1, int i2)
|
|
||||||
{
|
{
|
||||||
TileEntityEnrichmentChamber var5 = (TileEntityEnrichmentChamber)world.getBlockTileEntity(par2, par3, par4);
|
TileEntityEnrichmentChamber var5 = (TileEntityEnrichmentChamber)world.getBlockTileEntity(par2, par3, par4);
|
||||||
|
|
||||||
|
@ -221,13 +144,13 @@ public class BlockEnrichmentChamber extends BlockContainer
|
||||||
|
|
||||||
if (var7 != null)
|
if (var7 != null)
|
||||||
{
|
{
|
||||||
float var8 = this.chamberRand.nextFloat() * 0.8F + 0.1F;
|
float var8 = this.machineRand.nextFloat() * 0.8F + 0.1F;
|
||||||
float var9 = this.chamberRand.nextFloat() * 0.8F + 0.1F;
|
float var9 = this.machineRand.nextFloat() * 0.8F + 0.1F;
|
||||||
float var10 = this.chamberRand.nextFloat() * 0.8F + 0.1F;
|
float var10 = this.machineRand.nextFloat() * 0.8F + 0.1F;
|
||||||
|
|
||||||
while (var7.stackSize > 0)
|
while (var7.stackSize > 0)
|
||||||
{
|
{
|
||||||
int var11 = this.chamberRand.nextInt(21) + 10;
|
int var11 = this.machineRand.nextInt(21) + 10;
|
||||||
|
|
||||||
if (var11 > var7.stackSize)
|
if (var11 > var7.stackSize)
|
||||||
{
|
{
|
||||||
|
@ -243,9 +166,9 @@ public class BlockEnrichmentChamber extends BlockContainer
|
||||||
}
|
}
|
||||||
|
|
||||||
float var13 = 0.05F;
|
float var13 = 0.05F;
|
||||||
var12.motionX = (double)((float)this.chamberRand.nextGaussian() * var13);
|
var12.motionX = (double)((float)this.machineRand.nextGaussian() * var13);
|
||||||
var12.motionY = (double)((float)this.chamberRand.nextGaussian() * var13 + 0.2F);
|
var12.motionY = (double)((float)this.machineRand.nextGaussian() * var13 + 0.2F);
|
||||||
var12.motionZ = (double)((float)this.chamberRand.nextGaussian() * var13);
|
var12.motionZ = (double)((float)this.machineRand.nextGaussian() * var13);
|
||||||
world.spawnEntityInWorld(var12);
|
world.spawnEntityInWorld(var12);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -255,11 +178,6 @@ public class BlockEnrichmentChamber extends BlockContainer
|
||||||
super.breakBlock(world, par2, par3, par4, i1, i2);
|
super.breakBlock(world, par2, par3, par4, i1, i2);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void addCreativeItems(ArrayList itemList)
|
|
||||||
{
|
|
||||||
itemList.add(new ItemStack(this));
|
|
||||||
}
|
|
||||||
|
|
||||||
public TileEntity createNewTileEntity(World var1)
|
public TileEntity createNewTileEntity(World var1)
|
||||||
{
|
{
|
||||||
return new TileEntityEnrichmentChamber();
|
return new TileEntityEnrichmentChamber();
|
||||||
|
|
|
@ -137,11 +137,6 @@ public class BlockObsidianTNT extends Block
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void addCreativeItems(ArrayList itemList)
|
|
||||||
{
|
|
||||||
itemList.add(new ItemStack(this));
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getTextureFile()
|
public String getTextureFile()
|
||||||
{
|
{
|
||||||
return "/obsidian/terrain.png";
|
return "/obsidian/terrain.png";
|
||||||
|
|
|
@ -10,96 +10,29 @@ import net.minecraft.src.*;
|
||||||
|
|
||||||
public class BlockPlatinumCompressor extends BlockContainer
|
public class BlockPlatinumCompressor extends BlockContainer
|
||||||
{
|
{
|
||||||
private Random compressorRand = new Random();
|
public Random machineRand = new Random();
|
||||||
|
|
||||||
private static int currentTextureIndex;
|
public static int currentTextureIndex;
|
||||||
|
|
||||||
public static boolean isActive = false;
|
|
||||||
|
|
||||||
public BlockPlatinumCompressor(int par1)
|
public BlockPlatinumCompressor(int par1)
|
||||||
{
|
{
|
||||||
super(par1, Material.iron);
|
super(par1, Material.iron);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void setDefaultDirection(World world, int par2, int par3, int par4)
|
public void onBlockPlacedBy(World world, int x, int y, int z, EntityLiving entityliving)
|
||||||
{
|
{
|
||||||
if (!world.isRemote)
|
int side = MathHelper.floor_double((double)(entityliving.rotationYaw * 4.0F / 360.0F) + 0.5D) & 3;
|
||||||
|
int change = 3;
|
||||||
|
|
||||||
|
switch(side)
|
||||||
{
|
{
|
||||||
int var5 = world.getBlockId(par2, par3, par4 - 1);
|
case 0: change = 2; break;
|
||||||
int var6 = world.getBlockId(par2, par3, par4 + 1);
|
case 1: change = 5; break;
|
||||||
int var7 = world.getBlockId(par2 - 1, par3, par4);
|
case 2: change = 3; break;
|
||||||
int var8 = world.getBlockId(par2 + 1, par3, par4);
|
case 3: change = 4; break;
|
||||||
byte var9 = 3;
|
|
||||||
|
|
||||||
if (Block.opaqueCubeLookup[var5] && !Block.opaqueCubeLookup[var6])
|
|
||||||
{
|
|
||||||
var9 = 3;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (Block.opaqueCubeLookup[var6] && !Block.opaqueCubeLookup[var5])
|
|
||||||
{
|
|
||||||
var9 = 2;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (Block.opaqueCubeLookup[var7] && !Block.opaqueCubeLookup[var8])
|
|
||||||
{
|
|
||||||
var9 = 5;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (Block.opaqueCubeLookup[var8] && !Block.opaqueCubeLookup[var7])
|
|
||||||
{
|
|
||||||
var9 = 4;
|
|
||||||
}
|
|
||||||
|
|
||||||
world.setBlockMetadataWithNotify(par2, par3, par4, var9);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public void onBlockPlacedBy(World world, int par2, int par3, int par4, EntityLiving par5EntityLiving)
|
|
||||||
{
|
|
||||||
int var6 = MathHelper.floor_double((double)(par5EntityLiving.rotationYaw * 4.0F / 360.0F) + 0.5D) & 3;
|
|
||||||
|
|
||||||
if (var6 == 0)
|
|
||||||
{
|
|
||||||
world.setBlockMetadataWithNotify(par2, par3, par4, 2);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (var6 == 1)
|
world.setBlockMetadataWithNotify(x, y, z, change);
|
||||||
{
|
|
||||||
world.setBlockMetadataWithNotify(par2, par3, par4, 5);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (var6 == 2)
|
|
||||||
{
|
|
||||||
world.setBlockMetadataWithNotify(par2, par3, par4, 3);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (var6 == 3)
|
|
||||||
{
|
|
||||||
world.setBlockMetadataWithNotify(par2, par3, par4, 4);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public int idDropped(int par1, Random random, int par3)
|
|
||||||
{
|
|
||||||
return blockID;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void onBlockAdded(World world, int par2, int par3, int par4)
|
|
||||||
{
|
|
||||||
TileEntityPlatinumCompressor tileEntity = (TileEntityPlatinumCompressor)world.getBlockTileEntity(par2, par3, par4);
|
|
||||||
if(tileEntity != null)
|
|
||||||
{
|
|
||||||
tileEntity.machineBurnTime = 0;
|
|
||||||
}
|
|
||||||
setDefaultDirection(world, par2, par3, par4);
|
|
||||||
super.onBlockAdded(world, par2, par3, par4);
|
|
||||||
}
|
|
||||||
|
|
||||||
public int getLightValue(IBlockAccess world, int x, int y, int z)
|
|
||||||
{
|
|
||||||
if(isActive) return 14;
|
|
||||||
else return 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@SideOnly(Side.CLIENT)
|
@SideOnly(Side.CLIENT)
|
||||||
|
@ -109,29 +42,32 @@ public class BlockPlatinumCompressor extends BlockContainer
|
||||||
|
|
||||||
if(side == metadata)
|
if(side == metadata)
|
||||||
{
|
{
|
||||||
return isActive ? currentTextureIndex : 17;
|
return ObsidianUtils.isActive(world, x, y, z) ? currentTextureIndex : 17;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
return 16;
|
return 16;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@SideOnly(Side.CLIENT)
|
public static void updateTexture(World world, int x, int y, int z)
|
||||||
public void randomDisplayTick(World world, int par2, int par3, int par4, Random par5Random)
|
|
||||||
{
|
{
|
||||||
if(currentTextureIndex < 15 && currentTextureIndex > -1)
|
if(currentTextureIndex < 15 && currentTextureIndex > -1)
|
||||||
{
|
{
|
||||||
currentTextureIndex++;
|
currentTextureIndex++;
|
||||||
world.markBlockAsNeedsUpdate(par2, par3, par4);
|
|
||||||
}
|
}
|
||||||
else if(currentTextureIndex == 15)
|
else if(currentTextureIndex == 15)
|
||||||
{
|
{
|
||||||
currentTextureIndex = 0;
|
currentTextureIndex = 0;
|
||||||
world.markBlockAsNeedsUpdate(par2, par3, par4);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
world.markBlockAsNeedsUpdate(x, y, z);
|
||||||
|
}
|
||||||
|
|
||||||
|
@SideOnly(Side.CLIENT)
|
||||||
|
public void randomDisplayTick(World world, int par2, int par3, int par4, Random par5Random)
|
||||||
|
{
|
||||||
int metadata = world.getBlockMetadata(par2, par3, par4);
|
int metadata = world.getBlockMetadata(par2, par3, par4);
|
||||||
if (isActive)
|
if (ObsidianUtils.isActive(world, par2, par3, par4))
|
||||||
{
|
{
|
||||||
float var7 = (float)par2 + 0.5F;
|
float var7 = (float)par2 + 0.5F;
|
||||||
float var8 = (float)par3 + 0.0F + par5Random.nextFloat() * 6.0F / 16.0F;
|
float var8 = (float)par3 + 0.0F + par5Random.nextFloat() * 6.0F / 16.0F;
|
||||||
|
@ -200,8 +136,6 @@ public class BlockPlatinumCompressor extends BlockContainer
|
||||||
|
|
||||||
public static void updateBlock(boolean active, World world, int x, int y, int z)
|
public static void updateBlock(boolean active, World world, int x, int y, int z)
|
||||||
{
|
{
|
||||||
isActive = active;
|
|
||||||
|
|
||||||
TileEntity tileEntity = world.getBlockTileEntity(x, y, z);
|
TileEntity tileEntity = world.getBlockTileEntity(x, y, z);
|
||||||
|
|
||||||
world.markBlockAsNeedsUpdate(x, y, z);
|
world.markBlockAsNeedsUpdate(x, y, z);
|
||||||
|
@ -231,13 +165,13 @@ public class BlockPlatinumCompressor extends BlockContainer
|
||||||
|
|
||||||
if (var7 != null)
|
if (var7 != null)
|
||||||
{
|
{
|
||||||
float var8 = this.compressorRand.nextFloat() * 0.8F + 0.1F;
|
float var8 = this.machineRand.nextFloat() * 0.8F + 0.1F;
|
||||||
float var9 = this.compressorRand.nextFloat() * 0.8F + 0.1F;
|
float var9 = this.machineRand.nextFloat() * 0.8F + 0.1F;
|
||||||
float var10 = this.compressorRand.nextFloat() * 0.8F + 0.1F;
|
float var10 = this.machineRand.nextFloat() * 0.8F + 0.1F;
|
||||||
|
|
||||||
while (var7.stackSize > 0)
|
while (var7.stackSize > 0)
|
||||||
{
|
{
|
||||||
int var11 = this.compressorRand.nextInt(21) + 10;
|
int var11 = this.machineRand.nextInt(21) + 10;
|
||||||
|
|
||||||
if (var11 > var7.stackSize)
|
if (var11 > var7.stackSize)
|
||||||
{
|
{
|
||||||
|
@ -253,9 +187,9 @@ public class BlockPlatinumCompressor extends BlockContainer
|
||||||
}
|
}
|
||||||
|
|
||||||
float var13 = 0.05F;
|
float var13 = 0.05F;
|
||||||
var12.motionX = (double)((float)this.compressorRand.nextGaussian() * var13);
|
var12.motionX = (double)((float)this.machineRand.nextGaussian() * var13);
|
||||||
var12.motionY = (double)((float)this.compressorRand.nextGaussian() * var13 + 0.2F);
|
var12.motionY = (double)((float)this.machineRand.nextGaussian() * var13 + 0.2F);
|
||||||
var12.motionZ = (double)((float)this.compressorRand.nextGaussian() * var13);
|
var12.motionZ = (double)((float)this.machineRand.nextGaussian() * var13);
|
||||||
world.spawnEntityInWorld(var12);
|
world.spawnEntityInWorld(var12);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -265,11 +199,6 @@ public class BlockPlatinumCompressor extends BlockContainer
|
||||||
super.breakBlock(world, par2, par3, par4, i1, i2);
|
super.breakBlock(world, par2, par3, par4, i1, i2);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void addCreativeItems(ArrayList itemList)
|
|
||||||
{
|
|
||||||
itemList.add(new ItemStack(this));
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getTextureFile()
|
public String getTextureFile()
|
||||||
{
|
{
|
||||||
return "/obsidian/Compressor.png";
|
return "/obsidian/Compressor.png";
|
||||||
|
|
|
@ -11,101 +11,31 @@ import net.minecraftforge.common.ForgeDirection;
|
||||||
|
|
||||||
public class BlockTheoreticalElementizer extends BlockContainer
|
public class BlockTheoreticalElementizer extends BlockContainer
|
||||||
{
|
{
|
||||||
private Random elementizerRand = new Random();
|
private Random machineRand = new Random();
|
||||||
|
|
||||||
public int currentFrontTextureIndex = 0;
|
public static int currentFrontTextureIndex = 0;
|
||||||
public int currentBackTextureIndex = 16;
|
public static int currentBackTextureIndex = 16;
|
||||||
public int currentSideTextureIndex = 32;
|
public static int currentSideTextureIndex = 32;
|
||||||
|
|
||||||
public static boolean isActive = false;
|
|
||||||
|
|
||||||
public BlockTheoreticalElementizer(int par1)
|
public BlockTheoreticalElementizer(int par1)
|
||||||
{
|
{
|
||||||
super(par1, Material.iron);
|
super(par1, Material.iron);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
public void onBlockPlacedBy(World world, int x, int y, int z, EntityLiving entityliving)
|
||||||
* Called when the block is placed in the world.
|
|
||||||
*/
|
|
||||||
public void onBlockPlacedBy(World world, int par2, int par3, int par4, EntityLiving par5EntityLiving)
|
|
||||||
{
|
{
|
||||||
int var6 = MathHelper.floor_double((double)(par5EntityLiving.rotationYaw * 4.0F / 360.0F) + 0.5D) & 3;
|
int side = MathHelper.floor_double((double)(entityliving.rotationYaw * 4.0F / 360.0F) + 0.5D) & 3;
|
||||||
|
int change = 3;
|
||||||
|
|
||||||
if (var6 == 0)
|
switch(side)
|
||||||
{
|
{
|
||||||
world.setBlockMetadataWithNotify(par2, par3, par4, 2);
|
case 0: change = 2; break;
|
||||||
|
case 1: change = 5; break;
|
||||||
|
case 2: change = 3; break;
|
||||||
|
case 3: change = 4; break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (var6 == 1)
|
world.setBlockMetadataWithNotify(x, y, z, change);
|
||||||
{
|
|
||||||
world.setBlockMetadataWithNotify(par2, par3, par4, 5);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (var6 == 2)
|
|
||||||
{
|
|
||||||
world.setBlockMetadataWithNotify(par2, par3, par4, 3);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (var6 == 3)
|
|
||||||
{
|
|
||||||
world.setBlockMetadataWithNotify(par2, par3, par4, 4);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void setDefaultDirection(World world, int par2, int par3, int par4)
|
|
||||||
{
|
|
||||||
if (!world.isRemote)
|
|
||||||
{
|
|
||||||
int var5 = world.getBlockId(par2, par3, par4 - 1);
|
|
||||||
int var6 = world.getBlockId(par2, par3, par4 + 1);
|
|
||||||
int var7 = world.getBlockId(par2 - 1, par3, par4);
|
|
||||||
int var8 = world.getBlockId(par2 + 1, par3, par4);
|
|
||||||
byte var9 = 3;
|
|
||||||
|
|
||||||
if (Block.opaqueCubeLookup[var5] && !Block.opaqueCubeLookup[var6])
|
|
||||||
{
|
|
||||||
var9 = 3;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (Block.opaqueCubeLookup[var6] && !Block.opaqueCubeLookup[var5])
|
|
||||||
{
|
|
||||||
var9 = 2;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (Block.opaqueCubeLookup[var7] && !Block.opaqueCubeLookup[var8])
|
|
||||||
{
|
|
||||||
var9 = 5;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (Block.opaqueCubeLookup[var8] && !Block.opaqueCubeLookup[var7])
|
|
||||||
{
|
|
||||||
var9 = 4;
|
|
||||||
}
|
|
||||||
|
|
||||||
world.setBlockMetadataWithNotify(par2, par3, par4, var9);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public int idDropped(int par1, Random random, int par3)
|
|
||||||
{
|
|
||||||
return blockID;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void onBlockAdded(World world, int par2, int par3, int par4)
|
|
||||||
{
|
|
||||||
TileEntityTheoreticalElementizer tileEntity = (TileEntityTheoreticalElementizer)world.getBlockTileEntity(par2, par3, par4);
|
|
||||||
if(tileEntity != null)
|
|
||||||
{
|
|
||||||
tileEntity.machineBurnTime = 0;
|
|
||||||
}
|
|
||||||
setDefaultDirection(world, par2, par3, par4);
|
|
||||||
super.onBlockAdded(world, par2, par3, par4);
|
|
||||||
}
|
|
||||||
|
|
||||||
public int getLightValue(IBlockAccess world, int x, int y, int z)
|
|
||||||
{
|
|
||||||
if(isActive) return 14;
|
|
||||||
else return 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@SideOnly(Side.CLIENT)
|
@SideOnly(Side.CLIENT)
|
||||||
|
@ -115,24 +45,24 @@ public class BlockTheoreticalElementizer extends BlockContainer
|
||||||
|
|
||||||
if(side == 0 || side == 1)
|
if(side == 0 || side == 1)
|
||||||
{
|
{
|
||||||
return isActive ? 52 : 50;
|
return ObsidianUtils.isActive(world, x, y, z) ? 52 : 50;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
if(side == metadata)
|
if(side == metadata)
|
||||||
{
|
{
|
||||||
return isActive ? currentFrontTextureIndex : 48;
|
return ObsidianUtils.isActive(world, x, y, z) ? currentFrontTextureIndex : 48;
|
||||||
}
|
}
|
||||||
else if(side == ForgeDirection.getOrientation(metadata).getOpposite().ordinal())
|
else if(side == ForgeDirection.getOrientation(metadata).getOpposite().ordinal())
|
||||||
{
|
{
|
||||||
return isActive ? currentBackTextureIndex : 49;
|
return ObsidianUtils.isActive(world, x, y, z) ? currentBackTextureIndex : 49;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
return isActive ? currentSideTextureIndex : 51;
|
return ObsidianUtils.isActive(world, x, y, z) ? currentSideTextureIndex : 51;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void updateTexture(World world, int x, int y, int z)
|
public static void updateTexture(World world, int x, int y, int z)
|
||||||
{
|
{
|
||||||
if(currentFrontTextureIndex < 15 && currentFrontTextureIndex > -1)
|
if(currentFrontTextureIndex < 15 && currentFrontTextureIndex > -1)
|
||||||
{
|
{
|
||||||
|
@ -162,16 +92,14 @@ public class BlockTheoreticalElementizer extends BlockContainer
|
||||||
}
|
}
|
||||||
|
|
||||||
world.markBlockAsNeedsUpdate(x, y, z);
|
world.markBlockAsNeedsUpdate(x, y, z);
|
||||||
world.updateAllLightTypes(x, y, z);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@SideOnly(Side.CLIENT)
|
@SideOnly(Side.CLIENT)
|
||||||
public void randomDisplayTick(World world, int par2, int par3, int par4, Random par5Random)
|
public void randomDisplayTick(World world, int par2, int par3, int par4, Random par5Random)
|
||||||
{
|
{
|
||||||
int metadata = world.getBlockMetadata(par2, par3, par4);
|
int metadata = world.getBlockMetadata(par2, par3, par4);
|
||||||
if (isActive)
|
if (ObsidianUtils.isActive(world, par2, par3, par4))
|
||||||
{
|
{
|
||||||
updateTexture(world, par2, par3, par4);
|
|
||||||
float var7 = (float)par2 + 0.5F;
|
float var7 = (float)par2 + 0.5F;
|
||||||
float var8 = (float)par3 + 0.0F + par5Random.nextFloat() * 6.0F / 16.0F;
|
float var8 = (float)par3 + 0.0F + par5Random.nextFloat() * 6.0F / 16.0F;
|
||||||
float var9 = (float)par4 + 0.5F;
|
float var9 = (float)par4 + 0.5F;
|
||||||
|
@ -243,8 +171,6 @@ public class BlockTheoreticalElementizer extends BlockContainer
|
||||||
|
|
||||||
public static void updateBlock(boolean active, World world, int x, int y, int z)
|
public static void updateBlock(boolean active, World world, int x, int y, int z)
|
||||||
{
|
{
|
||||||
isActive = active;
|
|
||||||
|
|
||||||
TileEntity tileEntity = world.getBlockTileEntity(x, y, z);
|
TileEntity tileEntity = world.getBlockTileEntity(x, y, z);
|
||||||
|
|
||||||
world.markBlockAsNeedsUpdate(x, y, z);
|
world.markBlockAsNeedsUpdate(x, y, z);
|
||||||
|
@ -269,13 +195,13 @@ public class BlockTheoreticalElementizer extends BlockContainer
|
||||||
|
|
||||||
if (var7 != null)
|
if (var7 != null)
|
||||||
{
|
{
|
||||||
float var8 = this.elementizerRand.nextFloat() * 0.8F + 0.1F;
|
float var8 = this.machineRand.nextFloat() * 0.8F + 0.1F;
|
||||||
float var9 = this.elementizerRand.nextFloat() * 0.8F + 0.1F;
|
float var9 = this.machineRand.nextFloat() * 0.8F + 0.1F;
|
||||||
float var10 = this.elementizerRand.nextFloat() * 0.8F + 0.1F;
|
float var10 = this.machineRand.nextFloat() * 0.8F + 0.1F;
|
||||||
|
|
||||||
while (var7.stackSize > 0)
|
while (var7.stackSize > 0)
|
||||||
{
|
{
|
||||||
int var11 = this.elementizerRand.nextInt(21) + 10;
|
int var11 = this.machineRand.nextInt(21) + 10;
|
||||||
|
|
||||||
if (var11 > var7.stackSize)
|
if (var11 > var7.stackSize)
|
||||||
{
|
{
|
||||||
|
@ -291,23 +217,19 @@ public class BlockTheoreticalElementizer extends BlockContainer
|
||||||
}
|
}
|
||||||
|
|
||||||
float var13 = 0.05F;
|
float var13 = 0.05F;
|
||||||
var12.motionX = (double)((float)this.elementizerRand.nextGaussian() * var13);
|
var12.motionX = (double)((float)this.machineRand.nextGaussian() * var13);
|
||||||
var12.motionY = (double)((float)this.elementizerRand.nextGaussian() * var13 + 0.2F);
|
var12.motionY = (double)((float)this.machineRand.nextGaussian() * var13 + 0.2F);
|
||||||
var12.motionZ = (double)((float)this.elementizerRand.nextGaussian() * var13);
|
var12.motionZ = (double)((float)this.machineRand.nextGaussian() * var13);
|
||||||
world.spawnEntityInWorld(var12);
|
world.spawnEntityInWorld(var12);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
var5.invalidate();
|
||||||
}
|
}
|
||||||
|
|
||||||
super.breakBlock(world, par2, par3, par4, i1, i2);
|
super.breakBlock(world, par2, par3, par4, i1, i2);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void addCreativeItems(ArrayList itemList)
|
|
||||||
{
|
|
||||||
itemList.add(new ItemStack(this));
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getTextureFile()
|
public String getTextureFile()
|
||||||
{
|
{
|
||||||
return "/obsidian/Elementizer.png";
|
return "/obsidian/Elementizer.png";
|
||||||
|
|
|
@ -17,12 +17,20 @@ import cpw.mods.fml.common.network.IGuiHandler;
|
||||||
* @author AidanBrady
|
* @author AidanBrady
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
public abstract class CommonProxy
|
public class CommonProxy
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
* Register and load client-only render information.
|
* Register and load client-only render information.
|
||||||
*/
|
*/
|
||||||
public abstract void registerRenderInformation();
|
public void registerRenderInformation()
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getArmorIndex(String string)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Set and load the mod's common properties.
|
* Set and load the mod's common properties.
|
||||||
|
@ -32,7 +40,7 @@ public abstract class CommonProxy
|
||||||
Properties properties = new Properties();
|
Properties properties = new Properties();
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
File config = new File(new StringBuilder().append(Minecraft.getMinecraftDir()).append("/config/ObsidianIngots.txt").toString());
|
File config = ObsidianIngots.configuration;
|
||||||
if(config.exists())
|
if(config.exists())
|
||||||
{
|
{
|
||||||
properties.load(new FileInputStream(config));
|
properties.load(new FileInputStream(config));
|
||||||
|
@ -84,12 +92,18 @@ public abstract class CommonProxy
|
||||||
/**
|
/**
|
||||||
* Load and initiate utilities for the mod.
|
* Load and initiate utilities for the mod.
|
||||||
*/
|
*/
|
||||||
public abstract void loadUtilities();
|
public void loadUtilities()
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Set up and load the client-only tick handler.
|
* Set up and load the client-only tick handler.
|
||||||
*/
|
*/
|
||||||
public abstract void loadTickHandler();
|
public void loadTickHandler()
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the actual interface for a GUI. Client-only.
|
* Get the actual interface for a GUI. Client-only.
|
||||||
|
@ -101,7 +115,10 @@ public abstract class CommonProxy
|
||||||
* @param z - gui's z position
|
* @param z - gui's z position
|
||||||
* @return the GuiScreen of the interface
|
* @return the GuiScreen of the interface
|
||||||
*/
|
*/
|
||||||
public abstract Object getClientGui(int ID, EntityPlayer player, World world, int x, int y, int z);
|
public Object getClientGui(int ID, EntityPlayer player, World world, int x, int y, int z)
|
||||||
|
{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the container for a GUI. Common.
|
* Get the container for a GUI. Common.
|
||||||
|
|
|
@ -5,6 +5,8 @@ import java.net.HttpURLConnection;
|
||||||
import java.net.InetAddress;
|
import java.net.InetAddress;
|
||||||
import java.net.Socket;
|
import java.net.Socket;
|
||||||
import java.net.URL;
|
import java.net.URL;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Properties;
|
import java.util.Properties;
|
||||||
import java.util.Random;
|
import java.util.Random;
|
||||||
|
@ -51,6 +53,8 @@ public class ObsidianIngots
|
||||||
/** Obsidian Ingots hooks instance */
|
/** Obsidian Ingots hooks instance */
|
||||||
public static ObsidianHooks hooks;
|
public static ObsidianHooks hooks;
|
||||||
|
|
||||||
|
public static File configuration;
|
||||||
|
|
||||||
//Initial Declarations
|
//Initial Declarations
|
||||||
public static Version versionNumber = new Version(4, 0, 4);
|
public static Version versionNumber = new Version(4, 0, 4);
|
||||||
public static String latestVersionNumber;
|
public static String latestVersionNumber;
|
||||||
|
@ -707,10 +711,10 @@ public class ObsidianIngots
|
||||||
*/
|
*/
|
||||||
public void addItems()
|
public void addItems()
|
||||||
{
|
{
|
||||||
RedstoneHelmet = (new ItemObsidianArmor(11235, armorREDSTONE, RenderingRegistry.addNewArmourRendererPrefix("redstone"), 0)).setItemName("RedstoneHelmet");
|
RedstoneHelmet = (new ItemObsidianArmor(11235, armorREDSTONE, proxy.getArmorIndex("redstone"), 0)).setItemName("RedstoneHelmet");
|
||||||
RedstoneBody = (new ItemObsidianArmor(11236, armorREDSTONE, RenderingRegistry.addNewArmourRendererPrefix("redstone"), 1)).setItemName("RedstoneBody");
|
RedstoneBody = (new ItemObsidianArmor(11236, armorREDSTONE, proxy.getArmorIndex("redstone"), 1)).setItemName("RedstoneBody");
|
||||||
RedstoneLegs = (new ItemObsidianArmor(11237, armorREDSTONE, RenderingRegistry.addNewArmourRendererPrefix("redstone"), 2)).setItemName("RedstoneLegs");
|
RedstoneLegs = (new ItemObsidianArmor(11237, armorREDSTONE, proxy.getArmorIndex("redstone"), 2)).setItemName("RedstoneLegs");
|
||||||
RedstoneBoots = (new ItemObsidianArmor(11238, armorREDSTONE, RenderingRegistry.addNewArmourRendererPrefix("redstone"), 3)).setItemName("RedstoneBoots");
|
RedstoneBoots = (new ItemObsidianArmor(11238, armorREDSTONE, proxy.getArmorIndex("redstone"), 3)).setItemName("RedstoneBoots");
|
||||||
RedstoneIngot = new ItemObsidian(11239).setItemName("RedstoneIngot").setTabToDisplayOn(CreativeTabs.tabMaterials);
|
RedstoneIngot = new ItemObsidian(11239).setItemName("RedstoneIngot").setTabToDisplayOn(CreativeTabs.tabMaterials);
|
||||||
RedstonePaxel = new ItemObsidianPaxel(11240, toolREDSTONE2).setItemName("RedstonePaxel");
|
RedstonePaxel = new ItemObsidianPaxel(11240, toolREDSTONE2).setItemName("RedstonePaxel");
|
||||||
RedstonePickaxe = new ItemObsidianPickaxe(11241, toolREDSTONE).setItemName("RedstonePickaxe");
|
RedstonePickaxe = new ItemObsidianPickaxe(11241, toolREDSTONE).setItemName("RedstonePickaxe");
|
||||||
|
@ -718,10 +722,10 @@ public class ObsidianIngots
|
||||||
RedstoneSpade = new ItemObsidianSpade(11243, toolREDSTONE).setItemName("RedstoneSpade");
|
RedstoneSpade = new ItemObsidianSpade(11243, toolREDSTONE).setItemName("RedstoneSpade");
|
||||||
RedstoneHoe = new ItemObsidianHoe(11244, toolREDSTONE).setItemName("RedstoneHoe");
|
RedstoneHoe = new ItemObsidianHoe(11244, toolREDSTONE).setItemName("RedstoneHoe");
|
||||||
RedstoneSword = new ItemObsidianSword(11245, toolREDSTONE).setItemName("RedstoneSword");
|
RedstoneSword = new ItemObsidianSword(11245, toolREDSTONE).setItemName("RedstoneSword");
|
||||||
PlatinumHelmet = (new ItemObsidianArmor(11246, EnumArmorMaterial.DIAMOND, RenderingRegistry.addNewArmourRendererPrefix("platinum"), 0)).setItemName("PlatinumHelmet");
|
PlatinumHelmet = (new ItemObsidianArmor(11246, EnumArmorMaterial.DIAMOND, proxy.getArmorIndex("platinum"), 0)).setItemName("PlatinumHelmet");
|
||||||
PlatinumBody = (new ItemObsidianArmor(11247, EnumArmorMaterial.DIAMOND, RenderingRegistry.addNewArmourRendererPrefix("platinum"), 1)).setItemName("PlatinumBody");
|
PlatinumBody = (new ItemObsidianArmor(11247, EnumArmorMaterial.DIAMOND, proxy.getArmorIndex("platinum"), 1)).setItemName("PlatinumBody");
|
||||||
PlatinumLegs = (new ItemObsidianArmor(11248, EnumArmorMaterial.DIAMOND, RenderingRegistry.addNewArmourRendererPrefix("platinum"), 2)).setItemName("PlatinumLegs");
|
PlatinumLegs = (new ItemObsidianArmor(11248, EnumArmorMaterial.DIAMOND, proxy.getArmorIndex("platinum"), 2)).setItemName("PlatinumLegs");
|
||||||
PlatinumBoots = (new ItemObsidianArmor(11249, EnumArmorMaterial.DIAMOND, RenderingRegistry.addNewArmourRendererPrefix("platinum"), 3)).setItemName("PlatinumBoots");
|
PlatinumBoots = (new ItemObsidianArmor(11249, EnumArmorMaterial.DIAMOND, proxy.getArmorIndex("platinum"), 3)).setItemName("PlatinumBoots");
|
||||||
PlatinumIngot = new ItemObsidian(11250).setItemName("PlatinumIngot").setTabToDisplayOn(CreativeTabs.tabMaterials);
|
PlatinumIngot = new ItemObsidian(11250).setItemName("PlatinumIngot").setTabToDisplayOn(CreativeTabs.tabMaterials);
|
||||||
PlatinumPaxel = new ItemObsidianPaxel(11251, toolPLATINUM2).setItemName("PlatinumPaxel");
|
PlatinumPaxel = new ItemObsidianPaxel(11251, toolPLATINUM2).setItemName("PlatinumPaxel");
|
||||||
PlatinumPickaxe = new ItemObsidianPickaxe(11252, toolPLATINUM).setItemName("PlatinumPickaxe");
|
PlatinumPickaxe = new ItemObsidianPickaxe(11252, toolPLATINUM).setItemName("PlatinumPickaxe");
|
||||||
|
@ -729,10 +733,10 @@ public class ObsidianIngots
|
||||||
PlatinumSpade = new ItemObsidianSpade(11254, toolPLATINUM).setItemName("PlatinumSpade");
|
PlatinumSpade = new ItemObsidianSpade(11254, toolPLATINUM).setItemName("PlatinumSpade");
|
||||||
PlatinumHoe = new ItemObsidianHoe(11255, toolPLATINUM).setItemName("PlatinumHoe");
|
PlatinumHoe = new ItemObsidianHoe(11255, toolPLATINUM).setItemName("PlatinumHoe");
|
||||||
PlatinumSword = new ItemObsidianSword(11256, toolPLATINUM).setItemName("PlatinumSword");
|
PlatinumSword = new ItemObsidianSword(11256, toolPLATINUM).setItemName("PlatinumSword");
|
||||||
ObsidianHelmet = (new ItemObsidianArmor(11257, armorOBSIDIAN, RenderingRegistry.addNewArmourRendererPrefix("obsidian"), 0)).setItemName("ObsidianHelmet");
|
ObsidianHelmet = (new ItemObsidianArmor(11257, armorOBSIDIAN, proxy.getArmorIndex("obsidian"), 0)).setItemName("ObsidianHelmet");
|
||||||
ObsidianBody = (new ItemObsidianArmor(11258, armorOBSIDIAN, RenderingRegistry.addNewArmourRendererPrefix("obsidian"), 1)).setItemName("ObsidianBody");
|
ObsidianBody = (new ItemObsidianArmor(11258, armorOBSIDIAN, proxy.getArmorIndex("obsidian"), 1)).setItemName("ObsidianBody");
|
||||||
ObsidianLegs = (new ItemObsidianArmor(11259, armorOBSIDIAN, RenderingRegistry.addNewArmourRendererPrefix("obsidian"), 2)).setItemName("ObsidianLegs");
|
ObsidianLegs = (new ItemObsidianArmor(11259, armorOBSIDIAN, proxy.getArmorIndex("obsidian"), 2)).setItemName("ObsidianLegs");
|
||||||
ObsidianBoots = (new ItemObsidianArmor(11260, armorOBSIDIAN, RenderingRegistry.addNewArmourRendererPrefix("obsidian"), 3)).setItemName("ObsidianBoots");
|
ObsidianBoots = (new ItemObsidianArmor(11260, armorOBSIDIAN, proxy.getArmorIndex("obsidian"), 3)).setItemName("ObsidianBoots");
|
||||||
ObsidianIngot = new ItemObsidian(11261).setItemName("ObsidianIngot").setTabToDisplayOn(CreativeTabs.tabMaterials);
|
ObsidianIngot = new ItemObsidian(11261).setItemName("ObsidianIngot").setTabToDisplayOn(CreativeTabs.tabMaterials);
|
||||||
ObsidianPaxel = new ItemObsidianPaxel(11262, toolOBSIDIAN2).setItemName("ObsidianPaxel");
|
ObsidianPaxel = new ItemObsidianPaxel(11262, toolOBSIDIAN2).setItemName("ObsidianPaxel");
|
||||||
ObsidianPickaxe = new ItemObsidianPickaxe(11263, toolOBSIDIAN).setItemName("ObsidianPickaxe");
|
ObsidianPickaxe = new ItemObsidianPickaxe(11263, toolOBSIDIAN).setItemName("ObsidianPickaxe");
|
||||||
|
@ -746,10 +750,10 @@ public class ObsidianIngots
|
||||||
LazuliSpade = new ItemObsidianSpade(11271, toolLAZULI).setItemName("LazuliSpade");
|
LazuliSpade = new ItemObsidianSpade(11271, toolLAZULI).setItemName("LazuliSpade");
|
||||||
LazuliHoe = new ItemObsidianHoe(11272, toolLAZULI).setItemName("LazuliHoe");
|
LazuliHoe = new ItemObsidianHoe(11272, toolLAZULI).setItemName("LazuliHoe");
|
||||||
LazuliSword = new ItemObsidianSword(11273, toolLAZULI).setItemName("LazuliSword");
|
LazuliSword = new ItemObsidianSword(11273, toolLAZULI).setItemName("LazuliSword");
|
||||||
LazuliHelmet = (new ItemObsidianArmor(11274, armorLAZULI, RenderingRegistry.addNewArmourRendererPrefix("lazuli"), 0)).setItemName("LazuliHelmet");
|
LazuliHelmet = (new ItemObsidianArmor(11274, armorLAZULI, proxy.getArmorIndex("lazuli"), 0)).setItemName("LazuliHelmet");
|
||||||
LazuliBody = (new ItemObsidianArmor(11275, armorLAZULI, RenderingRegistry.addNewArmourRendererPrefix("lazuli"), 1)).setItemName("LazuliBody");
|
LazuliBody = (new ItemObsidianArmor(11275, armorLAZULI, proxy.getArmorIndex("lazuli"), 1)).setItemName("LazuliBody");
|
||||||
LazuliLegs = (new ItemObsidianArmor(11276, armorLAZULI, RenderingRegistry.addNewArmourRendererPrefix("lazuli"), 2)).setItemName("LazuliLegs");
|
LazuliLegs = (new ItemObsidianArmor(11276, armorLAZULI, proxy.getArmorIndex("lazuli"), 2)).setItemName("LazuliLegs");
|
||||||
LazuliBoots = (new ItemObsidianArmor(11277, armorLAZULI, RenderingRegistry.addNewArmourRendererPrefix("lazuli"), 3)).setItemName("LazuliBoots");
|
LazuliBoots = (new ItemObsidianArmor(11277, armorLAZULI, proxy.getArmorIndex("lazuli"), 3)).setItemName("LazuliBoots");
|
||||||
ObsidianArrow = new ItemObsidian(11278).setItemName("ObsidianArrow").setTabToDisplayOn(CreativeTabs.tabCombat);
|
ObsidianArrow = new ItemObsidian(11278).setItemName("ObsidianArrow").setTabToDisplayOn(CreativeTabs.tabCombat);
|
||||||
ObsidianBow = new ItemObsidianBow(11279).setItemName("ObsidianBow");
|
ObsidianBow = new ItemObsidianBow(11279).setItemName("ObsidianBow");
|
||||||
if(extrasEnabled == true)
|
if(extrasEnabled == true)
|
||||||
|
@ -782,10 +786,10 @@ public class ObsidianIngots
|
||||||
GlowstoneSpade = new ItemObsidianSpade(11305, toolGLOWSTONE).setItemName("GlowstoneSpade");
|
GlowstoneSpade = new ItemObsidianSpade(11305, toolGLOWSTONE).setItemName("GlowstoneSpade");
|
||||||
GlowstoneHoe = new ItemObsidianHoe(11306, toolGLOWSTONE).setItemName("GlowstoneHoe");
|
GlowstoneHoe = new ItemObsidianHoe(11306, toolGLOWSTONE).setItemName("GlowstoneHoe");
|
||||||
GlowstoneSword = new ItemObsidianSword(11307, toolGLOWSTONE).setItemName("GlowstoneSword");
|
GlowstoneSword = new ItemObsidianSword(11307, toolGLOWSTONE).setItemName("GlowstoneSword");
|
||||||
GlowstoneHelmet = new ItemObsidianArmor(11308, armorGLOWSTONE, RenderingRegistry.addNewArmourRendererPrefix("glowstone"), 0).setItemName("GlowstoneHelmet");
|
GlowstoneHelmet = new ItemObsidianArmor(11308, armorGLOWSTONE, proxy.getArmorIndex("glowstone"), 0).setItemName("GlowstoneHelmet");
|
||||||
GlowstoneBody = new ItemObsidianArmor(11309, armorGLOWSTONE, RenderingRegistry.addNewArmourRendererPrefix("glowstone"), 1).setItemName("GlowstoneBody");
|
GlowstoneBody = new ItemObsidianArmor(11309, armorGLOWSTONE, proxy.getArmorIndex("glowstone"), 1).setItemName("GlowstoneBody");
|
||||||
GlowstoneLegs = new ItemObsidianArmor(11310, armorGLOWSTONE, RenderingRegistry.addNewArmourRendererPrefix("glowstone"), 2).setItemName("GlowstoneLegs");
|
GlowstoneLegs = new ItemObsidianArmor(11310, armorGLOWSTONE, proxy.getArmorIndex("glowstone"), 2).setItemName("GlowstoneLegs");
|
||||||
GlowstoneBoots = new ItemObsidianArmor(11311, armorGLOWSTONE, RenderingRegistry.addNewArmourRendererPrefix("glowstone"), 3).setItemName("GlowstoneBoots");
|
GlowstoneBoots = new ItemObsidianArmor(11311, armorGLOWSTONE, proxy.getArmorIndex("glowstone"), 3).setItemName("GlowstoneBoots");
|
||||||
GlowstoneKnife = new ItemObsidianKnife(11312, toolGLOWSTONE).setItemName("GlowstoneKnife");
|
GlowstoneKnife = new ItemObsidianKnife(11312, toolGLOWSTONE).setItemName("GlowstoneKnife");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -885,6 +889,7 @@ public class ObsidianIngots
|
||||||
@PreInit
|
@PreInit
|
||||||
public void preInit(FMLPreInitializationEvent event)
|
public void preInit(FMLPreInitializationEvent event)
|
||||||
{
|
{
|
||||||
|
configuration = event.getSuggestedConfigurationFile();
|
||||||
//Register the mod's ore handler
|
//Register the mod's ore handler
|
||||||
GameRegistry.registerWorldGenerator(new OreHandler());
|
GameRegistry.registerWorldGenerator(new OreHandler());
|
||||||
//Register the mod's GUI handler
|
//Register the mod's GUI handler
|
||||||
|
|
|
@ -12,7 +12,6 @@ import java.net.Socket;
|
||||||
import java.net.URISyntaxException;
|
import java.net.URISyntaxException;
|
||||||
import java.net.URL;
|
import java.net.URL;
|
||||||
|
|
||||||
import cpw.mods.fml.client.FMLClientHandler;
|
|
||||||
import cpw.mods.fml.common.network.PacketDispatcher;
|
import cpw.mods.fml.common.network.PacketDispatcher;
|
||||||
import cpw.mods.fml.common.registry.LanguageRegistry;
|
import cpw.mods.fml.common.registry.LanguageRegistry;
|
||||||
import cpw.mods.fml.server.FMLServerHandler;
|
import cpw.mods.fml.server.FMLServerHandler;
|
||||||
|
@ -130,21 +129,6 @@ public class ObsidianUtils
|
||||||
System.out.println("[ObsidianIngots] Sent '" + i + "' packet to server");
|
System.out.println("[ObsidianIngots] Sent '" + i + "' packet to server");
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Checks if the game is running on multiplayer.
|
|
||||||
* @return if world is multiplayer
|
|
||||||
*/
|
|
||||||
public static boolean isMultiplayer()
|
|
||||||
{
|
|
||||||
if(!FMLClientHandler.instance().getClient().isSingleplayer())
|
|
||||||
{
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Checks if the mod is running on the latest version.
|
* Checks if the mod is running on the latest version.
|
||||||
* @return if mod is latest version
|
* @return if mod is latest version
|
||||||
|
@ -197,4 +181,22 @@ public class ObsidianUtils
|
||||||
world.spawnParticle("hugeexplosion", entityplayer.posX, entityplayer.posY, entityplayer.posZ, 0.0D, 0.0D, 0.0D);
|
world.spawnParticle("hugeexplosion", entityplayer.posX, entityplayer.posY, entityplayer.posZ, 0.0D, 0.0D, 0.0D);
|
||||||
world.playSoundAtEntity(entityplayer, "random.explode", 1.0F, 1.0F);
|
world.playSoundAtEntity(entityplayer, "random.explode", 1.0F, 1.0F);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Checks if a machine is in it's active state.
|
||||||
|
* @param world
|
||||||
|
* @param x
|
||||||
|
* @param y
|
||||||
|
* @param z
|
||||||
|
* @return if machine is active
|
||||||
|
*/
|
||||||
|
public static boolean isActive(IBlockAccess world, int x, int y, int z)
|
||||||
|
{
|
||||||
|
TileEntityMachine tileEntity = (TileEntityMachine)world.getBlockTileEntity(x, y, z);
|
||||||
|
if(tileEntity != null)
|
||||||
|
{
|
||||||
|
return tileEntity.isActive;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,329 +4,135 @@ import net.minecraftforge.common.ForgeDirection;
|
||||||
import net.minecraftforge.common.ISidedInventory;
|
import net.minecraftforge.common.ISidedInventory;
|
||||||
import net.minecraft.src.*;
|
import net.minecraft.src.*;
|
||||||
|
|
||||||
public class TileEntityCombiner extends TileEntity implements IInventory, ISidedInventory
|
public class TileEntityCombiner extends TileEntityMachine
|
||||||
{
|
{
|
||||||
/**
|
public TileEntityCombiner()
|
||||||
* The ItemStacks that hold the items currently being used in the furnace
|
{
|
||||||
*/
|
super(200, "Combiner");
|
||||||
private ItemStack[] machineItemStacks = new ItemStack[3];
|
}
|
||||||
|
|
||||||
/** The number of ticks that the furnace will keep burning */
|
|
||||||
public int machineBurnTime = 0;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* The number of ticks that a fresh copy of the currently-burning item would keep the furnace burning for
|
|
||||||
*/
|
|
||||||
public int currentItemBurnTime = 0;
|
|
||||||
|
|
||||||
/** The number of ticks that the current item has been cooking for */
|
|
||||||
public int machineCookTime = 0;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns the number of slots in the inventory.
|
|
||||||
*/
|
|
||||||
public int getSizeInventory()
|
|
||||||
{
|
|
||||||
return this.machineItemStacks.length;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns the stack in slot i
|
|
||||||
*/
|
|
||||||
public ItemStack getStackInSlot(int par1)
|
|
||||||
{
|
|
||||||
return this.machineItemStacks[par1];
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Decrease the size of the stack in slot (first int arg) by the amount of the second int arg. Returns the new
|
|
||||||
* stack.
|
|
||||||
*/
|
|
||||||
public ItemStack decrStackSize(int par1, int par2)
|
|
||||||
{
|
|
||||||
if (this.machineItemStacks[par1] != null)
|
|
||||||
{
|
|
||||||
ItemStack var3;
|
|
||||||
|
|
||||||
if (this.machineItemStacks[par1].stackSize <= par2)
|
|
||||||
{
|
|
||||||
var3 = this.machineItemStacks[par1];
|
|
||||||
this.machineItemStacks[par1] = null;
|
|
||||||
return var3;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
var3 = this.machineItemStacks[par1].splitStack(par2);
|
|
||||||
|
|
||||||
if (this.machineItemStacks[par1].stackSize == 0)
|
|
||||||
{
|
|
||||||
this.machineItemStacks[par1] = null;
|
|
||||||
}
|
|
||||||
|
|
||||||
return var3;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* When some containers are closed they call this on each slot, then drop whatever it returns as an EntityItem -
|
|
||||||
* like when you close a workbench GUI.
|
|
||||||
*/
|
|
||||||
public ItemStack getStackInSlotOnClosing(int par1)
|
|
||||||
{
|
|
||||||
if (this.machineItemStacks[par1] != null)
|
|
||||||
{
|
|
||||||
ItemStack var2 = this.machineItemStacks[par1];
|
|
||||||
this.machineItemStacks[par1] = null;
|
|
||||||
return var2;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Sets the given item stack to the specified slot in the inventory (can be crafting or armor sections).
|
|
||||||
*/
|
|
||||||
public void setInventorySlotContents(int par1, ItemStack par2ItemStack)
|
|
||||||
{
|
|
||||||
this.machineItemStacks[par1] = par2ItemStack;
|
|
||||||
|
|
||||||
if (par2ItemStack != null && par2ItemStack.stackSize > this.getInventoryStackLimit())
|
|
||||||
{
|
|
||||||
par2ItemStack.stackSize = this.getInventoryStackLimit();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns the name of the inventory.
|
|
||||||
*/
|
|
||||||
public String getInvName()
|
|
||||||
{
|
|
||||||
return "Combiner";
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Reads a tile entity from NBT.
|
|
||||||
*/
|
|
||||||
public void readFromNBT(NBTTagCompound par1NBTTagCompound)
|
|
||||||
{
|
|
||||||
super.readFromNBT(par1NBTTagCompound);
|
|
||||||
NBTTagList var2 = par1NBTTagCompound.getTagList("Items");
|
|
||||||
this.machineItemStacks = new ItemStack[this.getSizeInventory()];
|
|
||||||
|
|
||||||
for (int var3 = 0; var3 < var2.tagCount(); ++var3)
|
|
||||||
{
|
|
||||||
NBTTagCompound var4 = (NBTTagCompound)var2.tagAt(var3);
|
|
||||||
byte var5 = var4.getByte("Slot");
|
|
||||||
|
|
||||||
if (var5 >= 0 && var5 < this.machineItemStacks.length)
|
|
||||||
{
|
|
||||||
this.machineItemStacks[var5] = ItemStack.loadItemStackFromNBT(var4);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
this.machineBurnTime = par1NBTTagCompound.getShort("BurnTime");
|
|
||||||
this.machineCookTime = par1NBTTagCompound.getShort("CookTime");
|
|
||||||
this.currentItemBurnTime = getItemBurnTime(this.machineItemStacks[1]);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Writes a tile entity to NBT.
|
|
||||||
*/
|
|
||||||
public void writeToNBT(NBTTagCompound par1NBTTagCompound)
|
|
||||||
{
|
|
||||||
super.writeToNBT(par1NBTTagCompound);
|
|
||||||
par1NBTTagCompound.setShort("BurnTime", (short)this.machineBurnTime);
|
|
||||||
par1NBTTagCompound.setShort("CookTime", (short)this.machineCookTime);
|
|
||||||
NBTTagList var2 = new NBTTagList();
|
|
||||||
|
|
||||||
for (int var3 = 0; var3 < this.machineItemStacks.length; ++var3)
|
|
||||||
{
|
|
||||||
if (this.machineItemStacks[var3] != null)
|
|
||||||
{
|
|
||||||
NBTTagCompound var4 = new NBTTagCompound();
|
|
||||||
var4.setByte("Slot", (byte)var3);
|
|
||||||
this.machineItemStacks[var3].writeToNBT(var4);
|
|
||||||
var2.appendTag(var4);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
par1NBTTagCompound.setTag("Items", var2);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns the maximum stack size for a inventory slot. Seems to always be 64, possibly will be extended. *Isn't
|
|
||||||
* this more of a set than a get?*
|
|
||||||
*/
|
|
||||||
public int getInventoryStackLimit()
|
|
||||||
{
|
|
||||||
return 64;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns an integer between 0 and the passed value representing how close the current item is to being completely
|
|
||||||
* cooked
|
|
||||||
*/
|
|
||||||
public int getCookProgressScaled(int par1)
|
|
||||||
{
|
|
||||||
return this.machineCookTime * par1 / 200;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns an integer between 0 and the passed value representing how much burn time is left on the current fuel
|
|
||||||
* item, where 0 means that the item is exhausted and the passed value means that the item is fresh
|
|
||||||
*/
|
|
||||||
public int getBurnTimeRemainingScaled(int par1)
|
|
||||||
{
|
|
||||||
if (this.currentItemBurnTime == 0)
|
|
||||||
{
|
|
||||||
this.currentItemBurnTime = 200;
|
|
||||||
}
|
|
||||||
|
|
||||||
return this.machineBurnTime * par1 / this.currentItemBurnTime;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns true if the furnace is currently burning
|
|
||||||
*/
|
|
||||||
public boolean isBurning()
|
|
||||||
{
|
|
||||||
return this.machineBurnTime > 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Allows the entity to update its state. Overridden in most subclasses, e.g. the mob spawner uses this to count
|
|
||||||
* ticks and creates a new spawn inside its implementation.
|
|
||||||
*/
|
|
||||||
public void updateEntity()
|
public void updateEntity()
|
||||||
{
|
{
|
||||||
boolean var1 = this.machineBurnTime > 0;
|
BlockCombiner.updateTexture(worldObj, xCoord, yCoord, zCoord);
|
||||||
|
|
||||||
|
boolean var1 = machineBurnTime > 0;
|
||||||
boolean var2 = false;
|
boolean var2 = false;
|
||||||
|
|
||||||
if (this.machineBurnTime > 0)
|
if(machineBurnTime > 0)
|
||||||
{
|
{
|
||||||
--this.machineBurnTime;
|
isActive = true;
|
||||||
|
}
|
||||||
|
if(machineBurnTime == 0 && !canSmelt())
|
||||||
|
{
|
||||||
|
isActive = false;
|
||||||
|
}
|
||||||
|
if(machineBurnTime == 0 && machineItemStacks[1] == null)
|
||||||
|
{
|
||||||
|
isActive = false;
|
||||||
|
}
|
||||||
|
if(machineBurnTime == 0 && machineItemStacks[0] == null)
|
||||||
|
{
|
||||||
|
isActive = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!this.worldObj.isRemote)
|
if (machineBurnTime > 0)
|
||||||
{
|
{
|
||||||
if (this.machineBurnTime == 0 && this.canSmelt())
|
--machineBurnTime;
|
||||||
{
|
}
|
||||||
this.currentItemBurnTime = this.machineBurnTime = getItemBurnTime(this.machineItemStacks[1]);
|
|
||||||
|
|
||||||
if (this.machineBurnTime > 0)
|
if (!worldObj.isRemote)
|
||||||
|
{
|
||||||
|
if (machineBurnTime == 0 && canSmelt())
|
||||||
|
{
|
||||||
|
currentItemBurnTime = machineBurnTime = getItemBurnTime(machineItemStacks[1]);
|
||||||
|
|
||||||
|
if (machineBurnTime > 0)
|
||||||
{
|
{
|
||||||
var2 = true;
|
var2 = true;
|
||||||
|
|
||||||
if (this.machineItemStacks[1] != null)
|
if (machineItemStacks[1] != null)
|
||||||
{
|
{
|
||||||
--this.machineItemStacks[1].stackSize;
|
--machineItemStacks[1].stackSize;
|
||||||
|
|
||||||
if (this.machineItemStacks[1].stackSize == 0)
|
if (machineItemStacks[1].stackSize == 0)
|
||||||
{
|
{
|
||||||
this.machineItemStacks[1] = null;
|
machineItemStacks[1] = null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (this.isBurning() && this.canSmelt())
|
if (isBurning() && canSmelt())
|
||||||
{
|
{
|
||||||
++this.machineCookTime;
|
++machineCookTime;
|
||||||
|
|
||||||
if (this.machineCookTime == 200)
|
if (machineCookTime == 200)
|
||||||
{
|
{
|
||||||
this.machineCookTime = 0;
|
machineCookTime = 0;
|
||||||
this.smeltItem();
|
smeltItem();
|
||||||
var2 = true;
|
var2 = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
this.machineCookTime = 0;
|
machineCookTime = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (var1 != this.machineBurnTime > 0)
|
if (var1 != machineBurnTime > 0)
|
||||||
{
|
{
|
||||||
var2 = true;
|
var2 = true;
|
||||||
BlockCombiner.updateBlock(machineBurnTime > 0, this.worldObj, this.xCoord, this.yCoord, this.zCoord);
|
BlockCombiner.updateBlock(machineBurnTime > 0, worldObj, xCoord, yCoord, zCoord);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (var2)
|
if (var2)
|
||||||
{
|
{
|
||||||
this.onInventoryChanged();
|
onInventoryChanged();
|
||||||
}
|
}
|
||||||
worldObj.updateAllLightTypes(xCoord, yCoord, zCoord);
|
worldObj.markBlockAsNeedsUpdate(xCoord, yCoord, zCoord);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
public boolean canSmelt()
|
||||||
* Returns true if the furnace can smelt an item, i.e. has a source item, destination stack isn't full, etc.
|
|
||||||
*/
|
|
||||||
private boolean canSmelt()
|
|
||||||
{
|
{
|
||||||
if (this.machineItemStacks[0] == null)
|
if (machineItemStacks[0] == null)
|
||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
ItemStack var1 = CombinerRecipes.smelting().getSmeltingResult(this.machineItemStacks[0]);
|
ItemStack var1 = CombinerRecipes.smelting().getSmeltingResult(machineItemStacks[0]);
|
||||||
if (var1 == null) return false;
|
if (var1 == null) return false;
|
||||||
if (this.machineItemStacks[2] == null) return true;
|
if (machineItemStacks[2] == null) return true;
|
||||||
if (!this.machineItemStacks[2].isItemEqual(var1)) return false;
|
if (!machineItemStacks[2].isItemEqual(var1)) return false;
|
||||||
int result = machineItemStacks[2].stackSize + var1.stackSize;
|
int result = machineItemStacks[2].stackSize + var1.stackSize;
|
||||||
return (result <= getInventoryStackLimit() && result <= var1.getMaxStackSize());
|
return (result <= getInventoryStackLimit() && result <= var1.getMaxStackSize());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Turn one item from the furnace source stack into the appropriate smelted item in the furnace result stack
|
|
||||||
*/
|
|
||||||
public void smeltItem()
|
public void smeltItem()
|
||||||
{
|
{
|
||||||
if (this.canSmelt())
|
if (canSmelt())
|
||||||
{
|
{
|
||||||
ItemStack var1 = CombinerRecipes.smelting().getSmeltingResult(this.machineItemStacks[0]);
|
ItemStack var1 = CombinerRecipes.smelting().getSmeltingResult(machineItemStacks[0]);
|
||||||
|
|
||||||
if (this.machineItemStacks[2] == null)
|
if (machineItemStacks[2] == null)
|
||||||
{
|
{
|
||||||
this.machineItemStacks[2] = var1.copy();
|
machineItemStacks[2] = var1.copy();
|
||||||
}
|
}
|
||||||
else if (this.machineItemStacks[2].isItemEqual(var1))
|
else if (machineItemStacks[2].isItemEqual(var1))
|
||||||
{
|
{
|
||||||
//==========================================================
|
machineItemStacks[2].stackSize += var1.stackSize;
|
||||||
//Adding extra importance here, so this really small bug
|
|
||||||
//fix stops slipping through the cracks.
|
|
||||||
//
|
|
||||||
//Makes it so that items that result in multiple items are
|
|
||||||
//smelted correctly each time.
|
|
||||||
//
|
|
||||||
//
|
|
||||||
//
|
|
||||||
this.machineItemStacks[2].stackSize += var1.stackSize;
|
|
||||||
//==========================================================
|
|
||||||
}
|
}
|
||||||
|
|
||||||
--this.machineItemStacks[0].stackSize;
|
--machineItemStacks[0].stackSize;
|
||||||
|
|
||||||
if (this.machineItemStacks[0].stackSize <= 0)
|
if (machineItemStacks[0].stackSize <= 0)
|
||||||
{
|
{
|
||||||
this.machineItemStacks[0] = null;
|
machineItemStacks[0] = null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns the number of ticks that the supplied fuel item will keep the furnace burning, or 0 if the item isn't
|
|
||||||
* fuel
|
|
||||||
*/
|
|
||||||
public static int getItemBurnTime(ItemStack par1ItemStack)
|
public static int getItemBurnTime(ItemStack par1ItemStack)
|
||||||
{
|
{
|
||||||
if (par1ItemStack == null)
|
if (par1ItemStack == null)
|
||||||
|
@ -341,37 +147,51 @@ public class TileEntityCombiner extends TileEntity implements IInventory, ISided
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
public void readFromNBT(NBTTagCompound par1NBTTagCompound)
|
||||||
* Return true if item is a fuel source (getItemBurnTime() > 0).
|
{
|
||||||
*/
|
super.readFromNBT(par1NBTTagCompound);
|
||||||
|
NBTTagList var2 = par1NBTTagCompound.getTagList("Items");
|
||||||
|
machineItemStacks = new ItemStack[getSizeInventory()];
|
||||||
|
|
||||||
|
for (int var3 = 0; var3 < var2.tagCount(); ++var3)
|
||||||
|
{
|
||||||
|
NBTTagCompound var4 = (NBTTagCompound)var2.tagAt(var3);
|
||||||
|
byte var5 = var4.getByte("Slot");
|
||||||
|
|
||||||
|
if (var5 >= 0 && var5 < machineItemStacks.length)
|
||||||
|
{
|
||||||
|
machineItemStacks[var5] = ItemStack.loadItemStackFromNBT(var4);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
machineBurnTime = par1NBTTagCompound.getShort("BurnTime");
|
||||||
|
machineCookTime = par1NBTTagCompound.getShort("CookTime");
|
||||||
|
currentItemBurnTime = getItemBurnTime(machineItemStacks[1]);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void writeToNBT(NBTTagCompound par1NBTTagCompound)
|
||||||
|
{
|
||||||
|
super.writeToNBT(par1NBTTagCompound);
|
||||||
|
par1NBTTagCompound.setShort("BurnTime", (short)machineBurnTime);
|
||||||
|
par1NBTTagCompound.setShort("CookTime", (short)machineCookTime);
|
||||||
|
NBTTagList var2 = new NBTTagList();
|
||||||
|
|
||||||
|
for (int var3 = 0; var3 < machineItemStacks.length; ++var3)
|
||||||
|
{
|
||||||
|
if (machineItemStacks[var3] != null)
|
||||||
|
{
|
||||||
|
NBTTagCompound var4 = new NBTTagCompound();
|
||||||
|
var4.setByte("Slot", (byte)var3);
|
||||||
|
machineItemStacks[var3].writeToNBT(var4);
|
||||||
|
var2.appendTag(var4);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
par1NBTTagCompound.setTag("Items", var2);
|
||||||
|
}
|
||||||
|
|
||||||
public static boolean isItemFuel(ItemStack par0ItemStack)
|
public static boolean isItemFuel(ItemStack par0ItemStack)
|
||||||
{
|
{
|
||||||
return getItemBurnTime(par0ItemStack) > 0;
|
return getItemBurnTime(par0ItemStack) > 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Do not make give this method the name canInteractWith because it clashes with Container
|
|
||||||
*/
|
|
||||||
public boolean isUseableByPlayer(EntityPlayer par1EntityPlayer)
|
|
||||||
{
|
|
||||||
return this.worldObj.getBlockTileEntity(this.xCoord, this.yCoord, this.zCoord) != this ? false : par1EntityPlayer.getDistanceSq((double)this.xCoord + 0.5D, (double)this.yCoord + 0.5D, (double)this.zCoord + 0.5D) <= 64.0D;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void openChest() {}
|
|
||||||
|
|
||||||
public void closeChest() {}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public int getStartInventorySide(ForgeDirection side)
|
|
||||||
{
|
|
||||||
if (side == ForgeDirection.DOWN) return 1;
|
|
||||||
if (side == ForgeDirection.UP) return 0;
|
|
||||||
return 2;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public int getSizeInventorySide(ForgeDirection side)
|
|
||||||
{
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,329 +4,133 @@ import net.minecraftforge.common.ForgeDirection;
|
||||||
import net.minecraftforge.common.ISidedInventory;
|
import net.minecraftforge.common.ISidedInventory;
|
||||||
import net.minecraft.src.*;
|
import net.minecraft.src.*;
|
||||||
|
|
||||||
public class TileEntityCrusher extends TileEntity implements IInventory, ISidedInventory
|
public class TileEntityCrusher extends TileEntityMachine
|
||||||
{
|
{
|
||||||
/**
|
public TileEntityCrusher()
|
||||||
* The ItemStacks that hold the items currently being used in the furnace
|
{
|
||||||
*/
|
super(200, "Crusher");
|
||||||
private ItemStack[] machineItemStacks = new ItemStack[3];
|
}
|
||||||
|
|
||||||
/** The number of ticks that the furnace will keep burning */
|
|
||||||
public int machineBurnTime = 0;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* The number of ticks that a fresh copy of the currently-burning item would keep the furnace burning for
|
|
||||||
*/
|
|
||||||
public int currentItemBurnTime = 0;
|
|
||||||
|
|
||||||
/** The number of ticks that the current item has been cooking for */
|
|
||||||
public int machineCookTime = 0;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns the number of slots in the inventory.
|
|
||||||
*/
|
|
||||||
public int getSizeInventory()
|
|
||||||
{
|
|
||||||
return this.machineItemStacks.length;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns the stack in slot i
|
|
||||||
*/
|
|
||||||
public ItemStack getStackInSlot(int par1)
|
|
||||||
{
|
|
||||||
return this.machineItemStacks[par1];
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Decrease the size of the stack in slot (first int arg) by the amount of the second int arg. Returns the new
|
|
||||||
* stack.
|
|
||||||
*/
|
|
||||||
public ItemStack decrStackSize(int par1, int par2)
|
|
||||||
{
|
|
||||||
if (this.machineItemStacks[par1] != null)
|
|
||||||
{
|
|
||||||
ItemStack var3;
|
|
||||||
|
|
||||||
if (this.machineItemStacks[par1].stackSize <= par2)
|
|
||||||
{
|
|
||||||
var3 = this.machineItemStacks[par1];
|
|
||||||
this.machineItemStacks[par1] = null;
|
|
||||||
return var3;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
var3 = this.machineItemStacks[par1].splitStack(par2);
|
|
||||||
|
|
||||||
if (this.machineItemStacks[par1].stackSize == 0)
|
|
||||||
{
|
|
||||||
this.machineItemStacks[par1] = null;
|
|
||||||
}
|
|
||||||
|
|
||||||
return var3;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* When some containers are closed they call this on each slot, then drop whatever it returns as an EntityItem -
|
|
||||||
* like when you close a workbench GUI.
|
|
||||||
*/
|
|
||||||
public ItemStack getStackInSlotOnClosing(int par1)
|
|
||||||
{
|
|
||||||
if (this.machineItemStacks[par1] != null)
|
|
||||||
{
|
|
||||||
ItemStack var2 = this.machineItemStacks[par1];
|
|
||||||
this.machineItemStacks[par1] = null;
|
|
||||||
return var2;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Sets the given item stack to the specified slot in the inventory (can be crafting or armor sections).
|
|
||||||
*/
|
|
||||||
public void setInventorySlotContents(int par1, ItemStack par2ItemStack)
|
|
||||||
{
|
|
||||||
this.machineItemStacks[par1] = par2ItemStack;
|
|
||||||
|
|
||||||
if (par2ItemStack != null && par2ItemStack.stackSize > this.getInventoryStackLimit())
|
|
||||||
{
|
|
||||||
par2ItemStack.stackSize = this.getInventoryStackLimit();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns the name of the inventory.
|
|
||||||
*/
|
|
||||||
public String getInvName()
|
|
||||||
{
|
|
||||||
return "Crusher";
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Reads a tile entity from NBT.
|
|
||||||
*/
|
|
||||||
public void readFromNBT(NBTTagCompound par1NBTTagCompound)
|
|
||||||
{
|
|
||||||
super.readFromNBT(par1NBTTagCompound);
|
|
||||||
NBTTagList var2 = par1NBTTagCompound.getTagList("Items");
|
|
||||||
this.machineItemStacks = new ItemStack[this.getSizeInventory()];
|
|
||||||
|
|
||||||
for (int var3 = 0; var3 < var2.tagCount(); ++var3)
|
|
||||||
{
|
|
||||||
NBTTagCompound var4 = (NBTTagCompound)var2.tagAt(var3);
|
|
||||||
byte var5 = var4.getByte("Slot");
|
|
||||||
|
|
||||||
if (var5 >= 0 && var5 < this.machineItemStacks.length)
|
|
||||||
{
|
|
||||||
this.machineItemStacks[var5] = ItemStack.loadItemStackFromNBT(var4);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
this.machineBurnTime = par1NBTTagCompound.getShort("BurnTime");
|
|
||||||
this.machineCookTime = par1NBTTagCompound.getShort("CookTime");
|
|
||||||
this.currentItemBurnTime = getItemBurnTime(this.machineItemStacks[1]);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Writes a tile entity to NBT.
|
|
||||||
*/
|
|
||||||
public void writeToNBT(NBTTagCompound par1NBTTagCompound)
|
|
||||||
{
|
|
||||||
super.writeToNBT(par1NBTTagCompound);
|
|
||||||
par1NBTTagCompound.setShort("BurnTime", (short)this.machineBurnTime);
|
|
||||||
par1NBTTagCompound.setShort("CookTime", (short)this.machineCookTime);
|
|
||||||
NBTTagList var2 = new NBTTagList();
|
|
||||||
|
|
||||||
for (int var3 = 0; var3 < this.machineItemStacks.length; ++var3)
|
|
||||||
{
|
|
||||||
if (this.machineItemStacks[var3] != null)
|
|
||||||
{
|
|
||||||
NBTTagCompound var4 = new NBTTagCompound();
|
|
||||||
var4.setByte("Slot", (byte)var3);
|
|
||||||
this.machineItemStacks[var3].writeToNBT(var4);
|
|
||||||
var2.appendTag(var4);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
par1NBTTagCompound.setTag("Items", var2);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns the maximum stack size for a inventory slot. Seems to always be 64, possibly will be extended. *Isn't
|
|
||||||
* this more of a set than a get?*
|
|
||||||
*/
|
|
||||||
public int getInventoryStackLimit()
|
|
||||||
{
|
|
||||||
return 64;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns an integer between 0 and the passed value representing how close the current item is to being completely
|
|
||||||
* cooked
|
|
||||||
*/
|
|
||||||
public int getCookProgressScaled(int par1)
|
|
||||||
{
|
|
||||||
return this.machineCookTime * par1 / 200;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns an integer between 0 and the passed value representing how much burn time is left on the current fuel
|
|
||||||
* item, where 0 means that the item is exhausted and the passed value means that the item is fresh
|
|
||||||
*/
|
|
||||||
public int getBurnTimeRemainingScaled(int par1)
|
|
||||||
{
|
|
||||||
if (this.currentItemBurnTime == 0)
|
|
||||||
{
|
|
||||||
this.currentItemBurnTime = 200;
|
|
||||||
}
|
|
||||||
|
|
||||||
return this.machineBurnTime * par1 / this.currentItemBurnTime;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns true if the furnace is currently burning
|
|
||||||
*/
|
|
||||||
public boolean isBurning()
|
|
||||||
{
|
|
||||||
return this.machineBurnTime > 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Allows the entity to update its state. Overridden in most subclasses, e.g. the mob spawner uses this to count
|
|
||||||
* ticks and creates a new spawn inside its implementation.
|
|
||||||
*/
|
|
||||||
public void updateEntity()
|
public void updateEntity()
|
||||||
{
|
{
|
||||||
boolean var1 = this.machineBurnTime > 0;
|
boolean var1 = machineBurnTime > 0;
|
||||||
boolean var2 = false;
|
boolean var2 = false;
|
||||||
|
|
||||||
if (this.machineBurnTime > 0)
|
if(machineBurnTime > 0)
|
||||||
{
|
{
|
||||||
--this.machineBurnTime;
|
isActive = true;
|
||||||
|
}
|
||||||
|
if(machineBurnTime == 0 && !canSmelt())
|
||||||
|
{
|
||||||
|
isActive = false;
|
||||||
|
}
|
||||||
|
if(machineBurnTime == 0 && machineItemStacks[1] == null)
|
||||||
|
{
|
||||||
|
isActive = false;
|
||||||
|
}
|
||||||
|
if(machineBurnTime == 0 && machineItemStacks[0] == null)
|
||||||
|
{
|
||||||
|
isActive = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!this.worldObj.isRemote)
|
if (machineBurnTime > 0)
|
||||||
{
|
{
|
||||||
if (this.machineBurnTime == 0 && this.canSmelt())
|
--machineBurnTime;
|
||||||
{
|
}
|
||||||
this.currentItemBurnTime = this.machineBurnTime = getItemBurnTime(this.machineItemStacks[1]);
|
|
||||||
|
|
||||||
if (this.machineBurnTime > 0)
|
if (!worldObj.isRemote)
|
||||||
|
{
|
||||||
|
if (machineBurnTime == 0 && canSmelt())
|
||||||
|
{
|
||||||
|
currentItemBurnTime = machineBurnTime = getItemBurnTime(machineItemStacks[1]);
|
||||||
|
|
||||||
|
if (machineBurnTime > 0)
|
||||||
{
|
{
|
||||||
var2 = true;
|
var2 = true;
|
||||||
|
|
||||||
if (this.machineItemStacks[1] != null)
|
if (machineItemStacks[1] != null)
|
||||||
{
|
{
|
||||||
--this.machineItemStacks[1].stackSize;
|
--machineItemStacks[1].stackSize;
|
||||||
|
|
||||||
if (this.machineItemStacks[1].stackSize == 0)
|
if (machineItemStacks[1].stackSize == 0)
|
||||||
{
|
{
|
||||||
this.machineItemStacks[1] = null;
|
machineItemStacks[1] = null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (this.isBurning() && this.canSmelt())
|
if (isBurning() && canSmelt())
|
||||||
{
|
{
|
||||||
++this.machineCookTime;
|
++machineCookTime;
|
||||||
|
|
||||||
if (this.machineCookTime == 200)
|
if (machineCookTime == 200)
|
||||||
{
|
{
|
||||||
this.machineCookTime = 0;
|
machineCookTime = 0;
|
||||||
this.smeltItem();
|
smeltItem();
|
||||||
var2 = true;
|
var2 = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
this.machineCookTime = 0;
|
machineCookTime = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (var1 != this.machineBurnTime > 0)
|
if (var1 != machineBurnTime > 0)
|
||||||
{
|
{
|
||||||
var2 = true;
|
var2 = true;
|
||||||
BlockCrusher.updateBlock(machineBurnTime > 0, this.worldObj, this.xCoord, this.yCoord, this.zCoord);
|
BlockCrusher.updateBlock(machineBurnTime > 0, worldObj, xCoord, yCoord, zCoord);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (var2)
|
if (var2)
|
||||||
{
|
{
|
||||||
this.onInventoryChanged();
|
onInventoryChanged();
|
||||||
}
|
}
|
||||||
worldObj.updateAllLightTypes(xCoord, yCoord, zCoord);
|
worldObj.markBlockAsNeedsUpdate(xCoord, yCoord, zCoord);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
public boolean canSmelt()
|
||||||
* Returns true if the furnace can smelt an item, i.e. has a source item, destination stack isn't full, etc.
|
|
||||||
*/
|
|
||||||
private boolean canSmelt()
|
|
||||||
{
|
{
|
||||||
if (this.machineItemStacks[0] == null)
|
if (machineItemStacks[0] == null)
|
||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
ItemStack var1 = CrusherRecipes.smelting().getSmeltingResult(this.machineItemStacks[0]);
|
ItemStack var1 = CrusherRecipes.smelting().getSmeltingResult(machineItemStacks[0]);
|
||||||
if (var1 == null) return false;
|
if (var1 == null) return false;
|
||||||
if (this.machineItemStacks[2] == null) return true;
|
if (machineItemStacks[2] == null) return true;
|
||||||
if (!this.machineItemStacks[2].isItemEqual(var1)) return false;
|
if (!machineItemStacks[2].isItemEqual(var1)) return false;
|
||||||
int result = machineItemStacks[2].stackSize + var1.stackSize;
|
int result = machineItemStacks[2].stackSize + var1.stackSize;
|
||||||
return (result <= getInventoryStackLimit() && result <= var1.getMaxStackSize());
|
return (result <= getInventoryStackLimit() && result <= var1.getMaxStackSize());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Turn one item from the furnace source stack into the appropriate smelted item in the furnace result stack
|
|
||||||
*/
|
|
||||||
public void smeltItem()
|
public void smeltItem()
|
||||||
{
|
{
|
||||||
if (this.canSmelt())
|
if (canSmelt())
|
||||||
{
|
{
|
||||||
ItemStack var1 = CrusherRecipes.smelting().getSmeltingResult(this.machineItemStacks[0]);
|
ItemStack var1 = CrusherRecipes.smelting().getSmeltingResult(machineItemStacks[0]);
|
||||||
|
|
||||||
if (this.machineItemStacks[2] == null)
|
if (machineItemStacks[2] == null)
|
||||||
{
|
{
|
||||||
this.machineItemStacks[2] = var1.copy();
|
machineItemStacks[2] = var1.copy();
|
||||||
}
|
}
|
||||||
else if (this.machineItemStacks[2].isItemEqual(var1))
|
else if (machineItemStacks[2].isItemEqual(var1))
|
||||||
{
|
{
|
||||||
//==========================================================
|
machineItemStacks[2].stackSize += var1.stackSize;
|
||||||
//Adding extra importance here, so this really small bug
|
|
||||||
//fix stops slipping through the cracks.
|
|
||||||
//
|
|
||||||
//Makes it so that items that result in multiple items are
|
|
||||||
//smelted correctly each time.
|
|
||||||
//
|
|
||||||
//
|
|
||||||
//
|
|
||||||
this.machineItemStacks[2].stackSize += var1.stackSize;
|
|
||||||
//==========================================================
|
|
||||||
}
|
}
|
||||||
|
|
||||||
--this.machineItemStacks[0].stackSize;
|
--machineItemStacks[0].stackSize;
|
||||||
|
|
||||||
if (this.machineItemStacks[0].stackSize <= 0)
|
if (machineItemStacks[0].stackSize <= 0)
|
||||||
{
|
{
|
||||||
this.machineItemStacks[0] = null;
|
machineItemStacks[0] = null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns the number of ticks that the supplied fuel item will keep the furnace burning, or 0 if the item isn't
|
|
||||||
* fuel
|
|
||||||
*/
|
|
||||||
public static int getItemBurnTime(ItemStack par1ItemStack)
|
public static int getItemBurnTime(ItemStack par1ItemStack)
|
||||||
{
|
{
|
||||||
if (par1ItemStack == null)
|
if (par1ItemStack == null)
|
||||||
|
@ -343,37 +147,51 @@ public class TileEntityCrusher extends TileEntity implements IInventory, ISidedI
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
public void readFromNBT(NBTTagCompound par1NBTTagCompound)
|
||||||
* Return true if item is a fuel source (getItemBurnTime() > 0).
|
{
|
||||||
*/
|
super.readFromNBT(par1NBTTagCompound);
|
||||||
|
NBTTagList var2 = par1NBTTagCompound.getTagList("Items");
|
||||||
|
machineItemStacks = new ItemStack[getSizeInventory()];
|
||||||
|
|
||||||
|
for (int var3 = 0; var3 < var2.tagCount(); ++var3)
|
||||||
|
{
|
||||||
|
NBTTagCompound var4 = (NBTTagCompound)var2.tagAt(var3);
|
||||||
|
byte var5 = var4.getByte("Slot");
|
||||||
|
|
||||||
|
if (var5 >= 0 && var5 < machineItemStacks.length)
|
||||||
|
{
|
||||||
|
machineItemStacks[var5] = ItemStack.loadItemStackFromNBT(var4);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
machineBurnTime = par1NBTTagCompound.getShort("BurnTime");
|
||||||
|
machineCookTime = par1NBTTagCompound.getShort("CookTime");
|
||||||
|
currentItemBurnTime = getItemBurnTime(machineItemStacks[1]);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void writeToNBT(NBTTagCompound par1NBTTagCompound)
|
||||||
|
{
|
||||||
|
super.writeToNBT(par1NBTTagCompound);
|
||||||
|
par1NBTTagCompound.setShort("BurnTime", (short)machineBurnTime);
|
||||||
|
par1NBTTagCompound.setShort("CookTime", (short)machineCookTime);
|
||||||
|
NBTTagList var2 = new NBTTagList();
|
||||||
|
|
||||||
|
for (int var3 = 0; var3 < machineItemStacks.length; ++var3)
|
||||||
|
{
|
||||||
|
if (machineItemStacks[var3] != null)
|
||||||
|
{
|
||||||
|
NBTTagCompound var4 = new NBTTagCompound();
|
||||||
|
var4.setByte("Slot", (byte)var3);
|
||||||
|
machineItemStacks[var3].writeToNBT(var4);
|
||||||
|
var2.appendTag(var4);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
par1NBTTagCompound.setTag("Items", var2);
|
||||||
|
}
|
||||||
|
|
||||||
public static boolean isItemFuel(ItemStack par0ItemStack)
|
public static boolean isItemFuel(ItemStack par0ItemStack)
|
||||||
{
|
{
|
||||||
return getItemBurnTime(par0ItemStack) > 0;
|
return getItemBurnTime(par0ItemStack) > 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Do not make give this method the name canInteractWith because it clashes with Container
|
|
||||||
*/
|
|
||||||
public boolean isUseableByPlayer(EntityPlayer par1EntityPlayer)
|
|
||||||
{
|
|
||||||
return this.worldObj.getBlockTileEntity(this.xCoord, this.yCoord, this.zCoord) != this ? false : par1EntityPlayer.getDistanceSq((double)this.xCoord + 0.5D, (double)this.yCoord + 0.5D, (double)this.zCoord + 0.5D) <= 64.0D;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void openChest() {}
|
|
||||||
|
|
||||||
public void closeChest() {}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public int getStartInventorySide(ForgeDirection side)
|
|
||||||
{
|
|
||||||
if (side == ForgeDirection.DOWN) return 1;
|
|
||||||
if (side == ForgeDirection.UP) return 0;
|
|
||||||
return 2;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public int getSizeInventorySide(ForgeDirection side)
|
|
||||||
{
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -6,329 +6,133 @@ import net.minecraftforge.common.ISidedInventory;
|
||||||
import net.minecraftforge.common.ForgeDirection;
|
import net.minecraftforge.common.ForgeDirection;
|
||||||
import net.minecraft.src.*;
|
import net.minecraft.src.*;
|
||||||
|
|
||||||
public class TileEntityEnrichmentChamber extends TileEntity implements IInventory, ISidedInventory
|
public class TileEntityEnrichmentChamber extends TileEntityMachine
|
||||||
{
|
{
|
||||||
/**
|
public TileEntityEnrichmentChamber()
|
||||||
* The ItemStacks that hold the items currently being used in the furnace
|
{
|
||||||
*/
|
super(200, "Enrichment Chamber");
|
||||||
private ItemStack[] machineItemStacks = new ItemStack[3];
|
}
|
||||||
|
|
||||||
/** The number of ticks that the furnace will keep burning */
|
|
||||||
public int machineBurnTime = 0;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* The number of ticks that a fresh copy of the currently-burning item would keep the furnace burning for
|
|
||||||
*/
|
|
||||||
public int currentItemBurnTime = 0;
|
|
||||||
|
|
||||||
/** The number of ticks that the current item has been cooking for */
|
|
||||||
public int machineCookTime = 0;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns the number of slots in the inventory.
|
|
||||||
*/
|
|
||||||
public int getSizeInventory()
|
|
||||||
{
|
|
||||||
return this.machineItemStacks.length;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns the stack in slot i
|
|
||||||
*/
|
|
||||||
public ItemStack getStackInSlot(int par1)
|
|
||||||
{
|
|
||||||
return this.machineItemStacks[par1];
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Decrease the size of the stack in slot (first int arg) by the amount of the second int arg. Returns the new
|
|
||||||
* stack.
|
|
||||||
*/
|
|
||||||
public ItemStack decrStackSize(int par1, int par2)
|
|
||||||
{
|
|
||||||
if (this.machineItemStacks[par1] != null)
|
|
||||||
{
|
|
||||||
ItemStack var3;
|
|
||||||
|
|
||||||
if (this.machineItemStacks[par1].stackSize <= par2)
|
|
||||||
{
|
|
||||||
var3 = this.machineItemStacks[par1];
|
|
||||||
this.machineItemStacks[par1] = null;
|
|
||||||
return var3;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
var3 = this.machineItemStacks[par1].splitStack(par2);
|
|
||||||
|
|
||||||
if (this.machineItemStacks[par1].stackSize == 0)
|
|
||||||
{
|
|
||||||
this.machineItemStacks[par1] = null;
|
|
||||||
}
|
|
||||||
|
|
||||||
return var3;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* When some containers are closed they call this on each slot, then drop whatever it returns as an EntityItem -
|
|
||||||
* like when you close a workbench GUI.
|
|
||||||
*/
|
|
||||||
public ItemStack getStackInSlotOnClosing(int par1)
|
|
||||||
{
|
|
||||||
if (this.machineItemStacks[par1] != null)
|
|
||||||
{
|
|
||||||
ItemStack var2 = this.machineItemStacks[par1];
|
|
||||||
this.machineItemStacks[par1] = null;
|
|
||||||
return var2;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Sets the given item stack to the specified slot in the inventory (can be crafting or armor sections).
|
|
||||||
*/
|
|
||||||
public void setInventorySlotContents(int par1, ItemStack par2ItemStack)
|
|
||||||
{
|
|
||||||
this.machineItemStacks[par1] = par2ItemStack;
|
|
||||||
|
|
||||||
if (par2ItemStack != null && par2ItemStack.stackSize > this.getInventoryStackLimit())
|
|
||||||
{
|
|
||||||
par2ItemStack.stackSize = this.getInventoryStackLimit();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns the name of the inventory.
|
|
||||||
*/
|
|
||||||
public String getInvName()
|
|
||||||
{
|
|
||||||
return "Enrichment Chamber";
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Reads a tile entity from NBT.
|
|
||||||
*/
|
|
||||||
public void readFromNBT(NBTTagCompound par1NBTTagCompound)
|
|
||||||
{
|
|
||||||
super.readFromNBT(par1NBTTagCompound);
|
|
||||||
NBTTagList var2 = par1NBTTagCompound.getTagList("Items");
|
|
||||||
this.machineItemStacks = new ItemStack[this.getSizeInventory()];
|
|
||||||
|
|
||||||
for (int var3 = 0; var3 < var2.tagCount(); ++var3)
|
|
||||||
{
|
|
||||||
NBTTagCompound var4 = (NBTTagCompound)var2.tagAt(var3);
|
|
||||||
byte var5 = var4.getByte("Slot");
|
|
||||||
|
|
||||||
if (var5 >= 0 && var5 < this.machineItemStacks.length)
|
|
||||||
{
|
|
||||||
this.machineItemStacks[var5] = ItemStack.loadItemStackFromNBT(var4);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
this.machineBurnTime = par1NBTTagCompound.getShort("BurnTime");
|
|
||||||
this.machineCookTime = par1NBTTagCompound.getShort("CookTime");
|
|
||||||
this.currentItemBurnTime = getItemBurnTime(this.machineItemStacks[1]);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Writes a tile entity to NBT.
|
|
||||||
*/
|
|
||||||
public void writeToNBT(NBTTagCompound par1NBTTagCompound)
|
|
||||||
{
|
|
||||||
super.writeToNBT(par1NBTTagCompound);
|
|
||||||
par1NBTTagCompound.setShort("BurnTime", (short)this.machineBurnTime);
|
|
||||||
par1NBTTagCompound.setShort("CookTime", (short)this.machineCookTime);
|
|
||||||
NBTTagList var2 = new NBTTagList();
|
|
||||||
|
|
||||||
for (int var3 = 0; var3 < this.machineItemStacks.length; ++var3)
|
|
||||||
{
|
|
||||||
if (this.machineItemStacks[var3] != null)
|
|
||||||
{
|
|
||||||
NBTTagCompound var4 = new NBTTagCompound();
|
|
||||||
var4.setByte("Slot", (byte)var3);
|
|
||||||
this.machineItemStacks[var3].writeToNBT(var4);
|
|
||||||
var2.appendTag(var4);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
par1NBTTagCompound.setTag("Items", var2);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns the maximum stack size for a inventory slot. Seems to always be 64, possibly will be extended. *Isn't
|
|
||||||
* this more of a set than a get?*
|
|
||||||
*/
|
|
||||||
public int getInventoryStackLimit()
|
|
||||||
{
|
|
||||||
return 64;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns an integer between 0 and the passed value representing how close the current item is to being completely
|
|
||||||
* cooked
|
|
||||||
*/
|
|
||||||
public int getCookProgressScaled(int par1)
|
|
||||||
{
|
|
||||||
return this.machineCookTime * par1 / 200;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns an integer between 0 and the passed value representing how much burn time is left on the current fuel
|
|
||||||
* item, where 0 means that the item is exhausted and the passed value means that the item is fresh
|
|
||||||
*/
|
|
||||||
public int getBurnTimeRemainingScaled(int par1)
|
|
||||||
{
|
|
||||||
if (this.currentItemBurnTime == 0)
|
|
||||||
{
|
|
||||||
this.currentItemBurnTime = 200;
|
|
||||||
}
|
|
||||||
|
|
||||||
return this.machineBurnTime * par1 / this.currentItemBurnTime;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns true if the furnace is currently burning
|
|
||||||
*/
|
|
||||||
public boolean isBurning()
|
|
||||||
{
|
|
||||||
return this.machineBurnTime > 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Allows the entity to update its state. Overridden in most subclasses, e.g. the mob spawner uses this to count
|
|
||||||
* ticks and creates a new spawn inside its implementation.
|
|
||||||
*/
|
|
||||||
public void updateEntity()
|
public void updateEntity()
|
||||||
{
|
{
|
||||||
boolean var1 = this.machineBurnTime > 0;
|
boolean var1 = machineBurnTime > 0;
|
||||||
boolean var2 = false;
|
boolean var2 = false;
|
||||||
|
|
||||||
if (this.machineBurnTime > 0)
|
if(machineBurnTime > 0)
|
||||||
{
|
{
|
||||||
--this.machineBurnTime;
|
isActive = true;
|
||||||
|
}
|
||||||
|
if(machineBurnTime == 0 && !canSmelt())
|
||||||
|
{
|
||||||
|
isActive = false;
|
||||||
|
}
|
||||||
|
if(machineBurnTime == 0 && machineItemStacks[1] == null)
|
||||||
|
{
|
||||||
|
isActive = false;
|
||||||
|
}
|
||||||
|
if(machineBurnTime == 0 && machineItemStacks[0] == null)
|
||||||
|
{
|
||||||
|
isActive = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!this.worldObj.isRemote)
|
if (machineBurnTime > 0)
|
||||||
{
|
{
|
||||||
if (this.machineBurnTime == 0 && this.canSmelt())
|
--machineBurnTime;
|
||||||
{
|
}
|
||||||
this.currentItemBurnTime = this.machineBurnTime = getItemBurnTime(this.machineItemStacks[1]);
|
|
||||||
|
|
||||||
if (this.machineBurnTime > 0)
|
if (!worldObj.isRemote)
|
||||||
|
{
|
||||||
|
if (machineBurnTime == 0 && canSmelt())
|
||||||
|
{
|
||||||
|
currentItemBurnTime = machineBurnTime = getItemBurnTime(machineItemStacks[1]);
|
||||||
|
|
||||||
|
if (machineBurnTime > 0)
|
||||||
{
|
{
|
||||||
var2 = true;
|
var2 = true;
|
||||||
|
|
||||||
if (this.machineItemStacks[1] != null)
|
if (machineItemStacks[1] != null)
|
||||||
{
|
{
|
||||||
--this.machineItemStacks[1].stackSize;
|
--machineItemStacks[1].stackSize;
|
||||||
|
|
||||||
if (this.machineItemStacks[1].stackSize == 0)
|
if (machineItemStacks[1].stackSize == 0)
|
||||||
{
|
{
|
||||||
this.machineItemStacks[1] = null;
|
machineItemStacks[1] = null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (this.isBurning() && this.canSmelt())
|
if (isBurning() && canSmelt())
|
||||||
{
|
{
|
||||||
++this.machineCookTime;
|
++machineCookTime;
|
||||||
|
|
||||||
if (this.machineCookTime == 200)
|
if (machineCookTime == 200)
|
||||||
{
|
{
|
||||||
this.machineCookTime = 0;
|
machineCookTime = 0;
|
||||||
this.smeltItem();
|
smeltItem();
|
||||||
var2 = true;
|
var2 = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
this.machineCookTime = 0;
|
machineCookTime = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (var1 != this.machineBurnTime > 0)
|
if (var1 != machineBurnTime > 0)
|
||||||
{
|
{
|
||||||
var2 = true;
|
var2 = true;
|
||||||
BlockEnrichmentChamber.updateBlock(machineBurnTime > 0, this.worldObj, this.xCoord, this.yCoord, this.zCoord);
|
BlockEnrichmentChamber.updateBlock(machineBurnTime > 0, worldObj, xCoord, yCoord, zCoord);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (var2)
|
if (var2)
|
||||||
{
|
{
|
||||||
this.onInventoryChanged();
|
onInventoryChanged();
|
||||||
}
|
}
|
||||||
worldObj.updateAllLightTypes(xCoord, yCoord, zCoord);
|
worldObj.markBlockAsNeedsUpdate(xCoord, yCoord, zCoord);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
public boolean canSmelt()
|
||||||
* Returns true if the furnace can smelt an item, i.e. has a source item, destination stack isn't full, etc.
|
|
||||||
*/
|
|
||||||
private boolean canSmelt()
|
|
||||||
{
|
{
|
||||||
if (this.machineItemStacks[0] == null)
|
if (machineItemStacks[0] == null)
|
||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
ItemStack var1 = EnrichmentChamberRecipes.smelting().getSmeltingResult(this.machineItemStacks[0]);
|
ItemStack var1 = EnrichmentChamberRecipes.smelting().getSmeltingResult(machineItemStacks[0]);
|
||||||
if (var1 == null) return false;
|
if (var1 == null) return false;
|
||||||
if (this.machineItemStacks[2] == null) return true;
|
if (machineItemStacks[2] == null) return true;
|
||||||
if (!this.machineItemStacks[2].isItemEqual(var1)) return false;
|
if (!machineItemStacks[2].isItemEqual(var1)) return false;
|
||||||
int result = machineItemStacks[2].stackSize + var1.stackSize;
|
int result = machineItemStacks[2].stackSize + var1.stackSize;
|
||||||
return (result <= getInventoryStackLimit() && result <= var1.getMaxStackSize());
|
return (result <= getInventoryStackLimit() && result <= var1.getMaxStackSize());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Turn one item from the furnace source stack into the appropriate smelted item in the furnace result stack
|
|
||||||
*/
|
|
||||||
public void smeltItem()
|
public void smeltItem()
|
||||||
{
|
{
|
||||||
if (this.canSmelt())
|
if (canSmelt())
|
||||||
{
|
{
|
||||||
ItemStack var1 = EnrichmentChamberRecipes.smelting().getSmeltingResult(this.machineItemStacks[0]);
|
ItemStack var1 = EnrichmentChamberRecipes.smelting().getSmeltingResult(machineItemStacks[0]);
|
||||||
|
|
||||||
if (this.machineItemStacks[2] == null)
|
if (machineItemStacks[2] == null)
|
||||||
{
|
{
|
||||||
this.machineItemStacks[2] = var1.copy();
|
machineItemStacks[2] = var1.copy();
|
||||||
}
|
}
|
||||||
else if (this.machineItemStacks[2].isItemEqual(var1))
|
else if (machineItemStacks[2].isItemEqual(var1))
|
||||||
{
|
{
|
||||||
//==========================================================
|
machineItemStacks[2].stackSize += var1.stackSize;
|
||||||
//Adding extra importance here, so this really small bug
|
|
||||||
//fix stops slipping through the cracks.
|
|
||||||
//
|
|
||||||
//Makes it so that items that result in multiple items are
|
|
||||||
//smelted correctly each time.
|
|
||||||
//
|
|
||||||
//
|
|
||||||
//
|
|
||||||
this.machineItemStacks[2].stackSize += var1.stackSize;
|
|
||||||
//==========================================================
|
|
||||||
}
|
}
|
||||||
|
|
||||||
--this.machineItemStacks[0].stackSize;
|
--machineItemStacks[0].stackSize;
|
||||||
|
|
||||||
if (this.machineItemStacks[0].stackSize <= 0)
|
if (machineItemStacks[0].stackSize <= 0)
|
||||||
{
|
{
|
||||||
this.machineItemStacks[0] = null;
|
machineItemStacks[0] = null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns the number of ticks that the supplied fuel item will keep the furnace burning, or 0 if the item isn't
|
|
||||||
* fuel
|
|
||||||
*/
|
|
||||||
public static int getItemBurnTime(ItemStack par1ItemStack)
|
public static int getItemBurnTime(ItemStack par1ItemStack)
|
||||||
{
|
{
|
||||||
if (par1ItemStack == null)
|
if (par1ItemStack == null)
|
||||||
|
@ -343,37 +147,51 @@ public class TileEntityEnrichmentChamber extends TileEntity implements IInventor
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
public void readFromNBT(NBTTagCompound par1NBTTagCompound)
|
||||||
* Return true if item is a fuel source (getItemBurnTime() > 0).
|
{
|
||||||
*/
|
super.readFromNBT(par1NBTTagCompound);
|
||||||
|
NBTTagList var2 = par1NBTTagCompound.getTagList("Items");
|
||||||
|
machineItemStacks = new ItemStack[getSizeInventory()];
|
||||||
|
|
||||||
|
for (int var3 = 0; var3 < var2.tagCount(); ++var3)
|
||||||
|
{
|
||||||
|
NBTTagCompound var4 = (NBTTagCompound)var2.tagAt(var3);
|
||||||
|
byte var5 = var4.getByte("Slot");
|
||||||
|
|
||||||
|
if (var5 >= 0 && var5 < machineItemStacks.length)
|
||||||
|
{
|
||||||
|
machineItemStacks[var5] = ItemStack.loadItemStackFromNBT(var4);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
machineBurnTime = par1NBTTagCompound.getShort("BurnTime");
|
||||||
|
machineCookTime = par1NBTTagCompound.getShort("CookTime");
|
||||||
|
currentItemBurnTime = getItemBurnTime(machineItemStacks[1]);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void writeToNBT(NBTTagCompound par1NBTTagCompound)
|
||||||
|
{
|
||||||
|
super.writeToNBT(par1NBTTagCompound);
|
||||||
|
par1NBTTagCompound.setShort("BurnTime", (short)machineBurnTime);
|
||||||
|
par1NBTTagCompound.setShort("CookTime", (short)machineCookTime);
|
||||||
|
NBTTagList var2 = new NBTTagList();
|
||||||
|
|
||||||
|
for (int var3 = 0; var3 < machineItemStacks.length; ++var3)
|
||||||
|
{
|
||||||
|
if (machineItemStacks[var3] != null)
|
||||||
|
{
|
||||||
|
NBTTagCompound var4 = new NBTTagCompound();
|
||||||
|
var4.setByte("Slot", (byte)var3);
|
||||||
|
machineItemStacks[var3].writeToNBT(var4);
|
||||||
|
var2.appendTag(var4);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
par1NBTTagCompound.setTag("Items", var2);
|
||||||
|
}
|
||||||
|
|
||||||
public static boolean isItemFuel(ItemStack par0ItemStack)
|
public static boolean isItemFuel(ItemStack par0ItemStack)
|
||||||
{
|
{
|
||||||
return getItemBurnTime(par0ItemStack) > 0;
|
return getItemBurnTime(par0ItemStack) > 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Do not make give this method the name canInteractWith because it clashes with Container
|
|
||||||
*/
|
|
||||||
public boolean isUseableByPlayer(EntityPlayer par1EntityPlayer)
|
|
||||||
{
|
|
||||||
return this.worldObj.getBlockTileEntity(this.xCoord, this.yCoord, this.zCoord) != this ? false : par1EntityPlayer.getDistanceSq((double)this.xCoord + 0.5D, (double)this.yCoord + 0.5D, (double)this.zCoord + 0.5D) <= 64.0D;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void openChest() {}
|
|
||||||
|
|
||||||
public void closeChest() {}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public int getStartInventorySide(ForgeDirection side)
|
|
||||||
{
|
|
||||||
if (side == ForgeDirection.DOWN) return 1;
|
|
||||||
if (side == ForgeDirection.UP) return 0;
|
|
||||||
return 2;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public int getSizeInventorySide(ForgeDirection side)
|
|
||||||
{
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
166
src/common/net/uberkat/obsidian/common/TileEntityMachine.java
Normal file
166
src/common/net/uberkat/obsidian/common/TileEntityMachine.java
Normal file
|
@ -0,0 +1,166 @@
|
||||||
|
package net.uberkat.obsidian.common;
|
||||||
|
|
||||||
|
import net.minecraft.src.*;
|
||||||
|
import net.minecraftforge.common.ForgeDirection;
|
||||||
|
import net.minecraftforge.common.ISidedInventory;
|
||||||
|
|
||||||
|
public class TileEntityMachine extends TileEntity implements IInventory, ISidedInventory
|
||||||
|
{
|
||||||
|
/** The ItemStacks that hold the items currently being used in the furnace */
|
||||||
|
protected ItemStack[] machineItemStacks = new ItemStack[3];
|
||||||
|
|
||||||
|
/** The number of ticks that the furnace will keep burning */
|
||||||
|
public int machineBurnTime = 0;
|
||||||
|
|
||||||
|
/** The number of ticks that a fresh copy of the currently-burning item would keep the furnace burning for */
|
||||||
|
public int currentItemBurnTime = 0;
|
||||||
|
|
||||||
|
/** The number of ticks that the current item has been cooking for */
|
||||||
|
public int machineCookTime = 0;
|
||||||
|
|
||||||
|
/** The number of ticks it takes to cook an item */
|
||||||
|
public int maxBurnTime = 0;
|
||||||
|
|
||||||
|
/** The full name of this tile entity */
|
||||||
|
public String fullName;
|
||||||
|
|
||||||
|
/** Whether the machine is in it's active state or not */
|
||||||
|
public boolean isActive;
|
||||||
|
|
||||||
|
public TileEntityMachine(int time, String name)
|
||||||
|
{
|
||||||
|
maxBurnTime = time;
|
||||||
|
fullName = name;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getStartInventorySide(ForgeDirection side)
|
||||||
|
{
|
||||||
|
if (side == ForgeDirection.DOWN) return 1;
|
||||||
|
if (side == ForgeDirection.UP) return 0;
|
||||||
|
return 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getSizeInventorySide(ForgeDirection side)
|
||||||
|
{
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getSizeInventory()
|
||||||
|
{
|
||||||
|
return machineItemStacks.length;
|
||||||
|
}
|
||||||
|
|
||||||
|
public ItemStack getStackInSlot(int var1)
|
||||||
|
{
|
||||||
|
return machineItemStacks[var1];
|
||||||
|
}
|
||||||
|
|
||||||
|
public ItemStack decrStackSize(int par1, int par2)
|
||||||
|
{
|
||||||
|
if (machineItemStacks[par1] != null)
|
||||||
|
{
|
||||||
|
ItemStack var3;
|
||||||
|
|
||||||
|
if (machineItemStacks[par1].stackSize <= par2)
|
||||||
|
{
|
||||||
|
var3 = machineItemStacks[par1];
|
||||||
|
machineItemStacks[par1] = null;
|
||||||
|
return var3;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
var3 = machineItemStacks[par1].splitStack(par2);
|
||||||
|
|
||||||
|
if (machineItemStacks[par1].stackSize == 0)
|
||||||
|
{
|
||||||
|
machineItemStacks[par1] = null;
|
||||||
|
}
|
||||||
|
|
||||||
|
return var3;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public ItemStack getStackInSlotOnClosing(int par1)
|
||||||
|
{
|
||||||
|
if (machineItemStacks[par1] != null)
|
||||||
|
{
|
||||||
|
ItemStack var2 = machineItemStacks[par1];
|
||||||
|
machineItemStacks[par1] = null;
|
||||||
|
return var2;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setInventorySlotContents(int par1, ItemStack par2ItemStack)
|
||||||
|
{
|
||||||
|
machineItemStacks[par1] = par2ItemStack;
|
||||||
|
|
||||||
|
if (par2ItemStack != null && par2ItemStack.stackSize > getInventoryStackLimit())
|
||||||
|
{
|
||||||
|
par2ItemStack.stackSize = getInventoryStackLimit();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getInvName()
|
||||||
|
{
|
||||||
|
return fullName;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getInventoryStackLimit()
|
||||||
|
{
|
||||||
|
return 64;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isUseableByPlayer(EntityPlayer par1EntityPlayer)
|
||||||
|
{
|
||||||
|
return worldObj.getBlockTileEntity(xCoord, yCoord, zCoord) != this ? false : par1EntityPlayer.getDistanceSq((double)xCoord + 0.5D, (double)yCoord + 0.5D, (double)zCoord + 0.5D) <= 64.0D;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getBurnTimeRemainingScaled(int par1)
|
||||||
|
{
|
||||||
|
if (currentItemBurnTime == 0)
|
||||||
|
{
|
||||||
|
currentItemBurnTime = maxBurnTime;
|
||||||
|
}
|
||||||
|
|
||||||
|
return machineBurnTime * par1 / currentItemBurnTime;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isBurning()
|
||||||
|
{
|
||||||
|
return machineBurnTime > 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getCookProgressScaled(int par1)
|
||||||
|
{
|
||||||
|
return machineCookTime * par1 / maxBurnTime;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void smeltItem()
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
protected boolean canSmelt()
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void openChest()
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public void closeChest()
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
|
@ -6,329 +6,139 @@ import net.minecraft.src.*;
|
||||||
import net.minecraftforge.common.ISidedInventory;
|
import net.minecraftforge.common.ISidedInventory;
|
||||||
import net.minecraftforge.common.ForgeDirection;
|
import net.minecraftforge.common.ForgeDirection;
|
||||||
|
|
||||||
public class TileEntityPlatinumCompressor extends TileEntity implements IInventory, ISidedInventory
|
public class TileEntityPlatinumCompressor extends TileEntityMachine
|
||||||
{
|
{
|
||||||
/**
|
public TileEntityPlatinumCompressor()
|
||||||
* The ItemStacks that hold the items currently being used in the furnace
|
{
|
||||||
*/
|
super(200, "Platinum Compressor");
|
||||||
private ItemStack[] machineItemStacks = new ItemStack[3];
|
}
|
||||||
|
|
||||||
/** The number of ticks that the furnace will keep burning */
|
|
||||||
public int machineBurnTime = 0;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* The number of ticks that a fresh copy of the currently-burning item would keep the furnace burning for
|
|
||||||
*/
|
|
||||||
public int currentItemBurnTime = 0;
|
|
||||||
|
|
||||||
/** The number of ticks that the current item has been cooking for */
|
|
||||||
public int machineCookTime = 0;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns the number of slots in the inventory.
|
|
||||||
*/
|
|
||||||
public int getSizeInventory()
|
|
||||||
{
|
|
||||||
return this.machineItemStacks.length;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns the stack in slot i
|
|
||||||
*/
|
|
||||||
public ItemStack getStackInSlot(int par1)
|
|
||||||
{
|
|
||||||
return this.machineItemStacks[par1];
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Decrease the size of the stack in slot (first int arg) by the amount of the second int arg. Returns the new
|
|
||||||
* stack.
|
|
||||||
*/
|
|
||||||
public ItemStack decrStackSize(int par1, int par2)
|
|
||||||
{
|
|
||||||
if (this.machineItemStacks[par1] != null)
|
|
||||||
{
|
|
||||||
ItemStack var3;
|
|
||||||
|
|
||||||
if (this.machineItemStacks[par1].stackSize <= par2)
|
|
||||||
{
|
|
||||||
var3 = this.machineItemStacks[par1];
|
|
||||||
this.machineItemStacks[par1] = null;
|
|
||||||
return var3;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
var3 = this.machineItemStacks[par1].splitStack(par2);
|
|
||||||
|
|
||||||
if (this.machineItemStacks[par1].stackSize == 0)
|
|
||||||
{
|
|
||||||
this.machineItemStacks[par1] = null;
|
|
||||||
}
|
|
||||||
|
|
||||||
return var3;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* When some containers are closed they call this on each slot, then drop whatever it returns as an EntityItem -
|
|
||||||
* like when you close a workbench GUI.
|
|
||||||
*/
|
|
||||||
public ItemStack getStackInSlotOnClosing(int par1)
|
|
||||||
{
|
|
||||||
if (this.machineItemStacks[par1] != null)
|
|
||||||
{
|
|
||||||
ItemStack var2 = this.machineItemStacks[par1];
|
|
||||||
this.machineItemStacks[par1] = null;
|
|
||||||
return var2;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Sets the given item stack to the specified slot in the inventory (can be crafting or armor sections).
|
|
||||||
*/
|
|
||||||
public void setInventorySlotContents(int par1, ItemStack par2ItemStack)
|
|
||||||
{
|
|
||||||
this.machineItemStacks[par1] = par2ItemStack;
|
|
||||||
|
|
||||||
if (par2ItemStack != null && par2ItemStack.stackSize > this.getInventoryStackLimit())
|
|
||||||
{
|
|
||||||
par2ItemStack.stackSize = this.getInventoryStackLimit();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns the name of the inventory.
|
|
||||||
*/
|
|
||||||
public String getInvName()
|
|
||||||
{
|
|
||||||
return "Platinum Compressor";
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Reads a tile entity from NBT.
|
|
||||||
*/
|
|
||||||
public void readFromNBT(NBTTagCompound par1NBTTagCompound)
|
|
||||||
{
|
|
||||||
super.readFromNBT(par1NBTTagCompound);
|
|
||||||
NBTTagList var2 = par1NBTTagCompound.getTagList("Items");
|
|
||||||
this.machineItemStacks = new ItemStack[this.getSizeInventory()];
|
|
||||||
|
|
||||||
for (int var3 = 0; var3 < var2.tagCount(); ++var3)
|
|
||||||
{
|
|
||||||
NBTTagCompound var4 = (NBTTagCompound)var2.tagAt(var3);
|
|
||||||
byte var5 = var4.getByte("Slot");
|
|
||||||
|
|
||||||
if (var5 >= 0 && var5 < this.machineItemStacks.length)
|
|
||||||
{
|
|
||||||
this.machineItemStacks[var5] = ItemStack.loadItemStackFromNBT(var4);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
this.machineBurnTime = par1NBTTagCompound.getShort("BurnTime");
|
|
||||||
this.machineCookTime = par1NBTTagCompound.getShort("CookTime");
|
|
||||||
this.currentItemBurnTime = getItemBurnTime(this.machineItemStacks[1]);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Writes a tile entity to NBT.
|
|
||||||
*/
|
|
||||||
public void writeToNBT(NBTTagCompound par1NBTTagCompound)
|
|
||||||
{
|
|
||||||
super.writeToNBT(par1NBTTagCompound);
|
|
||||||
par1NBTTagCompound.setShort("BurnTime", (short)this.machineBurnTime);
|
|
||||||
par1NBTTagCompound.setShort("CookTime", (short)this.machineCookTime);
|
|
||||||
NBTTagList var2 = new NBTTagList();
|
|
||||||
|
|
||||||
for (int var3 = 0; var3 < this.machineItemStacks.length; ++var3)
|
|
||||||
{
|
|
||||||
if (this.machineItemStacks[var3] != null)
|
|
||||||
{
|
|
||||||
NBTTagCompound var4 = new NBTTagCompound();
|
|
||||||
var4.setByte("Slot", (byte)var3);
|
|
||||||
this.machineItemStacks[var3].writeToNBT(var4);
|
|
||||||
var2.appendTag(var4);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
par1NBTTagCompound.setTag("Items", var2);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns the maximum stack size for a inventory slot. Seems to always be 64, possibly will be extended. *Isn't
|
|
||||||
* this more of a set than a get?*
|
|
||||||
*/
|
|
||||||
public int getInventoryStackLimit()
|
|
||||||
{
|
|
||||||
return 64;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns an integer between 0 and the passed value representing how close the current item is to being completely
|
|
||||||
* cooked
|
|
||||||
*/
|
|
||||||
public int getCookProgressScaled(int par1)
|
|
||||||
{
|
|
||||||
return this.machineCookTime * par1 / 200;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns an integer between 0 and the passed value representing how much burn time is left on the current fuel
|
|
||||||
* item, where 0 means that the item is exhausted and the passed value means that the item is fresh
|
|
||||||
*/
|
|
||||||
public int getBurnTimeRemainingScaled(int par1)
|
|
||||||
{
|
|
||||||
if (this.currentItemBurnTime == 0)
|
|
||||||
{
|
|
||||||
this.currentItemBurnTime = 200;
|
|
||||||
}
|
|
||||||
|
|
||||||
return this.machineBurnTime * par1 / this.currentItemBurnTime;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns true if the furnace is currently burning
|
|
||||||
*/
|
|
||||||
public boolean isBurning()
|
|
||||||
{
|
|
||||||
return this.machineBurnTime > 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Allows the entity to update its state. Overridden in most subclasses, e.g. the mob spawner uses this to count
|
|
||||||
* ticks and creates a new spawn inside its implementation.
|
|
||||||
*/
|
|
||||||
public void updateEntity()
|
public void updateEntity()
|
||||||
{
|
{
|
||||||
boolean var1 = this.machineBurnTime > 0;
|
BlockPlatinumCompressor.updateTexture(worldObj, xCoord, yCoord, zCoord);
|
||||||
|
|
||||||
|
boolean var1 = machineBurnTime > 0;
|
||||||
boolean var2 = false;
|
boolean var2 = false;
|
||||||
|
|
||||||
if (this.machineBurnTime > 0)
|
if(machineBurnTime > 0)
|
||||||
{
|
{
|
||||||
--this.machineBurnTime;
|
isActive = true;
|
||||||
|
}
|
||||||
|
if(machineBurnTime == 0 && !canSmelt())
|
||||||
|
{
|
||||||
|
isActive = false;
|
||||||
|
}
|
||||||
|
if(machineBurnTime == 0 && machineItemStacks[1] == null)
|
||||||
|
{
|
||||||
|
isActive = false;
|
||||||
|
}
|
||||||
|
if(machineBurnTime == 0 && machineItemStacks[0] == null)
|
||||||
|
{
|
||||||
|
isActive = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!this.worldObj.isRemote)
|
if (machineBurnTime > 0)
|
||||||
{
|
{
|
||||||
if (this.machineBurnTime == 0 && this.canSmelt())
|
--machineBurnTime;
|
||||||
{
|
}
|
||||||
this.currentItemBurnTime = this.machineBurnTime = getItemBurnTime(this.machineItemStacks[1]);
|
|
||||||
|
|
||||||
if (this.machineBurnTime > 0)
|
if (!worldObj.isRemote)
|
||||||
|
{
|
||||||
|
if (machineBurnTime == 0 && canSmelt())
|
||||||
|
{
|
||||||
|
currentItemBurnTime = machineBurnTime = getItemBurnTime(machineItemStacks[1]);
|
||||||
|
|
||||||
|
if (machineBurnTime > 0)
|
||||||
{
|
{
|
||||||
var2 = true;
|
var2 = true;
|
||||||
|
|
||||||
if (this.machineItemStacks[1] != null)
|
if (machineItemStacks[1] != null)
|
||||||
{
|
{
|
||||||
--this.machineItemStacks[1].stackSize;
|
--machineItemStacks[1].stackSize;
|
||||||
|
|
||||||
if (this.machineItemStacks[1].stackSize == 0)
|
if (machineItemStacks[1].stackSize == 0)
|
||||||
{
|
{
|
||||||
this.machineItemStacks[1] = null;
|
machineItemStacks[1] = null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (this.isBurning() && this.canSmelt())
|
if (isBurning() && canSmelt())
|
||||||
{
|
{
|
||||||
++this.machineCookTime;
|
++machineCookTime;
|
||||||
|
|
||||||
if (this.machineCookTime == 200)
|
if (machineCookTime == 200)
|
||||||
{
|
{
|
||||||
this.machineCookTime = 0;
|
machineCookTime = 0;
|
||||||
this.smeltItem();
|
smeltItem();
|
||||||
var2 = true;
|
var2 = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
this.machineCookTime = 0;
|
machineCookTime = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (var1 != this.machineBurnTime > 0)
|
if (var1 != machineBurnTime > 0)
|
||||||
{
|
{
|
||||||
var2 = true;
|
var2 = true;
|
||||||
BlockPlatinumCompressor.updateBlock(machineBurnTime > 0, this.worldObj, this.xCoord, this.yCoord, this.zCoord);
|
BlockPlatinumCompressor.updateBlock(machineBurnTime > 0, worldObj, xCoord, yCoord, zCoord);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (var2)
|
if (var2)
|
||||||
{
|
{
|
||||||
this.onInventoryChanged();
|
onInventoryChanged();
|
||||||
}
|
}
|
||||||
worldObj.updateAllLightTypes(xCoord, yCoord, zCoord);
|
worldObj.markBlockAsNeedsUpdate(xCoord, yCoord, zCoord);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
public boolean canSmelt()
|
||||||
* Returns true if the furnace can smelt an item, i.e. has a source item, destination stack isn't full, etc.
|
|
||||||
*/
|
|
||||||
private boolean canSmelt()
|
|
||||||
{
|
{
|
||||||
if (this.machineItemStacks[0] == null)
|
if (machineItemStacks[0] == null)
|
||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
else if(machineItemStacks[1] == null && currentItemBurnTime == 0)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
ItemStack var1 = PlatinumCompressorRecipes.smelting().getSmeltingResult(this.machineItemStacks[0]);
|
ItemStack var1 = PlatinumCompressorRecipes.smelting().getSmeltingResult(machineItemStacks[0]);
|
||||||
if (var1 == null) return false;
|
if (var1 == null) return false;
|
||||||
if (this.machineItemStacks[2] == null) return true;
|
if (machineItemStacks[2] == null) return true;
|
||||||
if (!this.machineItemStacks[2].isItemEqual(var1)) return false;
|
if (!machineItemStacks[2].isItemEqual(var1)) return false;
|
||||||
int result = machineItemStacks[2].stackSize + var1.stackSize;
|
int result = machineItemStacks[2].stackSize + var1.stackSize;
|
||||||
return (result <= getInventoryStackLimit() && result <= var1.getMaxStackSize());
|
return (result <= getInventoryStackLimit() && result <= var1.getMaxStackSize());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Turn one item from the furnace source stack into the appropriate smelted item in the furnace result stack
|
|
||||||
*/
|
|
||||||
public void smeltItem()
|
public void smeltItem()
|
||||||
{
|
{
|
||||||
if (this.canSmelt())
|
if (canSmelt())
|
||||||
{
|
{
|
||||||
ItemStack var1 = PlatinumCompressorRecipes.smelting().getSmeltingResult(this.machineItemStacks[0]);
|
ItemStack var1 = PlatinumCompressorRecipes.smelting().getSmeltingResult(machineItemStacks[0]);
|
||||||
|
|
||||||
if (this.machineItemStacks[2] == null)
|
if (machineItemStacks[2] == null)
|
||||||
{
|
{
|
||||||
this.machineItemStacks[2] = var1.copy();
|
machineItemStacks[2] = var1.copy();
|
||||||
}
|
}
|
||||||
else if (this.machineItemStacks[2].isItemEqual(var1))
|
else if (machineItemStacks[2].isItemEqual(var1))
|
||||||
{
|
{
|
||||||
//==========================================================
|
machineItemStacks[2].stackSize += var1.stackSize;
|
||||||
//Adding extra importance here, so this really small bug
|
|
||||||
//fix stops slipping through the cracks.
|
|
||||||
//
|
|
||||||
//Makes it so that items that result in multiple items are
|
|
||||||
//smelted correctly each time.
|
|
||||||
//
|
|
||||||
//
|
|
||||||
//
|
|
||||||
this.machineItemStacks[2].stackSize += var1.stackSize;
|
|
||||||
//==========================================================
|
|
||||||
}
|
}
|
||||||
|
|
||||||
--this.machineItemStacks[0].stackSize;
|
--machineItemStacks[0].stackSize;
|
||||||
|
|
||||||
if (this.machineItemStacks[0].stackSize <= 0)
|
if (machineItemStacks[0].stackSize <= 0)
|
||||||
{
|
{
|
||||||
this.machineItemStacks[0] = null;
|
machineItemStacks[0] = null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns the number of ticks that the supplied fuel item will keep the furnace burning, or 0 if the item isn't
|
|
||||||
* fuel
|
|
||||||
*/
|
|
||||||
public static int getItemBurnTime(ItemStack par1ItemStack)
|
public static int getItemBurnTime(ItemStack par1ItemStack)
|
||||||
{
|
{
|
||||||
if (par1ItemStack == null)
|
if (par1ItemStack == null)
|
||||||
|
@ -344,37 +154,51 @@ public class TileEntityPlatinumCompressor extends TileEntity implements IInvento
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
public void readFromNBT(NBTTagCompound par1NBTTagCompound)
|
||||||
* Return true if item is a fuel source (getItemBurnTime() > 0).
|
{
|
||||||
*/
|
super.readFromNBT(par1NBTTagCompound);
|
||||||
|
NBTTagList var2 = par1NBTTagCompound.getTagList("Items");
|
||||||
|
machineItemStacks = new ItemStack[getSizeInventory()];
|
||||||
|
|
||||||
|
for (int var3 = 0; var3 < var2.tagCount(); ++var3)
|
||||||
|
{
|
||||||
|
NBTTagCompound var4 = (NBTTagCompound)var2.tagAt(var3);
|
||||||
|
byte var5 = var4.getByte("Slot");
|
||||||
|
|
||||||
|
if (var5 >= 0 && var5 < machineItemStacks.length)
|
||||||
|
{
|
||||||
|
machineItemStacks[var5] = ItemStack.loadItemStackFromNBT(var4);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
machineBurnTime = par1NBTTagCompound.getShort("BurnTime");
|
||||||
|
machineCookTime = par1NBTTagCompound.getShort("CookTime");
|
||||||
|
currentItemBurnTime = getItemBurnTime(machineItemStacks[1]);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void writeToNBT(NBTTagCompound par1NBTTagCompound)
|
||||||
|
{
|
||||||
|
super.writeToNBT(par1NBTTagCompound);
|
||||||
|
par1NBTTagCompound.setShort("BurnTime", (short)machineBurnTime);
|
||||||
|
par1NBTTagCompound.setShort("CookTime", (short)machineCookTime);
|
||||||
|
NBTTagList var2 = new NBTTagList();
|
||||||
|
|
||||||
|
for (int var3 = 0; var3 < machineItemStacks.length; ++var3)
|
||||||
|
{
|
||||||
|
if (machineItemStacks[var3] != null)
|
||||||
|
{
|
||||||
|
NBTTagCompound var4 = new NBTTagCompound();
|
||||||
|
var4.setByte("Slot", (byte)var3);
|
||||||
|
machineItemStacks[var3].writeToNBT(var4);
|
||||||
|
var2.appendTag(var4);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
par1NBTTagCompound.setTag("Items", var2);
|
||||||
|
}
|
||||||
|
|
||||||
public static boolean isItemFuel(ItemStack par0ItemStack)
|
public static boolean isItemFuel(ItemStack par0ItemStack)
|
||||||
{
|
{
|
||||||
return getItemBurnTime(par0ItemStack) > 0;
|
return getItemBurnTime(par0ItemStack) > 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Do not make give this method the name canInteractWith because it clashes with Container
|
|
||||||
*/
|
|
||||||
public boolean isUseableByPlayer(EntityPlayer par1EntityPlayer)
|
|
||||||
{
|
|
||||||
return this.worldObj.getBlockTileEntity(this.xCoord, this.yCoord, this.zCoord) != this ? false : par1EntityPlayer.getDistanceSq((double)this.xCoord + 0.5D, (double)this.yCoord + 0.5D, (double)this.zCoord + 0.5D) <= 64.0D;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void openChest() {}
|
|
||||||
|
|
||||||
public void closeChest() {}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public int getStartInventorySide(ForgeDirection side)
|
|
||||||
{
|
|
||||||
if (side == ForgeDirection.DOWN) return 1;
|
|
||||||
if (side == ForgeDirection.UP) return 0;
|
|
||||||
return 2;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public int getSizeInventorySide(ForgeDirection side)
|
|
||||||
{
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -9,316 +9,124 @@ import cpw.mods.fml.common.Side;
|
||||||
import cpw.mods.fml.common.asm.SideOnly;
|
import cpw.mods.fml.common.asm.SideOnly;
|
||||||
import net.minecraft.src.*;
|
import net.minecraft.src.*;
|
||||||
|
|
||||||
public class TileEntityTheoreticalElementizer extends TileEntity implements IInventory, ISidedInventory
|
public class TileEntityTheoreticalElementizer extends TileEntityMachine
|
||||||
{
|
{
|
||||||
/**
|
public TileEntityTheoreticalElementizer()
|
||||||
* The ItemStacks that hold the items currently being used in the furnace
|
{
|
||||||
*/
|
super(1000, "Theoretical Elementizer");
|
||||||
private ItemStack[] machineItemStacks = new ItemStack[3];
|
}
|
||||||
|
|
||||||
/** The number of ticks that the furnace will keep burning */
|
|
||||||
public int machineBurnTime = 0;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* The number of ticks that a fresh copy of the currently-burning item would keep the furnace burning for
|
|
||||||
*/
|
|
||||||
public int currentItemBurnTime = 0;
|
|
||||||
|
|
||||||
/** The number of ticks that the current item has been cooking for */
|
|
||||||
public int machineCookTime = 0;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns the number of slots in the inventory.
|
|
||||||
*/
|
|
||||||
public int getSizeInventory()
|
|
||||||
{
|
|
||||||
return this.machineItemStacks.length;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns the stack in slot i
|
|
||||||
*/
|
|
||||||
public ItemStack getStackInSlot(int par1)
|
|
||||||
{
|
|
||||||
return this.machineItemStacks[par1];
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Decrease the size of the stack in slot (first int arg) by the amount of the second int arg. Returns the new
|
|
||||||
* stack.
|
|
||||||
*/
|
|
||||||
public ItemStack decrStackSize(int par1, int par2)
|
|
||||||
{
|
|
||||||
if (this.machineItemStacks[par1] != null)
|
|
||||||
{
|
|
||||||
ItemStack var3;
|
|
||||||
|
|
||||||
if (this.machineItemStacks[par1].stackSize <= par2)
|
|
||||||
{
|
|
||||||
var3 = this.machineItemStacks[par1];
|
|
||||||
this.machineItemStacks[par1] = null;
|
|
||||||
return var3;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
var3 = this.machineItemStacks[par1].splitStack(par2);
|
|
||||||
|
|
||||||
if (this.machineItemStacks[par1].stackSize == 0)
|
|
||||||
{
|
|
||||||
this.machineItemStacks[par1] = null;
|
|
||||||
}
|
|
||||||
|
|
||||||
return var3;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* When some containers are closed they call this on each slot, then drop whatever it returns as an EntityItem -
|
|
||||||
* like when you close a workbench GUI.
|
|
||||||
*/
|
|
||||||
public ItemStack getStackInSlotOnClosing(int par1)
|
|
||||||
{
|
|
||||||
if (this.machineItemStacks[par1] != null)
|
|
||||||
{
|
|
||||||
ItemStack var2 = this.machineItemStacks[par1];
|
|
||||||
this.machineItemStacks[par1] = null;
|
|
||||||
return var2;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Sets the given item stack to the specified slot in the inventory (can be crafting or armor sections).
|
|
||||||
*/
|
|
||||||
public void setInventorySlotContents(int par1, ItemStack par2ItemStack)
|
|
||||||
{
|
|
||||||
this.machineItemStacks[par1] = par2ItemStack;
|
|
||||||
|
|
||||||
if (par2ItemStack != null && par2ItemStack.stackSize > this.getInventoryStackLimit())
|
|
||||||
{
|
|
||||||
par2ItemStack.stackSize = this.getInventoryStackLimit();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns the name of the inventory.
|
|
||||||
*/
|
|
||||||
public String getInvName()
|
|
||||||
{
|
|
||||||
return "Theoretical Elementizer";
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Reads a tile entity from NBT.
|
|
||||||
*/
|
|
||||||
public void readFromNBT(NBTTagCompound par1NBTTagCompound)
|
|
||||||
{
|
|
||||||
super.readFromNBT(par1NBTTagCompound);
|
|
||||||
NBTTagList var2 = par1NBTTagCompound.getTagList("Items");
|
|
||||||
this.machineItemStacks = new ItemStack[this.getSizeInventory()];
|
|
||||||
|
|
||||||
for (int var3 = 0; var3 < var2.tagCount(); ++var3)
|
|
||||||
{
|
|
||||||
NBTTagCompound var4 = (NBTTagCompound)var2.tagAt(var3);
|
|
||||||
byte var5 = var4.getByte("Slot");
|
|
||||||
|
|
||||||
if (var5 >= 0 && var5 < this.machineItemStacks.length)
|
|
||||||
{
|
|
||||||
this.machineItemStacks[var5] = ItemStack.loadItemStackFromNBT(var4);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
this.machineBurnTime = par1NBTTagCompound.getShort("BurnTime");
|
|
||||||
this.machineCookTime = par1NBTTagCompound.getShort("CookTime");
|
|
||||||
this.currentItemBurnTime = getItemBurnTime(this.machineItemStacks[1]);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Writes a tile entity to NBT.
|
|
||||||
*/
|
|
||||||
public void writeToNBT(NBTTagCompound par1NBTTagCompound)
|
|
||||||
{
|
|
||||||
super.writeToNBT(par1NBTTagCompound);
|
|
||||||
par1NBTTagCompound.setShort("BurnTime", (short)this.machineBurnTime);
|
|
||||||
par1NBTTagCompound.setShort("CookTime", (short)this.machineCookTime);
|
|
||||||
NBTTagList var2 = new NBTTagList();
|
|
||||||
|
|
||||||
for (int var3 = 0; var3 < this.machineItemStacks.length; ++var3)
|
|
||||||
{
|
|
||||||
if (this.machineItemStacks[var3] != null)
|
|
||||||
{
|
|
||||||
NBTTagCompound var4 = new NBTTagCompound();
|
|
||||||
var4.setByte("Slot", (byte)var3);
|
|
||||||
this.machineItemStacks[var3].writeToNBT(var4);
|
|
||||||
var2.appendTag(var4);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
par1NBTTagCompound.setTag("Items", var2);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns the maximum stack size for a inventory slot. Seems to always be 64, possibly will be extended. *Isn't
|
|
||||||
* this more of a set than a get?*
|
|
||||||
*/
|
|
||||||
public int getInventoryStackLimit()
|
|
||||||
{
|
|
||||||
return 64;
|
|
||||||
}
|
|
||||||
|
|
||||||
@SideOnly(Side.CLIENT)
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns an integer between 0 and the passed value representing how close the current item is to being completely
|
|
||||||
* cooked
|
|
||||||
*/
|
|
||||||
public int getCookProgressScaled(int par1)
|
|
||||||
{
|
|
||||||
return this.machineCookTime * par1 / 1000;
|
|
||||||
}
|
|
||||||
|
|
||||||
@SideOnly(Side.CLIENT)
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns an integer between 0 and the passed value representing how much burn time is left on the current fuel
|
|
||||||
* item, where 0 means that the item is exhausted and the passed value means that the item is fresh
|
|
||||||
*/
|
|
||||||
public int getBurnTimeRemainingScaled(int par1)
|
|
||||||
{
|
|
||||||
if (this.currentItemBurnTime == 0)
|
|
||||||
{
|
|
||||||
this.currentItemBurnTime = 1000;
|
|
||||||
}
|
|
||||||
|
|
||||||
return this.machineBurnTime * par1 / this.currentItemBurnTime;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns true if the furnace is currently burning
|
|
||||||
*/
|
|
||||||
public boolean isBurning()
|
|
||||||
{
|
|
||||||
return this.machineBurnTime > 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Allows the entity to update its state. Overridden in most subclasses, e.g. the mob spawner uses this to count
|
|
||||||
* ticks and creates a new spawn inside its implementation.
|
|
||||||
*/
|
|
||||||
public void updateEntity()
|
public void updateEntity()
|
||||||
{
|
{
|
||||||
boolean var1 = this.machineBurnTime > 0;
|
BlockTheoreticalElementizer.updateTexture(worldObj, xCoord, yCoord, zCoord);
|
||||||
|
|
||||||
|
boolean var1 = machineBurnTime > 0;
|
||||||
boolean var2 = false;
|
boolean var2 = false;
|
||||||
|
|
||||||
if (this.machineBurnTime > 0)
|
if(machineBurnTime > 0)
|
||||||
{
|
{
|
||||||
--this.machineBurnTime;
|
isActive = true;
|
||||||
|
}
|
||||||
|
else if(machineBurnTime == 0 && !canSmelt())
|
||||||
|
{
|
||||||
|
isActive = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!this.worldObj.isRemote)
|
if (machineBurnTime > 0)
|
||||||
{
|
{
|
||||||
if (this.machineBurnTime == 0 && this.canSmelt())
|
--machineBurnTime;
|
||||||
{
|
}
|
||||||
this.currentItemBurnTime = this.machineBurnTime = getItemBurnTime(this.machineItemStacks[1]);
|
|
||||||
|
|
||||||
if (this.machineBurnTime > 0)
|
if (!worldObj.isRemote)
|
||||||
|
{
|
||||||
|
if (machineBurnTime == 0 && canSmelt())
|
||||||
|
{
|
||||||
|
currentItemBurnTime = machineBurnTime = getItemBurnTime(machineItemStacks[1]);
|
||||||
|
|
||||||
|
if (machineBurnTime > 0)
|
||||||
{
|
{
|
||||||
var2 = true;
|
var2 = true;
|
||||||
|
|
||||||
if (this.machineItemStacks[1] != null)
|
if (machineItemStacks[1] != null)
|
||||||
{
|
{
|
||||||
--this.machineItemStacks[1].stackSize;
|
--machineItemStacks[1].stackSize;
|
||||||
|
|
||||||
if (this.machineItemStacks[1].stackSize == 0)
|
if (machineItemStacks[1].stackSize == 0)
|
||||||
{
|
{
|
||||||
this.machineItemStacks[1] = null;
|
machineItemStacks[1] = null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (this.isBurning() && this.canSmelt())
|
if (isBurning() && canSmelt())
|
||||||
{
|
{
|
||||||
++this.machineCookTime;
|
++machineCookTime;
|
||||||
|
|
||||||
if (this.machineCookTime == 1000)
|
if (machineCookTime == maxBurnTime)
|
||||||
{
|
{
|
||||||
this.machineCookTime = 0;
|
machineCookTime = 0;
|
||||||
this.smeltItem();
|
smeltItem();
|
||||||
var2 = true;
|
var2 = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
this.machineCookTime = 0;
|
machineCookTime = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (var1 != this.machineBurnTime > 0)
|
if (var1 != machineBurnTime > 0)
|
||||||
{
|
{
|
||||||
var2 = true;
|
var2 = true;
|
||||||
BlockTheoreticalElementizer.updateBlock(machineBurnTime > 0, this.worldObj, this.xCoord, this.yCoord, this.zCoord);
|
BlockTheoreticalElementizer.updateBlock(machineBurnTime > 0, worldObj, xCoord, yCoord, zCoord);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (var2)
|
if (var2)
|
||||||
{
|
{
|
||||||
this.onInventoryChanged();
|
onInventoryChanged();
|
||||||
}
|
}
|
||||||
worldObj.updateAllLightTypes(xCoord, yCoord, zCoord);
|
worldObj.markBlockAsNeedsUpdate(xCoord, yCoord, zCoord);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
public boolean canSmelt()
|
||||||
* Returns true if the furnace can smelt an item, i.e. has a source item, destination stack isn't full, etc.
|
|
||||||
*/
|
|
||||||
private boolean canSmelt()
|
|
||||||
{
|
{
|
||||||
if (this.machineItemStacks[0] == null)
|
if (machineItemStacks[0] == null)
|
||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
else if(machineItemStacks[2] != null)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (machineItemStacks[0].getItem().shiftedIndex != ObsidianIngots.EnrichedAlloy.shiftedIndex) return false;
|
if (machineItemStacks[0].getItem().shiftedIndex != ObsidianIngots.EnrichedAlloy.shiftedIndex) return false;
|
||||||
if (this.machineItemStacks[2] == null) return true;
|
if (machineItemStacks[2] == null) return true;
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Turn one item from the furnace source stack into the appropriate smelted item in the furnace result stack
|
|
||||||
*/
|
|
||||||
public void smeltItem()
|
public void smeltItem()
|
||||||
{
|
{
|
||||||
if (this.canSmelt())
|
if (canSmelt())
|
||||||
{
|
{
|
||||||
ItemStack itemstack = new ItemStack(getRandomMagicItem(), 1);
|
ItemStack itemstack = new ItemStack(getRandomMagicItem(), 1);
|
||||||
|
|
||||||
if (this.machineItemStacks[2] == null)
|
if (machineItemStacks[2] == null)
|
||||||
{
|
{
|
||||||
this.machineItemStacks[2] = itemstack.copy();
|
machineItemStacks[2] = itemstack.copy();
|
||||||
}
|
}
|
||||||
|
|
||||||
--this.machineItemStacks[0].stackSize;
|
--machineItemStacks[0].stackSize;
|
||||||
|
|
||||||
if (this.machineItemStacks[0].stackSize <= 0)
|
if (machineItemStacks[0].stackSize <= 0)
|
||||||
{
|
{
|
||||||
this.machineItemStacks[0] = null;
|
machineItemStacks[0] = null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns the number of ticks that the supplied fuel item will keep the furnace burning, or 0 if the item isn't
|
|
||||||
* fuel
|
|
||||||
*/
|
|
||||||
public static int getItemBurnTime(ItemStack par1ItemStack)
|
public static int getItemBurnTime(ItemStack par1ItemStack)
|
||||||
{
|
{
|
||||||
if (par1ItemStack == null)
|
if (par1ItemStack == null)
|
||||||
|
@ -333,22 +141,54 @@ public class TileEntityTheoreticalElementizer extends TileEntity implements IInv
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
public void readFromNBT(NBTTagCompound par1NBTTagCompound)
|
||||||
* Return true if item is a fuel source (getItemBurnTime() > 0).
|
{
|
||||||
*/
|
super.readFromNBT(par1NBTTagCompound);
|
||||||
|
NBTTagList var2 = par1NBTTagCompound.getTagList("Items");
|
||||||
|
machineItemStacks = new ItemStack[getSizeInventory()];
|
||||||
|
|
||||||
|
for (int var3 = 0; var3 < var2.tagCount(); ++var3)
|
||||||
|
{
|
||||||
|
NBTTagCompound var4 = (NBTTagCompound)var2.tagAt(var3);
|
||||||
|
byte var5 = var4.getByte("Slot");
|
||||||
|
|
||||||
|
if (var5 >= 0 && var5 < machineItemStacks.length)
|
||||||
|
{
|
||||||
|
machineItemStacks[var5] = ItemStack.loadItemStackFromNBT(var4);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
machineBurnTime = par1NBTTagCompound.getShort("BurnTime");
|
||||||
|
machineCookTime = par1NBTTagCompound.getShort("CookTime");
|
||||||
|
currentItemBurnTime = getItemBurnTime(machineItemStacks[1]);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void writeToNBT(NBTTagCompound par1NBTTagCompound)
|
||||||
|
{
|
||||||
|
super.writeToNBT(par1NBTTagCompound);
|
||||||
|
par1NBTTagCompound.setShort("BurnTime", (short)machineBurnTime);
|
||||||
|
par1NBTTagCompound.setShort("CookTime", (short)machineCookTime);
|
||||||
|
NBTTagList var2 = new NBTTagList();
|
||||||
|
|
||||||
|
for (int var3 = 0; var3 < machineItemStacks.length; ++var3)
|
||||||
|
{
|
||||||
|
if (machineItemStacks[var3] != null)
|
||||||
|
{
|
||||||
|
NBTTagCompound var4 = new NBTTagCompound();
|
||||||
|
var4.setByte("Slot", (byte)var3);
|
||||||
|
machineItemStacks[var3].writeToNBT(var4);
|
||||||
|
var2.appendTag(var4);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
par1NBTTagCompound.setTag("Items", var2);
|
||||||
|
}
|
||||||
|
|
||||||
public static boolean isItemFuel(ItemStack par0ItemStack)
|
public static boolean isItemFuel(ItemStack par0ItemStack)
|
||||||
{
|
{
|
||||||
return getItemBurnTime(par0ItemStack) > 0;
|
return getItemBurnTime(par0ItemStack) > 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Do not make give this method the name canInteractWith because it clashes with Container
|
|
||||||
*/
|
|
||||||
public boolean isUseableByPlayer(EntityPlayer par1EntityPlayer)
|
|
||||||
{
|
|
||||||
return this.worldObj.getBlockTileEntity(this.xCoord, this.yCoord, this.zCoord) != this ? false : par1EntityPlayer.getDistanceSq((double)this.xCoord + 0.5D, (double)this.yCoord + 0.5D, (double)this.zCoord + 0.5D) <= 64.0D;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Item getRandomMagicItem()
|
public Item getRandomMagicItem()
|
||||||
{
|
{
|
||||||
Random rand = new Random();
|
Random rand = new Random();
|
||||||
|
@ -358,22 +198,4 @@ public class TileEntityTheoreticalElementizer extends TileEntity implements IInv
|
||||||
if(random == 2) return ObsidianIngots.WeatherOrb;
|
if(random == 2) return ObsidianIngots.WeatherOrb;
|
||||||
return ObsidianIngots.EnrichedAlloy;
|
return ObsidianIngots.EnrichedAlloy;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void openChest() {}
|
|
||||||
|
|
||||||
public void closeChest() {}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public int getStartInventorySide(ForgeDirection side)
|
|
||||||
{
|
|
||||||
if (side == ForgeDirection.DOWN) return 1;
|
|
||||||
if (side == ForgeDirection.UP) return 0;
|
|
||||||
return 2;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public int getSizeInventorySide(ForgeDirection side)
|
|
||||||
{
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -6,6 +6,7 @@ import java.io.FileOutputStream;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.util.Properties;
|
import java.util.Properties;
|
||||||
|
|
||||||
|
import cpw.mods.fml.client.FMLClientHandler;
|
||||||
import cpw.mods.fml.client.registry.ISimpleBlockRenderingHandler;
|
import cpw.mods.fml.client.registry.ISimpleBlockRenderingHandler;
|
||||||
import cpw.mods.fml.client.registry.RenderingRegistry;
|
import cpw.mods.fml.client.registry.RenderingRegistry;
|
||||||
import cpw.mods.fml.common.Side;
|
import cpw.mods.fml.common.Side;
|
||||||
|
@ -40,6 +41,12 @@ import net.uberkat.obsidian.common.TileEntityTheoreticalElementizer;
|
||||||
*/
|
*/
|
||||||
public class ClientProxy extends CommonProxy
|
public class ClientProxy extends CommonProxy
|
||||||
{
|
{
|
||||||
|
@Override
|
||||||
|
public int getArmorIndex(String string)
|
||||||
|
{
|
||||||
|
return RenderingRegistry.addNewArmourRendererPrefix(string);
|
||||||
|
}
|
||||||
|
|
||||||
public void registerRenderInformation()
|
public void registerRenderInformation()
|
||||||
{
|
{
|
||||||
System.out.println("[ObsidianIngots] Beginning render initiative...");
|
System.out.println("[ObsidianIngots] Beginning render initiative...");
|
||||||
|
|
Loading…
Reference in a new issue