前言:
教程部分
如果都这个份上了还是不会那就套我帖子里的把,自己替换自己的API与变量
我只能帮你们到这个份上了
讲解完毕我现在发出一个模板成品
我们服务器自己写了一套Coins系统
并且写出来了API
但是我们无法做到把Coins输出到DeluxeMenu上
正当我们一筹莫展之际
我看到了一个教程链接是关于PlaceHolderAPI如何写扩展的
当时我想到了杜蕾斯是支持Papi的
于是我就想写一个扩展
经历过2次失败
我成功了
所以我想给大家写这个教程
教程部分
首先我们打开Eclipse (废话)
新建一个Java项目
然后导入PlaceHolderAPI(不要问我这个API在哪里下载)
导入的图片应该是这个样子的:
然后创建Plugin.yml
格式是这样子的
name:xxx
main:你的包名.你的主类名字
author: allen_zhang (滑稽)
depends: [PlaceHolderAPI,你要自己写扩展插件的名称]
(在这里给大家提醒一下一个菜鸟问题,当初我是菜鸟的时候(现在依然是)我经常对着Java项目右键新建Plugin.yml,但经历
了非常恶俗的洗礼之后,我才发现是对着src(默认包)右键)
然后我们对着src右键,新建一个包
注意: 包名必须为me.clip.* 否则PaPi不会读取(反正我就是这样的)
在包里新建一个Java类,我们把它称为Main.java
进入Main.java首先输入
你该输入的(不要问我什么是你该输入的,就是package 和import)
除了Bukkit的import以外,我们还要输入以下东西
import me.clip.placeholderapi.expansion.PlaceholderExpansion;
import 你的插件API所在地,我的是 io.karfunction.karcoins.coins.VaultAPI (你可能会猜到这是什么服务器了)
然后输入以下代码
public class Main(你的主类名字,就是我刚才举得例子Main.java)
//继承作者的恶俗思想
extends PlaceholderExpansion
{
public boolean canRegister()
//不要问我这个地方是干什么的,因为一般问的都是新手(不过每个人都是从新手过来的嘛)
{
return Bukkit.getPluginManager().getPlugin(getPlugin()) != null;
}
//这个恶俗地方你想删就删没什么大不了的
public String getAuthor()
{
return "allen_zhang"
}
//这个地方不能删,它是整个变量的前缀.例如我们设置了前缀为KarAPI.则他的变量为%KarAPI_我们设置的变量%
public String getIdentifier()
{
return "KarAPI"
}
//这个也不能删,是你的插件的名字,区分大小写,不然会恶俗.如果服务器没有这个插件更会恶俗(废话)
public String getPlugin()
{
return "KarVaultAPI"
}
//这个地方随意,我没删过,不知道删了会怎么样,请各位老爷们试一下
public String getVersion()
{
return "1.0.0" //这个1.0.0随意,你改成999999都行
}
public String onPlaceholderRequest(Player p, String identifier)
{
//这个东西是防止任何恶俗情况发生,不加的话不会出太大的问题,最好还是加上
if (p == null) {
return "";
}
//这个Credits就是变量的后缀,百分号+前缀_后缀+百分号 就是这个变量
//这里的变量为%KarAPI_karma%
if (identifier.equals("karma")) {
return ""+VaultAPI.getKarma(p.getName()); //这个是我们自己的API,请对号入座
}
//这个Coins就是变量的后缀,百分号+前缀_后缀+百分号 就是这个变量
//这里的变量为%KarAPI_coins%
if (identifier.equals("coins")) {
return ""+VaultAPI.getCoins(p.getName());//这个是我们自己的API,请对号入座
}
//这里的变量为%KarAPI_credits%
//这个Credits就是变量的后缀,百分号+前缀_后缀+百分号 就是这个变量
if (identifier.equals("credits")) {
return ""+VaultAPI.getCredit(p.getName()); //这个是我们自己的API,请对号入座
}
return null;
}
}
如果都这个份上了还是不会那就套我帖子里的把,自己替换自己的API与变量
我只能帮你们到这个份上了
讲解完毕我现在发出一个模板成品
package me.clip.placeholder.coins;
import me.clip.placeholderapi.expansion.PlaceholderExpansion;
import org.bukkit.Bukkit;
import org.bukkit.entity.Player;
import io.karfunction.karcoins.coins.VaultAPI;
public class Main
extends PlaceholderExpansion
{
public boolean canRegister()
{
return Bukkit.getPluginManager().getPlugin(getPlugin()) != null;
}
public String getAuthor()
{
return "allen_zhang";
}
public String getIdentifier()
{
return "KarAPI";
}
public String getPlugin()
{
return "KarCoins";
}
public String getVersion()
{
return "1.0.0";
}
public String onPlaceholderRequest(Player p, String identifier)
{
if (p == null) {
return "";
}
if (identifier.equals("karma")) {
return ""+VaultAPI.getKarma(p.getName());
}
if (identifier.equals("coins")) {
return ""+VaultAPI.getCoins(p.getName());
}
if (identifier.equals("credits")) {
return ""+VaultAPI.getCredit(p.getName());
}
return null;
}
}
教程部分
如果都这个份上了还是不会那就套我帖子里的把,自己替换自己的API与变量
我只能帮你们到这个份上了
讲解完毕我现在发出一个模板成品
2021.12 数据,可能有更多内容
前言:我们服务器自己写了一套Coins系统
并且写出来了API
但是我们无法做到把Coins输出到DeluxeMenu上
正当我们一筹莫展之际
我看到了一个教程链接是关于PlaceHolderAPI如何写扩展的
当时我想到了杜蕾斯是支持Papi的
于是我就想写一个扩展
经历过2次失败
我成功了
所以我想给大家写这个教程
教程部分
首先我们打开Eclipse (废话)
新建一个Java项目
然后导入PlaceHolderAPI(不要问我这个API在哪里下载)
导入的图片应该是这个样子的:

然后创建Plugin.yml
格式是这样子的
name:xxx
main:你的包名.你的主类名字
author: allen_zhang (滑稽)
depends: [PlaceHolderAPI,你要自己写扩展插件的名称]
(在这里给大家提醒一下一个菜鸟问题,当初我是菜鸟的时候(现在依然是)我经常对着Java项目右键新建Plugin.yml,但经历
了非常恶俗的洗礼之后,我才发现是对着src(默认包)右键)
然后我们对着src右键,新建一个包
注意: 包名必须为me.clip.* 否则PaPi不会读取(反正我就是这样的)
在包里新建一个Java类,我们把它称为Main.java
进入Main.java首先输入
你该输入的(不要问我什么是你该输入的,就是package 和import)
除了Bukkit的import以外,我们还要输入以下东西
import me.clip.placeholderapi.expansion.PlaceholderExpansion;
import 你的插件API所在地,我的是 io.karfunction.karcoins.coins.VaultAPI (你可能会猜到这是什么服务器了)
然后输入以下代码
public class Main(你的主类名字,就是我刚才举得例子Main.java)
//继承作者的恶俗思想
extends PlaceholderExpansion
{
public boolean canRegister()
//不要问我这个地方是干什么的,因为一般问的都是新手(不过每个人都是从新手过来的嘛)
{
return Bukkit.getPluginManager().getPlugin(getPlugin()) != null;
}
//这个恶俗地方你想删就删没什么大不了的
public String getAuthor()
{
return "allen_zhang"
}
//这个地方不能删,它是整个变量的前缀.例如我们设置了前缀为KarAPI.则他的变量为%KarAPI_我们设置的变量%
public String getIdentifier()
{
return "KarAPI"
}
//这个也不能删,是你的插件的名字,区分大小写,不然会恶俗.如果服务器没有这个插件更会恶俗(废话)
public String getPlugin()
{
return "KarVaultAPI"
}
//这个地方随意,我没删过,不知道删了会怎么样,请各位老爷们试一下
public String getVersion()
{
return "1.0.0" //这个1.0.0随意,你改成999999都行
}
public String onPlaceholderRequest(Player p, String identifier)
{
//这个东西是防止任何恶俗情况发生,不加的话不会出太大的问题,最好还是加上
if (p == null) {
return "";
}
//这个Credits就是变量的后缀,百分号+前缀_后缀+百分号 就是这个变量
//这里的变量为%KarAPI_karma%
if (identifier.equals("karma")) {
return ""+VaultAPI.getKarma(p.getName()); //这个是我们自己的API,请对号入座
}
//这个Coins就是变量的后缀,百分号+前缀_后缀+百分号 就是这个变量
//这里的变量为%KarAPI_coins%
if (identifier.equals("coins")) {
return ""+VaultAPI.getCoins(p.getName());//这个是我们自己的API,请对号入座
}
//这里的变量为%KarAPI_credits%
//这个Credits就是变量的后缀,百分号+前缀_后缀+百分号 就是这个变量
if (identifier.equals("credits")) {
return ""+VaultAPI.getCredit(p.getName()); //这个是我们自己的API,请对号入座
}
return null;
}
}
如果都这个份上了还是不会那就套我帖子里的把,自己替换自己的API与变量
我只能帮你们到这个份上了
讲解完毕我现在发出一个模板成品
package me.clip.placeholder.coins;
import me.clip.placeholderapi.expansion.PlaceholderExpansion;
import org.bukkit.Bukkit;
import org.bukkit.entity.Player;
import io.karfunction.karcoins.coins.VaultAPI;
public class Main
extends PlaceholderExpansion
{
public boolean canRegister()
{
return Bukkit.getPluginManager().getPlugin(getPlugin()) != null;
}
public String getAuthor()
{
return "allen_zhang";
}
public String getIdentifier()
{
return "KarAPI";
}
public String getPlugin()
{
return "KarCoins";
}
public String getVersion()
{
return "1.0.0";
}
public String onPlaceholderRequest(Player p, String identifier)
{
if (p == null) {
return "";
}
if (identifier.equals("karma")) {
return ""+VaultAPI.getKarma(p.getName());
}
if (identifier.equals("coins")) {
return ""+VaultAPI.getCoins(p.getName());
}
if (identifier.equals("credits")) {
return ""+VaultAPI.getCredit(p.getName());
}
return null;
}
}