Nametags 1.21.10 and color fix
This commit is contained in:
@@ -0,0 +1,10 @@
|
|||||||
|
package org.saturnclient.saturnclient;
|
||||||
|
|
||||||
|
import org.saturnclient.client.player.SaturnPlayer;
|
||||||
|
|
||||||
|
import net.fabricmc.fabric.api.client.rendering.v1.RenderStateDataKey;
|
||||||
|
|
||||||
|
public class SaturnRenderState {
|
||||||
|
public static RenderStateDataKey<SaturnPlayer> saturnDataKey = RenderStateDataKey
|
||||||
|
.create(() -> "saturn-client-player");
|
||||||
|
}
|
||||||
@@ -1,67 +0,0 @@
|
|||||||
package org.saturnclient.saturnclient.mixin;
|
|
||||||
|
|
||||||
import net.minecraft.client.render.command.OrderedRenderCommandQueue;
|
|
||||||
import net.minecraft.client.render.entity.EntityRenderManager;
|
|
||||||
import net.minecraft.client.render.entity.EntityRenderer;
|
|
||||||
import net.minecraft.client.render.entity.state.EntityRenderState;
|
|
||||||
import net.minecraft.client.render.entity.state.PlayerEntityRenderState;
|
|
||||||
import net.minecraft.client.render.state.CameraRenderState;
|
|
||||||
import net.minecraft.client.util.math.MatrixStack;
|
|
||||||
import net.minecraft.text.MutableText;
|
|
||||||
import net.minecraft.text.Text;
|
|
||||||
import net.minecraft.util.Formatting;
|
|
||||||
|
|
||||||
import org.saturnclient.client.player.Roles;
|
|
||||||
import org.saturnclient.client.player.SaturnPlayer;
|
|
||||||
|
|
||||||
import java.util.UUID;
|
|
||||||
|
|
||||||
import org.spongepowered.asm.mixin.Mixin;
|
|
||||||
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;
|
|
||||||
|
|
||||||
@Mixin(value = EntityRenderer.class, priority = 1800)
|
|
||||||
public abstract class NameTagMixin<S extends EntityRenderState> {
|
|
||||||
@Shadow
|
|
||||||
public EntityRenderManager dispatcher;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author HexLeo
|
|
||||||
* @reason Adds the Saturn Client icon to the player's name if they are online
|
|
||||||
* with Saturn Client
|
|
||||||
*/
|
|
||||||
@Inject(method = "renderLabelIfPresent", at = @At("HEAD"), cancellable = true)
|
|
||||||
protected void renderLabelIfPresent(S state, MatrixStack matrices, OrderedRenderCommandQueue queue,
|
|
||||||
CameraRenderState cameraRenderState, CallbackInfo ci) {
|
|
||||||
if (state.displayName == null)
|
|
||||||
return;
|
|
||||||
|
|
||||||
UUID uuid = isSaturn(state);
|
|
||||||
|
|
||||||
if (uuid != null) {
|
|
||||||
MutableText iconText = Text.literal(Roles.getSaturnIndicator())
|
|
||||||
.styled(style -> style.withColor(Roles.getIconColor(uuid)));
|
|
||||||
|
|
||||||
Text nameText = state.displayName.copy().styled(style -> style.withColor(Formatting.WHITE));
|
|
||||||
|
|
||||||
queue.submitLabel(matrices, state.nameLabelPos, 0, iconText.append(nameText), !state.sneaking, state.light,
|
|
||||||
state.squaredDistanceToCamera, cameraRenderState);
|
|
||||||
|
|
||||||
ci.cancel();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private UUID isSaturn(S state) {
|
|
||||||
if (state instanceof PlayerEntityRenderState) {
|
|
||||||
String name = ((PlayerEntityRenderState) state).displayName.getString();
|
|
||||||
SaturnPlayer player = SaturnPlayer.get(name);
|
|
||||||
if (player != null) {
|
|
||||||
return player.uuid;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
+31
@@ -1,14 +1,22 @@
|
|||||||
package org.saturnclient.saturnclient.mixin;
|
package org.saturnclient.saturnclient.mixin;
|
||||||
|
|
||||||
|
import net.minecraft.client.network.ClientPlayerLikeEntity;
|
||||||
import net.minecraft.client.render.entity.EntityRendererFactory;
|
import net.minecraft.client.render.entity.EntityRendererFactory;
|
||||||
import net.minecraft.client.render.entity.LivingEntityRenderer;
|
import net.minecraft.client.render.entity.LivingEntityRenderer;
|
||||||
import net.minecraft.client.render.entity.PlayerEntityRenderer;
|
import net.minecraft.client.render.entity.PlayerEntityRenderer;
|
||||||
import net.minecraft.client.render.entity.model.PlayerEntityModel;
|
import net.minecraft.client.render.entity.model.PlayerEntityModel;
|
||||||
import net.minecraft.client.render.entity.state.PlayerEntityRenderState;
|
import net.minecraft.client.render.entity.state.PlayerEntityRenderState;
|
||||||
|
import net.minecraft.entity.PlayerLikeEntity;
|
||||||
import net.minecraft.entity.player.PlayerEntity;
|
import net.minecraft.entity.player.PlayerEntity;
|
||||||
|
import net.minecraft.text.MutableText;
|
||||||
|
import net.minecraft.text.Text;
|
||||||
|
import net.minecraft.util.Formatting;
|
||||||
|
|
||||||
|
import org.saturnclient.client.player.Roles;
|
||||||
|
import org.saturnclient.client.player.SaturnPlayer;
|
||||||
import org.saturnclient.impl.cosmetics.CloakFeatureRenderer;
|
import org.saturnclient.impl.cosmetics.CloakFeatureRenderer;
|
||||||
import org.saturnclient.impl.cosmetics.HatFeatureRenderer;
|
import org.saturnclient.impl.cosmetics.HatFeatureRenderer;
|
||||||
|
import org.saturnclient.saturnclient.SaturnRenderState;
|
||||||
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;
|
||||||
@@ -27,4 +35,27 @@ public abstract class PlayerEntityRendererMixin
|
|||||||
this.addFeature(new HatFeatureRenderer(this));
|
this.addFeature(new HatFeatureRenderer(this));
|
||||||
this.addFeature(new CloakFeatureRenderer(this, ctx.getEquipmentModelLoader()));
|
this.addFeature(new CloakFeatureRenderer(this, ctx.getEquipmentModelLoader()));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Inject(method = "updateRenderState", at = @At("TAIL"))
|
||||||
|
public <A extends PlayerLikeEntity & ClientPlayerLikeEntity> void updateRenderState(
|
||||||
|
A entity, PlayerEntityRenderState state,
|
||||||
|
float f, CallbackInfo ci) {
|
||||||
|
if (entity == null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
SaturnPlayer player = SaturnPlayer.get(entity.getUuid());
|
||||||
|
|
||||||
|
state.setData(SaturnRenderState.saturnDataKey, player);
|
||||||
|
|
||||||
|
if (player != null) {
|
||||||
|
MutableText iconText = Text.literal(Roles.getSaturnIndicator())
|
||||||
|
.styled(style -> style.withColor(Roles.getIconColor(player.uuid)));
|
||||||
|
|
||||||
|
state.displayName = Text.empty()
|
||||||
|
.append(iconText.copy())
|
||||||
|
.append(Text.empty().formatted(Formatting.RESET))
|
||||||
|
.append(state.displayName.copy());
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
+6
-2
@@ -10,6 +10,7 @@ import net.minecraft.entity.PlayerLikeEntity;
|
|||||||
import net.minecraft.entity.player.PlayerEntity;
|
import net.minecraft.entity.player.PlayerEntity;
|
||||||
import net.minecraft.text.MutableText;
|
import net.minecraft.text.MutableText;
|
||||||
import net.minecraft.text.Text;
|
import net.minecraft.text.Text;
|
||||||
|
import net.minecraft.util.Formatting;
|
||||||
|
|
||||||
import org.saturnclient.client.player.Roles;
|
import org.saturnclient.client.player.Roles;
|
||||||
import org.saturnclient.client.player.SaturnPlayer;
|
import org.saturnclient.client.player.SaturnPlayer;
|
||||||
@@ -47,11 +48,14 @@ public abstract class PlayerEntityRendererMixin
|
|||||||
|
|
||||||
state.setData(SaturnRenderState.saturnDataKey, player);
|
state.setData(SaturnRenderState.saturnDataKey, player);
|
||||||
|
|
||||||
if (player != null) {
|
if (player != null && state.displayName != null) {
|
||||||
MutableText iconText = Text.literal(Roles.getSaturnIndicator())
|
MutableText iconText = Text.literal(Roles.getSaturnIndicator())
|
||||||
.styled(style -> style.withColor(Roles.getIconColor(player.uuid)));
|
.styled(style -> style.withColor(Roles.getIconColor(player.uuid)));
|
||||||
|
|
||||||
state.displayName = iconText.append(state.displayName);
|
state.displayName = Text.empty()
|
||||||
|
.append(iconText.copy())
|
||||||
|
.append(Text.empty().formatted(Formatting.RESET))
|
||||||
|
.append(state.displayName.copy());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user