// Path: src/main/java/com/panicnot42/warpbook/core/WarpColors.java
// public enum WarpColors {
// 	
// 	UNBOUND(0xC3C36A, 0xC3C36A),//The default tawny color of a warp page
// 	BOUND(0x098C76, 0x6CF4DC),//The color of an ender pearl
// 	//0x9F1CE5 The original ugly purple player page
// 	PLAYER(0x8e0000, 0xE13232),//Red color.. blood maybe?
// 	HYPER(0x09AA38, 0x53FF41),//Hyper Green
// 	DEATHLY(0x131313, 0x686868),//Near Black
// 	LEATHER(0x654b17, 0x654b17);//The color of vanilla books
// 	
// 	private int	color;
// 	private int specColor;
// 	
// 	WarpColors(int color, int specColor) {
// 		this.color = color;
// 		this.specColor = specColor;
// 	}
// 	
// 	public int getColor() {
// 		return color;
// 	}
// 	
// 	public int getSpecColor() {
// 		return specColor;
// 	}
// }
// 
// Path: src/main/java/com/panicnot42/warpbook/item/WarpItem.java
// public class WarpItem extends Item implements IDeclareWarp, IColorable {
// 	
// 	public static final String unbound = "§4§kUnbound";
// 	public static final String ttprefix = "§a";
// 	
// 	public Warp warp = new Warp();
// 	public boolean cloneable = false;;
// 	
// 	public WarpItem(String name) {
// 		setUnlocalizedName(name);
// 		setRegistryName(name);
// 	}
// 	
// 	public WarpItem setWarp(Warp warp) {
// 		this.warp = warp;
// 		return this;
// 	}
// 
// 	public WarpItem setCloneable(boolean is) {
// 		this.cloneable = is;
// 		return this;
// 	}
// 	
// 	@Override
// 	public String getName(World world, ItemStack stack) {
// 		return warp.getName(world, stack);
// 	}
// 	
// 	@Override
// 	public Waypoint getWaypoint(EntityPlayer player, ItemStack stack) {
// 		return warp.getWaypoint(player, stack);
// 	}
// 	
// 	@Override
// 	public boolean hasValidData(ItemStack stack) {
// 		return warp.hasValidData(stack);
// 	}
// 
// 	@Override
// 	@SideOnly(Side.CLIENT)
// 	public void addInformation(ItemStack stack, World world, List<String> tooltip, ITooltipFlag flagIn) {
// 		warp.addInformation(stack, world, tooltip, flagIn);
// 	}
// 	
// 	/** Can this be copied to a page? Either in the book cloner or via a copy recipe */
// 	public boolean isWarpCloneable(ItemStack stack) {
// 		return cloneable;
// 	}
// 
// 	public boolean canGoInBook() {
// 		return false;
// 	}
// 
// 	@Override
// 	@SideOnly(Side.CLIENT)
// 	public int getColor(ItemStack stack, int tintIndex) {
// 		return 0xFFFFFFFF;
// 	}
// 	
// 	@SideOnly(Side.CLIENT)
// 	public WarpColors getWarpColor() {
// 		return warp.getColor();
// 	}
// 	
// }


import com.panicnot42.warpbook.core.WarpColors;
import com.panicnot42.warpbook.item.WarpItem;
import net.minecraft.block.state.IBlockState;
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.math.BlockPos;
import net.minecraft.world.World;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;
		return tag;
	}
	
	private void read(NBTTagCompound tag) {
		warpItem = new ItemStack(tag.getCompoundTag("warpitem"));
	}
	
	private void write(NBTTagCompound tag) {
		if (!warpItem.isEmpty()) {
			NBTTagCompound pageTag = new NBTTagCompound();
			warpItem.writeToNBT(pageTag);
			tag.setTag("warpitem", pageTag);
		}
	}
	
	public ItemStack getWarpItem() {
		return warpItem;
	}
	
	public void setWarpItem(ItemStack stack) {
		warpItem = stack;
		markDirty();
	}
	
	@Override
	public boolean shouldRefresh(World w, BlockPos pos, IBlockState oldState, IBlockState newState) {
		return super.shouldRefresh(world, pos, oldState, newState);
	}
	
	@SideOnly(Side.CLIENT)
// Path: src/main/java/com/panicnot42/warpbook/core/WarpColors.java
// public enum WarpColors {
// 	
// 	UNBOUND(0xC3C36A, 0xC3C36A),//The default tawny color of a warp page
// 	BOUND(0x098C76, 0x6CF4DC),//The color of an ender pearl
// 	//0x9F1CE5 The original ugly purple player page
// 	PLAYER(0x8e0000, 0xE13232),//Red color.. blood maybe?
// 	HYPER(0x09AA38, 0x53FF41),//Hyper Green
// 	DEATHLY(0x131313, 0x686868),//Near Black
// 	LEATHER(0x654b17, 0x654b17);//The color of vanilla books
// 	
// 	private int	color;
// 	private int specColor;
// 	
// 	WarpColors(int color, int specColor) {
// 		this.color = color;
// 		this.specColor = specColor;
// 	}
// 	
// 	public int getColor() {
// 		return color;
// 	}
// 	
// 	public int getSpecColor() {
// 		return specColor;
// 	}
// }
// 
// Path: src/main/java/com/panicnot42/warpbook/item/WarpItem.java
// public class WarpItem extends Item implements IDeclareWarp, IColorable {
// 	
// 	public static final String unbound = "§4§kUnbound";
// 	public static final String ttprefix = "§a";
// 	
// 	public Warp warp = new Warp();
// 	public boolean cloneable = false;;
// 	
// 	public WarpItem(String name) {
// 		setUnlocalizedName(name);
// 		setRegistryName(name);
// 	}
// 	
// 	public WarpItem setWarp(Warp warp) {
// 		this.warp = warp;
// 		return this;
// 	}
// 
// 	public WarpItem setCloneable(boolean is) {
// 		this.cloneable = is;
// 		return this;
// 	}
// 	
// 	@Override
// 	public String getName(World world, ItemStack stack) {
// 		return warp.getName(world, stack);
// 	}
// 	
// 	@Override
// 	public Waypoint getWaypoint(EntityPlayer player, ItemStack stack) {
// 		return warp.getWaypoint(player, stack);
// 	}
// 	
// 	@Override
// 	public boolean hasValidData(ItemStack stack) {
// 		return warp.hasValidData(stack);
// 	}
// 
// 	@Override
// 	@SideOnly(Side.CLIENT)
// 	public void addInformation(ItemStack stack, World world, List<String> tooltip, ITooltipFlag flagIn) {
// 		warp.addInformation(stack, world, tooltip, flagIn);
// 	}
// 	
// 	/** Can this be copied to a page? Either in the book cloner or via a copy recipe */
// 	public boolean isWarpCloneable(ItemStack stack) {
// 		return cloneable;
// 	}
// 
// 	public boolean canGoInBook() {
// 		return false;
// 	}
// 
// 	@Override
// 	@SideOnly(Side.CLIENT)
// 	public int getColor(ItemStack stack, int tintIndex) {
// 		return 0xFFFFFFFF;
// 	}
// 	
// 	@SideOnly(Side.CLIENT)
// 	public WarpColors getWarpColor() {
// 		return warp.getColor();
// 	}
// 	
// }


// Path: src/main/java/com/panicnot42/warpbook/tileentity/TileEntityTeleporter.java
import com.panicnot42.warpbook.core.WarpColors;
import com.panicnot42.warpbook.item.WarpItem;
import net.minecraft.block.state.IBlockState;
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.math.BlockPos;
import net.minecraft.world.World;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;

		return tag;
	}
	
	private void read(NBTTagCompound tag) {
		warpItem = new ItemStack(tag.getCompoundTag("warpitem"));
	}
	
	private void write(NBTTagCompound tag) {
		if (!warpItem.isEmpty()) {
			NBTTagCompound pageTag = new NBTTagCompound();
			warpItem.writeToNBT(pageTag);
			tag.setTag("warpitem", pageTag);
		}
	}
	
	public ItemStack getWarpItem() {
		return warpItem;
	}
	
	public void setWarpItem(ItemStack stack) {
		warpItem = stack;
		markDirty();
	}
	
	@Override
	public boolean shouldRefresh(World w, BlockPos pos, IBlockState oldState, IBlockState newState) {
		return super.shouldRefresh(world, pos, oldState, newState);
	}
	
	@SideOnly(Side.CLIENT)
	public WarpColors getWarpColor() {