From b80928184e2dd9fb7ba1b20b4cb72d99e1461b41 Mon Sep 17 00:00:00 2001 From: tastybento Date: Thu, 16 Aug 2018 15:52:23 -0700 Subject: [PATCH] Fixed code smells. --- .../world/bentobox/bentobox/BentoBox.java | 5 +-- .../bentobox/api/addons/AddonClassLoader.java | 3 +- .../api/commands/CompositeCommand.java | 36 ++++++++----------- .../admin/range/AdminRangeDisplayCommand.java | 7 ++-- .../flatfile/FlatFileDatabaseConnector.java | 1 - 5 files changed, 21 insertions(+), 31 deletions(-) diff --git a/src/main/java/world/bentobox/bentobox/BentoBox.java b/src/main/java/world/bentobox/bentobox/BentoBox.java index a2052be46..e21069ed2 100644 --- a/src/main/java/world/bentobox/bentobox/BentoBox.java +++ b/src/main/java/world/bentobox/bentobox/BentoBox.java @@ -39,9 +39,6 @@ public class BentoBox extends JavaPlugin { private PlayersManager playersManager; private IslandsManager islandsManager; - // bStats - private BStats bStats; - // Managers private CommandsManager commandsManager; private LocalesManager localesManager; @@ -89,7 +86,7 @@ public class BentoBox extends JavaPlugin { headGetter = new HeadGetter(this); // Load metrics - bStats = new BStats(this); + BStats bStats = new BStats(this); // Load Notifier notifier = new Notifier(); diff --git a/src/main/java/world/bentobox/bentobox/api/addons/AddonClassLoader.java b/src/main/java/world/bentobox/bentobox/api/addons/AddonClassLoader.java index 3256cb8cb..36c01fe2b 100644 --- a/src/main/java/world/bentobox/bentobox/api/addons/AddonClassLoader.java +++ b/src/main/java/world/bentobox/bentobox/api/addons/AddonClassLoader.java @@ -15,6 +15,7 @@ import org.bukkit.plugin.InvalidDescriptionException; import org.bukkit.util.permissions.DefaultPermissions; import world.bentobox.bentobox.api.addons.AddonDescription.AddonDescriptionBuilder; +import world.bentobox.bentobox.api.addons.exception.InvalidAddonFormatException; import world.bentobox.bentobox.api.addons.exception.InvalidAddonInheritException; import world.bentobox.bentobox.managers.AddonsManager; @@ -43,7 +44,7 @@ public class AddonClassLoader extends URLClassLoader { String mainClass = data.getString("main"); javaClass = Class.forName(mainClass, true, this); if(mainClass.startsWith("world.bentobox.bentobox")){ - throw new Exception("Packages declaration cannot start with 'world.bentobox.bentobox'"); + throw new InvalidAddonFormatException("Packages declaration cannot start with 'world.bentobox.bentobox'"); } } catch (Exception e) { throw new InvalidDescriptionException("Could not load '" + path.getName() + "' in folder '" + path.getParent() + "' - " + e.getMessage()); diff --git a/src/main/java/world/bentobox/bentobox/api/commands/CompositeCommand.java b/src/main/java/world/bentobox/bentobox/api/commands/CompositeCommand.java index 68e2233dc..c7e5d89fd 100644 --- a/src/main/java/world/bentobox/bentobox/api/commands/CompositeCommand.java +++ b/src/main/java/world/bentobox/bentobox/api/commands/CompositeCommand.java @@ -2,6 +2,7 @@ package world.bentobox.bentobox.api.commands; import java.util.ArrayList; import java.util.Arrays; +import java.util.Collection; import java.util.HashMap; import java.util.LinkedHashMap; import java.util.LinkedList; @@ -37,6 +38,8 @@ import world.bentobox.bentobox.util.Util; */ public abstract class CompositeCommand extends Command implements PluginIdentifiableCommand, BentoBoxCommand { + private static final String COMMANDS = "commands."; + private final BentoBox plugin; /** @@ -127,8 +130,8 @@ public abstract class CompositeCommand extends Command implements PluginIdentifi plugin.getCommandsManager().registerCommand(this); } // Default references to description and parameters - setDescription("commands." + label + ".description"); - setParametersHelp("commands." + label + ".parameters"); + setDescription(COMMANDS + label + ".description"); + setParametersHelp(COMMANDS + label + ".parameters"); setup(); if (!getSubCommand("help").isPresent() && !label.equals("help")) { new DefaultHelpCommand(this); @@ -192,8 +195,8 @@ public abstract class CompositeCommand extends Command implements PluginIdentifi p = p.getParent(); index++; } - setDescription("commands." + reference.toString() + ".description"); - setParametersHelp("commands." + reference.toString() + ".parameters"); + setDescription(COMMANDS + reference.toString() + ".description"); + setParametersHelp(COMMANDS + reference.toString() + ".parameters"); setup(); // If this command does not define its own help class, then use the default help command if (!getSubCommand("help").isPresent() && !label.equals("help")) { @@ -569,30 +572,19 @@ public abstract class CompositeCommand extends Command implements PluginIdentifi } // Add any tab completion from the subcommand options.addAll(cmd.tabComplete(User.getInstance(sender), alias, new LinkedList<>(Arrays.asList(args))).orElse(new ArrayList<>())); - // Add any sub-commands automatically if (cmd.hasSubCommands()) { - // Check if subcommands are visible to this sender - for (CompositeCommand subCommand: cmd.getSubCommands().values()) { - if (sender instanceof Player) { - // Player - if (subCommand.getPermission().isEmpty() || sender.hasPermission(subCommand.getPermission()) || sender.isOp()) { - // Permission is okay - options.add(subCommand.getLabel()); - } - } else { - // Console - if (!subCommand.onlyPlayer) { - // Not a player command - options.add(subCommand.getLabel()); - } - } - } + options.addAll(getSubCommandLabels(sender, cmd)); } - String lastArg = args.length != 0 ? args[args.length - 1] : ""; return Util.tabLimit(options, lastArg).stream().sorted().collect(Collectors.toList()); } + private List getSubCommandLabels(CommandSender sender, CompositeCommand cmd) { + return cmd.getSubCommands().values().stream().filter(c -> !c.isOnlyPlayer() || sender.isOp() + || (sender instanceof Player && (c.getPermission().isEmpty() || sender.hasPermission(c.getPermission()))) ) + .map(CompositeCommand::getLabel).collect(Collectors.toList()); + } + /** * Show help * @param command - command that this help is for diff --git a/src/main/java/world/bentobox/bentobox/api/commands/admin/range/AdminRangeDisplayCommand.java b/src/main/java/world/bentobox/bentobox/api/commands/admin/range/AdminRangeDisplayCommand.java index 77f348918..129312429 100644 --- a/src/main/java/world/bentobox/bentobox/api/commands/admin/range/AdminRangeDisplayCommand.java +++ b/src/main/java/world/bentobox/bentobox/api/commands/admin/range/AdminRangeDisplayCommand.java @@ -18,10 +18,11 @@ import world.bentobox.bentobox.api.user.User; */ public class AdminRangeDisplayCommand extends CompositeCommand { + private static final String DISPLAY = "display"; private Map display = new HashMap<>(); public AdminRangeDisplayCommand(CompositeCommand parent) { - super(parent, "display", "show", "hide"); + super(parent, DISPLAY, "show", "hide"); } @Override @@ -40,7 +41,7 @@ public class AdminRangeDisplayCommand extends CompositeCommand { if (!display.containsKey(user)) { switch (label) { - case "display": + case DISPLAY: case "show": showZones(user); break; @@ -53,7 +54,7 @@ public class AdminRangeDisplayCommand extends CompositeCommand { } } else { switch (label) { - case "display": + case DISPLAY: case "hide": hideZones(user); break; diff --git a/src/main/java/world/bentobox/bentobox/database/flatfile/FlatFileDatabaseConnector.java b/src/main/java/world/bentobox/bentobox/database/flatfile/FlatFileDatabaseConnector.java index 06e14b25f..5e696aabf 100644 --- a/src/main/java/world/bentobox/bentobox/database/flatfile/FlatFileDatabaseConnector.java +++ b/src/main/java/world/bentobox/bentobox/database/flatfile/FlatFileDatabaseConnector.java @@ -136,7 +136,6 @@ public class FlatFileDatabaseConnector implements DatabaseConnector { Files.delete(commentedFile.toPath()); } catch (IOException e1) { plugin.logError("Could not comment config file " + file.getName() + " " + e1.getMessage()); - e1.printStackTrace(); } }