001package fr.aumgn.dac2.commands;
002
003import fr.aumgn.bukkitutils.command.Commands;
004import fr.aumgn.bukkitutils.command.arg.CommandArgFactory;
005import fr.aumgn.dac2.DAC;
006import fr.aumgn.dac2.commands.arg.ArenaArg;
007import fr.aumgn.dac2.commands.arg.ColorArg;
008import fr.aumgn.dac2.commands.arg.StageArg;
009
010public abstract class DACCommands implements Commands {
011
012    /**
013     * ColorArg factory. Name is syntaxic sugar.
014     */
015    protected final CommandArgFactory<ColorArg> Color;
016
017    /**
018     * ArenaArg factory. Name is syntaxic sugar.
019     */
020    protected final CommandArgFactory<ArenaArg> Arena;
021
022    /**
023     * StageArg factory. Name is syntaxic sugar.
024     */
025    protected final CommandArgFactory<StageArg> Stage;
026
027    protected final DAC dac;
028
029    public DACCommands(DAC dac) {
030        this.dac = dac;
031        this.Color = new CommandArgFactory<ColorArg>() {
032            @Override
033            public ColorArg createCommandArg(String string) {
034                return new ColorArg(DACCommands.this.dac, string);
035            }
036        };
037        this.Arena = new CommandArgFactory<ArenaArg>() {
038            @Override
039            public ArenaArg createCommandArg(String string) {
040                return new ArenaArg(DACCommands.this.dac, string);
041            }
042        };
043        this.Stage = new CommandArgFactory<StageArg>() {
044            @Override
045            public StageArg createCommandArg(String string) {
046                return new StageArg(DACCommands.this.dac, string);
047            }
048        };
049    }
050
051    protected String msg(String key) {
052        return dac.getCmdMessages().get(key);
053    }
054
055    protected String msg(String key, Object... arguments) {
056        return dac.getCmdMessages().get(key, arguments);
057    }
058}