implement legacy hud elements as modules

This commit is contained in:
kawaiizenbo 2024-09-07 20:40:47 -07:00
parent 31ecdd4f04
commit 8f6646b7e0
11 changed files with 165 additions and 11 deletions

View file

@ -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<Module> enabledModules = ModuleManager.INSTANCE.getEnabledModules();

View file

@ -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);
}
}

View file

@ -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<HUDModule> getEnabledModules()
{
ArrayList<HUDModule> enabledModules = new ArrayList<>();
for (HUDModule module : modules)
{
if (!module.enabled)
continue;
enabledModules.add(module);
}
return enabledModules;
}
}

View file

@ -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);
}
}
}

View file

@ -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);
}
}

View file

@ -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);
}
}

View file

@ -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
);
}
}

View file

@ -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);
}
}

View file

@ -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)) ;
}
}

View file

@ -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);
}
}

View file

@ -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);
}
}