Java tutorial
/* * This file is part of Matter Overdrive * Copyright (c) 2015., Simeon Radivoev, All rights reserved. * * Matter Overdrive is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * Matter Overdrive is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with Matter Overdrive. If not, see <http://www.gnu.org/licenses>. */ package matteroverdrive.guide.infograms; import matteroverdrive.Reference; import matteroverdrive.guide.GuideElementAbstract; import matteroverdrive.guide.MOGuideEntry; import matteroverdrive.util.RenderUtils; import net.minecraft.item.ItemStack; import net.minecraft.util.ResourceLocation; import org.lwjgl.opengl.GL11; import org.w3c.dom.Element; /** * Created by Simeon on 8/29/2015. */ public class InfogramDepth extends GuideElementAbstract { private static ResourceLocation terrain_background = new ResourceLocation( Reference.PATH_ELEMENTS + "guide_info_depth_terrain.png"); private static ResourceLocation terrain_background_stripes = new ResourceLocation( Reference.PATH_ELEMENTS + "guide_info_depth_terrain_stripes.png"); private static ResourceLocation ore_lense_background = new ResourceLocation( Reference.PATH_ELEMENTS + "guide_info_depth_ore_lense.png"); private ItemStack stack; private int minDepth = 0; private int maxDepth = 64; @Override public void drawElement(int width, int mouseX, int mouseY) { float minPercent = 1 - Math.min(minDepth, 64) / 64f; float maxPercent = 1 - Math.min(maxDepth, 64) / 64f; if (maxDepth >= 0) { getFontRenderer().drawString(Integer.toString(maxDepth) + "-", 8, 8 + (int) (46 * maxPercent), Reference.COLOR_HOLO_GREEN.getColor()); } if (minDepth > 0) { getFontRenderer().drawString(Integer.toString(minDepth) + "-", 8, 8 + (int) (46 * minPercent), Reference.COLOR_HOLO_GREEN.getColor()); } bindTexture(terrain_background); GL11.glColor3d(1, 1, 1); RenderUtils.drawPlane(marginLeft + 20.5, marginTop + 8, 0, 72.5, 53); RenderUtils.beginStencil(); RenderUtils.drawStencil(marginLeft + 24, marginTop + 8 + (int) (53 * maxPercent), 24 + 69, 8 + (int) (53 * minPercent), 1); bindTexture(terrain_background_stripes); GL11.glColor3d(1, 1, 1); RenderUtils.drawPlane(marginLeft + 24, marginTop + 8, 0, 69, 53); RenderUtils.endStencil(); bindTexture(ore_lense_background); GL11.glColor3d(1, 1, 1); RenderUtils.drawPlane(marginLeft + 69, marginTop + 16, 0, 84, 41); if (stack != null) { GL11.glPushMatrix(); GL11.glTranslated(marginLeft + 123, marginTop + 21, 0); GL11.glScaled(1.5, 1.5, 1.5); RenderUtils.renderStack(0, 0, stack); GL11.glPopMatrix(); } } @Override protected void loadContent(MOGuideEntry entry, Element element, int width, int height) { if (element.hasAttribute("min")) { minDepth = Integer.parseInt(element.getAttribute("min")); } if (element.hasAttribute("max")) { maxDepth = Integer.parseInt(element.getAttribute("max")); } if (element.hasAttribute("item")) { stack = shortCodeToStack(decodeShortcode(element.getAttribute("item"))); } else { if (entry.getStackIcons().length > 0) stack = entry.getStackIcons()[0]; } this.width = 100; this.height = 53 + 16; } }