1. Этот сайт использует файлы cookie. Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie. Узнать больше.
  2. Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.
    Скрыть объявление
Скрыть объявление
В преддверии глобального обновления, мы проводим исследования, которые помогут нам сделать опыт пользования форумом ещё удобнее. Помогите нам, примите участие!

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

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

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

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

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

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