package mods.eln.item; import mods.eln.generic.GenericItemUsingDamageDescriptor; import mods.eln.misc.Utils; import mods.eln.misc.UtilsClient; import mods.eln.wiki.Data; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.ResourceLocation; import net.minecraftforge.client.IItemRenderer; import org.lwjgl.opengl.GL11; import java.util.List; import static mods.eln.i18n.I18N.tr; public class BrushDescriptor extends GenericItemUsingDamageDescriptor { private final ResourceLocation icon; private static ResourceLocation dryOverlay = new ResourceLocation("eln", "textures/items/brushdryoverlay.png"); public BrushDescriptor(String name) { super(name); icon = new ResourceLocation("eln", "textures/items/" + name.toLowerCase().replace(" ", "") + ".png"); } @Override public String getName(ItemStack stack) { int color = getColor(stack), life = getLife(stack); if (color == 15 && life == 0) return "Empty " + super.getName(stack); return super.getName(stack); } @Override public void setParent(Item item, int damage) { super.setParent(item, damage); Data.addWiring(newItemStack()); } public int getColor(ItemStack stack) { return stack.getItemDamage() & 0xF; } public int getLife(ItemStack stack) { if (stack == null || stack.getTagCompound() == null) return 32; return stack.getTagCompound().getInteger("life"); } public void setColor(ItemStack stack, int color) { stack.setItemDamage((stack.getItemDamage() & ~0xF) | color); } public void setLife(ItemStack stack, int life) { stack.getTagCompound().setInteger("life", life); } @Override public NBTTagCompound getDefaultNBT() { NBTTagCompound nbt = new NBTTagCompound(); nbt.setInteger("life", 32); return nbt; } @Override public ItemStack newItemStack(int size) { return super.newItemStack(size); } @Override public void addInformation(ItemStack itemStack, EntityPlayer entityPlayer, List list, boolean par4) { super.addInformation(itemStack, entityPlayer, list, par4); if (itemStack != null) list.add(tr("Can paint %1$ blocks", itemStack.getTagCompound().getInteger("life"))); } public boolean use(ItemStack stack, EntityPlayer entityPlayer) { int life = stack.getTagCompound().getInteger("life"); if (life != 0) { --life; stack.getTagCompound().setInteger("life", life); return true; } else Utils.addChatMessage(entityPlayer, tr("Brush is dry")); return false; } @Override public boolean handleRenderType(ItemStack item, IItemRenderer.ItemRenderType type) { return type == IItemRenderer.ItemRenderType.INVENTORY; } @Override public boolean shouldUseRenderHelper(IItemRenderer.ItemRenderType type, ItemStack item, IItemRenderer.ItemRendererHelper helper) { return type != IItemRenderer.ItemRenderType.INVENTORY; } @Override public void renderItem(IItemRenderer.ItemRenderType type, ItemStack item, Object... data) { if (type == IItemRenderer.ItemRenderType.INVENTORY) { UtilsClient.drawIcon(type, icon); GL11.glColor4f(1, 1, 1, 0.75f - 0.75f * getLife(item) / 32f); UtilsClient.drawIcon(type, dryOverlay); GL11.glColor3f(1, 1, 1); } else { super.renderItem(type, item, data); } } }