ProjectAres/PGM/src/main/java/tc/oc/pgm/mapratings/MapRatingsCommands.java

55 lines
2.0 KiB
Java

package tc.oc.pgm.mapratings;
import com.sk89q.minecraft.util.commands.Command;
import com.sk89q.minecraft.util.commands.CommandContext;
import com.sk89q.minecraft.util.commands.CommandException;
import com.sk89q.minecraft.util.commands.CommandPermissions;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import tc.oc.pgm.match.Match;
import tc.oc.pgm.PGM;
import tc.oc.pgm.PGMTranslations;
public abstract class MapRatingsCommands {
@Command(
aliases = { "rate", "ratemap" },
desc = "Rate the current map",
usage = "[rating]",
min = 0,
max = 1
)
@CommandPermissions(MapRatingsMatchModule.RATE_PERM_NAME)
public static void rate(CommandContext args, final CommandSender sender) throws CommandException {
Integer score = null;
if(args.argsLength() > 0) {
score = args.getInteger(0);
}
final Player player = tc.oc.commons.bukkit.commands.CommandUtils.senderToPlayer(sender);
final Match match = PGM.getMatchManager().getCurrentMatch(sender);
if (match == null) {
throw new CommandException(PGMTranslations.get().t("match.invalid", sender));
}
final MapRatingsMatchModule mrmm = match.getMatchModule(MapRatingsMatchModule.class);
if(mrmm == null) {
throw new CommandException(PGMTranslations.get().t("command.ratingsDisabled", sender));
}
if(score == null) {
mrmm.showDialog(match.getPlayer(player));
} else if(!mrmm.isScoreValid(score)) {
throw new CommandException(PGMTranslations.get().t("command.rate.invalidRating", sender, mrmm.getMinimumScore(), mrmm.getMaximumScore()));
} else {
final Integer finalScore = score;
mrmm.loadPlayerRating(match.getPlayer(player), new Runnable() {
@Override
public void run() {
mrmm.rate(match.getPlayer(player), finalScore);
}
});
}
}
}