// Path: src/com/jaquadro/minecraft/chameleon/block/tiledata/CustomNameData.java
// public class CustomNameData extends TileDataShim implements IWorldNameable
// {
//     private String defaultName;
//     private String customName;
// 
//     public CustomNameData (String defaultName) {
//         this.defaultName = defaultName;
//     }
// 
//     @Override
//     public void readFromNBT (NBTTagCompound tag) {
//         customName = null;
//         if (tag.hasKey("CustomName", Constants.NBT.TAG_STRING))
//             customName = tag.getString("CustomName");
//     }
// 
//     @Override
//     public NBTTagCompound writeToNBT (NBTTagCompound tag) {
//         if (hasCustomName())
//             tag.setString("CustomName", customName);
// 
//         return tag;
//     }
// 
//     @Override
//     public String getName () {
//         return hasCustomName() ? customName : defaultName;
//     }
// 
//     @Override
//     public boolean hasCustomName () {
//         return customName != null && customName.length() > 0;
//     }
// 
//     @Override
//     public ITextComponent getDisplayName () {
//         return hasCustomName() ? new TextComponentString(customName) : new TextComponentTranslation(defaultName);
//     }
// 
//     public void setName (String name) {
//         customName = name;
//     }
// }
// 
// Path: src/com/jaquadro/minecraft/chameleon/block/tiledata/TileDataShim.java
// public abstract class TileDataShim implements INBTSerializable<NBTTagCompound>
// {
//     public abstract void readFromNBT (NBTTagCompound tag);
// 
//     public abstract NBTTagCompound writeToNBT (NBTTagCompound tag);
// 
//     @Override
//     public NBTTagCompound serializeNBT () {
//         NBTTagCompound tag = new NBTTagCompound();
//         return writeToNBT(tag);
//     }
// 
//     @Override
//     public void deserializeNBT (NBTTagCompound nbt) {
//         readFromNBT(nbt);
//     }
// }


import com.jaquadro.minecraft.chameleon.block.tiledata.CustomNameData;
import com.jaquadro.minecraft.chameleon.block.tiledata.TileDataShim;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.inventory.IInventory;
import net.minecraft.inventory.InventoryBasic;
import net.minecraft.item.ItemStack;
import net.minecraft.util.text.ITextComponent;
import net.minecraft.world.IWorldNameable;
import javax.annotation.Nullable;
package com.jaquadro.minecraft.chameleon.block;



public class ChamInvTileEntity extends ChamTileEntity implements IInventory, IWorldNameable
{
    private static final InventoryBasic emptyInventory = new InventoryBasic("[null]", true, 0);

    private CustomNameData customNameData;

    @Override
// Path: src/com/jaquadro/minecraft/chameleon/block/tiledata/CustomNameData.java
// public class CustomNameData extends TileDataShim implements IWorldNameable
// {
//     private String defaultName;
//     private String customName;
// 
//     public CustomNameData (String defaultName) {
//         this.defaultName = defaultName;
//     }
// 
//     @Override
//     public void readFromNBT (NBTTagCompound tag) {
//         customName = null;
//         if (tag.hasKey("CustomName", Constants.NBT.TAG_STRING))
//             customName = tag.getString("CustomName");
//     }
// 
//     @Override
//     public NBTTagCompound writeToNBT (NBTTagCompound tag) {
//         if (hasCustomName())
//             tag.setString("CustomName", customName);
// 
//         return tag;
//     }
// 
//     @Override
//     public String getName () {
//         return hasCustomName() ? customName : defaultName;
//     }
// 
//     @Override
//     public boolean hasCustomName () {
//         return customName != null && customName.length() > 0;
//     }
// 
//     @Override
//     public ITextComponent getDisplayName () {
//         return hasCustomName() ? new TextComponentString(customName) : new TextComponentTranslation(defaultName);
//     }
// 
//     public void setName (String name) {
//         customName = name;
//     }
// }
// 
// Path: src/com/jaquadro/minecraft/chameleon/block/tiledata/TileDataShim.java
// public abstract class TileDataShim implements INBTSerializable<NBTTagCompound>
// {
//     public abstract void readFromNBT (NBTTagCompound tag);
// 
//     public abstract NBTTagCompound writeToNBT (NBTTagCompound tag);
// 
//     @Override
//     public NBTTagCompound serializeNBT () {
//         NBTTagCompound tag = new NBTTagCompound();
//         return writeToNBT(tag);
//     }
// 
//     @Override
//     public void deserializeNBT (NBTTagCompound nbt) {
//         readFromNBT(nbt);
//     }
// }


// Path: src/com/jaquadro/minecraft/chameleon/block/ChamInvTileEntity.java
import com.jaquadro.minecraft.chameleon.block.tiledata.CustomNameData;
import com.jaquadro.minecraft.chameleon.block.tiledata.TileDataShim;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.inventory.IInventory;
import net.minecraft.inventory.InventoryBasic;
import net.minecraft.item.ItemStack;
import net.minecraft.util.text.ITextComponent;
import net.minecraft.world.IWorldNameable;
import javax.annotation.Nullable;

package com.jaquadro.minecraft.chameleon.block;



public class ChamInvTileEntity extends ChamTileEntity implements IInventory, IWorldNameable
{
    private static final InventoryBasic emptyInventory = new InventoryBasic("[null]", true, 0);

    private CustomNameData customNameData;

    @Override
    public void injectData (TileDataShim shim) {