参与编写者: MagicLu550
一. Server
1.概述
Server类是插件几乎所有接口的入口,几乎一切的接口都是基于这个类获得的,而在nukkit中,Server类 是作为一个对象单独存在,Server的实例化意味着nukkit服务器的启动,并且不允许外部调用其构造方法,但可以根据getInstance方法或者插件主类提供的 getServer方法可以获得,这里我们提到了两个获得Server的方法
Server.getInstance();
this.getServer();//this.getClass() == mainClass
Server对象是在Nukkit类里完成初始化的,所以我们不需要担心Server对象是否存在的问题.加载插件 前,Server对象已经存在.一切启动的初始化操作都在Server的构造方法中完成.对于Server的复杂原理, 这里不过多赘述,可以参见第四部分的内容
Nukkit.java Line. 108-115
try {
if (TITLE) {
System.out.print((char) 0x1b + "]0;Nukkit is starting up..." + (char) 0x07);
}
new Server(PATH, DATA_PATH, PLUGIN_PATH, language);
} catch (Throwable t) {
log.throwing(t);
}
- Server类的常用方法
- addOp(String) 可以添加op管理员的名称,name是玩家名称
- addWhitelist(String) 可以添加白名单
- batchPackets(Player[], DataPacket[]) 批量发送数据包,后面数据包发送篇详细讲解
- broadMessage(String) 发送服务器广播信息,所有玩家可见
- addRecipe(Recipe) 添加配方,这个配方指包括合成、炉子、炼药台等使用的配方。
- broadcastPacket(Player[], DataPacket) 向所有玩家广播数据包
- forceShutdown() 强制关闭服务端
- doAutoSave() 自动保存
- generateLevel(String) 产生一个level(世界),String为名字,返回创建是否成功
- getAllowFlight() 获得这个服务器是否是允许飞行的
- getApiVersion() 获取插件api的版本
- getCommandAliases() 将返回以(一个指令名对应着多个别名)为一对的Map集合
- getCommandMap() 获取指令Map,通过它可以注册一些命令,前面已经说到过
- getDataPath() 获取服务端的数据目录
- getDefaultGamemode() 获取服务端的默认模式(如创造模式等)
- getDefaultLevel() 获取默认的世界对象,如World
- getDifficulty() 获得游戏难度,如和平模式等
- getIp() 获得服务端的ip地址
- getIpBans() 获得封禁的信息(ban)
- getLanguage() 获得服务端默认语言(如zh等)
- getLevelByName(String) 通过世界名称获得世界对象
- getMaxPlayers() 获得最大人数
- getMotd() 获得服务端的motd
- getName() 获得服务端的名称
- getNameBans() 获得迸封禁的玩家表
- getOfflinePlayer(String) 通过玩家名称得到不在线玩家
- getOnlinePlayers() 获得在线玩家,UUID都是唯一的标识符
- getPlayerExact(String) 通过名称获得一个确切的玩家
- getPluginManager() 获得插件管理器
- getOps() 获得管理员清单
- getPort() 获得端口
- getPluginPath() 获得插件文件夹的位置
- getScheduler() 获得任务表,可以注册有关多线程之类的东西
- getSubMotd() 获得附属的motd
- hasWhitelist() 是否有白名单
- isOp(String) 判断一个玩家是否是op,String为玩家名称
- reload() 重启服务端
- reloadWhitelist() 重新加载白名单
- removeOnlinePlayer(Player) 删除在线玩家
- removeOp(String) 删除指定管理员
- removeWhitelist(String) 删除一个玩家的白名单
- shutdown() 关闭服务端
- unloadLevel(Level) 卸载一个世界
二. PluginManager
-
概述 PluginManager是插件管理器,很多的插件加载和数据储存都在这里进行,如监听器 的注册等 使用这个类也可以实现动态加载插件等一系列的操作,PluginManager的加载基于JavaPluginLoader
-
常用的方法
- addPermission(Permission) 添加Permission对象
- callEvent(Event) 触发一个事件
- clearPlugins() 清空插件
- disablePlugin(Plugin) 停止一个插件,这个插件会提前调用onDisable 并卸载
- getPlugin(String) 得到其他插件的插件对象
- loadPlugin(File) 加载一个插件,路径默认为服务端根目录
- loadPlugins(File) 加载一个文件夹的插件
- registerEvents(Listener, Plugin) 注册监听器
- removePermission(String) 删除一个Permission