55 lines
2.0 KiB
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);
|
||
|
}
|
||
|
});
|
||
|
}
|
||
|
}
|
||
|
}
|