NBPAPI使用
1024 字约 3 分钟
注意
为了统一命名, 包 p1xel.nobuildplus.API.NBPAPI 已被重命名为 p1xel.nobuildplus.api.NBPAPI
请更新包名防止插件找不到
获取 NBPAPI 的实例
在你的插件主类创建一个NBPAPI的实例
public class YourMainClass extends JavaPlugin {
private static NBPAPI nbpapi;
public static NBPAPI getNBPAPI();
@Override
public void onEnable() {
if (getServer.getPluginManager.getPlugin("NoBuildPlus") != null) {
nbpapi = new NBPAPI();
}
}
}NoBuildPlusAPI
NoBuildPlusAPI.java
public interface NoBuildPlusAPI {
/**
* @return API版本
*/
String getVersion();
/**
* 向NBP注册规则
* 并且在注册完成后刷新规则列表
* @param flag 实现了 p1xel.nobuildplus.Flag 接口的类实例
*/
void registerFlag(Flag flag);
/**
* 返回实体或世界会否被规则阻止
* 该方法包含了 isWorldEnabled()
* @param world 世界名
* @param flag p1xel.nobuildplus.Flag 接口类实例
* @return true 如果 玩家/生物/世界可以进行该行为, 或不被阻止
**/
boolean canDo(String world, Flag flag);
/**
* 返回插件会否以该规则对该世界保护
* @param world 世界名
* @param flag Flags
* @return true 如果NoBuildPlus执行了保护
**/
boolean canExecute(String world, Flags flag);
/**
* 返回插件会否以该规则对该世界保护
* @param world 世界名
* @param flag p1xel.nobuildplus.Flag 接口类实例
* @return true 如果NoBuildPlus执行了保护
**/
boolean canExecute(String world, Flag flag);
/**
* 返回插件会否以该规则对该世界保护
* 这个方法会包含与领地保护插件的检测
* 如果玩家处于领地保护插件创建的领地中, NBP的保护将会被取消
* @param world 世界名
* @param flag p1xel.nobuildplus.Flag 接口类实例
* @param player 玩家
* @return true 如果NoBuildPlus执行了保护
**/
boolean canExecute(String world, Flag flag, Player player);
/**
* 返回插件会否以该规则对该世界保护
* 这个方法会包含与领地保护插件的检测
* 如果该位置处于领地保护插件创建的领地中, NBP的保护将会被取消
* @param world 世界名
* @param flag p1xel.nobuildplus.Flag 接口类实例
* @param location 位置
* @return true 如果NoBuildPlus执行了保护
**/
boolean canExecute(String world, Flag flag, Location location);
/**
* 返回插件会否以该规则对该世界保护
* 这个方法会包含与领地保护插件的检测
* 如果实体处于领地保护插件创建的领地中, NBP的保护将会被取消
* @param world 世界名
* @param flag p1xel.nobuildplus.Flag 接口类实例
* @param entity 实体
* @return true 如果NoBuildPlus执行了保护
**/
boolean canExecute(String world, Flag flag, Entity entity);
/**
* 返回插件会否以该规则对该世界保护
* 这个方法会包含与领地保护插件的检测
* 如果方块处于领地保护插件创建的领地中, NBP的保护将会被取消
* @param world 世界名
* @param flag p1xel.nobuildplus.Flag 接口类实例
* @param block 方块
* @return true 如果NoBuildPlus执行了保护
**/
boolean canExecute(String world, Flag flag, Block block);
/**
* 你可以通过ProtectedWorld获取世界的flag, 拒绝消息, 无视权限及出生点,
* 你可以在 p1xel.nobuildplus.world.ProtectedWorld 查看用处
* @param worldName 世界名
* @return ProtectedWorld
**/
@Nullable
ProtectedWorld getWorld(String worldName);
/**
* @return NoBuildPlus的config.yml中的语言设定
*/
String getLang();
/**
* 获取世界是否属于NoBuildPlus保护的世界
* 注意 canExecute() 已经包含该方法
* @param world 世界名
* @return true 如果世界被NobuildPlus保护
**/
boolean isWorldEnabled(String world);
}示例
如果你想检测 BREAK 规则是否在 worldName 进行保护
该方法只能获取NoBuildPlus是否对该世界的保护
String world = "worldName";
NBPAPI api = new NBPAPI();
boolean canPlayerBreak = api.canDo(world, Flags.break); // 如果玩家可以破坏, 此处返回true这个方法不止获取NBP是否对该世界进行保护, 并且还会加上检查位置是否处于领地保护插件创建的领地的前置条件
Location location = 你的Location位置;
// 在这个使用情况中,
// 如果服务器安装如Residence, Dominion 和BlockRegen等与NBP兼容的领地保护插件,
// 该方法就会检测你提供的位置是否处于这些插件创建的领地中。
// 如果处于这些领地中,canExecute()就会返回false,也就代表着NoBuildPlus不会对该位置进行保护。
boolean isEnabled = api.canExecute(world, Flags.fire_spread, location);p1xel.nobuildplus.Flags 可以查看NoBuildPlus自带的所有Flag