bug fix: iris support

This commit is contained in:
2025-04-15 13:17:48 +02:00
parent 9fb4ad32bf
commit 457c832b14
@@ -11,16 +11,17 @@ import net.minecraft.client.render.entity.state.PlayerEntityRenderState;
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 net.minecraft.util.math.Vec3d; import net.minecraft.util.math.Vec3d;
import net.minecraft.client.render.LightmapTextureManager;
import org.saturnclient.saturnclient.SaturnClientConfig; import org.saturnclient.saturnclient.SaturnClientConfig;
import org.saturnclient.saturnclient.auth.Auth; import org.saturnclient.saturnclient.auth.Auth;
import org.joml.Matrix4f; import org.joml.Matrix4f;
import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Overwrite; import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
import org.spongepowered.asm.mixin.Shadow; import org.spongepowered.asm.mixin.Shadow;
@Mixin(value = EntityRenderer.class, priority = 1500) @Mixin(value = EntityRenderer.class, priority = 1800)
public abstract class NameTagMixin<S extends EntityRenderState> { public abstract class NameTagMixin<S extends EntityRenderState> {
@Shadow @Shadow
public EntityRenderDispatcher dispatcher; public EntityRenderDispatcher dispatcher;
@@ -30,12 +31,27 @@ public abstract class NameTagMixin<S extends EntityRenderState> {
* @reason Adds the Saturn Client icon to the player's name if they are online * @reason Adds the Saturn Client icon to the player's name if they are online
* with Saturn Client * with Saturn Client
*/ */
@Overwrite @Inject(method = "renderLabelIfPresent(Lnet/minecraft/client/render/entity/state/EntityRenderState;Lnet/minecraft/text/Text;Lnet/minecraft/client/util/math/MatrixStack;Lnet/minecraft/client/render/VertexConsumerProvider;I)V", at = @At("HEAD"), cancellable = true)
public void renderLabelIfPresent(S state, Text text_o, MatrixStack matrices, private void onRenderLabelIfPresent(S state, Text text, MatrixStack matrices,
VertexConsumerProvider vertexConsumers, int light) { VertexConsumerProvider vertexConsumers, int light, CallbackInfo ci) {
Text text = isSaturn(state) ? Text.literal(SaturnClientConfig.getSaturnIndicator() + text_o.getString()) if (isSaturn(state)) {
: text_o; renderLabel(state, Text.literal(SaturnClientConfig.getSaturnIndicator()).append(text), matrices,
vertexConsumers, light);
ci.cancel();
}
}
private boolean isSaturn(S state) {
if (state instanceof PlayerEntityRenderState) {
String name = ((PlayerEntityRenderState) state).name;
String uuid = Auth.playerNames.get(name);
return uuid != null && Auth.players.containsKey(uuid);
}
return false;
}
private void renderLabel(S state, Text text, MatrixStack matrices,
VertexConsumerProvider vertexConsumers, int light) {
Vec3d vec3d = state.nameLabelPos; Vec3d vec3d = state.nameLabelPos;
if (vec3d != null) { if (vec3d != null) {
boolean bl = !state.sneaking; boolean bl = !state.sneaking;
@@ -52,19 +68,9 @@ public abstract class NameTagMixin<S extends EntityRenderState> {
bl ? TextLayerType.SEE_THROUGH : TextLayerType.NORMAL, j, light); bl ? TextLayerType.SEE_THROUGH : TextLayerType.NORMAL, j, light);
if (bl) { if (bl) {
textRenderer.draw(text, f, (float) i, -1, false, matrix4f, vertexConsumers, TextLayerType.NORMAL, 0, textRenderer.draw(text, f, (float) i, -1, false, matrix4f, vertexConsumers, TextLayerType.NORMAL, 0,
LightmapTextureManager.applyEmission(light, 2)); light);
} }
matrices.pop(); matrices.pop();
} }
} }
private boolean isSaturn(S state) {
if (state instanceof PlayerEntityRenderState) {
String name = ((PlayerEntityRenderState) state).name;
String uuid = Auth.playerNames.get(name);
return uuid != null && Auth.players.containsKey(uuid);
}
return false;
}
} }