From bdab6586d459844b8661446604b79aabbc6e590b Mon Sep 17 00:00:00 2001 From: Klesti Selimaj Date: Tue, 24 Mar 2026 11:52:43 +0100 Subject: [PATCH] Refactored all the common/module to feature --- .../EntityFeature.java} | 8 ++++--- .../NetworkFeature.java} | 4 ++-- .../PlayerFeature.java} | 4 ++-- .../RenderFeature.java} | 6 +++-- .../WorldFeature.java} | 4 ++-- ...duleProvider.java => FeatureProvider.java} | 22 +++++++++---------- .../common/provider/Providers.java | 2 +- .../mod/mods/ArmorDisplayMod.java | 8 +++---- .../saturnclient/mod/mods/AutoSprintMod.java | 8 +++---- .../saturnclient/mod/mods/CrosshairMod.java | 4 ++-- .../saturnclient/mod/mods/DayCounterMod.java | 4 ++-- .../org/saturnclient/mod/mods/FpsMod.java | 4 ++-- .../saturnclient/mod/mods/FreelookMod.java | 6 ++--- .../saturnclient/mod/mods/KeystrokesMod.java | 4 ++-- .../saturnclient/mod/mods/NametagsMod.java | 18 +++++++-------- .../saturnclient/mod/mods/SpeedometerMod.java | 8 +++---- .../mod/mods/StatusEffectsMod.java | 4 ++-- 17 files changed, 61 insertions(+), 57 deletions(-) rename src/main/java/org/saturnclient/common/{module/EntityModule.java => feature/EntityFeature.java} (88%) rename src/main/java/org/saturnclient/common/{module/NetworkModule.java => feature/NetworkFeature.java} (83%) rename src/main/java/org/saturnclient/common/{module/PlayerModule.java => feature/PlayerFeature.java} (97%) rename src/main/java/org/saturnclient/common/{module/RenderModule.java => feature/RenderFeature.java} (91%) rename src/main/java/org/saturnclient/common/{module/WorldModule.java => feature/WorldFeature.java} (89%) rename src/main/java/org/saturnclient/common/provider/{ModuleProvider.java => FeatureProvider.java} (63%) diff --git a/src/main/java/org/saturnclient/common/module/EntityModule.java b/src/main/java/org/saturnclient/common/feature/EntityFeature.java similarity index 88% rename from src/main/java/org/saturnclient/common/module/EntityModule.java rename to src/main/java/org/saturnclient/common/feature/EntityFeature.java index 6032411..0f3d622 100644 --- a/src/main/java/org/saturnclient/common/module/EntityModule.java +++ b/src/main/java/org/saturnclient/common/feature/EntityFeature.java @@ -1,4 +1,4 @@ -package org.saturnclient.common.module; +package org.saturnclient.common.feature; /** * EntityModule provides queries about entities in the current world. @@ -6,7 +6,7 @@ package org.saturnclient.common.module; * Designed to be thin so that feature logic is not polluted with * engine-specific entity types. */ -public interface EntityModule { +public interface EntityFeature { // --------------------------------------------------------------- // Crosshair / targeting @@ -21,7 +21,7 @@ public interface EntityModule { /** * Represents the minimal observable state of an entity needed for - * nametag rendering. Implementations are created per-entity each + * nametag rendering. Implementations are created per-entity each * frame; they are intentionally not cached. */ public static interface EntityState { @@ -30,7 +30,9 @@ public interface EntityModule { String getCustomName(); float getHealth(); + float getMaxHealth(); + EntityType getEntityType(); } diff --git a/src/main/java/org/saturnclient/common/module/NetworkModule.java b/src/main/java/org/saturnclient/common/feature/NetworkFeature.java similarity index 83% rename from src/main/java/org/saturnclient/common/module/NetworkModule.java rename to src/main/java/org/saturnclient/common/feature/NetworkFeature.java index 55e50ff..f461480 100644 --- a/src/main/java/org/saturnclient/common/module/NetworkModule.java +++ b/src/main/java/org/saturnclient/common/feature/NetworkFeature.java @@ -1,11 +1,11 @@ -package org.saturnclient.common.module; +package org.saturnclient.common.feature; /** * NetworkModule provides access to the current server connection. * * Methods return safe defaults (false / -1) when not connected. */ -public interface NetworkModule { +public interface NetworkFeature { /** Returns true when a server connection is active. */ boolean hasNetwork(); diff --git a/src/main/java/org/saturnclient/common/module/PlayerModule.java b/src/main/java/org/saturnclient/common/feature/PlayerFeature.java similarity index 97% rename from src/main/java/org/saturnclient/common/module/PlayerModule.java rename to src/main/java/org/saturnclient/common/feature/PlayerFeature.java index 746161f..8479641 100644 --- a/src/main/java/org/saturnclient/common/module/PlayerModule.java +++ b/src/main/java/org/saturnclient/common/feature/PlayerFeature.java @@ -1,4 +1,4 @@ -package org.saturnclient.common.module; +package org.saturnclient.common.feature; import java.util.List; @@ -11,7 +11,7 @@ import org.saturnclient.common.ref.game.ItemStackRef; * All methods return safe defaults (false / 0 / empty) when no player * is present so that features do not need to null-check everywhere. */ -public interface PlayerModule { +public interface PlayerFeature { // --------------------------------------------------------------- // Presence diff --git a/src/main/java/org/saturnclient/common/module/RenderModule.java b/src/main/java/org/saturnclient/common/feature/RenderFeature.java similarity index 91% rename from src/main/java/org/saturnclient/common/module/RenderModule.java rename to src/main/java/org/saturnclient/common/feature/RenderFeature.java index 15633ca..28b25f7 100644 --- a/src/main/java/org/saturnclient/common/module/RenderModule.java +++ b/src/main/java/org/saturnclient/common/feature/RenderFeature.java @@ -1,17 +1,18 @@ -package org.saturnclient.common.module; +package org.saturnclient.common.feature; /** * RenderModule provides access to render-time information that does * not belong to the player or world, such as the current window * dimensions, camera perspective, and the frame's FPS counter. */ -public interface RenderModule { +public interface RenderFeature { // --------------------------------------------------------------- // Window // --------------------------------------------------------------- int getScaledWindowWidth(); + int getScaledWindowHeight(); // --------------------------------------------------------------- @@ -27,5 +28,6 @@ public interface RenderModule { boolean isFirstPerson(); void setFirstPerson(); + void setThirdPersonBack(); } diff --git a/src/main/java/org/saturnclient/common/module/WorldModule.java b/src/main/java/org/saturnclient/common/feature/WorldFeature.java similarity index 89% rename from src/main/java/org/saturnclient/common/module/WorldModule.java rename to src/main/java/org/saturnclient/common/feature/WorldFeature.java index abd762f..f209300 100644 --- a/src/main/java/org/saturnclient/common/module/WorldModule.java +++ b/src/main/java/org/saturnclient/common/feature/WorldFeature.java @@ -1,4 +1,4 @@ -package org.saturnclient.common.module; +package org.saturnclient.common.feature; /** * WorldModule provides access to world-level information that is not @@ -6,7 +6,7 @@ package org.saturnclient.common.module; * * All methods return safe defaults when no world is loaded. */ -public interface WorldModule { +public interface WorldFeature { /** Returns true when a world is currently loaded. */ boolean hasWorld(); diff --git a/src/main/java/org/saturnclient/common/provider/ModuleProvider.java b/src/main/java/org/saturnclient/common/provider/FeatureProvider.java similarity index 63% rename from src/main/java/org/saturnclient/common/provider/ModuleProvider.java rename to src/main/java/org/saturnclient/common/provider/FeatureProvider.java index 2c891d9..72052fc 100644 --- a/src/main/java/org/saturnclient/common/provider/ModuleProvider.java +++ b/src/main/java/org/saturnclient/common/provider/FeatureProvider.java @@ -1,10 +1,10 @@ package org.saturnclient.common.provider; -import org.saturnclient.common.module.EntityModule; -import org.saturnclient.common.module.NetworkModule; -import org.saturnclient.common.module.PlayerModule; -import org.saturnclient.common.module.RenderModule; -import org.saturnclient.common.module.WorldModule; +import org.saturnclient.common.feature.EntityFeature; +import org.saturnclient.common.feature.NetworkFeature; +import org.saturnclient.common.feature.PlayerFeature; +import org.saturnclient.common.feature.RenderFeature; +import org.saturnclient.common.feature.WorldFeature; /** * ModuleProvider is the single entry point for features to access @@ -16,20 +16,20 @@ import org.saturnclient.common.module.WorldModule; * because the provider may swap implementations at runtime (e.g. on * world change). */ -public interface ModuleProvider { +public interface FeatureProvider { /** Access to the local player and movement state. */ - PlayerModule player(); + PlayerFeature player(); /** Access to the game world (time, TPS packets, etc.). */ - WorldModule world(); + WorldFeature world(); /** Access to entity / nametag queries. */ - EntityModule entity(); + EntityFeature entity(); /** Access to rendering utilities (window size, textures, etc.). */ - RenderModule render(); + RenderFeature render(); /** Access to the network / server connection. */ - NetworkModule network(); + NetworkFeature network(); } diff --git a/src/main/java/org/saturnclient/common/provider/Providers.java b/src/main/java/org/saturnclient/common/provider/Providers.java index 674e0fe..def0342 100644 --- a/src/main/java/org/saturnclient/common/provider/Providers.java +++ b/src/main/java/org/saturnclient/common/provider/Providers.java @@ -4,5 +4,5 @@ public class Providers { public static RefConstructorProvider refConstructor; public static SaturnProvider saturn; public static GLFWProvider GLFW; - public static ModuleProvider module; + public static FeatureProvider module; } diff --git a/src/main/java/org/saturnclient/mod/mods/ArmorDisplayMod.java b/src/main/java/org/saturnclient/mod/mods/ArmorDisplayMod.java index 877bd78..d9c8a2e 100644 --- a/src/main/java/org/saturnclient/mod/mods/ArmorDisplayMod.java +++ b/src/main/java/org/saturnclient/mod/mods/ArmorDisplayMod.java @@ -1,7 +1,7 @@ package org.saturnclient.mod.mods; +import org.saturnclient.common.feature.PlayerFeature; import org.saturnclient.common.provider.Providers; -import org.saturnclient.common.module.PlayerModule; import org.saturnclient.common.ref.game.ItemStackRef; import org.saturnclient.config.property.BoolProperty; import org.saturnclient.config.property.Property; @@ -15,7 +15,7 @@ import org.saturnclient.ui.RenderScope; * ArmorDisplayMod renders the durability of the player's equipped * armor pieces (and optionally the main-hand item) as a HUD overlay. * - * Engine access is provided exclusively through {@link ModuleProvider}. + * Engine access is provided exclusively through {@link FeatureProvider}. */ public class ArmorDisplayMod extends Mod implements HudMod { @@ -40,7 +40,7 @@ public class ArmorDisplayMod extends Mod implements HudMod { @Override public void renderHud(RenderScope scope) { - PlayerModule player = Providers.module.player(); + PlayerFeature player = Providers.module.player(); renderArmor(scope, player.getMainHand(), player.getHelmet(), @@ -51,7 +51,7 @@ public class ArmorDisplayMod extends Mod implements HudMod { @Override public void renderDummy(RenderScope scope) { - PlayerModule player = Providers.module.player(); + PlayerFeature player = Providers.module.player(); renderArmor(scope, player.getDummyMainHand(), player.getDummyHelmet(), diff --git a/src/main/java/org/saturnclient/mod/mods/AutoSprintMod.java b/src/main/java/org/saturnclient/mod/mods/AutoSprintMod.java index 80d2b30..913f84c 100644 --- a/src/main/java/org/saturnclient/mod/mods/AutoSprintMod.java +++ b/src/main/java/org/saturnclient/mod/mods/AutoSprintMod.java @@ -1,12 +1,12 @@ package org.saturnclient.mod.mods; +import org.saturnclient.common.feature.NetworkFeature; +import org.saturnclient.common.feature.PlayerFeature; import org.saturnclient.common.provider.Providers; import org.saturnclient.config.property.BoolProperty; import org.saturnclient.config.property.Property; import org.saturnclient.mod.Mod; import org.saturnclient.mod.ModSpec; -import org.saturnclient.common.module.NetworkModule; -import org.saturnclient.common.module.PlayerModule; /** * AutoSprintMod automatically enables sprinting whenever the @@ -31,8 +31,8 @@ public class AutoSprintMod extends Mod { @Override public void tick() { - PlayerModule player = Providers.module.player(); - NetworkModule network = Providers.module.network(); + PlayerFeature player = Providers.module.player(); + NetworkFeature network = Providers.module.network(); if (!player.hasPlayer() || !network.hasNetwork()) { return; diff --git a/src/main/java/org/saturnclient/mod/mods/CrosshairMod.java b/src/main/java/org/saturnclient/mod/mods/CrosshairMod.java index 3dadf01..c2e607f 100644 --- a/src/main/java/org/saturnclient/mod/mods/CrosshairMod.java +++ b/src/main/java/org/saturnclient/mod/mods/CrosshairMod.java @@ -1,11 +1,11 @@ package org.saturnclient.mod.mods; +import org.saturnclient.common.feature.RenderFeature; import org.saturnclient.common.provider.Providers; import org.saturnclient.config.property.BoolProperty; import org.saturnclient.config.property.Property; import org.saturnclient.mod.Mod; import org.saturnclient.mod.ModSpec; -import org.saturnclient.common.module.RenderModule; import org.saturnclient.ui.RenderScope; import org.saturnclient.ui.resources.Textures; @@ -38,7 +38,7 @@ public class CrosshairMod extends Mod { return; } - RenderModule render = Providers.module.render(); + RenderFeature render = Providers.module.render(); int x = (render.getScaledWindowWidth() - CROSSHAIR_SIZE) / 2; int y = (render.getScaledWindowHeight() - CROSSHAIR_SIZE) / 2; diff --git a/src/main/java/org/saturnclient/mod/mods/DayCounterMod.java b/src/main/java/org/saturnclient/mod/mods/DayCounterMod.java index e73cb0d..2f9cb3a 100644 --- a/src/main/java/org/saturnclient/mod/mods/DayCounterMod.java +++ b/src/main/java/org/saturnclient/mod/mods/DayCounterMod.java @@ -1,6 +1,6 @@ package org.saturnclient.mod.mods; -import org.saturnclient.common.module.WorldModule; +import org.saturnclient.common.feature.WorldFeature; import org.saturnclient.common.provider.Providers; import org.saturnclient.config.property.BoolProperty; import org.saturnclient.config.property.Property; @@ -13,7 +13,7 @@ import org.saturnclient.ui.resources.Fonts; /** * DayCounterMod shows how many in-game days have elapsed. - * Day count is derived from the world age via {@link WorldModule}. + * Day count is derived from the world age via {@link WorldFeature}. */ public class DayCounterMod extends Mod implements HudMod { diff --git a/src/main/java/org/saturnclient/mod/mods/FpsMod.java b/src/main/java/org/saturnclient/mod/mods/FpsMod.java index 0f1fc4a..223a655 100644 --- a/src/main/java/org/saturnclient/mod/mods/FpsMod.java +++ b/src/main/java/org/saturnclient/mod/mods/FpsMod.java @@ -1,6 +1,6 @@ package org.saturnclient.mod.mods; -import org.saturnclient.common.module.RenderModule; +import org.saturnclient.common.feature.RenderFeature; import org.saturnclient.common.provider.Providers; import org.saturnclient.config.property.BoolProperty; import org.saturnclient.config.property.Property; @@ -13,7 +13,7 @@ import org.saturnclient.ui.resources.Fonts; /** * FpsMod displays the current frames-per-second as a HUD element. - * FPS is obtained from {@link RenderModule} rather than cached in the feature. + * FPS is obtained from {@link RenderFeature} rather than cached in the feature. */ public class FpsMod extends Mod implements HudMod { diff --git a/src/main/java/org/saturnclient/mod/mods/FreelookMod.java b/src/main/java/org/saturnclient/mod/mods/FreelookMod.java index 5382e00..ae19f46 100644 --- a/src/main/java/org/saturnclient/mod/mods/FreelookMod.java +++ b/src/main/java/org/saturnclient/mod/mods/FreelookMod.java @@ -6,14 +6,14 @@ import org.saturnclient.config.property.KeybindingProperty; import org.saturnclient.config.property.Property; import org.saturnclient.mod.Mod; import org.saturnclient.mod.ModSpec; -import org.saturnclient.common.module.RenderModule; +import org.saturnclient.common.feature.RenderFeature; import org.saturnclient.common.provider.GLFWProvider; /** * FreelookMod lets the player look around freely (in third-person) * without changing the direction their character walks. * - * Camera perspective is controlled through {@link RenderModule} so + * Camera perspective is controlled through {@link RenderFeature} so * that the feature itself contains no direct Minecraft API calls. */ public class FreelookMod extends Mod { @@ -75,7 +75,7 @@ public class FreelookMod extends Mod { // --------------------------------------------------------------- private void startFreelook() { - RenderModule render = Providers.module.render(); + RenderFeature render = Providers.module.render(); wasFirstPerson = render.isFirstPerson(); render.setThirdPersonBack(); isFreeLooking = true; diff --git a/src/main/java/org/saturnclient/mod/mods/KeystrokesMod.java b/src/main/java/org/saturnclient/mod/mods/KeystrokesMod.java index 720d115..f007acd 100644 --- a/src/main/java/org/saturnclient/mod/mods/KeystrokesMod.java +++ b/src/main/java/org/saturnclient/mod/mods/KeystrokesMod.java @@ -1,5 +1,6 @@ package org.saturnclient.mod.mods; +import org.saturnclient.common.feature.PlayerFeature; import org.saturnclient.common.provider.Providers; import org.saturnclient.config.property.BoolProperty; import org.saturnclient.config.property.ColorProperty; @@ -8,7 +9,6 @@ import org.saturnclient.mod.HudMod; import org.saturnclient.mod.Mod; import org.saturnclient.mod.ModLayout; import org.saturnclient.mod.ModSpec; -import org.saturnclient.common.module.PlayerModule; import org.saturnclient.ui.RenderScope; /** @@ -67,7 +67,7 @@ public class KeystrokesMod extends Mod implements HudMod { @Override public void tick() { - PlayerModule player = Providers.module.player(); + PlayerFeature player = Providers.module.player(); w = player.isForwardPressed(); a = player.isLeftPressed(); s = player.isBackPressed(); diff --git a/src/main/java/org/saturnclient/mod/mods/NametagsMod.java b/src/main/java/org/saturnclient/mod/mods/NametagsMod.java index 3e86f80..7d99d4f 100644 --- a/src/main/java/org/saturnclient/mod/mods/NametagsMod.java +++ b/src/main/java/org/saturnclient/mod/mods/NametagsMod.java @@ -1,6 +1,6 @@ package org.saturnclient.mod.mods; -import org.saturnclient.common.module.EntityModule; +import org.saturnclient.common.feature.EntityFeature; import org.saturnclient.config.property.BoolProperty; import org.saturnclient.config.property.Property; import org.saturnclient.config.property.SelectProperty; @@ -13,10 +13,10 @@ import org.saturnclient.mod.ModSpec; * Actual rendering is injected via a mixin; this class owns the * configuration and exposes two static query methods the mixin uses: * {@link #shouldReplaceName()} and - * {@link #getNametagString(EntityModule.EntityState)}. + * {@link #getNametagString(EntityFeature.EntityState)}. * * No ModuleProvider is required here because the mixin passes the - * already-resolved {@link EntityModule.EntityState} directly. + * already-resolved {@link EntityFeature.EntityState} directly. */ public class NametagsMod extends Mod { @@ -83,7 +83,7 @@ public class NametagsMod extends Mod { * Builds the replacement nametag string for the given entity state, * or {@code null} if this entity should not have its tag replaced. */ - public static String getNametagString(EntityModule.EntityState state) { + public static String getNametagString(EntityFeature.EntityState state) { if (state.getCustomName() == null) return null; if (!healthDisplay.value) @@ -92,14 +92,14 @@ public class NametagsMod extends Mod { float health = state.getHealth(); float maxHealth = state.getMaxHealth(); - EntityModule.EntityType type = state.getEntityType(); - if (type == EntityModule.EntityType.PASSIVE && !passive.value) + EntityFeature.EntityType type = state.getEntityType(); + if (type == EntityFeature.EntityType.PASSIVE && !passive.value) return null; - if (type == EntityModule.EntityType.HOSTILE && !hostile.value) + if (type == EntityFeature.EntityType.HOSTILE && !hostile.value) return null; - if (type == EntityModule.EntityType.PLAYER && !players.value) + if (type == EntityFeature.EntityType.PLAYER && !players.value) return null; - if (type == EntityModule.EntityType.OTHER) + if (type == EntityFeature.EntityType.OTHER) return null; if (health < 0f || maxHealth < 0f || health > maxHealth) diff --git a/src/main/java/org/saturnclient/mod/mods/SpeedometerMod.java b/src/main/java/org/saturnclient/mod/mods/SpeedometerMod.java index 88069e0..cc079a4 100644 --- a/src/main/java/org/saturnclient/mod/mods/SpeedometerMod.java +++ b/src/main/java/org/saturnclient/mod/mods/SpeedometerMod.java @@ -1,5 +1,6 @@ package org.saturnclient.mod.mods; +import org.saturnclient.common.feature.PlayerFeature; import org.saturnclient.common.provider.Providers; import org.saturnclient.config.property.BoolProperty; import org.saturnclient.config.property.Property; @@ -8,13 +9,12 @@ import org.saturnclient.mod.HudMod; import org.saturnclient.mod.Mod; import org.saturnclient.mod.ModLayout; import org.saturnclient.mod.ModSpec; -import org.saturnclient.common.module.PlayerModule; import org.saturnclient.ui.RenderScope; import org.saturnclient.ui.resources.Fonts; /** * SpeedometerMod displays the player's current movement speed as - * a HUD element. Velocity data comes from {@link PlayerModule}. + * a HUD element. Velocity data comes from {@link PlayerFeature}. */ public class SpeedometerMod extends Mod implements HudMod { @@ -45,8 +45,8 @@ public class SpeedometerMod extends Mod implements HudMod { @Override public void renderHud(RenderScope scope) { - PlayerModule player = Providers.module.player(); - PlayerModule.Velocity v = player.getVelocity(); + PlayerFeature player = Providers.module.player(); + PlayerFeature.Velocity v = player.getVelocity(); boolean onGround = player.isOnGround(); double effectiveY = onGround ? 0.0 : v.y; diff --git a/src/main/java/org/saturnclient/mod/mods/StatusEffectsMod.java b/src/main/java/org/saturnclient/mod/mods/StatusEffectsMod.java index 30e620e..b49fbfc 100644 --- a/src/main/java/org/saturnclient/mod/mods/StatusEffectsMod.java +++ b/src/main/java/org/saturnclient/mod/mods/StatusEffectsMod.java @@ -2,7 +2,7 @@ package org.saturnclient.mod.mods; import java.util.List; -import org.saturnclient.common.provider.ModuleProvider; +import org.saturnclient.common.provider.FeatureProvider; import org.saturnclient.common.provider.Providers; import org.saturnclient.common.ref.game.EffectRef; import org.saturnclient.config.property.BoolProperty; @@ -20,7 +20,7 @@ import org.saturnclient.ui.RenderScope; * The effect list is supplied by the platform through an interface * returned by a future {@code PlayerModule#getActiveEffects()} call. * Until that is wired up, the existing {@link StatusEffectsInterface} - * bridge is used, accessed via {@link ModuleProvider}. + * bridge is used, accessed via {@link FeatureProvider}. */ public class StatusEffectsMod extends Mod implements HudMod {