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; 012import fr.aumgn.dac2.stage.Stage; 013 014public class StageArg extends AsbtractSenderArg<Stage> { 015 016 public static class NoStageForArena extends CommandError { 017 018 private static final long serialVersionUID = 8898579114644791040L; 019 020 public NoStageForArena(DAC dac, Arena arena) { 021 super(dac.getCmdMessages() 022 .get("stage.arg.nostageforarena", arena.getName())); 023 } 024 } 025 026 public static class NoStageForPlayer extends CommandError { 027 028 private static final long serialVersionUID = 2665340229475254801L; 029 030 public NoStageForPlayer(DAC dac) { 031 super(dac.getCmdMessages() 032 .get("stage.arg.nostageforplayer")); 033 } 034 } 035 036 private final DAC dac; 037 038 public StageArg(DAC dac, String string) { 039 super(string); 040 this.dac = dac; 041 } 042 043 @Override 044 public Stage value() { 045 if (!dac.getArenas().has(string)) { 046 throw new ArenaArg.NoSuchArena(dac, string); 047 } 048 049 Arena arena = dac.getArenas().get(string); 050 Stage stage = dac.getStages().get(arena); 051 if (stage == null) { 052 throw new NoStageForArena(dac, arena); 053 } 054 055 return stage; 056 } 057 058 @Override 059 protected Stage defaultFor(CommandSender sender) { 060 if (!(sender instanceof Player)) { 061 throw new CommandUsageError(dac.getCmdMessages() 062 .get("stage.arg.needed")); 063 } 064 065 Stage stage = dac.getStages().get((Player) sender); 066 if (stage == null) { 067 throw new NoStageForPlayer(dac); 068 } 069 070 return stage; 071 } 072 073 @Override 074 protected String missingPermOtherMessage(String permission) { 075 return dac.getCmdMessages().get("stage.arg.otherpermissionmissing"); 076 } 077}