一个允许玩家控制生物生成的Spigot插件。

这个插件是为那些寻求快速高效排行榜系统的用户设计的,支持基于时间的排名,例如**每日**、**每周**、**每月**和**永久**排行榜。所有内容都通过**占位符**处理,无需 NPC 或菜单。 其主要优势在于轻松设置基于时间的排行榜——这是很少有插件真正擅长的领域。
|

|

|

|
| --- | --- | --- |

### 特点
- **完全重构的核心:** XLeaderBoards 已被完全重新设计,以支持 **SQLite** 和 **MySQL**,允许该插件在处理大量数据时轻松高效地扩展。
- **性能改进:** 已成功测试超过 200 万条真实记录,能够在一分钟内更新它们。
- **计时排行榜:** 具有高效的排名系统,完全支持**每日**、**每周**、**每月**和**永久**排行榜。
- **易于设置:** 只需使用占位符即可轻松创建和配置排行榜。
- **无限的可能性:** 借助基于占位符的逻辑,您可以为任何插件创建顶级信息——即使它缺少原生支持。 XLeaderBoards 自动处理数字格式和比较。
- **玩家排名:** 显示每个玩家在所有排行榜(每日、每周等)中的位置,并内置了占位符支持。
- **命令改进:** 添加了新功能,例如**自动补全**和 **/reload** 命令,以便于管理。
- **优化:** 完全可配置写入频率、数据限制和时间间隔,以适应服务器的容量和活动。
- **支持所有版本:** 包括对 **1.21.4** 到 **1.21.8** 的支持。 虽然 XLeaderBoards 不依赖于 NMS,但它包含版本特定的更改的兼容性逻辑。
- **Folia 支持:** 由于 Folia 正在成为现代 Minecraft 服务器的性能标准,XLeaderBoards 现在完全支持它——就像 **StellarProtect** 一样。
- **顶级奖励:** 您可以为每日排行榜上的玩家设置奖励。
- **需要更多功能?** 加入我们的 [Discord](https://discord.com/invite/4R9teKVcbM) 并提出新功能建议。 我们正在积极倾听社区反馈!

## 如何开始
1. **下载并安装插件。**
默认情况下,该插件开箱即支持 **SQLite** 和 **MySQL**。
2. **启动你的服务器。**
插件文件夹生成后,根据您选择的引擎配置您的数据库凭据。
3. **设置您的顶级信息。**
使用您选择的占位符创建自定义排行榜。
4. **与 DecentHolograms 或您喜欢的插件集成。**
确保您选择的插件支持 PlaceholderAPI,并按照以下示例配置操作。
5. **参考占位符部分。**
所有可用的占位符格式都列在专门的部分中。
DecentHolograms 示例配置
```yaml
location: Spawnb:6.022:33.500:11.943
enabled: true
display-range: 48
update-range: 48
update-interval: 20
facing: 0.0
down-origin: false
pages:
- lines:
- content: '#ICON: PLAYER_HEAD (eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvZWM2ZTYwNGJkNTNkOTc4ODc1OTVhMDYyYjdjNTEyY2E0ZGJiZmU0OGJiNGFkY2VmNzEyNWQxZGIxMDNhYjdmZiJ9fX0=)'
height: 0.7
- content: '#F4F149&lJ#F5F246&lU#F5F242&lG#F6F33F&lA#F7F33B&lD#F8F438&lO#F8F535&lR#F9F531&lE#FAF62E&lS
#FBF727&lM#FBF727&lI#FBF727&lL#FBF727&lL#FBF727&lO#FBF727&lN#FBF727&lA#FBF727&lR#FBF727&lI#FBF727&lO#FBF727&lS'
height: 0.3
- content: '&7(La riqueza y ellos son uno)'
height: 0.3
- content: ''
height: 0.3
- content: '#FBF727#1. &f%xleaderboard_top_coins;daily;top_name;1% &8- #FBF727%xleaderboard_top_coins;daily;top_value;1%
#FAFF2E⛃'
height: 0.3
- content: '#FBF727#2. &f%xleaderboard_top_coins;daily;top_name;2% &8- #FBF727%xleaderboard_top_coins;daily;top_value;2%
#FAFF2E⛃'
height: 0.3
- content: '#FBF727#3. &f%xleaderboard_top_coins;daily;top_name;3% &8- #FBF727%xleaderboard_top_coins;daily;top_value;3%
#FAFF2E⛃'
height: 0.3
- content: '#FBF727#4. &f%xleaderboard_top_coins;daily;top_name;4% &8- #FBF727%xleaderboard_top_coins;daily;top_value;4%
#FAFF2E⛃'
height: 0.3
- content: '#FBF727#5. &f%xleaderboard_top_coins;daily;top_name;5% &8- #FBF727%xleaderboard_top_coins;daily;top_value;5%
#FAFF2E⛃'
height: 0.3
- content: '&r'
height: 0.3
- content: '&8► &fTu posición: #FBF727#%xleaderboard_ranking_daily_coins% &8- #FBF727%xleaderboard_amount_daily_coins%
#FAFF2E⛃ &8◄'
height: 0.3
- content: '&r'
height: 0.3
- content: '#F4F149&l[Diario] &7[Semanal] [Mensual] [Permanente]'
height: 0.3
actions:
RIGHT:
- NEXT_PAGE:tops_DINERO
- SOUND:UI_BUTTON_CLICK:0.7:2.7
- lines:
- content: '#ICON: PLAYER_HEAD (eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvZWM2ZTYwNGJkNTNkOTc4ODc1OTVhMDYyYjdjNTEyY2E0ZGJiZmU0OGJiNGFkY2VmNzEyNWQxZGIxMDNhYjdmZiJ9fX0=)'
height: 0.7
- content: '#F4F149&lJ#F5F246&lU#F5F242&lG#F6F33F&lA#F7F33B&lD#F8F438&lO#F8F535&lR#F9F531&lE#FAF62E&lS
#FBF727&lM#FBF727&lI#FBF727&lL#FBF727&lL#FBF727&lO#FBF727&lN#FBF727&lA#FBF727&lR#FBF727&lI#FBF727&lO#FBF727&lS'
height: 0.3
- content: '&7(La riqueza y ellos son uno)'
height: 0.3
- content: ''
height: 0.3
- content: '#FBF727#1. &f%xleaderboard_top_coins;weekly;top_name;1% &8- #FBF727%xleaderboard_top_coins;weekly;top_value;1%
#FAFF2E⛃'
height: 0.3
- content: '#FBF727#2. &f%xleaderboard_top_coins;weekly;top_name;2% &8- #FBF727%xleaderboard_top_coins;weekly;top_value;2%
#FAFF2E⛃'
height: 0.3
- content: '#FBF727#3. &f%xleaderboard_top_coins;weekly;top_name;3% &8- #FBF727%xleaderboard_top_coins;weekly;top_value;3%
#FAFF2E⛃'
height: 0.3
- content: '#FBF727#4. &f%xleaderboard_top_coins;weekly;top_name;4% &8- #FBF727%xleaderboard_top_coins;weekly;top_value;4%
#FAFF2E⛃'
height: 0.3
- content: '#FBF727#5. &f%xleaderboard_top_coins;weekly;top_name;5% &8- #FBF727%xleaderboard_top_coins;weekly;top_value;5%
#FAFF2E⛃'
height: 0.3
- content: '&r'
height: 0.3
- content: '&8► &fTu posición: #FBF727#%xleaderboard_ranking_weekly_coins% &8- #FBF727%xleaderboard_amount_weekly_coins%
#FAFF2E⛃ &8◄'
height: 0.3
- content: '&r'
height: 0.3
- content: '&7[Diario] &7[Semanal] #F4F149&l[Mensual] &7[Permanente]'
height: 0.3
actions:
LEFT:
- PREV_PAGE:tops_DINERO
- SOUND:UI_BUTTON_CLICK:0.7:2.7
RIGHT:
- NEXT_PAGE:tops_DINERO
- SOUND:UI_BUTTON_CLICK:0.7:2.7
- lines:
- content: '#ICON: PLAYER_HEAD (eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvZWM2ZTYwNGJkNTNkOTc4ODc1OTVhMDYyYjdjNTEyY2E0ZGJiZmU0OGJiNGFkY2VmNzEyNWQxZGIxMDNhYjdmZiJ9fX0=)'
height: 0.7
- content: '#F4F149&lJ#F5F246&lU#F5F242&lG#F6F33F&lA#F7F33B&lD#F8F438&lO#F8F535&lR#F9F531&lE#FAF62E&lS
#FBF727&lM#FBF727&lI#FBF727&lL#FBF727&lL#FBF727&lO#FBF727&lN#FBF727&lA#FBF727&lR#FBF727&lI#FBF727&lO#FBF727&lS'
height: 0.3
- content: '&7(La riqueza y ellos son uno)'
height: 0.3
- content: ''
height: 0.3
- content: '#FBF727#1. &f%xleaderboard_top_coins;monthly;top_name;1% &8- #FBF727%xleaderboard_top_coins;monthly;top_value;1%
#FAFF2E⛃'
height: 0.3
- content: '#FBF727#2. &f%xleaderboard_top_coins;monthly;top_name;2% &8- #FBF727%xleaderboard_top_coins;monthly;top_value;2%
#FAFF2E⛃'
height: 0.3
- content: '#FBF727#3. &f%xleaderboard_top_coins;monthly;top_name;3% &8- #FBF727%xleaderboard_top_coins;monthly;top_value;3%
#FAFF2E⛃'
height: 0.3
- content: '#FBF727#4. &f%xleaderboard_top_coins;monthly;top_name;4% &8- #FBF727%xleaderboard_top_coins;monthly;top_value;4%
#FAFF2E⛃'
height: 0.3
- content: '#FBF727#5. &f%xleaderboard_top_coins;monthly;top_name;5% &8- #FBF727%xleaderboard_top_coins;monthly;top_value;5%
#FAFF2E⛃'
height: 0.3
- content: '&r'
height: 0.3
- content: '&8► &fTu posición: #FBF727#%xleaderboard_ranking_monthly_coins% &8- #FBF727%xleaderboard_amount_monthly_coins%
#FAFF2E⛃ &8◄'
height: 0.3
- content: '&r'
height: 0.3
- content: '&7[Diario] [Semanal] #F4F149&l[Mensual] &7[Permanente]'
height: 0.3
actions:
LEFT:
- PREV_PAGE:tops_DINERO
- SOUND:UI_BUTTON_CLICK:0.7:2.7
RIGHT:
- NEXT_PAGE:tops_DINERO
- SOUND:UI_BUTTON_CLICK:0.7:2.7
- lines:
- content: '#ICON: PLAYER_HEAD (eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvZWM2ZTYwNGJkNTNkOTc4ODc1OTVhMDYyYjdjNTEyY2E0ZGJiZmU0OGJiNGFkY2VmNzEyNWQxZGIxMDNhYjdmZiJ9fX0=)'
height: 0.7
- content: '#F4F149&lJ#F5F246&lU#F5F242&lG#F6F33F&lA#F7F33B&lD#F8F438&lO#F8F535&lR#F9F531&lE#FAF62E&lS
#FBF727&lM#FBF727&lI#FBF727&lL#FBF727&lL#FBF727&lO#FBF727&lN#FBF727&lA#FBF727&lR#FBF727&lI#FBF727&lO#FBF727&lS'
height: 0.3
- content: '&7(La riqueza y ellos son uno)'
height: 0.3
- content: ''
height: 0.3
- content: '#FBF727#1. &f%xleaderboard_top_coins;permanent;top_name;1% &8- #FBF727%xleaderboard_top_coins;permanent;top_value;1%
#FAFF2E⛃'
height: 0.3
- content: '#FBF727#2. &f%xleaderboard_top_coins;permanent;top_name;2% &8- #FBF727%xleaderboard_top_coins;permanent;top_value;2%
#FAFF2E⛃'
height: 0.3
- content: '#FBF727#3. &f%xleaderboard_top_coins;permanent;top_name;3% &8- #FBF727%xleaderboard_top_coins;permanent;top_value;3%
#FAFF2E⛃'
height: 0.3
- content: '#FBF727#4. &f%xleaderboard_top_coins;permanent;top_name;4% &8- #FBF727%xleaderboard_top_coins;permanent;top_value;4%
#FAFF2E⛃'
height: 0.3
- content: '#FBF727#5. &f%xleaderboard_top_coins;permanent;top_name;5% &8- #FBF727%xleaderboard_top_coins;permanent;top_value;5%
#FAFF2E⛃'
height: 0.3
- content: '&r'
height: 0.3
- content: '&8► &fTu posición: #FBF727#%xleaderboard_ranking_permanent_coins% &8- #FBF727%xleaderboard_amount_permanent_coins%
#FAFF2E⛃ &8◄'
height: 0.3
- content: '&r'
height: 0.3
- content: '&7[Diario] [Semanal] [Mensual] #F4F149&l[Permanente]'
height: 0.3
actions:
LEFT:
- PREV_PAGE:tops_DINERO
- SOUND:UI_BUTTON_CLICK:0.7:2.7
```
config.yml
```yaml
tops:
kills:
## This placeholder will parse to retrieve the current count of this leaderboard.
placeholder: "%statistic_player_kills%"
name: "Asesinatos"
databaseId: survival_top
debug: false
optimizations:
## Max bulk size for mongodb, if you have a lot of players, you can increase this value,
## but be careful with the memory usage.
max-bulk-size: 1000
## Max cached top entries your server loads on memory.
cached-top-entries: 10
## If you have a lot of players, you can increase this value.
ticks-between-updates: 600
## Max bulk size for resetting temporal values, this have minor size
## you can increase this value, but be careful with the memory usage.
max-reset-bulk-size: 5000
topUpdates:
daily:
minutes: 10
weekly:
minutes: 30
monthly:
hours: 3
permanent:
hours: 6
databases:
mongodb:
host: localhost
port: 27017
database: leaderboards
user: root
password: root
```
lang.yml
```yaml
tops:
noPermission: "&c您没有权限使用此命令。"
noRanking: "&6未排名"
noTop: "&6没有记录"
loading: "&f正在加载..."
hologram:
daily: "&6&l[每日] &7[每周] [每月] [永久]"
weekly: "&7[每日] &6&l[每周] &7[每月] [永久]"
monthly: "&7[每日] &7[每周] &6&l[每月] &7[永久]"
permanent: "&7[每日] &7[每周] &7[每月] &6&l[永久]"
daily: "每日"
weekly: "每周"
monthly: "每月"
permanent: "永久"
invalidTimeType: "&c排行榜时间类型无效。"
toggleWait: "&c请稍等片刻再更改排行榜时间。"
toggleTime: "&f排行榜时间现在是:&e"
tops: |-
&d &a
&6&l TOP
&d &f
&d &b
topLine: "&b#<#> &8- &f &8- &e"
```
rewards.yml
```yaml
enabled: false
rewards:
kills:
top1:
top: 1
rewards:
- "command: give diamond_sword"
- "message: &7 &a"
- "center_message: &6&lTOP &e# &6&lKILLS &f&l"
- "message: &7 &d"
- "message: &7您获得了钻石剑,在顶级榜单中停留了!"
- "message: &7 &a"
top2:
top: 2
rewards:
- "command: give iron_sword"
- "message: &7 &a"
- "center_message: &6&lTOP &e# &6&lKILLS &f&l"
- "message: &7 &d"
- "message: &7您获得了铁剑,在顶级榜单中停留了!"
- "message: &7 &a"
top3:
top: 3
rewards:
- "command: give stone_sword"
- "message: &7 &a"
- "center_message: &6&lTOP &e# &6&lKILLS &f&l"
- "message: &7 &d"
- "message: &7您获得了石剑,在顶级榜单中停留了!"
- "message: &7 &a"
```

|

|

|

|
| --- | --- | --- |

- **xleaderboards.forceupdate** » 强制更新顶级信息。
- **xleaderboards.gettop** » 获取每日、每周、每月或永久的顶级信息。

**TopName:**
- **name** - 这在 `config.yml` 键中设置。例如,在 `tops.coins` 中,“coins”是顶级信息名称。
**TimeType:**
- **daily** – 显示过去 24 小时内的顶级玩家或值。
- **weekly** – 显示过去 7 天内的顶级玩家或值。
- **monthly** – 显示过去 30 天内的顶级玩家或值。
- **permanent** – 永久显示顶级玩家或值。
**ValueType:**
- **top_name** – 显示此顶级索引位置上的玩家名称。
- **top_value** – 显示此顶级索引位置上的值。
- **top_uuid** – 显示此顶级索引位置上的玩家 UUID。
**Index:**
- **min** – 最小索引为 1。
- **max** – 最大索引是 `cached-top-entries` 在配置中设置的值。
%xleaderboard_top_
;;;%
Examples
```yaml
%xleaderboard_top_coins;daily;top_name;1%
%xleaderboard_top_coins;weekly;top_name;2%
%xleaderboard_top_coins;monthly;top_name;3%
%xleaderboard_top_coins;permanent;top_name;4%
%xleaderboard_top_coins;daily;top_value;1%
%xleaderboard_top_coins;weekly;top_value;2%
%xleaderboard_top_coins;monthly;top_value;3%
%xleaderboard_top_coins;permanent;top_value;4%
```
%xleaderboard_ranking__%
Examples
```yaml
%xleaderboard_ranking_daily_coins%
%xleaderboard_ranking_weekly_coins%
%xleaderboard_ranking_monthly_coins%
%xleaderboard_ranking_permanent_coins%
```
%xleaderboard_amount__%
Examples
```yaml
%xleaderboard_amount_daily_coins%
%xleaderboard_amount_weekly_coins%
%xleaderboard_amount_monthly_coins%
%xleaderboard_amount_permanent_coins%
```
%xleaderboard_update_cooldown_%
Examples
```yaml
%xleaderboard_update_cooldown_daily%
%xleaderboard_update_cooldown_weekly%
%xleaderboard_update_cooldown_monthly%
%xleaderboard_update_cooldown_permanent%
```
%xleaderboard_reset_cooldown_%
Examples
```yaml
%xleaderboard_reset_cooldown_daily%
%xleaderboard_reset_cooldown_weekly%
%xleaderboard_reset_cooldown_monthly%
```






More Images







