diff --git a/core-bukkit/src/main/java/cn/hamster3/mc/plugin/core/bukkit/constant/CoreMessage.java b/core-bukkit/src/main/java/cn/hamster3/mc/plugin/core/bukkit/constant/CoreMessage.java index dba1b37..7d62611 100644 --- a/core-bukkit/src/main/java/cn/hamster3/mc/plugin/core/bukkit/constant/CoreMessage.java +++ b/core-bukkit/src/main/java/cn/hamster3/mc/plugin/core/bukkit/constant/CoreMessage.java @@ -3,6 +3,7 @@ package cn.hamster3.mc.plugin.core.bukkit.constant; import cn.hamster3.mc.plugin.core.bukkit.api.CoreBukkitAPI; import cn.hamster3.mc.plugin.core.bukkit.util.CoreBukkitUtils; import cn.hamster3.mc.plugin.core.common.data.DisplayMessage; +import lombok.Getter; import net.kyori.adventure.audience.Audience; import net.kyori.adventure.text.TextReplacementConfig; import org.bukkit.command.CommandSender; @@ -59,9 +60,10 @@ public enum CoreMessage { COMMAND_LORE_INSERT_INPUT_NUMBER_ERROR("§c行号必须是一个大于等于 0 的整数"), COMMAND_LORE_INSERT_WAIT_CHAT_TEXT("§a请于 15 秒内在聊天框输入想要设置的 lore 文本"), COMMAND_LORE_INSERT_INDEX_OUT_OF_RANGE("§c你的手持物品没有这么多行 lore 文本"), - COMMAND_LORE_INSERT_SUCCESS("§a已成功设置 lore 文本"), - ; + COMMAND_LORE_INSERT_SUCCESS("§a已成功设置 lore 文本"); + @Getter + @NotNull private DisplayMessage message; CoreMessage(@NotNull String message) { @@ -106,17 +108,22 @@ public enum CoreMessage { } } - public void show(@NotNull CommandSender sender, TextReplacementConfig... replacement) { - if (message == null) { - sender.sendMessage(name()); - return; - } + public void show(@NotNull CommandSender sender, @NotNull TextReplacementConfig... replacement) { Audience audience = CoreBukkitAPI.getInstance().getAudienceProvider().sender(sender); message.show(audience, replacement); } - @SuppressWarnings("unused") - public DisplayMessage getMessage() { - return message; + public void show(@NotNull CommandSender sender, @NotNull String... replacement) { + if (replacement.length % 2 != 0) { + throw new IllegalArgumentException(); + } + TextReplacementConfig[] configs = new TextReplacementConfig[replacement.length / 2]; + for (int i = 0; i < configs.length; i++) { + String key = replacement[i * 2]; + String value = replacement[i * 2 + 1]; + configs[i] = TextReplacementConfig.builder().matchLiteral(key).replacement(value).build(); + } + Audience audience = CoreBukkitAPI.getInstance().getAudienceProvider().sender(sender); + message.show(audience, configs); } } diff --git a/core-common/src/main/java/cn/hamster3/mc/plugin/core/common/data/DisplayMessage.java b/core-common/src/main/java/cn/hamster3/mc/plugin/core/common/data/DisplayMessage.java index 4d98cf8..42fb89a 100644 --- a/core-common/src/main/java/cn/hamster3/mc/plugin/core/common/data/DisplayMessage.java +++ b/core-common/src/main/java/cn/hamster3/mc/plugin/core/common/data/DisplayMessage.java @@ -148,6 +148,11 @@ public class DisplayMessage { return copy; } + @NotNull + public DisplayMessage replace(@NotNull String key, String value) { + return replace(TextReplacementConfig.builder().matchLiteral(key).replacement(value).build()); + } + @NotNull public JsonObject toJson() { JsonObject object = new JsonObject();