diff --git a/gradle.properties b/gradle.properties index 42ce2c8..ab09281 100644 --- a/gradle.properties +++ b/gradle.properties @@ -6,8 +6,8 @@ yarn_mappings=1.21.4+build.7 loader_version=0.16.10 fabric_version=0.114.0+1.21.4 -mod_version = 0.0.3-beta0 +mod_version = 0.0.3-beta3 maven_group = org.saturnclient archives_base_name = saturnclient -player_anim = 2.0.3+1.21.4 \ No newline at end of file +player_anim = 2.0.3+1.21.4 diff --git a/src/main/java/org/saturnclient/modules/ModManager.java b/src/main/java/org/saturnclient/modules/ModManager.java index c1fd76a..459e661 100644 --- a/src/main/java/org/saturnclient/modules/ModManager.java +++ b/src/main/java/org/saturnclient/modules/ModManager.java @@ -1,26 +1,19 @@ package org.saturnclient.modules; import net.fabricmc.fabric.api.client.event.lifecycle.v1.ClientTickEvents; -import net.fabricmc.fabric.api.client.rendering.v1.HudRenderCallback; -import net.minecraft.client.font.TextRenderer; -import net.minecraft.client.render.RenderLayer; import org.saturnclient.modules.mods.*; -import org.saturnclient.saturnclient.SaturnClient; -import org.saturnclient.saturnclient.menus.HudEditor; -import org.saturnclient.saturnclient.mixin.DrawContextAccessor; -import org.saturnclient.ui2.RenderScope; public class ModManager { public static Module[] MODS = { - new Crosshair(), - new AutoSprint(), - new ArmorDisplay(), - new Fps(), - new PotionDisplay(), - new Coordinates(), - new Freelook(), - new Keystrokes() + new Crosshair(), + new AutoSprint(), + new ArmorDisplay(), + new Fps(), + new PotionDisplay(), + new Coordinates(), + new Freelook(), + new Keystrokes() }; public static void init() { @@ -31,39 +24,5 @@ public class ModManager { } } }); - - HudRenderCallback.EVENT.register((context, _o) -> { - TextRenderer textRenderer = SaturnClient.client.textRenderer; - - if (textRenderer != null && - !(SaturnClient.client.currentScreen instanceof HudEditor)) { - RenderScope renderScope = new RenderScope(context.getMatrices(), - ((DrawContextAccessor) context).getVertexConsumers()); - - for (Module m : MODS) { - if (m instanceof HudMod && m.isEnabled()) { - ModDimensions dim = ((HudMod) m).getDimensions(); - - renderScope.matrices.push(); - - renderScope.matrices.translate(dim.x.value, (float) dim.y.value, 0); - - renderScope.matrices.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(); - } else { - m.render(renderScope); - } - } - } - }); } } diff --git a/src/main/java/org/saturnclient/modules/mods/mixins/RenderMixin.java b/src/main/java/org/saturnclient/modules/mods/mixins/RenderMixin.java new file mode 100644 index 0000000..e32f64f --- /dev/null +++ b/src/main/java/org/saturnclient/modules/mods/mixins/RenderMixin.java @@ -0,0 +1,58 @@ +package org.saturnclient.modules.mods.mixins; + +import org.saturnclient.modules.HudMod; +import org.saturnclient.modules.ModDimensions; +import org.saturnclient.modules.ModManager; +import org.saturnclient.saturnclient.SaturnClient; +import org.saturnclient.saturnclient.menus.HudEditor; +import org.saturnclient.saturnclient.mixin.DrawContextAccessor; +import org.saturnclient.ui2.RenderScope; +import org.spongepowered.asm.mixin.Mixin; +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.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) +public class RenderMixin { + @Inject(method = "renderChat", at = @At("TAIL")) + public void renderMods(DrawContext context, RenderTickCounter tickCounter, CallbackInfo ci) { + TextRenderer textRenderer = SaturnClient.client.textRenderer; + + if (textRenderer != null && + !(SaturnClient.client.currentScreen instanceof HudEditor)) { + RenderScope renderScope = new RenderScope(context.getMatrices(), + ((DrawContextAccessor) context).getVertexConsumers()); + + for (org.saturnclient.modules.Module m : ModManager.MODS) { + if (m instanceof HudMod && m.isEnabled()) { + ModDimensions dim = ((HudMod) m).getDimensions(); + + renderScope.matrices.push(); + + renderScope.matrices.translate(dim.x.value, (float) dim.y.value, 0); + + renderScope.matrices.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(); + } else { + m.render(renderScope); + } + } + } + } +} diff --git a/src/main/java/org/saturnclient/saturnclient/config/Property.java b/src/main/java/org/saturnclient/saturnclient/config/Property.java index 0940b70..c8baf9f 100644 --- a/src/main/java/org/saturnclient/saturnclient/config/Property.java +++ b/src/main/java/org/saturnclient/saturnclient/config/Property.java @@ -89,13 +89,17 @@ public class Property { } public void next() { - if ((Integer) value < availableValues.length-1) setValue((Integer)value+1); - else setValue(0); + if ((Integer) value < availableValues.length - 1) + setValue((Integer) value + 1); + else + setValue(0); } public void prev() { - if ((Integer) value > 0) setValue((Integer)value-1); - else setValue(availableValues.length - 1); + if ((Integer) value > 0) + setValue((Integer) value - 1); + else + setValue(availableValues.length - 1); } public void setSelection(int selection) { @@ -197,18 +201,14 @@ public class Property { } public boolean isKeyPressed() { - return (Integer) value == -1 ? false : GLFW.glfwGetKey(SaturnClient.client.getWindow().getHandle(), (Integer) (Object) value) == GLFW.GLFW_PRESS; + return (Integer) value == -1 ? false + : GLFW.glfwGetKey(SaturnClient.client.getWindow().getHandle(), + (Integer) (Object) value) == GLFW.GLFW_PRESS && SaturnClient.client.currentScreen == null; } public boolean wasKeyPressed() { - long window = SaturnClient.client.getWindow().getHandle(); - int key = (Integer) value; - - boolean isPressed = key != -1 && GLFW.glfwGetKey(window, key) == GLFW.GLFW_PRESS; - - boolean wasJustPressed = isPressed && !wasPressedLastTick; - wasPressedLastTick = isPressed; - - return wasJustPressed; + boolean isPressed = this.isKeyPressed(); + wasPressedLastTick = isPressed && !wasPressedLastTick; + return wasPressedLastTick; } } diff --git a/src/main/java/org/saturnclient/saturnclient/event/KeyInputHandler.java b/src/main/java/org/saturnclient/saturnclient/event/KeyInputHandler.java index 12db7dd..7f6ad17 100644 --- a/src/main/java/org/saturnclient/saturnclient/event/KeyInputHandler.java +++ b/src/main/java/org/saturnclient/saturnclient/event/KeyInputHandler.java @@ -39,7 +39,7 @@ public class KeyInputHandler { client.setScreen(new ShiftMenu()); } - if (SaturnClientConfig.openEmoteWheel.wasKeyPressed()) { + if (SaturnClientConfig.openEmoteWheel.wasKeyPressed() && client.currentScreen == null) { client.setScreen(new EmoteWheel()); } diff --git a/src/main/resources/mods.mixins.json b/src/main/resources/mods.mixins.json index fdda500..2fbf6c5 100644 --- a/src/main/resources/mods.mixins.json +++ b/src/main/resources/mods.mixins.json @@ -5,7 +5,8 @@ "compatibilityLevel": "JAVA_21", "client": [ "CameraMixin", - "EntityMixin" + "EntityMixin", + "RenderMixin" ], "injectors": { "defaultRequire": 1