public static DuelOptions parseOptions(MatchParams params, ArenaPlayer challenger, String[] args) throws InvalidOptionException { DuelOptions dop = new DuelOptions(); dop.options.putAll(defaultOptions.options); Map<DuelOption, Object> ops = dop.options; for (int i = 0; i < args.length; i++) { String op = args[i]; Player p = ServerUtil.findPlayer(op); if (p != null) { if (!p.isOnline()) throw new InvalidOptionException( "&cPlayer &6" + p.getDisplayName() + "&c is not online!"); if (challenger != null && p.getName().equals(challenger.getName())) throw new InvalidOptionException("&cYou can't challenge yourself!"); if (p.hasPermission(Permissions.DUEL_EXEMPT) && !Defaults.DUEL_CHALLENGE_ADMINS) { throw new InvalidOptionException("&cThis player can not be challenged!"); } dop.challengedPlayers.add(BattleArena.toArenaPlayer(p)); continue; } Object obj = null; DuelOption to = null; String val; if (op.contains("=")) { String[] split = op.split("="); op = split[0]; val = split[1]; } else { val = i + 1 < args.length ? args[i + 1] : null; } to = parseOp(op, val); switch (to) { case RATED: if (!Defaults.DUEL_ALLOW_RATED) throw new InvalidOptionException("&cRated formingDuels are not allowed!"); break; default: break; } if (!to.needsValue) { ops.put(to, null); continue; } i++; /// another increment to get past the value switch (to) { case MONEY: Double money = null; try { money = Double.valueOf(val); } catch (Exception e) { throw new InvalidOptionException("&cmoney needs to be a number! Example: &6money=100"); } if (!MoneyController.hasEconomy()) { if (challenger != null) MessageUtil.sendMessage( challenger, "&cignoring duel option money as there is no economy!"); Log.warn("[BA Error] ignoring duel option money as there is no economy!"); continue; } obj = money; break; case ARENA: Arena a = BattleArena.getBAController().getArena(val); if (a == null) { throw new InvalidOptionException("&cCouldnt find the arena &6" + val); } if (params != null && !a.getArenaType().matches(params.getType())) { throw new InvalidOptionException("&cThe arena is used for a different type!"); } obj = a; default: break; } ops.put(to, obj); } if (challenger != null && dop.challengedPlayers.isEmpty()) { throw new InvalidOptionException("&cYou need to challenge at least one player!"); } return dop; }