我正在使用Spigot for Minecraft运行自己的插件。在本地主机上运行插件时,没有任何问题。但是,当我在远程服务器(Centos操作系统)上运行插件时,服务器每次都崩溃。
当我关闭服务器时,发生崩溃,并且我收到以下线程转储: https://pastebin.com/mdQBJ56H
我运行以下命令:
@Override
public void stopGamemode(CommandSender sender, Command command, String label, String[] args) {
if (!nPlayer.getBukkitPlayer().isOp())
return;
nPlayer.getBukkitPlayer().sendMessage(ChatColor.GRAY + "Stopping gamemode...");
// Send players to the hub
if (!Statics.isWindows()) {
for (Player player : Bukkit.getOnlinePlayers()) {
ByteArrayDataOutput out = ByteStreams.newDataOutput();
out.writeUTF("Connect");
out.writeUTF("Lobby");
player.sendPluginMessage(Statics.getJavaPlugin(), "BungeeCord", out.toByteArray());
}
}
Statics.setShutdown(true);
}
然后,我收听PlayerQuitEvent(以确保所有玩家都不在世界范围内)。当在线玩家人数小于或等于1时,我关闭服务器:
@EventHandler
public void playerLogout(PlayerQuitEvent event) {
NationPlayer nPlayer = Statics.getPlayerMap().get(event.getPlayer().getUniqueId());
nPlayer.playerLogout(event);
if(Statics.getShutdown() && Bukkit.getOnlinePlayers().size() <= 1) {
Bukkit.getScheduler().runTask(Statics.getJavaPlugin(), new Runnable() {
@Override
public void run() {
Bukkit.shutdown();
}
});
}
}
同样,在最后,我遇到了以下崩溃报告:https://pastebin.com/mdQBJ56H
在此崩溃报告中,我找不到对插件的单个引用(net.mcnations)。我也不相信我们正在执行任何mysql操作,因此,我也不知道这是如何发生的或为什么会发生这种情况。