Fork of Poseidon providing Bukkit #1060 to older Beta versions (b1.0-b1.7.3)
at develop 50 lines 1.7 kB view raw
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}