Fixed saturn mixins
This commit is contained in:
@@ -5,9 +5,10 @@ import net.minecraft.client.font.TextRenderer.TextLayerType;
|
|||||||
import net.minecraft.client.render.VertexConsumerProvider;
|
import net.minecraft.client.render.VertexConsumerProvider;
|
||||||
import net.minecraft.client.render.entity.EntityRenderDispatcher;
|
import net.minecraft.client.render.entity.EntityRenderDispatcher;
|
||||||
import net.minecraft.client.render.entity.EntityRenderer;
|
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.util.math.MatrixStack;
|
import net.minecraft.client.util.math.MatrixStack;
|
||||||
|
import net.minecraft.entity.Entity;
|
||||||
|
import net.minecraft.entity.EntityAttachmentType;
|
||||||
|
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 net.minecraft.util.Formatting;
|
||||||
@@ -27,20 +28,23 @@ 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 = 1800)
|
@Mixin(value = EntityRenderer.class, priority = 1800)
|
||||||
public abstract class NameTagMixin<S extends EntityRenderState> {
|
public abstract class NameTagMixin<T extends Entity> {
|
||||||
@Shadow
|
@Shadow
|
||||||
public EntityRenderDispatcher dispatcher;
|
public EntityRenderDispatcher dispatcher;
|
||||||
|
|
||||||
|
@Shadow
|
||||||
|
private TextRenderer textRenderer;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author HexLeo
|
* @author HexLeo
|
||||||
* @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
|
||||||
*/
|
*/
|
||||||
@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)
|
@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)
|
||||||
private void onRenderLabelIfPresent(S state, Text text, MatrixStack matrices,
|
protected void renderLabelIfPresent(T entity, Text text, MatrixStack matrices,
|
||||||
VertexConsumerProvider vertexConsumers, int light, CallbackInfo ci) {
|
VertexConsumerProvider vertexConsumers, int light, float tickDelta, CallbackInfo ci) {
|
||||||
|
|
||||||
UUID uuid = isSaturn(state);
|
UUID uuid = isSaturn(entity);
|
||||||
|
|
||||||
if (uuid != null) {
|
if (uuid != null) {
|
||||||
MutableText iconText = Text.literal(Roles.getSaturnIndicator())
|
MutableText iconText = Text.literal(Roles.getSaturnIndicator())
|
||||||
@@ -48,17 +52,15 @@ public abstract class NameTagMixin<S extends EntityRenderState> {
|
|||||||
|
|
||||||
Text nameText = text.copy().styled(style -> style.withColor(Formatting.WHITE));
|
Text nameText = text.copy().styled(style -> style.withColor(Formatting.WHITE));
|
||||||
|
|
||||||
renderLabel(state, iconText.append(nameText), matrices,
|
renderLabel(entity, iconText.append(nameText), matrices, vertexConsumers, light, tickDelta);
|
||||||
vertexConsumers, light);
|
|
||||||
|
|
||||||
ci.cancel();
|
ci.cancel();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private UUID isSaturn(S state) {
|
private UUID isSaturn(T entity) {
|
||||||
if (state instanceof PlayerEntityRenderState) {
|
if (entity instanceof PlayerEntity playerEntity) {
|
||||||
String name = ((PlayerEntityRenderState) state).name;
|
SaturnPlayer player = SaturnPlayer.get(playerEntity.getUuid());
|
||||||
SaturnPlayer player = SaturnPlayer.get(name);
|
|
||||||
if (player != null) {
|
if (player != null) {
|
||||||
return player.uuid;
|
return player.uuid;
|
||||||
}
|
}
|
||||||
@@ -67,27 +69,33 @@ public abstract class NameTagMixin<S extends EntityRenderState> {
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void renderLabel(S state, Text text, MatrixStack matrices,
|
private void renderLabel(T entity, Text text, MatrixStack matrices,
|
||||||
VertexConsumerProvider vertexConsumers, int light) {
|
VertexConsumerProvider vertexConsumers, int light, float tickDelta) {
|
||||||
Vec3d vec3d = state.nameLabelPos;
|
double d = this.dispatcher.getSquaredDistanceToCamera(entity);
|
||||||
|
if (!(d > (double) 4096.0F)) {
|
||||||
|
Vec3d vec3d = entity.getAttachments().getPointNullable(EntityAttachmentType.NAME_TAG, 0,
|
||||||
|
entity.getYaw(tickDelta));
|
||||||
if (vec3d != null) {
|
if (vec3d != null) {
|
||||||
boolean bl = !state.sneaking;
|
boolean bl = !entity.isSneaky();
|
||||||
int i = "deadmau5".equals(text.getString()) ? -10 : 0;
|
int i = "deadmau5".equals(text.getString()) ? -10 : 0;
|
||||||
matrices.push();
|
matrices.push();
|
||||||
matrices.translate(vec3d.x, vec3d.y + 0.5, vec3d.z);
|
matrices.translate(vec3d.x, vec3d.y + (double) 0.5F, vec3d.z);
|
||||||
matrices.multiply(this.dispatcher.getRotation());
|
matrices.multiply(this.dispatcher.getRotation());
|
||||||
matrices.scale(0.025F, -0.025F, 0.025F);
|
matrices.scale(0.025F, -0.025F, 0.025F);
|
||||||
Matrix4f matrix4f = matrices.peek().getPositionMatrix();
|
Matrix4f matrix4f = matrices.peek().getPositionMatrix();
|
||||||
TextRenderer textRenderer = SaturnClient.client.textRenderer;
|
float f = SaturnClient.client.options.getTextBackgroundOpacity(0.25F);
|
||||||
float f = (float) (-textRenderer.getWidth(text)) / 2.0F;
|
int j = (int) (f * 255.0F) << 24;
|
||||||
int j = (int) (SaturnClient.client.options.getTextBackgroundOpacity(0.25F) * 255.0F) << 24;
|
TextRenderer textRenderer = this.textRenderer;
|
||||||
textRenderer.draw(text, f, (float) i, -2130706433, false, matrix4f, vertexConsumers,
|
float g = (float) (-textRenderer.getWidth(text) / 2);
|
||||||
|
textRenderer.draw(text, g, (float) i, 553648127, false, matrix4f, vertexConsumers,
|
||||||
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, g, (float) i, -1, false, matrix4f, vertexConsumers, TextLayerType.NORMAL, 0,
|
||||||
light);
|
light);
|
||||||
}
|
}
|
||||||
|
|
||||||
matrices.pop();
|
matrices.pop();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+3
-4
@@ -1,11 +1,10 @@
|
|||||||
package org.saturnclient.saturnclient.mixin;
|
package org.saturnclient.saturnclient.mixin;
|
||||||
|
|
||||||
|
import net.minecraft.client.network.AbstractClientPlayerEntity;
|
||||||
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.entity.player.PlayerEntity;
|
|
||||||
|
|
||||||
import org.saturnclient.impl.cosmetics.CloakFeatureRenderer;
|
import org.saturnclient.impl.cosmetics.CloakFeatureRenderer;
|
||||||
import org.saturnclient.impl.cosmetics.HatFeatureRenderer;
|
import org.saturnclient.impl.cosmetics.HatFeatureRenderer;
|
||||||
@@ -16,7 +15,7 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
|||||||
|
|
||||||
@Mixin(PlayerEntityRenderer.class)
|
@Mixin(PlayerEntityRenderer.class)
|
||||||
public abstract class PlayerEntityRendererMixin
|
public abstract class PlayerEntityRendererMixin
|
||||||
extends LivingEntityRenderer<PlayerEntity, PlayerEntityRenderState, PlayerEntityModel> {
|
extends LivingEntityRenderer<AbstractClientPlayerEntity, PlayerEntityModel<AbstractClientPlayerEntity>> {
|
||||||
|
|
||||||
protected PlayerEntityRendererMixin() {
|
protected PlayerEntityRendererMixin() {
|
||||||
super(null, null, 0.0f);
|
super(null, null, 0.0f);
|
||||||
@@ -25,6 +24,6 @@ public abstract class PlayerEntityRendererMixin
|
|||||||
@Inject(method = "<init>", at = @At("TAIL"))
|
@Inject(method = "<init>", at = @At("TAIL"))
|
||||||
private void addCustomFeatureRenderer(EntityRendererFactory.Context ctx, boolean slim, CallbackInfo ci) {
|
private void addCustomFeatureRenderer(EntityRendererFactory.Context ctx, boolean slim, CallbackInfo ci) {
|
||||||
this.addFeature(new HatFeatureRenderer(this));
|
this.addFeature(new HatFeatureRenderer(this));
|
||||||
this.addFeature(new CloakFeatureRenderer(this, ctx.getEquipmentModelLoader()));
|
this.addFeature(new CloakFeatureRenderer(this));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user