package net.minecraft.src;
import java.awt.Color;
import java.util.Collection;
import java.util.Iterator;
import java.util.List;
import java.util.Random;
import org.lwjgl.opengl.GL11;
import org.lwjgl.opengl.GL12;
import org.spoutcraft.api.Spoutcraft;
import org.spoutcraft.api.gui.InGameHUD;
import org.spoutcraft.api.material.MaterialData;
import org.spoutcraft.client.SpoutClient;
import org.spoutcraft.client.config.Configuration;
import org.spoutcraft.client.gui.minimap.ZanMinimap;
import org.spoutcraft.client.inventory.CraftItemStack;
public class GuiIngame extends Gui {
private static final ResourceLocation vignetteTexPath = new ResourceLocation("textures/misc/vignette.png");
private static final ResourceLocation widgetsTexPath = new ResourceLocation("textures/gui/widgets.png");
private static final ResourceLocation pumpkinBlurTexPath = new ResourceLocation("textures/misc/pumpkinblur.png");
private static final RenderItem itemRenderer = new RenderItem();
// Spout Start - private to public static final
public static final Random rand = new Random();
// Spout End
private final Minecraft mc;
/** ChatGUI instance that retains all previous chat data */
private final GuiNewChat persistantChatGUI;
private int updateCounter;
/** The string specifying which record music is playing */
private String recordPlaying = "";
/** How many ticks the record playing message will be displayed */
private int recordPlayingUpFor;
private boolean recordIsPlaying;
/** Previous frame vignette brightness (slowly changes by 1% each frame) */
public float prevVignetteBrightness = 1.0F;
/** Remaining ticks the item highlight should be visible */
private int remainingHighlightTicks;
/** The ItemStack that is currently being highlighted */
private ItemStack highlightingItemStack;
public GuiIngame(Minecraft par1Minecraft) {
this.mc = par1Minecraft;
this.persistantChatGUI = new GuiNewChat(par1Minecraft);
}
// Spout Start
private final ZanMinimap map = new ZanMinimap();
private static boolean needsUpdate = true;
public static void dirtySurvival() {
needsUpdate = true;
}
// Spout End
/**
* Render the ingame overlay with quick icon bar, ...
*/
// Spout Start - Most of function rewritten
// TODO: Rewrite again, it's in a horrible state, I'm surprised it works...
public void renderGameOverlay(float f, boolean flag, int i, int j) {
InGameHUD mainScreen = SpoutClient.getInstance().getActivePlayer().getMainScreen();
ScaledResolution scaledRes = new ScaledResolution(this.mc.gameSettings, this.mc.displayWidth, this.mc.displayHeight);
int screenWidth = scaledRes.getScaledWidth();
int screenHeight = scaledRes.getScaledHeight();
FontRenderer font = this.mc.fontRenderer;
this.mc.entityRenderer.setupOverlayRendering();
GL11.glEnable(GL11.GL_BLEND);
if (Minecraft.isFancyGraphicsEnabled()) {
this.renderVignette(this.mc.thePlayer.getBrightness(f), screenWidth, screenHeight);
} else {
GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA);
}
ItemStack helmet = this.mc.thePlayer.inventory.armorItemInSlot(3);
if (this.mc.gameSettings.thirdPersonView == 0 && helmet != null && helmet.itemID == Block.pumpkin.blockID) {
this.renderPumpkinBlur(screenWidth, screenHeight);
}
if (!this.mc.thePlayer.isPotionActive(Potion.confusion)) {
float var10 = this.mc.thePlayer.prevTimeInPortal + (this.mc.thePlayer.timeInPortal - this.mc.thePlayer.prevTimeInPortal) * f;
if (var10 > 0.0F) {
this.func_130015_b(var10, screenWidth, screenHeight); //renderPortalOverlay
}
}
GL11.glBlendFunc(770, 771);
GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
this.mc.getTextureManager().bindTexture(widgetsTexPath);
InventoryPlayer var11 = this.mc.thePlayer.inventory;
this.zLevel = -90.0F;
this.drawTexturedModalRect(screenWidth / 2 - 91, screenHeight - 22, 0, 0, 182, 22);
this.drawTexturedModalRect(screenWidth / 2 - 91 - 1 + var11.currentItem * 20, screenHeight - 22 - 1, 0, 22, 24, 22);
this.mc.getTextureManager().bindTexture(icons);
GL11.glEnable(3042 /* GL_BLEND */);
GL11.glBlendFunc(775, 769);
this.drawTexturedModalRect(screenWidth / 2 - 7, screenHeight / 2 - 7, 0, 0, 16, 16);
GL11.glDisable(3042 /* GL_BLEND */);
GuiIngame.rand.setSeed((long) (this.updateCounter * 312871));
int var15;
int var17;
this.renderBossHealth();
// Toggle visibility if needed
if (needsUpdate && mainScreen.getHealthBar().isVisible() == mc.playerController.isInCreativeMode()) {
mainScreen.toggleSurvivalHUD(!mc.playerController.isInCreativeMode());
}
needsUpdate = false;
// Hunger Bar Begin
mainScreen.getHungerBar().render();
// Hunger Bar End
// Armor Bar Begin
mainScreen.getArmorBar().render();
// Armor Bar End
// Health Bar Begin
mainScreen.getHealthBar().render();
// Health Bar End
// Bubble Bar Begin
mainScreen.getBubbleBar().render();
// Bubble Bar End
// Exp Bar Begin
mainScreen.getExpBar().render();
// Exp Bar End
map.onRenderTick();
GL11.glDisable(GL11.GL_BLEND);
this.mc.mcProfiler.startSection("actionBar");
GL11.glEnable(GL12.GL_RESCALE_NORMAL);
RenderHelper.enableGUIStandardItemLighting();
for (var15 = 0; var15 < 9; ++var15) {
int x = screenWidth / 2 - 90 + var15 * 20 + 2;
var17 = screenHeight - 16 - 3;
this.renderInventorySlot(var15, x, var17, f);
}
RenderHelper.disableStandardItemLighting();
GL11.glDisable(GL12.GL_RESCALE_NORMAL);
this.mc.mcProfiler.endSection();
if (this.mc.thePlayer.getSleepTimer() > 0) {
GL11.glDisable(2929 /*GL_DEPTH_TEST*/);
GL11.glDisable(3008 /*GL_ALPHA_TEST*/);
var15 = this.mc.thePlayer.getSleepTimer();
float var26 = (float)var15 / 100.0F;
if (var26 > 1.0F) {
var26 = 1.0F - (float)(var15 - 100) / 10.0F;
}
var17 = (int)(220.0F * var26) << 24 | 1052704;
this.drawRect(0, 0, screenWidth, screenHeight, var17);
GL11.glEnable(3008 /*GL_ALPHA_TEST*/);
GL11.glEnable(2929 /*GL_DEPTH_TEST*/);
}
mainScreen.render();
int var111;
var111 = screenWidth / 2 - 91;
int var12;
int var13;
int var14;
int var115;
int var117;
int var16;
float var33;
float var313;
short var317;
//ToDo: this will need TLC
if (this.mc.thePlayer.isRidingHorse()) {
this.mc.mcProfiler.startSection("jumpBar");
this.mc.getTextureManager().bindTexture(Gui.icons);
var313 = this.mc.thePlayer.getHorseJumpPower();
var317 = 182;
var14 = (int)(var313 * (float)(var317 + 1));
var115 = screenHeight - 32 + 3;
this.drawTexturedModalRect(var111, var115, 0, 84, var317, 5);
if (var14 > 0) {
this.drawTexturedModalRect(var111, var115, 0, 89, var14, 5);
}
this.mc.mcProfiler.endSection();
} else if (this.mc.playerController.func_78763_f()) {
// Spout -> Removed, we have our own.
/*
this.mc.mcProfiler.startSection("expBar");
this.mc.getTextureManager().bindTexture(Gui.icons);
var12 = this.mc.thePlayer.xpBarCap();
if (var12 > 0) {
var317 = 182;
var14 = (int)(this.mc.thePlayer.experience * (float)(var317 + 1));
var115 = screenHeight - 32 + 3;
this.drawTexturedModalRect(var111, var115, 0, 64, var317, 5);
if (var14 > 0) {
this.drawTexturedModalRect(var111, var115, 0, 69, var14, 5);
}
}
this.mc.mcProfiler.endSection();
// Spout Start -> We have our own
if (this.mc.thePlayer.experienceLevel > 0) {
this.mc.mcProfiler.startSection("expLevel");
boolean var35 = false;
var14 = var35 ? 16777215 : 8453920;
String var42 = "" + this.mc.thePlayer.experienceLevel;
var16 = (screenWidth- font.getStringWidth(var42)) / 2;
var117 = screenHeight - 31 - 4;
boolean var18 = false;
font.drawString(var42, var16 + 1, var117, 0);
font.drawString(var42, var16 - 1, var117, 0);
font.drawString(var42, var16, var117 + 1, 0);
font.drawString(var42, var16, var117 - 1, 0);
font.drawString(var42, var16, var117, var14);
this.mc.mcProfiler.endSection();
}
*/
}
if (this.mc.gameSettings.showDebugInfo) {
this.mc.mcProfiler.startSection("debug");
GL11.glPushMatrix();
if (Configuration.getFastDebug() != 2) {
font.drawStringWithShadow("Spoutcraft 1.6.4 (" + this.mc.debug + ")", 2, 2, 16777215);
font.drawStringWithShadow(this.mc.debugInfoRenders(), 2, 12, 16777215);
font.drawStringWithShadow(this.mc.getEntityDebug(), 2, 22, 16777215);
font.drawStringWithShadow(this.mc.debugInfoEntities(), 2, 32, 16777215);
font.drawStringWithShadow(this.mc.getWorldProviderName(), 2, 42, 16777215);
long var41 = Runtime.getRuntime().maxMemory();
long var34 = Runtime.getRuntime().totalMemory();
long var42 = Runtime.getRuntime().freeMemory();
long var43 = var34 - var42;
String var45 = "Used memory: " + var43 * 100L / var41 + "% (" + var43 / 1024L / 1024L + "MB) of " + var41 / 1024L / 1024L + "MB";
this.drawString(font, var45, screenWidth - font.getStringWidth(var45) - 2, 2, 14737632);
var45 = "Allocated memory: " + var34 * 100L / var41 + "% (" + var34 / 1024L / 1024L + "MB)";
this.drawString(font, var45, screenWidth - font.getStringWidth(var45) - 2, 12, 14737632);
int var47 = MathHelper.floor_double(this.mc.thePlayer.posX);
int var22 = MathHelper.floor_double(this.mc.thePlayer.posY);
int var23 = MathHelper.floor_double(this.mc.thePlayer.posZ);
if(SpoutClient.getInstance().isCoordsCheat()) {
this.drawString(font, String.format("x: %.5f (%d) // c: %d (%d)", new Object[] {Double.valueOf(this.mc.thePlayer.posX), Integer.valueOf(var47), Integer.valueOf(var47 >> 4), Integer.valueOf(var47 & 15)}), 2, 64, 14737632);
this.drawString(font, String.format("y: %.3f (feet pos, %.3f eyes pos)", new Object[] {Double.valueOf(this.mc.thePlayer.boundingBox.minY), Double.valueOf(this.mc.thePlayer.posY)}), 2, 72, 14737632);
this.drawString(font, String.format("z: %.5f (%d) // c: %d (%d)", new Object[] {Double.valueOf(this.mc.thePlayer.posZ), Integer.valueOf(var23), Integer.valueOf(var23 >> 4), Integer.valueOf(var23 & 15)}), 2, 80, 14737632);
int var24 = MathHelper.floor_double((double)(this.mc.thePlayer.rotationYaw * 4.0F / 360.0F) + 0.5D) & 3;
this.drawString(font, "f: " + var24 + " (" + Direction.directions[var24] + ") / " + MathHelper.wrapAngleTo180_float(this.mc.thePlayer.rotationYaw), 2, 88, 14737632);
}
if (this.mc.theWorld != null && this.mc.theWorld.blockExists(var47, var22, var23)) {
Chunk var48 = this.mc.theWorld.getChunkFromBlockCoords(var47, var23);
this.drawString(font, "lc: " + (var48.getTopFilledSegment() + 15) + " b: " + var48.getBiomeGenForWorldCoords(var47 & 15, var23 & 15, this.mc.theWorld.getWorldChunkManager()).biomeName + " bl: " + var48.getSavedLightValue(EnumSkyBlock.Block, var47 & 15, var22, var23 & 15) + " sl: " + var48.getSavedLightValue(EnumSkyBlock.Sky, var47 & 15, var22, var23 & 15) + " rl: " + var48.getBlockLightValue(var47 & 15, var22, var23 & 15, 0), 2, 96, 14737632);
}
this.drawString(font, String.format("ws: %.3f, fs: %.3f, g: %b, fl: %d", new Object[] {Float.valueOf(this.mc.thePlayer.capabilities.getWalkSpeed()), Float.valueOf(this.mc.thePlayer.capabilities.getFlySpeed()), Boolean.valueOf(this.mc.thePlayer.onGround), Integer.valueOf(this.mc.theWorld.getHeightValue(var47, var23))}), 2, 104, 14737632);
} else {
font.drawStringWithShadow(Integer.toString(Minecraft.framesPerSecond), 4, 2, 0xFFE303);
}
this.mc.mcProfiler.endSection();
GL11.glPopMatrix();
if (this.recordPlayingUpFor > 0) {
this.mc.mcProfiler.startSection("overlayMessage");
var33 = (float)this.recordPlayingUpFor - f;
var12 = (int)(var33 * 256.0F / 20.0F);
if (var12 > 255) {
var12 = 255;
}
if (var12 > 0) {
GL11.glPushMatrix();
GL11.glTranslatef((float)(screenWidth / 2), (float)(screenHeight - 48), 0.0F);
GL11.glEnable(GL11.GL_BLEND);
GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA);
var13 = 16777215;
if (this.recordIsPlaying) {
var13 = Color.HSBtoRGB(var33 / 50.0F, 0.7F, 0.6F) & 16777215;
}
font.drawString(this.recordPlaying, -font.getStringWidth(this.recordPlaying) / 2, -4, var13 + (var12 << 24));
GL11.glDisable(GL11.GL_BLEND);
GL11.glPopMatrix();
}
this.mc.mcProfiler.endSection();
}
}
GL11.glEnable(GL11.GL_BLEND);
GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA);
GL11.glDisable(GL11.GL_ALPHA_TEST);
GL11.glPushMatrix();
int var38;
// Spout Start
float pHealth;
float ppHealth;
// Hotbar Text
if (Configuration.showHotbarText) {
String var35;
String custom = null;
pHealth = this.mc.thePlayer.getHealth();
ppHealth = this.mc.thePlayer.prevHealth;
String var34 = "" + this.mc.thePlayer.experienceLevel;
var38 = (screenWidth - font.getStringWidth(var34)) / 2;
this.mc.mcProfiler.startSection("toolHighlight");
if (this.remainingHighlightTicks > 0 && this.highlightingItemStack != null) {
if (this.highlightingItemStack.itemID == MaterialData.flint.getRawId()) {
custom = Spoutcraft.getMaterialManager().getToolTip(new CraftItemStack(this.highlightingItemStack));
}
if (custom != null) {
String[] split = custom.split("\n");
String newCustom = split[0];
var35 = newCustom;
} else {
var35 = this.highlightingItemStack.getDisplayName();
}
var12 = (screenWidth - font.getStringWidth(var35)) / 2;
var13 = screenHeight - 59;
if (!mainScreen.getHungerBar().isVisible() || !mainScreen.getHealthBar().isVisible()) {
var13 += 8;
}
if (!mainScreen.getArmorBar().isVisible()) {
var13 += 8;
}
if (!mainScreen.getExpBar().isVisible()) {
var13 += 6;
}
var38 = (int)((float)this.remainingHighlightTicks * 256.0F / 10.0F);
if (var38 > 255) {
var38 = 255;
}
if (var38 > 0) {
GL11.glPushMatrix();
GL11.glEnable(GL11.GL_BLEND);
GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA);
font.drawStringWithShadow(var35, var12, var13, 16777215 + (var38 << 24));
GL11.glDisable(GL11.GL_BLEND);
GL11.glPopMatrix();
}
}
this.mc.mcProfiler.endSection();
}
ScoreObjective var42 = this.mc.theWorld.getScoreboard().func_96539_a(1);
if (var42 != null) {
this.func_96136_a(var42, screenHeight, screenWidth, font);
}
GL11.glTranslatef(0.0F, (float)(screenHeight - 48), 0.0F);
this.mc.mcProfiler.startSection("chat");
this.persistantChatGUI.drawChat(this.updateCounter);
this.mc.mcProfiler.endSection();
GL11.glPopMatrix();
var42 = this.mc.theWorld.getScoreboard().func_96539_a(0);
if (this.mc.gameSettings.keyBindPlayerList.pressed && (!this.mc.isIntegratedServerRunning() || this.mc.thePlayer.sendQueue.playerInfoList.size() > 1)) {
this.mc.mcProfiler.startSection("playerList");
NetClientHandler var37 = this.mc.thePlayer.sendQueue;
List var39 = var37.playerInfoList;
var13 = var37.currentServerMaxPlayers;
int var40 = var13;
for (var38 = 1; var40 > 20; var40 = (var13 + var38 - 1) / var38) {
++var38;
}
var16 = 300 / var38;
if (var16 > 150) {
var16 = 150;
}
var117 = (screenWidth - var38 * var16) / 2;
byte var44 = 10;
drawRect(var117 - 1, var44 - 1, var117 + var16 * var38, var44 + 9 * var40, Integer.MIN_VALUE);
for (int var19 = 0; var19 < var13; ++var19) {
int var20 = var117 + var19 % var38 * var16;
int var47 = var44 + var19 / var38 * 9;
drawRect(var20, var47, var20 + var16 - 1, var47 + 8, 553648127);
GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
GL11.glEnable(GL11.GL_ALPHA_TEST);
if (var19 < var39.size()) {
GuiPlayerInfo var46 = (GuiPlayerInfo)var39.get(var19);
ScorePlayerTeam var60 = this.mc.theWorld.getScoreboard().getPlayersTeam(var46.name);
String var53 = ScorePlayerTeam.formatPlayerName(var60, var46.name);
font.drawStringWithShadow(var53, var20, var47, 16777215);
GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); // TODO: might not need this.
if (var42 != null) {
int var51 = var20 + font.getStringWidth(var53) + 5;
int var50 = var20 + var16 - 12 - 5;
if (var50 - var51 > 5) {
Score var56 = var42.getScoreboard().func_96529_a(var46.name, var42);
String var57 = EnumChatFormatting.YELLOW + "" + var56.getScorePoints();
font.drawStringWithShadow(var57, var50 - font.getStringWidth(var57), var47, 16777215);
}
}
this.mc.getTextureManager().bindTexture(icons);
byte var50 = 0;
boolean var48 = false;
byte var49;
if (var46.responseTime < 0) {
var49 = 5;
} else if (var46.responseTime < 150) {
var49 = 0;
} else if (var46.responseTime < 300) {
var49 = 1;
} else if (var46.responseTime < 600) {
var49 = 2;
} else if (var46.responseTime < 1000) {
var49 = 3;
} else {
var49 = 4;
}
this.zLevel += 100.0F;
this.drawTexturedModalRect(var20 + var16 - 12, var47, 0 + var50 * 10, 176 + var49 * 8, 10, 8);
this.zLevel -= 100.0F;
}
}
}
GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
GL11.glDisable(GL11.GL_LIGHTING);
GL11.glEnable(GL11.GL_ALPHA_TEST);
}
private void func_96136_a(ScoreObjective par1ScoreObjective, int par2, int par3, FontRenderer par4FontRenderer) {
Scoreboard var5 = par1ScoreObjective.getScoreboard();
Collection var6 = var5.func_96534_i(par1ScoreObjective);
if (var6.size() <= 15) {
int var7 = par4FontRenderer.getStringWidth(par1ScoreObjective.getDisplayName());
String var11;
for (Iterator var8 = var6.iterator(); var8.hasNext(); var7 = Math.max(var7, par4FontRenderer.getStringWidth(var11))) {
Score var9 = (Score)var8.next();
ScorePlayerTeam var10 = var5.getPlayersTeam(var9.getPlayerName());
var11 = ScorePlayerTeam.formatPlayerName(var10, var9.getPlayerName()) + ": " + EnumChatFormatting.RED + var9.getScorePoints();
}
int var22 = var6.size() * par4FontRenderer.FONT_HEIGHT;
int var23 = par2 / 2 + var22 / 3;
byte var25 = 3;
int var24 = par3 - var7 - var25;
int var12 = 0;
Iterator var13 = var6.iterator();
while (var13.hasNext()) {
Score var14 = (Score)var13.next();
++var12;
ScorePlayerTeam var15 = var5.getPlayersTeam(var14.getPlayerName());
String var16 = ScorePlayerTeam.formatPlayerName(var15, var14.getPlayerName());
String var17 = EnumChatFormatting.RED + "" + var14.getScorePoints();
int var19 = var23 - var12 * par4FontRenderer.FONT_HEIGHT;
int var20 = par3 - var25 + 2;
drawRect(var24 - 2, var19, var20, var19 + par4FontRenderer.FONT_HEIGHT, 1342177280);
par4FontRenderer.drawString(var16, var24, var19, 553648127);
par4FontRenderer.drawString(var17, var20 - par4FontRenderer.getStringWidth(var17), var19, 553648127);
if (var12 == var6.size()) {
String var21 = par1ScoreObjective.getDisplayName();
drawRect(var24 - 2, var19 - par4FontRenderer.FONT_HEIGHT - 1, var20, var19 - 1, 1610612736);
drawRect(var24 - 2, var19 - 1, var20, var19, 1342177280);
par4FontRenderer.drawString(var21, var24 + var7 / 2 - par4FontRenderer.getStringWidth(var21) / 2, var19 - par4FontRenderer.FONT_HEIGHT, 553648127);
}
}
}
}
//ToDo: this is a duplicate method at the moment
private void func_110327_a(int par1, int par2) {
boolean var3 = this.mc.thePlayer.hurtResistantTime / 3 % 2 == 1;
if (this.mc.thePlayer.hurtResistantTime < 10) {
var3 = false;
}
int var4 = MathHelper.ceiling_float_int(this.mc.thePlayer.getHealth());
int var5 = MathHelper.ceiling_float_int(this.mc.thePlayer.prevHealth);
this.rand.setSeed((long)(this.updateCounter * 312871));
boolean var6 = false;
FoodStats var7 = this.mc.thePlayer.getFoodStats();
int var8 = var7.getFoodLevel();
int var9 = var7.getPrevFoodLevel();
AttributeInstance var10 = this.mc.thePlayer.getEntityAttribute(SharedMonsterAttributes.maxHealth);
int var11 = par1 / 2 - 91;
int var12 = par1 / 2 + 91;
int var13 = par2 - 39;
float var14 = (float)var10.getAttributeValue();
float var15 = this.mc.thePlayer.getAbsorptionAmount();
int var16 = MathHelper.ceiling_float_int((var14 + var15) / 2.0F / 10.0F);
int var17 = Math.max(10 - (var16 - 2), 3);
int var18 = var13 - (var16 - 1) * var17 - 10;
float var19 = var15;
int var20 = this.mc.thePlayer.getTotalArmorValue();
int var21 = -1;
if (this.mc.thePlayer.isPotionActive(Potion.regeneration)) {
var21 = this.updateCounter % MathHelper.ceiling_float_int(var14 + 5.0F);
}
this.mc.mcProfiler.startSection("armor");
int var23;
int var22;
for (var22 = 0; var22 < 10; ++var22) {
if (var20 > 0) {
var23 = var11 + var22 * 8;
if (var22 * 2 + 1 < var20) {
this.drawTexturedModalRect(var23, var18, 34, 9, 9, 9);
}
if (var22 * 2 + 1 == var20) {
this.drawTexturedModalRect(var23, var18, 25, 9, 9, 9);
}
if (var22 * 2 + 1 > var20) {
this.drawTexturedModalRect(var23, var18, 16, 9, 9, 9);
}
}
}
this.mc.mcProfiler.endStartSection("health");
int var25;
int var27;
int var26;
for (var22 = MathHelper.ceiling_float_int((var14 + var15) / 2.0F) - 1; var22 >= 0; --var22) {
var23 = 16;
if (this.mc.thePlayer.isPotionActive(Potion.poison)) {
var23 += 36;
} else if (this.mc.thePlayer.isPotionActive(Potion.wither)) {
var23 += 72;
}
byte var24 = 0;
if (var3) {
var24 = 1;
}
var25 = MathHelper.ceiling_float_int((float)(var22 + 1) / 10.0F) - 1;
var26 = var11 + var22 % 10 * 8;
var27 = var13 - var25 * var17;
if (var4 <= 4) {
var27 += this.rand.nextInt(2);
}
if (var22 == var21) {
var27 -= 2;
}
byte var28 = 0;
if (this.mc.theWorld.getWorldInfo().isHardcoreModeEnabled()) {
var28 = 5;
}
this.drawTexturedModalRect(var26, var27, 16 + var24 * 9, 9 * var28, 9, 9);
if (var3) {
if (var22 * 2 + 1 < var5) {
this.drawTexturedModalRect(var26, var27, var23 + 54, 9 * var28, 9, 9);
}
if (var22 * 2 + 1 == var5) {
this.drawTexturedModalRect(var26, var27, var23 + 63, 9 * var28, 9, 9);
}
}
if (var19 > 0.0F) {
if (var19 == var15 && var15 % 2.0F == 1.0F) {
this.drawTexturedModalRect(var26, var27, var23 + 153, 9 * var28, 9, 9);
} else {
this.drawTexturedModalRect(var26, var27, var23 + 144, 9 * var28, 9, 9);
}
var19 -= 2.0F;
} else {
if (var22 * 2 + 1 < var4) {
this.drawTexturedModalRect(var26, var27, var23 + 36, 9 * var28, 9, 9);
}
if (var22 * 2 + 1 == var4) {
this.drawTexturedModalRect(var26, var27, var23 + 45, 9 * var28, 9, 9);
}
}
}
Entity var34 = this.mc.thePlayer.ridingEntity;
int var35;
if (var34 == null) {
this.mc.mcProfiler.endStartSection("food");
for (var23 = 0; var23 < 10; ++var23) {
var35 = var13;
var25 = 16;
byte var36 = 0;
if (this.mc.thePlayer.isPotionActive(Potion.hunger)) {
var25 += 36;
var36 = 13;
}
if (this.mc.thePlayer.getFoodStats().getSaturationLevel() <= 0.0F && this.updateCounter % (var8 * 3 + 1) == 0) {
var35 = var13 + (this.rand.nextInt(3) - 1);
}
if (var6) {
var36 = 1;
}
var27 = var12 - var23 * 8 - 9;
this.drawTexturedModalRect(var27, var35, 16 + var36 * 9, 27, 9, 9);
if (var6) {
if (var23 * 2 + 1 < var9) {
this.drawTexturedModalRect(var27, var35, var25 + 54, 27, 9, 9);
}
if (var23 * 2 + 1 == var9) {
this.drawTexturedModalRect(var27, var35, var25 + 63, 27, 9, 9);
}
}
if (var23 * 2 + 1 < var8) {
this.drawTexturedModalRect(var27, var35, var25 + 36, 27, 9, 9);
}
if (var23 * 2 + 1 == var8) {
this.drawTexturedModalRect(var27, var35, var25 + 45, 27, 9, 9);
}
}
} else if (var34 instanceof EntityLivingBase) {
this.mc.mcProfiler.endStartSection("mountHealth");
EntityLivingBase var38 = (EntityLivingBase)var34;
var35 = (int)Math.ceil((double)var38.getHealth());
float var37 = var38.getMaxHealth();
var26 = (int)(var37 + 0.5F) / 2;
if (var26 > 30) {
var26 = 30;
}
var27 = var13;
for (int var39 = 0; var26 > 0; var39 += 20) {
int var29 = Math.min(var26, 10);
var26 -= var29;
for (int var30 = 0; var30 < var29; ++var30) {
byte var31 = 52;
byte var32 = 0;
if (var6) {
var32 = 1;
}
int var33 = var12 - var30 * 8 - 9;
this.drawTexturedModalRect(var33, var27, var31 + var32 * 9, 9, 9, 9);
if (var30 * 2 + 1 + var39 < var35) {
this.drawTexturedModalRect(var33, var27, var31 + 36, 9, 9, 9);
}
if (var30 * 2 + 1 + var39 == var35) {
this.drawTexturedModalRect(var33, var27, var31 + 45, 9, 9, 9);
}
}
var27 -= 10;
}
}
this.mc.mcProfiler.endStartSection("air");
if (this.mc.thePlayer.isInsideOfMaterial(Material.water)) {
var23 = this.mc.thePlayer.getAir();
var35 = MathHelper.ceiling_double_int((double)(var23 - 2) * 10.0D / 300.0D);
var25 = MathHelper.ceiling_double_int((double)var23 * 10.0D / 300.0D) - var35;
for (var26 = 0; var26 < var35 + var25; ++var26) {
if (var26 < var35) {
this.drawTexturedModalRect(var12 - var26 * 8 - 9, var18, 16, 18, 9, 9);
} else {
this.drawTexturedModalRect(var12 - var26 * 8 - 9, var18, 25, 18, 9, 9);
}
}
}
this.mc.mcProfiler.endSection();
}
/**
* Renders dragon's (boss) health on the HUD
*/
private void renderBossHealth() {
if (BossStatus.bossName != null && BossStatus.statusBarLength > 0) {
--BossStatus.statusBarLength;
FontRenderer var1 = this.mc.fontRenderer;
ScaledResolution var2 = new ScaledResolution(this.mc.gameSettings, this.mc.displayWidth, this.mc.displayHeight);
int var3 = var2.getScaledWidth();
short var4 = 182;
int var5 = var3 / 2 - var4 / 2;
int var6 = (int)(BossStatus.healthScale * (float)(var4 + 1));
byte var7 = 12;
this.drawTexturedModalRect(var5, var7, 0, 74, var4, 5);
this.drawTexturedModalRect(var5, var7, 0, 74, var4, 5);
if (var6 > 0) {
this.drawTexturedModalRect(var5, var7, 0, 79, var6, 5);
}
String var8 = BossStatus.bossName;
var1.drawStringWithShadow(var8, var3 / 2 - var1.getStringWidth(var8) / 2, var7 - 10, 16777215);
GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
this.mc.getTextureManager().bindTexture(icons);
}
}
private void renderPumpkinBlur(int par1, int par2) {
GL11.glDisable(GL11.GL_DEPTH_TEST);
GL11.glDepthMask(false);
GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA);
GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
GL11.glDisable(GL11.GL_ALPHA_TEST);
this.mc.getTextureManager().bindTexture(pumpkinBlurTexPath);
Tessellator var3 = Tessellator.instance;
var3.startDrawingQuads();
var3.addVertexWithUV(0.0D, (double)par2, -90.0D, 0.0D, 1.0D);
var3.addVertexWithUV((double)par1, (double)par2, -90.0D, 1.0D, 1.0D);
var3.addVertexWithUV((double)par1, 0.0D, -90.0D, 1.0D, 0.0D);
var3.addVertexWithUV(0.0D, 0.0D, -90.0D, 0.0D, 0.0D);
var3.draw();
GL11.glDepthMask(true);
GL11.glEnable(GL11.GL_DEPTH_TEST);
GL11.glEnable(GL11.GL_ALPHA_TEST);
GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
}
/**
* Renders the vignette. Args: vignetteBrightness, width, height
*/
private void renderVignette(float par1, int par2, int par3) {
par1 = 1.0F - par1;
if (par1 < 0.0F) {
par1 = 0.0F;
}
if (par1 > 1.0F) {
par1 = 1.0F;
}
this.prevVignetteBrightness = (float)((double)this.prevVignetteBrightness + (double)(par1 - this.prevVignetteBrightness) * 0.01D);
GL11.glDisable(GL11.GL_DEPTH_TEST);
GL11.glDepthMask(false);
GL11.glBlendFunc(GL11.GL_ZERO, GL11.GL_ONE_MINUS_SRC_COLOR);
GL11.glColor4f(this.prevVignetteBrightness, this.prevVignetteBrightness, this.prevVignetteBrightness, 1.0F);
this.mc.getTextureManager().bindTexture(vignetteTexPath);
Tessellator var4 = Tessellator.instance;
var4.startDrawingQuads();
var4.addVertexWithUV(0.0D, (double)par3, -90.0D, 0.0D, 1.0D);
var4.addVertexWithUV((double)par2, (double)par3, -90.0D, 1.0D, 1.0D);
var4.addVertexWithUV((double)par2, 0.0D, -90.0D, 1.0D, 0.0D);
var4.addVertexWithUV(0.0D, 0.0D, -90.0D, 0.0D, 0.0D);
var4.draw();
GL11.glDepthMask(true);
GL11.glEnable(GL11.GL_DEPTH_TEST);
GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA);
}
private void func_130015_b(float par1, int par2, int par3) {
if (par1 < 1.0F) {
par1 *= par1;
par1 *= par1;
par1 = par1 * 0.8F + 0.2F;
}
GL11.glDisable(GL11.GL_ALPHA_TEST);
GL11.glDisable(GL11.GL_DEPTH_TEST);
GL11.glDepthMask(false);
GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA);
GL11.glColor4f(1.0F, 1.0F, 1.0F, par1);
Icon var4 = Block.portal.getBlockTextureFromSide(1);
this.mc.getTextureManager().bindTexture(TextureMap.locationBlocksTexture);
float var5 = var4.getMinU();
float var6 = var4.getMinV();
float var7 = var4.getMaxU();
float var8 = var4.getMaxV();
Tessellator var9 = Tessellator.instance;
var9.startDrawingQuads();
var9.addVertexWithUV(0.0D, (double)par3, -90.0D, (double)var5, (double)var8);
var9.addVertexWithUV((double)par2, (double)par3, -90.0D, (double)var7, (double)var8);
var9.addVertexWithUV((double)par2, 0.0D, -90.0D, (double)var7, (double)var6);
var9.addVertexWithUV(0.0D, 0.0D, -90.0D, (double)var5, (double)var6);
var9.draw();
GL11.glDepthMask(true);
GL11.glEnable(GL11.GL_DEPTH_TEST);
GL11.glEnable(GL11.GL_ALPHA_TEST);
GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
}
/**
* Renders the specified item of the inventory slot at the specified location. Args: slot, x, y, partialTick
*/
private void renderInventorySlot(int par1, int par2, int par3, float par4) {
ItemStack var5 = this.mc.thePlayer.inventory.mainInventory[par1];
if (var5 != null) {
float var6 = (float)var5.animationsToGo - par4;
if (var6 > 0.0F) {
GL11.glPushMatrix();
float var7 = 1.0F + var6 / 5.0F;
GL11.glTranslatef((float)(par2 + 8), (float)(par3 + 12), 0.0F);
GL11.glScalef(1.0F / var7, (var7 + 1.0F) / 2.0F, 1.0F);
GL11.glTranslatef((float)(-(par2 + 8)), (float)(-(par3 + 12)), 0.0F);
}
itemRenderer.renderItemAndEffectIntoGUI(this.mc.fontRenderer, this.mc.getTextureManager(), var5, par2, par3);
if (var6 > 0.0F) {
GL11.glPopMatrix();
}
itemRenderer.renderItemOverlayIntoGUI(this.mc.fontRenderer, this.mc.getTextureManager(), var5, par2, par3);
}
}
/**
* The update tick for the ingame UI
*/
public void updateTick() {
if (this.recordPlayingUpFor > 0) {
--this.recordPlayingUpFor;
}
++this.updateCounter;
if (this.mc.thePlayer != null) {
ItemStack var1 = this.mc.thePlayer.inventory.getCurrentItem();
if (var1 == null) {
this.remainingHighlightTicks = 0;
} else if (this.highlightingItemStack != null && var1.itemID == this.highlightingItemStack.itemID && ItemStack.areItemStackTagsEqual(var1, this.highlightingItemStack) && (var1.isItemStackDamageable() || var1.getItemDamage() == this.highlightingItemStack.getItemDamage())) {
if (this.remainingHighlightTicks > 0) {
--this.remainingHighlightTicks;
}
} else {
this.remainingHighlightTicks = 40;
}
this.highlightingItemStack = var1;
}
}
public void setRecordPlayingMessage(String par1Str) {
this.func_110326_a("Now playing: " + par1Str, true);
}
public void func_110326_a(String par1Str, boolean par2) {
this.recordPlaying = par1Str;
this.recordPlayingUpFor = 60;
this.recordIsPlaying = par2;
}
/**
* returns a pointer to the persistant Chat GUI, containing all previous chat messages and such
*/
public GuiNewChat getChatGUI() {
return this.persistantChatGUI;
}
public int getUpdateCounter() {
return this.updateCounter;
}
}