状态栏混合显示器 v1.0 (Actionbar Mixer)
本前置库允许你混合显示多个文本组件片段给不同的玩家的状态栏(actionbar)。你可以轻易地增加或删除任意一个片段,片段之间不互相干扰。
本前置会使你丢失actionbar的控制权。所有的actionbar都需要通过本前置显示。
直接支持1.21+。理论上简单地配合Mojang更改文件夹的名称也应当能在1.20.4使用,然而不做保证。
在1.21.5关于文本组件的改动发生后本数据包将无法使用。出了再说。
下载
Github: https://github.com/Dahesor/Actionbar-Mixer-for-Minecraft
使用说明
添加一个文本组件
每个文本组件都需要包含一个id和一个字符串格式的JSON文本组件:
- (一串文本组件) (复合标签)
- |—
id(字符串。任意不重复ID。勿使用特殊字符) - |—
json(字符串。想要展示的文本组件)
想要将文本组件展示给玩家,首先将其保存至存储dah:actbar中new键名下,然后以目标玩家为执行者运行function dah.actbar_mixer:append/from。下例中,执行者将在actionbar中看到Hello:
data modify storage dah:actbar new set value {id:"test:1",json:'{"text":"Hello"}'}
function dah.actbar_mixer:append/from
再次执行上例,这次使用{id:"test:2",json:'{"text":"World!"}'},玩家就会看到完整的Hello World!。
本函数有一个宏版本,function dah.actbar_mixer:append/macro。只要把NBT部分塞进new下即可。例:function dah.actbar_mixer:append/macro {new:{id:"test:3",json:'{"text":"Hello World!"}'}}。
使用宏版本会消耗更多性能,且你无法得到大憨批与mcdoc功能提供的补全与纠错。
若你需要将一串文本组件展示给所有玩家,包括上过线但当前下线的玩家,只要简单地将NBT追加在存储dah:actbar中data[].content路径下即可:
data modify storage dah:actbar data[].content append value {id:"test:4",json:'"你好啊"'}
删除一个文本组件
想要从目标中移出一个文本组件,以目标玩家为执行者执行以下命令:
function dah.actbar_mixer:remove/this {id:"<id>"}
其中<id>应被替换为对应文本组件的id。所有带有此ID的文本组件都会被删除。
若你需要将所有玩家,包括上过线但当前下线的玩家的一个文本组件删除,只要执行 function dah.actbar_mixer:remove/for_all {id:"<id>"} 即可。
想要清空一名玩家的所有组件,以该玩家为执行者执行function dah.actbar_mixer:empty/self。
执行function dah.actbar_mixer:empty/everything会清空所有玩家,包括下线玩家的所有组件。
分隔符
分隔符是用于分割不同组件的文本组件。默认为" "(一个空格)。
想要更改一个玩家的分隔符,请将文本组件以字符串的形式存储在dah:actbar的separator路径下,然后以该玩家为执行者执行function dah.actbar_mixer:separator/from。下例中执行者的分割符会被设置为-:
data modify storage dah:actbar separator set value '"-"'
function dah.actbar_mixer:separator/from
本函数也有一个宏版本,function dah.actbar_mixer:separator/set:
function dah.actbar_mixer:separator/set {separator:'"-"'}
同样地,这会消耗更多性能且无法得到来自mcdoc的补全。
想要给所有玩家,包括上过线但当前下线的玩家修改分割符,可以直接更改dah:actbar存储的data[].separator路径:
data modify storage dah:actbar data[].separator set value '"="'
最后,执行function dah.actbar_mixer:separator/reset_all会重置所有玩家,包括上过线但当前下线的玩家的分隔符会默认的一个空格。
关闭
将#off在dah.actbar.calc记分板上的分数设为1会关闭改数据包。它将不会再控制状态栏。设置为0可以再次打开。
想要让数据包不影响一个特定的玩家,请给该玩家加上dah.actbar.pause标签。
手动管理数据
所有文本组件都存储在dah:actbar的data路径下。
这是一个列表,其中的每个复合标签代表一个玩家。以一名玩家为执行者执行function dah.actbar_mixer:z_private/uid/get会将该玩家对应的元素“转”到列表的最前面。
接下来你就可以更改data[0].separator来控制分隔符,或更改data[0].content这个包含了所有组件片段的列表来更改其显示的内容了。
Mcdoc文件与依赖库文件
数据包中包含一个mcdoc文件夹。将改文件夹移动到自己数据包的根目录下,4.0+版本的大憨批 (Spyglass) 就会为本前置所使用的自定义NBT提供纠错与补全。
更进一步地,下载文件中还包含一个dependency.zip。将改文件放置于电脑的任何位置,你就可以通过在自己根目录中创建一个spyglass.json文件来获取本前置库提供的,所有函数,NBT,记分板,与标签的补全信息(告别黄条):
- 将前置文件放置于电脑某处
- 在数据包的根目录新建文件spyglass.json,内容如下:
{
"env": {
"dependencies": [
"file:///C:/path/to/dependency.zip",
"@vanilla-mcdoc"
],
"gameVersion": "1.21.4"
}
}
修改路径以指向dependency.zip,修改gameVersion以匹配你的版本,刷新VS Code即可。
若补全突然出错,尝试使VS Code执行Spyglass: Reset Project Cahce命令。
杂谈
数据包中内置了gu前置来管理玩家的UUID。
其实是写给自己用的,不过既然有人复活了就来凑凑热闹。类似的还有不少,再说。
然后,第三!(bushi)
没有评论