mirror of
https://github.com/Eaglercraft-Archive/EaglercraftX-1.8-workspace.git
synced 2026-06-22 17:58:18 +02:00
add files
This commit is contained in:
169
src/main/java/net/minecraft/client/gui/GuiButton.java
Executable file
169
src/main/java/net/minecraft/client/gui/GuiButton.java
Executable file
@@ -0,0 +1,169 @@
|
||||
package net.minecraft.client.gui;
|
||||
|
||||
import static net.lax1dude.eaglercraft.v1_8.opengl.RealOpenGLEnums.*;
|
||||
|
||||
import net.lax1dude.eaglercraft.v1_8.Mouse;
|
||||
import net.lax1dude.eaglercraft.v1_8.internal.EnumCursorType;
|
||||
import net.lax1dude.eaglercraft.v1_8.opengl.GlStateManager;
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.client.audio.PositionedSoundRecord;
|
||||
import net.minecraft.client.audio.SoundHandler;
|
||||
import net.minecraft.util.ResourceLocation;
|
||||
|
||||
/**+
|
||||
* This portion of EaglercraftX contains deobfuscated Minecraft 1.8 source code.
|
||||
*
|
||||
* Minecraft 1.8.8 bytecode is (c) 2015 Mojang AB. "Do not distribute!"
|
||||
* Mod Coder Pack v9.18 deobfuscation configs are (c) Copyright by the MCP Team
|
||||
*
|
||||
* EaglercraftX 1.8 patch files (c) 2022-2024 lax1dude, ayunami2000. All Rights Reserved.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
|
||||
* IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
|
||||
* INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
|
||||
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
||||
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
||||
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||||
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||
* POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
*/
|
||||
public class GuiButton extends Gui {
|
||||
protected static final ResourceLocation buttonTextures = new ResourceLocation("textures/gui/widgets.png");
|
||||
protected int width;
|
||||
protected int height;
|
||||
public int xPosition;
|
||||
public int yPosition;
|
||||
public String displayString;
|
||||
public int id;
|
||||
public boolean enabled;
|
||||
public boolean visible;
|
||||
protected boolean hovered;
|
||||
public float fontScale = 1.0f;
|
||||
|
||||
public GuiButton(int buttonId, int x, int y, String buttonText) {
|
||||
this(buttonId, x, y, 200, 20, buttonText);
|
||||
}
|
||||
|
||||
public GuiButton(int buttonId, int x, int y, int widthIn, int heightIn, String buttonText) {
|
||||
this.width = 200;
|
||||
this.height = 20;
|
||||
this.enabled = true;
|
||||
this.visible = true;
|
||||
this.id = buttonId;
|
||||
this.xPosition = x;
|
||||
this.yPosition = y;
|
||||
this.width = widthIn;
|
||||
this.height = heightIn;
|
||||
this.displayString = buttonText;
|
||||
}
|
||||
|
||||
/**+
|
||||
* Returns 0 if the button is disabled, 1 if the mouse is NOT
|
||||
* hovering over this button and 2 if it IS hovering over this
|
||||
* button.
|
||||
*/
|
||||
protected int getHoverState(boolean mouseOver) {
|
||||
byte b0 = 1;
|
||||
if (!this.enabled) {
|
||||
b0 = 0;
|
||||
} else if (mouseOver) {
|
||||
b0 = 2;
|
||||
}
|
||||
|
||||
return b0;
|
||||
}
|
||||
|
||||
/**+
|
||||
* Draws this button to the screen.
|
||||
*/
|
||||
public void drawButton(Minecraft mc, int mouseX, int mouseY) {
|
||||
if (this.visible) {
|
||||
FontRenderer fontrenderer = mc.fontRendererObj;
|
||||
mc.getTextureManager().bindTexture(buttonTextures);
|
||||
GlStateManager.color(1.0F, 1.0F, 1.0F, 1.0F);
|
||||
this.hovered = mouseX >= this.xPosition && mouseY >= this.yPosition && mouseX < this.xPosition + this.width
|
||||
&& mouseY < this.yPosition + this.height;
|
||||
if (this.enabled && this.hovered) {
|
||||
Mouse.showCursor(EnumCursorType.HAND);
|
||||
}
|
||||
int i = this.getHoverState(this.hovered);
|
||||
GlStateManager.enableBlend();
|
||||
GlStateManager.tryBlendFuncSeparate(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA, 1, 0);
|
||||
GlStateManager.blendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
|
||||
this.drawTexturedModalRect(this.xPosition, this.yPosition, 0, 46 + i * 20, this.width / 2, this.height);
|
||||
this.drawTexturedModalRect(this.xPosition + this.width / 2, this.yPosition, 200 - this.width / 2,
|
||||
46 + i * 20, this.width / 2, this.height);
|
||||
this.mouseDragged(mc, mouseX, mouseY);
|
||||
int j = 14737632;
|
||||
if (!this.enabled) {
|
||||
j = 10526880;
|
||||
} else if (this.hovered) {
|
||||
j = 16777120;
|
||||
}
|
||||
|
||||
if (fontScale == 1.0f) {
|
||||
this.drawCenteredString(fontrenderer, this.displayString, this.xPosition + this.width / 2,
|
||||
this.yPosition + (this.height - 8) / 2, j);
|
||||
} else {
|
||||
float xScale = fontScale;
|
||||
float yScale = 1.0f + (fontScale - 1.0f) * 0.7f;
|
||||
float strWidth = fontrenderer.getStringWidth(displayString) / xScale;
|
||||
GlStateManager.pushMatrix();
|
||||
GlStateManager.translate(this.xPosition + this.width / 2,
|
||||
this.yPosition + (this.height - 8 * yScale) / 2, 1.0f);
|
||||
GlStateManager.scale(xScale, yScale, 1.0f);
|
||||
GlStateManager.translate(-strWidth * 0.5f * xScale, 0.0f, 0.0f);
|
||||
fontrenderer.drawStringWithShadow(displayString, 0, 0, j);
|
||||
GlStateManager.popMatrix();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**+
|
||||
* Fired when the mouse button is dragged. Equivalent of
|
||||
* MouseListener.mouseDragged(MouseEvent e).
|
||||
*/
|
||||
protected void mouseDragged(Minecraft mc, int mouseX, int mouseY) {
|
||||
}
|
||||
|
||||
/**+
|
||||
* Fired when the mouse button is released. Equivalent of
|
||||
* MouseListener.mouseReleased(MouseEvent e).
|
||||
*/
|
||||
public void mouseReleased(int mouseX, int mouseY) {
|
||||
}
|
||||
|
||||
/**+
|
||||
* Returns true if the mouse has been pressed on this control.
|
||||
* Equivalent of MouseListener.mousePressed(MouseEvent e).
|
||||
*/
|
||||
public boolean mousePressed(Minecraft mc, int mouseX, int mouseY) {
|
||||
return this.enabled && this.visible && mouseX >= this.xPosition && mouseY >= this.yPosition
|
||||
&& mouseX < this.xPosition + this.width && mouseY < this.yPosition + this.height;
|
||||
}
|
||||
|
||||
/**+
|
||||
* Whether the mouse cursor is currently over the button.
|
||||
*/
|
||||
public boolean isMouseOver() {
|
||||
return this.hovered;
|
||||
}
|
||||
|
||||
public void drawButtonForegroundLayer(int mouseX, int mouseY) {
|
||||
}
|
||||
|
||||
public void playPressSound(SoundHandler soundHandlerIn) {
|
||||
soundHandlerIn.playSound(PositionedSoundRecord.create(new ResourceLocation("gui.button.press"), 1.0F));
|
||||
}
|
||||
|
||||
public int getButtonWidth() {
|
||||
return this.width;
|
||||
}
|
||||
|
||||
public void setWidth(int width) {
|
||||
this.width = width;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user