关机时Spigot服务器崩溃

时间:2020-09-25 21:25:01

标签: java concurrency minecraft

我正在使用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操作,因此,我也不知道这是如何发生的或为什么会发生这种情况。

0 个答案:

没有答案