Fixed shift + click battery with wrench

This commit is contained in:
Robert Seifert 2014-03-03 15:51:19 -05:00
parent fabbf289b0
commit da2bd6f54b

View file

@ -18,144 +18,132 @@ import universalelectricity.api.CompatibilityModule;
import universalelectricity.api.UniversalElectricity; import universalelectricity.api.UniversalElectricity;
import calclavia.lib.prefab.block.BlockSidedIO; import calclavia.lib.prefab.block.BlockSidedIO;
import calclavia.lib.render.block.BlockRenderingHandler; import calclavia.lib.render.block.BlockRenderingHandler;
import calclavia.lib.utility.inventory.InventoryUtility;
import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly; import cpw.mods.fml.relauncher.SideOnly;
/** /** A block that detects power.
* A block that detects power.
* *
* @author Calclavia * @author Calclavia */
*
*/
public class BlockBattery extends BlockSidedIO implements ITileEntityProvider public class BlockBattery extends BlockSidedIO implements ITileEntityProvider
{ {
public BlockBattery(int id) public BlockBattery(int id)
{ {
super(id, UniversalElectricity.machine); super(id, UniversalElectricity.machine);
setTextureName(Reference.PREFIX + "material_metal_side"); setTextureName(Reference.PREFIX + "material_metal_side");
} }
@Override @Override
public void onBlockAdded(World world, int x, int y, int z) public void onBlockAdded(World world, int x, int y, int z)
{ {
if (!world.isRemote) if (!world.isRemote)
{ {
TileEnergyDistribution distribution = (TileEnergyDistribution) world.getBlockTileEntity(x, y, z); TileEnergyDistribution distribution = (TileEnergyDistribution) world.getBlockTileEntity(x, y, z);
distribution.updateStructure(); distribution.updateStructure();
} }
} }
@Override @Override
public void onNeighborBlockChange(World world, int x, int y, int z, int id) public void onNeighborBlockChange(World world, int x, int y, int z, int id)
{ {
TileEntity tileEntity = world.getBlockTileEntity(x, y, z); TileEntity tileEntity = world.getBlockTileEntity(x, y, z);
if (!world.isRemote && tileEntity instanceof TileEnergyDistribution) if (!world.isRemote && tileEntity instanceof TileEnergyDistribution)
{ {
TileEnergyDistribution distribution = (TileEnergyDistribution) tileEntity; TileEnergyDistribution distribution = (TileEnergyDistribution) tileEntity;
distribution.updateStructure(); distribution.updateStructure();
} }
} }
@Override @Override
public void onBlockPlacedBy(World world, int x, int y, int z, EntityLivingBase entityliving, ItemStack itemStack) public void onBlockPlacedBy(World world, int x, int y, int z, EntityLivingBase entityliving, ItemStack itemStack)
{ {
if (!world.isRemote && itemStack.getItem() instanceof ItemBlockBattery) if (!world.isRemote && itemStack.getItem() instanceof ItemBlockBattery)
{ {
ItemBlockBattery itemBlock = (ItemBlockBattery) itemStack.getItem(); ItemBlockBattery itemBlock = (ItemBlockBattery) itemStack.getItem();
TileBattery battery = (TileBattery) world.getBlockTileEntity(x, y, z); TileBattery battery = (TileBattery) world.getBlockTileEntity(x, y, z);
battery.energy.setCapacity(TileBattery.getEnergyForTier(ItemBlockBattery.getTier(itemStack))); battery.energy.setCapacity(TileBattery.getEnergyForTier(ItemBlockBattery.getTier(itemStack)));
battery.energy.setEnergy(itemBlock.getEnergy(itemStack)); battery.energy.setEnergy(itemBlock.getEnergy(itemStack));
battery.updateStructure(); battery.updateStructure();
world.setBlockMetadataWithNotify(x, y, z, ItemBlockBattery.getTier(itemStack), 3); world.setBlockMetadataWithNotify(x, y, z, ItemBlockBattery.getTier(itemStack), 3);
} }
} }
@Override @Override
public boolean onSneakUseWrench(World world, int x, int y, int z, EntityPlayer entityPlayer, int side, float hitX, float hitY, float hitZ) public boolean onSneakUseWrench(World world, int x, int y, int z, EntityPlayer entityPlayer, int side, float hitX, float hitY, float hitZ)
{ {
if (!world.isRemote) if (!world.isRemote)
{ {
TileEntity tileEntity = world.getBlockTileEntity(x, y, z); InventoryUtility.dropBlockAsItem(world, x, y, z, true);
dropBlockAsItem(world, x, y, z, world.getBlockMetadata(x, y, z), 0); }
world.setBlock(x, y, z, 0); return true;
} }
return true; @Override
} public void breakBlock(World world, int x, int y, int z, int par5, int par6)
{
super.breakBlock(world, x, y, z, par5, par6);
}
/** @Override
* Temporarily "cheat" var for dropping with damage. public ArrayList<ItemStack> getBlockDropped(World world, int x, int y, int z, int metadata, int fortune)
*/ {
ItemStack dropStack = null; ArrayList<ItemStack> ret = new ArrayList<ItemStack>();
ItemStack itemStack = new ItemStack(this, 1);
@Override if (world.getBlockTileEntity(x, y, z) instanceof TileBattery)
public void breakBlock(World world, int x, int y, int z, int par5, int par6) {
{ TileBattery battery = (TileBattery) world.getBlockTileEntity(x, y, z);
ItemStack itemStack = new ItemStack(this, 1); ItemBlockBattery itemBlock = (ItemBlockBattery) itemStack.getItem();
ItemBlockBattery.setTier(itemStack, (byte) world.getBlockMetadata(x, y, z));
itemBlock.setEnergy(itemStack, battery.energy.getEnergy());
}
ret.add(itemStack);
return ret;
}
if (world.getBlockTileEntity(x, y, z) instanceof TileBattery) @Override
{ public boolean renderAsNormalBlock()
TileBattery battery = (TileBattery) world.getBlockTileEntity(x, y, z); {
ItemBlockBattery itemBlock = (ItemBlockBattery) itemStack.getItem(); return false;
ItemBlockBattery.setTier(itemStack, (byte) world.getBlockMetadata(x, y, z)); }
itemBlock.setEnergy(itemStack, battery.energy.getEnergy());
}
dropStack = itemStack; @Override
super.breakBlock(world, x, y, z, par5, par6); public boolean isOpaqueCube()
} {
return false;
}
@Override @Override
public ArrayList<ItemStack> getBlockDropped(World world, int x, int y, int z, int metadata, int fortune) @SideOnly(Side.CLIENT)
{ public int getRenderType()
ArrayList<ItemStack> ret = new ArrayList<ItemStack>(); {
ret.add(dropStack); return BlockRenderingHandler.INSTANCE.getRenderId();
return ret; }
}
@Override @Override
public boolean renderAsNormalBlock() public TileEntity createNewTileEntity(World world)
{ {
return false; return new TileBattery();
} }
@Override @Override
public boolean isOpaqueCube() public ItemStack getPickBlock(MovingObjectPosition target, World world, int x, int y, int z)
{ {
return false; int id = idPicked(world, x, y, z);
}
@Override if (id == 0)
@SideOnly(Side.CLIENT) {
public int getRenderType() return null;
{ }
return BlockRenderingHandler.INSTANCE.getRenderId();
}
@Override Item item = Item.itemsList[id];
public TileEntity createNewTileEntity(World world) if (item == null)
{ {
return new TileBattery(); return null;
} }
@Override TileBattery battery = (TileBattery) world.getBlockTileEntity(x, y, z);
public ItemStack getPickBlock(MovingObjectPosition target, World world, int x, int y, int z) return CompatibilityModule.getItemWithCharge(ItemBlockBattery.setTier(new ItemStack(id, 1, 0), (byte) world.getBlockMetadata(x, y, z)), battery.energy.getEnergy());
{ }
int id = idPicked(world, x, y, z);
if (id == 0)
{
return null;
}
Item item = Item.itemsList[id];
if (item == null)
{
return null;
}
TileBattery battery = (TileBattery) world.getBlockTileEntity(x, y, z);
return CompatibilityModule.getItemWithCharge(ItemBlockBattery.setTier(new ItemStack(id, 1, 0), (byte) world.getBlockMetadata(x, y, z)), battery.energy.getEnergy());
}
} }