Refactor feature / module system for 1.21.4 #55

This commit is contained in:
2026-03-24 13:01:38 +01:00
parent 7849e2e04c
commit 8836cc851b
21 changed files with 53 additions and 53 deletions
+1 -1
Submodule common updated: bdab6586d4...dceff0e675
@@ -1,4 +1,4 @@
package org.saturnclient.impl.modules.entity; package org.saturnclient.impl.features.entity;
public interface CameraOverriddenEntity { public interface CameraOverriddenEntity {
float freelook$getCameraPitch(); 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; import org.saturnclient.common.feature.EntityFeature;
@@ -17,11 +17,11 @@ import net.minecraft.entity.LivingEntity;
* writes into the render state; {@link NametagsMixin} then constructs * writes into the render state; {@link NametagsMixin} then constructs
* a {@link RenderStateEntityState} from the already-extracted snapshot. * a {@link RenderStateEntityState} from the already-extracted snapshot.
*/ */
public class EntityModuleFabric implements EntityFeature { public class EntityFeatureImpl implements EntityFeature {
private final MinecraftClient mc; private final MinecraftClient mc;
public EntityModuleFabric(MinecraftClient mc) { public EntityFeatureImpl(MinecraftClient mc) {
this.mc = 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; 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.mod.mods.FreelookMod;
import org.saturnclient.saturnclient.SaturnClient; import org.saturnclient.saturnclient.SaturnClient;
import org.spongepowered.asm.mixin.Mixin; 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.saturnclient.mod.mods.FreelookMod;
import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Unique; 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.VertexConsumerProvider;
import net.minecraft.client.render.entity.EntityRenderer; 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.client.util.math.MatrixStack;
import net.minecraft.text.Text; import net.minecraft.text.Text;
import org.saturnclient.impl.modules.entity.EntityModuleFabric; import org.saturnclient.impl.features.entity.EntityFeatureImpl;
import org.saturnclient.impl.modules.entity.HealthRenderState; import org.saturnclient.impl.features.entity.HealthRenderState;
import org.saturnclient.impl.modules.mixins.render.LivingEntityRenderStateMixin; import org.saturnclient.impl.features.mixins.render.LivingEntityRenderStateMixin;
import org.saturnclient.mod.mods.NametagsMod; import org.saturnclient.mod.mods.NametagsMod;
import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Shadow; import org.spongepowered.asm.mixin.Shadow;
@@ -26,7 +26,7 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
* *
* <ul> * <ul>
* <li>The old {@code NametagsFabric.EntityStateImpl} bridge class is * <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 * which wraps the {@link HealthRenderState} already injected into
* the render state by {@link LivingEntityRenderStateMixin}.</li> * the render state by {@link LivingEntityRenderStateMixin}.</li>
* <li>The feature import changes from {@code Nametags} to * <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 // Build the platform-neutral EntityState from the render-state snapshot
// (health/type were written by LivingEntityRendererMixin at extract time). // (health/type were written by LivingEntityRendererMixin at extract time).
String customName = text != null ? text.getString() : null; String customName = text != null ? text.getString() : null;
EntityModuleFabric.RenderStateEntityState entityState = new EntityModuleFabric.RenderStateEntityState( EntityFeatureImpl.RenderStateEntityState entityState = new EntityFeatureImpl.RenderStateEntityState(
customName, hrs); customName, hrs);
// Ask the feature for the replacement string // 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; 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; 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 // 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 net.minecraft.client.render.entity.state.LivingEntityRenderState;
import org.saturnclient.common.feature.EntityFeature; import org.saturnclient.common.feature.EntityFeature;
import org.saturnclient.impl.modules.entity.HealthRenderState; import org.saturnclient.impl.features.entity.HealthRenderState;
import org.saturnclient.impl.modules.mixins.misc.NametagsMixin; import org.saturnclient.impl.features.mixins.misc.NametagsMixin;
import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Unique; 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.LivingEntityRenderer;
import net.minecraft.client.render.entity.state.LivingEntityRenderState; 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 net.minecraft.entity.player.PlayerEntity;
import org.saturnclient.common.feature.EntityFeature; 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.Mixin;
import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject; 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.font.TextRenderer;
import net.minecraft.client.gui.DrawContext; 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.client.network.ClientPlayNetworkHandler;
import net.minecraft.network.packet.s2c.play.WorldTimeUpdateS2CPacket; 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; 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 * Ping is read from the player's {@link PlayerListEntry} which the
* server populates; returns {@code -1} when unavailable. * server populates; returns {@code -1} when unavailable.
*/ */
public class NetworkModuleFabric implements NetworkFeature { public class NetworkFeatureImpl implements NetworkFeature {
private final MinecraftClient mc; private final MinecraftClient mc;
public NetworkModuleFabric(MinecraftClient mc) { public NetworkFeatureImpl(MinecraftClient mc) {
this.mc = mc; this.mc = mc;
} }
@@ -1,4 +1,4 @@
package org.saturnclient.impl.modules.player; package org.saturnclient.impl.features.player;
import net.minecraft.client.MinecraftClient; import net.minecraft.client.MinecraftClient;
import net.minecraft.client.network.ClientPlayerEntity; import net.minecraft.client.network.ClientPlayerEntity;
@@ -26,11 +26,11 @@ import java.util.List;
* Every method guards against a missing player and returns a safe * Every method guards against a missing player and returns a safe
* default so features are free of null checks. * default so features are free of null checks.
*/ */
public class PlayerModuleFabric implements PlayerFeature { public class PlayerFeatureImpl implements PlayerFeature {
private final MinecraftClient mc; private final MinecraftClient mc;
public PlayerModuleFabric(MinecraftClient mc) { public PlayerFeatureImpl(MinecraftClient mc) {
this.mc = 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; import org.saturnclient.common.feature.RenderFeature;
@@ -12,11 +12,11 @@ import net.minecraft.client.option.Perspective;
* {@link MinecraftClient}. Camera perspective control delegates to * {@link MinecraftClient}. Camera perspective control delegates to
* {@link net.minecraft.client.option.GameOptions}. * {@link net.minecraft.client.option.GameOptions}.
*/ */
public class RenderModuleFabric implements RenderFeature { public class RenderFeatureImpl implements RenderFeature {
private final MinecraftClient mc; private final MinecraftClient mc;
public RenderModuleFabric(MinecraftClient mc) { public RenderFeatureImpl(MinecraftClient mc) {
this.mc = 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; 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}. * Reads the client world's time directly from {@link MinecraftClient}.
* Returns safe defaults when no world is loaded. * Returns safe defaults when no world is loaded.
*/ */
public class WorldModuleFabric implements WorldFeature { public class WorldFeatureImpl implements WorldFeature {
private final MinecraftClient mc; private final MinecraftClient mc;
public WorldModuleFabric(MinecraftClient mc) { public WorldFeatureImpl(MinecraftClient mc) {
this.mc = mc; this.mc = mc;
} }
@@ -4,11 +4,11 @@ import net.minecraft.client.MinecraftClient;
import org.saturnclient.common.feature.*; import org.saturnclient.common.feature.*;
import org.saturnclient.common.provider.FeatureProvider; import org.saturnclient.common.provider.FeatureProvider;
import org.saturnclient.impl.modules.entity.EntityModuleFabric; import org.saturnclient.impl.features.entity.EntityFeatureImpl;
import org.saturnclient.impl.modules.network.NetworkModuleFabric; import org.saturnclient.impl.features.network.NetworkFeatureImpl;
import org.saturnclient.impl.modules.player.PlayerModuleFabric; import org.saturnclient.impl.features.player.PlayerFeatureImpl;
import org.saturnclient.impl.modules.render.RenderModuleFabric; import org.saturnclient.impl.features.render.RenderFeatureImpl;
import org.saturnclient.impl.modules.world.WorldModuleFabric; import org.saturnclient.impl.features.world.WorldFeatureImpl;
/** /**
* Fabric implementation of {@link FeatureProvider}. * Fabric implementation of {@link FeatureProvider}.
@@ -25,7 +25,7 @@ import org.saturnclient.impl.modules.world.WorldModuleFabric;
* // … * // …
* }</pre> * }</pre>
*/ */
public class ModuleProviderFabric implements FeatureProvider { public class FeatureProviderFabric implements FeatureProvider {
private final PlayerFeature player; private final PlayerFeature player;
private final WorldFeature world; private final WorldFeature world;
@@ -33,12 +33,12 @@ public class ModuleProviderFabric implements FeatureProvider {
private final RenderFeature render; private final RenderFeature render;
private final NetworkFeature network; private final NetworkFeature network;
public ModuleProviderFabric(MinecraftClient mc) { public FeatureProviderFabric(MinecraftClient mc) {
this.player = new PlayerModuleFabric(mc); this.player = new PlayerFeatureImpl(mc);
this.world = new WorldModuleFabric(mc); this.world = new WorldFeatureImpl(mc);
this.entity = new EntityModuleFabric(mc); this.entity = new EntityFeatureImpl(mc);
this.render = new RenderModuleFabric(mc); this.render = new RenderFeatureImpl(mc);
this.network = new NetworkModuleFabric(mc); this.network = new NetworkFeatureImpl(mc);
} }
@Override @Override
@@ -11,7 +11,7 @@ import org.saturnclient.cosmetics.Hats;
import org.saturnclient.cosmetics.Cloaks; import org.saturnclient.cosmetics.Cloaks;
import org.saturnclient.common.provider.Providers; import org.saturnclient.common.provider.Providers;
import org.saturnclient.impl.provider.GLFWProviderImpl; 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.RefConstructorImpl;
import org.saturnclient.impl.provider.SaturnProviderImpl; import org.saturnclient.impl.provider.SaturnProviderImpl;
import org.saturnclient.impl.ui.EntityDrawerImpl; import org.saturnclient.impl.ui.EntityDrawerImpl;
@@ -41,7 +41,7 @@ public class SaturnClient implements ModInitializer {
Providers.saturn = new SaturnProviderImpl(); Providers.saturn = new SaturnProviderImpl();
Providers.refConstructor = new RefConstructorImpl(); Providers.refConstructor = new RefConstructorImpl();
Providers.GLFW = new GLFWProviderImpl(); Providers.GLFW = new GLFWProviderImpl();
Providers.module = new ModuleProviderFabric(client); Providers.feature = new FeatureProviderFabric(client);
SkinPreview.DRAWER = new EntityDrawerImpl(); SkinPreview.DRAWER = new EntityDrawerImpl();
Config.init(); Config.init();
@@ -41,7 +41,7 @@ public class SaturnClient implements ModInitializer {
Providers.saturn = new SaturnProviderImpl(); Providers.saturn = new SaturnProviderImpl();
Providers.refConstructor = new RefConstructorImpl(); Providers.refConstructor = new RefConstructorImpl();
Providers.GLFW = new GLFWProviderImpl(); Providers.GLFW = new GLFWProviderImpl();
Providers.module = new ModuleProviderFabric(client); Providers.feature = new ModuleProviderFabric(client);
SkinPreview.DRAWER = new EntityDrawerImpl(); SkinPreview.DRAWER = new EntityDrawerImpl();
Config.init(); Config.init();