Хостинг серверов Minecraft playvds.com
  1. Вы находитесь в русском сообществе Bukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на русский язык плагины наших собратьев из других стран.
    Скрыть объявление

[Решено] Перезагрузить сервер

Тема в разделе "Разработка плагинов для новичков", создана пользователем DonDays, 26 дек 2016.

Статус темы:
Закрыта.
  1. Автор темы
    DonDays

    DonDays Активный участник Пользователь

    Баллы:
    96
    Имя в Minecraft:
    DonDays
    Здравствуйте. Довольно тупой вопрос, но все же. Мне нужно перезагрузить сервер, поэтому Bukkit.shutdown() мне не подходит. Сначала пришла мысль диспатчить команду "restart", но уверен, что для рестарта сервера есть специальный метод. Если такого не существует, чем еще можно перезагрузить сервер?
     
  2. Хостинг MineCraft
    <
  3. Автор темы
    DonDays

    DonDays Активный участник Пользователь

    Баллы:
    96
    Имя в Minecraft:
    DonDays
    Поковырялся в ядре, нашел код в классе RestartCommand:
    Код:
    public static void restart()
    {
    try
    {
    final File file = new File( SpigotConfig.restartScript );
    if ( file.isFile() )
    {
    System.out.println( "Attempting to restart with " + SpigotConfig.restartScript );
    // Kick all players
    for ( EntityPlayer p : (List< EntityPlayer>) MinecraftServer.getServer().getPlayerList().players )
    {
    p.playerConnection.networkManager.queue( new Packet255KickDisconnect( SpigotConfig.restartMessage ) );
    p.playerConnection.networkManager.d();
    }
    // Give the socket a chance to send the packets
    try
    {
    Thread.sleep( 100 );
    } catch ( InterruptedException ex )
    {
    }
    // Close the socket so we can rebind with the new process
    MinecraftServer.getServer().ag().a();
    // Give time for it to kick in
    try
    {
    Thread.sleep( 100 );
    } catch ( InterruptedException ex )
    {
    }
    // Actually shutdown
    try
    {
    MinecraftServer.getServer().stop();
    } catch ( Throwable t )
    {
    }
    // This will be done AFTER the server has completely halted
    Thread shutdownHook = new Thread()
    {
    @Override
    public void run()
    {
    try
    {
    String os = System.getProperty( "os.name" ).toLowerCase();
    if ( os.contains( "win" ) )
    {
    Runtime.getRuntime().exec( "cmd /c start " + file.getPath() );
    } else
    {
    Runtime.getRuntime().exec( new String[]
    {
    "sh", file.getPath()
    } );
    }
    } catch ( Exception e )
    {
    e.printStackTrace();
    }
    }
    };
    shutdownHook.setDaemon( true );
    Runtime.getRuntime().addShutdownHook( shutdownHook );
    } else
    {
    System.out.println( "Startup script '" + SpigotConfig.restartScript + "' does not exist! Stopping server." );
    }
    System.exit( 0 );
    } catch ( Exception ex )
    {
    ex.printStackTrace();
    }
    }
    }
     
Статус темы:
Закрыта.

Поделиться этой страницей