package codechicken.core.gui; import net.minecraft.client.Minecraft; import net.minecraft.client.audio.PositionedSoundRecord; import net.minecraft.client.renderer.GlStateManager; import net.minecraft.util.ResourceLocation; public class GuiCCButton extends GuiWidget { public String text; public String actionCommand; private boolean isEnabled = true; public boolean visible = true; public GuiCCButton(int x, int y, int width, int height, String text) { super(x, y, width, height); this.text = text; } public void setText(String s) { text = s; } public boolean isEnabled() { return isEnabled; } public void setEnabled(boolean b) { isEnabled = b; } @Override public void mouseClicked(int x, int y, int button) { if (isEnabled && pointInside(x, y) && actionCommand != null) { sendAction(actionCommand, button); Minecraft.getMinecraft().getSoundHandler().playSound(PositionedSoundRecord.create(new ResourceLocation("gui.button.press"), 1.0F)); } } @Override public void draw(int mousex, int mousey, float frame) { if (!visible) { return; } drawButtonTex(mousex, mousey); if (text != null) { drawText(mousex, mousey); } } public void drawButtonTex(int mousex, int mousey) { GlStateManager.color(1, 1, 1, 1); renderEngine.bindTexture(guiTex); int state = getButtonTex(mousex, mousey); drawTexturedModalRect(x, y, 0, 46 + state * 20, width / 2, height / 2);//top left drawTexturedModalRect(x + width / 2, y, 200 - width / 2, 46 + state * 20, width / 2, height / 2);//top right drawTexturedModalRect(x, y + height / 2, 0, 46 + state * 20 + 20 - height / 2, width / 2, height / 2);//bottom left drawTexturedModalRect(x + width / 2, y + height / 2, 200 - width / 2, 46 + state * 20 + 20 - height / 2, width / 2, height / 2);//bottom right } public int getButtonTex(int mousex, int mousey) { return !isEnabled ? 0 : pointInside(mousex, mousey) ? 2 : 1; } public void drawText(int mousex, int mousey) { drawCenteredString(fontRenderer, text, x + width / 2, y + (height - 8) / 2, getTextColour(mousex, mousey)); } public int getTextColour(int mousex, int mousey) { return !isEnabled ? 0xFFA0A0A0 : pointInside(mousex, mousey) ? 0xFFFFFFA0 : 0xFFE0E0E0; } public GuiCCButton setActionCommand(String string) { actionCommand = string; return this; } }