@Override
  public void run(SpawnableEntity entity, CommandSender sender, String subCommand, String[] args) {
    String in = getValue(args, 0, "false");
    entity.setSaddled(Boolean.parseBoolean(in));

    PLUGIN.sendMessage(sender, getSuccessMessage(entity, "saddled", in));
  }
  @Override
  public void run(CommandSender sender, String subCommand, String[] args) {
    if (subCommand.equals("import")) {

      PLUGIN.sendMessage(sender, ChatColor.GREEN + "Loading CustomSpawners data from worlds...");

      int amountLoaded = loadData().size();

      PLUGIN.sendMessage(
          sender,
          ChatColor.GREEN
              + "Loaded "
              + ChatColor.GOLD
              + amountLoaded
              + ChatColor.GREEN
              + " spawners from worlds in server.");

    } else if (subCommand.equals("export")) {

      PLUGIN.sendMessage(sender, ChatColor.GREEN + "Exporting CustomSpawners data to worlds...");

      Iterator<Spawner> sp = CustomSpawners.spawners.values().iterator();
      int amountLoaded = 0;
      while (sp.hasNext()) {
        PLUGIN.saveCustomSpawnerToWorld(sp.next());
        amountLoaded++;
      }

      PLUGIN.sendMessage(
          sender,
          ChatColor.GREEN
              + "Exported "
              + ChatColor.GOLD
              + amountLoaded
              + ChatColor.GREEN
              + " spawners to worlds.");
    }
  }
  @Override
  public void run(SpawnableEntity entity, CommandSender sender, String subCommand, String[] args) {

    /*
     * Syntax:
     *
     * <attribute name> <base> [<modifier name>,<operator>,<amount>;...]
     */

    if (subCommand.equals("clearattributes")) {
      entity.setAttributes(new ArrayList<Attribute>());
      PLUGIN.sendMessage(
          sender,
          ChatColor.GREEN
              + "Successfully cleared attributes on entity "
              + ChatColor.GOLD
              + PLUGIN.getFriendlyName(entity)
              + ChatColor.GREEN
              + ".");
      return;
    }

    String in = getValue(args, 0, "generic.maxHealth");

    VanillaAttribute att = PLUGIN.parseAttribute(in);

    if (att == null) {
      PLUGIN.sendMessage(sender, ChatColor.RED + "That is not an attribute type.");
      return;
    }

    String in0 = getValue(args, 1, "" + att.getDefaultBase());

    if (!CustomSpawners.isDouble(in0)) {
      PLUGIN.sendMessage(sender, ChatColor.RED + "The base value must be number.");
      return;
    }

    double base = Double.parseDouble(in0);

    if (base < att.getMinimum() || (base > att.getMaximum() && att.getMaximum() != -1)) {
      PLUGIN.sendMessage(
          sender,
          ChatColor.RED
              + "The base value must be between the "
              + "minimum and maximum values of the attribute.");
      return;
    }

    Attribute newAtt = new Attribute(att);
    newAtt.setBase(base);

    String in1 = getValue(args, 2, "");

    if (!in1.isEmpty()) {
      String[] splitMods = in1.split(";");

      for (String mod : splitMods) {
        String[] splitCommas = mod.split(",");
        String modName = splitCommas[0];
        String operator = splitCommas[1];
        String amount = splitCommas[2];

        Operation op = Operation.fromName(operator);

        if (op == null && CustomSpawners.isInteger(operator))
          op = Operation.fromId(Integer.parseInt(operator));

        if (op == null) {
          PLUGIN.sendMessage(
              sender, ChatColor.RED + "\"" + modName + "\" is not an operation for modifiers.");
          return;
        }

        if (!CustomSpawners.isDouble(amount)) {
          PLUGIN.sendMessage(sender, ChatColor.RED + "The amount for a modifier must be a number.");
          return;
        }

        double amt = Double.parseDouble(amount);

        Modifier newMod = new Modifier(modName, op, amt);
        newAtt.addModifier(newMod);
      }
    }

    Iterator<Attribute> attItr = entity.getAttributes().iterator();
    while (attItr.hasNext()) {
      Attribute a = attItr.next();
      if (a.getAttribute().equals(newAtt.getAttribute())) {
        attItr.remove();
        PLUGIN.sendMessage(sender, ChatColor.GOLD + "Replaced attribute with same type.");
      }
    }

    if (subCommand.equals("addattribute")) {
      entity.addAttribute(newAtt);
      PLUGIN.sendMessage(
          sender,
          ChatColor.GREEN
              + "Successfully added attribute "
              + ChatColor.GOLD
              + in
              + ChatColor.GREEN
              + " to entity "
              + ChatColor.GOLD
              + PLUGIN.getFriendlyName(entity)
              + ChatColor.GREEN
              + ".");
    } else if (subCommand.equals("setattribute")) {
      List<Attribute> list = new ArrayList<Attribute>();
      list.add(newAtt);
      entity.setAttributes(list);
      PLUGIN.sendMessage(
          sender,
          ChatColor.GREEN
              + "Successfully set attribute to "
              + ChatColor.GOLD
              + in
              + ChatColor.GREEN
              + " on entity "
              + ChatColor.GOLD
              + PLUGIN.getFriendlyName(entity)
              + ChatColor.GREEN
              + ".");
    }
  }
Ejemplo n.º 4
0
  @SuppressWarnings("deprecation")
  @Override
  public void run(Spawner spawner, CommandSender sender, String subCommand, String[] args) {

    if (!(sender instanceof Player)) {
      PLUGIN.sendMessage(sender, NO_CONSOLE);
      return;
    }

    Player player = (Player) sender;

    SpawnableEntity entity = null;

    String in = getValue(args, 0, "");

    if (in.isEmpty()) {
      Integer selection = CustomSpawners.entitySelection.get(player);
      if (selection == null) {
        PLUGIN.sendMessage(sender, NO_ID);
        return;
      }
      entity = CustomSpawners.getEntity(selection);
    } else {
      entity = CustomSpawners.getEntity(in);
    }

    if (entity == null) {
      PLUGIN.sendMessage(sender, NO_ID);
      return;
    }

    Block target =
        player.getTargetBlock(CustomSpawners.transparent, CONFIG.getInt("players.maxDistance", 5));

    if (target == null) {
      PLUGIN.sendMessage(
          player, ChatColor.RED + "You must look at a block to make a spawner there.");
      return;
    }

    if (target.getType().equals(Material.AIR)) {
      PLUGIN.sendMessage(
          player, ChatColor.RED + "You must look at a block to make a spawner there.");
      return;
    }

    Spawner newSpawner = PLUGIN.createSpawner(entity, target.getLocation());

    if (CONFIG.getBoolean("data.autosave") && CONFIG.getBoolean("data.saveOnCreate")) {
      PLUGIN.getFileManager().autosave(newSpawner);
    }

    // TODO Add this to wiki.
    Group addTo = null;
    if (sender instanceof Player) {
      Player p = (Player) sender;
      if (CustomSpawners.groupSelection.containsKey(p)) {
        addTo = CustomSpawners.getGroup(CustomSpawners.groupSelection.get(sender));
      }
    } else {
      if (CustomSpawners.consoleGroup != -1) {
        addTo = CustomSpawners.getGroup(CustomSpawners.consoleGroup);
      }
    }

    if (addTo != null
        && CONFIG.getBoolean("players.groupAutoAdd", false)
        && addTo.getType().equals(Group.Type.SPAWNER)) {
      addTo.addItem(newSpawner);
      PLUGIN.sendMessage(
          sender,
          ChatColor.GREEN
              + "Successfully created a new "
              + ChatColor.GOLD
              + in
              + ChatColor.GREEN
              + " spawner with ID number "
              + ChatColor.GOLD
              + newSpawner.getId()
              + ChatColor.GREEN
              + "! This spawner was added to group "
              + ChatColor.GOLD
              + PLUGIN.getFriendlyName(addTo)
              + ChatColor.GREEN
              + ".");
    }

    PLUGIN.sendMessage(
        player,
        ChatColor.GREEN
            + "Successfully created a "
            + ChatColor.GOLD
            + PLUGIN.getFriendlyName(entity)
            + ChatColor.GREEN
            + " spawner with ID "
            + ChatColor.GOLD
            + PLUGIN.getFriendlyName(newSpawner)
            + ChatColor.GREEN
            + "!");
  }