9.7.0
December 2024
diff --git a/commandapi-annotations/pom.xml b/commandapi-annotations/pom.xml
index 1017f2b5e6..c5a3e4bd8c 100644
--- a/commandapi-annotations/pom.xml
+++ b/commandapi-annotations/pom.xml
@@ -35,6 +35,7 @@
dev.jorel
commandapi-bukkit-core
${project.version}
+ provided
com.google.auto.service
@@ -49,25 +50,5 @@
provided
-
-
-
- org.apache.maven.plugins
- maven-compiler-plugin
-
-
-
- testCompile
-
-
-
- dev.jorel.commandapi.annotations.Annotations
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/commandapi-codecov/pom.xml b/commandapi-codecov/pom.xml
index c7bd6938e3..8ddbca2cff 100644
--- a/commandapi-codecov/pom.xml
+++ b/commandapi-codecov/pom.xml
@@ -51,7 +51,7 @@
${project.version}
-
+
-
-
+ ${project.version} -->
+
+
diff --git a/commandapi-core/src/main/java/dev/jorel/commandapi/CommandAPIHandler.java b/commandapi-core/src/main/java/dev/jorel/commandapi/CommandAPIHandler.java
index 08ce1a7342..d357ce99a6 100644
--- a/commandapi-core/src/main/java/dev/jorel/commandapi/CommandAPIHandler.java
+++ b/commandapi-core/src/main/java/dev/jorel/commandapi/CommandAPIHandler.java
@@ -926,21 +926,6 @@ public Optional> lookupPreviewable(List path) {
}
}
- /**
- *
- * @param path a list of Strings representing the path (names of command nodes)
- * to (and including) the previewable argument
- * @return Whether a previewable is legacy (non-Adventure) or not
- */
- public boolean lookupPreviewableLegacyStatus(List path) {
- final Previewable, ?> previewable = previewableArguments.get(path);
- if (previewable != null && previewable.getPreview().isPresent()) {
- return previewable.isLegacy();
- } else {
- return true;
- }
- }
-
/////////////////////////
// SECTION: Reflection //
/////////////////////////
diff --git a/commandapi-core/src/main/java/dev/jorel/commandapi/CommandAPIPlatform.java b/commandapi-core/src/main/java/dev/jorel/commandapi/CommandAPIPlatform.java
index f215e37cec..3ff63b67c6 100644
--- a/commandapi-core/src/main/java/dev/jorel/commandapi/CommandAPIPlatform.java
+++ b/commandapi-core/src/main/java/dev/jorel/commandapi/CommandAPIPlatform.java
@@ -32,18 +32,18 @@ public interface CommandAPIPlatform config);
+ void onLoad(CommandAPIConfig> config);
/**
* Platform-specific stuff that should happen when the CommandAPI is enabled,
* such as registering event listeners.
*/
- public abstract void onEnable();
+ void onEnable();
/**
* Platform-specific stuff that should happen when the CommandAPI is disabled.
*/
- public abstract void onDisable();
+ void onDisable();
// Converting between CommandSender, AbstractCommandSender, and Brigadier Sources
@@ -54,7 +54,7 @@ public interface CommandAPIPlatform getSenderForCommand(CommandContext cmdCtx, boolean forceNative);
+ AbstractCommandSender extends CommandSender> getSenderForCommand(CommandContext cmdCtx, boolean forceNative);
/**
* Converts the class used by Brigadier when running commands into an AbstractCommandSender wrapping the platform's CommandSender
@@ -62,7 +62,7 @@ public interface CommandAPIPlatform getCommandSenderFromCommandSource(Source source);
+ AbstractCommandSender extends CommandSender> getCommandSenderFromCommandSource(Source source);
/**
* Converts a CommandSender wrapped in an AbstractCommandSender to an object Brigadier can use when running its commands
@@ -70,7 +70,7 @@ public interface CommandAPIPlatform sender);
+ Source getBrigadierSourceFromCommandSender(AbstractCommandSender extends CommandSender> sender);
/**
* Wraps a CommandSender in an AbstractCommandSender class, the inverse operation to {@link AbstractCommandSender#getSource()}
@@ -78,14 +78,14 @@ public interface CommandAPIPlatform wrapCommandSender(CommandSender sender);
+ AbstractCommandSender extends CommandSender> wrapCommandSender(CommandSender sender);
// Registers a permission. Bukkit's permission system requires permissions to be "registered"
// before they can be used.
- public abstract void registerPermission(String string);
+ void registerPermission(String string);
// Some commands have existing suggestion providers
- public abstract SuggestionProvider getSuggestionProvider(SuggestionProviders suggestionProvider);
+ SuggestionProvider getSuggestionProvider(SuggestionProviders suggestionProvider);
/**
* Stuff to run before a command is generated. For Bukkit, this involves checking
@@ -93,7 +93,7 @@ public interface CommandAPIPlatform resultantNode, List> aliasNodes);
+ void postCommandRegistration(RegisteredCommand registeredCommand, LiteralCommandNode resultantNode, List> aliasNodes);
/**
* Registers a Brigadier command node and returns the built node.
*/
- public abstract LiteralCommandNode registerCommandNode(LiteralArgumentBuilder node, String namespace);
+ LiteralCommandNode registerCommandNode(LiteralArgumentBuilder node, String namespace);
/**
@@ -118,12 +118,12 @@ public interface CommandAPIPlatform getBrigadierDispatcher();
+ CommandDispatcher getBrigadierDispatcher();
/**
* Creates a JSON file that describes the hierarchical structure of the commands
@@ -133,13 +133,13 @@ public interface CommandAPIPlatform dispatcher) throws IOException;
+ void createDispatcherFile(File file, CommandDispatcher dispatcher) throws IOException;
/**
* @return A new default Logger meant for the CommandAPI to use. This logger will be used by the CommandAPI
* if one is not set using {@link CommandAPI#setLogger(CommandAPILogger)}.
*/
- public default CommandAPILogger getLogger() {
+ default CommandAPILogger getLogger() {
return new CommandAPILogger() {
private static final String PREFIX = "[CommandAPI] ";
private static final String YELLOW = "\u001B[33m";
@@ -172,19 +172,19 @@ public void severe(String message, Throwable throwable) {
/**
* Reloads the server's data packs to include CommandAPI commands
*/
- public abstract void reloadDataPacks();
+ void reloadDataPacks();
/**
* Updates the requirements required for a given player to execute a command.
*
* @param player the player to update
*/
- public abstract void updateRequirements(AbstractPlayer> player);
+ void updateRequirements(AbstractPlayer> player);
// Create the concrete instances of objects implemented by the platform
- public abstract AbstractCommandAPICommand, Argument, CommandSender> newConcreteCommandAPICommand(CommandMetaData meta);
+ AbstractCommandAPICommand, Argument, CommandSender> newConcreteCommandAPICommand(CommandMetaData meta);
- public abstract Argument newConcreteMultiLiteralArgument(String nodeName, String[] literals);
+ Argument newConcreteMultiLiteralArgument(String nodeName, String[] literals);
- public abstract Argument newConcreteLiteralArgument(String nodeName, String literal);
+ Argument newConcreteLiteralArgument(String nodeName, String literal);
}
diff --git a/commandapi-core/src/main/java/dev/jorel/commandapi/CommandAPIVersionHandler.java b/commandapi-core/src/main/java/dev/jorel/commandapi/CommandAPIVersionHandler.java
index a28b569b12..d876a6ec55 100644
--- a/commandapi-core/src/main/java/dev/jorel/commandapi/CommandAPIVersionHandler.java
+++ b/commandapi-core/src/main/java/dev/jorel/commandapi/CommandAPIVersionHandler.java
@@ -3,7 +3,7 @@
/**
* This file handles loading the correct platform implementation. The CommandAPIVersionHandler
* file within the commandapi-core module is NOT used at run time. Instead, the platform modules
- * replace this class with their own version that handles loads the correct class for their version.
+ * replace this class with their own version that loads the correct class.
*/
public abstract class CommandAPIVersionHandler {
diff --git a/commandapi-core/src/main/java/dev/jorel/commandapi/arguments/Previewable.java b/commandapi-core/src/main/java/dev/jorel/commandapi/arguments/Previewable.java
index d145a0b956..a69e19e88d 100644
--- a/commandapi-core/src/main/java/dev/jorel/commandapi/arguments/Previewable.java
+++ b/commandapi-core/src/main/java/dev/jorel/commandapi/arguments/Previewable.java
@@ -43,9 +43,4 @@ public interface Previewable
dev.jorel
- commandapi-bukkit-core
+ commandapi-paper-core
${project.version}
dev.jorel
- commandapi-bukkit-kotlin
+ commandapi-spigot-core
+ ${project.version}
+
+
+ dev.jorel
+ commandapi-kotlin-bukkit
${project.version}
diff --git a/commandapi-documentation-code/src/main/java/dev/jorel/commandapi/examples/java/Examples.java b/commandapi-documentation-code/src/main/java/dev/jorel/commandapi/examples/java/Examples.java
index dd5cb39347..2405886d2a 100644
--- a/commandapi-documentation-code/src/main/java/dev/jorel/commandapi/examples/java/Examples.java
+++ b/commandapi-documentation-code/src/main/java/dev/jorel/commandapi/examples/java/Examples.java
@@ -31,32 +31,106 @@
import com.mojang.brigadier.suggestion.Suggestions;
import com.mojang.brigadier.tree.LiteralCommandNode;
import de.tr7zw.changeme.nbtapi.NBTContainer;
-import dev.jorel.commandapi.*;
-import dev.jorel.commandapi.arguments.*;
+import dev.jorel.commandapi.Brigadier;
+import dev.jorel.commandapi.BukkitTooltip;
+import dev.jorel.commandapi.CommandAPI;
+import dev.jorel.commandapi.CommandAPIBukkit;
+import dev.jorel.commandapi.CommandAPICommand;
+import dev.jorel.commandapi.CommandPermission;
+import dev.jorel.commandapi.CommandTree;
+import dev.jorel.commandapi.Converter;
+import dev.jorel.commandapi.IStringTooltip;
+import dev.jorel.commandapi.StringTooltip;
+import dev.jorel.commandapi.arguments.AdvancementArgument;
+import dev.jorel.commandapi.arguments.AngleArgument;
+import dev.jorel.commandapi.arguments.Argument;
+import dev.jorel.commandapi.arguments.ArgumentSuggestions;
+import dev.jorel.commandapi.arguments.BiomeArgument;
+import dev.jorel.commandapi.arguments.BlockPredicateArgument;
+import dev.jorel.commandapi.arguments.BlockStateArgument;
+import dev.jorel.commandapi.arguments.BooleanArgument;
+import dev.jorel.commandapi.arguments.CommandArgument;
+import dev.jorel.commandapi.arguments.CustomArgument;
import dev.jorel.commandapi.arguments.CustomArgument.CustomArgumentException;
import dev.jorel.commandapi.arguments.CustomArgument.MessageBuilder;
+import dev.jorel.commandapi.arguments.DoubleArgument;
+import dev.jorel.commandapi.arguments.EnchantmentArgument;
+import dev.jorel.commandapi.arguments.EntitySelectorArgument;
+import dev.jorel.commandapi.arguments.EntityTypeArgument;
+import dev.jorel.commandapi.arguments.FunctionArgument;
+import dev.jorel.commandapi.arguments.GreedyStringArgument;
+import dev.jorel.commandapi.arguments.IntegerArgument;
+import dev.jorel.commandapi.arguments.IntegerRangeArgument;
+import dev.jorel.commandapi.arguments.ItemStackArgument;
+import dev.jorel.commandapi.arguments.ItemStackPredicateArgument;
+import dev.jorel.commandapi.arguments.ListArgumentBuilder;
+import dev.jorel.commandapi.arguments.LiteralArgument;
+import dev.jorel.commandapi.arguments.LocationArgument;
+import dev.jorel.commandapi.arguments.LocationType;
+import dev.jorel.commandapi.arguments.LootTableArgument;
+import dev.jorel.commandapi.arguments.MapArgumentBuilder;
+import dev.jorel.commandapi.arguments.MathOperationArgument;
+import dev.jorel.commandapi.arguments.MultiLiteralArgument;
+import dev.jorel.commandapi.arguments.NBTCompoundArgument;
+import dev.jorel.commandapi.arguments.ObjectiveArgument;
+import dev.jorel.commandapi.arguments.ObjectiveCriteriaArgument;
+import dev.jorel.commandapi.arguments.ParticleArgument;
+import dev.jorel.commandapi.arguments.PlayerArgument;
+import dev.jorel.commandapi.arguments.PotionEffectArgument;
+import dev.jorel.commandapi.arguments.RecipeArgument;
+import dev.jorel.commandapi.arguments.RotationArgument;
+import dev.jorel.commandapi.arguments.SafeSuggestions;
+import dev.jorel.commandapi.arguments.ScoreHolderArgument;
+import dev.jorel.commandapi.arguments.ScoreboardSlotArgument;
+import dev.jorel.commandapi.arguments.SoundArgument;
+import dev.jorel.commandapi.arguments.StringArgument;
+import dev.jorel.commandapi.arguments.SuggestionsBranch;
+import dev.jorel.commandapi.arguments.TeamArgument;
+import dev.jorel.commandapi.arguments.TextArgument;
+import dev.jorel.commandapi.arguments.TimeArgument;
+import dev.jorel.commandapi.arguments.WorldArgument;
import dev.jorel.commandapi.exceptions.WrapperCommandSyntaxException;
import dev.jorel.commandapi.executors.CommandArguments;
import dev.jorel.commandapi.executors.ExecutorType;
+import dev.jorel.commandapi.wrappers.CommandResult;
+import dev.jorel.commandapi.wrappers.FunctionWrapper;
+import dev.jorel.commandapi.wrappers.IntegerRange;
+import dev.jorel.commandapi.wrappers.MathOperation;
+import dev.jorel.commandapi.wrappers.ParticleData;
import dev.jorel.commandapi.wrappers.Rotation;
-import dev.jorel.commandapi.wrappers.*;
-import net.kyori.adventure.inventory.Book;
+import dev.jorel.commandapi.wrappers.ScoreboardSlot;
import net.kyori.adventure.text.Component;
-import net.kyori.adventure.text.format.NamedTextColor;
import net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer;
import net.kyori.adventure.text.serializer.plain.PlainTextComponentSerializer;
import net.md_5.bungee.api.chat.BaseComponent;
import net.md_5.bungee.api.chat.TextComponent;
-import org.bukkit.*;
+import org.bukkit.Bukkit;
+import org.bukkit.ChatColor;
+import org.bukkit.Chunk;
+import org.bukkit.GameMode;
+import org.bukkit.Location;
+import org.bukkit.Material;
+import org.bukkit.NamespacedKey;
+import org.bukkit.Sound;
+import org.bukkit.World;
import org.bukkit.advancement.Advancement;
import org.bukkit.advancement.AdvancementProgress;
-import org.bukkit.block.*;
+import org.bukkit.block.Biome;
+import org.bukkit.block.Block;
+import org.bukkit.block.BlockState;
+import org.bukkit.block.Chest;
+import org.bukkit.block.Container;
+import org.bukkit.block.Sign;
import org.bukkit.block.data.BlockData;
import org.bukkit.command.CommandSender;
import org.bukkit.command.ProxiedCommandSender;
import org.bukkit.enchantments.Enchantment;
-import org.bukkit.entity.*;
import org.bukkit.help.HelpTopic;
+import org.bukkit.entity.ArmorStand;
+import org.bukkit.entity.Entity;
+import org.bukkit.entity.EntityType;
+import org.bukkit.entity.LivingEntity;
+import org.bukkit.entity.Player;
import org.bukkit.inventory.ComplexRecipe;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.Recipe;
@@ -79,8 +153,17 @@
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
-import java.util.*;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Locale;
+import java.util.Map;
import java.util.Map.Entry;
+import java.util.Set;
+import java.util.UUID;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ThreadLocalRandom;
import java.util.function.Predicate;
@@ -238,96 +321,6 @@ void argument_blockState() {
/* ANCHOR_END: argumentBlockState1 */
}
-void argument_chatAdventure() {
-/* ANCHOR: argumentChatAdventure1 */
-new CommandAPICommand("namecolor")
- .withArguments(new AdventureChatColorArgument("chatcolor"))
- .executesPlayer((player, args) -> {
- NamedTextColor color = (NamedTextColor) args.get("chatcolor");
- player.displayName(Component.text().color(color).append(Component.text(player.getName())).build());
- })
- .register();
-/* ANCHOR_END: argumentChatAdventure1 */
-
-/* ANCHOR: argumentChatAdventure2 */
-new CommandAPICommand("showbook")
- .withArguments(new PlayerArgument("target"))
- .withArguments(new TextArgument("title"))
- .withArguments(new StringArgument("author"))
- .withArguments(new AdventureChatComponentArgument("contents"))
- .executes((sender, args) -> {
- Player target = (Player) args.get("target");
- String title = (String) args.get("title");
- String author = (String) args.get("author");
- Component content = (Component) args.get("contents");
-
- // Create a book and show it to the user (Requires Paper)
- Book mybook = Book.book(Component.text(title), Component.text(author), content);
- target.openBook(mybook);
- })
- .register();
-/* ANCHOR_END: argumentChatAdventure2 */
-
-/* ANCHOR: argumentChatAdventure3 */
-new CommandAPICommand("pbroadcast")
- .withArguments(new AdventureChatArgument("message"))
- .executes((sender, args) -> {
- Component message = (Component) args.get("message");
-
- // Broadcast the message to everyone with broadcast permissions.
- Bukkit.getServer().broadcast(message, Server.BROADCAST_CHANNEL_USERS);
- Bukkit.getServer().broadcast(message);
- })
- .register();
-/* ANCHOR_END: argumentChatAdventure3 */
-}
-
-void argument_chatSpigot() {
-/* ANCHOR: argumentChatSpigot1 */
-new CommandAPICommand("namecolor")
- .withArguments(new ChatColorArgument("chatcolor"))
- .executesPlayer((player, args) -> {
- ChatColor color = (ChatColor) args.get("chatcolor");
- player.setDisplayName(color + player.getName());
- })
- .register();
-/* ANCHOR_END: argumentChatSpigot1 */
-
-/* ANCHOR: argumentChatSpigot2 */
-new CommandAPICommand("makebook")
- .withArguments(new PlayerArgument("player"))
- .withArguments(new ChatComponentArgument("contents"))
- .executes((sender, args) -> {
- Player player = (Player) args.get("player");
- BaseComponent[] arr = (BaseComponent[]) args.get("contents");
-
- // Create book
- ItemStack is = new ItemStack(Material.WRITTEN_BOOK);
- BookMeta meta = (BookMeta) is.getItemMeta();
- meta.setTitle("Custom Book");
- meta.setAuthor(player.getName());
- meta.spigot().setPages(arr);
- is.setItemMeta(meta);
-
- // Give player the book
- player.getInventory().addItem(is);
- })
- .register();
-/* ANCHOR_END: argumentChatSpigot2 */
-
-/* ANCHOR: argumentChatSpigot3 */
-new CommandAPICommand("pbroadcast")
- .withArguments(new ChatArgument("message"))
- .executes((sender, args) -> {
- BaseComponent[] message = (BaseComponent[]) args.get("message");
-
- // Broadcast the message to everyone on the server
- Bukkit.getServer().spigot().broadcast(message);
- })
- .register();
-/* ANCHOR_END: argumentChatSpigot3 */
-}
-
void argument_command() {
/* ANCHOR: argumentCommand1 */
new CommandAPICommand("sudo")
@@ -744,29 +737,18 @@ void argument_multiLiteral() {
/* ANCHOR_END: argumentMultiLiteral1 */
}
-class argument_nbt extends JavaPlugin {
-/* ANCHOR: argumentNBT1 */
-@Override
-public void onLoad() {
- CommandAPI.onLoad(new CommandAPIBukkitConfig(this)
- .initializeNBTAPI(NBTContainer.class, NBTContainer::new)
- );
-}
-/* ANCHOR_END: argumentNBT1 */
-
void argument_nbt2() {
/* ANCHOR: argumentNBT2 */
new CommandAPICommand("award")
.withArguments(new NBTCompoundArgument("nbt"))
.executes((sender, args) -> {
NBTContainer nbt = (NBTContainer) args.get("nbt");
-
+
// Do something with "nbt" here...
})
.register();
/* ANCHOR_END: argumentNBT2 */
}
-}
void argument_objectives() {
/* ANCHOR: argumentObjectives1 */
@@ -1297,74 +1279,6 @@ void brigadierSuggestions() {
/* ANCHOR_END: brigadierSuggestions3 */
}
-void chatPreview() {
-/* ANCHOR: chatPreview1 */
-new CommandAPICommand("broadcast")
- .withArguments(new ChatArgument("message").withPreview(info -> {
- // Convert parsed BaseComponent[] to plain text
- String plainText = BaseComponent.toPlainText(info.parsedInput());
-
- // Translate the & in plain text and generate a new BaseComponent[]
- return TextComponent.fromLegacyText(ChatColor.translateAlternateColorCodes('&', plainText));
- }))
- .executesPlayer((player, args) -> {
- // The user still entered legacy text. We need to properly convert this
- // to a BaseComponent[] by converting to plain text then to BaseComponent[]
- String plainText = BaseComponent.toPlainText((BaseComponent[]) args.get("message"));
- Bukkit.spigot().broadcast(TextComponent.fromLegacyText(ChatColor.translateAlternateColorCodes('&', plainText)));
- })
- .register();
-/* ANCHOR_END: chatPreview1 */
-
-/* ANCHOR: chatPreview2 */
-new CommandAPICommand("broadcast")
- .withArguments(new AdventureChatArgument("message").withPreview(info -> {
- // Convert parsed Component to plain text
- String plainText = PlainTextComponentSerializer.plainText().serialize(info.parsedInput());
-
- // Translate the & in plain text and generate a new Component
- return LegacyComponentSerializer.legacyAmpersand().deserialize(plainText);
- }))
- .executesPlayer((player, args) -> {
- // The user still entered legacy text. We need to properly convert this
- // to a Component by converting to plain text then to Component
- String plainText = PlainTextComponentSerializer.plainText().serialize((Component) args.get("broadcast"));
- Bukkit.broadcast(LegacyComponentSerializer.legacyAmpersand().deserialize(plainText));
- })
- .register();
-/* ANCHOR_END: chatPreview2 */
-
-/* ANCHOR: chatPreview3 */
-new CommandAPICommand("broadcast")
- .withArguments(new ChatArgument("message").usePreview(true).withPreview(info -> {
- // Convert parsed BaseComponent[] to plain text
- String plainText = BaseComponent.toPlainText(info.parsedInput());
-
- // Translate the & in plain text and generate a new BaseComponent[]
- return TextComponent.fromLegacyText(ChatColor.translateAlternateColorCodes('&', plainText));
- }))
- .executesPlayer((player, args) -> {
- Bukkit.spigot().broadcast((BaseComponent[]) args.get("message"));
- })
- .register();
-/* ANCHOR_END: chatPreview3 */
-
-/* ANCHOR: chatPreview4 */
-new CommandAPICommand("broadcast")
- .withArguments(new AdventureChatArgument("message").usePreview(true).withPreview(info -> {
- // Convert parsed Component to plain text
- String plainText = PlainTextComponentSerializer.plainText().serialize(info.parsedInput());
-
- // Translate the & in plain text and generate a new Component
- return LegacyComponentSerializer.legacyAmpersand().deserialize(plainText);
- }))
- .executesPlayer((player, args) -> {
- Bukkit.broadcast((Component) args.get("message"));
- })
- .register();
-/* ANCHOR_END: chatPreview4 */
-}
-
void commandArguments() {
/* ANCHOR: commandArguments1 */
new CommandAPICommand("mycommand")
@@ -2328,45 +2242,6 @@ void safeArgumentSuggestions() {
/* ANCHOR_END: safeArgumentSuggestions7 */
}
-class setupShading {
-JavaPlugin plugin = new JavaPlugin() {};
-
-{
-/* ANCHOR: setupShading1 */
-CommandAPI.onLoad(new CommandAPIBukkitConfig(plugin).silentLogs(true));
-/* ANCHOR_END: setupShading1 */
-}
-
-/* ANCHOR: setupShading2 */
-class MyPlugin extends JavaPlugin {
-
- @Override
- public void onLoad() {
- CommandAPI.onLoad(new CommandAPIBukkitConfig(this).verboseOutput(true)); // Load with verbose output
-
- new CommandAPICommand("ping")
- .executes((sender, args) -> {
- sender.sendMessage("pong!");
- })
- .register();
- }
-
- @Override
- public void onEnable() {
- CommandAPI.onEnable();
-
- // Register commands, listeners etc.
- }
-
- @Override
- public void onDisable() {
- CommandAPI.onDisable();
- }
-
-}
-/* ANCHOR_END: setupShading2 */
-}
-
class stringArgumentSuggestions {
{
Map warps = new HashMap<>();
diff --git a/commandapi-documentation-code/src/main/kotlin/dev/jorel/commandapi/examples/kotlin/Examples.kt b/commandapi-documentation-code/src/main/kotlin/dev/jorel/commandapi/examples/kotlin/Examples.kt
index b95e4c92f5..7c1c5baa21 100644
--- a/commandapi-documentation-code/src/main/kotlin/dev/jorel/commandapi/examples/kotlin/Examples.kt
+++ b/commandapi-documentation-code/src/main/kotlin/dev/jorel/commandapi/examples/kotlin/Examples.kt
@@ -14,16 +14,10 @@ import dev.jorel.commandapi.arguments.CustomArgument.CustomArgumentException
import dev.jorel.commandapi.arguments.CustomArgument.MessageBuilder
import dev.jorel.commandapi.exceptions.WrapperCommandSyntaxException
import dev.jorel.commandapi.executors.*
-import dev.jorel.commandapi.kotlindsl.commandAPICommand
import dev.jorel.commandapi.kotlindsl.getValue
-import dev.jorel.commandapi.kotlindsl.playerArgument
-import dev.jorel.commandapi.kotlindsl.playerExecutor
-import dev.jorel.commandapi.kotlindsl.stringArgument
import dev.jorel.commandapi.wrappers.*
import dev.jorel.commandapi.wrappers.Rotation
-import net.kyori.adventure.inventory.Book
import net.kyori.adventure.text.Component
-import net.kyori.adventure.text.format.NamedTextColor
import net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer
import net.kyori.adventure.text.serializer.plain.PlainTextComponentSerializer
import net.md_5.bungee.api.chat.BaseComponent
@@ -57,8 +51,6 @@ import org.bukkit.util.EulerAngle
import java.util.*
import java.util.concurrent.CompletableFuture
import java.util.function.Predicate
-import java.util.function.Supplier
-import kotlin.collections.LinkedHashMap
import kotlin.random.Random
class Examples : JavaPlugin() {
@@ -188,96 +180,6 @@ CommandAPICommand("set")
/* ANCHOR_END: argumentBlockState1 */
}
-fun argument_chatAdventure() {
-/* ANCHOR: argumentChatAdventure1 */
-CommandAPICommand("namecolor")
- .withArguments(AdventureChatColorArgument("chatcolor"))
- .executesPlayer(PlayerCommandExecutor { player, args ->
- val color = args["chatcolor"] as NamedTextColor
- player.displayName(Component.text().color(color).append(Component.text(player.name)).build())
- })
- .register()
-/* ANCHOR_END: argumentChatAdventure1 */
-
-/* ANCHOR: argumentChatAdventure2 */
-CommandAPICommand("showbook")
- .withArguments(PlayerArgument("target"))
- .withArguments(TextArgument("title"))
- .withArguments(StringArgument("author"))
- .withArguments(AdventureChatComponentArgument("contents"))
- .executes(CommandExecutor { _, args ->
- val target = args["target"] as Player
- val title = args["title"] as String
- val author = args["author"] as String
- val content = args["contents"] as Component
-
- // Create a book and show it to the user (Requires Paper)
- val mybook = Book.book(Component.text(title), Component.text(author), content)
- target.openBook(mybook)
- })
- .register()
-/* ANCHOR_END: argumentChatAdventure2 */
-
-/* ANCHOR: argumentChatAdventure3 */
-CommandAPICommand("pbroadcast")
- .withArguments(AdventureChatArgument("message"))
- .executes(CommandExecutor { _, args ->
- val message = args["message"] as Component
-
- // Broadcast the message to everyone with broadcast permissions.
- Bukkit.getServer().broadcast(message, Server.BROADCAST_CHANNEL_USERS)
- Bukkit.getServer().broadcast(message)
- })
- .register()
-/* ANCHOR_END: argumentChatAdventure3 */
-}
-
-fun argument_chatSpigot() {
-/* ANCHOR: argumentChatSpigot1 */
-CommandAPICommand("namecolor")
- .withArguments(ChatColorArgument("chatColor"))
- .executesPlayer(PlayerCommandExecutor { player, args ->
- val color = args["chatColor"] as ChatColor
- player.setDisplayName("$color${player.name}")
- })
- .register()
-/* ANCHOR_END: argumentChatSpigot1 */
-
-/* ANCHOR: argumentChatSpigot2 */
-CommandAPICommand("makebook")
- .withArguments(PlayerArgument("player"))
- .withArguments(ChatComponentArgument("contents"))
- .executes(CommandExecutor { _, args ->
- val player = args["player"] as Player
- val arr = args["contents"] as Array
-
- // Create book
- val item = ItemStack(Material.WRITTEN_BOOK)
- val meta = item.itemMeta as BookMeta
- meta.title = "Custom Book"
- meta.author = player.name
- meta.spigot().setPages(arr)
- item.itemMeta = meta
-
- // Give player the book
- player.inventory.addItem(item)
- })
- .register()
-/* ANCHOR_END: argumentChatSpigot2 */
-
-/* ANCHOR: argumentChatSpigot3 */
-CommandAPICommand("pbroadcast")
- .withArguments(ChatArgument("message"))
- .executes(CommandExecutor { _, args ->
- val message = args["message"] as Array
-
- // Broadcast the message to everyone on the server
- Bukkit.getServer().spigot().broadcast(*message)
- })
- .register()
-/* ANCHOR_END: argumentChatSpigot3 */
-}
-
fun argument_command() {
/* ANCHOR: argumentCommand1 */
CommandAPICommand("sudo")
@@ -674,16 +576,6 @@ CommandAPICommand("gamemode")
/* ANCHOR_END: argumentMultiLiteral1 */
}
-class argument_nbt : JavaPlugin() {
-
-/* ANCHOR: argumentNBT1 */
-override fun onLoad() {
- CommandAPI.onLoad(CommandAPIBukkitConfig(this)
- .initializeNBTAPI(NBTContainer::class.java, ::NBTContainer)
- )
-}
-/* ANCHOR_END: argumentNBT1 */
-
fun argument_nbt2() {
/* ANCHOR: argumentNBT2 */
CommandAPICommand("award")
@@ -697,8 +589,6 @@ CommandAPICommand("award")
/* ANCHOR_END: argumentNBT2 */
}
-}
-
fun argument_objectives() {
/* ANCHOR: argumentObjectives1 */
CommandAPICommand("sidebar")
@@ -1213,75 +1103,6 @@ CommandAPICommand("commandargument")
/* ANCHOR_END: brigadierSuggestions3 */
}
-fun chatPreview() {
-/* ANCHOR: chatPreview1 */
-CommandAPICommand("broadcast")
- .withArguments(ChatArgument("message").withPreview { info ->
- // Convert parsed BaseComponent[] to plain text
- val plainText: String = BaseComponent.toPlainText(*info.parsedInput() as Array)
-
- // Translate the & in plain text and generate a new BaseComponent[]
- TextComponent.fromLegacyText(ChatColor.translateAlternateColorCodes('&', plainText))
- } )
- .executesPlayer(PlayerCommandExecutor { _, args ->
- // The user still entered legacy text. We need to properly convert this
- // to a BaseComponent[] by converting to plain text then to BaseComponent[]
- val plainText: String = BaseComponent.toPlainText(*args["message"] as Array)
- val baseComponents: Array = TextComponent.fromLegacyText(ChatColor.translateAlternateColorCodes('&', plainText))
- Bukkit.spigot().broadcast(*baseComponents)
- })
- .register()
-/* ANCHOR_END: chatPreview1 */
-
-/* ANCHOR: chatPreview2 */
-CommandAPICommand("broadcast")
- .withArguments(AdventureChatArgument("message").withPreview { info ->
- // Convert parsed Component to plain text
- val plainText: String = PlainTextComponentSerializer.plainText().serialize(info.parsedInput() as Component)
-
- // Translate the & in plain text and generate a new Component
- LegacyComponentSerializer.legacyAmpersand().deserialize(plainText)
- } )
- .executesPlayer(PlayerCommandExecutor { _, args ->
- // The user still entered legacy text. We need to properly convert this
- // to a Component by converting to plain text then to Component
- val plainText: String = PlainTextComponentSerializer.plainText().serialize(args["message"] as Component)
- Bukkit.broadcast(LegacyComponentSerializer.legacyAmpersand().deserialize(plainText))
- })
- .register()
-/* ANCHOR_END: chatPreview2 */
-
-/* ANCHOR: chatPreview3 */
-CommandAPICommand("broadcast")
- .withArguments(ChatArgument("message").usePreview(true).withPreview { info ->
- // Convert parsed BaseComponent[] to plain text
- val plainText = BaseComponent.toPlainText(*info.parsedInput() as Array)
-
- // Translate the & in plain text and generate a new BaseComponent[]
- TextComponent.fromLegacyText(ChatColor.translateAlternateColorCodes('&', plainText))
- } )
- .executesPlayer(PlayerCommandExecutor { _, args ->
- Bukkit.spigot().broadcast(*args["message"] as Array)
- })
- .register()
-/* ANCHOR_END: chatPreview3 */
-
-/* ANCHOR: chatPreview4 */
-CommandAPICommand("broadcast")
- .withArguments(AdventureChatArgument("message").usePreview(true).withPreview { info ->
- // Convert parsed Component to plain text
- val plainText = PlainTextComponentSerializer.plainText().serialize(info.parsedInput() as Component)
-
- // Translate the & in plain text and generate a new Component
- LegacyComponentSerializer.legacyAmpersand().deserialize(plainText)
- } )
- .executesPlayer(PlayerCommandExecutor { _, args ->
- Bukkit.broadcast(args["message"] as Component)
- })
- .register()
-/* ANCHOR_END: chatPreview4 */
-}
-
fun commandArguments() {
/* ANCHOR: commandArguments1 */
CommandAPICommand("mycommand")
@@ -2220,42 +2041,6 @@ CommandAPICommand("removeeffect")
/* ANCHOR_END: safeArgumentSuggestions7 */
}
-class setupShading {
-val plugin: JavaPlugin = object: JavaPlugin() {}
-
-fun setupShading1() {
-/* ANCHOR: setupShading1 */
-CommandAPI.onLoad(CommandAPIBukkitConfig(plugin).silentLogs(true))
-/* ANCHOR_END: setupShading1 */
-}
-
-/* ANCHOR: setupShading2 */
-class MyPlugin : JavaPlugin() {
-
- override fun onLoad() {
- CommandAPI.onLoad(CommandAPIBukkitConfig(this).verboseOutput(true)) // Load with verbose output
-
- CommandAPICommand("ping")
- .executes(CommandExecutor { sender, _ ->
- sender.sendMessage("pong!")
- })
- .register()
- }
-
- override fun onEnable() {
- CommandAPI.onEnable()
-
- // Register commands, listeners etc.
- }
-
- override fun onDisable() {
- CommandAPI.onDisable()
- }
-
-}
-/* ANCHOR_END: setupShading2 */
-}
-
class stringArgumentSuggestions {
fun stringArgumentSuggestions1() {
val warps = mutableMapOf()
diff --git a/commandapi-documentation-code/src/main/kotlin/dev/jorel/commandapi/examples/kotlin/ExamplesKotlinDSL.kt b/commandapi-documentation-code/src/main/kotlin/dev/jorel/commandapi/examples/kotlin/ExamplesKotlinDSL.kt
index 39e6dd5d7d..a34c20ce19 100644
--- a/commandapi-documentation-code/src/main/kotlin/dev/jorel/commandapi/examples/kotlin/ExamplesKotlinDSL.kt
+++ b/commandapi-documentation-code/src/main/kotlin/dev/jorel/commandapi/examples/kotlin/ExamplesKotlinDSL.kt
@@ -154,96 +154,6 @@ commandAPICommand("set") {
/* ANCHOR_END: argumentBlockState1 */
}
-fun argument_chatAdventure() {
-/* ANCHOR: argumentChatAdventure1 */
-commandAPICommand("namecolor") {
- chatColorArgument("chatcolor")
- playerExecutor { player, args ->
- val color = args["chatcolor"] as NamedTextColor
- player.displayName(Component.text().color(color).append(Component.text(player.name)).build())
- }
-}
-/* ANCHOR_END: argumentChatAdventure1 */
-
-/* ANCHOR: argumentChatAdventure2 */
-commandAPICommand("showbook") {
- playerArgument("target")
- textArgument("title")
- stringArgument("author")
- adventureChatComponentArgument("contents")
- anyExecutor { _, args ->
- val target = args["target"] as Player
- val title = args["title"] as String
- val author = args["author"] as String
- val content = args["contents"] as Component
-
- // Create a book and show it to the user (Requires Paper)
- val mybook = Book.book(Component.text(title), Component.text(author), content)
- target.openBook(mybook)
- }
-}
-/* ANCHOR_END: argumentChatAdventure2 */
-
-/* ANCHOR: argumentChatAdventure3 */
-commandAPICommand("pbroadcast") {
- adventureChatArgument("message")
- anyExecutor { _, args ->
- val message = args["message"] as Component
-
- // Broadcast the message to everyone with broadcast permissions.
- Bukkit.getServer().broadcast(message, Server.BROADCAST_CHANNEL_USERS)
- Bukkit.getServer().broadcast(message)
- }
-}
-/* ANCHOR_END: argumentChatAdventure3 */
-}
-
-fun argument_chatSpigot() {
-/* ANCHOR: argumentChatSpigot1 */
-commandAPICommand("namecolor") {
- chatColorArgument("chatcolor")
- playerExecutor { player, args ->
- val color = args["chatcolor"] as ChatColor
- player.setDisplayName("$color${player.name}")
- }
-}
-/* ANCHOR_END: argumentChatSpigot1 */
-
-/* ANCHOR: argumentChatSpigot2 */
-commandAPICommand("makebook") {
- playerArgument("player")
- chatComponentArgument("contents")
- anyExecutor { _, args ->
- val player = args["player"] as Player
- val array = args["contents"] as Array
-
- // Create book
- val item = ItemStack(Material.WRITTEN_BOOK)
- val meta = item.itemMeta as BookMeta
- meta.title = "Custom Book"
- meta.author = player.name
- meta.spigot().setPages(array)
- item.itemMeta = meta
-
- // Give player the book
- player.inventory.addItem(item)
- }
-}
-/* ANCHOR_END: argumentChatSpigot2 */
-
-/* ANCHOR: argumentChatSpigot3 */
-commandAPICommand("pbroadcast") {
- chatArgument("message")
- anyExecutor { _, args ->
- val message = args["message"] as Array
-
- // Broadcast the message to everyone on the server
- Bukkit.getServer().spigot().broadcast(*message)
- }
-}
-/* ANCHOR_END: argumentChatSpigot3 */
-}
-
fun argument_command() {
/* ANCHOR: argumentCommand1 */
commandAPICommand("sudo") {
diff --git a/commandapi-kotlin/commandapi-bukkit-kotlin/pom.xml b/commandapi-kotlin/commandapi-kotlin-bukkit/pom.xml
similarity index 96%
rename from commandapi-kotlin/commandapi-bukkit-kotlin/pom.xml
rename to commandapi-kotlin/commandapi-kotlin-bukkit/pom.xml
index e37813d66f..d403a7feec 100644
--- a/commandapi-kotlin/commandapi-bukkit-kotlin/pom.xml
+++ b/commandapi-kotlin/commandapi-kotlin-bukkit/pom.xml
@@ -10,7 +10,7 @@
9.7.1-SNAPSHOT
- commandapi-bukkit-kotlin
+ commandapi-kotlin-bukkit
src/main/kotlin
@@ -91,7 +91,7 @@
dev.jorel
- commandapi-core-kotlin
+ commandapi-kotlin-core
${project.version}
diff --git a/commandapi-kotlin/commandapi-bukkit-kotlin/src/main/kotlin/dev/jorel/commandapi/kotlindsl/CommandAPICommandDSL.kt b/commandapi-kotlin/commandapi-kotlin-bukkit/src/main/kotlin/dev/jorel/commandapi/kotlindsl/CommandAPICommandDSL.kt
similarity index 92%
rename from commandapi-kotlin/commandapi-bukkit-kotlin/src/main/kotlin/dev/jorel/commandapi/kotlindsl/CommandAPICommandDSL.kt
rename to commandapi-kotlin/commandapi-kotlin-bukkit/src/main/kotlin/dev/jorel/commandapi/kotlindsl/CommandAPICommandDSL.kt
index 773ac92063..ede6d7e8ed 100644
--- a/commandapi-kotlin/commandapi-bukkit-kotlin/src/main/kotlin/dev/jorel/commandapi/kotlindsl/CommandAPICommandDSL.kt
+++ b/commandapi-kotlin/commandapi-kotlin-bukkit/src/main/kotlin/dev/jorel/commandapi/kotlindsl/CommandAPICommandDSL.kt
@@ -52,14 +52,6 @@ inline fun CommandAPICommand.location2DArgument(nodeName: String, locationType:
inline fun CommandAPICommand.rotationArgument(nodeName: String, optional: Boolean = false, block: Argument<*>.() -> Unit = {}): CommandAPICommand = withArguments(RotationArgument(nodeName).setOptional(optional).apply(block))
inline fun CommandAPICommand.axisArgument(nodeName: String, optional: Boolean = false, block: Argument<*>.() -> Unit = {}): CommandAPICommand = withArguments(AxisArgument(nodeName).setOptional(optional).apply(block))
-// Chat arguments
-inline fun CommandAPICommand.chatColorArgument(nodeName: String, optional: Boolean = false, block: Argument<*>.() -> Unit = {}): CommandAPICommand = withArguments(ChatColorArgument(nodeName).setOptional(optional).apply(block))
-inline fun CommandAPICommand.chatComponentArgument(nodeName: String, optional: Boolean = false, block: Argument<*>.() -> Unit = {}): CommandAPICommand = withArguments(ChatComponentArgument(nodeName).setOptional(optional).apply(block))
-inline fun CommandAPICommand.chatArgument(nodeName: String, optional: Boolean = false, block: Argument<*>.() -> Unit = {}): CommandAPICommand = withArguments(ChatArgument(nodeName).setOptional(optional).apply(block))
-inline fun CommandAPICommand.adventureChatColorArgument(nodeName: String, optional: Boolean = false, block: Argument<*>.() -> Unit = {}): CommandAPICommand = withArguments(AdventureChatColorArgument(nodeName).setOptional(optional).apply(block))
-inline fun CommandAPICommand.adventureChatComponentArgument(nodeName: String, optional: Boolean = false, block: Argument<*>.() -> Unit = {}): CommandAPICommand = withArguments(AdventureChatComponentArgument(nodeName).setOptional(optional).apply(block))
-inline fun CommandAPICommand.adventureChatArgument(nodeName: String, optional: Boolean = false, block: Argument<*>.() -> Unit = {}): CommandAPICommand = withArguments(AdventureChatArgument(nodeName).setOptional(optional).apply(block))
-
// Entity & Player arguments
inline fun CommandAPICommand.entitySelectorArgumentOneEntity(nodeName: String, optional: Boolean = false, block: Argument<*>.() -> Unit = {}): CommandAPICommand = withArguments(EntitySelectorArgument.OneEntity(nodeName).setOptional(optional).apply(block))
inline fun CommandAPICommand.entitySelectorArgumentManyEntities(nodeName: String, allowEmpty: Boolean = true, optional: Boolean = false, block: Argument<*>.() -> Unit = {}): CommandAPICommand = withArguments(EntitySelectorArgument.ManyEntities(nodeName, allowEmpty).setOptional(optional).apply(block))
diff --git a/commandapi-kotlin/commandapi-bukkit-kotlin/src/main/kotlin/dev/jorel/commandapi/kotlindsl/CommandTreeDSL.kt b/commandapi-kotlin/commandapi-kotlin-bukkit/src/main/kotlin/dev/jorel/commandapi/kotlindsl/CommandTreeDSL.kt
similarity index 91%
rename from commandapi-kotlin/commandapi-bukkit-kotlin/src/main/kotlin/dev/jorel/commandapi/kotlindsl/CommandTreeDSL.kt
rename to commandapi-kotlin/commandapi-kotlin-bukkit/src/main/kotlin/dev/jorel/commandapi/kotlindsl/CommandTreeDSL.kt
index 0c466dc6d5..e93bf114e9 100644
--- a/commandapi-kotlin/commandapi-bukkit-kotlin/src/main/kotlin/dev/jorel/commandapi/kotlindsl/CommandTreeDSL.kt
+++ b/commandapi-kotlin/commandapi-kotlin-bukkit/src/main/kotlin/dev/jorel/commandapi/kotlindsl/CommandTreeDSL.kt
@@ -59,14 +59,6 @@ inline fun CommandTree.location2DArgument(nodeName: String, locationType: Locati
inline fun CommandTree.rotationArgument(nodeName: String, optional: Boolean = false, block: Argument<*>.() -> Unit = {}): CommandTree = then(RotationArgument(nodeName).setOptional(optional).apply(block))
inline fun CommandTree.axisArgument(nodeName: String, optional: Boolean = false, block: Argument<*>.() -> Unit = {}): CommandTree = then(AxisArgument(nodeName).setOptional(optional).apply(block))
-// Chat arguments
-inline fun CommandTree.chatColorArgument(nodeName: String, optional: Boolean = false, block: Argument<*>.() -> Unit = {}): CommandTree = then(ChatColorArgument(nodeName).setOptional(optional).apply(block))
-inline fun CommandTree.chatComponentArgument(nodeName: String, optional: Boolean = false, block: Argument<*>.() -> Unit = {}): CommandTree = then(ChatComponentArgument(nodeName).setOptional(optional).apply(block))
-inline fun CommandTree.chatArgument(nodeName: String, optional: Boolean = false, block: Argument<*>.() -> Unit = {}): CommandTree = then(ChatArgument(nodeName).setOptional(optional).apply(block))
-inline fun CommandTree.adventureChatColorArgument(nodeName: String, optional: Boolean = false, block: Argument<*>.() -> Unit = {}): CommandTree = then(AdventureChatColorArgument(nodeName).setOptional(optional).apply(block))
-inline fun CommandTree.adventureChatComponentArgument(nodeName: String, optional: Boolean = false, block: Argument<*>.() -> Unit = {}): CommandTree = then(AdventureChatComponentArgument(nodeName).setOptional(optional).apply(block))
-inline fun CommandTree.adventureChatArgument(nodeName: String, optional: Boolean = false, block: Argument<*>.() -> Unit = {}): CommandTree = then(AdventureChatArgument(nodeName).setOptional(optional).apply(block))
-
// Entity & Player arguments
inline fun CommandTree.entitySelectorArgumentOneEntity(nodeName: String, optional: Boolean = false, block: Argument<*>.() -> Unit = {}): CommandTree = then(EntitySelectorArgument.OneEntity(nodeName).setOptional(optional).apply(block))
inline fun CommandTree.entitySelectorArgumentManyEntities(nodeName: String, allowEmpty: Boolean = true, optional: Boolean = false, block: Argument<*>.() -> Unit = {}): CommandTree = then(EntitySelectorArgument.ManyEntities(nodeName, allowEmpty).setOptional(optional).apply(block))
@@ -177,14 +169,6 @@ inline fun Argument<*>.location2DArgument(nodeName: String, locationType: Locati
inline fun Argument<*>.rotationArgument(nodeName: String, optional: Boolean = false, block: Argument<*>.() -> Unit = {}): Argument<*> = then(RotationArgument(nodeName).setOptional(optional).apply(block))
inline fun Argument<*>.axisArgument(nodeName: String, optional: Boolean = false, block: Argument<*>.() -> Unit = {}): Argument<*> = then(AxisArgument(nodeName).setOptional(optional).apply(block))
-// Chat arguments
-inline fun Argument<*>.chatColorArgument(nodeName: String, optional: Boolean = false, block: Argument<*>.() -> Unit = {}): Argument<*> = then(ChatColorArgument(nodeName).setOptional(optional).apply(block))
-inline fun Argument<*>.chatComponentArgument(nodeName: String, optional: Boolean = false, block: Argument<*>.() -> Unit = {}): Argument<*> = then(ChatComponentArgument(nodeName).setOptional(optional).apply(block))
-inline fun Argument<*>.chatArgument(nodeName: String, optional: Boolean = false, block: Argument<*>.() -> Unit = {}): Argument<*> = then(ChatArgument(nodeName).setOptional(optional).apply(block))
-inline fun Argument<*>.adventureChatColorArgument(nodeName: String, optional: Boolean = false, block: Argument<*>.() -> Unit = {}): Argument<*> = then(AdventureChatColorArgument(nodeName).setOptional(optional).apply(block))
-inline fun Argument<*>.adventureChatComponentArgument(nodeName: String, optional: Boolean = false, block: Argument<*>.() -> Unit = {}): Argument<*> = then(AdventureChatComponentArgument(nodeName).setOptional(optional).apply(block))
-inline fun Argument<*>.adventureChatArgument(nodeName: String, optional: Boolean = false, block: Argument<*>.() -> Unit = {}): Argument<*> = then(AdventureChatArgument(nodeName).setOptional(optional).apply(block))
-
// Entity & Player arguments
inline fun Argument<*>.entitySelectorArgumentOneEntity(nodeName: String, optional: Boolean = false, block: Argument<*>.() -> Unit = {}): Argument<*> = then(EntitySelectorArgument.OneEntity(nodeName).setOptional(optional).apply(block))
inline fun Argument<*>.entitySelectorArgumentManyEntities(nodeName: String, allowEmpty: Boolean = true, optional: Boolean = false, block: Argument<*>.() -> Unit = {}): Argument<*> = then(EntitySelectorArgument.ManyEntities(nodeName, allowEmpty).setOptional(optional).apply(block))
diff --git a/commandapi-kotlin/commandapi-bukkit-kotlin/src/main/kotlin/dev/jorel/commandapi/kotlindsl/ExecutorDSL.kt b/commandapi-kotlin/commandapi-kotlin-bukkit/src/main/kotlin/dev/jorel/commandapi/kotlindsl/ExecutorDSL.kt
similarity index 100%
rename from commandapi-kotlin/commandapi-bukkit-kotlin/src/main/kotlin/dev/jorel/commandapi/kotlindsl/ExecutorDSL.kt
rename to commandapi-kotlin/commandapi-kotlin-bukkit/src/main/kotlin/dev/jorel/commandapi/kotlindsl/ExecutorDSL.kt
diff --git a/commandapi-kotlin/commandapi-core-kotlin/pom.xml b/commandapi-kotlin/commandapi-kotlin-core/pom.xml
similarity index 97%
rename from commandapi-kotlin/commandapi-core-kotlin/pom.xml
rename to commandapi-kotlin/commandapi-kotlin-core/pom.xml
index 93104f99b3..103b852434 100644
--- a/commandapi-kotlin/commandapi-core-kotlin/pom.xml
+++ b/commandapi-kotlin/commandapi-kotlin-core/pom.xml
@@ -10,7 +10,7 @@
9.7.1-SNAPSHOT
- commandapi-core-kotlin
+ commandapi-kotlin-core
src/main/kotlin
diff --git a/commandapi-kotlin/commandapi-core-kotlin/src/main/kotlin/dev/jorel/commandapi/kotlindsl/CommandAPIDSL.kt b/commandapi-kotlin/commandapi-kotlin-core/src/main/kotlin/dev/jorel/commandapi/kotlindsl/CommandAPIDSL.kt
similarity index 100%
rename from commandapi-kotlin/commandapi-core-kotlin/src/main/kotlin/dev/jorel/commandapi/kotlindsl/CommandAPIDSL.kt
rename to commandapi-kotlin/commandapi-kotlin-core/src/main/kotlin/dev/jorel/commandapi/kotlindsl/CommandAPIDSL.kt
diff --git a/commandapi-kotlin/commandapi-kotlin-paper/pom.xml b/commandapi-kotlin/commandapi-kotlin-paper/pom.xml
new file mode 100644
index 0000000000..0052eddba0
--- /dev/null
+++ b/commandapi-kotlin/commandapi-kotlin-paper/pom.xml
@@ -0,0 +1,98 @@
+
+
+ 4.0.0
+
+ dev.jorel
+ commandapi-kotlin
+ 9.7.1-SNAPSHOT
+
+
+ commandapi-kotlin-paper
+
+
+ src/main/kotlin
+
+
+ org.jetbrains.kotlin
+ kotlin-maven-plugin
+ ${kotlin.version}
+
+
+ compile
+ compile
+
+ compile
+
+
+
+ test-compile
+ test-compile
+
+ test-compile
+
+
+
+
+ 16
+
+
+
+ org.apache.maven.plugins
+ maven-jar-plugin
+
+
+ empty-javadoc-jar
+ package
+
+ jar
+
+
+ javadoc
+ ${basedir}/javadoc
+
+
+
+
+
+
+
+
+
+ papermc
+ https://papermc.io/repo/repository/maven-public/
+
+
+ sonatype
+ https://oss.sonatype.org/content/groups/public/
+
+
+
+
+
+ io.papermc.paper
+ paper-api
+ ${paper.version}
+ provided
+
+
+ org.jetbrains.kotlin
+ kotlin-stdlib
+ ${kotlin.version}
+ provided
+
+
+ dev.jorel
+ commandapi-paper-core
+ ${project.version}
+ provided
+
+
+ dev.jorel
+ commandapi-kotlin-bukkit
+ ${project.version}
+
+
+
+
\ No newline at end of file
diff --git a/commandapi-kotlin/commandapi-kotlin-paper/src/main/kotlin/dev/jorel/commandapi/kotlindsl/PaperCommandAPICommandDSL.kt b/commandapi-kotlin/commandapi-kotlin-paper/src/main/kotlin/dev/jorel/commandapi/kotlindsl/PaperCommandAPICommandDSL.kt
new file mode 100644
index 0000000000..c61704ce88
--- /dev/null
+++ b/commandapi-kotlin/commandapi-kotlin-paper/src/main/kotlin/dev/jorel/commandapi/kotlindsl/PaperCommandAPICommandDSL.kt
@@ -0,0 +1,11 @@
+package dev.jorel.commandapi.kotlindsl
+
+import dev.jorel.commandapi.CommandAPICommand
+import dev.jorel.commandapi.arguments.Argument
+import dev.jorel.commandapi.arguments.ChatArgument
+import dev.jorel.commandapi.arguments.ChatColorArgument
+import dev.jorel.commandapi.arguments.ChatComponentArgument
+
+inline fun CommandAPICommand.chatColorArgument(nodeName: String, optional: Boolean = false, block: Argument<*>.() -> Unit = {}): CommandAPICommand = withArguments(ChatColorArgument(nodeName).setOptional(optional).apply(block))
+inline fun CommandAPICommand.chatComponentArgument(nodeName: String, optional: Boolean = false, block: Argument<*>.() -> Unit = {}): CommandAPICommand = withArguments(ChatComponentArgument(nodeName).setOptional(optional).apply(block))
+inline fun CommandAPICommand.chatArgument(nodeName: String, optional: Boolean = false, block: Argument<*>.() -> Unit = {}): CommandAPICommand = withArguments(ChatArgument(nodeName).setOptional(optional).apply(block))
diff --git a/commandapi-kotlin/commandapi-kotlin-paper/src/main/kotlin/dev/jorel/commandapi/kotlindsl/PaperCommandTreeDSL.kt b/commandapi-kotlin/commandapi-kotlin-paper/src/main/kotlin/dev/jorel/commandapi/kotlindsl/PaperCommandTreeDSL.kt
new file mode 100644
index 0000000000..49ebff0364
--- /dev/null
+++ b/commandapi-kotlin/commandapi-kotlin-paper/src/main/kotlin/dev/jorel/commandapi/kotlindsl/PaperCommandTreeDSL.kt
@@ -0,0 +1,12 @@
+package dev.jorel.commandapi.kotlindsl
+
+import dev.jorel.commandapi.*
+import dev.jorel.commandapi.arguments.*
+
+inline fun CommandTree.chatColorArgument(nodeName: String, optional: Boolean = false, block: Argument<*>.() -> Unit = {}): CommandTree = then(ChatColorArgument(nodeName).setOptional(optional).apply(block))
+inline fun CommandTree.chatComponentArgument(nodeName: String, optional: Boolean = false, block: Argument<*>.() -> Unit = {}): CommandTree = then(ChatComponentArgument(nodeName).setOptional(optional).apply(block))
+inline fun CommandTree.chatArgument(nodeName: String, optional: Boolean = false, block: Argument<*>.() -> Unit = {}): CommandTree = then(ChatArgument(nodeName).setOptional(optional).apply(block))
+
+inline fun Argument<*>.chatColorArgument(nodeName: String, optional: Boolean = false, block: Argument<*>.() -> Unit = {}): Argument<*> = then(ChatColorArgument(nodeName).setOptional(optional).apply(block))
+inline fun Argument<*>.chatComponentArgument(nodeName: String, optional: Boolean = false, block: Argument<*>.() -> Unit = {}): Argument<*> = then(ChatComponentArgument(nodeName).setOptional(optional).apply(block))
+inline fun Argument<*>.chatArgument(nodeName: String, optional: Boolean = false, block: Argument<*>.() -> Unit = {}): Argument<*> = then(ChatArgument(nodeName).setOptional(optional).apply(block))
diff --git a/commandapi-kotlin/commandapi-kotlin-paper/src/main/kotlin/dev/jorel/commandapi/kotlindsl/PaperExecutorDSL.kt b/commandapi-kotlin/commandapi-kotlin-paper/src/main/kotlin/dev/jorel/commandapi/kotlindsl/PaperExecutorDSL.kt
new file mode 100644
index 0000000000..6ebb82efd0
--- /dev/null
+++ b/commandapi-kotlin/commandapi-kotlin-paper/src/main/kotlin/dev/jorel/commandapi/kotlindsl/PaperExecutorDSL.kt
@@ -0,0 +1,31 @@
+package dev.jorel.commandapi.kotlindsl
+
+import dev.jorel.commandapi.BukkitExecutable
+import dev.jorel.commandapi.commandsenders.BukkitFeedbackForwardingCommandSender
+import dev.jorel.commandapi.executors.CommandArguments
+import dev.jorel.commandapi.executors.ExecutionInfo
+import dev.jorel.commandapi.executors.FeedbackForwardingCommandExecutor
+import dev.jorel.commandapi.executors.FeedbackForwardingExecutionInfo
+import dev.jorel.commandapi.executors.FeedbackForwardingResultingCommandExecutor
+import dev.jorel.commandapi.executors.FeedbackForwardingResultingExecutionInfo
+import org.bukkit.command.CommandSender
+
+// Executors for CommandAPICommand, CommandTree and ArgumentTree
+inline fun BukkitExecutable<*>.feedbackForwardingExecutor(crossinline executor: (CommandSender, CommandArguments) -> Unit): BukkitExecutable<*> = executesFeedbackForwarding(FeedbackForwardingCommandExecutor { sender, args ->
+ executor(sender, args)
+})
+
+// Resulting executors
+inline fun BukkitExecutable<*>.feedbackForwardingResultingExecutor(crossinline executor: (CommandSender, CommandArguments) -> Int): BukkitExecutable<*> = executesFeedbackForwarding(FeedbackForwardingResultingCommandExecutor { sender, args ->
+ executor(sender, args)
+})
+
+// ExecutionInfo normal executors
+inline fun BukkitExecutable<*>.feedbackForwardingExecutionInfo(crossinline executor: (ExecutionInfo>) -> Unit): BukkitExecutable<*> = executesFeedbackForwarding(FeedbackForwardingExecutionInfo { info ->
+ executor(info)
+})
+
+// ExecutionInfo resulting executors
+inline fun BukkitExecutable<*>.feedbackForwardingResultingExecutionInfo(crossinline executor: (ExecutionInfo>) -> Int): BukkitExecutable<*> = executesFeedbackForwarding(FeedbackForwardingResultingExecutionInfo { info ->
+ executor(info)
+})
\ No newline at end of file
diff --git a/commandapi-kotlin/commandapi-kotlin-spigot/pom.xml b/commandapi-kotlin/commandapi-kotlin-spigot/pom.xml
new file mode 100644
index 0000000000..f21d96104a
--- /dev/null
+++ b/commandapi-kotlin/commandapi-kotlin-spigot/pom.xml
@@ -0,0 +1,98 @@
+
+
+ 4.0.0
+
+ dev.jorel
+ commandapi-kotlin
+ 9.7.1-SNAPSHOT
+
+
+ commandapi-kotlin-spigot
+
+
+ src/main/kotlin
+
+
+ org.jetbrains.kotlin
+ kotlin-maven-plugin
+ ${kotlin.version}
+
+
+ compile
+ compile
+
+ compile
+
+
+
+ test-compile
+ test-compile
+
+ test-compile
+
+
+
+
+ 16
+
+
+
+ org.apache.maven.plugins
+ maven-jar-plugin
+
+
+ empty-javadoc-jar
+ package
+
+ jar
+
+
+ javadoc
+ ${basedir}/javadoc
+
+
+
+
+
+
+
+
+
+ spigot-repo
+ https://hub.spigotmc.org/nexus/content/repositories/snapshots/
+
+
+ sonatype
+ https://oss.sonatype.org/content/groups/public/
+
+
+
+
+
+ org.spigotmc
+ spigot-api
+ ${paper.version}
+ provided
+
+
+ org.jetbrains.kotlin
+ kotlin-stdlib
+ ${kotlin.version}
+ provided
+
+
+ dev.jorel
+ commandapi-spigot-core
+ ${project.version}
+ provided
+
+
+ dev.jorel
+ commandapi-kotlin-bukkit
+ ${project.version}
+
+
+
+
\ No newline at end of file
diff --git a/commandapi-kotlin/commandapi-kotlin-spigot/src/main/kotlin/dev/jorel/commandapi/kotlindsl/SpigotCommandAPICommandDSL.kt b/commandapi-kotlin/commandapi-kotlin-spigot/src/main/kotlin/dev/jorel/commandapi/kotlindsl/SpigotCommandAPICommandDSL.kt
new file mode 100644
index 0000000000..c61704ce88
--- /dev/null
+++ b/commandapi-kotlin/commandapi-kotlin-spigot/src/main/kotlin/dev/jorel/commandapi/kotlindsl/SpigotCommandAPICommandDSL.kt
@@ -0,0 +1,11 @@
+package dev.jorel.commandapi.kotlindsl
+
+import dev.jorel.commandapi.CommandAPICommand
+import dev.jorel.commandapi.arguments.Argument
+import dev.jorel.commandapi.arguments.ChatArgument
+import dev.jorel.commandapi.arguments.ChatColorArgument
+import dev.jorel.commandapi.arguments.ChatComponentArgument
+
+inline fun CommandAPICommand.chatColorArgument(nodeName: String, optional: Boolean = false, block: Argument<*>.() -> Unit = {}): CommandAPICommand = withArguments(ChatColorArgument(nodeName).setOptional(optional).apply(block))
+inline fun CommandAPICommand.chatComponentArgument(nodeName: String, optional: Boolean = false, block: Argument<*>.() -> Unit = {}): CommandAPICommand = withArguments(ChatComponentArgument(nodeName).setOptional(optional).apply(block))
+inline fun CommandAPICommand.chatArgument(nodeName: String, optional: Boolean = false, block: Argument<*>.() -> Unit = {}): CommandAPICommand = withArguments(ChatArgument(nodeName).setOptional(optional).apply(block))
diff --git a/commandapi-kotlin/commandapi-kotlin-spigot/src/main/kotlin/dev/jorel/commandapi/kotlindsl/SpigotCommandTreeDSL.kt b/commandapi-kotlin/commandapi-kotlin-spigot/src/main/kotlin/dev/jorel/commandapi/kotlindsl/SpigotCommandTreeDSL.kt
new file mode 100644
index 0000000000..49ebff0364
--- /dev/null
+++ b/commandapi-kotlin/commandapi-kotlin-spigot/src/main/kotlin/dev/jorel/commandapi/kotlindsl/SpigotCommandTreeDSL.kt
@@ -0,0 +1,12 @@
+package dev.jorel.commandapi.kotlindsl
+
+import dev.jorel.commandapi.*
+import dev.jorel.commandapi.arguments.*
+
+inline fun CommandTree.chatColorArgument(nodeName: String, optional: Boolean = false, block: Argument<*>.() -> Unit = {}): CommandTree = then(ChatColorArgument(nodeName).setOptional(optional).apply(block))
+inline fun CommandTree.chatComponentArgument(nodeName: String, optional: Boolean = false, block: Argument<*>.() -> Unit = {}): CommandTree = then(ChatComponentArgument(nodeName).setOptional(optional).apply(block))
+inline fun CommandTree.chatArgument(nodeName: String, optional: Boolean = false, block: Argument<*>.() -> Unit = {}): CommandTree = then(ChatArgument(nodeName).setOptional(optional).apply(block))
+
+inline fun Argument<*>.chatColorArgument(nodeName: String, optional: Boolean = false, block: Argument<*>.() -> Unit = {}): Argument<*> = then(ChatColorArgument(nodeName).setOptional(optional).apply(block))
+inline fun Argument<*>.chatComponentArgument(nodeName: String, optional: Boolean = false, block: Argument<*>.() -> Unit = {}): Argument<*> = then(ChatComponentArgument(nodeName).setOptional(optional).apply(block))
+inline fun Argument<*>.chatArgument(nodeName: String, optional: Boolean = false, block: Argument<*>.() -> Unit = {}): Argument<*> = then(ChatArgument(nodeName).setOptional(optional).apply(block))
diff --git a/commandapi-kotlin/commandapi-velocity-kotlin/pom.xml b/commandapi-kotlin/commandapi-kotlin-velocity/pom.xml
similarity index 95%
rename from commandapi-kotlin/commandapi-velocity-kotlin/pom.xml
rename to commandapi-kotlin/commandapi-kotlin-velocity/pom.xml
index 5a333d9c68..f5682511d7 100644
--- a/commandapi-kotlin/commandapi-velocity-kotlin/pom.xml
+++ b/commandapi-kotlin/commandapi-kotlin-velocity/pom.xml
@@ -10,7 +10,7 @@
9.7.1-SNAPSHOT
- commandapi-velocity-kotlin
+ commandapi-kotlin-velocity
src/main/kotlin
@@ -67,7 +67,7 @@
dev.jorel
- commandapi-core-kotlin
+ commandapi-kotlin-core
${project.version}
diff --git a/commandapi-kotlin/commandapi-velocity-kotlin/src/main/kotlin/dev/jorel/commandapi/kotlindsl/CommandAPICommandDSL.kt b/commandapi-kotlin/commandapi-kotlin-velocity/src/main/kotlin/dev/jorel/commandapi/kotlindsl/CommandAPICommandDSL.kt
similarity index 100%
rename from commandapi-kotlin/commandapi-velocity-kotlin/src/main/kotlin/dev/jorel/commandapi/kotlindsl/CommandAPICommandDSL.kt
rename to commandapi-kotlin/commandapi-kotlin-velocity/src/main/kotlin/dev/jorel/commandapi/kotlindsl/CommandAPICommandDSL.kt
diff --git a/commandapi-kotlin/commandapi-velocity-kotlin/src/main/kotlin/dev/jorel/commandapi/kotlindsl/CommandTreeDSL.kt b/commandapi-kotlin/commandapi-kotlin-velocity/src/main/kotlin/dev/jorel/commandapi/kotlindsl/CommandTreeDSL.kt
similarity index 100%
rename from commandapi-kotlin/commandapi-velocity-kotlin/src/main/kotlin/dev/jorel/commandapi/kotlindsl/CommandTreeDSL.kt
rename to commandapi-kotlin/commandapi-kotlin-velocity/src/main/kotlin/dev/jorel/commandapi/kotlindsl/CommandTreeDSL.kt
diff --git a/commandapi-kotlin/commandapi-velocity-kotlin/src/main/kotlin/dev/jorel/commandapi/kotlindsl/ExecutorDSL.kt b/commandapi-kotlin/commandapi-kotlin-velocity/src/main/kotlin/dev/jorel/commandapi/kotlindsl/ExecutorDSL.kt
similarity index 100%
rename from commandapi-kotlin/commandapi-velocity-kotlin/src/main/kotlin/dev/jorel/commandapi/kotlindsl/ExecutorDSL.kt
rename to commandapi-kotlin/commandapi-kotlin-velocity/src/main/kotlin/dev/jorel/commandapi/kotlindsl/ExecutorDSL.kt
diff --git a/commandapi-platforms/commandapi-bukkit/commandapi-bukkit-core/src/main/java/dev/jorel/commandapi/BukkitExecutable.java b/commandapi-platforms/commandapi-bukkit/commandapi-bukkit-core/src/main/java/dev/jorel/commandapi/BukkitExecutable.java
index 08d26ffa64..13c93ab0b8 100644
--- a/commandapi-platforms/commandapi-bukkit/commandapi-bukkit-core/src/main/java/dev/jorel/commandapi/BukkitExecutable.java
+++ b/commandapi-platforms/commandapi-bukkit/commandapi-bukkit-core/src/main/java/dev/jorel/commandapi/BukkitExecutable.java
@@ -1,6 +1,7 @@
package dev.jorel.commandapi;
import dev.jorel.commandapi.commandsenders.BukkitCommandSender;
+import dev.jorel.commandapi.exceptions.PlatformException;
import dev.jorel.commandapi.exceptions.WrapperCommandSyntaxException;
import dev.jorel.commandapi.executors.*;
import org.bukkit.command.CommandSender;
@@ -462,6 +463,9 @@ default Impl executesRemoteConsole(RemoteConsoleResultingExecutionInfo info) {
* @return this command builder
*/
default Impl executesFeedbackForwarding(FeedbackForwardingCommandExecutor executor) {
+ if (CommandAPIBukkit.platform().activePlatform() != Platform.PAPER) {
+ throw new PlatformException("Attempted to use a FeedbackForwardingCommandExecutor on a non-paper platform (" + CommandAPIBukkit.platform().activePlatform().name() + ")!");
+ }
getExecutor().addNormalExecutor(executor);
return instance();
}
@@ -473,6 +477,9 @@ default Impl executesFeedbackForwarding(FeedbackForwardingCommandExecutor execut
* @return this command builder
*/
default Impl executesFeedbackForwarding(FeedbackForwardingExecutionInfo info) {
+ if (CommandAPIBukkit.platform().activePlatform() != Platform.PAPER) {
+ throw new PlatformException("Attempted to use a FeedbackForwardingExecutionInfo on a non-paper platform (" + CommandAPIBukkit.platform().activePlatform().name() + ")!");
+ }
getExecutor().addNormalExecutor(info);
return instance();
}
@@ -484,6 +491,9 @@ default Impl executesFeedbackForwarding(FeedbackForwardingExecutionInfo info) {
* @return this command builder
*/
default Impl executesFeedbackForwarding(FeedbackForwardingResultingCommandExecutor executor) {
+ if (CommandAPIBukkit.platform().activePlatform() != Platform.PAPER) {
+ throw new PlatformException("Attempted to use a FeedbackForwardingResultingCommandExecutor on a non-paper platform (" + CommandAPIBukkit.platform().activePlatform().name() + ")!");
+ }
getExecutor().addResultingExecutor(executor);
return instance();
}
@@ -495,6 +505,9 @@ default Impl executesFeedbackForwarding(FeedbackForwardingResultingCommandExecut
* @return this command builder
*/
default Impl executesFeedbackForwarding(FeedbackForwardingResultingExecutionInfo info) {
+ if (CommandAPIBukkit.platform().activePlatform() != Platform.PAPER) {
+ throw new PlatformException("Attempted to use a FeedbackForwardingResultingExecutionInfo on a non-paper platform (" + CommandAPIBukkit.platform().activePlatform().name() + ")!");
+ }
getExecutor().addResultingExecutor(info);
return instance();
}
diff --git a/commandapi-platforms/commandapi-bukkit/commandapi-bukkit-core/src/main/java/dev/jorel/commandapi/BukkitPlatform.java b/commandapi-platforms/commandapi-bukkit/commandapi-bukkit-core/src/main/java/dev/jorel/commandapi/BukkitPlatform.java
new file mode 100644
index 0000000000..d174c52d78
--- /dev/null
+++ b/commandapi-platforms/commandapi-bukkit/commandapi-bukkit-core/src/main/java/dev/jorel/commandapi/BukkitPlatform.java
@@ -0,0 +1,22 @@
+package dev.jorel.commandapi;
+
+import dev.jorel.commandapi.arguments.Argument;
+import dev.jorel.commandapi.commandsenders.BukkitCommandSender;
+import org.bukkit.command.CommandMap;
+import org.bukkit.command.CommandSender;
+
+public interface BukkitPlatform extends CommandAPIPlatform, CommandSender, Source> {
+
+ @Override
+ void onLoad(CommandAPIConfig> config);
+
+ CommandMap getCommandMap();
+
+ @Override
+ BukkitCommandSender extends CommandSender> wrapCommandSender(CommandSender sender);
+
+ Platform activePlatform();
+
+ CommandRegistrationStrategy createCommandRegistrationStrategy();
+
+}
diff --git a/commandapi-platforms/commandapi-bukkit/commandapi-bukkit-core/src/main/java/dev/jorel/commandapi/BukkitTooltip.java b/commandapi-platforms/commandapi-bukkit/commandapi-bukkit-core/src/main/java/dev/jorel/commandapi/BukkitTooltip.java
index 7b5500746d..52dff1d549 100644
--- a/commandapi-platforms/commandapi-bukkit/commandapi-bukkit-core/src/main/java/dev/jorel/commandapi/BukkitTooltip.java
+++ b/commandapi-platforms/commandapi-bukkit/commandapi-bukkit-core/src/main/java/dev/jorel/commandapi/BukkitTooltip.java
@@ -179,7 +179,7 @@ public static Tooltip ofAdventureComponent(S object, Component tooltip) {
* @return native minecraft message object which can be used natively by brigadier.
*/
public static Message messageFromBaseComponents(BaseComponent... components) {
- return CommandAPIBukkit.get().generateMessageFromJson(ComponentSerializer.toString(components));
+ return CommandAPIBukkit.get().getNMS().generateMessageFromJson(ComponentSerializer.toString(components));
}
/**
@@ -192,7 +192,7 @@ public static Message messageFromBaseComponents(BaseComponent... components) {
* @return native minecraft message object which can be used natively by brigadier.
*/
public static Message messageFromAdventureComponent(Component component) {
- return CommandAPIBukkit.get().generateMessageFromJson(GsonComponentSerializer.gson().serialize(component));
+ return CommandAPIBukkit.get().getNMS().generateMessageFromJson(GsonComponentSerializer.gson().serialize(component));
}
}
diff --git a/commandapi-platforms/commandapi-bukkit/commandapi-bukkit-core/src/main/java/dev/jorel/commandapi/CommandAPIBukkit.java b/commandapi-platforms/commandapi-bukkit/commandapi-bukkit-core/src/main/java/dev/jorel/commandapi/CommandAPIBukkit.java
index e18a59a98a..4c58fbc6b3 100644
--- a/commandapi-platforms/commandapi-bukkit/commandapi-bukkit-core/src/main/java/dev/jorel/commandapi/CommandAPIBukkit.java
+++ b/commandapi-platforms/commandapi-bukkit/commandapi-bukkit-core/src/main/java/dev/jorel/commandapi/CommandAPIBukkit.java
@@ -1,9 +1,32 @@
package dev.jorel.commandapi;
-import static dev.jorel.commandapi.preprocessor.Unimplemented.REASON.REQUIRES_CRAFTBUKKIT;
-import static dev.jorel.commandapi.preprocessor.Unimplemented.REASON.REQUIRES_CSS;
-import static dev.jorel.commandapi.preprocessor.Unimplemented.REASON.REQUIRES_MINECRAFT_SERVER;
-import static dev.jorel.commandapi.preprocessor.Unimplemented.REASON.VERSION_SPECIFIC_IMPLEMENTATION;
+import com.mojang.brigadier.CommandDispatcher;
+import com.mojang.brigadier.builder.LiteralArgumentBuilder;
+import com.mojang.brigadier.context.CommandContext;
+import com.mojang.brigadier.suggestion.SuggestionProvider;
+import com.mojang.brigadier.tree.LiteralCommandNode;
+import dev.jorel.commandapi.arguments.AbstractArgument;
+import dev.jorel.commandapi.arguments.Argument;
+import dev.jorel.commandapi.arguments.LiteralArgument;
+import dev.jorel.commandapi.arguments.MultiLiteralArgument;
+import dev.jorel.commandapi.arguments.SuggestionProviders;
+import dev.jorel.commandapi.commandsenders.AbstractCommandSender;
+import dev.jorel.commandapi.commandsenders.AbstractPlayer;
+import dev.jorel.commandapi.commandsenders.BukkitCommandSender;
+import dev.jorel.commandapi.nms.NMS;
+import org.bukkit.Bukkit;
+import org.bukkit.ChatColor;
+import org.bukkit.Keyed;
+import org.bukkit.command.CommandSender;
+import org.bukkit.command.PluginCommand;
+import org.bukkit.entity.Player;
+import org.bukkit.event.EventHandler;
+import org.bukkit.event.EventPriority;
+import org.bukkit.event.Listener;
+import org.bukkit.event.server.ServerLoadEvent;
+import org.bukkit.help.HelpTopic;
+import org.bukkit.inventory.Recipe;
+import org.bukkit.permissions.Permission;
import java.io.File;
import java.io.IOException;
@@ -20,110 +43,78 @@
import java.util.logging.Level;
import java.util.logging.Logger;
-import net.kyori.adventure.text.ComponentLike;
-import org.bukkit.Bukkit;
-import org.bukkit.ChatColor;
-import org.bukkit.Keyed;
-import org.bukkit.command.BlockCommandSender;
-import org.bukkit.command.CommandSender;
-import org.bukkit.command.ConsoleCommandSender;
-import org.bukkit.command.PluginCommand;
-import org.bukkit.command.ProxiedCommandSender;
-import org.bukkit.command.RemoteConsoleCommandSender;
-import org.bukkit.entity.Player;
-import org.bukkit.event.EventHandler;
-import org.bukkit.event.EventPriority;
-import org.bukkit.event.Listener;
-import org.bukkit.event.server.ServerLoadEvent;
-import org.bukkit.help.HelpTopic;
-import org.bukkit.inventory.Recipe;
-import org.bukkit.permissions.Permission;
-import org.bukkit.plugin.java.JavaPlugin;
-
-import com.mojang.brigadier.CommandDispatcher;
-import com.mojang.brigadier.builder.LiteralArgumentBuilder;
-import com.mojang.brigadier.context.CommandContext;
-import com.mojang.brigadier.exceptions.CommandSyntaxException;
-import com.mojang.brigadier.suggestion.SuggestionProvider;
-import com.mojang.brigadier.tree.LiteralCommandNode;
-
-import dev.jorel.commandapi.arguments.AbstractArgument;
-import dev.jorel.commandapi.arguments.Argument;
-import dev.jorel.commandapi.arguments.LiteralArgument;
-import dev.jorel.commandapi.arguments.MultiLiteralArgument;
-import dev.jorel.commandapi.arguments.SuggestionProviders;
-import dev.jorel.commandapi.commandsenders.AbstractCommandSender;
-import dev.jorel.commandapi.commandsenders.AbstractPlayer;
-import dev.jorel.commandapi.commandsenders.BukkitBlockCommandSender;
-import dev.jorel.commandapi.commandsenders.BukkitCommandSender;
-import dev.jorel.commandapi.commandsenders.BukkitConsoleCommandSender;
-import dev.jorel.commandapi.commandsenders.BukkitEntity;
-import dev.jorel.commandapi.commandsenders.BukkitFeedbackForwardingCommandSender;
-import dev.jorel.commandapi.commandsenders.BukkitNativeProxyCommandSender;
-import dev.jorel.commandapi.commandsenders.BukkitPlayer;
-import dev.jorel.commandapi.commandsenders.BukkitProxiedCommandSender;
-import dev.jorel.commandapi.commandsenders.BukkitRemoteConsoleCommandSender;
-import dev.jorel.commandapi.exceptions.WrapperCommandSyntaxException;
-import dev.jorel.commandapi.nms.NMS;
-import dev.jorel.commandapi.preprocessor.Unimplemented;
-import dev.jorel.commandapi.wrappers.NativeProxyCommandSender;
-import net.kyori.adventure.text.Component;
-import net.md_5.bungee.api.chat.BaseComponent;
-
-// CommandAPIBukkit is an CommandAPIPlatform, but also needs all of the methods from
-// NMS, so it implements NMS. Our implementation of CommandAPIBukkit is now derived
+// TODO: This comment seems incorrect since it no longer implements NMS
+// CommandAPIBukkit needs all of the methods fromNMS, so it implements NMS.
+// Our implementation of CommandAPIBukkit is now derived
// using the version handler (and thus, deferred to our NMS-specific implementations)
-public abstract class CommandAPIBukkit implements CommandAPIPlatform, CommandSender, Source>, NMS {
+public abstract class CommandAPIBukkit implements BukkitPlatform {
// References to utility classes
- private static CommandAPIBukkit> instance;
- private static InternalBukkitConfig config;
- private PaperImplementations paper;
+ // TODO: This seems odd, CommandAPIBukkit is instanceof BukkitPlatform, and these objects do always end
+ // up being set to the same value. It seems like only the CommandAPIBukkit variable is necessary?
+ private static BukkitPlatform> instance;
+ private static CommandAPIBukkit> bukkit;
+ protected static InternalBukkitConfig config;
+
+ protected NMS nms;
private CommandRegistrationStrategy commandRegistrationStrategy;
protected CommandAPIBukkit() {
- CommandAPIBukkit.instance = this;
+ CommandAPIBukkit.bukkit = this;
+ }
+
+ protected > void setInstance(T instance) {
+ CommandAPIBukkit.instance = instance;
}
@SuppressWarnings("unchecked")
public static CommandAPIBukkit get() {
- if(CommandAPIBukkit.instance != null) {
- return (CommandAPIBukkit) instance;
- } else {
- throw new IllegalStateException("Tried to access CommandAPIBukkit instance, but it was null! Are you using CommandAPI features before calling CommandAPI#onLoad?");
+ if (CommandAPIBukkit.bukkit != null) {
+ return (CommandAPIBukkit) bukkit;
}
+ throw new IllegalStateException("Tried to access CommandAPIBukkit instance, but it was null! Are you using CommandAPI features before calling CommandAPI#onLoad?");
}
- public PaperImplementations getPaper() {
- return paper;
+ @SuppressWarnings("unchecked")
+ public static > T platform() {
+ if (CommandAPIBukkit.instance != null) {
+ return (T) instance;
+ }
+ throw new IllegalStateException("Tried to access the Bukkit platform, but it was null! Are you using CommandAPI features before calling CommandPAI#onLoad?");
+ }
+
+ public NMS getNMS() {
+ if (nms != null) {
+ return nms;
+ }
+ throw new IllegalStateException("Tried to access NMS instance, but it was null! Are you using CommandAPI features before calling CommandAPI#onLoad?");
}
public static InternalBukkitConfig getConfiguration() {
- if(config != null) {
+ if (config != null) {
return config;
- } else {
- throw new IllegalStateException("Tried to access InternalBukkitConfig, but it was null! Did you load the CommandAPI properly with CommandAPI#onLoad?");
}
+ throw new IllegalStateException("Tried to access InternalBukkitConfig, but it was null! Did you load the CommandAPI properly with CommandAPI#onLoad?");
}
public CommandRegistrationStrategy getCommandRegistrationStrategy() {
return commandRegistrationStrategy;
}
- @Override
- public void onLoad(CommandAPIConfig> config) {
- if(config instanceof CommandAPIBukkitConfig bukkitConfig) {
- CommandAPIBukkit.setInternalConfig(new InternalBukkitConfig(bukkitConfig));
- } else {
- CommandAPI.logError("CommandAPIBukkit was loaded with non-Bukkit config!");
- CommandAPI.logError("Attempts to access Bukkit-specific config variables will fail!");
- }
-
+ public void onLoad() {
checkDependencies();
}
-
- private static void setInternalConfig(InternalBukkitConfig internalBukkitConfig) {
- CommandAPIBukkit.config = internalBukkitConfig;
+
+ protected void stopCommandRegistrations() {
+ // Prevent command registration after server has loaded
+ Bukkit.getServer().getPluginManager().registerEvents(new Listener() {
+ // We want the lowest priority so that we always get to this first, in case a dependent plugin is using
+ // CommandAPI features in their own ServerLoadEvent listener for some reason
+ @EventHandler(priority = EventPriority.LOWEST)
+ public void onServerLoad(ServerLoadEvent event) {
+ CommandAPI.stopCommandRegistration();
+ }
+ }, getConfiguration().getPlugin());
}
private void checkDependencies() {
@@ -143,74 +134,9 @@ private void checkDependencies() {
}
}
- try {
- Class.forName("net.kyori.adventure.text.Component");
- CommandAPI.logNormal("Hooked into Adventure for AdventureChat/AdventureChatComponents");
- } catch (ClassNotFoundException e) {
- if (CommandAPI.getConfiguration().hasVerboseOutput()) {
- CommandAPI.logWarning("Could not hook into Adventure for AdventureChat/AdventureChatComponents");
- }
- }
-
- boolean isPaperPresent = false;
-
- try {
- Class.forName("io.papermc.paper.event.server.ServerResourcesReloadedEvent");
- isPaperPresent = true;
- CommandAPI.logNormal("Hooked into Paper for paper-specific API implementations");
- } catch (ClassNotFoundException e) {
- isPaperPresent = false;
- if (CommandAPI.getConfiguration().hasVerboseOutput()) {
- CommandAPI.logWarning("Could not hook into Paper for /minecraft:reload. Consider upgrading to Paper: https://papermc.io/");
- }
- }
-
- boolean isFoliaPresent = false;
-
- try {
- Class.forName("io.papermc.paper.threadedregions.RegionizedServerInitEvent");
- isFoliaPresent = true;
- CommandAPI.logNormal("Hooked into Folia for folia-specific API implementations");
- CommandAPI.logNormal("Folia support is still in development. Please report any issues to the CommandAPI developers!");
- } catch (ClassNotFoundException e) {
- isFoliaPresent = false;
- }
-
- paper = new PaperImplementations(isPaperPresent, isFoliaPresent, this);
-
commandRegistrationStrategy = createCommandRegistrationStrategy();
}
- @Override
- public void onEnable() {
- JavaPlugin plugin = config.getPlugin();
-
- new Schedulers(paper).scheduleSyncDelayed(plugin, () -> {
- commandRegistrationStrategy.runTasksAfterServerStart();
-
- if (paper.isFoliaPresent()) {
- CommandAPI.logNormal("Skipping initial datapack reloading because Folia was detected");
- } else {
- if (!getConfiguration().skipReloadDatapacks()) {
- reloadDataPacks();
- }
- }
- updateHelpForCommands(CommandAPI.getRegisteredCommands());
- }, 0L);
-
- // Prevent command registration after server has loaded
- Bukkit.getServer().getPluginManager().registerEvents(new Listener() {
- // We want the lowest priority so that we always get to this first, in case a dependent plugin is using
- // CommandAPI features in their own ServerLoadEvent listener for some reason
- @EventHandler(priority = EventPriority.LOWEST)
- public void onServerLoad(ServerLoadEvent event) {
- CommandAPI.stopCommandRegistration();
- }
- }, getConfiguration().getPlugin());
-
- paper.registerReloadHandler(plugin);
- }
-
/*
* Generate and register help topics
*/
@@ -275,7 +201,7 @@ private String[] getUsageList(RegisteredCommand currentCommand) {
return usages;
}
- void updateHelpForCommands(List commands) {
+ protected void updateHelpForCommands(List commands) {
Map helpTopicsToAdd = new HashMap<>();
Set namespacedCommandNames = new HashSet<>();
@@ -325,7 +251,7 @@ void updateHelpForCommands(List commands) {
sb.append(ChatColor.GOLD).append("Aliases: ").append(ChatColor.WHITE).append(String.join(", ", command.aliases()));
}
- helpTopic = generateHelpTopic(commandPrefix, shortDescription, sb.toString().trim(), permission);
+ helpTopic = nms.generateHelpTopic(commandPrefix, shortDescription, sb.toString().trim(), permission);
}
helpTopicsToAdd.put(commandPrefix, helpTopic);
@@ -346,7 +272,7 @@ void updateHelpForCommands(List commands) {
// Don't override the plugin help topic
commandPrefix = generateCommandHelpPrefix(alias);
- helpTopic = generateHelpTopic(commandPrefix, shortDescription, currentAliasSb.toString().trim(), permission);
+ helpTopic = nms.generateHelpTopic(commandPrefix, shortDescription, currentAliasSb.toString().trim(), permission);
// Namespaced commands shouldn't have a help topic, we should save the namespaced alias name
namespacedCommandNames.add(generateCommandHelpPrefix(alias, command.namespace()));
@@ -356,11 +282,11 @@ void updateHelpForCommands(List commands) {
}
// We have to use helpTopics.put (instead of .addTopic) because we're overwriting an existing help topic, not adding a new help topic
- getHelpMap().putAll(helpTopicsToAdd);
+ nms.getHelpMap().putAll(helpTopicsToAdd);
// We also have to remove help topics for namespaced command names
for (String namespacedCommandName : namespacedCommandNames) {
- getHelpMap().remove(namespacedCommandName);
+ nms.getHelpMap().remove(namespacedCommandName);
}
}
@@ -369,57 +295,6 @@ public void onDisable() {
// Nothing to do
}
- @Override
- @Unimplemented(because = REQUIRES_CSS)
- public abstract BukkitCommandSender extends CommandSender> getSenderForCommand(CommandContext cmdCtx, boolean forceNative);
-
- @Override
- @Unimplemented(because = REQUIRES_CSS)
- public abstract BukkitCommandSender extends CommandSender> getCommandSenderFromCommandSource(Source cs);
-
- @Override
- @Unimplemented(because = REQUIRES_CRAFTBUKKIT)
- public abstract Source getBrigadierSourceFromCommandSender(AbstractCommandSender extends CommandSender> sender);
-
- public BukkitCommandSender extends CommandSender> wrapCommandSender(CommandSender sender) {
- if (sender instanceof BlockCommandSender block) {
- return new BukkitBlockCommandSender(block);
- }
- if (sender instanceof ConsoleCommandSender console) {
- return new BukkitConsoleCommandSender(console);
- }
- if (sender instanceof Player player) {
- return new BukkitPlayer(player);
- }
- if (sender instanceof org.bukkit.entity.Entity entity) {
- return new BukkitEntity(entity);
- }
- if (sender instanceof NativeProxyCommandSender nativeProxy) {
- return new BukkitNativeProxyCommandSender(nativeProxy);
- }
- if (sender instanceof ProxiedCommandSender proxy) {
- return new BukkitProxiedCommandSender(proxy);
- }
- if (sender instanceof RemoteConsoleCommandSender remote) {
- return new BukkitRemoteConsoleCommandSender(remote);
- }
- if (paper.isPaperPresent()) {
- final Class extends CommandSender> FeedbackForwardingSender = paper.getFeedbackForwardingCommandSender();
- if (FeedbackForwardingSender.isInstance(sender)) {
- // We literally cannot type this at compile-time, so let's use a placeholder CommandSender instance
- return new BukkitFeedbackForwardingCommandSender(FeedbackForwardingSender.cast(sender));
- }
-
- final Class extends CommandSender> NullCommandSender = paper.getNullCommandSender();
- if (NullCommandSender != null && NullCommandSender.isInstance(sender)) {
- // Since this should only be during a function load, this is just a placeholder to evade the exception.
- return null;
- }
-
- }
- throw new RuntimeException("Failed to wrap CommandSender " + sender + " to a CommandAPI-compatible BukkitCommandSender");
- }
-
@Override
public void registerPermission(String string) {
try {
@@ -429,10 +304,6 @@ public void registerPermission(String string) {
}
}
- @Override
- @Unimplemented(because = REQUIRES_MINECRAFT_SERVER)
- public abstract SuggestionProvider getSuggestionProvider(SuggestionProviders suggestionProvider);
-
@Override
public void preCommandRegistration(String commandName) {
// Warn if the command we're registering already exists in this plugin's
@@ -504,7 +375,7 @@ private void unregisterInternal(String commandName, boolean unregisterNamespaces
if (!CommandAPI.canRegister()) {
// Help topics (from Bukkit and CommandAPI) are only setup after plugins enable, so we only need to worry
// about removing them once the server is loaded.
- getHelpMap().remove("/" + commandName);
+ nms.getHelpMap().remove("/" + commandName);
// Notify players
for (Player p : Bukkit.getOnlinePlayers()) {
@@ -518,14 +389,6 @@ public final CommandDispatcher getBrigadierDispatcher() {
return commandRegistrationStrategy.getBrigadierDispatcher();
}
- @Override
- @Unimplemented(because = {REQUIRES_MINECRAFT_SERVER, VERSION_SPECIFIC_IMPLEMENTATION})
- public abstract void createDispatcherFile(File file, CommandDispatcher brigadierDispatcher) throws IOException;
-
- @Unimplemented(because = REQUIRES_MINECRAFT_SERVER) // What are the odds?
- public abstract T getMinecraftServer();
-
- @Override
public CommandAPILogger getLogger() {
return new DefaultLogger();
}
@@ -543,10 +406,6 @@ public void severe(String message, Throwable exception) {
}
}
- @Override
- @Unimplemented(because = VERSION_SPECIFIC_IMPLEMENTATION)
- public abstract void reloadDataPacks();
-
@Override
public void updateRequirements(AbstractPlayer> player) {
((Player) player.getSource()).updateCommands();
@@ -566,39 +425,6 @@ public Argument newConcreteLiteralArgument(String nodeName, String liter
public CommandAPICommand newConcreteCommandAPICommand(CommandMetaData meta) {
return new CommandAPICommand(meta);
}
-
- /**
- * Forces a command to return a success value of 0
- *
- * @param message Description of the error message, formatted as an array of base components
- * @return a {@link WrapperCommandSyntaxException} that wraps Brigadier's
- * {@link CommandSyntaxException}
- */
- public static WrapperCommandSyntaxException failWithBaseComponents(BaseComponent... message) {
- return CommandAPI.failWithMessage(BukkitTooltip.messageFromBaseComponents(message));
- }
-
- /**
- * Forces a command to return a success value of 0
- *
- * @param message Description of the error message, formatted as an adventure chat component
- * @return a {@link WrapperCommandSyntaxException} that wraps Brigadier's
- * {@link CommandSyntaxException}
- */
- public static WrapperCommandSyntaxException failWithAdventureComponent(Component message) {
- return CommandAPI.failWithMessage(BukkitTooltip.messageFromAdventureComponent(message));
- }
-
- /**
- * Forces a command to return a success value of 0
- *
- * @param message Description of the error message, formatted as an adventure chat component
- * @return a {@link WrapperCommandSyntaxException} that wraps Brigadier's
- * {@link CommandSyntaxException}
- */
- public static WrapperCommandSyntaxException failWithAdventureComponent(ComponentLike message) {
- return CommandAPI.failWithMessage(BukkitTooltip.messageFromAdventureComponent(message.asComponent()));
- }
/**
* Initializes the CommandAPI's implementation of an NBT API. If you are shading
@@ -619,8 +445,8 @@ public static WrapperCommandSyntaxException failWithAdventureComponent(Component
public static void initializeNBTAPI(Class nbtContainerClass, Function nbtContainerConstructor) {
getConfiguration().lateInitializeNBT(nbtContainerClass, nbtContainerConstructor);
}
-
- protected void registerBukkitRecipesSafely(Iterator recipes) {
+
+ public void registerBukkitRecipesSafely(Iterator recipes) {
Recipe recipe;
while (recipes.hasNext()) {
recipe = recipes.next();
@@ -655,4 +481,38 @@ boolean isInvalidNamespace(String commandName, String namespace) {
}
return false;
}
+
+ /*
+ * Implement several methods from CommandAPIPlatform that just need to delegate to NMS
+ */
+
+ @Override
+ public BukkitCommandSender extends CommandSender> getSenderForCommand(CommandContext cmdCtx, boolean forceNative) {
+ return nms.getSenderForCommand(cmdCtx, forceNative);
+ }
+
+ @Override
+ public Source getBrigadierSourceFromCommandSender(AbstractCommandSender extends CommandSender> sender) {
+ return nms.getBrigadierSourceFromCommandSender(sender);
+ }
+
+ @Override
+ public SuggestionProvider getSuggestionProvider(SuggestionProviders suggestionProvider) {
+ return nms.getSuggestionProvider(suggestionProvider);
+ }
+
+ @Override
+ public BukkitCommandSender extends CommandSender> getCommandSenderFromCommandSource(Source css) {
+ return nms.getCommandSenderFromCommandSource(css);
+ }
+
+ @Override
+ public void createDispatcherFile(File file, CommandDispatcher dispatcher) throws IOException {
+ nms.createDispatcherFile(file, dispatcher);
+ }
+
+ @Override
+ public void reloadDataPacks() {
+ nms.reloadDataPacks();
+ }
}
diff --git a/commandapi-platforms/commandapi-bukkit/commandapi-bukkit-core/src/main/java/dev/jorel/commandapi/CommandAPIBukkitConfig.java b/commandapi-platforms/commandapi-bukkit/commandapi-bukkit-core/src/main/java/dev/jorel/commandapi/CommandAPIBukkitConfig.java
index 5944f50ebb..0050dc39a8 100644
--- a/commandapi-platforms/commandapi-bukkit/commandapi-bukkit-core/src/main/java/dev/jorel/commandapi/CommandAPIBukkitConfig.java
+++ b/commandapi-platforms/commandapi-bukkit/commandapi-bukkit-core/src/main/java/dev/jorel/commandapi/CommandAPIBukkitConfig.java
@@ -1,17 +1,15 @@
package dev.jorel.commandapi;
-import io.papermc.paper.event.server.ServerResourcesReloadedEvent;
import org.bukkit.plugin.java.JavaPlugin;
/**
* A class that contains information needed to configure the CommandAPI on Bukkit-based servers.
*/
-public class CommandAPIBukkitConfig extends CommandAPIConfig {
+public abstract class CommandAPIBukkitConfig> extends CommandAPIConfig {
JavaPlugin plugin;
// Default configuration
- boolean shouldHookPaperReload = true;
boolean skipReloadDatapacks = false;
/**
@@ -25,31 +23,6 @@ public CommandAPIBukkitConfig(JavaPlugin plugin) {
this.plugin = plugin;
super.setNamespace("minecraft");
}
-
- /**
- * Sets the CommandAPI to hook into Paper's {@link ServerResourcesReloadedEvent} when available
- * if true. This helps CommandAPI commands to work in datapacks after {@code /minecraft:reload}
- * is run.
- *
- * @param hooked whether the CommandAPI should hook into Paper's {@link ServerResourcesReloadedEvent}
- * @return this CommandAPIBukkitConfig
- */
- public CommandAPIBukkitConfig shouldHookPaperReload(boolean hooked) {
- this.shouldHookPaperReload = hooked;
- return this;
- }
-
- /**
- * Sets whether the CommandAPI should skip its datapack reload step after the server
- * has finished loading. This does not skip reloading of datapacks when invoked manually
- * when {@link #shouldHookPaperReload(boolean)} is set.
- * @param skip whether the CommandAPI should skip reloading datapacks when the server has finished loading
- * @return this CommandAPIBukkitConfig
- */
- public CommandAPIBukkitConfig skipReloadDatapacks(boolean skip) {
- this.skipReloadDatapacks = skip;
- return this;
- }
/**
* Sets whether the CommandAPI should use Mojang mappings as opposed to Spigot's mappings
@@ -60,43 +33,44 @@ public CommandAPIBukkitConfig skipReloadDatapacks(boolean skip) {
* @deprecated Use the `commandapi-bukkit-shade-mojang-mapped` depdendency instead of `commandapi-bukkit-shade` if you want to use mojang mappings.
*/
@Deprecated(since = "9.4.1", forRemoval = true)
- public CommandAPIBukkitConfig useMojangMappings(boolean useMojangMappings) {
+ public T useMojangMappings(boolean useMojangMappings) {
// A little unconventional, but we really don't need to implement mojang mapping flags
// all over the place, we want it to have as minimal interaction as possible so it can
// be used by the test framework as a global static flag. Also, we want to set this
// as early as possible in the CommandAPI's loading sequence, including before loading
// an NMS class, which setup reflection based on `USING_MOJANG_MAPPINGS`.
SafeVarHandle.USING_MOJANG_MAPPINGS = useMojangMappings;
- return this;
+ return instance();
}
/**
* @return this CommandAPIBukkitConfig
*/
- public CommandAPIBukkitConfig usePluginNamespace() {
+ public T usePluginNamespace() {
super.setNamespace(plugin.getName().toLowerCase());
super.usePluginNamespace = true;
- return this;
+ return instance();
}
@Override
- public CommandAPIBukkitConfig setNamespace(String namespace) {
+ public T setNamespace(String namespace) {
if (namespace == null) {
throw new NullPointerException("Default namespace can't be null!");
}
if (namespace.isEmpty()) {
CommandAPI.logNormal("Did not set namespace to an empty value! Namespace '" + super.namespace + "' is used as the default namespace!");
- return this;
+ return instance();
}
if (!CommandAPIHandler.NAMESPACE_PATTERN.matcher(namespace).matches()) {
CommandAPI.logNormal("Did not set namespace to the provided '" + namespace + "' namespace because only 0-9, a-z, underscores, periods and hyphens are allowed!");
- return this;
+ return instance();
}
return super.setNamespace(namespace);
}
- @Override
- public CommandAPIBukkitConfig instance() {
- return this;
+ public T skipReloadDatapacks(boolean skip) {
+ this.skipReloadDatapacks = skip;
+ return instance();
}
+
}
diff --git a/commandapi-platforms/commandapi-bukkit/commandapi-bukkit-core/src/main/java/dev/jorel/commandapi/Converter.java b/commandapi-platforms/commandapi-bukkit/commandapi-bukkit-core/src/main/java/dev/jorel/commandapi/Converter.java
index 58dedd464f..84b8a35002 100644
--- a/commandapi-platforms/commandapi-bukkit/commandapi-bukkit-core/src/main/java/dev/jorel/commandapi/Converter.java
+++ b/commandapi-platforms/commandapi-bukkit/commandapi-bukkit-core/src/main/java/dev/jorel/commandapi/Converter.java
@@ -196,7 +196,7 @@ private static void convertPluginCommand(JavaPlugin plugin, String commandName,
org.bukkit.command.Command command = plugin.getCommand(commandName);
if (command == null) {
- command = CommandAPIBukkit.get().getSimpleCommandMap()
+ command = CommandAPIBukkit.get().getNMS().getSimpleCommandMap()
.getCommand(commandName);
}
diff --git a/commandapi-platforms/commandapi-bukkit/commandapi-bukkit-core/src/main/java/dev/jorel/commandapi/InternalBukkitConfig.java b/commandapi-platforms/commandapi-bukkit/commandapi-bukkit-core/src/main/java/dev/jorel/commandapi/InternalBukkitConfig.java
index 371f24fe46..2ea3acdf31 100644
--- a/commandapi-platforms/commandapi-bukkit/commandapi-bukkit-core/src/main/java/dev/jorel/commandapi/InternalBukkitConfig.java
+++ b/commandapi-platforms/commandapi-bukkit/commandapi-bukkit-core/src/main/java/dev/jorel/commandapi/InternalBukkitConfig.java
@@ -1,6 +1,5 @@
package dev.jorel.commandapi;
-import io.papermc.paper.event.server.ServerResourcesReloadedEvent;
import org.bukkit.plugin.java.JavaPlugin;
/**
@@ -8,13 +7,10 @@
* only ever read from, nothing is ever written to it. That's why there's only
* getter methods.
*/
-public class InternalBukkitConfig extends InternalConfig {
+public abstract class InternalBukkitConfig extends InternalConfig {
// The plugin that is loading the CommandAPI
private final JavaPlugin plugin;
- // Whether to hook into paper's reload event to reload datapacks when /minecraft:reload is run
- private final boolean shouldHookPaperReload;
-
private final boolean skipReloadDatapacks;
/**
@@ -22,10 +18,9 @@ public class InternalBukkitConfig extends InternalConfig {
*
* @param config The configuration to use to set up this internal configuration
*/
- public InternalBukkitConfig(CommandAPIBukkitConfig config) {
+ public InternalBukkitConfig(CommandAPIBukkitConfig extends CommandAPIBukkitConfig>> config) {
super(config);
this.plugin = config.plugin;
- this.shouldHookPaperReload = config.shouldHookPaperReload;
this.skipReloadDatapacks = config.skipReloadDatapacks;
}
@@ -36,21 +31,11 @@ public JavaPlugin getPlugin() {
return plugin;
}
- /**
- * @return Whether the CommandAPI should hook into Paper's {@link ServerResourcesReloadedEvent}
- * when available to perform the CommandAPI's custom datapack reload when {@code /minecraft:reload}
- * is run.
- */
- public boolean shouldHookPaperReload() {
- return shouldHookPaperReload;
- }
-
-
-
/**
* @return Whether the CommandAPI should skip reloading datapacks when the server has finished loading
*/
public boolean skipReloadDatapacks() {
return skipReloadDatapacks;
}
+
}
diff --git a/commandapi-platforms/commandapi-bukkit/commandapi-bukkit-core/src/main/java/dev/jorel/commandapi/PaperImplementations.java b/commandapi-platforms/commandapi-bukkit/commandapi-bukkit-core/src/main/java/dev/jorel/commandapi/PaperImplementations.java
deleted file mode 100644
index c9f04d1b31..0000000000
--- a/commandapi-platforms/commandapi-bukkit/commandapi-bukkit-core/src/main/java/dev/jorel/commandapi/PaperImplementations.java
+++ /dev/null
@@ -1,155 +0,0 @@
-package dev.jorel.commandapi;
-
-import com.mojang.brigadier.exceptions.SimpleCommandExceptionType;
-import dev.jorel.commandapi.exceptions.WrapperCommandSyntaxException;
-import dev.jorel.commandapi.nms.NMS;
-import io.papermc.paper.event.server.ServerResourcesReloadedEvent;
-import net.kyori.adventure.text.Component;
-import net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer;
-import net.md_5.bungee.api.chat.TextComponent;
-import org.bukkit.Bukkit;
-import org.bukkit.ChatColor;
-import org.bukkit.command.CommandMap;
-import org.bukkit.command.CommandSender;
-import org.bukkit.entity.Player;
-import org.bukkit.event.EventHandler;
-import org.bukkit.event.Listener;
-import org.bukkit.plugin.Plugin;
-
-public class PaperImplementations {
-
- private final boolean isPaperPresent;
- private final boolean isFoliaPresent;
- private final NMS> nmsInstance;
- private final Class extends CommandSender> feedbackForwardingCommandSender;
- private final Class extends CommandSender> nullCommandSender;
-
- /**
- * Constructs a PaperImplementations object
- *
- * @param isPaperPresent Whether this is a Paper server or not
- * @param isFoliaPresent Whether this is a Folia server or not
- * @param nmsInstance The instance of NMS
- */
- @SuppressWarnings("unchecked")
- public PaperImplementations(boolean isPaperPresent, boolean isFoliaPresent, NMS> nmsInstance) {
- this.isPaperPresent = isPaperPresent;
- this.isFoliaPresent = isFoliaPresent;
- this.nmsInstance = nmsInstance;
-
- Class extends CommandSender> tempFeedbackForwardingCommandSender = null;
- try {
- tempFeedbackForwardingCommandSender = (Class extends CommandSender>) Class.forName("io.papermc.paper.commands.FeedbackForwardingSender");
- } catch (ClassNotFoundException e) {
- // uhh...
- }
-
- this.feedbackForwardingCommandSender = tempFeedbackForwardingCommandSender;
-
- Class extends CommandSender> tempNullCommandSender = null;
- try {
- tempNullCommandSender = (Class extends CommandSender>) Class.forName("io.papermc.paper.brigadier.NullCommandSender");
- } catch (ClassNotFoundException e) {
- // uhh...
- }
-
- this.nullCommandSender = tempNullCommandSender;
- }
-
- /**
- * Hooks into Paper's {@link ServerResourcesReloadedEvent} to detect if
- * {@code /minecraft:reload} is called, and registers a reload handler that
- * automatically calls the CommandAPI's internal datapack reloading function
- *
- * @param plugin the plugin that the CommandAPI is being used from
- */
- public void registerReloadHandler(Plugin plugin) {
- if (isPaperPresent) {
- Bukkit.getServer().getPluginManager().registerEvents(new Listener() {
- @EventHandler
- public void onServerReloadResources(ServerResourcesReloadedEvent event) {
- // This event is called after Paper is done with everything command related
- // which means we can put commands back
- CommandAPIBukkit.get().getCommandRegistrationStrategy().preReloadDataPacks();
-
- // Normally, the reloadDataPacks() method is responsible for updating commands for
- // online players. If, however, datapacks aren't supposed to be reloaded upon /minecraft:reload
- // we have to do this manually here. This won't have any effect on Spigot and Paper version prior to
- // paper-1.20.6-65
- if (!CommandAPIBukkit.getConfiguration().shouldHookPaperReload()) {
- for (Player player : Bukkit.getOnlinePlayers()) {
- player.updateCommands();
- }
- return;
- }
- CommandAPI.logNormal("/minecraft:reload detected. Reloading CommandAPI commands!");
- nmsInstance.reloadDataPacks();
- }
-
- }, plugin);
- CommandAPI.logNormal("Hooked into Paper ServerResourcesReloadedEvent");
- } else {
- CommandAPI.logNormal("Did not hook into Paper ServerResourcesReloadedEvent");
- }
- }
-
- /**
- * @return Bukkit's {@link CommandMap}
- */
- public CommandMap getCommandMap() {
- if (isPaperPresent) {
- return Bukkit.getServer().getCommandMap();
- } else {
- return nmsInstance.getSimpleCommandMap();
- }
- }
-
- /**
- * @return whether we're using paper or not
- */
- public boolean isPaperPresent() {
- return this.isPaperPresent;
- }
-
- /**
- * @return whether we're using folia or not
- */
- public boolean isFoliaPresent() {
- return this.isFoliaPresent;
- }
-
- /**
- * @return a class reference pointing to {@code io.papermc.paper.commands.FeedbackForwardingSender}
- */
- public Class extends CommandSender> getFeedbackForwardingCommandSender() {
- return this.feedbackForwardingCommandSender;
- }
-
- /**
- * @return a class reference pointing to {@code io.papermc.paper.brigadier.NullCommandSender}
- */
- public Class extends CommandSender> getNullCommandSender() {
- return this.nullCommandSender;
- }
-
- /**
- * Builds a {@link WrapperCommandSyntaxException} from a message with colour codes like {@link ChatColor} or using the § symbol.
- *
- * @param message the error message to be displayed
- * @return A {@link WrapperCommandSyntaxException} with the given message as error message
- */
- public WrapperCommandSyntaxException getExceptionFromString(String message) {
- if (isPaperPresent) {
- // I don't know why, but if you set this to an Object first, then cast it to a Component,
- // running this code is totally fine on a Spigot server. If you don't do this (e.g. set
- // it to a Component or inline this), for some reason Java throws a stronk at runtime.
- // For your sanity and the sanity of whoever has to maintain this in the future, please
- // DO NOT try to simplify this statement:
- final Object adventureComponent = LegacyComponentSerializer.legacySection().deserialize(message);
- return new WrapperCommandSyntaxException(new SimpleCommandExceptionType(BukkitTooltip.messageFromAdventureComponent((Component) adventureComponent)).create());
- } else {
- return new WrapperCommandSyntaxException(new SimpleCommandExceptionType(BukkitTooltip.messageFromBaseComponents(TextComponent.fromLegacyText(message))).create());
- }
- }
-
-}
diff --git a/commandapi-platforms/commandapi-bukkit/commandapi-bukkit-core/src/main/java/dev/jorel/commandapi/Platform.java b/commandapi-platforms/commandapi-bukkit/commandapi-bukkit-core/src/main/java/dev/jorel/commandapi/Platform.java
new file mode 100644
index 0000000000..e4cad3d7a3
--- /dev/null
+++ b/commandapi-platforms/commandapi-bukkit/commandapi-bukkit-core/src/main/java/dev/jorel/commandapi/Platform.java
@@ -0,0 +1,16 @@
+package dev.jorel.commandapi;
+
+/**
+ * The Bukkit platform that is used at runtime
+ */
+public enum Platform {
+ /**
+ * Represents the Spigot platform, uses module commandapi-spigot
+ */
+ SPIGOT,
+
+ /**
+ * Represents the Paper platform, uses module commandapi-paper
+ */
+ PAPER
+}
diff --git a/commandapi-platforms/commandapi-bukkit/commandapi-bukkit-core/src/main/java/dev/jorel/commandapi/arguments/AdvancementArgument.java b/commandapi-platforms/commandapi-bukkit/commandapi-bukkit-core/src/main/java/dev/jorel/commandapi/arguments/AdvancementArgument.java
index 11d724fd16..ae08f1f21c 100644
--- a/commandapi-platforms/commandapi-bukkit/commandapi-bukkit-core/src/main/java/dev/jorel/commandapi/arguments/AdvancementArgument.java
+++ b/commandapi-platforms/commandapi-bukkit/commandapi-bukkit-core/src/main/java/dev/jorel/commandapi/arguments/AdvancementArgument.java
@@ -40,7 +40,7 @@ public class AdvancementArgument extends SafeOverrideableArgument Advancement parseArgument(CommandContext cmdCtx, String key, CommandArguments previousArgs) throws CommandSyntaxException {
- return CommandAPIBukkit.get().getAdvancement(cmdCtx, key);
+ return CommandAPIBukkit.get().getNMS().getAdvancement(cmdCtx, key);
}
}
diff --git a/commandapi-platforms/commandapi-bukkit/commandapi-bukkit-core/src/main/java/dev/jorel/commandapi/arguments/AngleArgument.java b/commandapi-platforms/commandapi-bukkit/commandapi-bukkit-core/src/main/java/dev/jorel/commandapi/arguments/AngleArgument.java
index 52b5e6066b..e3826aff49 100644
--- a/commandapi-platforms/commandapi-bukkit/commandapi-bukkit-core/src/main/java/dev/jorel/commandapi/arguments/AngleArgument.java
+++ b/commandapi-platforms/commandapi-bukkit/commandapi-bukkit-core/src/main/java/dev/jorel/commandapi/arguments/AngleArgument.java
@@ -44,7 +44,7 @@ public class AngleArgument extends SafeOverrideableArgument {
* @param nodeName the name of the node for argument
*/
public AngleArgument(String nodeName) {
- super(nodeName, CommandAPIBukkit.get()._ArgumentAngle(), String::valueOf);
+ super(nodeName, CommandAPIBukkit.get().getNMS()._ArgumentAngle(), String::valueOf);
}
@Override
@@ -60,6 +60,6 @@ public CommandAPIArgumentType getArgumentType() {
@Override
public Float parseArgument(CommandContext cmdCtx, String key, CommandArguments previousArgs)
throws CommandSyntaxException {
- return CommandAPIBukkit.get().getAngle(cmdCtx, key);
+ return CommandAPIBukkit.get().getNMS().getAngle(cmdCtx, key);
}
}
diff --git a/commandapi-platforms/commandapi-bukkit/commandapi-bukkit-core/src/main/java/dev/jorel/commandapi/arguments/AxisArgument.java b/commandapi-platforms/commandapi-bukkit/commandapi-bukkit-core/src/main/java/dev/jorel/commandapi/arguments/AxisArgument.java
index 2cdc750b7b..1fa5297711 100644
--- a/commandapi-platforms/commandapi-bukkit/commandapi-bukkit-core/src/main/java/dev/jorel/commandapi/arguments/AxisArgument.java
+++ b/commandapi-platforms/commandapi-bukkit/commandapi-bukkit-core/src/main/java/dev/jorel/commandapi/arguments/AxisArgument.java
@@ -45,7 +45,7 @@ public class AxisArgument extends SafeOverrideableArgument e.stream().map(Axis::name).map(String::toLowerCase).reduce(String::concat).get());
}
@@ -63,6 +63,6 @@ public CommandAPIArgumentType getArgumentType() {
public EnumSet parseArgument(CommandContext cmdCtx, String key,
CommandArguments previousArgs)
throws CommandSyntaxException {
- return CommandAPIBukkit.get().getAxis(cmdCtx, key);
+ return CommandAPIBukkit.get().getNMS().getAxis(cmdCtx, key);
}
}
diff --git a/commandapi-platforms/commandapi-bukkit/commandapi-bukkit-core/src/main/java/dev/jorel/commandapi/arguments/BiomeArgument.java b/commandapi-platforms/commandapi-bukkit/commandapi-bukkit-core/src/main/java/dev/jorel/commandapi/arguments/BiomeArgument.java
index 942153960f..e4af93ed2f 100644
--- a/commandapi-platforms/commandapi-bukkit/commandapi-bukkit-core/src/main/java/dev/jorel/commandapi/arguments/BiomeArgument.java
+++ b/commandapi-platforms/commandapi-bukkit/commandapi-bukkit-core/src/main/java/dev/jorel/commandapi/arguments/BiomeArgument.java
@@ -43,7 +43,7 @@ public class BiomeArgument extends SafeOverrideableArgument implem
* @param nodeName the name of the node for argument
*/
public BiomeArgument(String nodeName) {
- super(nodeName, CommandAPIBukkit.get()._ArgumentSyntheticBiome(),
+ super(nodeName, CommandAPIBukkit.get().getNMS()._ArgumentSyntheticBiome(),
((Function) Biome::name).andThen(String::toLowerCase));
}
@@ -65,7 +65,7 @@ public SuggestionProviders getSuggestionProvider() {
@Override
public Biome parseArgument(CommandContext cmdCtx, String key, CommandArguments previousArgs)
throws CommandSyntaxException {
- return (Biome) CommandAPIBukkit.get().getBiome(cmdCtx, key, ArgumentSubType.BIOME_BIOME);
+ return (Biome) CommandAPIBukkit.get().getNMS().getBiome(cmdCtx, key, ArgumentSubType.BIOME_BIOME);
}
/**
@@ -82,7 +82,7 @@ public static class NamespacedKey extends SafeOverrideableArgument org.bukkit.NamespacedKey parseArgument(CommandContext cmdCtx,
String key, CommandArguments previousArgs) throws CommandSyntaxException {
- return (org.bukkit.NamespacedKey) CommandAPIBukkit.get().getBiome(cmdCtx, key, ArgumentSubType.BIOME_NAMESPACEDKEY);
+ return (org.bukkit.NamespacedKey) CommandAPIBukkit.get().getNMS().getBiome(cmdCtx, key, ArgumentSubType.BIOME_NAMESPACEDKEY);
}
}
diff --git a/commandapi-platforms/commandapi-bukkit/commandapi-bukkit-core/src/main/java/dev/jorel/commandapi/arguments/BlockPredicateArgument.java b/commandapi-platforms/commandapi-bukkit/commandapi-bukkit-core/src/main/java/dev/jorel/commandapi/arguments/BlockPredicateArgument.java
index 7ede3fc9ed..97179aade8 100644
--- a/commandapi-platforms/commandapi-bukkit/commandapi-bukkit-core/src/main/java/dev/jorel/commandapi/arguments/BlockPredicateArgument.java
+++ b/commandapi-platforms/commandapi-bukkit/commandapi-bukkit-core/src/main/java/dev/jorel/commandapi/arguments/BlockPredicateArgument.java
@@ -45,7 +45,7 @@ public class BlockPredicateArgument extends Argument {
* @param nodeName the name of the node for argument
*/
public BlockPredicateArgument(String nodeName) {
- super(nodeName, CommandAPIBukkit.get()._ArgumentBlockPredicate());
+ super(nodeName, CommandAPIBukkit.get().getNMS()._ArgumentBlockPredicate());
}
@Override
@@ -61,6 +61,6 @@ public CommandAPIArgumentType getArgumentType() {
@Override
public Predicate> parseArgument(CommandContext cmdCtx, String key, CommandArguments previousArgs)
throws CommandSyntaxException {
- return CommandAPIBukkit.get().getBlockPredicate(cmdCtx, key);
+ return CommandAPIBukkit.get().getNMS().getBlockPredicate(cmdCtx, key);
}
}
diff --git a/commandapi-platforms/commandapi-bukkit/commandapi-bukkit-core/src/main/java/dev/jorel/commandapi/arguments/BlockStateArgument.java b/commandapi-platforms/commandapi-bukkit/commandapi-bukkit-core/src/main/java/dev/jorel/commandapi/arguments/BlockStateArgument.java
index 20f514abbf..b113865e6b 100644
--- a/commandapi-platforms/commandapi-bukkit/commandapi-bukkit-core/src/main/java/dev/jorel/commandapi/arguments/BlockStateArgument.java
+++ b/commandapi-platforms/commandapi-bukkit/commandapi-bukkit-core/src/main/java/dev/jorel/commandapi/arguments/BlockStateArgument.java
@@ -42,7 +42,7 @@ public class BlockStateArgument extends Argument {
* @param nodeName the name of the node for argument
*/
public BlockStateArgument(String nodeName) {
- super(nodeName, CommandAPIBukkit.get()._ArgumentBlockState());
+ super(nodeName, CommandAPIBukkit.get().getNMS()._ArgumentBlockState());
}
@Override
@@ -58,6 +58,6 @@ public CommandAPIArgumentType getArgumentType() {
@Override
public BlockData parseArgument(CommandContext cmdCtx, String key, CommandArguments previousArgs)
throws CommandSyntaxException {
- return CommandAPIBukkit.get().getBlockState(cmdCtx, key);
+ return CommandAPIBukkit.get().getNMS().getBlockState(cmdCtx, key);
}
}
diff --git a/commandapi-platforms/commandapi-bukkit/commandapi-bukkit-core/src/main/java/dev/jorel/commandapi/arguments/CommandArgument.java b/commandapi-platforms/commandapi-bukkit/commandapi-bukkit-core/src/main/java/dev/jorel/commandapi/arguments/CommandArgument.java
index faf0543255..965f6a261b 100644
--- a/commandapi-platforms/commandapi-bukkit/commandapi-bukkit-core/src/main/java/dev/jorel/commandapi/arguments/CommandArgument.java
+++ b/commandapi-platforms/commandapi-bukkit/commandapi-bukkit-core/src/main/java/dev/jorel/commandapi/arguments/CommandArgument.java
@@ -46,7 +46,7 @@ private void applySuggestions() {
super.replaceSuggestions((info, builder) -> {
// Extract information
CommandSender sender = info.sender();
- CommandMap commandMap = CommandAPIBukkit.get().getSimpleCommandMap();
+ CommandMap commandMap = CommandAPIBukkit.get().getNMS().getSimpleCommandMap();
String command = info.currentArg();
// Setup context for errors
@@ -194,7 +194,7 @@ public CommandAPIArgumentType getArgumentType() {
public CommandResult parseArgument(CommandContext cmdCtx, String key, CommandArguments previousArgs) throws CommandSyntaxException {
// Extract information
String command = cmdCtx.getArgument(key, String.class);
- CommandMap commandMap = CommandAPIBukkit.get().getSimpleCommandMap();
+ CommandMap commandMap = CommandAPIBukkit.get().getNMS().getSimpleCommandMap();
CommandSender sender = CommandAPIBukkit.get().getSenderForCommand(cmdCtx, false).getSource();
StringReader context = new StringReader(command);
diff --git a/commandapi-platforms/commandapi-bukkit/commandapi-bukkit-core/src/main/java/dev/jorel/commandapi/arguments/EnchantmentArgument.java b/commandapi-platforms/commandapi-bukkit/commandapi-bukkit-core/src/main/java/dev/jorel/commandapi/arguments/EnchantmentArgument.java
index 83ef7848fb..a32220d9f0 100644
--- a/commandapi-platforms/commandapi-bukkit/commandapi-bukkit-core/src/main/java/dev/jorel/commandapi/arguments/EnchantmentArgument.java
+++ b/commandapi-platforms/commandapi-bukkit/commandapi-bukkit-core/src/main/java/dev/jorel/commandapi/arguments/EnchantmentArgument.java
@@ -40,7 +40,7 @@ public class EnchantmentArgument extends SafeOverrideableArgument Enchantment parseArgument(CommandContext cmdCtx, String key, CommandArguments previousArgs) throws CommandSyntaxException {
- return CommandAPIBukkit.get().getEnchantment(cmdCtx, key);
+ return CommandAPIBukkit.get().getNMS().getEnchantment(cmdCtx, key);
}
}
diff --git a/commandapi-platforms/commandapi-bukkit/commandapi-bukkit-core/src/main/java/dev/jorel/commandapi/arguments/EntitySelectorArgument.java b/commandapi-platforms/commandapi-bukkit/commandapi-bukkit-core/src/main/java/dev/jorel/commandapi/arguments/EntitySelectorArgument.java
index 3e01bc0064..9584c1f61a 100644
--- a/commandapi-platforms/commandapi-bukkit/commandapi-bukkit-core/src/main/java/dev/jorel/commandapi/arguments/EntitySelectorArgument.java
+++ b/commandapi-platforms/commandapi-bukkit/commandapi-bukkit-core/src/main/java/dev/jorel/commandapi/arguments/EntitySelectorArgument.java
@@ -54,7 +54,7 @@ public static class OneEntity extends Argument {
* @param nodeName the name of the node for this argument
*/
public OneEntity(String nodeName) {
- super(nodeName, CommandAPIBukkit.get()._ArgumentEntity(ArgumentSubType.ENTITYSELECTOR_ONE_ENTITY));
+ super(nodeName, CommandAPIBukkit.get().getNMS()._ArgumentEntity(ArgumentSubType.ENTITYSELECTOR_ONE_ENTITY));
}
@Override
@@ -69,7 +69,7 @@ public CommandAPIArgumentType getArgumentType() {
@Override
public Entity parseArgument(CommandContext cmdCtx, String key, CommandArguments previousArgs) throws CommandSyntaxException {
- return (Entity) CommandAPIBukkit.get().getEntitySelector(cmdCtx, key, ArgumentSubType.ENTITYSELECTOR_ONE_ENTITY, true);
+ return (Entity) CommandAPIBukkit.get().getNMS().getEntitySelector(cmdCtx, key, ArgumentSubType.ENTITYSELECTOR_ONE_ENTITY, true);
}
@Override
@@ -91,7 +91,7 @@ public static class OnePlayer extends Argument {
* @param nodeName the name of the node for this argument
*/
public OnePlayer(String nodeName) {
- super(nodeName, CommandAPIBukkit.get()._ArgumentEntity(ArgumentSubType.ENTITYSELECTOR_ONE_PLAYER));
+ super(nodeName, CommandAPIBukkit.get().getNMS()._ArgumentEntity(ArgumentSubType.ENTITYSELECTOR_ONE_PLAYER));
}
@Override
@@ -106,7 +106,7 @@ public CommandAPIArgumentType getArgumentType() {
@Override
public Player parseArgument(CommandContext cmdCtx, String key, CommandArguments previousArgs) throws CommandSyntaxException {
- return (Player) CommandAPIBukkit.get().getEntitySelector(cmdCtx, key, ArgumentSubType.ENTITYSELECTOR_ONE_PLAYER, true);
+ return (Player) CommandAPIBukkit.get().getNMS().getEntitySelector(cmdCtx, key, ArgumentSubType.ENTITYSELECTOR_ONE_PLAYER, true);
}
@Override
@@ -140,7 +140,7 @@ public ManyEntities(String nodeName) {
* @param allowEmpty whether this entity selector should allow no entities found, or should throw an error instead
*/
public ManyEntities(String nodeName, boolean allowEmpty) {
- super(nodeName, CommandAPIBukkit.get()._ArgumentEntity(ArgumentSubType.ENTITYSELECTOR_MANY_ENTITIES));
+ super(nodeName, CommandAPIBukkit.get().getNMS()._ArgumentEntity(ArgumentSubType.ENTITYSELECTOR_MANY_ENTITIES));
this.allowEmpty = allowEmpty;
}
@@ -157,7 +157,7 @@ public CommandAPIArgumentType getArgumentType() {
@SuppressWarnings("unchecked")
@Override
public Collection parseArgument(CommandContext cmdCtx, String key, CommandArguments previousArgs) throws CommandSyntaxException {
- return (Collection) CommandAPIBukkit.get().getEntitySelector(cmdCtx, key, ArgumentSubType.ENTITYSELECTOR_MANY_ENTITIES, this.allowEmpty);
+ return (Collection) CommandAPIBukkit.get().getNMS().getEntitySelector(cmdCtx, key, ArgumentSubType.ENTITYSELECTOR_MANY_ENTITIES, this.allowEmpty);
}
@SuppressWarnings("unchecked")
@@ -196,7 +196,7 @@ public ManyPlayers(String nodeName) {
* * @param allowEmpty whether this entity selector should allow no entities found, or should throw an error instead
*/
public ManyPlayers(String nodeName, boolean allowEmpty) {
- super(nodeName, CommandAPIBukkit.get()._ArgumentEntity(ArgumentSubType.ENTITYSELECTOR_MANY_PLAYERS));
+ super(nodeName, CommandAPIBukkit.get().getNMS()._ArgumentEntity(ArgumentSubType.ENTITYSELECTOR_MANY_PLAYERS));
this.allowEmpty = allowEmpty;
}
@@ -213,7 +213,7 @@ public CommandAPIArgumentType getArgumentType() {
@SuppressWarnings("unchecked")
@Override
public Collection parseArgument(CommandContext cmdCtx, String key, CommandArguments previousArgs) throws CommandSyntaxException {
- return (Collection) CommandAPIBukkit.get().getEntitySelector(cmdCtx, key, ArgumentSubType.ENTITYSELECTOR_MANY_PLAYERS, allowEmpty);
+ return (Collection) CommandAPIBukkit.get().getNMS().getEntitySelector(cmdCtx, key, ArgumentSubType.ENTITYSELECTOR_MANY_PLAYERS, allowEmpty);
}
@SuppressWarnings("unchecked")
diff --git a/commandapi-platforms/commandapi-bukkit/commandapi-bukkit-core/src/main/java/dev/jorel/commandapi/arguments/EntityTypeArgument.java b/commandapi-platforms/commandapi-bukkit/commandapi-bukkit-core/src/main/java/dev/jorel/commandapi/arguments/EntityTypeArgument.java
index 8ebd9b04bd..e912803611 100644
--- a/commandapi-platforms/commandapi-bukkit/commandapi-bukkit-core/src/main/java/dev/jorel/commandapi/arguments/EntityTypeArgument.java
+++ b/commandapi-platforms/commandapi-bukkit/commandapi-bukkit-core/src/main/java/dev/jorel/commandapi/arguments/EntityTypeArgument.java
@@ -38,7 +38,7 @@ public class EntityTypeArgument extends SafeOverrideableArgument EntityType parseArgument(CommandContext cmdCtx, String key, CommandArguments previousArgs) throws CommandSyntaxException {
- return CommandAPIBukkit.get().getEntityType(cmdCtx, key);
+ return CommandAPIBukkit.get().getNMS().getEntityType(cmdCtx, key);
}
}
diff --git a/commandapi-platforms/commandapi-bukkit/commandapi-bukkit-core/src/main/java/dev/jorel/commandapi/arguments/FloatRangeArgument.java b/commandapi-platforms/commandapi-bukkit/commandapi-bukkit-core/src/main/java/dev/jorel/commandapi/arguments/FloatRangeArgument.java
index fd3bb278fa..98b065e2fb 100644
--- a/commandapi-platforms/commandapi-bukkit/commandapi-bukkit-core/src/main/java/dev/jorel/commandapi/arguments/FloatRangeArgument.java
+++ b/commandapi-platforms/commandapi-bukkit/commandapi-bukkit-core/src/main/java/dev/jorel/commandapi/arguments/FloatRangeArgument.java
@@ -38,7 +38,7 @@ public class FloatRangeArgument extends SafeOverrideableArgument FloatRange parseArgument(CommandContext cmdCtx, String key, CommandArguments previousArgs) throws CommandSyntaxException {
- return CommandAPIBukkit.get().getFloatRange(cmdCtx, key);
+ return CommandAPIBukkit.get().getNMS().getFloatRange(cmdCtx, key);
}
}
diff --git a/commandapi-platforms/commandapi-bukkit/commandapi-bukkit-core/src/main/java/dev/jorel/commandapi/arguments/FunctionArgument.java b/commandapi-platforms/commandapi-bukkit/commandapi-bukkit-core/src/main/java/dev/jorel/commandapi/arguments/FunctionArgument.java
index 9bf736c111..b2dd155b7e 100644
--- a/commandapi-platforms/commandapi-bukkit/commandapi-bukkit-core/src/main/java/dev/jorel/commandapi/arguments/FunctionArgument.java
+++ b/commandapi-platforms/commandapi-bukkit/commandapi-bukkit-core/src/main/java/dev/jorel/commandapi/arguments/FunctionArgument.java
@@ -41,7 +41,7 @@ public class FunctionArgument extends SafeOverrideableArgument n));
+ super(nodeName, CommandAPIBukkit.get().getNMS()._ArgumentTag(), fromKey(n -> n));
}
@Override
@@ -61,6 +61,6 @@ public CommandAPIArgumentType getArgumentType() {
@Override
public FunctionWrapper[] parseArgument(CommandContext cmdCtx, String key, CommandArguments previousArgs) throws CommandSyntaxException {
- return CommandAPIBukkit.get().getFunction(cmdCtx, key);
+ return CommandAPIBukkit.get().getNMS().getFunction(cmdCtx, key);
}
}
diff --git a/commandapi-platforms/commandapi-bukkit/commandapi-bukkit-core/src/main/java/dev/jorel/commandapi/arguments/IntegerRangeArgument.java b/commandapi-platforms/commandapi-bukkit/commandapi-bukkit-core/src/main/java/dev/jorel/commandapi/arguments/IntegerRangeArgument.java
index 85bfc8f28e..289c5ebe6e 100644
--- a/commandapi-platforms/commandapi-bukkit/commandapi-bukkit-core/src/main/java/dev/jorel/commandapi/arguments/IntegerRangeArgument.java
+++ b/commandapi-platforms/commandapi-bukkit/commandapi-bukkit-core/src/main/java/dev/jorel/commandapi/arguments/IntegerRangeArgument.java
@@ -38,7 +38,7 @@ public class IntegerRangeArgument extends SafeOverrideableArgument IntegerRange parseArgument(CommandContext cmdCtx, String key, CommandArguments previousArgs) throws CommandSyntaxException {
- return CommandAPIBukkit.get().getIntRange(cmdCtx, key);
+ return CommandAPIBukkit.get().getNMS().getIntRange(cmdCtx, key);
}
}
diff --git a/commandapi-platforms/commandapi-bukkit/commandapi-bukkit-core/src/main/java/dev/jorel/commandapi/arguments/ItemStackArgument.java b/commandapi-platforms/commandapi-bukkit/commandapi-bukkit-core/src/main/java/dev/jorel/commandapi/arguments/ItemStackArgument.java
index edfa6369c8..b68aca41b4 100644
--- a/commandapi-platforms/commandapi-bukkit/commandapi-bukkit-core/src/main/java/dev/jorel/commandapi/arguments/ItemStackArgument.java
+++ b/commandapi-platforms/commandapi-bukkit/commandapi-bukkit-core/src/main/java/dev/jorel/commandapi/arguments/ItemStackArgument.java
@@ -38,7 +38,7 @@ public class ItemStackArgument extends SafeOverrideableArgument ItemStack parseArgument(CommandContext cmdCtx, String key, CommandArguments previousArgs) throws CommandSyntaxException {
- return CommandAPIBukkit.get().getItemStack(cmdCtx, key);
+ return CommandAPIBukkit.get().getNMS().getItemStack(cmdCtx, key);
}
}
diff --git a/commandapi-platforms/commandapi-bukkit/commandapi-bukkit-core/src/main/java/dev/jorel/commandapi/arguments/ItemStackPredicateArgument.java b/commandapi-platforms/commandapi-bukkit/commandapi-bukkit-core/src/main/java/dev/jorel/commandapi/arguments/ItemStackPredicateArgument.java
index 1b6183d9c2..8b952a28c8 100644
--- a/commandapi-platforms/commandapi-bukkit/commandapi-bukkit-core/src/main/java/dev/jorel/commandapi/arguments/ItemStackPredicateArgument.java
+++ b/commandapi-platforms/commandapi-bukkit/commandapi-bukkit-core/src/main/java/dev/jorel/commandapi/arguments/ItemStackPredicateArgument.java
@@ -41,7 +41,7 @@ public class ItemStackPredicateArgument extends Argument {
* @param nodeName the name of the node for this argument
*/
public ItemStackPredicateArgument(String nodeName) {
- super(nodeName, CommandAPIBukkit.get()._ArgumentItemPredicate());
+ super(nodeName, CommandAPIBukkit.get().getNMS()._ArgumentItemPredicate());
}
@Override
@@ -56,6 +56,6 @@ public CommandAPIArgumentType getArgumentType() {
@Override
public Predicate parseArgument(CommandContext cmdCtx, String key, CommandArguments previousArgs) throws CommandSyntaxException {
- return CommandAPIBukkit.get().getItemStackPredicate(cmdCtx, key);
+ return CommandAPIBukkit.get().getNMS().getItemStackPredicate(cmdCtx, key);
}
}
diff --git a/commandapi-platforms/commandapi-bukkit/commandapi-bukkit-core/src/main/java/dev/jorel/commandapi/arguments/Location2DArgument.java b/commandapi-platforms/commandapi-bukkit/commandapi-bukkit-core/src/main/java/dev/jorel/commandapi/arguments/Location2DArgument.java
index 3e6f2de758..e7f65d9e37 100644
--- a/commandapi-platforms/commandapi-bukkit/commandapi-bukkit-core/src/main/java/dev/jorel/commandapi/arguments/Location2DArgument.java
+++ b/commandapi-platforms/commandapi-bukkit/commandapi-bukkit-core/src/main/java/dev/jorel/commandapi/arguments/Location2DArgument.java
@@ -59,8 +59,8 @@ public Location2DArgument(String nodeName, LocationType type) {
* @param centerPosition whether LocationType.PRECISE_POSITION should center the position of the location within a block
*/
public Location2DArgument(String nodeName, LocationType type, boolean centerPosition) {
- super(nodeName, type == LocationType.BLOCK_POSITION ? CommandAPIBukkit.get()._ArgumentPosition2D()
- : CommandAPIBukkit.get()._ArgumentVec2(centerPosition),
+ super(nodeName, type == LocationType.BLOCK_POSITION ? CommandAPIBukkit.get().getNMS()._ArgumentPosition2D()
+ : CommandAPIBukkit.get().getNMS()._ArgumentVec2(centerPosition),
type == LocationType.BLOCK_POSITION ? (Location2D l) -> l.getBlockX() + " " + l.getBlockZ()
: (Location2D l) -> l.getX() + " " + l.getZ());
isPrecise = type == LocationType.PRECISE_POSITION;
@@ -89,7 +89,7 @@ public CommandAPIArgumentType getArgumentType() {
@Override
public Location2D parseArgument(CommandContext cmdCtx, String key, CommandArguments previousArgs) throws CommandSyntaxException {
return isPrecise ?
- CommandAPIBukkit.get().getLocation2DPrecise(cmdCtx, key) :
- CommandAPIBukkit.get().getLocation2DBlock(cmdCtx, key);
+ CommandAPIBukkit.get().getNMS().getLocation2DPrecise(cmdCtx, key) :
+ CommandAPIBukkit.get().getNMS().getLocation2DBlock(cmdCtx, key);
}
}
diff --git a/commandapi-platforms/commandapi-bukkit/commandapi-bukkit-core/src/main/java/dev/jorel/commandapi/arguments/LocationArgument.java b/commandapi-platforms/commandapi-bukkit/commandapi-bukkit-core/src/main/java/dev/jorel/commandapi/arguments/LocationArgument.java
index fe477594f9..a85806c78e 100644
--- a/commandapi-platforms/commandapi-bukkit/commandapi-bukkit-core/src/main/java/dev/jorel/commandapi/arguments/LocationArgument.java
+++ b/commandapi-platforms/commandapi-bukkit/commandapi-bukkit-core/src/main/java/dev/jorel/commandapi/arguments/LocationArgument.java
@@ -58,8 +58,8 @@ public LocationArgument(String nodeName, LocationType type) {
* @param centerPosition whether LocationType.PRECISE_POSITION should center the position of the location within a block
*/
public LocationArgument(String nodeName, LocationType type, boolean centerPosition) {
- super(nodeName, type == LocationType.BLOCK_POSITION ? CommandAPIBukkit.get()._ArgumentPosition()
- : CommandAPIBukkit.get()._ArgumentVec3(centerPosition),
+ super(nodeName, type == LocationType.BLOCK_POSITION ? CommandAPIBukkit.get().getNMS()._ArgumentPosition()
+ : CommandAPIBukkit.get().getNMS()._ArgumentVec3(centerPosition),
type == LocationType.BLOCK_POSITION
? (Location l) -> l.getBlockX() + " " + l.getBlockY() + " " + l.getBlockZ()
: (Location l) -> l.getX() + " " + l.getY() + " " + l.getZ());
@@ -89,7 +89,7 @@ public CommandAPIArgumentType getArgumentType() {
@Override
public Location parseArgument(CommandContext cmdCtx, String key, CommandArguments previousArgs) throws CommandSyntaxException {
return isPrecise ?
- CommandAPIBukkit.get().getLocationPrecise(cmdCtx, key) :
- CommandAPIBukkit.get().getLocationBlock(cmdCtx, key);
+ CommandAPIBukkit.get().getNMS().getLocationPrecise(cmdCtx, key) :
+ CommandAPIBukkit.get().getNMS().getLocationBlock(cmdCtx, key);
}
}
diff --git a/commandapi-platforms/commandapi-bukkit/commandapi-bukkit-core/src/main/java/dev/jorel/commandapi/arguments/LootTableArgument.java b/commandapi-platforms/commandapi-bukkit/commandapi-bukkit-core/src/main/java/dev/jorel/commandapi/arguments/LootTableArgument.java
index ae14acb56c..8d32327669 100644
--- a/commandapi-platforms/commandapi-bukkit/commandapi-bukkit-core/src/main/java/dev/jorel/commandapi/arguments/LootTableArgument.java
+++ b/commandapi-platforms/commandapi-bukkit/commandapi-bukkit-core/src/main/java/dev/jorel/commandapi/arguments/LootTableArgument.java
@@ -39,7 +39,7 @@ public class LootTableArgument extends SafeOverrideableArgument LootTable parseArgument(CommandContext cmdCtx, String key, CommandArguments previousArgs) throws CommandSyntaxException {
- return CommandAPIBukkit.get().getLootTable(cmdCtx, key);
+ return CommandAPIBukkit.get().getNMS().getLootTable(cmdCtx, key);
}
}
diff --git a/commandapi-platforms/commandapi-bukkit/commandapi-bukkit-core/src/main/java/dev/jorel/commandapi/arguments/MathOperationArgument.java b/commandapi-platforms/commandapi-bukkit/commandapi-bukkit-core/src/main/java/dev/jorel/commandapi/arguments/MathOperationArgument.java
index 1df682386f..d5dfb712ab 100644
--- a/commandapi-platforms/commandapi-bukkit/commandapi-bukkit-core/src/main/java/dev/jorel/commandapi/arguments/MathOperationArgument.java
+++ b/commandapi-platforms/commandapi-bukkit/commandapi-bukkit-core/src/main/java/dev/jorel/commandapi/arguments/MathOperationArgument.java
@@ -38,7 +38,7 @@ public class MathOperationArgument extends SafeOverrideableArgument MathOperation parseArgument(CommandContext cmdCtx, String key, CommandArguments previousArgs) throws CommandSyntaxException {
- return CommandAPIBukkit.get().getMathOperation(cmdCtx, key);
+ return CommandAPIBukkit.get().getNMS().getMathOperation(cmdCtx, key);
}
}
diff --git a/commandapi-platforms/commandapi-bukkit/commandapi-bukkit-core/src/main/java/dev/jorel/commandapi/arguments/NBTCompoundArgument.java b/commandapi-platforms/commandapi-bukkit/commandapi-bukkit-core/src/main/java/dev/jorel/commandapi/arguments/NBTCompoundArgument.java
index efefb6b326..df6ca60240 100644
--- a/commandapi-platforms/commandapi-bukkit/commandapi-bukkit-core/src/main/java/dev/jorel/commandapi/arguments/NBTCompoundArgument.java
+++ b/commandapi-platforms/commandapi-bukkit/commandapi-bukkit-core/src/main/java/dev/jorel/commandapi/arguments/NBTCompoundArgument.java
@@ -40,7 +40,7 @@ public class NBTCompoundArgument extends SafeOverrideableArgument<
* @param nodeName the name of the node for this argument
*/
public NBTCompoundArgument(String nodeName) {
- super(nodeName, CommandAPIBukkit.get()._ArgumentNBTCompound(), NBTContainer::toString);
+ super(nodeName, CommandAPIBukkit.get().getNMS()._ArgumentNBTCompound(), NBTContainer::toString);
if (CommandAPI.getConfiguration().getNBTContainerClass() == null || CommandAPI.getConfiguration().getNBTContainerConstructor() == null) {
throw new NullPointerException(
"The NBTCompoundArgument hasn't been initialized properly! Use CommandAPIConfig.initializeNBTAPI() in your onLoad() method");
@@ -62,6 +62,6 @@ public CommandAPIArgumentType getArgumentType() {
@Override
public NBTContainer parseArgument(CommandContext cmdCtx, String key, CommandArguments previousArgs)
throws CommandSyntaxException {
- return (NBTContainer) CommandAPIBukkit.get().getNBTCompound(cmdCtx, key, CommandAPI.getConfiguration().getNBTContainerConstructor());
+ return (NBTContainer) CommandAPIBukkit.get().getNMS().getNBTCompound(cmdCtx, key, CommandAPI.getConfiguration().getNBTContainerConstructor());
}
}
diff --git a/commandapi-platforms/commandapi-bukkit/commandapi-bukkit-core/src/main/java/dev/jorel/commandapi/arguments/NamespacedKeyArgument.java b/commandapi-platforms/commandapi-bukkit/commandapi-bukkit-core/src/main/java/dev/jorel/commandapi/arguments/NamespacedKeyArgument.java
index 0f09352c65..3e7fc81636 100644
--- a/commandapi-platforms/commandapi-bukkit/commandapi-bukkit-core/src/main/java/dev/jorel/commandapi/arguments/NamespacedKeyArgument.java
+++ b/commandapi-platforms/commandapi-bukkit/commandapi-bukkit-core/src/main/java/dev/jorel/commandapi/arguments/NamespacedKeyArgument.java
@@ -43,7 +43,7 @@ public class NamespacedKeyArgument extends SafeOverrideableArgument NamespacedKey parseArgument(CommandContext cmdCtx, String key, CommandArguments previousArgs)
throws CommandSyntaxException {
- return CommandAPIBukkit.get().getMinecraftKey(cmdCtx, key);
+ return CommandAPIBukkit.get().getNMS().getMinecraftKey(cmdCtx, key);
}
}
diff --git a/commandapi-platforms/commandapi-bukkit/commandapi-bukkit-core/src/main/java/dev/jorel/commandapi/arguments/ObjectiveArgument.java b/commandapi-platforms/commandapi-bukkit/commandapi-bukkit-core/src/main/java/dev/jorel/commandapi/arguments/ObjectiveArgument.java
index 6192e830bf..ee270e10d0 100644
--- a/commandapi-platforms/commandapi-bukkit/commandapi-bukkit-core/src/main/java/dev/jorel/commandapi/arguments/ObjectiveArgument.java
+++ b/commandapi-platforms/commandapi-bukkit/commandapi-bukkit-core/src/main/java/dev/jorel/commandapi/arguments/ObjectiveArgument.java
@@ -38,7 +38,7 @@ public class ObjectiveArgument extends SafeOverrideableArgument Objective parseArgument(CommandContext cmdCtx, String key, CommandArguments previousArgs) throws CommandSyntaxException {
- return CommandAPIBukkit.get().getObjective(cmdCtx, key);
+ return CommandAPIBukkit.get().getNMS().getObjective(cmdCtx, key);
}
}
diff --git a/commandapi-platforms/commandapi-bukkit/commandapi-bukkit-core/src/main/java/dev/jorel/commandapi/arguments/ObjectiveCriteriaArgument.java b/commandapi-platforms/commandapi-bukkit/commandapi-bukkit-core/src/main/java/dev/jorel/commandapi/arguments/ObjectiveCriteriaArgument.java
index 9c5e8ad0c2..06e3cf8bb8 100644
--- a/commandapi-platforms/commandapi-bukkit/commandapi-bukkit-core/src/main/java/dev/jorel/commandapi/arguments/ObjectiveCriteriaArgument.java
+++ b/commandapi-platforms/commandapi-bukkit/commandapi-bukkit-core/src/main/java/dev/jorel/commandapi/arguments/ObjectiveCriteriaArgument.java
@@ -37,7 +37,7 @@ public class ObjectiveCriteriaArgument extends Argument {
* @param nodeName the name of the node for this argument
*/
public ObjectiveCriteriaArgument(String nodeName) {
- super(nodeName, CommandAPIBukkit.get()._ArgumentScoreboardCriteria());
+ super(nodeName, CommandAPIBukkit.get().getNMS()._ArgumentScoreboardCriteria());
}
@Override
@@ -52,6 +52,6 @@ public CommandAPIArgumentType getArgumentType() {
@Override
public String parseArgument(CommandContext cmdCtx, String key, CommandArguments previousArgs) throws CommandSyntaxException {
- return CommandAPIBukkit.get().getObjectiveCriteria(cmdCtx, key);
+ return CommandAPIBukkit.get().getNMS().getObjectiveCriteria(cmdCtx, key);
}
}
diff --git a/commandapi-platforms/commandapi-bukkit/commandapi-bukkit-core/src/main/java/dev/jorel/commandapi/arguments/OfflinePlayerArgument.java b/commandapi-platforms/commandapi-bukkit/commandapi-bukkit-core/src/main/java/dev/jorel/commandapi/arguments/OfflinePlayerArgument.java
index 34321f2976..4f1c3abe88 100644
--- a/commandapi-platforms/commandapi-bukkit/commandapi-bukkit-core/src/main/java/dev/jorel/commandapi/arguments/OfflinePlayerArgument.java
+++ b/commandapi-platforms/commandapi-bukkit/commandapi-bukkit-core/src/main/java/dev/jorel/commandapi/arguments/OfflinePlayerArgument.java
@@ -40,7 +40,7 @@ public class OfflinePlayerArgument extends SafeOverrideableArgument OfflinePlayer parseArgument(CommandContext cmdCtx, String key, CommandArguments previousArgs) throws CommandSyntaxException {
- return CommandAPIBukkit.get().getOfflinePlayer(cmdCtx, key);
+ return CommandAPIBukkit.get().getNMS().getOfflinePlayer(cmdCtx, key);
}
}
diff --git a/commandapi-platforms/commandapi-bukkit/commandapi-bukkit-core/src/main/java/dev/jorel/commandapi/arguments/ParticleArgument.java b/commandapi-platforms/commandapi-bukkit/commandapi-bukkit-core/src/main/java/dev/jorel/commandapi/arguments/ParticleArgument.java
index aa6f1a74a4..36186b73b8 100644
--- a/commandapi-platforms/commandapi-bukkit/commandapi-bukkit-core/src/main/java/dev/jorel/commandapi/arguments/ParticleArgument.java
+++ b/commandapi-platforms/commandapi-bukkit/commandapi-bukkit-core/src/main/java/dev/jorel/commandapi/arguments/ParticleArgument.java
@@ -39,7 +39,7 @@ public class ParticleArgument extends SafeOverrideableArgument ParticleData> parseArgument(CommandContext cmdCtx, String key, CommandArguments previousArgs) throws CommandSyntaxException {
- return CommandAPIBukkit.get().getParticle(cmdCtx, key);
+ return CommandAPIBukkit.get().getNMS().getParticle(cmdCtx, key);
}
}
diff --git a/commandapi-platforms/commandapi-bukkit/commandapi-bukkit-core/src/main/java/dev/jorel/commandapi/arguments/PlayerArgument.java b/commandapi-platforms/commandapi-bukkit/commandapi-bukkit-core/src/main/java/dev/jorel/commandapi/arguments/PlayerArgument.java
index 220bc56f3f..c3e9238e0e 100644
--- a/commandapi-platforms/commandapi-bukkit/commandapi-bukkit-core/src/main/java/dev/jorel/commandapi/arguments/PlayerArgument.java
+++ b/commandapi-platforms/commandapi-bukkit/commandapi-bukkit-core/src/main/java/dev/jorel/commandapi/arguments/PlayerArgument.java
@@ -43,7 +43,7 @@ public class PlayerArgument extends SafeOverrideableArgument {
* @param nodeName the name of the node for this argument
*/
public PlayerArgument(String nodeName) {
- super(nodeName, CommandAPIBukkit.get()._ArgumentProfile(), Player::getName);
+ super(nodeName, CommandAPIBukkit.get().getNMS()._ArgumentProfile(), Player::getName);
}
@Override
@@ -58,6 +58,6 @@ public CommandAPIArgumentType getArgumentType() {
@Override
public Player parseArgument(CommandContext cmdCtx, String key, CommandArguments previousArgs) throws CommandSyntaxException {
- return CommandAPIBukkit.get().getPlayer(cmdCtx, key);
+ return CommandAPIBukkit.get().getNMS().getPlayer(cmdCtx, key);
}
}
diff --git a/commandapi-platforms/commandapi-bukkit/commandapi-bukkit-core/src/main/java/dev/jorel/commandapi/arguments/PotionEffectArgument.java b/commandapi-platforms/commandapi-bukkit/commandapi-bukkit-core/src/main/java/dev/jorel/commandapi/arguments/PotionEffectArgument.java
index 45985192e6..3e97970c15 100644
--- a/commandapi-platforms/commandapi-bukkit/commandapi-bukkit-core/src/main/java/dev/jorel/commandapi/arguments/PotionEffectArgument.java
+++ b/commandapi-platforms/commandapi-bukkit/commandapi-bukkit-core/src/main/java/dev/jorel/commandapi/arguments/PotionEffectArgument.java
@@ -39,7 +39,7 @@ public class PotionEffectArgument extends SafeOverrideableArgument PotionEffectType parseArgument(CommandContext cmdCtx, String key, CommandArguments previousArgs) throws CommandSyntaxException {
- return (PotionEffectType) CommandAPIBukkit.get().getPotionEffect(cmdCtx, key, ArgumentSubType.POTION_EFFECT_POTION_EFFECT);
+ return (PotionEffectType) CommandAPIBukkit.get().getNMS().getPotionEffect(cmdCtx, key, ArgumentSubType.POTION_EFFECT_POTION_EFFECT);
}
/**
@@ -70,7 +70,7 @@ public static class NamespacedKey extends SafeOverrideableArgument org.bukkit.NamespacedKey parseArgument(CommandContext cmdCtx, String key, CommandArguments previousArgs) throws CommandSyntaxException {
- return (org.bukkit.NamespacedKey) CommandAPIBukkit.get().getPotionEffect(cmdCtx, key, ArgumentSubType.POTION_EFFECT_NAMESPACEDKEY);
+ return (org.bukkit.NamespacedKey) CommandAPIBukkit.get().getNMS().getPotionEffect(cmdCtx, key, ArgumentSubType.POTION_EFFECT_NAMESPACEDKEY);
}
}
diff --git a/commandapi-platforms/commandapi-bukkit/commandapi-bukkit-core/src/main/java/dev/jorel/commandapi/arguments/RecipeArgument.java b/commandapi-platforms/commandapi-bukkit/commandapi-bukkit-core/src/main/java/dev/jorel/commandapi/arguments/RecipeArgument.java
index 405f97986b..c706694773 100644
--- a/commandapi-platforms/commandapi-bukkit/commandapi-bukkit-core/src/main/java/dev/jorel/commandapi/arguments/RecipeArgument.java
+++ b/commandapi-platforms/commandapi-bukkit/commandapi-bukkit-core/src/main/java/dev/jorel/commandapi/arguments/RecipeArgument.java
@@ -39,7 +39,7 @@ public class RecipeArgument extends SafeOverrideableArgument imp
* @param nodeName the name of the node for this argument
*/
public RecipeArgument(String nodeName) {
- super(nodeName, CommandAPIBukkit.get()._ArgumentRecipe(), fromKey((Recipe r) -> ((Keyed) r).getKey()));
+ super(nodeName, CommandAPIBukkit.get().getNMS()._ArgumentRecipe(), fromKey((Recipe r) -> ((Keyed) r).getKey()));
}
@Override
@@ -59,7 +59,7 @@ public CommandAPIArgumentType getArgumentType() {
@Override
public Recipe parseArgument(CommandContext cmdCtx, String key, CommandArguments previousArgs) throws CommandSyntaxException {
- return CommandAPIBukkit.get().getRecipe(cmdCtx, key);
+ return CommandAPIBukkit.get().getNMS().getRecipe(cmdCtx, key);
}
}
diff --git a/commandapi-platforms/commandapi-bukkit/commandapi-bukkit-core/src/main/java/dev/jorel/commandapi/arguments/RotationArgument.java b/commandapi-platforms/commandapi-bukkit/commandapi-bukkit-core/src/main/java/dev/jorel/commandapi/arguments/RotationArgument.java
index 52cc6a477a..890a49b1d8 100644
--- a/commandapi-platforms/commandapi-bukkit/commandapi-bukkit-core/src/main/java/dev/jorel/commandapi/arguments/RotationArgument.java
+++ b/commandapi-platforms/commandapi-bukkit/commandapi-bukkit-core/src/main/java/dev/jorel/commandapi/arguments/RotationArgument.java
@@ -38,7 +38,7 @@ public class RotationArgument extends SafeOverrideableArgument Rotation parseArgument(CommandContext cmdCtx, String key, CommandArguments previousArgs) throws CommandSyntaxException {
- return CommandAPIBukkit.get().getRotation(cmdCtx, key);
+ return CommandAPIBukkit.get().getNMS().getRotation(cmdCtx, key);
}
}
diff --git a/commandapi-platforms/commandapi-bukkit/commandapi-bukkit-core/src/main/java/dev/jorel/commandapi/arguments/ScoreHolderArgument.java b/commandapi-platforms/commandapi-bukkit/commandapi-bukkit-core/src/main/java/dev/jorel/commandapi/arguments/ScoreHolderArgument.java
index 763726cef8..472d6e9049 100644
--- a/commandapi-platforms/commandapi-bukkit/commandapi-bukkit-core/src/main/java/dev/jorel/commandapi/arguments/ScoreHolderArgument.java
+++ b/commandapi-platforms/commandapi-bukkit/commandapi-bukkit-core/src/main/java/dev/jorel/commandapi/arguments/ScoreHolderArgument.java
@@ -50,7 +50,7 @@ public static class Single extends Argument {
* @param nodeName the name of the node for this argument
*/
public Single(String nodeName) {
- super(nodeName, CommandAPIBukkit.get()._ArgumentScoreholder(ArgumentSubType.SCOREHOLDER_SINGLE));
+ super(nodeName, CommandAPIBukkit.get().getNMS()._ArgumentScoreholder(ArgumentSubType.SCOREHOLDER_SINGLE));
}
@Override
@@ -65,7 +65,7 @@ public CommandAPIArgumentType getArgumentType() {
@Override
public