package codechicken.enderstorage.storage.item; import java.util.List; import codechicken.enderstorage.EnderStorage; import codechicken.lib.render.SpriteSheetManager; import codechicken.lib.render.SpriteSheetManager.SpriteSheet; import codechicken.enderstorage.api.EnderStorageManager; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.client.renderer.texture.IIconRegister; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.IIcon; import net.minecraft.util.ResourceLocation; import net.minecraft.world.World; public class ItemEnderPouch extends Item { @SideOnly(Side.CLIENT) private SpriteSheet spriteSheet; public ItemEnderPouch() { setMaxStackSize(1); setHasSubtypes(true); setCreativeTab(CreativeTabs.tabDecorations); } @Override public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean extended) { if(stack.hasTagCompound() && !stack.getTagCompound().getString("owner").equals("global")) list.add(stack.getTagCompound().getString("owner")); } @Override public boolean onItemUseFirst(ItemStack stack, EntityPlayer player, World world, int x, int y, int z, int side, float hitX, float hitY, float hitZ) { if(world.isRemote) return false; TileEntity tile = world.getTileEntity(x, y, z); if(tile instanceof TileEnderChest && player.isSneaking()) { TileEnderChest chest = (TileEnderChest)tile; stack.setItemDamage(chest.freq); if(!stack.hasTagCompound()) stack.setTagCompound(new NBTTagCompound()); if (!EnderStorage.anarchyMode || chest.owner.equals(player.getCommandSenderName())) stack.getTagCompound().setString("owner", chest.owner); else stack.getTagCompound().setString("owner", "global"); return true; } return false; } @Override public ItemStack onItemRightClick(ItemStack item, World world, EntityPlayer player) { if(world.isRemote || player.isSneaking()) return item; ((EnderItemStorage) EnderStorageManager.instance(world.isRemote) .getStorage(getOwner(item), item.getItemDamage() & 0xFFF, "item")) .openSMPGui(player, item.getUnlocalizedName()+".name"); return item; } public String getOwner(ItemStack stack) { return stack.hasTagCompound() ? stack.getTagCompound().getString("owner") : "global"; } @Override public int getRenderPasses(int metadata) { return 4; } @Override public IIcon getIcon(ItemStack stack, int renderPass) { return spriteSheet.getSprite(getIconIndex(stack, renderPass)); } public int getIconIndex(ItemStack stack, int renderPass) { if(renderPass == 0) { int i = 0; if(((EnderItemStorage) EnderStorageManager.instance(true) .getStorage(getOwner(stack), stack.getItemDamage() & 0xFFF, "item")) .openCount() > 0) i|=1; if(!getOwner(stack).equals("global")) i|=2; return i; } return renderPass*16+EnderStorageManager.getColourFromFreq(stack.getItemDamage() & 0xFFF, renderPass-1); } public boolean requiresMultipleRenderPasses() { return true; } @Override public void registerIcons(IIconRegister register) { spriteSheet = SpriteSheetManager.getSheet(new ResourceLocation("enderstorage", "textures/enderpouch.png")); spriteSheet.requestIndicies(0, 1, 2, 3); for(int i = 16; i < 64; i++) spriteSheet.requestIndicies(i); spriteSheet.registerIcons(register); } }