Самописный /restart

Baroness's Dev

Разработчик
Пользователь
Использую форк спигота (вынужденная мера), в котором нет /restart и он заменяет /stop. Разработчик и комьюнити не посчитали это важной функцией, поэтому её не добавят. Но я часто использую RCON, где нет возможности перезагрузки. То есть при /restart сервер просто выключается и я теряю к нему доступ.
Возможно ли написать свой /restart?
offtop Это звучит как что-то бредовое, но надежда греет мою душу...
 
У

Удалённый пользователь

YAML:
  restart-on-crash: true
  restart-script: ./start.sh
в spigot.yml
 

Baroness's Dev

Разработчик
Пользователь
Главный класс:
Java:
import org.bukkit.plugin.java.JavaPlugin;

public final class Restarting extends JavaPlugin {

    @Override
    public void onEnable() {
        this.getCommand("brestart").setExecutor(new BRestart());

    }

    @Override
    public void onDisable() {
    }
}
Обработчик команд:
Java:
import org.bukkit.Bukkit;
import org.bukkit.Server;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;

public class BRestart implements CommandExecutor {
    @Override
    public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
        if (sender instanceof Server) {
            Bukkit.spigot().restart();
        }
        if (sender instanceof Player) {
            if (!sender.hasPermission("brestart")) {
                sender.sendMessage("Иди своей дорогой");
                return true;
            }
            Bukkit.spigot().restart();
        }
        return true;
    }
}
plugin.yml:
YAML:
name: Restarting
version: ${project.version}
main: restarting.restarting.Restarting
prefix: RestartBaroness
permissions:
  brestart:
    default: op
Всё верно?
Авто объединение сообщений:

Не работает:
Код:
[16:34:08] [Server thread/ERROR]: Error occurred while enabling Restarting v1.0-SNAPSHOT (Is it up to date?)
java.lang.NullPointerException: null
        at restarting.restarting.Restarting.onEnable(Restarting.java:9) ~[?:?]
        at org.bukkit.plugin.java.JavaPlugin.setEnabled(JavaPlugin.java:264) ~[JavaPlugin.class:git-CatServer-1.12.2-3440193]
        at org.bukkit.plugin.java.JavaPluginLoader.enablePlugin(JavaPluginLoader.java:328) [JavaPluginLoader.class:git-CatServer-1.12.2-3440193]
        at org.bukkit.plugin.SimplePluginManager.enablePlugin(SimplePluginManager.java:405) [SimplePluginManager.class:git-CatServer-1.12.2-3440193]
        at org.bukkit.craftbukkit.v1_12_R1.CraftServer.enablePlugin(CraftServer.java:436) [CraftServer.class:git-CatServer-1.12.2-3440193]
        at org.bukkit.craftbukkit.v1_12_R1.CraftServer.enablePlugins(CraftServer.java:384) [CraftServer.class:git-CatServer-1.12.2-3440193]
        at net.minecraft.server.MinecraftServer.func_71247_a(MinecraftServer.java:391) [MinecraftServer.class:?]
        at net.minecraft.server.dedicated.DedicatedServer.func_71197_b(DedicatedServer.java:327) [nz.class:?]
        at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:602) [MinecraftServer.class:?]
        at java.lang.Thread.run(Unknown Source) [?:1.8.0_241]
 
Последнее редактирование модератором:

BuseSo

Разработчик
Пользователь
Bukkit.getPluginCommand("brestart").setExecutor(new BRestart());
Что-то мне кажется, что this.getCommand() пытается получить уже существующую команду.
 

BuseSo

Разработчик
Пользователь
Оу, у тебя там permissions
А зачем, если делаешь проверку внутри метода команды?
 

BuseSo

Разработчик
Пользователь
offtop Может только в ранних версиях такое нужно было делать, с 1.7 уже точно не обязательно.
 

BlackBarcode13

Разработчик
Пользователь
Как вариант итерировать по плагинам сервера и использовать
Java:
for (Plugin plugin : Bukkit.getPluginManager.getPlugins()) {
    Bukkit.getPluginManager().enable(disable)Plugin(plugin)
}
Конечно же вынести все в отдельный метод, и просто выключать и включать все последовательно.
offtop
А что за форк? Если это семейство такоспигота и им подобные, то отбрасывай
 

Baroness's Dev

Разработчик
Пользователь
offtop CatServer. Лучший вариант для связки spigot + forge + 1.12.2, да и разработчик отвечает в тг сразу же, в случае ошибок. Я уже решил проблему с релоад, надо было просто написать линукс скрипт start.sh и закинуть на хостинг)

Авто объединение сообщений:

offtop В канале форка мне все сказали, что /restart не работает и он вообще не нужен. Написал разработчику (который тоже в чате сидит так то) и он удивился и сказал про скрипт. Такие дела)
 

BlackBarcode13

Разработчик
Пользователь
Black_Baroness,
offtop Sponge и только Sponge)
Большинство важных плагинов из спигота перенесли под губку, остальное можно всегда переписать или заказать у любого норм кодера, сделает.
 

Комнаты в чате

Верх Низ