/******************************************************************************* * 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; } }