mirror of
https://github.com/mcMMO-Dev/mcMMO.git
synced 2024-11-24 06:06:45 +01:00
89 lines
3.5 KiB
Java
89 lines
3.5 KiB
Java
package com.gmail.nossr50.commands.chat;
|
|
|
|
import co.aikar.commands.BaseCommand;
|
|
import co.aikar.commands.BukkitCommandIssuer;
|
|
import co.aikar.commands.annotation.CommandAlias;
|
|
import co.aikar.commands.annotation.Conditions;
|
|
import co.aikar.commands.annotation.Default;
|
|
import com.gmail.nossr50.commands.CommandManager;
|
|
import com.gmail.nossr50.datatypes.chat.ChatChannel;
|
|
import com.gmail.nossr50.datatypes.party.Party;
|
|
import com.gmail.nossr50.datatypes.player.McMMOPlayer;
|
|
import com.gmail.nossr50.mcMMO;
|
|
import com.gmail.nossr50.party.PartyManager;
|
|
import com.gmail.nossr50.util.player.UserManager;
|
|
import com.gmail.nossr50.util.text.StringUtils;
|
|
import org.bukkit.entity.Player;
|
|
import org.jetbrains.annotations.NotNull;
|
|
|
|
@CommandAlias("pc|p|partychat|pchat") //Kept for historical reasons
|
|
public class PartyChatCommand extends BaseCommand {
|
|
private final @NotNull mcMMO pluginRef;
|
|
|
|
public PartyChatCommand(@NotNull mcMMO pluginRef) {
|
|
this.pluginRef = pluginRef;
|
|
}
|
|
|
|
@Default
|
|
@Conditions(CommandManager.PARTY_CONDITION)
|
|
public void processCommand(String[] args) {
|
|
BukkitCommandIssuer bukkitCommandIssuer = (BukkitCommandIssuer) getCurrentCommandIssuer();
|
|
|
|
if(args == null || args.length == 0) {
|
|
//Process with no arguments
|
|
if(bukkitCommandIssuer.isPlayer()) {
|
|
McMMOPlayer mmoPlayer = UserManager.getPlayer(bukkitCommandIssuer.getPlayer());
|
|
pluginRef.getChatManager().setOrToggleChatChannel(mmoPlayer, ChatChannel.PARTY);
|
|
} else {
|
|
//Not support for console
|
|
mcMMO.p.getLogger().info("You cannot switch chat channels as console, please provide full arguments.");
|
|
}
|
|
} else {
|
|
//Here we split the logic, consoles need to target a party name and players do not
|
|
|
|
/*
|
|
* Player Logic
|
|
*/
|
|
if(bukkitCommandIssuer.getIssuer() instanceof Player) {
|
|
McMMOPlayer mmoPlayer = UserManager.getPlayer(bukkitCommandIssuer.getPlayer());
|
|
processCommandArgsPlayer(mmoPlayer, args);
|
|
/*
|
|
* Console Logic
|
|
*/
|
|
} else {
|
|
processCommandArgsConsole(args);
|
|
}
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Processes the command with arguments for a {@link McMMOPlayer}
|
|
* @param mmoPlayer target player
|
|
* @param args command arguments
|
|
*/
|
|
private void processCommandArgsPlayer(@NotNull McMMOPlayer mmoPlayer, @NotNull String[] args) {
|
|
//Player is not toggling and is chatting directly to party
|
|
pluginRef.getChatManager().processPlayerMessage(mmoPlayer, args, ChatChannel.PARTY);
|
|
}
|
|
|
|
/**
|
|
* Processes the command with arguments for a {@link com.gmail.nossr50.chat.author.ConsoleAuthor}
|
|
* @param args command arguments
|
|
*/
|
|
private void processCommandArgsConsole(@NotNull String[] args) {
|
|
if(args.length <= 1) {
|
|
//Only specific a party and not the message
|
|
mcMMO.p.getLogger().severe("You need to specify a party name and then write a message afterwards.");
|
|
} else {
|
|
//Grab party
|
|
Party targetParty = PartyManager.getParty(args[0]);
|
|
|
|
if(targetParty != null) {
|
|
pluginRef.getChatManager().processConsoleMessage(StringUtils.buildStringAfterNthElement(args, 1), targetParty);
|
|
} else {
|
|
mcMMO.p.getLogger().severe("A party with that name doesn't exist!");
|
|
}
|
|
}
|
|
}
|
|
}
|