From eb56e00f37d58338f083e44a8c8656c5fd611bb9 Mon Sep 17 00:00:00 2001
From: DerEchtePilz <81232921+DerEchtePilz@users.noreply.github.com>
Date: Fri, 19 Jan 2024 15:41:58 +0100
Subject: [PATCH 01/14] Implement a Paper CommandAPI version
---
.editorconfig | 6 +
.github/workflows/build.yml | 23 +-
.gitignore | 1 +
commandapi-annotations/pom.xml | 13 +-
commandapi-codecov/pom.xml | 6 +-
.../jorel/commandapi/CommandAPIHandler.java | 15 -
.../jorel/commandapi/CommandAPIPlatform.java | 42 +-
.../commandapi/arguments/Previewable.java | 5 -
commandapi-documentation-code/pom.xml | 9 +-
.../commandapi/examples/java/Examples.java | 322 +++-------
.../commandapi/examples/kotlin/Examples.kt | 228 -------
.../examples/kotlin/ExamplesKotlinDSL.kt | 90 ---
.../pom.xml | 4 +-
.../kotlindsl/CommandAPICommandDSL.kt | 2 +
.../commandapi/kotlindsl/CommandTreeDSL.kt | 4 +
.../jorel/commandapi/kotlindsl/ExecutorDSL.kt | 0
.../pom.xml | 2 +-
.../commandapi/kotlindsl/CommandAPIDSL.kt | 0
.../commandapi-kotlin-paper/pom.xml | 98 +++
.../kotlindsl/PaperCommandAPICommandDSL.kt | 11 +
.../kotlindsl/PaperCommandTreeDSL.kt | 12 +
.../commandapi/kotlindsl/PaperExecutorDSL.kt | 31 +
.../commandapi-kotlin-spigot/pom.xml | 98 +++
.../kotlindsl/SpigotCommandAPICommandDSL.kt | 11 +
.../kotlindsl/SpigotCommandTreeDSL.kt | 12 +
.../pom.xml | 4 +-
.../kotlindsl/CommandAPICommandDSL.kt | 0
.../commandapi/kotlindsl/CommandTreeDSL.kt | 0
.../jorel/commandapi/kotlindsl/ExecutorDSL.kt | 0
.../jorel/commandapi/BukkitExecutable.java | 13 +
.../dev/jorel/commandapi/BukkitPlatform.java | 26 +
.../jorel/commandapi/CommandAPIBukkit.java | 256 ++------
.../commandapi/CommandAPIBukkitConfig.java | 45 +-
.../commandapi/InternalBukkitConfig.java | 26 +-
.../commandapi/PaperImplementations.java | 155 -----
.../java/dev/jorel/commandapi/Platform.java | 16 +
.../exceptions/PlatformException.java | 8 +
.../java/dev/jorel/commandapi/nms/NMS.java | 13 -
.../commandapi-bukkit-mojang-mapped/pom.xml | 32 -
.../dev/jorel/commandapi/nms/NMS_1_16_R3.java | 53 --
.../jorel/commandapi/nms/NMS_1_17_Common.java | 23 -
.../dev/jorel/commandapi/nms/NMS_1_18_R2.java | 23 -
.../dev/jorel/commandapi/nms/NMS_1_18_R1.java | 24 -
.../jorel/commandapi/nms/NMS_1_19_Common.java | 81 ---
.../jorel/commandapi/nms/NMS_1_19_1_R1.java | 9 -
.../jorel/commandapi/nms/NMS_1_19_3_R2.java | 24 -
.../jorel/commandapi/nms/NMS_1_19_4_R3.java | 23 -
.../dev/jorel/commandapi/nms/NMS_1_19_R1.java | 8 -
.../dev/jorel/commandapi/nms/NMS_1_20_R2.java | 23 -
.../dev/jorel/commandapi/nms/NMS_1_20_R3.java | 24 -
.../dev/jorel/commandapi/nms/NMS_1_20_R4.java | 64 --
.../dev/jorel/commandapi/nms/NMS_1_20_R1.java | 23 -
.../dev/jorel/commandapi/nms/NMS_1_21_R3.java | 61 --
.../dev/jorel/commandapi/nms/NMS_1_21_R1.java | 53 --
.../dev/jorel/commandapi/nms/NMS_Common.java | 35 +-
.../config/BukkitConfigurationAdapter.java | 5 -
.../config/DefaultBukkitConfig.java | 22 +-
.../javadoc/README.md | 1 -
.../commandapi-bukkit-plugin/.gitignore | 4 -
.../javadoc/README.md | 1 -
.../commandapi-bukkit-shade/.gitignore | 4 -
.../commandapi-bukkit-shade/javadoc/README.md | 1 -
.../dev/jorel/commandapi/test/MockNMS.java | 4 +-
.../dev/jorel/commandapi/test/MockNMS.java | 4 +-
.../dev/jorel/commandapi/test/MockNMS.java | 6 +-
.../dev/jorel/commandapi/test/MockNMS.java | 4 +-
.../jorel/commandapi/test/MockPlatform.java | 4 +-
.../commandapi-bukkit-vh/.gitignore | 2 -
.../commandapi-bukkit-vh/pom.xml | 50 --
.../commandapi/CommandAPIVersionHandler.java | 110 ----
.../commandapi-bukkit/pom.xml | 15 +-
.../commandapi-paper-annotations/pom.xml | 68 +++
.../commandapi/annotations/Annotations.java | 64 +-
.../annotations/arguments/AChatArgument.java | 6 +-
.../arguments/AChatColorArgument.java | 15 +
.../arguments/AChatComponentArgument.java | 6 +-
.../commandapi-paper-core/pom.xml | 101 ++++
.../dev/jorel/commandapi/CommandAPIPaper.java | 329 ++++++++++
.../commandapi/CommandAPIPaperConfig.java | 42 ++
.../jorel/commandapi/InternalPaperConfig.java | 32 +
.../commandapi/PaperCommandRegistration.java | 0
.../java/dev/jorel/commandapi/Schedulers.java | 16 +-
.../commandapi/arguments/ChatArgument.java} | 18 +-
.../arguments/ChatColorArgument.java} | 7 +-
.../arguments/ChatComponentArgument.java} | 7 +-
.../commandapi/arguments/CustomArgument.java | 377 ++++++++++++
.../dev/jorel/commandapi/nms/PaperNMS.java | 18 +
.../pom.xml | 111 ++++
.../commandapi/examples/java/Examples.java | 168 +++++
.../commandapi/examples/kotlin/Examples.kt | 162 +++++
.../examples/kotlin/ExamplesKotlinDSL.kt | 65 ++
.../commandapi-paper-mojang-mapped/pom.xml | 14 +
.../MojangMappedVersionHandler.java | 0
.../commandapi-paper-1.16.5/pom.xml | 92 +++
.../commandapi/nms/PaperNMS_1_16_R3.java | 61 ++
.../commandapi-paper-1.17-common/pom.xml | 156 +++++
.../commandapi/nms/PaperNMS_1_17_Common.java | 43 ++
.../commandapi-paper-1.17.1/pom.xml | 161 +++++
.../commandapi/nms/PaperNMS_1_17_R1.java | 17 +
.../commandapi-paper-1.17/pom.xml | 155 +++++
.../jorel/commandapi/nms/PaperNMS_1_17.java | 15 +
.../commandapi-paper-1.18.2/pom.xml | 162 +++++
.../commandapi/nms/PaperNMS_1_18_R2.java | 52 ++
.../commandapi-paper-1.18/pom.xml | 162 +++++
.../commandapi/nms/PaperNMS_1_18_R1.java | 54 ++
.../commandapi-paper-1.19-common/pom.xml | 130 ++++
.../commandapi/nms/PaperNMS_1_19_Common.java | 116 ++++
...perNMS_1_19_Common_ChatPreviewHandler.java | 132 ++++
.../commandapi-paper-1.19.1/pom.xml | 172 ++++++
.../commandapi/nms/PaperNMS_1_19_1_R1.java | 29 +
...PaperNMS_1_19_1_R1_ChatPreviewHandler.java | 68 +++
.../commandapi-paper-1.19.3/pom.xml | 157 +++++
.../commandapi/nms/PaperNMS_1_19_3_R2.java | 54 ++
.../commandapi-paper-1.19.4/pom.xml | 156 +++++
.../commandapi/nms/PaperNMS_1_19_4_R3.java | 52 ++
.../commandapi-paper-1.19/pom.xml | 172 ++++++
.../commandapi/nms/PaperNMS_1_19_R1.java | 29 +
.../PaperNMS_1_19_R1_ChatPreviewHandler.java} | 8 +-
.../commandapi-paper-1.20.2/pom.xml | 156 +++++
.../commandapi/nms/PaperNMS_1_20_R2.java | 52 ++
.../commandapi-paper-1.20.3/pom.xml | 156 +++++
.../commandapi/nms/PaperNMS_1_20_R3.java | 52 ++
.../commandapi-paper-1.20.5/pom.xml | 108 ++++
.../commandapi/nms/PaperNMS_1_20_R4.java | 98 +++
.../commandapi-paper-1.20/pom.xml | 156 +++++
.../commandapi/nms/PaperNMS_1_20_R1.java | 52 ++
.../commandapi-paper-1.21.2/pom.xml | 109 ++++
.../commandapi/nms/PaperNMS_1_21_R2.java | 64 ++
.../commandapi-paper-1.21.4/pom.xml | 109 ++++
.../commandapi/nms/PaperNMS_1_21_R3.java | 64 ++
.../commandapi-paper-1.21/pom.xml | 110 ++++
.../commandapi/nms/PaperNMS_1_21_R1.java | 64 ++
.../pom.xml | 37 ++
.../commandapi-paper-nms-common/pom.xml | 234 +++++++
.../jorel/commandapi/nms/PaperNMS_Common.java | 30 +
.../nms/PaperNMS_CommonWithFunctions.java | 5 +
.../pom.xml | 146 +++++
.../commandapi-paper-nms-dependency/pom.xml | 128 ++++
.../commandapi-paper-nms/pom.xml | 42 ++
.../pom.xml | 62 +-
.../jorel/commandapi/AdvancedConverter.java | 314 ++++++++++
.../dev/jorel/commandapi/CommandAPIMain.java | 9 +-
.../src/main/resources/config.yml | 83 +++
.../src/main/resources/plugin.yml | 0
.../commandapi-paper-plugin}/LICENSE | 0
.../commandapi-paper-plugin/pom.xml | 114 ++++
.../jorel/commandapi/AdvancedConverter.java | 10 +-
.../dev/jorel/commandapi/CommandAPIMain.java | 156 +++++
.../src/main/resources/config.yml | 83 +++
.../src/main/resources/plugin.yml | 0
.../pom.xml | 62 +-
.../commandapi-paper-shade}/LICENSE | 0
.../commandapi-paper-shade/javadoc/README.md | 1 +
.../commandapi-paper-shade/pom.xml | 83 +++
.../commandapi-paper-vh/pom.xml | 32 +
.../commandapi/CommandAPIVersionHandler.java | 68 +++
.../UnsupportedVersionException.java | 0
commandapi-platforms/commandapi-paper/pom.xml | 31 +
.../commandapi-spigot-annotations/pom.xml | 68 +++
.../commandapi/annotations/Annotations.java | 572 ++++++++++++++++++
.../annotations/arguments/AChatArgument.java | 0
.../arguments/AChatColorArgument.java | 0
.../arguments/AChatComponentArgument.java | 0
.../commandapi-spigot-core/pom.xml | 94 +++
.../jorel/commandapi/CommandAPISpigot.java | 236 ++++++++
.../commandapi/CommandAPISpigotConfig.java | 26 +
.../commandapi/InternalSpigotConfig.java | 20 +
.../commandapi/arguments/ChatArgument.java | 8 +-
.../arguments/ChatColorArgument.java | 3 +-
.../arguments/ChatComponentArgument.java | 3 +-
.../commandapi/arguments/CustomArgument.java | 36 +-
.../dev/jorel/commandapi/nms/SpigotNMS.java | 20 +
.../pom.xml | 101 ++++
.../commandapi/examples/java/Examples.java | 169 ++++++
.../commandapi/examples/kotlin/Examples.kt | 167 +++++
.../examples/kotlin/ExamplesKotlinDSL.kt | 61 ++
.../commandapi-spigot-mojang-mapped/pom.xml | 14 +
.../MojangMappedVersionHandler.java | 12 +
.../commandapi-spigot-1.16.5/pom.xml | 84 +++
.../commandapi/nms/SpigotNMS_1_16_R3.java | 64 ++
.../commandapi-spigot-1.17-common/pom.xml | 154 +++++
.../commandapi/nms/SpigotNMS_1_17_Common.java | 26 +
.../commandapi-spigot-1.17.1/pom.xml | 146 +++++
.../commandapi/nms/SpigotNMS_1_17_R1.java | 34 ++
.../commandapi-spigot-1.17/pom.xml | 140 +++++
.../jorel/commandapi/nms/SpigotNMS_1_17.java | 34 ++
.../commandapi-spigot-1.18.2/pom.xml | 156 +++++
.../commandapi/nms/SpigotNMS_1_18_R2.java | 52 ++
.../commandapi-spigot-1.18/pom.xml | 156 +++++
.../commandapi/nms/SpigotNMS_1_18_R1.java | 54 ++
.../commandapi-spigot-1.19-common/pom.xml | 133 ++++
.../commandapi/nms/SpigotNMS_1_19_Common.java | 99 +++
...otNMS_1_19_Common_ChatPreviewHandler.java} | 51 +-
.../commandapi-spigot-1.19.1/pom.xml | 157 +++++
.../commandapi/nms/SpigotNMS_1_19_1_R1.java | 46 ++
...igotNMS_1_19_1_R1_ChatPreviewHandler.java} | 12 +-
.../commandapi-spigot-1.19.3/pom.xml | 149 +++++
.../commandapi/nms/SpigotNMS_1_19_3_R2.java | 54 ++
.../commandapi-spigot-1.19.4/pom.xml | 150 +++++
.../commandapi/nms/SpigotNMS_1_19_4_R3.java | 52 ++
.../commandapi-spigot-1.19/pom.xml | 162 +++++
.../commandapi/nms/SpigotNMS_1_19_R1.java | 46 ++
.../SpigotNMS_1_19_R1_ChatPreviewHandler.java | 24 +
.../commandapi-spigot-1.20.2/pom.xml | 149 +++++
.../commandapi/nms/SpigotNMS_1_20_R2.java | 52 ++
.../commandapi-spigot-1.20.3/pom.xml | 149 +++++
.../commandapi/nms/SpigotNMS_1_20_R3.java | 52 ++
.../commandapi-spigot-1.20.5/pom.xml | 149 +++++
.../commandapi/nms/SpigotNMS_1_20_R4.java | 66 ++
.../commandapi-spigot-1.20/pom.xml | 149 +++++
.../commandapi/nms/SpigotNMS_1_20_R1.java | 52 ++
.../commandapi-spigot-1.21.2/pom.xml | 149 +++++
.../commandapi/nms/SpigotNMS_1_21_R2.java | 66 ++
.../commandapi-spigot-1.21.4/pom.xml | 149 +++++
.../commandapi/nms/SpigotNMS_1_21_R3.java | 66 ++
.../commandapi-spigot-1.21/pom.xml | 149 +++++
.../commandapi/nms/SpigotNMS_1_21_R1.java | 66 ++
.../commandapi-spigot-nms-common/pom.xml | 226 +++++++
.../commandapi/nms/SpigotNMS_Common.java | 28 +
.../nms/SpigotNMS_CommonWithFunctions.java | 5 +
.../pom.xml | 136 +++++
.../commandapi-spigot-nms-dependency/pom.xml | 116 ++++
.../commandapi-spigot-nms/pom.xml | 41 ++
.../pom.xml | 86 +--
.../jorel/commandapi/AdvancedConverter.java | 314 ++++++++++
.../dev/jorel/commandapi/CommandAPIMain.java | 155 +++++
.../src/main/resources/config.yml | 74 +++
.../src/main/resources/plugin.yml | 13 +
.../commandapi-spigot-plugin/LICENSE | 21 +
.../commandapi-spigot-plugin/pom.xml | 114 ++++
.../jorel/commandapi/AdvancedConverter.java | 314 ++++++++++
.../dev/jorel/commandapi/CommandAPIMain.java | 155 +++++
.../src/main/resources/config.yml | 74 +++
.../src/main/resources/plugin.yml | 13 +
.../pom.xml | 42 +-
.../commandapi-spigot-shade/LICENSE | 21 +
.../commandapi-spigot-shade/javadoc/README.md | 1 +
.../commandapi-spigot-shade/pom.xml | 83 +++
.../commandapi-spigot-vh/pom.xml | 32 +
.../commandapi/CommandAPIVersionHandler.java | 68 +++
.../UnsupportedVersionException.java | 37 ++
.../commandapi-spigot/pom.xml | 31 +
.../config/VelocityConfigurationAdapter.java | 9 +-
.../commandapi-velocity/pom.xml | 2 +
commandapi-platforms/pom.xml | 34 +-
.../config/ConfigurationAdapter.java | 6 +-
examples/bukkit/commandtrees/pom.xml | 12 +-
examples/bukkit/gradle-groovy/build.gradle | 8 +-
.../bukkit/gradle-kotlin/build.gradle.kts | 8 +-
.../bukkit/kotlindsl-gradle/build.gradle.kts | 10 +-
examples/bukkit/kotlindsl/pom.xml | 14 +-
examples/bukkit/maven-annotations/pom.xml | 14 +-
.../bukkit/maven-shaded-annotations/pom.xml | 12 +-
.../main/java/io/github/jorelali/Main.java | 4 +-
examples/bukkit/maven-shaded-tests/pom.xml | 14 +-
.../main/java/io/github/jorelali/MyMain.java | 4 +-
examples/bukkit/maven-shaded/pom.xml | 12 +-
.../main/java/io/github/jorelali/Main.java | 4 +-
examples/bukkit/maven/pom.xml | 12 +-
pom.xml | 5 +-
setupPaperNMS.sh | 13 +
update.sh | 27 +-
262 files changed, 15049 insertions(+), 2221 deletions(-)
rename commandapi-kotlin/{commandapi-bukkit-kotlin => commandapi-kotlin-bukkit}/pom.xml (96%)
rename commandapi-kotlin/{commandapi-bukkit-kotlin => commandapi-kotlin-bukkit}/src/main/kotlin/dev/jorel/commandapi/kotlindsl/CommandAPICommandDSL.kt (99%)
rename commandapi-kotlin/{commandapi-bukkit-kotlin => commandapi-kotlin-bukkit}/src/main/kotlin/dev/jorel/commandapi/kotlindsl/CommandTreeDSL.kt (99%)
rename commandapi-kotlin/{commandapi-bukkit-kotlin => commandapi-kotlin-bukkit}/src/main/kotlin/dev/jorel/commandapi/kotlindsl/ExecutorDSL.kt (100%)
rename commandapi-kotlin/{commandapi-core-kotlin => commandapi-kotlin-core}/pom.xml (97%)
rename commandapi-kotlin/{commandapi-core-kotlin => commandapi-kotlin-core}/src/main/kotlin/dev/jorel/commandapi/kotlindsl/CommandAPIDSL.kt (100%)
create mode 100644 commandapi-kotlin/commandapi-kotlin-paper/pom.xml
create mode 100644 commandapi-kotlin/commandapi-kotlin-paper/src/main/kotlin/dev/jorel/commandapi/kotlindsl/PaperCommandAPICommandDSL.kt
create mode 100644 commandapi-kotlin/commandapi-kotlin-paper/src/main/kotlin/dev/jorel/commandapi/kotlindsl/PaperCommandTreeDSL.kt
create mode 100644 commandapi-kotlin/commandapi-kotlin-paper/src/main/kotlin/dev/jorel/commandapi/kotlindsl/PaperExecutorDSL.kt
create mode 100644 commandapi-kotlin/commandapi-kotlin-spigot/pom.xml
create mode 100644 commandapi-kotlin/commandapi-kotlin-spigot/src/main/kotlin/dev/jorel/commandapi/kotlindsl/SpigotCommandAPICommandDSL.kt
create mode 100644 commandapi-kotlin/commandapi-kotlin-spigot/src/main/kotlin/dev/jorel/commandapi/kotlindsl/SpigotCommandTreeDSL.kt
rename commandapi-kotlin/{commandapi-velocity-kotlin => commandapi-kotlin-velocity}/pom.xml (95%)
rename commandapi-kotlin/{commandapi-velocity-kotlin => commandapi-kotlin-velocity}/src/main/kotlin/dev/jorel/commandapi/kotlindsl/CommandAPICommandDSL.kt (100%)
rename commandapi-kotlin/{commandapi-velocity-kotlin => commandapi-kotlin-velocity}/src/main/kotlin/dev/jorel/commandapi/kotlindsl/CommandTreeDSL.kt (100%)
rename commandapi-kotlin/{commandapi-velocity-kotlin => commandapi-kotlin-velocity}/src/main/kotlin/dev/jorel/commandapi/kotlindsl/ExecutorDSL.kt (100%)
create mode 100644 commandapi-platforms/commandapi-bukkit/commandapi-bukkit-core/src/main/java/dev/jorel/commandapi/BukkitPlatform.java
delete mode 100644 commandapi-platforms/commandapi-bukkit/commandapi-bukkit-core/src/main/java/dev/jorel/commandapi/PaperImplementations.java
create mode 100644 commandapi-platforms/commandapi-bukkit/commandapi-bukkit-core/src/main/java/dev/jorel/commandapi/Platform.java
create mode 100644 commandapi-platforms/commandapi-bukkit/commandapi-bukkit-core/src/main/java/dev/jorel/commandapi/exceptions/PlatformException.java
delete mode 100644 commandapi-platforms/commandapi-bukkit/commandapi-bukkit-mojang-mapped/pom.xml
delete mode 100644 commandapi-platforms/commandapi-bukkit/commandapi-bukkit-plugin-mojang-mapped/javadoc/README.md
delete mode 100644 commandapi-platforms/commandapi-bukkit/commandapi-bukkit-plugin/.gitignore
delete mode 100644 commandapi-platforms/commandapi-bukkit/commandapi-bukkit-plugin/javadoc/README.md
delete mode 100644 commandapi-platforms/commandapi-bukkit/commandapi-bukkit-shade/.gitignore
delete mode 100644 commandapi-platforms/commandapi-bukkit/commandapi-bukkit-shade/javadoc/README.md
delete mode 100644 commandapi-platforms/commandapi-bukkit/commandapi-bukkit-vh/.gitignore
delete mode 100644 commandapi-platforms/commandapi-bukkit/commandapi-bukkit-vh/pom.xml
delete mode 100644 commandapi-platforms/commandapi-bukkit/commandapi-bukkit-vh/src/main/java/dev/jorel/commandapi/CommandAPIVersionHandler.java
create mode 100644 commandapi-platforms/commandapi-paper/commandapi-paper-annotations/pom.xml
rename {commandapi-annotations => commandapi-platforms/commandapi-paper/commandapi-paper-annotations}/src/main/java/dev/jorel/commandapi/annotations/Annotations.java (96%)
rename commandapi-annotations/src/main/java/dev/jorel/commandapi/annotations/arguments/AAdventureChatArgument.java => commandapi-platforms/commandapi-paper/commandapi-paper-annotations/src/main/java/dev/jorel/commandapi/annotations/arguments/AChatArgument.java (90%)
create mode 100644 commandapi-platforms/commandapi-paper/commandapi-paper-annotations/src/main/java/dev/jorel/commandapi/annotations/arguments/AChatColorArgument.java
rename commandapi-annotations/src/main/java/dev/jorel/commandapi/annotations/arguments/AAdventureChatComponentArgument.java => commandapi-platforms/commandapi-paper/commandapi-paper-annotations/src/main/java/dev/jorel/commandapi/annotations/arguments/AChatComponentArgument.java (89%)
create mode 100644 commandapi-platforms/commandapi-paper/commandapi-paper-core/pom.xml
create mode 100644 commandapi-platforms/commandapi-paper/commandapi-paper-core/src/main/java/dev/jorel/commandapi/CommandAPIPaper.java
create mode 100644 commandapi-platforms/commandapi-paper/commandapi-paper-core/src/main/java/dev/jorel/commandapi/CommandAPIPaperConfig.java
create mode 100644 commandapi-platforms/commandapi-paper/commandapi-paper-core/src/main/java/dev/jorel/commandapi/InternalPaperConfig.java
rename commandapi-platforms/{commandapi-bukkit/commandapi-bukkit-core => commandapi-paper/commandapi-paper-core}/src/main/java/dev/jorel/commandapi/PaperCommandRegistration.java (100%)
rename commandapi-platforms/{commandapi-bukkit/commandapi-bukkit-core => commandapi-paper/commandapi-paper-core}/src/main/java/dev/jorel/commandapi/Schedulers.java (77%)
rename commandapi-platforms/{commandapi-bukkit/commandapi-bukkit-core/src/main/java/dev/jorel/commandapi/arguments/AdventureChatArgument.java => commandapi-paper/commandapi-paper-core/src/main/java/dev/jorel/commandapi/arguments/ChatArgument.java} (85%)
rename commandapi-platforms/{commandapi-bukkit/commandapi-bukkit-core/src/main/java/dev/jorel/commandapi/arguments/AdventureChatColorArgument.java => commandapi-paper/commandapi-paper-core/src/main/java/dev/jorel/commandapi/arguments/ChatColorArgument.java} (90%)
rename commandapi-platforms/{commandapi-bukkit/commandapi-bukkit-core/src/main/java/dev/jorel/commandapi/arguments/AdventureChatComponentArgument.java => commandapi-paper/commandapi-paper-core/src/main/java/dev/jorel/commandapi/arguments/ChatComponentArgument.java} (91%)
create mode 100644 commandapi-platforms/commandapi-paper/commandapi-paper-core/src/main/java/dev/jorel/commandapi/arguments/CustomArgument.java
create mode 100644 commandapi-platforms/commandapi-paper/commandapi-paper-core/src/main/java/dev/jorel/commandapi/nms/PaperNMS.java
create mode 100644 commandapi-platforms/commandapi-paper/commandapi-paper-documentation-code/pom.xml
create mode 100644 commandapi-platforms/commandapi-paper/commandapi-paper-documentation-code/src/main/java/dev/jorel/commandapi/examples/java/Examples.java
create mode 100644 commandapi-platforms/commandapi-paper/commandapi-paper-documentation-code/src/main/kotlin/dev/jorel/commandapi/examples/kotlin/Examples.kt
create mode 100644 commandapi-platforms/commandapi-paper/commandapi-paper-documentation-code/src/main/kotlin/dev/jorel/commandapi/examples/kotlin/ExamplesKotlinDSL.kt
create mode 100644 commandapi-platforms/commandapi-paper/commandapi-paper-mojang-mapped/pom.xml
rename commandapi-platforms/{commandapi-bukkit/commandapi-bukkit-mojang-mapped => commandapi-paper/commandapi-paper-mojang-mapped}/src/main/java/dev/jorel/commandapi/MojangMappedVersionHandler.java (100%)
create mode 100644 commandapi-platforms/commandapi-paper/commandapi-paper-nms/commandapi-paper-1.16.5/pom.xml
create mode 100644 commandapi-platforms/commandapi-paper/commandapi-paper-nms/commandapi-paper-1.16.5/src/main/java/dev/jorel/commandapi/nms/PaperNMS_1_16_R3.java
create mode 100644 commandapi-platforms/commandapi-paper/commandapi-paper-nms/commandapi-paper-1.17-common/pom.xml
create mode 100644 commandapi-platforms/commandapi-paper/commandapi-paper-nms/commandapi-paper-1.17-common/src/main/java/dev/jorel/commandapi/nms/PaperNMS_1_17_Common.java
create mode 100644 commandapi-platforms/commandapi-paper/commandapi-paper-nms/commandapi-paper-1.17.1/pom.xml
create mode 100644 commandapi-platforms/commandapi-paper/commandapi-paper-nms/commandapi-paper-1.17.1/src/main/java/dev/jorel/commandapi/nms/PaperNMS_1_17_R1.java
create mode 100644 commandapi-platforms/commandapi-paper/commandapi-paper-nms/commandapi-paper-1.17/pom.xml
create mode 100644 commandapi-platforms/commandapi-paper/commandapi-paper-nms/commandapi-paper-1.17/src/main/java/dev/jorel/commandapi/nms/PaperNMS_1_17.java
create mode 100644 commandapi-platforms/commandapi-paper/commandapi-paper-nms/commandapi-paper-1.18.2/pom.xml
create mode 100644 commandapi-platforms/commandapi-paper/commandapi-paper-nms/commandapi-paper-1.18.2/src/main/java/dev/jorel/commandapi/nms/PaperNMS_1_18_R2.java
create mode 100644 commandapi-platforms/commandapi-paper/commandapi-paper-nms/commandapi-paper-1.18/pom.xml
create mode 100644 commandapi-platforms/commandapi-paper/commandapi-paper-nms/commandapi-paper-1.18/src/main/java/dev/jorel/commandapi/nms/PaperNMS_1_18_R1.java
create mode 100644 commandapi-platforms/commandapi-paper/commandapi-paper-nms/commandapi-paper-1.19-common/pom.xml
create mode 100644 commandapi-platforms/commandapi-paper/commandapi-paper-nms/commandapi-paper-1.19-common/src/main/java/dev/jorel/commandapi/nms/PaperNMS_1_19_Common.java
create mode 100644 commandapi-platforms/commandapi-paper/commandapi-paper-nms/commandapi-paper-1.19-common/src/main/java/dev/jorel/commandapi/nms/PaperNMS_1_19_Common_ChatPreviewHandler.java
create mode 100644 commandapi-platforms/commandapi-paper/commandapi-paper-nms/commandapi-paper-1.19.1/pom.xml
create mode 100644 commandapi-platforms/commandapi-paper/commandapi-paper-nms/commandapi-paper-1.19.1/src/main/java/dev/jorel/commandapi/nms/PaperNMS_1_19_1_R1.java
create mode 100644 commandapi-platforms/commandapi-paper/commandapi-paper-nms/commandapi-paper-1.19.1/src/main/java/dev/jorel/commandapi/nms/PaperNMS_1_19_1_R1_ChatPreviewHandler.java
create mode 100644 commandapi-platforms/commandapi-paper/commandapi-paper-nms/commandapi-paper-1.19.3/pom.xml
create mode 100644 commandapi-platforms/commandapi-paper/commandapi-paper-nms/commandapi-paper-1.19.3/src/main/java/dev/jorel/commandapi/nms/PaperNMS_1_19_3_R2.java
create mode 100644 commandapi-platforms/commandapi-paper/commandapi-paper-nms/commandapi-paper-1.19.4/pom.xml
create mode 100644 commandapi-platforms/commandapi-paper/commandapi-paper-nms/commandapi-paper-1.19.4/src/main/java/dev/jorel/commandapi/nms/PaperNMS_1_19_4_R3.java
create mode 100644 commandapi-platforms/commandapi-paper/commandapi-paper-nms/commandapi-paper-1.19/pom.xml
create mode 100644 commandapi-platforms/commandapi-paper/commandapi-paper-nms/commandapi-paper-1.19/src/main/java/dev/jorel/commandapi/nms/PaperNMS_1_19_R1.java
rename commandapi-platforms/{commandapi-bukkit/commandapi-bukkit-nms/commandapi-bukkit-1.19/src/main/java/dev/jorel/commandapi/nms/NMS_1_19_R1_ChatPreviewHandler.java => commandapi-paper/commandapi-paper-nms/commandapi-paper-1.19/src/main/java/dev/jorel/commandapi/nms/PaperNMS_1_19_R1_ChatPreviewHandler.java} (74%)
create mode 100644 commandapi-platforms/commandapi-paper/commandapi-paper-nms/commandapi-paper-1.20.2/pom.xml
create mode 100644 commandapi-platforms/commandapi-paper/commandapi-paper-nms/commandapi-paper-1.20.2/src/main/java/dev/jorel/commandapi/nms/PaperNMS_1_20_R2.java
create mode 100644 commandapi-platforms/commandapi-paper/commandapi-paper-nms/commandapi-paper-1.20.3/pom.xml
create mode 100644 commandapi-platforms/commandapi-paper/commandapi-paper-nms/commandapi-paper-1.20.3/src/main/java/dev/jorel/commandapi/nms/PaperNMS_1_20_R3.java
create mode 100644 commandapi-platforms/commandapi-paper/commandapi-paper-nms/commandapi-paper-1.20.5/pom.xml
create mode 100644 commandapi-platforms/commandapi-paper/commandapi-paper-nms/commandapi-paper-1.20.5/src/main/java/dev/jorel/commandapi/nms/PaperNMS_1_20_R4.java
create mode 100644 commandapi-platforms/commandapi-paper/commandapi-paper-nms/commandapi-paper-1.20/pom.xml
create mode 100644 commandapi-platforms/commandapi-paper/commandapi-paper-nms/commandapi-paper-1.20/src/main/java/dev/jorel/commandapi/nms/PaperNMS_1_20_R1.java
create mode 100644 commandapi-platforms/commandapi-paper/commandapi-paper-nms/commandapi-paper-1.21.2/pom.xml
create mode 100644 commandapi-platforms/commandapi-paper/commandapi-paper-nms/commandapi-paper-1.21.2/src/main/java/dev/jorel/commandapi/nms/PaperNMS_1_21_R2.java
create mode 100644 commandapi-platforms/commandapi-paper/commandapi-paper-nms/commandapi-paper-1.21.4/pom.xml
create mode 100644 commandapi-platforms/commandapi-paper/commandapi-paper-nms/commandapi-paper-1.21.4/src/main/java/dev/jorel/commandapi/nms/PaperNMS_1_21_R3.java
create mode 100644 commandapi-platforms/commandapi-paper/commandapi-paper-nms/commandapi-paper-1.21/pom.xml
create mode 100644 commandapi-platforms/commandapi-paper/commandapi-paper-nms/commandapi-paper-1.21/src/main/java/dev/jorel/commandapi/nms/PaperNMS_1_21_R1.java
create mode 100644 commandapi-platforms/commandapi-paper/commandapi-paper-nms/commandapi-paper-nms-common-mojang-mapped/pom.xml
create mode 100644 commandapi-platforms/commandapi-paper/commandapi-paper-nms/commandapi-paper-nms-common/pom.xml
create mode 100644 commandapi-platforms/commandapi-paper/commandapi-paper-nms/commandapi-paper-nms-common/src/main/java/dev/jorel/commandapi/nms/PaperNMS_Common.java
create mode 100644 commandapi-platforms/commandapi-paper/commandapi-paper-nms/commandapi-paper-nms-common/src/main/java/dev/jorel/commandapi/nms/PaperNMS_CommonWithFunctions.java
create mode 100644 commandapi-platforms/commandapi-paper/commandapi-paper-nms/commandapi-paper-nms-dependency-mojang-mapped/pom.xml
create mode 100644 commandapi-platforms/commandapi-paper/commandapi-paper-nms/commandapi-paper-nms-dependency/pom.xml
create mode 100644 commandapi-platforms/commandapi-paper/commandapi-paper-nms/pom.xml
rename commandapi-platforms/{commandapi-bukkit/commandapi-bukkit-plugin-mojang-mapped => commandapi-paper/commandapi-paper-plugin-mojang-mapped}/pom.xml (67%)
create mode 100644 commandapi-platforms/commandapi-paper/commandapi-paper-plugin-mojang-mapped/src/main/java/dev/jorel/commandapi/AdvancedConverter.java
rename commandapi-platforms/{commandapi-bukkit/commandapi-bukkit-plugin-common => commandapi-paper/commandapi-paper-plugin-mojang-mapped}/src/main/java/dev/jorel/commandapi/CommandAPIMain.java (96%)
create mode 100644 commandapi-platforms/commandapi-paper/commandapi-paper-plugin-mojang-mapped/src/main/resources/config.yml
rename commandapi-platforms/{commandapi-bukkit/commandapi-bukkit-plugin-mojang-mapped => commandapi-paper/commandapi-paper-plugin-mojang-mapped}/src/main/resources/plugin.yml (100%)
rename commandapi-platforms/{commandapi-bukkit/commandapi-bukkit-plugin => commandapi-paper/commandapi-paper-plugin}/LICENSE (100%)
create mode 100644 commandapi-platforms/commandapi-paper/commandapi-paper-plugin/pom.xml
rename commandapi-platforms/{commandapi-bukkit/commandapi-bukkit-plugin-common => commandapi-paper/commandapi-paper-plugin}/src/main/java/dev/jorel/commandapi/AdvancedConverter.java (98%)
create mode 100644 commandapi-platforms/commandapi-paper/commandapi-paper-plugin/src/main/java/dev/jorel/commandapi/CommandAPIMain.java
create mode 100644 commandapi-platforms/commandapi-paper/commandapi-paper-plugin/src/main/resources/config.yml
rename commandapi-platforms/{commandapi-bukkit/commandapi-bukkit-plugin => commandapi-paper/commandapi-paper-plugin}/src/main/resources/plugin.yml (100%)
rename commandapi-platforms/{commandapi-bukkit/commandapi-bukkit-shade => commandapi-paper/commandapi-paper-shade-mojang-mapped}/pom.xml (54%)
rename commandapi-platforms/{commandapi-bukkit/commandapi-bukkit-shade => commandapi-paper/commandapi-paper-shade}/LICENSE (100%)
create mode 100644 commandapi-platforms/commandapi-paper/commandapi-paper-shade/javadoc/README.md
create mode 100644 commandapi-platforms/commandapi-paper/commandapi-paper-shade/pom.xml
create mode 100644 commandapi-platforms/commandapi-paper/commandapi-paper-vh/pom.xml
create mode 100644 commandapi-platforms/commandapi-paper/commandapi-paper-vh/src/main/java/dev/jorel/commandapi/CommandAPIVersionHandler.java
rename commandapi-platforms/{commandapi-bukkit/commandapi-bukkit-vh => commandapi-paper/commandapi-paper-vh}/src/main/java/dev/jorel/commandapi/exceptions/UnsupportedVersionException.java (100%)
create mode 100644 commandapi-platforms/commandapi-paper/pom.xml
create mode 100644 commandapi-platforms/commandapi-spigot/commandapi-spigot-annotations/pom.xml
create mode 100644 commandapi-platforms/commandapi-spigot/commandapi-spigot-annotations/src/main/java/dev/jorel/commandapi/annotations/Annotations.java
rename {commandapi-annotations => commandapi-platforms/commandapi-spigot/commandapi-spigot-annotations}/src/main/java/dev/jorel/commandapi/annotations/arguments/AChatArgument.java (100%)
rename {commandapi-annotations => commandapi-platforms/commandapi-spigot/commandapi-spigot-annotations}/src/main/java/dev/jorel/commandapi/annotations/arguments/AChatColorArgument.java (100%)
rename {commandapi-annotations => commandapi-platforms/commandapi-spigot/commandapi-spigot-annotations}/src/main/java/dev/jorel/commandapi/annotations/arguments/AChatComponentArgument.java (100%)
create mode 100644 commandapi-platforms/commandapi-spigot/commandapi-spigot-core/pom.xml
create mode 100644 commandapi-platforms/commandapi-spigot/commandapi-spigot-core/src/main/java/dev/jorel/commandapi/CommandAPISpigot.java
create mode 100644 commandapi-platforms/commandapi-spigot/commandapi-spigot-core/src/main/java/dev/jorel/commandapi/CommandAPISpigotConfig.java
create mode 100644 commandapi-platforms/commandapi-spigot/commandapi-spigot-core/src/main/java/dev/jorel/commandapi/InternalSpigotConfig.java
rename commandapi-platforms/{commandapi-bukkit/commandapi-bukkit-core => commandapi-spigot/commandapi-spigot-core}/src/main/java/dev/jorel/commandapi/arguments/ChatArgument.java (96%)
rename commandapi-platforms/{commandapi-bukkit/commandapi-bukkit-core => commandapi-spigot/commandapi-spigot-core}/src/main/java/dev/jorel/commandapi/arguments/ChatColorArgument.java (95%)
rename commandapi-platforms/{commandapi-bukkit/commandapi-bukkit-core => commandapi-spigot/commandapi-spigot-core}/src/main/java/dev/jorel/commandapi/arguments/ChatComponentArgument.java (95%)
rename commandapi-platforms/{commandapi-bukkit/commandapi-bukkit-core => commandapi-spigot/commandapi-spigot-core}/src/main/java/dev/jorel/commandapi/arguments/CustomArgument.java (94%)
create mode 100644 commandapi-platforms/commandapi-spigot/commandapi-spigot-core/src/main/java/dev/jorel/commandapi/nms/SpigotNMS.java
create mode 100644 commandapi-platforms/commandapi-spigot/commandapi-spigot-documentation-code/pom.xml
create mode 100644 commandapi-platforms/commandapi-spigot/commandapi-spigot-documentation-code/src/main/java/dev/jorel/commandapi/examples/java/Examples.java
create mode 100644 commandapi-platforms/commandapi-spigot/commandapi-spigot-documentation-code/src/main/kotlin/dev/jorel/commandapi/examples/kotlin/Examples.kt
create mode 100644 commandapi-platforms/commandapi-spigot/commandapi-spigot-documentation-code/src/main/kotlin/dev/jorel/commandapi/examples/kotlin/ExamplesKotlinDSL.kt
create mode 100644 commandapi-platforms/commandapi-spigot/commandapi-spigot-mojang-mapped/pom.xml
create mode 100644 commandapi-platforms/commandapi-spigot/commandapi-spigot-mojang-mapped/src/main/java/dev/jorel/commandapi/MojangMappedVersionHandler.java
create mode 100644 commandapi-platforms/commandapi-spigot/commandapi-spigot-nms/commandapi-spigot-1.16.5/pom.xml
create mode 100644 commandapi-platforms/commandapi-spigot/commandapi-spigot-nms/commandapi-spigot-1.16.5/src/main/java/dev/jorel/commandapi/nms/SpigotNMS_1_16_R3.java
create mode 100644 commandapi-platforms/commandapi-spigot/commandapi-spigot-nms/commandapi-spigot-1.17-common/pom.xml
create mode 100644 commandapi-platforms/commandapi-spigot/commandapi-spigot-nms/commandapi-spigot-1.17-common/src/main/java/dev/jorel/commandapi/nms/SpigotNMS_1_17_Common.java
create mode 100644 commandapi-platforms/commandapi-spigot/commandapi-spigot-nms/commandapi-spigot-1.17.1/pom.xml
create mode 100644 commandapi-platforms/commandapi-spigot/commandapi-spigot-nms/commandapi-spigot-1.17.1/src/main/java/dev/jorel/commandapi/nms/SpigotNMS_1_17_R1.java
create mode 100644 commandapi-platforms/commandapi-spigot/commandapi-spigot-nms/commandapi-spigot-1.17/pom.xml
create mode 100644 commandapi-platforms/commandapi-spigot/commandapi-spigot-nms/commandapi-spigot-1.17/src/main/java/dev/jorel/commandapi/nms/SpigotNMS_1_17.java
create mode 100644 commandapi-platforms/commandapi-spigot/commandapi-spigot-nms/commandapi-spigot-1.18.2/pom.xml
create mode 100644 commandapi-platforms/commandapi-spigot/commandapi-spigot-nms/commandapi-spigot-1.18.2/src/main/java/dev/jorel/commandapi/nms/SpigotNMS_1_18_R2.java
create mode 100644 commandapi-platforms/commandapi-spigot/commandapi-spigot-nms/commandapi-spigot-1.18/pom.xml
create mode 100644 commandapi-platforms/commandapi-spigot/commandapi-spigot-nms/commandapi-spigot-1.18/src/main/java/dev/jorel/commandapi/nms/SpigotNMS_1_18_R1.java
create mode 100644 commandapi-platforms/commandapi-spigot/commandapi-spigot-nms/commandapi-spigot-1.19-common/pom.xml
create mode 100644 commandapi-platforms/commandapi-spigot/commandapi-spigot-nms/commandapi-spigot-1.19-common/src/main/java/dev/jorel/commandapi/nms/SpigotNMS_1_19_Common.java
rename commandapi-platforms/{commandapi-bukkit/commandapi-bukkit-nms/commandapi-bukkit-1.19-common/src/main/java/dev/jorel/commandapi/nms/NMS_1_19_Common_ChatPreviewHandler.java => commandapi-spigot/commandapi-spigot-nms/commandapi-spigot-1.19-common/src/main/java/dev/jorel/commandapi/nms/SpigotNMS_1_19_Common_ChatPreviewHandler.java} (70%)
create mode 100644 commandapi-platforms/commandapi-spigot/commandapi-spigot-nms/commandapi-spigot-1.19.1/pom.xml
create mode 100644 commandapi-platforms/commandapi-spigot/commandapi-spigot-nms/commandapi-spigot-1.19.1/src/main/java/dev/jorel/commandapi/nms/SpigotNMS_1_19_1_R1.java
rename commandapi-platforms/{commandapi-bukkit/commandapi-bukkit-nms/commandapi-bukkit-1.19.1/src/main/java/dev/jorel/commandapi/nms/NMS_1_19_1_R1_ChatPreviewHandler.java => commandapi-spigot/commandapi-spigot-nms/commandapi-spigot-1.19.1/src/main/java/dev/jorel/commandapi/nms/SpigotNMS_1_19_1_R1_ChatPreviewHandler.java} (87%)
create mode 100644 commandapi-platforms/commandapi-spigot/commandapi-spigot-nms/commandapi-spigot-1.19.3/pom.xml
create mode 100644 commandapi-platforms/commandapi-spigot/commandapi-spigot-nms/commandapi-spigot-1.19.3/src/main/java/dev/jorel/commandapi/nms/SpigotNMS_1_19_3_R2.java
create mode 100644 commandapi-platforms/commandapi-spigot/commandapi-spigot-nms/commandapi-spigot-1.19.4/pom.xml
create mode 100644 commandapi-platforms/commandapi-spigot/commandapi-spigot-nms/commandapi-spigot-1.19.4/src/main/java/dev/jorel/commandapi/nms/SpigotNMS_1_19_4_R3.java
create mode 100644 commandapi-platforms/commandapi-spigot/commandapi-spigot-nms/commandapi-spigot-1.19/pom.xml
create mode 100644 commandapi-platforms/commandapi-spigot/commandapi-spigot-nms/commandapi-spigot-1.19/src/main/java/dev/jorel/commandapi/nms/SpigotNMS_1_19_R1.java
create mode 100644 commandapi-platforms/commandapi-spigot/commandapi-spigot-nms/commandapi-spigot-1.19/src/main/java/dev/jorel/commandapi/nms/SpigotNMS_1_19_R1_ChatPreviewHandler.java
create mode 100644 commandapi-platforms/commandapi-spigot/commandapi-spigot-nms/commandapi-spigot-1.20.2/pom.xml
create mode 100644 commandapi-platforms/commandapi-spigot/commandapi-spigot-nms/commandapi-spigot-1.20.2/src/main/java/dev/jorel/commandapi/nms/SpigotNMS_1_20_R2.java
create mode 100644 commandapi-platforms/commandapi-spigot/commandapi-spigot-nms/commandapi-spigot-1.20.3/pom.xml
create mode 100644 commandapi-platforms/commandapi-spigot/commandapi-spigot-nms/commandapi-spigot-1.20.3/src/main/java/dev/jorel/commandapi/nms/SpigotNMS_1_20_R3.java
create mode 100644 commandapi-platforms/commandapi-spigot/commandapi-spigot-nms/commandapi-spigot-1.20.5/pom.xml
create mode 100644 commandapi-platforms/commandapi-spigot/commandapi-spigot-nms/commandapi-spigot-1.20.5/src/main/java/dev/jorel/commandapi/nms/SpigotNMS_1_20_R4.java
create mode 100644 commandapi-platforms/commandapi-spigot/commandapi-spigot-nms/commandapi-spigot-1.20/pom.xml
create mode 100644 commandapi-platforms/commandapi-spigot/commandapi-spigot-nms/commandapi-spigot-1.20/src/main/java/dev/jorel/commandapi/nms/SpigotNMS_1_20_R1.java
create mode 100644 commandapi-platforms/commandapi-spigot/commandapi-spigot-nms/commandapi-spigot-1.21.2/pom.xml
create mode 100644 commandapi-platforms/commandapi-spigot/commandapi-spigot-nms/commandapi-spigot-1.21.2/src/main/java/dev/jorel/commandapi/nms/SpigotNMS_1_21_R2.java
create mode 100644 commandapi-platforms/commandapi-spigot/commandapi-spigot-nms/commandapi-spigot-1.21.4/pom.xml
create mode 100644 commandapi-platforms/commandapi-spigot/commandapi-spigot-nms/commandapi-spigot-1.21.4/src/main/java/dev/jorel/commandapi/nms/SpigotNMS_1_21_R3.java
create mode 100644 commandapi-platforms/commandapi-spigot/commandapi-spigot-nms/commandapi-spigot-1.21/pom.xml
create mode 100644 commandapi-platforms/commandapi-spigot/commandapi-spigot-nms/commandapi-spigot-1.21/src/main/java/dev/jorel/commandapi/nms/SpigotNMS_1_21_R1.java
create mode 100644 commandapi-platforms/commandapi-spigot/commandapi-spigot-nms/commandapi-spigot-nms-common/pom.xml
create mode 100644 commandapi-platforms/commandapi-spigot/commandapi-spigot-nms/commandapi-spigot-nms-common/src/main/java/dev/jorel/commandapi/nms/SpigotNMS_Common.java
create mode 100644 commandapi-platforms/commandapi-spigot/commandapi-spigot-nms/commandapi-spigot-nms-common/src/main/java/dev/jorel/commandapi/nms/SpigotNMS_CommonWithFunctions.java
create mode 100644 commandapi-platforms/commandapi-spigot/commandapi-spigot-nms/commandapi-spigot-nms-dependency-mojang-mapped/pom.xml
create mode 100644 commandapi-platforms/commandapi-spigot/commandapi-spigot-nms/commandapi-spigot-nms-dependency/pom.xml
create mode 100644 commandapi-platforms/commandapi-spigot/commandapi-spigot-nms/pom.xml
rename commandapi-platforms/{commandapi-bukkit/commandapi-bukkit-plugin => commandapi-spigot/commandapi-spigot-plugin-mojang-mapped}/pom.xml (59%)
create mode 100644 commandapi-platforms/commandapi-spigot/commandapi-spigot-plugin-mojang-mapped/src/main/java/dev/jorel/commandapi/AdvancedConverter.java
create mode 100644 commandapi-platforms/commandapi-spigot/commandapi-spigot-plugin-mojang-mapped/src/main/java/dev/jorel/commandapi/CommandAPIMain.java
create mode 100644 commandapi-platforms/commandapi-spigot/commandapi-spigot-plugin-mojang-mapped/src/main/resources/config.yml
create mode 100644 commandapi-platforms/commandapi-spigot/commandapi-spigot-plugin-mojang-mapped/src/main/resources/plugin.yml
create mode 100644 commandapi-platforms/commandapi-spigot/commandapi-spigot-plugin/LICENSE
create mode 100644 commandapi-platforms/commandapi-spigot/commandapi-spigot-plugin/pom.xml
create mode 100644 commandapi-platforms/commandapi-spigot/commandapi-spigot-plugin/src/main/java/dev/jorel/commandapi/AdvancedConverter.java
create mode 100644 commandapi-platforms/commandapi-spigot/commandapi-spigot-plugin/src/main/java/dev/jorel/commandapi/CommandAPIMain.java
create mode 100644 commandapi-platforms/commandapi-spigot/commandapi-spigot-plugin/src/main/resources/config.yml
create mode 100644 commandapi-platforms/commandapi-spigot/commandapi-spigot-plugin/src/main/resources/plugin.yml
rename commandapi-platforms/{commandapi-bukkit/commandapi-bukkit-shade-mojang-mapped => commandapi-spigot/commandapi-spigot-shade-mojang-mapped}/pom.xml (62%)
create mode 100644 commandapi-platforms/commandapi-spigot/commandapi-spigot-shade/LICENSE
create mode 100644 commandapi-platforms/commandapi-spigot/commandapi-spigot-shade/javadoc/README.md
create mode 100644 commandapi-platforms/commandapi-spigot/commandapi-spigot-shade/pom.xml
create mode 100644 commandapi-platforms/commandapi-spigot/commandapi-spigot-vh/pom.xml
create mode 100644 commandapi-platforms/commandapi-spigot/commandapi-spigot-vh/src/main/java/dev/jorel/commandapi/CommandAPIVersionHandler.java
create mode 100644 commandapi-platforms/commandapi-spigot/commandapi-spigot-vh/src/main/java/dev/jorel/commandapi/exceptions/UnsupportedVersionException.java
create mode 100644 commandapi-platforms/commandapi-spigot/pom.xml
create mode 100755 setupPaperNMS.sh
diff --git a/.editorconfig b/.editorconfig
index 03a8209fa1..4b2065012d 100644
--- a/.editorconfig
+++ b/.editorconfig
@@ -12,3 +12,9 @@ indent_style = space
[commandapi-documentation-velocity-code/**{.java,.kt}]
indent_style = space
+
+[commandapi-platforms/commandapi-paper/commandapi-paper-documentation-code/**{.java,.kt}]
+indent_style = space
+
+[commandapi-platforms/commandapi-spigot/commandapi-spigot-documentation-code/**{.java,.kt}]
+indent_style = space
diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
index 724013bf9b..9a17faa442 100644
--- a/.github/workflows/build.yml
+++ b/.github/workflows/build.yml
@@ -54,6 +54,9 @@ jobs:
### Compilation ###
+ - name: Setup Paper NMS for all applicable versions
+ run: ./setupPaperNMS.sh
+
- name: Build the CommandAPI (Bukkit+Velocity) using maven
run: mvn clean install --batch-mode -P Platform.Bukkit,Platform.Velocity
@@ -146,15 +149,25 @@ jobs:
### Upload .jar artifacts ###
- - name: Upload CommandAPI (Bukkit) plugin artifact
+ - name: Upload CommandAPI (Spigot) plugin artifact
if: ${{ runner.os == 'Linux' && matrix.java == '21' }} # Only upload artifacts built from latest java on one OS
uses: actions/upload-artifact@v3
with:
- name: CommandAPI (Bukkit plugin)
+ name: CommandAPI (Spigot plugin)
path: |
- commandapi-platforms/commandapi-bukkit/commandapi-bukkit-plugin/target/CommandAPI*.jar
- !commandapi-platforms/commandapi-bukkit/commandapi-bukkit-plugin/target/*sources.jar
- !commandapi-platforms/commandapi-bukkit/commandapi-bukkit-plugin/target/*javadoc.jar
+ commandapi-platforms/commandapi-spigot/commandapi-spigot-plugin/target/CommandAPI*.jar
+ !commandapi-platforms/commandapi-spigot/commandapi-spigot-plugin/target/*sources.jar
+ !commandapi-platforms/commandapi-spigot/commandapi-spigot-plugin/target/*javadoc.jar
+
+ - name: Upload CommandAPI (Paper) plugin artifact
+ if: ${{ runner.os == 'Linux' && matrix.java == '21' }} # Only upload artifacts built from latest java on one OS
+ uses: actions/upload-artifact@v3
+ with:
+ name: CommandAPI (Paper plugin)
+ path: |
+ commandapi-platforms/commandapi-paper/commandapi-paper-plugin/target/CommandAPI*.jar
+ !commandapi-platforms/commandapi-paper/commandapi-paper-plugin/target/*sources.jar
+ !commandapi-platforms/commandapi-paper/commandapi-paper-plugin/target/*javadoc.jar
- name: Upload CommandAPI (Velocity) plugin artifact
if: ${{ runner.os == 'Linux' && matrix.java == '21' }} # Only upload artifacts built from latest java on one OS
diff --git a/.gitignore b/.gitignore
index c681da171e..2ae3cf246c 100644
--- a/.gitignore
+++ b/.gitignore
@@ -16,3 +16,4 @@ docssrc/src/.markdownlint-cli2.yaml
.gradle
*.versionsBackup
dependency-reduced-pom.xml
+.paper-nms
diff --git a/commandapi-annotations/pom.xml b/commandapi-annotations/pom.xml
index 1017f2b5e6..8dacbdafc6 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
@@ -54,18 +55,6 @@
org.apache.maven.plugins
maven-compiler-plugin
-
-
-
- testCompile
-
-
-
- dev.jorel.commandapi.annotations.Annotations
-
-
-
-
diff --git a/commandapi-codecov/pom.xml b/commandapi-codecov/pom.xml
index c7bd6938e3..7934a6ef7e 100644
--- a/commandapi-codecov/pom.xml
+++ b/commandapi-codecov/pom.xml
@@ -51,20 +51,20 @@
${project.version}
-
+
dev.jorel
commandapi-bukkit-test-toolkit
${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/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..d9e1d2aa29 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
@@ -30,33 +30,105 @@
import com.mojang.brigadier.exceptions.CommandSyntaxException;
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.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 +151,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 +319,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,30 +735,6 @@ 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 */
new CommandAPICommand("sidebar")
@@ -1297,74 +1264,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 +2227,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..db098cd357 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,31 +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")
- .withArguments(NBTCompoundArgument("nbt"))
- .executes(CommandExecutor { _, args ->
- val nbt = args["nbt"] as NBTContainer
-
- // Do something with "nbt" here...
- })
- .register()
-/* ANCHOR_END: argumentNBT2 */
-}
-
-}
-
fun argument_objectives() {
/* ANCHOR: argumentObjectives1 */
CommandAPICommand("sidebar")
@@ -1213,75 +1090,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 +2028,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 99%
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..91ebd085ae 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,6 +52,7 @@ 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))
+/* TODO: Create additional modules for component related arguments
// 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))
@@ -59,6 +60,7 @@ inline fun CommandAPICommand.chatArgument(nodeName: String, optional: Boolean =
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))
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 99%
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..cc3ab8bc9c 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,6 +59,7 @@ 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))
+/* TODO: Create additional modules for component related arguments
// 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))
@@ -66,6 +67,7 @@ inline fun CommandTree.chatArgument(nodeName: String, optional: Boolean = false,
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))
@@ -177,6 +179,7 @@ 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))
+/* TODO: Create additional modules for component related arguments
// 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))
@@ -184,6 +187,7 @@ inline fun Argument<*>.chatArgument(nodeName: String, optional: Boolean = false,
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))
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..b848076cd2
--- /dev/null
+++ b/commandapi-platforms/commandapi-bukkit/commandapi-bukkit-core/src/main/java/dev/jorel/commandapi/BukkitPlatform.java
@@ -0,0 +1,26 @@
+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
+ default void onLoad(CommandAPIConfig> config) {
+ onLoad((CommandAPIBukkitConfig>) config);
+ }
+
+ > void onLoad(CommandAPIBukkitConfig 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/CommandAPIBukkit.java b/commandapi-platforms/commandapi-bukkit/commandapi-bukkit-core/src/main/java/dev/jorel/commandapi/CommandAPIBukkit.java
index e18a59a98a..6aa6c1a7b9 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,52 +1,11 @@
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 java.io.File;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.Optional;
-import java.util.Set;
-import java.util.function.Function;
-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;
@@ -54,77 +13,92 @@
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.kyori.adventure.text.ComponentLike;
import net.md_5.bungee.api.chat.BaseComponent;
+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.help.HelpTopic;
+import org.bukkit.inventory.Recipe;
+import org.bukkit.permissions.Permission;
+
+import java.io.File;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Optional;
+import java.util.Set;
+import java.util.function.Function;
+import java.util.logging.Level;
+import java.util.logging.Logger;
-// CommandAPIBukkit is an CommandAPIPlatform, but also needs all of the methods from
-// NMS, so it implements NMS. Our implementation of CommandAPIBukkit is now derived
+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;
+
+// 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 NMS {
// References to utility classes
- private static CommandAPIBukkit> instance;
- private static InternalBukkitConfig config;
- private PaperImplementations paper;
+ private static BukkitPlatform> instance;
+ private static CommandAPIBukkit> bukkit;
+ protected static InternalBukkitConfig config;
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 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;
- }
private void checkDependencies() {
// Log successful hooks
@@ -143,72 +117,7 @@ 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);
+ commandRegistrationStrategy = ((BukkitPlatform) instance).createCommandRegistrationStrategy();
}
/*
@@ -364,63 +273,23 @@ void updateHelpForCommands(List commands) {
}
}
- @Override
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");
+ return instance.wrapCommandSender(sender);
}
- @Override
public void registerPermission(String string) {
try {
Bukkit.getPluginManager().addPermission(new Permission(string));
@@ -433,7 +302,6 @@ public void registerPermission(String string) {
@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
// plugin.yml file
@@ -453,7 +321,6 @@ public void preCommandRegistration(String commandName) {
}
}
- @Override
public void postCommandRegistration(RegisteredCommand registeredCommand, LiteralCommandNode resultantNode, List> aliasNodes) {
commandRegistrationStrategy.postCommandRegistration(registeredCommand, resultantNode, aliasNodes);
@@ -468,12 +335,10 @@ public void postCommandRegistration(RegisteredCommand registeredCommand, Literal
}
}
- @Override
public LiteralCommandNode registerCommandNode(LiteralArgumentBuilder node, String namespace) {
return commandRegistrationStrategy.registerCommandNode(node, namespace);
}
- @Override
public void unregister(String commandName, boolean unregisterNamespaces) {
unregisterInternal(commandName, unregisterNamespaces, false);
}
@@ -513,19 +378,16 @@ private void unregisterInternal(String commandName, boolean unregisterNamespaces
}
}
- @Override
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();
}
@@ -547,22 +409,18 @@ public void severe(String message, Throwable exception) {
@Unimplemented(because = VERSION_SPECIFIC_IMPLEMENTATION)
public abstract void reloadDataPacks();
- @Override
public void updateRequirements(AbstractPlayer> player) {
((Player) player.getSource()).updateCommands();
}
- @Override
public Argument newConcreteMultiLiteralArgument(String nodeName, String[] literals) {
return new MultiLiteralArgument(nodeName, literals);
}
- @Override
public Argument newConcreteLiteralArgument(String nodeName, String literal) {
return new LiteralArgument(nodeName, literal);
}
- @Override
public CommandAPICommand newConcreteCommandAPICommand(CommandMetaData meta) {
return new CommandAPICommand(meta);
}
@@ -619,7 +477,7 @@ public static WrapperCommandSyntaxException failWithAdventureComponent(Component
public static void initializeNBTAPI(Class nbtContainerClass, Function