package dk.thoerup.bukkit.hoeruputils; import java.util.concurrent.atomic.AtomicBoolean; import org.bukkit.ChatColor; import org.bukkit.Server; import org.bukkit.command.Command; import org.bukkit.command.CommandExecutor; import org.bukkit.command.CommandSender; import org.bukkit.plugin.Plugin; import dk.thoerup.bukkit.hoeruputils.utils.MessageBroadcaster; public class MapgenCommand implements CommandExecutor{ Server server; Plugin plugin; AtomicBoolean started = new AtomicBoolean(false); public MapgenCommand(Plugin plugin) { this.plugin = plugin; server = plugin.getServer(); } @Override public boolean onCommand(final CommandSender sender, Command command, String label, String[] args) { if (started.compareAndSet(false, true)) { server.broadcastMessage(ChatColor.YELLOW + "mapgenerator has started"); server.getScheduler().scheduleAsyncDelayedTask(plugin, new MapgenRunner() ); server.getWorlds().get(0).save(); //sync world files; } else { server.broadcastMessage(ChatColor.YELLOW + "mapgenerator is already running"); } return false; } class MapgenRunner implements Runnable { @Override public void run() { String result = "failed"; try { Process p = Runtime.getRuntime().exec("/home/minecraft/bin/createmap.sh all"); p.waitFor(); result = "finished"; } catch(Exception e) {} started.set(false); String msg = "" + ChatColor.YELLOW + "mapgenerator has " + result; server.getScheduler().scheduleSyncDelayedTask(plugin, new MessageBroadcaster(server, msg) ); } } }