diff --git a/common/src/main/java/org/saturnclient/common/minecraft/bindings/SaturnItemStack.java b/common/src/main/java/org/saturnclient/common/minecraft/bindings/SaturnItemStack.java index 3cc69cf..664cc97 100644 --- a/common/src/main/java/org/saturnclient/common/minecraft/bindings/SaturnItemStack.java +++ b/common/src/main/java/org/saturnclient/common/minecraft/bindings/SaturnItemStack.java @@ -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); } } diff --git a/common/src/main/java/org/saturnclient/common/minecraft/bindings/SaturnSprite.java b/common/src/main/java/org/saturnclient/common/minecraft/bindings/SaturnSprite.java index a4ba9cc..0db35df 100644 --- a/common/src/main/java/org/saturnclient/common/minecraft/bindings/SaturnSprite.java +++ b/common/src/main/java/org/saturnclient/common/minecraft/bindings/SaturnSprite.java @@ -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); } } diff --git a/common/src/main/java/org/saturnclient/ui/RenderScope.java b/common/src/main/java/org/saturnclient/ui/RenderScope.java index 598a6ee..3467e58 100644 --- a/common/src/main/java/org/saturnclient/ui/RenderScope.java +++ b/common/src/main/java/org/saturnclient/ui/RenderScope.java @@ -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); diff --git a/common/src/main/java/org/saturnclient/ui/Utils.java b/common/src/main/java/org/saturnclient/ui/Utils.java index 9f66b5e..2887d0a 100644 --- a/common/src/main/java/org/saturnclient/ui/Utils.java +++ b/common/src/main/java/org/saturnclient/ui/Utils.java @@ -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)); + // } // } } diff --git a/common/src/main/java/org/saturnclient/ui/elements/ImageTexture.java b/common/src/main/java/org/saturnclient/ui/elements/ImageTexture.java index 442e723..51ff78a 100644 --- a/common/src/main/java/org/saturnclient/ui/elements/ImageTexture.java +++ b/common/src/main/java/org/saturnclient/ui/elements/ImageTexture.java @@ -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); } diff --git a/common/src/main/java/org/saturnclient/ui/elements/Scroll.java b/common/src/main/java/org/saturnclient/ui/elements/Scroll.java index 434ea39..543b2e9 100644 --- a/common/src/main/java/org/saturnclient/ui/elements/Scroll.java +++ b/common/src/main/java/org/saturnclient/ui/elements/Scroll.java @@ -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); } } diff --git a/versions/1.21.4/src/main/java/org/saturnclient/modules/mods/ArmorDisplay.java b/versions/1.21.4/src/main/java/org/saturnclient/modules/mods/ArmorDisplay.java index ac1d311..84fe828 100644 --- a/versions/1.21.4/src/main/java/org/saturnclient/modules/mods/ArmorDisplay.java +++ b/versions/1.21.4/src/main/java/org/saturnclient/modules/mods/ArmorDisplay.java @@ -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++; } diff --git a/versions/1.21.4/src/main/java/org/saturnclient/modules/mods/Crosshair.java b/versions/1.21.4/src/main/java/org/saturnclient/modules/mods/Crosshair.java index 2fd4532..3f5df8c 100644 --- a/versions/1.21.4/src/main/java/org/saturnclient/modules/mods/Crosshair.java +++ b/versions/1.21.4/src/main/java/org/saturnclient/modules/mods/Crosshair.java @@ -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 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); diff --git a/versions/1.21.4/src/main/java/org/saturnclient/modules/mods/StatusEffects.java b/versions/1.21.4/src/main/java/org/saturnclient/modules/mods/StatusEffects.java index 3c95d3f..19c6e4f 100644 --- a/versions/1.21.4/src/main/java/org/saturnclient/modules/mods/StatusEffects.java +++ b/versions/1.21.4/src/main/java/org/saturnclient/modules/mods/StatusEffects.java @@ -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 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++; } diff --git a/versions/1.21.4/src/main/java/org/saturnclient/modules/mods/mixins/RenderMixin.java b/versions/1.21.4/src/main/java/org/saturnclient/modules/mods/mixins/RenderMixin.java index 0641b63..c400868 100644 --- a/versions/1.21.4/src/main/java/org/saturnclient/modules/mods/mixins/RenderMixin.java +++ b/versions/1.21.4/src/main/java/org/saturnclient/modules/mods/mixins/RenderMixin.java @@ -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); } diff --git a/versions/1.21.4/src/main/java/org/saturnclient/saturnclient/SaturnClient.java b/versions/1.21.4/src/main/java/org/saturnclient/saturnclient/SaturnClient.java index 4e1e50c..c9d0f59 100644 --- a/versions/1.21.4/src/main/java/org/saturnclient/saturnclient/SaturnClient.java +++ b/versions/1.21.4/src/main/java/org/saturnclient/saturnclient/SaturnClient.java @@ -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(); diff --git a/versions/1.21.4/src/main/java/org/saturnclient/saturnclient/impl/SaturnClientProvider.java b/versions/1.21.4/src/main/java/org/saturnclient/saturnclient/impl/SaturnClientProvider.java index 579a3b8..bc2956b 100644 --- a/versions/1.21.4/src/main/java/org/saturnclient/saturnclient/impl/SaturnClientProvider.java +++ b/versions/1.21.4/src/main/java/org/saturnclient/saturnclient/impl/SaturnClientProvider.java @@ -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); + } } diff --git a/versions/1.21.4/src/main/java/org/saturnclient/saturnclient/menus/HudEditor.java b/versions/1.21.4/src/main/java/org/saturnclient/saturnclient/menus/HudEditor.java index 230f70c..29441d6 100644 --- a/versions/1.21.4/src/main/java/org/saturnclient/saturnclient/menus/HudEditor.java +++ b/versions/1.21.4/src/main/java/org/saturnclient/saturnclient/menus/HudEditor.java @@ -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) { diff --git a/versions/1.21.4/src/main/java/org/saturnclient/saturnclient/mixin/SplashOverlayMixin.java b/versions/1.21.4/src/main/java/org/saturnclient/saturnclient/mixin/SplashOverlayMixin.java index d90c969..4449442 100644 --- a/versions/1.21.4/src/main/java/org/saturnclient/saturnclient/mixin/SplashOverlayMixin.java +++ b/versions/1.21.4/src/main/java/org/saturnclient/saturnclient/mixin/SplashOverlayMixin.java @@ -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) { diff --git a/versions/1.21.4/src/main/java/org/saturnclient/ui/RenderScopeImpl.java b/versions/1.21.4/src/main/java/org/saturnclient/ui/RenderScopeImpl.java index 567ec51..48daf24 100644 --- a/versions/1.21.4/src/main/java/org/saturnclient/ui/RenderScopeImpl.java +++ b/versions/1.21.4/src/main/java/org/saturnclient/ui/RenderScopeImpl.java @@ -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; diff --git a/versions/1.21.4/src/main/java/org/saturnclient/ui/SaturnScreen.java b/versions/1.21.4/src/main/java/org/saturnclient/ui/SaturnScreen.java index fed39aa..66507c7 100644 --- a/versions/1.21.4/src/main/java/org/saturnclient/ui/SaturnScreen.java +++ b/versions/1.21.4/src/main/java/org/saturnclient/ui/SaturnScreen.java @@ -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 diff --git a/versions/1.21.4/src/main/java/org/saturnclient/ui/components/CosmeticPreview.java b/versions/1.21.4/src/main/java/org/saturnclient/ui/components/CosmeticPreview.java index 2267c2e..2ae9d49 100644 --- a/versions/1.21.4/src/main/java/org/saturnclient/ui/components/CosmeticPreview.java +++ b/versions/1.21.4/src/main/java/org/saturnclient/ui/components/CosmeticPreview.java @@ -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; diff --git a/versions/1.21.4/src/main/java/org/saturnclient/ui/components/ElementRenderer.java b/versions/1.21.4/src/main/java/org/saturnclient/ui/components/ElementRenderer.java index 1a4a21c..5ad9039 100644 --- a/versions/1.21.4/src/main/java/org/saturnclient/ui/components/ElementRenderer.java +++ b/versions/1.21.4/src/main/java/org/saturnclient/ui/components/ElementRenderer.java @@ -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(); } } diff --git a/versions/1.21.4/src/main/java/org/saturnclient/ui/components/SaturnModule.java b/versions/1.21.4/src/main/java/org/saturnclient/ui/components/SaturnModule.java index 12fa57e..140b57b 100644 --- a/versions/1.21.4/src/main/java/org/saturnclient/ui/components/SaturnModule.java +++ b/versions/1.21.4/src/main/java/org/saturnclient/ui/components/SaturnModule.java @@ -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; + } } \ No newline at end of file diff --git a/versions/1.21.4/src/main/java/org/saturnclient/ui/components/Sidebar.java b/versions/1.21.4/src/main/java/org/saturnclient/ui/components/Sidebar.java index fa76050..8c4ef45 100644 --- a/versions/1.21.4/src/main/java/org/saturnclient/ui/components/Sidebar.java +++ b/versions/1.21.4/src/main/java/org/saturnclient/ui/components/Sidebar.java @@ -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; diff --git a/versions/1.21.4/src/main/java/org/saturnclient/ui/components/SkinPreview.java b/versions/1.21.4/src/main/java/org/saturnclient/ui/components/SkinPreview.java index b6fa76b..58b82ab 100644 --- a/versions/1.21.4/src/main/java/org/saturnclient/ui/components/SkinPreview.java +++ b/versions/1.21.4/src/main/java/org/saturnclient/ui/components/SkinPreview.java @@ -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); } } } diff --git a/versions/1.21.4/src/main/java/org/saturnclient/ui/screens/store/CloakStore.java b/versions/1.21.4/src/main/java/org/saturnclient/ui/screens/store/CloakStore.java index 2d520dd..d72e638 100644 --- a/versions/1.21.4/src/main/java/org/saturnclient/ui/screens/store/CloakStore.java +++ b/versions/1.21.4/src/main/java/org/saturnclient/ui/screens/store/CloakStore.java @@ -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"); } } } diff --git a/versions/1.21.4/src/main/java/org/saturnclient/ui/screens/store/HatStore.java b/versions/1.21.4/src/main/java/org/saturnclient/ui/screens/store/HatStore.java index e37509e..5be474d 100644 --- a/versions/1.21.4/src/main/java/org/saturnclient/ui/screens/store/HatStore.java +++ b/versions/1.21.4/src/main/java/org/saturnclient/ui/screens/store/HatStore.java @@ -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"); } } }