Skip to content
This repository was archived by the owner on Nov 28, 2025. It is now read-only.

Commit 82485e8

Browse files
committed
update NickHider
- fix various bugs - fix formatting for edited messages
1 parent 4fddb67 commit 82485e8

17 files changed

Lines changed: 328 additions & 226 deletions

File tree

1.16_combat-6/src/main/java/io/github/axolotlclient/mixin/PlayerEntityRendererMixin.java

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -22,31 +22,35 @@
2222

2323
package io.github.axolotlclient.mixin;
2424

25+
import com.llamalad7.mixinextras.injector.wrapoperation.Operation;
26+
import com.llamalad7.mixinextras.injector.wrapoperation.WrapOperation;
27+
import com.llamalad7.mixinextras.sugar.Local;
2528
import io.github.axolotlclient.AxolotlClient;
2629
import io.github.axolotlclient.modules.hypixel.nickhider.NickHider;
2730
import net.minecraft.client.MinecraftClient;
2831
import net.minecraft.client.network.AbstractClientPlayerEntity;
32+
import net.minecraft.client.render.VertexConsumerProvider;
2933
import net.minecraft.client.render.entity.PlayerEntityRenderer;
30-
import net.minecraft.text.LiteralText;
34+
import net.minecraft.client.util.math.MatrixStack;
35+
import net.minecraft.entity.Entity;
36+
import net.minecraft.text.Text;
3137
import org.spongepowered.asm.mixin.Mixin;
3238
import org.spongepowered.asm.mixin.injection.At;
33-
import org.spongepowered.asm.mixin.injection.ModifyArgs;
34-
import org.spongepowered.asm.mixin.injection.invoke.arg.Args;
3539

3640
@Mixin(PlayerEntityRenderer.class)
3741
public abstract class PlayerEntityRendererMixin {
3842

39-
@ModifyArgs(method = "renderLabelIfPresent(Lnet/minecraft/client/network/AbstractClientPlayerEntity;Lnet/minecraft/text/Text;Lnet/minecraft/client/util/math/MatrixStack;Lnet/minecraft/client/render/VertexConsumerProvider;I)V", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/render/entity/LivingEntityRenderer;renderLabelIfPresent(Lnet/minecraft/entity/Entity;Lnet/minecraft/text/Text;Lnet/minecraft/client/util/math/MatrixStack;Lnet/minecraft/client/render/VertexConsumerProvider;I)V"))
40-
public void axolotlclient$modifiyName(Args args) {
43+
@WrapOperation(method = "renderLabelIfPresent(Lnet/minecraft/client/network/AbstractClientPlayerEntity;Lnet/minecraft/text/Text;Lnet/minecraft/client/util/math/MatrixStack;Lnet/minecraft/client/render/VertexConsumerProvider;I)V", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/render/entity/LivingEntityRenderer;renderLabelIfPresent(Lnet/minecraft/entity/Entity;Lnet/minecraft/text/Text;Lnet/minecraft/client/util/math/MatrixStack;Lnet/minecraft/client/render/VertexConsumerProvider;I)V"))
44+
private void axolotlclient$modifiyName(PlayerEntityRenderer instance, Entity entity, Text text, MatrixStack stack, VertexConsumerProvider vertexConsumerProvider, int i, Operation<Void> original, @Local(argsOnly = true) AbstractClientPlayerEntity player) {
4145
if (AxolotlClient.CONFIG != null) {
42-
AbstractClientPlayerEntity player = args.get(0);
4346
if (player.getUuid() == MinecraftClient.getInstance().player.getUuid()
4447
&& NickHider.getInstance().hideOwnName.get()) {
45-
args.set(1, new LiteralText(NickHider.getInstance().hiddenNameSelf.get()));
48+
text = NickHider.getInstance().editComponent(text, player.getName().getString(), NickHider.getInstance().hiddenNameSelf.get());
4649
} else if (player.getUuid() != MinecraftClient.getInstance().player.getUuid()
4750
&& NickHider.getInstance().hideOtherNames.get()) {
48-
args.set(1, new LiteralText(NickHider.getInstance().hiddenNameOthers.get()));
51+
text = NickHider.getInstance().editComponent(text, player.getName().getString(), NickHider.getInstance().hiddenNameOthers.get());
4952
}
5053
}
54+
original.call(instance, entity, text, stack, vertexConsumerProvider, i);
5155
}
5256
}

1.16_combat-6/src/main/java/io/github/axolotlclient/mixin/PlayerListHudMixin.java

Lines changed: 14 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,8 @@
2424

2525
import java.util.List;
2626

27+
import com.llamalad7.mixinextras.injector.wrapmethod.WrapMethod;
28+
import com.llamalad7.mixinextras.injector.wrapoperation.Operation;
2729
import com.mojang.authlib.GameProfile;
2830
import com.mojang.blaze3d.systems.RenderSystem;
2931
import io.github.axolotlclient.AxolotlClient;
@@ -47,8 +49,6 @@
4749
import net.minecraft.network.ClientConnection;
4850
import net.minecraft.scoreboard.Scoreboard;
4951
import net.minecraft.scoreboard.ScoreboardObjective;
50-
import net.minecraft.text.LiteralText;
51-
import net.minecraft.text.MutableText;
5252
import net.minecraft.text.StringVisitable;
5353
import net.minecraft.text.Text;
5454
import net.minecraft.util.Formatting;
@@ -75,21 +75,21 @@ public abstract class PlayerListHudMixin {
7575
@Final
7676
private MinecraftClient client;
7777

78-
@Inject(method = "getPlayerName", at = @At("HEAD"), cancellable = true)
79-
public void axolotlclient$nickHider(PlayerListEntry playerEntry, CallbackInfoReturnable<Text> cir) {
80-
assert MinecraftClient.getInstance().player != null;
81-
if (playerEntry.getProfile().equals(MinecraftClient.getInstance().player.getGameProfile())
82-
&& NickHider.getInstance().hideOwnName.get()) {
83-
cir.setReturnValue(this.method_27538(playerEntry, new LiteralText(NickHider.getInstance().hiddenNameSelf.get())));
84-
} else if (!playerEntry.getProfile().equals(MinecraftClient.getInstance().player.getGameProfile())
85-
&& NickHider.getInstance().hideOtherNames.get()) {
86-
cir.setReturnValue(this.method_27538(playerEntry, new LiteralText(NickHider.getInstance().hiddenNameOthers.get())));
78+
@WrapMethod(method = "getPlayerName")
79+
private Text nickHider(PlayerListEntry entry, Operation<Text> original) {
80+
var orig = original.call(entry);
81+
if (client.player == null) {
82+
return orig;
83+
}
84+
if (entry.getProfile().equals(client.player.getGameProfile()) && NickHider.getInstance().hideOwnName.get()) {
85+
return NickHider.getInstance().editComponent(orig, entry.getProfile().getName(), NickHider.getInstance().hiddenNameSelf.get());
86+
} else if (!entry.getProfile().equals(client.player.getGameProfile()) &&
87+
NickHider.getInstance().hideOtherNames.get()) {
88+
return NickHider.getInstance().editComponent(orig, entry.getProfile().getName(), NickHider.getInstance().hiddenNameOthers.get());
8789
}
90+
return orig;
8891
}
8992

90-
@Shadow
91-
protected abstract Text method_27538(PlayerListEntry par1, MutableText par2);
92-
9393
@ModifyArg(method = "render", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/gui/hud/PlayerListHud;getPlayerName(Lnet/minecraft/client/network/PlayerListEntry;)Lnet/minecraft/text/Text;"))
9494
public PlayerListEntry axolotlclient$getPlayer(PlayerListEntry playerEntry) {
9595
axolotlclient$profile = playerEntry.getProfile();
@@ -117,17 +117,6 @@ public abstract class PlayerListHudMixin {
117117
return instance.drawWithShadow(matrices, text, x, y, color);
118118
}
119119

120-
@ModifyArg(method = "getPlayerName", at = @At(value = "INVOKE", target = "Lnet/minecraft/scoreboard/Team;modifyText(Lnet/minecraft/scoreboard/AbstractTeam;Lnet/minecraft/text/Text;)Lnet/minecraft/text/MutableText;"), index = 1)
121-
public Text axolotlclient$hideNames(Text par2) {
122-
if (NickHider.getInstance().hideOwnName.get()) {
123-
return new LiteralText(NickHider.getInstance().hiddenNameSelf.get());
124-
}
125-
if (NickHider.getInstance().hideOtherNames.get()) {
126-
return new LiteralText(NickHider.getInstance().hiddenNameOthers.get());
127-
}
128-
return par2;
129-
}
130-
131120
@Inject(method = "renderLatencyIcon", at = @At("HEAD"), cancellable = true)
132121
private void axolotlclient$numericalPing(MatrixStack matrices, int width, int x, int y, PlayerListEntry entry, CallbackInfo ci) {
133122
if (BedwarsMod.getInstance().isEnabled() && BedwarsMod.getInstance().blockLatencyIcon() && (BedwarsMod.getInstance().isWaiting() || BedwarsMod.getInstance().inGame())) {

1.16_combat-6/src/main/java/io/github/axolotlclient/modules/hypixel/nickhider/NickHider.java

Lines changed: 43 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -22,14 +22,21 @@
2222

2323
package io.github.axolotlclient.modules.hypixel.nickhider;
2424

25+
import java.util.ArrayList;
26+
import java.util.List;
27+
import java.util.Optional;
28+
2529
import io.github.axolotlclient.AxolotlClientConfig.api.options.OptionCategory;
2630
import io.github.axolotlclient.AxolotlClientConfig.impl.options.BooleanOption;
2731
import io.github.axolotlclient.AxolotlClientConfig.impl.options.StringOption;
32+
import io.github.axolotlclient.api.util.BiContainer;
2833
import io.github.axolotlclient.modules.hypixel.AbstractHypixelMod;
2934
import lombok.Getter;
3035
import net.minecraft.client.MinecraftClient;
3136
import net.minecraft.client.network.AbstractClientPlayerEntity;
3237
import net.minecraft.text.LiteralText;
38+
import net.minecraft.text.MutableText;
39+
import net.minecraft.text.Style;
3340
import net.minecraft.text.Text;
3441

3542
public class NickHider implements AbstractHypixelMod {
@@ -63,21 +70,51 @@ public Text editMessage(Text message) {
6370
if (hideOwnName.get() || hideOtherNames.get()) {
6471
String msg = message.getString();
6572

66-
String playerName = MinecraftClient.getInstance().player.getName().getString();
67-
if (NickHider.Instance.hideOwnName.get() && msg.contains(playerName)) {
68-
msg = msg.replaceAll(playerName, NickHider.Instance.hiddenNameSelf.get());
73+
List<BiContainer<String, String>> replacements = new ArrayList<>();
74+
if (MinecraftClient.getInstance().player != null) {
75+
String playerName = MinecraftClient.getInstance().player.getName().getString();
76+
if (hideOwnName.get() && msg.contains(playerName)) {
77+
replacements.add(BiContainer.of(playerName, hiddenNameSelf.get()));
78+
}
6979
}
7080

71-
if (NickHider.Instance.hideOtherNames.get()) {
81+
if (hideOtherNames.get() && MinecraftClient.getInstance().world != null) {
7282
for (AbstractClientPlayerEntity player : MinecraftClient.getInstance().world.getPlayers()) {
83+
if (player == MinecraftClient.getInstance().player) {
84+
continue;
85+
}
7386
if (msg.contains(player.getName().getString())) {
74-
msg = msg.replaceAll(player.getName().getString(), NickHider.Instance.hiddenNameOthers.get());
87+
replacements.add(BiContainer.of(player.getName().getString(), hiddenNameOthers.get()));
7588
}
7689
}
7790
}
7891

79-
return new LiteralText(msg).copy().setStyle(message.getStyle());
92+
if (!replacements.isEmpty()) {
93+
MutableText editedMessage = LiteralText.EMPTY.copy();
94+
editComponent(message, replacements, editedMessage);
95+
return editedMessage;
96+
}
8097
}
8198
return message;
8299
}
100+
101+
public Text editComponent(Text c, String find, String replace) {
102+
MutableText edited = LiteralText.EMPTY.copy();
103+
c.visit((style, string) -> {
104+
edited.append(new LiteralText(string.replace(find, replace)).setStyle(style));
105+
return Optional.empty();
106+
}, Style.EMPTY);
107+
return edited;
108+
}
109+
110+
private void editComponent(Text component, List<BiContainer<String, String>> replacements, MutableText edited) {
111+
component.visit((style, string) -> {
112+
String edit = string;
113+
for (var entry : replacements) {
114+
edit = edit.replace(entry.getLeft(), entry.getRight());
115+
}
116+
edited.append(new LiteralText(edit).setStyle(style));
117+
return Optional.empty();
118+
}, Style.EMPTY);
119+
}
83120
}

1.20/src/main/java/io/github/axolotlclient/mixin/PlayerEntityRendererMixin.java

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -22,31 +22,35 @@
2222

2323
package io.github.axolotlclient.mixin;
2424

25+
import com.llamalad7.mixinextras.injector.wrapoperation.Operation;
26+
import com.llamalad7.mixinextras.injector.wrapoperation.WrapOperation;
27+
import com.llamalad7.mixinextras.sugar.Local;
2528
import io.github.axolotlclient.AxolotlClient;
2629
import io.github.axolotlclient.modules.hypixel.nickhider.NickHider;
2730
import net.minecraft.client.MinecraftClient;
2831
import net.minecraft.client.network.AbstractClientPlayerEntity;
32+
import net.minecraft.client.render.VertexConsumerProvider;
2933
import net.minecraft.client.render.entity.PlayerEntityRenderer;
34+
import net.minecraft.client.util.math.MatrixStack;
35+
import net.minecraft.entity.Entity;
3036
import net.minecraft.text.Text;
3137
import org.spongepowered.asm.mixin.Mixin;
3238
import org.spongepowered.asm.mixin.injection.At;
33-
import org.spongepowered.asm.mixin.injection.ModifyArgs;
34-
import org.spongepowered.asm.mixin.injection.invoke.arg.Args;
3539

3640
@Mixin(PlayerEntityRenderer.class)
3741
public abstract class PlayerEntityRendererMixin {
3842

39-
@ModifyArgs(method = "renderLabelIfPresent(Lnet/minecraft/client/network/AbstractClientPlayerEntity;Lnet/minecraft/text/Text;Lnet/minecraft/client/util/math/MatrixStack;Lnet/minecraft/client/render/VertexConsumerProvider;I)V", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/render/entity/LivingEntityRenderer;renderLabelIfPresent(Lnet/minecraft/entity/Entity;Lnet/minecraft/text/Text;Lnet/minecraft/client/util/math/MatrixStack;Lnet/minecraft/client/render/VertexConsumerProvider;I)V"))
40-
private void axolotlclient$modifiyName(Args args) {
43+
@WrapOperation(method = "renderLabelIfPresent(Lnet/minecraft/client/network/AbstractClientPlayerEntity;Lnet/minecraft/text/Text;Lnet/minecraft/client/util/math/MatrixStack;Lnet/minecraft/client/render/VertexConsumerProvider;I)V", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/render/entity/LivingEntityRenderer;renderLabelIfPresent(Lnet/minecraft/entity/Entity;Lnet/minecraft/text/Text;Lnet/minecraft/client/util/math/MatrixStack;Lnet/minecraft/client/render/VertexConsumerProvider;I)V"))
44+
private void axolotlclient$modifiyName(PlayerEntityRenderer instance, Entity entity, Text text, MatrixStack stack, VertexConsumerProvider vertexConsumerProvider, int i, Operation<Void> original, @Local(argsOnly = true) AbstractClientPlayerEntity player) {
4145
if (AxolotlClient.CONFIG != null) {
42-
AbstractClientPlayerEntity player = args.get(0);
4346
if (player.getUuid() == MinecraftClient.getInstance().player.getUuid()
4447
&& NickHider.getInstance().hideOwnName.get()) {
45-
args.set(1, Text.literal(NickHider.getInstance().hiddenNameSelf.get()));
48+
text = NickHider.getInstance().editComponent(text, player.getName().getString(), NickHider.getInstance().hiddenNameSelf.get());
4649
} else if (player.getUuid() != MinecraftClient.getInstance().player.getUuid()
4750
&& NickHider.getInstance().hideOtherNames.get()) {
48-
args.set(1, Text.literal(NickHider.getInstance().hiddenNameOthers.get()));
51+
text = NickHider.getInstance().editComponent(text, player.getName().getString(), NickHider.getInstance().hiddenNameOthers.get());
4952
}
5053
}
54+
original.call(instance, entity, text, stack, vertexConsumerProvider, i);
5155
}
5256
}

1.20/src/main/java/io/github/axolotlclient/mixin/PlayerListHudMixin.java

Lines changed: 14 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,8 @@
2525
import java.util.List;
2626
import java.util.UUID;
2727

28+
import com.llamalad7.mixinextras.injector.wrapmethod.WrapMethod;
29+
import com.llamalad7.mixinextras.injector.wrapoperation.Operation;
2830
import com.llamalad7.mixinextras.sugar.Local;
2931
import com.mojang.authlib.GameProfile;
3032
import com.mojang.blaze3d.systems.RenderSystem;
@@ -45,7 +47,6 @@
4547
import net.minecraft.network.ClientConnection;
4648
import net.minecraft.scoreboard.Scoreboard;
4749
import net.minecraft.scoreboard.ScoreboardObjective;
48-
import net.minecraft.text.MutableText;
4950
import net.minecraft.text.StringVisitable;
5051
import net.minecraft.text.Text;
5152
import net.minecraft.util.Formatting;
@@ -71,21 +72,21 @@ public abstract class PlayerListHudMixin {
7172
@Final
7273
private MinecraftClient client;
7374

74-
@Inject(method = "getPlayerName", at = @At("HEAD"), cancellable = true)
75-
private void axolotlclient$nickHider(PlayerListEntry playerEntry, CallbackInfoReturnable<Text> cir) {
76-
assert MinecraftClient.getInstance().player != null;
77-
if (playerEntry.getProfile().equals(MinecraftClient.getInstance().player.getGameProfile())
78-
&& NickHider.getInstance().hideOwnName.get()) {
79-
cir.setReturnValue(this.applyGameModeFormatting(playerEntry, Text.literal(NickHider.getInstance().hiddenNameSelf.get())));
80-
} else if (!playerEntry.getProfile().equals(MinecraftClient.getInstance().player.getGameProfile())
81-
&& NickHider.getInstance().hideOtherNames.get()) {
82-
cir.setReturnValue(this.applyGameModeFormatting(playerEntry, Text.literal(NickHider.getInstance().hiddenNameOthers.get())));
75+
@WrapMethod(method = "getPlayerName")
76+
private Text nickHider(PlayerListEntry entry, Operation<Text> original) {
77+
var orig = original.call(entry);
78+
if (client.player == null) {
79+
return orig;
80+
}
81+
if (entry.getProfile().equals(client.player.getGameProfile()) && NickHider.getInstance().hideOwnName.get()) {
82+
return NickHider.getInstance().editComponent(orig, entry.getProfile().getName(), NickHider.getInstance().hiddenNameSelf.get());
83+
} else if (!entry.getProfile().equals(client.player.getGameProfile()) &&
84+
NickHider.getInstance().hideOtherNames.get()) {
85+
return NickHider.getInstance().editComponent(orig, entry.getProfile().getName(), NickHider.getInstance().hiddenNameOthers.get());
8386
}
87+
return orig;
8488
}
8589

86-
@Shadow
87-
protected abstract Text applyGameModeFormatting(PlayerListEntry entry, MutableText name);
88-
8990
@ModifyArg(method = "render", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/gui/hud/PlayerListHud;getPlayerName(Lnet/minecraft/client/network/PlayerListEntry;)Lnet/minecraft/text/Text;"))
9091
private PlayerListEntry axolotlclient$getPlayer(PlayerListEntry playerEntry) {
9192
axolotlclient$profile = playerEntry.getProfile();
@@ -112,17 +113,6 @@ public abstract class PlayerListHudMixin {
112113
return instance.drawShadowedText(renderer, text, x, y, color);
113114
}
114115

115-
@ModifyArg(method = "getPlayerName", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/gui/hud/PlayerListHud;applyGameModeFormatting(Lnet/minecraft/client/network/PlayerListEntry;Lnet/minecraft/text/MutableText;)Lnet/minecraft/text/Text;"), index = 1)
116-
private MutableText axolotlclient$hideNames(MutableText name) {
117-
if (NickHider.getInstance().hideOwnName.get()) {
118-
return Text.literal(NickHider.getInstance().hiddenNameSelf.get());
119-
}
120-
if (NickHider.getInstance().hideOtherNames.get()) {
121-
return Text.literal(NickHider.getInstance().hiddenNameOthers.get());
122-
}
123-
return name;
124-
}
125-
126116
@Inject(method = "renderLatencyIcon", at = @At("HEAD"), cancellable = true)
127117
private void axolotlclient$numericalPing(GuiGraphics graphics, int width, int x, int y, PlayerListEntry entry, CallbackInfo ci) {
128118
if (BedwarsMod.getInstance().isEnabled() && BedwarsMod.getInstance().blockLatencyIcon() && (BedwarsMod.getInstance().isWaiting() || BedwarsMod.getInstance().inGame())) {

0 commit comments

Comments
 (0)