MC~蛟龙
使用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" 反序列化 (颜色没变化)


所以能不能将MiniMessageLegacy一起使用

让其既能用 又能用 &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)复制代码

第一页 上一页 下一页 最后一页