diff --git a/buildSrc/src/main/kotlin/floodgate.shadow-conventions.gradle.kts b/buildSrc/src/main/kotlin/floodgate.shadow-conventions.gradle.kts index 326d7f89..bb2c95b0 100644 --- a/buildSrc/src/main/kotlin/floodgate.shadow-conventions.gradle.kts +++ b/buildSrc/src/main/kotlin/floodgate.shadow-conventions.gradle.kts @@ -34,11 +34,6 @@ tasks { // for example Velocity, the relocation will be gone for Velocity) addRelocations(project, sJar) } - - val destinationDir = System.getenv("DESTINATION_DIRECTORY"); - if (destinationDir != null) { - destinationDirectory = file(destinationDir) - } } named("build") { diff --git a/bungee/base/build.gradle.kts b/bungee/base/build.gradle.kts index dbc88e70..6e8e9033 100644 --- a/bungee/base/build.gradle.kts +++ b/bungee/base/build.gradle.kts @@ -1,6 +1,7 @@ dependencies { api(projects.core) annotationProcessor(projects.core) + annotationProcessor(libs.micronaut.inject.java) compileOnlyApi(projects.isolation) implementation(libs.cloud.bungee) @@ -8,8 +9,7 @@ dependencies { relocate("net.kyori") relocate("cloud.commandframework") -// used in cloud -relocate("io.leangen.geantyref") +relocate("io.leangen.geantyref") // used in cloud // these dependencies are already present on the platform provided(libs.bungee) diff --git a/core/src/main/java/org/geysermc/floodgate/core/command/WhitelistCommand.java b/core/src/main/java/org/geysermc/floodgate/core/command/WhitelistCommand.java index dffe8834..0c5b301a 100644 --- a/core/src/main/java/org/geysermc/floodgate/core/command/WhitelistCommand.java +++ b/core/src/main/java/org/geysermc/floodgate/core/command/WhitelistCommand.java @@ -34,7 +34,6 @@ import jakarta.inject.Inject; import jakarta.inject.Singleton; import java.util.UUID; import lombok.Getter; -import org.geysermc.floodgate.api.FloodgateApi; import org.geysermc.floodgate.api.logger.FloodgateLogger; import org.geysermc.floodgate.core.command.util.Permission; import org.geysermc.floodgate.core.config.FloodgateConfig; @@ -50,7 +49,6 @@ import org.geysermc.floodgate.core.player.audience.ProfileAudienceArgument; @Singleton public class WhitelistCommand implements FloodgateCommand { - @Inject FloodgateApi api; @Inject FloodgateConfig config; @Inject XboxClient xboxClient; @Inject FloodgateLogger logger; diff --git a/core/src/main/java/org/geysermc/floodgate/core/link/CommonPlayerLink.java b/core/src/main/java/org/geysermc/floodgate/core/link/CommonPlayerLink.java index c478f25a..dfca8ec0 100644 --- a/core/src/main/java/org/geysermc/floodgate/core/link/CommonPlayerLink.java +++ b/core/src/main/java/org/geysermc/floodgate/core/link/CommonPlayerLink.java @@ -31,7 +31,7 @@ import java.util.concurrent.CompletableFuture; import lombok.AccessLevel; import lombok.Getter; import org.checkerframework.checker.nullness.qual.NonNull; -import org.geysermc.floodgate.api.FloodgateApi; +import org.geysermc.api.GeyserApiBase; import org.geysermc.floodgate.api.logger.FloodgateLogger; import org.geysermc.floodgate.api.player.FloodgatePlayer; import org.geysermc.floodgate.core.config.FloodgateConfig; @@ -49,7 +49,7 @@ public abstract class CommonPlayerLink { @Inject @Getter(AccessLevel.PROTECTED) - FloodgateApi api; + GeyserApiBase api; @Inject public void commonInit(FloodgateConfig config) { @@ -68,10 +68,10 @@ public abstract class CommonPlayerLink { * @return true if the given player is the player requested */ public boolean isRequestedPlayer(LinkRequest request, UUID bedrockId) { - // Java starts the process, Bedrock finishes it. So player can't be null - var player = api.getPlayer(bedrockId); - return request.bedrockUsername().equals(player.getUsername()) || - request.bedrockUsername().equals(player.getJavaUsername()); + var player = api.connectionByUuid(bedrockId); + //noinspection ConstantConditions Java starts the process, Bedrock finishes it. So player can't be null + return request.bedrockUsername().equals(player.bedrockUsername()) || + request.bedrockUsername().equals(player.javaUsername()); } public abstract CompletableFuture addLink( diff --git a/core/src/main/java/org/geysermc/floodgate/core/player/FloodgateHandshakeHandler.java b/core/src/main/java/org/geysermc/floodgate/core/player/FloodgateHandshakeHandler.java index 95ed11ce..a0432fbd 100644 --- a/core/src/main/java/org/geysermc/floodgate/core/player/FloodgateHandshakeHandler.java +++ b/core/src/main/java/org/geysermc/floodgate/core/player/FloodgateHandshakeHandler.java @@ -39,6 +39,8 @@ import java.net.InetSocketAddress; import java.nio.charset.StandardCharsets; import java.util.concurrent.CompletableFuture; import java.util.concurrent.CompletionException; + +import jakarta.inject.Singleton; import lombok.AccessLevel; import lombok.AllArgsConstructor; import lombok.Getter; @@ -60,6 +62,7 @@ import org.geysermc.floodgate.core.util.Utils; import org.geysermc.floodgate.util.BedrockData; import org.geysermc.floodgate.util.LinkedPlayer; +@Singleton public final class FloodgateHandshakeHandler { @Inject ConnectionManager connectionManager; @Inject HandshakeHandlersImpl handshakeHandlers; diff --git a/core/src/main/resources/languages b/core/src/main/resources/languages index df599a9b..204f4fe4 160000 --- a/core/src/main/resources/languages +++ b/core/src/main/resources/languages @@ -1 +1 @@ -Subproject commit df599a9bc9d7fce93a586591d6c0d625eefe4463 +Subproject commit 204f4fe4920defac3a472e762d95233d0756f35f diff --git a/gradle.properties b/gradle.properties index 0b3aae1e..37dc533e 100644 --- a/gradle.properties +++ b/gradle.properties @@ -4,4 +4,4 @@ org.gradle.parallel=true systemProp.org.gradle.unsafe.kotlin.assignment=true version=2.2.2-SNAPSHOT -micronautVersion=4.0.0-M5 \ No newline at end of file +micronautVersion=4.0.3 \ No newline at end of file diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index a1286939..2f9d407d 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -1,6 +1,6 @@ [versions] # parent -micronaut-gradle = "4.0.0-M8" +micronaut-gradle = "4.0.2" lombok = "8.0.1" # api @@ -22,7 +22,7 @@ bstats = "3.0.2" bungee = "master-SNAPSHOT" # spigot -folia = "1.19.4-R0.1-SNAPSHOT" +paper = "1.20.1-R0.1-SNAPSHOT" authlib = "1.5.21" # velocity @@ -80,7 +80,7 @@ bungee = { module = "com.github.SpigotMC.BungeeCord:bungeecord-proxy", version.r cloud-bungee = { module = "cloud.commandframework:cloud-bungee", version.ref = "cloud" } # spigot -folia-api = { module = "dev.folia:folia-api", version.ref = "folia" } +paper-api = { module = "io.papermc.paper:paper-api", version.ref = "paper" } cloud-bukkit = { module = "cloud.commandframework:cloud-bukkit", version.ref = "cloud" } authlib = { module = "com.mojang:authlib", version.ref = "authlib" } diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar index ccebba77..c1962a79 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 37aef8d3..17a8ddce 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.1.1-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.2.1-bin.zip networkTimeout=10000 zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/gradlew b/gradlew index 79a61d42..aeb74cbb 100755 --- a/gradlew +++ b/gradlew @@ -85,9 +85,6 @@ done APP_BASE_NAME=${0##*/} APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit -# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' - # Use the maximum available, or set MAX_FD != -1 to use that value. MAX_FD=maximum @@ -197,6 +194,10 @@ if "$cygwin" || "$msys" ; then done fi + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' + # Collect all arguments for the java command; # * $DEFAULT_JVM_OPTS, $JAVA_OPTS, and $GRADLE_OPTS can contain fragments of # shell script including quotes and variable substitutions, so put them in diff --git a/spigot/base/build.gradle.kts b/spigot/base/build.gradle.kts index 697d38ce..d28f8575 100644 --- a/spigot/base/build.gradle.kts +++ b/spigot/base/build.gradle.kts @@ -1,11 +1,12 @@ dependencies { api(projects.core) annotationProcessor(projects.core) + annotationProcessor(libs.micronaut.inject.java) compileOnlyApi(projects.isolation) implementation(libs.cloud.bukkit) - compileOnlyApi(libs.folia.api) + compileOnlyApi(libs.paper.api) } relocate("net.kyori") diff --git a/spigot/base/src/main/java/org/geysermc/floodgate/spigot/SpigotPlatform.java b/spigot/base/src/main/java/org/geysermc/floodgate/spigot/SpigotPlatform.java index ad65847a..3b79dd3d 100644 --- a/spigot/base/src/main/java/org/geysermc/floodgate/spigot/SpigotPlatform.java +++ b/spigot/base/src/main/java/org/geysermc/floodgate/spigot/SpigotPlatform.java @@ -43,17 +43,6 @@ public class SpigotPlatform extends FloodgatePlatform { this.plugin = plugin; } - @Override - public void enable() throws RuntimeException { - super.enable(); - - // add ProtocolSupport support (hack) - if (plugin.getServer().getPluginManager().getPlugin("ProtocolSupport") != null) { - context.getBean(SpigotProtocolSupportHandler.class); - SpigotProtocolSupportListener.registerHack(plugin); - } - } - @Override protected void onContextCreated(ApplicationContext context) { context.registerSingleton(plugin) @@ -67,6 +56,17 @@ public class SpigotPlatform extends FloodgatePlatform { this.context = context; } + @Override + public void enable() throws RuntimeException { + super.enable(); + + // add ProtocolSupport support (hack) + if (plugin.getServer().getPluginManager().getPlugin("ProtocolSupport") != null) { + context.getBean(SpigotProtocolSupportHandler.class); + SpigotProtocolSupportListener.registerHack(plugin); + } + } + @Override protected boolean isProxy() { return false; diff --git a/spigot/base/src/main/java/org/geysermc/floodgate/spigot/util/ClassNames.java b/spigot/base/src/main/java/org/geysermc/floodgate/spigot/util/ClassNames.java index 147a18d7..bea7b687 100644 --- a/spigot/base/src/main/java/org/geysermc/floodgate/spigot/util/ClassNames.java +++ b/spigot/base/src/main/java/org/geysermc/floodgate/spigot/util/ClassNames.java @@ -228,7 +228,7 @@ public class ClassNames { } IS_FOLIA = ReflectionUtils.getClassSilently( - "io.papermc.paper.threadedregions.scheduler.EntityScheduler" + "io.papermc.paper.threadedregions.RegionizedServer" ) != null; } diff --git a/spigot/base/src/main/java/org/geysermc/floodgate/spigot/util/SpigotPlatformUtils.java b/spigot/base/src/main/java/org/geysermc/floodgate/spigot/util/SpigotPlatformUtils.java index be05ca00..cdd42708 100644 --- a/spigot/base/src/main/java/org/geysermc/floodgate/spigot/util/SpigotPlatformUtils.java +++ b/spigot/base/src/main/java/org/geysermc/floodgate/spigot/util/SpigotPlatformUtils.java @@ -30,7 +30,7 @@ import org.bukkit.Bukkit; import org.geysermc.floodgate.core.platform.util.PlatformUtils; @Singleton -public class SpigotPlatformUtils extends PlatformUtils { +public final class SpigotPlatformUtils extends PlatformUtils { @Override public AuthType authType() { if (Bukkit.getOnlineMode()) { diff --git a/spigot/isolated/build.gradle.kts b/spigot/isolated/build.gradle.kts index 87a89226..40cb4d8a 100644 --- a/spigot/isolated/build.gradle.kts +++ b/spigot/isolated/build.gradle.kts @@ -4,7 +4,7 @@ plugins { dependencies { api(projects.isolation) - compileOnlyApi(libs.folia.api) + compileOnlyApi(libs.paper.api) } tasks { diff --git a/universal/build.gradle.kts b/universal/build.gradle.kts index 99c5b123..c4665b2c 100644 --- a/universal/build.gradle.kts +++ b/universal/build.gradle.kts @@ -3,7 +3,7 @@ plugins { } provided(libs.bungee) -provided(libs.folia.api) +provided(libs.paper.api) provided(libs.velocity.api) // todo use an isolated class loader in the future diff --git a/velocity/base/build.gradle.kts b/velocity/base/build.gradle.kts index cf182f9c..d01938d9 100644 --- a/velocity/base/build.gradle.kts +++ b/velocity/base/build.gradle.kts @@ -10,12 +10,10 @@ dependencies { } relocate("cloud.commandframework") -// used in cloud -relocate("io.leangen.geantyref") +relocate("io.leangen.geantyref") // used in cloud relocate("org.yaml.snakeyaml") - // these dependencies are already present on the platform provided(libs.gson) provided(libs.velocity.api)