Doc ID:
SIRC-074
ASkyBlock API 开发知识文档
ASkyBlock 插件的编程接口
Overview
ASkyBlock API 开发参考文档
概述
ASkyBlockAPI 是 ASkyBlock 插件的编程接口,位于 com.wasteofplastic.askyblock 包中。该API提供了一套相对稳定的方法供其他插件使用,避免直接依赖内部类导致代码破坏。
核心API方法
1. 获取API实例
// 获取ASkyBlockAPI实例
ASkyBlockAPI api = ASkyBlockAPI.getInstance();
2. 岛屿信息查询
2.1 检查玩家是否有岛屿
boolean hasIsland = api.hasIsland(playerUUID);
// 返回:true - 玩家拥有岛屿,false - 玩家没有岛屿
2.2 获取岛屿位置
Location islandLocation = api.getIslandLocation(playerUUID);
// 返回:玩家岛屿的位置(团队岛屿或个人岛屿)
2.3 获取岛屿等级
long islandLevel = api.getLongIslandLevel(playerUUID);
// 返回:玩家岛屿的等级(长整型)
// 注意:getIslandLevel() 方法已弃用,建议使用 getLongIslandLevel()
2.4 获取岛屿名称
String islandName = api.getIslandName(ownerUUID);
// 返回:岛屿的名称
3. 岛屿对象操作
3.1 获取岛屿对象
Island island = api.getIslandOwnedBy(playerUUID);
// 返回:玩家拥有的岛屿对象副本
3.2 根据位置获取岛屿
Island island = api.getIslandAt(location);
// 返回:该位置的岛屿对象,如果不存在则返回null
4. 团队管理
4.1 获取团队队长
UUID teamLeader = api.getTeamLeader(playerUUID);
// 返回:玩家的团队队长UUID
4.2 获取团队成员列表
List<UUID> teamMembers = api.getTeamMembers(playerUUID);
// 返回:玩家的团队成员UUID列表
4.3 检查是否为队长
boolean isLeader = api.isLeader(playerUUID);
// 返回:true - 玩家是队长,false - 玩家不是队长
5. 位置检查
5.1 检查位置是否在岛屿上
boolean onIsland = api.islandAtLocation(location);
// 返回:true - 位置在岛屿区域内,false - 不在岛屿上
5.2 检查玩家是否在岛屿上
boolean playerOnIsland = api.playerIsOnIsland(player);
// 返回:true - 玩家在自己的岛屿、团队岛屿或合作岛屿上
5.3 检查是否在出生点
boolean atSpawn = api.isAtSpawn(location);
// 返回:true - 位置在出生点,false - 不在出生点
6. 世界信息
6.1 获取岛屿世界
World islandWorld = api.getIslandWorld();
// 返回:岛屿主世界
6.2 获取下界世界
World netherWorld = api.getNetherWorld();
// 返回:下界世界
7. 挑战系统
7.1 获取所有挑战
LinkedHashMap<String, List<String>> allChallenges = api.getAllChallenges();
// 返回:所有挑战的映射表
7.2 获取挑战状态
Map<String, Boolean> challengeStatus = api.getChallengeStatus(playerUUID);
// 返回:玩家挑战完成状态的映射表
8. 传送点管理
8.1 获取玩家传送点
Location warpLocation = api.getWarp(playerUUID);
// 返回:玩家传送点的位置
8.2 列出所有传送点
Set<UUID> allWarps = api.listWarps();
// 返回:所有已知传送点的UUID集合
9. 岛屿设置
9.1 设置岛屿生物群系
boolean success = api.setIslandBiome(islandLocation, biomeType);
// 返回:true - 设置成功,false - 设置失败
9.2 设置岛屿名称
api.setIslandName(ownerUUID, "新岛屿名称");
// 设置岛屿名称
9.3 设置岛屿等级
api.setIslandLevel(playerUUID, 100);
// 设置玩家的岛屿等级
10. 重置次数管理
10.1 获取剩余重置次数
int resetsLeft = api.getResetsLeft(playerUUID);
// 返回:玩家剩余的岛屿重置次数
10.2 设置重置次数
api.setResetsLeft(playerUUID, 5);
// 设置玩家的重置次数
11. 消息系统
11.1 设置离线消息
boolean messageSet = api.setMessage(playerUUID, "欢迎回来!");
// 返回:true - 消息设置成功,false - 设置失败
// 玩家下次登录时会收到此消息
11.2 发送消息给离线队友
api.tellOfflineTeam(playerUUID, "团队消息");
// 向团队中所有离线玩家发送消息
12. 排行榜
12.1 获取前十排行榜
Map<UUID, Long> topTen = api.getLongTopTen();
// 返回:前十岛屿等级的映射表(UUID -> 等级)
// 注意:getTopTen() 方法已弃用,建议使用 getLongTopTen()
13. 合作岛屿
13.1 检查是否为合作岛屿
boolean isCoop = api.isCoop(player);
// 返回:true - 玩家在合作岛屿中,false - 不在
13.2 获取合作岛屿列表
Set<Location> coopIslands = api.getCoopIslands(player);
// 返回:玩家参与的所有合作岛屿位置集合
14. 岛屿数量统计
14.1 获取岛屿总数
int islandCount = api.getIslandCount();
// 返回:服务器中的岛屿总数
15. 传送点面板更新
15.1 强制更新传送点面板
api.updateWarpPanel();
// 强制更新传送点面板并触发传送点列表事件
使用示例
基本使用
import com.wasteofplastic.askyblock.ASkyBlockAPI;
public class MyPlugin {
private ASkyBlockAPI api;
public void onEnable() {
api = ASkyBlockAPI.getInstance();
// 检查玩家是否有岛屿
UUID playerUUID = player.getUniqueId();
if (api.hasIsland(playerUUID)) {
// 获取岛屿位置
Location islandLoc = api.getIslandLocation(playerUUID);
player.sendMessage("你的岛屿在: " + islandLoc);
// 获取岛屿等级
long level = api.getLongIslandLevel(playerUUID);
player.sendMessage("岛屿等级: " + level);
}
}
}
团队管理示例
public void checkTeamInfo(UUID playerUUID) {
// 检查是否在团队中
if (api.inTeam(playerUUID)) {
// 获取团队队长
UUID leader = api.getTeamLeader(playerUUID);
// 获取团队成员
List<UUID> members = api.getTeamMembers(playerUUID);
// 检查是否为队长
boolean isLeader = api.isLeader(playerUUID);
// 处理团队信息...
}
}
注意事项
- API稳定性:建议只使用ASkyBlockAPI类中的方法,避免直接调用其他内部类
- 数据类型:岛屿等级现在使用long类型,已弃用的int类型方法可能不准确
- 线程安全:API方法通常不是线程安全的,建议在主线程调用
- 空值检查:某些方法可能返回null,需要进行空值检查
- 玩家状态:某些方法需要玩家在线,某些可以处理离线玩家
包依赖
- 主包:
com.wasteofplastic.askyblock - 岛屿对象:
com.wasteofplastic.askyblock.Island - 需要Bukkit/Spigot API支持
这个文档涵盖了ASkyBlock插件最常用的15个核心API方法,为其他AI开发提供了完整的参考。