Refactor feature / module system for 1.21.5 #55

This commit is contained in:
2026-03-24 13:06:50 +01:00
parent 8836cc851b
commit 99929c7d64
18 changed files with 48 additions and 48 deletions
@@ -1,4 +1,4 @@
package org.saturnclient.impl.modules.entity;
package org.saturnclient.impl.features.entity;
public interface CameraOverriddenEntity {
float freelook$getCameraPitch();
@@ -1,4 +1,4 @@
package org.saturnclient.impl.modules.entity;
package org.saturnclient.impl.features.entity;
import org.saturnclient.common.feature.EntityFeature;
@@ -17,11 +17,11 @@ import net.minecraft.entity.LivingEntity;
* writes into the render state; {@link NametagsMixin} then constructs
* a {@link RenderStateEntityState} from the already-extracted snapshot.
*/
public class EntityModuleFabric implements EntityFeature {
public class EntityFeatureImpl implements EntityFeature {
private final MinecraftClient mc;
public EntityModuleFabric(MinecraftClient mc) {
public EntityFeatureImpl(MinecraftClient mc) {
this.mc = mc;
}
@@ -1,4 +1,4 @@
package org.saturnclient.impl.modules.entity;
package org.saturnclient.impl.features.entity;
import org.saturnclient.common.feature.EntityFeature;
@@ -1,6 +1,6 @@
package org.saturnclient.impl.modules.mixins.entity;
package org.saturnclient.impl.features.mixins.entity;
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;
@@ -1,6 +1,6 @@
package org.saturnclient.impl.modules.mixins.entity;
package org.saturnclient.impl.features.mixins.entity;
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;
@@ -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,9 +7,9 @@ import net.minecraft.client.render.entity.state.LivingEntityRenderState;
import net.minecraft.client.util.math.MatrixStack;
import net.minecraft.text.Text;
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;
@@ -26,7 +26,7 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
*
* <ul>
* <li>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}.</li>
* <li>The feature import changes from {@code Nametags} to
@@ -76,7 +76,7 @@ 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
@@ -1,4 +1,4 @@
package org.saturnclient.impl.modules.mixins.render;
package org.saturnclient.impl.features.mixins.render;
import net.minecraft.client.render.BackgroundRenderer;
@@ -1,4 +1,4 @@
package org.saturnclient.impl.modules.mixins.render;
package org.saturnclient.impl.features.mixins.render;
import net.minecraft.client.render.GameRenderer;
@@ -1,4 +1,4 @@
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
@@ -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.feature.EntityFeature;
import org.saturnclient.impl.modules.entity.HealthRenderState;
import org.saturnclient.impl.modules.mixins.misc.NametagsMixin;
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;
@@ -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;
@@ -8,7 +8,7 @@ import net.minecraft.entity.passive.PassiveEntity;
import net.minecraft.entity.player.PlayerEntity;
import org.saturnclient.common.feature.EntityFeature;
import org.saturnclient.impl.modules.entity.HealthRenderState;
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;
@@ -1,4 +1,4 @@
package org.saturnclient.impl.modules.mixins.render;
package org.saturnclient.impl.features.mixins.render;
import net.minecraft.client.font.TextRenderer;
import net.minecraft.client.gui.DrawContext;
@@ -1,4 +1,4 @@
package org.saturnclient.impl.modules.mixins.world;
package org.saturnclient.impl.features.mixins.world;
import net.minecraft.client.network.ClientPlayNetworkHandler;
import net.minecraft.network.packet.s2c.play.WorldTimeUpdateS2CPacket;
@@ -1,4 +1,4 @@
package org.saturnclient.impl.modules.network;
package org.saturnclient.impl.features.network;
import org.saturnclient.common.feature.NetworkFeature;
@@ -12,11 +12,11 @@ import net.minecraft.client.network.PlayerListEntry;
* Ping is read from the player's {@link PlayerListEntry} which the
* server populates; returns {@code -1} when unavailable.
*/
public class NetworkModuleFabric implements NetworkFeature {
public class NetworkFeatureImpl implements NetworkFeature {
private final MinecraftClient mc;
public NetworkModuleFabric(MinecraftClient mc) {
public NetworkFeatureImpl(MinecraftClient mc) {
this.mc = mc;
}
@@ -1,13 +1,13 @@
package org.saturnclient.impl.modules.player;
package org.saturnclient.impl.features.player;
import net.minecraft.client.MinecraftClient;
import net.minecraft.client.network.ClientPlayerEntity;
import net.minecraft.entity.EquipmentSlot;
import net.minecraft.entity.effect.StatusEffectInstance;
import net.minecraft.item.ItemStack;
import net.minecraft.item.Items;
import net.minecraft.registry.Registries;
import net.minecraft.util.Identifier;
import net.minecraft.entity.EquipmentSlot;
import org.saturnclient.common.feature.PlayerFeature;
import org.saturnclient.common.ref.game.EffectRef;
@@ -27,11 +27,11 @@ import java.util.List;
* Every method guards against a missing player and returns a safe
* default so features are free of null checks.
*/
public class PlayerModuleFabric implements PlayerFeature {
public class PlayerFeatureImpl implements PlayerFeature {
private final MinecraftClient mc;
public PlayerModuleFabric(MinecraftClient mc) {
public PlayerFeatureImpl(MinecraftClient mc) {
this.mc = mc;
}
@@ -1,4 +1,4 @@
package org.saturnclient.impl.modules.render;
package org.saturnclient.impl.features.render;
import org.saturnclient.common.feature.RenderFeature;
@@ -12,11 +12,11 @@ import net.minecraft.client.option.Perspective;
* {@link MinecraftClient}. Camera perspective control delegates to
* {@link net.minecraft.client.option.GameOptions}.
*/
public class RenderModuleFabric implements RenderFeature {
public class RenderFeatureImpl implements RenderFeature {
private final MinecraftClient mc;
public RenderModuleFabric(MinecraftClient mc) {
public RenderFeatureImpl(MinecraftClient mc) {
this.mc = mc;
}
@@ -1,4 +1,4 @@
package org.saturnclient.impl.modules.world;
package org.saturnclient.impl.features.world;
import org.saturnclient.common.feature.WorldFeature;
@@ -10,11 +10,11 @@ import net.minecraft.client.MinecraftClient;
* Reads the client world's time directly from {@link MinecraftClient}.
* Returns safe defaults when no world is loaded.
*/
public class WorldModuleFabric implements WorldFeature {
public class WorldFeatureImpl implements WorldFeature {
private final MinecraftClient mc;
public WorldModuleFabric(MinecraftClient mc) {
public WorldFeatureImpl(MinecraftClient mc) {
this.mc = mc;
}
@@ -4,11 +4,11 @@ import net.minecraft.client.MinecraftClient;
import org.saturnclient.common.feature.*;
import org.saturnclient.common.provider.FeatureProvider;
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.impl.features.entity.EntityFeatureImpl;
import org.saturnclient.impl.features.network.NetworkFeatureImpl;
import org.saturnclient.impl.features.player.PlayerFeatureImpl;
import org.saturnclient.impl.features.render.RenderFeatureImpl;
import org.saturnclient.impl.features.world.WorldFeatureImpl;
/**
* Fabric implementation of {@link FeatureProvider}.
@@ -34,11 +34,11 @@ public class ModuleProviderFabric implements FeatureProvider {
private final NetworkFeature 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);
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