MiaoScript/src/main/resources/internal/bukkit/server.js

164 lines
3.7 KiB
JavaScript

'use strict';
/**
* Bukkit基础操作
* Created by 蒋天蓓 on 2017/2/9 0009.
*/
/*global Java, base, module, exports, require, __FILE__*/
var Bukkit = MServer;
/**
* 获取NMS版本
*/
var nmsVersion = Bukkit.server.class.name.split('.')[3];
/**
* 获取NMS类
*/
function nmsCls(name) {
try {
return Java.type(['net.minecraft.server', nmsVersion, name].join('.'));
} catch (e) {
return base.getClass(['net.minecraft.server', nmsVersion, name].join('.'))
}
};
/**
* 获取OBC类
*/
function obcCls(name) {
try {
return Java.type(['org.bukkit.craftbukkit', nmsVersion, name].join('.'));
} catch (e) {
return base.getClass(['org.bukkit.craftbukkit', nmsVersion, name].join('.'))
}
};
/**
* 插件管理
* @type {{manager: *, get: exports.plugin.get, load: exports.plugin.load}}
*/
var PluginManager = Bukkit.pluginManager;
var plugin = {
/**
* 插件管理工具
*/
manager: PluginManager,
/**
* 获得插件实例
* @param name 插件名称
* @returns {*}
*/
get: function(name) {
return PluginManager.getPlugin(name);
},
/**
* 载入插件 并且返回结果
* @param name 插件名称
* @returns {*}
*/
load: function(name) {
var plugin = this.get(name);
if (ext.notNull(plugin) && !plugin.isEnabled()) {
PluginManager.enablePlugin(plugin);
}
return PluginManager.isPluginEnabled(name);
},
self: PluginManager.getPlugin('MiaoScript')
};
/**
* 服务管理
* @type {{manager: *, get: exports.plugin.get, load: exports.plugin.load}}
*/
var ServicesManager = Bukkit.servicesManager;
var service = {
/**
* 服务管理工具
*/
manager: ServicesManager,
/**
* 获得服务实例
* @param name 插件名称
* @returns {*}
*/
get: function(name) {
var reg = ServicesManager.getRegistration(base.getClass(name));
return reg && reg.provider || null;
}
};
/**
* 获取玩家
*/
function player() {
if (!arguments[0]) { throw TypeError("player name can't be null!") }
switch (arguments.length) {
case 1:
return Bukkit.getPlayer(arguments[0]);
default:
return Bukkit.getPlayerExtra(arguments[0]);
}
};
/**
* 获取在线玩家
*/
function onlinePlayers() {
return Bukkit.onlinePlayers;
};
/**
* 公告
* @param message 消息
*/
function broadcast(message) {
Bukkit.broadcastMessage(message);
};
/**
* 执行名称
* @param player 玩家
* @param command 命令
*/
function command(player, command) {
Bukkit.dispatchCommand(player, command);
};
/**
* 执行控制台命令
* @param command 命令
*/
function console(command) {
command(Bukkit.consoleSender, command);
};
/**
* 玩家以OP权限执行命令
* @param player
* @param command
*/
function opcommand(player, command) {
var origin = player.isOp();
player.setOp(true);
try {
command(player, command);
} finally {
player.setOp(origin);
}
};
/**
* 关闭引擎时执行的操作
*/
function shutdown() {
Bukkit.scheduler.cancelTasks(plugin.self);
Bukkit.servicesManager.unregisterAll(plugin.self);
org.bukkit.event.HandlerList.unregisterAll(plugin.self);
Bukkit.messenger.unregisterIncomingPluginChannel(plugin.self);
Bukkit.messenger.unregisterOutgoingPluginChannel(plugin.self);
}
exports = module.exports = {
$: Bukkit,
nmsVersion: nmsVersion,
nmsCls: nmsCls,
obcCls: obcCls,
plugin: plugin,
service: service,
player: player,
onlinePlayers: onlinePlayers,
broadcast: broadcast,
command: command,
console: console,
opcommand: opcommand,
shutdown: shutdown
}