状态栏混合显示器允许将不同的文本组件混合地展示给不同的玩家,轻松控制。
前置库
多人
1.21 ~ 1.21.11
682026/01/10 11:16:10

DAM Actionbar Mixer v1.3

本库允许你组合不同的文本组件片段一起显示在 actionbar 上。

支持 1.21+

By Dahesor

增加新片段

每个文本组件片段都必须包含一个 ID 和一个文本组件:

  • (一个片段)(复合标签)
  • |— id(字符串。任何你想要的 ID。建议使用类似 foo:bar 的命名空间制。请勿使用引号)
  • |— text(文本组件(1.21.5+ 为 snbt,1.21.4- 为字符串形式的 JSON)要显示的文本)
  • |— order可选 整数。决定该文字在 actionbar 上显示的顺序。更小的数字会使这个片段更靠左侧。默认为 0。)
  • |— list(整数。已弃用。请使用 order

要将一个文本组件添加到玩家的 actionbar 上,首先将上述 NBT 结构存储到 dah:actbarnew 键中,然后以该玩家身份执行 function dah.actbar_mixer:new/(append|prepend|insert|replace_index|update_id)

  • function dah.actbar_mixer:new/append:将该片段添加到 actionbar 的最右侧。新片段的 order 将被设置为当前最高order + 1,输入中的 order 不会被使用。
  • function dah.actbar_mixer:new/prepend:将该片段添加到 actionbar 的最左侧。新片段的 order 将被设置为当前最低order - 1,输入中的 order 不会被使用。
  • function dah.actbar_mixer:new/insert:将该片段插入到由输入 order 决定的位置。如果两个片段有相同的顺序,先添加的会显示在前。
  • function dah.actbar_mixer:new/replace_index:与 new/insert 相同,但会先删除所有具有相同 order 的片段。
  • function dah.actbar_mixer:new/update_id:与 new/insert 相同,但会先删除所有具有相同 id 的片段。

示例:

玩家应该会在 actionbar 上看到 Hello

data modify storage dah:actbar new set value {id:"test:1",text:{"text":"Hello"},order:1}
function dah.actbar_mixer:new/insert

再次重复上述命令,这次使用 {id:"test:2",text:{"text":"World!"},order:3},玩家应该会看到 Hello World!

然后运行如下命令,玩家应该会看到 Hey! Hello World

data modify storage dah:actbar new set value {id:"test:1",text:{"text":"Hey!"}}
function dah.actbar_mixer:new/prepend

接着运行如下命令,玩家应看到 Hey! Hello Beautiful World

data modify storage dah:actbar new set value {id:"test:beautiful",text:{"text":"Beautiful"},order:2}
function dah.actbar_mixer:new/insert

之后运行如下命令,玩家应看到 Hey! Hello Great World

data modify storage dah:actbar new set value {id:"test:beautiful",text:{"text":"Great"},order:2}
function dah.actbar_mixer:new/update_id

移除文本组件

若要移除目标玩家的片段,使用以下指令,以该玩家身份执行:

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

分隔符

分隔符用于各个文本片段之间的分隔。默认的分隔符存储在storage dah:actbar default_separator中,是一个文本组件,默认为一个空格(" ")。

你可以更改 storage dah:actbar default_separator 来修改所有玩家的默认分隔符。

若要更改单个玩家的分隔符,先将文本组件存储到dah:actbarseparator键中,然后以该玩家身份执行:

data modify storage dah:actbar separator set value "-"
function dah.actbar_mixer:separator/from

另一个更简洁的方式是使用宏指令:

function dah.actbar_mixer:separator/set {separator:"-"}

若要设置所有玩家的分隔符(包括离线),可以直接修改data[].separator

data modify storage dah:actbar data[].separator set value "="

运行以下指令可将所有玩家的分隔符重置会默认的storage dah:actbar default_separator

function dah.actbar_mixer:separator/reset_all

关闭系统

将记分板dah.actbar.calc#off的分数设置为1将会关闭整个系统,使其不再影响 actionbar。

若只想暂停某个玩家的显示,可为该玩家添加dah.actbar.pause标签。

手动管理数据

所有文本片段都存储在dah:actbardata键下。

这是一个列表,每个元素代表一个玩家。你可以以某个玩家身份执行:

function dah.actbar_mixer:z_private/uid/get

该命令会将该玩家移到列表的首位。

随后你可以直接修改该玩家的分隔符或片段列表:

data[0].separator
data[0].content

不要编辑 data[0].content[0],那是一个用于保持样式独立性的根节点。

若想为所有玩家添加相同的文本组件,只需向data[].content路径追加内容:

data modify storage dah:actbar data[].content append value {id:"test:4",text:"Hey There!"}

Dependency文件

该数据包附带了一个DAM_Dependency.zip文件。将其放置到电脑的任意位置,配合 Spyglass(Datapack Helper Plus),就可以通过在数据包根目录创建一个spyglass.json文件的方式,获取本库所需的所有函数/stoarge/计分板等的自定义补全。

示例spyglass.json:

{
	"env": {
		"dependencies": [
			"file:///C:/path/to/DAM_Dependency.zip",
			"@vanilla-mcdoc",
			"@vanilla-resourcepack",
			"@vanilla-mcdoc"
		],
		"gameVersion": "1.21.5"
	}
}

其他

本数据包内置了 gu 库,用于处理玩家 UUID。

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

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