Skip to content

非常见问题

这些是不经常出现的问题,不足以写进常见问题,但我还是将它们记录了下来。

可以通过 CTRL+F 快捷键在这里搜索问题,或者使用右侧的目录跳转至你需要的问题。


排行榜没有在正确的时间重置!

这有可能是你的服务器时区差异导致的。若要解决这个问题,你应该修改服务器使用的时区。解决方法见下:

修改系统时区

如果你的服务器运行于专用设备或 VPS 等你可以控制的设备上,修改服务器时区的最好方法就是修改系统时区。网上有很多解决这个问题的方法。例如,如果你的服务器是运行在 Ununtu 上的,你可以在网上搜索如何修改时区

修改服务器时区

如果你没有办法直接修改时区(如面板服等托管服情况下),那么修改服务器时区也是一个不错的办法。你可以通过 -Duser.timezone 启动参数解决。

用户时区启动参数后接 TZ 数据库时区,如 America/New_York。需要注意的是,不是每个城市都有它自己的时区,因此请确保你输入的时区名称是有效的,否则它不会正常工作。

time.is 网站提供了显示你所处位置的时区,其中就包含了你可以复制粘贴的时区名称。(在网站里这一行名称叫“IANA 时区名称”)。例如,aj(作者)住在美国亚利桑那,对应时区名称为 America/Phoenix。若要将服务器时区设置为亚利桑那,则他需要在开服参数中加上 -Duser.timezone=America/Phoenix

如果你的托管服允许你自定义开服参数,你通常可以在服务器面板“启动”页的设置里找到它。如果没有,你可能需要联系他们的技术支持找到它的位置。大部分 Minecraft 托管服提供商都允许管理员为某个服务器快速设置启动参数,但通常情况下他们并不会坚持帮你搞定这件事。

如何重置排行榜?

若要重置 ajLeaderboards 排行榜,你首先需要重置对应变量的数据缓存。重置每个目标变量的数据过程略有不同,因此我不可能在这里讲完所有变量的重置方法。

我能帮你讲讲 statistics 变量拓展的重置方法。如果你想要重置玩家的统计数据,见下文“重置玩家统计数据”一段。

如果你想要重置其他变量拓展的数据,请先阅读对应的文档。如果文档也没有相关信息,则你应当询问变量拓展(不是本插件)作者以获得支持。

重置玩家统计数据

按如下步骤可重置 Minecraft 的统计数据:

  1. 完全关闭服务器(重启无效)
  2. 关闭后,打开主世界文件夹
  • 默认为 world,如果你在 server.properties 下修改了 level-name,则你需要顺着设置的名称自行寻找对应文件夹。
  1. 接下来的操作取决于你需要重置的数据:
  • 若需要重置的是所有玩家的统计数据,直接删除 stats 文件夹即可。
  • 若只需要重置某个玩家的统计数据,则你需要打开 stats 文件夹并找到该玩家对应 UUID 的文件。
    • 如果服务器为离线或者群组服设置不正确,则玩家的 UUID 会通过名称计算而不是真实的 Mojang UUID。在线转化器可以帮助你找出他们的 UUID。
  • 如果你需要重置指定玩家的指定统计数据,找到对应 UUID 的文件之后,将其打开(文件的格式是 json),找到需要重置的统计数据,并将其后的数字设置为 0 即可。
  1. 保存改动后,重启服务器。
  2. ajLeaderboards 不会自动更新未进入服务器的玩家数据,如果你不需要玩家加入服务器,你可以这么做:
  • 输入命令 /ajlb reset <排行榜名称> 清除排行榜上的所有玩家数据(加入后会再次显示)
  • 输入命令 /ajlb removeplayer <玩家名称> <排行榜名称> 清除指定排行榜中的指定玩家数据(加入后会再次显示)
  • 也可以输入命令 /ajlb updatealloffline <排行榜> 让插件尝试更新所有不在服务器内的玩家数据,或者 /ajlb updateplayer <排行榜> <玩家名称> 更新指定玩家的数据。
    • 并不是所有拓展都支持更新不在服务器内的玩家数据,这也是数据刷新不会自动完成的原因。
    • 如果执行命令后没有效果,那么这个拓展很可能不支持这样更新玩家数据。你也应该执行命令 /ajlb reset/ajlb removeplayer 命令而非将玩家删除,直到他们再次上线。

如何制作组别排行榜?

ajLeaderboards 是为大多数玩家设计的排行榜。当前不能直接为一组玩家(如工会、聊天室、岛屿等)设置排行榜。

非法本地变量表 start_pc 72

如果 ajLeaderboards 起初正常运作,而重启后失效并显示 Illegal local variable table start_pc 72 in method 'void us.ajg0702.leaderboards.LeaderboardPlugin.onEnable()',那么你的服务器有可能被 Trojain 感染了。

这意味着你的服务器感染了一种难以清除的后门,但我可以帮你解决这个问题。

导致这个错误的 Trojain 会在服务器启动时将自身传播至所有 jar 文件身上,因此你需要删除服务器上的所有jar文件,并从官方重新将它们下载回来。这些病毒常见于一些“泄露”正版插件,或是陌生用户发送给你的文件中。如果你的文件不来源于上述任何地方,则你不应将其重新安装。

下载安装插件后,在重启服务器前,你应该再次检查这些插件有没有感染源。你可以在插件文件夹里输入如下 CMD 命令进行检查:

Linux:

bash
grep -FR "l/M/x" .

Windows:

powershell
findstr /sml /c:"l/M/x" *

或者使用 https://trojan-scanner.ajg0702.us/ 这个程序。

这些命令可能存在误报,因此你需要二次检查文件。将其作为 zip 问打开后,如果你发现了一个叫 l 的文件夹,里面又是一个 M 文件夹,其中还有一个 x,那么这个插件就被感染了。**VirusTotal 目前还无法检测此类病毒!**因此,如果你需要相关网站,你可以使用作者用于检测此类病毒的工具

这个病毒之所以会破坏插件,是因为它会尝试散播到所有 jar 文件中去。出于某些原因,病毒的逻辑在感染本插件时无法正确修改 jar 文件,因此会在服务器启动时报错。

spark 显示 ajLeaderboards 占用了大量线程!

如果你拿到一份 spark 检测报告,其中 ajLeaderboards 占用了大部分线程,这通常无需担心。

spark 检测报告显示的是一段时间(通常很久)内的线程占用总量。因为 ajLeaderboards 在其间按需创造线程,又在不需要时将线程删除,因此会造成一种插件占用大量线程的假象。

如果插件真的占用了这么多现场,服务器会崩溃(一般的服务器最多只能承受 500 条线程)。

ajLeaderboards 使用的线程数量不会超过配置中 max-fetching-threads 的值。需要注意的是,降低这个值可能会导致性能受到影响。

为什么 vault_eco_balance_formatted 变量不正常工作?

变量 vault_eco_balance_formatted 不会在 ajLeaderboards 的排行榜里生效,因为它带有自己的格式。而本插件无法从这些变量中获取用于排序的数据。

因此,在添加排行榜时,你需要使用不带格式的变量,如 vault_eco_balancevault_eco_balance_fixed,然后在排行榜中使用插件自带的格式变量(如将 2,000 替换为 2k)。

ajLeaderboards 和内置排行榜不匹配!

如果 ajLeaderboards 与其他插件的内置排行榜不匹配,这有可能是因为玩家在排行榜中缺失导致的。

关于这个现象发生的原因可以在常见问题的“为何排行榜只显示在服务器中的玩家?”和“管理员没有在排行榜上显示!)”了解。

如果这些方法还是没有解决,你可以参考常见问题的“玩家数据没有更新!”的解决办法。

我如何确保 ajLeaderboards 不会重置排行榜?

只需要确保你只使用 alltime 时间类型即可。如果你用了其他会重置的时间类型,则只需将其修改为 anytime,它不会被重置。

需要注意的是,alltime 只是简单地追踪目标变量的值,如果变量本身的数据被重置,那么它也会一并重置。反之则 alltime 不会重置。

如何在变量中进行数学计算?

你可以通过 Math 变量拓展进行数学计算(如通过除法获取某些百分比数值),这个变量拓展提供了诸如 %math[_[保留位数]:[取余模式]]_<表达式>% 的变量,允许你进行数学计算。需要注意的是变量中的方括号 [] 只是用于标注其为可选参数,另外 <> 表示必填参数。

例如,若要通过 statistics 和 math 变量拓展制作 KD 比排行榜,你可以将 %math_{statistic_player_kills}/{statistic_deaths}% 添加至 ajLeaderboards。

非常推荐将 math 的变量放入 ajLeaderboards 的排行榜,而非在输出变量上进行计算。但是,如果你真的需要这么做,请确保变量输出的值不带格式(rawvalue)。

math 变量会在你尝试除以 0 时(如上述 KD 比中没有死亡次数的玩家)将报错记录至控制台。为了防止刷屏,你可以在 math 变量拓展的配置中启用 Disable-Warnings 设置。需要注意的是,这会让数学表达式的排错变得困难,所以你只应在完成 math 变量设置之后,或者报错真的很多的时候启用这个。

如果你的数学表达式变量很复杂,你也可以使用缩写拓展将其缩短,这样你就可以更方便地输入排行榜的名称:

我的变量太长/复杂。我能修改排行榜名称让它不那么复杂吗?

你不能修改排行榜名称,它必须是变量。但你可以使用 Shortcut 变量拓展,制作一个名称较短的“缩写”变量,且输出和原本的变量相同。

首先,通过命令 /papi ecloud download Shortcut 下载变量拓展。

例如,若要缩写 %math_{statistic_player_kills}/{statistic_deaths}%,你可以在它的变量拓展文件夹(plugins/PlaceholderAPI/shortcuts)下新建一个 kdr.txt 文件,然后将完整的变量填入其中(本示例为 %math_{statistic_player_kills}/{statistic_deaths}%)。

之后,你就可以将 %shortcut_kdr% 放入 ajLeaderboards 并以 shortcut_kdr 为排行榜名称。

我如何列出 ajLeaderboards 追踪的所有排行榜?

ajLeaderboards 提供了 /ajlb list 命令,它可以显示所有注册在插件中的排行榜。

贡献者

页面历史