有序玩家列表

有序玩家列表

添加可配置的玩家列表排序

Ordered Player List

Config

{
  // 每隔多少 tick 检查并更新一次排序
  "updateRate": 5,
  // 在玩家上方显示前缀元数据
  "displayPrefix": true,
  // 在玩家上方显示后缀元数据
  "displaySuffix": true,
  // 比较条件列表,自上而下依次应用。
  // 在此示例中,将首先检查等级权重,然后具有相同等级权重的玩家将按游玩时间排序……
  "order": [
    {
      "key": "weight",
      "reversed": true,
      "mode": "integer",
      "type": "metadata"
    },
    {
      "placeholder": "player:statistic",
      "argument": "play_time",
      "reversed": true,
      "mode": "integer",
      "type": "placeholder"
    },
    {
      "placeholder": "player:pos_y",
      "reversed": false,
      "mode": "double",
      "type": "placeholder"
    },
    {
      "placeholder": "player:statistic",
      "argument": "deaths",
      "reversed": false,
      "mode": "integer",
      "type": "placeholder"
    },
    {
      "placeholder": "player:name",
      "reversed": false,
      "mode": "string",
      "type": "placeholder"
    }
  ]
}

比较条件

比较条件用于定义玩家在玩家列表中的排序方式。它们自上而下依次应用。也就是说,如果两个玩家在某个比较条件上被判定为相等,则会使用下一个比较条件来决定玩家顺序。

有时将数据解释为整数或浮点数而非进行字符串比较会更有优势。解析模式用于告知模组应如何解释字符串,以应用正确的比较方法。可用的解析模式有 integerstringdoublelongboolean

目前有两种不同的比较类型可用:

元数据

适用于基于模组(如 luckperms)提供的元数据进行玩家比较

{
  // 要检查的元数据键
  "key": "<key>",
  // 是否反转比较结果
  "reversed": false,
  // 解析模式
  "mode": "<mode>",
  "type": "metadata"
}

占位符

允许使用占位符进行玩家比较

{
  // 占位符 id(不含 %)
  "placeholder": "<placeholder>",
  // 占位符中使用的可选参数
  "argument": "<argument>",
  // 是否反转比较结果
  "reversed": false,
  // 解析模式
  "mode": "<mode>",
  "type": "placeholder"
}