Fork of Poseidon providing Bukkit #1060 to older Beta versions (b1.0-b1.7.3)
1package org.bukkit.command.defaults;
2
3import com.legacyminecraft.poseidon.PoseidonPlugin;
4import com.legacyminecraft.poseidon.PoseidonConfig;
5import org.bukkit.Bukkit;
6import org.bukkit.ChatColor;
7import org.bukkit.World;
8import org.bukkit.command.Command;
9import org.bukkit.command.CommandSender;
10import org.bukkit.craftbukkit.CraftServer;
11import org.bukkit.entity.Player;
12
13public class StopCommand extends VanillaCommand {
14 private final String msgKickShutdown;
15
16 public StopCommand() {
17 super("stop");
18 this.description = "Stops the server";
19 this.usageMessage = "/stop";
20 this.setPermission("bukkit.command.stop");
21 this.msgKickShutdown = PoseidonConfig.getInstance().getConfigString("message.kick.shutdown");
22 }
23
24 @Override
25 public boolean execute(CommandSender sender, String currentAlias, String[] args) {
26 if (!testPermission(sender)) return true;
27
28 Command.broadcastCommandMessage(sender, "Starting Server Shutdown, Saving Data.");
29
30 ((CraftServer) Bukkit.getServer()).setShuttingdown(true);
31 for (Player player : Bukkit.getOnlinePlayers()) {
32 player.saveData();
33 player.kickPlayer(this.msgKickShutdown);
34 }
35 for (World world : Bukkit.getWorlds()) {
36 world.save();
37 }
38 Bukkit.getScheduler().scheduleSyncDelayedTask(new PoseidonPlugin(), () -> {
39 Command.broadcastCommandMessage(sender, "Stopping the server..");
40 Bukkit.shutdown();
41 }, 100);
42
43 return true;
44 }
45
46 @Override
47 public boolean matches(String input) {
48 return input.startsWith("stop");
49 }
50}