diff --git a/api/src/main/java/net/momirealms/customnameplates/api/feature/PreParsedDynamicText.java b/api/src/main/java/net/momirealms/customnameplates/api/feature/PreParsedDynamicText.java index 9c02fed..acf34d1 100644 --- a/api/src/main/java/net/momirealms/customnameplates/api/feature/PreParsedDynamicText.java +++ b/api/src/main/java/net/momirealms/customnameplates/api/feature/PreParsedDynamicText.java @@ -32,11 +32,11 @@ public class PreParsedDynamicText { private boolean init = false; public PreParsedDynamicText(String text) { - this.text = text; + this.text = Objects.requireNonNull(text); } public PreParsedDynamicText(String text, boolean init) { - this.text = Optional.ofNullable(text).orElse(""); + this.text = Objects.requireNonNull(text); if (init) init(); } diff --git a/backend/src/main/java/net/momirealms/customnameplates/backend/feature/bubble/BubbleManagerImpl.java b/backend/src/main/java/net/momirealms/customnameplates/backend/feature/bubble/BubbleManagerImpl.java index 4221e80..98fa72d 100644 --- a/backend/src/main/java/net/momirealms/customnameplates/backend/feature/bubble/BubbleManagerImpl.java +++ b/backend/src/main/java/net/momirealms/customnameplates/backend/feature/bubble/BubbleManagerImpl.java @@ -32,6 +32,7 @@ import net.momirealms.customnameplates.api.ConfigManager; import net.momirealms.customnameplates.api.CustomNameplates; import net.momirealms.customnameplates.api.feature.ChatListener; import net.momirealms.customnameplates.api.feature.ConfiguredCharacter; +import net.momirealms.customnameplates.api.feature.OffsetFont; import net.momirealms.customnameplates.api.feature.bubble.Bubble; import net.momirealms.customnameplates.api.feature.bubble.BubbleConfig; import net.momirealms.customnameplates.api.feature.bubble.BubbleManager; @@ -304,6 +305,9 @@ public class BubbleManagerImpl implements BubbleManager, ChatListener { String fullText = config.textPrefix() + AdventureHelper.stripTags(message.replace("\\", "\\\\")) + config.textSuffix(); int lines = plugin.getAdvanceManager().getLines(fullText, config.lineWidth()); if (lines > config.maxLines()) return; + int space = (int) plugin.getAdvanceManager().getLineAdvance(" "); + String fakeSpace = AdventureHelper.surroundWithNameplatesFont(OffsetFont.createOffsets(space)); + fullText = fullText.replace(" ", fakeSpace); TagRenderer renderer = plugin.getUnlimitedTagManager().getTagRender(player); if (renderer == null) return; diff --git a/backend/src/main/java/net/momirealms/customnameplates/backend/placeholder/PlaceholderManagerImpl.java b/backend/src/main/java/net/momirealms/customnameplates/backend/placeholder/PlaceholderManagerImpl.java index 11e22a5..ff2fc88 100644 --- a/backend/src/main/java/net/momirealms/customnameplates/backend/placeholder/PlaceholderManagerImpl.java +++ b/backend/src/main/java/net/momirealms/customnameplates/backend/placeholder/PlaceholderManagerImpl.java @@ -110,6 +110,7 @@ public class PlaceholderManagerImpl implements PlaceholderManager { } private void loadNestNameplatePlaceholders() { + if (!ConfigManager.nameplateModule()) return; PreParsedDynamicText nameTag = new PreParsedDynamicText(plugin.getNameplateManager().playerNameTag()); Placeholder placeholder1 = this.registerPlayerPlaceholder("%np_tag-image%", (player -> { String equippedNameplate = player.equippedNameplate(); @@ -171,15 +172,20 @@ public class PlaceholderManagerImpl implements PlaceholderManager { this.registerPlayerPlaceholder("%np_offset_" + i + "%", (p) -> AdventureHelper.surroundWithNameplatesFont(characters)); } this.registerPlayerPlaceholder("%np_equipped_nameplate%", CNPlayer::equippedNameplate); - this.registerPlayerPlaceholder("%np_equipped_bubble%", CNPlayer::equippedBubble); - this.registerPlayerPlaceholder("%np_equipped_nameplate-name%", (player) -> { - Nameplate nameplate = plugin.getNameplateManager().nameplateById(player.equippedNameplate()); - return Optional.ofNullable(nameplate).map(Nameplate::displayName).orElse(""); - }); - this.registerPlayerPlaceholder("%np_equipped_bubble-name%", (player) -> { - BubbleConfig bubble = plugin.getBubbleManager().bubbleConfigById(player.equippedBubble()); - return Optional.ofNullable(bubble).map(BubbleConfig::displayName).orElse(""); - }); + if (ConfigManager.nameplateModule()) { + this.registerPlayerPlaceholder("%np_equipped_nameplate-name%", (player) -> { + Nameplate nameplate = plugin.getNameplateManager().nameplateById(player.equippedNameplate()); + return Optional.ofNullable(nameplate).map(Nameplate::displayName).orElse(""); + }); + } + if (ConfigManager.bubbleModule()) { + this.registerPlayerPlaceholder("%np_equipped_bubble%", CNPlayer::equippedBubble); + this.registerPlayerPlaceholder("%np_equipped_bubble-name%", (player) -> { + BubbleConfig bubble = plugin.getBubbleManager().bubbleConfigById(player.equippedBubble()); + return Optional.ofNullable(bubble).map(BubbleConfig::displayName).orElse(""); + }); + } + this.registerSharedPlaceholder("%shared_np_is-latest%", () -> String.valueOf(plugin.isUpToDate())); this.registerPlayerPlaceholder("%np_is-latest%", (player) -> String.valueOf(plugin.isUpToDate())); for (int i = 1; i <= 20; i++) { diff --git a/bukkit/src/main/java/net/momirealms/customnameplates/bukkit/BukkitCustomNameplates.java b/bukkit/src/main/java/net/momirealms/customnameplates/bukkit/BukkitCustomNameplates.java index c6fd358..85915bf 100644 --- a/bukkit/src/main/java/net/momirealms/customnameplates/bukkit/BukkitCustomNameplates.java +++ b/bukkit/src/main/java/net/momirealms/customnameplates/bukkit/BukkitCustomNameplates.java @@ -148,13 +148,13 @@ public class BukkitCustomNameplates extends CustomNameplates implements Listener this.senderFactory = new BukkitSenderFactory(this); this.configManager = new BukkitConfigManager(this); this.translationManager = new TranslationManager(this); - this.placeholderManager = new PlaceholderManagerImpl(this); this.actionBarManager = new ActionBarManagerImpl(this); this.bossBarManager = new BossBarManagerImpl(this); this.advanceManager = new AdvanceManagerImpl(this); this.backgroundManager = new BackgroundManagerImpl(this); this.bubbleManager = new BubbleManagerImpl(this); this.nameplateManager = new NameplateManagerImpl(this); + this.placeholderManager = new PlaceholderManagerImpl(this); this.imageManager = new ImageManagerImpl(this); this.unlimitedTagManager = new UnlimitedTagManagerImpl(this); this.requirementManager = new BukkitRequirementManager(this);