diff --git a/src/main/java/dev/coredoes/clientmod/ClientMod.java b/src/main/java/dev/coredoes/clientmod/ClientMod.java index 6a8b9f5..af04bd3 100644 --- a/src/main/java/dev/coredoes/clientmod/ClientMod.java +++ b/src/main/java/dev/coredoes/clientmod/ClientMod.java @@ -1,5 +1,6 @@ package dev.coredoes.clientmod; +import dev.coredoes.clientmod.hud.HudManager; import dev.coredoes.clientmod.modmenu.ModMenu; import dev.coredoes.clientmod.modules.Jetpack; import dev.coredoes.clientmod.modules.ModuleManager; @@ -21,6 +22,7 @@ public class ClientMod implements ClientModInitializer { public static final Logger LOGGER = LoggerFactory.getLogger("coreclientmod"); public static ModuleManager moduleManager = new ModuleManager(); + public static HudManager hudManager = new HudManager(); private static KeyBinding modMenuKeyBinding; diff --git a/src/main/java/dev/coredoes/clientmod/hud/HudColor.java b/src/main/java/dev/coredoes/clientmod/hud/HudColor.java new file mode 100644 index 0000000..dde8de7 --- /dev/null +++ b/src/main/java/dev/coredoes/clientmod/hud/HudColor.java @@ -0,0 +1,25 @@ +package dev.coredoes.clientmod.hud; + +public enum HudColor { + DarkRed(0xaa0000), + Red(0xff5555), + Gold(0xffaa00), + Yellow(0xffff55), + DarkGreen(0x00aa00), + Green(0x55ff55), + Aqua(0x55fff), + DarkAqua(0xaaaa), + DarkBlue(0x0000aa), + Blue(0x5555ff), + LightPurple(0xff55ff), + DarkPurple(0xaa00aa), + White(0xffffff), + Gray(0xaaaaaa), + DarkGray(0x555555), + Black(0x000000); + public int value; + + HudColor(int col) { + this.value = col; + } +} diff --git a/src/main/java/dev/coredoes/clientmod/hud/HudManager.java b/src/main/java/dev/coredoes/clientmod/hud/HudManager.java new file mode 100644 index 0000000..c87ad1a --- /dev/null +++ b/src/main/java/dev/coredoes/clientmod/hud/HudManager.java @@ -0,0 +1,33 @@ +package dev.coredoes.clientmod.hud; + +import net.fabricmc.fabric.api.client.rendering.v1.HudRenderCallback; +import net.minecraft.client.MinecraftClient; +import net.minecraft.client.font.TextRenderer; + +import java.util.ArrayList; +import java.util.HashMap; + +public class HudManager { + protected HashMap messages; + public HudManager() { + messages = new HashMap<>(); + + HudRenderCallback.EVENT.register((ms, d) -> { + TextRenderer renderer = MinecraftClient.getInstance().textRenderer; + + float currentY = 5; + + for (HudMessage message : messages.values()) { + renderer.draw(ms, message.getText(), 5F, currentY, message.getColorAsInt()); + currentY += renderer.fontHeight; + } + }); + } + + public void setMesssage(String key, HudMessage message) { + messages.put(key, message); + } + public void clearMessage(String key) { + messages.remove(key); + } +} diff --git a/src/main/java/dev/coredoes/clientmod/hud/HudMessage.java b/src/main/java/dev/coredoes/clientmod/hud/HudMessage.java new file mode 100644 index 0000000..c6d8715 --- /dev/null +++ b/src/main/java/dev/coredoes/clientmod/hud/HudMessage.java @@ -0,0 +1,22 @@ +package dev.coredoes.clientmod.hud; + +public class HudMessage { + private String text; + private HudColor color; + + public HudMessage(String text, HudColor color) { + this.text = text; + this.color = color; + } + + public String getText() { + return text; + } + + public HudColor getColor() { + return color; + } + public int getColorAsInt() { + return color.value; + } +} diff --git a/src/main/java/dev/coredoes/clientmod/modules/Jetpack.java b/src/main/java/dev/coredoes/clientmod/modules/Jetpack.java index a25ab45..4d54ba6 100644 --- a/src/main/java/dev/coredoes/clientmod/modules/Jetpack.java +++ b/src/main/java/dev/coredoes/clientmod/modules/Jetpack.java @@ -1,5 +1,8 @@ package dev.coredoes.clientmod.modules; +import dev.coredoes.clientmod.ClientMod; +import dev.coredoes.clientmod.hud.HudColor; +import dev.coredoes.clientmod.hud.HudMessage; import net.fabricmc.fabric.api.client.keybinding.v1.KeyBindingHelper; import net.minecraft.client.MinecraftClient; import net.minecraft.client.font.TextRenderer; @@ -52,7 +55,6 @@ public class Jetpack implements Module { while (toggleBinding.wasPressed()) { this.isEnabled = !this.isEnabled; - client.player.sendMessage(Text.of(String.format("[%s] %s %s", this.getId(), (this.isEnabled) ? "Enabled" : "Disabled", this.getId()))); } } @@ -63,9 +65,15 @@ public class Jetpack implements Module { public void startTick(MinecraftClient client) { Module.super.startTick(client); - if (!isEnabled) return; - if (client.player != null) { + if (this.isEnabled) { + ClientMod.hudManager.setMesssage("jetpack", new HudMessage(String.format("Jetpack: Enabled (UpVel %.2f, Max %.2f, VanillaBypass %s)", this.upwardsVel, this.max, (this.isVanillaBypassEnabled) ? "on" : "off"), HudColor.Green)); + } else { + ClientMod.hudManager.clearMessage("jetpack"); + } + + if (!isEnabled) return; + boolean isJumping = client.options.jumpKey.isPressed(); boolean isSneaking = client.options.sneakKey.isPressed(); @@ -139,6 +147,7 @@ public class Jetpack implements Module { private Jetpack parentModule; private ButtonWidget upwardsVelBtn; + private ButtonWidget maxSpdBtn; public ModuleUI(Screen parent, GameOptions gameOptions, Jetpack parentModule) { super(Text.of("JetpackModule")); @@ -183,23 +192,23 @@ public class Jetpack implements Module { this.addDrawableChild(new ButtonWidget(5, 80, 20, 20, Text.of("++"), (button) -> { this.parentModule.max += 1; - this.upwardsVelBtn.setMessage(Text.of("MaxSpd: " + df.format((this.parentModule.max)))); + this.maxSpdBtn.setMessage(Text.of("MaxSpd: " + df.format((this.parentModule.max)))); })); this.addDrawableChild(new ButtonWidget(30, 80, 20, 20, Text.of("+"), (button) -> { this.parentModule.max += 0.1; - this.upwardsVelBtn.setMessage(Text.of("MaxSpd: " + df.format((this.parentModule.max)))); + this.maxSpdBtn.setMessage(Text.of("MaxSpd: " + df.format((this.parentModule.max)))); })); - this.upwardsVelBtn = new ButtonWidget(55, 80, 70, 20, Text.of("MaxSpd: " + df.format((this.parentModule.max))), (button) -> {}); - this.addDrawableChild(this.upwardsVelBtn); + this.maxSpdBtn = new ButtonWidget(55, 80, 70, 20, Text.of("MaxSpd: " + df.format((this.parentModule.max))), (button) -> {}); + this.addDrawableChild(this.maxSpdBtn); this.addDrawableChild(new ButtonWidget(130, 80, 20, 20, Text.of("-"), (button) -> { this.parentModule.max -= 0.1; - this.upwardsVelBtn.setMessage(Text.of("MaxSpd: " + df.format((this.parentModule.max)))); + this.maxSpdBtn.setMessage(Text.of("MaxSpd: " + df.format((this.parentModule.max)))); })); this.addDrawableChild(new ButtonWidget(155, 80, 20, 20, Text.of("--"), (button) -> { this.parentModule.max -= 1; - this.upwardsVelBtn.setMessage(Text.of("MaxSpd: " + df.format((this.parentModule.max)))); + this.maxSpdBtn.setMessage(Text.of("MaxSpd: " + df.format((this.parentModule.max)))); })); this.addDrawableChild(new ButtonWidget(5, this.height - 25, 40, 20, ScreenTexts.BACK, (button) -> { diff --git a/src/main/java/dev/coredoes/clientmod/modules/NoFall.java b/src/main/java/dev/coredoes/clientmod/modules/NoFall.java index 38695b9..7a02354 100644 --- a/src/main/java/dev/coredoes/clientmod/modules/NoFall.java +++ b/src/main/java/dev/coredoes/clientmod/modules/NoFall.java @@ -1,6 +1,8 @@ package dev.coredoes.clientmod.modules; import dev.coredoes.clientmod.ClientMod; +import dev.coredoes.clientmod.hud.HudColor; +import dev.coredoes.clientmod.hud.HudMessage; import net.fabricmc.fabric.api.client.keybinding.v1.KeyBindingHelper; import net.minecraft.client.MinecraftClient; import net.minecraft.client.gui.screen.Screen; @@ -36,9 +38,14 @@ public class NoFall implements Module { public void endTick(MinecraftClient client) { Module.super.endTick(client); + if (this.isEnabled) { + ClientMod.hudManager.setMesssage("nofall", new HudMessage("NoFall: Enabled", HudColor.Aqua)); + } else { + ClientMod.hudManager.clearMessage("nofall"); + } + while (toggleBinding.wasPressed()) { this.isEnabled = !this.isEnabled; - client.player.sendMessage(Text.of(String.format("[%s] %s %s", this.getId(), (this.isEnabled) ? "Enabled" : "Disabled", this.getId()))); } }