Skip to content

Commit 4c86d2a

Browse files
committed
Sneaking parity for all versions
1 parent f0b7982 commit 4c86d2a

File tree

8 files changed

+116
-25
lines changed

8 files changed

+116
-25
lines changed

versions/1.20.1-fabric/src/main/java/org/polyfrost/polynametag/mixin/client/Mixin_ReplaceTextRendering.java

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
import net.minecraft.client.render.VertexConsumerProvider;
1111
import net.minecraft.client.render.entity.EntityRenderer;
1212
import net.minecraft.client.util.math.MatrixStack;
13+
import net.minecraft.entity.Entity;
1314
import net.minecraft.text.Text;
1415
import org.joml.Matrix4f;
1516
import org.polyfrost.polynametag.client.NametagRenderer;
@@ -25,25 +26,27 @@ public abstract class Mixin_ReplaceTextRendering {
2526
Text text,
2627
float x,
2728
float y,
28-
int color,
29+
int inColor,
2930
boolean shadow,
3031
Matrix4f matrix4f,
3132
VertexConsumerProvider vertexConsumerProvider,
3233
TextRenderer.TextLayerType textLayerType,
3334
int backgroundColor,
3435
int light,
3536
Operation<Integer> original,
36-
@Local(argsOnly = true) MatrixStack matrixStack
37+
@Local(argsOnly = true) MatrixStack matrixStack,
38+
@Local(argsOnly = true) Entity entity
3739
) {
3840
if (PolyNametagConfig.isEnabled()) {
39-
return NametagRenderer.drawNametagString(OmniMatrixStacks.vanilla(matrixStack), text.getString(), x, y, new OmniColor(ColorFormat.ARGB, color));
41+
final OmniColor color = new OmniColor(ColorFormat.ARGB, inColor).withAlpha(entity.isSneaking() ? 32 : 255);
42+
return NametagRenderer.drawNametagString(OmniMatrixStacks.vanilla(matrixStack), text.getString(), x, y, color);
4043
} else {
4144
return original.call(
4245
instance,
4346
text,
4447
x,
4548
y,
46-
color,
49+
inColor,
4750
shadow,
4851
matrix4f,
4952
vertexConsumerProvider,
@@ -53,4 +56,13 @@ public abstract class Mixin_ReplaceTextRendering {
5356
);
5457
}
5558
}
59+
60+
@WrapOperation(method = "renderLabelIfPresent", at = @At(value = "INVOKE", target = "Lnet/minecraft/entity/Entity;isSneaky()Z"))
61+
private boolean polynametag$renderCustomTextWhilstSneaking(Entity instance, Operation<Boolean> original) {
62+
if (PolyNametagConfig.isEnabled()) {
63+
return false;
64+
} else {
65+
return original.call(instance);
66+
}
67+
}
5668
}

versions/1.21.10-fabric/src/main/java/org/polyfrost/polynametag/LabelCommandMatrix.java renamed to versions/1.21.10-fabric/src/main/java/org/polyfrost/polynametag/LabelCommandStorage.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,12 @@
33
import dev.deftu.omnicore.api.client.render.stack.OmniMatrixStack;
44
import net.minecraft.client.util.math.MatrixStack;
55

6-
public interface LabelCommandMatrix {
6+
public interface LabelCommandStorage {
77
OmniMatrixStack polynametag$getMatrixStack();
88

99
void polynametag$setMatrixStack(MatrixStack matrixStack);
10+
11+
boolean polynametag$isSneaking();
12+
13+
void polynametag$setSneaking(boolean sneaking);
1014
}

versions/1.21.10-fabric/src/main/java/org/polyfrost/polynametag/mixin/client/Mixin_ImplementLabelCommandMatrix.java

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,15 +4,18 @@
44
import dev.deftu.omnicore.api.client.render.stack.OmniMatrixStacks;
55
import net.minecraft.client.render.command.OrderedRenderCommandQueueImpl;
66
import net.minecraft.client.util.math.MatrixStack;
7-
import org.polyfrost.polynametag.LabelCommandMatrix;
7+
import org.polyfrost.polynametag.LabelCommandStorage;
88
import org.spongepowered.asm.mixin.Mixin;
99
import org.spongepowered.asm.mixin.Unique;
1010

1111
@Mixin(OrderedRenderCommandQueueImpl.LabelCommand.class)
12-
public abstract class Mixin_ImplementLabelCommandMatrix implements LabelCommandMatrix {
12+
public abstract class Mixin_ImplementLabelCommandMatrix implements LabelCommandStorage {
1313
@Unique
1414
private OmniMatrixStack polynametag$matrixStack = OmniMatrixStacks.create();
1515

16+
@Unique
17+
private boolean polynametag$sneaking = false;
18+
1619
@Override
1720
public OmniMatrixStack polynametag$getMatrixStack() {
1821
return polynametag$matrixStack;
@@ -22,4 +25,14 @@ public abstract class Mixin_ImplementLabelCommandMatrix implements LabelCommandM
2225
public void polynametag$setMatrixStack(MatrixStack matrixStack) {
2326
polynametag$matrixStack = OmniMatrixStacks.vanilla(matrixStack);
2427
}
28+
29+
@Override
30+
public boolean polynametag$isSneaking() {
31+
return polynametag$sneaking;
32+
}
33+
34+
@Override
35+
public void polynametag$setSneaking(boolean sneaking) {
36+
polynametag$sneaking = sneaking;
37+
}
2538
}

versions/1.21.10-fabric/src/main/java/org/polyfrost/polynametag/mixin/client/Mixin_ReplaceBackgroundRendering.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
import net.minecraft.client.render.command.OrderedRenderCommandQueueImpl;
1010
import net.minecraft.text.Text;
1111
import org.joml.Matrix4f;
12-
import org.polyfrost.polynametag.LabelCommandMatrix;
12+
import org.polyfrost.polynametag.LabelCommandStorage;
1313
import org.polyfrost.polynametag.client.NametagRenderer;
1414
import org.polyfrost.polynametag.client.PolyNametagConfig;
1515
import org.spongepowered.asm.mixin.Mixin;
@@ -34,7 +34,7 @@ public abstract class Mixin_ReplaceBackgroundRendering {
3434
@Local OrderedRenderCommandQueueImpl.LabelCommand labelCommand
3535
) {
3636
if (PolyNametagConfig.isEnabled()) {
37-
NametagRenderer.drawBackground(((LabelCommandMatrix) (Object) labelCommand).polynametag$getMatrixStack(), text);
37+
NametagRenderer.drawBackground(((LabelCommandStorage) (Object) labelCommand).polynametag$getMatrixStack(), text);
3838
} else {
3939
original.call(
4040
instance,

versions/1.21.10-fabric/src/main/java/org/polyfrost/polynametag/mixin/client/Mixin_ReplaceTextRendering.java

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
import net.minecraft.client.render.command.OrderedRenderCommandQueueImpl;
1212
import net.minecraft.text.Text;
1313
import org.joml.Matrix4f;
14-
import org.polyfrost.polynametag.LabelCommandMatrix;
14+
import org.polyfrost.polynametag.LabelCommandStorage;
1515
import org.polyfrost.polynametag.client.NametagRenderer;
1616
import org.polyfrost.polynametag.client.PolyNametagConfig;
1717
import org.spongepowered.asm.mixin.Mixin;
@@ -25,7 +25,7 @@ public abstract class Mixin_ReplaceTextRendering {
2525
Text text,
2626
float x,
2727
float y,
28-
int color,
28+
int inColor,
2929
boolean shadow,
3030
Matrix4f matrix4f,
3131
VertexConsumerProvider vertexConsumerProvider,
@@ -36,14 +36,16 @@ public abstract class Mixin_ReplaceTextRendering {
3636
@Local OrderedRenderCommandQueueImpl.LabelCommand labelCommand
3737
) {
3838
if (PolyNametagConfig.isEnabled()) {
39-
NametagRenderer.drawNametagString(((LabelCommandMatrix) (Object) labelCommand).polynametag$getMatrixStack(), text.getString(), x, y, new OmniColor(ColorFormat.ARGB, color));
39+
LabelCommandStorage labelCommandStorage = (LabelCommandStorage) (Object) labelCommand;
40+
final OmniColor color = new OmniColor(ColorFormat.ARGB, inColor).withAlpha(labelCommandStorage.polynametag$isSneaking() ? 32 : 255);
41+
NametagRenderer.drawNametagString(labelCommandStorage.polynametag$getMatrixStack(), text.getString(), x, y, color);
4042
} else {
4143
original.call(
4244
instance,
4345
text,
4446
x,
4547
y,
46-
color,
48+
inColor,
4749
shadow,
4850
matrix4f,
4951
vertexConsumerProvider,

versions/1.21.10-fabric/src/main/java/org/polyfrost/polynametag/mixin/client/Mixin_SaveMatrixStackInLabelCommand.java

Lines changed: 27 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,17 +5,41 @@
55
import com.llamalad7.mixinextras.sugar.Local;
66
import net.minecraft.client.render.command.LabelCommandRenderer;
77
import net.minecraft.client.util.math.MatrixStack;
8-
import org.polyfrost.polynametag.LabelCommandMatrix;
8+
import org.polyfrost.polynametag.LabelCommandStorage;
9+
import org.polyfrost.polynametag.client.PolyNametagConfig;
910
import org.spongepowered.asm.mixin.Mixin;
11+
import org.spongepowered.asm.mixin.Unique;
1012
import org.spongepowered.asm.mixin.injection.At;
13+
import org.spongepowered.asm.mixin.injection.ModifyVariable;
1114

1215
import java.util.List;
1316

1417
@Mixin(LabelCommandRenderer.Commands.class)
1518
public abstract class Mixin_SaveMatrixStackInLabelCommand {
19+
@Unique
20+
private boolean polynametag$sneaking = false;
21+
1622
@WrapOperation(method = "add", at = @At(value = "INVOKE", target = "Ljava/util/List;add(Ljava/lang/Object;)Z"))
17-
private <E> boolean polynametag$storeMatrixStack(List<E> instance, E labelCommand, Operation<Boolean> original, @Local(argsOnly = true) MatrixStack matrixStack) {
18-
((LabelCommandMatrix) labelCommand).polynametag$setMatrixStack(matrixStack);
23+
private <E> boolean polynametag$storeMatrixStack(
24+
List<E> instance,
25+
E labelCommand,
26+
Operation<Boolean> original,
27+
@Local(argsOnly = true) MatrixStack matrixStack,
28+
@Local(argsOnly = true) boolean notSneaking
29+
) {
30+
((LabelCommandStorage) labelCommand).polynametag$setMatrixStack(matrixStack);
31+
((LabelCommandStorage) labelCommand).polynametag$setSneaking(polynametag$sneaking);
1932
return original.call(instance, labelCommand);
2033
}
34+
35+
// Disable sneaking logic
36+
@ModifyVariable(method = "add", at = @At("HEAD"), argsOnly = true)
37+
private boolean polynametag$renderCustomTextWhilstSneaking(boolean original) {
38+
if (PolyNametagConfig.isEnabled()) {
39+
polynametag$sneaking = !original;
40+
return true;
41+
} else {
42+
return original;
43+
}
44+
}
2145
}

versions/1.21.4-fabric/src/main/java/org/polyfrost/polynametag/mixin/client/Mixin_ReplaceTextRendering.java

Lines changed: 29 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
import net.minecraft.client.font.TextRenderer;
1010
import net.minecraft.client.render.VertexConsumerProvider;
1111
import net.minecraft.client.render.entity.EntityRenderer;
12+
import net.minecraft.client.render.entity.state.EntityRenderState;
1213
import net.minecraft.client.util.math.MatrixStack;
1314
import net.minecraft.text.Text;
1415
import org.joml.Matrix4f;
@@ -25,20 +26,43 @@ public abstract class Mixin_ReplaceTextRendering {
2526
Text text,
2627
float x,
2728
float y,
28-
int color,
29+
int inColor,
2930
boolean shadow,
30-
Matrix4f matrix,
31+
Matrix4f matrix4f,
3132
VertexConsumerProvider buffer,
3233
TextRenderer.TextLayerType textLayerType,
3334
int backgroundColor,
3435
int light,
3536
Operation<Integer> original,
36-
@Local(argsOnly = true) MatrixStack matrices
37+
@Local(argsOnly = true) MatrixStack matrices,
38+
@Local(argsOnly = true) EntityRenderState entityRenderState
3739
) {
3840
if (PolyNametagConfig.isEnabled()) {
39-
return NametagRenderer.drawNametagString(OmniMatrixStacks.vanilla(matrices), text.getString(), x, y, new OmniColor(ColorFormat.ARGB, color));
41+
final OmniColor color = new OmniColor(ColorFormat.ARGB, inColor).withAlpha(entityRenderState.sneaking ? 32 : 255);
42+
return NametagRenderer.drawNametagString(OmniMatrixStacks.vanilla(matrices), text.getString(), x, y, color);
4043
} else {
41-
return original.call(instance, text, x, y, color, shadow, matrix, buffer, textLayerType, backgroundColor, light);
44+
return original.call(
45+
instance,
46+
text,
47+
x,
48+
y,
49+
inColor,
50+
shadow,
51+
matrix4f,
52+
buffer,
53+
textLayerType,
54+
backgroundColor,
55+
light
56+
);
57+
}
58+
}
59+
60+
@WrapOperation(method = "renderLabelIfPresent", at = @At(value = "FIELD", target = "Lnet/minecraft/client/render/entity/state/EntityRenderState;sneaking:Z"))
61+
private boolean polynametag$renderCustomTextWhilstSneaking(EntityRenderState instance, Operation<Boolean> original) {
62+
if (PolyNametagConfig.isEnabled()) {
63+
return false;
64+
} else {
65+
return original.call(instance);
4266
}
4367
}
4468
}

versions/1.21.8-fabric/src/main/java/org/polyfrost/polynametag/mixin/client/Mixin_ReplaceTextRendering.java

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
import net.minecraft.client.font.TextRenderer;
1010
import net.minecraft.client.render.VertexConsumerProvider;
1111
import net.minecraft.client.render.entity.EntityRenderer;
12+
import net.minecraft.client.render.entity.state.EntityRenderState;
1213
import net.minecraft.client.util.math.MatrixStack;
1314
import net.minecraft.text.Text;
1415
import org.joml.Matrix4f;
@@ -25,25 +26,27 @@ public abstract class Mixin_ReplaceTextRendering {
2526
Text text,
2627
float x,
2728
float y,
28-
int color,
29+
int inColor,
2930
boolean shadow,
3031
Matrix4f matrix4f,
3132
VertexConsumerProvider vertexConsumerProvider,
3233
TextRenderer.TextLayerType textLayerType,
3334
int backgroundColor,
3435
int light,
3536
Operation<Void> original,
36-
@Local(argsOnly = true) MatrixStack matrices
37+
@Local(argsOnly = true) MatrixStack matrices,
38+
@Local(argsOnly = true) EntityRenderState entityRenderState
3739
) {
3840
if (PolyNametagConfig.isEnabled()) {
39-
NametagRenderer.drawNametagString(OmniMatrixStacks.vanilla(matrices), text.getString(), x, y, new OmniColor(ColorFormat.ARGB, color));
41+
final OmniColor color = new OmniColor(ColorFormat.ARGB, inColor).withAlpha(entityRenderState.sneaking ? 32 : 255);
42+
NametagRenderer.drawNametagString(OmniMatrixStacks.vanilla(matrices), text.getString(), x, y, color);
4043
} else {
4144
original.call(
4245
instance,
4346
text,
4447
x,
4548
y,
46-
color,
49+
inColor,
4750
shadow,
4851
matrix4f,
4952
vertexConsumerProvider,
@@ -53,4 +56,13 @@ public abstract class Mixin_ReplaceTextRendering {
5356
);
5457
}
5558
}
59+
60+
@WrapOperation(method = "renderLabelIfPresent", at = @At(value = "FIELD", target = "Lnet/minecraft/client/render/entity/state/EntityRenderState;sneaking:Z"))
61+
private boolean polynametag$renderCustomTextWhilstSneaking(EntityRenderState instance, Operation<Boolean> original) {
62+
if (PolyNametagConfig.isEnabled()) {
63+
return false;
64+
} else {
65+
return original.call(instance);
66+
}
67+
}
5668
}

0 commit comments

Comments
 (0)