From 714f2fcdbc6f08e72c97af838e0f98979d62b547 Mon Sep 17 00:00:00 2001 From: lukasabbe <67807954+lukasabbe@users.noreply.github.com> Date: Tue, 10 Feb 2026 20:40:50 +0100 Subject: [PATCH] Start on Boat HUD --- .../com/lukasabbe/simplehud/Constants.java | 3 ++- .../com/lukasabbe/simplehud/SimpleHudMod.java | 8 +++--- .../com/lukasabbe/simplehud/huds/BoatHud.java | 25 +++++++++++++++++++ .../lukasabbe/simplehud/huds/ElytraHud.java | 11 ++------ .../lukasabbe/simplehud/huds/SimpleHud.java | 16 +++++++++--- .../lukasabbe/simplehud/tools/BoatTools.java | 16 ++++++++++++ 6 files changed, 62 insertions(+), 17 deletions(-) create mode 100644 src/main/java/com/lukasabbe/simplehud/huds/BoatHud.java create mode 100644 src/main/java/com/lukasabbe/simplehud/tools/BoatTools.java diff --git a/src/main/java/com/lukasabbe/simplehud/Constants.java b/src/main/java/com/lukasabbe/simplehud/Constants.java index bd2ddd6..5d049ea 100644 --- a/src/main/java/com/lukasabbe/simplehud/Constants.java +++ b/src/main/java/com/lukasabbe/simplehud/Constants.java @@ -11,6 +11,7 @@ public class Constants { public final static Identifier ConfigIdentifier = Identifier.fromNamespaceAndPath(MOD_ID, "config"); //Hud:s public final static Identifier ElytraHudIdentifier = Identifier.fromNamespaceAndPath(MOD_ID, "elytra_hud"); + public final static Identifier BoatHudIdentifier = Identifier.fromNamespaceAndPath(MOD_ID, "boat_hud"); - public final static List HudIdentifiers = Arrays.asList(ElytraHudIdentifier); + public final static List HudIdentifiers = Arrays.asList(ElytraHudIdentifier, BoatHudIdentifier); } diff --git a/src/main/java/com/lukasabbe/simplehud/SimpleHudMod.java b/src/main/java/com/lukasabbe/simplehud/SimpleHudMod.java index cb00f91..ec3fb97 100644 --- a/src/main/java/com/lukasabbe/simplehud/SimpleHudMod.java +++ b/src/main/java/com/lukasabbe/simplehud/SimpleHudMod.java @@ -1,6 +1,7 @@ package com.lukasabbe.simplehud; import com.lukasabbe.simplehud.config.Config; +import com.lukasabbe.simplehud.huds.BoatHud; import com.lukasabbe.simplehud.huds.ElytraHud; import com.lukasabbe.simplehud.huds.SimpleHud; import com.lukasabbe.simplehud.tools.ElytraTools; @@ -14,15 +15,14 @@ import java.util.List; public class SimpleHudMod implements ClientModInitializer { public static List HUD_LIST = Arrays.asList( - new ElytraHud() + new ElytraHud(), + new BoatHud() ); - public static Config configInstance = null; - @Override public void onInitializeClient() { Config.HANDLER.load(); - configInstance = Config.HANDLER.instance(); + Config.HANDLER.load(); HUD_LIST.forEach(simpleHud -> HudElementRegistry.addFirst(simpleHud.getIdentifier(), simpleHud::render)); ClientTickEvents.END_CLIENT_TICK.register(client -> ElytraTools.tickElytraTools()); } diff --git a/src/main/java/com/lukasabbe/simplehud/huds/BoatHud.java b/src/main/java/com/lukasabbe/simplehud/huds/BoatHud.java new file mode 100644 index 0000000..6312cf4 --- /dev/null +++ b/src/main/java/com/lukasabbe/simplehud/huds/BoatHud.java @@ -0,0 +1,25 @@ +package com.lukasabbe.simplehud.huds; + +import com.lukasabbe.simplehud.Constants; +import com.lukasabbe.simplehud.tools.BoatTools; +import net.minecraft.client.DeltaTracker; +import net.minecraft.client.gui.GuiGraphics; +import net.minecraft.resources.Identifier; + +public class BoatHud implements SimpleHud{ + @Override + public void render(GuiGraphics graphics, DeltaTracker tracker) { + if(!isHudActivated()) return; + if(client.noRender) return; + if(!BoatTools.isRidingBoat()) return; + if(client.player == null) return; + + renderBackPlate(graphics); + + } + + @Override + public Identifier getIdentifier() { + return Constants.BoatHudIdentifier; + } +} diff --git a/src/main/java/com/lukasabbe/simplehud/huds/ElytraHud.java b/src/main/java/com/lukasabbe/simplehud/huds/ElytraHud.java index 83691d4..44dc089 100644 --- a/src/main/java/com/lukasabbe/simplehud/huds/ElytraHud.java +++ b/src/main/java/com/lukasabbe/simplehud/huds/ElytraHud.java @@ -2,6 +2,7 @@ package com.lukasabbe.simplehud.huds; import com.lukasabbe.simplehud.Constants; import com.lukasabbe.simplehud.SimpleHudMod; +import com.lukasabbe.simplehud.config.Config; import com.lukasabbe.simplehud.tools.ElytraTools; import net.minecraft.client.DeltaTracker; import net.minecraft.client.gui.GuiGraphics; @@ -23,7 +24,7 @@ public class ElytraHud implements SimpleHud { @Override public void render(GuiGraphics graphics, DeltaTracker tracker) { if(!isHudActivated()) return; - //if(!ElytraTools.isFlying()) return; + if(!ElytraTools.isFlying()) return; if(client.noRender) return; if(client.player == null) return; @@ -150,14 +151,6 @@ public class ElytraHud implements SimpleHud { drawLine(graphics, centerX, centerY, endX, endY, (int) radius, compass_pointer); } - private String getSpeed(){ - return switch (SimpleHudMod.configInstance.speedEnumElytra){ - case kmh -> String.format("%.1f km/h", ElytraTools.getSpeedKmh()); - case mph -> String.format("%.1f mph", ElytraTools.getSpeedMph()); - case ms -> String.format("%.1f m/s", ElytraTools.getSpeedMs()); - }; - } - @Override public Identifier getIdentifier() { return Constants.ElytraHudIdentifier; diff --git a/src/main/java/com/lukasabbe/simplehud/huds/SimpleHud.java b/src/main/java/com/lukasabbe/simplehud/huds/SimpleHud.java index eb40c78..768585d 100644 --- a/src/main/java/com/lukasabbe/simplehud/huds/SimpleHud.java +++ b/src/main/java/com/lukasabbe/simplehud/huds/SimpleHud.java @@ -2,7 +2,9 @@ package com.lukasabbe.simplehud.huds; import com.lukasabbe.simplehud.Constants; import com.lukasabbe.simplehud.SimpleHudMod; +import com.lukasabbe.simplehud.config.Config; import com.lukasabbe.simplehud.config.HudPosition; +import com.lukasabbe.simplehud.tools.ElytraTools; import net.minecraft.client.DeltaTracker; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.GuiGraphics; @@ -20,7 +22,7 @@ public interface SimpleHud { Identifier getIdentifier(); default boolean isHudActivated(){ - return SimpleHudMod.configInstance.HudActivatedList.get(getIdentifier().toShortString()); + return Config.HANDLER.instance().HudActivatedList.get(getIdentifier().toShortString()); } default void renderBackPlate(GuiGraphics graphics){ @@ -49,7 +51,7 @@ public interface SimpleHud { final int hudHalfWidth = 50; final int hudHeight = 36; - if(SimpleHudMod.configInstance.ignoreSafeArea){ + if( Config.HANDLER.instance().ignoreSafeArea){ return switch (position){ case TOP_LEFT -> new int[]{hudHalfWidth + padding, 60 + padding}; case TOP_RIGHT -> new int[]{screenWidth - hudHalfWidth - padding, 60 + padding}; @@ -93,7 +95,7 @@ public interface SimpleHud { int screenWidth = client.getWindow().getGuiScaledWidth(); int screenHeight = client.getWindow().getGuiScaledHeight(); - int[] pos = calculateHudPosition(screenWidth, screenHeight, SimpleHudMod.configInstance.hudPositionElytra); + int[] pos = calculateHudPosition(screenWidth, screenHeight, Config.HANDLER.instance().hudPositionElytra); int x = pos[0] - backPlateCenteredX; int y = pos[1] - backPlateCenteredY; return new int[]{x, y}; @@ -114,4 +116,12 @@ public interface SimpleHud { ); } } + + default String getSpeed(){ + return switch (Config.HANDLER.instance().speedEnumElytra){ + case kmh -> String.format("%.1f km/h", ElytraTools.getSpeedKmh()); + case mph -> String.format("%.1f mph", ElytraTools.getSpeedMph()); + case ms -> String.format("%.1f m/s", ElytraTools.getSpeedMs()); + }; + } } diff --git a/src/main/java/com/lukasabbe/simplehud/tools/BoatTools.java b/src/main/java/com/lukasabbe/simplehud/tools/BoatTools.java new file mode 100644 index 0000000..4a1d0cb --- /dev/null +++ b/src/main/java/com/lukasabbe/simplehud/tools/BoatTools.java @@ -0,0 +1,16 @@ +package com.lukasabbe.simplehud.tools; + +import net.minecraft.client.Minecraft; +import net.minecraft.client.player.LocalPlayer; +import org.jspecify.annotations.Nullable; + +public class BoatTools { + public static boolean isRidingBoat(){ + var player = getLocalPlayer(); + if(player == null) return false; + return getLocalPlayer().getVehicle() != null; + } + private static @Nullable LocalPlayer getLocalPlayer() { + return Minecraft.getInstance().player; + } +}