mirror of
https://github.com/mcMMO-Dev/mcMMO.git
synced 2024-10-18 18:13:39 +02:00
2838a52e0c
hardcore commands. Moved lots of duplicated code to functions in CommandUtils.java. Split /ptp into individual commands, just like /party. Used ternary logic to simplify some of our /skillname stat displays. Fixed skill guide to not allow for negative pages. Simplified logic for many /skillname data calculations. Use permission checks to prevent calculating data that will never be displayed. Made the skill guide into its own command.
154 lines
6.3 KiB
Java
154 lines
6.3 KiB
Java
package com.gmail.nossr50.commands.party;
|
|
|
|
import org.bukkit.command.Command;
|
|
import org.bukkit.command.CommandExecutor;
|
|
import org.bukkit.command.CommandSender;
|
|
import org.bukkit.entity.Player;
|
|
|
|
import com.gmail.nossr50.mcMMO;
|
|
import com.gmail.nossr50.datatypes.player.McMMOPlayer;
|
|
import com.gmail.nossr50.locale.LocaleLoader;
|
|
import com.gmail.nossr50.util.Permissions;
|
|
import com.gmail.nossr50.util.commands.CommandUtils;
|
|
import com.gmail.nossr50.util.player.UserManager;
|
|
|
|
public class PartyCommand implements CommandExecutor {
|
|
private McMMOPlayer mcMMOPlayer;
|
|
private Player player;
|
|
|
|
private CommandExecutor partyJoinCommand = new PartyJoinCommand();
|
|
private CommandExecutor partyAcceptCommand = new PartyAcceptCommand();
|
|
private CommandExecutor partyCreateCommand = new PartyCreateCommand();
|
|
private CommandExecutor partyQuitCommand = new PartyQuitCommand();
|
|
private CommandExecutor partyExpShareCommand = new PartyExpShareCommand();
|
|
private CommandExecutor partyItemShareCommand = new PartyItemShareCommand();
|
|
private CommandExecutor partyInviteCommand = new PartyInviteCommand();
|
|
private CommandExecutor partyKickCommand = new PartyKickCommand();
|
|
private CommandExecutor partyDisbandCommand = new PartyDisbandCommand();
|
|
private CommandExecutor partyChangeOwnerCommand = new PartyChangeOwnerCommand();
|
|
private CommandExecutor partyLockCommand = new PartyLockCommand();
|
|
private CommandExecutor partyChangePasswordCommand = new PartyChangePasswordCommand();
|
|
private CommandExecutor partyRenameCommand = new PartyRenameCommand();
|
|
private CommandExecutor partyInfoCommand = new PartyInfoCommand();
|
|
private CommandExecutor partyHelpCommand = new PartyHelpCommand();
|
|
private CommandExecutor partyTeleportCommand = mcMMO.p.getCommand("ptp").getExecutor();
|
|
private CommandExecutor partyChatCommand = mcMMO.p.getCommand("partychat").getExecutor();
|
|
|
|
@Override
|
|
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
|
|
if (CommandUtils.noConsoleUsage(sender)) {
|
|
return true;
|
|
}
|
|
|
|
if (!Permissions.party(sender)) {
|
|
sender.sendMessage(command.getPermissionMessage());
|
|
return true;
|
|
}
|
|
|
|
mcMMOPlayer = UserManager.getPlayer(sender.getName());
|
|
player = mcMMOPlayer.getPlayer();
|
|
|
|
if (args.length < 1) {
|
|
if (!mcMMOPlayer.inParty()) {
|
|
sender.sendMessage(LocaleLoader.getString("Commands.Party.None"));
|
|
return printUsage();
|
|
}
|
|
|
|
return partyInfoCommand.onCommand(sender, command, label, args);
|
|
}
|
|
|
|
PartySubcommandType subcommand = PartySubcommandType.getSubcommand(args[0]);
|
|
|
|
if (subcommand == null) {
|
|
return printUsage();
|
|
}
|
|
|
|
// Can't use this for lock/unlock since they're handled by the same command
|
|
if (subcommand != PartySubcommandType.LOCK && subcommand != PartySubcommandType.UNLOCK && !Permissions.partySubcommand(sender, subcommand)) {
|
|
sender.sendMessage(command.getPermissionMessage());
|
|
return true;
|
|
}
|
|
|
|
switch (subcommand) {
|
|
case JOIN:
|
|
return partyJoinCommand.onCommand(sender, command, label, args);
|
|
case ACCEPT:
|
|
return partyAcceptCommand.onCommand(sender, command, label, args);
|
|
case CREATE:
|
|
return partyCreateCommand.onCommand(sender, command, label, args);
|
|
case HELP:
|
|
return partyHelpCommand.onCommand(sender, command, label, args);
|
|
default:
|
|
break;
|
|
}
|
|
|
|
// Party member commands
|
|
if (!mcMMOPlayer.inParty()) {
|
|
sender.sendMessage(LocaleLoader.getString("Commands.Party.None"));
|
|
return printUsage();
|
|
}
|
|
|
|
switch (subcommand) {
|
|
case INFO:
|
|
return partyInfoCommand.onCommand(sender, command, label, args);
|
|
case QUIT:
|
|
return partyQuitCommand.onCommand(sender, command, label, args);
|
|
case INVITE:
|
|
return partyInviteCommand.onCommand(sender, command, label, args);
|
|
case TELEPORT:
|
|
return partyTeleportCommand.onCommand(sender, command, label, extractArgs(args));
|
|
case CHAT:
|
|
return partyChatCommand.onCommand(sender, command, label, extractArgs(args));
|
|
default:
|
|
break;
|
|
}
|
|
|
|
// Party leader commands
|
|
if (!mcMMOPlayer.getParty().getLeader().equalsIgnoreCase(player.getName())) {
|
|
sender.sendMessage(LocaleLoader.getString("Party.NotOwner"));
|
|
return true;
|
|
}
|
|
|
|
switch (subcommand) {
|
|
case EXPSHARE:
|
|
return partyExpShareCommand.onCommand(sender, command, label, args);
|
|
case ITEMSHARE:
|
|
return partyItemShareCommand.onCommand(sender, command, label, args);
|
|
case KICK:
|
|
return partyKickCommand.onCommand(sender, command, label, args);
|
|
case DISBAND:
|
|
return partyDisbandCommand.onCommand(sender, command, label, args);
|
|
case OWNER:
|
|
return partyChangeOwnerCommand.onCommand(sender, command, label, args);
|
|
case LOCK:
|
|
case UNLOCK:
|
|
return partyLockCommand.onCommand(sender, command, label, args);
|
|
case PASSWORD:
|
|
return partyChangePasswordCommand.onCommand(sender, command, label, args);
|
|
case RENAME:
|
|
return partyRenameCommand.onCommand(sender, command, label, args);
|
|
default:
|
|
break;
|
|
}
|
|
|
|
return true;
|
|
}
|
|
|
|
private boolean printUsage() {
|
|
player.sendMessage(LocaleLoader.getString("Party.Help.0", "/party join"));
|
|
player.sendMessage(LocaleLoader.getString("Party.Help.1", "/party create"));
|
|
player.sendMessage(LocaleLoader.getString("Party.Help.2", "/party ?"));
|
|
return true;
|
|
}
|
|
|
|
private String[] extractArgs(String[] args) {
|
|
String[] newArgs = new String[args.length - 1];
|
|
|
|
for (int i = 1; i < args.length; i++) {
|
|
newArgs[i - 1] = args[i];
|
|
}
|
|
|
|
return newArgs;
|
|
}
|
|
}
|