001package fr.aumgn.dac2.commands.arg; 002 003import org.bukkit.command.CommandSender; 004import org.bukkit.entity.Player; 005 006import fr.aumgn.bukkitutils.command.arg.impl.AsbtractSenderArg; 007import fr.aumgn.bukkitutils.command.exception.CommandError; 008import fr.aumgn.bukkitutils.command.exception.CommandUsageError; 009 010import fr.aumgn.dac2.DAC; 011import fr.aumgn.dac2.arena.Arena; 012 013public class ArenaArg extends AsbtractSenderArg<Arena> { 014 015 public static class NoSuchArena extends CommandError { 016 private static final long serialVersionUID = -4832133406864970323L; 017 018 public NoSuchArena(DAC dac, String name) { 019 super(dac.getCmdMessages().get("arena.arg.notfound", name)); 020 } 021 } 022 023 public static class NotInArena extends CommandError { 024 025 private static final long serialVersionUID = 6112644121244362679L; 026 027 public NotInArena(DAC dac) { 028 super(dac.getCmdMessages().get("arena.arg.notinarena")); 029 } 030 } 031 032 private final DAC dac; 033 034 public ArenaArg(DAC dac, String string) { 035 super(string); 036 this.dac = dac; 037 } 038 039 @Override 040 public Arena value() { 041 if (!dac.getArenas().has(string)) { 042 throw new NoSuchArena(dac, string); 043 } 044 045 return dac.getArenas().get(string); 046 } 047 048 @Override 049 protected Arena defaultFor(CommandSender sender) { 050 if (!(sender instanceof Player)) { 051 throw new CommandUsageError(dac.getCmdMessages() 052 .get("arena.arg.needed")); 053 } 054 055 Arena arena = dac.getArenas().get((Player) sender); 056 if (arena == null) { 057 throw new NotInArena(dac); 058 } 059 060 return arena; 061 } 062 063 @Override 064 protected String missingPermOtherMessage(String permission) { 065 return dac.getCmdMessages().get("arena.arg.otherpermissionmissing"); 066 } 067}