[align=center][attachimg]1905166[/attachimg]
[/align]
[align=left][b][size=6]用户前缀系统插件[/size][/b][/align][align=left][hr][/align][align=left][img]https://www.codefactor.io/repository/github/carmjos/userprefix/badge?s=b76fec1f64726b5f19989aace6adb5f85fdab840[/img] [img]https://github.com/CarmJos/UserPrefix/actions/workflows/maven.yml/badge.svg?branch=master[/img] [img]https://visitor-badge.glitch.me/badge?page_id=userprefix.readme[/img]
[/align]
[align=left]轻便、高效、实时的用户前缀系统。[/align]
[align=left]本插件基于Spigot实现，[b]理论上支持全版本[/b]。[/align]
[align=left][size=5][b]示例[/b][/size][/align][align=left][hr][/align]
[attachimg]1905175[/attachimg]
[align=left][size=5][b]依赖[/b][/size][/align][align=left][hr][/align]
[align=left][list]
[*][size=3][b][必须] [/b][/size]插件本体基于 [url=https://hub.spigotmc.org/stash/projects/SPIGOT][b]Spigot-API[/b][/url] 与 [b][url=http://bukkit.org/]BukkitAPI[/url] [/b]实现。
[*][size=3][b][必须] [/b][/size]数据部分基于 [url=https://www.spigotmc.org/resources/luckperms.28140/][b]LuckPerms[/b][/url] 实现。
[*][size=3][b][推荐][/b] [/size]变量部分基于 [url=https://www.spigotmc.org/resources/6245/][b]PlaceholderAPI[/b][/url] 实现。
[/list]
[/align]详细依赖列表可见 [url=https://github.com/CarmJos/UserPrefix/network/dependencies]软件依赖[/url] 。

[size=5][b]特性[/b][/size]
[hr]
[list]
[*]理论上[b]全版本支持[/b]！
[*]游戏内重载配置文件并实时更新到玩家！
[*]当玩家权限变更时会[b]实时监测前缀[/b]，若权限不足则[b]自动更换[/b]前缀并提示！
[*]可配置的声音、消息！
[*]前缀图标可配置“选中”、“有权限”与“无权限”三种状态的物品
[*]物品的配置通过ItemStack原生配置，支持MC所有的设定！
[*]TabList自动按照前缀的权重排序 (如有冲突可关掉)
[*]玩家头顶前缀实时显示 (如有冲突可关掉)
[*][b]自动排序[/b]，且[b]可翻页[/b]的GUI！
[*]支持PlaceholderAPI变量！(凡支持的都可以使用，如BungeeTabListPlus)
[*]支持Hex颜色！(1.16以上版本) 格式 [u]&(#颜色代码)[/u]
[/list][size=5][b]
注意事项[/b][/size]
[hr]
[size=4][b]1. 版本支持问题[/b][/size]
本插件理论全版本支持，如果出现图标不加载、声音无法播放等问题请检查配置文件中物品与声音的type在当前版本是否存在。
以声音举例，村民表示可以的声音在低版本中为 “[color=#000000][backcolor=silver]VILLAGER_YES[/backcolor][/color]”,而在高版本中则变为了“[backcolor=silver][color=#000000]ENTITY_VILLAGER_YES[/color][/backcolor]”。

[size=4][b]2. 计分板异常问题[/b][/size]
头顶上前缀的显示与TabList的排序均使用到了团队计分板API。
如有冲突导致其他插件的计分板无法显示，请关掉配置文件中 [u]functions.OnNamePrefix[/u]。

[size=4][b]3. 物品图标配置问题[/b][/size]
物品相关均通过Bukkit提供的ItemStack序列化方法读取，相关配置方式请参考[url=https://www.spigotmc.org/wiki/itemstack-serialization/]ItemStack Serialization(物品序列化)[/url]。

[size=5][b]指令[/b][/size]
[hr]
本插件指令部分较为简单，大多通过GUI实现。
[code]/UserPrefix 或 /prefix 打开前缀更换GUI
/UserPrefixAdmin 查看管理员指令帮助
/UserPrefixAdmin reload 重载配置文件
/UserPrefixAdmin list 查看已配置的前缀内容[/code]
[size=5][b]变量 (PlaceholderAPI)[/b][/size]
[hr]
安装 [url=https://github.com/PlaceholderAPI/PlaceholderAPI]PlaceholderAPI[/url]后，可以输入 [u]/papi info UserPrefix[/u] 查看相关变量。
变量内容如下
[code]# %UserPrefix_prefix%
- 得到当前正在使用的前缀
# %UserPrefix_weight%
- 得到当前正在使用的前缀权重
# %UserPrefix_identifier%
- 得到当前正在使用的前缀标识
# %UserPrefix_name%
- 得到当前正在使用的前缀名
# %UserPrefix_has_<Identifier>%
- 判断玩家是否拥有某个前缀(true/false)[/code][size=5][b]
配置文件示例[/b][/size]
[hr]
[size=4][b]基础配置文件 [/b][/size][color=#24292f][font=Tahoma][size=4](config.yml)[/size][/font][/color]
[spoiler]
[code]
version: ${project.version} #配置文件版本，若与插件版本不同请记得检查配置文件内容

debug: false

custom-storage:
  # 自定义存储位置
  # 默认存储位置为 “插件文件夹”/prefixes
  # 可以规定到远程文件夹中去寻找前缀相关的设定
  # 支持绝对文件路径，如 "/etc/minecraft/configurations/prefixes/"
  enable: false # 是否启用
  path: "prefixes/" # 一定要指向一个文件夹！

functions:
  OnNamePrefix: true # 是否给头顶上添加前缀，该方法用到了头顶的那个计分板，如有冲突请关掉哦~
  autoUsePrefix: true # 自动前缀显示 当玩家没有自己选择一个前缀的时候，会自动使用所拥有的的前缀中权重最高的那一个
  chat:
    # 聊天功能
    # - 我不推荐使用本插件的聊天功能，而是建议使用其他的聊天插件。
    # - 本插件仅仅提供了**最基本**的格式变量支持，不包含其他任何功能。
    # - 注意聊天格式需要遵守Bukkit原格式，即不得缺失 “%1$s” 和 “%2$s” 。
    # - 本插件的聊天功能不影响其他插件对聊天事件的操作。
    enable: false # 是否启用
    format: "<%UserPrefix_prefix%%1$s> %2$s" #聊天的格式，注意 “%1$s” 和 “%2$s” 不可缺少，分别代表 玩家名 与 消息内容 。

GUI:
  title: "&f&l我的前缀 &8| 列表"
  items:
    # 【必须】 GUI中可能存在的其他物品
    next-page: # 下一页物品，如果没有下一页则不显示
      ==: org.bukkit.inventory.ItemStack
      type: ARROW
      meta:
        ==: ItemMeta
        meta-type: UNSPECIFIC
        display-name: "§f下一页"
        lore:
          - ""
          - "§f右键可前往最后一页哦~"
    previous-page: # 上一页物品，如果没有上一页则不显示
      ==: org.bukkit.inventory.ItemStack
      type: ARROW
      meta:
        ==: ItemMeta
        meta-type: UNSPECIFIC
        display-name: "§f上一页"
        lore:
          - ""
          - "§f右键可前往第一页哦~"

Sounds: #相关的声音，注释掉则不播放声音 格式为 【声音名:音量:音调】 或 【声音名:音量】 或 【声音名】
  openGUI: "BLOCK_NOTE_BLOCK_PLING:1:1"
  guiClick: "UI_BUTTON_CLICK"
  prefixChange: "ENTITY_VILLAGER_YES"
  prefixExpired: "ENTITY_VILLAGER_NO"

# 默认前缀的配置
# 默认前缀的权重为0哦
defaultPrefix:
  name: "默认前缀"
  content: "&b"
  itemNotUsing:
    ==: org.bukkit.inventory.ItemStack
    type: NAME_TAG
    meta:
      ==: ItemMeta
      meta-type: UNSPECIFIC
      display-name: "§f默认玩家前缀 §f(点击切换)"
      lore:
        - ""
        - "§a➥ 点击切换到该前缀"
  itemUsing:
    ==: org.bukkit.inventory.ItemStack
    type: NAME_TAG
    meta:
      ==: ItemMeta
      meta-type: UNSPECIFIC
      display-name: "§f默认玩家前缀"
      lore:
        - ""
        - "§a✔ 您正在使用该前缀"
[/code]
[/spoiler]

[b][size=4][backcolor=transparent]消息配置文件[/backcolor][/size] [/b][size=4](messages.yml)[/size]
[spoiler][code]selected:
  - "&7您选择了 &f%(name) &7作为当前显示的前缀。"
expired:
  - "&7您先前使用的前缀 &f%(oldName) &7已到期。"
  - "&7现在已为您重新调整为 &f%(newName) &7。"
reload:
  - "&a&l重载完成！&7共耗时 &f%(time)ms&7。"
help:
  - "&3&l用户前缀系统 &f帮助"
  - "&8#/upa&f list"
  - "&8- &7查看当前前缀列表。"
  - "&8#/upa&f reload"
  - "&8- &7重载前缀配置。"
list-title:
  - "&3&l用户前缀系统 &f前缀列表"
list-value:
  - "&8#%(weight) &f%(identifier)"
  - "&8- &7显示名 &r%(name) &7权限 &r%(permission)"
  - "&8- &7内容示例&r %(content) %(sender_name)"[/code][/spoiler]

[size=4][backcolor=transparent][b]前缀配置文件[/b][/backcolor] (prefixes/*.yml) [自2.1.7可自定义目录][/size]
[align=left][font=-apple-system, BlinkMacSystemFont, &quot;][size=3][color=#000000]所有前缀均为单独的配置文件，存放于 [u]插件配置目录/prefixes[/u] 下，便于管理。[/color][/size][/font][/align][align=left][font=-apple-system, BlinkMacSystemFont, &quot;][size=3][color=#000000]文件名理论上可以随便取，推荐使用英文，部分符号可能会影响正常读取，请避免使用。[/color][/size][/font][/align][align=left][spoiler][/align][code]# 唯一标识 [必须]
# 将用于记录玩家所选的前缀，以及用于数据的缓存。
# 必须 必须 必须 保持唯一！
identifier: "pro"

# 名字 [必须]
# 切换的时候左下角会弹提示 用的就是这个名字
name: "&b&lPro&b"

# 内容 [必须]
# 显示在名字前面的内容
content: "§b§lPro §b"

# 权重 [必须]
# 用于GUI、TabList的排序和自动前缀显示
# 在GUI中，权重越高的会显示在越后面
# 在TabList中，权重越高的会显示在越上面
weight: 1

# 检测的权限 [非必须]
# 如果没有就是人人都能用，也代表不用配置“itemNoPermission”了(因为压根不可能显示没权限时候的物品)
permission: "yc.pro"

# 有权限时显示的物品  [必须]
# 当用户有权限且未选中时，会显示该物品
itemHasPermission: #
  ==: org.bukkit.inventory.ItemStack
  type: DIAMOND
  meta:
    ==: ItemMeta
    meta-type: UNSPECIFIC
    display-name: "§b§lPro §b会员前缀"
    lore:
      - "§7Pro会员专属称号"
      - ""
      - "§f尊贵的Pro会员专属称号。"
      - "§f您将获得多种特权与更好的游戏体验。"
      - ""
      - "§a➥ 点击切换到该前缀"

# 正在使用时显示的物品 [非必需]
# 当用户正在使用时会显示这个物品，不配置即自动加载“itemHasPermission”
itemUsing:
  ==: org.bukkit.inventory.ItemStack
  type: DIAMOND
  meta:
    ==: ItemMeta
    meta-type: UNSPECIFIC
    display-name: "§b§lPro §b会员前缀"
    enchants:
      PROTECTION_ENVIRONMENTAL: 1 #加一个附魔这样看上去就像是选中了的
    lore:
      - "§7Pro会员专属称号"
      - ""
      - "§f尊贵的Pro会员专属称号。"
      - "§f您将获得多种特权与更好的游戏体验。"
      - ""
      - "§a✔ 您正在使用该前缀"

# 没有权限时显示的物品 [非必需]
# 如果没有权限就会显示这个item。如果不配置该物品，则玩家没有使用权限时不会显示在GUI里面。
itemNoPermission:
  ==: org.bukkit.inventory.ItemStack
  type: INK_SACK
  damage: 8
  meta:
    ==: ItemMeta
    meta-type: UNSPECIFIC
    display-name: "§b§lPro+ §b会员前缀 §c(未拥有)"
    lore:
      - "§7Pro+会员专属称号"
      - ""
      - "§f尊贵的Pro会员专属称号。"
      - "§f您将获得多种特权与更好的游戏体验。"
      - "§f您可以输入 §b/vip §f指令查看详细特权！"
      - ""
      - "§e✯ 加入Pro+会员以使用该前缀！"[/code][align=left][/spoiler][/align]

[size=5][b]下载地址[/b][/size]
[hr]
[size=3][b]最新版本 [/b][/size][size=3][b]2.1.7 [/b][/size][attach]1919669[/attach][quote][b][size=3]更新内容[/size][/b]
1. 提供自定义配置文件存储位置的功能，便于多子服共享配置。(custome-storage)
2. 添加控制台打开玩家菜单时的反馈(来自 @Yuri南城 )。
3. 支持由控制台为其他玩家打开GUI。
4. 若出现新配置文件条目，将自动写入默认值，便于配置。[/quote][spoiler][size=3][b]2.1.2 [/b][/size][attach]1912028[/attach][quote][b][size=3]更新内容[/size][/b]
1. 修复不开启插件自带的头顶前缀功能时出现的报错。[/quote]
[size=3][b]2.1.0 [/b][/size][attach]1909962[/attach][quote][b][size=3]更新内容[/size][/b]
1. 添加聊天相关设定，支持聊天前缀。(但不推荐使用哦~)[/quote]
[size=3][b] 2.0.0 [/b][/size][attach]1905700[/attach]
[quote][b][size=3]更新内容[/size][/b]
1. 修复低版本可能无法读取物品的bug。
2. 分离配置文件，消息配置文件改为messages.yml，前缀配置文件改 prefixes/*.yml，便于配置和管理。
3. 允许配置GUI中上一页和下一页的物品。
4. 补全帮助文档，在插件首次加载将提供一份英文版的配置，以便使用。[/quote]
[size=3][b] 1.2.5 [/b][/size][attach]1905430[/attach][quote][size=3][b]更新内容[/b]
1. 支持指令的多语言配置。[/size][/quote]
[b][size=3]
1.2.4[/size][size=4] [/size][/b][attach]1905431[/attach]
[quote][size=3][b]更新内容：[/b]
1. 修复closeAll方法中，未移除玩家缓存的bug。
2. 当玩家权限更新时，将关闭玩家的GUI，令其自行打开刷新所有前缀。
3. 允许配置GUI的标题。[/size][/quote]
[size=3][b]1.2.3 [/b][/size][attach]1905406[/attach]
[quote][size=3][b]更新内容：[/b]
[/size][size=3]1. 支持Hex颜色！(1.16以上版本) 格式 [u]&(#颜色代码)[/u] ；[/size]
[size=3][backcolor=initial]-   如 “[/backcolor][/size][backcolor=initial][size=3]LightSlateBlue [u]&(#8470FF)[/u] ”、 “DarkSlateBlue [u]&(#483D8B)[/u]”。[/size][/backcolor]
[backcolor=initial][size=3]2. 修复未安装PlaceholderAPI的情况下可能导致的部分报错。[/size][/backcolor]
[backcolor=initial][size=3]
[/size][/backcolor]
[/quote]
[/spoiler]

更多版本请移步 [url=https://github.com/CarmJos/UserPrefix/releases]Releases · CarmJos/UserPrefix (github.com)[/url] 。


[size=5][b]开源地址[/b][/size]
[hr]
[size=3]本插件于 [/size][url=https://github.com/CarmJos/UserPrefix]Github[/url][size=3] 开源。[/size]
[size=3]
[/size]
[color=#24292f][font=-apple-system, BlinkMacSystemFont, &quot;][size=16px]本项目源码采用 [/size][/font][/color][url=https://opensource.org/licenses/GPL-3.0]GNU General Public License v3.0[/url][color=#24292f][font=-apple-system, BlinkMacSystemFont, &quot;][size=16px] 开源协议。[/size][/font][/color]
[font=-apple-system, BlinkMacSystemFont][color=#24292f][size=16px]
[/size][/color][/font][size=3]喜欢本插件的话，也可以去Github上给我点个小星星哦~
[/size]

[size=5][b]插件支持[/b][/size]
[hr]
[size=4]本项目由 [url=https://www.mcbbs.net/group-2077-1.html]YourCraft(你的世界)[/url] 团队提供长期支持与维护。
欢迎加入 [url=https://jq.qq.com/?_wv=1027&k=W634w2NT]YourCraft技术交流群[/url] 深入探讨开发问题。[/size]
[attachimg]1905173[/attachimg]




[hr]
[align=center][b][size=4][color=#ff0000]本插件所用所有代码均为原创,不存在借用/抄袭等行为[/color][/size][/b][/align]



