aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author alemidev <me@alemi.dev>2023-01-29 05:04:20 +0100
committer alemidev <me@alemi.dev>2023-01-29 05:04:20 +0100
commit8b81f50b33be4613c87db0d29600bad31d02b301 (patch)
tree07861074c0af2117beea1487155aaa089f8463b3
parent40ef8c34ae4987f0825e8f98ddc7375546757226 (diff)
feat: added HUD module to show coords and mods
-rw-r--r--src/main/java/co/fantabos/bscv/modules/Hud.java80
1 files changed, 80 insertions, 0 deletions
diff --git a/src/main/java/co/fantabos/bscv/modules/Hud.java b/src/main/java/co/fantabos/bscv/modules/Hud.java
new file mode 100644
index 0000000..4b54adf
--- /dev/null
+++ b/src/main/java/co/fantabos/bscv/modules/Hud.java
@@ -0,0 +1,80 @@
+package co.fantabos.bscv.modules;
+
+import com.mojang.brigadier.CommandDispatcher;
+import com.mojang.brigadier.arguments.BoolArgumentType;
+import com.mojang.brigadier.arguments.IntegerArgumentType;
+
+import co.fantabos.bscv.BoSCoVicino;
+import co.fantabos.bscv.Module;
+import net.minecraft.client.Minecraft;
+import net.minecraft.client.gui.screen.ChatScreen;
+import net.minecraft.command.CommandSource;
+import net.minecraft.util.math.vector.Vector3d;
+import net.minecraft.util.text.Color;
+import net.minecraft.util.text.StringTextComponent;
+import net.minecraft.util.text.Style;
+import net.minecraft.util.text.TextComponent;
+import net.minecraft.util.text.TextFormatting;
+import net.minecraftforge.client.event.RenderGameOverlayEvent;
+import net.minecraftforge.client.event.RenderGameOverlayEvent.ElementType;
+import net.minecraftforge.common.ForgeConfigSpec;
+import net.minecraftforge.eventbus.api.SubscribeEvent;
+
+public class Hud extends Module {
+
+ private final ForgeConfigSpec.ConfigValue<Boolean> coordinates;
+ private final ForgeConfigSpec.ConfigValue<Boolean> activemods;
+ private final ForgeConfigSpec.ConfigValue<Integer> size;
+
+ public Hud(ForgeConfigSpec.Builder builder, CommandDispatcher<CommandSource> dispatcher) {
+ super("Hud", Group.CORE, builder, dispatcher);
+
+ this.coordinates = this.option(
+ "coords", "show coordinates on screen", true,
+ BoolArgumentType.bool(), Boolean.class,
+ builder, dispatcher
+ );
+
+ this.activemods = this.option(
+ "modules", "show active modules on screen", true,
+ BoolArgumentType.bool(), Boolean.class,
+ builder, dispatcher
+ );
+
+ this.size = this.option(
+ "size", "font size for text", 12,
+ IntegerArgumentType.integer(), Integer.class,
+ builder, dispatcher
+ );
+ }
+
+ @SubscribeEvent
+ public void onRenderOverlay(RenderGameOverlayEvent event) {
+ Minecraft mc = BoSCoVicino.minecraft;
+ if (event.getType() == ElementType.TEXT) {
+ if (this.coordinates.get() && BoSCoVicino.minecraft.player != null) {
+ Vector3d position = mc.player.getPosition(0.0f);
+ TextComponent text = new StringTextComponent(String.format("[ X %.1f | %.1f Z ] %.1f Y", position.x(), position.z(), position.y()));
+ text.setStyle(Style.EMPTY.withColor(Color.fromLegacyFormat(TextFormatting.WHITE)));
+ float height = 1.0f;
+ if (mc.screen != null && mc.screen instanceof ChatScreen) {
+ height = 16.0f;
+ }
+ mc.font.drawShadow(event.getMatrixStack(), text, 1.0f, (event.getWindow().getHeight() / 2) - (mc.font.lineHeight + height), this.size.get());
+ }
+
+ if (this.activemods.get()) {
+ float offset = 27.0f;
+ for (Module m : BoSCoVicino.mods) {
+ if (m.enabled.get()) {
+ TextComponent text = new StringTextComponent(String.format("%s <", m.name));
+ text.setStyle(Style.EMPTY.withColor(Color.fromLegacyFormat(TextFormatting.WHITE)));
+ int textWidth = BoSCoVicino.minecraft.font.width(String.format("%s <", m.name));
+ mc.font.drawShadow(event.getMatrixStack(), text, (event.getWindow().getWidth() / 2) - (textWidth + 1), offset, this.size.get());
+ offset += mc.font.lineHeight;
+ }
+ }
+ }
+ }
+ }
+}