From 6fb22e16c713663989235e4eb5af3c19076344f5 Mon Sep 17 00:00:00 2001 From: Esophose Date: Sun, 7 Oct 2018 16:33:13 -0600 Subject: [PATCH] /pp remove finished --- .../command/DefaultCommandModule.java | 2 +- .../command/EffectsCommandModule.java | 15 ++--- .../command/FixedCommandModule.java | 4 +- .../command/GUICommandModule.java | 2 +- .../command/GroupCommandModule.java | 2 +- .../command/HelpCommandModule.java | 1 + .../command/InfoCommandModule.java | 34 ---------- .../command/ListCommandModule.java | 18 +++++- .../command/ParticleCommandHandler.java | 3 +- .../command/RemoveCommandModule.java | 54 +++++++++++++++- .../command/StylesCommandModule.java | 17 ++--- .../gui/PlayerParticlesGui.java | 6 +- .../playerparticles/manager/LangManager.java | 14 ++++ src/lang/default.lang | 64 +++++++++++-------- 14 files changed, 142 insertions(+), 94 deletions(-) delete mode 100644 src/com/esophose/playerparticles/command/InfoCommandModule.java diff --git a/src/com/esophose/playerparticles/command/DefaultCommandModule.java b/src/com/esophose/playerparticles/command/DefaultCommandModule.java index f2e04f4..be3a5dc 100644 --- a/src/com/esophose/playerparticles/command/DefaultCommandModule.java +++ b/src/com/esophose/playerparticles/command/DefaultCommandModule.java @@ -12,7 +12,7 @@ public class DefaultCommandModule implements CommandModule { public void onCommandExecute(PPlayer pplayer, String[] args) { // The default command just opens the GUI, execute the GUICommandModule - ParticleCommandHandler.findMatchingCommand("gui").onCommandExecute(pplayer, args); + ParticleCommandHandler.findMatchingCommand("gui").onCommandExecute(pplayer, new String[] { "byDefault" }); } public List onTabComplete(PPlayer pplayer, String[] args) { diff --git a/src/com/esophose/playerparticles/command/EffectsCommandModule.java b/src/com/esophose/playerparticles/command/EffectsCommandModule.java index ad13845..2391ab5 100644 --- a/src/com/esophose/playerparticles/command/EffectsCommandModule.java +++ b/src/com/esophose/playerparticles/command/EffectsCommandModule.java @@ -5,10 +5,9 @@ import java.util.List; import org.bukkit.entity.Player; import com.esophose.playerparticles.manager.LangManager; -import com.esophose.playerparticles.manager.PermissionManager; import com.esophose.playerparticles.manager.LangManager.Lang; +import com.esophose.playerparticles.manager.PermissionManager; import com.esophose.playerparticles.particles.PPlayer; -import com.esophose.playerparticles.particles.ParticleEffect; public class EffectsCommandModule implements CommandModule { @@ -16,18 +15,16 @@ public class EffectsCommandModule implements CommandModule { Player p = pplayer.getPlayer(); List effectList = PermissionManager.getEffectsUserHasPermissionFor(p); - if (effectList.size() == 1) { - LangManager.sendMessage(p, Lang.EFFECT_LIST, effectList.get(0)); + if (effectList.isEmpty()) { + LangManager.sendMessage(p, Lang.EFFECT_LIST_EMPTY); return; } String toSend = ""; - for (ParticleEffect effect : ParticleEffect.getSupportedEffects()) { - if (PermissionManager.hasEffectPermission(p, effect)) { - toSend += effect.getName() + ", "; - continue; - } + for (String name : effectList) { + toSend += name + ", "; } + if (toSend.endsWith(", ")) { toSend = toSend.substring(0, toSend.length() - 2); } diff --git a/src/com/esophose/playerparticles/command/FixedCommandModule.java b/src/com/esophose/playerparticles/command/FixedCommandModule.java index cf3bb2c..ceac3b1 100644 --- a/src/com/esophose/playerparticles/command/FixedCommandModule.java +++ b/src/com/esophose/playerparticles/command/FixedCommandModule.java @@ -237,7 +237,7 @@ public class FixedCommandModule implements CommandModule { return; } - String msg = LangManager.getText(Lang.FIXED_LIST_SUCCESS); + String msg = ""; boolean first = true; for (int id : ids) { if (!first) msg += ", "; @@ -245,7 +245,7 @@ public class FixedCommandModule implements CommandModule { msg += id; } - LangManager.sendCustomMessage(p, msg); + LangManager.sendMessage(p, Lang.FIXED_LIST_SUCCESS, msg); } else if (cmd.equalsIgnoreCase("info")) { if (args.length < 1) { LangManager.sendMessage(p, Lang.FIXED_INFO_NO_ARGS); diff --git a/src/com/esophose/playerparticles/command/GUICommandModule.java b/src/com/esophose/playerparticles/command/GUICommandModule.java index 3ca6d40..75db6d9 100644 --- a/src/com/esophose/playerparticles/command/GUICommandModule.java +++ b/src/com/esophose/playerparticles/command/GUICommandModule.java @@ -26,7 +26,7 @@ public class GUICommandModule implements CommandModule { return; } - if (PermissionManager.getEffectsUserHasPermissionFor(pplayer.getPlayer()).size() == 1) { + if (PermissionManager.getEffectsUserHasPermissionFor(pplayer.getPlayer()).isEmpty()) { if (byDefault) { LangManager.sendMessage(pplayer, Lang.COMMAND_ERROR_UNKNOWN); } else { diff --git a/src/com/esophose/playerparticles/command/GroupCommandModule.java b/src/com/esophose/playerparticles/command/GroupCommandModule.java index 8bdd17d..927f67f 100644 --- a/src/com/esophose/playerparticles/command/GroupCommandModule.java +++ b/src/com/esophose/playerparticles/command/GroupCommandModule.java @@ -8,7 +8,7 @@ import com.esophose.playerparticles.particles.PPlayer; public class GroupCommandModule implements CommandModule { public void onCommandExecute(PPlayer pplayer, String[] args) { - + } public List onTabComplete(PPlayer pplayer, String[] args) { diff --git a/src/com/esophose/playerparticles/command/HelpCommandModule.java b/src/com/esophose/playerparticles/command/HelpCommandModule.java index fb85a9c..877ce06 100644 --- a/src/com/esophose/playerparticles/command/HelpCommandModule.java +++ b/src/com/esophose/playerparticles/command/HelpCommandModule.java @@ -8,6 +8,7 @@ import com.esophose.playerparticles.particles.PPlayer; public class HelpCommandModule implements CommandModule { public void onCommandExecute(PPlayer pplayer, String[] args) { + // TODO: Add pages, there are a lot of commands List cmds = ParticleCommandHandler.getCommands(); for (CommandModule cmd : cmds) { CommandModule.printUsageWithDescription(pplayer, cmd); diff --git a/src/com/esophose/playerparticles/command/InfoCommandModule.java b/src/com/esophose/playerparticles/command/InfoCommandModule.java deleted file mode 100644 index eb497f1..0000000 --- a/src/com/esophose/playerparticles/command/InfoCommandModule.java +++ /dev/null @@ -1,34 +0,0 @@ -package com.esophose.playerparticles.command; - -import java.util.List; - -import com.esophose.playerparticles.manager.LangManager.Lang; -import com.esophose.playerparticles.particles.PPlayer; - -public class InfoCommandModule implements CommandModule { - - public void onCommandExecute(PPlayer pplayer, String[] args) { - - } - - public List onTabComplete(PPlayer pplayer, String[] args) { - return null; - } - - public String getName() { - return "info"; - } - - public Lang getDescription() { - return Lang.COMMAND_DESCRIPTION_INFO; - } - - public String getArguments() { - return ""; - } - - public boolean requiresEffects() { - return true; - } - -} diff --git a/src/com/esophose/playerparticles/command/ListCommandModule.java b/src/com/esophose/playerparticles/command/ListCommandModule.java index 724ae6a..ec751f0 100644 --- a/src/com/esophose/playerparticles/command/ListCommandModule.java +++ b/src/com/esophose/playerparticles/command/ListCommandModule.java @@ -2,13 +2,29 @@ package com.esophose.playerparticles.command; import java.util.List; +import com.esophose.playerparticles.manager.LangManager; import com.esophose.playerparticles.manager.LangManager.Lang; import com.esophose.playerparticles.particles.PPlayer; +import com.esophose.playerparticles.particles.ParticlePair; public class ListCommandModule implements CommandModule { public void onCommandExecute(PPlayer pplayer, String[] args) { - + List particles = pplayer.getActiveParticles(); + + if (particles.isEmpty()) { + LangManager.sendMessage(pplayer, Lang.COMMAND_LIST_NONE); + return; + } + + LangManager.sendMessage(pplayer, Lang.COMMAND_LIST_YOU_HAVE); + for (ParticlePair particle : particles) { + int id = particle.getId(); + String effect = particle.getEffect().getName(); + String style = particle.getStyle().getName(); + String data = particle.getDataString(); + LangManager.sendMessage(pplayer, Lang.COMMAND_LIST_OUTPUT, id, effect, style, data); + } } public List onTabComplete(PPlayer pplayer, String[] args) { diff --git a/src/com/esophose/playerparticles/command/ParticleCommandHandler.java b/src/com/esophose/playerparticles/command/ParticleCommandHandler.java index 6cc0590..843ccf7 100644 --- a/src/com/esophose/playerparticles/command/ParticleCommandHandler.java +++ b/src/com/esophose/playerparticles/command/ParticleCommandHandler.java @@ -35,7 +35,6 @@ public class ParticleCommandHandler implements CommandExecutor, TabCompleter { commands.add(new GroupCommandModule()); commands.add(new GUICommandModule()); commands.add(new HelpCommandModule()); - commands.add(new InfoCommandModule()); commands.add(new ListCommandModule()); commands.add(new RemoveCommandModule()); commands.add(new ResetCommandModule()); @@ -98,7 +97,7 @@ public class ParticleCommandHandler implements CommandExecutor, TabCompleter { CommandModule commandModule = findMatchingCommand(commandName); if (commandModule != null) { - if (commandModule.requiresEffects() && PermissionManager.getEffectsUserHasPermissionFor(p).size() == 1) { + if (commandModule.requiresEffects() && PermissionManager.getEffectsUserHasPermissionFor(p).isEmpty()) { LangManager.sendMessage(p, Lang.COMMAND_ERROR_NO_EFFECTS); } else { String[] cmdArgs = new String[0]; diff --git a/src/com/esophose/playerparticles/command/RemoveCommandModule.java b/src/com/esophose/playerparticles/command/RemoveCommandModule.java index e013d92..686751e 100644 --- a/src/com/esophose/playerparticles/command/RemoveCommandModule.java +++ b/src/com/esophose/playerparticles/command/RemoveCommandModule.java @@ -1,18 +1,68 @@ package com.esophose.playerparticles.command; +import java.util.ArrayList; import java.util.List; +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.particles.PPlayer; +import com.esophose.playerparticles.particles.ParticleGroup; +import com.esophose.playerparticles.particles.ParticlePair; public class RemoveCommandModule implements CommandModule { public void onCommandExecute(PPlayer pplayer, String[] args) { - + if (args.length == 0) { + LangManager.sendMessage(pplayer, Lang.COMMAND_REMOVE_NO_ARGS); + return; + } + + int id = -1; + try { + id = Integer.parseInt(args[0]); + } catch (Exception ex) { + LangManager.sendMessage(pplayer, Lang.COMMAND_REMOVE_ARGS_INVALID); + return; + } + + if (id <= 0) { + LangManager.sendMessage(pplayer, Lang.COMMAND_REMOVE_ARGS_INVALID); + return; + } + + boolean removed = false; + ParticleGroup activeGroup = pplayer.getActiveParticleGroup(); + for (ParticlePair particle : activeGroup.getParticles()) { + if (particle.getId() == id) { + activeGroup.getParticles().remove(particle); + removed = true; + break; + } + } + + if (!removed) { + LangManager.sendMessage(pplayer, Lang.COMMAND_REMOVE_INVALID_ID, id); + return; + } + + DataManager.saveParticleGroup(pplayer.getUniqueId(), activeGroup); + LangManager.sendMessage(pplayer, Lang.COMMAND_REMOVE_SUCCESS, id); } public List onTabComplete(PPlayer pplayer, String[] args) { - return null; + List matches = new ArrayList(); + List ids = new ArrayList(); + + for (ParticlePair particles : pplayer.getActiveParticles()) + ids.add(String.valueOf(particles.getId())); + + if (args.length == 0) return ids; + + StringUtil.copyPartialMatches(args[0], ids, matches); + return matches; } public String getName() { diff --git a/src/com/esophose/playerparticles/command/StylesCommandModule.java b/src/com/esophose/playerparticles/command/StylesCommandModule.java index a3c0943..3068d90 100644 --- a/src/com/esophose/playerparticles/command/StylesCommandModule.java +++ b/src/com/esophose/playerparticles/command/StylesCommandModule.java @@ -5,11 +5,9 @@ import java.util.List; import org.bukkit.entity.Player; import com.esophose.playerparticles.manager.LangManager; -import com.esophose.playerparticles.manager.PermissionManager; import com.esophose.playerparticles.manager.LangManager.Lang; +import com.esophose.playerparticles.manager.PermissionManager; import com.esophose.playerparticles.particles.PPlayer; -import com.esophose.playerparticles.styles.api.ParticleStyle; -import com.esophose.playerparticles.styles.api.ParticleStyleManager; public class StylesCommandModule implements CommandModule { @@ -17,18 +15,11 @@ public class StylesCommandModule implements CommandModule { Player p = pplayer.getPlayer(); List styleNames = PermissionManager.getStylesUserHasPermissionFor(p); - if (styleNames.size() == 1) { - LangManager.sendMessage(pplayer, Lang.STYLE_LIST, styleNames.get(0)); - return; - } - String toSend = ""; - for (ParticleStyle style : ParticleStyleManager.getStyles()) { - if (PermissionManager.hasStylePermission(p, style)) { - toSend += style.getName(); - toSend += ", "; - } + for (String name : styleNames) { + toSend += name + ", "; } + if (toSend.endsWith(", ")) { toSend = toSend.substring(0, toSend.length() - 2); } diff --git a/src/com/esophose/playerparticles/gui/PlayerParticlesGui.java b/src/com/esophose/playerparticles/gui/PlayerParticlesGui.java index 030fef4..e7ed14d 100644 --- a/src/com/esophose/playerparticles/gui/PlayerParticlesGui.java +++ b/src/com/esophose/playerparticles/gui/PlayerParticlesGui.java @@ -404,7 +404,7 @@ public class PlayerParticlesGui extends BukkitRunnable implements Listener { public static void changeState(PPlayer pplayer, GuiState state) { Player player = pplayer.getPlayer(); - if ((state == GuiState.EFFECT && PermissionManager.getEffectsUserHasPermissionFor(player).size() == 1) || (state == GuiState.STYLE && PermissionManager.getStylesUserHasPermissionFor(player).size() == 1) || (state == GuiState.DATA && getPPlayerSpawnMaterial(pplayer) == null && getPPlayerSpawnColor(pplayer) == null)) return; + if ((state == GuiState.EFFECT && PermissionManager.getEffectsUserHasPermissionFor(player).isEmpty()) || (state == GuiState.STYLE && PermissionManager.getStylesUserHasPermissionFor(player).size() == 1) || (state == GuiState.DATA && getPPlayerSpawnMaterial(pplayer) == null && getPPlayerSpawnColor(pplayer) == null)) return; // Update the state and create an inventory for the player if one isn't already open for them // If they have the wrong inventory open for some reason, create a new one and open it for them @@ -470,7 +470,7 @@ public class PlayerParticlesGui extends BukkitRunnable implements Listener { ItemMeta effectIconMeta = effectIcon.getItemMeta(); effectIconMeta.setDisplayName(ChatColor.GREEN + "Effect"); effectIconMeta.setLore(Arrays.asList(LangManager.getText(Lang.GUI_ICON_SET_YOUR, "effect"))); - if (PermissionManager.getEffectsUserHasPermissionFor(player).size() == 1) { // Always has access to NONE + if (PermissionManager.getEffectsUserHasPermissionFor(player).isEmpty()) { effectIconMeta.setLore(Arrays.asList(LangManager.getText(Lang.GUI_NO_ACCESS_TO, "effects"))); } effectIcon.setItemMeta(effectIconMeta); @@ -479,7 +479,7 @@ public class PlayerParticlesGui extends BukkitRunnable implements Listener { ItemMeta styleIconMeta = styleIcon.getItemMeta(); styleIconMeta.setDisplayName(ChatColor.GREEN + "Style"); styleIconMeta.setLore(Arrays.asList(LangManager.getText(Lang.GUI_ICON_SET_YOUR, "style"))); - if (PermissionManager.getStylesUserHasPermissionFor(player).size() == 1) { // Always has access to NONE + if (PermissionManager.getStylesUserHasPermissionFor(player).size() == 1) { // Always has access to NORMAL styleIconMeta.setLore(Arrays.asList(LangManager.getText(Lang.GUI_NO_ACCESS_TO, "styles"))); } styleIcon.setItemMeta(styleIconMeta); diff --git a/src/com/esophose/playerparticles/manager/LangManager.java b/src/com/esophose/playerparticles/manager/LangManager.java index 374d449..f4afb71 100644 --- a/src/com/esophose/playerparticles/manager/LangManager.java +++ b/src/com/esophose/playerparticles/manager/LangManager.java @@ -55,6 +55,8 @@ public class LangManager { COMMAND_DESCRIPTION_GROUP_SAVE, COMMAND_DESCRIPTION_GROUP_LOAD, COMMAND_DESCRIPTION_GROUP_REMOVE, + COMMAND_DESCRIPTION_GROUP_LIST, + COMMAND_DESCRIPTION_GROUP_INFO, // Add Command COMMAND_ADD_PARTICLE_APPLIED, @@ -62,6 +64,17 @@ public class LangManager { // Data Command COMMAND_DATA_NO_ARGS, + // Remove Command + COMMAND_REMOVE_NO_ARGS, + COMMAND_REMOVE_ARGS_INVALID, + COMMAND_REMOVE_INVALID_ID, + COMMAND_REMOVE_SUCCESS, + + // List Command + COMMAND_LIST_NONE, + COMMAND_LIST_YOU_HAVE, + COMMAND_LIST_OUTPUT, + // Rainbow RAINBOW, @@ -69,6 +82,7 @@ public class LangManager { EFFECT_NO_PERMISSION, EFFECT_INVALID, EFFECT_LIST, + EFFECT_LIST_EMPTY, // Styles STYLE_NO_PERMISSION, diff --git a/src/lang/default.lang b/src/lang/default.lang index 83a281e..e23b59b 100644 --- a/src/lang/default.lang +++ b/src/lang/default.lang @@ -9,56 +9,70 @@ # ================================================================ # # Command Errors -command-error-no-effects: '&cYou must have access to effects to use this command.' +command-error-no-effects: '&cYou must have access to effects to use this command!' command-error-unknown: '&cUnknown command, use &b/pp help &cfor a list of commands.' # Command Descriptions command-description-add: 'Add a particle to your active particles' command-description-data: 'Check what type of data an effect uses' -command-description-default: 'The main command. By default, opens the GUI.' +command-description-default: 'The main command. By default, opens the GUI' command-description-edit: 'Edit the effect, style, or data of an active particle' command-description-effect: '&cThis command has been removed, use &b/pp help &cto find new commands' command-description-effects: 'Display a list of effects you can use' command-description-fixed: 'Create, edit, and remove fixed particle effects' command-description-group: 'Save, load, and remove your particle groups' command-description-gui: 'Display the GUI for easy editing of particles' -command-description-help: 'Displays the help menu... You have arrived.' +command-description-help: 'Displays the help menu... You have arrived' command-description-info: 'Gets the description of one of your active particles' -command-description-list: 'Lists the ids of your active particles' +command-description-list: 'Lists the IDs of your active particles' command-description-remove: 'Removes one of your active particles' command-description-reset: 'Removes all your active particles' command-description-style: '&cThis command has been removed, use &b/pp help &cto find new commands' command-description-styles: 'Display a list of styles you can use' command-description-version: 'Display the current version of the plugin and the author' -command-description-worlds: 'Find out what worlds particles is disabled in' +command-description-worlds: 'Find out what worlds particles are disabled in' # Sub-Command Usage command-description-fixed-create: '&e/pp fixed create