mirror of
https://github.com/TotalFreedomMC/PlayerParticles.git
synced 2025-02-20 15:04:31 +00:00
Clean up code
This commit is contained in:
parent
a2d173d932
commit
e5f5760fb1
7 changed files with 128 additions and 69 deletions
|
@ -0,0 +1,26 @@
|
|||
package com.esophose.playerparticles.command;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import org.bukkit.command.CommandSender;
|
||||
|
||||
public interface CommandModuleSecondary {
|
||||
|
||||
/**
|
||||
* Called when this command gets executed
|
||||
*
|
||||
* @param sender The CommandSender who executed this command
|
||||
* @param args The arguments to this command
|
||||
*/
|
||||
public void onCommandExecute(CommandSender sender, String[] args);
|
||||
|
||||
/**
|
||||
* Called when a player tries to tab complete this command
|
||||
*
|
||||
* @param sender The CommandSender who is tab completing this command
|
||||
* @param args Arguments typed so far
|
||||
* @return A list of possible argument values
|
||||
*/
|
||||
public List<String> onTabComplete(CommandSender sender, String[] args);
|
||||
|
||||
}
|
|
@ -15,6 +15,7 @@ public class HelpCommandModule implements CommandModule {
|
|||
for (CommandModule cmd : cmds)
|
||||
if (!(cmd instanceof DefaultCommandModule))
|
||||
CommandModule.printUsageWithDescription(pplayer, cmd);
|
||||
LangManager.sendSimpleMessage(pplayer, Lang.COMMAND_DESCRIPTIONS_HELP_OTHER);
|
||||
}
|
||||
|
||||
public List<String> onTabComplete(PPlayer pplayer, String[] args) {
|
||||
|
|
|
@ -0,0 +1,90 @@
|
|||
package com.esophose.playerparticles.command;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.util.StringUtil;
|
||||
|
||||
import com.esophose.playerparticles.manager.DataManager;
|
||||
import com.esophose.playerparticles.manager.LangManager;
|
||||
import com.esophose.playerparticles.manager.LangManager.Lang;
|
||||
import com.esophose.playerparticles.manager.PermissionManager;
|
||||
import com.esophose.playerparticles.particles.OtherPPlayer;
|
||||
import com.esophose.playerparticles.particles.PPlayer;
|
||||
|
||||
public class OtherCommandModule implements CommandModuleSecondary {
|
||||
|
||||
public void onCommandExecute(CommandSender sender, String[] args) {
|
||||
if (!PermissionManager.canOverride(sender)) {
|
||||
LangManager.sendCommandSenderMessage(sender, Lang.OTHER_NO_PERMISSION);
|
||||
return;
|
||||
}
|
||||
|
||||
if (args.length < 2) {
|
||||
LangManager.sendCommandSenderMessage(sender, Lang.OTHER_MISSING_ARGS);
|
||||
return;
|
||||
}
|
||||
|
||||
Player other = Bukkit.getPlayer(args[0]);
|
||||
if (other == null) {
|
||||
LangManager.sendCommandSenderMessage(sender, Lang.OTHER_UNKNOWN_PLAYER, args[0]);
|
||||
return;
|
||||
}
|
||||
|
||||
CommandModule commandModule = ParticleCommandHandler.findMatchingCommand(args[1]);
|
||||
if (commandModule == null) {
|
||||
LangManager.sendCommandSenderMessage(sender, Lang.OTHER_UNKNOWN_COMMAND, args[1]);
|
||||
return;
|
||||
}
|
||||
|
||||
if (commandModule.requiresEffects() && PermissionManager.getEffectNamesUserHasPermissionFor(other).isEmpty()) {
|
||||
LangManager.sendCommandSenderMessage(sender, Lang.OTHER_SUCCESS, other.getName());
|
||||
LangManager.sendCommandSenderMessage(sender, Lang.COMMAND_ERROR_NO_EFFECTS);
|
||||
return;
|
||||
}
|
||||
|
||||
DataManager.getPPlayer(other.getUniqueId(), (pplayer) -> {
|
||||
OtherPPlayer otherPPlayer = new OtherPPlayer(sender, pplayer);
|
||||
|
||||
LangManager.sendCommandSenderMessage(sender, Lang.OTHER_SUCCESS, other.getName());
|
||||
|
||||
String[] cmdArgs = Arrays.copyOfRange(args, 2, args.length);
|
||||
commandModule.onCommandExecute(otherPPlayer, cmdArgs);
|
||||
});
|
||||
}
|
||||
|
||||
public List<String> onTabComplete(CommandSender sender, String[] args) {
|
||||
List<String> completions = new ArrayList<String>();
|
||||
|
||||
if (args.length < 2) {
|
||||
List<String> playerNames = new ArrayList<String>();
|
||||
for (Player player : Bukkit.getOnlinePlayers())
|
||||
playerNames.add(player.getName());
|
||||
|
||||
if (args.length == 0) completions = playerNames;
|
||||
else StringUtil.copyPartialMatches(args[0], playerNames, completions);
|
||||
} else if (args.length == 2) {
|
||||
List<String> commandNames = ParticleCommandHandler.getCommandNames();
|
||||
StringUtil.copyPartialMatches(args[1], commandNames, completions);
|
||||
} else {
|
||||
Player otherPlayer = Bukkit.getPlayer(args[0]);
|
||||
if (otherPlayer != null) {
|
||||
PPlayer other = DataManager.getPPlayer(otherPlayer.getUniqueId());
|
||||
if (other != null) {
|
||||
CommandModule commandModule = ParticleCommandHandler.findMatchingCommand(args[1]);
|
||||
if (commandModule != null) {
|
||||
String[] cmdArgs = Arrays.copyOfRange(args, 2, args.length);
|
||||
completions = commandModule.onTabComplete(other, cmdArgs);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return completions;
|
||||
}
|
||||
|
||||
}
|
|
@ -4,27 +4,27 @@ import java.util.ArrayList;
|
|||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.command.Command;
|
||||
import org.bukkit.command.CommandExecutor;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.command.TabCompleter;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.util.StringUtil;
|
||||
|
||||
import com.esophose.playerparticles.manager.DataManager;
|
||||
import com.esophose.playerparticles.manager.LangManager;
|
||||
import com.esophose.playerparticles.manager.LangManager.Lang;
|
||||
import com.esophose.playerparticles.manager.PermissionManager;
|
||||
import com.esophose.playerparticles.particles.OtherPPlayer;
|
||||
import com.esophose.playerparticles.particles.PPlayer;
|
||||
|
||||
import net.md_5.bungee.api.ChatColor;
|
||||
|
||||
public class ParticleCommandHandler implements CommandExecutor, TabCompleter {
|
||||
|
||||
/**
|
||||
* A list of all commands
|
||||
*/
|
||||
private static List<CommandModule> commands;
|
||||
private static CommandModuleSecondary ppoCommand;
|
||||
|
||||
static {
|
||||
commands = new ArrayList<CommandModule>();
|
||||
|
@ -46,6 +46,8 @@ public class ParticleCommandHandler implements CommandExecutor, TabCompleter {
|
|||
commands.add(new ToggleCommandModule());
|
||||
commands.add(new VersionCommandModule());
|
||||
commands.add(new WorldsCommandModule());
|
||||
|
||||
ppoCommand = new OtherCommandModule();
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -95,7 +97,7 @@ public class ParticleCommandHandler implements CommandExecutor, TabCompleter {
|
|||
public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
|
||||
if (cmd.getName().equalsIgnoreCase("pp")) {
|
||||
if (!(sender instanceof Player)) {
|
||||
sender.sendMessage("Error: PlayerParticles only supports players executing commands.");
|
||||
sender.sendMessage(ChatColor.RED + "Error: This command can only be executed by a player.");
|
||||
return true;
|
||||
}
|
||||
|
||||
|
@ -118,41 +120,7 @@ public class ParticleCommandHandler implements CommandExecutor, TabCompleter {
|
|||
}
|
||||
});
|
||||
} else if (cmd.getName().equalsIgnoreCase("ppo")) {
|
||||
if (!PermissionManager.canOverride(sender)) {
|
||||
LangManager.sendCommandSenderMessage(sender, Lang.OTHER_NO_PERMISSION);
|
||||
return true;
|
||||
}
|
||||
|
||||
if (args.length < 2) {
|
||||
LangManager.sendCommandSenderMessage(sender, Lang.OTHER_MISSING_ARGS);
|
||||
return true;
|
||||
}
|
||||
|
||||
Player other = Bukkit.getPlayer(args[0]);
|
||||
if (other == null) {
|
||||
LangManager.sendCommandSenderMessage(sender, Lang.OTHER_UNKNOWN_PLAYER, args[0]);
|
||||
return true;
|
||||
}
|
||||
|
||||
CommandModule commandModule = findMatchingCommand(args[1]);
|
||||
if (commandModule == null) {
|
||||
LangManager.sendCommandSenderMessage(sender, Lang.OTHER_UNKNOWN_COMMAND, args[1]);
|
||||
return true;
|
||||
}
|
||||
|
||||
if (commandModule.requiresEffects() && PermissionManager.getEffectNamesUserHasPermissionFor(other).isEmpty()) {
|
||||
LangManager.sendCommandSenderMessage(sender, Lang.COMMAND_ERROR_NO_EFFECTS);
|
||||
return true;
|
||||
}
|
||||
|
||||
DataManager.getPPlayer(other.getUniqueId(), (pplayer) -> {
|
||||
OtherPPlayer otherPPlayer = new OtherPPlayer(sender, pplayer);
|
||||
|
||||
LangManager.sendCommandSenderMessage(sender, Lang.OTHER_SUCCESS, other.getName());
|
||||
|
||||
String[] cmdArgs = Arrays.copyOfRange(args, 2, args.length);
|
||||
commandModule.onCommandExecute(otherPPlayer, cmdArgs);
|
||||
});
|
||||
ppoCommand.onCommandExecute(sender, args);
|
||||
}
|
||||
|
||||
return true;
|
||||
|
@ -185,33 +153,7 @@ public class ParticleCommandHandler implements CommandExecutor, TabCompleter {
|
|||
}
|
||||
}
|
||||
} else if (cmd.getName().equalsIgnoreCase("ppo")) {
|
||||
List<String> completions = new ArrayList<String>();
|
||||
|
||||
if (args.length < 2) {
|
||||
List<String> playerNames = new ArrayList<String>();
|
||||
for (Player player : Bukkit.getOnlinePlayers())
|
||||
playerNames.add(player.getName());
|
||||
|
||||
if (args.length == 0) completions = playerNames;
|
||||
else StringUtil.copyPartialMatches(args[0], playerNames, completions);
|
||||
} else if (args.length == 2) {
|
||||
List<String> commandNames = ParticleCommandHandler.getCommandNames();
|
||||
StringUtil.copyPartialMatches(args[1], commandNames, completions);
|
||||
} else {
|
||||
Player otherPlayer = Bukkit.getPlayer(args[0]);
|
||||
if (otherPlayer != null) {
|
||||
PPlayer other = DataManager.getPPlayer(otherPlayer.getUniqueId());
|
||||
if (other != null) {
|
||||
CommandModule commandModule = findMatchingCommand(args[1]);
|
||||
if (commandModule != null) {
|
||||
String[] cmdArgs = Arrays.copyOfRange(args, 2, args.length);
|
||||
completions = commandModule.onTabComplete(other, cmdArgs);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return completions;
|
||||
return ppoCommand.onTabComplete(sender, args);
|
||||
}
|
||||
|
||||
return new ArrayList<String>();
|
||||
|
|
|
@ -31,6 +31,7 @@ public class LangManager {
|
|||
COMMAND_DESCRIPTIONS_USAGE,
|
||||
COMMAND_DESCRIPTIONS_HELP_1,
|
||||
COMMAND_DESCRIPTIONS_HELP_2,
|
||||
COMMAND_DESCRIPTIONS_HELP_OTHER,
|
||||
COMMAND_DESCRIPTION_ADD,
|
||||
COMMAND_DESCRIPTION_DATA,
|
||||
COMMAND_DESCRIPTION_DEFAULT,
|
||||
|
@ -49,7 +50,6 @@ public class LangManager {
|
|||
COMMAND_DESCRIPTION_TOGGLE,
|
||||
COMMAND_DESCRIPTION_VERSION,
|
||||
COMMAND_DESCRIPTION_WORLDS,
|
||||
COMMAND_DESCRIPTION_OTHER,
|
||||
|
||||
// Sub-Command Usage
|
||||
COMMAND_DESCRIPTION_FIXED_CREATE,
|
||||
|
|
|
@ -18,6 +18,7 @@ command-descriptions: '&eThe following commands are available:'
|
|||
command-descriptions-usage: '&e/pp {0} {1}'
|
||||
command-descriptions-help-1: '&7> &b/pp {0} &e- {1}'
|
||||
command-descriptions-help-2: '&7> &b/pp {0} {1} &e- {2}'
|
||||
command-descriptions-help-other: '&7> &b/ppo <player> <command> &e- Run a /pp command as a player'
|
||||
command-description-add: 'Add a new particle'
|
||||
command-description-data: 'Check what type of data an effect uses'
|
||||
command-description-default: 'The main command. By default, opens the GUI'
|
||||
|
@ -36,7 +37,6 @@ command-description-styles: 'Display a list of styles you can use'
|
|||
command-description-toggle: 'Toggles particle visibility on/off'
|
||||
command-description-version: 'Display the plugin version and author'
|
||||
command-description-worlds: 'Find out what worlds particles are disabled in'
|
||||
command-description-other: 'Execute a /pp command for another player'
|
||||
|
||||
# Sub-Command Usage
|
||||
command-description-fixed-create: '&e/pp fixed create <<x> <y> <z>|<looking>> <effect> <style> [data] - Creates a new fixed effect'
|
||||
|
|
|
@ -9,4 +9,4 @@ commands:
|
|||
pp:
|
||||
description: The main PlayerParticles command. By default, opens the GUI.
|
||||
ppo:
|
||||
description: The secondary PlayerParticles command. Used for modifying the particles of other players.
|
||||
description: Allows executing a /pp command for another player.
|
||||
|
|
Loading…
Reference in a new issue