package net.minecraft.client.gui.achievement; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.Gui; import net.minecraft.client.gui.ScaledResolution; import net.minecraft.client.renderer.GlStateManager; import net.minecraft.client.renderer.RenderHelper; import net.minecraft.client.renderer.entity.RenderItem; import net.minecraft.client.resources.I18n; import net.minecraft.stats.Achievement; import net.minecraft.util.ResourceLocation; public class GuiAchievement extends Gui { private static final ResourceLocation achievementBg = new ResourceLocation("textures/gui/achievement/achievement_background.png"); private Minecraft mc; private int width; private int height; private String achievementTitle; private String achievementDescription; private Achievement theAchievement; private long notificationTime; private RenderItem renderItem; private boolean permanentNotification; private static final String __OBFID = "CL_00000721"; public GuiAchievement(Minecraft mc) { this.mc = mc; this.renderItem = mc.getRenderItem(); } public void displayAchievement(Achievement p_146256_1_) { this.achievementTitle = I18n.format("achievement.get", new Object[0]); this.achievementDescription = p_146256_1_.getStatName().getUnformattedText(); this.notificationTime = Minecraft.getSystemTime(); this.theAchievement = p_146256_1_; this.permanentNotification = false; } public void displayUnformattedAchievement(Achievement p_146255_1_) { this.achievementTitle = p_146255_1_.getStatName().getUnformattedText(); this.achievementDescription = p_146255_1_.getDescription(); this.notificationTime = Minecraft.getSystemTime() + 2500L; this.theAchievement = p_146255_1_; this.permanentNotification = true; } private void updateAchievementWindowScale() { GlStateManager.viewport(0, 0, this.mc.displayWidth, this.mc.displayHeight); GlStateManager.matrixMode(5889); GlStateManager.loadIdentity(); GlStateManager.matrixMode(5888); GlStateManager.loadIdentity(); this.width = this.mc.displayWidth; this.height = this.mc.displayHeight; ScaledResolution var1 = new ScaledResolution(this.mc, this.mc.displayWidth, this.mc.displayHeight); this.width = var1.getScaledWidth(); this.height = var1.getScaledHeight(); GlStateManager.clear(256); GlStateManager.matrixMode(5889); GlStateManager.loadIdentity(); GlStateManager.ortho(0.0D, (double)this.width, (double)this.height, 0.0D, 1000.0D, 3000.0D); GlStateManager.matrixMode(5888); GlStateManager.loadIdentity(); GlStateManager.translate(0.0F, 0.0F, -2000.0F); } public void updateAchievementWindow() { if (this.theAchievement != null && this.notificationTime != 0L && Minecraft.getMinecraft().thePlayer != null) { double var1 = (double)(Minecraft.getSystemTime() - this.notificationTime) / 3000.0D; if (!this.permanentNotification) { if (var1 < 0.0D || var1 > 1.0D) { this.notificationTime = 0L; return; } } else if (var1 > 0.5D) { var1 = 0.5D; } this.updateAchievementWindowScale(); GlStateManager.disableDepth(); GlStateManager.depthMask(false); double var3 = var1 * 2.0D; if (var3 > 1.0D) { var3 = 2.0D - var3; } var3 *= 4.0D; var3 = 1.0D - var3; if (var3 < 0.0D) { var3 = 0.0D; } var3 *= var3; var3 *= var3; int var5 = this.width - 160; int var6 = 0 - (int)(var3 * 36.0D); GlStateManager.color(1.0F, 1.0F, 1.0F, 1.0F); GlStateManager.func_179098_w(); this.mc.getTextureManager().bindTexture(achievementBg); GlStateManager.disableLighting(); this.drawTexturedModalRect(var5, var6, 96, 202, 160, 32); if (this.permanentNotification) { this.mc.fontRendererObj.drawSplitString(this.achievementDescription, var5 + 30, var6 + 7, 120, -1); } else { this.mc.fontRendererObj.drawString(this.achievementTitle, var5 + 30, var6 + 7, -256); this.mc.fontRendererObj.drawString(this.achievementDescription, var5 + 30, var6 + 18, -1); } RenderHelper.enableGUIStandardItemLighting(); GlStateManager.disableLighting(); GlStateManager.enableRescaleNormal(); GlStateManager.enableColorMaterial(); GlStateManager.enableLighting(); this.renderItem.func_180450_b(this.theAchievement.theItemStack, var5 + 8, var6 + 8); GlStateManager.disableLighting(); GlStateManager.depthMask(true); GlStateManager.enableDepth(); } } public void clearAchievements() { this.theAchievement = null; this.notificationTime = 0L; } }