Skip to content

Commit 5ead8fa

Browse files
committed
Fix 1.16.5 building
1 parent 7e3e406 commit 5ead8fa

File tree

11 files changed

+297
-4
lines changed

11 files changed

+297
-4
lines changed

src/main/java/org/polyfrost/polynametag/mixin/client/essential/Mixin_EssentialIndicatorCompatibility.java

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,9 @@
99
import org.spongepowered.asm.mixin.Pseudo;
1010
import org.spongepowered.asm.mixin.injection.At;
1111
import org.spongepowered.asm.mixin.injection.Coerce;
12+
import org.spongepowered.asm.mixin.injection.Inject;
1213
import org.spongepowered.asm.mixin.injection.ModifyArgs;
14+
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
1315
import org.spongepowered.asm.mixin.injection.invoke.arg.Args;
1416

1517
@Pseudo
@@ -24,8 +26,10 @@ public abstract class Mixin_EssentialIndicatorCompatibility {
2426
}
2527

2628
@Dynamic("Essential")
27-
@WrapWithCondition(method = "drawNametagIndicator", at = @At("HEAD"))
28-
private static boolean skip(UMatrixStack matrixStack, @Coerce Object entity, String str, int light) {
29-
return !PolyNametagConfig.isEnabled() || !NametagRenderer.INSTANCE.isDrawingIndicator();
30-
}
29+
@Inject(method = "drawNametagIndicator", at = @At("HEAD"), cancellable = true)
30+
private static void skip(UMatrixStack matrixStack, @Coerce Object entity, String str, int light, CallbackInfo ci) {
31+
if (PolyNametagConfig.isEnabled() && NametagRenderer.INSTANCE.isDrawingIndicator()) {
32+
ci.cancel();
33+
}
34+
}
3135
}
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.render.entity.LivingEntityRenderer;
6+
import net.minecraft.entity.LivingEntity;
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(LivingEntityRenderer.class)
12+
public abstract class Mixin_FixSneakingNametag {
13+
@WrapOperation(method = "hasLabel(Lnet/minecraft/entity/LivingEntity;)Z", at = @At(value = "INVOKE", target = "Lnet/minecraft/entity/LivingEntity;isSneaky()Z"))
14+
private boolean polynametag$showCustomNametagWhilstSneaking(LivingEntity instance, Operation<Boolean> original) {
15+
if (PolyNametagConfig.isEnabled()) {
16+
return false;
17+
} else {
18+
return original.call(instance);
19+
}
20+
}
21+
}
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
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 dev.deftu.omnicore.api.client.OmniClient;
6+
import dev.deftu.omnicore.api.client.screen.OmniScreens;
7+
import net.minecraft.client.gui.screen.ingame.AbstractInventoryScreen;
8+
import net.minecraft.client.render.entity.EntityRenderDispatcher;
9+
import net.minecraft.client.render.entity.EntityRenderer;
10+
import net.minecraft.entity.Entity;
11+
import org.polyfrost.polynametag.client.PolyNametagConfig;
12+
import org.spongepowered.asm.mixin.Mixin;
13+
import org.spongepowered.asm.mixin.injection.At;
14+
15+
@Mixin(EntityRenderer.class)
16+
public abstract class Mixin_ShowInInventory<T extends Entity> {
17+
@WrapOperation(method = "renderLabelIfPresent", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/render/entity/EntityRenderDispatcher;getSquaredDistanceToCamera(Lnet/minecraft/entity/Entity;)D"))
18+
private double polynametag$hideNametagInInventory(EntityRenderDispatcher instance, Entity entity, Operation<Double> original) {
19+
if (PolyNametagConfig.isEnabled() &&
20+
!PolyNametagConfig.isShowInInventory() &&
21+
OmniScreens.getCurrentScreen() instanceof AbstractInventoryScreen &&
22+
entity == OmniClient.getPlayer()) {
23+
return Integer.MAX_VALUE;
24+
} else {
25+
return original.call(instance, entity);
26+
}
27+
}
28+
}
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
package java.org.polyfrost.polynametag.mixin.client;
2+
3+
import net.minecraft.client.renderer.entity.EntityRenderer;
4+
import org.polyfrost.polynametag.client.PolyNametagConfig;
5+
import org.spongepowered.asm.mixin.Mixin;
6+
import org.spongepowered.asm.mixin.injection.At;
7+
import org.spongepowered.asm.mixin.injection.ModifyArgs;
8+
import org.spongepowered.asm.mixin.injection.invoke.arg.Args;
9+
10+
@Mixin(EntityRenderer.class)
11+
public abstract class Mixin_ApplyScaling {
12+
@ModifyArgs(method = "renderNameTag", at = @At(value = "INVOKE", target = "Lcom/mojang/blaze3d/vertex/PoseStack;scale(FFF)V"))
13+
private void polynametag$applyScaling(Args args) {
14+
if (PolyNametagConfig.isEnabled()) {
15+
final float scale = PolyNametagConfig.getScale();
16+
args.set(0, ((float) args.get(0)) * scale);
17+
args.set(1, ((float) args.get(1)) * scale);
18+
args.set(2, ((float) args.get(2)) * scale);
19+
}
20+
}
21+
}
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
package java.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.Minecraft;
6+
import net.minecraft.client.renderer.entity.EntityRenderDispatcher;
7+
import net.minecraft.client.renderer.entity.LivingEntityRenderer;
8+
import net.minecraft.world.entity.Entity;
9+
import org.polyfrost.polynametag.client.PolyNametagConfig;
10+
import org.spongepowered.asm.mixin.Mixin;
11+
import org.spongepowered.asm.mixin.injection.At;
12+
13+
@Mixin(LivingEntityRenderer.class)
14+
public abstract class Mixin_EnableSelfNametag {
15+
@WrapOperation(method = "shouldShowName(Lnet/minecraft/world/entity/LivingEntity;)Z", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/Minecraft;getCameraEntity()Lnet/minecraft/world/entity/Entity;"))
16+
private Entity polynametag$enableSelfNametag(Minecraft instance, Operation<Entity> original) {
17+
if (PolyNametagConfig.isEnabled() && PolyNametagConfig.isShowOwnNametag()) {
18+
return null;
19+
} else {
20+
return original.call(instance);
21+
}
22+
}
23+
}
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
package java.org.polyfrost.polynametag.mixin.client;
2+
3+
import net.minecraft.client.renderer.entity.EntityRenderer;
4+
import org.spongepowered.asm.mixin.Mixin;
5+
6+
@Mixin(EntityRenderer.class)
7+
public abstract class Mixin_FixNametagRotation {
8+
// DEAD CODE
9+
// @ModifyArg(method = "renderNameTag", at = @At(value = "FIELD", target = "Lnet/minecraft/client/renderer/entity/EntityRenderDispatcher;playerViewY:F"))
10+
// private float polynametag$fixNametagRotation(float yaw) {
11+
// if (PolyNametagConfig.isEnabled() && OmniPerspective.getCurrentPerspective() == OmniPerspective.THIRD_PERSON_FRONT) {
12+
// yaw *= -1.0F;
13+
// }
14+
//
15+
// return yaw;
16+
// }
17+
}
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
package java.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.EntityRenderer;
6+
import net.minecraft.client.renderer.entity.LivingEntityRenderer;
7+
import net.minecraft.world.entity.Entity;
8+
import net.minecraft.world.entity.LivingEntity;
9+
import org.polyfrost.polynametag.client.PolyNametagConfig;
10+
import org.spongepowered.asm.mixin.Mixin;
11+
import org.spongepowered.asm.mixin.injection.At;
12+
13+
@Mixin(EntityRenderer.class)
14+
public abstract class Mixin_FixSneakingNametag {
15+
@WrapOperation(method = "renderNameTag", at = @At(value = "INVOKE", target = "Lnet/minecraft/world/entity/Entity;isDiscrete()Z"))
16+
private boolean polynametag$showCustomNametagWhilstSneaking(Entity instance, Operation<Boolean> original) {
17+
if (PolyNametagConfig.isEnabled()) {
18+
return false;
19+
} else {
20+
return original.call(instance);
21+
}
22+
}
23+
}
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
package java.org.polyfrost.polynametag.mixin.client;
2+
3+
import com.llamalad7.mixinextras.sugar.Local;
4+
import net.minecraft.client.renderer.entity.EntityRenderer;
5+
import net.minecraft.world.entity.Entity;
6+
import org.polyfrost.polynametag.client.PolyNametagConfig;
7+
import org.spongepowered.asm.mixin.Mixin;
8+
import org.spongepowered.asm.mixin.injection.At;
9+
import org.spongepowered.asm.mixin.injection.ModifyArg;
10+
11+
@Mixin(EntityRenderer.class)
12+
public abstract class Mixin_OffsetRendering {
13+
@ModifyArg(method = "renderNameTag", at = @At(value = "INVOKE", target = "Lcom/mojang/blaze3d/vertex/PoseStack;translate(DDD)V"), index = 1)
14+
private double polynametag$modifyTranslateY(double original, @Local(argsOnly = true) Entity entity) {
15+
if (PolyNametagConfig.isEnabled()) {
16+
original += PolyNametagConfig.getHeightOffset();
17+
if (entity.isCrouching()) {
18+
original -= 0.5F;
19+
}
20+
}
21+
22+
return original;
23+
}
24+
}
Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
package java.org.polyfrost.polynametag.mixin.client;
2+
3+
import com.llamalad7.mixinextras.injector.wrapoperation.Operation;
4+
import com.llamalad7.mixinextras.injector.wrapoperation.WrapOperation;
5+
import com.llamalad7.mixinextras.sugar.Local;
6+
import com.mojang.blaze3d.vertex.PoseStack;
7+
import com.mojang.math.Matrix4f;
8+
import dev.deftu.omnicore.api.client.render.stack.OmniMatrixStacks;
9+
import net.minecraft.client.gui.Font;
10+
import net.minecraft.client.renderer.MultiBufferSource;
11+
import net.minecraft.client.renderer.entity.EntityRenderer;
12+
import net.minecraft.network.chat.Component;
13+
import net.minecraft.world.entity.Entity;
14+
import org.polyfrost.polynametag.client.NametagRenderer;
15+
import org.polyfrost.polynametag.client.PolyNametagConfig;
16+
import org.spongepowered.asm.mixin.Mixin;
17+
import org.spongepowered.asm.mixin.injection.At;
18+
import org.spongepowered.asm.mixin.injection.Inject;
19+
import org.spongepowered.asm.mixin.injection.Redirect;
20+
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
21+
22+
@Mixin(EntityRenderer.class)
23+
public abstract class Mixin_ReplaceBackgroundRendering<T extends Entity> {
24+
@WrapOperation(method = "renderNameTag", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/gui/Font;drawInBatch(Lnet/minecraft/network/chat/Component;FFIZLcom/mojang/math/Matrix4f;Lnet/minecraft/client/renderer/MultiBufferSource;ZII)I", ordinal = 0))
25+
private int polynametag$renderCustomBackground(
26+
Font textRenderer,
27+
Component text,
28+
float x,
29+
float y,
30+
int offset,
31+
boolean shadow,
32+
Matrix4f matrix4f,
33+
MultiBufferSource multiBufferSource,
34+
boolean seeThrough,
35+
int yaw,
36+
int pitch,
37+
Operation<Integer> original,
38+
@Local(argsOnly = true) Entity entity
39+
) {
40+
if (PolyNametagConfig.isEnabled()) {
41+
NametagRenderer.drawBackground(OmniMatrixStacks.create(), entity);
42+
return 0;
43+
} else {
44+
return original.call(textRenderer, text, x, y, offset, shadow, matrix4f, multiBufferSource, seeThrough, yaw, pitch);
45+
}
46+
}
47+
}
Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
package java.org.polyfrost.polynametag.mixin.client;
2+
3+
import com.llamalad7.mixinextras.injector.wrapoperation.Operation;
4+
import com.llamalad7.mixinextras.injector.wrapoperation.WrapOperation;
5+
import com.llamalad7.mixinextras.sugar.Local;
6+
import com.mojang.math.Matrix4f;
7+
import dev.deftu.omnicore.api.client.render.stack.OmniMatrixStacks;
8+
import dev.deftu.omnicore.api.color.ColorFormat;
9+
import dev.deftu.omnicore.api.color.OmniColor;
10+
import net.minecraft.client.gui.Font;
11+
import net.minecraft.client.renderer.MultiBufferSource;
12+
import net.minecraft.client.renderer.entity.EntityRenderer;
13+
import net.minecraft.network.chat.Component;
14+
import net.minecraft.world.entity.Entity;
15+
import org.polyfrost.polynametag.client.NametagRenderer;
16+
import org.polyfrost.polynametag.client.PolyNametagConfig;
17+
import org.spongepowered.asm.mixin.Mixin;
18+
import org.spongepowered.asm.mixin.injection.At;
19+
20+
@Mixin(EntityRenderer.class)
21+
public abstract class Mixin_ReplaceTextRendering<T extends Entity> {
22+
@WrapOperation(method = "renderNameTag", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/gui/Font;drawInBatch(Lnet/minecraft/network/chat/Component;FFIZLcom/mojang/math/Matrix4f;Lnet/minecraft/client/renderer/MultiBufferSource;ZII)I", ordinal = 1))
23+
private int polynametag$renderCustomText(
24+
Font textRenderer,
25+
Component text,
26+
float x,
27+
float y,
28+
int offset,
29+
boolean shadow,
30+
Matrix4f matrix4f,
31+
MultiBufferSource multiBufferSource,
32+
boolean seeThrough,
33+
int yaw,
34+
int pitch,
35+
Operation<Integer> original,
36+
@Local(argsOnly = true) Entity entity
37+
) {
38+
if (PolyNametagConfig.isEnabled()) {
39+
final OmniColor color = new OmniColor(ColorFormat.ARGB, PolyNametagConfig.INSTANCE.getTextColor().getArgb()).withAlpha(entity.isCrouching() ? 32 : 255);
40+
return NametagRenderer.drawNametagString(OmniMatrixStacks.create(), text.getString(), x, y, color);
41+
} else {
42+
return original.call(
43+
textRenderer,
44+
text,
45+
x,
46+
y,
47+
offset,
48+
shadow,
49+
matrix4f,
50+
multiBufferSource,
51+
seeThrough,
52+
yaw,
53+
pitch
54+
);
55+
}
56+
}
57+
}

0 commit comments

Comments
 (0)