Пример #1
0
  @Override
  public void perform() {
    String tag = this.argAsString(0);

    // TODO does not first test cover selfcase?
    if (Factions.i.isTagTaken(tag)
        && !MiscUtil.getComparisonString(tag).equals(myFaction.getComparisonTag())) {
      msg("<b>That tag is already taken");
      return;
    }

    ArrayList<String> errors = new ArrayList<String>();
    errors.addAll(Factions.validateTag(tag));
    if (errors.size() > 0) {
      sendMessage(errors);
      return;
    }

    // if economy is enabled, they're not on the bypass list, and this command has a cost set, make
    // sure they can pay
    if (!canAffordCommand(Conf.econCostTag, "to change the faction tag")) return;

    // trigger the faction rename event (cancellable)
    FactionRenameEvent renameEvent = new FactionRenameEvent(fme, tag);
    Bukkit.getServer().getPluginManager().callEvent(renameEvent);
    if (renameEvent.isCancelled()) return;

    // then make 'em pay (if applicable)
    if (!payForCommand(
        Conf.econCostTag, "to change the faction tag", "for changing the faction tag")) return;

    String oldtag = myFaction.getTag();
    myFaction.setTag(tag);

    // Inform
    myFaction.msg(
        "%s<i> changed your faction tag to %s",
        fme.describeTo(myFaction, true), myFaction.getTag(myFaction));
    for (Faction faction : Factions.i.get()) {
      if (faction == myFaction) {
        continue;
      }
      faction.msg(
          "<i>The faction %s<i> changed their name to %s.",
          fme.getColorTo(faction) + oldtag, myFaction.getTag(faction));
    }

    if (Conf.spoutFactionTagsOverNames) {
      SpoutFeatures.updateAppearances(myFaction);
    }
  }
Пример #2
0
  @Override
  public void perform() {
    Faction faction = this.argAsFaction(0);
    if (faction == null) return;

    FPlayer fplayer = this.argAsBestFPlayerMatch(1, fme, false);
    boolean samePlayer = fplayer == fme;

    if (!samePlayer && !Permission.JOIN_OTHERS.has(sender, false)) {
      msg("<b>You do not have permission to move other players into a faction.");
      return;
    }

    if (faction == fplayer.getFaction()) {
      msg(
          "<b>%s %s already a member of %s",
          fplayer.describeTo(fme, true), (samePlayer ? "are" : "is"), faction.getTag(fme));
      return;
    }

    if (Conf.factionMemberLimit > 0 && faction.getFPlayers().size() >= Conf.factionMemberLimit) {
      msg(
          " <b>!<white> The faction %s is at the limit of %d members, so %s cannot currently join.",
          faction.getTag(fme), Conf.factionMemberLimit, fplayer.describeTo(fme, false));
      return;
    }

    if (fplayer.hasFaction()) {
      msg(
          "<b>%s must leave %s current faction first.",
          fplayer.describeTo(fme, true), (samePlayer ? "your" : "their"));
      return;
    }

    if (!Conf.canLeaveWithNegativePower && fplayer.getPower() < 0) {
      msg(
          "<b>%s cannot join a faction with a negative power level.",
          fplayer.describeTo(fme, true));
      return;
    }

    if (!(faction.getOpen()
        || faction.isInvited(fplayer)
        || fme.hasAdminMode()
        || Permission.JOIN_ANY.has(sender, false))) {
      msg("<i>This faction requires invitation.");
      if (samePlayer)
        faction.msg("%s<i> tried to join your faction.", fplayer.describeTo(faction, true));
      return;
    }

    // if economy is enabled, they're not on the bypass list, and this command has a cost set, make
    // sure they can pay
    if (samePlayer && !canAffordCommand(Conf.econCostJoin, "to join a faction")) return;

    // trigger the join event (cancellable)
    FPlayerJoinEvent joinEvent =
        new FPlayerJoinEvent(
            FPlayers.i.get(me), faction, FPlayerJoinEvent.PlayerJoinReason.COMMAND);
    Bukkit.getServer().getPluginManager().callEvent(joinEvent);
    if (joinEvent.isCancelled()) return;

    // then make 'em pay (if applicable)
    if (samePlayer
        && !payForCommand(Conf.econCostJoin, "to join a faction", "for joining a faction")) return;

    fme.setRole(
        Conf
            .factionRankDefault); // They have just joined a faction, start them out on the lowest
                                  // rank (default config).

    if (!samePlayer)
      fplayer.msg(
          "<i>%s moved you into the faction %s.",
          fme.describeTo(fplayer, true), faction.getTag(fplayer));
    faction.msg("<i>%s joined your faction.", fplayer.describeTo(faction, true));
    fme.msg("<i>%s successfully joined %s.", fplayer.describeTo(fme, true), faction.getTag(fme));

    fplayer.resetFactionData();
    fplayer.setFaction(faction);

    faction.deinvite(fplayer);

    if (Conf.logFactionJoin) {
      if (samePlayer) P.p.log("%s joined the faction %s.", fplayer.getName(), faction.getTag());
      else
        P.p.log(
            "%s moved the player %s into the faction %s.",
            fme.getName(), fplayer.getName(), faction.getTag());
    }
  }