diff --git a/build-extensions/src/main/kotlin/eu/cloudnetservice/cloudnet/gradle/plugins/CloudNetJavaApiPlugin.kt b/build-extensions/src/main/kotlin/eu/cloudnetservice/cloudnet/gradle/plugins/CloudNetJavaApiPlugin.kt index 9bc5aabe9a..c28bed713d 100644 --- a/build-extensions/src/main/kotlin/eu/cloudnetservice/cloudnet/gradle/plugins/CloudNetJavaApiPlugin.kt +++ b/build-extensions/src/main/kotlin/eu/cloudnetservice/cloudnet/gradle/plugins/CloudNetJavaApiPlugin.kt @@ -26,7 +26,7 @@ import org.gradle.kotlin.dsl.withType /** * Java version compatibility to apply to all api projects. */ -val JAVA_API_COMPATIBILITY = JavaLanguageVersion.of(17) +val JAVA_API_COMPATIBILITY = JavaLanguageVersion.of(21) class CloudNetJavaApiPlugin : Plugin { override fun apply(project: Project) { diff --git a/ext/adventure-helper/src/test/java/eu/cloudnetservice/ext/adventure/AdventureTextFormatLookupTest.java b/ext/adventure-helper/src/test/java/eu/cloudnetservice/ext/adventure/AdventureTextFormatLookupTest.java index f79053f647..9cb92c43ae 100644 --- a/ext/adventure-helper/src/test/java/eu/cloudnetservice/ext/adventure/AdventureTextFormatLookupTest.java +++ b/ext/adventure-helper/src/test/java/eu/cloudnetservice/ext/adventure/AdventureTextFormatLookupTest.java @@ -17,8 +17,8 @@ package eu.cloudnetservice.ext.adventure; import net.kyori.adventure.text.format.NamedTextColor; +import net.kyori.adventure.text.format.TextColor; import net.kyori.adventure.text.format.TextDecoration; -import net.kyori.adventure.text.format.TextFormat; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; @@ -66,7 +66,6 @@ void testFindCharByFormat() { Assertions.assertEquals('k', AdventureTextFormatLookup.findFormatChar(TextDecoration.OBFUSCATED)); Assertions.assertEquals('m', AdventureTextFormatLookup.findFormatChar(TextDecoration.STRIKETHROUGH)); - Assertions.assertNull(AdventureTextFormatLookup.findFormatChar(new TextFormat() { - })); + Assertions.assertNull(AdventureTextFormatLookup.findFormatChar(TextColor.color(0x123456))); } } diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 741127e344..e8ca872845 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -1,8 +1,8 @@ [versions] # plugins -indra = "4.0.0" -shadow = "9.3.1" +indra = "4.1.0" +shadow = "9.6.1" juppiter = "0.5.0-beta.2" spotless = "8.9.0" nexusPublish = "2.0.0" @@ -13,8 +13,8 @@ gson = "2.14.0" guava = "33.6.0-jre" # testing -junit = "6.0.3" -mockito = "5.21.0" +junit = "6.1.3" +mockito = "5.23.0" testcontainers = "2.0.5" # compile time processing @@ -22,7 +22,7 @@ lombok = "1.18.46" javapoet = "1.13.0" # console -jline = "3.30.16" +jline = "4.3.1" cloud = "2.0.0-cn1" cloudApi = "2.0.0" stringSimilarity = "2.0.0" @@ -31,9 +31,9 @@ cloudConfirmation = "1.0.0-rc.1" # databases h2 = "1.4.197" # do not update, leads to database incompatibility xodus = "2.0.1" -mongodb = "5.6.5" -hikariCp = "7.0.2" -mysqlConnector = "9.7.0" +mongodb = "5.9.2" +hikariCp = "7.1.0" +mysqlConnector = "26.7.0" # general oshi = "7.4.4" @@ -41,24 +41,24 @@ gulf = "0.0.1" vavr = "1.0.1" sshj = "0.40.0" aerogel = "3.1.0" -awsSdk = "2.41.11" -unirest = "4.7.4" +awsSdk = "2.52.1" +unirest = "4.10.1" caffeine = "3.2.4" reflexion = "2.0.0" geantyref = "2.0.1" dockerJava = "3.7.1" -nightConfig = "3.8.4" +nightConfig = "3.9.0" annotations = "26.1.0" influxClient = "7.4.0" netty = "2025.11.08-3a259e91" # logging slf4j = "2.0.18" -logback = "1.5.32" +logback = "1.6.2" # platform api versions sponge = "9.0.0" -velocity = "3.5.1" +velocity = "4.0.0" waterdogpe = "1.2.4" nukkitX = "1.0-SNAPSHOT" minestom = "2026.08.07-26.2" @@ -66,10 +66,10 @@ minestomExtensions = "1.2.0" spigot = "1.8.8-R0.1-SNAPSHOT" bungeecord = "26.1-R0.1-SNAPSHOT" limboloohp = "0.7.9-ALPHA" -folia = "1.21.11-R0.1-SNAPSHOT" +folia = "26.1.2.build.8-stable" # platform extensions -adventure = "4.26.1" +adventure = "5.2.0" modlauncher = "8.1.3" npcLib = "3.0.0-beta.17" packetEvents = "2.13.0" diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar index 61285a659d..eddabd2eef 100644 Binary files a/gradle/wrapper/gradle-wrapper.jar and b/gradle/wrapper/gradle-wrapper.jar differ diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 19a6bdeb84..69dd0d0404 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,7 +1,9 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-9.3.0-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-9.7.0-bin.zip networkTimeout=10000 +retries=0 +retryBackOffMs=500 validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/gradlew b/gradlew index adff685a03..249efbb032 100755 --- a/gradlew +++ b/gradlew @@ -20,7 +20,7 @@ ############################################################################## # -# Gradle start up script for POSIX generated by Gradle. +# gradlew start up script for POSIX generated by Gradle. # # Important for running: # @@ -29,7 +29,7 @@ # bash, then to run this script, type that shell name before the whole # command line, like: # -# ksh Gradle +# ksh gradlew # # Busybox and similar reduced shells will NOT work, because this script # requires all of these POSIX shell features: @@ -57,7 +57,7 @@ # Darwin, MinGW, and NonStop. # # (3) This script is generated from the Groovy template -# https://github.com/gradle/gradle/blob/HEAD/platforms/jvm/plugins-application/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt +# https://github.com/gradle/gradle/blob/3d91ce3b8caaf77ad09f381f43615b715b53f72c/platforms/jvm/plugins-application/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt # within the Gradle project. # # You can find Gradle at https://github.com/gradle/gradle/. diff --git a/gradlew.bat b/gradlew.bat index c4bdd3ab8e..a51ec4f588 100644 --- a/gradlew.bat +++ b/gradlew.bat @@ -19,12 +19,12 @@ @if "%DEBUG%"=="" @echo off @rem ########################################################################## @rem -@rem Gradle startup script for Windows +@rem gradlew startup script for Windows @rem @rem ########################################################################## -@rem Set local scope for the variables with windows NT shell -if "%OS%"=="Windows_NT" setlocal +@rem Set local scope for the variables, and ensure extensions are enabled +setlocal EnableExtensions set DIRNAME=%~dp0 if "%DIRNAME%"=="" set DIRNAME=. @@ -51,7 +51,7 @@ echo. 1>&2 echo Please set the JAVA_HOME variable in your environment to match the 1>&2 echo location of your Java installation. 1>&2 -goto fail +"%COMSPEC%" /c exit 1 :findJavaFromJavaHome set JAVA_HOME=%JAVA_HOME:"=% @@ -65,29 +65,18 @@ echo. 1>&2 echo Please set the JAVA_HOME variable in your environment to match the 1>&2 echo location of your Java installation. 1>&2 -goto fail +"%COMSPEC%" /c exit 1 :execute @rem Setup the command line -@rem Execute Gradle -"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -jar "%APP_HOME%\gradle\wrapper\gradle-wrapper.jar" %* +@rem Execute gradlew +@rem endlocal doesn't take effect until after the line is parsed and variables are expanded +@rem which allows us to clear the local environment before executing the java command +endlocal & "%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -jar "%APP_HOME%\gradle\wrapper\gradle-wrapper.jar" %* & call :exitWithErrorLevel -:end -@rem End local scope for the variables with windows NT shell -if %ERRORLEVEL% equ 0 goto mainEnd - -:fail -rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of -rem the _cmd.exe /c_ return code! -set EXIT_CODE=%ERRORLEVEL% -if %EXIT_CODE% equ 0 set EXIT_CODE=1 -if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE% -exit /b %EXIT_CODE% - -:mainEnd -if "%OS%"=="Windows_NT" endlocal - -:omega +:exitWithErrorLevel +@rem Use "%COMSPEC%" /c exit to allow operators to work properly in scripts +"%COMSPEC%" /c exit %ERRORLEVEL% diff --git a/modules/bridge/impl/build.gradle.kts b/modules/bridge/impl/build.gradle.kts index 037dbe94a4..bb0a26fc86 100644 --- a/modules/bridge/impl/build.gradle.kts +++ b/modules/bridge/impl/build.gradle.kts @@ -70,7 +70,7 @@ tasks.withType { val zipFileName = "cloudnet_fabric_version_bridge_all.zip" val downloadUrl = "https://github.com/CloudNetService/cloudnet-bridge-fabric/releases/latest/download/$zipFileName" -val includeNestedModJars by tasks.registering(IncludeNestedModJarsTask::class) { +val includeNestedModJars = tasks.register("includeNestedModJars") { dependsOn(tasks.compileJava) nestedZipDownloadUrl.set(downloadUrl) diff --git a/modules/bridge/impl/src/main/java/eu/cloudnetservice/modules/bridge/impl/platform/velocity/VelocityBridgePlugin.java b/modules/bridge/impl/src/main/java/eu/cloudnetservice/modules/bridge/impl/platform/velocity/VelocityBridgePlugin.java index 85a7a4c455..371213b109 100644 --- a/modules/bridge/impl/src/main/java/eu/cloudnetservice/modules/bridge/impl/platform/velocity/VelocityBridgePlugin.java +++ b/modules/bridge/impl/src/main/java/eu/cloudnetservice/modules/bridge/impl/platform/velocity/VelocityBridgePlugin.java @@ -68,22 +68,27 @@ public VelocityBridgePlugin( @Override public void onLoad() { - // init the bridge management this.bridgeManagement.registerServices(this.serviceRegistry); this.bridgeManagement.postInit(); - // register the player listeners + this.proxy.getEventManager().register(this.pluginInstance, this.playerListener); - // register the cloud command - this.proxy.getCommandManager().register("cloudnet", this.cloudCommand, "cloud"); + + var cloudCommandMeta = this.proxy.getCommandManager() + .metaBuilder("cloud") + .aliases("cloudnet") + .build(); + this.proxy.getCommandManager().register(cloudCommandMeta, this.cloudCommand); + // register the hub command if requested if (!this.bridgeManagement.configuration().hubCommandNames().isEmpty()) { - // convert to an array for easier access var names = this.bridgeManagement.configuration().hubCommandNames().toArray(new String[0]); - // register the command + var hubCommandMeta = this.proxy.getCommandManager() + .metaBuilder(names[0]) + .aliases(names.length > 1 ? Arrays.copyOfRange(names, 1, names.length) : new String[0]) + .build(); this.proxy.getCommandManager().register( - names[0], - new VelocityHubCommand(this.proxy, this.bridgeManagement), - names.length > 1 ? Arrays.copyOfRange(names, 1, names.length) : new String[0]); + hubCommandMeta, + new VelocityHubCommand(this.proxy, this.bridgeManagement)); } } diff --git a/modules/npcs/impl/build.gradle.kts b/modules/npcs/impl/build.gradle.kts index 7ace39f0aa..b6d342d64a 100644 --- a/modules/npcs/impl/build.gradle.kts +++ b/modules/npcs/impl/build.gradle.kts @@ -67,10 +67,8 @@ tasks.shadowJar.configure { relocate("com.github.retrooper", "eu.cloudnetservice.modules.npc.relocate.com.packetevents") relocate("com.github.juliarn.npclib", "eu.cloudnetservice.modules.npc.relocate.com.github.juliarn.npclib") - dependencies { - exclude("plugin.yml") - exclude("META-INF/**", "**/*.html", "module-info.*") - } + exclude("plugin.yml") + exclude("META-INF/**", "**/*.html", "module-info.*") manifest { attributes["paperweight-mappings-namespace"] = "mojang" diff --git a/node/impl/src/main/java/eu/cloudnetservice/node/impl/console/JLine3Console.java b/node/impl/src/main/java/eu/cloudnetservice/node/impl/console/JLine3Console.java index 2020d5f955..3de347f6e1 100644 --- a/node/impl/src/main/java/eu/cloudnetservice/node/impl/console/JLine3Console.java +++ b/node/impl/src/main/java/eu/cloudnetservice/node/impl/console/JLine3Console.java @@ -333,7 +333,7 @@ public void prompt(@NonNull String prompt) { @Override public int width() { - return this.terminal.getWidth(); + return this.terminal.getColumns(); } @Override