From b58eedfb9c646816eb6f6836cc843eb9e2183c4b Mon Sep 17 00:00:00 2001 From: kawaiizenbo <48113593+kawaiizenbo@users.noreply.github.com> Date: Wed, 28 Jun 2023 17:03:45 -0700 Subject: [PATCH] modules list and remove broken stuff --- .../me/kawaiizenbo/moonlight/Moonlight.java | 3 -- .../mixin/ClientPlayerEntityMixin.java | 25 +++++++++++ .../moonlight/mixin/InGameHudMixin.java | 6 ++- .../moonlight/module/ModuleManager.java | 4 +- .../kawaiizenbo/moonlight/module/Module_.java | 11 ++++- .../moonlight/module/modules/Fly.java | 1 + .../moonlight/module/modules/Fullbright.java | 2 + .../moonlight/module/modules/HUDModule.java | 37 ++++++++++++----- .../moonlight/module/modules/ModulesList.java | 14 +++++++ .../moonlight/module/modules/Speed.java | 23 +++++++++++ .../moonlight/module/modules/Step.java | 3 +- .../module/settings/BooleanSetting.java | 7 +--- .../module/settings/ColorSetting.java | 5 +-- .../module/settings/DoubleSetting.java | 7 +--- .../ui/{HUD.java => HUDOverlay.java} | 23 +++++++---- .../moonlight/ui/ModulesListOverlay.java | 41 +++++++++++++++++++ 16 files changed, 168 insertions(+), 44 deletions(-) create mode 100644 src/main/java/me/kawaiizenbo/moonlight/mixin/ClientPlayerEntityMixin.java create mode 100644 src/main/java/me/kawaiizenbo/moonlight/module/modules/ModulesList.java create mode 100644 src/main/java/me/kawaiizenbo/moonlight/module/modules/Speed.java rename src/main/java/me/kawaiizenbo/moonlight/ui/{HUD.java => HUDOverlay.java} (71%) create mode 100644 src/main/java/me/kawaiizenbo/moonlight/ui/ModulesListOverlay.java diff --git a/src/main/java/me/kawaiizenbo/moonlight/Moonlight.java b/src/main/java/me/kawaiizenbo/moonlight/Moonlight.java index 076f495..20ac472 100644 --- a/src/main/java/me/kawaiizenbo/moonlight/Moonlight.java +++ b/src/main/java/me/kawaiizenbo/moonlight/Moonlight.java @@ -1,8 +1,6 @@ package me.kawaiizenbo.moonlight; import net.fabricmc.api.ModInitializer; -import net.minecraft.client.MinecraftClient; -import net.minecraft.client.gui.DrawContext; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -12,7 +10,6 @@ import me.kawaiizenbo.moonlight.util.ColorUtils; public class Moonlight implements ModInitializer { public static final Moonlight INSTANCE = new Moonlight(); - public static final DrawContext drawCfontext = new DrawContext(MinecraftClient.getInstance(), null); 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.dev"; diff --git a/src/main/java/me/kawaiizenbo/moonlight/mixin/ClientPlayerEntityMixin.java b/src/main/java/me/kawaiizenbo/moonlight/mixin/ClientPlayerEntityMixin.java new file mode 100644 index 0000000..ed05e92 --- /dev/null +++ b/src/main/java/me/kawaiizenbo/moonlight/mixin/ClientPlayerEntityMixin.java @@ -0,0 +1,25 @@ +package me.kawaiizenbo.moonlight.mixin; + +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; + +import me.kawaiizenbo.moonlight.module.ModuleManager; +import me.kawaiizenbo.moonlight.module.Module_; +import net.minecraft.client.network.ClientPlayerEntity; +import net.minecraft.entity.MovementType; +import net.minecraft.util.math.Vec3d; + +@Mixin(ClientPlayerEntity.class) +public class ClientPlayerEntityMixin +{ + @Inject(method = "move", at = @At(value = "HEAD"), cancellable = true) + public void onMotion(MovementType type, Vec3d movement, CallbackInfo ci) + { + for (Module_ m : ModuleManager.INSTANCE.getEnabledModules()) + { + m.onMotion(type, movement); + } + } +} diff --git a/src/main/java/me/kawaiizenbo/moonlight/mixin/InGameHudMixin.java b/src/main/java/me/kawaiizenbo/moonlight/mixin/InGameHudMixin.java index c912e7b..44adfd1 100644 --- a/src/main/java/me/kawaiizenbo/moonlight/mixin/InGameHudMixin.java +++ b/src/main/java/me/kawaiizenbo/moonlight/mixin/InGameHudMixin.java @@ -7,7 +7,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.HUD; +import me.kawaiizenbo.moonlight.ui.HUDOverlay; +import me.kawaiizenbo.moonlight.ui.ModulesListOverlay; import net.minecraft.client.gui.DrawContext; import net.minecraft.client.gui.hud.InGameHud; @@ -20,7 +21,8 @@ public class InGameHudMixin { @Inject(at = @At("TAIL"), method = "render") public void onRender (DrawContext drawContext, float tickDelta, CallbackInfo info) { - if (ModuleManager.INSTANCE.getModuleByName("HUD").enabled) HUD.INSTANCE.renderHUD(drawContext, scaledWidth, scaledHeight); + if (ModuleManager.INSTANCE.getModuleByName("HUD").enabled) HUDOverlay.INSTANCE.render(drawContext, scaledWidth, scaledHeight); + if (ModuleManager.INSTANCE.getModuleByName("ModulesList").enabled) ModulesListOverlay.INSTANCE.render(drawContext, scaledWidth, scaledHeight); } } diff --git a/src/main/java/me/kawaiizenbo/moonlight/module/ModuleManager.java b/src/main/java/me/kawaiizenbo/moonlight/module/ModuleManager.java index 13b2da4..9b3eccc 100644 --- a/src/main/java/me/kawaiizenbo/moonlight/module/ModuleManager.java +++ b/src/main/java/me/kawaiizenbo/moonlight/module/ModuleManager.java @@ -16,7 +16,9 @@ public class ModuleManager new NoFall(), new HUDModule(), new Step(), - new Fullbright() + new Fullbright(), + new Speed(), + new ModulesList() ); } diff --git a/src/main/java/me/kawaiizenbo/moonlight/module/Module_.java b/src/main/java/me/kawaiizenbo/moonlight/module/Module_.java index 41fd06a..5645422 100644 --- a/src/main/java/me/kawaiizenbo/moonlight/module/Module_.java +++ b/src/main/java/me/kawaiizenbo/moonlight/module/Module_.java @@ -2,8 +2,12 @@ package me.kawaiizenbo.moonlight.module; import java.util.ArrayList; +import me.kawaiizenbo.moonlight.module.settings.BooleanSetting; import me.kawaiizenbo.moonlight.module.settings.Setting; +import me.kawaiizenbo.moonlight.ui.ModulesListOverlay; import net.minecraft.client.MinecraftClient; +import net.minecraft.entity.MovementType; +import net.minecraft.util.math.Vec3d; public abstract class Module_ { @@ -15,6 +19,8 @@ public abstract class Module_ public ArrayList settings; public int keyBind; + public BooleanSetting showInModulesList = new BooleanSetting("Show in Modules List", true); + public Module_(String name, String description, Category category) { this.name = name; @@ -23,8 +29,9 @@ public abstract class Module_ settings = new ArrayList<>(); } - public void onEnable() {} - public void onDisable() {} + public void onEnable() { ModulesListOverlay.INSTANCE.update(); } + public void onDisable() { ModulesListOverlay.INSTANCE.update(); } + public void onMotion(MovementType type, Vec3d movement) {} public void tick() {} public void toggle() diff --git a/src/main/java/me/kawaiizenbo/moonlight/module/modules/Fly.java b/src/main/java/me/kawaiizenbo/moonlight/module/modules/Fly.java index 5695dff..f78b1a8 100644 --- a/src/main/java/me/kawaiizenbo/moonlight/module/modules/Fly.java +++ b/src/main/java/me/kawaiizenbo/moonlight/module/modules/Fly.java @@ -20,6 +20,7 @@ public class Fly extends Module_ @Override public void onDisable() { + super.onDisable(); mc.player.getAbilities().flying = false; } } 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 6135a5e..4ff5e65 100644 --- a/src/main/java/me/kawaiizenbo/moonlight/module/modules/Fullbright.java +++ b/src/main/java/me/kawaiizenbo/moonlight/module/modules/Fullbright.java @@ -14,12 +14,14 @@ public class Fullbright extends Module_ @Override public void onEnable() { + super.onEnable(); ((ISimpleOption)(Object)mc.options.getGamma()).setValueUnrestricted(100.0); } @Override public void onDisable() { + super.onDisable(); mc.options.getGamma().setValue(1.0); } } diff --git a/src/main/java/me/kawaiizenbo/moonlight/module/modules/HUDModule.java b/src/main/java/me/kawaiizenbo/moonlight/module/modules/HUDModule.java index 25b76ae..3ee192b 100644 --- a/src/main/java/me/kawaiizenbo/moonlight/module/modules/HUDModule.java +++ b/src/main/java/me/kawaiizenbo/moonlight/module/modules/HUDModule.java @@ -2,28 +2,43 @@ 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.DoubleSetting; -import me.kawaiizenbo.moonlight.ui.HUD; -import me.kawaiizenbo.moonlight.util.ReflectionUtils; +import me.kawaiizenbo.moonlight.ui.HUDOverlay; +import me.kawaiizenbo.moonlight.util.ColorUtils; public class HUDModule extends Module_ { - //public DoubleSetting r = new DoubleSetting("Red", 0x55, 0, 255, 0, ReflectionUtils.tryGetMethod("updateHUD()V", getClass())); - //public DoubleSetting g = new DoubleSetting("Green", 255, 0, 255, 0, ReflectionUtils.tryGetMethod("updateHUD()V", getClass())); - //public DoubleSetting b = new DoubleSetting("Blue", 255, 0, 255, 0, ReflectionUtils.tryGetMethod("updateHUD()V", getClass())); + 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", "Enables or disables the Moonlight HUD.", Category.RENDER); + super("HUD", "The Moonlight HUD. Toggle to update.", Category.RENDER); this.enabled = true; - //settings.add(r); - //settings.add(g); - //settings.add(b); + this.showInModulesList.value = false; + + settings.add(clientTag); + settings.add(r); + settings.add(g); + settings.add(b); //settings.add(color); } - public static void updateHUD() + @Override + public void onEnable() { - HUD.INSTANCE = new HUD(); + super.onEnable(); + HUDOverlay.INSTANCE.showClientTag = clientTag.value; + HUDOverlay.INSTANCE.hudColor = + ColorUtils.rgbaToInt( + (int)r.value, + (int)g.value, + (int)b.value, + 255 + ); } } diff --git a/src/main/java/me/kawaiizenbo/moonlight/module/modules/ModulesList.java b/src/main/java/me/kawaiizenbo/moonlight/module/modules/ModulesList.java new file mode 100644 index 0000000..a8d7357 --- /dev/null +++ b/src/main/java/me/kawaiizenbo/moonlight/module/modules/ModulesList.java @@ -0,0 +1,14 @@ +package me.kawaiizenbo.moonlight.module.modules; + +import me.kawaiizenbo.moonlight.module.Category; +import me.kawaiizenbo.moonlight.module.Module_; + +public class ModulesList extends Module_ +{ + public ModulesList() + { + super("ModulesList", "Shows enabled modules on side of screen", Category.RENDER); + this.enabled = true; + this.showInModulesList.value = false; + } +} diff --git a/src/main/java/me/kawaiizenbo/moonlight/module/modules/Speed.java b/src/main/java/me/kawaiizenbo/moonlight/module/modules/Speed.java new file mode 100644 index 0000000..1e94f49 --- /dev/null +++ b/src/main/java/me/kawaiizenbo/moonlight/module/modules/Speed.java @@ -0,0 +1,23 @@ +package me.kawaiizenbo.moonlight.module.modules; + +import me.kawaiizenbo.moonlight.module.Category; +import me.kawaiizenbo.moonlight.module.Module_; +import me.kawaiizenbo.moonlight.module.settings.DoubleSetting; +import net.minecraft.entity.MovementType; +import net.minecraft.util.math.Vec3d; + +public class Speed extends Module_ +{ + DoubleSetting speed = new DoubleSetting("Speed", 2, 0.1, 10, 1); + public Speed() + { + super("Speed", "Allows you to move faster.", Category.MOVEMENT); + } + + @Override + public void onMotion(MovementType type, Vec3d movement) + { + mc.player.addVelocity(movement); + } + +} diff --git a/src/main/java/me/kawaiizenbo/moonlight/module/modules/Step.java b/src/main/java/me/kawaiizenbo/moonlight/module/modules/Step.java index c0d725a..e2cf384 100644 --- a/src/main/java/me/kawaiizenbo/moonlight/module/modules/Step.java +++ b/src/main/java/me/kawaiizenbo/moonlight/module/modules/Step.java @@ -6,7 +6,7 @@ import me.kawaiizenbo.moonlight.module.settings.DoubleSetting; public class Step extends Module_ { - DoubleSetting stepHeight = new DoubleSetting("Height", 1, 1, 10, 0, null); + DoubleSetting stepHeight = new DoubleSetting("Height", 1, 1, 10, 0); public Step() { @@ -23,6 +23,7 @@ public class Step extends Module_ @Override public void onDisable() { + super.onDisable(); mc.player.setStepHeight(0.5f); } } diff --git a/src/main/java/me/kawaiizenbo/moonlight/module/settings/BooleanSetting.java b/src/main/java/me/kawaiizenbo/moonlight/module/settings/BooleanSetting.java index c8cf87d..758f91f 100644 --- a/src/main/java/me/kawaiizenbo/moonlight/module/settings/BooleanSetting.java +++ b/src/main/java/me/kawaiizenbo/moonlight/module/settings/BooleanSetting.java @@ -1,8 +1,5 @@ package me.kawaiizenbo.moonlight.module.settings; -import java.lang.reflect.Method; - -import me.kawaiizenbo.moonlight.util.ReflectionUtils; import net.minecraft.client.gui.DrawContext; import net.minecraft.text.Text; @@ -10,11 +7,10 @@ public class BooleanSetting extends Setting { public boolean value; - public BooleanSetting(String name, boolean value, Method onValueChanged) + public BooleanSetting(String name, boolean value) { this.name = name; this.value = value; - this.onValueChanged = onValueChanged; } @Override @@ -33,7 +29,6 @@ public class BooleanSetting extends Setting if (hovered((int)mouseX, (int)mouseY) && button == 0) { this.value = !value; - ReflectionUtils.tryCallMethod(onValueChanged, new Object[0]); } } } diff --git a/src/main/java/me/kawaiizenbo/moonlight/module/settings/ColorSetting.java b/src/main/java/me/kawaiizenbo/moonlight/module/settings/ColorSetting.java index a2c1e94..886ed97 100644 --- a/src/main/java/me/kawaiizenbo/moonlight/module/settings/ColorSetting.java +++ b/src/main/java/me/kawaiizenbo/moonlight/module/settings/ColorSetting.java @@ -1,7 +1,5 @@ package me.kawaiizenbo.moonlight.module.settings; -import java.lang.reflect.Method; - import me.kawaiizenbo.moonlight.util.ColorUtils; import net.minecraft.client.gui.DrawContext; import net.minecraft.text.Text; @@ -14,12 +12,11 @@ public class ColorSetting extends Setting public int b; - public ColorSetting(String name, int value, Method onValueChanged) + public ColorSetting(String name, int value) { this.name = name; this.value = value; this.height = 64; - this.onValueChanged = onValueChanged; this.r = (value >> 16) & 0xFF; this.g = (value >> 8) & 0xFF; this.b = value & 0xFF; diff --git a/src/main/java/me/kawaiizenbo/moonlight/module/settings/DoubleSetting.java b/src/main/java/me/kawaiizenbo/moonlight/module/settings/DoubleSetting.java index c7f73b9..5798855 100644 --- a/src/main/java/me/kawaiizenbo/moonlight/module/settings/DoubleSetting.java +++ b/src/main/java/me/kawaiizenbo/moonlight/module/settings/DoubleSetting.java @@ -1,9 +1,6 @@ package me.kawaiizenbo.moonlight.module.settings; -import java.lang.reflect.Method; - import me.kawaiizenbo.moonlight.util.MathUtils; -import me.kawaiizenbo.moonlight.util.ReflectionUtils; import net.minecraft.client.gui.DrawContext; import net.minecraft.text.Text; @@ -15,11 +12,10 @@ public class DoubleSetting extends Setting boolean sliding = false; - public DoubleSetting(String name, double value, double min, double max, int roundingPlace, Method onValueChanged) + public DoubleSetting(String name, double value, double min, double max, int roundingPlace) { this.name = name; this.value = value; - this.onValueChanged = onValueChanged; this.min = min; this.max = max; this.roundingPlace = roundingPlace; @@ -66,7 +62,6 @@ public class DoubleSetting extends Setting public void mouseReleased(double mouseX, double mouseY, int button) { sliding = false; - ReflectionUtils.tryCallMethod(onValueChanged, new Object[0]); } } diff --git a/src/main/java/me/kawaiizenbo/moonlight/ui/HUD.java b/src/main/java/me/kawaiizenbo/moonlight/ui/HUDOverlay.java similarity index 71% rename from src/main/java/me/kawaiizenbo/moonlight/ui/HUD.java rename to src/main/java/me/kawaiizenbo/moonlight/ui/HUDOverlay.java index bfc57f8..b511c38 100644 --- a/src/main/java/me/kawaiizenbo/moonlight/ui/HUD.java +++ b/src/main/java/me/kawaiizenbo/moonlight/ui/HUDOverlay.java @@ -11,32 +11,39 @@ import net.minecraft.client.font.TextRenderer; import net.minecraft.client.gui.DrawContext; import net.minecraft.util.math.Vec3d; -public class HUD +public class HUDOverlay { - public static HUD INSTANCE = new HUD(); + public static HUDOverlay INSTANCE = new HUDOverlay(); private MinecraftClient mc = MinecraftClient.getInstance(); TextRenderer textRenderer = mc.textRenderer; - public int hudColor = 0xFF00FFFF; /*ColorUtils.rgbaToInt( + 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 );*/ + 255 ); - public void renderHUD(DrawContext drawContext, int scaledWidth, int scaledHeight) + public void render(DrawContext drawContext, int scaledWidth, int scaledHeight) { // do not draw if F3 enabled if (mc.options.debugEnabled) return; // draw stats - drawContext.drawTextWithShadow(textRenderer, Moonlight.clientTag + " " + Moonlight.versionTag, 2, 2, 16777215); - drawContext.drawTextWithShadow(textRenderer, "FPS: " + ColorUtils.gray + mc.fpsDebugString.split(" ")[0], 2, 12, hudColor); - drawContext.drawTextWithShadow(textRenderer, "Ping: " + ColorUtils.gray + (mc.getNetworkHandler().getPlayerListEntry(mc.player.getUuid()) == null ? 0 : mc.getNetworkHandler().getPlayerListEntry(mc.player.getUuid()).getLatency()), 2, 22, hudColor); + drawContext.drawTextWithShadow(textRenderer, "FPS: " + ColorUtils.gray + mc.fpsDebugString.split(" ")[0], 2, 2, hudColor); + drawContext.drawTextWithShadow(textRenderer, "Ping: " + ColorUtils.gray + (mc.getNetworkHandler().getPlayerListEntry(mc.player.getUuid()) == null ? 0 : mc.getNetworkHandler().getPlayerListEntry(mc.player.getUuid()).getLatency()), 2, 12, hudColor); drawContext.drawTextWithShadow(textRenderer, "Meters/s: " + ColorUtils.gray + MathUtils.round(moveSpeed(), 2), 2, scaledHeight - 20, hudColor); // draw coordinates drawContext.drawTextWithShadow(textRenderer, "X: " + ColorUtils.gray + MathUtils.round(mc.player.getX(), 1) + ColorUtils.reset + " Y: " + ColorUtils.gray + MathUtils.round(mc.player.getY(), 1) + ColorUtils.reset + " Z: " + ColorUtils.gray + MathUtils.round(mc.player.getZ(), 1), 2, scaledHeight - 10, hudColor); + + // draw client tag (if enabled) + if (showClientTag) + { + drawContext.drawTextWithShadow(textRenderer, Moonlight.clientTag + " " + Moonlight.versionTag, + scaledWidth - 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 new file mode 100644 index 0000000..c52dc4a --- /dev/null +++ b/src/main/java/me/kawaiizenbo/moonlight/ui/ModulesListOverlay.java @@ -0,0 +1,41 @@ +package me.kawaiizenbo.moonlight.ui; + +import java.util.ArrayList; +import java.util.Comparator; + +import me.kawaiizenbo.moonlight.module.ModuleManager; +import me.kawaiizenbo.moonlight.module.Module_; +import net.minecraft.client.MinecraftClient; + +import net.minecraft.client.font.TextRenderer; +import net.minecraft.client.gui.DrawContext; + +public class ModulesListOverlay +{ + public static ModulesListOverlay INSTANCE = new ModulesListOverlay(); + private MinecraftClient mc = MinecraftClient.getInstance(); + TextRenderer textRenderer = mc.textRenderer; + private ArrayList enabledModules = ModuleManager.INSTANCE.getEnabledModules(); + + public void render(DrawContext drawContext, int scaledWidth, int scaledHeight) + { + // do not draw if F3 enabled + if (mc.options.debugEnabled) return; + + int yOffset = 0; + for (Module_ m : enabledModules) + { + if (!m.showInModulesList.value) continue; + int nameWidth = textRenderer.getWidth(m.name); + drawContext.fill(scaledWidth - nameWidth - 8, yOffset, scaledWidth, yOffset+12, 0x55222222); + drawContext.fill(scaledWidth - 2, yOffset, scaledWidth, yOffset+12, HUDOverlay.INSTANCE.hudColor); + drawContext.drawText(textRenderer, m.name, scaledWidth - nameWidth - 4, yOffset + 2, 0xFFFFFFFF, false); + yOffset += 12; + } + } + + public void update() + { + enabledModules = ModuleManager.INSTANCE.getEnabledModules(); + } +}