diff --git a/commands-bukkit/src/main/java/com/intellectualsites/commands/BukkitCommand.java b/commands-bukkit/src/main/java/com/intellectualsites/commands/BukkitCommand.java index b57d64db..32b2274b 100644 --- a/commands-bukkit/src/main/java/com/intellectualsites/commands/BukkitCommand.java +++ b/commands-bukkit/src/main/java/com/intellectualsites/commands/BukkitCommand.java @@ -31,7 +31,7 @@ import org.bukkit.plugin.Plugin; import javax.annotation.Nonnull; import java.util.List; -public class BukkitCommand extends org.bukkit.command.Command implements PluginIdentifiableCommand { +final class BukkitCommand extends org.bukkit.command.Command implements PluginIdentifiableCommand { private final CommandComponent command; private final BukkitCommandManager bukkitCommandManager; diff --git a/commands-bukkit/src/main/java/com/intellectualsites/commands/BukkitCommandManager.java b/commands-bukkit/src/main/java/com/intellectualsites/commands/BukkitCommandManager.java index 421a7554..8573f018 100644 --- a/commands-bukkit/src/main/java/com/intellectualsites/commands/BukkitCommandManager.java +++ b/commands-bukkit/src/main/java/com/intellectualsites/commands/BukkitCommandManager.java @@ -29,10 +29,21 @@ import org.bukkit.plugin.Plugin; import javax.annotation.Nonnull; import java.util.function.Function; +/** + * Command manager for the Bukkit platform, using {@link BukkitCommandSender} as the + * command sender type + */ public class BukkitCommandManager extends CommandManager { private final Plugin owningPlugin; + /** + * Construct a new Bukkit command manager + * + * @param owningPlugin Plugin that is constructing the manager + * @param commandExecutionCoordinator Coordinator provider + * @throws Exception If the construction of the manager fails + */ public BukkitCommandManager(@Nonnull final Plugin owningPlugin, @Nonnull final Function, CommandExecutionCoordinator> commandExecutionCoordinator) @@ -42,6 +53,11 @@ public class BukkitCommandManager extends CommandManager { this.owningPlugin = owningPlugin; } + /** + * Get the plugin that owns the manager + * + * @return Owning plugin + */ @Nonnull public Plugin getOwningPlugin() { return this.owningPlugin; diff --git a/commands-bukkit/src/main/java/com/intellectualsites/commands/BukkitCommandSender.java b/commands-bukkit/src/main/java/com/intellectualsites/commands/BukkitCommandSender.java index c77b1ebd..5ce78f61 100644 --- a/commands-bukkit/src/main/java/com/intellectualsites/commands/BukkitCommandSender.java +++ b/commands-bukkit/src/main/java/com/intellectualsites/commands/BukkitCommandSender.java @@ -29,6 +29,10 @@ import org.bukkit.entity.Player; import javax.annotation.Nonnull; +/** + * Command sender that proxies {@link org.bukkit.command.CommandSender} + * {@inheritDoc} + */ public abstract class BukkitCommandSender implements CommandSender { private final org.bukkit.command.CommandSender internalSender; @@ -37,16 +41,33 @@ public abstract class BukkitCommandSender implements CommandSender { this.internalSender = internalSender; } + /** + * Construct a new {@link BukkitCommandSender} for a {@link Player} + * + * @param player Player instance + * @return Constructed command sender + */ @Nonnull public static BukkitCommandSender player(@Nonnull final Player player) { return new BukkitPlayerSender(player); } + /** + * Construct a new {@link BukkitCommandSender} for the Bukkit console + * + * @return Constructed command sender + */ @Nonnull public static BukkitCommandSender console() { return new BukkitConsoleSender(); } + /** + * Construct a new {@link BukkitCommandSender} from a Bukkit {@link CommandSender} + * + * @param sender Bukkit command sender + * @return Constructed command sender + */ @Nonnull public static BukkitCommandSender of(@Nonnull final org.bukkit.command.CommandSender sender) { if (sender instanceof Player) { @@ -72,13 +93,29 @@ public abstract class BukkitCommandSender implements CommandSender { return Objects.hashCode(internalSender); } + /** + * Get the proxied {@link org.bukkit.command.CommandSender} + * + * @return Proxied command sneder + */ @Nonnull public org.bukkit.command.CommandSender getInternalSender() { return this.internalSender; } + /** + * Check if this sender represents a player + * + * @return {@code true} if this sender represents a player, {@code false} if not + */ public abstract boolean isPlayer(); + /** + * Get this sender as a player. This can only safely be done if {@link #isPlayer()}} + * returns {@code true} + * + * @return Player object + */ @Nonnull public abstract Player asPlayer(); @@ -86,4 +123,14 @@ public abstract class BukkitCommandSender implements CommandSender { public boolean hasPermission(@Nonnull final String permission) { return this.internalSender.hasPermission(permission); } + + /** + * Send a message to the command sender + * + * @param message Message to send + */ + public void sendMessage(@Nonnull final String message) { + this.internalSender.sendMessage(message); + } + } diff --git a/commands-bukkit/src/main/java/com/intellectualsites/commands/BukkitConsoleSender.java b/commands-bukkit/src/main/java/com/intellectualsites/commands/BukkitConsoleSender.java index ebad23f5..51eb1437 100644 --- a/commands-bukkit/src/main/java/com/intellectualsites/commands/BukkitConsoleSender.java +++ b/commands-bukkit/src/main/java/com/intellectualsites/commands/BukkitConsoleSender.java @@ -28,7 +28,7 @@ import org.bukkit.entity.Player; import javax.annotation.Nonnull; -public class BukkitConsoleSender extends BukkitCommandSender { +final class BukkitConsoleSender extends BukkitCommandSender { BukkitConsoleSender() { super(Bukkit.getConsoleSender()); diff --git a/commands-bukkit/src/main/java/com/intellectualsites/commands/BukkitPlayerSender.java b/commands-bukkit/src/main/java/com/intellectualsites/commands/BukkitPlayerSender.java index f81f7c8f..d59ce0fe 100644 --- a/commands-bukkit/src/main/java/com/intellectualsites/commands/BukkitPlayerSender.java +++ b/commands-bukkit/src/main/java/com/intellectualsites/commands/BukkitPlayerSender.java @@ -27,7 +27,7 @@ import org.bukkit.entity.Player; import javax.annotation.Nonnull; -public class BukkitPlayerSender extends BukkitCommandSender { +final class BukkitPlayerSender extends BukkitCommandSender { BukkitPlayerSender(@Nonnull final Player player) { super(player); diff --git a/commands-bukkit/src/main/java/com/intellectualsites/commands/BukkitPluginRegistrationHandler.java b/commands-bukkit/src/main/java/com/intellectualsites/commands/BukkitPluginRegistrationHandler.java index a59e2851..afe2061b 100644 --- a/commands-bukkit/src/main/java/com/intellectualsites/commands/BukkitPluginRegistrationHandler.java +++ b/commands-bukkit/src/main/java/com/intellectualsites/commands/BukkitPluginRegistrationHandler.java @@ -35,7 +35,7 @@ import java.lang.reflect.Method; import java.util.HashMap; import java.util.Map; -public class BukkitPluginRegistrationHandler implements CommandRegistrationHandler { +final class BukkitPluginRegistrationHandler implements CommandRegistrationHandler { private final Map, org.bukkit.command.Command> registeredCommands = new HashMap<>(); @@ -71,8 +71,10 @@ public class BukkitPluginRegistrationHandler implements CommandRegistrationHandl } else { label = commandComponent.getName(); } - this.bukkitCommands.put(label, new BukkitCommand((CommandComponent) commandComponent, - this.bukkitCommandManager)); + final BukkitCommand bukkitCommand = new BukkitCommand((CommandComponent) commandComponent, + this.bukkitCommandManager); + this.bukkitCommands.put(label, bukkitCommand); + this.registeredCommands.put(commandComponent, bukkitCommand); return true; } diff --git a/commands-core/src/main/java/com/intellectualsites/commands/CommandManager.java b/commands-core/src/main/java/com/intellectualsites/commands/CommandManager.java index 3f00e4a6..086271fd 100644 --- a/commands-core/src/main/java/com/intellectualsites/commands/CommandManager.java +++ b/commands-core/src/main/java/com/intellectualsites/commands/CommandManager.java @@ -136,4 +136,15 @@ public abstract class CommandManager { return this.commandRegistrationHandler; } + /** + * Create a new command builder + * + * @param name Command name + * @return Builder instance + */ + @Nonnull + public Command.Builder commandBuilder(@Nonnull final String name) { + return Command.newBuilder(name); + } + }