/*******************************************************************************
* AbyssalCraft
* Copyright (c) 2012 - 2017 Shinoow.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the GNU Lesser Public License v3
* which accompanies this distribution, and is available at
* http://www.gnu.org/licenses/lgpl-3.0.txt
*
* Contributors:
* Shinoow - implementation
******************************************************************************/
package com.shinoow.abyssalcraft.common.blocks.tile;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.network.NetworkManager;
import net.minecraft.network.play.server.SPacketUpdateTileEntity;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.ITickable;
import com.shinoow.abyssalcraft.lib.util.blocks.IRitualPedestal;
public class TileEntityRitualPedestal extends TileEntity implements ITickable, IRitualPedestal {
private ItemStack item = ItemStack.EMPTY;
private int rot;
private boolean isDirty;
@Override
public void readFromNBT(NBTTagCompound nbttagcompound)
{
super.readFromNBT(nbttagcompound);
NBTTagCompound nbtItem = nbttagcompound.getCompoundTag("Item");
item = new ItemStack(nbtItem);
rot = nbttagcompound.getInteger("Rot");
}
@Override
public NBTTagCompound writeToNBT(NBTTagCompound nbttagcompound)
{
super.writeToNBT(nbttagcompound);
NBTTagCompound nbtItem = new NBTTagCompound();
if(!item.isEmpty())
item.writeToNBT(nbtItem);
nbttagcompound.setTag("Item", nbtItem);
nbttagcompound.setInteger("Rot", rot);
return nbttagcompound;
}
@Override
public SPacketUpdateTileEntity getUpdatePacket() {
return new SPacketUpdateTileEntity(pos, 1, getUpdateTag());
}
@Override
public NBTTagCompound getUpdateTag()
{
return writeToNBT(new NBTTagCompound());
}
@Override
public void onDataPacket(NetworkManager net, SPacketUpdateTileEntity packet)
{
readFromNBT(packet.getNbtCompound());
}
@Override
public void update()
{
if(isDirty){
world.notifyBlockUpdate(pos, world.getBlockState(pos), world.getBlockState(pos), 2);
isDirty = false;
}
if(rot == 360)
rot = 0;
if(!item.isEmpty())
rot++;
}
@Override
public int getRotation(){
return rot;
}
@Override
public ItemStack getItem(){
return item;
}
@Override
public void setItem(ItemStack item){
this.item = item;
isDirty = true;
}
}