package ihl.explosion; import ic2.core.IC2; import ihl.IHLMod; import net.minecraft.block.Block; import net.minecraft.client.Minecraft; import net.minecraft.init.Blocks; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.network.NetworkManager; import net.minecraft.network.play.server.S35PacketUpdateTileEntity; import net.minecraft.tileentity.TileEntity; public class PileTileEntity extends TileEntity { public ItemStack content = new ItemStack(Blocks.sandstone); private boolean firstTick = true; @Override public boolean canUpdate() { return IC2.platform.isRendering(); } @Override public void updateEntity() { if(firstTick && this.content!=null) { if(this.worldObj.isRemote) { IHLMod.proxy.requestTileEntityInitdataFromClientToServer(xCoord, yCoord, zCoord); } else { checkAndFall(); } firstTick = false; } } public void setContent(ItemStack other) { this.content=other; } public boolean checkAndFall() { Block underblock = this.worldObj.getBlock(xCoord, yCoord-1, zCoord); if(underblock.isAir(worldObj, xCoord, yCoord-1, zCoord) || underblock==Blocks.air || underblock.getCollisionBoundingBoxFromPool(worldObj, xCoord, yCoord-1, zCoord)==null) { IHLEntityFallingPile fallingPile = new IHLEntityFallingPile(worldObj); fallingPile.setPosition(xCoord+0.5d, yCoord+0.5d, zCoord+0.5d); fallingPile.setEntityItemStack(content); this.worldObj.setBlockToAir(xCoord, yCoord, zCoord); this.worldObj.spawnEntityInWorld(fallingPile); return false; } return true; } @Override public void readFromNBT(NBTTagCompound nbttagcompound) { super.readFromNBT(nbttagcompound); this.content = ItemStack.loadItemStackFromNBT(nbttagcompound.getCompoundTag("content")); } @Override public void writeToNBT(NBTTagCompound nbttagcompound) { super.writeToNBT(nbttagcompound); NBTTagCompound contentNBT = new NBTTagCompound(); this.content.writeToNBT(contentNBT); nbttagcompound.setTag("content", contentNBT); } public void updateBlockRender() { Minecraft.getMinecraft().renderGlobal.markBlockForRenderUpdate(xCoord, yCoord, zCoord); } @Override public void onDataPacket(NetworkManager net, S35PacketUpdateTileEntity pkt) { this.readFromNBT(pkt.func_148857_g()); Minecraft.getMinecraft().renderGlobal.markBlockForRenderUpdate(xCoord, yCoord, zCoord); } }