Architecture #35

This commit is contained in:
2026-03-07 23:13:38 +01:00
parent c74f20230d
commit 4501b0c35e
27 changed files with 178 additions and 179 deletions
@@ -1,12 +1,12 @@
package org.saturnclient.ui;
import org.saturnclient.common.bindings.SaturnIdentifier;
import org.saturnclient.common.bindings.SaturnItemStack;
import org.saturnclient.common.bindings.SaturnSprite;
import org.saturnclient.common.render.IMatrixStack;
import org.saturnclient.common.ref.asset.IdentifierRef;
import org.saturnclient.common.ref.asset.SpriteRef;
import org.saturnclient.common.ref.game.ItemStackRef;
import org.saturnclient.common.ref.render.MatrixStackRef;
public interface RenderScope {
public IMatrixStack getMatrixStack();
public MatrixStackRef getMatrixStack();
public void setOpacity(float alpha);
@@ -25,16 +25,16 @@ public interface RenderScope {
public int getScaledWindowHeight();
/* Saturn common sprites */
public void drawTexture(SaturnIdentifier sprite, int x, int y, float u, float v, int width, int height,
public void drawTexture(IdentifierRef sprite, int x, int y, float u, float v, int width, int height,
int color);
public void drawTexture(SaturnIdentifier sprite, int x, int y, float u, float v, int width, int height);
public void drawTexture(IdentifierRef sprite, int x, int y, float u, float v, int width, int height);
public void drawTexture(SaturnIdentifier sprite, int x, int y, float u, float v, int width, int height,
public void drawTexture(IdentifierRef sprite, int x, int y, float u, float v, int width, int height,
int regionWith,
int regionHeight, int textureWidth, int textureHeight);
public void drawTexture(SaturnIdentifier sprite, int x, int y, float u, float v, int width, int height,
public void drawTexture(IdentifierRef sprite, int x, int y, float u, float v, int width, int height,
int regionWidth,
int regionHeight, int textureWidth, int textureHeight, int color);
@@ -46,19 +46,19 @@ public interface RenderScope {
public void draw();
public void drawItem(SaturnItemStack item, int x, int y);
public void drawItem(ItemStackRef item, int x, int y);
public void drawItem(SaturnItemStack stack, int x, int y, int seed);
public void drawItem(ItemStackRef stack, int x, int y, int seed);
public void drawItem(SaturnItemStack stack, int x, int y, int seed, int z);
public void drawItem(ItemStackRef stack, int x, int y, int seed, int z);
public void drawItemWithoutEntity(SaturnItemStack stack, int x, int y);
public void drawItemWithoutEntity(ItemStackRef stack, int x, int y);
public void drawItemWithoutEntity(SaturnItemStack stack, int x, int y, int seed);
public void drawItemWithoutEntity(ItemStackRef stack, int x, int y, int seed);
public void drawSpriteStretched(SaturnSprite sprite, int x, int y, int width, int height);
public void drawSpriteStretched(SpriteRef sprite, int x, int y, int width, int height);
public void drawSpriteStretched(SaturnSprite sprite, int x, int y, int width, int height, int color);
public void drawSpriteStretched(SpriteRef sprite, int x, int y, int width, int height, int color);
public void fill(int x1, int y1, int x2, int y2, int color);
@@ -1,6 +1,6 @@
package org.saturnclient.ui.components;
import org.saturnclient.common.bindings.SaturnIdentifier;
import org.saturnclient.common.ref.asset.IdentifierRef;
import org.saturnclient.config.Theme;
import org.saturnclient.ui.Element;
import org.saturnclient.ui.ElementContext;
@@ -9,11 +9,11 @@ import org.saturnclient.ui.RenderScope;
public class CosmeticPreview extends Element {
static int padding = 14;
SaturnIdentifier sprite;
IdentifierRef sprite;
private Runnable onClick;
private boolean isSelected;
public CosmeticPreview(boolean isSelected, SaturnIdentifier sprite, Runnable onClick) {
public CosmeticPreview(boolean isSelected, IdentifierRef sprite, Runnable onClick) {
this.sprite = sprite;
this.onClick = onClick;
this.isSelected = isSelected;
@@ -1,7 +1,7 @@
package org.saturnclient.ui.components;
import org.saturnclient.common.MinecraftProvider;
import org.saturnclient.common.bindings.SaturnIdentifier;
import org.saturnclient.common.ref.asset.IdentifierRef;
import org.saturnclient.config.Config;
import org.saturnclient.config.Theme;
import org.saturnclient.ui.Element;
@@ -18,9 +18,9 @@ public class Sidebar extends Element {
public static class SidebarComponent {
Runnable onClick;
boolean end;
SaturnIdentifier sprite;
IdentifierRef sprite;
public SidebarComponent(SaturnIdentifier sprite, Runnable onClick, boolean end) {
public SidebarComponent(IdentifierRef sprite, Runnable onClick, boolean end) {
this.onClick = onClick;
this.end = end;
this.sprite = sprite;
@@ -1,16 +1,16 @@
package org.saturnclient.ui.elements;
import org.saturnclient.common.bindings.SaturnIdentifier;
import org.saturnclient.common.ref.asset.IdentifierRef;
import org.saturnclient.config.Theme;
import org.saturnclient.ui.Element;
import org.saturnclient.ui.ElementContext;
import org.saturnclient.ui.RenderScope;
public class ClickableTexture extends Element {
SaturnIdentifier sprite;
IdentifierRef sprite;
private Runnable onClick;
public ClickableTexture(SaturnIdentifier sprite, Runnable onClick) {
public ClickableTexture(IdentifierRef sprite, Runnable onClick) {
this.sprite = sprite;
this.onClick = onClick;
}
@@ -2,16 +2,16 @@ package org.saturnclient.ui.elements;
import org.saturnclient.common.IMinecraftClient;
import org.saturnclient.common.MinecraftProvider;
import org.saturnclient.common.bindings.SaturnIdentifier;
import org.saturnclient.common.ref.asset.IdentifierRef;
import org.saturnclient.ui.Element;
import org.saturnclient.ui.ElementContext;
import org.saturnclient.ui.RenderScope;
import org.saturnclient.ui.resources.SvgTexture;
public class ImageTexture extends Element {
SaturnIdentifier sprite;
IdentifierRef sprite;
public ImageTexture(SaturnIdentifier sprite) {
public ImageTexture(IdentifierRef sprite) {
this.sprite = sprite;
}
@@ -24,7 +24,7 @@ public class ImageTexture extends Element {
int renderHeight = (int) (height * client.getWindow().getFramebufferHeight()
/ client.getWindow().getHeight());
SaturnIdentifier pngId = SvgTexture.getSvg(client, sprite, renderWidth * 2, renderHeight * 2);
IdentifierRef pngId = SvgTexture.getSvg(client, sprite, renderWidth * 2, renderHeight * 2);
this.sprite = pngId;
if (pngId == null) {
@@ -1,6 +1,6 @@
package org.saturnclient.ui.elements;
import org.saturnclient.common.bindings.SaturnIdentifier;
import org.saturnclient.common.ref.asset.IdentifierRef;
import org.saturnclient.config.Theme;
import org.saturnclient.ui.Element;
import org.saturnclient.ui.ElementContext;
@@ -10,9 +10,9 @@ import org.saturnclient.ui.Utils;
public class TabMenu extends Element {
public static class TabMenuComponent {
Runnable onClick;
SaturnIdentifier sprite;
IdentifierRef sprite;
public TabMenuComponent(SaturnIdentifier sprite, Runnable onClick) {
public TabMenuComponent(IdentifierRef sprite, Runnable onClick) {
this.onClick = onClick;
this.sprite = sprite;
}
@@ -1,17 +1,17 @@
package org.saturnclient.ui.elements;
import org.saturnclient.common.bindings.SaturnIdentifier;
import org.saturnclient.common.ref.asset.IdentifierRef;
import org.saturnclient.config.Theme;
import org.saturnclient.ui.Element;
import org.saturnclient.ui.ElementContext;
import org.saturnclient.ui.RenderScope;
public class TextureButton extends Element {
SaturnIdentifier sprite;
IdentifierRef sprite;
private Runnable onClick;
static int padding = 14;
public TextureButton(SaturnIdentifier sprite, Runnable onClick) {
public TextureButton(IdentifierRef sprite, Runnable onClick) {
this.sprite = sprite;
this.onClick = onClick;
}
@@ -1,14 +1,14 @@
package org.saturnclient.ui.resources;
import org.saturnclient.common.MinecraftProvider;
import org.saturnclient.common.bindings.SaturnIdentifier;
import org.saturnclient.common.ref.asset.IdentifierRef;
public class Fonts {
public static final SaturnIdentifier INTER = SaturnIdentifier.of("saturnclient", "inter");
public static final SaturnIdentifier INTER_BOLD = SaturnIdentifier.of("saturnclient", "inter_bold");
public static final SaturnIdentifier DEFAULT = SaturnIdentifier.ofVanilla("default");
public static final IdentifierRef INTER = IdentifierRef.of("saturnclient", "inter");
public static final IdentifierRef INTER_BOLD = IdentifierRef.of("saturnclient", "inter_bold");
public static final IdentifierRef DEFAULT = IdentifierRef.ofVanilla("default");
public static SaturnIdentifier getFont(int font) {
public static IdentifierRef getFont(int font) {
switch (font) {
case 0:
return DEFAULT;
@@ -12,11 +12,11 @@ import com.kitfox.svg.SVGUniverse;
import org.saturnclient.common.IMinecraftClient;
import org.saturnclient.common.MinecraftProvider;
import org.saturnclient.common.bindings.SaturnIdentifier;
import org.saturnclient.common.ref.asset.IdentifierRef;
public class SvgTexture {
private static List<SaturnIdentifier> svgCache = new ArrayList<>();
private static List<IdentifierRef> svgCache = new ArrayList<>();
private static BufferedImage renderSvg(InputStream svgStream, int width, int height) throws Exception {
// Load SVG
@@ -50,8 +50,8 @@ public class SvgTexture {
return image;
}
public static SaturnIdentifier getSvg(IMinecraftClient client, SaturnIdentifier svgImage, int width, int height) {
SaturnIdentifier id = SaturnIdentifier
public static IdentifierRef getSvg(IMinecraftClient client, IdentifierRef svgImage, int width, int height) {
IdentifierRef id = IdentifierRef
.of(svgImage.toString().replaceAll("\\.svg$", (width + "_" + height).toString() + ".png"));
if (svgCache.contains(id)) {
@@ -1,84 +1,84 @@
package org.saturnclient.ui.resources;
import org.saturnclient.common.bindings.SaturnIdentifier;
import org.saturnclient.common.ref.asset.IdentifierRef;
public class Textures {
public static final SaturnIdentifier CROSSHAIR_RANGE = new SaturnIdentifier("saturnclient",
public static final IdentifierRef CROSSHAIR_RANGE = new IdentifierRef("saturnclient",
"textures/gui/hud/crosshair_range.png");
public static final SaturnIdentifier COSMETICS = new SaturnIdentifier("saturnclient",
public static final IdentifierRef COSMETICS = new IdentifierRef("saturnclient",
"textures/gui/components/cosmetics.png");
public static final SaturnIdentifier HUD_ICON = new SaturnIdentifier("saturnclient",
public static final IdentifierRef HUD_ICON = new IdentifierRef("saturnclient",
"textures/gui/components/hud.png");
public static final SaturnIdentifier SEARCH = new SaturnIdentifier("saturnclient",
public static final IdentifierRef SEARCH = new IdentifierRef("saturnclient",
"textures/gui/components/search.png");
public static final SaturnIdentifier CLOSE = new SaturnIdentifier("saturnclient",
public static final IdentifierRef CLOSE = new IdentifierRef("saturnclient",
"textures/gui/components/close.png");
public static final SaturnIdentifier MODS_TAB = new SaturnIdentifier("saturnclient",
public static final IdentifierRef MODS_TAB = new IdentifierRef("saturnclient",
"textures/gui/components/mods_tab.png");
public static final SaturnIdentifier SETTINGS = new SaturnIdentifier("saturnclient",
public static final IdentifierRef SETTINGS = new IdentifierRef("saturnclient",
"textures/gui/components/settings.png");
public static final SaturnIdentifier CLOAK = new SaturnIdentifier("saturnclient",
public static final IdentifierRef CLOAK = new IdentifierRef("saturnclient",
"textures/gui/components/cloak.png");
public static final SaturnIdentifier HAT = new SaturnIdentifier("saturnclient",
public static final IdentifierRef HAT = new IdentifierRef("saturnclient",
"textures/gui/components/hat.png");
public static final SaturnIdentifier RESET = new SaturnIdentifier("saturnclient",
public static final IdentifierRef RESET = new IdentifierRef("saturnclient",
"textures/gui/components/reset.png");
public static final SaturnIdentifier TOGGLE_INDICATOR = new SaturnIdentifier("saturnclient",
public static final IdentifierRef TOGGLE_INDICATOR = new IdentifierRef("saturnclient",
"textures/gui/components/toggle_indicator.png");
public static final SaturnIdentifier LEFT = new SaturnIdentifier("saturnclient",
public static final IdentifierRef LEFT = new IdentifierRef("saturnclient",
"textures/gui/components/left.png");
public static final SaturnIdentifier RIGHT = new SaturnIdentifier("saturnclient",
public static final IdentifierRef RIGHT = new IdentifierRef("saturnclient",
"textures/gui/components/right.png");
public static final SaturnIdentifier STORE = new SaturnIdentifier("saturnclient",
public static final IdentifierRef STORE = new IdentifierRef("saturnclient",
"textures/gui/components/store.png");
public static final SaturnIdentifier COINS = new SaturnIdentifier("saturnclient",
public static final IdentifierRef COINS = new IdentifierRef("saturnclient",
"textures/gui/components/coins.png");
public static final SaturnIdentifier SHIRT = new SaturnIdentifier("saturnclient",
public static final IdentifierRef SHIRT = new IdentifierRef("saturnclient",
"textures/gui/components/shirt.png");
public static final SaturnIdentifier CIRCLE_X = new SaturnIdentifier("saturnclient",
public static final IdentifierRef CIRCLE_X = new IdentifierRef("saturnclient",
"textures/gui/components/circle_x.png");
public static final SaturnIdentifier INFO = new SaturnIdentifier("saturnclient",
public static final IdentifierRef INFO = new IdentifierRef("saturnclient",
"textures/gui/components/info.png");
public static final SaturnIdentifier CHECK = new SaturnIdentifier("saturnclient",
public static final IdentifierRef CHECK = new IdentifierRef("saturnclient",
"textures/gui/components/check.png");
public static final SaturnIdentifier LOGO = new SaturnIdentifier("saturnclient", "textures/logo/logo.png");
public static final SaturnIdentifier REALISTIC_LOGO = new SaturnIdentifier("saturnclient",
public static final IdentifierRef LOGO = new IdentifierRef("saturnclient", "textures/logo/logo.png");
public static final IdentifierRef REALISTIC_LOGO = new IdentifierRef("saturnclient",
"textures/logo/realistic.png");
public static final SaturnIdentifier LOGO_TEXT = new SaturnIdentifier("saturnclient", "textures/logo/text.png");
public static final SaturnIdentifier LOGO_TEXT_BIG = new SaturnIdentifier("saturnclient",
public static final IdentifierRef LOGO_TEXT = new IdentifierRef("saturnclient", "textures/logo/text.png");
public static final IdentifierRef LOGO_TEXT_BIG = new IdentifierRef("saturnclient",
"textures/logo/text_big.png");
public static final SaturnIdentifier SPLASH = new SaturnIdentifier("saturnclient", "textures/gui/splash.png");
public static final IdentifierRef SPLASH = new IdentifierRef("saturnclient", "textures/gui/splash.png");
// Widgets
public static final SaturnIdentifier BUTTON_BORDER = new SaturnIdentifier("saturnclient", "button_border");
public static final SaturnIdentifier BUTTON = new SaturnIdentifier("saturnclient", "button");
public static final SaturnIdentifier BUTTON_OP = new SaturnIdentifier("saturnclient", "button_op");
public static final SaturnIdentifier SETTINGS_BG = new SaturnIdentifier("saturnclient", "settings_bg");
public static final SaturnIdentifier RECT = new SaturnIdentifier("saturnclient", "rect");
public static final SaturnIdentifier RECT_BORDER = new SaturnIdentifier("saturnclient", "rect_border");
public static final SaturnIdentifier MOD = new SaturnIdentifier("saturnclient",
public static final IdentifierRef BUTTON_BORDER = new IdentifierRef("saturnclient", "button_border");
public static final IdentifierRef BUTTON = new IdentifierRef("saturnclient", "button");
public static final IdentifierRef BUTTON_OP = new IdentifierRef("saturnclient", "button_op");
public static final IdentifierRef SETTINGS_BG = new IdentifierRef("saturnclient", "settings_bg");
public static final IdentifierRef RECT = new IdentifierRef("saturnclient", "rect");
public static final IdentifierRef RECT_BORDER = new IdentifierRef("saturnclient", "rect_border");
public static final IdentifierRef MOD = new IdentifierRef("saturnclient",
"textures/gui/components/mod.png");
public static final SaturnIdentifier MOD_BG = new SaturnIdentifier("saturnclient",
public static final IdentifierRef MOD_BG = new IdentifierRef("saturnclient",
"textures/gui/components/mod_bg.png");
public static SaturnIdentifier getCloakPreview(String cloak) {
return new SaturnIdentifier("saturnclient",
public static IdentifierRef getCloakPreview(String cloak) {
return new IdentifierRef("saturnclient",
"textures/gui/cloak/" + (cloak.isEmpty() ? "none" : cloak) + ".png");
}
public static SaturnIdentifier getHatPreview(String hat) {
return new SaturnIdentifier("saturnclient",
public static IdentifierRef getHatPreview(String hat) {
return new IdentifierRef("saturnclient",
"textures/gui/hat/" + (hat.isEmpty() ? "none" : hat) + ".png");
}
public static SaturnIdentifier getEmotePreview(String emote) {
return new SaturnIdentifier("saturnclient",
public static IdentifierRef getEmotePreview(String emote) {
return new IdentifierRef("saturnclient",
"textures/gui/emote/" + (emote == null ? "none" : emote) + ".png");
}
public static SaturnIdentifier getModIcon(String modId) {
return new SaturnIdentifier("saturnclient", "textures/gui/mod/" + modId + ".svg");
public static IdentifierRef getModIcon(String modId) {
return new IdentifierRef("saturnclient", "textures/gui/mod/" + modId + ".svg");
}
}
@@ -4,7 +4,7 @@ import org.saturnclient.modules.HudMod;
import org.saturnclient.modules.ModDimensions;
import org.saturnclient.modules.ModManager;
import org.saturnclient.modules.Module;
import org.saturnclient.common.render.IMatrixStack;
import org.saturnclient.common.ref.render.MatrixStackRef;
import org.saturnclient.config.manager.ConfigManager;
import org.saturnclient.ui.RenderScope;
import org.saturnclient.ui.SaturnScreen;
@@ -92,7 +92,7 @@ public class HudEditor extends SaturnScreen {
public void render(RenderScope renderScope, int mouseX, int mouseY, float delta, long elapsed) {
for (HudMod mod : hudMods) {
ModDimensions dim = mod.getDimensions();
IMatrixStack matrices = renderScope.getMatrixStack();
MatrixStackRef matrices = renderScope.getMatrixStack();
matrices.push();
matrices.translate(dim.x.value, dim.y.value, 0);