状态栏混合显示器 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)


