- 版权类型
- 原创
- 插件中文名称
- 统计排行榜
- 插件英文名称
- PlayerTopList
- 原帖地址
- #
- 支持的核心(服务端)
- Paper
- Folia
- Purpur
- 语言支持
- 中文(简体)
- 适配版本(Java)
- 1.21
- 1.20
[PTL] 基于mc统计信息的排行榜插件
服务端需求
- 支持paper,folia,purpur等paper系列的服务端
- 理论支持版本为1.20.1及以上,如果遇到兼容性问题欢迎提出
插件特点
- 使用mc内置的统计信息,无需使用额外的数据存储
- 可以使用miniMessage自定义排行榜文字UI
- 可以使用数学公式来对最终呈现的数字结果进行修改
- 可以对显示结果进行格式化
- 可以在材料或者实体列表中使用mc的标签,快速选定材料
- 可以使用place holder作为排行榜变量
- 内置4个place holder变量,方便扩展
- 支持升序/降序排列,应对多种情况
- 支持黑名单和玩家名称过滤,方便控制上榜玩家
不联网不储存数据,不用担心sql后门()
插件命令
- /ptl reload 重载配置
- /ptl show <排行榜名称> 显示指定的排行榜
插件权限
- playertoplist.admin 玩家能否执行插件的重载,默认为op
- playertoplist.view 玩家能否查看排行榜,默认为true
PlaceHolder
- %ptl_player_rank_<排行榜名称>% 玩家在指定排行榜的排名
- %ptl_player_count_<排行榜名称>% 玩家在指定排行榜的数值
- %ptl_player_rank_sum_<排行榜名称1>_<排行榜名称2>_...% 玩家在所有指定的排行榜排名之和
- %ptl_player_count_sum_<排行榜名称1>_<排行榜名称2>_...% 玩家在所有指定的排行榜数值之和
默认配置
YAML:
# 每一页上应该有多少玩家
page-size: 10
# 排行榜更新间隔(单位为秒)(不小于30)
update-interval: 60
# 黑名单玩家
blacklist:
- "whhhh"
# 排除玩家名正则表达式
exclude-regex: "-"
# 更新不在线玩家的概率
# 取值: 0-1 (0禁止不在线玩家更新, 1始终更新所有玩家)
# 值越高则不在线玩家更新概率越大, 占用更高
# 值越小则不在线玩家更新概率越小, 占用更小
update-offline-chance: 0.5
# 开启正版/离线UUID过滤
# 开启后正版服将不会显示离线登陆的玩家
# 离线服将不会显示正版登录的玩家
# 如果你的服务器遇到排行榜玩家重复的问题(开关过正版验证, 或者vc等代理配置问题)
# 开启这个选项可能修复
uuid-filter: false
# 自定义UI部分
ui:
header: "<bold>================ <hover:show_text:'<yellow>更新时间: <#FFA500>{updateTime}</#FFA500></yellow>'>{listName} ================</bold>"
footer: "<aqua>{prevButton}当前: (<white>{currentIndex}</white>/<white>{totalIndex}</white>){nextButton}</aqua>"
prev-button: "<hover:show_text:'上一页'><dark_aqua> <- </dark_aqua></hover>"
next-button: "<hover:show_text:'下一页'><dark_aqua> -> </dark_aqua></hover>"
item: "<gray>⬡</gray> <white>{num}. <green>{playerName}</green> <grey>-</grey> <dark_green>{count}</dark_green></white>"
current-item: "<light_purple>⬡</light_purple> <yellow>{num}. <green>{playerName}</green> <grey>-</grey> <dark_green>{count}</dark_green></yellow>"
# 排行榜部分
lists:
#示例:
#这个是排行榜名称
挖掘总榜:
# (可选) 这个是排行榜显示颜色
color: "#FFA500"
# (必填) 这个是统计数据类型, 可用值见附录1
# 也可以使用place holder, 具体使用方法见下方跑图榜
type: MINE_BLOCK
# (选择性必填) 当类型为Statistic.Type.BLOCK或者Statistic.Type.ITEM时必填
# 除了材料名称外可用值: all, items, blocks, solid
# 支持使用标签, 见附录4
# 其他可用值见附录2
# 注意!!!该项为列表类型
material: [solid]
# (选择性必填) 当类型为Statistic.Type.ENTITY时必填
# 除了实体名称外可用值: all, alive
# 支持使用标签, 见附录4
# 其他可用值见附录3
# 注意!!!该项为列表类型
entity: [all]
# (选填) 是否隐藏
hidden: false
# (选填) 数值表达式:
# 用于修正排行榜数值
expression: "count / 64"
# (选填) 数字格式:
# java格式化字符串
formatter: "%.1f 组"
# (选填) 排序:
# false: 从大到小
# true: 从小到大
reversed: false
总榜:
color: "#FB156B"
type: "%ptl_player_rank_sum_挖掘总榜_放置榜_挖矿榜_跑图榜_击杀总榜_击杀玩家榜_死亡榜_钓鱼榜_附魔榜_合成榜_交易榜_在线时间%"
reversed: true
formatter: "%.0f 排名和"
放置榜:
color: "#A52A2A"
type: USE_ITEM
material: [ blocks ]
expression: "count / 64"
formatter: "%.1f 组"
挖矿榜:
color: "#FFD700"
type: MINE_BLOCK
material: [ coal_ores, copper_ores, diamond_ores, emerald_ores, gold_ores, lapis_ores, redstone_ores, NETHER_QUARTZ_ORE, ANCIENT_DEBRIS ]
expression: "count / 64"
formatter: "%.1f 组"
跑图榜:
color: "#00FF00"
type: "%ptl_player_count_sum_走路榜_跑步榜_飞行榜%"
expression: "count / 100 / 1000"
formatter: "%.1f 公里"
击杀总榜:
color: "#FF00FF"
type: MOB_KILLS
击杀玩家榜:
color: "#FF0022"
type: PLAYER_KILLS
死亡榜:
color: "#8B0000"
type: DEATHS
钓鱼榜:
color: "#0000FF"
type: FISH_CAUGHT
附魔榜:
color: "#ADD8E6"
type: ITEM_ENCHANTED
合成榜:
color: "#FFA500"
type: CRAFT_ITEM
material: [ all ]
expression: "count / 64"
formatter: "%.1f 组"
交易榜:
color: "#31FFB1"
type: TRADED_WITH_VILLAGER
在线时间:
color: "#FF00FF"
type: PLAY_ONE_MINUTE
expression: "count / 20 / 60 / 60"
formatter: "%.1f 小时"
# 下面这些是作为跑图榜的计算来源
走路榜:
hidden: true
type: WALK_ONE_CM
跑步榜:
hidden: true
type: SPRINT_ONE_CM
飞行榜:
hidden: true
type: AVIATE_ONE_CM
# 附录
# 1.可用统计类型见: https://bukkit.windit.net/javadoc/org/bukkit/Statistic.html
# 2.可用材料类型见: https://bukkit.windit.net/javadoc/org/bukkit/Material.html
# 3.可用实体类型见: https://bukkit.windit.net/javadoc/org/bukkit/entity/EntityType.html
# 4.可用标签及对应材料见: https://zh.minecraft.wiki/w/%E6%A0%87%E7%AD%BE?variant=zh-cn#%E6%A0%87%E7%AD%BE%E5%88%97%E8%A1%A8