as616010480
本帖最后由 as616010480 于 2023-6-2 02:55 编辑


这是一款能满足你对Ranks系统所有要求的插件!先上图!!










- 特性 -货币可以选择Placeholders变量或者物品可以自定义rank升级要求可自定义GUI来展示rank可自定义多条rank成长路线玩家达成rank要求时自动提醒在聊天中展示rank前缀支持HeadDataBase和Base64数字格式化当然兼容IA的标签!(如上图的coal)

- 依赖 -PlaceholdersAPI(必选)
HeadDatabase(可选)用来美化GUI
- 命令 - - /rank 打开某条rank路线GUI (普通玩家默认)
- /rankinfo 通/rank (普通玩家默认)
- /rankup 提升你的rank (普通玩家默认)

- /rank set (player) 设置某位玩家的rank等级 (Admin)
- /rank reload 重载插件(Admin)
- /rank remove (player) 删除某位玩家的rank(Admin)
- /rank help 查看帮助(Admin)


- 教程 - 首先安装插件,降下面四个配置文件的内容替换(所有配置完全汉化,由本人完成)

打开rank界面:/rank

聊天前缀设置:在config.yml的最下方
prefix:
  #如果你不想让聊天框中显示玩家的rank,设置为false
  enabled: true
  # 这项设置会覆盖其他插件对聊天格式的设置
  # 如果你想让其他插件管理聊天格式,设置为false(建议)(这一块建议不要修改,最好用ess或者cmi或者其他聊天插件,你只需要这插件的一个前缀就行)
  overwrite-previous: false
  # 语言格式
  # {prefix} f代表rank
  # {name} 玩家名 - 当且仅当overwrite一项为true时才使用
  # placeholders 会被分析
  format: '&7[{prefix}&7]'
  # 初始的rank
  no-rank: '&fUnranked'
复制代码GUI自定义:打开gui.yml根据注释进行操作
自定义rank名以及rank升级路径:打开ranks.yml根据注释进行操作
所有操作在配置文件里都写的很详细,全汉化
下面是汉化的配置文件:config.yml# 玩家是否要确定升级
confirmation: true
# 这里用来配置升级的开销,玩家升级的时候扣除
currency:
  # 这里可以用原版的物品id,也可以用placeholders变量 - 比如: '%vault_eco_balance%'
  unit: DIAMOND
  # 如果你用的是金币的变量,加入这条扣钱命令 - ex: 'eco take {player} {amount}'
  remove-currency-commands:
  - msg {player} {amount} diamonds have been taken
  # 选择货币前面的符号 ex: $ or € or ¥
  prefix: ''
  suffix: '&b♦'
  # 显示小数点后几位,0代表不显示
  decimals: 0
# 是否使用HeadDataBase 或 Base64
head:
  # 如果你想在gui里使用玩家头颅,设置为true
  enabled: true
  # 当玩家完成要求时,gui里的头颅的编号 - HeadDataBase index 或者 Base64
  completed: 21771
# 当升级要求完成时,要求那一行发生的变化
requirement-completion:
  # 行的开头
  before: '&a&m'
  #  {req}之前
  prefix: ''
  #  {req}之后
  suffix: ''
  # 行的末尾
  after: ' &7(&a✓&7)'
# 大数的格式
number-formatting:
  # 0 - 禁用
  # 1 - 千
  # 2 - 小数
  type: 1
  # 每3位数之间的符号 ex: ',' = 10,000 | '.' = 10.000 | '' = 10000
  thousands: ','
  # 使用后缀 ex: 1000 = 1K | 1234 = 1.23K | 5467900 = 5.47M
  divisions:
    # 小数点后几位
    decimals: 1
    # 后缀,不建议修改
    '1000': K
    '1000000': M
    '1000000000': B
    '1000000000000': T
# 聊天框设置
prefix:
  # 如果你不想让聊天框中显示玩家的rank,设置为false
  enabled: true
  # 这项设置会覆盖其他插件对聊天格式的设置
  # 如果你想让其他插件管理聊天格式,设置为false(建议)(这一块建议不要修改,最好用ess或者cmi或者其他聊天插件,你只需要这插件的一个前缀就行)
  overwrite-previous: false
  # 语言格式
  # {prefix} f代表rank
  # {name} 玩家名 - 当且仅当overwrite一项为true时才使用
  # placeholders 会被分析
  format: '&7[{prefix}&7]'
  # 初始的rank
  no-rank: '&fUnranked'
复制代码gui.ymlcustom-items:
#用来填充格子的物品
  fill:
    # material 可以在这查看 https://hub.spigotmc.org/javadocs/spigot/org/bukkit/Material.html
    material: GRAY_STAINED_GLASS_PANE
    amount: 1
    # 为资源包预留,如果你不知道干嘛的就不用改
    custom-model-data: 10
    # name 和 lore 可以使用 placeholders 和 hex
    # {amount} 将会被替换为你要排序的值. 这个值会随着不同的GUI变化
    # {amount_tax} 将被替换为 {amount} * bounty tax
    # 这会使名字被隐藏
    name: '&r'
    lore: [ ]
    enchanted: false
    hide-nbt: true
    # 当物品被点击时出发的命令
    # 使用 {player} 替代玩家姓名
    # [close] 关闭GUI
    # [p] (command) 作为player发送命令
    # [next] 向前x页
    # [back] 向后x页
    # [gui] (gui name) (page) 打开一个新gui - 只有gui的名字时必须的, 例如: [gui] default | [gui] default 3
    # 在一开始添加 @{permission} at the beginning will check for a permission before executing the command. 使用!@ 会检查他们是否为拥有某权限
    #   例如: '@notbounties.admin [next]'只有玩家有权限,点击这个物品才会跳转到下一页 notbounties.admin
    #   '[email protected] [p] top' 会执行指令 /top 如果玩家没有权限 essentials.fly
    # {player} 会被替换为玩家名
    # {slot} 会被替换为rank路线和rank数字
    commands: [ ]
  custom-item-example:
      material: SUNFLOWER
      amount: 1
      enchanted: true
      hide-nbt: true
      name: '&e&lRank Menu'
      lore:
        - ''
        - '&6Complete requirements to'
        - '&6unlock special rewards'
        - ''
      commands:
        - '[gui] default 1'
  exit:
    material: BARRIER
    amount: 1
    name: '&c&lExit'
    commands:
      - '[close]'
  next:
    material: ARROW
    amount: 1
    name: '&7Next Page'
    commands:
      - '[next]'
  back:
    material: ARROW
    amount: 1
    name: '&7Previous Page'
    commands:
      - '[back]'
  confirm:
    material: LIME_STAINED_GLASS_PANE
    amount: 1
    name: '&a&lConfirm'
    commands:
      - '[p] rankup {slot13} --confirm'
      - '[close]'
  cancel:
    material: RED_STAINED_GLASS_PANE
    amount: 1
    name: '&c&lCancel'
    commands:
      - '[close]'
default:
  # 执行/rank指令时打开的GUI的名称
  gui-name: '&cRanks菜单'
  # 页码是否会被加入到菜单名上
  add-page: false
  # 自适应大小,把rank周围填满fill,并且GUI随着rank数增大而增大
  auto-size: true
  # 这个会替换下一页箭头并且将下一页箭头换成fill,除非还有页排在后面
  remove-page-items: true
  # 当你被拒绝的时候什么item会出现
  # 设置为 DISABLE 时会仅仅发一条消息
  # 设置为 RANK 时紧仅仅改变物体名称
  deny-click-item: STRUCTURE_VOID
  # 如果 auto-size is 开启了, 那么 next gui-options 不会起任何作用
  # gui的大小
  size: 27
  # 玩家是否要经理所有rank,不能跳级
  orderly-progression: true
  rank-slots:
    - '10-16'
  layout:
    1:
      # 哪些槽会被覆盖 - or - where x
      slot: 0-26
      # item 是 custom-items 中的item
      item: fill
    2:
      slot: 0
      item: custom-item-example
    3:
      slot: 18
      item: back
    4:
      slot: 26
      item: next
    5:
      slot: 22
      item: exit
# 当玩家点击时打开的菜单 (如果 confirmation 在config被开起时才有作用)
confirmation:
  gui-name: '&6&l你确定吗?'
  add-page: false
  auto-size: false
  remove-page-items: true
  deny-click-item: DISABLE
  size: 36
  orderly-progression: true
  rank-slots:
    - '13'
  layout:
    1:
      slot: 0-35
      item: fill
    2:
      slot: 31
      item: exit
    3:
      slot: 20
      item: cancel
    4:
      slot: 24
      item: confirm
#这里暂时没搞明白
example-path:
  gui-name: '&c&l玩家 Ranks'
  add-page: false
  auto-size: false
  remove-page-items: true
  deny-click-item: STRUCTURE_VOID
  size: 36
  orderly-progression: true
  rank-slots:
    - '10-16'
    - '22'
  layout:
    1:
      slot: 0-35
      item: fill
    2:
      slot: 27
      item: exit复制代码ranks.yml
# gui that opens with no path specified
default:
  '1':
    # I advise not to use spaces in the name, otherwise players will have to use rank numbers instead of names in commands
    name: '&7尕'
    # If HeadDataBase is installed, this will try and get a head ID, otherwise Base64
    head: 193
    # this item will be used if heads is disabled
    item: EMERALD_BLOCK
    # {cost} to get x/total - with 前缀 & suffix around each number
    # {req1} to get the first requirement x/total ({req2} {req3} etc)
    # lore will change from red to green after completion if there is ^^ included
    lore:
    - '&e &c&l晋级要求 &e'
    - '&7→ &f金币: {cost}'
    - '&7→ &f游戏时长: {req3}'
    - '&7→ &f击杀怪物数量: {req1}'
    - '&7→ &f破坏方块数: {req2}'
    - '&e &c&l奖励 &e'
    - '&7→ &9&lLv1 &f称号.'
    # this will change the lore when the rank is completed
    # this could be useful if you want to unlock lore or add a secret message
    completion-lore:
      enabled: false
      lore:
      - '&7'
      - '&a&l&n晋级成功'
      - '&7'
    hide-nbt: true
    requirements:
    - '%statistic_mob_kills% >= 100'
    - '%statistic_mine_block:STONE% >= 500'
    - '%statistic_hours_played% >= 1'
    # auto checks and takes away with options defined in currency
    cost: 3
    commands:
    - broadcast &e&lCongrats to &a{player} &e&lfor ranking up to &9&lStarter
# - 'lp user {player} promote playerranks'
example-path:
  '1':
    name: 'Lv1'
    head: 193
    item: STONE
    lore:
    - '&e &c&l奖励 &e'
    - '&7→ &f前缀: &7[Lv1&7] '
    - '&e &c&l晋级要求 &e'
    - '&7→ &f金币: {cost}'
    - '&7→ &f游戏时长: {req1}'
    - '&7→ &f击杀怪物数量: {req2}'
    - '&7→ &f破坏方块数: {req3}'
    requirements:
    - '%statistic_hours_played% >= 1'
    - '%statistic_mob_kills% >= 100'
    - '%statistic_mine_block:STONE% >= 500'
    cost: 5
    hide-nbt: true
    completion-lore:
      enabled: true
      lore:
      - '&7'
      - '&a&l&n晋级成功'
      - '&2&oCongratulations on'
      - '&2&oyour first rank!'
      - '&7'
    commands:
    - broadcast &e&lCongrats to &a{player} &e&lfor ranking up to &8&lWanderer
  '2':
    name: 'Lv2'
    head: 194
    item: BRICKS
    lore:
    - '&e &c&l奖励 &e'
    - '&7→ &f前缀: &7[Lv2&7] '
    - '&e &c&l晋级要求 &e'
    - '&7→ &f金币: {cost}'
    - '&7→ &f游戏时长: {req1}'
    - '&7→ &f养育的动物: {req2}'
    - '&7→ &f杀死的骷髅: {req3}'
    requirements:
    - '%statistic_hours_played% >= 3'
    - '%statistic_animals_bred% >= 10'
    - '%statistic_kill_entity:SKELETON% >= 25'
    cost: 15
    hide-nbt: true
    completion-lore:
      enabled: true
      lore:
      - '&7'
      - '&a&l&n晋级成功'
      - '&2&oDid you know?'
      - '&2&oThere is a 1% chance'
      - '&2&ofor a spider jockey'
      - '&2&oto spawn'
      - '&7'
    commands:
    - broadcast &e&lCongrats to &a{player} &e&lfor ranking up to &a&lCitizen
  '3':
    name: 'Lv3'
    head: 195
    item: ANVIL
    lore:
    - '&e &c&l奖励 &e'
    - '&7→ &f前缀: &7[Lv3&7] '
    - '&e &c&l晋级要求 &e'
    - '&7→ &f金币: {cost}'
    - '&7→ &f游戏时长: {req1}'
    - '&7→ &f打开的宝箱数: {req2}'
    - '&7→ &f攀爬的距离 (cm): {req3}'
    requirements:
    - '%statistic_hours_played% >= 8'
    - '%statistic_chest_opened% >= 100'
    - '%statistic_climb_one_cm% >= 1000'
    cost: 30
    hide-nbt: true
    completion-lore:
      enabled: true
      lore:
      - '&7'
      - '&a&l&n晋级成功'
      - '&2&oTip: 你不会'
      - '&2&o变慢'
      - '&2&o当你在攀爬中进食'
      - '&7'
    commands:
    - broadcast &e&lCongrats to &a{player} &e&lfor ranking up to &2&lApprentice
  '4':
    name: 'Lv4'
    head: 196
    item: GOLD_BLOCK
    lore:
    - '&e &c&l奖励 &e'
    - '&7→ &f前缀: &7[Lv4&7] '
    - '&e &c&l晋级要求 &e'
    - '&7→ &f金币: {cost}'
    - '&7→ &f游戏时长: {req1}'
    - '&7→ &f造成的伤害: {req2}'
    - '&7→ &f杀死的守卫者: {req3}'
    requirements:
    - '%statistic_hours_played% >= 16'
    - '%statistic_damage_dealt% >= 1000'
    - '%statistic_kill_entity:GUARDIAN% >= 500'
    cost: 64
    hide-nbt: true
    completion-lore:
      enabled: true
      lore:
      - '&7'
      - '&a&l&n晋级成功'
      - '&2&o你知道吗?'
      - '&2&oSquids are'
      - '&2&oGuardians'' archenemy'
      - '&7'
    commands:
    - broadcast &e&lCongrats to &a{player} &e&lfor ranking up to &d&lMerchant
  '5':
    name: 'Lv5'
    head: 197
    item: DIAMOND_SWORD
    lore:
    - '&e &c&l奖励 &e'
    - '&7→ &f前缀: &7[Lv5&7] '
    - '&e &c&l晋级要求 &e'
    - '&7→ &f金币: {cost}'
    - '&7→ &f游戏时长: {req1}'
    - '&7→ &f抓到的鱼: {req2}'
    - '&7→ &f骑着猪旅行的距离 (cm): {req3}'
    requirements:
    - '%statistic_hours_played% >= 30'
    - '%statistic_fish_caught% >= 50'
    - '%statistic_pig_one_cm% >= 1000'
    cost: 72
    hide-nbt: true
    completion-lore:
      enabled: true
      lore:
      - '&7'
      - '&a&l&n晋级成功'
      - '&2&o你会完成的'
      - '&2&o 当'
      - '&2&o猪会飞的时候'
      - '&7'
    commands:
    - broadcast &e&lCongrats to &a{player} &e&lfor ranking up to &6&lMaster
  '6':
    name: 'Lv6'
    head: 198
    item: EXPERIENCE_BOTTLE
    lore:
    - '&e &c&l奖励 &e'
    - '&7→ &f前缀: &7[Lv&7] '
    - '&e &c&l晋级要求 &e'
    - '&7→ &f金币: {cost}'
    - '&7→ &f游戏时长: {req1}'
    - '&7→ &fNights Slept: {req2}'
    - '&7→ &fWithers Killed: {req3}'
    requirements:
    - '%statistic_hours_played% >= 50'
    - '%statistic_sleep_in_bed% >= 50'
    - '%statistic_kill_entity:WITHER% >= 1'
    cost: 128
    hide-nbt: true
    completion-lore:
      enabled: true
      lore:
      - '&7'
      - '&a&l&n晋级成功'
      - '&2&o你知道吗?'
      - '&2&o凋零可以'
      - '&2&破坏黑曜石'
      - '&7'
    commands:
    - broadcast &e&lCongrats to &a{player} &e&lfor ranking up to &e&lElder
  '7':
    name: 'Lv7'
    head: 199
    item: BELL
    lore:
    - '&e &c&l奖励 &e'
    - '&7→ &f前缀: &7[Lv7&7] '
    - '&e &c&l晋级要求 &e'
    - '&7→ &f金币: {cost}'
    - '&7→ &f游戏时长: {req1}'
    - '&7→ &f村民交易次数 : {req2}'
    - '&7→ &f信标制造量: {req3}'
    - '&7→ &f填满的大锅数量: {req4}'
    requirements:
    - '%statistic_hours_played% >= 60'
    - '%statistic_traded_with_villager% >= 30'
    - '%statistic_craft_item:BEACON% >= 1'
    - '%statistic_cauldron_filled% >= 5'
    cost: 200
    hide-nbt: true
    completion-lore:
      enabled: true
      lore:
      - '&7'
      - '&a&l&n晋级成功'
      - '&2&oTip: 需要 164'
      - '&2&o方块去建造'
      - '&2&o一个最高等级的beacon'
      - '&7'
    commands:
    - broadcast &e&lCongrats to &a{player} &e&lfor ranking up to &4&lChief
  '8':
    name: 'Lv8'
    head: 200
    item: NETHERITE_CHESTPLATE
    lore:
    - '&e &c&l奖励 &e'
    - '&7→ &f前缀: &7[&b&lC&3&lh&b&la&3&lm&b&lp&3&li&b&lo&3&ln&7] '
    - '&e &c&l晋级要求 &e'
    - '&7→ &f金币: {cost}'
    - '&7→ &f游戏时长: {req1}'
    - '&7→ &f吃掉的蛋糕片: {req2}'
    - '&7→ &f杀掉的warden数量: {req3}'
    - '&7→ &fAncient Debris的挖掘数量: {req4}'
    requirements:
    - '%statistic_hours_played% >= 72'
    - '%statistic_cake_slices_eaten% >= 13'
    - '%statistic_kill_entity:WARDEN% >= 1'
    - '%statistic_mine_block:ANCIENT_DEBRIS >= 24%'
    cost: 500
    hide-nbt: true
    completion-lore:
      enabled: true
      lore:
      - '&7'
      - '&a&l&n晋级成功'
      - '&2&o感谢游玩!'
      - '&7'
    commands:
    - broadcast &e&lCongrats to &a{player} &e&lfor ranking up to &b&lC&3&lh&b&la&3&lm&b&lp&3&li&b&lo&3&ln
复制代码language.yml
# 当玩家升级时播放给所有人的聊天消息 (用 '' 替换,如果你不想要任何消息)
rankup: '&e{player} 晋升到了 {rank}!'
# 玩家尝试升级但是升级条件未达成时发送给当前玩家的消息
rankup-deny: '&c你尚未满足晋级条件!'
# 当玩家输入未知命令时发送给他的消息
unknown-command: '&c未知命令!'
# 玩家尝试输入管理员命令时发送的消息
no-access: '&cYou do not have access to this command!'
# 玩家打开GUI时发送的消息
open-gui: ''
# 玩家尝试越级晋升时发送的消息
not-on-rank: '&c你还没有达到此排名!'
# 当玩家完成他们下一个排名的一条要求时发送的消息
complete-requirement: '&e你已经完成了{path}这条路径上的下一个rank的一条要求! 输入&f/rank {path} &7来确认你的进步!'
# 当玩家满足下一个rank的所有要求时发送的消息
complete-rank: '&e一个新的rank已经解锁! 路径: {path}!'
# 系统信息的前缀
prefix: '&7[&6&lRanks系统&7] &8> &r'
# 当玩家达到最大等级仍然企图晋级时发送的消息
max-rank: '&c你已经达到了最高排名!'
# 当然加输入了一个不存在的path时发送的消息
unknown-rank-path: '&c未知晋级路径!'
复制代码