From a3e7e885ac7b153f3a8f778ae07be79292d9b85a Mon Sep 17 00:00:00 2001 From: kawaiizenbo <48113593+kawaiizenbo@users.noreply.github.com> Date: Sat, 7 Sep 2024 14:52:38 -0700 Subject: [PATCH 01/10] auto toteme --- gradle.properties | 2 +- .../me/kawaiizenbo/moonlight/Moonlight.java | 2 +- .../moonlight/module/ModuleManager.java | 3 +- .../moonlight/module/modules/AutoTotem.java | 36 +++++++++++++++++++ src/main/resources/fabric.mod.json | 2 +- 5 files changed, 41 insertions(+), 4 deletions(-) create mode 100644 src/main/java/me/kawaiizenbo/moonlight/module/modules/AutoTotem.java diff --git a/gradle.properties b/gradle.properties index acac936..405dc6c 100644 --- a/gradle.properties +++ b/gradle.properties @@ -9,7 +9,7 @@ org.gradle.parallel=true loader_version=0.16.3 # Mod Properties - mod_version = 0.2.1 + mod_version = 0.3.0 maven_group = me.kawaiizenbo archives_base_name = moonlight diff --git a/src/main/java/me/kawaiizenbo/moonlight/Moonlight.java b/src/main/java/me/kawaiizenbo/moonlight/Moonlight.java index 363354a..c4f7d46 100644 --- a/src/main/java/me/kawaiizenbo/moonlight/Moonlight.java +++ b/src/main/java/me/kawaiizenbo/moonlight/Moonlight.java @@ -24,7 +24,7 @@ public class Moonlight implements ModInitializer public static final Moonlight INSTANCE = new Moonlight(); public static final Logger LOGGER = LoggerFactory.getLogger("Moonlight"); public static final String clientTag = ColorUtils.aqua + "Moonlight Meadows"; - public static final String versionTag = ColorUtils.magenta + "v0.2.1"; + 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; diff --git a/src/main/java/me/kawaiizenbo/moonlight/module/ModuleManager.java b/src/main/java/me/kawaiizenbo/moonlight/module/ModuleManager.java index a3e6b51..7b6c99d 100644 --- a/src/main/java/me/kawaiizenbo/moonlight/module/ModuleManager.java +++ b/src/main/java/me/kawaiizenbo/moonlight/module/ModuleManager.java @@ -23,7 +23,8 @@ public class ModuleManager new Rotation(), new AutoJump(), new Reach(), - new AntiPowderSnow() + new AntiPowderSnow(), + new AutoTotem() /*new Timer()*/ ); } diff --git a/src/main/java/me/kawaiizenbo/moonlight/module/modules/AutoTotem.java b/src/main/java/me/kawaiizenbo/moonlight/module/modules/AutoTotem.java new file mode 100644 index 0000000..019e00c --- /dev/null +++ b/src/main/java/me/kawaiizenbo/moonlight/module/modules/AutoTotem.java @@ -0,0 +1,36 @@ +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; +import net.minecraft.item.Items; +import net.minecraft.screen.slot.SlotActionType; + +public class AutoTotem extends Module +{ + public BooleanSetting overrideItems = new BooleanSetting("Override other items", false); + + public AutoTotem() + { + super("Auto Totem", "Automatically puts totems in offhand.", Category.COMBAT); + settings.add(overrideItems); + } + + @Override + public void tick() + { + if (mc.player.getInventory().offHand.get(0).getItem() != Items.TOTEM_OF_UNDYING) + { + if((!mc.player.getInventory().offHand.isEmpty()) && !overrideItems.value) return; + for (int i = 0; i <= 35; i++) + { + if (mc.player.getInventory().getStack(i).getItem() == Items.TOTEM_OF_UNDYING) + { + mc.interactionManager.clickSlot(0, i, 8, SlotActionType.SWAP, mc.player); + mc.interactionManager.clickSlot(0, 45, 8, SlotActionType.SWAP, mc.player); + mc.interactionManager.clickSlot(0, i, 8, SlotActionType.SWAP, mc.player); + } + } + } + } +} diff --git a/src/main/resources/fabric.mod.json b/src/main/resources/fabric.mod.json index 8e6faf1..fb63aca 100644 --- a/src/main/resources/fabric.mod.json +++ b/src/main/resources/fabric.mod.json @@ -1,7 +1,7 @@ { "schemaVersion": 1, "id": "moonlight", - "version": "v0.2.1", + "version": "v0.3.0", "name": "Moonlight Meadows", "description": "Utility mod with a focus on stability.", "authors": [ From 9ab102a6481fd4b64de7dfd5a720063ff9a81ac2 Mon Sep 17 00:00:00 2001 From: kawaiizenbo <48113593+kawaiizenbo@users.noreply.github.com> Date: Sat, 7 Sep 2024 16:14:08 -0700 Subject: [PATCH 02/10] start of hud rework --- .../me/kawaiizenbo/moonlight/Moonlight.java | 2 - .../moonlight/mixin/InGameHudMixin.java | 10 +++- .../kawaiizenbo/moonlight/module/Module.java | 1 + .../moonlight/module/ModuleManager.java | 2 +- .../moonlight/module/modules/HUDEnabler.java | 19 +++++++ .../moonlight/module/modules/HUDModule.java | 51 ------------------- .../ui/{HUDOverlay.java => LegacyHUD.java} | 32 ++++-------- .../moonlight/ui/ModulesListOverlay.java | 3 +- .../{TextButton.java => SetScreenButton.java} | 15 +++--- .../moonlight/ui/clickgui/ModuleButton.java | 3 +- .../moonlight/ui/clickgui/SettingsScreen.java | 12 +++-- .../moonlight/ui/hud/HUDEditorScreen.java | 39 ++++++++++++++ 12 files changed, 98 insertions(+), 91 deletions(-) create mode 100644 src/main/java/me/kawaiizenbo/moonlight/module/modules/HUDEnabler.java delete mode 100644 src/main/java/me/kawaiizenbo/moonlight/module/modules/HUDModule.java rename src/main/java/me/kawaiizenbo/moonlight/ui/{HUDOverlay.java => LegacyHUD.java} (54%) rename src/main/java/me/kawaiizenbo/moonlight/ui/{TextButton.java => SetScreenButton.java} (72%) create mode 100644 src/main/java/me/kawaiizenbo/moonlight/ui/hud/HUDEditorScreen.java 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; + } +} From 31ecdd4f04a06c280753e4fee9663432a17f8a6f Mon Sep 17 00:00:00 2001 From: kawaiizenbo <48113593+kawaiizenbo@users.noreply.github.com> Date: Sat, 7 Sep 2024 19:24:06 -0700 Subject: [PATCH 03/10] bare minimum function hud editor --- .../moonlight/mixin/InGameHudMixin.java | 3 +- .../moonlight/ui/clickgui/SettingsScreen.java | 3 +- .../moonlight/ui/hud/HUDModule.java | 54 +++++++++++++++++++ .../moonlight/ui/hud/HUDModuleManager.java | 37 +++++++++++++ .../moonlight/ui/hud/HUDRenderer.java | 22 ++++++++ .../ui/hud/{ => editor}/HUDEditorScreen.java | 16 +++++- .../ui/hud/modules/TestModuleHUD.java | 22 ++++++++ 7 files changed, 154 insertions(+), 3 deletions(-) create mode 100644 src/main/java/me/kawaiizenbo/moonlight/ui/hud/HUDModule.java create mode 100644 src/main/java/me/kawaiizenbo/moonlight/ui/hud/HUDModuleManager.java create mode 100644 src/main/java/me/kawaiizenbo/moonlight/ui/hud/HUDRenderer.java rename src/main/java/me/kawaiizenbo/moonlight/ui/hud/{ => editor}/HUDEditorScreen.java (61%) create mode 100644 src/main/java/me/kawaiizenbo/moonlight/ui/hud/modules/TestModuleHUD.java diff --git a/src/main/java/me/kawaiizenbo/moonlight/mixin/InGameHudMixin.java b/src/main/java/me/kawaiizenbo/moonlight/mixin/InGameHudMixin.java index 7c737f5..8023763 100644 --- a/src/main/java/me/kawaiizenbo/moonlight/mixin/InGameHudMixin.java +++ b/src/main/java/me/kawaiizenbo/moonlight/mixin/InGameHudMixin.java @@ -9,6 +9,7 @@ import me.kawaiizenbo.moonlight.module.ModuleManager; import me.kawaiizenbo.moonlight.module.modules.HUDEnabler; import me.kawaiizenbo.moonlight.ui.LegacyHUD; import me.kawaiizenbo.moonlight.ui.ModulesListOverlay; +import me.kawaiizenbo.moonlight.ui.hud.HUDRenderer; import net.minecraft.client.gui.DrawContext; import net.minecraft.client.gui.hud.InGameHud; import net.minecraft.client.render.RenderTickCounter; @@ -23,7 +24,7 @@ public class InGameHudMixin { if (hudModule.enabled) { if (hudModule.legacyHud.value) LegacyHUD.INSTANCE.render(drawContext, drawContext.getScaledWindowWidth(), drawContext.getScaledWindowHeight()); - // wip + else HUDRenderer.INSTANCE.render(drawContext); } if (ModuleManager.INSTANCE.getModuleByName("ModulesList").enabled) ModulesListOverlay.INSTANCE.render(drawContext, drawContext.getScaledWindowWidth(), drawContext.getScaledWindowHeight()); } 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 a926a3b..ac5f916 100644 --- a/src/main/java/me/kawaiizenbo/moonlight/ui/clickgui/SettingsScreen.java +++ b/src/main/java/me/kawaiizenbo/moonlight/ui/clickgui/SettingsScreen.java @@ -3,7 +3,7 @@ package me.kawaiizenbo.moonlight.ui.clickgui; import me.kawaiizenbo.moonlight.module.Module; import me.kawaiizenbo.moonlight.module.settings.Setting; import me.kawaiizenbo.moonlight.ui.SetScreenButton; -import me.kawaiizenbo.moonlight.ui.hud.HUDEditorScreen; +import me.kawaiizenbo.moonlight.ui.hud.editor.HUDEditorScreen; import me.kawaiizenbo.moonlight.util.ColorUtils; import net.minecraft.client.gui.DrawContext; import net.minecraft.client.gui.screen.Screen; @@ -73,6 +73,7 @@ public class SettingsScreen extends Screen dragging = true; } backButton.mouseClicked((int)mouseX, (int)mouseY); + editButton.mouseClicked((int)mouseX, (int)mouseY); for (Setting setting : module.settings) { setting.mouseClicked(mouseX, mouseY, button); diff --git a/src/main/java/me/kawaiizenbo/moonlight/ui/hud/HUDModule.java b/src/main/java/me/kawaiizenbo/moonlight/ui/hud/HUDModule.java new file mode 100644 index 0000000..e44c719 --- /dev/null +++ b/src/main/java/me/kawaiizenbo/moonlight/ui/hud/HUDModule.java @@ -0,0 +1,54 @@ +package me.kawaiizenbo.moonlight.ui.hud; + +import net.minecraft.client.font.TextRenderer; +import net.minecraft.client.gui.DrawContext; + +public class HUDModule +{ + public int x, y, height, width; + public String name; + int startX, startY; + boolean dragging = false; + + public HUDModule(String name, int x, int y) + { + this.name = name; + this.x = x; + this.y = y; + } + + public void render(DrawContext drawContext, int mouseX, int mouseY, TextRenderer textRenderer, boolean editMode) + { + if (editMode) + { + if (dragging) + { + x = mouseX - startX; + y = mouseY - startY; + } + drawContext.fill(x-1, y-1, x+width+1, y+height+1, 0xFF55FFFF); + drawContext.fill(x, y, x+width, y+height, 0xFF222222); + } + } + + public boolean hovered(int mouseX, int mouseY) + { + return mouseX >= x && mouseX <= x+width && mouseY >= y && mouseY <= y+height; + } + + public void mouseClicked(int mouseX, int mouseY, int button) + { + if (hovered(mouseX, mouseY) && button == 0) + { + startX = (int)mouseX-x; + startY = (int)mouseY-y; + dragging = true; + } + } + + public void mouseReleased(int mouseX, int mouseY, int button) + { + dragging = false; + } + +} diff --git a/src/main/java/me/kawaiizenbo/moonlight/ui/hud/HUDModuleManager.java b/src/main/java/me/kawaiizenbo/moonlight/ui/hud/HUDModuleManager.java new file mode 100644 index 0000000..bd48064 --- /dev/null +++ b/src/main/java/me/kawaiizenbo/moonlight/ui/hud/HUDModuleManager.java @@ -0,0 +1,37 @@ +package me.kawaiizenbo.moonlight.ui.hud; + +import java.util.ArrayList; + +import me.kawaiizenbo.moonlight.ui.hud.modules.TestModuleHUD; + +public class HUDModuleManager +{ + public static HUDModuleManager INSTANCE = new HUDModuleManager(); + public ArrayList modules = new ArrayList<>(); + + public HUDModuleManager() + { + registerModules( + new TestModuleHUD(0, 0) + ); + } + + private void registerModules(HUDModule... modules) + { + for (HUDModule module : modules) { + this.modules.add(module); + } + } + + public HUDModule getModuleByName(String moduleName) + { + for(HUDModule module : modules) + { + if ((module.name.trim().equalsIgnoreCase(moduleName))) + { + return module; + } + } + return null; + } +} diff --git a/src/main/java/me/kawaiizenbo/moonlight/ui/hud/HUDRenderer.java b/src/main/java/me/kawaiizenbo/moonlight/ui/hud/HUDRenderer.java new file mode 100644 index 0000000..5fd47bc --- /dev/null +++ b/src/main/java/me/kawaiizenbo/moonlight/ui/hud/HUDRenderer.java @@ -0,0 +1,22 @@ +package me.kawaiizenbo.moonlight.ui.hud; + +import net.minecraft.client.MinecraftClient; +import net.minecraft.client.gui.DrawContext; + +public class HUDRenderer +{ + public static HUDRenderer INSTANCE = new HUDRenderer(); + private MinecraftClient mc = MinecraftClient.getInstance(); + + public void render(DrawContext drawContext) + { + // do not draw if F3 enabled + if (mc.getDebugHud().shouldShowDebugHud()) return; + + for (HUDModule h : HUDModuleManager.INSTANCE.modules) + { + // mouse coords are not needed when not in edit mode + h.render(drawContext, 0, 0, mc.textRenderer, false); + } + } +} diff --git a/src/main/java/me/kawaiizenbo/moonlight/ui/hud/HUDEditorScreen.java b/src/main/java/me/kawaiizenbo/moonlight/ui/hud/editor/HUDEditorScreen.java similarity index 61% rename from src/main/java/me/kawaiizenbo/moonlight/ui/hud/HUDEditorScreen.java rename to src/main/java/me/kawaiizenbo/moonlight/ui/hud/editor/HUDEditorScreen.java index 27c047f..b4acc21 100644 --- a/src/main/java/me/kawaiizenbo/moonlight/ui/hud/HUDEditorScreen.java +++ b/src/main/java/me/kawaiizenbo/moonlight/ui/hud/editor/HUDEditorScreen.java @@ -1,5 +1,7 @@ -package me.kawaiizenbo.moonlight.ui.hud; +package me.kawaiizenbo.moonlight.ui.hud.editor; +import me.kawaiizenbo.moonlight.ui.hud.HUDModule; +import me.kawaiizenbo.moonlight.ui.hud.HUDModuleManager; import net.minecraft.client.gui.DrawContext; import net.minecraft.client.gui.screen.Screen; import net.minecraft.text.Text; @@ -17,17 +19,29 @@ public class HUDEditorScreen extends Screen public void render(DrawContext drawContext, int mouseX, int mouseY, float delta) { this.renderBackground(drawContext, mouseX, mouseY, delta); + for (HUDModule h : HUDModuleManager.INSTANCE.modules) + { + h.render(drawContext, mouseX, mouseY, textRenderer, true); + } } @Override public boolean mouseClicked(double mouseX, double mouseY, int button) { + for (HUDModule h : HUDModuleManager.INSTANCE.modules) + { + h.mouseClicked((int)mouseX, (int)mouseY, button); + } return super.mouseClicked(mouseX, mouseY, button); } @Override public boolean mouseReleased(double mouseX, double mouseY, int button) { + for (HUDModule h : HUDModuleManager.INSTANCE.modules) + { + h.mouseReleased((int)mouseX, (int)mouseY, button); + } return super.mouseReleased(mouseX, mouseY, button); } diff --git a/src/main/java/me/kawaiizenbo/moonlight/ui/hud/modules/TestModuleHUD.java b/src/main/java/me/kawaiizenbo/moonlight/ui/hud/modules/TestModuleHUD.java new file mode 100644 index 0000000..0e45d61 --- /dev/null +++ b/src/main/java/me/kawaiizenbo/moonlight/ui/hud/modules/TestModuleHUD.java @@ -0,0 +1,22 @@ +package me.kawaiizenbo.moonlight.ui.hud.modules; + +import me.kawaiizenbo.moonlight.ui.hud.HUDModule; +import net.minecraft.client.font.TextRenderer; +import net.minecraft.client.gui.DrawContext; + +public class TestModuleHUD extends HUDModule +{ + public TestModuleHUD(int x, int y) + { + super("Test HUD Module", x, y); + this.width = 96; + this.height = 12; + } + + @Override + public void render(DrawContext drawContext, int mouseX, int mouseY, TextRenderer textRenderer, boolean editMode) + { + super.render(drawContext, mouseX, mouseY, textRenderer, editMode); + drawContext.drawText(textRenderer, "heloooooo", x, y, 0x55FFFF, false); + } +} From 8f6646b7e0f54b3041185d0ff09d69476bf841b9 Mon Sep 17 00:00:00 2001 From: kawaiizenbo <48113593+kawaiizenbo@users.noreply.github.com> Date: Sat, 7 Sep 2024 20:40:47 -0700 Subject: [PATCH 04/10] implement legacy hud elements as modules --- .../moonlight/ui/ModulesListOverlay.java | 2 ++ .../moonlight/ui/hud/HUDModule.java | 8 +++-- .../moonlight/ui/hud/HUDModuleManager.java | 20 ++++++++++-- .../moonlight/ui/hud/HUDRenderer.java | 4 +-- .../ui/hud/editor/HUDEditorScreen.java | 2 +- .../moonlight/ui/hud/modules/ClientTag.java | 24 ++++++++++++++ .../moonlight/ui/hud/modules/Coordinates.java | 28 ++++++++++++++++ .../moonlight/ui/hud/modules/FPS.java | 24 ++++++++++++++ .../ui/hud/modules/MovementSpeed.java | 32 +++++++++++++++++++ .../moonlight/ui/hud/modules/Ping.java | 24 ++++++++++++++ .../ui/hud/modules/TestModuleHUD.java | 8 ++--- 11 files changed, 165 insertions(+), 11 deletions(-) create mode 100644 src/main/java/me/kawaiizenbo/moonlight/ui/hud/modules/ClientTag.java create mode 100644 src/main/java/me/kawaiizenbo/moonlight/ui/hud/modules/Coordinates.java create mode 100644 src/main/java/me/kawaiizenbo/moonlight/ui/hud/modules/FPS.java create mode 100644 src/main/java/me/kawaiizenbo/moonlight/ui/hud/modules/MovementSpeed.java create mode 100644 src/main/java/me/kawaiizenbo/moonlight/ui/hud/modules/Ping.java diff --git a/src/main/java/me/kawaiizenbo/moonlight/ui/ModulesListOverlay.java b/src/main/java/me/kawaiizenbo/moonlight/ui/ModulesListOverlay.java index c661450..95d6a5e 100644 --- a/src/main/java/me/kawaiizenbo/moonlight/ui/ModulesListOverlay.java +++ b/src/main/java/me/kawaiizenbo/moonlight/ui/ModulesListOverlay.java @@ -10,6 +10,8 @@ import net.minecraft.client.gui.DrawContext; public class ModulesListOverlay { + // this will be replaced with a new hud version at some point + public static ModulesListOverlay INSTANCE = new ModulesListOverlay(); private MinecraftClient mc = MinecraftClient.getInstance(); private ArrayList enabledModules = ModuleManager.INSTANCE.getEnabledModules(); diff --git a/src/main/java/me/kawaiizenbo/moonlight/ui/hud/HUDModule.java b/src/main/java/me/kawaiizenbo/moonlight/ui/hud/HUDModule.java index e44c719..2bdcf18 100644 --- a/src/main/java/me/kawaiizenbo/moonlight/ui/hud/HUDModule.java +++ b/src/main/java/me/kawaiizenbo/moonlight/ui/hud/HUDModule.java @@ -1,5 +1,6 @@ package me.kawaiizenbo.moonlight.ui.hud; +import net.minecraft.client.MinecraftClient; import net.minecraft.client.font.TextRenderer; import net.minecraft.client.gui.DrawContext; @@ -9,6 +10,9 @@ public class HUDModule public String name; int startX, startY; boolean dragging = false; + public boolean enabled = false; + + protected static MinecraftClient mc = MinecraftClient.getInstance(); public HUDModule(String name, int x, int y) { @@ -17,7 +21,7 @@ public class HUDModule this.y = y; } - public void render(DrawContext drawContext, int mouseX, int mouseY, TextRenderer textRenderer, boolean editMode) + public void render(DrawContext drawContext, int mouseX, int mouseY, TextRenderer textRenderer, boolean editMode, boolean enabled) { if (editMode) { @@ -26,7 +30,7 @@ public class HUDModule x = mouseX - startX; y = mouseY - startY; } - drawContext.fill(x-1, y-1, x+width+1, y+height+1, 0xFF55FFFF); + drawContext.fill(x-1, y-1, x+width+1, y+height+1, enabled ? 0xFF55FFFF : 0xFF555555); drawContext.fill(x, y, x+width, y+height, 0xFF222222); } } diff --git a/src/main/java/me/kawaiizenbo/moonlight/ui/hud/HUDModuleManager.java b/src/main/java/me/kawaiizenbo/moonlight/ui/hud/HUDModuleManager.java index bd48064..3c44cba 100644 --- a/src/main/java/me/kawaiizenbo/moonlight/ui/hud/HUDModuleManager.java +++ b/src/main/java/me/kawaiizenbo/moonlight/ui/hud/HUDModuleManager.java @@ -2,7 +2,7 @@ package me.kawaiizenbo.moonlight.ui.hud; import java.util.ArrayList; -import me.kawaiizenbo.moonlight.ui.hud.modules.TestModuleHUD; +import me.kawaiizenbo.moonlight.ui.hud.modules.*; public class HUDModuleManager { @@ -12,7 +12,11 @@ public class HUDModuleManager public HUDModuleManager() { registerModules( - new TestModuleHUD(0, 0) + new ClientTag(2, 2), + new FPS(2, 12), + new Ping(2, 22), + new MovementSpeed(2, 32), + new Coordinates(2, 42) ); } @@ -34,4 +38,16 @@ public class HUDModuleManager } return null; } + + public ArrayList getEnabledModules() + { + ArrayList enabledModules = new ArrayList<>(); + for (HUDModule module : modules) + { + if (!module.enabled) + continue; + enabledModules.add(module); + } + return enabledModules; + } } diff --git a/src/main/java/me/kawaiizenbo/moonlight/ui/hud/HUDRenderer.java b/src/main/java/me/kawaiizenbo/moonlight/ui/hud/HUDRenderer.java index 5fd47bc..8c03be3 100644 --- a/src/main/java/me/kawaiizenbo/moonlight/ui/hud/HUDRenderer.java +++ b/src/main/java/me/kawaiizenbo/moonlight/ui/hud/HUDRenderer.java @@ -13,10 +13,10 @@ public class HUDRenderer // do not draw if F3 enabled if (mc.getDebugHud().shouldShowDebugHud()) return; - for (HUDModule h : HUDModuleManager.INSTANCE.modules) + for (HUDModule h : HUDModuleManager.INSTANCE.getEnabledModules()) { // mouse coords are not needed when not in edit mode - h.render(drawContext, 0, 0, mc.textRenderer, false); + h.render(drawContext, 0, 0, mc.textRenderer, false, true); } } } diff --git a/src/main/java/me/kawaiizenbo/moonlight/ui/hud/editor/HUDEditorScreen.java b/src/main/java/me/kawaiizenbo/moonlight/ui/hud/editor/HUDEditorScreen.java index b4acc21..76b54fb 100644 --- a/src/main/java/me/kawaiizenbo/moonlight/ui/hud/editor/HUDEditorScreen.java +++ b/src/main/java/me/kawaiizenbo/moonlight/ui/hud/editor/HUDEditorScreen.java @@ -21,7 +21,7 @@ public class HUDEditorScreen extends Screen this.renderBackground(drawContext, mouseX, mouseY, delta); for (HUDModule h : HUDModuleManager.INSTANCE.modules) { - h.render(drawContext, mouseX, mouseY, textRenderer, true); + h.render(drawContext, mouseX, mouseY, textRenderer, true, h.enabled); } } diff --git a/src/main/java/me/kawaiizenbo/moonlight/ui/hud/modules/ClientTag.java b/src/main/java/me/kawaiizenbo/moonlight/ui/hud/modules/ClientTag.java new file mode 100644 index 0000000..d8f0ff8 --- /dev/null +++ b/src/main/java/me/kawaiizenbo/moonlight/ui/hud/modules/ClientTag.java @@ -0,0 +1,24 @@ +package me.kawaiizenbo.moonlight.ui.hud.modules; + +import me.kawaiizenbo.moonlight.Moonlight; +import me.kawaiizenbo.moonlight.ui.hud.HUDModule; +import net.minecraft.client.font.TextRenderer; +import net.minecraft.client.gui.DrawContext; + +public class ClientTag extends HUDModule +{ + public ClientTag(int x, int y) + { + super("Client Tag", x, y); + this.width = 128; + this.height = 8; + this.enabled = true; + } + + @Override + public void render(DrawContext drawContext, int mouseX, int mouseY, TextRenderer textRenderer, boolean editMode, boolean enabled) + { + super.render(drawContext, mouseX, mouseY, textRenderer, editMode, enabled); + drawContext.drawTextWithShadow(mc.textRenderer, Moonlight.clientTag + " " + Moonlight.versionTag, x, y, 16777215); + } +} diff --git a/src/main/java/me/kawaiizenbo/moonlight/ui/hud/modules/Coordinates.java b/src/main/java/me/kawaiizenbo/moonlight/ui/hud/modules/Coordinates.java new file mode 100644 index 0000000..42f8611 --- /dev/null +++ b/src/main/java/me/kawaiizenbo/moonlight/ui/hud/modules/Coordinates.java @@ -0,0 +1,28 @@ +package me.kawaiizenbo.moonlight.ui.hud.modules; + +import me.kawaiizenbo.moonlight.ui.hud.HUDModule; +import me.kawaiizenbo.moonlight.util.ColorUtils; +import net.minecraft.client.font.TextRenderer; +import net.minecraft.client.gui.DrawContext; + +public class Coordinates extends HUDModule +{ + public Coordinates(int x, int y) + { + super("Coordinates", x, y); + this.width = 128; + this.height = 8; + this.enabled = true; + } + + @Override + public void render(DrawContext drawContext, int mouseX, int mouseY, TextRenderer textRenderer, boolean editMode, boolean enabled) + { + super.render(drawContext, mouseX, mouseY, textRenderer, editMode, enabled); + 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()), x, y, 0xFF55FFFF + ); + } +} diff --git a/src/main/java/me/kawaiizenbo/moonlight/ui/hud/modules/FPS.java b/src/main/java/me/kawaiizenbo/moonlight/ui/hud/modules/FPS.java new file mode 100644 index 0000000..2b6ecc2 --- /dev/null +++ b/src/main/java/me/kawaiizenbo/moonlight/ui/hud/modules/FPS.java @@ -0,0 +1,24 @@ +package me.kawaiizenbo.moonlight.ui.hud.modules; + +import me.kawaiizenbo.moonlight.ui.hud.HUDModule; +import me.kawaiizenbo.moonlight.util.ColorUtils; +import net.minecraft.client.font.TextRenderer; +import net.minecraft.client.gui.DrawContext; + +public class FPS extends HUDModule +{ + public FPS(int x, int y) + { + super("FPS", x, y); + this.width = 48; + this.height = 8; + this.enabled = true; + } + + @Override + public void render(DrawContext drawContext, int mouseX, int mouseY, TextRenderer textRenderer, boolean editMode, boolean enabled) + { + super.render(drawContext, mouseX, mouseY, textRenderer, editMode, enabled); + drawContext.drawTextWithShadow(mc.textRenderer, "FPS: " + ColorUtils.gray + mc.fpsDebugString.split(" ")[0], x, y, 0xFF55FFFF); + } +} diff --git a/src/main/java/me/kawaiizenbo/moonlight/ui/hud/modules/MovementSpeed.java b/src/main/java/me/kawaiizenbo/moonlight/ui/hud/modules/MovementSpeed.java new file mode 100644 index 0000000..f5edcdf --- /dev/null +++ b/src/main/java/me/kawaiizenbo/moonlight/ui/hud/modules/MovementSpeed.java @@ -0,0 +1,32 @@ +package me.kawaiizenbo.moonlight.ui.hud.modules; + +import me.kawaiizenbo.moonlight.ui.hud.HUDModule; +import me.kawaiizenbo.moonlight.util.ColorUtils; +import me.kawaiizenbo.moonlight.util.MathUtils; +import net.minecraft.client.font.TextRenderer; +import net.minecraft.client.gui.DrawContext; +import net.minecraft.util.math.Vec3d; + +public class MovementSpeed extends HUDModule +{ + public MovementSpeed(int x, int y) + { + super("Movement Speed", x, y); + this.width = 72; + this.height = 8; + this.enabled = true; + } + + @Override + public void render(DrawContext drawContext, int mouseX, int mouseY, TextRenderer textRenderer, boolean editMode, boolean enabled) + { + super.render(drawContext, mouseX, mouseY, textRenderer, editMode, enabled); + drawContext.drawTextWithShadow(mc.textRenderer, "Meters/s: " + ColorUtils.gray + MathUtils.round(moveSpeed(), 2), x, y, 0xFF55FFFF); + } + + private double moveSpeed() + { + Vec3d move = new Vec3d(mc.player.getX() - mc.player.prevX, 0, mc.player.getZ() - mc.player.prevZ).multiply(20); + return Math.abs(MathUtils.length2D(move)) ; + } +} diff --git a/src/main/java/me/kawaiizenbo/moonlight/ui/hud/modules/Ping.java b/src/main/java/me/kawaiizenbo/moonlight/ui/hud/modules/Ping.java new file mode 100644 index 0000000..d6596c5 --- /dev/null +++ b/src/main/java/me/kawaiizenbo/moonlight/ui/hud/modules/Ping.java @@ -0,0 +1,24 @@ +package me.kawaiizenbo.moonlight.ui.hud.modules; + +import me.kawaiizenbo.moonlight.ui.hud.HUDModule; +import me.kawaiizenbo.moonlight.util.ColorUtils; +import net.minecraft.client.font.TextRenderer; +import net.minecraft.client.gui.DrawContext; + +public class Ping extends HUDModule +{ + public Ping(int x, int y) + { + super("Ping", x, y); + this.width = 48; + this.height = 8; + this.enabled = true; + } + + @Override + public void render(DrawContext drawContext, int mouseX, int mouseY, TextRenderer textRenderer, boolean editMode, boolean enabled) + { + super.render(drawContext, mouseX, mouseY, textRenderer, editMode, enabled); + drawContext.drawTextWithShadow(mc.textRenderer, "Ping: " + ColorUtils.gray + (mc.getNetworkHandler().getPlayerListEntry(mc.player.getUuid()) == null ? 0 : mc.getNetworkHandler().getPlayerListEntry(mc.player.getUuid()).getLatency()), x, y, 0xFF55FFFF); + } +} diff --git a/src/main/java/me/kawaiizenbo/moonlight/ui/hud/modules/TestModuleHUD.java b/src/main/java/me/kawaiizenbo/moonlight/ui/hud/modules/TestModuleHUD.java index 0e45d61..aaeed6d 100644 --- a/src/main/java/me/kawaiizenbo/moonlight/ui/hud/modules/TestModuleHUD.java +++ b/src/main/java/me/kawaiizenbo/moonlight/ui/hud/modules/TestModuleHUD.java @@ -10,13 +10,13 @@ public class TestModuleHUD extends HUDModule { super("Test HUD Module", x, y); this.width = 96; - this.height = 12; + this.height = 8; } @Override - public void render(DrawContext drawContext, int mouseX, int mouseY, TextRenderer textRenderer, boolean editMode) + public void render(DrawContext drawContext, int mouseX, int mouseY, TextRenderer textRenderer, boolean editMode, boolean enabled) { - super.render(drawContext, mouseX, mouseY, textRenderer, editMode); - drawContext.drawText(textRenderer, "heloooooo", x, y, 0x55FFFF, false); + super.render(drawContext, mouseX, mouseY, textRenderer, editMode, enabled); + drawContext.drawText(textRenderer, "Text Text Text Test :3", x, y, 0xFFFFFF, false); } } From 90347f7476a04a2152afb01dd6b776ee3ba61ea8 Mon Sep 17 00:00:00 2001 From: kawaiizenbo <48113593+kawaiizenbo@users.noreply.github.com> Date: Sat, 7 Sep 2024 21:21:22 -0700 Subject: [PATCH 05/10] now able to toggle hud modules --- .../moonlight/ui/hud/HUDModule.java | 4 + .../ui/hud/editor/HUDEditorScreen.java | 5 ++ .../ui/hud/editor/HUDModuleButton.java | 49 +++++++++++ .../ui/hud/editor/HUDModuleList.java | 79 ++++++++++++++++++ .../moonlight/textures/gui/sprites/hud.png | Bin 0 -> 354 bytes 5 files changed, 137 insertions(+) create mode 100644 src/main/java/me/kawaiizenbo/moonlight/ui/hud/editor/HUDModuleButton.java create mode 100644 src/main/java/me/kawaiizenbo/moonlight/ui/hud/editor/HUDModuleList.java create mode 100644 src/main/resources/assets/moonlight/textures/gui/sprites/hud.png diff --git a/src/main/java/me/kawaiizenbo/moonlight/ui/hud/HUDModule.java b/src/main/java/me/kawaiizenbo/moonlight/ui/hud/HUDModule.java index 2bdcf18..8f14b9b 100644 --- a/src/main/java/me/kawaiizenbo/moonlight/ui/hud/HUDModule.java +++ b/src/main/java/me/kawaiizenbo/moonlight/ui/hud/HUDModule.java @@ -55,4 +55,8 @@ public class HUDModule dragging = false; } + public void toggle() + { + enabled = !enabled; + } } diff --git a/src/main/java/me/kawaiizenbo/moonlight/ui/hud/editor/HUDEditorScreen.java b/src/main/java/me/kawaiizenbo/moonlight/ui/hud/editor/HUDEditorScreen.java index 76b54fb..6df96cc 100644 --- a/src/main/java/me/kawaiizenbo/moonlight/ui/hud/editor/HUDEditorScreen.java +++ b/src/main/java/me/kawaiizenbo/moonlight/ui/hud/editor/HUDEditorScreen.java @@ -9,10 +9,12 @@ import net.minecraft.text.Text; public class HUDEditorScreen extends Screen { public static HUDEditorScreen INSTANCE = new HUDEditorScreen(); + HUDModuleList moduleList; public HUDEditorScreen() { super(Text.literal("HUD Editor")); + moduleList = new HUDModuleList(256, 2, false); } @Override @@ -23,6 +25,7 @@ public class HUDEditorScreen extends Screen { h.render(drawContext, mouseX, mouseY, textRenderer, true, h.enabled); } + moduleList.render(drawContext, mouseX, mouseY, delta, textRenderer); } @Override @@ -32,6 +35,7 @@ public class HUDEditorScreen extends Screen { h.mouseClicked((int)mouseX, (int)mouseY, button); } + moduleList.mouseClicked((int)mouseX, (int)mouseY, button); return super.mouseClicked(mouseX, mouseY, button); } @@ -42,6 +46,7 @@ public class HUDEditorScreen extends Screen { h.mouseReleased((int)mouseX, (int)mouseY, button); } + moduleList.mouseReleased((int)mouseX, (int)mouseY, button); return super.mouseReleased(mouseX, mouseY, button); } diff --git a/src/main/java/me/kawaiizenbo/moonlight/ui/hud/editor/HUDModuleButton.java b/src/main/java/me/kawaiizenbo/moonlight/ui/hud/editor/HUDModuleButton.java new file mode 100644 index 0000000..99d1bdd --- /dev/null +++ b/src/main/java/me/kawaiizenbo/moonlight/ui/hud/editor/HUDModuleButton.java @@ -0,0 +1,49 @@ +package me.kawaiizenbo.moonlight.ui.hud.editor; + +import me.kawaiizenbo.moonlight.ui.hud.HUDModule; +import net.minecraft.client.font.TextRenderer; +import net.minecraft.client.gui.DrawContext; + +public class HUDModuleButton +{ + public HUDModule module; + public int x, y, width, height = 0; + + public HUDModuleButton(HUDModule module) + { + this.module = module; + this.width = 124; + this.height = 12; + } + + public void render(DrawContext drawContext, int mouseX, int mouseY, int x, int y, TextRenderer textRenderer) + { + 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 ? 0x55FFFF : 0xFFFFFF, false); + } + + public boolean hovered(int mouseX, int mouseY) + { + return mouseX >= x && mouseX <= x + width && mouseY >= y && mouseY <= y + height; + } + + public boolean mouseClicked(int mouseX, int mouseY, int button) + { + if (hovered(mouseX, mouseY)) + { + if (button == 0) + { + module.toggle(); + } + else if (button == 1) + { + // HUDModule Settings coming Soon TM + //MinecraftClient.getInstance().setScreen(new SettingsScreen(module)); + } + return true; + } + return false; + } +} diff --git a/src/main/java/me/kawaiizenbo/moonlight/ui/hud/editor/HUDModuleList.java b/src/main/java/me/kawaiizenbo/moonlight/ui/hud/editor/HUDModuleList.java new file mode 100644 index 0000000..69120b3 --- /dev/null +++ b/src/main/java/me/kawaiizenbo/moonlight/ui/hud/editor/HUDModuleList.java @@ -0,0 +1,79 @@ +package me.kawaiizenbo.moonlight.ui.hud.editor; + +import java.util.ArrayList; + +import me.kawaiizenbo.moonlight.ui.hud.HUDModule; +import me.kawaiizenbo.moonlight.ui.hud.HUDModuleManager; +import net.minecraft.client.font.TextRenderer; +import net.minecraft.client.gui.DrawContext; +import net.minecraft.util.Identifier; + +public class HUDModuleList +{ + public int x, y, height, width = 128; + int startX, startY; + boolean dragging = false; + public boolean collapsed = false; + ArrayList buttons; + + public HUDModuleList(int initialX, int initialY, boolean collapsed) + { + this.x = initialX; + this.y = initialY; + this.collapsed = collapsed; + buttons = new ArrayList(); + for (HUDModule m : HUDModuleManager.INSTANCE.modules) + { + buttons.add(new HUDModuleButton(m)); + } + if (buttons.size() == 0) collapsed = true; + height = (buttons.size()*12) + 18; + } + + public void render(DrawContext drawContext, int mouseX, int mouseY, float delta, TextRenderer textRenderer) + { + if (dragging) + { + x = mouseX - startX; + y = mouseY - startY; + } + drawContext.fill(x, y, x+width, collapsed ? y+16 : y+height, 0xFF55FFFF); + drawContext.fill(x+2, y+2, x+(width-2), y+14, hovered(mouseX, mouseY) ? 0xFF333333 : 0xFF222222); + drawContext.drawGuiTexture(Identifier.of("moonlight", "hud"), x+2, y+2, 12, 12); + drawContext.drawText(textRenderer, "HUD Modules", x+16, y+4, 0xFFFFFFFF, false); + if (!collapsed) + { + int buttonYOffset = y+16; + for (HUDModuleButton m : buttons) + { + m.render(drawContext, mouseX, mouseY, x+2, buttonYOffset, textRenderer); + buttonYOffset += 12; + } + } + } + + public boolean hovered(int mouseX, int mouseY) + { + return mouseX >= x+2 && mouseX <= x+(width-2) && mouseY >= y+2 && mouseY <= y+14; + } + + public void mouseClicked(int mouseX, int mouseY, int button) + { + for (HUDModuleButton moduleButton : buttons) + { + if (moduleButton.mouseClicked(mouseX, mouseY, button)) return; + } + if (hovered(mouseX, mouseY) && button == 1) collapsed = !collapsed; + else if (hovered(mouseX, mouseY) && button == 0) + { + startX = (int)mouseX-x; + startY = (int)mouseY-y; + dragging = true; + } + } + + public void mouseReleased(int mouseX, int mouseY, int button) + { + dragging = false; + } +} diff --git a/src/main/resources/assets/moonlight/textures/gui/sprites/hud.png b/src/main/resources/assets/moonlight/textures/gui/sprites/hud.png new file mode 100644 index 0000000000000000000000000000000000000000..854c430d2547a9c1554f2968c467309f07683948 GIT binary patch literal 354 zcmeAS@N?(olHy`uVBq!ia0vp^JRr=$1|-8uW1a&k#^NA%Cx&(BWL^R}Ea{HEjtmSN z`?>!lvI6;>1s;*b3=Dh+K$tP>S|=w^a7${0XPT#{76S*6!^$AV$jZP7WO)IxG?Wdp zNrRCYEY1XE8!|F6@B!&4AkJ)O0gGn<*&wjLjFI65GlDKi%*-p%%S$a$Fx4|;07^_? zXJ7%UGcYnXU|aw(6J#Ij0*E=2fNT(80-DMMRvBbz0c1gS85$UXWYf1~P4u%id11EssfP(|G51(7`eKv`Pm5EN%6 Date: Sun, 8 Sep 2024 11:45:05 -0700 Subject: [PATCH 06/10] add settings to hud modules --- .../moonlight/ui/clickgui/ModuleButton.java | 2 + .../moonlight/ui/hud/HUDModule.java | 5 + .../moonlight/ui/hud/HUDModuleManager.java | 1 + .../ui/hud/editor/HUDModuleButton.java | 6 +- .../hud/editor/HUDModuleSettingsScreen.java | 99 ++++++++++++++++++ .../ui/hud/modules/TestModuleHUD.java | 9 +- .../textures/gui/sprites/settings.png | Bin 0 -> 366 bytes 7 files changed, 119 insertions(+), 3 deletions(-) create mode 100644 src/main/java/me/kawaiizenbo/moonlight/ui/hud/editor/HUDModuleSettingsScreen.java create mode 100644 src/main/resources/assets/moonlight/textures/gui/sprites/settings.png 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 7fc0499..804a971 100644 --- a/src/main/java/me/kawaiizenbo/moonlight/ui/clickgui/ModuleButton.java +++ b/src/main/java/me/kawaiizenbo/moonlight/ui/clickgui/ModuleButton.java @@ -4,6 +4,7 @@ import me.kawaiizenbo.moonlight.module.Module; import net.minecraft.client.MinecraftClient; import net.minecraft.client.font.TextRenderer; import net.minecraft.client.gui.DrawContext; +import net.minecraft.util.Identifier; public class ModuleButton { @@ -23,6 +24,7 @@ public class ModuleButton 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 ? 0x55FFFF : 0xFFFFFF, false); + if (!module.settings.isEmpty()) drawContext.drawGuiTexture(Identifier.of("moonlight", "settings"), x+width-12, y, 12, 12); } public boolean hovered(int mouseX, int mouseY) diff --git a/src/main/java/me/kawaiizenbo/moonlight/ui/hud/HUDModule.java b/src/main/java/me/kawaiizenbo/moonlight/ui/hud/HUDModule.java index 8f14b9b..e1107c9 100644 --- a/src/main/java/me/kawaiizenbo/moonlight/ui/hud/HUDModule.java +++ b/src/main/java/me/kawaiizenbo/moonlight/ui/hud/HUDModule.java @@ -1,5 +1,8 @@ package me.kawaiizenbo.moonlight.ui.hud; +import java.util.ArrayList; + +import me.kawaiizenbo.moonlight.module.settings.Setting; import net.minecraft.client.MinecraftClient; import net.minecraft.client.font.TextRenderer; import net.minecraft.client.gui.DrawContext; @@ -11,6 +14,7 @@ public class HUDModule int startX, startY; boolean dragging = false; public boolean enabled = false; + public ArrayList settings; protected static MinecraftClient mc = MinecraftClient.getInstance(); @@ -19,6 +23,7 @@ public class HUDModule this.name = name; this.x = x; this.y = y; + settings = new ArrayList<>(); } public void render(DrawContext drawContext, int mouseX, int mouseY, TextRenderer textRenderer, boolean editMode, boolean enabled) diff --git a/src/main/java/me/kawaiizenbo/moonlight/ui/hud/HUDModuleManager.java b/src/main/java/me/kawaiizenbo/moonlight/ui/hud/HUDModuleManager.java index 3c44cba..715404c 100644 --- a/src/main/java/me/kawaiizenbo/moonlight/ui/hud/HUDModuleManager.java +++ b/src/main/java/me/kawaiizenbo/moonlight/ui/hud/HUDModuleManager.java @@ -17,6 +17,7 @@ public class HUDModuleManager new Ping(2, 22), new MovementSpeed(2, 32), new Coordinates(2, 42) + //new TestModuleHUD(20, 50) ); } diff --git a/src/main/java/me/kawaiizenbo/moonlight/ui/hud/editor/HUDModuleButton.java b/src/main/java/me/kawaiizenbo/moonlight/ui/hud/editor/HUDModuleButton.java index 99d1bdd..7be04fa 100644 --- a/src/main/java/me/kawaiizenbo/moonlight/ui/hud/editor/HUDModuleButton.java +++ b/src/main/java/me/kawaiizenbo/moonlight/ui/hud/editor/HUDModuleButton.java @@ -1,8 +1,10 @@ package me.kawaiizenbo.moonlight.ui.hud.editor; import me.kawaiizenbo.moonlight.ui.hud.HUDModule; +import net.minecraft.client.MinecraftClient; import net.minecraft.client.font.TextRenderer; import net.minecraft.client.gui.DrawContext; +import net.minecraft.util.Identifier; public class HUDModuleButton { @@ -22,6 +24,7 @@ public class HUDModuleButton 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 ? 0x55FFFF : 0xFFFFFF, false); + if (!module.settings.isEmpty()) drawContext.drawGuiTexture(Identifier.of("moonlight", "settings"), x+width-12, y, 12, 12); } public boolean hovered(int mouseX, int mouseY) @@ -39,8 +42,7 @@ public class HUDModuleButton } else if (button == 1) { - // HUDModule Settings coming Soon TM - //MinecraftClient.getInstance().setScreen(new SettingsScreen(module)); + if (!module.settings.isEmpty()) MinecraftClient.getInstance().setScreen(new HUDModuleSettingsScreen(module)); } return true; } diff --git a/src/main/java/me/kawaiizenbo/moonlight/ui/hud/editor/HUDModuleSettingsScreen.java b/src/main/java/me/kawaiizenbo/moonlight/ui/hud/editor/HUDModuleSettingsScreen.java new file mode 100644 index 0000000..6925709 --- /dev/null +++ b/src/main/java/me/kawaiizenbo/moonlight/ui/hud/editor/HUDModuleSettingsScreen.java @@ -0,0 +1,99 @@ +package me.kawaiizenbo.moonlight.ui.hud.editor; + +import me.kawaiizenbo.moonlight.module.settings.Setting; +import me.kawaiizenbo.moonlight.ui.SetScreenButton; +import me.kawaiizenbo.moonlight.ui.hud.HUDModule; +import me.kawaiizenbo.moonlight.util.ColorUtils; +import net.minecraft.client.gui.DrawContext; +import net.minecraft.client.gui.screen.Screen; +import net.minecraft.text.Text; + +public class HUDModuleSettingsScreen extends Screen +{ + // adapted for hud modules + private HUDModule module; + private SetScreenButton backButton; + + boolean dragging = false; + int startX, startY, x = (HUDEditorScreen.INSTANCE.width/2)-112, y = (HUDEditorScreen.INSTANCE.height/2)-96, windowWidth = 224, windowHeight = 192; + + public HUDModuleSettingsScreen(HUDModule module) + { + super(Text.literal("Settings")); + backButton = new SetScreenButton(ColorUtils.underline + "< Back", x+4, y+4, 0xFFFFFF, HUDEditorScreen.INSTANCE); + this.module = module; + } + + @Override + public void render(DrawContext drawContext, int mouseX, int mouseY, float delta) + { + this.renderBackground(drawContext, mouseX, mouseY, delta); + + // move window if dragging + if (dragging) + { + x = mouseX - startX; + y = mouseY - startY; + } + drawContext.fill(x, y, x+windowWidth, y+windowHeight, 0xFF222222); + drawContext.fill(x, y, x+windowWidth, y+16, 0xFF55FFFF); + drawContext.fill(x+2, y+2, x+(windowWidth-2), y+14, 0xFF222222); + drawContext.drawCenteredTextWithShadow(textRenderer, module.name, x+(windowWidth/2), y+4, 0xFFFFFF); + backButton.render(drawContext, textRenderer, mouseX, mouseY, x+4, y+4); + int yOffset = y+24; + for (Setting setting : module.settings) + { + setting.render(drawContext, x+16, yOffset, mouseX, mouseY, textRenderer); + yOffset += 25; + } + } + + public boolean barHovered(int mouseX, int mouseY) + { + return mouseX >= x && mouseX <= x + width && mouseY >= y && mouseY <= y + 16; + } + + @Override + public boolean shouldPause() + { + return false; + } + + @Override + public boolean mouseClicked(double mouseX, double mouseY, int button) + { + if (barHovered((int)mouseX, (int)mouseY)) + { + startX = (int)mouseX-x; + startY = (int)mouseY-y; + dragging = true; + } + backButton.mouseClicked((int)mouseX, (int)mouseY); + for (Setting setting : module.settings) + { + setting.mouseClicked(mouseX, mouseY, button); + } + return super.mouseClicked(mouseX, mouseY, button); + } + + @Override + public boolean mouseReleased(double mouseX, double mouseY, int button) + { + dragging = false; + for (Setting setting : module.settings) + { + setting.mouseReleased(mouseX, mouseY, button); + } + return super.mouseReleased(mouseX, mouseY, button); + } + + @Override + public boolean keyPressed(int keyCode, int scanCode, int modifiers) + { + for (Setting setting : module.settings) + { + setting.keyPressed(keyCode, scanCode, modifiers); + } + return super.keyPressed(keyCode, scanCode, modifiers); + } +} diff --git a/src/main/java/me/kawaiizenbo/moonlight/ui/hud/modules/TestModuleHUD.java b/src/main/java/me/kawaiizenbo/moonlight/ui/hud/modules/TestModuleHUD.java index aaeed6d..fed72f9 100644 --- a/src/main/java/me/kawaiizenbo/moonlight/ui/hud/modules/TestModuleHUD.java +++ b/src/main/java/me/kawaiizenbo/moonlight/ui/hud/modules/TestModuleHUD.java @@ -1,22 +1,29 @@ package me.kawaiizenbo.moonlight.ui.hud.modules; +import me.kawaiizenbo.moonlight.module.settings.DoubleSetting; +import me.kawaiizenbo.moonlight.module.settings.StringSetting; import me.kawaiizenbo.moonlight.ui.hud.HUDModule; import net.minecraft.client.font.TextRenderer; import net.minecraft.client.gui.DrawContext; public class TestModuleHUD extends HUDModule { + public StringSetting text = new StringSetting("Text", "hii :3"); + public DoubleSetting number = new DoubleSetting("test", 1, 0, 10, 0); + public TestModuleHUD(int x, int y) { super("Test HUD Module", x, y); this.width = 96; this.height = 8; + settings.add(text); + settings.add(number); } @Override public void render(DrawContext drawContext, int mouseX, int mouseY, TextRenderer textRenderer, boolean editMode, boolean enabled) { super.render(drawContext, mouseX, mouseY, textRenderer, editMode, enabled); - drawContext.drawText(textRenderer, "Text Text Text Test :3", x, y, 0xFFFFFF, false); + drawContext.drawText(textRenderer, text.value, x, y, 0xFFFFFF, false); } } diff --git a/src/main/resources/assets/moonlight/textures/gui/sprites/settings.png b/src/main/resources/assets/moonlight/textures/gui/sprites/settings.png new file mode 100644 index 0000000000000000000000000000000000000000..93e6cec7b2c8501488f1340a7cdc9ad946277cef GIT binary patch literal 366 zcmeAS@N?(olHy`uVBq!ia0vp^JRr=$1|-8uW1a&k#^NA%Cx&(BWL^R}Ea{HEjtmSN z`?>!lvI6;>1s;*b3=DjSL74G){)!Z!;Fi<~&ooa@Ed~xChm}E!k(GfF$npYWX($_H zlLjL*SeyySHe_UC-~-Z8K%Cjm0v68zvOypLh(Y>cbU|WfUWr~_YKelWo*@G>1H%M% z1{R>afswHR;{u48AoZ*ZAm&U0vO$0eXbKZpWss!>kOkFcXkY-6J);rv(3khA4v^{W z>Ealo5uBW$ApWPFDd}h-QweX6fn$nm4-gob`S3;Z=sRq0 Date: Sun, 8 Sep 2024 16:34:13 -0700 Subject: [PATCH 07/10] new setting and make modular hud the default --- .../moonlight/mixin/InGameHudMixin.java | 2 +- .../moonlight/module/modules/HUDEnabler.java | 6 +-- .../module/settings/IndexSetting.java | 38 +++++++++++++++++++ .../moonlight/ui/clickgui/ModuleButton.java | 1 - 4 files changed, 42 insertions(+), 5 deletions(-) create mode 100644 src/main/java/me/kawaiizenbo/moonlight/module/settings/IndexSetting.java diff --git a/src/main/java/me/kawaiizenbo/moonlight/mixin/InGameHudMixin.java b/src/main/java/me/kawaiizenbo/moonlight/mixin/InGameHudMixin.java index 8023763..84c006f 100644 --- a/src/main/java/me/kawaiizenbo/moonlight/mixin/InGameHudMixin.java +++ b/src/main/java/me/kawaiizenbo/moonlight/mixin/InGameHudMixin.java @@ -23,7 +23,7 @@ public class InGameHudMixin { HUDEnabler hudModule = (HUDEnabler)ModuleManager.INSTANCE.getModuleByName("HUD"); if (hudModule.enabled) { - if (hudModule.legacyHud.value) LegacyHUD.INSTANCE.render(drawContext, drawContext.getScaledWindowWidth(), drawContext.getScaledWindowHeight()); + if (hudModule.mode.index == 1) LegacyHUD.INSTANCE.render(drawContext, drawContext.getScaledWindowWidth(), drawContext.getScaledWindowHeight()); else HUDRenderer.INSTANCE.render(drawContext); } if (ModuleManager.INSTANCE.getModuleByName("ModulesList").enabled) ModulesListOverlay.INSTANCE.render(drawContext, drawContext.getScaledWindowWidth(), drawContext.getScaledWindowHeight()); diff --git a/src/main/java/me/kawaiizenbo/moonlight/module/modules/HUDEnabler.java b/src/main/java/me/kawaiizenbo/moonlight/module/modules/HUDEnabler.java index 0b53c3e..866699b 100644 --- a/src/main/java/me/kawaiizenbo/moonlight/module/modules/HUDEnabler.java +++ b/src/main/java/me/kawaiizenbo/moonlight/module/modules/HUDEnabler.java @@ -2,11 +2,11 @@ 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; +import me.kawaiizenbo.moonlight.module.settings.IndexSetting; public class HUDEnabler extends Module { - public BooleanSetting legacyHud = new BooleanSetting("Legacy HUD", true); + public IndexSetting mode = new IndexSetting("Mode", 0, "Modular", "Legacy"); public HUDEnabler() { @@ -14,6 +14,6 @@ public class HUDEnabler extends Module this.enabled = true; this.showInModulesList.value = false; this.showEditButton = true; - settings.add(legacyHud); + settings.add(mode); } } diff --git a/src/main/java/me/kawaiizenbo/moonlight/module/settings/IndexSetting.java b/src/main/java/me/kawaiizenbo/moonlight/module/settings/IndexSetting.java new file mode 100644 index 0000000..a4bb5c5 --- /dev/null +++ b/src/main/java/me/kawaiizenbo/moonlight/module/settings/IndexSetting.java @@ -0,0 +1,38 @@ +package me.kawaiizenbo.moonlight.module.settings; + +import net.minecraft.client.font.TextRenderer; +import net.minecraft.client.gui.DrawContext; +import net.minecraft.text.Text; + +public class IndexSetting extends Setting +{ + public int index; + public String[] elements; + + public IndexSetting(String name, int index, String... elements) + { + this.name = name; + this.index = index; + this.elements = elements; + } + + @Override + public void render(DrawContext drawContext, int x, int y, int mouseX, int mouseY, TextRenderer textRenderer) + { + super.render(drawContext, x, y, mouseX, mouseY, textRenderer); + drawContext.drawTextWithShadow(textRenderer, Text.literal(name), x+2, y+8, 0xFFFFFF); + drawContext.fill(x+96, y+5, x+190, y+19, 0xFFFFFFFF); + drawContext.fill(x+97, y+6, x+189, y+18, hovered(mouseX, mouseY) ? 0xFF333333 : 0xFF222222); + drawContext.drawTextWithShadow(textRenderer, elements[index], x+98, y+8, 0xFFFFFF); + } + + @Override + public void mouseClicked(double mouseX, double mouseY, int button) + { + if (hovered((int)mouseX, (int)mouseY) && button == 0) + { + if (index >= elements.length-1) index = 0; + else index++; + } + } +} 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 804a971..437faff 100644 --- a/src/main/java/me/kawaiizenbo/moonlight/ui/clickgui/ModuleButton.java +++ b/src/main/java/me/kawaiizenbo/moonlight/ui/clickgui/ModuleButton.java @@ -24,7 +24,6 @@ public class ModuleButton 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 ? 0x55FFFF : 0xFFFFFF, false); - if (!module.settings.isEmpty()) drawContext.drawGuiTexture(Identifier.of("moonlight", "settings"), x+width-12, y, 12, 12); } public boolean hovered(int mouseX, int mouseY) From 206d076fbbc57d6b163e623620767a37a04708d4 Mon Sep 17 00:00:00 2001 From: kawaiizenbo <48113593+kawaiizenbo@users.noreply.github.com> Date: Mon, 9 Sep 2024 09:56:53 -0700 Subject: [PATCH 08/10] hud modules now save state to config --- .../java/me/kawaiizenbo/moonlight/Config.java | 49 +++++++++++- .../me/kawaiizenbo/moonlight/Moonlight.java | 80 ++++++++++++++++++- .../mixin/ClientPlayerEntityMixin.java | 3 +- .../moonlight/module/modules/Fullbright.java | 3 +- .../moonlight/ui/clickgui/ClickGUIScreen.java | 1 + .../moonlight/ui/clickgui/ModuleButton.java | 1 - src/main/resources/fabric.mod.json | 1 + 7 files changed, 132 insertions(+), 6 deletions(-) diff --git a/src/main/java/me/kawaiizenbo/moonlight/Config.java b/src/main/java/me/kawaiizenbo/moonlight/Config.java index 654ae49..69588e3 100644 --- a/src/main/java/me/kawaiizenbo/moonlight/Config.java +++ b/src/main/java/me/kawaiizenbo/moonlight/Config.java @@ -14,10 +14,13 @@ import me.kawaiizenbo.moonlight.module.ModuleManager; import me.kawaiizenbo.moonlight.module.Module; import me.kawaiizenbo.moonlight.module.settings.BooleanSetting; import me.kawaiizenbo.moonlight.module.settings.DoubleSetting; +import me.kawaiizenbo.moonlight.module.settings.IndexSetting; import me.kawaiizenbo.moonlight.module.settings.KeycodeSetting; import me.kawaiizenbo.moonlight.module.settings.Setting; import me.kawaiizenbo.moonlight.module.settings.StringSetting; import me.kawaiizenbo.moonlight.ui.clickgui.ClickGUIScreen; +import me.kawaiizenbo.moonlight.ui.hud.HUDModule; +import me.kawaiizenbo.moonlight.ui.hud.HUDModuleManager; import net.minecraft.client.MinecraftClient; public class Config @@ -57,19 +60,60 @@ public class Config { ms.put(s.name, ((DoubleSetting)s).value); } - if (s instanceof StringSetting) + else if (s instanceof StringSetting) { ms.put(s.name, ((StringSetting)s).value); } else if (s instanceof KeycodeSetting) { ms.put(s.name, ((KeycodeSetting)s).value); + } + else if (s instanceof IndexSetting) + { + ms.put(s.name, ((IndexSetting)s).index); } } mo.put("settings", ms); mi.put(m.name, mo); } config.put("modules", mi); + + HUDModuleManager.INSTANCE = new HUDModuleManager(); + Map hi = new HashMap<>(); + for (HUDModule h : HUDModuleManager.INSTANCE.modules) + { + Map ho = new HashMap<>(); + ho.put("enabled", h.enabled); + Map hs = new HashMap<>(); + for (Setting s : h.settings) + { + if (s instanceof BooleanSetting) + { + hs.put(s.name, ((BooleanSetting)s).value); + } + else if (s instanceof DoubleSetting) + { + hs.put(s.name, ((DoubleSetting)s).value); + } + else if (s instanceof StringSetting) + { + hs.put(s.name, ((StringSetting)s).value); + } + else if (s instanceof KeycodeSetting) + { + hs.put(s.name, ((KeycodeSetting)s).value); + } + else if (s instanceof IndexSetting) + { + hs.put(s.name, ((IndexSetting)s).index); + } + } + ho.put("settings", hs); + ho.put("x", h.x); + ho.put("y", h.y); + hi.put(h.name, ho); + } + config.put("hud", hi); int xOffset = 4; int yOffset = 4; Map pi = new HashMap<>(); @@ -91,7 +135,8 @@ public class Config ClickGUIScreen.INSTANCE = new ClickGUIScreen(); } - public void load() throws IOException + @SuppressWarnings("unchecked") + public void load() throws IOException { try { diff --git a/src/main/java/me/kawaiizenbo/moonlight/Moonlight.java b/src/main/java/me/kawaiizenbo/moonlight/Moonlight.java index 7b9f4c9..628dca0 100644 --- a/src/main/java/me/kawaiizenbo/moonlight/Moonlight.java +++ b/src/main/java/me/kawaiizenbo/moonlight/Moonlight.java @@ -12,11 +12,14 @@ import me.kawaiizenbo.moonlight.module.ModuleManager; import me.kawaiizenbo.moonlight.module.Module; import me.kawaiizenbo.moonlight.module.settings.BooleanSetting; import me.kawaiizenbo.moonlight.module.settings.DoubleSetting; +import me.kawaiizenbo.moonlight.module.settings.IndexSetting; import me.kawaiizenbo.moonlight.module.settings.KeycodeSetting; import me.kawaiizenbo.moonlight.module.settings.Setting; import me.kawaiizenbo.moonlight.module.settings.StringSetting; import me.kawaiizenbo.moonlight.ui.clickgui.CategoryPane; import me.kawaiizenbo.moonlight.ui.clickgui.ClickGUIScreen; +import me.kawaiizenbo.moonlight.ui.hud.HUDModule; +import me.kawaiizenbo.moonlight.ui.hud.HUDModuleManager; import me.kawaiizenbo.moonlight.util.ColorUtils; public class Moonlight implements ModInitializer @@ -34,6 +37,7 @@ public class Moonlight implements ModInitializer loadConfig(); } + @SuppressWarnings("unchecked") public void loadConfig() { try @@ -60,6 +64,39 @@ public class Moonlight implements ModInitializer else if (s instanceof KeycodeSetting) { ((KeycodeSetting)s).value = ((Double)((Map)((Map)((Map)CONFIG.config.get("modules")).get(m.name)).get("settings")).get(s.name)).intValue(); + } + else if (s instanceof IndexSetting) + { + ((IndexSetting)s).index = ((Double)((Map)((Map)((Map)CONFIG.config.get("modules")).get(m.name)).get("settings")).get(s.name)).intValue(); + } + } + } + for (HUDModule m : HUDModuleManager.INSTANCE.modules) + { + m.enabled = (boolean)((Map)((Map)CONFIG.config.get("hud")).get(m.name)).get("enabled"); + m.x = ((Double)((Map)((Map)CONFIG.config.get("hud")).get(m.name)).get("x")).intValue(); + m.y = ((Double)((Map)((Map)CONFIG.config.get("hud")).get(m.name)).get("y")).intValue(); + for (Setting s : m.settings) + { + if (s instanceof BooleanSetting) + { + ((BooleanSetting)s).value = (boolean)((Map)((Map)((Map)CONFIG.config.get("hud")).get(m.name)).get("settings")).get(s.name); + } + else if (s instanceof DoubleSetting) + { + ((DoubleSetting)s).value = (Double)((Map)((Map)((Map)CONFIG.config.get("hud")).get(m.name)).get("settings")).get(s.name); + } + else if (s instanceof StringSetting) + { + ((StringSetting)s).value = (String)((Map)((Map)((Map)CONFIG.config.get("hud")).get(m.name)).get("settings")).get(s.name); + } + else if (s instanceof KeycodeSetting) + { + ((KeycodeSetting)s).value = ((Double)((Map)((Map)((Map)CONFIG.config.get("hud")).get(m.name)).get("settings")).get(s.name)).intValue(); + } + else if (s instanceof IndexSetting) + { + ((IndexSetting)s).index = ((Double)((Map)((Map)((Map)CONFIG.config.get("hud")).get(m.name)).get("settings")).get(s.name)).intValue(); } } } @@ -92,19 +129,60 @@ public class Moonlight implements ModInitializer { ms.put(s.name, ((DoubleSetting)s).value); } - if (s instanceof StringSetting) + else if (s instanceof StringSetting) { ms.put(s.name, ((StringSetting)s).value); } else if (s instanceof KeycodeSetting) { ms.put(s.name, ((KeycodeSetting)s).value); + } + else if (s instanceof IndexSetting) + { + ms.put(s.name, ((IndexSetting)s).index); } } mo.put("settings", ms); mi.put(m.name, mo); } CONFIG.config.put("modules", mi); + + Map hi = new HashMap<>(); + for (HUDModule h : HUDModuleManager.INSTANCE.modules) + { + Map ho = new HashMap<>(); + ho.put("enabled", h.enabled); + Map hs = new HashMap<>(); + for (Setting s : h.settings) + { + if (s instanceof BooleanSetting) + { + hs.put(s.name, ((BooleanSetting)s).value); + } + else if (s instanceof DoubleSetting) + { + hs.put(s.name, ((DoubleSetting)s).value); + } + else if (s instanceof StringSetting) + { + hs.put(s.name, ((StringSetting)s).value); + } + else if (s instanceof KeycodeSetting) + { + hs.put(s.name, ((KeycodeSetting)s).value); + } + else if (s instanceof IndexSetting) + { + hs.put(s.name, ((IndexSetting)s).index); + } + } + ho.put("settings", hs); + ho.put("x", h.x); + ho.put("y", h.y); + hi.put(h.name, ho); + } + CONFIG.config.put("hud", hi); + Map pi = new HashMap<>(); for (CategoryPane c : ClickGUIScreen.INSTANCE.categoryPanes) { diff --git a/src/main/java/me/kawaiizenbo/moonlight/mixin/ClientPlayerEntityMixin.java b/src/main/java/me/kawaiizenbo/moonlight/mixin/ClientPlayerEntityMixin.java index e4dc2a9..a87e8c7 100644 --- a/src/main/java/me/kawaiizenbo/moonlight/mixin/ClientPlayerEntityMixin.java +++ b/src/main/java/me/kawaiizenbo/moonlight/mixin/ClientPlayerEntityMixin.java @@ -24,7 +24,8 @@ public class ClientPlayerEntityMixin } } - @Inject(method = "tick", at = @At(value = "HEAD"), cancellable = true) + @SuppressWarnings("resource") + @Inject(method = "tick", at = @At(value = "HEAD"), cancellable = true) public void onTick(CallbackInfo ci) { for (Module m : ModuleManager.INSTANCE.getEnabledModules()) diff --git a/src/main/java/me/kawaiizenbo/moonlight/module/modules/Fullbright.java b/src/main/java/me/kawaiizenbo/moonlight/module/modules/Fullbright.java index fe13345..8fe2c61 100644 --- a/src/main/java/me/kawaiizenbo/moonlight/module/modules/Fullbright.java +++ b/src/main/java/me/kawaiizenbo/moonlight/module/modules/Fullbright.java @@ -11,7 +11,8 @@ public class Fullbright extends Module super("Fullbright", "Allows you to see in the dark.", Category.RENDER); } - @Override + @SuppressWarnings("unchecked") + @Override public void onEnable() { super.onEnable(); diff --git a/src/main/java/me/kawaiizenbo/moonlight/ui/clickgui/ClickGUIScreen.java b/src/main/java/me/kawaiizenbo/moonlight/ui/clickgui/ClickGUIScreen.java index 423b2ff..43e7dcb 100644 --- a/src/main/java/me/kawaiizenbo/moonlight/ui/clickgui/ClickGUIScreen.java +++ b/src/main/java/me/kawaiizenbo/moonlight/ui/clickgui/ClickGUIScreen.java @@ -15,6 +15,7 @@ public class ClickGUIScreen extends Screen public static ClickGUIScreen INSTANCE = new ClickGUIScreen(); public ArrayList categoryPanes; + @SuppressWarnings("unchecked") public ClickGUIScreen() { super(Text.literal("ClickGUI")); 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 437faff..7fc0499 100644 --- a/src/main/java/me/kawaiizenbo/moonlight/ui/clickgui/ModuleButton.java +++ b/src/main/java/me/kawaiizenbo/moonlight/ui/clickgui/ModuleButton.java @@ -4,7 +4,6 @@ import me.kawaiizenbo.moonlight.module.Module; import net.minecraft.client.MinecraftClient; import net.minecraft.client.font.TextRenderer; import net.minecraft.client.gui.DrawContext; -import net.minecraft.util.Identifier; public class ModuleButton { diff --git a/src/main/resources/fabric.mod.json b/src/main/resources/fabric.mod.json index fb63aca..476fc9c 100644 --- a/src/main/resources/fabric.mod.json +++ b/src/main/resources/fabric.mod.json @@ -6,6 +6,7 @@ "description": "Utility mod with a focus on stability.", "authors": [ "KawaiiZenbo", + "madeline1805", "BadGamesInc (re-used Hypnotic Code)" ], "contact": { From a055d5608433782fa5ef308a4e2aad55c52a7cfa Mon Sep 17 00:00:00 2001 From: kawaiizenbo <48113593+kawaiizenbo@users.noreply.github.com> Date: Mon, 9 Sep 2024 12:30:56 -0700 Subject: [PATCH 09/10] totem counter and armor on hud --- .../moonlight/ui/hud/HUDModule.java | 2 +- .../moonlight/ui/hud/HUDModuleManager.java | 4 ++- .../ui/hud/modules/ArmorDisplay.java | 35 ++++++++++++++++++ .../ui/hud/modules/TotemCounter.java | 36 +++++++++++++++++++ 4 files changed, 75 insertions(+), 2 deletions(-) create mode 100644 src/main/java/me/kawaiizenbo/moonlight/ui/hud/modules/ArmorDisplay.java create mode 100644 src/main/java/me/kawaiizenbo/moonlight/ui/hud/modules/TotemCounter.java diff --git a/src/main/java/me/kawaiizenbo/moonlight/ui/hud/HUDModule.java b/src/main/java/me/kawaiizenbo/moonlight/ui/hud/HUDModule.java index e1107c9..edbbe55 100644 --- a/src/main/java/me/kawaiizenbo/moonlight/ui/hud/HUDModule.java +++ b/src/main/java/me/kawaiizenbo/moonlight/ui/hud/HUDModule.java @@ -7,7 +7,7 @@ import net.minecraft.client.MinecraftClient; import net.minecraft.client.font.TextRenderer; import net.minecraft.client.gui.DrawContext; -public class HUDModule +public abstract class HUDModule { public int x, y, height, width; public String name; diff --git a/src/main/java/me/kawaiizenbo/moonlight/ui/hud/HUDModuleManager.java b/src/main/java/me/kawaiizenbo/moonlight/ui/hud/HUDModuleManager.java index 715404c..b2b3dc7 100644 --- a/src/main/java/me/kawaiizenbo/moonlight/ui/hud/HUDModuleManager.java +++ b/src/main/java/me/kawaiizenbo/moonlight/ui/hud/HUDModuleManager.java @@ -16,7 +16,9 @@ public class HUDModuleManager new FPS(2, 12), new Ping(2, 22), new MovementSpeed(2, 32), - new Coordinates(2, 42) + new Coordinates(2, 42), + new ArmorDisplay(2, 52), + new TotemCounter(20, 52) //new TestModuleHUD(20, 50) ); } diff --git a/src/main/java/me/kawaiizenbo/moonlight/ui/hud/modules/ArmorDisplay.java b/src/main/java/me/kawaiizenbo/moonlight/ui/hud/modules/ArmorDisplay.java new file mode 100644 index 0000000..eff197e --- /dev/null +++ b/src/main/java/me/kawaiizenbo/moonlight/ui/hud/modules/ArmorDisplay.java @@ -0,0 +1,35 @@ +package me.kawaiizenbo.moonlight.ui.hud.modules; + +import me.kawaiizenbo.moonlight.ui.hud.HUDModule; +import me.kawaiizenbo.moonlight.util.ColorUtils; +import me.kawaiizenbo.moonlight.util.MathUtils; +import net.minecraft.client.font.TextRenderer; +import net.minecraft.client.gui.DrawContext; +import net.minecraft.client.render.item.ItemRenderer; +import net.minecraft.item.ItemStack; +import net.minecraft.util.math.Vec3d; + +public class ArmorDisplay extends HUDModule +{ + + public ArmorDisplay(int x, int y) + { + super("Armor Display", x, y); + this.width = 16; + this.height = 64; + } + + @Override + public void render(DrawContext drawContext, int mouseX, int mouseY, TextRenderer textRenderer, boolean editMode, boolean enabled) + { + super.render(drawContext, mouseX, mouseY, textRenderer, editMode, enabled); + int yOffset = 0; + for (int i = 39; i >= 36; i--) + { + ItemStack piece = mc.player.getInventory().getStack(i); + drawContext.drawItem(piece, x, y+yOffset); + drawContext.drawItemInSlot(textRenderer, piece, x, y+yOffset); + yOffset += 16; + } + } +} diff --git a/src/main/java/me/kawaiizenbo/moonlight/ui/hud/modules/TotemCounter.java b/src/main/java/me/kawaiizenbo/moonlight/ui/hud/modules/TotemCounter.java new file mode 100644 index 0000000..7334683 --- /dev/null +++ b/src/main/java/me/kawaiizenbo/moonlight/ui/hud/modules/TotemCounter.java @@ -0,0 +1,36 @@ +package me.kawaiizenbo.moonlight.ui.hud.modules; + +import me.kawaiizenbo.moonlight.ui.hud.HUDModule; +import me.kawaiizenbo.moonlight.util.ColorUtils; +import me.kawaiizenbo.moonlight.util.MathUtils; +import net.minecraft.client.font.TextRenderer; +import net.minecraft.client.gui.DrawContext; +import net.minecraft.client.render.item.ItemRenderer; +import net.minecraft.item.ItemStack; +import net.minecraft.item.Items; +import net.minecraft.util.math.Vec3d; + +public class TotemCounter extends HUDModule +{ + + public TotemCounter(int x, int y) + { + super("Totem Counter", x, y); + this.width = 24; + this.height = 16; + } + + @Override + public void render(DrawContext drawContext, int mouseX, int mouseY, TextRenderer textRenderer, boolean editMode, boolean enabled) + { + super.render(drawContext, mouseX, mouseY, textRenderer, editMode, enabled); + int count = 0; + for (int i = 0; i < 36; i++) + { + ItemStack stack = mc.player.getInventory().getStack(i); + if (stack.getItem() == Items.TOTEM_OF_UNDYING) count += stack.getCount(); + } + drawContext.drawItem(Items.TOTEM_OF_UNDYING.getDefaultStack(), x, y); + drawContext.drawTextWithShadow(textRenderer, count+"", x+16, y+8, 16777215); + } +} From ccbb4c00ce5b16a31ddbbd174c5b87e9edcf4b81 Mon Sep 17 00:00:00 2001 From: kawaiizenbo <48113593+kawaiizenbo@users.noreply.github.com> Date: Mon, 9 Sep 2024 13:10:24 -0700 Subject: [PATCH 10/10] and one more thing --- .../moonlight/module/ModuleManager.java | 3 ++- .../moonlight/module/modules/AutoWalk.java | 26 +++++++++++++++++++ 2 files changed, 28 insertions(+), 1 deletion(-) create mode 100644 src/main/java/me/kawaiizenbo/moonlight/module/modules/AutoWalk.java diff --git a/src/main/java/me/kawaiizenbo/moonlight/module/ModuleManager.java b/src/main/java/me/kawaiizenbo/moonlight/module/ModuleManager.java index 0ec1525..070c027 100644 --- a/src/main/java/me/kawaiizenbo/moonlight/module/ModuleManager.java +++ b/src/main/java/me/kawaiizenbo/moonlight/module/ModuleManager.java @@ -24,7 +24,8 @@ public class ModuleManager new AutoJump(), new Reach(), new AntiPowderSnow(), - new AutoTotem() + new AutoTotem(), + new AutoWalk() /*new Timer()*/ ); } diff --git a/src/main/java/me/kawaiizenbo/moonlight/module/modules/AutoWalk.java b/src/main/java/me/kawaiizenbo/moonlight/module/modules/AutoWalk.java new file mode 100644 index 0000000..3fea35f --- /dev/null +++ b/src/main/java/me/kawaiizenbo/moonlight/module/modules/AutoWalk.java @@ -0,0 +1,26 @@ +package me.kawaiizenbo.moonlight.module.modules; + +import me.kawaiizenbo.moonlight.module.Category; +import me.kawaiizenbo.moonlight.module.Module; + +public class AutoWalk extends Module +{ + + public AutoWalk() + { + super("Auto Walk", "Automatically moves forward.", Category.MOVEMENT); + } + + @Override + public void tick() + { + mc.options.forwardKey.setPressed(true); + } + + @Override + public void onDisable() + { + super.onDisable(); + mc.options.forwardKey.setPressed(false); + } +}