使用API: net.Kyori.adventure
其消息序列化API
MiniMessage: 可将
I'm Red Color RGB Color 复制代码的原始String转换成组件(Component)然后可通过Audience.sendMessage(Component)发送并且客户端可正确识别 (既API对字符串做了反序列化操作)
Legacy: 可将
&aGreen§cRed#FFFFF RGB Color复制代码反序列化,并且客户端可正确识别
但是Minimessage不能用 "&a" "#FFFFF" 反序列化 (颜色没变化)
所以能不能将MiniMessage和Legacy一起使用
让其既能用 又能用 &a 和 #AAAAA
已实现工具方法:
/**
* MiniMessage
*/
fun deserializeByMiniMessage(target: String, vararg tagResolver: TagResolver = emptyArray())
: Component = MiniMessage.miniMessage().deserialize(target, *tagResolver)
fun serializeByMiniMessage(target: Component)
: String = MiniMessage.miniMessage().serialize(target)
/**
* 将 '&' 转换成 '§'
*/
fun translateAmpersandColor(target: String) = target.replace(AMPERSAND_CHAR, SECTION_CHAR)
/**
* 将 '§' 转换成 '&'
*/
fun translateLegacyColor(target: String) = target.replace(SECTION_CHAR, AMPERSAND_CHAR)
/**
* 旧版消息格式序列化器
*/
private val legacyComponentSerializer by lazy {
LegacyComponentSerializer.builder().apply {
character(SECTION_CHAR)
// 1.16+
if (MinecraftVersion.majorLegacy >= 11600) {
hexColors()
useUnusualXRepeatedCharacterHexFormat()
}
}.build()
}
fun serializeLegacy(target: Component): String = legacyComponentSerializer.serialize(target)
fun deserializeLegacy(target: String): TextComponent = legacyComponentSerializer.deserialize(target)复制代码
其消息序列化API
MiniMessage: 可将
I'm Red Color RGB Color 复制代码的原始String转换成组件(Component)然后可通过Audience.sendMessage(Component)发送并且客户端可正确识别 (既API对字符串做了反序列化操作)
Legacy: 可将
&aGreen§cRed#FFFFF RGB Color复制代码反序列化,并且客户端可正确识别
但是Minimessage不能用 "&a" "#FFFFF" 反序列化 (颜色没变化)
所以能不能将MiniMessage和Legacy一起使用
让其既能用 又能用 &a 和 #AAAAA
已实现工具方法:
/**
* MiniMessage
*/
fun deserializeByMiniMessage(target: String, vararg tagResolver: TagResolver = emptyArray())
: Component = MiniMessage.miniMessage().deserialize(target, *tagResolver)
fun serializeByMiniMessage(target: Component)
: String = MiniMessage.miniMessage().serialize(target)
/**
* 将 '&' 转换成 '§'
*/
fun translateAmpersandColor(target: String) = target.replace(AMPERSAND_CHAR, SECTION_CHAR)
/**
* 将 '§' 转换成 '&'
*/
fun translateLegacyColor(target: String) = target.replace(SECTION_CHAR, AMPERSAND_CHAR)
/**
* 旧版消息格式序列化器
*/
private val legacyComponentSerializer by lazy {
LegacyComponentSerializer.builder().apply {
character(SECTION_CHAR)
// 1.16+
if (MinecraftVersion.majorLegacy >= 11600) {
hexColors()
useUnusualXRepeatedCharacterHexFormat()
}
}.build()
}
fun serializeLegacy(target: Component): String = legacyComponentSerializer.serialize(target)
fun deserializeLegacy(target: String): TextComponent = legacyComponentSerializer.deserialize(target)复制代码