1
mirror of https://github.com/CarmJos/UserPrefix.git synced 2026-06-14 03:41:10 +08:00

Compare commits

...

46 Commits

Author SHA1 Message Date
carm 9f738ff1ae 修改版本号 2021-11-21 20:01:49 +08:00
carm f23fa03f7a 添加ASCII文字与插件介绍 2021-11-21 19:53:12 +08:00
carm cf749bf5c0 添加下载地址 2021-11-02 11:47:13 +08:00
Carm 01e321686f Merge pull request #6 from CarmJos/dependabot/maven/junit-junit-4.13.1
Bump junit from 4.13 to 4.13.1
2021-10-30 17:59:07 +08:00
dependabot[bot] deba26c713 Bump junit from 4.13 to 4.13.1
Bumps [junit](https://github.com/junit-team/junit4) from 4.13 to 4.13.1.
- [Release notes](https://github.com/junit-team/junit4/releases)
- [Changelog](https://github.com/junit-team/junit4/blob/main/doc/ReleaseNotes4.13.1.md)
- [Commits](https://github.com/junit-team/junit4/compare/r4.13...r4.13.1)

---
updated-dependencies:
- dependency-name: junit:junit
  dependency-type: direct:development
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-10-30 09:56:26 +00:00
Carm 5b4d49f6ed Create codeql-analysis.yml 2021-10-30 17:54:55 +08:00
carm 2e5250dd36 更新帖子 2021-10-25 08:10:54 +08:00
carm 88730c98f2 更新帖子 2021-10-25 07:58:43 +08:00
carm e003a543f5 支持由控制台为其他玩家打开GUI 2021-10-24 21:22:08 +08:00
Carm 07edaeb401 Merge pull request #5 from Yurinann/master
添加控制台尝试打开称号菜单时的反馈
2021-10-24 21:17:10 +08:00
carm 2357699324 自动提交默认值 2021-10-24 21:14:29 +08:00
“Yurinan” c2fa1a1e95 添加控制台尝试打开称号菜单时的反馈 2021-10-24 14:29:57 +08:00
carm 3b03ec4616 修改readme 2021-10-24 07:22:23 +08:00
carm 1a2644210b 2.1.7 提供自定义配置文件存储位置的功能 2021-10-24 07:12:47 +08:00
carm 83b9ced6f5 2.1.6 补充介绍,优化部署密钥配置。 2021-10-21 21:46:01 +08:00
carm dd96c6d6da 修改源地址 2021-10-19 10:49:35 +08:00
carm ba7d4b90c3 修改源地址 2021-10-19 10:47:55 +08:00
carm ab984acc73 修改源地址 2021-10-19 10:41:18 +08:00
carm 32df1de83d 2.1.5
1. 修复示例config中yaml格式错误的问题
2. 更改构建方式,分开构建与部署的工作流。
2021-10-19 10:40:02 +08:00
carm dfe447393e 2.1.5
1. 修复示例config中yaml格式错误的问题
2. 更改构建方式,分开构建与部署的工作流。
2021-10-19 10:37:41 +08:00
Carm 26ce6d7e66 Merge pull request #3 from OskyEdz/patch-1
YAML formatting
2021-10-19 10:16:04 +08:00
OskyEdz 2e4d1122d9 YAML formatting
Fixed mapping values are not allowed in this context error.
2021-10-19 02:15:38 +02:00
carm b5a2199e1e Update .gitignore 2021-10-19 00:37:07 +08:00
carm 3678a201c7 2.1.4 修改tag机制与测试部署 2021-10-07 23:04:00 +08:00
carm f08a5e84d3 2.1.3 自动构建与部署 (无实质更新) 2021-10-07 22:52:20 +08:00
carm 7743bbb3ff 2.1.3 自动构建与部署 (无实质更新) 2021-10-07 22:50:23 +08:00
carm 1942c50078 2.1.3 自动构建与部署 (无实质更新) 2021-10-07 22:40:53 +08:00
carm 2b701510bc 添加更多maven介绍 2021-10-07 22:37:31 +08:00
carm 0d17e7f1b6 添加packages自动部署 2021-10-07 21:51:16 +08:00
carm 3a41560972 添加packages自动部署 2021-10-07 21:49:39 +08:00
Carm 313aa77d72 Update README.md 2021-10-05 19:40:48 +08:00
Carm dab774a389 Update README.md 2021-10-05 19:29:51 +08:00
Carm 5469c3101f Delete PAY.jpg 2021-10-05 19:29:38 +08:00
Carm dbf826cec8 补全协议介绍 2021-10-05 18:17:08 +08:00
Carm 87c87127b9 Update maven.yml 2021-10-05 18:14:41 +08:00
Carm 50c35488ef Update README.md 2021-10-03 23:54:12 +08:00
Carm 29539ddb6f Update README-en.md 2021-10-03 23:53:40 +08:00
Carm cab2b60abf add code link 2021-10-03 17:57:22 +08:00
Carm 693ff4a4af 添加相关代码参考的地址 2021-10-03 17:28:48 +08:00
Carm 7c90b8ff99 Rename ----.md to feature_issues.md 2021-10-02 17:00:06 +08:00
Carm e5ba217873 Update issue templates 2021-10-02 16:59:42 +08:00
Carm 33e0e64b7d Rename ----.md to bugs_report.md 2021-10-02 16:54:01 +08:00
Carm 6eb60d83d8 添加问题issues模板 2021-10-02 16:53:24 +08:00
carm 875655bc60 2.1.2版本更新 修复 “OnNamePrefix” 为true时存在的报错现象 2021-10-02 15:41:39 +08:00
carm 9ca289e4ba 2.1.1版本更新 修复 “OnNamePrefix” 为false时存在的报错现象 2021-10-02 15:40:35 +08:00
carm 41a9582d03 2.1.1版本更新 修复 “OnNamePrefix” 为false时存在的报错现象 2021-10-02 15:24:54 +08:00
22 changed files with 658 additions and 227 deletions
+30
View File
@@ -0,0 +1,30 @@
---
name: 问题提交
about: 提交并描述问题,帮助我们对其进行检查与修复。
title: ''
labels: bug
assignees: ''
---
**问题简述**
用简短的话语描述一下大概问题。
**问题来源**
描述一下通过哪些操作才发现的问题,如:
1. 打开 '...'
2. 点击了 '....'
3. 出现了报错 '....'
**预期结果**(可选)
如果问题不发生,应该是什么情况
**问题截图/问题报错**
如果有报错或输出,请提供截图。
**操作环境**
请在后台输入 `version` 并复制相关输出。
**其他补充**
如有其他补充,可以在这里描述。
+20
View File
@@ -0,0 +1,20 @@
---
name: 功能需求
about: 希望我们提供更多的功能。
title: ''
labels: enhancement
assignees: ''
---
**功能简述**
简单的描述一下你想要的功能
**需求来源**
简单的描述一下为什么需要这个功能。
**功能参考**(可选)
如果有相关功能的参考,如文本、截图,请提供给我们。
**附加内容**
如果有什么小细节需要重点注意,请在这里告诉我们。
+70
View File
@@ -0,0 +1,70 @@
# For most projects, this workflow file will not need changing; you simply need
# to commit it to your repository.
#
# You may wish to alter this file to override the set of languages analyzed,
# or to provide custom queries or build logic.
#
# ******** NOTE ********
# We have attempted to detect the languages in your repository. Please check
# the `language` matrix defined below to confirm you have the correct set of
# supported CodeQL languages.
#
name: "CodeQL"
on:
push:
branches: [ master ]
pull_request:
# The branches below must be a subset of the branches above
branches: [ master ]
schedule:
- cron: '44 6 * * 4'
jobs:
analyze:
name: Analyze
runs-on: ubuntu-latest
permissions:
actions: read
contents: read
security-events: write
strategy:
fail-fast: false
matrix:
language: [ 'java' ]
# CodeQL supports [ 'cpp', 'csharp', 'go', 'java', 'javascript', 'python', 'ruby' ]
# Learn more about CodeQL language support at https://git.io/codeql-language-support
steps:
- name: Checkout repository
uses: actions/checkout@v2
# Initializes the CodeQL tools for scanning.
- name: Initialize CodeQL
uses: github/codeql-action/init@v1
with:
languages: ${{ matrix.language }}
# If you wish to specify custom queries, you can do so here or in a config file.
# By default, queries listed here will override any specified in a config file.
# Prefix the list here with "+" to use these queries and those in the config file.
# queries: ./path/to/local/query, your-org/your-repo/queries@main
# Autobuild attempts to build any compiled languages (C/C++, C#, or Java).
# If this step fails, then you should remove it and run the build manually (see below)
- name: Autobuild
uses: github/codeql-action/autobuild@v1
# ️ Command-line programs to run using the OS shell.
# 📚 https://git.io/JvXDl
# ✏️ If the Autobuild fails above, remove it and uncomment the following three lines
# and modify them (or add more) to build your code if your project
# uses a compiled language
#- run: |
# make bootstrap
# make release
- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@v1
+33
View File
@@ -0,0 +1,33 @@
# This workflow will build a Java project with Maven, and cache/restore any dependencies to improve the workflow execution time
# For more information see: https://help.github.com/actions/language-and-framework-guides/building-and-testing-java-with-maven
name: Deploy
on:
# 支持手动触发构建
workflow_dispatch:
release:
# 创建release的时候触发
types: [ published ]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: "Set up JDK"
uses: actions/setup-java@v2
with:
java-version: '11'
distribution: 'adopt'
cache: maven
server-id: github
server-username: MAVEN_USERNAME
server-password: MAVEN_TOKEN
- name: "Deploy"
run: mvn -B deploy --file pom.xml -DskipTests
env:
MAVEN_USERNAME: ${{ github.repository_owner }}
MAVEN_TOKEN: ${{secrets.GITHUB_TOKEN}}
+16 -9
View File
@@ -1,13 +1,12 @@
# This workflow will build a Java project with Maven, and cache/restore any dependencies to improve the workflow execution time # This workflow will build a Java project with Maven, and cache/restore any dependencies to improve the workflow execution time
# For more information see: https://help.github.com/actions/language-and-framework-guides/building-and-testing-java-with-maven # For more information see: https://help.github.com/actions/language-and-framework-guides/building-and-testing-java-with-maven
name: Java CI with Maven name: Build
on: on:
# 支持手动触发构建
workflow_dispatch:
push: push:
branches: [ master ]
pull_request:
branches: [ master ]
jobs: jobs:
build: build:
@@ -16,16 +15,24 @@ jobs:
steps: steps:
- uses: actions/checkout@v2 - uses: actions/checkout@v2
- name: Set up JDK 11 - name: "Set up JDK"
uses: actions/setup-java@v2 uses: actions/setup-java@v2
with: with:
java-version: '11' java-version: '11'
distribution: 'adopt' distribution: 'adopt'
cache: maven cache: maven
- name: Build with Maven server-id: github
server-username: MAVEN_USERNAME
server-password: MAVEN_TOKEN
- name: "Package"
run: mvn -B package --file pom.xml run: mvn -B package --file pom.xml
- run: mkdir staging && cp target/*.jar staging env:
- uses: actions/upload-artifact@v2 MAVEN_USERNAME: ${{ github.repository_owner }}
MAVEN_TOKEN: ${{secrets.GITHUB_TOKEN}}
- name: "Target Stage"
run: mkdir staging && cp target/*.jar staging
- name: "Upload artifact"
uses: actions/upload-artifact@v2
with: with:
name: Package name: Artifact
path: staging path: staging
+1
View File
@@ -1,3 +1,4 @@
/.idea/ /.idea/
/target/ /target/
./*.iml ./*.iml
*.iml
+15 -7
View File
@@ -16,9 +16,9 @@ This plugin is implemented based on Spigot ,**Theoretically** support ALL MineCr
The development of this plugin is based on Chinese which purpose is to help Chinese developers learn Bukkit plugin The development of this plugin is based on Chinese which purpose is to help Chinese developers learn Bukkit plugin
development. development.
This plugin has been published on [SpigotMC](https://www.spigotmc.org/resources/userprefix.96277/) . > This plugin has been published on [SpigotMC](https://www.spigotmc.org/resources/userprefix.96277/) .
本插件已在 [MCBBS](https://www.mcbbs.net/forum.php?mod=viewthread&tid=1261503) 上发布,欢迎中文用户来这里下载。 > 本插件已在 [MCBBS](https://www.mcbbs.net/forum.php?mod=viewthread&tid=1261503) 上发布,欢迎中文用户来这里下载。
## Examples ## Examples
@@ -37,15 +37,16 @@ For development dependencies, please see [Dependencies](https://github.com/Carm
- **Theoretically** support ALL MineCraft Versions. - **Theoretically** support ALL MineCraft Versions.
- Reloading the configuration will automatically refresh the prefix of all players. - Reloading the configuration will automatically refresh the prefix of all players.
- Real-time judgment and feedback to the player when permissions are changed. - Real-time judgment and feedback to the player when permissions are changed. [](https://github.com/CarmJos/UserPrefix/blob/master/src/main/java/cc/carm/plugin/userprefix/listener/processor/UserNodeUpdateProcessor.java)
- Configurable sounds and messages. - Configurable sounds and messages.
- The prefix icon can be configured as "Selected", "Has Permission" and “No Permission”. - The prefix icon can be configured as "Selected", "Has Permission" and “No Permission”.
- Item configuration is natively configured through ItemStack, which supports all MC settings! - Item configuration is natively configured through ItemStack, which supports all MC settings!
- TabList is automatically sorted according to the weight of the prefix (if there is a conflict, it can be turned off) - TabList is automatically sorted according to the weight of the prefix (if there is a conflict, it can be turned off)
- The prefix display on the player name (can be turned off if there is a conflict) - The prefix display on the player name (can be turned off if there is a conflict) [](https://github.com/CarmJos/UserPrefix/blob/master/src/main/java/cc/carm/plugin/userprefix/nametag/UserNameTag.java)
- GUI with automatic sorting and page turning! - Simple Chat Format Placeholder support. (Not Recommended) [](https://github.com/CarmJos/UserPrefix/blob/master/src/main/java/cc/carm/plugin/userprefix/listener/ChatListener.java)
- Support PlaceholderAPI variables! - GUI with automatic sorting and page turning! [](https://github.com/CarmJos/UserPrefix/blob/master/src/main/java/cc/carm/plugin/userprefix/ui/PrefixSelectGUI.java)
- Support Hex color! (Version 1.16 and above) `&(#Color)` - Support PlaceholderAPI variables! [](https://github.com/CarmJos/UserPrefix/blob/master/src/main/java/cc/carm/plugin/userprefix/hooker/UserPrefixExpansion.java)
- Support [Hex Color](https://www.hexcolortool.com/)! (Version 1.16 and above) `&(#Color)` [](https://github.com/CarmJos/UserPrefix/blob/master/src/main/java/cc/carm/plugin/userprefix/util/ColorParser.java)
- Example: LightSlateBlue `&(#8470FF)` 、 DarkSlateBlue `&(#483D8B)` - Example: LightSlateBlue `&(#8470FF)` 、 DarkSlateBlue `&(#483D8B)`
## Notice ## Notice
@@ -113,6 +114,13 @@ version: ${project.version} # DO NOT EDIT IT
debug: false #DEBUG OUT PUT debug: false #DEBUG OUT PUT
custom-storage:
# Custom storage location
# default location is "./prefixes"
# Support absolute file path , such as "/etc/minecraft/configurations/prefixes/"
enable: false
path: "prefixes/" # Must be a folder!
GUI: GUI:
title: "&f&lMy Prefixes List" # Title of the GUI title: "&f&lMy Prefixes List" # Title of the GUI
items: items:
+42 -8
View File
@@ -13,9 +13,9 @@
本插件基于Spigot实现,**理论上支持全版本**。 本插件基于Spigot实现,**理论上支持全版本**。
本插件已在 [MCBBS](https://www.mcbbs.net/forum.php?mod=viewthread&tid=1261503) 与 [SpigotMC](https://www.spigotmc.org/resources/userprefix-hex-color-support-all-version.96277/) 上发布。 The **English version** of the introduction is [here](https://github.com/CarmJos/UserPrefix/blob/master/README-en.md).
The English version of the introduction is [here](https://github.com/CarmJos/UserPrefix/blob/master/README-en.md). > 本插件已在 [MCBBS](https://www.mcbbs.net/forum.php?mod=viewthread&tid=1261503) 与 [SpigotMC](https://www.spigotmc.org/resources/userprefix-hex-color-support-all-version.96277/) 上发布。
## 示例 ## 示例
@@ -33,16 +33,18 @@ The English version of the introduction is [here](https://github.com/CarmJos/Use
- 理论上全版本支持! - 理论上全版本支持!
- 游戏内重载配置文件并实时更新到玩家! - 游戏内重载配置文件并实时更新到玩家!
- 当玩家权限变更时会实时监测前缀,若权限不足则自动更换前缀并提示! - 当玩家权限变更时会实时监测前缀,若权限不足则自动更换前缀并提示![](https://github.com/CarmJos/UserPrefix/blob/master/src/main/java/cc/carm/plugin/userprefix/listener/processor/UserNodeUpdateProcessor.java)
- 可配置的声音、消息! - 可配置的声音、消息!
- 前缀图标可配置“选中”、“有权限”与“无权限”三种状态的物品 - 前缀图标可配置“选中”、“有权限”与“无权限”三种状态的物品
- 物品的配置通过ItemStack原生配置,支持MC所有的设定! - 物品的配置通过ItemStack原生配置,支持MC所有的设定!
- 具体的设定请参考其他文档哦~ - 具体的设定请参考其他文档哦~
- TabList自动按照前缀的权重排序 (如有冲突可关掉) - TabList自动按照前缀的权重排序 (如有冲突可关掉)
- 玩家头顶前缀显示 (如有冲突可关掉) - 玩家头顶前缀显示 (如有冲突可关掉) [](https://github.com/CarmJos/UserPrefix/blob/master/src/main/java/cc/carm/plugin/userprefix/nametag/UserNameTag.java)
- 自动排序,且可翻页的GUI - 简单的聊天变量修改功能!(不推荐使用) [](https://github.com/CarmJos/UserPrefix/blob/master/src/main/java/cc/carm/plugin/userprefix/listener/ChatListener.java)
- 支持PlaceholderAPI变量!(凡支持的都可以使用,如BungeeTabListPlus) - 自动排序,且可翻页的GUI[](https://github.com/CarmJos/UserPrefix/blob/master/src/main/java/cc/carm/plugin/userprefix/ui/PrefixSelectGUI.java)
- 支持Hex颜色!(1.16以上版本) 格式 `&(#颜色代码)` - 支持PlaceholderAPI变量!(凡支持的都可以使用,如BungeeTabListPlus) [](https://github.com/CarmJos/UserPrefix/blob/master/src/main/java/cc/carm/plugin/userprefix/hooker/UserPrefixExpansion.java)
- 支持[Hex颜色](https://www.hexcolortool.com/)(1.16以上版本) [](https://github.com/CarmJos/UserPrefix/blob/master/src/main/java/cc/carm/plugin/userprefix/util/ColorParser.java)
- 格式: `&(#颜色代码)`
- 示例: LightSlateBlue `&(#8470FF)` 、 DarkSlateBlue `&(#483D8B)` - 示例: LightSlateBlue `&(#8470FF)` 、 DarkSlateBlue `&(#483D8B)`
## 注意事项 ## 注意事项
@@ -102,6 +104,14 @@ version: 1.0.0-SNAPSHOT # 配置文件版本,一般不会动。
debug: false #debug输出,开发者用的 debug: false #debug输出,开发者用的
custom-storage:
# 自定义存储位置
# 默认存储位置为 “插件文件夹”/prefixes
# 可以规定到远程文件夹中去寻找前缀相关的设定
# 支持绝对文件路径,如 "/etc/minecraft/configurations/prefixes/"
enable: false # 是否启用
path: "prefixes/" # 一定要指向一个文件夹!
functions: functions:
OnNamePrefix: true # 是否给头顶上添加前缀,该方法用到了头顶的那个计分板,如有冲突请关掉哦~ OnNamePrefix: true # 是否给头顶上添加前缀,该方法用到了头顶的那个计分板,如有冲突请关掉哦~
autoUsePrefix: true # 自动前缀显示 当玩家没有自己选择一个前缀的时候,会自动使用所拥有的的前缀中权重最高的那一个 autoUsePrefix: true # 自动前缀显示 当玩家没有自己选择一个前缀的时候,会自动使用所拥有的的前缀中权重最高的那一个
@@ -291,9 +301,33 @@ itemNoPermission:
感谢您成为开源项目的支持者! 感谢您成为开源项目的支持者!
<img height=25% width=25% src="https://raw.githubusercontent.com/CarmJos/UserPrefix/master/img/PAY.jpg" /> <img height=25% width=25% src="https://raw.githubusercontent.com/CarmJos/CarmJos/main/img/donate-code.jpg" alt=""/>
## 开源协议 ## 开源协议
本项目源码采用 [GNU General Public License v3.0](https://opensource.org/licenses/GPL-3.0) 开源协议。 本项目源码采用 [GNU General Public License v3.0](https://opensource.org/licenses/GPL-3.0) 开源协议。
> ### 关于 GPL 协议
> GNU General Public Licence (GPL) 有可能是开源界最常用的许可模式。GPL 保证了所有开发者的权利,同时为使用者提供了足够的复制,分发,修改的权利:
>
> #### 可自由复制
> 你可以将软件复制到你的电脑,你客户的电脑,或者任何地方。复制份数没有任何限制。
> #### 可自由分发
> 在你的网站提供下载,拷贝到U盘送人,或者将源代码打印出来从窗户扔出去(环保起见,请别这样做)。
> #### 可以用来盈利
> 你可以在分发软件的时候收费,但你必须在收费前向你的客户提供该软件的 GNU GPL 许可协议,以便让他们知道,他们可以从别的渠道免费得到这份软件,以及你收费的理由。
> #### 可自由修改
> 如果你想添加或删除某个功能,没问题,如果你想在别的项目中使用部分代码,也没问题,唯一的要求是,使用了这段代码的项目也必须使用 GPL 协议。
>
> 需要注意的是,分发的时候,需要明确提供源代码和二进制文件,另外,用于某些程序的某些协议有一些问题和限制,你可以看一下 @PierreJoye 写的 Practical Guide to GPL Compliance 一文。使用 GPL 协议,你必须在源代码代码中包含相应信息,以及协议本身。
>
> *以上文字来自 [五种开源协议GPL,LGPL,BSD,MIT,Apache](https://www.oschina.net/question/54100_9455) 。*
```text
_ _ _____ __ _
| | | | | __ \ / _|(_)
| | | | ___ ___ _ __ | |__) |_ __ ___ | |_ _ __ __
| | | |/ __| / _ \| '__|| ___/| '__|/ _ \| _|| |\ \/ /
| |__| |\__ \| __/| | | | | | | __/| | | | > <
\____/ |___/ \___||_| |_| |_| \___||_| |_|/_/\_\
```
BIN
View File
Binary file not shown.

Before

Width:  |  Height:  |  Size: 58 KiB

+73 -24
View File
@@ -5,13 +5,50 @@
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>
<groupId>cc.carm.plugin</groupId> <groupId>cc.carm.plugin</groupId>
<artifactId>UserPrefix</artifactId> <artifactId>userprefix</artifactId>
<version>2.1.0</version> <version>2.1.8</version>
<name>UserPrefix</name>
<description>轻便、高效、实时的用户前缀系统。</description>
<url>https://github.com/CarmJos/UserPrefix</url>
<issueManagement>
<system>GitHub Issues</system>
<url>${project.url}/issues</url>
</issueManagement>
<ciManagement>
<system>GitHub Actions</system>
<url>${project.url}/actions/workflows/maven.yml</url>
</ciManagement>
<developers>
<developer>
<id>CarmJos</id>
<name>Carm Jos</name>
<email>carm@carm.cc</email>
<url>https://work.carm.cc</url>
<roles>
<role>Main Developer</role>
</roles>
</developer>
</developers>
<organization>
<name>YourCraft你的世界</name>
<url>https://www.ycraft.cn/</url>
</organization>
<licenses>
<license>
<name>GNU General Public License v3.0</name>
<url>https://opensource.org/licenses/GPL-3.0</url>
</license>
</licenses>
<properties> <properties>
<maven.compiler.source>8</maven.compiler.source> <maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target> <maven.compiler.target>8</maven.compiler.target>
<maven.deploy.skip>true</maven.deploy.skip>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.encoding>UTF-8</maven.compiler.encoding> <maven.compiler.encoding>UTF-8</maven.compiler.encoding>
</properties> </properties>
@@ -19,8 +56,8 @@
<repositories> <repositories>
<repository> <repository>
<id>spigotmc-repo</id> <id>spigot-repo</id>
<url>https://hub.spigotmc.org/nexus/content/repositories/public/</url> <url>https://hub.spigotmc.org/nexus/content/repositories/snapshots/</url>
</repository> </repository>
<repository> <repository>
@@ -28,11 +65,6 @@
<url>https://repo.extendedclip.com/content/repositories/placeholderapi/</url> <url>https://repo.extendedclip.com/content/repositories/placeholderapi/</url>
</repository> </repository>
<repository>
<id>lss233-repo</id>
<url>https://lss233.littleservice.cn/repositories/minecraft</url>
</repository>
<repository> <repository>
<id>oss-repo</id> <id>oss-repo</id>
<url>https://oss.sonatype.org/content/groups/public/</url> <url>https://oss.sonatype.org/content/groups/public/</url>
@@ -47,13 +79,29 @@
<id>maven-central</id> <id>maven-central</id>
<url>https://repo1.maven.org/maven2/</url> <url>https://repo1.maven.org/maven2/</url>
</repository> </repository>
<repository>
<id>github</id>
<name>GitHub Packages</name>
<url>https://maven.pkg.github.com/CarmJos/${project.name}</url>
</repository>
</repositories> </repositories>
<distributionManagement>
<downloadUrl>${project.url}/releases</downloadUrl>
<repository>
<id>github</id>
<name>GitHub Packages</name>
<url>https://maven.pkg.github.com/CarmJos/${project.name}</url>
</repository>
</distributionManagement>
<dependencies> <dependencies>
<dependency> <dependency>
<groupId>org.spigotmc</groupId> <groupId>org.spigotmc</groupId>
<artifactId>spigot</artifactId> <artifactId>spigot-api</artifactId>
<version>1.17-R0.1-SNAPSHOT</version> <version>1.17-R0.1-SNAPSHOT</version>
<scope>provided</scope> <scope>provided</scope>
</dependency> </dependency>
@@ -75,23 +123,12 @@
<dependency> <dependency>
<groupId>junit</groupId> <groupId>junit</groupId>
<artifactId>junit</artifactId> <artifactId>junit</artifactId>
<version>4.13</version> <version>4.13.2</version>
<scope>test</scope> <scope>test</scope>
</dependency> </dependency>
</dependencies> </dependencies>
<build> <build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.22.1</version>
<configuration>
<useSystemClassLoader>false</useSystemClassLoader>
</configuration>
</plugin>
</plugins>
<pluginManagement>
<plugins> <plugins>
<plugin> <plugin>
<groupId>org.apache.maven.plugins</groupId> <groupId>org.apache.maven.plugins</groupId>
@@ -130,6 +167,19 @@
<artifactId>maven-jar-plugin</artifactId> <artifactId>maven-jar-plugin</artifactId>
<version>3.2.0</version> <version>3.2.0</version>
</plugin> </plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-source-plugin</artifactId>
<version>3.2.0</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>jar-no-fork</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin> <plugin>
<groupId>org.apache.maven.plugins</groupId> <groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId> <artifactId>maven-shade-plugin</artifactId>
@@ -166,7 +216,6 @@
</configuration> </configuration>
</plugin> </plugin>
</plugins> </plugins>
</pluginManagement>
<resources> <resources>
<resource> <resource>
<directory>src/main/resources</directory> <directory>src/main/resources</directory>
@@ -15,8 +15,13 @@ import cc.carm.plugin.userprefix.util.ColorParser;
import cc.carm.plugin.userprefix.util.MessageUtil; import cc.carm.plugin.userprefix.util.MessageUtil;
import net.luckperms.api.event.user.UserDataRecalculateEvent; import net.luckperms.api.event.user.UserDataRecalculateEvent;
import org.bukkit.Bukkit; import org.bukkit.Bukkit;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.PluginCommand;
import org.bukkit.command.TabCompleter;
import org.bukkit.event.Listener; import org.bukkit.event.Listener;
import org.bukkit.plugin.java.JavaPlugin; import org.bukkit.plugin.java.JavaPlugin;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
public class Main extends JavaPlugin { public class Main extends JavaPlugin {
@@ -25,7 +30,7 @@ public class Main extends JavaPlugin {
@Override @Override
public void onEnable() { public void onEnable() {
instance = this; instance = this;
showPluginName();
log(getName() + " " + getDescription().getVersion() + " &7开始加载..."); log(getName() + " " + getDescription().getVersion() + " &7开始加载...");
long startTime = System.currentTimeMillis(); long startTime = System.currentTimeMillis();
@@ -34,8 +39,8 @@ public class Main extends JavaPlugin {
PrefixManager.init(); PrefixManager.init();
log("注册指令..."); log("注册指令...");
Bukkit.getPluginCommand("UserPrefix").setExecutor(new UserPrefixCommand()); registerCommand("UserPrefix", new UserPrefixCommand());
Bukkit.getPluginCommand("UserPrefixAdmin").setExecutor(new UserPrefixAdminCommand()); registerCommand("UserPrefixAdmin", new UserPrefixAdminCommand());
log("注册监听器..."); log("注册监听器...");
regListener(new UserListener()); regListener(new UserListener());
@@ -63,6 +68,7 @@ public class Main extends JavaPlugin {
@Override @Override
public void onDisable() { public void onDisable() {
showPluginName();
log(getName() + " " + getDescription().getVersion() + " 开始卸载..."); log(getName() + " " + getDescription().getVersion() + " 开始卸载...");
long startTime = System.currentTimeMillis(); long startTime = System.currentTimeMillis();
@@ -98,6 +104,32 @@ public class Main extends JavaPlugin {
return instance; return instance;
} }
public static void registerCommand(String commandName,
@NotNull CommandExecutor executor) {
registerCommand(commandName, executor, null);
}
public static void registerCommand(String commandName,
@NotNull CommandExecutor executor,
@Nullable TabCompleter tabCompleter) {
PluginCommand command = Bukkit.getPluginCommand(commandName);
if (command == null) return;
command.setExecutor(executor);
if (tabCompleter != null) command.setTabCompleter(tabCompleter);
}
private void showPluginName() {
log("&b _ _ &f _____ __ _ ");
log("&b| | | | &f| __ \\ / _|(_) ");
log("&b| | | | ___ ___ _ __ &f| |__) |_ __ ___ | |_ _ __ __");
log("&b| | | |/ __| / _ \\| '__|&f| ___/| '__|/ _ \\| _|| |\\ \\/ /");
log("&b| |__| |\\__ \\| __/| | &f| | | | | __/| | | | > < ");
log("&b \\____/ |___/ \\___||_| &f|_| |_| \\___||_| |_|/_/\\_\\");
log("&8 ");
log("&8> &f" + getDescription().getWebsite());
}
private void showAD() { private void showAD() {
log("&7感谢您使用 &3&lUserPrefix " + getDescription().getVersion() + "&7!"); log("&7感谢您使用 &3&lUserPrefix " + getDescription().getVersion() + "&7!");
log("&7本插件由 &b&lYourCraft &7提供长期支持与维护。"); log("&7本插件由 &b&lYourCraft &7提供长期支持与维护。");
@@ -1,6 +1,7 @@
package cc.carm.plugin.userprefix.command; package cc.carm.plugin.userprefix.command;
import cc.carm.plugin.userprefix.ui.PrefixSelectGUI; import cc.carm.plugin.userprefix.ui.PrefixSelectGUI;
import org.bukkit.Bukkit;
import org.bukkit.command.Command; import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor; import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender; import org.bukkit.command.CommandSender;
@@ -14,6 +15,15 @@ public class UserPrefixCommand implements CommandExecutor {
public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String s, @NotNull String[] strings) { public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String s, @NotNull String[] strings) {
if (sender instanceof Player) { if (sender instanceof Player) {
PrefixSelectGUI.open((Player) sender); PrefixSelectGUI.open((Player) sender);
} else {
if (strings.length != 1) {
sender.sendMessage("输入 /prefix <ID> 为玩家打开前缀GUI。");
} else {
Player player = Bukkit.getPlayer(strings[0]);
if (player != null) {
PrefixSelectGUI.open(player);
}
}
} }
return true; return true;
} }
@@ -11,6 +11,14 @@ public class PrefixConfig {
public static ConfigValue<Boolean> DEBUG = new ConfigValue<>("debug", Boolean.class, false); public static ConfigValue<Boolean> DEBUG = new ConfigValue<>("debug", Boolean.class, false);
public static class CustomStorage {
public static ConfigValue<Boolean> ENABLE = new ConfigValue<>("custom-storage.enable", Boolean.class, false);
public static ConfigValue<String> PATH = new ConfigValue<>("custom-storage.path", String.class, "prefixes/");
}
public static class Functions { public static class Functions {
public static ConfigValue<Boolean> NAME_PREFIX = new ConfigValue<>("functions.OnNamePrefix", Boolean.class, true); public static ConfigValue<Boolean> NAME_PREFIX = new ConfigValue<>("functions.OnNamePrefix", Boolean.class, true);
@@ -32,8 +32,13 @@ public class ConfigValue<V> {
} }
public V get() { public V get() {
if (getConfiguration().contains(this.configSection)) {
Object val = getConfiguration().get(this.configSection, this.defaultValue); Object val = getConfiguration().get(this.configSection, this.defaultValue);
return this.clazz.isInstance(val) ? this.clazz.cast(val) : this.defaultValue; return this.clazz.isInstance(val) ? this.clazz.cast(val) : this.defaultValue;
} else {
// 如果没有默认值,就把配置写进去,便于配置
return setDefault();
}
} }
public void set(V value) { public void set(V value) {
@@ -45,4 +50,9 @@ public class ConfigValue<V> {
this.source.save(); this.source.save();
} }
public V setDefault() {
set(this.defaultValue);
return this.defaultValue;
}
} }
@@ -1,6 +1,7 @@
package cc.carm.plugin.userprefix.manager; package cc.carm.plugin.userprefix.manager;
import cc.carm.plugin.userprefix.Main; import cc.carm.plugin.userprefix.Main;
import cc.carm.plugin.userprefix.configuration.PrefixConfig;
import cc.carm.plugin.userprefix.model.ConfiguredPrefix; import cc.carm.plugin.userprefix.model.ConfiguredPrefix;
import cc.carm.plugin.userprefix.util.ItemStackFactory; import cc.carm.plugin.userprefix.util.ItemStackFactory;
import org.bukkit.Material; import org.bukkit.Material;
@@ -37,17 +38,19 @@ public class PrefixManager {
public static void loadConfiguredPrefixes() { public static void loadConfiguredPrefixes() {
File prefixDataFolder = new File(Main.getInstance().getDataFolder() + File.separator + FOLDER_NAME); File prefixDataFolder = getStorageFolder();
if (!prefixDataFolder.isDirectory() || !prefixDataFolder.exists()) { if (!prefixDataFolder.isDirectory() || !prefixDataFolder.exists()) {
prefixDataFolder.mkdir(); prefixDataFolder.mkdir();
} }
String[] filesList = prefixDataFolder.list(); String[] filesList = prefixDataFolder.list();
if (filesList == null || filesList.length < 1) { if (filesList == null || filesList.length < 1) {
Main.log("配置文件中暂无任何前缀配置,请检查。"); Main.log("配置文件中暂无任何前缀配置,请检查。");
Main.log("There's no configured prefix."); Main.log("There's no configured prefix.");
Main.log("Path: " + prefixDataFolder.getAbsolutePath());
return; return;
} }
List<File> files = Arrays.stream(filesList) List<File> files = Arrays.stream(filesList)
.map(s -> new File(prefixDataFolder, s)) .map(s -> new File(prefixDataFolder, s))
.filter(File::isFile) .filter(File::isFile)
@@ -74,7 +77,8 @@ public class PrefixManager {
public static void loadDefaultPrefix() { public static void loadDefaultPrefix() {
PrefixManager.defaultPrefix = null; PrefixManager.defaultPrefix = null;
ConfigurationSection defaultPrefixSection = ConfigManager.getPluginConfig().getConfig().getConfigurationSection("defaultPrefix"); ConfigurationSection defaultPrefixSection = ConfigManager.getPluginConfig()
.getConfig().getConfigurationSection("defaultPrefix");
if (defaultPrefixSection != null) { if (defaultPrefixSection != null) {
try { try {
String name = defaultPrefixSection.getString("name", "默认前缀"); String name = defaultPrefixSection.getString("name", "默认前缀");
@@ -150,5 +154,13 @@ public class PrefixManager {
} }
} }
private static File getStorageFolder() {
if (PrefixConfig.CustomStorage.ENABLE.get()) {
return new File(PrefixConfig.CustomStorage.PATH.get());
} else {
return new File(Main.getInstance().getDataFolder() + File.separator + FOLDER_NAME);
}
}
} }
@@ -24,11 +24,22 @@ public class UserManager {
public static HashSet<UUID> checkingPlayers = new HashSet<>(); public static HashSet<UUID> checkingPlayers = new HashSet<>();
@Nullable
public static UserNameTag getNameTag(Player player) { public static UserNameTag getNameTag(Player player) {
if (PrefixConfig.Functions.NAME_PREFIX.get()) {
if (nameTags.containsKey(player.getUniqueId())) {
return nameTags.get(player.getUniqueId()); return nameTags.get(player.getUniqueId());
} else {
return createNameTag(player);
}
} else {
return null;
}
} }
@NotNull
public static UserNameTag createNameTag(Player player) { public static UserNameTag createNameTag(Player player) {
if (nameTags.containsKey(player.getUniqueId())) return nameTags.get(player.getUniqueId());
UserNameTag nameTag = new UserNameTag(player); UserNameTag nameTag = new UserNameTag(player);
nameTags.put(player.getUniqueId(), nameTag); nameTags.put(player.getUniqueId(), nameTag);
return nameTag; return nameTag;
@@ -56,6 +67,7 @@ public class UserManager {
* @param loadOthers 是否为玩家更新其他人的前缀(一般用于加入游戏) * @param loadOthers 是否为玩家更新其他人的前缀(一般用于加入游戏)
*/ */
public static void updatePrefixView(Player player, boolean loadOthers) { public static void updatePrefixView(Player player, boolean loadOthers) {
if (!PrefixConfig.Functions.NAME_PREFIX.get()) return; //未启用的情况下,不需要进行任何操作。
ConfiguredPrefix playerPrefix = UserManager.getPrefix(player); ConfiguredPrefix playerPrefix = UserManager.getPrefix(player);
UserNameTag tag = getNameTag(player); UserNameTag tag = getNameTag(player);
+9 -1
View File
@@ -1,7 +1,15 @@
version: ${project.version} version: ${project.version} #配置文件版本,若与插件版本不同请记得检查配置文件内容
debug: false debug: false
custom-storage:
# 自定义存储位置
# 默认存储位置为 “插件文件夹”/prefixes
# 可以规定到远程文件夹中去寻找前缀相关的设定
# 支持绝对文件路径,如 "/etc/minecraft/configurations/prefixes/"
enable: false # 是否启用
path: "prefixes/" # 一定要指向一个文件夹!
functions: functions:
OnNamePrefix: true # 是否给头顶上添加前缀,该方法用到了头顶的那个计分板,如有冲突请关掉哦~ OnNamePrefix: true # 是否给头顶上添加前缀,该方法用到了头顶的那个计分板,如有冲突请关掉哦~
autoUsePrefix: true # 自动前缀显示 当玩家没有自己选择一个前缀的时候,会自动使用所拥有的的前缀中权重最高的那一个 autoUsePrefix: true # 自动前缀显示 当玩家没有自己选择一个前缀的时候,会自动使用所拥有的的前缀中权重最高的那一个
+7
View File
@@ -2,6 +2,13 @@ version: ${project.version} # DO NOT EDIT IT
debug: false #DEBUG OUT PUT debug: false #DEBUG OUT PUT
custom-storage:
# Custom storage location
# default location is "./prefixes"
# Support absolute file path , such as "/etc/minecraft/configurations/prefixes/"
enable: false
path: "prefixes/" # Must be a folder!
GUI: GUI:
title: "&f&lMy Prefixes List" # Title of the GUI title: "&f&lMy Prefixes List" # Title of the GUI
items: items:
@@ -26,9 +26,6 @@ permission: "yc.vip"
# itemHasPermission [Necessary] # itemHasPermission [Necessary]
# This Item will be displayed when player has permission # This Item will be displayed when player has permission
itemHasPermission: itemHasPermission:
==: org.bukkit.inventory.ItemStack
type: DIAMOND
meta:
==: org.bukkit.inventory.ItemStack ==: org.bukkit.inventory.ItemStack
type: DIAMOND type: DIAMOND
meta: meta:
+5 -3
View File
@@ -1,11 +1,13 @@
main: cc.carm.plugin.userprefix.Main main: cc.carm.plugin.userprefix.Main
name: UserPrefix name: ${project.name}
version: ${project.version} version: ${project.version}
authors: authors:
- Carm - Carm
- YourCraft - ${project.organization.name}
- SakuraGame - SakuraGame
website: "https://github.com/CarmJos/UserPrefix" website: ${project.url}
description: ${project.description}
depend: depend:
- LuckPerms - LuckPerms
softdepend: softdepend:
+87 -13
View File
@@ -67,13 +67,89 @@
[hr] [hr]
[size=4][b]基础配置文件 [/b][/size][color=#24292f][font=Tahoma][size=4](config.yml)[/size][/font][/color] [size=4][b]基础配置文件 [/b][/size][color=#24292f][font=Tahoma][size=4](config.yml)[/size][/font][/color]
[spoiler] [spoiler]
[code] version: 1.0.0-SNAPSHOT # 配置文件版本,一般不会动。 [code]
version: ${project.version} #配置文件版本,若与插件版本不同请记得检查配置文件内容
debug: false #debug输出,开发者用的 debug: false
custom-storage:
# 自定义存储位置
# 默认存储位置为 “插件文件夹”/prefixes
# 可以规定到远程文件夹中去寻找前缀相关的设定
# 支持绝对文件路径,如 "/etc/minecraft/configurations/prefixes/"
enable: false # 是否启用
path: "prefixes/" # 一定要指向一个文件夹!
functions: functions:
OnNamePrefix: true # 是否给头顶上添加前缀,该方法用到了头顶的那个计分板,如有冲突请关掉哦~ OnNamePrefix: true # 是否给头顶上添加前缀,该方法用到了头顶的那个计分板,如有冲突请关掉哦~
autoUsePrefix: true # 自动前缀显示 当玩家没有自己选择一个前缀的时候,会自动使用所拥有的的前缀中权重最高的那一个[/code][/spoiler] 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] [b][size=4][backcolor=transparent]消息配置文件[/backcolor][/size] [/b][size=4](messages.yml)[/size]
[spoiler][code]selected: [spoiler][code]selected:
@@ -96,7 +172,7 @@ list-value:
- "&8- &7显示名 &r%(name) &7权限 &r%(permission)" - "&8- &7显示名 &r%(name) &7权限 &r%(permission)"
- "&8- &7内容示例&r %(content) %(sender_name)"[/code][/spoiler] - "&8- &7内容示例&r %(content) %(sender_name)"[/code][/spoiler]
[size=4][backcolor=transparent][b]前缀配置文件[/b][/backcolor] (prefixes/*.yml)[/size] [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]# 唯一标识 [必须] [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]# 唯一标识 [必须]
# 将用于记录玩家所选的前缀,以及用于数据的缓存。 # 将用于记录玩家所选的前缀,以及用于数据的缓存。
# 必须 必须 必须 保持唯一! # 必须 必须 必须 保持唯一!
@@ -177,11 +253,14 @@ itemNoPermission:
[size=5][b]下载地址[/b][/size] [size=5][b]下载地址[/b][/size]
[hr] [hr]
[size=3][b]最新版本 2.1.0 [/b][/size][attach]1909962[/attach][quote][b][size=3]更新内容[/size][/b] [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] 1. 添加聊天相关设定,支持聊天前缀。(但不推荐使用哦~)[/quote]
[spoiler]
[size=3][b] 2.0.0 [/b][/size][attach]1905700[/attach] [size=3][b] 2.0.0 [/b][/size][attach]1905700[/attach]
[quote][b][size=3]更新内容[/size][/b] [quote][b][size=3]更新内容[/size][/b]
1. 修复低版本可能无法读取物品的bug。 1. 修复低版本可能无法读取物品的bug。
@@ -233,8 +312,3 @@ itemNoPermission:
+8 -1
View File
@@ -90,10 +90,17 @@ After installed the [URL='https://github.com/PlaceholderAPI/PlaceholderAPI']Plac
Notice: The default configuration is based on Chinese. You can find the English Version [URL='https://github.com/CarmJos/UserPrefix/blob/master/src/main/resources/en_US/config.yml']here[/URL]. Notice: The default configuration is based on Chinese. You can find the English Version [URL='https://github.com/CarmJos/UserPrefix/blob/master/src/main/resources/en_US/config.yml']here[/URL].
[code=YAML] [code=YAML]
version: ${project.version} # DO NOT EDIT IT version: ${project.version}
debug: false #DEBUG OUT PUT debug: false #DEBUG OUT PUT
custom-storage:
# Custom storage location
# default location is "./prefixes"
# Support absolute file path , such as "/etc/minecraft/configurations/prefixes/"
enable: false
path: "prefixes/" # Must be a folder!
GUI: GUI:
title: "&f&lMy Prefixes List" # Title of the GUI title: "&f&lMy Prefixes List" # Title of the GUI
items: items: