Package com.bergerkiller.bukkit.mw.commands

Source Code of com.bergerkiller.bukkit.mw.commands.TeleportPortal

package com.bergerkiller.bukkit.mw.commands;

import java.util.HashSet;

import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.Location;
import org.bukkit.World;
import org.bukkit.entity.Player;

import com.bergerkiller.bukkit.mw.Localization;
import com.bergerkiller.bukkit.mw.Permission;
import com.bergerkiller.bukkit.mw.Portal;
import com.bergerkiller.bukkit.mw.WorldManager;

public class TeleportPortal extends Command {

  public TeleportPortal() {
    super(Permission.COMMAND_TPP, "tpp");
  }

  public void execute() {
    if (args.length >= 1) {
      Player[] targets = null;
      String dest = null;
      if (args.length > 1) {
        HashSet<Player> found = new HashSet<Player>();
        for (int i = 0; i < args.length - 1; i++) {
          Player player = Bukkit.getServer().getPlayer(args[i]);
          if (player == null) {
            message(ChatColor.RED + "Player '" + args[i] + "' has not been found!");
          } else {
            found.add(player);
          }
        }
        targets = found.toArray(new Player[0]);
        dest = args[args.length - 1];
      } else if (sender instanceof Player) {
        targets = new Player[] {(Player) sender};
        dest = args[0];
      } else {
        sender.sendMessage("This command is only for players!");
        return;
      }
      if (targets.length > 0) {
        //Get prefered world
        World world = targets[0].getWorld();
        if (player != null) world = player.getWorld();
        //Get portal
        Location tele = Portal.getPortalLocation(dest, world.getName(), true);
        if (tele != null) {
          Portal portal = Portal.getNear(tele, 3);
          if (portal != null) {
            //Perform portal teleports
            int succcount = 0;
            for (Player target : targets) {
              if (portal.teleportSelf(target)) {
                //Success
                succcount++;
              }
            }
            if (targets.length > 1 || targets[0] != sender) {
              message(ChatColor.YELLOW.toString() + succcount + "/" + targets.length +
                  " Players have been teleported to portal '" + dest + "'!");
            }
          } else {
            message(ChatColor.RED + "The portal world is not loaded!");
          }
        } else {
          //Match world
          String worldname = WorldManager.matchWorld(dest);
          if (worldname != null) {
            World w = WorldManager.getWorld(worldname);
            if (w != null) {
              //Perform world teleports
              int succcount = 0;
              for (Player target : targets) {
                if (WorldManager.teleportToWorld(target, w)) {
                  //Success
                  succcount++;
                }
              }
              // Show message, but don't if only the sender was teleported
              // He already receives an enter message by the teleport listener
              if (targets.length > 1 || targets[0] != sender) {
                message(ChatColor.YELLOW.toString() + succcount + "/" + targets.length +
                    " Players have been teleported to world '" + w.getName() + "'!");
              }
            } else {
              message(ChatColor.YELLOW + "World '" + worldname + "' is not loaded!");
            }
          } else {
            Localization.PORTAL_NOTFOUND.message(sender, dest);
            listPortals(Portal.getPortals());
          }
        }
      }
    } else {
      showInv();
   
  }
 
}
TOP

Related Classes of com.bergerkiller.bukkit.mw.commands.TeleportPortal

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.