Beispiel #1
0
 void arenaSelect(Player spectator) {
   Inventory gui = Bukkit.getServer().createInventory(spectator, 27, basePrefix);
   for (int i = 1; i < setup.getConfig().getInt("nextarena"); i++) {
     ItemStack arenaBook = new ItemStack(Material.BOOK, 1);
     ItemMeta meta = (ItemMeta) arenaBook.getItemMeta();
     meta.setDisplayName(setup.getConfig().getString("arena." + i + ".name"));
     arenaBook.setItemMeta(meta);
     gui.addItem(arenaBook);
   }
   spectator.openInventory(gui);
 }
Beispiel #2
0
 void lobbySetup(Player player, String arenaName) {
   int arenaNum = 0;
   for (int i = 1; i < setup.getConfig().getInt("nextarena"); i++) {
     if (setup.getConfig().getString("arena." + i + ".name").equals(arenaName)) {
       arenaNum = i;
     }
   }
   if (arenaNum == 0) {
     player.sendMessage(
         prefix + "Arena " + ChatColor.RED + arenaName + ChatColor.GOLD + " doesn't exist!");
   } else {
     setup
         .getConfig()
         .set("arena." + arenaNum + ".lobby.y", Math.floor(player.getLocation().getY()));
     setup
         .getConfig()
         .set("arena." + arenaNum + ".lobby.x", Math.floor(player.getLocation().getX()));
     setup
         .getConfig()
         .set("arena." + arenaNum + ".lobby.z", Math.floor(player.getLocation().getZ()));
     setup.getConfig().set("arena." + arenaNum + ".lobby.world", player.getWorld().getName());
     setup.saveConfig();
     player.sendMessage(
         prefix
             + "Arena "
             + ChatColor.RED
             + arenaName
             + ChatColor.GOLD
             + "'s lobby location set to your location");
   }
 }
Beispiel #3
0
  @Override
  public void onEnable() {
    setup = new ConfigAccessor(this, "setup");
    toggles = new ConfigAccessor(this, "toggles");

    setup.saveDefaultConfig();
    toggles.saveDefaultConfig();

    compass = toggles.getConfig().getBoolean("compass", true);
    clock = toggles.getConfig().getBoolean("arenaclock", true);
    specchat = toggles.getConfig().getBoolean("specchat", true);
    scoreboard = toggles.getConfig().getBoolean("colouredtablist", true);
    output = toggles.getConfig().getBoolean("outputmessages", true);
    death = toggles.getConfig().getBoolean("deathspec", false);

    console = getServer().getConsoleSender();
    if (scoreboard) {
      manager = Bukkit.getScoreboardManager();
      board = manager.getNewScoreboard();
      team = board.registerNewTeam("spec");
      team.setPrefix(
          ChatColor.DARK_GRAY
              + "["
              + ChatColor.GRAY
              + "Spec"
              + ChatColor.DARK_GRAY
              + "] "
              + ChatColor.GRAY);
    }

    for (Player player : getServer().getOnlinePlayers()) {
      user.put(player.getName(), new PlayerObject());
    }
    getServer().getPluginManager().registerEvents(new SpectateListener(this), this);
    if (output) {
      console.sendMessage(
          prefix + "Version " + ChatColor.RED + "1.8" + ChatColor.GOLD + " is enabled!");
    }
    this.getCommand("spectate").setExecutor(commands);
    this.getCommand("spec").setExecutor(commands);
  }
  private void portalEditMenu(
      CommandSender sender, ConfigAccessor portalConfig, String portalName) {
    // make the text gui with the json message for a list of edit commands to be clicked or hovered
    // put \" for a " in the json messages
    // sadly there is no newline code so these three lines will have to be copied and pasted for
    // each line

    // use the usual messages for normal lines but anything that needs special features make sure
    // you use the
    //  chat steriliser
    sender.sendMessage("");
    sender.sendMessage(PluginMessages.customPrefix + " Editing: \u00A7e" + portalName);

    sender.sendMessage(
        " \u00A7apos1\u00A7e: "
            + portalConfig.getConfig().getString(portalName + ".pos1.X")
            + ", "
            + portalConfig.getConfig().getString(portalName + ".pos1.Y")
            + ", "
            + portalConfig.getConfig().getString(portalName + ".pos1.Z"));
    sender.sendMessage(
        " \u00A7apos2\u00A7e: "
            + portalConfig.getConfig().getString(portalName + ".pos2.X")
            + ", "
            + portalConfig.getConfig().getString(portalName + ".pos2.Y")
            + ", "
            + portalConfig.getConfig().getString(portalName + ".pos2.Z"));

    String destination = portalConfig.getConfig().getString(portalName + ".destination");
    if (destination != null) {
      sender.sendMessage(" \u00A7adestination\u00A7e: " + destination);
    } else {
      sender.sendMessage(" \u00A7cdestination\u00A7e: null");
    }

    String trigger = portalConfig.getConfig().getString(portalName + ".triggerblock");
    if (trigger != null) {
      sender.sendMessage(" \u00A7atriggerBlock\u00A7e: " + trigger);
    } else {
      sender.sendMessage(" \u00A7ctriggerBlock\u00A7e: null");
    }

    if (portalConfig.getConfig().getString(portalName + ".portalArgs.command.1") != null) {
      int commands = 0;
      String command = portalConfig.getConfig().getString(portalName + ".portalArgs.command.1");
      // TODO possibly change code so it counds number of subvalues rather than a loop.
      while (command != null) {
        command =
            portalConfig.getConfig().getString(portalName + ".portalArgs.command." + ++commands);
      }
      if (--commands > 1) {
        sender.sendMessage(" \u00A7acommands\u00A7e: " + commands + " commands");
      } else {
        sender.sendMessage(" \u00A7acommands\u00A7e: " + commands + " command");
      }
    } else {
      sender.sendMessage(" \u00A7ccommands\u00A7e: none");
    }
    sender.sendMessage("");

    Player player = (Player) sender;

    plugin.compat.sendRawMessage(
        "{\"text\":\"\u00A7aFunctions\u00A7e: \","
            + "\"extra\":[{\"text\":\"\u00A7eRemove\",\"hoverEvent\":{\"action\":\"show_text\",\"value\":\"Remove the selected portal\"},\"clickEvent\":{\"action\":\"clickEvent\",\"value\":\"/portal gui remove "
            + portalName
            + "\"}}"
            + ",{\"text\":\"  \"},{\"text\":\"\u00A7eShow\",\"hoverEvent\":{\"action\":\"show_text\",\"value\":\"Show the selected portal\"},\"clickEvent\":{\"action\":\"clickEvent\",\"value\":\"/portal show "
            + portalName
            + "\"}}"
            + ",{\"text\":\"  \"},{\"text\":\"\u00A7eRename\",\"hoverEvent\":{\"action\":\"show_text\",\"value\":\"Change the name of the portal\"},\"clickEvent\":{\"action\":\"suggest_command\",\"value\":\"/portal rename \"}}"
            + ",{\"text\":\"  \"},{\"text\":\"\u00A7eActivate\",\"hoverEvent\":{\"action\":\"show_text\",\"value\":\"Teleport to the set destination\n(same as entering the portal)\"},\"clickEvent\":{\"action\":\"clickEvent\",\"value\":\"/warp "
            + destination
            + "\"}}]}",
        player);

    sender.sendMessage("");
  }
  @SuppressWarnings("deprecation")
  @Override
  public boolean onCommand(CommandSender sender, Command cmd, String command, String[] args) {
    ConfigAccessor config = new ConfigAccessor(plugin, "config.yml");
    ConfigAccessor portalConfig = new ConfigAccessor(plugin, "portals.yml");
    Player player = (Player) sender;
    PlayerInventory inventory = player.getInventory();
    if (sender.hasPermission("advancedportals.portal")) {
      if (args.length > 0) {
        switch (args[0].toLowerCase()) {
          case "wand":
          case "selector":
            String ItemID = config.getConfig().getString("AxeItemId");

            Material WandMaterial = Material.getMaterial(ItemID);

            if (WandMaterial == null) {
              WandMaterial = Material.IRON_AXE;
            }

            ItemStack regionselector = new ItemStack(WandMaterial);
            ItemMeta selectorname = regionselector.getItemMeta();
            selectorname.setDisplayName("\u00A7ePortal Region Selector");
            selectorname.setLore(
                Arrays.asList(
                    "\u00A7rThis wand with has the power to help",
                    "\u00A7r create portals bistowed upon it!"));
            regionselector.setItemMeta(selectorname);

            inventory.addItem(regionselector);
            sender.sendMessage(
                PluginMessages.customPrefix
                    + " You have been given a \u00A7ePortal Region Selector\u00A7a!");
            break;
          case "portalblock":
            // TODO change this to a purple wool block and give it a name with a color. Then listen
            // to when its placed.
            // Also do this for other blocks such as gateways and end portals just in case they want
            // it.
            ItemStack portalBlock = new ItemStack(Material.PORTAL, 1);

            inventory.addItem(portalBlock);

            sender.sendMessage(
                PluginMessages.customPrefix + " You have been given a \u00A7ePortal Block\u00A7a!");
            break;
          case "create":
            if (player.hasMetadata("Pos1World") && player.hasMetadata("Pos2World")) {
              if (player
                      .getMetadata("Pos1World")
                      .get(0)
                      .asString()
                      .equals(player.getMetadata("Pos2World").get(0).asString())
                  && player
                      .getMetadata("Pos1World")
                      .get(0)
                      .asString()
                      .equals(player.getLocation().getWorld().getName())) {
                if (args.length
                    >= 2) { // may make this next piece of code more efficient, maybe check against
                  // a list of available variables or something
                  // TODO change system to use arrays and hashmaps
                  boolean hasName = false;
                  boolean hasTriggerBlock = false;
                  boolean hasDestination = false;
                  boolean isBungeePortal = false;
                  boolean needsPermission = false;
                  boolean executesCommand = false;
                  String destination = null;
                  String portalName = null;
                  String triggerBlock = null;
                  String serverName = null;
                  String permission = null;
                  String portalCommand = null;

                  ArrayList<PortalArg> extraData = new ArrayList<>();

                  for (int i = 1; i < args.length; i++) {
                    if (args[i].toLowerCase().startsWith("name:") && args[i].length() > 5) {
                      hasName = true;
                      portalName = args[i].replaceFirst("name:", "");
                    } else if (args[i].toLowerCase().startsWith("name:")) {
                      player.sendMessage(
                          PluginMessages.customPrefixFail
                              + " You must include a name for the portal that isnt nothing!");
                      return true;
                    } else if (args[i].toLowerCase().startsWith("destination:")
                        && args[i].length() > 12) {
                      hasDestination = true;
                      destination = args[i].toLowerCase().replaceFirst("destination:", "");
                    } else if (args[i].toLowerCase().startsWith("desti:") && args[i].length() > 6) {
                      hasDestination = true;
                      destination = args[i].toLowerCase().replaceFirst("desti:", "");
                    } else if (args[i].toLowerCase().startsWith("triggerblock:")
                        && args[i].length() > 13) {
                      hasTriggerBlock = true;
                      triggerBlock = args[i].toLowerCase().replaceFirst("triggerblock:", "");
                    } else if (args[i].toLowerCase().startsWith("triggerblock:")
                        && args[i].length() > 13) {
                      hasTriggerBlock = true;
                      triggerBlock = args[i].toLowerCase().replaceFirst("triggerblock:", "");
                    } else if (args[i].toLowerCase().startsWith("bungee:")
                        && args[i].length() > 7) { // not completely implemented
                      isBungeePortal = true;
                      serverName = args[i].toLowerCase().replaceFirst("bungee:", "");
                      // extraData.add(new PortalArgs("bungee", serverName));
                    } else if (args[i].toLowerCase().startsWith("permission:")
                        && args[i].length() > 11) { // not completely implemented
                      needsPermission = true;
                      permission = args[i].toLowerCase().replaceFirst("permission:", "");
                      extraData.add(new PortalArg("permission", permission));
                    } else if (args[i].toLowerCase().startsWith("command:")
                        && args[i].length() > 8) { // not completely implemented
                      executesCommand = true;
                      portalCommand = parseArgVariable(args, i, "command:");
                      i += this.portalArgsStringLength - 1;
                      extraData.add(new PortalArg("command.1", portalCommand));
                    }
                  }
                  if (!hasName) {
                    player.sendMessage(
                        PluginMessages.customPrefixFail
                            + " You must include a name for the portal that you are creating in the variables!");
                    return true;
                  }

                  World world =
                      org.bukkit.Bukkit.getWorld(player.getMetadata("Pos1World").get(0).asString());
                  Location pos1 =
                      new Location(
                          world,
                          player.getMetadata("Pos1X").get(0).asInt(),
                          player.getMetadata("Pos1Y").get(0).asInt(),
                          player.getMetadata("Pos1Z").get(0).asInt());
                  Location pos2 =
                      new Location(
                          world,
                          player.getMetadata("Pos2X").get(0).asInt(),
                          player.getMetadata("Pos2Y").get(0).asInt(),
                          player.getMetadata("Pos2Z").get(0).asInt());

                  ConfigAccessor desticonfig = new ConfigAccessor(plugin, "destinations.yml");
                  String destiPosX = desticonfig.getConfig().getString(destination + ".pos1.X");

                  if (!Portal.portalExists(portalName)) {

                    player.sendMessage("");
                    player.sendMessage(
                        PluginMessages.customPrefix
                            + "\u00A7e You have created a new portal with the following details:");
                    player.sendMessage("\u00A7aname: \u00A7e" + portalName);
                    if (hasDestination) {
                      player.sendMessage("\u00A7adestination: \u00A7e" + destination);
                    } else if (destiPosX == null) {
                      player.sendMessage(
                          "\u00A7cdestination: \u00A7e"
                              + destination
                              + " (destination does not exist)");
                    } else {
                      player.sendMessage("\u00A7cdestination: \u00A7eN/A (will not work)");
                    }

                    if (isBungeePortal) {
                      player.sendMessage("\u00A7abungee: \u00A7e" + serverName);
                    }

                    if (needsPermission) {
                      player.sendMessage("\u00A7apermission: \u00A7e" + permission);
                    } else {
                      player.sendMessage("\u00A7apermission: \u00A7e(none needed)");
                    }

                    if (executesCommand) {
                      player.sendMessage("\u00A7acommand: \u00A7e" + portalCommand);
                    }

                    Material triggerBlockMat = Material.getMaterial(0);
                    if (hasTriggerBlock) {
                      triggerBlockMat = Material.getMaterial(triggerBlock.toUpperCase());
                      if (triggerBlockMat != null) {
                        player.sendMessage(
                            "\u00A7atriggerBlock: \u00A7e" + triggerBlock.toUpperCase());
                        PortalArg[] portalArgs = new PortalArg[extraData.size()];
                        portalArgs = extraData.toArray(portalArgs);
                        player.sendMessage(
                            Portal.create(
                                pos1,
                                pos2,
                                portalName,
                                destination,
                                triggerBlockMat,
                                serverName,
                                portalArgs));
                      } else {
                        hasTriggerBlock = false;
                        ConfigAccessor Config = new ConfigAccessor(plugin, "config.yml");
                        player.sendMessage(
                            "\u00A7ctriggerBlock: \u00A7edefault("
                                + Config.getConfig().getString("DefaultPortalTriggerBlock")
                                + ")");

                        player.sendMessage(
                            "\u00A7cThe block "
                                + triggerBlock.toUpperCase()
                                + " is not a valid block name in minecraft so the trigger block has been set to the default!");
                        PortalArg[] portalArgs = new PortalArg[extraData.size()];
                        portalArgs = extraData.toArray(portalArgs);
                        player.sendMessage(
                            Portal.create(
                                pos1, pos2, portalName, destination, serverName, portalArgs));
                      }
                    } else {
                      ConfigAccessor Config = new ConfigAccessor(plugin, "config.yml");
                      player.sendMessage(
                          "\u00A7atriggerBlock: \u00A7edefault("
                              + Config.getConfig().getString("DefaultPortalTriggerBlock")
                              + ")");
                      PortalArg[] portalArgs = new PortalArg[extraData.size()];
                      portalArgs = extraData.toArray(portalArgs);
                      player.sendMessage(
                          Portal.create(
                              pos1, pos2, portalName, destination, serverName, portalArgs));
                    }
                  } else {
                    sender.sendMessage(
                        PluginMessages.customPrefixFail + " A portal by that name already exists!");
                  }

                  // add code to save the portal to the portal config and reload the portals

                  player.sendMessage("");
                } else {
                  player.sendMessage(
                      PluginMessages.customPrefixFail
                          + " You need to at least add the name of the portal as a variable, \u00A7cType \u00A7e/portal variables\u00A7c"
                          + " for a full list of currently available variables and an example command!");
                }
              } else {
                player.sendMessage(
                    PluginMessages.customPrefixFail
                        + " The points you have selected need to be in the same world!");
              }
            } else {
              player.sendMessage(
                  PluginMessages.customPrefixFail
                      + " You need to have two points selected to make a portal!");
            }
            break;
          case "variables":
            sender.sendMessage(
                PluginMessages.customPrefix
                    + " \u00A77Variables \u00A7c: \u00A7aname, triggerBlock, destination");
            sender.sendMessage("");
            sender.sendMessage(
                "\u00A7aExample command: \u00A7e/portal create name:test triggerId:portal");
            break;
          case "select":
            // TODO finish the select command and the hit block to replace!
            if (!player.hasMetadata("selectingPortal")) {
              if (args.length > 1) {
                if (Portal.portalExists(args[1])) {
                  player.setMetadata("selectedPortal", new FixedMetadataValue(plugin, args[1]));
                } else {
                  player.sendMessage(
                      PluginMessages.customPrefixFail
                          + " No portal by the name \u00A7e"
                          + args[1]
                          + "\u00A7c exists (maybe you got the caps wrong)\n Try typing \u00A7e/portal select\u00A7c and hit inside the apropriate portals area!");
                }
              } else {
                player.sendMessage(
                    PluginMessages.customPrefix
                        + " Hit a block inside the portal region to select the portal!");
                player.setMetadata("selectingPortal", new FixedMetadataValue(plugin, true));
              }

            } else {
              player.removeMetadata("selectingPortal", plugin);
              player.sendMessage(PluginMessages.customPrefixFail + " Portal selection cancelled!");
            }
            break;
          case "gui":
            if (args.length > 1) {
              if (args[1].toLowerCase().equals("remove") && args.length > 2) {
                sender.sendMessage("");
                sender.sendMessage(
                    PluginMessages.customPrefixFail
                        + " Are you sure you would like to remove the portal \u00A7e"
                        + args[2]
                        + "\u00A7c?");
                sender.sendMessage("");
                plugin.compat.sendRawMessage(
                    "{\"text\":\"    \",\"extra\":[{\"text\":\"\u00A7e[Yes]\",\"hoverEvent\":{\"action\":\"show_text\","
                        + "\"value\":\"Confirm removing this portal\"},\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/portal remove "
                        + args[2]
                        + "\"}}, "
                        + "{\"text\":\"     \"},{\"text\":\"\u00A7e[No]\",\"hoverEvent\":{\"action\":\"show_text\",\"value\":\"Cancel removing this portal\"}"
                        + ",\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/portal edit "
                        + args[2]
                        + "\"}}]}",
                    player);
                sender.sendMessage("");
              }
            }
            break;
          case "edit":
            if (args.length > 1) {
              if (Portal.portalExists(args[1])) {
                player.setMetadata("selectedPortal", new FixedMetadataValue(plugin, args[1]));
                portalEditMenu(sender, portalConfig, args[1]);
              } else {
                sender.sendMessage(
                    PluginMessages.customPrefixFail
                        + " No portal by the name \u00A7e"
                        + args[1]
                        + "\u00A7c exists!");
              }
            } else {
              if (player.hasMetadata("selectedPortal")) {
                String portalName = player.getMetadata("selectedPortal").get(0).asString();
                String posX = portalConfig.getConfig().getString(portalName + ".pos1.X");
                if (posX != null) {
                  portalEditMenu(sender, portalConfig, portalName);
                } else {
                  sender.sendMessage(
                      PluginMessages.customPrefixFail
                          + " The portal you had selected no longer seems to exist!");
                  player.removeMetadata("selectedPortal", plugin);
                }
              } else {
                sender.sendMessage(
                    PluginMessages.customPrefixFail + " No portal has been defined or selected!");
              }
            }
            break;
          case "rename":

            // not finished yet /
            if (args.length > 1) {
              if (player.hasMetadata("selectedPortal")) {
                String portalName = player.getMetadata("selectedPortal").get(0).asString();
                if (portalName.toLowerCase() != args[1].toLowerCase()) {
                  String posX = portalConfig.getConfig().getString(portalName + ".pos1.X");

                  String newPortalPosX = portalConfig.getConfig().getString(args[1] + ".pos1.X");
                  if (posX != null && newPortalPosX == null) {
                    Portal.rename(portalName, args[1]);
                    sender.sendMessage(
                        PluginMessages.customPrefix
                            + " The portal \u00A7e"
                            + portalName
                            + "\u00A7a has been renamed to \u00A7e"
                            + args[1]
                            + "\u00A7a.");
                    player.setMetadata("selectedPortal", new FixedMetadataValue(plugin, args[1]));
                  } else if (newPortalPosX != null) {
                    sender.sendMessage(
                        PluginMessages.customPrefixFail
                            + " There is already a portal with the name \u00A7e"
                            + args[1]
                            + "\u00A7c!");
                  } else {
                    sender.sendMessage(
                        PluginMessages.customPrefixFail
                            + " The portal you had selected no longer seems to exist!");
                    player.removeMetadata("selectedPortal", plugin);
                  }
                } else {
                  sender.sendMessage(
                      PluginMessages.customPrefixFail
                          + " The portal you have selected is already called that!");
                }
              } else {
                sender.sendMessage(
                    PluginMessages.customPrefixFail + " No portal has been defined or selected!");
              }
            } else {
              sender.sendMessage(
                  PluginMessages.customPrefixFail
                      + " You must select a portal first and then type \u00A7e/portal rename (new name)\u00A7c!");
            }
            break;
          case "command":
            if (player.hasMetadata("selectedPortal")) {
              String portalName = player.getMetadata("selectedPortal").get(0).asString();
              if (args.length > 1) {
                // TODO add the command autocompletes, add, remove and show
                if (args[1].toLowerCase().equals("add")) {
                  if (args.length > 2) {
                    String portalCommand = args[2];
                    for (int i = 3; i < args.length; i++) {
                      portalCommand += args[i];
                    }
                    if (Portal.addCommand(portalName, portalCommand)) {
                      sender.sendMessage(
                          PluginMessages.customPrefixFail + " Command added to portal!");
                    } else {
                      sender.sendMessage(
                          PluginMessages.customPrefixFail + " Failed to add command to portal!");
                    }

                  } else {
                    sender.sendMessage(
                        PluginMessages.customPrefixFail
                            + " You must actually specify a command to execute!");
                  }

                } else if (args[1].toLowerCase().equals("remove")) {
                  // Specify what line to remove
                } else if (args[1].toLowerCase().equals("show")) {
                  // Show all the commands the portal executes
                } else {
                  sender.sendMessage(
                      PluginMessages.customPrefixFail
                          + " You must specify to \u00A7eadd\u00A7c or \u00A7eremove a command!");
                }
              } else {
                sender.sendMessage(
                    PluginMessages.customPrefixFail
                        + " You must specify to \u00A7eadd\u00A7c or \u00A7eremove\u00A7c a command!");
              }
            } else {

            }
            break;
          case "remove":
            if (args.length > 1) {
              String posX = portalConfig.getConfig().getString(args[1] + ".pos1.X");
              if (posX != null) {
                Portal.remove(args[1]);
                sender.sendMessage(
                    PluginMessages.customPrefixFail
                        + " The portal \u00A7e"
                        + args[1]
                        + "\u00A7c has been removed!");
              } else {
                sender.sendMessage(
                    PluginMessages.customPrefixFail + " No portal by that name exists!");
              }
            } else {
              if (player.hasMetadata("selectedPortal")) {
                String portalName = player.getMetadata("selectedPortal").get(0).asString();
                String posX = portalConfig.getConfig().getString(portalName + ".pos1.X");
                if (posX != null) {
                  Portal.remove(portalName);
                  sender.sendMessage(
                      PluginMessages.customPrefixFail
                          + " The portal \u00A77"
                          + portalName
                          + "\u00A7c has been removed!");
                } else {
                  sender.sendMessage(
                      PluginMessages.customPrefixFail
                          + " The portal you had selected no longer seems to exist!");
                  player.removeMetadata("selectedPortal", plugin);
                }
              } else {
                sender.sendMessage(
                    PluginMessages.customPrefixFail + " No portal has been defined or selected!");
              }
            }
            break;
          case "help":
            sender.sendMessage(PluginMessages.customPrefix + " Help Menu");
            sender.sendMessage("\u00A7e\u00A7m-----------------------------------");
            sender.sendMessage(
                "\u00A76/" + command + " selector \u00A7a- gives you a region selector");
            sender.sendMessage(
                "\u00A76/"
                    + command
                    + " create \u00A7c[tags] \u00A7a- creates a portal with a selection ");
            sender.sendMessage("\u00A76/" + command + " portal \u00A7a- gives you a portal block");
            sender.sendMessage(
                "\u00A76/" + command + " select \u00A7a- selects an existing portal");
            sender.sendMessage("\u00A76/" + command + " remove \u00A7a- removes a portal");
            sender.sendMessage(
                "\u00A76/" + command + " list \u00A7a- lists all the current portals");
            sender.sendMessage(
                "\u00A76/" + command + " variables \u00A7a- lists all available tags");
            sender.sendMessage("\u00A7e\u00A7m-----------------------------------");
            break;
          case "show":
            if (args.length > 1) {
              String posX = portalConfig.getConfig().getString(args[1] + ".pos1.X");
              if (posX != null) {
                Selection.Show(player, this.plugin, args[1]);
              } else {
                sender.sendMessage(
                    PluginMessages.customPrefixFail + " No portal by that name exists!");
              }
            } else {
              if (player.hasMetadata("selectedPortal")) {
                player.sendMessage(
                    PluginMessages.customPrefix
                        + " Your currently selected portal has been shown, it will dissapear shortly!");
                Selection.Show(
                    player, this.plugin, player.getMetadata("selectedPortal").get(0).asString());
              } else if (player.hasMetadata("Pos1World") && player.hasMetadata("Pos2World")) {
                if (player
                        .getMetadata("Pos1World")
                        .get(0)
                        .asString()
                        .equals(player.getMetadata("Pos2World").get(0).asString())
                    && player
                        .getMetadata("Pos1World")
                        .get(0)
                        .asString()
                        .equals(player.getLocation().getWorld().getName())) {
                  player.sendMessage(
                      PluginMessages.customPrefix
                          + " Your currently selected area has been shown, it will dissapear shortly!");
                  Selection.Show(player, this.plugin, null);
                }
              } else {
                player.sendMessage(PluginMessages.customPrefixFail + " No regions selected!");
              }
            }
            break;
          case "reload":
            sender.sendMessage(PluginMessages.customPrefix + " Reloaded values!");
            Listeners.reloadValues(plugin);
            Portal.loadPortals();
            break;
          case "list":
            String message = PluginMessages.customPrefix + " \u00A77Portals \u00A7c:\u00A7a";
            LinkedList<String> portals = new LinkedList<>();
            for (AdvancedPortal portal : Portal.Portals) {
              portals.add(portal.portalName);
            }
            Collections.sort(portals);
            for (Object portalName : portals.toArray()) {
              message = message + " " + portalName;
            }
            player.sendMessage(message);
            break;
          default:
            PluginMessages.UnknownCommand(sender, command);
        }
      } else {
        PluginMessages.UnknownCommand(sender, command);
      }
    } else {
      PluginMessages.NoPermission(sender, command);
    }

    return true;
  }
Beispiel #6
0
  boolean modeSetup(Player player, Block block) {
    if (user.get(player.getName()).setup == 2) {
      user.get(player.getName()).pos2 = block.getLocation();
      user.get(player.getName()).setup = 0;

      Location lowPos, hiPos;
      lowPos = new Location(user.get(player.getName()).pos1.getWorld(), 0, 0, 0);
      hiPos = new Location(user.get(player.getName()).pos1.getWorld(), 0, 0, 0);
      // yPos
      if (Math.floor(user.get(player.getName()).pos1.getY())
          > Math.floor(user.get(player.getName()).pos2.getY())) {
        hiPos.setY(Math.floor(user.get(player.getName()).pos1.getY()));
        lowPos.setY(Math.floor(user.get(player.getName()).pos2.getY()));
      } else {
        lowPos.setY(Math.floor(user.get(player.getName()).pos1.getY()));
        hiPos.setY(Math.floor(user.get(player.getName()).pos2.getY()));
      }
      // xPos
      if (Math.floor(user.get(player.getName()).pos1.getX())
          > Math.floor(user.get(player.getName()).pos2.getX())) {
        hiPos.setX(Math.floor(user.get(player.getName()).pos1.getX()));
        lowPos.setX(Math.floor(user.get(player.getName()).pos2.getX()));
      } else {
        lowPos.setX(Math.floor(user.get(player.getName()).pos1.getX()));
        hiPos.setX(Math.floor(user.get(player.getName()).pos2.getX()));
      }
      // zPos
      if (Math.floor(user.get(player.getName()).pos1.getZ())
          > Math.floor(user.get(player.getName()).pos2.getZ())) {
        hiPos.setZ(Math.floor(user.get(player.getName()).pos1.getZ()));
        lowPos.setZ(Math.floor(user.get(player.getName()).pos2.getZ()));
      } else {
        lowPos.setZ(Math.floor(user.get(player.getName()).pos1.getZ()));
        hiPos.setZ(Math.floor(user.get(player.getName()).pos2.getZ()));
      }

      setup
          .getConfig()
          .set("arena." + setup.getConfig().getInt("nextarena") + ".1.y", Math.floor(hiPos.getY()));
      setup
          .getConfig()
          .set("arena." + setup.getConfig().getInt("nextarena") + ".1.x", Math.floor(hiPos.getX()));
      setup
          .getConfig()
          .set("arena." + setup.getConfig().getInt("nextarena") + ".1.z", Math.floor(hiPos.getZ()));
      setup
          .getConfig()
          .set(
              "arena." + setup.getConfig().getInt("nextarena") + ".2.y", Math.floor(lowPos.getY()));
      setup
          .getConfig()
          .set(
              "arena." + setup.getConfig().getInt("nextarena") + ".2.x", Math.floor(lowPos.getX()));
      setup
          .getConfig()
          .set(
              "arena." + setup.getConfig().getInt("nextarena") + ".2.z", Math.floor(lowPos.getZ()));
      setup
          .getConfig()
          .set(
              "arena." + setup.getConfig().getInt("nextarena") + ".name",
              user.get(player.getName()).arenaName);
      setup.getConfig().set("nextarena", setup.getConfig().getInt("nextarena") + 1);
      setup.saveConfig();
      player.sendMessage(
          prefix
              + "Arena "
              + ChatColor.RED
              + user.get(player.getName()).arenaName
              + " (#"
              + (setup.getConfig().getInt("nextarena") - 1)
              + ")"
              + ChatColor.GOLD
              + " successfully set up!");
      return true;
    } else {
      if (user.get(player.getName()).setup == 1) {
        user.get(player.getName()).pos1 = block.getLocation();
        player.sendMessage(
            prefix
                + "Punch point "
                + ChatColor.RED
                + "#2"
                + ChatColor.GOLD
                + " - the opposite corner of the arena");
        user.get(player.getName()).setup = 2;
        return true;
      } else {
        return false;
      }
    }
  }
Beispiel #7
0
 void enableSpectate(Player spectator, CommandSender sender) {
   if (user.get(spectator.getName()).spectating) {
     // Spectate mode wasn't on
     if (sender instanceof Player && spectator.getName().equals(sender.getName())) {
       spectator.sendMessage(prefix + "You are already spectating!");
     } else {
       sender.sendMessage(
           prefix
               + ChatColor.RED
               + spectator.getDisplayName()
               + ChatColor.GOLD
               + " is already spectating!");
     }
   } else {
     // teleport them to the global lobby
     spawnPlayer(spectator);
     // hide them from everyone
     for (Player target : getServer().getOnlinePlayers()) {
       target.hidePlayer(spectator);
     }
     // gamemode and inventory
     spectator.setGameMode(GameMode.ADVENTURE);
     savePlayerInv(spectator);
     spectator.setAllowFlight(true);
     spectator.setFoodLevel(20);
     // disable interaction
     user.get(spectator.getName()).spectating = true;
     PotionEffect heal = new PotionEffect(PotionEffectType.HEAL, Integer.MAX_VALUE, 1000, true);
     spectator.addPotionEffect(heal);
     // give them compass if toggle on
     if (compass) {
       ItemStack compass = new ItemStack(Material.COMPASS, 1);
       ItemMeta compassMeta = (ItemMeta) compass.getItemMeta();
       compassMeta.setDisplayName(ChatColor.BLUE + "Teleporter");
       compass.setItemMeta(compassMeta);
       spectator.getInventory().addItem(compass);
     }
     // give them clock (only for arena mode and if toggle is on)
     if (clock) {
       String mode = setup.getConfig().getString("mode");
       if (mode.equals("arena")) {
         ItemStack book = new ItemStack(Material.WATCH, 1);
         ItemMeta bookMeta = (ItemMeta) book.getItemMeta();
         bookMeta.setDisplayName(ChatColor.DARK_RED + "Arena chooser");
         book.setItemMeta(bookMeta);
         spectator.getInventory().addItem(book);
       }
     }
     // set the prefix in the tab list if the toggle is on
     if (scoreboard) {
       team.addPlayer(spectator);
     }
     // manage messages if spectator was enabled
     if (sender instanceof Player && spectator.getName().equals(sender.getName())) {
       if (output) {
         spectator.sendMessage(prefix + "Spectator mode " + ChatColor.RED + "enabled");
       }
     } else if (sender instanceof Player && !spectator.getName().equals(sender.getName())) {
       if (output) {
         spectator.sendMessage(
             prefix
                 + "Spectator mode "
                 + ChatColor.RED
                 + "enabled"
                 + ChatColor.GOLD
                 + " by "
                 + ChatColor.RED
                 + ((Player) sender).getDisplayName());
       }
       sender.sendMessage(
           prefix
               + "Spectator mode "
               + ChatColor.RED
               + "enabled"
               + ChatColor.GOLD
               + " for "
               + ChatColor.RED
               + spectator.getDisplayName());
     } else {
       if (output) {
         spectator.sendMessage(
             prefix
                 + "Spectator mode "
                 + ChatColor.RED
                 + "enabled"
                 + ChatColor.GOLD
                 + " by "
                 + ChatColor.DARK_RED
                 + "Console");
       }
       sender.sendMessage(
           prefix
               + "Spectator mode "
               + ChatColor.RED
               + "enabled"
               + ChatColor.GOLD
               + " for "
               + ChatColor.RED
               + spectator.getDisplayName());
     }
   }
 }
Beispiel #8
0
 public boolean onCommand(
     CommandSender sender, Command command, String label, String[] args) {
   // On command: to the sender of the command
   if (sender instanceof Player && sender.hasPermission("spectate.use")) {
     Player spectator = getServer().getPlayer(sender.getName());
     if (args.length > 0 && args[0].equals("on")) {
       if (args.length == 1) {
         enableSpectate((Player) sender, sender);
       } else if (getServer().getPlayer(args[1]) != null) {
         enableSpectate(getServer().getPlayer(args[1]), sender);
       } else {
         sender.sendMessage(
             prefix + ChatColor.RED + args[1] + ChatColor.GOLD + " isn't online");
       }
     } else if (args.length > 0 && args[0].equals("off")) {
       if (args.length == 1) {
         disableSpectate((Player) sender, sender);
       } else if (getServer().getPlayer(args[1]) != null) {
         disableSpectate(getServer().getPlayer(args[1]), sender);
       } else {
         sender.sendMessage(
             prefix + ChatColor.RED + args[1] + ChatColor.GOLD + " isn't online");
       }
     } else if (args.length == 1 && args[0].equals("lobby")) {
       if (sender.hasPermission("spectate.set")) {
         spectator.sendMessage(
             prefix + "Usage: " + ChatColor.RED + "/spectate lobby <set/del>");
       } else {
         spectator.sendMessage(prefix + "You do not have permission to change the mode!");
       }
     } else if (args.length == 2 && args[0].equals("lobby") && args[1].equals("set")) {
       if (sender.hasPermission("spectate.set")) {
         Location where = spectator.getLocation();
         setup.getConfig().set("xPos", Math.floor(where.getX()) + 0.5);
         setup.getConfig().set("yPos", Math.floor(where.getY()));
         setup.getConfig().set("zPos", Math.floor(where.getZ()) + 0.5);
         setup.getConfig().set("world", where.getWorld().getName());
         setup.getConfig().set("active", true);
         setup.saveConfig();
         spectator.sendMessage(
             prefix + "Location saved! Players will be teleported here when they spectate");
       } else {
         spectator.sendMessage(
             prefix + "You do not have permission to set the lobby location!");
       }
     } else if (args.length == 2
         && args[0].equals("lobby")
         && (args[1].equals("del") || args[1].equals("delete"))) {
       if (sender.hasPermission("spectate.set")) {
         setup.getConfig().set("xPos", 0);
         setup.getConfig().set("yPos", 0);
         setup.getConfig().set("zPos", 0);
         setup.getConfig().set("world", null);
         setup.getConfig().set("active", false);
         setup.saveConfig();
         spectator.sendMessage(
             prefix
                 + "Spectator lobby location removed! Players will be teleported to spawn when they spectate");
       } else {
         spectator.sendMessage(
             prefix + "You do not have permission to set the lobby location!");
       }
     } else if (args.length == 1 && args[0].equals("mode")) {
       if (sender.hasPermission("spectate.set")) {
         spectator.sendMessage(
             prefix + "Usage: " + ChatColor.RED + "/spectate mode <arena/any>");
       } else {
         spectator.sendMessage(prefix + "You do not have permission to change the mode!");
       }
     } else if (args.length > 1 && args[0].equals("mode") && args[1].equals("any")) {
       if (sender.hasPermission("spectate.set")) {
         setup.getConfig().set("mode", "any");
         setup.saveConfig();
         spectator.sendMessage(prefix + "Mode set to " + ChatColor.RED + "any");
       } else {
         spectator.sendMessage(prefix + "You do not have permission to change the mode!");
       }
     } else if (args.length > 1 && args[0].equals("mode") && args[1].equals("arena")) {
       if (sender.hasPermission("spectate.set")) {
         setup.getConfig().set("mode", "arena");
         setup.saveConfig();
         spectator.sendMessage(
             prefix
                 + "Mode set to "
                 + ChatColor.RED
                 + "arena"
                 + ChatColor.GOLD
                 + ". Only players in arena regions can be teleported to by spectators.");
       } else {
         spectator.sendMessage(prefix + "You do not have permission to change the mode!");
       }
     } else if ((args.length == 1 && args[0].equals("arena"))
         || (args.length == 2 && args[0].equals("arena") && args[1].equals("add"))) {
       if (sender.hasPermission("spectate.set")) {
         spectator.sendMessage(
             prefix
                 + "Usage: "
                 + ChatColor.RED
                 + "/spectate arena <add <name>/reset/lobby <id>/list>");
       } else {
         spectator.sendMessage(prefix + "You do not have permission to change the mode!");
       }
     } else if (args.length == 3 && args[0].equals("arena") && args[1].equals("add")) {
       if (sender.hasPermission("spectate.set")) {
         user.get(spectator.getName()).arenaName = args[2];
         spectator.sendMessage(
             prefix
                 + "Punch point "
                 + ChatColor.RED
                 + "#1"
                 + ChatColor.GOLD
                 + " - a corner of the arena");
         user.get(spectator.getName()).setup = 1;
       } else {
         spectator.sendMessage(prefix + "You do not have permission to change the mode!");
       }
     } else if (args.length == 2 && args[0].equals("arena") && args[1].equals("list")) {
       if (sender.hasPermission("spectate.set")) {
         spectator.sendMessage(
             ChatColor.GOLD
                 + "          ~~ "
                 + ChatColor.RED
                 + "Arenas"
                 + ChatColor.GOLD
                 + " ~~          ");
         for (int i = 1; i < setup.getConfig().getInt("nextarena"); i++) {
           spectator.sendMessage(
               ChatColor.RED
                   + "(#"
                   + i
                   + ") "
                   + setup.getConfig().getString("arena." + i + ".name")
                   + ChatColor.GOLD
                   + " Lobby x:"
                   + setup.getConfig().getDouble("arena." + i + ".lobby.x")
                   + " y:"
                   + setup.getConfig().getDouble("arena." + i + ".lobby.y")
                   + " z:"
                   + setup.getConfig().getDouble("arena." + i + ".lobby.z"));
         }
       } else {
         spectator.sendMessage(prefix + "You do not have permission to change the mode!");
       }
     } else if (args.length == 3 && args[0].equals("arena") && args[1].equals("lobby")) {
       if (sender.hasPermission("spectate.set")) {
         lobbySetup(spectator, args[2]);
       } else {
         spectator.sendMessage(prefix + "You do not have permission to change the mode!");
       }
     } else if (args.length == 2 && args[0].equals("arena") && args[1].equals("reset")) {
       if (sender.hasPermission("spectate.set")) {
         setup.getConfig().set("arena", null);
         setup.getConfig().set("nextarena", 1);
         setup.saveConfig();
         spectator.sendMessage(prefix + "All arenas removed.");
       } else {
         spectator.sendMessage(prefix + "You do not have permission to change the mode!");
       }
     } else {
       printHelp(sender);
     }
   } else {
     if (sender instanceof Player) {
       sender.sendMessage(prefix + "You don't have permission to spectate!");
     } else {
       // Console commands
       if (args.length > 0 && args[0].equals("on")) {
         if (args.length == 1) {
           sender.sendMessage(prefix + "Usage: /spec on <player>");
         } else if (getServer().getPlayer(args[1]) != null) {
           enableSpectate(getServer().getPlayer(args[1]), sender);
         } else {
           sender.sendMessage(
               prefix + ChatColor.RED + args[1] + ChatColor.GOLD + " isn't online");
         }
       } else if (args.length > 0 && args[0].equals("off")) {
         if (args.length == 1) {
           sender.sendMessage(prefix + "Usage: /spec off <player>");
         } else if (getServer().getPlayer(args[1]) != null) {
           disableSpectate(getServer().getPlayer(args[1]), sender);
         } else {
           sender.sendMessage(
               prefix + ChatColor.RED + args[1] + ChatColor.GOLD + " isn't online");
         }
       } else if (args.length == 1 && args[0].equals("mode")) {
         sender.sendMessage(
             prefix + "Usage: " + ChatColor.RED + "/spectate mode <arena/any>");
       } else if (args.length > 1 && args[0].equals("mode") && args[1].equals("any")) {
         setup.getConfig().set("mode", "any");
         setup.saveConfig();
         sender.sendMessage(prefix + "Mode set to " + ChatColor.RED + "any");
       } else if (args.length > 1 && args[0].equals("mode") && args[1].equals("arena")) {
         setup.getConfig().set("mode", "arena");
         setup.saveConfig();
         sender.sendMessage(
             prefix
                 + "Mode set to "
                 + ChatColor.RED
                 + "arena"
                 + ChatColor.GOLD
                 + ". Only players in arena regions can be teleported to by spectators.");
       } else {
         printHelp(sender);
       }
     }
   }
   return true; // return true: to stop usage showing
 } // end of onCommand
Beispiel #9
0
 // player head inventory method
 void tpPlayer(Player spectator, int region) {
   Inventory gui = null;
   for (Player player : getServer().getOnlinePlayers()) {
     if (setup.getConfig().getString("mode").equals("any")) {
       if (gui == null)
         gui = Bukkit.getServer().createInventory(spectator, 27, ChatColor.BLACK + "Teleporter");
       if (player.hasPermission("spectate.hide") == false
           && user.get(player.getName()).spectating == false) {
         ItemStack playerhead = new ItemStack(Material.SKULL_ITEM, 1, (short) 3);
         SkullMeta meta = (SkullMeta) playerhead.getItemMeta();
         meta.setOwner(player.getName());
         meta.setDisplayName(player.getName());
         playerhead.setItemMeta(meta);
         gui.addItem(playerhead);
       }
     } else if (setup.getConfig().getString("mode").equals("arena")) {
       if (region == 0) {
         if (output) {
           spectator.sendMessage(prefix + "Pick an arena first using the clock!");
         }
         return;
       } else {
         if (gui == null)
           gui =
               Bukkit.getServer()
                   .createInventory(
                       spectator,
                       27,
                       ChatColor.BLACK
                           + "Arena "
                           + ChatColor.ITALIC
                           + setup.getConfig().getString("arena." + region + ".name"));
         Location where = player.getLocation();
         int pos1y = setup.getConfig().getInt("arena." + region + ".1.y");
         int pos2y = setup.getConfig().getInt("arena." + region + ".2.y");
         int pos1x = setup.getConfig().getInt("arena." + region + ".1.x");
         int pos2x = setup.getConfig().getInt("arena." + region + ".2.x");
         int pos1z = setup.getConfig().getInt("arena." + region + ".1.z");
         int pos2z = setup.getConfig().getInt("arena." + region + ".2.z");
         // pos1 should have the highest co-ords of the arena, pos2 the lowest
         if (player.hasPermission("spectate.hide") == false
             && user.get(player.getName()).spectating == false) {
           if (Math.floor(where.getY()) < Math.floor(pos1y)
               && Math.floor(where.getY()) > Math.floor(pos2y)) {
             if (Math.floor(where.getX()) < pos1x && Math.floor(where.getX()) > pos2x) {
               if (Math.floor(where.getZ()) < pos1z && Math.floor(where.getZ()) > pos2z) {
                 ItemStack playerhead = new ItemStack(Material.SKULL_ITEM, 1, (short) 3);
                 SkullMeta meta = (SkullMeta) playerhead.getItemMeta();
                 meta.setOwner(player.getName());
                 meta.setDisplayName(player.getName());
                 playerhead.setItemMeta(meta);
                 gui.addItem(playerhead);
               }
             }
           }
         }
       }
     }
   }
   spectator.openInventory(gui);
 }
Beispiel #10
0
  // custom method to spawn the player in the lobby
  void spawnPlayer(Player player) {
    player.setFireTicks(0);
    if (setup.getConfig().getBoolean("active") == true) {
      Location where =
          new Location(
              getServer().getWorld(setup.getConfig().getString("world")),
              setup.getConfig().getDouble("xPos"),
              setup.getConfig().getDouble("yPos"),
              setup.getConfig().getDouble("zPos"));
      Location aboveWhere =
          new Location(
              getServer().getWorld(setup.getConfig().getString("world")),
              setup.getConfig().getDouble("xPos"),
              setup.getConfig().getDouble("yPos") + 1,
              setup.getConfig().getDouble("zPos"));
      Location belowWhere =
          new Location(
              getServer().getWorld(setup.getConfig().getString("world")),
              setup.getConfig().getDouble("xPos"),
              setup.getConfig().getDouble("yPos") - 1,
              setup.getConfig().getDouble("zPos"));
      if (where.getBlock().getType() != Material.AIR
          || aboveWhere.getBlock().getType() != Material.AIR
          || (belowWhere.getBlock().getType() == Material.AIR
              || belowWhere.getBlock().getType() == Material.LAVA
              || belowWhere.getBlock().getType() == Material.WATER)) {
        while (where.getBlock().getType() != Material.AIR
            || aboveWhere.getBlock().getType() != Material.AIR
            || (belowWhere.getBlock().getType() == Material.AIR
                || belowWhere.getBlock().getType() == Material.LAVA
                || belowWhere.getBlock().getType() == Material.WATER)) {
          where.setY(where.getY() + 1);
          aboveWhere.setY(aboveWhere.getY() + 1);
          belowWhere.setY(belowWhere.getY() + 1);
          if (where.getY()
              > getServer()
                  .getWorld(setup.getConfig().getString("world"))
                  .getHighestBlockYAt(where)) {
            where.setY(where.getY() - 2);
            aboveWhere.setY(aboveWhere.getY() - 2);
            belowWhere.setY(belowWhere.getY() - 2);
          }
        }
      }
      user.get(player.getName()).teleporting = true;
      player.teleport(where);

      user.get(player.getName()).teleporting = false;
    } else {
      player.performCommand("spawn");
    }
  }