Temporarily fized 1.21.4

This commit is contained in:
2026-03-06 11:28:48 +01:00
parent 7ada7ea3c8
commit 3291dc1e6e
23 changed files with 247 additions and 243 deletions
@@ -3,7 +3,7 @@ package org.saturnclient.common.minecraft.bindings;
import org.saturnclient.common.minecraft.MinecraftBinding;
public class SaturnItemStack extends MinecraftBinding {
SaturnItemStack(Object binding) {
public SaturnItemStack(Object binding) {
super(binding);
}
}
@@ -3,7 +3,7 @@ package org.saturnclient.common.minecraft.bindings;
import org.saturnclient.common.minecraft.MinecraftBinding;
public class SaturnSprite extends MinecraftBinding {
SaturnSprite(Object binding) {
public SaturnSprite(Object binding) {
super(binding);
}
}
@@ -3,8 +3,11 @@ package org.saturnclient.ui;
import org.saturnclient.common.minecraft.bindings.SaturnIdentifier;
import org.saturnclient.common.minecraft.bindings.SaturnItemStack;
import org.saturnclient.common.minecraft.bindings.SaturnSprite;
import org.saturnclient.common.minecraft.render.IMatrixStack;
public interface RenderScope {
public IMatrixStack getMatrixStack();
public void setOpacity(float alpha);
public int getColor(int color);
@@ -51,13 +51,12 @@ public class Utils {
return (index >= 0 && index < list.size()) ? list.get(index) : null;
}
// public static void notify(NotificationKind kind, String title, String toast)
// {
// if (SaturnClient.client.currentScreen instanceof SaturnScreen) {
// ((SaturnScreen) SaturnClient.client.currentScreen)
// .draw(new Notification(SaturnClient.client.currentScreen.width,
// SaturnClient.client.currentScreen.height, kind,
// title, toast));
// }
// public static void notify(NotificationKind kind, String title, String toast) {
// if (SaturnClient.client.currentScreen instanceof SaturnScreen) {
// ((SaturnScreen) SaturnClient.client.currentScreen)
// .draw(new Notification(SaturnClient.client.currentScreen.width,
// SaturnClient.client.currentScreen.height, kind,
// title, toast));
// }
// }
}
@@ -16,16 +16,16 @@ public class ImageTexture extends Element {
@Override
public void render(RenderScope renderScope, ElementContext ctx) {
if (sprite.toString().endsWith(".svg")) {
IMinecraftClient client = MinecraftProvider.PROVIDER.getClient();
// if (sprite.toString().endsWith(".svg")) {
// IMinecraftClient client = MinecraftProvider.PROVIDER.getClient();
// Get the actual window pixel dimensions for the image
int renderWidth = (int) (width * client.getWindow().getFramebufferWidth() / client.getWindow().getWidth());
int renderHeight = (int) (height * client.getWindow().getFramebufferHeight()
/ client.getWindow().getHeight());
// // Get the actual window pixel dimensions for the image
// int renderWidth = (int) (width * client.getWindow().getFramebufferWidth() / client.getWindow().getWidth());
// int renderHeight = (int) (height * client.getWindow().getFramebufferHeight()
// / client.getWindow().getHeight());
sprite = SvgTexture.getSvg(client, sprite, renderWidth * 2, renderHeight * 2);
}
// sprite = SvgTexture.getSvg(client, sprite, renderWidth * 2, renderHeight * 2);
// }
renderScope.drawTexture(sprite, 0, 0, 0, 0, width, height);
}
@@ -25,7 +25,7 @@ public class Scroll extends Element {
}
public void draw(Element element) {
ElementRenderer.draw(children, element);
// ElementRenderer.draw(children, element);
}
@Override
@@ -36,14 +36,14 @@ public class Scroll extends Element {
Theme.BG_RADIUS.value, Theme.BACKGROUND.value);
renderScope.enableScissor(padding, padding, width - padding, height - padding);
renderScope.matrices.push();
renderScope.matrices.translate(padding, -scroll + padding, 0);
renderScope.getMatrixStack().push();
renderScope.getMatrixStack().translate(padding, -scroll + padding, 0);
ElementRenderer.render(children, ctx.elapsed, renderScope,
ctx.mouseX - padding,
ctx.mouseY - padding + scroll);
// ElementRenderer.render(children, ctx.elapsed, renderScope,
// ctx.mouseX - padding,
// ctx.mouseY - padding + scroll);
renderScope.matrices.pop();
renderScope.getMatrixStack().pop();
renderScope.disableScissor();
if (maxScroll > 0) {
@@ -110,21 +110,21 @@ public class Scroll extends Element {
@Override
public void keyPressed(int keyCode, int scanCode, int modifiers) {
ElementRenderer.keyPressed(children, keyCode, scanCode, modifiers);
// ElementRenderer.keyPressed(children, keyCode, scanCode, modifiers);
}
@Override
public void mouseClicked(double mouseX, double mouseY, int button) {
ElementRenderer.mouseClicked(children, mouseX - padding, mouseY - padding + scroll, button);
// ElementRenderer.mouseClicked(children, mouseX - padding, mouseY - padding + scroll, button);
}
@Override
public void mouseDragged(double mouseX, double mouseY, int button, double deltaX, double deltaY) {
ElementRenderer.mouseDragged(children, mouseX - padding, mouseY - padding + scroll, button, deltaX, deltaY);
// ElementRenderer.mouseDragged(children, mouseX - padding, mouseY - padding + scroll, button, deltaX, deltaY);
}
@Override
public void mouseReleased(double mouseX, double mouseY, int button) {
ElementRenderer.mouseReleased(children, mouseX - padding, mouseY - padding + scroll, button);
// ElementRenderer.mouseReleased(children, mouseX - padding, mouseY - padding + scroll, button);
}
}
@@ -5,6 +5,7 @@ import org.saturnclient.modules.ModDimensions;
import org.saturnclient.modules.Module;
import org.saturnclient.modules.ModuleDetails;
import org.saturnclient.saturnclient.SaturnClient;
import org.saturnclient.common.minecraft.bindings.SaturnItemStack;
import org.saturnclient.config.manager.Property;
import org.saturnclient.ui.RenderScope;
@@ -32,30 +33,30 @@ public class ArmorDisplay extends Module implements HudMod {
int row = 0;
if (useMainHand.value && !mainHand.isEmpty()) {
scope.drawItem(mainHand, 0, 15 * row);
scope.drawItem(new SaturnItemStack(mainHand), 0, 15 * row);
renderHealth(scope, row, mainHand.getMaxDamage(), mainHand.getDamage());
row++;
}
if (!helmet.isEmpty()) {
scope.drawItem(helmet, 0, 15 * row);
scope.drawItem(new SaturnItemStack(helmet), 0, 15 * row);
renderHealth(scope, row, helmet.getMaxDamage(), helmet.getDamage());
row++;
}
if (!chestplate.isEmpty()) {
scope.drawItem(chestplate, 0, 15 * row);
scope.drawItem(new SaturnItemStack(chestplate), 0, 15 * row);
renderHealth(scope, row, chestplate.getMaxDamage(), chestplate.getDamage());
row++;
}
if (!leggings.isEmpty()) {
scope.drawItem(leggings, 0, 15 * row);
scope.drawItem(new SaturnItemStack(leggings), 0, 15 * row);
renderHealth(scope, row, leggings.getMaxDamage(), leggings.getDamage());
row++;
}
if (!boots.isEmpty()) {
scope.drawItem(boots, 0, 15 * row);
scope.drawItem(new SaturnItemStack(boots), 0, 15 * row);
renderHealth(scope, row, boots.getMaxDamage(), boots.getDamage());
row++;
}
@@ -7,8 +7,6 @@ import org.saturnclient.config.manager.Property;
import org.saturnclient.ui.RenderScope;
import org.saturnclient.ui.resources.Textures;
import net.minecraft.client.render.RenderLayer;
public class Crosshair extends Module {
public static Property<Boolean> enabled = Property.bool(false);
@@ -29,7 +27,6 @@ public class Crosshair extends Module {
int scaledWidth = 15;
int scaledHeight = 15;
scope.setRenderLayer(RenderLayer::getCrosshair);
scope.drawTexture(Textures.CROSSHAIR_RANGE,
(scope.getScaledWindowWidth() - scaledWidth) / 2,
(scope.getScaledWindowHeight() - scaledHeight) / 2, 0.0F, 0.0F, scaledWidth, scaledHeight);
@@ -7,6 +7,7 @@ import org.saturnclient.modules.ModDimensions;
import org.saturnclient.modules.Module;
import org.saturnclient.modules.ModuleDetails;
import org.saturnclient.saturnclient.SaturnClient;
import org.saturnclient.common.minecraft.bindings.SaturnSprite;
import org.saturnclient.config.manager.Property;
import org.saturnclient.ui.RenderScope;
@@ -51,7 +52,7 @@ public class StatusEffects extends Module implements HudMod {
if (effect.shouldShowIcon()) {
RegistryEntry<StatusEffect> registryEntry = effect.getEffectType();
Sprite sprite = statusEffectSpriteManager.getSprite(registryEntry);
scope.drawSpriteStretched(sprite, 0, 18 * row, 16, 16);
scope.drawSpriteStretched(new SaturnSprite(sprite), 0, 18 * row, 16, 16);
scope.drawText(0.5f, getDurationAsString(effect), 18, 18 * row + 3, dimensions.font.value, -1);
row++;
}
@@ -7,6 +7,7 @@ import org.saturnclient.saturnclient.SaturnClient;
import org.saturnclient.saturnclient.menus.HudEditor;
import org.saturnclient.saturnclient.mixin.DrawContextAccessor;
import org.saturnclient.ui.RenderScope;
import org.saturnclient.ui.RenderScopeImpl;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
@@ -15,7 +16,6 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
import net.minecraft.client.font.TextRenderer;
import net.minecraft.client.gui.DrawContext;
import net.minecraft.client.gui.hud.InGameHud;
import net.minecraft.client.render.RenderLayer;
import net.minecraft.client.render.RenderTickCounter;
@Mixin(InGameHud.class)
@@ -26,29 +26,27 @@ public class RenderMixin {
if (textRenderer != null &&
!(SaturnClient.client.currentScreen instanceof HudEditor)) {
RenderScope renderScope = new RenderScope(context.getMatrices(),
RenderScope renderScope = new RenderScopeImpl(context.getMatrices(),
((DrawContextAccessor) context).getVertexConsumers());
for (org.saturnclient.modules.Module m : ModManager.ENABLED_MODS) {
if (m instanceof HudMod && m.isEnabled()) {
ModDimensions dim = ((HudMod) m).getDimensions();
renderScope.matrices.push();
renderScope.getMatrixStack().push();
renderScope.matrices.translate(dim.x.value, (float) dim.y.value, 0);
renderScope.getMatrixStack().translate(dim.x.value, (float) dim.y.value, 0);
renderScope.matrices.scale(dim.scale.value, dim.scale.value, 1.0f);
renderScope.getMatrixStack().scale(dim.scale.value, dim.scale.value, 1.0f);
if (dim.renderBackground) {
renderScope.drawRoundedRectangle(0, 0, dim.width, dim.height, dim.radius.value,
dim.bgColor.value);
}
renderScope.setRenderLayer(RenderLayer::getGuiTextured);
((HudMod) m).renderHud(renderScope);
renderScope.matrices.pop();
renderScope.getMatrixStack().pop();
} else {
m.render(renderScope);
}
@@ -18,6 +18,7 @@ import org.saturnclient.saturnclient.event.KeyInputHandler;
import org.saturnclient.saturnclient.impl.SaturnClientProvider;
import org.saturnclient.saturnclient.mixin.DrawContextAccessor;
import org.saturnclient.ui.RenderScope;
import org.saturnclient.ui.RenderScopeImpl;
import org.saturnclient.ui.SaturnScreen;
import org.saturnclient.ui.elements.ImageTexture;
import org.saturnclient.ui.resources.Textures;
@@ -57,7 +58,7 @@ public class SaturnClient implements ModInitializer {
.position(screen.width - 180 - 20, screen.height - 18 - 20));
} else {
ScreenEvents.afterRender(screen).register((screen1, context, mouseX, mouseY, tickDelta) -> {
RenderScope renderScope = new RenderScope(context.getMatrices(),
RenderScope renderScope = new RenderScopeImpl(context.getMatrices(),
((DrawContextAccessor) context).getVertexConsumers());
int width = context.getScaledWindowWidth();
@@ -1,22 +1,26 @@
package org.saturnclient.saturnclient.impl;
import java.io.File;
import java.awt.image.BufferedImage;
import org.lwjgl.glfw.GLFW;
import org.saturnclient.common.minecraft.IMinecraftClient;
import org.saturnclient.common.minecraft.MinecraftProvider;
import org.saturnclient.common.minecraft.bindings.SaturnIdentifier;
import org.saturnclient.cosmetics.cloak.utils.IdentifierUtils;
import org.saturnclient.saturnclient.SaturnClient;
import net.minecraft.client.MinecraftClient;
import net.minecraft.util.Identifier;
public class SaturnClientProvider extends MinecraftProvider {
@Override
public Object createIdentifier(String namespace, String path) {
return Identifier.of(namespace, path);
public IMinecraftClient getClient() {
return (IMinecraftClient) MinecraftClient.getInstance();
}
@Override
public File getRunDirectory() {
return SaturnClient.client.runDirectory;
public Object createIdentifier(String namespace, String path) {
return Identifier.of(namespace, path);
}
@Override
@@ -29,4 +33,9 @@ public class SaturnClientProvider extends MinecraftProvider {
public int getWidth(String text, int font) {
return Fonts.getWidth(text, font);
}
@Override
public void registerBufferedImageTexture(SaturnIdentifier i, BufferedImage bi) {
IdentifierUtils.registerBufferedImageTextureFast((Identifier) i.inner, bi);
}
}
@@ -12,6 +12,7 @@ import org.saturnclient.modules.Module;
import org.saturnclient.config.manager.ConfigManager;
import org.saturnclient.saturnclient.mixin.DrawContextAccessor;
import org.saturnclient.ui.RenderScope;
import org.saturnclient.ui.RenderScopeImpl;
import org.saturnclient.ui.SaturnScreen;
import java.util.ArrayList;
@@ -95,7 +96,7 @@ public class HudEditor extends Screen {
SaturnScreen.ROTATING_PANORAMA_RENDERER.render(context, this.width, this.height, 1.0F, delta);
}
RenderScope scope = new RenderScope(context.getMatrices(),
RenderScope scope = new RenderScopeImpl(context.getMatrices(),
((DrawContextAccessor) context).getVertexConsumers());
for (HudMod mod : hudMods) {
@@ -5,6 +5,7 @@ import java.util.function.Consumer;
import org.saturnclient.config.Theme;
import org.saturnclient.ui.RenderScope;
import org.saturnclient.ui.RenderScopeImpl;
import org.saturnclient.ui.resources.Textures;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Overwrite;
@@ -14,7 +15,6 @@ import org.spongepowered.asm.mixin.Final;
import net.minecraft.client.MinecraftClient;
import net.minecraft.client.gui.DrawContext;
import net.minecraft.client.gui.screen.SplashOverlay;
import net.minecraft.client.render.RenderLayer;
import net.minecraft.resource.ResourceReload;
import net.minecraft.util.Util;
import net.minecraft.util.math.MathHelper;
@@ -74,8 +74,7 @@ public abstract class SplashOverlayMixin {
: -1f;
// Get render scope for better UI
RenderScope scope = new RenderScope(context);
scope.setRenderLayer(RenderLayer::getGuiTextured);
RenderScope scope = new RenderScopeImpl(context);
// Draw background overlay
if (fadeOutProgress >= 1.0F) {
@@ -13,6 +13,7 @@ import com.mojang.blaze3d.systems.RenderSystem;
import org.saturnclient.common.minecraft.bindings.SaturnIdentifier;
import org.saturnclient.common.minecraft.bindings.SaturnItemStack;
import org.saturnclient.common.minecraft.bindings.SaturnSprite;
import org.saturnclient.common.minecraft.render.IMatrixStack;
import org.saturnclient.saturnclient.SaturnClient;
import org.saturnclient.saturnclient.mixin.DrawContextAccessor;
import org.saturnclient.ui.resources.Fonts;
@@ -58,6 +59,11 @@ public class RenderScopeImpl implements RenderScope {
this.itemRenderState = new ItemRenderState();
}
@Override
public IMatrixStack getMatrixStack() {
return (IMatrixStack) matrices;
}
@Override
public void setOpacity(float alpha) {
this.opacity = (int) (alpha * 255) << 24;
@@ -97,13 +97,13 @@ public abstract class SaturnScreen extends Screen {
RenderScope renderScope = new RenderScopeImpl(context.getMatrices(),
((DrawContextAccessor) context).getVertexConsumers());
renderScope.matrices.push();
renderScope.getMatrixStack().push();
renderScope.matrices.scale(0.5f, 0.5f, 0.5f);
renderScope.getMatrixStack().scale(0.5f, 0.5f, 0.5f);
ElementRenderer.render(new ArrayList<>(elements), elapsed, renderScope, mouseX, mouseY);
renderScope.matrices.pop();
renderScope.getMatrixStack().pop();
}
@Override
@@ -6,18 +6,15 @@ import org.saturnclient.ui.Element;
import org.saturnclient.ui.ElementContext;
import org.saturnclient.ui.RenderScope;
import net.minecraft.client.render.RenderLayer;
import net.minecraft.util.Identifier;
public class CosmeticPreview extends Element {
static int padding = 14;
Identifier sprite;
SaturnIdentifier sprite;
private Runnable onClick;
private boolean isSelected;
public CosmeticPreview(boolean isSelected, SaturnIdentifier sprite, Runnable onClick) {
this.sprite = (Identifier) sprite.inner;
this.sprite = sprite;
this.onClick = onClick;
this.isSelected = isSelected;
@@ -30,8 +27,6 @@ public class CosmeticPreview extends Element {
renderScope.drawRoundedRectangle(0, 0, width, height, Theme.WIDGET_RADIUS.value,
isSelected ? Theme.ACCENT.value : Theme.PRIMARY.value);
renderScope.setRenderLayer(RenderLayer::getGuiTextured);
int texWidth = width - padding;
int texHeight = height - padding;
@@ -23,13 +23,12 @@ public class ElementRenderer {
for (Element element : elements) {
element.playAnimationFrame(elapsed);
renderScope.matrices.push();
renderScope.getMatrixStack().push();
renderScope.setOpacity(element.opacity);
renderScope.matrices.translate(element.x, element.y, 0);
renderScope.matrices.scale(element.scale, element.scale, 1.0f);
renderScope.getMatrixStack().translate(element.x, element.y, 0);
renderScope.getMatrixStack().scale(element.scale, element.scale, 1.0f);
element.render(renderScope, new ElementContext(elapsed, mouseX, mouseY, element));
renderScope.matrices.pop();
renderScope.setRenderLayer(null);
renderScope.getMatrixStack().pop();
}
}
@@ -11,155 +11,151 @@ import org.saturnclient.ui.resources.Fonts;
import org.saturnclient.ui.resources.Textures;
import org.saturnclient.ui.screens.ConfigEditor;
import net.minecraft.client.render.RenderLayer;
public class SaturnModule extends Element {
private final Module mod;
private final Module mod;
static int p = 10; // padding
static int s = 14; // settings icon size
static int expand = 5; // settings icon click area
static int p = 10; // padding
static int s = 14; // settings icon size
static int expand = 5; // settings icon click area
public SaturnModule(Module mod) {
this.mod = mod;
this.width = 160;
this.height = 50;
public SaturnModule(Module mod) {
this.mod = mod;
this.width = 160;
this.height = 50;
}
@Override
public void render(RenderScope renderScope, ElementContext ctx) {
boolean hovered = ctx.isHovering();
boolean enabled = mod.isEnabled();
int iconX = width - s - p;
int iconY = height - s - p;
boolean settingsHover = ctx.isHovering(
getSettingsX(),
getSettingsY(),
getSettingsHitBox(),
getSettingsHitBox());
// Resolve theme colors
int bgColor = Theme.PRIMARY.value;
int fgColor = hovered && !settingsHover ? Theme.ACCENT.value : Theme.PRIMARY_FG.value;
int iconBg = enabled ? Theme.ACCENT.value : Theme.PRIMARY.value;
int iconFg = enabled ? Theme.ACCENT_FG.value : fgColor;
int settingsColor = settingsHover
? Theme.ACCENT.value
: Theme.withAlpha(160, fgColor);
int h = height - (p * 2);
// Main background
renderScope.drawRoundedRectangle(
0, 0,
width, height,
Theme.WIDGET_RADIUS.value,
bgColor);
// Icon background
renderScope.drawRoundedRectangle(
p, p,
h, h,
Theme.WIDGET_RADIUS.value,
iconBg);
// Icon
renderScope.drawTexture(
mod.getIconTexture(),
p + (p / 2),
p + (p / 2),
0, 0,
h - p,
h - p,
iconFg);
// Module name
renderScope.drawText(
0.6f,
mod.getName(),
p + h + 4,
p + 1,
Theme.FONT.value,
fgColor);
// Version (right aligned)
String version = mod.getVersion();
int versionWidth = (int) (Fonts.getWidth(version, Theme.FONT.value) * 0.35f);
renderScope.drawText(
0.35f,
version,
width - p - versionWidth,
p + 1,
Theme.FONT.value,
fgColor);
// Tags
int xt = p + h + 4;
for (String tag : mod.getTags()) {
int tagWidth = (int) (Fonts.getWidth(tag, Theme.FONT.value) * 0.4f);
renderScope.drawRoundedRectangle(
xt,
p + (h / 2),
tagWidth + 6,
12,
5,
Theme.ACCENT.value);
renderScope.drawText(
0.4f,
tag,
xt + 2,
p + (h / 2) + 3,
Theme.FONT.value,
Theme.ACCENT_FG.value);
xt += tagWidth + 9;
}
@Override
public void render(RenderScope renderScope, ElementContext ctx) {
boolean hovered = ctx.isHovering();
boolean enabled = mod.isEnabled();
// Settings icon
renderScope.drawTexture(
Textures.SETTINGS,
iconX,
iconY,
0, 0,
s, s,
settingsColor);
}
int iconX = width - s - p;
int iconY = height - s - p;
@Override
public void click(int mouseX, int mouseY) {
boolean settingsHover = Utils.isHovering(
mouseX - getSettingsX(),
mouseY - getSettingsY(),
getSettingsHitBox(),
getSettingsHitBox(),
1.0f);
boolean settingsHover = ctx.isHovering(
getSettingsX(),
getSettingsY(),
getSettingsHitBox(),
getSettingsHitBox());
renderScope.setRenderLayer(RenderLayer::getGuiTextured);
// Resolve theme colors
int bgColor = Theme.PRIMARY.value;
int fgColor = hovered && !settingsHover ? Theme.ACCENT.value : Theme.PRIMARY_FG.value;
int iconBg = enabled ? Theme.ACCENT.value : Theme.PRIMARY.value;
int iconFg = enabled ? Theme.ACCENT_FG.value : fgColor;
int settingsColor = settingsHover
? Theme.ACCENT.value
: Theme.withAlpha(160, fgColor);
int h = height - (p * 2);
// Main background
renderScope.drawRoundedRectangle(
0, 0,
width, height,
Theme.WIDGET_RADIUS.value,
bgColor);
// Icon background
renderScope.drawRoundedRectangle(
p, p,
h, h,
Theme.WIDGET_RADIUS.value,
iconBg);
// Icon
renderScope.drawTexture(
mod.getIconTexture(),
p + (p / 2),
p + (p / 2),
0, 0,
h - p,
h - p,
iconFg);
// Module name
renderScope.drawText(
0.6f,
mod.getName(),
p + h + 4,
p + 1,
Theme.FONT.value,
fgColor);
// Version (right aligned)
String version = mod.getVersion();
int versionWidth = (int) (Fonts.getWidth(version, Theme.FONT.value) * 0.35f);
renderScope.drawText(
0.35f,
version,
width - p - versionWidth,
p + 1,
Theme.FONT.value,
fgColor);
// Tags
int xt = p + h + 4;
for (String tag : mod.getTags()) {
int tagWidth = (int) (Fonts.getWidth(tag, Theme.FONT.value) * 0.4f);
renderScope.drawRoundedRectangle(
xt,
p + (h / 2),
tagWidth + 6,
12,
5,
Theme.ACCENT.value);
renderScope.drawText(
0.4f,
tag,
xt + 2,
p + (h / 2) + 3,
Theme.FONT.value,
Theme.ACCENT_FG.value);
xt += tagWidth + 9;
}
// Settings icon
renderScope.drawTexture(
Textures.SETTINGS,
iconX,
iconY,
0, 0,
s, s,
settingsColor);
if (settingsHover) {
SaturnClient.client.setScreen(new ConfigEditor(mod.getConfig()));
} else {
mod.setEnabled(!mod.isEnabled());
}
}
@Override
public void click(int mouseX, int mouseY) {
boolean settingsHover = Utils.isHovering(
mouseX - getSettingsX(),
mouseY - getSettingsY(),
getSettingsHitBox(),
getSettingsHitBox(),
1.0f);
private int getSettingsX() {
return width - s - p - expand;
}
if (settingsHover) {
SaturnClient.client.setScreen(new ConfigEditor(mod.getConfig()));
} else {
mod.setEnabled(!mod.isEnabled());
}
}
private int getSettingsY() {
return height - s - p - expand;
}
private int getSettingsX() {
return width - s - p - expand;
}
private int getSettingsY() {
return height - s - p - expand;
}
private int getSettingsHitBox() {
return s + expand * 2;
}
private int getSettingsHitBox() {
return s + expand * 2;
}
}
@@ -14,19 +14,16 @@ import org.saturnclient.ui.screens.ModMenu;
import org.saturnclient.ui.screens.cosmetics.CloakMenu;
import org.saturnclient.ui.screens.store.CloakStore;
import net.minecraft.client.render.RenderLayer;
import net.minecraft.util.Identifier;
public class Sidebar extends Element {
public static class SidebarComponent {
Runnable onClick;
boolean end;
Identifier sprite;
SaturnIdentifier sprite;
public SidebarComponent(SaturnIdentifier sprite, Runnable onClick, boolean end) {
this.onClick = onClick;
this.end = end;
this.sprite = (Identifier) sprite.inner;
this.sprite = sprite;
}
}
@@ -71,8 +68,6 @@ public class Sidebar extends Element {
int s = 30 - (padding * 2);
int s2 = s + padding;
renderScope.setRenderLayer(RenderLayer::getGuiTextured);
renderScope.drawRoundedRectangle(0, 0, width, height, Theme.BG_RADIUS.value, Theme.BACKGROUND.value);
int i = 0;
@@ -3,6 +3,7 @@ package org.saturnclient.ui.components;
import org.jetbrains.annotations.Nullable;
import org.joml.Quaternionf;
import org.joml.Vector3f;
import org.saturnclient.common.minecraft.bindings.SaturnQuaternionf;
import org.saturnclient.saturnclient.SaturnClient;
import org.saturnclient.ui.Element;
import org.saturnclient.ui.ElementContext;
@@ -21,7 +22,8 @@ public class SkinPreview extends Element {
this.negativeAngle = negativeAngle;
}
public static void drawEntity(RenderScope renderScope, int x1, int y1, int x2, int y2, int size, float f, float mouseX,
public static void drawEntity(RenderScope renderScope, int x1, int y1, int x2, int y2, int size, float f,
float mouseX,
float mouseY, LivingEntity entity, float angle, boolean negativeAngle) {
float g = (float) (x1 + x2) / 2.0F;
float h = (float) (y1 + y2) / 2.0F;
@@ -57,23 +59,24 @@ public class SkinPreview extends Element {
public static void drawEntity(RenderScope renderScope, float x, float y, float size, Vector3f vector3f,
Quaternionf quaternionf, @Nullable Quaternionf quaternionf2, LivingEntity entity) {
renderScope.matrices.push();
renderScope.matrices.translate((double) x, (double) y, 50.0);
renderScope.matrices.scale(size, size, -size);
renderScope.matrices.translate(vector3f.x, vector3f.y, vector3f.z);
renderScope.matrices.multiply(quaternionf);
renderScope.getMatrixStack().push();
renderScope.getMatrixStack().translate((double) x, (double) y, 50.0);
renderScope.getMatrixStack().scale(size, size, -size);
renderScope.getMatrixStack().translate(vector3f.x, vector3f.y, vector3f.z);
renderScope.getMatrixStack().multiply(new SaturnQuaternionf(quaternionf));
renderScope.draw();
DiffuseLighting.method_34742();
EntityRenderDispatcher entityRenderDispatcher = SaturnClient.client.getEntityRenderDispatcher();
entityRenderDispatcher.setRenderShadows(false);
renderScope.draw((vertexConsumers) -> {
entityRenderDispatcher.render(entity, 0.0, 0.0, 0.0, 1.0F, renderScope.matrices, vertexConsumers,
15728880);
});
// TODO add the method draw with vertex consumers
// renderScope.draw((vertexConsumers) -> {
// entityRenderDispatcher.render(entity, 0.0, 0.0, 0.0, 1.0F, renderScope.getMatrixStack(), vertexConsumers,
// 15728880);
// });
renderScope.draw();
entityRenderDispatcher.setRenderShadows(true);
renderScope.matrices.pop();
renderScope.getMatrixStack().pop();
DiffuseLighting.enableGuiDepthLighting();
}
@@ -81,7 +84,8 @@ public class SkinPreview extends Element {
public void render(RenderScope renderScope, ElementContext ctx) {
LivingEntity entity = SaturnClient.client.player;
if (entity != null) {
drawEntity(renderScope, 0, 0, 75, 78, 30, 0.0625F, ctx.mouseX / scale, ctx.mouseY / scale, entity, angle, negativeAngle);
drawEntity(renderScope, 0, 0, 75, 78, 30, 0.0625F, ctx.mouseX / scale, ctx.mouseY / scale, entity, angle,
negativeAngle);
}
}
}
@@ -116,7 +116,7 @@ public class CloakStore extends SaturnScreen {
long now = System.currentTimeMillis();
if (now - lastPurchaseTime >= 3000) {
Utils.notify(NotificationKind.Info, "Purchase processing", "Please wait");
// Utils.notify(NotificationKind.Info, "Purchase processing", "Please wait");
ServiceClient.buyCloak(cloak);
lastPurchaseTime = now;
@@ -129,16 +129,16 @@ public class CloakStore extends SaturnScreen {
RenderSystem.recordRenderCall(() -> {
SaturnClient.client.setScreen(new CloakStore(now));
Utils.notify(NotificationKind.Success,
"Purchase complete",
"Congrats, enjoy your new cloak!");
// Utils.notify(NotificationKind.Success,
// "Purchase complete",
// "Congrats, enjoy your new cloak!");
});
}).start();
} else {
Utils.notify(NotificationKind.Error,
"Timeout error",
"Please wait 3 seconds");
// Utils.notify(NotificationKind.Error,
// "Timeout error",
// "Please wait 3 seconds");
}
}
}
@@ -117,7 +117,7 @@ public class HatStore extends SaturnScreen {
long now = System.currentTimeMillis();
if (now - lastPurchaseTime >= 3000) {
Utils.notify(NotificationKind.Info, "Purchase processing", "Please wait");
// Utils.notify(NotificationKind.Info, "Purchase processing", "Please wait");
ServiceClient.buyHat(hat);
lastPurchaseTime = now;
@@ -130,16 +130,16 @@ public class HatStore extends SaturnScreen {
RenderSystem.recordRenderCall(() -> {
SaturnClient.client.setScreen(new HatStore(now));
Utils.notify(NotificationKind.Success,
"Purchase complete",
"Congrats, enjoy your new hat!");
// Utils.notify(NotificationKind.Success,
// "Purchase complete",
// "Congrats, enjoy your new hat!");
});
}).start();
} else {
Utils.notify(NotificationKind.Error,
"Timeout error",
"Please wait 3 seconds");
// Utils.notify(NotificationKind.Error,
// "Timeout error",
// "Please wait 3 seconds");
}
}
}