From 0f86d64967fadc67a51366d381cbd54d16d961dd Mon Sep 17 00:00:00 2001 From: ScarletRedMan Date: Mon, 17 Mar 2025 01:14:23 +0700 Subject: [PATCH] fix: viewable rule updating fot display name --- .../ru/dragonestia/msb3/api/entity/Human.java | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/api/src/main/java/ru/dragonestia/msb3/api/entity/Human.java b/api/src/main/java/ru/dragonestia/msb3/api/entity/Human.java index 8261ed5..c0e9286 100644 --- a/api/src/main/java/ru/dragonestia/msb3/api/entity/Human.java +++ b/api/src/main/java/ru/dragonestia/msb3/api/entity/Human.java @@ -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 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 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;