From 1b1a496ab180fced32fc52661a74e9fd9544874a Mon Sep 17 00:00:00 2001 From: kento2 Date: Tue, 25 Aug 2026 19:15:27 +0200 Subject: [PATCH] implement velocity platform --- .forgejo/workflows/publish.yml | 2 +- MODULE.bazel | 10 + MODULE.bazel.lock | 24 - maven_install.json | 1868 +++++++++++++++++ velocity/BUILD.bazel | 23 + .../velocity/CommandContextFactory.java | 7 + .../commands/velocity/VelocityCommand.java | 40 + .../velocity/VelocityCommandContext.java | 21 + .../commands/velocity/VelocityPlatform.java | 14 + 9 files changed, 1984 insertions(+), 25 deletions(-) create mode 100644 maven_install.json create mode 100644 velocity/BUILD.bazel create mode 100644 velocity/site/lab0x13/scrow/commands/velocity/CommandContextFactory.java create mode 100644 velocity/site/lab0x13/scrow/commands/velocity/VelocityCommand.java create mode 100644 velocity/site/lab0x13/scrow/commands/velocity/VelocityCommandContext.java create mode 100644 velocity/site/lab0x13/scrow/commands/velocity/VelocityPlatform.java diff --git a/.forgejo/workflows/publish.yml b/.forgejo/workflows/publish.yml index 616fb67..14ee52a 100644 --- a/.forgejo/workflows/publish.yml +++ b/.forgejo/workflows/publish.yml @@ -46,7 +46,7 @@ jobs: MAVEN_USER: ${{ secrets.MAVENREPO_USERNAME }} MAVEN_PASSWORD: ${{ secrets.MAVENREPO_PASSWORD }} run: | - for target in //bukkit:bukkit.publish //common:common.publish + for target in //common:common.publish //bukkit:bukkit.publish //velocity:velocity.publish do bazel \ --output_user_root=/var/cache/bazel \ diff --git a/MODULE.bazel b/MODULE.bazel index e6cad17..bf62334 100644 --- a/MODULE.bazel +++ b/MODULE.bazel @@ -5,6 +5,12 @@ bazel_dep(name = "rules_jvm_external", version = "7.1") bazel_dep(name = "contrib_rules_jvm", version = "0.34.0") bazel_dep(name = "apple_rules_lint", version = "0.4.0") +git_override( + module_name = "rules_jvm_external", + remote = "https://github.com/acecilia/rules_jvm_external.git", + branch = "3-snapshot_support", +) + maven = use_extension("@rules_jvm_external//:extensions.bzl", "maven") maven.install( name = "maven", @@ -15,6 +21,8 @@ maven.install( "com.leakyabstractions:result-api:1.0.1.0", "com.leakyabstractions:result:1.0.2.0", "io.papermc.paper:paper-api:[26.2.build,)", + # use `env REPIN=1 bazel run @maven//:pin` after updating + "com.velocitypowered:velocity-api:4.1.0-SNAPSHOT", # TESTS "net.kyori:adventure-text-serializer-plain:5.2.0", @@ -31,6 +39,8 @@ maven.install( "https://repo.papermc.io/repository/maven-public/", ], known_contributing_modules = ["protobuf"], + resolver = "gradle", + lock_file = "//:maven_install.json", ) use_repo(maven, "maven") diff --git a/MODULE.bazel.lock b/MODULE.bazel.lock index a33d89f..423cb48 100644 --- a/MODULE.bazel.lock +++ b/MODULE.bazel.lock @@ -29,8 +29,6 @@ "https://bcr.bazel.build/modules/bazel_features/1.1.1/MODULE.bazel": "27b8c79ef57efe08efccbd9dd6ef70d61b4798320b8d3c134fd571f78963dbcd", "https://bcr.bazel.build/modules/bazel_features/1.10.0/MODULE.bazel": "f75e8807570484a99be90abcd52b5e1f390362c258bcb73106f4544957a48101", "https://bcr.bazel.build/modules/bazel_features/1.11.0/MODULE.bazel": "f9382337dd5a474c3b7d334c2f83e50b6eaedc284253334cf823044a26de03e8", - "https://bcr.bazel.build/modules/bazel_features/1.13.0/MODULE.bazel": "c14c33c7c3c730612bdbe14ebbb5e61936b6f11322ea95a6e91cd1ba962f94df", - "https://bcr.bazel.build/modules/bazel_features/1.15.0/MODULE.bazel": "d38ff6e517149dc509406aca0db3ad1efdd890a85e049585b7234d04238e2a4d", "https://bcr.bazel.build/modules/bazel_features/1.17.0/MODULE.bazel": "039de32d21b816b47bd42c778e0454217e9c9caac4a3cf8e15c7231ee3ddee4d", "https://bcr.bazel.build/modules/bazel_features/1.18.0/MODULE.bazel": "1be0ae2557ab3a72a57aeb31b29be347bcdc5d2b1eb1e70f39e3851a7e97041a", "https://bcr.bazel.build/modules/bazel_features/1.19.0/MODULE.bazel": "59adcdf28230d220f0067b1f435b8537dd033bfff8db21335ef9217919c7fb58", @@ -53,7 +51,6 @@ "https://bcr.bazel.build/modules/bazel_skylib/1.0.3/MODULE.bazel": "bcb0fd896384802d1ad283b4e4eb4d718eebd8cb820b0a2c3a347fb971afd9d8", "https://bcr.bazel.build/modules/bazel_skylib/1.1.1/MODULE.bazel": "1add3e7d93ff2e6998f9e118022c84d163917d912f5afafb3058e3d2f1545b5e", "https://bcr.bazel.build/modules/bazel_skylib/1.2.0/MODULE.bazel": "44fe84260e454ed94ad326352a698422dbe372b21a1ac9f3eab76eb531223686", - "https://bcr.bazel.build/modules/bazel_skylib/1.2.1/MODULE.bazel": "f35baf9da0efe45fa3da1696ae906eea3d615ad41e2e3def4aeb4e8bc0ef9a7a", "https://bcr.bazel.build/modules/bazel_skylib/1.3.0/MODULE.bazel": "20228b92868bf5cfc41bda7afc8a8ba2a543201851de39d990ec957b513579c5", "https://bcr.bazel.build/modules/bazel_skylib/1.4.1/MODULE.bazel": "a0dcb779424be33100dcae821e9e27e4f2901d9dfd5333efe5ac6a8d7ab75e1d", "https://bcr.bazel.build/modules/bazel_skylib/1.4.2/MODULE.bazel": "3bd40978e7a1fac911d5989e6b09d8f64921865a45822d8b09e815eaa726a651", @@ -97,7 +94,6 @@ "https://bcr.bazel.build/modules/nlohmann_json/3.6.1/MODULE.bazel": "6f7b417dcc794d9add9e556673ad25cb3ba835224290f4f848f8e2db1e1fca74", "https://bcr.bazel.build/modules/nlohmann_json/3.6.1/source.json": "f448c6e8963fdfa7eb831457df83ad63d3d6355018f6574fb017e8169deb43a9", "https://bcr.bazel.build/modules/package_metadata/0.0.2/MODULE.bazel": "fb8d25550742674d63d7b250063d4580ca530499f045d70748b1b142081ebb92", - "https://bcr.bazel.build/modules/package_metadata/0.0.3/MODULE.bazel": "77890552ecea9e284b5424c9de827a58099348763a4359e975c359a83d4faa83", "https://bcr.bazel.build/modules/package_metadata/0.0.5/MODULE.bazel": "ef4f9439e3270fdd6b9fd4dbc3d2f29d13888e44c529a1b243f7a31dfbc2e8e4", "https://bcr.bazel.build/modules/package_metadata/0.0.7/MODULE.bazel": "7adb03933fc8401f495800cf4eafcff0edc6da0ff55c7db223ef69d19f689486", "https://bcr.bazel.build/modules/package_metadata/0.0.7/source.json": "50639625e937b56115012674c797cca7a05a96b4878c87d803c13dc2b31de8a0", @@ -139,9 +135,7 @@ "https://bcr.bazel.build/modules/re2/2024-07-02/MODULE.bazel": "0eadc4395959969297cbcf31a249ff457f2f1d456228c67719480205aa306daa", "https://bcr.bazel.build/modules/re2/2025-11-05.bcr.1/MODULE.bazel": "3d9d4995833fc0334fc5c88b56a05288dd25d651544cd7b2233bbd6357bbeba0", "https://bcr.bazel.build/modules/re2/2025-11-05.bcr.1/source.json": "7df1394aabda1c9bc188a302f5d54b1c657924edd04ebc57d2be29dbd7efd141", - "https://bcr.bazel.build/modules/rules_android/0.1.1/MODULE.bazel": "48809ab0091b07ad0182defb787c4c5328bd3a278938415c00a7b69b50c4d3a8", "https://bcr.bazel.build/modules/rules_android/0.6.4/MODULE.bazel": "b4cde12d506dd65d82b2be39761f49f5797303343a3d5b4ee191c0cdf9ef387c", - "https://bcr.bazel.build/modules/rules_android/0.6.6/MODULE.bazel": "b0fb569752aab65ab1a9db0a8f6cfaf5aa1754965e17e95dcf0e4d88e192a68d", "https://bcr.bazel.build/modules/rules_android/0.7.1/MODULE.bazel": "a806fc382a774252f228a40e3b11b9fcc6276f8778c7fb33e9f72937c6258363", "https://bcr.bazel.build/modules/rules_android/0.7.1/source.json": "151440aed3f0f73a00d4ed5cec5d31f63a6fef9b95d8fab1eb1810150fa525f2", "https://bcr.bazel.build/modules/rules_apple/3.16.0/MODULE.bazel": "0d1caf0b8375942ce98ea944be754a18874041e4e0459401d925577624d3a54a", @@ -183,12 +177,9 @@ "https://bcr.bazel.build/modules/rules_java/6.3.0/MODULE.bazel": "a97c7678c19f236a956ad260d59c86e10a463badb7eb2eda787490f4c969b963", "https://bcr.bazel.build/modules/rules_java/6.5.2/MODULE.bazel": "1d440d262d0e08453fa0c4d8f699ba81609ed0e9a9a0f02cd10b3e7942e61e31", "https://bcr.bazel.build/modules/rules_java/7.1.0/MODULE.bazel": "30d9135a2b6561c761bd67bd4990da591e6bdc128790ce3e7afd6a3558b2fb64", - "https://bcr.bazel.build/modules/rules_java/7.10.0/MODULE.bazel": "530c3beb3067e870561739f1144329a21c851ff771cd752a49e06e3dc9c2e71a", "https://bcr.bazel.build/modules/rules_java/7.12.2/MODULE.bazel": "579c505165ee757a4280ef83cda0150eea193eed3bef50b1004ba88b99da6de6", "https://bcr.bazel.build/modules/rules_java/7.2.0/MODULE.bazel": "06c0334c9be61e6cef2c8c84a7800cef502063269a5af25ceb100b192453d4ab", - "https://bcr.bazel.build/modules/rules_java/7.4.0/MODULE.bazel": "a592852f8a3dd539e82ee6542013bf2cadfc4c6946be8941e189d224500a8934", "https://bcr.bazel.build/modules/rules_java/7.6.1/MODULE.bazel": "2f14b7e8a1aa2f67ae92bc69d1ec0fa8d9f827c4e17ff5e5f02e91caa3b2d0fe", - "https://bcr.bazel.build/modules/rules_java/8.13.0/MODULE.bazel": "0444ebf737d144cf2bb2ccb368e7f1cce735264285f2a3711785827c1686625e", "https://bcr.bazel.build/modules/rules_java/8.15.2/MODULE.bazel": "5cc6698c822b2f9ef90ca5558599851bed8c3b13f1f8eb140d9bfec638d2acb4", "https://bcr.bazel.build/modules/rules_java/8.3.2/MODULE.bazel": "7336d5511ad5af0b8615fdc7477535a2e4e723a357b6713af439fe8cf0195017", "https://bcr.bazel.build/modules/rules_java/8.5.1/MODULE.bazel": "d8a9e38cc5228881f7055a6079f6f7821a073df3744d441978e7a43e20226939", @@ -200,20 +191,7 @@ "https://bcr.bazel.build/modules/rules_java/9.3.0/MODULE.bazel": "f657c72d65ac449caae9abf2e68e66c0d36f9416848c4c4903d0b3234229e7f2", "https://bcr.bazel.build/modules/rules_java/9.7.0/MODULE.bazel": "3ce6bd55fdd4fcb3323197736b7d976e0eedcc0eea78ca6186d20d314ba12e12", "https://bcr.bazel.build/modules/rules_java/9.7.0/source.json": "23b356565156e0fbc71e5dad7cf8e1b951466b7ae3fd731cb1d2c95ca82b1d70", - "https://bcr.bazel.build/modules/rules_jvm_external/4.4.2/MODULE.bazel": "a56b85e418c83eb1839819f0b515c431010160383306d13ec21959ac412d2fe7", - "https://bcr.bazel.build/modules/rules_jvm_external/5.1/MODULE.bazel": "33f6f999e03183f7d088c9be518a63467dfd0be94a11d0055fe2d210f89aa909", - "https://bcr.bazel.build/modules/rules_jvm_external/5.2/MODULE.bazel": "d9351ba35217ad0de03816ef3ed63f89d411349353077348a45348b096615036", - "https://bcr.bazel.build/modules/rules_jvm_external/6.10/MODULE.bazel": "33e636ca6bc9ee0fa090a38aa33c631ded2d8cf6fead4124181d1b35dc474f7c", - "https://bcr.bazel.build/modules/rules_jvm_external/6.2/MODULE.bazel": "36a6e52487a855f33cb960724eb56547fa87e2c98a0474c3acad94339d7f8e99", - "https://bcr.bazel.build/modules/rules_jvm_external/6.3/MODULE.bazel": "c998e060b85f71e00de5ec552019347c8bca255062c990ac02d051bb80a38df0", - "https://bcr.bazel.build/modules/rules_jvm_external/6.6/MODULE.bazel": "153042249c7060536dc95b6bb9f9bb8063b8a0b0cb7acdb381bddbc2374aed55", - "https://bcr.bazel.build/modules/rules_jvm_external/6.7/MODULE.bazel": "e717beabc4d091ecb2c803c2d341b88590e9116b8bf7947915eeb33aab4f96dd", - "https://bcr.bazel.build/modules/rules_jvm_external/6.9/MODULE.bazel": "07c5db05527db7744a54fcffd653e1550d40e0540207a7f7e6d0a4de5bef8274", - "https://bcr.bazel.build/modules/rules_jvm_external/7.1/MODULE.bazel": "e151b1beaa45bfc9e5de4df637d980e27039eb2b1092a95972bf2adbf99ac1a0", - "https://bcr.bazel.build/modules/rules_jvm_external/7.1/source.json": "8cb571a9631c39bf29c1842958542f14bba1c704fe2bcde4fa54679b2a6b3d6f", - "https://bcr.bazel.build/modules/rules_kotlin/1.9.5/MODULE.bazel": "043a16a572f610558ec2030db3ff0c9938574e7dd9f58bded1bb07c0192ef025", "https://bcr.bazel.build/modules/rules_kotlin/1.9.6/MODULE.bazel": "d269a01a18ee74d0335450b10f62c9ed81f2321d7958a2934e44272fe82dcef3", - "https://bcr.bazel.build/modules/rules_kotlin/2.1.3/MODULE.bazel": "ce7def6d576aa8d3a9c6d10e13b4d157296229674371f67dbf788dae0afae3d5", "https://bcr.bazel.build/modules/rules_kotlin/2.2.2/MODULE.bazel": "00d39c5e0fa78cd86193946265bb849e7878c24e44260f9525108428852b315c", "https://bcr.bazel.build/modules/rules_kotlin/2.2.2/source.json": "7a32c2259c79ae0c9a036121f120de825e3ba5f0f3a209ffbbdccf4dc62489b9", "https://bcr.bazel.build/modules/rules_license/0.0.3/MODULE.bazel": "627e9ab0247f7d1e05736b59dbb1b6871373de5ad31c3011880b4133cafd4bd0", @@ -260,8 +238,6 @@ "https://bcr.bazel.build/modules/rules_swift/2.4.0/MODULE.bazel": "1639617eb1ede28d774d967a738b4a68b0accb40650beadb57c21846beab5efd", "https://bcr.bazel.build/modules/rules_swift/3.1.2/MODULE.bazel": "72c8f5cf9d26427cee6c76c8e3853eb46ce6b0412a081b2b6db6e8ad56267400", "https://bcr.bazel.build/modules/rules_swift/3.1.2/source.json": "e85761f3098a6faf40b8187695e3de6d97944e98abd0d8ce579cb2daf6319a66", - "https://bcr.bazel.build/modules/stardoc/0.5.1/MODULE.bazel": "1a05d92974d0c122f5ccf09291442580317cdd859f07a8655f1db9a60374f9f8", - "https://bcr.bazel.build/modules/stardoc/0.5.3/MODULE.bazel": "c7f6948dae6999bf0db32c1858ae345f112cacf98f174c7a8bb707e41b974f1c", "https://bcr.bazel.build/modules/stardoc/0.6.2/MODULE.bazel": "7060193196395f5dd668eda046ccbeacebfd98efc77fed418dbe2b82ffaa39fd", "https://bcr.bazel.build/modules/stardoc/0.7.0/MODULE.bazel": "05e3d6d30c099b6770e97da986c53bd31844d7f13d41412480ea265ac9e8079c", "https://bcr.bazel.build/modules/stardoc/0.7.2/MODULE.bazel": "fc152419aa2ea0f51c29583fab1e8c99ddefd5b3778421845606ee628629e0e5", diff --git a/maven_install.json b/maven_install.json new file mode 100644 index 0000000..50134c5 --- /dev/null +++ b/maven_install.json @@ -0,0 +1,1868 @@ +{ + "__AUTOGENERATED_FILE_DO_NOT_MODIFY_THIS_FILE_MANUALLY": "THERE_IS_NO_DATA_ONLY_ZUUL", + "__INPUT_ARTIFACTS_HASH": { + "com.google.code.findbugs:jsr305": 495355163, + "com.google.code.gson:gson": 597770368, + "com.google.errorprone:error_prone_annotations": -1035138750, + "com.google.guava:guava": -1756621521, + "com.google.j2objc:j2objc-annotations": 2003271689, + "com.leakyabstractions:result": 1655671314, + "com.leakyabstractions:result-api": -741055074, + "com.velocitypowered:velocity-api": 598211634, + "io.papermc.paper:paper-api": -1677464331, + "net.kyori:adventure-api": 1030187247, + "net.kyori:adventure-text-serializer-plain": 1810155396, + "org.jetbrains:annotations": -1407642574, + "org.junit.jupiter:junit-jupiter-api": 194920406, + "org.junit.jupiter:junit-jupiter-engine": -1886863302, + "org.junit.platform:junit-platform-launcher": -354104948, + "org.junit.platform:junit-platform-reporting": 1896713402, + "org.junit:junit-bom": 866515233, + "repositories": -955150188 + }, + "__RESOLVED_ARTIFACTS_HASH": { + "aopalliance:aopalliance": 1403132272, + "com.github.ben-manes.caffeine:caffeine": 1568642510, + "com.google.code.findbugs:jsr305": 870839855, + "com.google.code.gson:gson": -1496337728, + "com.google.errorprone:error_prone_annotations": 430949977, + "com.google.guava:failureaccess": 1715931538, + "com.google.guava:guava": -147482369, + "com.google.guava:listenablefuture": 1079558157, + "com.google.inject:guice": 2091258489, + "com.google.j2objc:j2objc-annotations": -1008747351, + "com.leakyabstractions:result": -226801672, + "com.leakyabstractions:result-api": -651535813, + "com.moandjiezana.toml:toml4j": -1513904964, + "com.mojang:brigadier": 913620533, + "com.velocitypowered:velocity-api": -1492462215, + "com.velocitypowered:velocity-brigadier": -1261075963, + "commons-codec:commons-codec": -1411194476, + "io.leangen.geantyref:geantyref": 1531856259, + "io.papermc.paper:paper-api": 1675724725, + "it.unimi.dsi:fastutil": 1739877374, + "jakarta.inject:jakarta.inject-api": 188991469, + "javax.inject:javax.inject": 698155243, + "net.kyori:adventure-api": 160468233, + "net.kyori:adventure-bom": 1472851752, + "net.kyori:adventure-key": -1185649812, + "net.kyori:adventure-text-logger-slf4j": -1432021540, + "net.kyori:adventure-text-minimessage": 1533115960, + "net.kyori:adventure-text-serializer-ansi": -1642788555, + "net.kyori:adventure-text-serializer-commons": -337896063, + "net.kyori:adventure-text-serializer-gson": -1529154841, + "net.kyori:adventure-text-serializer-json": 1260021086, + "net.kyori:adventure-text-serializer-legacy": -481345500, + "net.kyori:adventure-text-serializer-plain": 386371739, + "net.kyori:ansi": 997964596, + "net.kyori:option": -134523688, + "net.md-5:bungeecord-chat": -2121818932, + "org.apache.commons:commons-lang3": -1070155819, + "org.apache.httpcomponents:httpclient": -1780430011, + "org.apache.httpcomponents:httpcore": 67453319, + "org.apache.logging.log4j:log4j-api": -79106511, + "org.apache.maven.resolver:maven-resolver-api": -274344430, + "org.apache.maven.resolver:maven-resolver-connector-basic": -1819010895, + "org.apache.maven.resolver:maven-resolver-impl": 988241953, + "org.apache.maven.resolver:maven-resolver-named-locks": -663305356, + "org.apache.maven.resolver:maven-resolver-spi": 2054051643, + "org.apache.maven.resolver:maven-resolver-transport-http": -1829861066, + "org.apache.maven.resolver:maven-resolver-util": 1240367164, + "org.apache.maven:maven-artifact": -1775316664, + "org.apache.maven:maven-builder-support": -2045756754, + "org.apache.maven:maven-model": -1477170202, + "org.apache.maven:maven-model-builder": -312842796, + "org.apache.maven:maven-repository-metadata": -1092475520, + "org.apache.maven:maven-resolver-provider": -241093259, + "org.checkerframework:checker-qual": 7830057, + "org.codehaus.plexus:plexus-interpolation": -455118382, + "org.codehaus.plexus:plexus-utils": 37123609, + "org.eclipse.sisu:org.eclipse.sisu.inject": 1305442139, + "org.jetbrains:annotations": -1317745251, + "org.joml:joml": -564433831, + "org.jspecify:jspecify": -109882726, + "org.junit.jupiter:junit-jupiter-api": -1129472085, + "org.junit.jupiter:junit-jupiter-engine": 925289515, + "org.junit.platform:junit-platform-commons": -1119218668, + "org.junit.platform:junit-platform-engine": 1757071459, + "org.junit.platform:junit-platform-launcher": 346402203, + "org.junit.platform:junit-platform-reporting": 1267939555, + "org.junit:junit-bom": 66205139, + "org.opentest4j.reporting:open-test-reporting-tooling-spi": -161448696, + "org.opentest4j:opentest4j": -1711174392, + "org.slf4j:jcl-over-slf4j": 498129285, + "org.slf4j:slf4j-api": 500377983, + "org.spongepowered:configurate-core": -75093381, + "org.spongepowered:configurate-gson": -376363717, + "org.spongepowered:configurate-hocon": -233169635, + "org.spongepowered:configurate-yaml": -1304157201, + "org.yaml:snakeyaml": 1068613154 + }, + "artifacts": { + "aopalliance:aopalliance": { + "shasums": { + "jar": "0addec670fedcd3f113c5c8091d783280d23f75e3acb841b61a9cdb079376a08" + }, + "version": "1.0" + }, + "com.github.ben-manes.caffeine:caffeine": { + "shasums": { + "jar": "9d9d2cfd681fd9272ded3d27c9930db12f89f732345975aa113ebc223bbf1224" + }, + "version": "3.2.4" + }, + "com.google.code.findbugs:jsr305": { + "shasums": { + "jar": "766ad2a0783f2687962c8ad74ceecc38a28b9f72a2d085ee438b7813e928d0c7" + }, + "version": "3.0.2" + }, + "com.google.code.gson:gson": { + "shasums": { + "jar": "2cbd119bf1961c28788310963dc80ba65f58cdeec1dd139c8bdb1240faa2c36f" + }, + "version": "2.14.0" + }, + "com.google.errorprone:error_prone_annotations": { + "shasums": { + "jar": "3b1003e51b8ae56fdbd7c71073e81d1683b97e6c4dff5a9151164d59b769d13c" + }, + "version": "2.49.0" + }, + "com.google.guava:failureaccess": { + "shasums": { + "jar": "cbfc3906b19b8f55dd7cfd6dfe0aa4532e834250d7f080bd8d211a3e246b59cb" + }, + "version": "1.0.3" + }, + "com.google.guava:guava": { + "shasums": { + "jar": "dc573e1fca4fd5454f4a5fd3d7da2df03002876a4175bafc14a95980dd7713b3" + }, + "version": "33.6.0-jre" + }, + "com.google.guava:listenablefuture": { + "shasums": { + "jar": "b372a037d4230aa57fbeffdef30fd6123f9c0c2db85d0aced00c91b974f33f99" + }, + "version": "9999.0-empty-to-avoid-conflict-with-guava" + }, + "com.google.inject:guice": { + "shasums": { + "jar": "de5b0e359bd7b03ca42806b368846efd95484380fe05ae2a4ea71bc338c59c00" + }, + "version": "7.0.0" + }, + "com.google.j2objc:j2objc-annotations": { + "shasums": { + "jar": "84d3a150518485f8140ea99b8a985656749629f6433c92b80c75b36aba3b099b" + }, + "version": "3.1" + }, + "com.leakyabstractions:result": { + "shasums": { + "jar": "e08b406f97802cc95fe10e0de9fcc05e5ef1b708d178499d16e88cb050b13722" + }, + "version": "1.0.2.0" + }, + "com.leakyabstractions:result-api": { + "shasums": { + "jar": "fabf68bb6d1a088b739fa45f05bdcee68ea054dc743ff54b0b5bf0d38615c897" + }, + "version": "1.0.1.0" + }, + "com.moandjiezana.toml:toml4j": { + "shasums": { + "jar": "f5475e63e7e89e5db62223489aec7a56bd303543772077a17c2cb54c19ca3a20" + }, + "version": "0.7.2" + }, + "com.mojang:brigadier": { + "shasums": { + "jar": "c8ee4136e474ac7723ca2b432ec8d1a2bc88ef7d1ec57c314ba9e33cdc83dd75" + }, + "version": "1.3.10" + }, + "com.velocitypowered:velocity-api": { + "shasums": { + "jar": "f5835a4a6191f909005b695ccc07b915e8dadeff4ab69c82a7cac1c9e4c8e6ce" + }, + "version": "4.1.0-20260814.105711-13" + }, + "com.velocitypowered:velocity-brigadier": { + "shasums": { + "jar": "2d6646ed46d8052fc9f0d504309a0294d08a7c75d534fd84f11db0850cefdcb2" + }, + "version": "1.0.0-20210613.082804-10" + }, + "commons-codec:commons-codec": { + "shasums": { + "jar": "56595fb20b0b85bc91d0d503dad50bb7f1b9afc0eed5dffa6cbb25929000484d" + }, + "version": "1.16.0" + }, + "io.leangen.geantyref:geantyref": { + "shasums": { + "jar": "7f1d591092d5142b6aaa7cf59f94c4c74d57dbeef03b2f8262949f8f36bac6e3" + }, + "version": "1.3.16" + }, + "io.papermc.paper:paper-api": { + "shasums": { + "jar": "167237534a28a64b22f2bca1af0809e1b0ee689e9d4b8653bdd17c4a4c7c4b17" + }, + "version": "26.2-rc-2.build.9-alpha" + }, + "it.unimi.dsi:fastutil": { + "shasums": { + "jar": "9094ae67d01d0ad246f886f11ad557fc2e79c72cbf3feed83e1512a8ae90a74a" + }, + "version": "8.5.18" + }, + "jakarta.inject:jakarta.inject-api": { + "shasums": { + "jar": "f7dc98062fccf14126abb751b64fab12c312566e8cbdc8483598bffcea93af7c" + }, + "version": "2.0.1" + }, + "javax.inject:javax.inject": { + "shasums": { + "jar": "91c77044a50c481636c32d916fd89c9118a72195390452c81065080f957de7ff" + }, + "version": "1" + }, + "net.kyori:adventure-api": { + "shasums": { + "jar": "7e52fe7190be3e87b3b3f71712cfa12315fcd27109f302a7b440c12f01fae827" + }, + "version": "5.2.0" + }, + "net.kyori:adventure-bom": { + "shasums": { + "jar": null + }, + "version": "5.2.0" + }, + "net.kyori:adventure-key": { + "shasums": { + "jar": "0184d173200e2eef8fbc791f622d1d58fd459f8930c616b5a4fe79e83eda6c55" + }, + "version": "5.2.0" + }, + "net.kyori:adventure-text-logger-slf4j": { + "shasums": { + "jar": "ae79b7f3846c5d973b37c7eec03190bd44e182918d1346e7705c5991a1b5dfb3" + }, + "version": "5.2.0" + }, + "net.kyori:adventure-text-minimessage": { + "shasums": { + "jar": "e1871aba1511dbe49cff211c10f85682886014161e5d629318aa69583c31a2c0" + }, + "version": "5.2.0" + }, + "net.kyori:adventure-text-serializer-ansi": { + "shasums": { + "jar": "9229d090832e288018f3df69027602dcda253118358585dc2728f84597e9ca9d" + }, + "version": "5.2.0" + }, + "net.kyori:adventure-text-serializer-commons": { + "shasums": { + "jar": "64b3e45d93aa57f4da9b257d16c8f2172612d9e3312b061f4892fd426922d2c3" + }, + "version": "5.2.0" + }, + "net.kyori:adventure-text-serializer-gson": { + "shasums": { + "jar": "5b2ad1c8a65e7fa0811279b51a45d5fc574b6a6354097b545e4fdb5b68aaed73" + }, + "version": "5.2.0" + }, + "net.kyori:adventure-text-serializer-json": { + "shasums": { + "jar": "adb5410006175b9aa6343bfadd0bd11c4a6955ee2abc1a58abe2a3fa6cbd9ab5" + }, + "version": "5.2.0" + }, + "net.kyori:adventure-text-serializer-legacy": { + "shasums": { + "jar": "1231a0de417de66c59e2f2a3892ecca6b8d48621df6f1d9a2f81b01f57e328b7" + }, + "version": "5.2.0" + }, + "net.kyori:adventure-text-serializer-plain": { + "shasums": { + "jar": "f6424cc038a631b79cc4b74b6b353d5d007c99b38f9be482e0c2448a00eecd21" + }, + "version": "5.2.0" + }, + "net.kyori:ansi": { + "shasums": { + "jar": "b6c569e1a0925b9eeb349e12db35e2237556107e3336657e0b2ebde261d8afd7" + }, + "version": "1.1.1" + }, + "net.kyori:option": { + "shasums": { + "jar": "97b69b4b17dfe02217c9131ad342564cbc9aebd04c75eb689639b5f78fd4b11c" + }, + "version": "1.1.0" + }, + "net.md-5:bungeecord-chat": { + "shasums": { + "jar": "ce930b3ee048520a0ab538eb8d1627b301367fc1b300837235387aded6d89ba1" + }, + "version": "1.21-R0.2-deprecated+build.21" + }, + "org.apache.commons:commons-lang3": { + "shasums": { + "jar": "d919d904486c037f8d193412da0c92e22a9fa24230b9d67a57855c5c31c7e94e" + }, + "version": "3.12.0" + }, + "org.apache.httpcomponents:httpclient": { + "shasums": { + "jar": "c8bc7e1c51a6d4ce72f40d2ebbabf1c4b68bfe76e732104b04381b493478e9d6" + }, + "version": "4.5.14" + }, + "org.apache.httpcomponents:httpcore": { + "shasums": { + "jar": "6c9b3dd142a09dc468e23ad39aad6f75a0f2b85125104469f026e52a474e464f" + }, + "version": "4.4.16" + }, + "org.apache.logging.log4j:log4j-api": { + "shasums": { + "jar": "820de7bbaf430eaf2e3e5ccb92f23e2085797c5ac4d4f7fc6c8b660fbefa1dbc" + }, + "version": "2.26.0" + }, + "org.apache.maven.resolver:maven-resolver-api": { + "shasums": { + "jar": "ebfb9e1dfeea3c2017905184581e007874b4eaac9d28bfffcfe5133d70ac6339" + }, + "version": "1.9.18" + }, + "org.apache.maven.resolver:maven-resolver-connector-basic": { + "shasums": { + "jar": "f88d97d0f18571a675e73b45d6a9384b00322c9fae514ad6761d65b729a4e82a" + }, + "version": "1.9.18" + }, + "org.apache.maven.resolver:maven-resolver-impl": { + "shasums": { + "jar": "6bb9c90d007098004749c867da2eaf5785fc1139907718749c1097bdb2929bf8" + }, + "version": "1.9.18" + }, + "org.apache.maven.resolver:maven-resolver-named-locks": { + "shasums": { + "jar": "098de7bbc5b0b26c3eff74ac30ffba6680fdab9bf4aebab95c3f5e2fe9eaeea8" + }, + "version": "1.9.18" + }, + "org.apache.maven.resolver:maven-resolver-spi": { + "shasums": { + "jar": "d364fce9a17b0e0b073c26efa92af95b29c00c42943dced4a1168a7923fd3fe1" + }, + "version": "1.9.18" + }, + "org.apache.maven.resolver:maven-resolver-transport-http": { + "shasums": { + "jar": "1fa02272da7a604718f22e2bc9775f14350487548ffc30a2ffaae1c2d1d1a58a" + }, + "version": "1.9.18" + }, + "org.apache.maven.resolver:maven-resolver-util": { + "shasums": { + "jar": "2eb0ea667bc489384478231dda7516407d4b5b22a138077229871de9362a7ae2" + }, + "version": "1.9.18" + }, + "org.apache.maven:maven-artifact": { + "shasums": { + "jar": "ad7a0fb408f8e47585ccc0d0011e0b501d93bfc9888d369bbd4a043d19475073" + }, + "version": "3.9.6" + }, + "org.apache.maven:maven-builder-support": { + "shasums": { + "jar": "e1f4d2784459ce8a34b9dae1829a1999b569e483e21ee9faa7368691e729296e" + }, + "version": "3.9.6" + }, + "org.apache.maven:maven-model": { + "shasums": { + "jar": "4f8f07fdb6b8701fa89a23a2edf830808fd65892d90cce40c0e6df7c8f2fcb62" + }, + "version": "3.9.6" + }, + "org.apache.maven:maven-model-builder": { + "shasums": { + "jar": "5f96dafbc411ee4b1e8426368d0d31d05ab5a4dace69808143142a0017598721" + }, + "version": "3.9.6" + }, + "org.apache.maven:maven-repository-metadata": { + "shasums": { + "jar": "e047a67b204c434994253e2ab5bdff5fe8cb7ada9316ac3e754c39f900ea847b" + }, + "version": "3.9.6" + }, + "org.apache.maven:maven-resolver-provider": { + "shasums": { + "jar": "73b00b244b7b9e285654a45e765892bf5d369da77d42b5b4b5429122ed198a33" + }, + "version": "3.9.6" + }, + "org.checkerframework:checker-qual": { + "shasums": { + "jar": "d0831f48bf587787bd29a0574692a4e2c494acc15112a4396c71b45f553d73c6" + }, + "version": "4.2.1" + }, + "org.codehaus.plexus:plexus-interpolation": { + "shasums": { + "jar": "b3b5412ce17889103ea564bcdfcf9fb3dfa540344ffeac6b538a73c9d7182662" + }, + "version": "1.26" + }, + "org.codehaus.plexus:plexus-utils": { + "shasums": { + "jar": "86e0255d4c879c61b4833ed7f13124e8bb679df47debb127326e7db7dd49a07b" + }, + "version": "3.5.1" + }, + "org.eclipse.sisu:org.eclipse.sisu.inject": { + "shasums": { + "jar": "9b62bcfc352a2ec87da8b01e37c952a54d358bbb1af3f212648aeafe7ab2dbb5" + }, + "version": "0.9.0.M2" + }, + "org.jetbrains:annotations": { + "shasums": { + "jar": "2037be378980d3ba9333e97955f3b2cde392aa124d04ca73ce2eee6657199297" + }, + "version": "26.0.2-1" + }, + "org.joml:joml": { + "shasums": { + "jar": "bf19510145178df82cd3bd37edd514c13f411531ec5545299fd3abcbc98fe7c2" + }, + "version": "1.10.8" + }, + "org.jspecify:jspecify": { + "shasums": { + "jar": "070d75f261fe4c5b8202508366715f7f2d4660f88c8ef7e6d3575e48c9683b66" + }, + "version": "1.0.1" + }, + "org.junit.jupiter:junit-jupiter-api": { + "shasums": { + "jar": "aa1ae085fd92dfdbf85d867e60e59adc599bac183b46fc7e0698198bf426ad3f" + }, + "version": "5.14.4" + }, + "org.junit.jupiter:junit-jupiter-engine": { + "shasums": { + "jar": "e1e35cf651ae1635638d431ea4412d5c65938be54150444f07ba659586042b11" + }, + "version": "5.14.4" + }, + "org.junit.platform:junit-platform-commons": { + "shasums": { + "jar": "55c8a0c069ac1bc4e1f8bbb26b5eae95cbd10e4ff1b23248441ab61a607381e1" + }, + "version": "1.14.4" + }, + "org.junit.platform:junit-platform-engine": { + "shasums": { + "jar": "3c7f3f84a6747aef0db6bd5fdd2a6c8fe37132e653c939bd67387377af66d91c" + }, + "version": "1.14.4" + }, + "org.junit.platform:junit-platform-launcher": { + "shasums": { + "jar": "768d62f1b2a523713b702db53609c230af62bbd645fc2c07a7d794df4da32228" + }, + "version": "1.14.4" + }, + "org.junit.platform:junit-platform-reporting": { + "shasums": { + "jar": "4a1d32f0f09d29f046ca51a81b8bfbc0f829392892672ea2e2cd530cd9c4b212" + }, + "version": "1.14.4" + }, + "org.junit:junit-bom": { + "shasums": { + "jar": null + }, + "version": "5.14.4" + }, + "org.opentest4j.reporting:open-test-reporting-tooling-spi": { + "shasums": { + "jar": "f0d54b46fb9e503b22abc65c45a48025aad16051903aaed11f6d974129f74252" + }, + "version": "0.2.3" + }, + "org.opentest4j:opentest4j": { + "shasums": { + "jar": "48e2df636cab6563ced64dcdff8abb2355627cb236ef0bf37598682ddf742f1b" + }, + "version": "1.3.0" + }, + "org.slf4j:jcl-over-slf4j": { + "shasums": { + "jar": "ab57ca8fd223772c17365d121f59e94ecbf0ae59d08c03a3cb5b81071c019195" + }, + "version": "1.7.36" + }, + "org.slf4j:slf4j-api": { + "shasums": { + "jar": "44508fd1576500688c790b190acdd16fec4f8c79a3e0b900afd70503cf055f55" + }, + "version": "2.0.18" + }, + "org.spongepowered:configurate-core": { + "shasums": { + "jar": "06c1e9f7789a189af0c0156ebe9f469da7cc674233f43e8133c83131edd9f7e0" + }, + "version": "4.2.0" + }, + "org.spongepowered:configurate-gson": { + "shasums": { + "jar": "7aa71c61043f96911ce793a5fec25138134841d163a7637a349f59df480b50c5" + }, + "version": "4.2.0" + }, + "org.spongepowered:configurate-hocon": { + "shasums": { + "jar": "ff13759a465998107f8898150751b9d0cf77b5b5ffb9b5ec16ccea9cf229893e" + }, + "version": "4.2.0" + }, + "org.spongepowered:configurate-yaml": { + "shasums": { + "jar": "6294f085316188bffb71bb05ef36bf8755a288ed925c791952e1e8d7bfc8ba4c" + }, + "version": "4.2.0" + }, + "org.yaml:snakeyaml": { + "shasums": { + "jar": "c8f7a98e7394adda02f6317249710e4d1b4c7a25aa8c7eace0c2eea52eb8bf85" + }, + "version": "2.6" + } + }, + "conflict_resolution": { + "com.google.code.gson:gson:2.8.8": "com.google.code.gson:gson:2.14.0", + "com.google.errorprone:error_prone_annotations:2.48.0": "com.google.errorprone:error_prone_annotations:2.49.0", + "com.google.guava:guava:31.0.1-jre": "com.google.guava:guava:33.6.0-jre", + "com.google.j2objc:j2objc-annotations:2.8": "com.google.j2objc:j2objc-annotations:3.1", + "io.papermc.paper:paper-api:[26.2.build,)": "io.papermc.paper:paper-api:26.2-rc-2.build.9-alpha", + "net.kyori:adventure-bom:4.26.1": "net.kyori:adventure-bom:5.2.0", + "net.kyori:adventure-text-logger-slf4j": "net.kyori:adventure-text-logger-slf4j:5.2.0", + "net.kyori:adventure-text-minimessage": "net.kyori:adventure-text-minimessage:5.2.0", + "net.kyori:adventure-text-serializer-ansi": "net.kyori:adventure-text-serializer-ansi:5.2.0", + "net.kyori:adventure-text-serializer-gson": "net.kyori:adventure-text-serializer-gson:5.2.0", + "net.kyori:adventure-text-serializer-legacy": "net.kyori:adventure-text-serializer-legacy:5.2.0", + "org.jspecify:jspecify:1.0.0": "org.jspecify:jspecify:1.0.1", + "org.junit.jupiter:junit-jupiter-api": "org.junit.jupiter:junit-jupiter-api:5.14.4", + "org.junit.jupiter:junit-jupiter-engine": "org.junit.jupiter:junit-jupiter-engine:5.14.4", + "org.junit.platform:junit-platform-launcher": "org.junit.platform:junit-platform-launcher:1.14.4", + "org.junit.platform:junit-platform-reporting": "org.junit.platform:junit-platform-reporting:1.14.4", + "org.slf4j:slf4j-api:1.7.36": "org.slf4j:slf4j-api:2.0.18", + "org.yaml:snakeyaml:2.2": "org.yaml:snakeyaml:2.6" + }, + "dependencies": { + "com.github.ben-manes.caffeine:caffeine": [ + "com.google.errorprone:error_prone_annotations", + "org.jspecify:jspecify" + ], + "com.google.code.gson:gson": [ + "com.google.errorprone:error_prone_annotations" + ], + "com.google.guava:guava": [ + "com.google.errorprone:error_prone_annotations", + "com.google.guava:failureaccess", + "com.google.guava:listenablefuture", + "com.google.j2objc:j2objc-annotations", + "org.jspecify:jspecify" + ], + "com.google.inject:guice": [ + "aopalliance:aopalliance", + "com.google.guava:guava", + "jakarta.inject:jakarta.inject-api" + ], + "com.leakyabstractions:result": [ + "com.leakyabstractions:result-api" + ], + "com.moandjiezana.toml:toml4j": [ + "com.google.code.gson:gson" + ], + "com.velocitypowered:velocity-api": [ + "com.github.ben-manes.caffeine:caffeine", + "com.google.code.gson:gson", + "com.google.guava:guava", + "com.google.inject:guice", + "com.moandjiezana.toml:toml4j", + "com.velocitypowered:velocity-brigadier", + "net.kyori:adventure-api", + "net.kyori:adventure-bom", + "net.kyori:adventure-text-logger-slf4j", + "net.kyori:adventure-text-minimessage", + "net.kyori:adventure-text-serializer-ansi", + "net.kyori:adventure-text-serializer-gson", + "net.kyori:adventure-text-serializer-legacy", + "net.kyori:adventure-text-serializer-plain", + "org.checkerframework:checker-qual", + "org.jspecify:jspecify", + "org.slf4j:slf4j-api", + "org.spongepowered:configurate-gson", + "org.spongepowered:configurate-hocon", + "org.spongepowered:configurate-yaml", + "org.yaml:snakeyaml" + ], + "io.papermc.paper:paper-api": [ + "com.google.code.gson:gson", + "com.google.guava:guava", + "com.mojang:brigadier", + "it.unimi.dsi:fastutil", + "net.kyori:adventure-api", + "net.kyori:adventure-bom", + "net.kyori:adventure-text-logger-slf4j", + "net.kyori:adventure-text-minimessage", + "net.kyori:adventure-text-serializer-gson", + "net.kyori:adventure-text-serializer-legacy", + "net.kyori:adventure-text-serializer-plain", + "net.md-5:bungeecord-chat", + "org.apache.logging.log4j:log4j-api", + "org.apache.maven.resolver:maven-resolver-connector-basic", + "org.apache.maven.resolver:maven-resolver-transport-http", + "org.apache.maven:maven-resolver-provider", + "org.joml:joml", + "org.jspecify:jspecify", + "org.slf4j:slf4j-api", + "org.yaml:snakeyaml" + ], + "net.kyori:adventure-api": [ + "net.kyori:adventure-bom", + "net.kyori:adventure-key" + ], + "net.kyori:adventure-key": [ + "net.kyori:adventure-bom", + "org.jspecify:jspecify" + ], + "net.kyori:adventure-text-logger-slf4j": [ + "net.kyori:adventure-api", + "net.kyori:adventure-bom" + ], + "net.kyori:adventure-text-minimessage": [ + "net.kyori:adventure-api", + "net.kyori:adventure-bom" + ], + "net.kyori:adventure-text-serializer-ansi": [ + "net.kyori:adventure-api", + "net.kyori:adventure-bom", + "net.kyori:ansi" + ], + "net.kyori:adventure-text-serializer-commons": [ + "net.kyori:adventure-bom", + "org.jspecify:jspecify" + ], + "net.kyori:adventure-text-serializer-gson": [ + "com.google.code.gson:gson", + "net.kyori:adventure-bom", + "net.kyori:adventure-text-serializer-commons", + "net.kyori:adventure-text-serializer-json" + ], + "net.kyori:adventure-text-serializer-json": [ + "net.kyori:adventure-api", + "net.kyori:adventure-bom", + "net.kyori:adventure-text-serializer-commons", + "net.kyori:option" + ], + "net.kyori:adventure-text-serializer-legacy": [ + "net.kyori:adventure-api", + "net.kyori:adventure-bom" + ], + "net.kyori:adventure-text-serializer-plain": [ + "net.kyori:adventure-api", + "net.kyori:adventure-bom" + ], + "net.md-5:bungeecord-chat": [ + "com.google.code.gson:gson" + ], + "org.apache.httpcomponents:httpclient": [ + "org.apache.httpcomponents:httpcore" + ], + "org.apache.maven.resolver:maven-resolver-connector-basic": [ + "org.apache.maven.resolver:maven-resolver-api", + "org.apache.maven.resolver:maven-resolver-spi", + "org.apache.maven.resolver:maven-resolver-util", + "org.slf4j:slf4j-api" + ], + "org.apache.maven.resolver:maven-resolver-impl": [ + "org.apache.maven.resolver:maven-resolver-api", + "org.apache.maven.resolver:maven-resolver-named-locks", + "org.apache.maven.resolver:maven-resolver-spi", + "org.apache.maven.resolver:maven-resolver-util", + "org.slf4j:slf4j-api" + ], + "org.apache.maven.resolver:maven-resolver-named-locks": [ + "org.slf4j:slf4j-api" + ], + "org.apache.maven.resolver:maven-resolver-spi": [ + "org.apache.maven.resolver:maven-resolver-api" + ], + "org.apache.maven.resolver:maven-resolver-transport-http": [ + "commons-codec:commons-codec", + "org.apache.httpcomponents:httpclient", + "org.apache.httpcomponents:httpcore", + "org.apache.maven.resolver:maven-resolver-api", + "org.apache.maven.resolver:maven-resolver-spi", + "org.apache.maven.resolver:maven-resolver-util", + "org.slf4j:jcl-over-slf4j", + "org.slf4j:slf4j-api" + ], + "org.apache.maven.resolver:maven-resolver-util": [ + "org.apache.maven.resolver:maven-resolver-api" + ], + "org.apache.maven:maven-artifact": [ + "org.apache.commons:commons-lang3", + "org.codehaus.plexus:plexus-utils" + ], + "org.apache.maven:maven-model": [ + "org.codehaus.plexus:plexus-utils" + ], + "org.apache.maven:maven-model-builder": [ + "javax.inject:javax.inject", + "org.apache.maven:maven-artifact", + "org.apache.maven:maven-builder-support", + "org.apache.maven:maven-model", + "org.codehaus.plexus:plexus-interpolation", + "org.codehaus.plexus:plexus-utils", + "org.eclipse.sisu:org.eclipse.sisu.inject" + ], + "org.apache.maven:maven-repository-metadata": [ + "org.codehaus.plexus:plexus-utils" + ], + "org.apache.maven:maven-resolver-provider": [ + "javax.inject:javax.inject", + "org.apache.maven.resolver:maven-resolver-api", + "org.apache.maven.resolver:maven-resolver-impl", + "org.apache.maven.resolver:maven-resolver-spi", + "org.apache.maven.resolver:maven-resolver-util", + "org.apache.maven:maven-model", + "org.apache.maven:maven-model-builder", + "org.apache.maven:maven-repository-metadata", + "org.codehaus.plexus:plexus-utils" + ], + "org.junit.jupiter:junit-jupiter-api": [ + "org.junit.platform:junit-platform-commons", + "org.junit:junit-bom", + "org.opentest4j:opentest4j" + ], + "org.junit.jupiter:junit-jupiter-engine": [ + "org.junit.jupiter:junit-jupiter-api", + "org.junit.platform:junit-platform-engine", + "org.junit:junit-bom" + ], + "org.junit.platform:junit-platform-commons": [ + "org.junit:junit-bom" + ], + "org.junit.platform:junit-platform-engine": [ + "org.junit.platform:junit-platform-commons", + "org.junit:junit-bom", + "org.opentest4j:opentest4j" + ], + "org.junit.platform:junit-platform-launcher": [ + "org.junit.platform:junit-platform-engine", + "org.junit:junit-bom" + ], + "org.junit.platform:junit-platform-reporting": [ + "org.junit.platform:junit-platform-launcher", + "org.junit:junit-bom", + "org.opentest4j.reporting:open-test-reporting-tooling-spi" + ], + "org.slf4j:jcl-over-slf4j": [ + "org.slf4j:slf4j-api" + ], + "org.spongepowered:configurate-core": [ + "io.leangen.geantyref:geantyref", + "net.kyori:option" + ], + "org.spongepowered:configurate-gson": [ + "com.google.code.gson:gson", + "org.spongepowered:configurate-core" + ], + "org.spongepowered:configurate-hocon": [ + "org.spongepowered:configurate-core" + ], + "org.spongepowered:configurate-yaml": [ + "org.spongepowered:configurate-core" + ] + }, + "packages": { + "aopalliance:aopalliance": [ + "org.aopalliance.aop", + "org.aopalliance.intercept" + ], + "com.github.ben-manes.caffeine:caffeine": [ + "com.github.benmanes.caffeine.cache", + "com.github.benmanes.caffeine.cache.stats" + ], + "com.google.code.findbugs:jsr305": [ + "javax.annotation", + "javax.annotation.concurrent", + "javax.annotation.meta" + ], + "com.google.code.gson:gson": [ + "com.google.gson", + "com.google.gson.annotations", + "com.google.gson.internal", + "com.google.gson.internal.bind", + "com.google.gson.internal.bind.util", + "com.google.gson.internal.reflect", + "com.google.gson.internal.sql", + "com.google.gson.reflect", + "com.google.gson.stream" + ], + "com.google.errorprone:error_prone_annotations": [ + "com.google.errorprone.annotations", + "com.google.errorprone.annotations.concurrent" + ], + "com.google.guava:failureaccess": [ + "com.google.common.util.concurrent.internal" + ], + "com.google.guava:guava": [ + "com.google.common.annotations", + "com.google.common.base", + "com.google.common.base.internal", + "com.google.common.cache", + "com.google.common.collect", + "com.google.common.escape", + "com.google.common.eventbus", + "com.google.common.graph", + "com.google.common.hash", + "com.google.common.html", + "com.google.common.io", + "com.google.common.math", + "com.google.common.net", + "com.google.common.primitives", + "com.google.common.reflect", + "com.google.common.util.concurrent", + "com.google.common.xml", + "com.google.thirdparty.publicsuffix" + ], + "com.google.inject:guice": [ + "com.google.inject", + "com.google.inject.binder", + "com.google.inject.internal", + "com.google.inject.internal.aop", + "com.google.inject.internal.util", + "com.google.inject.matcher", + "com.google.inject.multibindings", + "com.google.inject.name", + "com.google.inject.spi", + "com.google.inject.util" + ], + "com.google.j2objc:j2objc-annotations": [ + "com.google.j2objc.annotations" + ], + "com.leakyabstractions:result": [ + "com.leakyabstractions.result.core" + ], + "com.leakyabstractions:result-api": [ + "com.leakyabstractions.result.api" + ], + "com.moandjiezana.toml:toml4j": [ + "com.moandjiezana.toml" + ], + "com.mojang:brigadier": [ + "com.mojang.brigadier", + "com.mojang.brigadier.arguments", + "com.mojang.brigadier.builder", + "com.mojang.brigadier.context", + "com.mojang.brigadier.exceptions", + "com.mojang.brigadier.suggestion", + "com.mojang.brigadier.tree" + ], + "com.velocitypowered:velocity-api": [ + "com.velocitypowered.api.command", + "com.velocitypowered.api.event", + "com.velocitypowered.api.event.annotation", + "com.velocitypowered.api.event.command", + "com.velocitypowered.api.event.connection", + "com.velocitypowered.api.event.permission", + "com.velocitypowered.api.event.player", + "com.velocitypowered.api.event.player.configuration", + "com.velocitypowered.api.event.proxy", + "com.velocitypowered.api.event.proxy.server", + "com.velocitypowered.api.event.query", + "com.velocitypowered.api.network", + "com.velocitypowered.api.permission", + "com.velocitypowered.api.plugin", + "com.velocitypowered.api.plugin.annotation", + "com.velocitypowered.api.plugin.ap", + "com.velocitypowered.api.plugin.meta", + "com.velocitypowered.api.proxy", + "com.velocitypowered.api.proxy.config", + "com.velocitypowered.api.proxy.crypto", + "com.velocitypowered.api.proxy.messages", + "com.velocitypowered.api.proxy.player", + "com.velocitypowered.api.proxy.server", + "com.velocitypowered.api.scheduler", + "com.velocitypowered.api.util" + ], + "com.velocitypowered:velocity-brigadier": [ + "com.mojang.brigadier", + "com.mojang.brigadier.arguments", + "com.mojang.brigadier.builder", + "com.mojang.brigadier.context", + "com.mojang.brigadier.exceptions", + "com.mojang.brigadier.suggestion", + "com.mojang.brigadier.tree" + ], + "commons-codec:commons-codec": [ + "org.apache.commons.codec", + "org.apache.commons.codec.binary", + "org.apache.commons.codec.cli", + "org.apache.commons.codec.digest", + "org.apache.commons.codec.language", + "org.apache.commons.codec.language.bm", + "org.apache.commons.codec.net" + ], + "io.leangen.geantyref:geantyref": [ + "io.leangen.geantyref" + ], + "io.papermc.paper:paper-api": [ + "co.aikar.timings", + "co.aikar.util", + "com.destroystokyo.paper", + "com.destroystokyo.paper.block", + "com.destroystokyo.paper.brigadier", + "com.destroystokyo.paper.entity", + "com.destroystokyo.paper.entity.ai", + "com.destroystokyo.paper.entity.villager", + "com.destroystokyo.paper.event.block", + "com.destroystokyo.paper.event.brigadier", + "com.destroystokyo.paper.event.entity", + "com.destroystokyo.paper.event.inventory", + "com.destroystokyo.paper.event.player", + "com.destroystokyo.paper.event.profile", + "com.destroystokyo.paper.event.server", + "com.destroystokyo.paper.exception", + "com.destroystokyo.paper.inventory.meta", + "com.destroystokyo.paper.loottable", + "com.destroystokyo.paper.network", + "com.destroystokyo.paper.profile", + "com.destroystokyo.paper.util", + "com.destroystokyo.paper.utils", + "io.papermc.paper", + "io.papermc.paper.advancement", + "io.papermc.paper.annotation", + "io.papermc.paper.ban", + "io.papermc.paper.block", + "io.papermc.paper.block.bed", + "io.papermc.paper.block.fluid", + "io.papermc.paper.block.fluid.type", + "io.papermc.paper.brigadier", + "io.papermc.paper.chat", + "io.papermc.paper.command", + "io.papermc.paper.command.brigadier", + "io.papermc.paper.command.brigadier.argument", + "io.papermc.paper.command.brigadier.argument.position", + "io.papermc.paper.command.brigadier.argument.predicate", + "io.papermc.paper.command.brigadier.argument.range", + "io.papermc.paper.command.brigadier.argument.resolvers", + "io.papermc.paper.command.brigadier.argument.resolvers.selector", + "io.papermc.paper.configuration", + "io.papermc.paper.connection", + "io.papermc.paper.datacomponent", + "io.papermc.paper.datacomponent.item", + "io.papermc.paper.datacomponent.item.attribute", + "io.papermc.paper.datacomponent.item.blocksattacks", + "io.papermc.paper.datacomponent.item.consumable", + "io.papermc.paper.datapack", + "io.papermc.paper.dialog", + "io.papermc.paper.enchantments", + "io.papermc.paper.entity", + "io.papermc.paper.entity.poi", + "io.papermc.paper.event.block", + "io.papermc.paper.event.connection", + "io.papermc.paper.event.connection.configuration", + "io.papermc.paper.event.entity", + "io.papermc.paper.event.executor", + "io.papermc.paper.event.inventory", + "io.papermc.paper.event.packet", + "io.papermc.paper.event.player", + "io.papermc.paper.event.server", + "io.papermc.paper.event.world", + "io.papermc.paper.event.world.border", + "io.papermc.paper.inventory", + "io.papermc.paper.inventory.tooltip", + "io.papermc.paper.item", + "io.papermc.paper.math", + "io.papermc.paper.persistence", + "io.papermc.paper.plugin", + "io.papermc.paper.plugin.bootstrap", + "io.papermc.paper.plugin.configuration", + "io.papermc.paper.plugin.lifecycle.event", + "io.papermc.paper.plugin.lifecycle.event.handler", + "io.papermc.paper.plugin.lifecycle.event.handler.configuration", + "io.papermc.paper.plugin.lifecycle.event.registrar", + "io.papermc.paper.plugin.lifecycle.event.types", + "io.papermc.paper.plugin.loader", + "io.papermc.paper.plugin.loader.library", + "io.papermc.paper.plugin.loader.library.impl", + "io.papermc.paper.plugin.provider.classloader", + "io.papermc.paper.plugin.provider.entrypoint", + "io.papermc.paper.plugin.provider.util", + "io.papermc.paper.potion", + "io.papermc.paper.raytracing", + "io.papermc.paper.registry", + "io.papermc.paper.registry.data", + "io.papermc.paper.registry.data.client", + "io.papermc.paper.registry.data.dialog", + "io.papermc.paper.registry.data.dialog.action", + "io.papermc.paper.registry.data.dialog.body", + "io.papermc.paper.registry.data.dialog.input", + "io.papermc.paper.registry.data.dialog.type", + "io.papermc.paper.registry.event", + "io.papermc.paper.registry.event.type", + "io.papermc.paper.registry.holder", + "io.papermc.paper.registry.keys", + "io.papermc.paper.registry.keys.tags", + "io.papermc.paper.registry.set", + "io.papermc.paper.registry.tag", + "io.papermc.paper.scoreboard.numbers", + "io.papermc.paper.tag", + "io.papermc.paper.text", + "io.papermc.paper.threadedregions", + "io.papermc.paper.threadedregions.scheduler", + "io.papermc.paper.util", + "io.papermc.paper.world", + "io.papermc.paper.world.damagesource", + "io.papermc.paper.world.flag", + "org.bukkit", + "org.bukkit.advancement", + "org.bukkit.attribute", + "org.bukkit.ban", + "org.bukkit.block", + "org.bukkit.block.banner", + "org.bukkit.block.data", + "org.bukkit.block.data.type", + "org.bukkit.block.sign", + "org.bukkit.block.spawner", + "org.bukkit.block.structure", + "org.bukkit.boss", + "org.bukkit.command", + "org.bukkit.command.defaults", + "org.bukkit.configuration", + "org.bukkit.configuration.file", + "org.bukkit.configuration.serialization", + "org.bukkit.conversations", + "org.bukkit.damage", + "org.bukkit.enchantments", + "org.bukkit.entity", + "org.bukkit.entity.boat", + "org.bukkit.entity.memory", + "org.bukkit.entity.minecart", + "org.bukkit.event", + "org.bukkit.event.block", + "org.bukkit.event.command", + "org.bukkit.event.enchantment", + "org.bukkit.event.entity", + "org.bukkit.event.hanging", + "org.bukkit.event.inventory", + "org.bukkit.event.player", + "org.bukkit.event.raid", + "org.bukkit.event.server", + "org.bukkit.event.vehicle", + "org.bukkit.event.weather", + "org.bukkit.event.world", + "org.bukkit.generator", + "org.bukkit.generator.structure", + "org.bukkit.help", + "org.bukkit.inventory", + "org.bukkit.inventory.meta", + "org.bukkit.inventory.meta.components", + "org.bukkit.inventory.meta.tags", + "org.bukkit.inventory.meta.trim", + "org.bukkit.inventory.recipe", + "org.bukkit.inventory.view", + "org.bukkit.inventory.view.builder", + "org.bukkit.loot", + "org.bukkit.map", + "org.bukkit.material", + "org.bukkit.material.types", + "org.bukkit.metadata", + "org.bukkit.packs", + "org.bukkit.permissions", + "org.bukkit.persistence", + "org.bukkit.plugin", + "org.bukkit.plugin.java", + "org.bukkit.plugin.messaging", + "org.bukkit.potion", + "org.bukkit.profile", + "org.bukkit.projectiles", + "org.bukkit.scheduler", + "org.bukkit.scoreboard", + "org.bukkit.spawner", + "org.bukkit.structure", + "org.bukkit.tag", + "org.bukkit.util", + "org.bukkit.util.io", + "org.bukkit.util.noise", + "org.bukkit.util.permissions", + "org.spigotmc", + "org.spigotmc.event.player" + ], + "it.unimi.dsi:fastutil": [ + "it.unimi.dsi.fastutil", + "it.unimi.dsi.fastutil.booleans", + "it.unimi.dsi.fastutil.bytes", + "it.unimi.dsi.fastutil.chars", + "it.unimi.dsi.fastutil.doubles", + "it.unimi.dsi.fastutil.floats", + "it.unimi.dsi.fastutil.ints", + "it.unimi.dsi.fastutil.io", + "it.unimi.dsi.fastutil.longs", + "it.unimi.dsi.fastutil.objects", + "it.unimi.dsi.fastutil.shorts" + ], + "jakarta.inject:jakarta.inject-api": [ + "jakarta.inject" + ], + "javax.inject:javax.inject": [ + "javax.inject" + ], + "net.kyori:adventure-api": [ + "net.kyori.adventure", + "net.kyori.adventure.audience", + "net.kyori.adventure.bossbar", + "net.kyori.adventure.builder", + "net.kyori.adventure.chat", + "net.kyori.adventure.dialog", + "net.kyori.adventure.identity", + "net.kyori.adventure.internal.properties", + "net.kyori.adventure.inventory", + "net.kyori.adventure.nbt.api", + "net.kyori.adventure.permission", + "net.kyori.adventure.pointer", + "net.kyori.adventure.resource", + "net.kyori.adventure.sound", + "net.kyori.adventure.text", + "net.kyori.adventure.text.event", + "net.kyori.adventure.text.flattener", + "net.kyori.adventure.text.format", + "net.kyori.adventure.text.object", + "net.kyori.adventure.text.renderer", + "net.kyori.adventure.text.serializer", + "net.kyori.adventure.title", + "net.kyori.adventure.translation", + "net.kyori.adventure.util" + ], + "net.kyori:adventure-key": [ + "net.kyori.adventure.key" + ], + "net.kyori:adventure-text-logger-slf4j": [ + "net.kyori.adventure.text.logger.slf4j" + ], + "net.kyori:adventure-text-minimessage": [ + "net.kyori.adventure.text.minimessage", + "net.kyori.adventure.text.minimessage.internal", + "net.kyori.adventure.text.minimessage.internal.parser", + "net.kyori.adventure.text.minimessage.internal.parser.match", + "net.kyori.adventure.text.minimessage.internal.parser.node", + "net.kyori.adventure.text.minimessage.internal.serializer", + "net.kyori.adventure.text.minimessage.tag", + "net.kyori.adventure.text.minimessage.tag.resolver", + "net.kyori.adventure.text.minimessage.tag.standard", + "net.kyori.adventure.text.minimessage.translation", + "net.kyori.adventure.text.minimessage.tree" + ], + "net.kyori:adventure-text-serializer-ansi": [ + "net.kyori.adventure.text.serializer.ansi" + ], + "net.kyori:adventure-text-serializer-commons": [ + "net.kyori.adventure.text.serializer.commons" + ], + "net.kyori:adventure-text-serializer-gson": [ + "net.kyori.adventure.text.serializer.gson", + "net.kyori.adventure.text.serializer.gson.impl" + ], + "net.kyori:adventure-text-serializer-json": [ + "net.kyori.adventure.text.serializer.json" + ], + "net.kyori:adventure-text-serializer-legacy": [ + "net.kyori.adventure.text.serializer.legacy" + ], + "net.kyori:adventure-text-serializer-plain": [ + "net.kyori.adventure.text.serializer.plain" + ], + "net.kyori:ansi": [ + "net.kyori.ansi" + ], + "net.kyori:option": [ + "net.kyori.option", + "net.kyori.option.value" + ], + "net.md-5:bungeecord-chat": [ + "net.md_5.bungee.api", + "net.md_5.bungee.api.chat", + "net.md_5.bungee.api.chat.hover.content", + "net.md_5.bungee.chat" + ], + "org.apache.commons:commons-lang3": [ + "org.apache.commons.lang3", + "org.apache.commons.lang3.arch", + "org.apache.commons.lang3.builder", + "org.apache.commons.lang3.compare", + "org.apache.commons.lang3.concurrent", + "org.apache.commons.lang3.concurrent.locks", + "org.apache.commons.lang3.event", + "org.apache.commons.lang3.exception", + "org.apache.commons.lang3.function", + "org.apache.commons.lang3.math", + "org.apache.commons.lang3.mutable", + "org.apache.commons.lang3.reflect", + "org.apache.commons.lang3.stream", + "org.apache.commons.lang3.text", + "org.apache.commons.lang3.text.translate", + "org.apache.commons.lang3.time", + "org.apache.commons.lang3.tuple" + ], + "org.apache.httpcomponents:httpclient": [ + "org.apache.http.auth", + "org.apache.http.auth.params", + "org.apache.http.client", + "org.apache.http.client.config", + "org.apache.http.client.entity", + "org.apache.http.client.methods", + "org.apache.http.client.params", + "org.apache.http.client.protocol", + "org.apache.http.client.utils", + "org.apache.http.conn", + "org.apache.http.conn.params", + "org.apache.http.conn.routing", + "org.apache.http.conn.scheme", + "org.apache.http.conn.socket", + "org.apache.http.conn.ssl", + "org.apache.http.conn.util", + "org.apache.http.cookie", + "org.apache.http.cookie.params", + "org.apache.http.impl.auth", + "org.apache.http.impl.client", + "org.apache.http.impl.conn", + "org.apache.http.impl.conn.tsccm", + "org.apache.http.impl.cookie", + "org.apache.http.impl.execchain" + ], + "org.apache.httpcomponents:httpcore": [ + "org.apache.http", + "org.apache.http.annotation", + "org.apache.http.concurrent", + "org.apache.http.config", + "org.apache.http.entity", + "org.apache.http.impl", + "org.apache.http.impl.bootstrap", + "org.apache.http.impl.entity", + "org.apache.http.impl.io", + "org.apache.http.impl.pool", + "org.apache.http.io", + "org.apache.http.message", + "org.apache.http.params", + "org.apache.http.pool", + "org.apache.http.protocol", + "org.apache.http.ssl", + "org.apache.http.util" + ], + "org.apache.logging.log4j:log4j-api": [ + "org.apache.logging.log4j", + "org.apache.logging.log4j.internal", + "org.apache.logging.log4j.internal.annotation", + "org.apache.logging.log4j.internal.map", + "org.apache.logging.log4j.message", + "org.apache.logging.log4j.simple", + "org.apache.logging.log4j.simple.internal", + "org.apache.logging.log4j.spi", + "org.apache.logging.log4j.status", + "org.apache.logging.log4j.util", + "org.apache.logging.log4j.util.internal" + ], + "org.apache.maven.resolver:maven-resolver-api": [ + "org.eclipse.aether", + "org.eclipse.aether.artifact", + "org.eclipse.aether.collection", + "org.eclipse.aether.deployment", + "org.eclipse.aether.graph", + "org.eclipse.aether.installation", + "org.eclipse.aether.metadata", + "org.eclipse.aether.repository", + "org.eclipse.aether.resolution", + "org.eclipse.aether.transfer", + "org.eclipse.aether.transform", + "org.eclipse.aether.version" + ], + "org.apache.maven.resolver:maven-resolver-connector-basic": [ + "org.eclipse.aether.connector.basic" + ], + "org.apache.maven.resolver:maven-resolver-impl": [ + "org.eclipse.aether.impl", + "org.eclipse.aether.impl.guice", + "org.eclipse.aether.internal.impl", + "org.eclipse.aether.internal.impl.checksum", + "org.eclipse.aether.internal.impl.collect", + "org.eclipse.aether.internal.impl.collect.bf", + "org.eclipse.aether.internal.impl.collect.df", + "org.eclipse.aether.internal.impl.filter", + "org.eclipse.aether.internal.impl.resolution", + "org.eclipse.aether.internal.impl.slf4j", + "org.eclipse.aether.internal.impl.synccontext", + "org.eclipse.aether.internal.impl.synccontext.legacy", + "org.eclipse.aether.internal.impl.synccontext.named", + "org.eclipse.aether.internal.impl.synccontext.named.providers" + ], + "org.apache.maven.resolver:maven-resolver-named-locks": [ + "org.eclipse.aether.named", + "org.eclipse.aether.named.providers", + "org.eclipse.aether.named.support" + ], + "org.apache.maven.resolver:maven-resolver-spi": [ + "org.eclipse.aether.spi.checksums", + "org.eclipse.aether.spi.connector", + "org.eclipse.aether.spi.connector.checksum", + "org.eclipse.aether.spi.connector.filter", + "org.eclipse.aether.spi.connector.layout", + "org.eclipse.aether.spi.connector.transport", + "org.eclipse.aether.spi.io", + "org.eclipse.aether.spi.localrepo", + "org.eclipse.aether.spi.locator", + "org.eclipse.aether.spi.log", + "org.eclipse.aether.spi.resolution", + "org.eclipse.aether.spi.synccontext" + ], + "org.apache.maven.resolver:maven-resolver-transport-http": [ + "org.eclipse.aether.transport.http" + ], + "org.apache.maven.resolver:maven-resolver-util": [ + "org.eclipse.aether.util", + "org.eclipse.aether.util.artifact", + "org.eclipse.aether.util.concurrency", + "org.eclipse.aether.util.filter", + "org.eclipse.aether.util.graph.manager", + "org.eclipse.aether.util.graph.selector", + "org.eclipse.aether.util.graph.transformer", + "org.eclipse.aether.util.graph.traverser", + "org.eclipse.aether.util.graph.version", + "org.eclipse.aether.util.graph.visitor", + "org.eclipse.aether.util.listener", + "org.eclipse.aether.util.repository", + "org.eclipse.aether.util.version" + ], + "org.apache.maven:maven-artifact": [ + "org.apache.maven.artifact", + "org.apache.maven.artifact.handler", + "org.apache.maven.artifact.metadata", + "org.apache.maven.artifact.repository", + "org.apache.maven.artifact.repository.layout", + "org.apache.maven.artifact.repository.metadata", + "org.apache.maven.artifact.resolver", + "org.apache.maven.artifact.resolver.filter", + "org.apache.maven.artifact.versioning", + "org.apache.maven.repository", + "org.apache.maven.repository.legacy.metadata" + ], + "org.apache.maven:maven-builder-support": [ + "org.apache.maven.building" + ], + "org.apache.maven:maven-model": [ + "org.apache.maven.model", + "org.apache.maven.model.io.xpp3", + "org.apache.maven.model.merge" + ], + "org.apache.maven:maven-model-builder": [ + "org.apache.maven.model.building", + "org.apache.maven.model.composition", + "org.apache.maven.model.inheritance", + "org.apache.maven.model.interpolation", + "org.apache.maven.model.io", + "org.apache.maven.model.locator", + "org.apache.maven.model.management", + "org.apache.maven.model.merge", + "org.apache.maven.model.normalization", + "org.apache.maven.model.path", + "org.apache.maven.model.plugin", + "org.apache.maven.model.profile", + "org.apache.maven.model.profile.activation", + "org.apache.maven.model.resolution", + "org.apache.maven.model.superpom", + "org.apache.maven.model.validation" + ], + "org.apache.maven:maven-repository-metadata": [ + "org.apache.maven.artifact.repository.metadata", + "org.apache.maven.artifact.repository.metadata.io.xpp3" + ], + "org.apache.maven:maven-resolver-provider": [ + "org.apache.maven.repository.internal" + ], + "org.checkerframework:checker-qual": [ + "org.checkerframework.checker.builder.qual", + "org.checkerframework.checker.calledmethods.qual", + "org.checkerframework.checker.compilermsgs.qual", + "org.checkerframework.checker.fenum.qual", + "org.checkerframework.checker.formatter.qual", + "org.checkerframework.checker.guieffect.qual", + "org.checkerframework.checker.i18n.qual", + "org.checkerframework.checker.i18nformatter.qual", + "org.checkerframework.checker.index.qual", + "org.checkerframework.checker.initialization.qual", + "org.checkerframework.checker.interning.qual", + "org.checkerframework.checker.lock.qual", + "org.checkerframework.checker.mustcall.qual", + "org.checkerframework.checker.nonempty.qual", + "org.checkerframework.checker.nullness.qual", + "org.checkerframework.checker.optional.qual", + "org.checkerframework.checker.propkey.qual", + "org.checkerframework.checker.regex.qual", + "org.checkerframework.checker.signature.qual", + "org.checkerframework.checker.signedness.qual", + "org.checkerframework.checker.sqlquotes.qual", + "org.checkerframework.checker.tainting.qual", + "org.checkerframework.checker.units.qual", + "org.checkerframework.common.aliasing.qual", + "org.checkerframework.common.initializedfields.qual", + "org.checkerframework.common.reflection.qual", + "org.checkerframework.common.returnsreceiver.qual", + "org.checkerframework.common.subtyping.qual", + "org.checkerframework.common.util.count.report.qual", + "org.checkerframework.common.value.qual", + "org.checkerframework.dataflow.qual", + "org.checkerframework.framework.qual" + ], + "org.codehaus.plexus:plexus-interpolation": [ + "org.codehaus.plexus.interpolation", + "org.codehaus.plexus.interpolation.fixed", + "org.codehaus.plexus.interpolation.multi", + "org.codehaus.plexus.interpolation.object", + "org.codehaus.plexus.interpolation.os", + "org.codehaus.plexus.interpolation.reflection", + "org.codehaus.plexus.interpolation.util" + ], + "org.codehaus.plexus:plexus-utils": [ + "org.codehaus.plexus.util", + "org.codehaus.plexus.util.cli", + "org.codehaus.plexus.util.cli.shell", + "org.codehaus.plexus.util.dag", + "org.codehaus.plexus.util.introspection", + "org.codehaus.plexus.util.io", + "org.codehaus.plexus.util.reflection", + "org.codehaus.plexus.util.xml", + "org.codehaus.plexus.util.xml.pull" + ], + "org.eclipse.sisu:org.eclipse.sisu.inject": [ + "org.eclipse.sisu", + "org.eclipse.sisu.bean", + "org.eclipse.sisu.inject", + "org.eclipse.sisu.launch", + "org.eclipse.sisu.osgi", + "org.eclipse.sisu.space", + "org.eclipse.sisu.space.asm", + "org.eclipse.sisu.wire", + "org.sonatype.inject" + ], + "org.jetbrains:annotations": [ + "org.intellij.lang.annotations", + "org.jetbrains.annotations" + ], + "org.joml:joml": [ + "org.joml", + "org.joml.sampling" + ], + "org.jspecify:jspecify": [ + "org.jspecify.annotations" + ], + "org.junit.jupiter:junit-jupiter-api": [ + "org.junit.jupiter.api", + "org.junit.jupiter.api.condition", + "org.junit.jupiter.api.extension", + "org.junit.jupiter.api.extension.support", + "org.junit.jupiter.api.function", + "org.junit.jupiter.api.io", + "org.junit.jupiter.api.parallel" + ], + "org.junit.jupiter:junit-jupiter-engine": [ + "org.junit.jupiter.engine", + "org.junit.jupiter.engine.config", + "org.junit.jupiter.engine.descriptor", + "org.junit.jupiter.engine.discovery", + "org.junit.jupiter.engine.discovery.predicates", + "org.junit.jupiter.engine.execution", + "org.junit.jupiter.engine.extension", + "org.junit.jupiter.engine.support" + ], + "org.junit.platform:junit-platform-commons": [ + "org.junit.platform.commons", + "org.junit.platform.commons.annotation", + "org.junit.platform.commons.function", + "org.junit.platform.commons.io", + "org.junit.platform.commons.logging", + "org.junit.platform.commons.support", + "org.junit.platform.commons.support.conversion", + "org.junit.platform.commons.support.scanning", + "org.junit.platform.commons.util" + ], + "org.junit.platform:junit-platform-engine": [ + "org.junit.platform.engine", + "org.junit.platform.engine.discovery", + "org.junit.platform.engine.reporting", + "org.junit.platform.engine.support.config", + "org.junit.platform.engine.support.descriptor", + "org.junit.platform.engine.support.discovery", + "org.junit.platform.engine.support.filter", + "org.junit.platform.engine.support.hierarchical", + "org.junit.platform.engine.support.store" + ], + "org.junit.platform:junit-platform-launcher": [ + "org.junit.platform.launcher", + "org.junit.platform.launcher.core", + "org.junit.platform.launcher.listeners", + "org.junit.platform.launcher.listeners.discovery", + "org.junit.platform.launcher.listeners.session", + "org.junit.platform.launcher.tagexpression" + ], + "org.junit.platform:junit-platform-reporting": [ + "org.junit.platform.reporting.legacy", + "org.junit.platform.reporting.legacy.xml", + "org.junit.platform.reporting.open.xml", + "org.junit.platform.reporting.shadow.org.opentest4j.reporting.events.api", + "org.junit.platform.reporting.shadow.org.opentest4j.reporting.events.core", + "org.junit.platform.reporting.shadow.org.opentest4j.reporting.events.git", + "org.junit.platform.reporting.shadow.org.opentest4j.reporting.events.java", + "org.junit.platform.reporting.shadow.org.opentest4j.reporting.events.root", + "org.junit.platform.reporting.shadow.org.opentest4j.reporting.schema" + ], + "org.opentest4j.reporting:open-test-reporting-tooling-spi": [ + "org.opentest4j.reporting.tooling.spi.htmlreport" + ], + "org.opentest4j:opentest4j": [ + "org.opentest4j" + ], + "org.slf4j:jcl-over-slf4j": [ + "org.apache.commons.logging", + "org.apache.commons.logging.impl" + ], + "org.slf4j:slf4j-api": [ + "org.slf4j", + "org.slf4j.event", + "org.slf4j.helpers", + "org.slf4j.spi" + ], + "org.spongepowered:configurate-core": [ + "org.spongepowered.configurate", + "org.spongepowered.configurate.loader", + "org.spongepowered.configurate.objectmapping", + "org.spongepowered.configurate.objectmapping.meta", + "org.spongepowered.configurate.reactive", + "org.spongepowered.configurate.reference", + "org.spongepowered.configurate.serialize", + "org.spongepowered.configurate.transformation", + "org.spongepowered.configurate.util" + ], + "org.spongepowered:configurate-gson": [ + "org.spongepowered.configurate.gson" + ], + "org.spongepowered:configurate-hocon": [ + "org.spongepowered.configurate.hocon", + "org.spongepowered.configurate.hocon.internal.typesafeconfig", + "org.spongepowered.configurate.hocon.internal.typesafeconfig.impl", + "org.spongepowered.configurate.hocon.internal.typesafeconfig.parser" + ], + "org.spongepowered:configurate-yaml": [ + "org.spongepowered.configurate.yaml", + "org.spongepowered.configurate.yaml.internal.snakeyaml", + "org.spongepowered.configurate.yaml.internal.snakeyaml.comments", + "org.spongepowered.configurate.yaml.internal.snakeyaml.composer", + "org.spongepowered.configurate.yaml.internal.snakeyaml.constructor", + "org.spongepowered.configurate.yaml.internal.snakeyaml.emitter", + "org.spongepowered.configurate.yaml.internal.snakeyaml.error", + "org.spongepowered.configurate.yaml.internal.snakeyaml.events", + "org.spongepowered.configurate.yaml.internal.snakeyaml.external.com.google.gdata.util.common.base", + "org.spongepowered.configurate.yaml.internal.snakeyaml.inspector", + "org.spongepowered.configurate.yaml.internal.snakeyaml.internal", + "org.spongepowered.configurate.yaml.internal.snakeyaml.introspector", + "org.spongepowered.configurate.yaml.internal.snakeyaml.nodes", + "org.spongepowered.configurate.yaml.internal.snakeyaml.parser", + "org.spongepowered.configurate.yaml.internal.snakeyaml.reader", + "org.spongepowered.configurate.yaml.internal.snakeyaml.representer", + "org.spongepowered.configurate.yaml.internal.snakeyaml.resolver", + "org.spongepowered.configurate.yaml.internal.snakeyaml.scanner", + "org.spongepowered.configurate.yaml.internal.snakeyaml.serializer", + "org.spongepowered.configurate.yaml.internal.snakeyaml.tokens", + "org.spongepowered.configurate.yaml.internal.snakeyaml.util" + ], + "org.yaml:snakeyaml": [ + "org.yaml.snakeyaml", + "org.yaml.snakeyaml.comments", + "org.yaml.snakeyaml.composer", + "org.yaml.snakeyaml.constructor", + "org.yaml.snakeyaml.emitter", + "org.yaml.snakeyaml.env", + "org.yaml.snakeyaml.error", + "org.yaml.snakeyaml.events", + "org.yaml.snakeyaml.extensions.compactnotation", + "org.yaml.snakeyaml.external.com.google.gdata.util.common.base", + "org.yaml.snakeyaml.inspector", + "org.yaml.snakeyaml.internal", + "org.yaml.snakeyaml.introspector", + "org.yaml.snakeyaml.nodes", + "org.yaml.snakeyaml.parser", + "org.yaml.snakeyaml.reader", + "org.yaml.snakeyaml.representer", + "org.yaml.snakeyaml.resolver", + "org.yaml.snakeyaml.scanner", + "org.yaml.snakeyaml.serializer", + "org.yaml.snakeyaml.tokens", + "org.yaml.snakeyaml.util" + ] + }, + "repositories": { + "https://repo1.maven.org/maven2/": [ + "aopalliance:aopalliance", + "com.github.ben-manes.caffeine:caffeine", + "com.google.code.findbugs:jsr305", + "com.google.code.gson:gson", + "com.google.errorprone:error_prone_annotations", + "com.google.guava:failureaccess", + "com.google.guava:guava", + "com.google.guava:listenablefuture", + "com.google.inject:guice", + "com.google.j2objc:j2objc-annotations", + "com.leakyabstractions:result", + "com.leakyabstractions:result-api", + "com.moandjiezana.toml:toml4j", + "commons-codec:commons-codec", + "io.leangen.geantyref:geantyref", + "it.unimi.dsi:fastutil", + "jakarta.inject:jakarta.inject-api", + "javax.inject:javax.inject", + "net.kyori:adventure-api", + "net.kyori:adventure-key", + "net.kyori:adventure-text-logger-slf4j", + "net.kyori:adventure-text-minimessage", + "net.kyori:adventure-text-serializer-ansi", + "net.kyori:adventure-text-serializer-commons", + "net.kyori:adventure-text-serializer-gson", + "net.kyori:adventure-text-serializer-json", + "net.kyori:adventure-text-serializer-legacy", + "net.kyori:adventure-text-serializer-plain", + "net.kyori:ansi", + "net.kyori:option", + "org.apache.commons:commons-lang3", + "org.apache.httpcomponents:httpclient", + "org.apache.httpcomponents:httpcore", + "org.apache.logging.log4j:log4j-api", + "org.apache.maven.resolver:maven-resolver-api", + "org.apache.maven.resolver:maven-resolver-connector-basic", + "org.apache.maven.resolver:maven-resolver-impl", + "org.apache.maven.resolver:maven-resolver-named-locks", + "org.apache.maven.resolver:maven-resolver-spi", + "org.apache.maven.resolver:maven-resolver-transport-http", + "org.apache.maven.resolver:maven-resolver-util", + "org.apache.maven:maven-artifact", + "org.apache.maven:maven-builder-support", + "org.apache.maven:maven-model", + "org.apache.maven:maven-model-builder", + "org.apache.maven:maven-repository-metadata", + "org.apache.maven:maven-resolver-provider", + "org.checkerframework:checker-qual", + "org.codehaus.plexus:plexus-interpolation", + "org.codehaus.plexus:plexus-utils", + "org.eclipse.sisu:org.eclipse.sisu.inject", + "org.jetbrains:annotations", + "org.joml:joml", + "org.jspecify:jspecify", + "org.junit.jupiter:junit-jupiter-api", + "org.junit.jupiter:junit-jupiter-engine", + "org.junit.platform:junit-platform-commons", + "org.junit.platform:junit-platform-engine", + "org.junit.platform:junit-platform-launcher", + "org.junit.platform:junit-platform-reporting", + "org.opentest4j.reporting:open-test-reporting-tooling-spi", + "org.opentest4j:opentest4j", + "org.slf4j:jcl-over-slf4j", + "org.slf4j:slf4j-api", + "org.spongepowered:configurate-core", + "org.spongepowered:configurate-gson", + "org.spongepowered:configurate-hocon", + "org.spongepowered:configurate-yaml", + "org.yaml:snakeyaml" + ], + "https://repo.papermc.io/repository/maven-public/": [ + "aopalliance:aopalliance", + "com.github.ben-manes.caffeine:caffeine", + "com.google.code.findbugs:jsr305", + "com.google.code.gson:gson", + "com.google.errorprone:error_prone_annotations", + "com.google.guava:failureaccess", + "com.google.guava:guava", + "com.google.guava:listenablefuture", + "com.google.inject:guice", + "com.google.j2objc:j2objc-annotations", + "com.leakyabstractions:result", + "com.leakyabstractions:result-api", + "com.moandjiezana.toml:toml4j", + "com.mojang:brigadier", + "com.velocitypowered:velocity-api", + "com.velocitypowered:velocity-brigadier", + "commons-codec:commons-codec", + "io.leangen.geantyref:geantyref", + "io.papermc.paper:paper-api", + "it.unimi.dsi:fastutil", + "jakarta.inject:jakarta.inject-api", + "javax.inject:javax.inject", + "net.kyori:adventure-api", + "net.kyori:adventure-key", + "net.kyori:adventure-text-logger-slf4j", + "net.kyori:adventure-text-minimessage", + "net.kyori:adventure-text-serializer-ansi", + "net.kyori:adventure-text-serializer-commons", + "net.kyori:adventure-text-serializer-gson", + "net.kyori:adventure-text-serializer-json", + "net.kyori:adventure-text-serializer-legacy", + "net.kyori:adventure-text-serializer-plain", + "net.kyori:ansi", + "net.kyori:option", + "net.md-5:bungeecord-chat", + "org.apache.commons:commons-lang3", + "org.apache.httpcomponents:httpclient", + "org.apache.httpcomponents:httpcore", + "org.apache.logging.log4j:log4j-api", + "org.apache.maven.resolver:maven-resolver-api", + "org.apache.maven.resolver:maven-resolver-connector-basic", + "org.apache.maven.resolver:maven-resolver-impl", + "org.apache.maven.resolver:maven-resolver-named-locks", + "org.apache.maven.resolver:maven-resolver-spi", + "org.apache.maven.resolver:maven-resolver-transport-http", + "org.apache.maven.resolver:maven-resolver-util", + "org.apache.maven:maven-artifact", + "org.apache.maven:maven-builder-support", + "org.apache.maven:maven-model", + "org.apache.maven:maven-model-builder", + "org.apache.maven:maven-repository-metadata", + "org.apache.maven:maven-resolver-provider", + "org.checkerframework:checker-qual", + "org.codehaus.plexus:plexus-interpolation", + "org.codehaus.plexus:plexus-utils", + "org.eclipse.sisu:org.eclipse.sisu.inject", + "org.jetbrains:annotations", + "org.joml:joml", + "org.jspecify:jspecify", + "org.junit.jupiter:junit-jupiter-api", + "org.junit.jupiter:junit-jupiter-engine", + "org.junit.platform:junit-platform-commons", + "org.junit.platform:junit-platform-engine", + "org.junit.platform:junit-platform-launcher", + "org.junit.platform:junit-platform-reporting", + "org.opentest4j.reporting:open-test-reporting-tooling-spi", + "org.opentest4j:opentest4j", + "org.slf4j:jcl-over-slf4j", + "org.slf4j:slf4j-api", + "org.spongepowered:configurate-core", + "org.spongepowered:configurate-gson", + "org.spongepowered:configurate-hocon", + "org.spongepowered:configurate-yaml", + "org.yaml:snakeyaml" + ] + }, + "services": { + "com.velocitypowered:velocity-api": { + "javax.annotation.processing.Processor": [ + "com.velocitypowered.api.plugin.ap.PluginAnnotationProcessor" + ] + }, + "net.kyori:adventure-text-serializer-gson": { + "net.kyori.adventure.text.event.DataComponentValueConverterRegistry$Provider": [ + "net.kyori.adventure.text.serializer.gson.impl.GsonDataComponentValueConverterProvider" + ], + "net.kyori.adventure.text.serializer.json.JSONComponentSerializer$Provider": [ + "net.kyori.adventure.text.serializer.gson.impl.JSONComponentSerializerProviderImpl" + ] + }, + "org.apache.logging.log4j:log4j-api": { + "org.apache.logging.log4j.util.PropertySource": [ + "org.apache.logging.log4j.util.EnvironmentPropertySource", + "org.apache.logging.log4j.util.SystemPropertiesPropertySource" + ] + }, + "org.eclipse.sisu:org.eclipse.sisu.inject": { + "javax.annotation.processing.Processor": [ + "org.eclipse.sisu.space.SisuIndexAPT6" + ] + }, + "org.junit.jupiter:junit-jupiter-engine": { + "org.junit.platform.engine.TestEngine": [ + "org.junit.jupiter.engine.JupiterTestEngine" + ] + }, + "org.junit.platform:junit-platform-engine": { + "org.junit.platform.engine.discovery.DiscoverySelectorIdentifierParser": [ + "org.junit.platform.engine.discovery.ClassSelector$IdentifierParser", + "org.junit.platform.engine.discovery.ClasspathResourceSelector$IdentifierParser", + "org.junit.platform.engine.discovery.ClasspathRootSelector$IdentifierParser", + "org.junit.platform.engine.discovery.DirectorySelector$IdentifierParser", + "org.junit.platform.engine.discovery.FileSelector$IdentifierParser", + "org.junit.platform.engine.discovery.IterationSelector$IdentifierParser", + "org.junit.platform.engine.discovery.MethodSelector$IdentifierParser", + "org.junit.platform.engine.discovery.ModuleSelector$IdentifierParser", + "org.junit.platform.engine.discovery.NestedClassSelector$IdentifierParser", + "org.junit.platform.engine.discovery.NestedMethodSelector$IdentifierParser", + "org.junit.platform.engine.discovery.PackageSelector$IdentifierParser", + "org.junit.platform.engine.discovery.UniqueIdSelector$IdentifierParser", + "org.junit.platform.engine.discovery.UriSelector$IdentifierParser" + ] + }, + "org.junit.platform:junit-platform-launcher": { + "org.junit.platform.launcher.TestExecutionListener": [ + "org.junit.platform.launcher.listeners.UniqueIdTrackingListener" + ] + }, + "org.junit.platform:junit-platform-reporting": { + "org.junit.platform.launcher.TestExecutionListener": [ + "org.junit.platform.reporting.open.xml.OpenTestReportGeneratingListener" + ], + "org.opentest4j.reporting.tooling.spi.htmlreport.Contributor": [ + "org.junit.platform.reporting.open.xml.JUnitContributor" + ] + }, + "org.slf4j:jcl-over-slf4j": { + "org.apache.commons.logging.LogFactory": [ + "org.apache.commons.logging.impl.SLF4JLogFactory" + ] + }, + "org.spongepowered:configurate-gson": { + "org.spongepowered.configurate.loader.ConfigurationFormat": [ + "org.spongepowered.configurate.gson.GsonConfigurationFormat" + ] + }, + "org.spongepowered:configurate-hocon": { + "org.spongepowered.configurate.loader.ConfigurationFormat": [ + "org.spongepowered.configurate.hocon.HoconConfigurationFormat" + ] + }, + "org.spongepowered:configurate-yaml": { + "org.spongepowered.configurate.loader.ConfigurationFormat": [ + "org.spongepowered.configurate.yaml.YamlConfigurationFormat" + ] + } + }, + "skipped": [ + "net.kyori:adventure-bom", + "org.junit:junit-bom" + ], + "version": "3" +} diff --git a/velocity/BUILD.bazel b/velocity/BUILD.bazel new file mode 100644 index 0000000..ac4eb0b --- /dev/null +++ b/velocity/BUILD.bazel @@ -0,0 +1,23 @@ +load("@rules_jvm_external//:defs.bzl", "artifact", "java_export") +load("//:defs.bzl", "GROUP", "VERSION") + +java_export( + name = "velocity", + maven_coordinates = GROUP + ":commands-velocity:" + VERSION, + srcs = glob(["site/lab0x13/scrow/commands/**/*.java"]), + visibility = ["//visibility:public"], + deps = [ + "//common:common-lib", + artifact("org.jetbrains:annotations"), + artifact("com.google.guava:guava"), + artifact("net.kyori:adventure-api"), + artifact("com.leakyabstractions:result-api"), + artifact("com.leakyabstractions:result"), + artifact("com.velocitypowered:velocity-api"), + ], + exports = [ + "//common:common-lib", + artifact("com.leakyabstractions:result-api"), + artifact("com.leakyabstractions:result"), + ] +) diff --git a/velocity/site/lab0x13/scrow/commands/velocity/CommandContextFactory.java b/velocity/site/lab0x13/scrow/commands/velocity/CommandContextFactory.java new file mode 100644 index 0000000..5a33a40 --- /dev/null +++ b/velocity/site/lab0x13/scrow/commands/velocity/CommandContextFactory.java @@ -0,0 +1,7 @@ +import com.velocitypowered.api.command.CommandSource; + +@FunctionalInterface +public interface CommandContextFactory> { + + C createContext(CommandSource sender); +} diff --git a/velocity/site/lab0x13/scrow/commands/velocity/VelocityCommand.java b/velocity/site/lab0x13/scrow/commands/velocity/VelocityCommand.java new file mode 100644 index 0000000..02c52b0 --- /dev/null +++ b/velocity/site/lab0x13/scrow/commands/velocity/VelocityCommand.java @@ -0,0 +1,40 @@ +import com.velocitypowered.api.command.RawCommand; +import site.lab0x13.scrow.commands.CommandHandler; +import site.lab0x13.scrow.commands.model.literal.RootLiteral; + +import java.util.Arrays; +import java.util.List; + +public class VelocityCommand> implements RawCommand { + + private final CommandHandler commandHandler; + private final CommandContextFactory commandContextFactory; + private final RootLiteral rootLiteral; + + public VelocityCommand(CommandHandler commandHandler, CommandContextFactory commandContextFactory, RootLiteral rootLiteral) { + this.commandHandler = commandHandler; + this.commandContextFactory = commandContextFactory; + this.rootLiteral = rootLiteral; + } + + @Override + public void execute(Invocation invocation) { + var args = Arrays.stream(invocation.arguments().split(" ")) + .filter(a -> !a.isEmpty()); + var ctx = commandContextFactory.createContext(invocation.source()); + commandHandler.invoke(rootLiteral, ctx, args); + } + + @Override + public boolean hasPermission(Invocation ctx) { + if (rootLiteral.permission() == null) return true; + return ctx.source().hasPermission(rootLiteral.permission()); + } + + @Override + public List suggest(Invocation invocation) { + var args = invocation.arguments().split(" "); + var ctx = commandContextFactory.createContext(invocation.source()); + return commandHandler.suggest(rootLiteral, ctx, args, invocation.arguments().endsWith(" ")); + } +} \ No newline at end of file diff --git a/velocity/site/lab0x13/scrow/commands/velocity/VelocityCommandContext.java b/velocity/site/lab0x13/scrow/commands/velocity/VelocityCommandContext.java new file mode 100644 index 0000000..688799d --- /dev/null +++ b/velocity/site/lab0x13/scrow/commands/velocity/VelocityCommandContext.java @@ -0,0 +1,21 @@ +import com.velocitypowered.api.command.CommandSource; +import com.velocitypowered.api.proxy.Player; +import site.lab0x13.scrow.commands.model.AbstractCommandContext; +import site.lab0x13.scrow.commands.model.CommandContext; + +public class VelocityCommandContext> extends AbstractCommandContext { + + private final CommandSource sender; + + public VelocityCommandContext(CommandSource sender) { + this.sender = sender; + } + + public CommandSource sender() { + return sender; + } + + public Player player() { + return (Player) sender(); + } +} diff --git a/velocity/site/lab0x13/scrow/commands/velocity/VelocityPlatform.java b/velocity/site/lab0x13/scrow/commands/velocity/VelocityPlatform.java new file mode 100644 index 0000000..2ef461f --- /dev/null +++ b/velocity/site/lab0x13/scrow/commands/velocity/VelocityPlatform.java @@ -0,0 +1,14 @@ +import net.kyori.adventure.text.Component; +import site.lab0x13.scrow.commands.PlatformAdapter; + +public class VelocityPlatform> implements PlatformAdapter { + @Override + public boolean checkPermission(C ctx, String permission) { + return ctx.sender().hasPermission(permission); + } + + @Override + public void sendMessage(C ctx, Component message) { + ctx.sender().sendMessage(message); + } +} \ No newline at end of file