package buildcraft.silicon.render;
import org.lwjgl.opengl.GL11;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.FontRenderer;
import net.minecraft.client.renderer.entity.RenderItem;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.util.ResourceLocation;
import buildcraft.core.lib.utils.NBTUtils;
public class PackageFontRenderer extends FontRenderer {
private static final RenderItem itemRender = new RenderItem();
private static final Minecraft mc = Minecraft.getMinecraft();
private static final FontRenderer realRenderer = mc.fontRenderer;
private final NBTTagCompound pkgTag;
public PackageFontRenderer(ItemStack packageStack) {
super(mc.gameSettings, new ResourceLocation("textures/font/ascii.png"), mc.getTextureManager(), mc.fontRenderer.getUnicodeFlag());
this.pkgTag = NBTUtils.getItemData(packageStack);
}
@Override
public int getStringWidth(String s) {
if (!s.contains("SPECIAL:")) {
return realRenderer.getStringWidth(s);
}
return 21;
}
@Override
public int drawString(String s, int x, int y, int color, boolean shadow) {
if (!s.contains("SPECIAL:")) {
return realRenderer.drawString(s, x, y, color, shadow);
}
int begin = Integer.parseInt(s.substring(s.length() - 1)) * 3;
int rx = x;
for (int slotPos = begin; slotPos < begin + 3; slotPos++) {
GL11.glPushMatrix();
if (pkgTag.hasKey("item" + slotPos)) {
ItemStack slotStack = ItemStack.loadItemStackFromNBT(pkgTag.getCompoundTag("item" + slotPos));
if (slotStack != null) {
GL11.glTranslatef(0.0F, 0.0F, 32.0F);
GL11.glScalef(0.5F, 0.5F, 0.5F);
FontRenderer font = slotStack.getItem().getFontRenderer(slotStack);
itemRender.zLevel = 200.0F;
if (font == null || font instanceof PackageFontRenderer) {
font = Minecraft.getMinecraft().fontRenderer;
}
itemRender.renderItemAndEffectIntoGUI(font, mc.getTextureManager(), slotStack, rx * 2, y * 2);
itemRender.renderItemOverlayIntoGUI(font, mc.getTextureManager(), slotStack, rx * 2, y * 2);
itemRender.zLevel = 0.0F;
} else {
realRenderer.drawString("X", rx, y, 0xFF0000);
}
}
rx += 7;
GL11.glPopMatrix();
}
return rx;
}
}