Skip to content

Commit

Permalink
Added command '/ppo', changed version to v6.2
Browse files Browse the repository at this point in the history
  • Loading branch information
Esophose committed Dec 15, 2018
1 parent cdc4d1d commit a2d173d
Show file tree
Hide file tree
Showing 17 changed files with 295 additions and 165 deletions.
2 changes: 1 addition & 1 deletion pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
<modelVersion>4.0.0</modelVersion>
<groupId>com.esophose.playerparticles</groupId>
<artifactId>PlayerParticles</artifactId>
<version>6.1</version>
<version>6.2</version>
<name>PlayerParticles</name>
<url>https://github.com/Esophose/PlayerParticles</url>
<description>Display particles around your player using customized styles and data!</description>
Expand Down
27 changes: 19 additions & 8 deletions src/com/esophose/playerparticles/PlayerParticles.java
Original file line number Diff line number Diff line change
@@ -1,18 +1,16 @@
/*
* TODO: v6.2
* TODO: v6.3
* + Add new style 'tornado'
* + Add new style 'doubleorbit'
* + Add new style 'wings_<type>', multiple new wing types: fairy, demon
* * Create lore line parser
* * Make it so lore lines of the GUI are removed if the string is empty in the config
* * Add ability to add line breaks to the lore with \n
* + Add new style(s) 'wings_<type>', multiple new wing types: fairy, demon
*/

package com.esophose.playerparticles;

import java.io.File;

import org.bukkit.Bukkit;
import org.bukkit.command.PluginCommand;
import org.bukkit.plugin.Plugin;
import org.bukkit.plugin.java.JavaPlugin;
import org.bukkit.scheduler.BukkitRunnable;
Expand Down Expand Up @@ -59,9 +57,8 @@ public class PlayerParticles extends JavaPlugin {
public void onEnable() {
pluginInstance = Bukkit.getServer().getPluginManager().getPlugin("PlayerParticles");

getCommand("pp").setTabCompleter(new ParticleCommandHandler());
getCommand("pp").setExecutor(new ParticleCommandHandler());

this.registerCommands();

Bukkit.getPluginManager().registerEvents(new ParticleManager(), this);
Bukkit.getPluginManager().registerEvents(new PluginUpdateListener(), this);
Bukkit.getPluginManager().registerEvents(new GuiHandler(), this);
Expand Down Expand Up @@ -114,6 +111,20 @@ public void onDisable() {
GuiHandler.forceCloseAllOpenGUIs();
}

/**
* Registers the commands for the plugin
*/
private void registerCommands() {
ParticleCommandHandler pch = new ParticleCommandHandler();
PluginCommand pp = this.getCommand("pp");
PluginCommand ppo = this.getCommand("ppo");

pp.setTabCompleter(pch);
pp.setExecutor(pch);
ppo.setTabCompleter(pch);
ppo.setExecutor(pch);
}

/**
* Reloads the settings of the plugin
*
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ public void onCommandExecute(PPlayer pplayer, String[] args) {

List<String> effectList = PermissionManager.getEffectNamesUserHasPermissionFor(p);
if (effectList.isEmpty()) {
LangManager.sendMessage(p, Lang.EFFECT_LIST_EMPTY);
LangManager.sendMessage(pplayer, Lang.EFFECT_LIST_EMPTY);
return;
}

Expand All @@ -30,7 +30,7 @@ public void onCommandExecute(PPlayer pplayer, String[] args) {
toSend = toSend.substring(0, toSend.length() - 2);
}

LangManager.sendMessage(p, Lang.EFFECT_LIST, toSend);
LangManager.sendMessage(pplayer, Lang.EFFECT_LIST, toSend);
}

public List<String> onTabComplete(PPlayer pplayer, String[] args) {
Expand Down
118 changes: 59 additions & 59 deletions src/com/esophose/playerparticles/command/FixedCommandModule.java

Large diffs are not rendered by default.

25 changes: 11 additions & 14 deletions src/com/esophose/playerparticles/command/GroupCommandModule.java
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@
import java.util.Comparator;
import java.util.List;

import org.bukkit.entity.Player;
import org.bukkit.util.StringUtil;

import com.esophose.playerparticles.manager.DataManager;
Expand All @@ -19,20 +18,18 @@
public class GroupCommandModule implements CommandModule {

public void onCommandExecute(PPlayer pplayer, String[] args) {
Player p = pplayer.getPlayer();

List<String> validCommands = Arrays.asList(new String[] { "save", "load", "remove", "info", "list" });
if (args.length == 0 || !validCommands.contains(args[0])) {
LangManager.sendMessage(p, Lang.COMMAND_DESCRIPTION_GROUP_SAVE);
LangManager.sendMessage(p, Lang.COMMAND_DESCRIPTION_GROUP_LOAD);
LangManager.sendMessage(p, Lang.COMMAND_DESCRIPTION_GROUP_REMOVE);
LangManager.sendMessage(p, Lang.COMMAND_DESCRIPTION_GROUP_INFO);
LangManager.sendMessage(p, Lang.COMMAND_DESCRIPTION_GROUP_LIST);
LangManager.sendMessage(pplayer, Lang.COMMAND_DESCRIPTION_GROUP_SAVE);
LangManager.sendMessage(pplayer, Lang.COMMAND_DESCRIPTION_GROUP_LOAD);
LangManager.sendMessage(pplayer, Lang.COMMAND_DESCRIPTION_GROUP_REMOVE);
LangManager.sendMessage(pplayer, Lang.COMMAND_DESCRIPTION_GROUP_INFO);
LangManager.sendMessage(pplayer, Lang.COMMAND_DESCRIPTION_GROUP_LIST);
return;
}

if (args.length == 1 && !args[0].equalsIgnoreCase("list")) {
LangManager.sendMessage(p, Lang.GROUP_NO_NAME, args[0].toLowerCase());
LangManager.sendMessage(pplayer, Lang.GROUP_NO_NAME, args[0].toLowerCase());
return;
}

Expand All @@ -53,11 +50,11 @@ public void onCommandExecute(PPlayer pplayer, String[] args) {
onList(pplayer);
break;
default:
LangManager.sendMessage(p, Lang.COMMAND_DESCRIPTION_GROUP_SAVE);
LangManager.sendMessage(p, Lang.COMMAND_DESCRIPTION_GROUP_LOAD);
LangManager.sendMessage(p, Lang.COMMAND_DESCRIPTION_GROUP_REMOVE);
LangManager.sendMessage(p, Lang.COMMAND_DESCRIPTION_GROUP_INFO);
LangManager.sendMessage(p, Lang.COMMAND_DESCRIPTION_GROUP_LIST);
LangManager.sendMessage(pplayer, Lang.COMMAND_DESCRIPTION_GROUP_SAVE);
LangManager.sendMessage(pplayer, Lang.COMMAND_DESCRIPTION_GROUP_LOAD);
LangManager.sendMessage(pplayer, Lang.COMMAND_DESCRIPTION_GROUP_REMOVE);
LangManager.sendMessage(pplayer, Lang.COMMAND_DESCRIPTION_GROUP_INFO);
LangManager.sendMessage(pplayer, Lang.COMMAND_DESCRIPTION_GROUP_LIST);
break;
}
}
Expand Down
118 changes: 94 additions & 24 deletions src/com/esophose/playerparticles/command/ParticleCommandHandler.java
Original file line number Diff line number Diff line change
Expand Up @@ -4,16 +4,19 @@
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;

public class ParticleCommandHandler implements CommandExecutor, TabCompleter {
Expand Down Expand Up @@ -80,8 +83,8 @@ public static List<String> getCommandNames() {
}

/**
* Called when a player executes a /pp command
* Checks what /pp command it is and calls the corresponding module
* Called when a player executes a PlayerParticles command
* Checks what PlayerParticles command it is and calls the corresponding module
*
* @param sender Who executed the command
* @param cmd The command
Expand All @@ -90,30 +93,68 @@ public static List<String> getCommandNames() {
* @return true
*/
public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
if (!(sender instanceof Player)) {
sender.sendMessage("Error: PlayerParticles only supports players executing commands.");
return true;
}

Player p = (Player) sender;
if (cmd.getName().equalsIgnoreCase("pp")) {
if (!(sender instanceof Player)) {
sender.sendMessage("Error: PlayerParticles only supports players executing commands.");
return true;
}

Player p = (Player) sender;

DataManager.getPPlayer(p.getUniqueId(), (pplayer) -> {
String commandName = args.length > 0 ? args[0] : "";
CommandModule commandModule = findMatchingCommand(commandName);
DataManager.getPPlayer(p.getUniqueId(), (pplayer) -> {
String commandName = args.length > 0 ? args[0] : "";
CommandModule commandModule = findMatchingCommand(commandName);

if (commandModule != null) {
if (commandModule.requiresEffects() && PermissionManager.getEffectNamesUserHasPermissionFor(p).isEmpty()) {
LangManager.sendMessage(p, Lang.COMMAND_ERROR_NO_EFFECTS);
if (commandModule != null) {
if (commandModule.requiresEffects() && PermissionManager.getEffectNamesUserHasPermissionFor(p).isEmpty()) {
LangManager.sendMessage(pplayer, Lang.COMMAND_ERROR_NO_EFFECTS);
} else {
String[] cmdArgs = new String[0];
if (args.length > 1) cmdArgs = Arrays.copyOfRange(args, 1, args.length);
commandModule.onCommandExecute(pplayer, cmdArgs);
}
} else {
String[] cmdArgs = new String[0];
if (args.length > 1) cmdArgs = Arrays.copyOfRange(args, 1, args.length);
commandModule.onCommandExecute(pplayer, cmdArgs);
LangManager.sendMessage(pplayer, Lang.COMMAND_ERROR_UNKNOWN);
}
} else {
LangManager.sendMessage(p, Lang.COMMAND_ERROR_UNKNOWN);
});
} 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);
});
}

return true;
}

Expand All @@ -127,9 +168,9 @@ public boolean onCommand(CommandSender sender, Command cmd, String label, String
* @return A list of commands available to the sender
*/
public List<String> onTabComplete(CommandSender sender, Command cmd, String alias, String[] args) {
if (!(sender instanceof Player)) return new ArrayList<String>();

if (cmd.getName().equalsIgnoreCase("pp")) {
if (!(sender instanceof Player)) return new ArrayList<String>();

PPlayer pplayer = DataManager.getPPlayer(((Player) sender).getUniqueId());
if (pplayer == null) return new ArrayList<String>();

Expand All @@ -138,12 +179,41 @@ public List<String> onTabComplete(CommandSender sender, Command cmd, String alia
return commandModule.onTabComplete(pplayer, args);
} else if (args.length >= 2) {
CommandModule commandModule = findMatchingCommand(args[0]);
String[] cmdArgs = Arrays.copyOfRange(args, 1, args.length);
if (commandModule != null) {
String[] cmdArgs = Arrays.copyOfRange(args, 1, args.length);
return commandModule.onTabComplete(pplayer, cmdArgs);
}
}
} 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 new ArrayList<String>();
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ public void onCommandExecute(PPlayer pplayer, String[] args) {
toSend = toSend.substring(0, toSend.length() - 2);
}

LangManager.sendMessage(p, Lang.STYLE_LIST, toSend);
LangManager.sendMessage(pplayer, Lang.STYLE_LIST, toSend);
}

public List<String> onTabComplete(PPlayer pplayer, String[] args) {
Expand Down
2 changes: 1 addition & 1 deletion src/com/esophose/playerparticles/gui/GuiActionButton.java
Original file line number Diff line number Diff line change
Expand Up @@ -157,7 +157,7 @@ public boolean isTickable() {
* @param lore The lines of lore
* @return A parsed list of lore text
*/
private List<String> parseLore(String... lore) {
public static List<String> parseLore(String... lore) {
List<String> parsedLore = new ArrayList<String>();
for (String line : lore) {
// Try to maintain the color going to the next line if it's split
Expand Down
7 changes: 3 additions & 4 deletions src/com/esophose/playerparticles/gui/GuiInventoryDefault.java
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
package com.esophose.playerparticles.gui;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

import org.bukkit.Bukkit;
Expand Down Expand Up @@ -42,12 +41,12 @@ public GuiInventoryDefault(PPlayer pplayer) {
currentIconMeta.setDisplayName(LangManager.getText(Lang.GUI_COLOR_ICON_NAME) + pplayer.getPlayer().getName());
String[] currentIconLore = new String[] {
LangManager.getText(Lang.GUI_COLOR_INFO) + LangManager.getText(Lang.GUI_ACTIVE_PARTICLES, pplayer.getActiveParticles().size()),
LangManager.getText(Lang.GUI_COLOR_INFO) + LangManager.getText(Lang.GUI_SAVED_GROUPS, pplayer.getParticleGroups().size()),
LangManager.getText(Lang.GUI_COLOR_INFO) + LangManager.getText(Lang.GUI_SAVED_GROUPS, pplayer.getParticleGroups().size() - 1),
LangManager.getText(Lang.GUI_COLOR_INFO) + LangManager.getText(Lang.GUI_FIXED_EFFECTS, pplayer.getFixedEffectIds().size()),
"",
" ",
LangManager.getText(Lang.GUI_COLOR_INFO) + LangManager.getText(Lang.GUI_COMMANDS_INFO)
};
currentIconMeta.setLore(Arrays.asList(currentIconLore));
currentIconMeta.setLore(GuiActionButton.parseLore(currentIconLore));
currentIconMeta.setOwner(pplayer.getPlayer().getName());
headIcon.setItemMeta(currentIconMeta);

Expand Down
Loading

0 comments on commit a2d173d

Please sign in to comment.