package com.walrusone.skywars.commands; import java.io.File; import org.bukkit.ChatColor; import org.bukkit.Location; import org.bukkit.World; import org.bukkit.entity.Player; import org.bukkit.event.player.PlayerTeleportEvent.TeleportCause; import com.walrusone.skywars.SkyWarsReloaded; import com.walrusone.skywars.utilities.Messaging; public class EditMapCmd extends BaseCmd { public EditMapCmd() { forcePlayer = true; cmdName = "edit"; argLength = 2; //counting cmdName usage = "<mapname>"; desc = ":: Edits the map named <mapname>"; } @Override public boolean run() { final String worldName = args[1].toLowerCase(); if (SkyWarsReloaded.getMC().mapExists(worldName)) { boolean alreadyLoaded = false; final Player player = (Player) sender; for (World world: SkyWarsReloaded.get().getServer().getWorlds()) { if (world.getName().equalsIgnoreCase(worldName)) { alreadyLoaded = true; if (SkyWarsReloaded.getMC().mapRegistered(worldName)) { SkyWarsReloaded.getMC().removeMap(worldName); } World editWorld = SkyWarsReloaded.get().getServer().getWorld(worldName); player.teleport(new Location(editWorld, 0, 21, 0), TeleportCause.PLUGIN); } } if (!alreadyLoaded) { File dataDirectory = new File(SkyWarsReloaded.get().getDataFolder(), "maps"); File source = new File (dataDirectory, worldName); File target = new File (SkyWarsReloaded.get().getServer().getWorldContainer().getAbsolutePath(), worldName); boolean mapExists = false; if(target.isDirectory()) { if(target.list().length > 0) { mapExists = true; } } if (mapExists) { SkyWarsReloaded.getWC().deleteWorld(worldName); } SkyWarsReloaded.getWC().copyWorld(source, target); boolean loaded = SkyWarsReloaded.getWC().loadWorld(worldName); if (loaded) { SkyWarsReloaded.get().getServer().getScheduler().scheduleSyncDelayedTask(SkyWarsReloaded.get(), new Runnable() { public void run() { World editWorld = SkyWarsReloaded.get().getServer().getWorld(worldName); player.teleport(new Location(editWorld, 0, 21, 0), TeleportCause.PLUGIN); } }, 20); } else { player.sendMessage(ChatColor.RED + "WORLD FAILED TO LOADED"); } } return true; } else { sender.sendMessage(new Messaging.MessageFormatter().format("error.map-does-not-exist")); return true; } } }