package net.geforcemods.securitycraft.gui.components;
import org.lwjgl.opengl.GL11;
import org.lwjgl.opengl.GL12;
import net.minecraft.block.Block;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.FontRenderer;
import net.minecraft.client.gui.GuiButton;
import net.minecraft.client.renderer.OpenGlHelper;
import net.minecraft.client.renderer.RenderItem;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
public class GuiItemButton extends GuiButton{
private final RenderItem itemRenderer;
private Block blockToRender;
private Item itemToRender;
public GuiItemButton(int id, int xPos, int yPos, int width, int height, String displayString, RenderItem par7, ItemStack itemToRender) {
super(id, xPos, yPos, width, height, displayString);
this.itemRenderer = par7;
if(itemToRender != null && itemToRender.getItem().getUnlocalizedName().startsWith("tile.")){
this.blockToRender = Block.getBlockFromItem(itemToRender.getItem());
}else{
this.itemToRender = itemToRender.getItem();
}
}
/**
* Draws this button to the screen.
*/
@Override
public void drawButton(Minecraft par1, int par2, int par3)
{
if (this.visible)
{
FontRenderer var4 = par1.fontRendererObj;
par1.getTextureManager().bindTexture(BUTTON_TEXTURES);
GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
this.hovered = par2 >= this.xPosition && par3 >= this.yPosition && par2 < this.xPosition + this.width && par3 < this.yPosition + this.height;
int var5 = this.getHoverState(this.hovered);
GL11.glEnable(GL11.GL_BLEND);
OpenGlHelper.glBlendFunc(770, 771, 1, 0);
GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA);
this.drawTexturedModalRect(this.xPosition, this.yPosition, 0, 46 + var5 * 20, this.width / 2, this.height);
this.drawTexturedModalRect(this.xPosition + this.width / 2, this.yPosition, 200 - this.width / 2, 46 + var5 * 20, this.width / 2, this.height);
if(this.blockToRender != null){
GL11.glEnable(GL12.GL_RESCALE_NORMAL); //(this.width / 2) - 8
itemRenderer.renderItemAndEffectIntoGUI(new ItemStack(this.blockToRender), this.xPosition + 2, this.yPosition + 3);
itemRenderer.renderItemOverlayIntoGUI(par1.fontRendererObj, new ItemStack(this.blockToRender), this.xPosition + 2, this.yPosition + 3, "");
}else{
GL11.glEnable(GL12.GL_RESCALE_NORMAL);
itemRenderer.renderItemAndEffectIntoGUI(new ItemStack(this.itemToRender), this.xPosition + 2, this.yPosition + 2);
itemRenderer.renderItemOverlayIntoGUI(par1.fontRendererObj, new ItemStack(this.itemToRender), this.xPosition + 2, this.yPosition + 2, "");
GL11.glDisable(GL11.GL_LIGHTING);
}
this.mouseDragged(par1, par2, par3);
int var6 = 14737632;
if (!this.enabled)
{
var6 = 10526880;
}
else if (this.hovered)
{
var6 = 16777120;
}
this.drawCenteredString(var4, this.displayString, this.xPosition + this.width / 2, this.yPosition + (this.height - 8) / 2, var6);
}
}
public void setDisplayItem(ItemStack par1ItemStack){
this.blockToRender = null;
this.itemToRender = null;
if(par1ItemStack.getUnlocalizedName().startsWith("tile.")){
this.blockToRender = Block.getBlockFromItem(par1ItemStack.getItem());
}else{
this.itemToRender = par1ItemStack.getItem();
}
}
public Item getItemStack() {
return (blockToRender != null ? Item.getItemFromBlock(blockToRender) : itemToRender);
}
}