diff --git a/src/main/java/resonantinduction/electrical/battery/BlockBattery.java b/src/main/java/resonantinduction/electrical/battery/BlockBattery.java index d3a773e7..846d3bf3 100644 --- a/src/main/java/resonantinduction/electrical/battery/BlockBattery.java +++ b/src/main/java/resonantinduction/electrical/battery/BlockBattery.java @@ -14,6 +14,7 @@ import resonantinduction.core.Reference; import resonantinduction.core.Settings; import resonantinduction.core.prefab.block.BlockIOBase; import resonantinduction.core.render.RIBlockRenderingHandler; +import resonantinduction.electrical.Electrical; import universalelectricity.api.CompatibilityModule; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @@ -32,6 +33,29 @@ public class BlockBattery extends BlockIOBase implements ITileEntityProvider this.setTextureName(Reference.PREFIX + "machine"); } + @Override + public void onBlockAdded(World world, int x, int y, int z) + { + if (!world.isRemote) + { + TileBattery battery = (TileBattery) world.getBlockTileEntity(x, y, z); + battery.updateStructure(); + } + } + + @Override + public void onBlockPlacedBy(World world, int x, int y, int z, EntityLivingBase entityliving, ItemStack itemstack) + { + if (!world.isRemote && itemstack.getItem() instanceof ItemBlockBattery) + { + ItemBlockBattery itemBlock = (ItemBlockBattery) itemstack.getItem(); + TileBattery battery = (TileBattery) world.getBlockTileEntity(x, y, z); + battery.energy.setCapacity(TileBattery.getEnergyForTier(itemBlock.getTier(itemstack))); + battery.energy.setEnergy(itemBlock.getEnergy(itemstack)); + battery.updateStructure(); + } + } + @Override public void onNeighborBlockChange(World world, int x, int y, int z, int id) { @@ -45,16 +69,6 @@ public class BlockBattery extends BlockIOBase implements ITileEntityProvider } } - @Override - public void onBlockPlacedBy(World world, int x, int y, int z, EntityLivingBase entityliving, ItemStack itemstack) - { - if (!world.isRemote) - { - TileBattery battery = (TileBattery) world.getBlockTileEntity(x, y, z); - battery.updateStructure(); - } - } - @Override public boolean renderAsNormalBlock() { diff --git a/src/main/java/resonantinduction/electrical/battery/ItemBlockBattery.java b/src/main/java/resonantinduction/electrical/battery/ItemBlockBattery.java index 66cc9365..5b82ac70 100644 --- a/src/main/java/resonantinduction/electrical/battery/ItemBlockBattery.java +++ b/src/main/java/resonantinduction/electrical/battery/ItemBlockBattery.java @@ -53,20 +53,6 @@ public class ItemBlockBattery extends ItemBlock implements IEnergyItem, IVoltage list.add(LanguageUtility.getLocal("tooltip.battery.energy").replace("%0", color).replace("%1", EnumColor.GREY.toString()).replace("%v0", UnitDisplay.getDisplayShort(joules, Unit.JOULES)).replace("%v1", UnitDisplay.getDisplayShort(this.getEnergyCapacity(itemStack), Unit.JOULES))); } - @Override - public boolean placeBlockAt(ItemStack stack, EntityPlayer player, World world, int x, int y, int z, int side, float hitX, float hitY, float hitZ, int metadata) - { - boolean place = super.placeBlockAt(stack, player, world, x, y, z, side, hitX, hitY, hitZ, getTier(stack)); - - if (place) - { - TileBattery tileEntity = (TileBattery) world.getBlockTileEntity(x, y, z); - tileEntity.setEnergy(null, this.getEnergy(stack)); - } - - return place; - } - /** * Makes sure the item is uncharged when it is crafted and not charged. Change this if you do * not want this to happen! diff --git a/src/main/java/resonantinduction/electrical/battery/RenderBattery.java b/src/main/java/resonantinduction/electrical/battery/RenderBattery.java index 6f29294d..ce56f3df 100644 --- a/src/main/java/resonantinduction/electrical/battery/RenderBattery.java +++ b/src/main/java/resonantinduction/electrical/battery/RenderBattery.java @@ -68,7 +68,8 @@ public class RenderBattery extends TileEntitySpecialRenderer { TileBattery tile = (TileBattery) t; - RenderUtility.bind(Reference.DOMAIN, Reference.MODEL_PATH + "battery/bat_level_" + (int) (((double) tile.energy.getEnergy() / (double) tile.energy.getEnergyCapacity()) * 10) + ".png"); + int energyLevel = (int) (((double) tile.energy.getEnergy() / (double) TileBattery.getEnergyForTier(tile.getBlockMetadata())) * 10); + RenderUtility.bind(Reference.DOMAIN, Reference.MODEL_PATH + "battery/bat_level_" + energyLevel + ".png"); MODEL.renderPart("Battery"); // Render top and bottom diff --git a/src/main/java/resonantinduction/electrical/battery/TileBattery.java b/src/main/java/resonantinduction/electrical/battery/TileBattery.java index 52029553..ffe17f1d 100644 --- a/src/main/java/resonantinduction/electrical/battery/TileBattery.java +++ b/src/main/java/resonantinduction/electrical/battery/TileBattery.java @@ -29,7 +29,7 @@ import com.google.common.io.ByteArrayDataInput; public class TileBattery extends TileElectrical implements IConnector, IVoltageInput, IVoltageOutput, IPacketSender, IPacketReceiver, IEnergyInterface, IEnergyContainer { /** The transfer rate **/ - public static final long DEFAULT_WATTAGE = getEnergyForTier(1); + public static final long DEFAULT_WATTAGE = getEnergyForTier(0); /** Voltage increases as series connection increases */ public static final long DEFAULT_VOLTAGE = UniversalElectricity.DEFAULT_VOLTAGE; @@ -40,7 +40,7 @@ public class TileBattery extends TileElectrical implements IConnector extends PacketType int y = data.readInt(); int z = data.readInt(); TileEntity tileEntity = player.worldObj.getBlockTileEntity(x, y, z); - + System.out.println(tileEntity+" rec: "+new Vector3(x,y,z)); + //TODO: Somehow this would receive the wrong coordinate once in a while... if (tileEntity != null && connectorClass.isAssignableFrom(tileEntity.getClass())) { C instance = (C) ((C) tileEntity).getInstance(ForgeDirection.getOrientation(data.readInt())); Object network = instance.getNetwork(); - + if (network instanceof IPacketReceiver) { ((IPacketReceiver) network).onReceivePacket(data, player, instance);