fix: viewable rule updating fot display name

This commit is contained in:
Andrey Terentev 2025-03-17 01:14:23 +07:00
parent ba3b087024
commit 0f86d64967

View File

@ -25,6 +25,7 @@ import java.util.Map;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.function.Predicate;
public class Human extends EntityCreature {
@ -40,6 +41,7 @@ public class Human extends EntityCreature {
private final PlayerInfoRemovePacket removePacket;
private final Team team;
private Entity displayNameEntity;
private Predicate<Player> lastViewableRule;
public Human(String name, PlayerSkin skin) {
this(Component.text(name, NamedTextColor.YELLOW), skin);
@ -107,6 +109,18 @@ public class Human extends EntityCreature {
super.updateOldViewer(player);
}
@Override
public void updateViewableRule() {
super.updateViewableRule();
if (displayNameEntity != null) displayNameEntity.updateViewableRule();
}
@Override
public void updateViewableRule(@Nullable Predicate<Player> predicate) {
super.updateViewableRule(lastViewableRule = predicate);
if (displayNameEntity != null) displayNameEntity.updateViewableRule(predicate);
}
private Team pickTeam() {
return npcTeams.computeIfAbsent(teamColor.asHexString(), $ -> MinecraftServer.getTeamManager()
.createBuilder("NPC_r%s_g%s_b%s".formatted(teamColor.red(), teamColor.green(), teamColor.blue()))
@ -123,6 +137,7 @@ public class Human extends EntityCreature {
meta.setText(name);
meta.setHasNoGravity(true);
meta.setBillboardRenderConstraints(AbstractDisplayMeta.BillboardConstraints.VERTICAL);
if (lastViewableRule != null) displayNameEntity.updateViewableRule(lastViewableRule);
displayNameEntity.setInstance(instance, getPosition().add(displayNamePositionOffset));
}
return displayNameEntity;