From 1a85251fc6161a67803df109f3092a0f473f642d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alexander=20S=C3=B6derberg?= Date: Sat, 19 Sep 2020 00:21:27 +0200 Subject: [PATCH] Add Bungee implementation --- .../annotations/AnnotationParser.java | 2 +- .../arguments/standard/ByteArgument.java | 2 +- .../arguments/standard/DoubleArgument.java | 2 +- .../arguments/standard/FloatArgument.java | 2 +- .../arguments/standard/IntegerArgument.java | 2 +- .../arguments/standard/LongArgument.java | 2 +- .../brigadier/CloudBrigadierManager.java | 11 +- .../commands/BukkitTest.java | 5 +- .../commands/{ => bukkit}/BukkitCommand.java | 32 +---- .../{ => bukkit}/BukkitCommandManager.java | 15 ++- .../{ => bukkit}/BukkitCommandMeta.java | 2 +- .../BukkitCommandMetaBuilder.java | 2 +- .../{ => bukkit}/BukkitCommandSender.java | 2 +- .../{ => bukkit}/BukkitConsoleSender.java | 2 +- .../{ => bukkit}/BukkitPlayerSender.java | 2 +- .../BukkitPluginRegistrationHandler.java | 3 +- .../commands/{ => bukkit}/package-info.java | 2 +- .../parsers/MaterialArgument.java | 2 +- .../{ => bukkit}/parsers/WorldArgument.java | 2 +- .../{ => bukkit}/parsers/package-info.java | 2 +- cloud-minecraft/cloud-bungee/pom.xml | 60 +++++++++ .../commands/bungee/BungeeCommand.java | 122 ++++++++++++++++++ .../commands/bungee/BungeeCommandManager.java | 91 +++++++++++++ .../BungeePluginRegistrationHandler.java | 66 ++++++++++ .../commands/bungee/package-info.java | 28 ++++ .../{ => paper}/PaperBrigadierListener.java | 6 +- .../{ => paper}/PaperCommandManager.java | 5 +- .../commands/{ => paper}/package-info.java | 2 +- pom.xml | 1 + 29 files changed, 420 insertions(+), 57 deletions(-) rename cloud-minecraft/cloud-bukkit/src/main/java/com/intellectualsites/commands/{ => bukkit}/BukkitCommand.java (85%) rename cloud-minecraft/cloud-bukkit/src/main/java/com/intellectualsites/commands/{ => bukkit}/BukkitCommandManager.java (90%) rename cloud-minecraft/cloud-bukkit/src/main/java/com/intellectualsites/commands/{ => bukkit}/BukkitCommandMeta.java (97%) rename cloud-minecraft/cloud-bukkit/src/main/java/com/intellectualsites/commands/{ => bukkit}/BukkitCommandMetaBuilder.java (98%) rename cloud-minecraft/cloud-bukkit/src/main/java/com/intellectualsites/commands/{ => bukkit}/BukkitCommandSender.java (98%) rename cloud-minecraft/cloud-bukkit/src/main/java/com/intellectualsites/commands/{ => bukkit}/BukkitConsoleSender.java (97%) rename cloud-minecraft/cloud-bukkit/src/main/java/com/intellectualsites/commands/{ => bukkit}/BukkitPlayerSender.java (97%) rename cloud-minecraft/cloud-bukkit/src/main/java/com/intellectualsites/commands/{ => bukkit}/BukkitPluginRegistrationHandler.java (97%) rename cloud-minecraft/cloud-bukkit/src/main/java/com/intellectualsites/commands/{ => bukkit}/package-info.java (96%) rename cloud-minecraft/cloud-bukkit/src/main/java/com/intellectualsites/commands/{ => bukkit}/parsers/MaterialArgument.java (99%) rename cloud-minecraft/cloud-bukkit/src/main/java/com/intellectualsites/commands/{ => bukkit}/parsers/WorldArgument.java (99%) rename cloud-minecraft/cloud-bukkit/src/main/java/com/intellectualsites/commands/{ => bukkit}/parsers/package-info.java (95%) create mode 100644 cloud-minecraft/cloud-bungee/pom.xml create mode 100644 cloud-minecraft/cloud-bungee/src/main/java/com/intellectualsites/commands/bungee/BungeeCommand.java create mode 100644 cloud-minecraft/cloud-bungee/src/main/java/com/intellectualsites/commands/bungee/BungeeCommandManager.java create mode 100644 cloud-minecraft/cloud-bungee/src/main/java/com/intellectualsites/commands/bungee/BungeePluginRegistrationHandler.java create mode 100644 cloud-minecraft/cloud-bungee/src/main/java/com/intellectualsites/commands/bungee/package-info.java rename cloud-minecraft/cloud-paper/src/main/java/com/intellectualsites/commands/{ => paper}/PaperBrigadierListener.java (97%) rename cloud-minecraft/cloud-paper/src/main/java/com/intellectualsites/commands/{ => paper}/PaperCommandManager.java (93%) rename cloud-minecraft/cloud-paper/src/main/java/com/intellectualsites/commands/{ => paper}/package-info.java (96%) diff --git a/cloud-annotations/src/main/java/com/intellectualsites/commands/annotations/AnnotationParser.java b/cloud-annotations/src/main/java/com/intellectualsites/commands/annotations/AnnotationParser.java index b7026523..f8ad99f2 100644 --- a/cloud-annotations/src/main/java/com/intellectualsites/commands/annotations/AnnotationParser.java +++ b/cloud-annotations/src/main/java/com/intellectualsites/commands/annotations/AnnotationParser.java @@ -52,7 +52,7 @@ import java.util.function.Predicate; import java.util.regex.Pattern; /** - * Parser that parses class instances {@link Command commands} + * Parser that parses class instances {@link com.intellectualsites.commands.Command commands} * * @param Command sender type * @param Command meta type diff --git a/cloud-core/src/main/java/com/intellectualsites/commands/arguments/standard/ByteArgument.java b/cloud-core/src/main/java/com/intellectualsites/commands/arguments/standard/ByteArgument.java index bbea4d2b..28e6a2c3 100644 --- a/cloud-core/src/main/java/com/intellectualsites/commands/arguments/standard/ByteArgument.java +++ b/cloud-core/src/main/java/com/intellectualsites/commands/arguments/standard/ByteArgument.java @@ -26,8 +26,8 @@ package com.intellectualsites.commands.arguments.standard; import com.intellectualsites.commands.arguments.CommandArgument; import com.intellectualsites.commands.arguments.parser.ArgumentParseResult; import com.intellectualsites.commands.arguments.parser.ArgumentParser; -import com.intellectualsites.commands.context.CommandContext; import com.intellectualsites.commands.exceptions.parsing.NumberParseException; +import com.intellectualsites.commands.context.CommandContext; import javax.annotation.Nonnull; import java.util.List; diff --git a/cloud-core/src/main/java/com/intellectualsites/commands/arguments/standard/DoubleArgument.java b/cloud-core/src/main/java/com/intellectualsites/commands/arguments/standard/DoubleArgument.java index f1dc2e12..3fe37840 100644 --- a/cloud-core/src/main/java/com/intellectualsites/commands/arguments/standard/DoubleArgument.java +++ b/cloud-core/src/main/java/com/intellectualsites/commands/arguments/standard/DoubleArgument.java @@ -26,8 +26,8 @@ package com.intellectualsites.commands.arguments.standard; import com.intellectualsites.commands.arguments.CommandArgument; import com.intellectualsites.commands.arguments.parser.ArgumentParseResult; import com.intellectualsites.commands.arguments.parser.ArgumentParser; -import com.intellectualsites.commands.context.CommandContext; import com.intellectualsites.commands.exceptions.parsing.NumberParseException; +import com.intellectualsites.commands.context.CommandContext; import javax.annotation.Nonnull; import java.util.Queue; diff --git a/cloud-core/src/main/java/com/intellectualsites/commands/arguments/standard/FloatArgument.java b/cloud-core/src/main/java/com/intellectualsites/commands/arguments/standard/FloatArgument.java index e5499570..991f1041 100644 --- a/cloud-core/src/main/java/com/intellectualsites/commands/arguments/standard/FloatArgument.java +++ b/cloud-core/src/main/java/com/intellectualsites/commands/arguments/standard/FloatArgument.java @@ -26,8 +26,8 @@ package com.intellectualsites.commands.arguments.standard; import com.intellectualsites.commands.arguments.CommandArgument; import com.intellectualsites.commands.arguments.parser.ArgumentParseResult; import com.intellectualsites.commands.arguments.parser.ArgumentParser; -import com.intellectualsites.commands.context.CommandContext; import com.intellectualsites.commands.exceptions.parsing.NumberParseException; +import com.intellectualsites.commands.context.CommandContext; import javax.annotation.Nonnull; import java.util.Queue; diff --git a/cloud-core/src/main/java/com/intellectualsites/commands/arguments/standard/IntegerArgument.java b/cloud-core/src/main/java/com/intellectualsites/commands/arguments/standard/IntegerArgument.java index dcdb41b0..420eeccb 100644 --- a/cloud-core/src/main/java/com/intellectualsites/commands/arguments/standard/IntegerArgument.java +++ b/cloud-core/src/main/java/com/intellectualsites/commands/arguments/standard/IntegerArgument.java @@ -26,8 +26,8 @@ package com.intellectualsites.commands.arguments.standard; import com.intellectualsites.commands.arguments.CommandArgument; import com.intellectualsites.commands.arguments.parser.ArgumentParseResult; import com.intellectualsites.commands.arguments.parser.ArgumentParser; -import com.intellectualsites.commands.context.CommandContext; import com.intellectualsites.commands.exceptions.parsing.NumberParseException; +import com.intellectualsites.commands.context.CommandContext; import javax.annotation.Nonnull; import java.util.Collections; diff --git a/cloud-core/src/main/java/com/intellectualsites/commands/arguments/standard/LongArgument.java b/cloud-core/src/main/java/com/intellectualsites/commands/arguments/standard/LongArgument.java index 526e5c68..dfe4e9b6 100644 --- a/cloud-core/src/main/java/com/intellectualsites/commands/arguments/standard/LongArgument.java +++ b/cloud-core/src/main/java/com/intellectualsites/commands/arguments/standard/LongArgument.java @@ -26,8 +26,8 @@ package com.intellectualsites.commands.arguments.standard; import com.intellectualsites.commands.arguments.CommandArgument; import com.intellectualsites.commands.arguments.parser.ArgumentParseResult; import com.intellectualsites.commands.arguments.parser.ArgumentParser; -import com.intellectualsites.commands.context.CommandContext; import com.intellectualsites.commands.exceptions.parsing.NumberParseException; +import com.intellectualsites.commands.context.CommandContext; import javax.annotation.Nonnull; import java.util.List; diff --git a/cloud-minecraft/cloud-brigadier/src/main/java/com/intellectualsites/commands/brigadier/CloudBrigadierManager.java b/cloud-minecraft/cloud-brigadier/src/main/java/com/intellectualsites/commands/brigadier/CloudBrigadierManager.java index d17333bc..336b8378 100644 --- a/cloud-minecraft/cloud-brigadier/src/main/java/com/intellectualsites/commands/brigadier/CloudBrigadierManager.java +++ b/cloud-minecraft/cloud-brigadier/src/main/java/com/intellectualsites/commands/brigadier/CloudBrigadierManager.java @@ -25,6 +25,7 @@ package com.intellectualsites.commands.brigadier; import com.google.common.collect.Maps; import com.google.common.reflect.TypeToken; +import com.intellectualsites.commands.Command; import com.intellectualsites.commands.CommandManager; import com.intellectualsites.commands.CommandTree; import com.intellectualsites.commands.arguments.CommandArgument; @@ -36,6 +37,7 @@ import com.intellectualsites.commands.arguments.standard.FloatArgument; import com.intellectualsites.commands.arguments.standard.IntegerArgument; import com.intellectualsites.commands.arguments.standard.ShortArgument; import com.intellectualsites.commands.arguments.standard.StringArgument; +import com.intellectualsites.commands.context.CommandContext; import com.intellectualsites.commands.execution.preprocessor.CommandPreprocessingContext; import com.mojang.brigadier.LiteralMessage; import com.mojang.brigadier.arguments.ArgumentType; @@ -47,7 +49,6 @@ import com.mojang.brigadier.arguments.StringArgumentType; import com.mojang.brigadier.builder.ArgumentBuilder; import com.mojang.brigadier.builder.LiteralArgumentBuilder; import com.mojang.brigadier.builder.RequiredArgumentBuilder; -import com.mojang.brigadier.context.CommandContext; import com.mojang.brigadier.suggestion.SuggestionProvider; import com.mojang.brigadier.suggestion.Suggestions; import com.mojang.brigadier.suggestion.SuggestionsBuilder; @@ -65,7 +66,7 @@ import java.util.function.Function; import java.util.function.Supplier; /** - * Manager used to map cloud {@link com.intellectualsites.commands.Command} + * Manager used to map cloud {@link Command} *

* The structure of this class is largely inspired by * @@ -79,7 +80,7 @@ public final class CloudBrigadierManager { private final Map, Function, ? extends ArgumentType>> mappers; private final Map, Supplier>> defaultArgumentTypeSuppliers; - private final Supplier> dummyContextProvider; + private final Supplier> dummyContextProvider; private final CommandManager commandManager; /** @@ -89,7 +90,7 @@ public final class CloudBrigadierManager { * @param dummyContextProvider Provider of dummy context for completions */ public CloudBrigadierManager(@Nonnull final CommandManager commandManager, - @Nonnull final Supplier> + @Nonnull final Supplier> dummyContextProvider) { this.mappers = Maps.newHashMap(); this.defaultArgumentTypeSuppliers = Maps.newHashMap(); @@ -298,7 +299,7 @@ public final class CloudBrigadierManager { private CompletableFuture buildSuggestions(@Nonnull final CommandArgument argument, @Nonnull final CommandContext s, @Nonnull final SuggestionsBuilder builder) { - final com.intellectualsites.commands.context.CommandContext commandContext = this.dummyContextProvider.get(); + final CommandContext commandContext = this.dummyContextProvider.get(); final LinkedList inputQueue = new LinkedList<>(Collections.singletonList(builder.getInput())); final CommandPreprocessingContext commandPreprocessingContext = new CommandPreprocessingContext<>(commandContext, inputQueue); diff --git a/cloud-minecraft/cloud-bukkit-test/src/main/java/com/intellectualsites/commands/BukkitTest.java b/cloud-minecraft/cloud-bukkit-test/src/main/java/com/intellectualsites/commands/BukkitTest.java index 18b87084..28a9bd6d 100644 --- a/cloud-minecraft/cloud-bukkit-test/src/main/java/com/intellectualsites/commands/BukkitTest.java +++ b/cloud-minecraft/cloud-bukkit-test/src/main/java/com/intellectualsites/commands/BukkitTest.java @@ -37,8 +37,11 @@ import com.intellectualsites.commands.arguments.standard.EnumArgument; import com.intellectualsites.commands.arguments.standard.FloatArgument; import com.intellectualsites.commands.arguments.standard.IntegerArgument; import com.intellectualsites.commands.arguments.standard.StringArgument; +import com.intellectualsites.commands.bukkit.BukkitCommandMeta; +import com.intellectualsites.commands.bukkit.BukkitCommandMetaBuilder; import com.intellectualsites.commands.execution.CommandExecutionCoordinator; -import com.intellectualsites.commands.parsers.WorldArgument; +import com.intellectualsites.commands.paper.PaperCommandManager; +import com.intellectualsites.commands.bukkit.parsers.WorldArgument; import org.bukkit.Bukkit; import org.bukkit.ChatColor; import org.bukkit.GameMode; diff --git a/cloud-minecraft/cloud-bukkit/src/main/java/com/intellectualsites/commands/BukkitCommand.java b/cloud-minecraft/cloud-bukkit/src/main/java/com/intellectualsites/commands/bukkit/BukkitCommand.java similarity index 85% rename from cloud-minecraft/cloud-bukkit/src/main/java/com/intellectualsites/commands/BukkitCommand.java rename to cloud-minecraft/cloud-bukkit/src/main/java/com/intellectualsites/commands/bukkit/BukkitCommand.java index f400a50e..c14c9681 100644 --- a/cloud-minecraft/cloud-bukkit/src/main/java/com/intellectualsites/commands/BukkitCommand.java +++ b/cloud-minecraft/cloud-bukkit/src/main/java/com/intellectualsites/commands/bukkit/BukkitCommand.java @@ -21,8 +21,9 @@ // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE // SOFTWARE. // -package com.intellectualsites.commands; +package com.intellectualsites.commands.bukkit; +import com.intellectualsites.commands.Command; import com.intellectualsites.commands.arguments.CommandArgument; import com.intellectualsites.commands.arguments.StaticArgument; import com.intellectualsites.commands.exceptions.ArgumentParseException; @@ -36,9 +37,7 @@ import org.bukkit.command.PluginIdentifiableCommand; import org.bukkit.plugin.Plugin; import javax.annotation.Nonnull; -import javax.annotation.Nullable; import java.util.List; -import java.util.function.Consumer; final class BukkitCommand extends org.bukkit.command.Command implements PluginIdentifiableCommand { @@ -49,10 +48,10 @@ final class BukkitCommand extends org.bukkit.command.Command implements Plugi private final CommandArgument command; private final BukkitCommandManager bukkitCommandManager; - private final com.intellectualsites.commands.Command cloudCommand; + private final Command cloudCommand; @SuppressWarnings("unchecked") - BukkitCommand(@Nonnull final com.intellectualsites.commands.Command cloudCommand, + BukkitCommand(@Nonnull final Command cloudCommand, @Nonnull final CommandArgument command, @Nonnull final BukkitCommandManager bukkitCommandManager) { super(command.getName(), @@ -88,7 +87,7 @@ final class BukkitCommand extends org.bukkit.command.Command implements Plugi commandSender.sendMessage(MESSAGE_UNKNOWN_COMMAND); } else if (throwable instanceof ArgumentParseException) { commandSender.sendMessage(ChatColor.RED + "Invalid Command Argument: " - + ChatColor.GRAY + throwable.getCause().getMessage()); + + ChatColor.GRAY + throwable.getCause().getMessage()); } else { commandSender.sendMessage(throwable.getMessage()); throwable.printStackTrace(); @@ -124,25 +123,4 @@ final class BukkitCommand extends org.bukkit.command.Command implements Plugi return this.cloudCommand.getCommandPermission(); } - @Nullable - private E captureException(@Nonnull final Class clazz, @Nullable final Throwable throwable) { - if (throwable == null) { - return null; - } - if (clazz.equals(throwable.getClass())) { - //noinspection unchecked - return (E) throwable; - } - return captureException(clazz, throwable.getCause()); - } - - private boolean handleException(@Nullable final E throwable, - @Nonnull final Consumer consumer) { - if (throwable == null) { - return false; - } - consumer.accept(throwable); - return true; - } - } diff --git a/cloud-minecraft/cloud-bukkit/src/main/java/com/intellectualsites/commands/BukkitCommandManager.java b/cloud-minecraft/cloud-bukkit/src/main/java/com/intellectualsites/commands/bukkit/BukkitCommandManager.java similarity index 90% rename from cloud-minecraft/cloud-bukkit/src/main/java/com/intellectualsites/commands/BukkitCommandManager.java rename to cloud-minecraft/cloud-bukkit/src/main/java/com/intellectualsites/commands/bukkit/BukkitCommandManager.java index 48b29cba..a95e72b9 100644 --- a/cloud-minecraft/cloud-bukkit/src/main/java/com/intellectualsites/commands/BukkitCommandManager.java +++ b/cloud-minecraft/cloud-bukkit/src/main/java/com/intellectualsites/commands/bukkit/BukkitCommandManager.java @@ -21,12 +21,14 @@ // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE // SOFTWARE. // -package com.intellectualsites.commands; +package com.intellectualsites.commands.bukkit; import com.google.common.reflect.TypeToken; +import com.intellectualsites.commands.CommandManager; +import com.intellectualsites.commands.CommandTree; +import com.intellectualsites.commands.bukkit.parsers.MaterialArgument; +import com.intellectualsites.commands.bukkit.parsers.WorldArgument; import com.intellectualsites.commands.execution.CommandExecutionCoordinator; -import com.intellectualsites.commands.parsers.MaterialArgument; -import com.intellectualsites.commands.parsers.WorldArgument; import org.bukkit.Material; import org.bukkit.World; import org.bukkit.command.CommandSender; @@ -97,8 +99,13 @@ public class BukkitCommandManager return BukkitCommandMetaBuilder.builder().withDescription("").build(); } + /** + * Get the command sender mapper + * + * @return Command sender mapper + */ @Nonnull - final Function getCommandSenderMapper() { + public final Function getCommandSenderMapper() { return this.commandSenderMapper; } diff --git a/cloud-minecraft/cloud-bukkit/src/main/java/com/intellectualsites/commands/BukkitCommandMeta.java b/cloud-minecraft/cloud-bukkit/src/main/java/com/intellectualsites/commands/bukkit/BukkitCommandMeta.java similarity index 97% rename from cloud-minecraft/cloud-bukkit/src/main/java/com/intellectualsites/commands/BukkitCommandMeta.java rename to cloud-minecraft/cloud-bukkit/src/main/java/com/intellectualsites/commands/bukkit/BukkitCommandMeta.java index 57d25d96..281786bb 100644 --- a/cloud-minecraft/cloud-bukkit/src/main/java/com/intellectualsites/commands/BukkitCommandMeta.java +++ b/cloud-minecraft/cloud-bukkit/src/main/java/com/intellectualsites/commands/bukkit/BukkitCommandMeta.java @@ -21,7 +21,7 @@ // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE // SOFTWARE. // -package com.intellectualsites.commands; +package com.intellectualsites.commands.bukkit; import com.intellectualsites.commands.meta.SimpleCommandMeta; diff --git a/cloud-minecraft/cloud-bukkit/src/main/java/com/intellectualsites/commands/BukkitCommandMetaBuilder.java b/cloud-minecraft/cloud-bukkit/src/main/java/com/intellectualsites/commands/bukkit/BukkitCommandMetaBuilder.java similarity index 98% rename from cloud-minecraft/cloud-bukkit/src/main/java/com/intellectualsites/commands/BukkitCommandMetaBuilder.java rename to cloud-minecraft/cloud-bukkit/src/main/java/com/intellectualsites/commands/bukkit/BukkitCommandMetaBuilder.java index d6d1b63f..2a646dcc 100644 --- a/cloud-minecraft/cloud-bukkit/src/main/java/com/intellectualsites/commands/BukkitCommandMetaBuilder.java +++ b/cloud-minecraft/cloud-bukkit/src/main/java/com/intellectualsites/commands/bukkit/BukkitCommandMetaBuilder.java @@ -21,7 +21,7 @@ // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE // SOFTWARE. // -package com.intellectualsites.commands; +package com.intellectualsites.commands.bukkit; import com.intellectualsites.commands.meta.CommandMeta; diff --git a/cloud-minecraft/cloud-bukkit/src/main/java/com/intellectualsites/commands/BukkitCommandSender.java b/cloud-minecraft/cloud-bukkit/src/main/java/com/intellectualsites/commands/bukkit/BukkitCommandSender.java similarity index 98% rename from cloud-minecraft/cloud-bukkit/src/main/java/com/intellectualsites/commands/BukkitCommandSender.java rename to cloud-minecraft/cloud-bukkit/src/main/java/com/intellectualsites/commands/bukkit/BukkitCommandSender.java index 91de712c..9c4116ad 100644 --- a/cloud-minecraft/cloud-bukkit/src/main/java/com/intellectualsites/commands/BukkitCommandSender.java +++ b/cloud-minecraft/cloud-bukkit/src/main/java/com/intellectualsites/commands/bukkit/BukkitCommandSender.java @@ -21,7 +21,7 @@ // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE // SOFTWARE. // -package com.intellectualsites.commands; +package com.intellectualsites.commands.bukkit; import com.google.common.base.Objects; import org.bukkit.entity.Player; diff --git a/cloud-minecraft/cloud-bukkit/src/main/java/com/intellectualsites/commands/BukkitConsoleSender.java b/cloud-minecraft/cloud-bukkit/src/main/java/com/intellectualsites/commands/bukkit/BukkitConsoleSender.java similarity index 97% rename from cloud-minecraft/cloud-bukkit/src/main/java/com/intellectualsites/commands/BukkitConsoleSender.java rename to cloud-minecraft/cloud-bukkit/src/main/java/com/intellectualsites/commands/bukkit/BukkitConsoleSender.java index fa8576e3..9cda9525 100644 --- a/cloud-minecraft/cloud-bukkit/src/main/java/com/intellectualsites/commands/BukkitConsoleSender.java +++ b/cloud-minecraft/cloud-bukkit/src/main/java/com/intellectualsites/commands/bukkit/BukkitConsoleSender.java @@ -21,7 +21,7 @@ // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE // SOFTWARE. // -package com.intellectualsites.commands; +package com.intellectualsites.commands.bukkit; import org.bukkit.Bukkit; import org.bukkit.entity.Player; diff --git a/cloud-minecraft/cloud-bukkit/src/main/java/com/intellectualsites/commands/BukkitPlayerSender.java b/cloud-minecraft/cloud-bukkit/src/main/java/com/intellectualsites/commands/bukkit/BukkitPlayerSender.java similarity index 97% rename from cloud-minecraft/cloud-bukkit/src/main/java/com/intellectualsites/commands/BukkitPlayerSender.java rename to cloud-minecraft/cloud-bukkit/src/main/java/com/intellectualsites/commands/bukkit/BukkitPlayerSender.java index f2a83202..53be9e3c 100644 --- a/cloud-minecraft/cloud-bukkit/src/main/java/com/intellectualsites/commands/BukkitPlayerSender.java +++ b/cloud-minecraft/cloud-bukkit/src/main/java/com/intellectualsites/commands/bukkit/BukkitPlayerSender.java @@ -21,7 +21,7 @@ // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE // SOFTWARE. // -package com.intellectualsites.commands; +package com.intellectualsites.commands.bukkit; import org.bukkit.entity.Player; diff --git a/cloud-minecraft/cloud-bukkit/src/main/java/com/intellectualsites/commands/BukkitPluginRegistrationHandler.java b/cloud-minecraft/cloud-bukkit/src/main/java/com/intellectualsites/commands/bukkit/BukkitPluginRegistrationHandler.java similarity index 97% rename from cloud-minecraft/cloud-bukkit/src/main/java/com/intellectualsites/commands/BukkitPluginRegistrationHandler.java rename to cloud-minecraft/cloud-bukkit/src/main/java/com/intellectualsites/commands/bukkit/BukkitPluginRegistrationHandler.java index 320939ca..f7fbe294 100644 --- a/cloud-minecraft/cloud-bukkit/src/main/java/com/intellectualsites/commands/BukkitPluginRegistrationHandler.java +++ b/cloud-minecraft/cloud-bukkit/src/main/java/com/intellectualsites/commands/bukkit/BukkitPluginRegistrationHandler.java @@ -21,8 +21,9 @@ // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE // SOFTWARE. // -package com.intellectualsites.commands; +package com.intellectualsites.commands.bukkit; +import com.intellectualsites.commands.Command; import com.intellectualsites.commands.arguments.CommandArgument; import com.intellectualsites.commands.internal.CommandRegistrationHandler; import org.bukkit.Bukkit; diff --git a/cloud-minecraft/cloud-bukkit/src/main/java/com/intellectualsites/commands/package-info.java b/cloud-minecraft/cloud-bukkit/src/main/java/com/intellectualsites/commands/bukkit/package-info.java similarity index 96% rename from cloud-minecraft/cloud-bukkit/src/main/java/com/intellectualsites/commands/package-info.java rename to cloud-minecraft/cloud-bukkit/src/main/java/com/intellectualsites/commands/bukkit/package-info.java index ca5dc2b1..ea8415f2 100644 --- a/cloud-minecraft/cloud-bukkit/src/main/java/com/intellectualsites/commands/package-info.java +++ b/cloud-minecraft/cloud-bukkit/src/main/java/com/intellectualsites/commands/bukkit/package-info.java @@ -25,4 +25,4 @@ /** * cloud implementation for Bukkit 1.8-1.16 */ -package com.intellectualsites.commands; +package com.intellectualsites.commands.bukkit; diff --git a/cloud-minecraft/cloud-bukkit/src/main/java/com/intellectualsites/commands/parsers/MaterialArgument.java b/cloud-minecraft/cloud-bukkit/src/main/java/com/intellectualsites/commands/bukkit/parsers/MaterialArgument.java similarity index 99% rename from cloud-minecraft/cloud-bukkit/src/main/java/com/intellectualsites/commands/parsers/MaterialArgument.java rename to cloud-minecraft/cloud-bukkit/src/main/java/com/intellectualsites/commands/bukkit/parsers/MaterialArgument.java index 3b389fdb..b812c2c3 100644 --- a/cloud-minecraft/cloud-bukkit/src/main/java/com/intellectualsites/commands/parsers/MaterialArgument.java +++ b/cloud-minecraft/cloud-bukkit/src/main/java/com/intellectualsites/commands/bukkit/parsers/MaterialArgument.java @@ -21,7 +21,7 @@ // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE // SOFTWARE. // -package com.intellectualsites.commands.parsers; +package com.intellectualsites.commands.bukkit.parsers; import com.intellectualsites.commands.arguments.CommandArgument; import com.intellectualsites.commands.arguments.parser.ArgumentParseResult; diff --git a/cloud-minecraft/cloud-bukkit/src/main/java/com/intellectualsites/commands/parsers/WorldArgument.java b/cloud-minecraft/cloud-bukkit/src/main/java/com/intellectualsites/commands/bukkit/parsers/WorldArgument.java similarity index 99% rename from cloud-minecraft/cloud-bukkit/src/main/java/com/intellectualsites/commands/parsers/WorldArgument.java rename to cloud-minecraft/cloud-bukkit/src/main/java/com/intellectualsites/commands/bukkit/parsers/WorldArgument.java index 7be47a85..81bc75ce 100644 --- a/cloud-minecraft/cloud-bukkit/src/main/java/com/intellectualsites/commands/parsers/WorldArgument.java +++ b/cloud-minecraft/cloud-bukkit/src/main/java/com/intellectualsites/commands/bukkit/parsers/WorldArgument.java @@ -21,7 +21,7 @@ // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE // SOFTWARE. // -package com.intellectualsites.commands.parsers; +package com.intellectualsites.commands.bukkit.parsers; import com.intellectualsites.commands.arguments.CommandArgument; import com.intellectualsites.commands.arguments.parser.ArgumentParseResult; diff --git a/cloud-minecraft/cloud-bukkit/src/main/java/com/intellectualsites/commands/parsers/package-info.java b/cloud-minecraft/cloud-bukkit/src/main/java/com/intellectualsites/commands/bukkit/parsers/package-info.java similarity index 95% rename from cloud-minecraft/cloud-bukkit/src/main/java/com/intellectualsites/commands/parsers/package-info.java rename to cloud-minecraft/cloud-bukkit/src/main/java/com/intellectualsites/commands/bukkit/parsers/package-info.java index d29d0e41..a13f91aa 100644 --- a/cloud-minecraft/cloud-bukkit/src/main/java/com/intellectualsites/commands/parsers/package-info.java +++ b/cloud-minecraft/cloud-bukkit/src/main/java/com/intellectualsites/commands/bukkit/parsers/package-info.java @@ -25,4 +25,4 @@ /** * Bukkit specific command arguments */ -package com.intellectualsites.commands.parsers; +package com.intellectualsites.commands.bukkit.parsers; diff --git a/cloud-minecraft/cloud-bungee/pom.xml b/cloud-minecraft/cloud-bungee/pom.xml new file mode 100644 index 00000000..19cf119c --- /dev/null +++ b/cloud-minecraft/cloud-bungee/pom.xml @@ -0,0 +1,60 @@ + + + + + + cloud + com.intellectualsites + 1.0-SNAPSHOT + ../../pom.xml + + 4.0.0 + + cloud-bungee + + + + bungeecord-repo + https://oss.sonatype.org/content/repositories/snapshots + + + + + + net.md-5 + bungeecord-api + 1.8-SNAPSHOT + + + com.intellectualsites + cloud-core + 1.0-SNAPSHOT + + + diff --git a/cloud-minecraft/cloud-bungee/src/main/java/com/intellectualsites/commands/bungee/BungeeCommand.java b/cloud-minecraft/cloud-bungee/src/main/java/com/intellectualsites/commands/bungee/BungeeCommand.java new file mode 100644 index 00000000..d8c0e110 --- /dev/null +++ b/cloud-minecraft/cloud-bungee/src/main/java/com/intellectualsites/commands/bungee/BungeeCommand.java @@ -0,0 +1,122 @@ +// +// MIT License +// +// Copyright (c) 2020 Alexander Söderberg +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in all +// copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. +// +package com.intellectualsites.commands.bungee; + +import com.intellectualsites.commands.arguments.CommandArgument; +import com.intellectualsites.commands.arguments.StaticArgument; +import com.intellectualsites.commands.exceptions.ArgumentParseException; +import com.intellectualsites.commands.exceptions.InvalidCommandSenderException; +import com.intellectualsites.commands.exceptions.InvalidSyntaxException; +import com.intellectualsites.commands.exceptions.NoPermissionException; +import com.intellectualsites.commands.exceptions.NoSuchCommandException; +import com.intellectualsites.commands.meta.SimpleCommandMeta; +import net.md_5.bungee.api.ChatColor; +import net.md_5.bungee.api.CommandSender; +import net.md_5.bungee.api.chat.ComponentBuilder; +import net.md_5.bungee.api.plugin.Command; +import net.md_5.bungee.api.plugin.TabExecutor; + +import javax.annotation.Nonnull; + +public final class BungeeCommand extends Command implements TabExecutor { + + private static final String MESSAGE_NO_PERMS = + "I'm sorry, but you do not have permission to perform this command. " + + "Please contact the server administrators if you believe that this is in error."; + private static final String MESSAGE_UNKNOWN_COMMAND = "Unknown command. Type \"/help\" for help."; + + private final BungeeCommandManager bungeeCommandManager; + private final CommandArgument command; + private final com.intellectualsites.commands.Command cloudCommand; + + @SuppressWarnings("unchecked") + BungeeCommand(@Nonnull final com.intellectualsites.commands.Command cloudCommand, + @Nonnull final CommandArgument command, + @Nonnull final BungeeCommandManager bungeeCommandManager) { + super(command.getName(), + cloudCommand.getCommandPermission(), + ((StaticArgument) command).getAlternativeAliases().toArray(new String[0])); + this.command = command; + this.bungeeCommandManager = bungeeCommandManager; + this.cloudCommand = cloudCommand; + } + + @Override + public void execute(final CommandSender commandSender, final String[] strings) { + /* Join input */ + final StringBuilder builder = new StringBuilder(this.command.getName()); + for (final String string : strings) { + builder.append(" ").append(string); + } + this.bungeeCommandManager.executeCommand(this.bungeeCommandManager.getCommandSenderMapper().apply(commandSender), + builder.toString()) + .whenComplete(((commandResult, throwable) -> { + if (throwable != null) { + if (throwable instanceof InvalidSyntaxException) { + commandSender.sendMessage( + new ComponentBuilder("Invalid Command Syntax. Correct command syntax is: ") + .color(ChatColor.RED) + .append("/") + .color(ChatColor.GRAY) + .append(((InvalidSyntaxException) throwable).getCorrectSyntax()) + .color(ChatColor.GRAY) + .create() + ); + } else if (throwable instanceof InvalidCommandSenderException) { + commandSender.sendMessage(new ComponentBuilder(throwable.getMessage()) + .color(ChatColor.RED) + .create()); + } else if (throwable instanceof NoPermissionException) { + commandSender.sendMessage(new ComponentBuilder(MESSAGE_NO_PERMS) + .color(ChatColor.WHITE) + .create()); + } else if (throwable instanceof NoSuchCommandException) { + commandSender.sendMessage(new ComponentBuilder(MESSAGE_UNKNOWN_COMMAND) + .color(ChatColor.WHITE) + .create()); + } else if (throwable instanceof ArgumentParseException) { + commandSender.sendMessage(new ComponentBuilder("Invalid Command Argument: ") + .color(ChatColor.GRAY) + .append(throwable.getCause().getMessage()) + .create()); + } else { + commandSender.sendMessage(new ComponentBuilder(throwable.getMessage()).create()); + throwable.printStackTrace(); + } + } + })); + } + + @Override + public Iterable onTabComplete(final CommandSender sender, + final String[] args) { + final StringBuilder builder = new StringBuilder(this.command.getName()); + for (final String string : args) { + builder.append(" ").append(string); + } + return this.bungeeCommandManager.suggest(this.bungeeCommandManager.getCommandSenderMapper().apply(sender), + builder.toString()); + } + +} diff --git a/cloud-minecraft/cloud-bungee/src/main/java/com/intellectualsites/commands/bungee/BungeeCommandManager.java b/cloud-minecraft/cloud-bungee/src/main/java/com/intellectualsites/commands/bungee/BungeeCommandManager.java new file mode 100644 index 00000000..68f78ad8 --- /dev/null +++ b/cloud-minecraft/cloud-bungee/src/main/java/com/intellectualsites/commands/bungee/BungeeCommandManager.java @@ -0,0 +1,91 @@ +// +// MIT License +// +// Copyright (c) 2020 Alexander Söderberg +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in all +// copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. +// +package com.intellectualsites.commands.bungee; + +import com.intellectualsites.commands.CommandManager; +import com.intellectualsites.commands.CommandTree; +import com.intellectualsites.commands.execution.CommandExecutionCoordinator; +import com.intellectualsites.commands.meta.SimpleCommandMeta; +import net.md_5.bungee.api.CommandSender; +import net.md_5.bungee.api.plugin.Plugin; + +import javax.annotation.Nonnull; +import java.util.function.Function; + +public class BungeeCommandManager extends CommandManager { + + private final Plugin owningPlugin; + private final Function commandSenderMapper; + private final Function backwardsCommandSenderMapper; + + /** + * Construct a new Bukkit command manager + * + * @param owningPlugin Plugin that is constructing the manager + * @param commandExecutionCoordinator Coordinator provider + * @param commandSenderMapper Function that maps {@link CommandSender} to the command sender type + * @param backwardsCommandSenderMapper Function that maps the command sender type to {@link CommandSender} + * @throws Exception If the construction of the manager fails + */ + public BungeeCommandManager(@Nonnull final Plugin owningPlugin, + @Nonnull final Function, + CommandExecutionCoordinator> commandExecutionCoordinator, + @Nonnull final Function commandSenderMapper, + @Nonnull final Function backwardsCommandSenderMapper) + throws Exception { + super(commandExecutionCoordinator, new BungeePluginRegistrationHandler<>()); + ((BungeePluginRegistrationHandler) this.getCommandRegistrationHandler()).initialize(this); + this.owningPlugin = owningPlugin; + this.commandSenderMapper = commandSenderMapper; + this.backwardsCommandSenderMapper = backwardsCommandSenderMapper; + } + + @Override + public final boolean hasPermission(@Nonnull final C sender, + @Nonnull final String permission) { + return this.backwardsCommandSenderMapper.apply(sender).hasPermission(permission); + } + + @Nonnull + @Override + public final SimpleCommandMeta createDefaultCommandMeta() { + return SimpleCommandMeta.empty(); + } + + @Nonnull + final Function getCommandSenderMapper() { + return this.commandSenderMapper; + } + + /** + * Get the owning plugin + * + * @return Owning plugin + */ + @Nonnull + public Plugin getOwningPlugin() { + return this.owningPlugin; + } + +} diff --git a/cloud-minecraft/cloud-bungee/src/main/java/com/intellectualsites/commands/bungee/BungeePluginRegistrationHandler.java b/cloud-minecraft/cloud-bungee/src/main/java/com/intellectualsites/commands/bungee/BungeePluginRegistrationHandler.java new file mode 100644 index 00000000..4083c618 --- /dev/null +++ b/cloud-minecraft/cloud-bungee/src/main/java/com/intellectualsites/commands/bungee/BungeePluginRegistrationHandler.java @@ -0,0 +1,66 @@ +// +// MIT License +// +// Copyright (c) 2020 Alexander Söderberg +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in all +// copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. +// +package com.intellectualsites.commands.bungee; + +import com.intellectualsites.commands.Command; +import com.intellectualsites.commands.arguments.CommandArgument; +import com.intellectualsites.commands.internal.CommandRegistrationHandler; +import com.intellectualsites.commands.meta.SimpleCommandMeta; + +import javax.annotation.Nonnull; +import java.util.HashMap; +import java.util.Map; + +final class BungeePluginRegistrationHandler implements + CommandRegistrationHandler { + + private final Map, net.md_5.bungee.api.plugin.Command> registeredCommands = new HashMap<>(); + + private BungeeCommandManager bungeeCommandManager; + + BungeePluginRegistrationHandler() { + } + + void initialize(@Nonnull final BungeeCommandManager bungeeCommandManager) { + this.bungeeCommandManager = bungeeCommandManager; + } + + @Override + public boolean registerCommand(@Nonnull final Command command) { + /* We only care about the root command argument */ + final CommandArgument commandArgument = command.getArguments().get(0); + if (this.registeredCommands.containsKey(commandArgument)) { + return false; + } + @SuppressWarnings("unchecked") final BungeeCommand bungeeCommand = new BungeeCommand<>( + (Command) command, + (CommandArgument) commandArgument, + this.bungeeCommandManager); + this.registeredCommands.put(commandArgument, bungeeCommand); + this.bungeeCommandManager.getOwningPlugin().getProxy().getPluginManager() + .registerCommand(this.bungeeCommandManager.getOwningPlugin(), bungeeCommand); + return true; + } + +} diff --git a/cloud-minecraft/cloud-bungee/src/main/java/com/intellectualsites/commands/bungee/package-info.java b/cloud-minecraft/cloud-bungee/src/main/java/com/intellectualsites/commands/bungee/package-info.java new file mode 100644 index 00000000..acb1f595 --- /dev/null +++ b/cloud-minecraft/cloud-bungee/src/main/java/com/intellectualsites/commands/bungee/package-info.java @@ -0,0 +1,28 @@ +// +// MIT License +// +// Copyright (c) 2020 Alexander Söderberg +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in all +// copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. +// + +/** + * BungeeCord implementation of cloud + */ +package com.intellectualsites.commands.bungee; diff --git a/cloud-minecraft/cloud-paper/src/main/java/com/intellectualsites/commands/PaperBrigadierListener.java b/cloud-minecraft/cloud-paper/src/main/java/com/intellectualsites/commands/paper/PaperBrigadierListener.java similarity index 97% rename from cloud-minecraft/cloud-paper/src/main/java/com/intellectualsites/commands/PaperBrigadierListener.java rename to cloud-minecraft/cloud-paper/src/main/java/com/intellectualsites/commands/paper/PaperBrigadierListener.java index a4c6245b..614a8f53 100644 --- a/cloud-minecraft/cloud-paper/src/main/java/com/intellectualsites/commands/PaperBrigadierListener.java +++ b/cloud-minecraft/cloud-paper/src/main/java/com/intellectualsites/commands/paper/PaperBrigadierListener.java @@ -21,12 +21,14 @@ // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE // SOFTWARE. // -package com.intellectualsites.commands; +package com.intellectualsites.commands.paper; import com.destroystokyo.paper.brigadier.BukkitBrigadierCommandSource; import com.destroystokyo.paper.event.brigadier.CommandRegisteredEvent; -import com.intellectualsites.commands.arguments.CommandArgument; +import com.intellectualsites.commands.bukkit.BukkitCommandMeta; +import com.intellectualsites.commands.CommandTree; import com.intellectualsites.commands.brigadier.CloudBrigadierManager; +import com.intellectualsites.commands.arguments.CommandArgument; import com.intellectualsites.commands.context.CommandContext; import com.mojang.brigadier.arguments.ArgumentType; import org.bukkit.Bukkit; diff --git a/cloud-minecraft/cloud-paper/src/main/java/com/intellectualsites/commands/PaperCommandManager.java b/cloud-minecraft/cloud-paper/src/main/java/com/intellectualsites/commands/paper/PaperCommandManager.java similarity index 93% rename from cloud-minecraft/cloud-paper/src/main/java/com/intellectualsites/commands/PaperCommandManager.java rename to cloud-minecraft/cloud-paper/src/main/java/com/intellectualsites/commands/paper/PaperCommandManager.java index 1f3bc9b1..c25c06b9 100644 --- a/cloud-minecraft/cloud-paper/src/main/java/com/intellectualsites/commands/PaperCommandManager.java +++ b/cloud-minecraft/cloud-paper/src/main/java/com/intellectualsites/commands/paper/PaperCommandManager.java @@ -21,8 +21,11 @@ // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE // SOFTWARE. // -package com.intellectualsites.commands; +package com.intellectualsites.commands.paper; +import com.intellectualsites.commands.bukkit.BukkitCommandManager; +import com.intellectualsites.commands.bukkit.BukkitCommandMeta; +import com.intellectualsites.commands.CommandTree; import com.intellectualsites.commands.execution.CommandExecutionCoordinator; import org.bukkit.Bukkit; import org.bukkit.command.CommandSender; diff --git a/cloud-minecraft/cloud-paper/src/main/java/com/intellectualsites/commands/package-info.java b/cloud-minecraft/cloud-paper/src/main/java/com/intellectualsites/commands/paper/package-info.java similarity index 96% rename from cloud-minecraft/cloud-paper/src/main/java/com/intellectualsites/commands/package-info.java rename to cloud-minecraft/cloud-paper/src/main/java/com/intellectualsites/commands/paper/package-info.java index 16035530..b6279446 100644 --- a/cloud-minecraft/cloud-paper/src/main/java/com/intellectualsites/commands/package-info.java +++ b/cloud-minecraft/cloud-paper/src/main/java/com/intellectualsites/commands/paper/package-info.java @@ -25,4 +25,4 @@ /** * Paper specific implementation that extends the Bukkit implementation */ -package com.intellectualsites.commands; +package com.intellectualsites.commands.paper; diff --git a/pom.xml b/pom.xml index 8a6ef31e..29e30dcc 100644 --- a/pom.xml +++ b/pom.xml @@ -17,6 +17,7 @@ cloud-minecraft/cloud-paper cloud-minecraft/cloud-brigadier cloud-annotations + cloud-minecraft/cloud-bungee pom 2020