diff --git a/src/main/java/org/saturnclient/modules/ModManager.java b/src/main/java/org/saturnclient/modules/ModManager.java index a8d57fa..2725df1 100644 --- a/src/main/java/org/saturnclient/modules/ModManager.java +++ b/src/main/java/org/saturnclient/modules/ModManager.java @@ -7,8 +7,9 @@ import net.minecraft.client.util.math.MatrixStack; import org.saturnclient.modules.mods.*; import org.saturnclient.saturnclient.SaturnClient; -import org.saturnclient.saturnclient.SaturnClientConfig; import org.saturnclient.saturnclient.menus.HudEditor; +import org.saturnclient.saturnclient.mixin.DrawContextAccessor; +import org.saturnclient.ui2.RenderScope; public class ModManager { public static Module[] MODS = { @@ -29,7 +30,8 @@ public class ModManager { if (textRenderer != null && !(SaturnClient.client.currentScreen instanceof HudEditor)) { - SaturnClientConfig.textRenderer = textRenderer; + RenderScope renderScope = new RenderScope(context.getMatrices(), + ((DrawContextAccessor) context).getVertexConsumers()); for (Module m : MODS) { if (m instanceof HudMod && m.isEnabled()) { @@ -45,6 +47,8 @@ public class ModManager { ((HudMod) m).render(context); matrices.pop(); + } else { + m.render(context); } } } diff --git a/src/main/java/org/saturnclient/modules/Module.java b/src/main/java/org/saturnclient/modules/Module.java index a7757b7..b556ca3 100644 --- a/src/main/java/org/saturnclient/modules/Module.java +++ b/src/main/java/org/saturnclient/modules/Module.java @@ -4,6 +4,7 @@ import org.saturnclient.saturnclient.config.ConfigManager; import org.saturnclient.saturnclient.config.NamedProperty; import org.saturnclient.ui.Textures; +import net.minecraft.client.gui.DrawContext; import net.minecraft.util.Identifier; public abstract class Module { @@ -29,6 +30,8 @@ public abstract class Module { configManager = config; } + public void render(DrawContext scope) {} + public abstract boolean isEnabled(); public abstract void setEnabled(boolean e); @@ -36,7 +39,7 @@ public abstract class Module { public final String getName() { return name; } - + public Identifier getIconTexture() { return Textures.getModIcon(namespace); } diff --git a/src/main/java/org/saturnclient/modules/mods/Crosshair.java b/src/main/java/org/saturnclient/modules/mods/Crosshair.java index 7e641d2..ef9a10a 100644 --- a/src/main/java/org/saturnclient/modules/mods/Crosshair.java +++ b/src/main/java/org/saturnclient/modules/mods/Crosshair.java @@ -1,10 +1,19 @@ package org.saturnclient.modules.mods; import org.saturnclient.modules.Module; +import org.saturnclient.saturnclient.SaturnClient; import org.saturnclient.saturnclient.config.NamedProperty; import org.saturnclient.saturnclient.config.Property; +import com.mojang.blaze3d.systems.RenderSystem; + +import net.minecraft.client.gui.DrawContext; +import net.minecraft.client.render.RenderLayer; +import net.minecraft.util.Identifier; + public class Crosshair extends Module { + Identifier textureLocation = Identifier.of("saturnclient", "textures/gui/hud/crosshair_range.png"); + public static NamedProperty enabled = new Property<>(false).named("Enabled"); public static NamedProperty range_indicator = new Property<>(false).named("Range Indicator"); @@ -12,6 +21,23 @@ public class Crosshair extends Module { super("Crosshair", "crosshair", enabled, range_indicator); } + @Override + public void render(DrawContext context) { + if (enabled.prop.value + && range_indicator.prop.value + && SaturnClient.client.targetedEntity != null + && SaturnClient.client.targetedEntity.isAlive()) { + RenderSystem.setShaderTexture(0, textureLocation); + int scaledWidth = 15; + int scaledHeight = 15; + + context.drawTexture(RenderLayer::getCrosshair, textureLocation, + (context.getScaledWindowWidth() - scaledWidth) / 2, + (context.getScaledWindowHeight() - scaledHeight) / 2, 0.0F, 0.0F, scaledWidth, scaledHeight, + scaledWidth, scaledHeight); + } + } + @Override public boolean isEnabled() { return enabled.prop.value; diff --git a/src/main/java/org/saturnclient/saturnclient/SaturnClientConfig.java b/src/main/java/org/saturnclient/saturnclient/SaturnClientConfig.java index ef5ca98..952a658 100644 --- a/src/main/java/org/saturnclient/saturnclient/SaturnClientConfig.java +++ b/src/main/java/org/saturnclient/saturnclient/SaturnClientConfig.java @@ -7,7 +7,6 @@ import org.saturnclient.ui.SaturnUi; import org.saturnclient.ui.Textures; import org.saturnclient.ui.animations.FadeIn; -import net.minecraft.client.font.TextRenderer; import net.minecraft.util.Identifier; import net.minecraft.util.math.ColorHelper; @@ -31,7 +30,6 @@ public class SaturnClientConfig { new Property<>(true); public static int WHITE = ColorHelper.getArgb(255, 255, 255, 255); - public static TextRenderer textRenderer = null; public static int getWhite(float alpha) { return ((int) (alpha * 255) << 24) | (normal.value & 0x00FFFFFF); diff --git a/src/main/java/org/saturnclient/saturnclient/mixin/Crosshair.java b/src/main/java/org/saturnclient/saturnclient/mixin/Crosshair.java deleted file mode 100644 index 41025d7..0000000 --- a/src/main/java/org/saturnclient/saturnclient/mixin/Crosshair.java +++ /dev/null @@ -1,42 +0,0 @@ -/* - * Code from: https://github.com/Selyss - * Repo: https://github.com/Selyss/CrosshairIndicator/tree/main -*/ - -package org.saturnclient.saturnclient.mixin; - -import com.mojang.blaze3d.systems.RenderSystem; -import org.saturnclient.saturnclient.SaturnClient; -import net.minecraft.client.render.RenderLayer; -import net.minecraft.client.render.RenderTickCounter; -import net.minecraft.util.Identifier; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.Unique; -import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.Inject; -import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; -import net.minecraft.client.gui.hud.InGameHud; -import net.minecraft.client.gui.DrawContext; - -@Mixin(InGameHud.class) -public class Crosshair { - @Unique - Identifier textureLocation = Identifier.of("saturnclient", "textures/gui/hud/crosshair_range.png"); - - @Inject(method = "renderCrosshair", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/gui/DrawContext;drawGuiTexture(Ljava/util/function/Function;Lnet/minecraft/util/Identifier;IIII)V", ordinal = 0)) - private void drawCrosshair(DrawContext context, RenderTickCounter tickCounter, CallbackInfo ci) { - if (org.saturnclient.modules.mods.Crosshair.enabled.prop.value - && org.saturnclient.modules.mods.Crosshair.range_indicator.prop.value - && SaturnClient.client.targetedEntity != null - && SaturnClient.client.targetedEntity.isAlive()) { - RenderSystem.setShaderTexture(0, textureLocation); - int scaledWidth = 15; - int scaledHeight = 15; - - context.drawTexture(RenderLayer::getCrosshair, textureLocation, - (context.getScaledWindowWidth() - scaledWidth) / 2, - (context.getScaledWindowHeight() - scaledHeight) / 2, 0.0F, 0.0F, scaledWidth, scaledHeight, - scaledWidth, scaledHeight); - } - } -} \ No newline at end of file diff --git a/src/main/java/org/saturnclient/ui/components/SaturnModComp.java b/src/main/java/org/saturnclient/ui/components/SaturnModComp.java index 87494ab..d9031ea 100644 --- a/src/main/java/org/saturnclient/ui/components/SaturnModComp.java +++ b/src/main/java/org/saturnclient/ui/components/SaturnModComp.java @@ -64,10 +64,10 @@ public class SaturnModComp extends SaturnWidget { color); context.drawText( - SaturnClientConfig.textRenderer, + SaturnClient.client.textRenderer, SaturnUi.text(mod.getName()), 20, - (21 - SaturnClientConfig.textRenderer.fontHeight) / 2, + (21 - SaturnClient.client.textRenderer.fontHeight) / 2, color, false); diff --git a/src/main/java/org/saturnclient/ui/widgets/SaturnText.java b/src/main/java/org/saturnclient/ui/widgets/SaturnText.java index 9171447..3b5a387 100644 --- a/src/main/java/org/saturnclient/ui/widgets/SaturnText.java +++ b/src/main/java/org/saturnclient/ui/widgets/SaturnText.java @@ -1,6 +1,8 @@ package org.saturnclient.ui.widgets; import net.minecraft.client.gui.DrawContext; + +import org.saturnclient.saturnclient.SaturnClient; import org.saturnclient.saturnclient.SaturnClientConfig; import org.saturnclient.ui.SaturnUi; import org.saturnclient.ui.SaturnWidget; @@ -11,8 +13,8 @@ public class SaturnText extends SaturnWidget { public SaturnText(String text) { this.text = text; - this.width = SaturnClientConfig.textRenderer.getWidth(SaturnUi.text(text)); - this.height = SaturnClientConfig.textRenderer.fontHeight; + this.width = SaturnClient.client.textRenderer.getWidth(SaturnUi.text(text)); + this.height = SaturnClient.client.textRenderer.fontHeight; } public SaturnText(String text, int color) { @@ -26,7 +28,7 @@ public class SaturnText extends SaturnWidget { int mouseX, int mouseY) { context.drawText( - SaturnClientConfig.textRenderer, + SaturnClient.client.textRenderer, SaturnUi.text(text), 0, 0, diff --git a/src/main/resources/saturnclient.mixins.json b/src/main/resources/saturnclient.mixins.json index e3467da..f0a06a3 100644 --- a/src/main/resources/saturnclient.mixins.json +++ b/src/main/resources/saturnclient.mixins.json @@ -9,7 +9,6 @@ "PlayerEntityRendererMixin", "WhoAmI", "SaturnReload", - "Crosshair", "DrawContextAccessor" ], "injectors": {