状态栏混合显示器允许将不同的文本组件混合地展示给不同的玩家,轻松控制。
前置库
多人
1.21 ~ 1.21.4
512025/06/23 13:43:32

状态栏混合显示器 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:actbarnew键名下,然后以目标玩家为执行者运行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:actbardata[].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:actbarseparator路径下,然后以该玩家为执行者执行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会重置所有玩家,包括上过线但当前下线的玩家的分隔符会默认的一个空格。

关闭

#offdah.actbar.calc记分板上的分数设为1会关闭改数据包。它将不会再控制状态栏。设置为0可以再次打开。

想要让数据包不影响一个特定的玩家,请给该玩家加上dah.actbar.pause标签。

手动管理数据

所有文本组件都存储在dah:actbardata路径下。

这是一个列表,其中的每个复合标签代表一个玩家。以一名玩家为执行者执行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,记分板,与标签的补全信息(告别黄条):

  1. 将前置文件放置于电脑某处
  2. 在数据包的根目录新建文件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)

支持作者,获得更多创作动力!

讨论
评测
版本列表 1 个版本
推荐版本
R
v1.0.1
1.21 ~ 1.21.4
资源信息
授权协议
公共领域
发布时间
2025/01/31 14:21:52
最后更新
2025/06/23 13:43:32
外部链接
加载时间比预期的要久,也许需要刷新一下?