package org.arkham.cs.commands; import org.arkham.cs.CosmeticSuite; import org.arkham.cs.cosmetics.Portal; import org.arkham.cs.cosmetics.PortalLink; import org.bukkit.Bukkit; import org.bukkit.ChatColor; import org.bukkit.command.Command; import org.bukkit.command.CommandExecutor; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; import org.bukkit.metadata.FixedMetadataValue; import com.sk89q.worldguard.LocalPlayer; import com.sk89q.worldguard.bukkit.WorldGuardPlugin; import com.sk89q.worldguard.protection.ApplicableRegionSet; public class PortalCommand implements CommandExecutor { Portal p1 = null, p2 = null; public PortalCommand(CosmeticSuite cs){ cs.getCommand("portal").setExecutor(this); } @Override public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) { if(args.length != 1){ sender.sendMessage(help()); return true; } if(!args[0].equalsIgnoreCase("create")){ sender.sendMessage(help()); return true; } Player player = (Player) sender; if(!checkPerms(player)){ player.sendMessage(CosmeticSuite.PREFIX + "You cannot place a portal here."); return true; } if(player.hasMetadata("created2")){ if(p1 == null){ sender.sendMessage(help()); return true; } if(p2 == null){ sender.sendMessage(help()); return true; } new PortalLink(p1, p2, player); player.removeMetadata("created", CosmeticSuite.getInstance()); player.removeMetadata("created2", CosmeticSuite.getInstance()); return true; } if(!player.hasMetadata("created")){ //first creation p1 = new Portal(player); player.sendMessage(CosmeticSuite.PREFIX + "Set the first location!"); player.setMetadata("created", new FixedMetadataValue(CosmeticSuite.getInstance(), "")); } else { //first creation p2 = new Portal(player); player.sendMessage(CosmeticSuite.PREFIX + "Set the second location!"); player.removeMetadata("created", CosmeticSuite.getInstance()); player.setMetadata("created2", new FixedMetadataValue(CosmeticSuite.getInstance(), "")); } //Second creation return false; } public boolean checkPerms(Player player) { WorldGuardPlugin api = (WorldGuardPlugin) Bukkit.getPluginManager().getPlugin("WorldGuard"); ApplicableRegionSet regions = api.getRegionManager(player.getLocation().getWorld()).getApplicableRegions(player.getLocation()); LocalPlayer lPlayer = api.wrapPlayer(player); if (regions.size() == 0) { return true; } return regions.canBuild(lPlayer); } public String[] help(){ String prefix = CosmeticSuite.PREFIX; String[] help = { ChatColor.YELLOW + "====================" + prefix + "==========================", prefix + "/portal - Shows the help menu.", " " + ChatColor.RED + "/portal create [First Execution] | Set the first location of your portal!", " " + ChatColor.RED + "/portal create [Second Execution] | Set the second location of your portal, and 2 portals will appear", " " + ChatColor.RED + "/portal create [Third Execution] | Light the portals.", ChatColor.YELLOW + "====================" + prefix + "==========================", }; return help; } }