High resolution ui

This commit is contained in:
2025-03-31 13:36:45 +02:00
parent 5417e3e742
commit 9cef44d9fe
20 changed files with 375 additions and 596 deletions
@@ -19,7 +19,6 @@ import org.slf4j.LoggerFactory;
/**
* Main class for the Saturn Client mod.
* Originally created by IIpho3nix and modified for Saturn Client by leo.
*/
public class SaturnClient implements ModInitializer {
@@ -17,6 +17,7 @@ import java.util.concurrent.ConcurrentHashMap;
/**
* Manages the cloak system for Saturn Client.
* Handles loading and caching of player cloaks.
* Originally created by IIpho3nix and modified for Saturn Client by leo.
*/
public class Cloaks {
private static final String[] ANIMATED_CLOAKS = { "glitch" };
@@ -32,8 +32,7 @@ public class MainMenu extends SaturnUi {
.setY((height - buttonHeight) / 2)
.setWidth(buttonWidth)
.setHeight(buttonHeight)
.setAnimations(new FadeIn(2))
);
.setAnimations(new FadeIn(2)));
draw(
new SaturnImageButton(Textures.HUD_ICON, 14, 14, () -> {
@@ -43,8 +42,7 @@ public class MainMenu extends SaturnUi {
.setY((height - buttonHeight) / 2)
.setWidth(buttonHeight)
.setHeight(buttonHeight)
.setAnimations(new FadeIn(2))
);
.setAnimations(new FadeIn(2)));
draw(
new SaturnImageButton(Textures.COSMETICS, 14, 14, () -> {
@@ -54,8 +52,7 @@ public class MainMenu extends SaturnUi {
.setY((height - buttonHeight) / 2)
.setWidth(buttonHeight)
.setHeight(buttonHeight)
.setAnimations(new FadeIn(2))
);
.setAnimations(new FadeIn(2)));
int logoSize = 49;
@@ -65,8 +62,7 @@ public class MainMenu extends SaturnUi {
.setY((height - 8) / 2 - 23)
.setWidth(logoSize)
.setHeight(8)
.setAnimations(new FadeIn(2))
);
.setAnimations(new FadeIn(2)));
draw(
new SaturnImage(Textures.LOGO)
@@ -74,8 +70,7 @@ public class MainMenu extends SaturnUi {
.setY(height / 2 - logoSize - 24)
.setWidth(logoSize)
.setHeight(logoSize)
.setAnimations(new Slide(2, 14))
);
.setAnimations(new Slide(2, 14)));
super.init();
}
@@ -7,6 +7,7 @@ import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;
import net.minecraft.client.gui.DrawContext;
import net.minecraft.client.gui.screen.Screen;
import net.minecraft.client.render.RenderLayer;
import net.minecraft.client.util.math.MatrixStack;
import net.minecraft.text.MutableText;
import net.minecraft.text.Style;
@@ -23,6 +24,45 @@ public class SaturnUi extends Screen {
Style.EMPTY.withFont(Identifier.of("saturnclient:panton")));
}
public static void drawHighResTexture(DrawContext context, Identifier t, int x, int y, int w, int h) {
MatrixStack matricies = context.getMatrices();
matricies.push();
matricies.scale(.25f, .25f, 1.0f);
context.drawTexture(RenderLayer::getGuiTextured, t, x, y, 0, 0,
w * 4, h * 4, w * 4, h * 4);
matricies.pop();
}
public static void drawHighResTexture(DrawContext context, Identifier t, int x, int y, int w, int h, int c) {
MatrixStack matricies = context.getMatrices();
matricies.push();
matricies.scale(.25f, .25f, 1.0f);
context.drawTexture(RenderLayer::getGuiTextured, t, x, y, 0, 0,
w * 4, h * 4, w * 4, h * 4, c);
matricies.pop();
}
public static void drawHighResGuiTexture(DrawContext context, Identifier t, int x, int y, int w, int h, int c) {
MatrixStack matricies = context.getMatrices();
matricies.push();
matricies.scale(.25f, .25f, 1.0f);
context.drawGuiTexture(
RenderLayer::getGuiTextured,
t,
x,
y,
w * 4,
h * 4,
c);
matricies.pop();
}
public List<SaturnWidget> widgets = new ArrayList<>();
private int tick = 0;
@@ -3,7 +3,6 @@ package org.saturnclient.ui.components;
import net.minecraft.client.MinecraftClient;
import net.minecraft.client.font.TextRenderer;
import net.minecraft.client.gui.DrawContext;
import net.minecraft.client.render.RenderLayer;
import org.lwjgl.glfw.GLFW;
import org.saturnclient.saturnclient.SaturnClient;
import org.saturnclient.saturnclient.config.Property;
@@ -16,8 +15,7 @@ public class SaturnFloat extends SaturnWidget {
String text = "";
public Property<Float> prop;
public int cursorPosition = 0;
private TextRenderer textRenderer = MinecraftClient.getInstance()
.textRenderer;
private TextRenderer textRenderer = MinecraftClient.getInstance().textRenderer;
public SaturnFloat(Property<Float> prop, int x, int y, int width) {
this.x = x;
@@ -56,8 +54,7 @@ public class SaturnFloat extends SaturnWidget {
if (text.equals("0") && cursorPosition == 1) {
text = "" + chr;
} else {
text =
text.substring(0, cursorPosition) +
text = text.substring(0, cursorPosition) +
chr +
text.substring(cursorPosition);
@@ -72,8 +69,7 @@ public class SaturnFloat extends SaturnWidget {
public void keyPressed(int keyCode, int scanCode, int modifiers) {
if (keyCode == GLFW.GLFW_KEY_BACKSPACE) {
if (cursorPosition > 0) {
text =
text.substring(0, cursorPosition - 1) +
text = text.substring(0, cursorPosition - 1) +
text.substring(cursorPosition);
cursorPosition--;
if (text.length() == 0) {
@@ -98,10 +94,9 @@ public class SaturnFloat extends SaturnWidget {
DrawContext context,
boolean hovering,
int mouseX,
int mouseY
) {
context.drawGuiTexture(
RenderLayer::getGuiTextured,
int mouseY) {
SaturnUi.drawHighResGuiTexture(
context,
Textures.BUTTON_BORDER,
0,
0,
@@ -109,8 +104,7 @@ public class SaturnFloat extends SaturnWidget {
this.height,
focused
? SaturnClient.COLOR.value
: SaturnClient.getWhite(this.alpha)
);
: SaturnClient.getWhite(this.alpha));
int scrollOffset = getScrollOffset();
String visibleText = getVisibleText(scrollOffset);
@@ -122,24 +116,19 @@ public class SaturnFloat extends SaturnWidget {
2,
2,
textColor,
false
);
false);
if (focused) {
int cursorX =
2 +
int cursorX = 2 +
textRenderer.getWidth(
SaturnUi.text(
visibleText.substring(0, cursorPosition - scrollOffset)
)
);
visibleText.substring(0, cursorPosition - scrollOffset)));
context.fill(
cursorX,
2,
cursorX + 1,
textRenderer.fontHeight + 4,
0xFFFFFFFF
);
0xFFFFFFFF);
}
}
@@ -172,12 +161,8 @@ public class SaturnFloat extends SaturnWidget {
// Ensure text does not overflow past the available width
for (int i = 1; i <= visibleText.length(); i++) {
if (
textRenderer.getWidth(
SaturnUi.text(visibleText.substring(0, i))
) >
width - 4
) {
if (textRenderer.getWidth(
SaturnUi.text(visibleText.substring(0, i))) > width - 4) {
return visibleText.substring(0, i - 1); // Trim overflow
}
}
@@ -3,7 +3,6 @@ package org.saturnclient.ui.components;
import net.minecraft.client.MinecraftClient;
import net.minecraft.client.font.TextRenderer;
import net.minecraft.client.gui.DrawContext;
import net.minecraft.client.render.RenderLayer;
import org.lwjgl.glfw.GLFW;
import org.saturnclient.saturnclient.SaturnClient;
import org.saturnclient.saturnclient.config.Property;
@@ -16,8 +15,7 @@ public class SaturnHex extends SaturnWidget {
private String text = "#"; // Always starts with '#'
public Property<Integer> prop;
public int cursorPosition = 1; // After '#'
private final TextRenderer textRenderer = MinecraftClient.getInstance()
.textRenderer;
private final TextRenderer textRenderer = MinecraftClient.getInstance().textRenderer;
public SaturnHex(Property<Integer> prop, int x, int y, int width) {
this.x = x;
@@ -37,8 +35,7 @@ public class SaturnHex extends SaturnWidget {
@Override
public void charTyped(char chr) {
if (isHexChar(chr) && text.length() < 7) { // Limit to 6 hex digits + '#'
text =
text.substring(0, cursorPosition) +
text = text.substring(0, cursorPosition) +
chr +
text.substring(cursorPosition);
cursorPosition++;
@@ -52,15 +49,12 @@ public class SaturnHex extends SaturnWidget {
@Override
public void keyPressed(int keyCode, int scanCode, int modifiers) {
if (keyCode == GLFW.GLFW_KEY_BACKSPACE && cursorPosition > 1) { // Prevent deleting '#'
text =
text.substring(0, cursorPosition - 1) +
text = text.substring(0, cursorPosition - 1) +
text.substring(cursorPosition);
cursorPosition--;
} else if (keyCode == GLFW.GLFW_KEY_LEFT && cursorPosition > 1) {
cursorPosition--;
} else if (
keyCode == GLFW.GLFW_KEY_RIGHT && cursorPosition < text.length()
) {
} else if (keyCode == GLFW.GLFW_KEY_RIGHT && cursorPosition < text.length()) {
cursorPosition++;
}
@@ -79,10 +73,9 @@ public class SaturnHex extends SaturnWidget {
DrawContext context,
boolean hovering,
int mouseX,
int mouseY
) {
context.drawGuiTexture(
RenderLayer::getGuiTextured,
int mouseY) {
SaturnUi.drawHighResGuiTexture(
context,
Textures.BUTTON_BORDER,
0,
0,
@@ -90,8 +83,7 @@ public class SaturnHex extends SaturnWidget {
this.height,
focused
? SaturnClient.COLOR.value
: SaturnClient.getWhite(this.alpha)
);
: SaturnClient.getWhite(this.alpha));
int textColor = focused ? 0xFFFFFF : 0xAAAAAA;
context.drawText(
@@ -100,22 +92,18 @@ public class SaturnHex extends SaturnWidget {
2,
2,
textColor,
false
);
false);
if (focused) {
int cursorX =
2 +
int cursorX = 2 +
textRenderer.getWidth(
SaturnUi.text(text.substring(0, cursorPosition))
);
SaturnUi.text(text.substring(0, cursorPosition)));
context.fill(
cursorX,
2,
cursorX + 1,
textRenderer.fontHeight + 4,
0xFFFFFFFF
);
0xFFFFFFFF);
}
}
@@ -126,11 +114,9 @@ public class SaturnHex extends SaturnWidget {
}
private boolean isHexChar(char chr) {
return (
(chr >= '0' && chr <= '9') ||
return ((chr >= '0' && chr <= '9') ||
(chr >= 'A' && chr <= 'F') ||
(chr >= 'a' && chr <= 'f')
);
(chr >= 'a' && chr <= 'f'));
}
public static int hexToInt(String hex) {
@@ -3,7 +3,6 @@ package org.saturnclient.ui.components;
import net.minecraft.client.MinecraftClient;
import net.minecraft.client.font.TextRenderer;
import net.minecraft.client.gui.DrawContext;
import net.minecraft.client.render.RenderLayer;
import org.lwjgl.glfw.GLFW;
import org.saturnclient.saturnclient.SaturnClient;
import org.saturnclient.saturnclient.config.Property;
@@ -16,8 +15,7 @@ public class SaturnInteger extends SaturnWidget {
String text = "";
public Property<Integer> prop;
public int cursorPosition = 0;
private TextRenderer textRenderer = MinecraftClient.getInstance()
.textRenderer;
private TextRenderer textRenderer = MinecraftClient.getInstance().textRenderer;
public SaturnInteger(Property<Integer> prop, int x, int y, int width) {
this.x = x;
@@ -56,8 +54,7 @@ public class SaturnInteger extends SaturnWidget {
if (text.equals("0") && cursorPosition == 1) {
text = "" + chr;
} else {
text =
text.substring(0, cursorPosition) +
text = text.substring(0, cursorPosition) +
chr +
text.substring(cursorPosition);
@@ -72,8 +69,7 @@ public class SaturnInteger extends SaturnWidget {
public void keyPressed(int keyCode, int scanCode, int modifiers) {
if (keyCode == GLFW.GLFW_KEY_BACKSPACE) {
if (cursorPosition > 0) {
text =
text.substring(0, cursorPosition - 1) +
text = text.substring(0, cursorPosition - 1) +
text.substring(cursorPosition);
cursorPosition--;
if (text.length() == 0) {
@@ -98,10 +94,9 @@ public class SaturnInteger extends SaturnWidget {
DrawContext context,
boolean hovering,
int mouseX,
int mouseY
) {
context.drawGuiTexture(
RenderLayer::getGuiTextured,
int mouseY) {
SaturnUi.drawHighResGuiTexture(
context,
Textures.BUTTON_BORDER,
0,
0,
@@ -109,8 +104,7 @@ public class SaturnInteger extends SaturnWidget {
this.height,
focused
? SaturnClient.COLOR.value
: SaturnClient.getWhite(this.alpha)
);
: SaturnClient.getWhite(this.alpha));
int scrollOffset = getScrollOffset();
String visibleText = getVisibleText(scrollOffset);
@@ -122,24 +116,19 @@ public class SaturnInteger extends SaturnWidget {
2,
2,
textColor,
false
);
false);
if (focused) {
int cursorX =
2 +
int cursorX = 2 +
textRenderer.getWidth(
SaturnUi.text(
visibleText.substring(0, cursorPosition - scrollOffset)
)
);
visibleText.substring(0, cursorPosition - scrollOffset)));
context.fill(
cursorX,
2,
cursorX + 1,
textRenderer.fontHeight + 4,
0xFFFFFFFF
);
0xFFFFFFFF);
}
}
@@ -172,12 +161,8 @@ public class SaturnInteger extends SaturnWidget {
// Ensure text does not overflow past the available width
for (int i = 1; i <= visibleText.length(); i++) {
if (
textRenderer.getWidth(
SaturnUi.text(visibleText.substring(0, i))
) >
width - 4
) {
if (textRenderer.getWidth(
SaturnUi.text(visibleText.substring(0, i))) > width - 4) {
return visibleText.substring(0, i - 1); // Trim overflow
}
}
@@ -2,7 +2,6 @@ package org.saturnclient.ui.components;
import net.minecraft.client.MinecraftClient;
import net.minecraft.client.gui.DrawContext;
import net.minecraft.client.render.RenderLayer;
import org.saturnclient.saturnclient.SaturnClient;
import org.saturnclient.saturnclient.menus.ConfigEditor;
import org.saturnclient.saturnmods.SaturnMod;
@@ -23,8 +22,7 @@ public class SaturnModComp extends SaturnWidget {
DrawContext context,
boolean hovering,
int mouseX,
int mouseY
) {
int mouseY) {
boolean enabled = mod.isEnabled();
boolean hovering_settings = settingsHovering(mouseX, mouseY);
@@ -36,48 +34,33 @@ public class SaturnModComp extends SaturnWidget {
int size = 12;
if (enabled) {
context.drawTexture(
RenderLayer::getGuiTextured,
SaturnUi.drawHighResTexture(
context,
Textures.MOD_BG,
0,
0,
0,
0,
86,
20,
86,
20,
SaturnClient.COLOR.value
);
SaturnClient.COLOR.value);
}
context.drawTexture(
RenderLayer::getGuiTextured,
SaturnUi.drawHighResTexture(
context,
Textures.MOD,
0,
0,
0,
0,
86,
20,
86,
20,
color
);
color);
context.drawTexture(
RenderLayer::getGuiTextured,
SaturnUi.drawHighResTexture(
context,
mod.getIconTexture(),
4,
4,
0,
0,
size,
size,
size,
size,
color
);
color);
context.drawText(
SaturnClient.textRenderer,
@@ -85,24 +68,18 @@ public class SaturnModComp extends SaturnWidget {
20,
(21 - SaturnClient.textRenderer.fontHeight) / 2,
color,
false
);
false);
context.drawTexture(
RenderLayer::getGuiTextured,
SaturnUi.drawHighResTexture(
context,
Textures.SETTINGS,
77,
11,
0,
0,
7,
7,
7,
7,
hovering_settings
? SaturnClient.COLOR.value
: SaturnClient.getWhite(alpha)
);
: SaturnClient.getWhite(alpha));
}
@Override
@@ -120,11 +97,9 @@ public class SaturnModComp extends SaturnWidget {
int sY = 11;
int size = 7;
return (
sX < mouseX &&
return (sX < mouseX &&
sX + size > mouseX &&
sY < mouseY &&
sY + size > mouseY
);
sY + size > mouseY);
}
}
@@ -3,7 +3,6 @@ package org.saturnclient.ui.components;
import net.minecraft.client.MinecraftClient;
import net.minecraft.client.font.TextRenderer;
import net.minecraft.client.gui.DrawContext;
import net.minecraft.client.render.RenderLayer;
import org.lwjgl.glfw.GLFW;
import org.saturnclient.saturnclient.SaturnClient;
import org.saturnclient.saturnclient.config.Property;
@@ -15,8 +14,7 @@ public class SaturnString extends SaturnWidget {
public Property<String> prop;
public int cursorPosition = 0;
private TextRenderer textRenderer = MinecraftClient.getInstance()
.textRenderer;
private TextRenderer textRenderer = MinecraftClient.getInstance().textRenderer;
public SaturnString(Property<String> prop, int x, int y, int width) {
this.x = x;
@@ -50,8 +48,7 @@ public class SaturnString extends SaturnWidget {
@Override
public void charTyped(char chr) {
prop.value =
prop.value.substring(0, cursorPosition) +
prop.value = prop.value.substring(0, cursorPosition) +
chr +
prop.value.substring(cursorPosition);
@@ -62,8 +59,7 @@ public class SaturnString extends SaturnWidget {
public void keyPressed(int keyCode, int scanCode, int modifiers) {
if (keyCode == GLFW.GLFW_KEY_BACKSPACE) {
if (cursorPosition > 0) {
prop.value =
prop.value.substring(0, cursorPosition - 1) +
prop.value = prop.value.substring(0, cursorPosition - 1) +
prop.value.substring(cursorPosition);
cursorPosition--;
}
@@ -83,10 +79,9 @@ public class SaturnString extends SaturnWidget {
DrawContext context,
boolean hovering,
int mouseX,
int mouseY
) {
context.drawGuiTexture(
RenderLayer::getGuiTextured,
int mouseY) {
SaturnUi.drawHighResGuiTexture(
context,
Textures.BUTTON_BORDER,
0,
0,
@@ -94,8 +89,7 @@ public class SaturnString extends SaturnWidget {
this.height,
focused
? SaturnClient.COLOR.value
: SaturnClient.getWhite(this.alpha)
);
: SaturnClient.getWhite(this.alpha));
int scrollOffset = getScrollOffset();
String visibleText = getVisibleText(scrollOffset);
@@ -107,24 +101,19 @@ public class SaturnString extends SaturnWidget {
2,
2,
textColor,
false
);
false);
if (focused) {
int cursorX =
2 +
int cursorX = 2 +
textRenderer.getWidth(
SaturnUi.text(
visibleText.substring(0, cursorPosition - scrollOffset)
)
);
visibleText.substring(0, cursorPosition - scrollOffset)));
context.fill(
cursorX,
2,
cursorX + 1,
textRenderer.fontHeight + 3,
0xFFFFFFFF
);
0xFFFFFFFF);
}
}
@@ -156,12 +145,8 @@ public class SaturnString extends SaturnWidget {
// Ensure prop.value does not overflow past the available width
for (int i = 1; i <= visibleText.length(); i++) {
if (
textRenderer.getWidth(
SaturnUi.text(visibleText.substring(0, i))
) >
width - 4
) {
if (textRenderer.getWidth(
SaturnUi.text(visibleText.substring(0, i))) > width - 4) {
return visibleText.substring(0, i - 1); // Trim overflow
}
}
@@ -4,7 +4,6 @@ import com.mojang.blaze3d.systems.RenderSystem;
import java.util.function.Consumer;
import net.minecraft.client.MinecraftClient;
import net.minecraft.client.gui.DrawContext;
import net.minecraft.client.render.RenderLayer;
import net.minecraft.util.math.MathHelper;
import org.lwjgl.opengl.GL11;
import org.saturnclient.saturnclient.SaturnClient;
@@ -35,12 +34,10 @@ public class SaturnButton extends SaturnWidget {
DrawContext context,
boolean hovering,
int mouseX,
int mouseY
) {
int mouseY) {
MinecraftClient minecraftClient = MinecraftClient.getInstance();
int hoverColor =
((int) (alpha * 255) << 24) |
int hoverColor = ((int) (alpha * 255) << 24) |
(SaturnClient.COLOR.value & 0x00FFFFFF);
if (background) {
@@ -48,29 +45,26 @@ public class SaturnButton extends SaturnWidget {
RenderSystem.texParameter(
GL11.GL_TEXTURE_2D,
GL11.GL_TEXTURE_MIN_FILTER,
GL11.GL_LINEAR_MIPMAP_LINEAR
);
GL11.GL_LINEAR_MIPMAP_LINEAR);
context.drawGuiTexture(
RenderLayer::getGuiTextured,
SaturnUi.drawHighResGuiTexture(
context,
Textures.BUTTON,
0,
0,
this.width,
this.height,
SaturnClient.getWhite(this.alpha)
);
SaturnClient.getWhite(this.alpha));
if (hovering) {
context.drawGuiTexture(
RenderLayer::getGuiTextured,
SaturnUi.drawHighResGuiTexture(
context,
Textures.BUTTON_BORDER,
0,
0,
this.width,
this.height,
hoverColor
);
hoverColor);
}
}
@@ -81,16 +75,15 @@ public class SaturnButton extends SaturnWidget {
SaturnUi.text(text),
((this.width -
minecraftClient.textRenderer.getWidth(
SaturnUi.text(text)
)) /
SaturnUi.text(text)))
/
2),
((this.height - minecraftClient.textRenderer.fontHeight + 1) /
2),
hovering
? hoverColor
: i | (MathHelper.ceil(this.alpha * 255.0F) << 24),
false
);
false);
}
}
@@ -2,10 +2,10 @@ package org.saturnclient.ui.widgets;
import java.util.function.Consumer;
import net.minecraft.client.gui.DrawContext;
import net.minecraft.client.render.RenderLayer;
import net.minecraft.util.Identifier;
import net.minecraft.util.math.MathHelper;
import org.saturnclient.saturnclient.SaturnClient;
import org.saturnclient.ui.SaturnUi;
import org.saturnclient.ui.SaturnWidget;
public class SaturnClickableImage extends SaturnWidget {
@@ -18,8 +18,7 @@ public class SaturnClickableImage extends SaturnWidget {
public SaturnClickableImage(
Identifier texture,
Consumer<SaturnClickableImage> onPress
) {
Consumer<SaturnClickableImage> onPress) {
this.texture = texture;
this.onPress = onPress;
}
@@ -35,22 +34,16 @@ public class SaturnClickableImage extends SaturnWidget {
DrawContext context,
boolean hovering,
int mouseX,
int mouseY
) {
context.drawTexture(
RenderLayer::getGuiTextured,
int mouseY) {
SaturnUi.drawHighResTexture(
context,
texture,
0,
0,
0,
0,
width,
height,
width,
height,
(hovering || selected ? hoverColor : color) |
(MathHelper.ceil(this.alpha * 255.0F) << 24)
);
(MathHelper.ceil(this.alpha * 255.0F) << 24));
}
@Override
@@ -2,10 +2,10 @@ package org.saturnclient.ui.widgets;
import java.util.function.Consumer;
import net.minecraft.client.gui.DrawContext;
import net.minecraft.client.render.RenderLayer;
import net.minecraft.util.Identifier;
import net.minecraft.util.math.MathHelper;
import org.saturnclient.saturnclient.SaturnClient;
import org.saturnclient.ui.SaturnUi;
import org.saturnclient.ui.SaturnWidget;
public class SaturnClickableSprite extends SaturnWidget {
@@ -18,8 +18,7 @@ public class SaturnClickableSprite extends SaturnWidget {
public SaturnClickableSprite(
Identifier sprite,
Consumer<SaturnClickableSprite> onPress
) {
Consumer<SaturnClickableSprite> onPress) {
this.sprite = sprite;
this.onPress = onPress;
}
@@ -35,18 +34,16 @@ public class SaturnClickableSprite extends SaturnWidget {
DrawContext context,
boolean hovering,
int mouseX,
int mouseY
) {
context.drawGuiTexture(
RenderLayer::getGuiTextured,
int mouseY) {
SaturnUi.drawHighResGuiTexture(
context,
sprite,
0,
0,
this.width,
this.height,
(hovering || selected ? hoverColor : color) |
(MathHelper.ceil(this.alpha * 255.0F) << 24)
);
(MathHelper.ceil(this.alpha * 255.0F) << 24));
}
@Override
@@ -1,9 +1,10 @@
package org.saturnclient.ui.widgets;
import net.minecraft.client.gui.DrawContext;
import net.minecraft.client.render.RenderLayer;
import net.minecraft.util.Identifier;
import net.minecraft.util.math.ColorHelper;
import org.saturnclient.ui.SaturnUi;
import org.saturnclient.ui.SaturnWidget;
public class SaturnImage extends SaturnWidget {
@@ -19,20 +20,14 @@ public class SaturnImage extends SaturnWidget {
DrawContext context,
boolean hovering,
int mouseX,
int mouseY
) {
context.drawTexture(
RenderLayer::getGuiTextured,
int mouseY) {
SaturnUi.drawHighResTexture(
context,
sprite,
0,
0,
0,
0,
width,
height,
width,
height,
ColorHelper.getWhite(alpha)
);
ColorHelper.getWhite(alpha));
}
}
@@ -1,149 +0,0 @@
package org.saturnclient.ui.widgets;
import net.minecraft.client.MinecraftClient;
import net.minecraft.client.font.TextRenderer;
import net.minecraft.client.gui.DrawContext;
import net.minecraft.client.render.RenderLayer;
import org.lwjgl.glfw.GLFW;
import org.saturnclient.saturnclient.SaturnClient;
import org.saturnclient.ui.SaturnUi;
import org.saturnclient.ui.SaturnWidget;
import org.saturnclient.ui.Textures;
public class SaturnInputBox extends SaturnWidget {
public String text = "";
public String placeholder = "";
public int cursorPosition = 0;
public boolean focused = false;
private TextRenderer textRenderer = MinecraftClient.getInstance()
.textRenderer;
public SaturnInputBox(
String placeholder,
int y,
int x,
int width,
int height
) {
this.x = x;
this.y = y;
this.width = width;
this.height = height;
this.placeholder = placeholder;
}
@Override
public void click(int mouseX, int mouseY) {
focused = true;
}
@Override
public void charTyped(char chr) {
if (focused) {
text =
text.substring(0, cursorPosition) +
chr +
text.substring(cursorPosition);
cursorPosition++;
}
}
@Override
public void keyPressed(int keyCode, int scanCode, int modifiers) {
if (focused) {
if (keyCode == GLFW.GLFW_KEY_BACKSPACE) {
if (cursorPosition > 0) {
text =
text.substring(0, cursorPosition - 1) +
text.substring(cursorPosition);
cursorPosition--;
}
} else if (keyCode == GLFW.GLFW_KEY_LEFT) {
if (cursorPosition > 0) {
cursorPosition--;
}
} else if (keyCode == GLFW.GLFW_KEY_RIGHT) {
if (cursorPosition < text.length()) {
cursorPosition++;
}
}
}
}
@Override
public void render(
DrawContext context,
boolean hovering,
int mouseX,
int mouseY
) {
context.drawGuiTexture(
RenderLayer::getGuiTextured,
Textures.BUTTON,
0,
0,
this.width,
this.height,
SaturnClient.getWhite(this.alpha)
);
int scrollOffset = getScrollOffset();
String visibleText = text.substring(scrollOffset);
int textColor = focused ? 0xFFFFFF : 0xAAAAAA;
context.drawText(
textRenderer,
SaturnUi.text(visibleText),
5,
5,
textColor,
false
);
if (focused) {
int cursorX =
5 +
textRenderer.getWidth(
SaturnUi.text(
visibleText.substring(0, cursorPosition - scrollOffset)
)
);
context.fill(cursorX, 3, cursorX + 1, height - 3, 0xFFFFFFFF);
}
}
public void clearText() {
text = "";
cursorPosition = 0;
}
private int getScrollOffset() {
if (text.isEmpty()) {
return 0;
}
int offset = 0;
if (cursorPosition == text.length()) {
while (
textRenderer.getWidth(SaturnUi.text(text.substring(offset))) >
width
) {
offset++;
}
} else {
while (
textRenderer.getWidth(
SaturnUi.text(text.substring(offset, cursorPosition))
) >
width
) {
offset++;
}
}
return offset;
}
}
@@ -1,9 +1,10 @@
package org.saturnclient.ui.widgets;
import net.minecraft.client.gui.DrawContext;
import net.minecraft.client.render.RenderLayer;
import net.minecraft.util.Identifier;
import net.minecraft.util.math.ColorHelper;
import org.saturnclient.ui.SaturnUi;
import org.saturnclient.ui.SaturnWidget;
public class SaturnSprite extends SaturnWidget {
@@ -19,16 +20,14 @@ public class SaturnSprite extends SaturnWidget {
DrawContext context,
boolean hovering,
int mouseX,
int mouseY
) {
context.drawGuiTexture(
RenderLayer::getGuiTextured,
int mouseY) {
SaturnUi.drawHighResGuiTexture(
context,
sprite,
0,
0,
this.width,
this.height,
ColorHelper.getWhite(this.alpha)
);
ColorHelper.getWhite(this.alpha));
}
}
Binary file not shown.

Before

Width:  |  Height:  |  Size: 391 B

After

Width:  |  Height:  |  Size: 672 B

@@ -4,7 +4,7 @@
"type": "nine_slice",
"width": 80,
"height": 80,
"border": 9
"border": 16
}
}
}
Binary file not shown.

Before

Width:  |  Height:  |  Size: 421 B

After

Width:  |  Height:  |  Size: 753 B

@@ -4,7 +4,7 @@
"type": "nine_slice",
"width": 80,
"height": 80,
"border": 9
"border": 16
}
}
}
Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.0 KiB

After

Width:  |  Height:  |  Size: 7.7 KiB