taboolib icon indicating copy to clipboard operation
taboolib copied to clipboard

在使用 module-lang 向玩家发送信息时可自定义修改信息内容或使用自定义变量替换

Open Micalhl opened this issue 3 years ago • 6 comments

今天在写插件时,发现 taboolib 的替换变量都是诸如 {0} {1} 的东西,如果没有注释或其他告诉服主这些代表什么意义的方式,我个人认为服主会较不易配置该插件的语言文件。 为此,我写了一些方法,能让开发者在向玩家发送这些方法时对获取到的语言文本做些修改再发出去,例如添加 %player% 之类的非 PlaceholderAPi 变量,开发者自定义变量。我觉得开发者写起来会更加方便。

使用方法举例:

            e.player.sendLang("motd") {
                it?.replace("%player%", e.player.name)?.replace("%online%", onlinePlayers().size.toString())
                    ?.replace("%worldtime%", "上午1:61")
            }

在语言文件中:

motd:
  - "&6Welcome, %player%&6!"
  - "&6Type &c/help&6 for a list of commands."
  - "&6Type &c/list&6 to see who else is online."
  - "&6Players online:&c %online% &6- World time:&c %worldtime%"

以上为个人见解,如果有错误或代码有不足之处还请指出,非常感谢。

Micalhl avatar Jul 25 '22 15:07 Micalhl

差评

Polar-Pumpkin avatar Jul 29 '22 14:07 Polar-Pumpkin

差评

栓Q

Micalhl avatar Jul 29 '22 14:07 Micalhl

其实根据上下文完全可以看出是什么内容,如果是单纯的替换变量,可以做的更优雅

Bkm016 avatar Aug 06 '22 15:08 Bkm016

我会更新相关特性

Bkm016 avatar Aug 06 '22 15:08 Bkm016

代码:

e.player.sendLang("motd", e.player.name, onlinePlayers().size.toString() to "online", "上午1:61" to "worldtime")

语言文件:

motd:
  - "&6Welcome, {0}&6!"
  - "&6Type &c/help&6 for a list of commands."
  - "&6Type &c/list&6 to see who else is online."
  - "&6Players online:&c {online} &6- World time:&c {worldtime}"

Bkm016 avatar Aug 06 '22 15:08 Bkm016

https://github.com/TabooLib/taboolib/commit/b3e500fece5de6c3e6025af2d2f5240b7ab67ca7

在变量替换时对 Pair 类型进行特殊处理,以 second 属性作为变量别名

Bkm016 avatar Aug 06 '22 15:08 Bkm016