@Nonnull
@Override
public NBTTagCompound getNBTData(EntityPlayerMP player, TileEntity te, NBTTagCompound tag, World world, BlockPos pos) {
if (te != null && !INVENTORY_IGNORE.contains(tag.getString("id"))) {
tag.removeTag("Items");
if (te.hasCapability(CapabilityItemHandler.ITEM_HANDLER_CAPABILITY, null)) {
IItemHandler itemHandler = te.getCapability(CapabilityItemHandler.ITEM_HANDLER_CAPABILITY, null);
tag.setTag("handler", InventoryUtils.invToNBT(itemHandler, player.isSneaking() ? itemHandler.getSlots() : 5));
tag.setInteger("handlerSize", player.isSneaking() ? itemHandler.getSlots() : 5);
} else if (te instanceof IInventory) {
IItemHandler itemHandler = new InvWrapper((IInventory) te);
tag.setTag("handler", InventoryUtils.invToNBT(itemHandler, player.isSneaking() ? itemHandler.getSlots() : 5));
tag.setInteger("handlerSize", player.isSneaking() ? itemHandler.getSlots() : 5);
} else if (te instanceof TileEntityEnderChest) {
IItemHandler itemHandler = new InvWrapper(player.getInventoryEnderChest());
tag.setTag("handler", InventoryUtils.invToNBT(itemHandler, player.isSneaking() ? itemHandler.getSlots() : 5));
tag.setInteger("handlerSize", player.isSneaking() ? itemHandler.getSlots() : 5);
}
}
return tag;
}
}