feat: 使用 MiniMessage 读取消息

This commit is contained in:
2024-01-20 15:43:11 +08:00
parent 1a23117157
commit aaef3c564c
10 changed files with 100 additions and 50 deletions

View File

@@ -25,6 +25,7 @@ import org.jetbrains.annotations.NotNull;
import java.util.logging.Logger;
@SuppressWarnings("CallToPrintStackTrace")
public class HamsterCorePlugin extends JavaPlugin {
@Getter
private static HamsterCorePlugin instance;
@@ -64,8 +65,13 @@ public class HamsterCorePlugin extends JavaPlugin {
saveDefaultConfig();
reloadConfig();
logger.info("已读取配置文件");
CoreBukkitAPI.init();
logger.info("已初始化 CoreAPI");
try {
CoreBukkitAPI.init();
logger.info("已初始化 CoreAPI");
} catch (Exception e) {
logger.warning("初始化 CoreAPI 出错");
e.printStackTrace();
}
CoreMessage.init(this);
logger.info("已初始化语言文本");
long time = System.currentTimeMillis() - start;

View File

@@ -32,16 +32,33 @@ public final class CoreBukkitAPI extends CoreAPI {
private final HikariDataSource datasource;
private CoreBukkitAPI() {
gson = new GsonBuilder()
.registerTypeAdapter(Component.class, ComponentTypeAdapter.INSTANCE)
.registerTypeAdapter(DisplayMessage.class, MessageTypeAdapter.INSTANCE)
.registerTypeAdapter(ItemStack.class, ItemStackAdapter.INSTANCE)
.registerTypeAdapter(PotionEffect.class, PotionEffectAdapter.INSTANCE)
.create();
humanGson = new GsonBuilder()
.registerTypeAdapter(Component.class, ComponentTypeAdapter.INSTANCE)
.registerTypeAdapter(DisplayMessage.class, MessageTypeAdapter.INSTANCE)
.registerTypeAdapter(ItemStack.class, ItemStackAdapter.INSTANCE)
.registerTypeAdapter(PotionEffect.class, PotionEffectAdapter.INSTANCE)
.serializeNulls()
.setPrettyPrinting()
.create();
HamsterCorePlugin plugin = HamsterCorePlugin.getInstance();
FileConfiguration config = plugin.getConfig();
HamsterCorePlugin.getInstance().getLogger().info("正在创建 redis 客户端");
redisClient = RedisClient.create(config.getString("redis-url"));
HamsterCorePlugin.getInstance().getLogger().info("redis 客户端创建完成");
ConfigurationSection datasourceConfig = config.getConfigurationSection("datasource");
if (datasourceConfig == null) {
throw new IllegalArgumentException("配置文件中未找到 datasource 节点");
}
HamsterCorePlugin.getInstance().getLogger().info("正在创建数据库连接池");
HikariConfig hikariConfig = new HikariConfig();
hikariConfig.setDriverClassName(datasourceConfig.getString("driver"));
hikariConfig.setJdbcUrl(datasourceConfig.getString("url"));
@@ -58,21 +75,7 @@ public final class CoreBukkitAPI extends CoreAPI {
hikariConfig.setValidationTimeout(datasourceConfig.getLong("validation-timeout", 5000));
hikariConfig.setPoolName("HamsterCore-Pool");
datasource = new HikariDataSource(hikariConfig);
gson = new GsonBuilder()
.registerTypeAdapter(Component.class, ComponentTypeAdapter.INSTANCE)
.registerTypeAdapter(DisplayMessage.class, MessageTypeAdapter.INSTANCE)
.registerTypeAdapter(ItemStack.class, ItemStackAdapter.INSTANCE)
.registerTypeAdapter(PotionEffect.class, PotionEffectAdapter.INSTANCE)
.create();
humanGson = new GsonBuilder()
.registerTypeAdapter(Component.class, ComponentTypeAdapter.INSTANCE)
.registerTypeAdapter(DisplayMessage.class, MessageTypeAdapter.INSTANCE)
.registerTypeAdapter(ItemStack.class, ItemStackAdapter.INSTANCE)
.registerTypeAdapter(PotionEffect.class, PotionEffectAdapter.INSTANCE)
.serializeNulls()
.setPrettyPrinting()
.create();
HamsterCorePlugin.getInstance().getLogger().info("数据库连接池创建完成");
}
public static CoreBukkitAPI getInstance() {

View File

@@ -15,6 +15,7 @@ import org.jetbrains.annotations.NotNull;
import java.io.File;
import java.io.IOException;
@Getter
public enum CoreMessage {
COMMAND_NOT_FOUND("§c未找到该指令"),
COMMAND_NOT_HAS_PERMISSION("§c你没有这个权限"),
@@ -62,7 +63,6 @@ public enum CoreMessage {
COMMAND_LORE_INSERT_INDEX_OUT_OF_RANGE("§c你的手持物品没有这么多行 lore 文本"),
COMMAND_LORE_INSERT_SUCCESS("§a已成功设置 lore 文本");
@Getter
@NotNull
private DisplayMessage message;

View File

@@ -7,6 +7,7 @@ import de.tr7zw.changeme.nbtapi.NBTContainer;
import de.tr7zw.changeme.nbtapi.NBTItem;
import me.clip.placeholderapi.PlaceholderAPI;
import net.kyori.adventure.text.Component;
import net.kyori.adventure.text.minimessage.MiniMessage;
import net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer;
import net.kyori.adventure.title.Title;
import org.bukkit.Bukkit;
@@ -212,18 +213,18 @@ public final class CoreBukkitUtils {
DisplayMessage displayMessage = new DisplayMessage();
String message = config.getString("message");
if (message != null) {
displayMessage.setMessage(message);
displayMessage.setMessage(MiniMessage.miniMessage().deserialize(message));
}
String actionbar = config.getString("actionbar");
if (actionbar != null) {
displayMessage.setActionbar(actionbar);
displayMessage.setActionbar(MiniMessage.miniMessage().deserialize(actionbar));
}
String title = config.getString("title");
String subtitle = config.getString("subtitle");
if (title != null || subtitle != null) {
displayMessage.setTitle(
title,
subtitle,
MiniMessage.miniMessage().escapeTags(title == null ? "" : title),
MiniMessage.miniMessage().escapeTags(subtitle == null ? "" : subtitle),
config.getInt("fade-in", 10),
config.getInt("stay", 70),
config.getInt("fade-out", 20)