feat: 添加新 API

This commit is contained in:
2023-12-27 20:47:16 +08:00
parent ec6d5dec65
commit e80c983c51
2 changed files with 22 additions and 10 deletions

View File

@@ -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.api.CoreBukkitAPI;
import cn.hamster3.mc.plugin.core.bukkit.util.CoreBukkitUtils; import cn.hamster3.mc.plugin.core.bukkit.util.CoreBukkitUtils;
import cn.hamster3.mc.plugin.core.common.data.DisplayMessage; import cn.hamster3.mc.plugin.core.common.data.DisplayMessage;
import lombok.Getter;
import net.kyori.adventure.audience.Audience; import net.kyori.adventure.audience.Audience;
import net.kyori.adventure.text.TextReplacementConfig; import net.kyori.adventure.text.TextReplacementConfig;
import org.bukkit.command.CommandSender; import org.bukkit.command.CommandSender;
@@ -59,9 +60,10 @@ public enum CoreMessage {
COMMAND_LORE_INSERT_INPUT_NUMBER_ERROR("§c行号必须是一个大于等于 0 的整数"), COMMAND_LORE_INSERT_INPUT_NUMBER_ERROR("§c行号必须是一个大于等于 0 的整数"),
COMMAND_LORE_INSERT_WAIT_CHAT_TEXT("§a请于 15 秒内在聊天框输入想要设置的 lore 文本"), COMMAND_LORE_INSERT_WAIT_CHAT_TEXT("§a请于 15 秒内在聊天框输入想要设置的 lore 文本"),
COMMAND_LORE_INSERT_INDEX_OUT_OF_RANGE("§c你的手持物品没有这么多行 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; private DisplayMessage message;
CoreMessage(@NotNull String message) { CoreMessage(@NotNull String message) {
@@ -106,17 +108,22 @@ public enum CoreMessage {
} }
} }
public void show(@NotNull CommandSender sender, TextReplacementConfig... replacement) { public void show(@NotNull CommandSender sender, @NotNull TextReplacementConfig... replacement) {
if (message == null) {
sender.sendMessage(name());
return;
}
Audience audience = CoreBukkitAPI.getInstance().getAudienceProvider().sender(sender); Audience audience = CoreBukkitAPI.getInstance().getAudienceProvider().sender(sender);
message.show(audience, replacement); message.show(audience, replacement);
} }
@SuppressWarnings("unused") public void show(@NotNull CommandSender sender, @NotNull String... replacement) {
public DisplayMessage getMessage() { if (replacement.length % 2 != 0) {
return message; 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);
} }
} }

View File

@@ -148,6 +148,11 @@ public class DisplayMessage {
return copy; return copy;
} }
@NotNull
public DisplayMessage replace(@NotNull String key, String value) {
return replace(TextReplacementConfig.builder().matchLiteral(key).replacement(value).build());
}
@NotNull @NotNull
public JsonObject toJson() { public JsonObject toJson() {
JsonObject object = new JsonObject(); JsonObject object = new JsonObject();