From 7849e2e04c0ffd2fb2494909f33108e1cede117f Mon Sep 17 00:00:00 2001 From: Klesti Selimaj Date: Tue, 24 Mar 2026 12:05:02 +0100 Subject: [PATCH] Refactored feature / module system #55 --- common | 2 +- .../modules/entity/EntityModuleFabric.java | 9 +++--- .../modules/entity/HealthRenderState.java | 16 +++++++---- .../modules/mixins/entity/CameraMixin.java | 6 ++-- .../modules/mixins/entity/EntityMixin.java | 4 +-- .../modules/mixins/misc/NametagsMixin.java | 10 +++---- .../render/BackgroundRendererMixin.java | 4 +-- .../mixins/render/GameRendererMixin.java | 12 ++++---- .../render/LightmapTextureManagerMixin.java | 14 +++++----- .../render/LivingEntityRenderStateMixin.java | 10 +++---- .../render/LivingEntityRendererMixin.java | 14 +++++----- .../modules/mixins/render/RenderMixin.java | 22 +++++++-------- .../impl/modules/mixins/world/TpsMixin.java | 12 ++++---- .../modules/network/NetworkModuleFabric.java | 8 +++--- .../modules/player/PlayerModuleFabric.java | 8 +++--- .../modules/render/RenderModuleFabric.java | 10 +++---- .../impl/modules/world/WorldModuleFabric.java | 10 +++---- .../impl/provider/ModuleProviderFabric.java | 28 +++++++++---------- .../saturnclient/SaturnClient.java | 6 ++-- .../modules/entity/EntityModuleFabric.java | 9 +++--- .../modules/entity/HealthRenderState.java | 16 +++++++---- .../modules/mixins/entity/CameraMixin.java | 6 ++-- .../modules/mixins/entity/EntityMixin.java | 4 +-- .../modules/mixins/misc/NametagsMixin.java | 10 +++---- .../render/BackgroundRendererMixin.java | 4 +-- .../mixins/render/GameRendererMixin.java | 12 ++++---- .../render/LightmapTextureManagerMixin.java | 10 +++---- .../render/LivingEntityRenderStateMixin.java | 10 +++---- .../render/LivingEntityRendererMixin.java | 14 +++++----- .../modules/mixins/render/RenderMixin.java | 20 ++++++------- .../impl/modules/mixins/world/TpsMixin.java | 12 ++++---- .../modules/network/NetworkModuleFabric.java | 8 +++--- .../modules/player/PlayerModuleFabric.java | 8 +++--- .../modules/render/RenderModuleFabric.java | 10 +++---- .../impl/modules/world/WorldModuleFabric.java | 10 +++---- .../impl/provider/ModuleProviderFabric.java | 28 +++++++++---------- .../saturnclient/SaturnClient.java | 6 ++-- 37 files changed, 204 insertions(+), 198 deletions(-) diff --git a/common b/common index 174c952..bdab658 160000 --- a/common +++ b/common @@ -1 +1 @@ -Subproject commit 174c95240c95eaaba662e34086864d35c7cf5e21 +Subproject commit bdab6586d459844b8661446604b79aabbc6e590b diff --git a/versions/1.21.4/src/main/java/org/saturnclient/impl/modules/entity/EntityModuleFabric.java b/versions/1.21.4/src/main/java/org/saturnclient/impl/modules/entity/EntityModuleFabric.java index 7119cd6..c0ad9d5 100644 --- a/versions/1.21.4/src/main/java/org/saturnclient/impl/modules/entity/EntityModuleFabric.java +++ b/versions/1.21.4/src/main/java/org/saturnclient/impl/modules/entity/EntityModuleFabric.java @@ -1,16 +1,15 @@ package org.saturnclient.impl.modules.entity; +import org.saturnclient.common.feature.EntityFeature; + import net.minecraft.client.MinecraftClient; import net.minecraft.entity.Entity; import net.minecraft.util.hit.EntityHitResult; import net.minecraft.util.hit.HitResult; import net.minecraft.entity.LivingEntity; -import org.saturnclient.common.module.EntityModule; - - /** - * Fabric implementation of {@link EntityModule}. + * Fabric implementation of {@link EntityFeature}. * * Crosshair targeting is resolved via {@link MinecraftClient#crosshairTarget}. * Entity state for nametag rendering is supplied at render time by @@ -18,7 +17,7 @@ import org.saturnclient.common.module.EntityModule; * writes into the render state; {@link NametagsMixin} then constructs * a {@link RenderStateEntityState} from the already-extracted snapshot. */ -public class EntityModuleFabric implements EntityModule { +public class EntityModuleFabric implements EntityFeature { private final MinecraftClient mc; diff --git a/versions/1.21.4/src/main/java/org/saturnclient/impl/modules/entity/HealthRenderState.java b/versions/1.21.4/src/main/java/org/saturnclient/impl/modules/entity/HealthRenderState.java index 0fc2ddd..020bbf7 100644 --- a/versions/1.21.4/src/main/java/org/saturnclient/impl/modules/entity/HealthRenderState.java +++ b/versions/1.21.4/src/main/java/org/saturnclient/impl/modules/entity/HealthRenderState.java @@ -1,9 +1,10 @@ package org.saturnclient.impl.modules.entity; -import org.saturnclient.common.module.EntityModule; +import org.saturnclient.common.feature.EntityFeature; /** - * Injected interface on {@link net.minecraft.client.render.entity.state.LivingEntityRenderState}. + * Injected interface on + * {@link net.minecraft.client.render.entity.state.LivingEntityRenderState}. * * Carries the entity's health snapshot and classification into the render * pipeline so that {@link NametagsMixin} can read them without touching @@ -12,9 +13,12 @@ import org.saturnclient.common.module.EntityModule; public interface HealthRenderState { float saturn$getHealth(); - float saturn$getMaxHealth(); - void saturn$setHealth(float health, float maxHealth); - EntityModule.EntityType saturn$getEntityType(); - void saturn$setEntityType(EntityModule.EntityType type); + float saturn$getMaxHealth(); + + void saturn$setHealth(float health, float maxHealth); + + EntityFeature.EntityType saturn$getEntityType(); + + void saturn$setEntityType(EntityFeature.EntityType type); } diff --git a/versions/1.21.4/src/main/java/org/saturnclient/impl/modules/mixins/entity/CameraMixin.java b/versions/1.21.4/src/main/java/org/saturnclient/impl/modules/mixins/entity/CameraMixin.java index 6608e2a..32a606f 100644 --- a/versions/1.21.4/src/main/java/org/saturnclient/impl/modules/mixins/entity/CameraMixin.java +++ b/versions/1.21.4/src/main/java/org/saturnclient/impl/modules/mixins/entity/CameraMixin.java @@ -1,7 +1,7 @@ package org.saturnclient.impl.modules.mixins.entity; -import org.saturnclient.feature.features.FreelookFeature; import org.saturnclient.impl.modules.entity.CameraOverriddenEntity; +import org.saturnclient.mod.mods.FreelookMod; import org.saturnclient.saturnclient.SaturnClient; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; @@ -26,7 +26,7 @@ public abstract class CameraMixin { @Inject(method = "update", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/render/Camera;setRotation(FF)V", ordinal = 1, shift = At.Shift.AFTER)) public void lockRotation(BlockView focusedBlock, Entity cameraEntity, boolean isThirdPerson, boolean isFrontFacing, float tickDelta, CallbackInfo ci) { - if (FreelookFeature.isFreeLooking && cameraEntity instanceof ClientPlayerEntity) { + if (FreelookMod.isFreeLooking && cameraEntity instanceof ClientPlayerEntity) { CameraOverriddenEntity cameraOverriddenEntity = (CameraOverriddenEntity) cameraEntity; if (firstTime && SaturnClient.client.player != null) { @@ -38,7 +38,7 @@ public abstract class CameraMixin { cameraOverriddenEntity.freelook$getCameraPitch()); } - if (!FreelookFeature.isFreeLooking && cameraEntity instanceof ClientPlayerEntity) { + if (!FreelookMod.isFreeLooking && cameraEntity instanceof ClientPlayerEntity) { firstTime = true; } } diff --git a/versions/1.21.4/src/main/java/org/saturnclient/impl/modules/mixins/entity/EntityMixin.java b/versions/1.21.4/src/main/java/org/saturnclient/impl/modules/mixins/entity/EntityMixin.java index fb16306..5c66787 100644 --- a/versions/1.21.4/src/main/java/org/saturnclient/impl/modules/mixins/entity/EntityMixin.java +++ b/versions/1.21.4/src/main/java/org/saturnclient/impl/modules/mixins/entity/EntityMixin.java @@ -1,7 +1,7 @@ package org.saturnclient.impl.modules.mixins.entity; -import org.saturnclient.feature.features.FreelookFeature; import org.saturnclient.impl.modules.entity.CameraOverriddenEntity; +import org.saturnclient.mod.mods.FreelookMod; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Unique; import org.spongepowered.asm.mixin.injection.At; @@ -24,7 +24,7 @@ public class EntityMixin implements CameraOverriddenEntity { public void changeCameraLookDirection(double xDelta, double yDelta, CallbackInfo ci) { // noinspection ConstantValue// IntelliJ is incorrect here, this code block is // reachable - if (FreelookFeature.isFreeLooking && (Object) this instanceof ClientPlayerEntity) { + if (FreelookMod.isFreeLooking && (Object) this instanceof ClientPlayerEntity) { double pitchDelta = (yDelta * 0.15); double yawDelta = (xDelta * 0.15); diff --git a/versions/1.21.4/src/main/java/org/saturnclient/impl/modules/mixins/misc/NametagsMixin.java b/versions/1.21.4/src/main/java/org/saturnclient/impl/modules/mixins/misc/NametagsMixin.java index a31e348..d2115e5 100644 --- a/versions/1.21.4/src/main/java/org/saturnclient/impl/modules/mixins/misc/NametagsMixin.java +++ b/versions/1.21.4/src/main/java/org/saturnclient/impl/modules/mixins/misc/NametagsMixin.java @@ -7,10 +7,10 @@ import net.minecraft.client.render.entity.state.LivingEntityRenderState; import net.minecraft.client.util.math.MatrixStack; import net.minecraft.text.Text; -import org.saturnclient.feature.features.NametagsFeature; import org.saturnclient.impl.modules.entity.EntityModuleFabric; import org.saturnclient.impl.modules.entity.HealthRenderState; import org.saturnclient.impl.modules.mixins.render.LivingEntityRenderStateMixin; +import org.saturnclient.mod.mods.NametagsMod; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; import org.spongepowered.asm.mixin.Unique; @@ -20,7 +20,7 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; /** * Intercepts nametag rendering and replaces the displayed text with - * the string produced by {@link NametagsFeature#getNametagString}. + * the string produced by {@link NametagsMod#getNametagString}. * * Key changes from the original: * @@ -30,7 +30,7 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; * which wraps the {@link HealthRenderState} already injected into * the render state by {@link LivingEntityRenderStateMixin}. *
  • The feature import changes from {@code Nametags} to - * {@link NametagsFeature}; the two static methods + * {@link NametagsMod}; the two static methods * ({@code shouldReplaceName} / {@code getNametagString}) are * unchanged in signature.
  • *
  • The entity's display name is extracted from the render state's @@ -64,7 +64,7 @@ public abstract class NametagsMixin { if (saturn$rendering.get()) return; - if (!NametagsFeature.shouldReplaceName()) + if (!NametagsMod.shouldReplaceName()) return; // Only living entities carry health data @@ -80,7 +80,7 @@ public abstract class NametagsMixin { customName, hrs); // Ask the feature for the replacement string - String replacement = NametagsFeature.getNametagString(entityState); + String replacement = NametagsMod.getNametagString(entityState); if (replacement == null) return; // feature decided not to replace this entity diff --git a/versions/1.21.4/src/main/java/org/saturnclient/impl/modules/mixins/render/BackgroundRendererMixin.java b/versions/1.21.4/src/main/java/org/saturnclient/impl/modules/mixins/render/BackgroundRendererMixin.java index 563175b..5c16d21 100644 --- a/versions/1.21.4/src/main/java/org/saturnclient/impl/modules/mixins/render/BackgroundRendererMixin.java +++ b/versions/1.21.4/src/main/java/org/saturnclient/impl/modules/mixins/render/BackgroundRendererMixin.java @@ -2,7 +2,7 @@ package org.saturnclient.impl.modules.mixins.render; import net.minecraft.client.render.BackgroundRenderer; -import org.saturnclient.feature.features.NoFogFeature; +import org.saturnclient.mod.mods.NoFogMod; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.ModifyVariable; @@ -12,7 +12,7 @@ public class BackgroundRendererMixin { // fog @ModifyVariable(method = "applyFog", at = @At("HEAD"), ordinal = 0, argsOnly = true) private static float modifyFogStart(float viewDistance) { - if (NoFogFeature.isActive()) { + if (NoFogMod.isActive()) { return viewDistance * 2.0f; } diff --git a/versions/1.21.4/src/main/java/org/saturnclient/impl/modules/mixins/render/GameRendererMixin.java b/versions/1.21.4/src/main/java/org/saturnclient/impl/modules/mixins/render/GameRendererMixin.java index 320093c..149dffa 100644 --- a/versions/1.21.4/src/main/java/org/saturnclient/impl/modules/mixins/render/GameRendererMixin.java +++ b/versions/1.21.4/src/main/java/org/saturnclient/impl/modules/mixins/render/GameRendererMixin.java @@ -2,21 +2,21 @@ package org.saturnclient.impl.modules.mixins.render; import net.minecraft.client.render.GameRenderer; -import org.saturnclient.feature.features.ZoomFeature; +import org.saturnclient.mod.mods.ZoomMod; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; /** - * Overrides the game's field-of-view when {@link ZoomFeature} is active. + * Overrides the game's field-of-view when {@link ZoomMod} is active. * * The old code checked both {@code Zoom.isZooming} and * {@code Zoom.shouldZoom()} separately. The refactored - * {@link ZoomFeature#shouldZoom()} already ORs both conditions + * {@link ZoomMod#shouldZoom()} already ORs both conditions * ({@code enabled.value && isZooming}), so only one check is needed. * - * No {@link org.saturnclient.common.module.ModuleProvider} is required + * No {@link org.saturnclient.common.module.ModProvider} is required * here because zooming is a pure render-time override with no per-tick * engine queries. */ @@ -29,8 +29,8 @@ public class GameRendererMixin { */ @Inject(method = "getFov", at = @At("RETURN"), cancellable = true) private void onGetFov(CallbackInfoReturnable cir) { - if (ZoomFeature.shouldZoom()) { - float zoomedFov = cir.getReturnValue() / ZoomFeature.getZoomLevel(); + if (ZoomMod.shouldZoom()) { + float zoomedFov = cir.getReturnValue() / ZoomMod.getZoomLevel(); cir.setReturnValue(zoomedFov); } } diff --git a/versions/1.21.4/src/main/java/org/saturnclient/impl/modules/mixins/render/LightmapTextureManagerMixin.java b/versions/1.21.4/src/main/java/org/saturnclient/impl/modules/mixins/render/LightmapTextureManagerMixin.java index 3fb0037..c862a27 100644 --- a/versions/1.21.4/src/main/java/org/saturnclient/impl/modules/mixins/render/LightmapTextureManagerMixin.java +++ b/versions/1.21.4/src/main/java/org/saturnclient/impl/modules/mixins/render/LightmapTextureManagerMixin.java @@ -5,30 +5,30 @@ package org.saturnclient.impl.modules.mixins.render; import com.llamalad7.mixinextras.injector.ModifyExpressionValue; import net.minecraft.client.render.LightmapTextureManager; -import org.saturnclient.feature.features.FullbrightFeature; +import org.saturnclient.mod.mods.FullbrightMod; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; /** * Overrides the lightmap's gamma computation when - * {@link FullbrightFeature} is active, replacing the vanilla + * {@link FullbrightMod} is active, replacing the vanilla * brightness with a user-configured value. * - * The old import was {@code org.saturnclient.feature.features.Fullbright}; - * it is now {@link FullbrightFeature}. The injection target and + * The old import was {@code org.saturnclient.Mod.Mods.Fullbright}; + * it is now {@link FullbrightMod}. The injection target and * strategy are unchanged. */ @Mixin(LightmapTextureManager.class) public class LightmapTextureManagerMixin { /** - * If fullbright is active, substitute the feature's brightness + * If fullbright is active, substitute the Mod's brightness * value for whatever vanilla calculated. */ @ModifyExpressionValue(method = "update", at = @At(value = "INVOKE", target = "Ljava/lang/Math;max(FF)F", ordinal = 0)) private float modifyGamma(float original) { - if (FullbrightFeature.shouldOverrideBrightness()) { - return FullbrightFeature.getBrightnessValue(); + if (FullbrightMod.shouldOverrideBrightness()) { + return FullbrightMod.getBrightnessValue(); } return original; } diff --git a/versions/1.21.4/src/main/java/org/saturnclient/impl/modules/mixins/render/LivingEntityRenderStateMixin.java b/versions/1.21.4/src/main/java/org/saturnclient/impl/modules/mixins/render/LivingEntityRenderStateMixin.java index 8107001..1c3176a 100644 --- a/versions/1.21.4/src/main/java/org/saturnclient/impl/modules/mixins/render/LivingEntityRenderStateMixin.java +++ b/versions/1.21.4/src/main/java/org/saturnclient/impl/modules/mixins/render/LivingEntityRenderStateMixin.java @@ -2,7 +2,7 @@ package org.saturnclient.impl.modules.mixins.render; import net.minecraft.client.render.entity.state.LivingEntityRenderState; -import org.saturnclient.common.module.EntityModule; +import org.saturnclient.common.feature.EntityFeature; import org.saturnclient.impl.modules.entity.HealthRenderState; import org.saturnclient.impl.modules.mixins.misc.NametagsMixin; import org.spongepowered.asm.mixin.Mixin; @@ -14,7 +14,7 @@ import org.spongepowered.asm.mixin.Unique; * storage into every living entity's render-state snapshot. * * Previously imported {@code NametagsInterface.EntityType}; the enum - * now lives in {@link EntityModule.EntityType} which is the single + * now lives in {@link EntityFeature.EntityType} which is the single * canonical definition shared by the mixin layer and the feature layer. * * The stored values are written by @@ -30,7 +30,7 @@ public class LivingEntityRenderStateMixin implements HealthRenderState { @Unique private float saturn$maxHealth = 1f; @Unique - private EntityModule.EntityType saturn$entityType = EntityModule.EntityType.OTHER; + private EntityFeature.EntityType saturn$entityType = EntityFeature.EntityType.OTHER; @Override public float saturn$getHealth() { @@ -49,12 +49,12 @@ public class LivingEntityRenderStateMixin implements HealthRenderState { } @Override - public EntityModule.EntityType saturn$getEntityType() { + public EntityFeature.EntityType saturn$getEntityType() { return saturn$entityType; } @Override - public void saturn$setEntityType(EntityModule.EntityType type) { + public void saturn$setEntityType(EntityFeature.EntityType type) { saturn$entityType = type; } } diff --git a/versions/1.21.4/src/main/java/org/saturnclient/impl/modules/mixins/render/LivingEntityRendererMixin.java b/versions/1.21.4/src/main/java/org/saturnclient/impl/modules/mixins/render/LivingEntityRendererMixin.java index ae59303..fa69588 100644 --- a/versions/1.21.4/src/main/java/org/saturnclient/impl/modules/mixins/render/LivingEntityRendererMixin.java +++ b/versions/1.21.4/src/main/java/org/saturnclient/impl/modules/mixins/render/LivingEntityRendererMixin.java @@ -7,7 +7,7 @@ import net.minecraft.entity.mob.HostileEntity; import net.minecraft.entity.passive.PassiveEntity; import net.minecraft.entity.player.PlayerEntity; -import org.saturnclient.common.module.EntityModule; +import org.saturnclient.common.feature.EntityFeature; import org.saturnclient.impl.modules.entity.HealthRenderState; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; @@ -20,7 +20,7 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; * them without touching the live entity again. * * Previously imported {@code NametagsInterface.EntityType}; now uses - * {@link EntityModule.EntityType} — the canonical enum shared across + * {@link EntityFeature.EntityType} — the canonical enum shared across * the whole module system. * * The injection target and strategy are unchanged from the original. @@ -36,15 +36,15 @@ public abstract class LivingEntityRendererMixin */ -public class ModuleProviderFabric implements ModuleProvider { +public class ModuleProviderFabric implements FeatureProvider { - private final PlayerModule player; - private final WorldModule world; - private final EntityModule entity; - private final RenderModule render; - private final NetworkModule network; + private final PlayerFeature player; + private final WorldFeature world; + private final EntityFeature entity; + private final RenderFeature render; + private final NetworkFeature network; public ModuleProviderFabric(MinecraftClient mc) { this.player = new PlayerModuleFabric(mc); @@ -42,27 +42,27 @@ public class ModuleProviderFabric implements ModuleProvider { } @Override - public PlayerModule player() { + public PlayerFeature player() { return player; } @Override - public WorldModule world() { + public WorldFeature world() { return world; } @Override - public EntityModule entity() { + public EntityFeature entity() { return entity; } @Override - public RenderModule render() { + public RenderFeature render() { return render; } @Override - public NetworkModule network() { + public NetworkFeature network() { return network; } } diff --git a/versions/1.21.4/src/main/java/org/saturnclient/saturnclient/SaturnClient.java b/versions/1.21.4/src/main/java/org/saturnclient/saturnclient/SaturnClient.java index 3ea50b8..d8e8cbc 100644 --- a/versions/1.21.4/src/main/java/org/saturnclient/saturnclient/SaturnClient.java +++ b/versions/1.21.4/src/main/java/org/saturnclient/saturnclient/SaturnClient.java @@ -8,7 +8,6 @@ import net.minecraft.client.MinecraftClient; import org.saturnclient.client.ServiceClient; import org.saturnclient.cosmetics.Emotes; import org.saturnclient.cosmetics.Hats; -import org.saturnclient.feature.FeatureManager; import org.saturnclient.cosmetics.Cloaks; import org.saturnclient.common.provider.Providers; import org.saturnclient.impl.provider.GLFWProviderImpl; @@ -17,6 +16,7 @@ import org.saturnclient.impl.provider.RefConstructorImpl; import org.saturnclient.impl.provider.SaturnProviderImpl; import org.saturnclient.impl.ui.EntityDrawerImpl; import org.saturnclient.impl.ui.SaturnScreenFabric; +import org.saturnclient.mod.ModManager; import org.saturnclient.saturnclient.event.KeyInputHandler; import org.saturnclient.config.Config; import org.saturnclient.config.ConfigManager; @@ -45,7 +45,7 @@ public class SaturnClient implements ModInitializer { SkinPreview.DRAWER = new EntityDrawerImpl(); Config.init(); - FeatureManager.init(); + ModManager.init(); client.execute(() -> { SaturnScreenFabric.preload(client); @@ -54,7 +54,7 @@ public class SaturnClient implements ModInitializer { ClientLifecycleEvents.CLIENT_STOPPING.register(_o -> ConfigManager.save()); ClientTickEvents.END_CLIENT_TICK.register(client -> { - for (org.saturnclient.feature.Feature m : FeatureManager.ENABLED_MODS) { + for (org.saturnclient.mod.Mod m : ModManager.ENABLED_MODS) { m.tick(); } }); diff --git a/versions/1.21.5/src/main/java/org/saturnclient/impl/modules/entity/EntityModuleFabric.java b/versions/1.21.5/src/main/java/org/saturnclient/impl/modules/entity/EntityModuleFabric.java index 7119cd6..c0ad9d5 100644 --- a/versions/1.21.5/src/main/java/org/saturnclient/impl/modules/entity/EntityModuleFabric.java +++ b/versions/1.21.5/src/main/java/org/saturnclient/impl/modules/entity/EntityModuleFabric.java @@ -1,16 +1,15 @@ package org.saturnclient.impl.modules.entity; +import org.saturnclient.common.feature.EntityFeature; + import net.minecraft.client.MinecraftClient; import net.minecraft.entity.Entity; import net.minecraft.util.hit.EntityHitResult; import net.minecraft.util.hit.HitResult; import net.minecraft.entity.LivingEntity; -import org.saturnclient.common.module.EntityModule; - - /** - * Fabric implementation of {@link EntityModule}. + * Fabric implementation of {@link EntityFeature}. * * Crosshair targeting is resolved via {@link MinecraftClient#crosshairTarget}. * Entity state for nametag rendering is supplied at render time by @@ -18,7 +17,7 @@ import org.saturnclient.common.module.EntityModule; * writes into the render state; {@link NametagsMixin} then constructs * a {@link RenderStateEntityState} from the already-extracted snapshot. */ -public class EntityModuleFabric implements EntityModule { +public class EntityModuleFabric implements EntityFeature { private final MinecraftClient mc; diff --git a/versions/1.21.5/src/main/java/org/saturnclient/impl/modules/entity/HealthRenderState.java b/versions/1.21.5/src/main/java/org/saturnclient/impl/modules/entity/HealthRenderState.java index 0fc2ddd..020bbf7 100644 --- a/versions/1.21.5/src/main/java/org/saturnclient/impl/modules/entity/HealthRenderState.java +++ b/versions/1.21.5/src/main/java/org/saturnclient/impl/modules/entity/HealthRenderState.java @@ -1,9 +1,10 @@ package org.saturnclient.impl.modules.entity; -import org.saturnclient.common.module.EntityModule; +import org.saturnclient.common.feature.EntityFeature; /** - * Injected interface on {@link net.minecraft.client.render.entity.state.LivingEntityRenderState}. + * Injected interface on + * {@link net.minecraft.client.render.entity.state.LivingEntityRenderState}. * * Carries the entity's health snapshot and classification into the render * pipeline so that {@link NametagsMixin} can read them without touching @@ -12,9 +13,12 @@ import org.saturnclient.common.module.EntityModule; public interface HealthRenderState { float saturn$getHealth(); - float saturn$getMaxHealth(); - void saturn$setHealth(float health, float maxHealth); - EntityModule.EntityType saturn$getEntityType(); - void saturn$setEntityType(EntityModule.EntityType type); + float saturn$getMaxHealth(); + + void saturn$setHealth(float health, float maxHealth); + + EntityFeature.EntityType saturn$getEntityType(); + + void saturn$setEntityType(EntityFeature.EntityType type); } diff --git a/versions/1.21.5/src/main/java/org/saturnclient/impl/modules/mixins/entity/CameraMixin.java b/versions/1.21.5/src/main/java/org/saturnclient/impl/modules/mixins/entity/CameraMixin.java index 6608e2a..32a606f 100644 --- a/versions/1.21.5/src/main/java/org/saturnclient/impl/modules/mixins/entity/CameraMixin.java +++ b/versions/1.21.5/src/main/java/org/saturnclient/impl/modules/mixins/entity/CameraMixin.java @@ -1,7 +1,7 @@ package org.saturnclient.impl.modules.mixins.entity; -import org.saturnclient.feature.features.FreelookFeature; import org.saturnclient.impl.modules.entity.CameraOverriddenEntity; +import org.saturnclient.mod.mods.FreelookMod; import org.saturnclient.saturnclient.SaturnClient; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; @@ -26,7 +26,7 @@ public abstract class CameraMixin { @Inject(method = "update", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/render/Camera;setRotation(FF)V", ordinal = 1, shift = At.Shift.AFTER)) public void lockRotation(BlockView focusedBlock, Entity cameraEntity, boolean isThirdPerson, boolean isFrontFacing, float tickDelta, CallbackInfo ci) { - if (FreelookFeature.isFreeLooking && cameraEntity instanceof ClientPlayerEntity) { + if (FreelookMod.isFreeLooking && cameraEntity instanceof ClientPlayerEntity) { CameraOverriddenEntity cameraOverriddenEntity = (CameraOverriddenEntity) cameraEntity; if (firstTime && SaturnClient.client.player != null) { @@ -38,7 +38,7 @@ public abstract class CameraMixin { cameraOverriddenEntity.freelook$getCameraPitch()); } - if (!FreelookFeature.isFreeLooking && cameraEntity instanceof ClientPlayerEntity) { + if (!FreelookMod.isFreeLooking && cameraEntity instanceof ClientPlayerEntity) { firstTime = true; } } diff --git a/versions/1.21.5/src/main/java/org/saturnclient/impl/modules/mixins/entity/EntityMixin.java b/versions/1.21.5/src/main/java/org/saturnclient/impl/modules/mixins/entity/EntityMixin.java index fb16306..5c66787 100644 --- a/versions/1.21.5/src/main/java/org/saturnclient/impl/modules/mixins/entity/EntityMixin.java +++ b/versions/1.21.5/src/main/java/org/saturnclient/impl/modules/mixins/entity/EntityMixin.java @@ -1,7 +1,7 @@ package org.saturnclient.impl.modules.mixins.entity; -import org.saturnclient.feature.features.FreelookFeature; import org.saturnclient.impl.modules.entity.CameraOverriddenEntity; +import org.saturnclient.mod.mods.FreelookMod; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Unique; import org.spongepowered.asm.mixin.injection.At; @@ -24,7 +24,7 @@ public class EntityMixin implements CameraOverriddenEntity { public void changeCameraLookDirection(double xDelta, double yDelta, CallbackInfo ci) { // noinspection ConstantValue// IntelliJ is incorrect here, this code block is // reachable - if (FreelookFeature.isFreeLooking && (Object) this instanceof ClientPlayerEntity) { + if (FreelookMod.isFreeLooking && (Object) this instanceof ClientPlayerEntity) { double pitchDelta = (yDelta * 0.15); double yawDelta = (xDelta * 0.15); diff --git a/versions/1.21.5/src/main/java/org/saturnclient/impl/modules/mixins/misc/NametagsMixin.java b/versions/1.21.5/src/main/java/org/saturnclient/impl/modules/mixins/misc/NametagsMixin.java index a31e348..d2115e5 100644 --- a/versions/1.21.5/src/main/java/org/saturnclient/impl/modules/mixins/misc/NametagsMixin.java +++ b/versions/1.21.5/src/main/java/org/saturnclient/impl/modules/mixins/misc/NametagsMixin.java @@ -7,10 +7,10 @@ import net.minecraft.client.render.entity.state.LivingEntityRenderState; import net.minecraft.client.util.math.MatrixStack; import net.minecraft.text.Text; -import org.saturnclient.feature.features.NametagsFeature; import org.saturnclient.impl.modules.entity.EntityModuleFabric; import org.saturnclient.impl.modules.entity.HealthRenderState; import org.saturnclient.impl.modules.mixins.render.LivingEntityRenderStateMixin; +import org.saturnclient.mod.mods.NametagsMod; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; import org.spongepowered.asm.mixin.Unique; @@ -20,7 +20,7 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; /** * Intercepts nametag rendering and replaces the displayed text with - * the string produced by {@link NametagsFeature#getNametagString}. + * the string produced by {@link NametagsMod#getNametagString}. * * Key changes from the original: * @@ -30,7 +30,7 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; * which wraps the {@link HealthRenderState} already injected into * the render state by {@link LivingEntityRenderStateMixin}.
  • *
  • The feature import changes from {@code Nametags} to - * {@link NametagsFeature}; the two static methods + * {@link NametagsMod}; the two static methods * ({@code shouldReplaceName} / {@code getNametagString}) are * unchanged in signature.
  • *
  • The entity's display name is extracted from the render state's @@ -64,7 +64,7 @@ public abstract class NametagsMixin { if (saturn$rendering.get()) return; - if (!NametagsFeature.shouldReplaceName()) + if (!NametagsMod.shouldReplaceName()) return; // Only living entities carry health data @@ -80,7 +80,7 @@ public abstract class NametagsMixin { customName, hrs); // Ask the feature for the replacement string - String replacement = NametagsFeature.getNametagString(entityState); + String replacement = NametagsMod.getNametagString(entityState); if (replacement == null) return; // feature decided not to replace this entity diff --git a/versions/1.21.5/src/main/java/org/saturnclient/impl/modules/mixins/render/BackgroundRendererMixin.java b/versions/1.21.5/src/main/java/org/saturnclient/impl/modules/mixins/render/BackgroundRendererMixin.java index 563175b..5c16d21 100644 --- a/versions/1.21.5/src/main/java/org/saturnclient/impl/modules/mixins/render/BackgroundRendererMixin.java +++ b/versions/1.21.5/src/main/java/org/saturnclient/impl/modules/mixins/render/BackgroundRendererMixin.java @@ -2,7 +2,7 @@ package org.saturnclient.impl.modules.mixins.render; import net.minecraft.client.render.BackgroundRenderer; -import org.saturnclient.feature.features.NoFogFeature; +import org.saturnclient.mod.mods.NoFogMod; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.ModifyVariable; @@ -12,7 +12,7 @@ public class BackgroundRendererMixin { // fog @ModifyVariable(method = "applyFog", at = @At("HEAD"), ordinal = 0, argsOnly = true) private static float modifyFogStart(float viewDistance) { - if (NoFogFeature.isActive()) { + if (NoFogMod.isActive()) { return viewDistance * 2.0f; } diff --git a/versions/1.21.5/src/main/java/org/saturnclient/impl/modules/mixins/render/GameRendererMixin.java b/versions/1.21.5/src/main/java/org/saturnclient/impl/modules/mixins/render/GameRendererMixin.java index 320093c..149dffa 100644 --- a/versions/1.21.5/src/main/java/org/saturnclient/impl/modules/mixins/render/GameRendererMixin.java +++ b/versions/1.21.5/src/main/java/org/saturnclient/impl/modules/mixins/render/GameRendererMixin.java @@ -2,21 +2,21 @@ package org.saturnclient.impl.modules.mixins.render; import net.minecraft.client.render.GameRenderer; -import org.saturnclient.feature.features.ZoomFeature; +import org.saturnclient.mod.mods.ZoomMod; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; /** - * Overrides the game's field-of-view when {@link ZoomFeature} is active. + * Overrides the game's field-of-view when {@link ZoomMod} is active. * * The old code checked both {@code Zoom.isZooming} and * {@code Zoom.shouldZoom()} separately. The refactored - * {@link ZoomFeature#shouldZoom()} already ORs both conditions + * {@link ZoomMod#shouldZoom()} already ORs both conditions * ({@code enabled.value && isZooming}), so only one check is needed. * - * No {@link org.saturnclient.common.module.ModuleProvider} is required + * No {@link org.saturnclient.common.module.ModProvider} is required * here because zooming is a pure render-time override with no per-tick * engine queries. */ @@ -29,8 +29,8 @@ public class GameRendererMixin { */ @Inject(method = "getFov", at = @At("RETURN"), cancellable = true) private void onGetFov(CallbackInfoReturnable cir) { - if (ZoomFeature.shouldZoom()) { - float zoomedFov = cir.getReturnValue() / ZoomFeature.getZoomLevel(); + if (ZoomMod.shouldZoom()) { + float zoomedFov = cir.getReturnValue() / ZoomMod.getZoomLevel(); cir.setReturnValue(zoomedFov); } } diff --git a/versions/1.21.5/src/main/java/org/saturnclient/impl/modules/mixins/render/LightmapTextureManagerMixin.java b/versions/1.21.5/src/main/java/org/saturnclient/impl/modules/mixins/render/LightmapTextureManagerMixin.java index 3fb0037..30aae6f 100644 --- a/versions/1.21.5/src/main/java/org/saturnclient/impl/modules/mixins/render/LightmapTextureManagerMixin.java +++ b/versions/1.21.5/src/main/java/org/saturnclient/impl/modules/mixins/render/LightmapTextureManagerMixin.java @@ -5,17 +5,17 @@ package org.saturnclient.impl.modules.mixins.render; import com.llamalad7.mixinextras.injector.ModifyExpressionValue; import net.minecraft.client.render.LightmapTextureManager; -import org.saturnclient.feature.features.FullbrightFeature; +import org.saturnclient.mod.mods.FullbrightMod; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; /** * Overrides the lightmap's gamma computation when - * {@link FullbrightFeature} is active, replacing the vanilla + * {@link FullbrightMod} is active, replacing the vanilla * brightness with a user-configured value. * * The old import was {@code org.saturnclient.feature.features.Fullbright}; - * it is now {@link FullbrightFeature}. The injection target and + * it is now {@link FullbrightMod}. The injection target and * strategy are unchanged. */ @Mixin(LightmapTextureManager.class) @@ -27,8 +27,8 @@ public class LightmapTextureManagerMixin { */ @ModifyExpressionValue(method = "update", at = @At(value = "INVOKE", target = "Ljava/lang/Math;max(FF)F", ordinal = 0)) private float modifyGamma(float original) { - if (FullbrightFeature.shouldOverrideBrightness()) { - return FullbrightFeature.getBrightnessValue(); + if (FullbrightMod.shouldOverrideBrightness()) { + return FullbrightMod.getBrightnessValue(); } return original; } diff --git a/versions/1.21.5/src/main/java/org/saturnclient/impl/modules/mixins/render/LivingEntityRenderStateMixin.java b/versions/1.21.5/src/main/java/org/saturnclient/impl/modules/mixins/render/LivingEntityRenderStateMixin.java index 8107001..1c3176a 100644 --- a/versions/1.21.5/src/main/java/org/saturnclient/impl/modules/mixins/render/LivingEntityRenderStateMixin.java +++ b/versions/1.21.5/src/main/java/org/saturnclient/impl/modules/mixins/render/LivingEntityRenderStateMixin.java @@ -2,7 +2,7 @@ package org.saturnclient.impl.modules.mixins.render; import net.minecraft.client.render.entity.state.LivingEntityRenderState; -import org.saturnclient.common.module.EntityModule; +import org.saturnclient.common.feature.EntityFeature; import org.saturnclient.impl.modules.entity.HealthRenderState; import org.saturnclient.impl.modules.mixins.misc.NametagsMixin; import org.spongepowered.asm.mixin.Mixin; @@ -14,7 +14,7 @@ import org.spongepowered.asm.mixin.Unique; * storage into every living entity's render-state snapshot. * * Previously imported {@code NametagsInterface.EntityType}; the enum - * now lives in {@link EntityModule.EntityType} which is the single + * now lives in {@link EntityFeature.EntityType} which is the single * canonical definition shared by the mixin layer and the feature layer. * * The stored values are written by @@ -30,7 +30,7 @@ public class LivingEntityRenderStateMixin implements HealthRenderState { @Unique private float saturn$maxHealth = 1f; @Unique - private EntityModule.EntityType saturn$entityType = EntityModule.EntityType.OTHER; + private EntityFeature.EntityType saturn$entityType = EntityFeature.EntityType.OTHER; @Override public float saturn$getHealth() { @@ -49,12 +49,12 @@ public class LivingEntityRenderStateMixin implements HealthRenderState { } @Override - public EntityModule.EntityType saturn$getEntityType() { + public EntityFeature.EntityType saturn$getEntityType() { return saturn$entityType; } @Override - public void saturn$setEntityType(EntityModule.EntityType type) { + public void saturn$setEntityType(EntityFeature.EntityType type) { saturn$entityType = type; } } diff --git a/versions/1.21.5/src/main/java/org/saturnclient/impl/modules/mixins/render/LivingEntityRendererMixin.java b/versions/1.21.5/src/main/java/org/saturnclient/impl/modules/mixins/render/LivingEntityRendererMixin.java index ae59303..fa69588 100644 --- a/versions/1.21.5/src/main/java/org/saturnclient/impl/modules/mixins/render/LivingEntityRendererMixin.java +++ b/versions/1.21.5/src/main/java/org/saturnclient/impl/modules/mixins/render/LivingEntityRendererMixin.java @@ -7,7 +7,7 @@ import net.minecraft.entity.mob.HostileEntity; import net.minecraft.entity.passive.PassiveEntity; import net.minecraft.entity.player.PlayerEntity; -import org.saturnclient.common.module.EntityModule; +import org.saturnclient.common.feature.EntityFeature; import org.saturnclient.impl.modules.entity.HealthRenderState; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; @@ -20,7 +20,7 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; * them without touching the live entity again. * * Previously imported {@code NametagsInterface.EntityType}; now uses - * {@link EntityModule.EntityType} — the canonical enum shared across + * {@link EntityFeature.EntityType} — the canonical enum shared across * the whole module system. * * The injection target and strategy are unchanged from the original. @@ -36,15 +36,15 @@ public abstract class LivingEntityRendererMixin */ -public class ModuleProviderFabric implements ModuleProvider { +public class ModuleProviderFabric implements FeatureProvider { - private final PlayerModule player; - private final WorldModule world; - private final EntityModule entity; - private final RenderModule render; - private final NetworkModule network; + private final PlayerFeature player; + private final WorldFeature world; + private final EntityFeature entity; + private final RenderFeature render; + private final NetworkFeature network; public ModuleProviderFabric(MinecraftClient mc) { this.player = new PlayerModuleFabric(mc); @@ -42,27 +42,27 @@ public class ModuleProviderFabric implements ModuleProvider { } @Override - public PlayerModule player() { + public PlayerFeature player() { return player; } @Override - public WorldModule world() { + public WorldFeature world() { return world; } @Override - public EntityModule entity() { + public EntityFeature entity() { return entity; } @Override - public RenderModule render() { + public RenderFeature render() { return render; } @Override - public NetworkModule network() { + public NetworkFeature network() { return network; } } diff --git a/versions/1.21.5/src/main/java/org/saturnclient/saturnclient/SaturnClient.java b/versions/1.21.5/src/main/java/org/saturnclient/saturnclient/SaturnClient.java index 3ea50b8..d8e8cbc 100644 --- a/versions/1.21.5/src/main/java/org/saturnclient/saturnclient/SaturnClient.java +++ b/versions/1.21.5/src/main/java/org/saturnclient/saturnclient/SaturnClient.java @@ -8,7 +8,6 @@ import net.minecraft.client.MinecraftClient; import org.saturnclient.client.ServiceClient; import org.saturnclient.cosmetics.Emotes; import org.saturnclient.cosmetics.Hats; -import org.saturnclient.feature.FeatureManager; import org.saturnclient.cosmetics.Cloaks; import org.saturnclient.common.provider.Providers; import org.saturnclient.impl.provider.GLFWProviderImpl; @@ -17,6 +16,7 @@ import org.saturnclient.impl.provider.RefConstructorImpl; import org.saturnclient.impl.provider.SaturnProviderImpl; import org.saturnclient.impl.ui.EntityDrawerImpl; import org.saturnclient.impl.ui.SaturnScreenFabric; +import org.saturnclient.mod.ModManager; import org.saturnclient.saturnclient.event.KeyInputHandler; import org.saturnclient.config.Config; import org.saturnclient.config.ConfigManager; @@ -45,7 +45,7 @@ public class SaturnClient implements ModInitializer { SkinPreview.DRAWER = new EntityDrawerImpl(); Config.init(); - FeatureManager.init(); + ModManager.init(); client.execute(() -> { SaturnScreenFabric.preload(client); @@ -54,7 +54,7 @@ public class SaturnClient implements ModInitializer { ClientLifecycleEvents.CLIENT_STOPPING.register(_o -> ConfigManager.save()); ClientTickEvents.END_CLIENT_TICK.register(client -> { - for (org.saturnclient.feature.Feature m : FeatureManager.ENABLED_MODS) { + for (org.saturnclient.mod.Mod m : ModManager.ENABLED_MODS) { m.tick(); } });