mirror of
https://github.com/mcMMO-Dev/mcMMO.git
synced 2024-11-22 21:26:46 +01:00
Add command to clear or change scoreboards.
This commit is contained in:
parent
6cbf960dea
commit
88f43d9a91
@ -0,0 +1,141 @@
|
||||
package com.gmail.nossr50.commands;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import org.bukkit.command.Command;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.command.TabExecutor;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.util.StringUtil;
|
||||
|
||||
import com.gmail.nossr50.mcMMO;
|
||||
import com.gmail.nossr50.config.Config;
|
||||
import com.gmail.nossr50.datatypes.skills.SkillType;
|
||||
import com.gmail.nossr50.util.StringUtils;
|
||||
import com.gmail.nossr50.util.commands.CommandUtils;
|
||||
import com.gmail.nossr50.util.player.UserManager;
|
||||
import com.gmail.nossr50.util.scoreboards.ScoreboardManager;
|
||||
import com.google.common.collect.ImmutableList;
|
||||
|
||||
public class McscoreboardCommand implements TabExecutor {
|
||||
private static final List<String> SCOREBOARD_TYPES = ImmutableList.of("clear", "rank", "stats", "top");
|
||||
|
||||
@Override
|
||||
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
|
||||
if (CommandUtils.noConsoleUsage(sender)) {
|
||||
return true;
|
||||
}
|
||||
|
||||
Player player = (Player) sender;
|
||||
|
||||
switch (args.length) {
|
||||
case 0:
|
||||
clearScoreboard(player);
|
||||
return true;
|
||||
|
||||
case 1:
|
||||
if (args[0].equalsIgnoreCase("clear")) {
|
||||
clearScoreboard(player);
|
||||
}
|
||||
else if (args[0].equalsIgnoreCase("rank")) {
|
||||
if (!Config.getInstance().getMcrankScoreboardEnabled()) {
|
||||
sender.sendMessage("This scoreboard is not enabled."); //TODO: Localize
|
||||
return true;
|
||||
}
|
||||
|
||||
ScoreboardManager.setupPlayerScoreboard(player.getName());
|
||||
ScoreboardManager.enablePlayerRankScoreboard(player);
|
||||
}
|
||||
else if (args[0].equalsIgnoreCase("stats")) {
|
||||
if (!Config.getInstance().getMcstatsScoreboardsEnabled()) {
|
||||
sender.sendMessage("This scoreboard is not enabled."); //TODO: Localize
|
||||
return true;
|
||||
}
|
||||
|
||||
ScoreboardManager.setupPlayerScoreboard(player.getName());
|
||||
ScoreboardManager.enablePlayerStatsScoreboard(UserManager.getPlayer(player));
|
||||
}
|
||||
else if (args[0].equalsIgnoreCase("top")) {
|
||||
if (!Config.getInstance().getMctopScoreboardEnabled()) {
|
||||
sender.sendMessage("This scoreboard is not enabled."); //TODO: Localize
|
||||
return true;
|
||||
}
|
||||
|
||||
ScoreboardManager.enableGlobalStatsScoreboard(player, "all", 1);
|
||||
}
|
||||
else {
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
|
||||
case 2:
|
||||
if (!args[0].equalsIgnoreCase("top")) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!Config.getInstance().getMctopScoreboardEnabled()) {
|
||||
sender.sendMessage("This scoreboard is not enabled."); //TODO: Localize
|
||||
return true;
|
||||
}
|
||||
|
||||
if (StringUtils.isInt(args[1])) {
|
||||
ScoreboardManager.enableGlobalStatsScoreboard(player, "all", Math.abs(Integer.parseInt(args[1])));
|
||||
return true;
|
||||
}
|
||||
|
||||
if (CommandUtils.isInvalidSkill(sender, args[1])) {
|
||||
return true;
|
||||
}
|
||||
|
||||
ScoreboardManager.enableGlobalStatsScoreboard(player, args[1], 1);
|
||||
return true;
|
||||
|
||||
case 3:
|
||||
if (!args[0].equalsIgnoreCase("top")) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!Config.getInstance().getMctopScoreboardEnabled()) {
|
||||
sender.sendMessage("This scoreboard is not enabled."); //TODO: Localize
|
||||
return true;
|
||||
}
|
||||
|
||||
if (CommandUtils.isInvalidSkill(sender, args[1])) {
|
||||
return true;
|
||||
}
|
||||
|
||||
if (CommandUtils.isInvalidInteger(sender, args[2])) {
|
||||
return true;
|
||||
}
|
||||
|
||||
ScoreboardManager.enableGlobalStatsScoreboard(player, args[1], Math.abs(Integer.parseInt(args[2])));
|
||||
return true;
|
||||
|
||||
default:
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<String> onTabComplete(CommandSender sender, Command command, String alias, String[] args) {
|
||||
switch (args.length) {
|
||||
case 1:
|
||||
return StringUtil.copyPartialMatches(args[0], SCOREBOARD_TYPES, new ArrayList<String>(SCOREBOARD_TYPES.size()));
|
||||
case 2:
|
||||
if (args[0].equalsIgnoreCase("top")) {
|
||||
return StringUtil.copyPartialMatches(args[1], SkillType.SKILL_NAMES, new ArrayList<String>(SkillType.SKILL_NAMES.size()));
|
||||
}
|
||||
// Fallthrough
|
||||
|
||||
default:
|
||||
return ImmutableList.of();
|
||||
}
|
||||
}
|
||||
|
||||
private void clearScoreboard(Player player) {
|
||||
player.setScoreboard(mcMMO.p.getServer().getScoreboardManager().getMainScoreboard());
|
||||
player.sendMessage("Your scoreboard has been cleared!"); //TODO: Locale
|
||||
}
|
||||
}
|
@ -348,6 +348,7 @@ public class mcMMO extends JavaPlugin {
|
||||
CommandRegistrationManager.registerMctopCommand();
|
||||
CommandRegistrationManager.registerMcrankCommand();
|
||||
CommandRegistrationManager.registerMcstatsCommand();
|
||||
CommandRegistrationManager.registerMcscoreboardCommand();
|
||||
|
||||
// Party commands
|
||||
CommandRegistrationManager.registerAdminChatCommand();
|
||||
|
@ -11,6 +11,7 @@ import com.gmail.nossr50.commands.McgodCommand;
|
||||
import com.gmail.nossr50.commands.McmmoCommand;
|
||||
import com.gmail.nossr50.commands.McnotifyCommand;
|
||||
import com.gmail.nossr50.commands.McrefreshCommand;
|
||||
import com.gmail.nossr50.commands.McscoreboardCommand;
|
||||
import com.gmail.nossr50.commands.MobhealthCommand;
|
||||
import com.gmail.nossr50.commands.XprateCommand;
|
||||
import com.gmail.nossr50.commands.chat.AdminChatCommand;
|
||||
@ -376,4 +377,14 @@ public final class CommandRegistrationManager {
|
||||
command.setUsage(LocaleLoader.getString("Commands.Usage.1", "mobhealth", "<DISABLED | HEARTS | BAR>"));
|
||||
command.setExecutor(new MobhealthCommand());
|
||||
}
|
||||
|
||||
public static void registerMcscoreboardCommand() {
|
||||
PluginCommand command = mcMMO.p.getCommand("mcscoreboard");
|
||||
command.setDescription("Change the current mcMMO scoreboard being displayed"); //TODO: Localize
|
||||
command.setPermission("mcmmo.commands.mcscoreboard");
|
||||
command.setPermissionMessage(permissionsMessage);
|
||||
command.setUsage(LocaleLoader.getString("Commands.Usage.1", "mcscoreboard", "<CLEAR | RANK | STATS | TOP>"));
|
||||
command.setUsage(command.getUsage() + "\n" + LocaleLoader.getString("Commands.Usage.3", "mcscoreboard", "top", "[" + LocaleLoader.getString("Commands.Usage.Skill") + "]", "[" + LocaleLoader.getString("Commands.Usage.Page") + "]"));
|
||||
command.setExecutor(new McscoreboardCommand());
|
||||
}
|
||||
}
|
||||
|
@ -107,6 +107,8 @@ commands:
|
||||
mobhealth:
|
||||
aliases: [mcmobhealth]
|
||||
description: Change the style of the mob healthbar
|
||||
mcscoreboard:
|
||||
description: Change the current mcMMO scoreboard being displayed
|
||||
permissions:
|
||||
mcmmo.*:
|
||||
default: false
|
||||
@ -665,6 +667,7 @@ permissions:
|
||||
mcmmo.commands.mcmmo.all: true
|
||||
mcmmo.commands.mcnotify: true
|
||||
mcmmo.commands.mcrank: true
|
||||
mcmmo.commands.mcscoreboard: true
|
||||
mcmmo.commands.mcstats: true
|
||||
mcmmo.commands.mctop.all: true
|
||||
mcmmo.commands.mining: true
|
||||
@ -821,6 +824,8 @@ permissions:
|
||||
mcmmo.commands.mcremove:
|
||||
default: false
|
||||
description: Allows access to the mcremove command
|
||||
mcmmo.commands.mcscoreboard:
|
||||
description: Allows access to the mcscoreboard command
|
||||
mcmmo.commands.mcstats:
|
||||
description: Allows access to the mcstats command
|
||||
mcmmo.commands.mctop.*:
|
||||
|
Loading…
Reference in New Issue
Block a user