Skip to content

Commit f0b7982

Browse files
committed
Sneaking functioning right in 1.8
1 parent 8df510b commit f0b7982

File tree

8 files changed

+98
-17
lines changed

8 files changed

+98
-17
lines changed
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
package org.polyfrost.polynametag.mixin.client;
2+
3+
import com.llamalad7.mixinextras.injector.wrapoperation.Operation;
4+
import com.llamalad7.mixinextras.injector.wrapoperation.WrapOperation;
5+
import net.minecraft.client.renderer.entity.RendererLivingEntity;
6+
import net.minecraft.entity.EntityLivingBase;
7+
import org.polyfrost.polynametag.client.PolyNametagConfig;
8+
import org.spongepowered.asm.mixin.Mixin;
9+
import org.spongepowered.asm.mixin.injection.At;
10+
11+
@Mixin(RendererLivingEntity.class)
12+
public abstract class Mixin_FixSneakingNametag {
13+
@WrapOperation(method = "renderName(Lnet/minecraft/entity/EntityLivingBase;DDD)V", at = @At(value = "INVOKE", target = "Lnet/minecraft/entity/EntityLivingBase;isSneaking()Z"))
14+
private boolean polynametag$showCustomNametagWhilstSneaking(EntityLivingBase instance, Operation<Boolean> original) {
15+
if (PolyNametagConfig.isEnabled()) {
16+
return false;
17+
} else {
18+
return original.call(instance);
19+
}
20+
}
21+
}

src/main/java/org/polyfrost/polynametag/mixin/client/Mixin_OffsetRendering.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
package org.polyfrost.polynametag.mixin.client;
22

3+
import com.llamalad7.mixinextras.sugar.Local;
34
import net.minecraft.client.renderer.entity.Render;
5+
import net.minecraft.entity.Entity;
46
import org.polyfrost.polynametag.client.PolyNametagConfig;
57
import org.spongepowered.asm.mixin.Mixin;
68
import org.spongepowered.asm.mixin.injection.At;
@@ -9,9 +11,12 @@
911
@Mixin(Render.class)
1012
public abstract class Mixin_OffsetRendering {
1113
@ModifyArg(method = "renderLivingLabel", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/renderer/GlStateManager;translate(FFF)V", ordinal = 0), index = 1)
12-
private float polynametag$modifyTranslateY(float original) {
14+
private float polynametag$modifyTranslateY(float original, @Local(argsOnly = true) Entity entity) {
1315
if (PolyNametagConfig.isEnabled()) {
1416
original += PolyNametagConfig.getHeightOffset();
17+
if (entity.isSneaking()) {
18+
original -= 0.5F;
19+
}
1520
}
1621

1722
return original;

src/main/java/org/polyfrost/polynametag/mixin/client/Mixin_ReplaceBackgroundRendering.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,11 @@ public abstract class Mixin_ReplaceBackgroundRendering {
5050
}
5151

5252
@WrapOperation(method = "renderLivingLabel", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/renderer/Tessellator;draw()V"))
53-
private void polynametag$replaceBackgroundRendering(Tessellator instance, Operation<Void> original, @Local(argsOnly = true) Entity entity) {
53+
private void polynametag$replaceBackgroundRendering(
54+
Tessellator instance,
55+
Operation<Void> original,
56+
@Local(argsOnly = true) Entity entity
57+
) {
5458
if (PolyNametagConfig.isEnabled()) {
5559
NametagRenderer.drawBackground(OmniMatrixStacks.create(), entity);
5660
} else {

src/main/java/org/polyfrost/polynametag/mixin/client/Mixin_ReplaceTextRendering.java

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,12 @@
22

33
import com.llamalad7.mixinextras.injector.wrapoperation.Operation;
44
import com.llamalad7.mixinextras.injector.wrapoperation.WrapOperation;
5+
import com.llamalad7.mixinextras.sugar.Local;
56
import dev.deftu.omnicore.api.client.render.stack.OmniMatrixStacks;
67
import dev.deftu.omnicore.api.color.OmniColor;
78
import net.minecraft.client.gui.FontRenderer;
89
import net.minecraft.client.renderer.entity.Render;
10+
import net.minecraft.entity.Entity;
911
import org.polyfrost.polynametag.client.NametagRenderer;
1012
import org.polyfrost.polynametag.client.PolyNametagConfig;
1113
import org.spongepowered.asm.mixin.Mixin;
@@ -14,11 +16,20 @@
1416
@Mixin(Render.class)
1517
public abstract class Mixin_ReplaceTextRendering {
1618
@WrapOperation(method = "renderLivingLabel", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/gui/FontRenderer;drawString(Ljava/lang/String;III)I"))
17-
private int polynametag$replaceTextRendering(FontRenderer instance, String text, int x, int y, int color, Operation<Integer> original) {
19+
private int polynametag$replaceTextRendering(
20+
FontRenderer instance,
21+
String text,
22+
int x,
23+
int y,
24+
int inColor,
25+
Operation<Integer> original,
26+
@Local(argsOnly = true) Entity entity
27+
) {
1828
if (PolyNametagConfig.isEnabled()) {
19-
return NametagRenderer.drawNametagString(OmniMatrixStacks.create(), text, x, y, new OmniColor(color));
29+
final OmniColor color = new OmniColor(inColor).withAlpha(entity.isSneaking() ? 32 : 255);
30+
return NametagRenderer.drawNametagString(OmniMatrixStacks.create(), text, x, y, color);
2031
} else {
21-
return original.call(instance, text, x, y, color);
32+
return original.call(instance, text, x, y, inColor);
2233
}
2334
}
2435
}

src/main/resources/mixins.polynametag.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
"client.Mixin_ApplyScaling",
1111
"client.Mixin_EnableSelfNametag",
1212
"client.Mixin_FixNametagRotation",
13+
"client.Mixin_FixSneakingNametag",
1314
"client.Mixin_OffsetRendering",
1415
"client.Mixin_ReplaceBackgroundRendering",
1516
"client.Mixin_ReplaceTextRendering",

versions/1.12.2-fabric/src/main/java/org/polyfrost/polynametag/mixin/client/Mixin_OffsetRendering.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
package org.polyfrost.polynametag.mixin.client;
22

3+
import com.llamalad7.mixinextras.sugar.Local;
34
import net.minecraft.client.render.entity.EntityRenderer;
5+
import net.minecraft.entity.Entity;
46
import org.polyfrost.polynametag.client.PolyNametagConfig;
57
import org.spongepowered.asm.mixin.Mixin;
68
import org.spongepowered.asm.mixin.injection.At;
@@ -9,9 +11,12 @@
911
@Mixin(EntityRenderer.class)
1012
public abstract class Mixin_OffsetRendering {
1113
@ModifyArg(method = "renderLabelIfPresent", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/render/GameRenderer;method_13427(Lnet/minecraft/client/font/TextRenderer;Ljava/lang/String;FFFIFFZZ)V"), index = 3)
12-
private float polynametag$modifyTranslateY(float original) {
14+
private float polynametag$modifyTranslateY(float original, @Local(argsOnly = true) Entity entity) {
1315
if (PolyNametagConfig.isEnabled()) {
1416
original += PolyNametagConfig.getHeightOffset();
17+
if (entity.isSneaking()) {
18+
original -= 0.5F;
19+
}
1520
}
1621

1722
return original;
Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,29 @@
11
package org.polyfrost.polynametag.mixin.client;
22

3-
import com.llamalad7.mixinextras.injector.wrapoperation.Operation;
4-
import com.llamalad7.mixinextras.injector.wrapoperation.WrapOperation;
53
import dev.deftu.omnicore.api.client.render.stack.OmniMatrixStacks;
64
import net.minecraft.client.render.entity.EntityRenderer;
75
import net.minecraft.entity.Entity;
86
import org.polyfrost.polynametag.client.NametagRenderer;
97
import org.polyfrost.polynametag.client.PolyNametagConfig;
108
import org.spongepowered.asm.mixin.Mixin;
119
import org.spongepowered.asm.mixin.injection.At;
10+
import org.spongepowered.asm.mixin.injection.Inject;
11+
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
1212

1313
@Mixin(EntityRenderer.class)
1414
public abstract class Mixin_ReplaceBackgroundRendering<T extends Entity> {
15-
@WrapOperation(method = "renderLabelIfPresent", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/render/GameRenderer;method_13427(Lnet/minecraft/client/font/TextRenderer;Ljava/lang/String;FFFIFFZZ)V", shift = At.Shift.BEFORE))
16-
private void polynametag$renderCustomBackground(T entity, String text, double x, double y, double z, int maxDistance, Operation<Void> original) {
15+
@Inject(method = "renderLabelIfPresent", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/render/GameRenderer;method_13427(Lnet/minecraft/client/font/TextRenderer;Ljava/lang/String;FFFIFFZZ)V", shift = At.Shift.BEFORE))
16+
private void polynametag$renderCustomBackground(
17+
T entity,
18+
String text,
19+
double x,
20+
double y,
21+
double z,
22+
int maxDistance,
23+
CallbackInfo ci
24+
) {
1725
if (PolyNametagConfig.isEnabled()) {
1826
NametagRenderer.drawBackground(OmniMatrixStacks.create(), entity);
19-
} else {
20-
original.call(entity, text, x, y, z, maxDistance);
2127
}
2228
}
2329
}
Lines changed: 33 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,52 @@
11
package org.polyfrost.polynametag.mixin.client;
22

3+
import com.llamalad7.mixinextras.injector.wrapoperation.Operation;
4+
import com.llamalad7.mixinextras.injector.wrapoperation.WrapOperation;
5+
import com.llamalad7.mixinextras.sugar.Local;
36
import dev.deftu.omnicore.api.client.render.stack.OmniMatrixStacks;
47
import dev.deftu.omnicore.api.color.OmniColor;
58
import dev.deftu.omnicore.api.color.OmniColors;
9+
import net.minecraft.client.font.TextRenderer;
610
import net.minecraft.client.render.entity.EntityRenderer;
711
import net.minecraft.entity.Entity;
812
import org.polyfrost.polynametag.client.NametagRenderer;
913
import org.polyfrost.polynametag.client.PolyNametagConfig;
1014
import org.spongepowered.asm.mixin.Mixin;
1115
import org.spongepowered.asm.mixin.injection.At;
12-
import org.spongepowered.asm.mixin.injection.Inject;
13-
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
1416

1517
@Mixin(EntityRenderer.class)
1618
public abstract class Mixin_ReplaceTextRendering<T extends Entity> {
17-
@Inject(method = "renderLabelIfPresent", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/render/GameRenderer;method_13427(Lnet/minecraft/client/font/TextRenderer;Ljava/lang/String;FFFIFFZZ)V"))
18-
private void polynametag$renderCustomText(T entity, String text, double x, double y, double z, int maxDistance, CallbackInfo ci) {
19+
@WrapOperation(method = "renderLabelIfPresent", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/render/GameRenderer;method_13427(Lnet/minecraft/client/font/TextRenderer;Ljava/lang/String;FFFIFFZZ)V"))
20+
private void polynametag$renderCustomText(
21+
TextRenderer textRenderer,
22+
String text,
23+
float x,
24+
float y,
25+
float z,
26+
int offset,
27+
float yaw,
28+
float pitch,
29+
boolean isThirdperson,
30+
boolean isSneaking,
31+
Operation<Void> original,
32+
@Local(argsOnly = true) Entity entity
33+
) {
1934
if (PolyNametagConfig.isEnabled()) {
2035
final OmniColor color = OmniColors.WHITE.withAlpha(entity.isSneaking() ? 32 : 255);
21-
NametagRenderer.drawNametagString(OmniMatrixStacks.create(), text, (float) x, (float) y, color);
36+
NametagRenderer.drawNametagString(OmniMatrixStacks.create(), text, x, y, color);
37+
} else {
38+
original.call(
39+
textRenderer,
40+
text,
41+
x,
42+
y,
43+
z,
44+
offset,
45+
yaw,
46+
pitch,
47+
isThirdperson,
48+
isSneaking
49+
);
2250
}
2351
}
2452
}

0 commit comments

Comments
 (0)