diff --git a/common b/common
index 174c952..6873f76 160000
--- a/common
+++ b/common
@@ -1 +1 @@
-Subproject commit 174c95240c95eaaba662e34086864d35c7cf5e21
+Subproject commit 6873f76c437c192cc8d386fb051dab12a2307bf7
diff --git a/versions/1.21.4/src/main/java/org/saturnclient/impl/modules/entity/CameraOverriddenEntity.java b/versions/1.21.4/src/main/java/org/saturnclient/impl/features/entity/CameraOverriddenEntity.java
similarity index 81%
rename from versions/1.21.4/src/main/java/org/saturnclient/impl/modules/entity/CameraOverriddenEntity.java
rename to versions/1.21.4/src/main/java/org/saturnclient/impl/features/entity/CameraOverriddenEntity.java
index 10a1cba..310b69d 100644
--- a/versions/1.21.4/src/main/java/org/saturnclient/impl/modules/entity/CameraOverriddenEntity.java
+++ b/versions/1.21.4/src/main/java/org/saturnclient/impl/features/entity/CameraOverriddenEntity.java
@@ -1,4 +1,4 @@
-package org.saturnclient.impl.modules.entity;
+package org.saturnclient.impl.features.entity;
public interface CameraOverriddenEntity {
float freelook$getCameraPitch();
diff --git a/versions/1.21.5/src/main/java/org/saturnclient/impl/modules/entity/EntityModuleFabric.java b/versions/1.21.4/src/main/java/org/saturnclient/impl/features/entity/EntityFeatureImpl.java
similarity index 89%
rename from versions/1.21.5/src/main/java/org/saturnclient/impl/modules/entity/EntityModuleFabric.java
rename to versions/1.21.4/src/main/java/org/saturnclient/impl/features/entity/EntityFeatureImpl.java
index 7119cd6..901542e 100644
--- a/versions/1.21.5/src/main/java/org/saturnclient/impl/modules/entity/EntityModuleFabric.java
+++ b/versions/1.21.4/src/main/java/org/saturnclient/impl/features/entity/EntityFeatureImpl.java
@@ -1,4 +1,6 @@
-package org.saturnclient.impl.modules.entity;
+package org.saturnclient.impl.features.entity;
+
+import org.saturnclient.common.feature.EntityFeature;
import net.minecraft.client.MinecraftClient;
import net.minecraft.entity.Entity;
@@ -6,11 +8,8 @@ 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,11 +17,11 @@ 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 EntityFeatureImpl implements EntityFeature {
private final MinecraftClient mc;
- public EntityModuleFabric(MinecraftClient mc) {
+ public EntityFeatureImpl(MinecraftClient mc) {
this.mc = mc;
}
diff --git a/versions/1.21.4/src/main/java/org/saturnclient/impl/features/entity/HealthRenderState.java b/versions/1.21.4/src/main/java/org/saturnclient/impl/features/entity/HealthRenderState.java
new file mode 100644
index 0000000..7c62f81
--- /dev/null
+++ b/versions/1.21.4/src/main/java/org/saturnclient/impl/features/entity/HealthRenderState.java
@@ -0,0 +1,24 @@
+package org.saturnclient.impl.features.entity;
+
+import org.saturnclient.common.feature.EntityFeature;
+
+/**
+ * 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
+ * the live entity again.
+ */
+public interface HealthRenderState {
+
+ float saturn$getHealth();
+
+ 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.4/src/main/java/org/saturnclient/impl/features/mixins/entity/CameraMixin.java
similarity index 82%
rename from versions/1.21.5/src/main/java/org/saturnclient/impl/modules/mixins/entity/CameraMixin.java
rename to versions/1.21.4/src/main/java/org/saturnclient/impl/features/mixins/entity/CameraMixin.java
index 6608e2a..834286b 100644
--- a/versions/1.21.5/src/main/java/org/saturnclient/impl/modules/mixins/entity/CameraMixin.java
+++ b/versions/1.21.4/src/main/java/org/saturnclient/impl/features/mixins/entity/CameraMixin.java
@@ -1,7 +1,7 @@
-package org.saturnclient.impl.modules.mixins.entity;
+package org.saturnclient.impl.features.mixins.entity;
-import org.saturnclient.feature.features.FreelookFeature;
-import org.saturnclient.impl.modules.entity.CameraOverriddenEntity;
+import org.saturnclient.impl.features.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/features/mixins/entity/EntityMixin.java
similarity index 85%
rename from versions/1.21.4/src/main/java/org/saturnclient/impl/modules/mixins/entity/EntityMixin.java
rename to versions/1.21.4/src/main/java/org/saturnclient/impl/features/mixins/entity/EntityMixin.java
index fb16306..0dff4b0 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/features/mixins/entity/EntityMixin.java
@@ -1,7 +1,7 @@
-package org.saturnclient.impl.modules.mixins.entity;
+package org.saturnclient.impl.features.mixins.entity;
-import org.saturnclient.feature.features.FreelookFeature;
-import org.saturnclient.impl.modules.entity.CameraOverriddenEntity;
+import org.saturnclient.impl.features.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/features/mixins/misc/NametagsMixin.java
similarity index 81%
rename from versions/1.21.4/src/main/java/org/saturnclient/impl/modules/mixins/misc/NametagsMixin.java
rename to versions/1.21.4/src/main/java/org/saturnclient/impl/features/mixins/misc/NametagsMixin.java
index a31e348..8c1763d 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/features/mixins/misc/NametagsMixin.java
@@ -1,4 +1,4 @@
-package org.saturnclient.impl.modules.mixins.misc;
+package org.saturnclient.impl.features.mixins.misc;
import net.minecraft.client.render.VertexConsumerProvider;
import net.minecraft.client.render.entity.EntityRenderer;
@@ -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.impl.features.entity.EntityFeatureImpl;
+import org.saturnclient.impl.features.entity.HealthRenderState;
+import org.saturnclient.impl.features.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,17 +20,17 @@ 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:
*
*
* - The old {@code NametagsFabric.EntityStateImpl} bridge class is
- * replaced by {@link EntityModuleFabric.RenderStateEntityState},
+ * replaced by {@link EntityFeatureImpl.RenderStateEntityState},
* 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
@@ -76,11 +76,11 @@ public abstract class NametagsMixin {
// Build the platform-neutral EntityState from the render-state snapshot
// (health/type were written by LivingEntityRendererMixin at extract time).
String customName = text != null ? text.getString() : null;
- EntityModuleFabric.RenderStateEntityState entityState = new EntityModuleFabric.RenderStateEntityState(
+ EntityFeatureImpl.RenderStateEntityState entityState = new EntityFeatureImpl.RenderStateEntityState(
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/features/mixins/render/BackgroundRendererMixin.java
similarity index 78%
rename from versions/1.21.4/src/main/java/org/saturnclient/impl/modules/mixins/render/BackgroundRendererMixin.java
rename to versions/1.21.4/src/main/java/org/saturnclient/impl/features/mixins/render/BackgroundRendererMixin.java
index 563175b..a9f641a 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/features/mixins/render/BackgroundRendererMixin.java
@@ -1,8 +1,8 @@
-package org.saturnclient.impl.modules.mixins.render;
+package org.saturnclient.impl.features.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.4/src/main/java/org/saturnclient/impl/features/mixins/render/GameRendererMixin.java
similarity index 68%
rename from versions/1.21.5/src/main/java/org/saturnclient/impl/modules/mixins/render/GameRendererMixin.java
rename to versions/1.21.4/src/main/java/org/saturnclient/impl/features/mixins/render/GameRendererMixin.java
index 320093c..c6d97f3 100644
--- a/versions/1.21.5/src/main/java/org/saturnclient/impl/modules/mixins/render/GameRendererMixin.java
+++ b/versions/1.21.4/src/main/java/org/saturnclient/impl/features/mixins/render/GameRendererMixin.java
@@ -1,22 +1,22 @@
-package org.saturnclient.impl.modules.mixins.render;
+package org.saturnclient.impl.features.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/features/mixins/render/LightmapTextureManagerMixin.java
similarity index 61%
rename from versions/1.21.4/src/main/java/org/saturnclient/impl/modules/mixins/render/LightmapTextureManagerMixin.java
rename to versions/1.21.4/src/main/java/org/saturnclient/impl/features/mixins/render/LightmapTextureManagerMixin.java
index 3fb0037..2f24b25 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/features/mixins/render/LightmapTextureManagerMixin.java
@@ -1,34 +1,34 @@
-package org.saturnclient.impl.modules.mixins.render;
+package org.saturnclient.impl.features.mixins.render;
// Code approach adapted from Gamma Utils: https://github.com/Sjouwer/gamma-utils
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/features/mixins/render/LivingEntityRenderStateMixin.java
similarity index 72%
rename from versions/1.21.4/src/main/java/org/saturnclient/impl/modules/mixins/render/LivingEntityRenderStateMixin.java
rename to versions/1.21.4/src/main/java/org/saturnclient/impl/features/mixins/render/LivingEntityRenderStateMixin.java
index 8107001..bbb293b 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/features/mixins/render/LivingEntityRenderStateMixin.java
@@ -1,10 +1,10 @@
-package org.saturnclient.impl.modules.mixins.render;
+package org.saturnclient.impl.features.mixins.render;
import net.minecraft.client.render.entity.state.LivingEntityRenderState;
-import org.saturnclient.common.module.EntityModule;
-import org.saturnclient.impl.modules.entity.HealthRenderState;
-import org.saturnclient.impl.modules.mixins.misc.NametagsMixin;
+import org.saturnclient.common.feature.EntityFeature;
+import org.saturnclient.impl.features.entity.HealthRenderState;
+import org.saturnclient.impl.features.mixins.misc.NametagsMixin;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Unique;
@@ -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.4/src/main/java/org/saturnclient/impl/features/mixins/render/LivingEntityRendererMixin.java
similarity index 76%
rename from versions/1.21.5/src/main/java/org/saturnclient/impl/modules/mixins/render/LivingEntityRendererMixin.java
rename to versions/1.21.4/src/main/java/org/saturnclient/impl/features/mixins/render/LivingEntityRendererMixin.java
index ae59303..5e9d6a2 100644
--- a/versions/1.21.5/src/main/java/org/saturnclient/impl/modules/mixins/render/LivingEntityRendererMixin.java
+++ b/versions/1.21.4/src/main/java/org/saturnclient/impl/features/mixins/render/LivingEntityRendererMixin.java
@@ -1,4 +1,4 @@
-package org.saturnclient.impl.modules.mixins.render;
+package org.saturnclient.impl.features.mixins.render;
import net.minecraft.client.render.entity.LivingEntityRenderer;
import net.minecraft.client.render.entity.state.LivingEntityRenderState;
@@ -7,8 +7,8 @@ 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.impl.modules.entity.HealthRenderState;
+import org.saturnclient.common.feature.EntityFeature;
+import org.saturnclient.impl.features.entity.HealthRenderState;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
@@ -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{@code
+ * FeatureProvider provider = new FeatureProviderFabric(MinecraftClient.getInstance());
+ * FeatureManager.register(new AutoSprintFeature(provider));
+ * FeatureManager.register(new CoordinatesFeature(provider));
+ * // …
+ * }
+ */
+public class FeatureProviderFabric implements FeatureProvider {
+
+ private final PlayerFeature player;
+ private final WorldFeature world;
+ private final EntityFeature entity;
+ private final RenderFeature render;
+ private final NetworkFeature network;
+
+ public FeatureProviderFabric(MinecraftClient mc) {
+ this.player = new PlayerFeatureImpl(mc);
+ this.world = new WorldFeatureImpl(mc);
+ this.entity = new EntityFeatureImpl(mc);
+ this.render = new RenderFeatureImpl(mc);
+ this.network = new NetworkFeatureImpl(mc);
+ }
+
+ @Override
+ public PlayerFeature player() {
+ return player;
+ }
+
+ @Override
+ public WorldFeature world() {
+ return world;
+ }
+
+ @Override
+ public EntityFeature entity() {
+ return entity;
+ }
+
+ @Override
+ public RenderFeature render() {
+ return render;
+ }
+
+ @Override
+ public NetworkFeature network() {
+ return network;
+ }
+}
diff --git a/versions/1.21.4/src/main/java/org/saturnclient/impl/provider/ModuleProviderFabric.java b/versions/1.21.4/src/main/java/org/saturnclient/impl/provider/ModuleProviderFabric.java
deleted file mode 100644
index 2b7b41c..0000000
--- a/versions/1.21.4/src/main/java/org/saturnclient/impl/provider/ModuleProviderFabric.java
+++ /dev/null
@@ -1,68 +0,0 @@
-package org.saturnclient.impl.provider;
-
-import net.minecraft.client.MinecraftClient;
-
-import org.saturnclient.common.provider.ModuleProvider;
-import org.saturnclient.impl.modules.entity.EntityModuleFabric;
-import org.saturnclient.impl.modules.network.NetworkModuleFabric;
-import org.saturnclient.impl.modules.player.PlayerModuleFabric;
-import org.saturnclient.impl.modules.render.RenderModuleFabric;
-import org.saturnclient.impl.modules.world.WorldModuleFabric;
-import org.saturnclient.common.module.*;
-
-/**
- * Fabric implementation of {@link ModuleProvider}.
- *
- * Instantiated once during client startup (e.g. in the mod initialiser)
- * and passed to every feature constructor. All five sub-modules share
- * the same {@link MinecraftClient} reference so there is no
- * inconsistency between modules reading state within the same tick.
- *
- *
{@code
- * ModuleProvider provider = new ModuleProviderFabric(MinecraftClient.getInstance());
- * FeatureManager.register(new AutoSprintFeature(provider));
- * FeatureManager.register(new CoordinatesFeature(provider));
- * // …
- * }
- */
-public class ModuleProviderFabric implements ModuleProvider {
-
- private final PlayerModule player;
- private final WorldModule world;
- private final EntityModule entity;
- private final RenderModule render;
- private final NetworkModule network;
-
- public ModuleProviderFabric(MinecraftClient mc) {
- this.player = new PlayerModuleFabric(mc);
- this.world = new WorldModuleFabric(mc);
- this.entity = new EntityModuleFabric(mc);
- this.render = new RenderModuleFabric(mc);
- this.network = new NetworkModuleFabric(mc);
- }
-
- @Override
- public PlayerModule player() {
- return player;
- }
-
- @Override
- public WorldModule world() {
- return world;
- }
-
- @Override
- public EntityModule entity() {
- return entity;
- }
-
- @Override
- public RenderModule render() {
- return render;
- }
-
- @Override
- public NetworkModule 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..356de55 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,15 +8,15 @@ 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;
-import org.saturnclient.impl.provider.ModuleProviderFabric;
+import org.saturnclient.impl.provider.FeatureProviderFabric;
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;
@@ -41,11 +41,11 @@ public class SaturnClient implements ModInitializer {
Providers.saturn = new SaturnProviderImpl();
Providers.refConstructor = new RefConstructorImpl();
Providers.GLFW = new GLFWProviderImpl();
- Providers.module = new ModuleProviderFabric(client);
+ Providers.feature = new FeatureProviderFabric(client);
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/CameraOverriddenEntity.java b/versions/1.21.5/src/main/java/org/saturnclient/impl/features/entity/CameraOverriddenEntity.java
similarity index 81%
rename from versions/1.21.5/src/main/java/org/saturnclient/impl/modules/entity/CameraOverriddenEntity.java
rename to versions/1.21.5/src/main/java/org/saturnclient/impl/features/entity/CameraOverriddenEntity.java
index 10a1cba..310b69d 100644
--- a/versions/1.21.5/src/main/java/org/saturnclient/impl/modules/entity/CameraOverriddenEntity.java
+++ b/versions/1.21.5/src/main/java/org/saturnclient/impl/features/entity/CameraOverriddenEntity.java
@@ -1,4 +1,4 @@
-package org.saturnclient.impl.modules.entity;
+package org.saturnclient.impl.features.entity;
public interface CameraOverriddenEntity {
float freelook$getCameraPitch();
diff --git a/versions/1.21.4/src/main/java/org/saturnclient/impl/modules/entity/EntityModuleFabric.java b/versions/1.21.5/src/main/java/org/saturnclient/impl/features/entity/EntityFeatureImpl.java
similarity index 89%
rename from versions/1.21.4/src/main/java/org/saturnclient/impl/modules/entity/EntityModuleFabric.java
rename to versions/1.21.5/src/main/java/org/saturnclient/impl/features/entity/EntityFeatureImpl.java
index 7119cd6..901542e 100644
--- a/versions/1.21.4/src/main/java/org/saturnclient/impl/modules/entity/EntityModuleFabric.java
+++ b/versions/1.21.5/src/main/java/org/saturnclient/impl/features/entity/EntityFeatureImpl.java
@@ -1,4 +1,6 @@
-package org.saturnclient.impl.modules.entity;
+package org.saturnclient.impl.features.entity;
+
+import org.saturnclient.common.feature.EntityFeature;
import net.minecraft.client.MinecraftClient;
import net.minecraft.entity.Entity;
@@ -6,11 +8,8 @@ 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,11 +17,11 @@ 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 EntityFeatureImpl implements EntityFeature {
private final MinecraftClient mc;
- public EntityModuleFabric(MinecraftClient mc) {
+ public EntityFeatureImpl(MinecraftClient mc) {
this.mc = mc;
}
diff --git a/versions/1.21.5/src/main/java/org/saturnclient/impl/features/entity/HealthRenderState.java b/versions/1.21.5/src/main/java/org/saturnclient/impl/features/entity/HealthRenderState.java
new file mode 100644
index 0000000..7c62f81
--- /dev/null
+++ b/versions/1.21.5/src/main/java/org/saturnclient/impl/features/entity/HealthRenderState.java
@@ -0,0 +1,24 @@
+package org.saturnclient.impl.features.entity;
+
+import org.saturnclient.common.feature.EntityFeature;
+
+/**
+ * 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
+ * the live entity again.
+ */
+public interface HealthRenderState {
+
+ float saturn$getHealth();
+
+ 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.5/src/main/java/org/saturnclient/impl/features/mixins/entity/CameraMixin.java
similarity index 82%
rename from versions/1.21.4/src/main/java/org/saturnclient/impl/modules/mixins/entity/CameraMixin.java
rename to versions/1.21.5/src/main/java/org/saturnclient/impl/features/mixins/entity/CameraMixin.java
index 6608e2a..834286b 100644
--- a/versions/1.21.4/src/main/java/org/saturnclient/impl/modules/mixins/entity/CameraMixin.java
+++ b/versions/1.21.5/src/main/java/org/saturnclient/impl/features/mixins/entity/CameraMixin.java
@@ -1,7 +1,7 @@
-package org.saturnclient.impl.modules.mixins.entity;
+package org.saturnclient.impl.features.mixins.entity;
-import org.saturnclient.feature.features.FreelookFeature;
-import org.saturnclient.impl.modules.entity.CameraOverriddenEntity;
+import org.saturnclient.impl.features.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/features/mixins/entity/EntityMixin.java
similarity index 85%
rename from versions/1.21.5/src/main/java/org/saturnclient/impl/modules/mixins/entity/EntityMixin.java
rename to versions/1.21.5/src/main/java/org/saturnclient/impl/features/mixins/entity/EntityMixin.java
index fb16306..0dff4b0 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/features/mixins/entity/EntityMixin.java
@@ -1,7 +1,7 @@
-package org.saturnclient.impl.modules.mixins.entity;
+package org.saturnclient.impl.features.mixins.entity;
-import org.saturnclient.feature.features.FreelookFeature;
-import org.saturnclient.impl.modules.entity.CameraOverriddenEntity;
+import org.saturnclient.impl.features.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/features/mixins/misc/NametagsMixin.java
similarity index 81%
rename from versions/1.21.5/src/main/java/org/saturnclient/impl/modules/mixins/misc/NametagsMixin.java
rename to versions/1.21.5/src/main/java/org/saturnclient/impl/features/mixins/misc/NametagsMixin.java
index a31e348..8c1763d 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/features/mixins/misc/NametagsMixin.java
@@ -1,4 +1,4 @@
-package org.saturnclient.impl.modules.mixins.misc;
+package org.saturnclient.impl.features.mixins.misc;
import net.minecraft.client.render.VertexConsumerProvider;
import net.minecraft.client.render.entity.EntityRenderer;
@@ -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.impl.features.entity.EntityFeatureImpl;
+import org.saturnclient.impl.features.entity.HealthRenderState;
+import org.saturnclient.impl.features.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,17 +20,17 @@ 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:
*
*
* - The old {@code NametagsFabric.EntityStateImpl} bridge class is
- * replaced by {@link EntityModuleFabric.RenderStateEntityState},
+ * replaced by {@link EntityFeatureImpl.RenderStateEntityState},
* 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
@@ -76,11 +76,11 @@ public abstract class NametagsMixin {
// Build the platform-neutral EntityState from the render-state snapshot
// (health/type were written by LivingEntityRendererMixin at extract time).
String customName = text != null ? text.getString() : null;
- EntityModuleFabric.RenderStateEntityState entityState = new EntityModuleFabric.RenderStateEntityState(
+ EntityFeatureImpl.RenderStateEntityState entityState = new EntityFeatureImpl.RenderStateEntityState(
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/features/mixins/render/BackgroundRendererMixin.java
similarity index 78%
rename from versions/1.21.5/src/main/java/org/saturnclient/impl/modules/mixins/render/BackgroundRendererMixin.java
rename to versions/1.21.5/src/main/java/org/saturnclient/impl/features/mixins/render/BackgroundRendererMixin.java
index 563175b..a9f641a 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/features/mixins/render/BackgroundRendererMixin.java
@@ -1,8 +1,8 @@
-package org.saturnclient.impl.modules.mixins.render;
+package org.saturnclient.impl.features.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.5/src/main/java/org/saturnclient/impl/features/mixins/render/GameRendererMixin.java
similarity index 68%
rename from versions/1.21.4/src/main/java/org/saturnclient/impl/modules/mixins/render/GameRendererMixin.java
rename to versions/1.21.5/src/main/java/org/saturnclient/impl/features/mixins/render/GameRendererMixin.java
index 320093c..c6d97f3 100644
--- a/versions/1.21.4/src/main/java/org/saturnclient/impl/modules/mixins/render/GameRendererMixin.java
+++ b/versions/1.21.5/src/main/java/org/saturnclient/impl/features/mixins/render/GameRendererMixin.java
@@ -1,22 +1,22 @@
-package org.saturnclient.impl.modules.mixins.render;
+package org.saturnclient.impl.features.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/features/mixins/render/LightmapTextureManagerMixin.java
similarity index 72%
rename from versions/1.21.5/src/main/java/org/saturnclient/impl/modules/mixins/render/LightmapTextureManagerMixin.java
rename to versions/1.21.5/src/main/java/org/saturnclient/impl/features/mixins/render/LightmapTextureManagerMixin.java
index 3fb0037..66a3119 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/features/mixins/render/LightmapTextureManagerMixin.java
@@ -1,21 +1,21 @@
-package org.saturnclient.impl.modules.mixins.render;
+package org.saturnclient.impl.features.mixins.render;
// Code approach adapted from Gamma Utils: https://github.com/Sjouwer/gamma-utils
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/features/mixins/render/LivingEntityRenderStateMixin.java
similarity index 72%
rename from versions/1.21.5/src/main/java/org/saturnclient/impl/modules/mixins/render/LivingEntityRenderStateMixin.java
rename to versions/1.21.5/src/main/java/org/saturnclient/impl/features/mixins/render/LivingEntityRenderStateMixin.java
index 8107001..bbb293b 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/features/mixins/render/LivingEntityRenderStateMixin.java
@@ -1,10 +1,10 @@
-package org.saturnclient.impl.modules.mixins.render;
+package org.saturnclient.impl.features.mixins.render;
import net.minecraft.client.render.entity.state.LivingEntityRenderState;
-import org.saturnclient.common.module.EntityModule;
-import org.saturnclient.impl.modules.entity.HealthRenderState;
-import org.saturnclient.impl.modules.mixins.misc.NametagsMixin;
+import org.saturnclient.common.feature.EntityFeature;
+import org.saturnclient.impl.features.entity.HealthRenderState;
+import org.saturnclient.impl.features.mixins.misc.NametagsMixin;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Unique;
@@ -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.5/src/main/java/org/saturnclient/impl/features/mixins/render/LivingEntityRendererMixin.java
similarity index 76%
rename from versions/1.21.4/src/main/java/org/saturnclient/impl/modules/mixins/render/LivingEntityRendererMixin.java
rename to versions/1.21.5/src/main/java/org/saturnclient/impl/features/mixins/render/LivingEntityRendererMixin.java
index ae59303..5e9d6a2 100644
--- a/versions/1.21.4/src/main/java/org/saturnclient/impl/modules/mixins/render/LivingEntityRendererMixin.java
+++ b/versions/1.21.5/src/main/java/org/saturnclient/impl/features/mixins/render/LivingEntityRendererMixin.java
@@ -1,4 +1,4 @@
-package org.saturnclient.impl.modules.mixins.render;
+package org.saturnclient.impl.features.mixins.render;
import net.minecraft.client.render.entity.LivingEntityRenderer;
import net.minecraft.client.render.entity.state.LivingEntityRenderState;
@@ -7,8 +7,8 @@ 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.impl.modules.entity.HealthRenderState;
+import org.saturnclient.common.feature.EntityFeature;
+import org.saturnclient.impl.features.entity.HealthRenderState;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
@@ -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{@code
+ * FeatureProvider provider = new FeatureProviderFabric(MinecraftClient.getInstance());
+ * FeatureManager.register(new AutoSprintFeature(provider));
+ * FeatureManager.register(new CoordinatesFeature(provider));
+ * // …
+ * }
+ */
+public class FeatureProviderFabric implements FeatureProvider {
+
+ private final PlayerFeature player;
+ private final WorldFeature world;
+ private final EntityFeature entity;
+ private final RenderFeature render;
+ private final NetworkFeature network;
+
+ public FeatureProviderFabric(MinecraftClient mc) {
+ this.player = new PlayerFeatureImpl(mc);
+ this.world = new WorldFeatureImpl(mc);
+ this.entity = new EntityFeatureImpl(mc);
+ this.render = new RenderFeatureImpl(mc);
+ this.network = new NetworkFeatureImpl(mc);
+ }
+
+ @Override
+ public PlayerFeature player() {
+ return player;
+ }
+
+ @Override
+ public WorldFeature world() {
+ return world;
+ }
+
+ @Override
+ public EntityFeature entity() {
+ return entity;
+ }
+
+ @Override
+ public RenderFeature render() {
+ return render;
+ }
+
+ @Override
+ public NetworkFeature network() {
+ return network;
+ }
+}
diff --git a/versions/1.21.5/src/main/java/org/saturnclient/impl/provider/ModuleProviderFabric.java b/versions/1.21.5/src/main/java/org/saturnclient/impl/provider/ModuleProviderFabric.java
deleted file mode 100644
index 2b7b41c..0000000
--- a/versions/1.21.5/src/main/java/org/saturnclient/impl/provider/ModuleProviderFabric.java
+++ /dev/null
@@ -1,68 +0,0 @@
-package org.saturnclient.impl.provider;
-
-import net.minecraft.client.MinecraftClient;
-
-import org.saturnclient.common.provider.ModuleProvider;
-import org.saturnclient.impl.modules.entity.EntityModuleFabric;
-import org.saturnclient.impl.modules.network.NetworkModuleFabric;
-import org.saturnclient.impl.modules.player.PlayerModuleFabric;
-import org.saturnclient.impl.modules.render.RenderModuleFabric;
-import org.saturnclient.impl.modules.world.WorldModuleFabric;
-import org.saturnclient.common.module.*;
-
-/**
- * Fabric implementation of {@link ModuleProvider}.
- *
- * Instantiated once during client startup (e.g. in the mod initialiser)
- * and passed to every feature constructor. All five sub-modules share
- * the same {@link MinecraftClient} reference so there is no
- * inconsistency between modules reading state within the same tick.
- *
- *
{@code
- * ModuleProvider provider = new ModuleProviderFabric(MinecraftClient.getInstance());
- * FeatureManager.register(new AutoSprintFeature(provider));
- * FeatureManager.register(new CoordinatesFeature(provider));
- * // …
- * }
- */
-public class ModuleProviderFabric implements ModuleProvider {
-
- private final PlayerModule player;
- private final WorldModule world;
- private final EntityModule entity;
- private final RenderModule render;
- private final NetworkModule network;
-
- public ModuleProviderFabric(MinecraftClient mc) {
- this.player = new PlayerModuleFabric(mc);
- this.world = new WorldModuleFabric(mc);
- this.entity = new EntityModuleFabric(mc);
- this.render = new RenderModuleFabric(mc);
- this.network = new NetworkModuleFabric(mc);
- }
-
- @Override
- public PlayerModule player() {
- return player;
- }
-
- @Override
- public WorldModule world() {
- return world;
- }
-
- @Override
- public EntityModule entity() {
- return entity;
- }
-
- @Override
- public RenderModule render() {
- return render;
- }
-
- @Override
- public NetworkModule 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..356de55 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,15 +8,15 @@ 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;
-import org.saturnclient.impl.provider.ModuleProviderFabric;
+import org.saturnclient.impl.provider.FeatureProviderFabric;
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;
@@ -41,11 +41,11 @@ public class SaturnClient implements ModInitializer {
Providers.saturn = new SaturnProviderImpl();
Providers.refConstructor = new RefConstructorImpl();
Providers.GLFW = new GLFWProviderImpl();
- Providers.module = new ModuleProviderFabric(client);
+ Providers.feature = new FeatureProviderFabric(client);
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();
}
});