本帖最后由 MagicLocyDragon 于 2019-6-18 08:51 编辑



PAPI是一个什么插件

这是一个给开发者使用的前置插件。
若并非开发者,直接下载装进服务器即可。或者简单了解一下它的作用。
有许多插件都与本插件挂钩。

为什么要二搬呢
因为看到之前那个下载地址挂了,而且也好久没有更新了,就这样。

下载地址



· 百度网盘:
https://pan.baidu.com/s/16gj_z74A0Z-WxTsCRDwVIg
· 提取码:
ptta

· 帖内下载:
PlaceholderAPI-2.10.2.jar (335.7 KB, 下载次数: 2879)
(全版本通用)


指令&权限

/papi help ——查看插件帮助
/papi list ——查看与papi挂钩的插件
/papi reload ——重载配置文件
/papi info [占位符名] ——查看信息
关于PAPI的云服务器的信息可以在这里看教程:
http://www.mcbbs.net/thread-666353-1-1.html

placeholderapi.admin #使用所有指令的权限

配置文件

check_updates: true #检查更新
cloud_enabled
: true #开启云服务
auto_install_expansions
: true #自动安装拓展内容
boolean
: #布尔式的格式化内容
  'true'
: 'yes'
  'false'
: 'no'
date_format
: MM/dd/yy HH:mm:ss #日期的格式化M是月 d是日期 y是年 H是小时 m是分钟 s是秒
expansions
: #拓展
  pinger
: #?不太懂
    offline
: offline
    check_interval
: 10 #检查的频率(秒)
    online
: online
  vault
:
    formatting
:
      thousands
: k #经济到1000的格式化?大概是1k(1000) 10k(10000)这个意思吧



javascript_placeholders.yml

如果你开启了js的拓展功能,就会生成一个这个文件。这个文件是用来创建自己的变量用的。
millionaire: #声明变量
  expression
: '%vaulteco_balance% >= 1000000' #条件: 若钱大于1x10^60
  type
: boolean #数据类型:boolean 如果条件成立返回true,反之false
  true_result
: '&aMillionaire' #若成立返回的内容
  false_result
: '&cbroke' #若不成立返回的内容
is_staff
:
  expression
: '"%vault_group%" == "Moderator" || "%vault_group%" == "Admin" || "%vault_group%"
    == "Owner"' #只是换了一个条件而已,差不多
  type
: boolean
  true_result
: '&bStaff'
  false_result
: '&ePlayer'
staff_online
:
  type
: string #就是换了一个数据类型而已,也似乎不用说了。


开发者食用方法

首先的首先先导入前置
首先在plugin.yml写上
softdepend: [PlaceholderAPI]
想必都是废话吧

创建一个类,继承EZPlaceholderHook类
输入代码
public class Test extends EZPlaceholderHook {
public Test(Main main) { #假设Main是我们的主类,创建构造方法
super(main, "customplaceholder"); #引用父类方法
}
@Override
public String onPlaceholderRequest(Player p, String indentifier) { #重写父类方法,该方法被请求一个变量时调用
if (p == null) return new String();
if (indentifier.equals("test")) {#注意这里要使用变量时是 %customplaceholder_test%
return p.getMaxHealth();
}
}
#即在请求test变量时返回玩家p的最大血量.
}

如何hook这个变量?
在onEnable里面写入代码:
if (Bukkit.getPluginManager().isPluginEnabled("PlaceholderAPI")) { #先判断有没有papi
new Test(this).hook();
} else {
getLogger().info("未找到PlaceholderAPI.");
}

到这里就已经hook上了

怎么使用一个变量呢:

Player player = Bukkit.getPlayer("LocyDragon"); #先要有一个玩家,LocyDragon是楼主的id
String msg = PlaceholderAPI.setPlaceholders(player, "血量: %customplaceholder_test%");
Bukkit.getLogger().info(msg); #就这样就ok了

maven:
  1. <repositories>
  2.         <repository>
  3.             <id>placeholderapi</id>
  4.             <url>http://repo.extendedclip.com/content/repositories/placeholderapi/</url>
  5.         </repository>
  6.     </repositories>
  7.     <dependencies>
  8.         <dependency>
  9.          <groupId>me.clip</groupId>
  10.           <artifactId>placeholderapi</artifactId>
  11.           <version>2.9.2</version>
  12.          <scope>provided</scope>
  13.         </dependency>
  14.     </dependencies>
复制代码


[groupid=1533]SpicyChicken[/groupid]