efficient ui

This commit is contained in:
Leo Codes
2025-02-25 15:56:00 +01:00
parent c5b98a99ee
commit aeeb3dfa38
8 changed files with 54 additions and 121 deletions
@@ -4,9 +4,9 @@ import net.minecraft.client.gui.DrawContext;
import net.minecraft.text.Text;
import org.auraclient.auraclient.AuraClient;
import org.auraclient.auraclient.ui.AuraUi;
import org.auraclient.auraclient.ui.Box;
import org.auraclient.auraclient.ui.ImageButton;
import org.auraclient.auraclient.ui.AuraTexture;
import net.minecraft.util.Identifier;
import org.auraclient.auraclient.ui.AuraWidget;
public class CloakSelector extends AuraUi {
public CloakSelector() {
@@ -15,18 +15,18 @@ public class CloakSelector extends AuraUi {
@Override
public void ui(DrawContext context) {
int width = (32 * (AuraClient.list.size() + 1));
int x = (context.getScaledWindowWidth() - (width - 8)) / 2;
int y = (context.getScaledWindowHeight() - 92) / 2;
int x = (context.getScaledWindowWidth() - ((32 * AuraClient.list.size()) - 8)) / 2;
widgets.add(new Box(x - 8, y - 8, (40 * AuraClient.list.size() + 8), 108));
widgets.add(new AuraWidget(AuraTexture.BOX, x - 8, y - 8, width, 108));
for (int i = 0; i < AuraClient.list.size(); i++) {
String cloak = AuraClient.list.get(i);
ImageButton img = new ImageButton(Identifier.of("auraclient", "textures/gui/cloaks/"+cloak.replaceAll("\\.(gif|png)", "")+".prev.png"), x, y, 32, 92);
img.onClick = () -> {
widgets.add(new AuraWidget(Identifier.of("auraclient", "textures/gui/cloaks/"+cloak.replaceAll("\\.(gif|png)", "")+".prev.png"), x, y, 32, 92, () -> {
AuraClient.cape = cloak;
};
widgets.add(img);
}));
x += 40;
}
@@ -2,8 +2,10 @@ package org.auraclient.auraclient.menus;
import net.minecraft.client.gui.DrawContext;
import net.minecraft.text.Text;
import org.auraclient.auraclient.AuraClient;
import org.auraclient.auraclient.ui.AuraTexture;
import org.auraclient.auraclient.ui.AuraUi;
import org.auraclient.auraclient.ui.Button;
import org.auraclient.auraclient.ui.AuraWidget;
public class MainMenu extends AuraUi {
public MainMenu() {
@@ -12,8 +14,11 @@ public class MainMenu extends AuraUi {
@Override
public void ui(DrawContext context) {
widgets.add(new Button("Cloaks", (context.getScaledWindowWidth() - 50) / 2, (context.getScaledWindowHeight() - 20) / 2, 50, 20, () -> {
int x = (context.getScaledWindowWidth() - 30) / 2;
int y = (context.getScaledWindowHeight() - 14) / 2;
widgets.add(new AuraWidget(AuraTexture.BOX, x, y, 30, 14, () -> {
client.setScreen(new CloakSelector());
}));
}
}
}
@@ -0,0 +1,7 @@
package org.auraclient.auraclient.ui;
import net.minecraft.util.Identifier;
public class AuraTexture {
public static Identifier BOX = Identifier.of("auraclient", "textures/gui/box/box.png");
}
@@ -26,7 +26,7 @@ public abstract class AuraUi extends Screen {
for (AuraWidget widget : widgets) {
widget.client = client;
widget.render(context, isInside(mouseX, mouseY, widget.x1, widget.y1, widget.x2, widget.y2));
widget.render(context, isInside(mouseX, mouseY, widget.x, widget.y, widget.x + widget.width, widget.y + widget.height));
}
}
@@ -34,8 +34,8 @@ public abstract class AuraUi extends Screen {
public boolean mouseClicked(double mouseX, double mouseY, int button) {
if (button == 0) {
for (AuraWidget widget : widgets) {
if (isInside(mouseX, mouseY, widget.x1, widget.y1, widget.x2, widget.y2)) {
widget.mouseClicked();
if (isInside(mouseX, mouseY, widget.x, widget.y, widget.x + widget.width, widget.y + widget.height)) {
widget.onClick.run();
}
}
}
@@ -2,26 +2,39 @@ package org.auraclient.auraclient.ui;
import net.minecraft.client.MinecraftClient;
import net.minecraft.client.gui.DrawContext;
import net.minecraft.client.render.RenderLayer;
import net.minecraft.util.Identifier;
public abstract class AuraWidget {
public int x1;
public int y1;
public int x2;
public int y2;
public class AuraWidget {
public int x;
public int y;
public int width;
public int height;
public MinecraftClient client;
public Identifier sprite;
public Runnable onClick;
public int background = 0x5F000000;
public int foreground = 0xFFFFFFFF;
public AuraWidget(Identifier sprite, int x, int y, int width, int height) {
this.x = x;
this.y = y;
AuraWidget(int x, int y, int width, int height) {
x1 = x;
y1 = y;
x2 = x + width;
y2 = y + height;
this.width = width;
this.height = height;
this.sprite = sprite;
this.onClick = () -> {};
}
void render(DrawContext context, boolean hover) {}
public AuraWidget(Identifier sprite, int x, int y, int width, int height, Runnable onClick) {
this.x = x;
this.y = y;
void mouseClicked() {}
this.width = width;
this.height = height;
this.sprite = sprite;
this.onClick = onClick;
}
void render(DrawContext context, boolean hover) {
context.drawTexture(RenderLayer::getGuiTextured, sprite, x, y, 0, 0, width, height, width, height);
}
}
@@ -1,19 +0,0 @@
package org.auraclient.auraclient.ui;
import net.minecraft.client.gui.DrawContext;
import net.minecraft.client.render.RenderLayer;
import net.minecraft.util.Identifier;
public class Box extends AuraWidget {
public static Identifier BOX = Identifier.of("auraclient", "textures/gui/box/box.png");
public Box(int x, int y, int width, int height) {
super(x, y, width, height);
}
public void render(DrawContext context, boolean hover) {
int width = x2 - x1;
int height = y2 - y1;
context.drawTexture(RenderLayer::getGuiTextured, Box.BOX, x1, y1, 0, 0, width, height, width, height);
}
}
@@ -1,33 +0,0 @@
package org.auraclient.auraclient.ui;
import net.minecraft.client.gui.DrawContext;
import net.minecraft.client.render.RenderLayer;
import net.minecraft.util.Identifier;
public class Button extends AuraWidget {
public Runnable onClick;
public String text;
public int hoverBorder = 0xFFFFFFFF;
public Button(String button_text, int x, int y, int width, int height, Runnable on_click) {
super(x, y, width, height);
onClick = on_click;
text = button_text;
}
public void render(DrawContext context, boolean hover) {
int width = x2 - x1;
int height = y2 - y1;
context.drawTexture(RenderLayer::getGuiTextured, Box.BOX, x1, y1, 0, 0, width, height, width, height);
context.drawText(client.textRenderer, text, (((x2 - x1) - client.textRenderer.getWidth(text)) / 2) + x1, (((y2 - y1) - 6) / 2) + y1, foreground, false);
if (hover) {
context.drawBorder(x1 - 1, y1 - 1, x2 - x1 + 2, y2 - y1 + 2, hoverBorder);
}
}
public void mouseClicked() {
onClick.run();
}
}
@@ -1,40 +0,0 @@
package org.auraclient.auraclient.ui;
import net.minecraft.client.gui.DrawContext;
import net.minecraft.client.render.RenderLayer;
import net.minecraft.util.Identifier;
public class ImageButton extends AuraWidget {
private final Identifier sprite;
public int hoverBorder = 0xFFFFFFFF;
public Runnable onClick;
public ImageButton(Identifier sprite_, int x, int y, int width, int height) {
super(x, y, width, height);
this.sprite = sprite_;
this.onClick = () -> {};
}
public ImageButton(Identifier sprite_, int x, int y, int width, int height, int textureWidth, int textureHeight) {
super(x, y, width, height);
this.sprite = sprite_;
this.onClick = () -> {};
}
@Override
public void render(DrawContext context, boolean hover) {
int width = x2 - x1;
int height = y2 - y1;
context.drawTexture(RenderLayer::getGuiTextured, sprite, x1, y1, 0, 0, width, height, width, height);
if (hover) {
context.drawBorder(x1 - 1, y1 - 1, x2 - x1 + 2, y2 - y1 + 2, hoverBorder);
}
}
@Override
void mouseClicked() {
onClick.run();
}
}