FireworkPolymer
本帖最后由 FireworkPolymer 于 2021-7-7 13:51 编辑

站内搬运:https://www.mcbbs.net/thread-1218548-1-1.html
———————————————————————————————————————————————————————————
起步
———————————————————————————————————————————————————————————
安装:将PlaceholderAPI和RocketPlaceholder下载并放入插件文件夹
警告:如果你的Java版本在1.11以上请安装JShader.
(对,起步就这么简单)

2021.12 数据,可能有更多内容
站内搬运:https://www.mcbbs.net/thread-1218548-1-1.html
———————————————————————————————————————————————————————————
起步———————————————————————————————————————————————————————————
安装:将PlaceholderAPI和RocketPlaceholder下载并放入插件文件夹警告:如果你的Java版本在1.11以上请安装JShader.(对,起步就这么简单)

———————————————————————————————————————————————————————————
配置———————————————————————————————————————————————————————————

代码:

  1. #
  2. #
  3. #    ______    _  _  _
  4. #    |__ \| |  | |   | |   | |
  5. #    | |__) | | __ ____ ___| |__   ___ | | __| | ___ _ __ ___
  6. #    |___/| |/ _` |/ __/ _ \ '_ \ / _ \| |/ _` |/ _ \ '__/ __|
  7. #    | |    | | (_| | (_|__/ | | | (_) | | (_| |__/ |\__ \
  8. #    |_|    |_|\__,_|\___\___|_| |_|\___/|_|\__,_|\___|_||___/
  9. #
  10. #

  11. # RocketPlaceholders插件提示前缀
  12. prefix: "&c&lRocket&e&lPlaceholders &f&l»&r"

  13. # RocketPlaceholders的自定义变量

  14. placeholders:

  15. 0: #千万不要使用0号(为什么?)
  16.     placeholder: "test" #比如说 "test" = %rp_test%
  17.     text: "this is a test" #比如说 "this is a test" = 输出: "this is a test" (对于没有权限的人来说是这样)
  18.     permissions:
  19.    1:
  20.   permission: "example.1"
  21.   text: "this is a secret example" #对于有上方权限的人来说是这条信息
用类似这种配置你就可以创建出一个全局变量

代码:

  1. 1:
  2.     placeholder: "test"
  3.     text: "This is a test"
更多信息详见权限条件
JavaScript支持

代码:

  1. 0: #不要使用0号
  2.     placeholder: "test" #ex "test" = %rp_test%
  3.     text: "'Hello World'"
  4.     parsejs: true #这里就是使用了
[!]在RP1.9.1以后你才能用JavaScript

———————————————————————————————————————————————————————————
自定义条件———————————————————————————————————————————————————————————
使用RocketPlaceholders你就可以使用自定义条件来控制变量显示
请在此处查看条件种类(链接已失效)


创建一个条件
这是一个创建自定义条件的例子
让我们从这里入门,我们首先来添加一个权限条件

代码:

  1. 1:
  2.     placeholder: "test"
  3.     text: "这是个例子"

现在我们加入条件节段,添加一个权限(PERMISSION)类型和一个数值

代码:

  1.     conditions: #把它加到上面的例子后
  2.    permissionExample:
  3.   type: PERMISSION
  4.   value: "rocketplaceholder.example"
  5.   text: "条件例子" #有这个权限后显示的文字

条件的优先度基于它的排列顺序,比如下面这样:

代码:

  1.     conditions:
  2.    1:
  3.   type: PERMISSION
  4.   value: "rocketplaceholder.example"   
  5.   text: "第一个条件"
  6.    2:
  7.   type: PERMISSION
  8.   value: "rocketplaceholder.example2"
  9.   text: "第二个条件"

如果玩家同时拥有rocketplaceholder.examplerocketplaceholder.example2权限的话,显示的文字将会是第一个条件,因为它在最顶上
你可以在接下来几部分里查看其他条件的详细用法

———————————————————————————————————————————————————————————
JavaScript条件———————————————————————————————————————————————————————————
使用它来给你的变量使用一些各种各样的条件你有两种变量: Player(玩家) (代表Player)和Server(服务器) (代表Server).现在你可以创建一个javascript表达式来让它返回一个boolean值(true或者false).只需把种类(type)设置为JAVASCRIPT然后写下表达式就行了.下方是个例子:

代码:

  1. conditions:
  2.     moneyExample:
  3.   type: JAVASCRIPT
  4.   value: "Player.hasPermission('example.permission');"
  5.   text: "文字"


———————————————————————————————————————————————————————————
金钱条件———————————————————————————————————————————————————————————[!]这个条件需要Vault插件作为前置和支持经济功能的插件(比如EssentialsX)
如果你想要创建一个金钱条件的变量,请使用MONEY种类,然后输入一个数值
[!]不要使用用负号开头的数值
例子:

代码:

  1. conditions:
  2.     moneyExample:
  3.   type: MONEY
  4.   value: 10
  5.   text: "十块钱买个教训!"


———————————————————————————————————————————————————————————
物品条件———————————————————————————————————————————————————————————
使用这个条件你可以检查玩家是否有特定需求的物品
现在你有下面几个选项


[必需]物品种类(Material)
使用这个选项来检查玩家是否有这种物品,在此处查看列表
[可选]物品名称(Name)
顾名思义
[可选]物品描述(Lore)
物品的描述,比如:

代码:

  1. lore:
  2.     - "第一行"
  3.     - "第二行"

[可选]物品颜色(Colors)
如果设置为true,颜色代码(类似&a)将会被转换和显示
默认:false


下方是个完整的例子:

代码:

  1. conditions:
  2.     itemExample:
  3.   type: ITEM
  4.   material: STONE #检测你有没有石头
  5.   name: "&cExample" #这个石头是不是叫 Example(颜色为红色,或者说粉红色,代码模式不能显示颜色)
  6.   lore:
  7.    - "&aExample line" #这个石头是不是包含一个颜色为绿色的Example line的描述
  8.   colors: true #要使用颜色代码就开启它,否则他就会检测这个物品是不是叫&cExample之类的
  9.   text: "Example condition text" #检测通过后显示文本


———————————————————————————————————————————————————————————
权限条件———————————————————————————————————————————————————————————
这个条件很容易用,看下方例子就懂了

代码:

  1. conditions:
  2.     permissionExample:
  3.   type: PERMISSION #设置成这个种类
  4.   value: "example.permission" #你需要的权限
  5.   text: "Example condition text" #符合权限显示的文本


———————————————————————————————————————————————————————————
权限组条件———————————————————————————————————————————————————————————
[!]这个条件需要Vault插件作为前置和支持权限功能的插件(比如LuckPerms)
这个条件一样很容易用,也只要看下例子就会了

代码:

  1. conditions:
  2.     permissionExample:
  3.   type: GROUP #设置成这个种类
  4.   value: "ExampleGroup" #哪个权限组能看
  5.   text: "Example condition text" #符合条件显示的文本


此条件已被分开,请查看前面的其他自定义条件
还是留个原文的例子在这

代码:

  1. 0:
  2.     placeholder: "example"
  3.     text: "This is an example"
  4.     permissions:
  5.    1:
  6.   permission: "example.example"
  7.   text: "Example"   
  8.    2:
  9.   permission: "example.2"
  10.   text: "Example 2"


———————————————————————————————————————————————————————————
MySQL支持———————————————————————————————————————————————————————————
如何在服务器之间同步您的变量
1.填写以下链接表单(在插件文件中)

代码:

  1. mysql:
  2. # 如果设置为false那么就不会同步
  3. enabled: false
  4. # 主服务器(main)是其他所有变量被创建的地方,开启则将此服务器作为主服务器
  5. main: false
  6. # 数据库信息
  7. ip: 0.0.0.0
  8. port: 3306
  9. username: "root"
  10. password: "" # 没有请留空
  11. database: "rocketplaceholders"

2.选择一个主服务器
关于主服务器的信息请看 MySQL F.A.Q
3.(重新)启动你的服务器

———————————————————————————————————————————————————————————
MySQL F.A.Q———————————————————————————————————————————————————————————
1.MySQL与yml有什么不同?
MySQL可以让你在不同的服务器之间同步你的变量
2.主服务器是什么?
主服务器会把它的变量放到数据库中,其他的服务器会从它的数据库中复制变量并放到自己的数据库中
只有一个服务器可以成为主服务器
3.MySQL会导致卡顿吗?
不会
4.如果我用的是MySQL,那么我的配置文件中的变量会被读取吗?
会的,如果你不是主服务器的话,那么你配置文件和数据库中的变量都会被读取
5.我怎么只使用数据库中的变量而不使用配置文件中的?
把配置文件中的变量删掉就行了

———————————————————————————————————————————————————————————
API使用———————————————————————————————————————————————————————————
如何使用API?


将本插件作为前置:
Gradle:

代码:

  1. repositories {
  2.     maven {
  3.   url = uri('https://repo.codemc.org/repository/maven-public/')
  4.     }
  5. }

  6. dependencies {
  7.     compileOnly 'me.Lorenzo0111:RocketPlaceholders:VERSION'
  8. }

Maven:

代码:

  1. <repositories>
  2.     <repository>
  3.   <id>codemc-repo</id>
  4.   <url>https://repo.codemc.org/repository/maven-public/</url>
  5.     </repository>
  6. </repositories>

  7. <dependencies>
  8.     <dependency>
  9.   <groupId>me.Lorenzo0111</groupId>
  10.   <artifactId>RocketPlaceholders</artifactId>
  11.   <version>VERSION</version>
  12.   <scope>provided</scope>
  13.     </dependency>
  14. </dependencies>

手动下载:点击此处下载


获取API:

代码:

  1. RocketPlaceholdersAPI api = Bukkit.getServicesManager().load(RocketPlaceholdersAPI.class);
  2. if (api != null) {
  3.     this.getLogger().info("RocketPlaceholders hooked!");
  4. } else {
  5.     this.getLogger().severe("Unable to find RocketPlaceholdersAPI, disabling..");
  6.     this.getServer().getPluginManager().disablePlugin(this);
  7. }



如何添加变量:
不带权限的:

代码:

  1. this.getAPI().addPlaceholder(new PlaceholderBuilder("identifier", "text"));

带权限的:

代码:

  1. this.api.addPlaceholder(new PlaceholderBuilder(new PlaceholderBuilder("identifier", "text").createPermissionNode("permission.example", "secret text"));



如何获取所有变量:
内部变量:

代码:

  1. this.getAPI().getInternalPlaceholders().getStorageManager().getInternalPlaceholders();

外部变量:

代码:

  1. this.getAPI().getInternalPlaceholders().getStorageManager().getExternalPlaceholders().getHashMap();

由API获取的变量不会同步到MySQL中


CookBook:在此处查看
Javcadocs

https://ci.codemc.io/job/lorenzo0111/job/RocketPlaceholders/

你怎么看到这一页的?



wordangyou
可以说明一下在哪些文件更改吗