diff --git a/build.gradle.kts b/build.gradle.kts index 90c319338..9d15bdfe9 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -47,11 +47,11 @@ subprojects { } repositories { + maven("https://repo.viaversion.com") + maven("https://papermc.io/repo/repository/maven-public/") maven("https://oss.sonatype.org/content/repositories/snapshots/") - maven("https://hub.spigotmc.org/nexus/content/repositories/snapshots") maven("https://nexus.velocitypowered.com/repository/velocity-artifacts-snapshots/") maven("https://repo.spongepowered.org/repository/maven-public/") - maven("https://repo.viaversion.com") maven("https://libraries.minecraft.net") maven("https://repo.maven.apache.org/maven2/") } diff --git a/buildSrc/src/main/kotlin/Versions.kt b/buildSrc/src/main/kotlin/Versions.kt index b8a26c6a5..2b46ae456 100644 --- a/buildSrc/src/main/kotlin/Versions.kt +++ b/buildSrc/src/main/kotlin/Versions.kt @@ -15,7 +15,7 @@ object Versions { const val checkerQual = "3.12.0" // Platforms - const val spigot = "1.16.5-R0.1-SNAPSHOT" + const val paper = "1.16.5-R0.1-SNAPSHOT" const val legacyBukkit = "1.8.8-R0.1-SNAPSHOT" const val bungee = "1.16-R0.5-SNAPSHOT" const val sponge = "5.0.0" diff --git a/bukkit/build.gradle.kts b/bukkit/build.gradle.kts index 6332b1ad9..b23b4cad2 100644 --- a/bukkit/build.gradle.kts +++ b/bukkit/build.gradle.kts @@ -2,7 +2,7 @@ dependencies { implementation(project(":viaversion-bukkit-legacy")) implementation(project(":viaversion-common")) implementation("org.javassist", "javassist", Versions.javassist) - compileOnly("org.spigotmc", "spigot-api", Versions.spigot) { + compileOnly("com.destroystokyo.paper", "paper-api", Versions.paper) { exclude("junit", "junit") exclude("com.google.code.gson", "gson") exclude("javax.persistence", "persistence-api") diff --git a/bukkit/src/main/java/us/myles/ViaVersion/bukkit/platform/BukkitViaInjector.java b/bukkit/src/main/java/us/myles/ViaVersion/bukkit/platform/BukkitViaInjector.java index 54692259b..3186d92e4 100644 --- a/bukkit/src/main/java/us/myles/ViaVersion/bukkit/platform/BukkitViaInjector.java +++ b/bukkit/src/main/java/us/myles/ViaVersion/bukkit/platform/BukkitViaInjector.java @@ -23,6 +23,8 @@ import io.netty.channel.ChannelFuture; import io.netty.channel.ChannelHandler; import io.netty.channel.ChannelInitializer; import io.netty.channel.socket.SocketChannel; +import org.bukkit.Bukkit; +import org.bukkit.UnsafeValues; import org.bukkit.plugin.PluginDescriptionFile; import us.myles.ViaVersion.api.Pair; import us.myles.ViaVersion.api.Via; @@ -39,10 +41,12 @@ import java.util.ArrayList; import java.util.Collection; import java.util.List; +//TODO screams public class BukkitViaInjector implements ViaInjector { private final List injectedFutures = new ArrayList<>(); private final List> injectedLists = new ArrayList<>(); + private final boolean modernPaper = hasServerProtocolMethod(); private boolean protocolLib; @Override @@ -186,6 +190,11 @@ public class BukkitViaInjector implements ViaInjector { @Override public int getServerProtocolVersion() throws Exception { + if (modernPaper) { + // *Trust me, it's safe* + return Bukkit.getUnsafe().getProtocolVersion(); + } + try { Class serverClazz = NMSUtil.nms("MinecraftServer"); Object server = ReflectionUtil.invokeStatic(serverClazz, "getServer"); @@ -367,4 +376,17 @@ public class BukkitViaInjector implements ViaInjector { public void setProtocolLib(boolean protocolLib) { this.protocolLib = protocolLib; } + + public boolean isModernPaper() { + return modernPaper; + } + + private static boolean hasServerProtocolMethod() { + try { + Class.forName("org.bukkit.UnsafeValues").getDeclaredMethod("getProtocolVersion"); + return true; + } catch (ReflectiveOperationException e) { + return false; + } + } } \ No newline at end of file diff --git a/bungee/src/main/java/us/myles/ViaVersion/bungee/platform/BungeeViaInjector.java b/bungee/src/main/java/us/myles/ViaVersion/bungee/platform/BungeeViaInjector.java index 567060af1..f02913cc2 100644 --- a/bungee/src/main/java/us/myles/ViaVersion/bungee/platform/BungeeViaInjector.java +++ b/bungee/src/main/java/us/myles/ViaVersion/bungee/platform/BungeeViaInjector.java @@ -42,6 +42,7 @@ public class BungeeViaInjector implements ViaInjector { field.setAccessible(true); // Remove the final modifier (unless removed by a fork) + //TODO Fix Java 16 compatibility int modifiers = field.getModifiers(); if (Modifier.isFinal(modifiers)) { try { diff --git a/sponge/src/main/java/us/myles/ViaVersion/sponge/platform/SpongeViaInjector.java b/sponge/src/main/java/us/myles/ViaVersion/sponge/platform/SpongeViaInjector.java index de977a356..ca04792b6 100644 --- a/sponge/src/main/java/us/myles/ViaVersion/sponge/platform/SpongeViaInjector.java +++ b/sponge/src/main/java/us/myles/ViaVersion/sponge/platform/SpongeViaInjector.java @@ -37,6 +37,7 @@ import java.lang.reflect.Method; import java.util.ArrayList; import java.util.List; +//TODO screams public class SpongeViaInjector implements ViaInjector { private List injectedFutures = new ArrayList<>(); private List> injectedLists = new ArrayList<>();