diff --git a/src/main/java/me/kawaiizenbo/moonlight/Moonlight.java b/src/main/java/me/kawaiizenbo/moonlight/Moonlight.java index c4f7d46..7b9f4c9 100644 --- a/src/main/java/me/kawaiizenbo/moonlight/Moonlight.java +++ b/src/main/java/me/kawaiizenbo/moonlight/Moonlight.java @@ -26,8 +26,6 @@ public class Moonlight implements ModInitializer public static final String clientTag = ColorUtils.aqua + "Moonlight Meadows"; public static final String versionTag = ColorUtils.magenta + "v0.3.0"; public static Config CONFIG = new Config(); - public static int uiColorA = 0xFF55FFFF; - public static int uiColor = 0x55FFFF; @Override public void onInitialize() diff --git a/src/main/java/me/kawaiizenbo/moonlight/mixin/InGameHudMixin.java b/src/main/java/me/kawaiizenbo/moonlight/mixin/InGameHudMixin.java index 5d39f9d..7c737f5 100644 --- a/src/main/java/me/kawaiizenbo/moonlight/mixin/InGameHudMixin.java +++ b/src/main/java/me/kawaiizenbo/moonlight/mixin/InGameHudMixin.java @@ -6,7 +6,8 @@ import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; import me.kawaiizenbo.moonlight.module.ModuleManager; -import me.kawaiizenbo.moonlight.ui.HUDOverlay; +import me.kawaiizenbo.moonlight.module.modules.HUDEnabler; +import me.kawaiizenbo.moonlight.ui.LegacyHUD; import me.kawaiizenbo.moonlight.ui.ModulesListOverlay; import net.minecraft.client.gui.DrawContext; import net.minecraft.client.gui.hud.InGameHud; @@ -18,7 +19,12 @@ public class InGameHudMixin { @Inject(at = @At("TAIL"), method = "render") public void onRender (DrawContext drawContext, RenderTickCounter tickCounter, CallbackInfo info) { - if (ModuleManager.INSTANCE.getModuleByName("HUD").enabled) HUDOverlay.INSTANCE.render(drawContext, drawContext.getScaledWindowWidth(), drawContext.getScaledWindowHeight()); + HUDEnabler hudModule = (HUDEnabler)ModuleManager.INSTANCE.getModuleByName("HUD"); + if (hudModule.enabled) + { + if (hudModule.legacyHud.value) LegacyHUD.INSTANCE.render(drawContext, drawContext.getScaledWindowWidth(), drawContext.getScaledWindowHeight()); + // wip + } if (ModuleManager.INSTANCE.getModuleByName("ModulesList").enabled) ModulesListOverlay.INSTANCE.render(drawContext, drawContext.getScaledWindowWidth(), drawContext.getScaledWindowHeight()); } diff --git a/src/main/java/me/kawaiizenbo/moonlight/module/Module.java b/src/main/java/me/kawaiizenbo/moonlight/module/Module.java index dbeecd4..371ad6d 100644 --- a/src/main/java/me/kawaiizenbo/moonlight/module/Module.java +++ b/src/main/java/me/kawaiizenbo/moonlight/module/Module.java @@ -18,6 +18,7 @@ public abstract class Module public Category category; public boolean enabled; public ArrayList settings; + public boolean showEditButton; public BooleanSetting showInModulesList = new BooleanSetting("Show in Modules List", true); public KeycodeSetting keybind = new KeycodeSetting("Keybind", 0); diff --git a/src/main/java/me/kawaiizenbo/moonlight/module/ModuleManager.java b/src/main/java/me/kawaiizenbo/moonlight/module/ModuleManager.java index 7b6c99d..0ec1525 100644 --- a/src/main/java/me/kawaiizenbo/moonlight/module/ModuleManager.java +++ b/src/main/java/me/kawaiizenbo/moonlight/module/ModuleManager.java @@ -14,7 +14,7 @@ public class ModuleManager registerModules( new Fly(), new NoFall(), - new HUDModule(), + new HUDEnabler(), new Step(), new Fullbright(), new Speed(), diff --git a/src/main/java/me/kawaiizenbo/moonlight/module/modules/HUDEnabler.java b/src/main/java/me/kawaiizenbo/moonlight/module/modules/HUDEnabler.java new file mode 100644 index 0000000..0b53c3e --- /dev/null +++ b/src/main/java/me/kawaiizenbo/moonlight/module/modules/HUDEnabler.java @@ -0,0 +1,19 @@ +package me.kawaiizenbo.moonlight.module.modules; + +import me.kawaiizenbo.moonlight.module.Category; +import me.kawaiizenbo.moonlight.module.Module; +import me.kawaiizenbo.moonlight.module.settings.BooleanSetting; + +public class HUDEnabler extends Module +{ + public BooleanSetting legacyHud = new BooleanSetting("Legacy HUD", true); + + public HUDEnabler() + { + super("HUD", "The Moonlight HUD.", Category.RENDER); + this.enabled = true; + this.showInModulesList.value = false; + this.showEditButton = true; + settings.add(legacyHud); + } +} diff --git a/src/main/java/me/kawaiizenbo/moonlight/module/modules/HUDModule.java b/src/main/java/me/kawaiizenbo/moonlight/module/modules/HUDModule.java deleted file mode 100644 index e485076..0000000 --- a/src/main/java/me/kawaiizenbo/moonlight/module/modules/HUDModule.java +++ /dev/null @@ -1,51 +0,0 @@ -package me.kawaiizenbo.moonlight.module.modules; - -import me.kawaiizenbo.moonlight.Moonlight; -import me.kawaiizenbo.moonlight.module.Category; -import me.kawaiizenbo.moonlight.module.Module; -import me.kawaiizenbo.moonlight.module.settings.BooleanSetting; -import me.kawaiizenbo.moonlight.module.settings.DoubleSetting; -import me.kawaiizenbo.moonlight.ui.HUDOverlay; -import me.kawaiizenbo.moonlight.util.ColorUtils; - -public class HUDModule extends Module -{ - public BooleanSetting clientTag = new BooleanSetting("Client Tag", true); - public DoubleSetting r = new DoubleSetting("Red", 0x55, 0, 255, 0); - public DoubleSetting g = new DoubleSetting("Green", 255, 0, 255, 0); - public DoubleSetting b = new DoubleSetting("Blue", 255, 0, 255, 0); - //public ColorSetting color = new ColorSetting("Color", 0x55FFFF, ReflectionUtils.tryGetMethod("updateHUD", getClass())); - - public HUDModule() - { - super("HUD", "The Moonlight HUD. Toggle to update.", Category.RENDER); - this.enabled = true; - this.showInModulesList.value = false; - - settings.add(clientTag); - settings.add(r); - settings.add(g); - settings.add(b); - //settings.add(color); - } - - @Override - public void onEnable() - { - super.onEnable(); - HUDOverlay.INSTANCE.showClientTag = clientTag.value; - Moonlight.uiColorA = - ColorUtils.rgbaToInt( - (int)r.value, - (int)g.value, - (int)b.value, - 255 - ); - Moonlight.uiColor = - ColorUtils.rgbToInt( - (int)r.value, - (int)g.value, - (int)b.value - ); - } -} diff --git a/src/main/java/me/kawaiizenbo/moonlight/ui/HUDOverlay.java b/src/main/java/me/kawaiizenbo/moonlight/ui/LegacyHUD.java similarity index 54% rename from src/main/java/me/kawaiizenbo/moonlight/ui/HUDOverlay.java rename to src/main/java/me/kawaiizenbo/moonlight/ui/LegacyHUD.java index 2577502..2caf08f 100644 --- a/src/main/java/me/kawaiizenbo/moonlight/ui/HUDOverlay.java +++ b/src/main/java/me/kawaiizenbo/moonlight/ui/LegacyHUD.java @@ -1,8 +1,6 @@ package me.kawaiizenbo.moonlight.ui; import me.kawaiizenbo.moonlight.Moonlight; -import me.kawaiizenbo.moonlight.module.ModuleManager; -import me.kawaiizenbo.moonlight.module.modules.HUDModule; import me.kawaiizenbo.moonlight.util.ColorUtils; import me.kawaiizenbo.moonlight.util.MathUtils; @@ -10,40 +8,32 @@ import net.minecraft.client.MinecraftClient; import net.minecraft.client.gui.DrawContext; import net.minecraft.util.math.Vec3d; -public class HUDOverlay +public class LegacyHUD { - public static HUDOverlay INSTANCE = new HUDOverlay(); + // This is deprecated and will be removed in a later version + public static LegacyHUD INSTANCE = new LegacyHUD(); private MinecraftClient mc = MinecraftClient.getInstance(); - public boolean showClientTag = ((HUDModule)ModuleManager.INSTANCE.getModuleByName("HUD")).clientTag.value; - public int hudColor = ColorUtils.rgbaToInt( - (int)((HUDModule)ModuleManager.INSTANCE.getModuleByName("HUD")).r.value, - (int)((HUDModule)ModuleManager.INSTANCE.getModuleByName("HUD")).g.value, - (int)((HUDModule)ModuleManager.INSTANCE.getModuleByName("HUD")).b.value, - 255 ); public void render(DrawContext drawContext, int scaledWidth, int scaledHeight) { // do not draw if F3 enabled - if (mc.getDebugHud().shouldShowDebugHud()) return; + if (mc.getDebugHud().shouldShowDebugHud()) return; // draw stats - drawContext.drawTextWithShadow(mc.textRenderer, "FPS: " + ColorUtils.gray + mc.fpsDebugString.split(" ")[0], 2, 2, Moonlight.uiColorA); - drawContext.drawTextWithShadow(mc.textRenderer, "Ping: " + ColorUtils.gray + (mc.getNetworkHandler().getPlayerListEntry(mc.player.getUuid()) == null ? 0 : mc.getNetworkHandler().getPlayerListEntry(mc.player.getUuid()).getLatency()), 2, 12, Moonlight.uiColorA); - drawContext.drawTextWithShadow(mc.textRenderer, "Meters/s: " + ColorUtils.gray + MathUtils.round(moveSpeed(), 2), 2, scaledHeight - 20, Moonlight.uiColorA); + drawContext.drawTextWithShadow(mc.textRenderer, "FPS: " + ColorUtils.gray + mc.fpsDebugString.split(" ")[0], 2, 2, 0xFF55FFFF); + drawContext.drawTextWithShadow(mc.textRenderer, "Ping: " + ColorUtils.gray + (mc.getNetworkHandler().getPlayerListEntry(mc.player.getUuid()) == null ? 0 : mc.getNetworkHandler().getPlayerListEntry(mc.player.getUuid()).getLatency()), 2, 12, 0xFF55FFFF); + drawContext.drawTextWithShadow(mc.textRenderer, "Meters/s: " + ColorUtils.gray + MathUtils.round(moveSpeed(), 2), 2, scaledHeight - 20, 0xFF55FFFF); // draw coordinates drawContext.drawTextWithShadow(mc.textRenderer, "X: " + ColorUtils.gray + String.format("%.1f", mc.player.getX()) + ColorUtils.reset + " Y: " + ColorUtils.gray + String.format("%.1f", mc.player.getY()) + ColorUtils.reset + - " Z: " + ColorUtils.gray + String.format("%.1f", mc.player.getZ()), 2, scaledHeight - 10, Moonlight.uiColorA + " Z: " + ColorUtils.gray + String.format("%.1f", mc.player.getZ()), 2, scaledHeight - 10, 0xFF55FFFF ); - // draw client tag (if enabled) - if (showClientTag) - { - drawContext.drawTextWithShadow(mc.textRenderer, Moonlight.clientTag + " " + Moonlight.versionTag, - scaledWidth - mc.textRenderer.getWidth(Moonlight.clientTag + " " + Moonlight.versionTag) - 2, scaledHeight - 10, 16777215); - } + // draw client tag + drawContext.drawTextWithShadow(mc.textRenderer, Moonlight.clientTag + " " + Moonlight.versionTag, + scaledWidth - mc.textRenderer.getWidth(Moonlight.clientTag + " " + Moonlight.versionTag) - 2, scaledHeight - 10, 16777215); } private double moveSpeed() diff --git a/src/main/java/me/kawaiizenbo/moonlight/ui/ModulesListOverlay.java b/src/main/java/me/kawaiizenbo/moonlight/ui/ModulesListOverlay.java index a0716aa..c661450 100644 --- a/src/main/java/me/kawaiizenbo/moonlight/ui/ModulesListOverlay.java +++ b/src/main/java/me/kawaiizenbo/moonlight/ui/ModulesListOverlay.java @@ -2,7 +2,6 @@ package me.kawaiizenbo.moonlight.ui; import java.util.ArrayList; -import me.kawaiizenbo.moonlight.Moonlight; import me.kawaiizenbo.moonlight.module.ModuleManager; import me.kawaiizenbo.moonlight.module.Module; import net.minecraft.client.MinecraftClient; @@ -26,7 +25,7 @@ public class ModulesListOverlay if (!m.showInModulesList.value) continue; int nameWidth = mc.textRenderer.getWidth(m.name); drawContext.fill(scaledWidth - nameWidth - 8, yOffset, scaledWidth, yOffset+12, 0x77222222); - drawContext.fill(scaledWidth - 2, yOffset, scaledWidth, yOffset+12, Moonlight.uiColorA); + drawContext.fill(scaledWidth - 2, yOffset, scaledWidth, yOffset+12, 0xFF55FFFF); drawContext.drawText(mc.textRenderer, m.name, scaledWidth - nameWidth - 4, yOffset + 2, 0xFFFFFFFF, false); yOffset += 12; } diff --git a/src/main/java/me/kawaiizenbo/moonlight/ui/TextButton.java b/src/main/java/me/kawaiizenbo/moonlight/ui/SetScreenButton.java similarity index 72% rename from src/main/java/me/kawaiizenbo/moonlight/ui/TextButton.java rename to src/main/java/me/kawaiizenbo/moonlight/ui/SetScreenButton.java index 79d8643..4b0e187 100644 --- a/src/main/java/me/kawaiizenbo/moonlight/ui/TextButton.java +++ b/src/main/java/me/kawaiizenbo/moonlight/ui/SetScreenButton.java @@ -1,26 +1,30 @@ package me.kawaiizenbo.moonlight.ui; -import me.kawaiizenbo.moonlight.ui.clickgui.ClickGUIScreen; import net.minecraft.client.MinecraftClient; import net.minecraft.client.font.TextRenderer; import net.minecraft.client.gui.DrawContext; +import net.minecraft.client.gui.screen.Screen; import net.minecraft.text.Text; -public class TextButton +public class SetScreenButton { String text; + Screen screen; int x, y, color, width; - public TextButton(String text, int x, int y, int color) + public SetScreenButton(String text, int x, int y, int color, Screen screen) { this.text = text; this.x = x; this.y = y; this.color = color; + this.screen = screen; } - public void render(DrawContext drawContext, TextRenderer textRenderer, int mouseX, int mouseY) + public void render(DrawContext drawContext, TextRenderer textRenderer, int mouseX, int mouseY, int x, int y) { + this.x = x; + this.y = y; width = textRenderer.getWidth(text); drawContext.fill(x-1, y-1, x + width + 1, y + 10, hovered(mouseX, mouseY) ? 0x55FFFFFF : 0); drawContext.drawText(textRenderer, Text.literal(text), x, y, color, true); @@ -35,8 +39,7 @@ public class TextButton { if (hovered(mouseX, mouseY)) { - // i have no clue how to pass a method so this is kind of stupid - MinecraftClient.getInstance().setScreen(ClickGUIScreen.INSTANCE); + MinecraftClient.getInstance().setScreen(screen); } } } diff --git a/src/main/java/me/kawaiizenbo/moonlight/ui/clickgui/ModuleButton.java b/src/main/java/me/kawaiizenbo/moonlight/ui/clickgui/ModuleButton.java index 9566741..7fc0499 100644 --- a/src/main/java/me/kawaiizenbo/moonlight/ui/clickgui/ModuleButton.java +++ b/src/main/java/me/kawaiizenbo/moonlight/ui/clickgui/ModuleButton.java @@ -1,6 +1,5 @@ package me.kawaiizenbo.moonlight.ui.clickgui; -import me.kawaiizenbo.moonlight.Moonlight; import me.kawaiizenbo.moonlight.module.Module; import net.minecraft.client.MinecraftClient; import net.minecraft.client.font.TextRenderer; @@ -23,7 +22,7 @@ public class ModuleButton this.x = x; this.y = y; drawContext.fill(x, y, x + width, y + height, hovered(mouseX, mouseY) ? 0xFF333333 : 0xFF222222); - drawContext.drawText(textRenderer, module.name, x+2, y+2, module.enabled ? Moonlight.uiColor : 0xFFFFFF, false); + drawContext.drawText(textRenderer, module.name, x+2, y+2, module.enabled ? 0x55FFFF : 0xFFFFFF, false); } public boolean hovered(int mouseX, int mouseY) diff --git a/src/main/java/me/kawaiizenbo/moonlight/ui/clickgui/SettingsScreen.java b/src/main/java/me/kawaiizenbo/moonlight/ui/clickgui/SettingsScreen.java index b29bb1d..a926a3b 100644 --- a/src/main/java/me/kawaiizenbo/moonlight/ui/clickgui/SettingsScreen.java +++ b/src/main/java/me/kawaiizenbo/moonlight/ui/clickgui/SettingsScreen.java @@ -2,7 +2,8 @@ package me.kawaiizenbo.moonlight.ui.clickgui; import me.kawaiizenbo.moonlight.module.Module; import me.kawaiizenbo.moonlight.module.settings.Setting; -import me.kawaiizenbo.moonlight.ui.TextButton; +import me.kawaiizenbo.moonlight.ui.SetScreenButton; +import me.kawaiizenbo.moonlight.ui.hud.HUDEditorScreen; import me.kawaiizenbo.moonlight.util.ColorUtils; import net.minecraft.client.gui.DrawContext; import net.minecraft.client.gui.screen.Screen; @@ -11,7 +12,8 @@ import net.minecraft.text.Text; public class SettingsScreen extends Screen { private Module module; - private TextButton backButton; + private SetScreenButton backButton; + private SetScreenButton editButton; boolean dragging = false; int startX, startY, x = (ClickGUIScreen.INSTANCE.width/2)-112, y = (ClickGUIScreen.INSTANCE.height/2)-96, windowWidth = 224, windowHeight = 192; @@ -19,6 +21,8 @@ public class SettingsScreen extends Screen public SettingsScreen(Module module) { super(Text.literal("Settings")); + backButton = new SetScreenButton(ColorUtils.underline + "< Back", x+4, y+4, 0xFFFFFF, ClickGUIScreen.INSTANCE); + editButton = new SetScreenButton(ColorUtils.underline + "Edit", x+windowWidth-22, y+4, 0xFFFFFF, HUDEditorScreen.INSTANCE); this.module = module; } @@ -38,8 +42,8 @@ public class SettingsScreen extends Screen drawContext.fill(x+2, y+2, x+(windowWidth-2), y+14, 0xFF222222); drawContext.drawCenteredTextWithShadow(textRenderer, module.name, x+(windowWidth/2), y+4, 0xFFFFFF); drawContext.drawText(textRenderer, module.description, x+8, y+24, 0xFFFFFF, true); - backButton = new TextButton(ColorUtils.underline + "< Back", x+4, y+4, 0xFFFFFF); - backButton.render(drawContext, textRenderer, mouseX, mouseY); + backButton.render(drawContext, textRenderer, mouseX, mouseY, x+4, y+4); + if (module.showEditButton) editButton.render(drawContext, textRenderer, mouseX, mouseY, x+windowWidth-22, y+4); int yOffset = y+40; for (Setting setting : module.settings) { diff --git a/src/main/java/me/kawaiizenbo/moonlight/ui/hud/HUDEditorScreen.java b/src/main/java/me/kawaiizenbo/moonlight/ui/hud/HUDEditorScreen.java new file mode 100644 index 0000000..27c047f --- /dev/null +++ b/src/main/java/me/kawaiizenbo/moonlight/ui/hud/HUDEditorScreen.java @@ -0,0 +1,39 @@ +package me.kawaiizenbo.moonlight.ui.hud; + +import net.minecraft.client.gui.DrawContext; +import net.minecraft.client.gui.screen.Screen; +import net.minecraft.text.Text; + +public class HUDEditorScreen extends Screen +{ + public static HUDEditorScreen INSTANCE = new HUDEditorScreen(); + + public HUDEditorScreen() + { + super(Text.literal("HUD Editor")); + } + + @Override + public void render(DrawContext drawContext, int mouseX, int mouseY, float delta) + { + this.renderBackground(drawContext, mouseX, mouseY, delta); + } + + @Override + public boolean mouseClicked(double mouseX, double mouseY, int button) + { + return super.mouseClicked(mouseX, mouseY, button); + } + + @Override + public boolean mouseReleased(double mouseX, double mouseY, int button) + { + return super.mouseReleased(mouseX, mouseY, button); + } + + @Override + public boolean shouldPause() + { + return false; + } +}