From 1e368e71a50b9f1e06f28d4776874ffef6a8086a Mon Sep 17 00:00:00 2001 From: fullwall Date: Mon, 15 Apr 2024 11:14:24 +0800 Subject: [PATCH] Fix two bugs with new hologram trait impl --- .../net/citizensnpcs/trait/HologramTrait.java | 22 ++++++++++++------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/main/src/main/java/net/citizensnpcs/trait/HologramTrait.java b/main/src/main/java/net/citizensnpcs/trait/HologramTrait.java index 5bf624812..63661124b 100644 --- a/main/src/main/java/net/citizensnpcs/trait/HologramTrait.java +++ b/main/src/main/java/net/citizensnpcs/trait/HologramTrait.java @@ -48,7 +48,7 @@ import net.citizensnpcs.util.Util; * Manages a set of holograms attached to the NPC. Holograms are lines of text or items that follow the NPC at * some offset (typically vertically offset). */ -// TODO: cleanup +// TODO: cleanup: make HologramRenderer static, possibly make it singleton-friendly? @TraitName("hologramtrait") public class HologramTrait extends Trait { private Location currentLoc; @@ -97,6 +97,11 @@ public class HologramTrait extends Trait { reloadLineHolograms(); } + public void addTemporaryLine(String text, int ticks, HologramRenderer hr) { + lines.add(new HologramLine(text, false, ticks, hr)); + reloadLineHolograms(); + } + /** * Clears all hologram lines */ @@ -395,7 +400,7 @@ public class HologramTrait extends Trait { } public HologramLine(String text, boolean persist, int ticks, HologramRenderer hr) { - if (ITEM_MATCHER.matcher(text).matches()) { + if (ITEM_MATCHER.matcher(text).find()) { mb = 0.21; mt = 0.07; hr = new ItemRenderer(); @@ -420,7 +425,7 @@ public class HologramTrait extends Trait { public void setText(String text) { this.text = text == null ? "" : text; - if (ITEM_MATCHER.matcher(text).matches()) { + if (ITEM_MATCHER.matcher(text).find()) { renderer.destroy(); mb = 0.21; mt = 0.07; @@ -479,6 +484,7 @@ public class HologramTrait extends Trait { @Override protected NPC createNPC(Entity base, String name, Vector3d offset) { Matcher itemMatcher = ITEM_MATCHER.matcher(name); + itemMatcher.find(); Material item = SpigotUtil.isUsing1_13API() ? Material.matchMaterial(itemMatcher.group(1), false) : Material.matchMaterial(itemMatcher.group(1)); ItemStack itemStack = new ItemStack(item, 1); @@ -555,13 +561,13 @@ public class HologramTrait extends Trait { } @Override - public void updateText(NPC npc, String text) { - this.text = Placeholders.replace(text, null, npc); + public void updateText(NPC npc, String raw) { + this.text = Placeholders.replace(raw, null, npc); if (hologram == null) return; hologram.setName(text); - if (!Placeholders.containsPlaceholders(text)) { - hologram.data().set(NPC.Metadata.NAMEPLATE_VISIBLE, Messaging.stripColor(text).length() > 0); + if (!Placeholders.containsPlaceholders(raw)) { + hologram.data().set(NPC.Metadata.NAMEPLATE_VISIBLE, Messaging.stripColor(raw).length() > 0); } } } @@ -600,7 +606,7 @@ public class HologramTrait extends Trait { } } - private static final Pattern ITEM_MATCHER = Pattern.compile(""); + private static final Pattern ITEM_MATCHER = Pattern.compile(""); private static boolean SUPPORTS_DISPLAY = false; static { try {