服务器链接发送器

服务器链接发送器

基于原版1.21功能构建。为玩家提供可通过暂停菜单在游戏内打开的链接!

管理

ServerLinksSender

背景

Minecraft 1.21 发布了一项新功能,允许原版服务器向原版客户端发送特定链接,客户端随后可以在暂停菜单中一个名为“服务器链接”的新选项下显示这些链接。在那里它们会被列出并且可以点击。

原版仅提供了发送“漏洞报告链接”的功能,玩家可以用它来报告服务器上的漏洞,但该系统实际上能够做更多事情!这个模组正是为此而生。

描述

ServerLinksSender 允许为这些链接配置自定义按钮标签和链接,因此你可以提供自己的链接和标签,例如服务器网站、投票链接、Discord 链接等,并在服务器运行时定期更新它们。 此外,它还支持 placeholder API 和 quicktext,便于实现简单且动态的文本组件。 最后,你可以利用 Predicate API 仅在特定条件下发送某些链接,例如,仅向拥有 staff 权限的玩家发送指向 staff 文档的链接,或者当玩家处于活动世界时发送包含活动规则的链接!

限制

首先,你无法使用任何形式的点击事件或悬停效果,因为这些内容用于按钮而非聊天。我还没有测试所有内容,但可以确认文本装饰和颜色可以正常工作。

此外,原版服务器链接界面在发送新链接时不会重新渲染。它只会在玩家实际打开它时重新渲染,而且只渲染一次,这意味着你无法使用像世界时间这样的超级动态占位符,因为当玩家查看它们时它们不会更新。

命令

命令 权限 描述
/reloadserverlinks [--force-update] serverlinks.main 从文件重新加载配置,并可选择将新列表发送给所有当前在线的玩家;如果玩家只获取一次链接(详见下文),而你希望在不要求玩家重新登录的情况下更新链接,这尤其有用

配置示例

模组会创建一个默认配置,你可以将其作为基础使用,下面是一个类似的配置并附有一些说明(以 // 标记)

{
// 在列表再次发送给所有玩家之前应经过多少刻
// 如果你使用了在玩家游戏过程中会变化的占位符,就需要这个。将其设置为 20 意味着大约每秒发送一次。不建议低于 20。
// 将其设置为 -1 将禁用定期更新,意味着玩家只会在登录时(或使用 --force-update 时)获取列表
  "refresh_interval": -1,
// 发送给所有用户且不带任何条件的链接列表
  "global_server_links": {
    "<red><bold>My cool link!": "https://google.com"
  },
// 多组链接,如果玩家满足要求(例如拥有特定权限或处于特定世界),则可以在上述链接之外额外发送这些链接
  "additional_links": [
    {
      "links": {
        "<rb>My cool extra link!": "https://google.com"
      },
      // 有关如何使用此功能的更多信息,请参见此处 https://github.com/Patbox/PredicateAPI/blob/1.21/BUILTIN.md
      "requirement": {
        "type": "permission",
        "permission": "example.permission",
        "operator": 2
      }
    }
  ]
}