diff --git a/api/paper/build.gradle.kts b/api/paper/build.gradle.kts index 761a4b6..ca17b0a 100644 --- a/api/paper/build.gradle.kts +++ b/api/paper/build.gradle.kts @@ -12,9 +12,9 @@ tasks { (options as StandardJavadocDocletOptions).run { encoding = Charsets.UTF_8.name() links( - "https://jd.advntr.dev/api/4.12.0/", - "https://jd.advntr.dev/text-minimessage/4.12.0/", - "https://jd.papermc.io/paper/1.19/" + "https://jd.advntr.dev/api/${libs.versions.adventure.get()}/", + "https://jd.advntr.dev/text-minimessage/${libs.versions.adventure.get()}/", + "https://jd.papermc.io/paper/1.20/" ) } } diff --git a/api/paper/src/main/java/io/github/_4drian3d/authmevelocity/api/paper/event/PreSendLoginEvent.java b/api/paper/src/main/java/io/github/_4drian3d/authmevelocity/api/paper/event/PreSendLoginEvent.java index 03a195b..6dd8247 100644 --- a/api/paper/src/main/java/io/github/_4drian3d/authmevelocity/api/paper/event/PreSendLoginEvent.java +++ b/api/paper/src/main/java/io/github/_4drian3d/authmevelocity/api/paper/event/PreSendLoginEvent.java @@ -17,6 +17,7 @@ package io.github._4drian3d.authmevelocity.api.paper.event; +import org.bukkit.Bukkit; import org.bukkit.entity.Player; import org.bukkit.event.Cancellable; import org.bukkit.event.HandlerList; @@ -36,7 +37,7 @@ public final class PreSendLoginEvent extends PlayerEvent implements Cancellable * @param player the player to be sent */ public PreSendLoginEvent(@NotNull Player player) { - super(player); + super(player, !Bukkit.isPrimaryThread()); } @Override diff --git a/build.gradle.kts b/build.gradle.kts index 31023db..87a7e9c 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -1,10 +1,6 @@ allprojects { apply() - repositories { - maven("https://repo.papermc.io/repository/maven-public/") - } - tasks.withType { options.encoding = Charsets.UTF_8.name() options.release.set(17) diff --git a/common/build.gradle.kts b/common/build.gradle.kts index 12d750e..30c76d0 100644 --- a/common/build.gradle.kts +++ b/common/build.gradle.kts @@ -4,10 +4,6 @@ plugins { id("authmevelocity.spotless") } -repositories { - maven("https://repo.alessiodp.com/releases/") -} - dependencies { compileOnly(libs.configurate.hocon) compileOnly(libs.libby.core) diff --git a/gradle.properties b/gradle.properties index d0f5dd9..0f56220 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,5 +1,5 @@ group = io.github.4drian3d -version = 4.0.5-SNAPSHOT +version = 4.1.0-SNAPSHOT description = AuthMeReloaded Support for Velocity url = https://modrinth.com/plugin/authmevelocity id = authmevelocity diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 555ffff..0b3765a 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -2,8 +2,8 @@ metadata.format.version = "1.1" [versions] -velocity = "3.2.0-SNAPSHOT" -paper = "1.20-R0.1-SNAPSHOT" +velocity = "3.3.0-SNAPSHOT" +paper = "1.20.4-R0.1-SNAPSHOT" miniplaceholders = "2.2.3" fastlogin = "1.12-SNAPSHOT" authme = "5.6.0-SNAPSHOT" @@ -29,7 +29,7 @@ adventure = { group = "net.kyori", name = "adventure-api", version.ref = "advent paper = { group = "io.papermc.paper", name = "paper-api", version.ref = "paper" } velocity-api = { group = "com.velocitypowered", name = "velocity-api", version.ref = "velocity" } -velocity-proxy = { group = "com.velocitypowered", name = "velocity-proxy", version.ref = "velocity" } +velocity-proxy = { group = "com.velocitypowered", name = "velocity-proxy", version = "3.2.0-SNAPSHOT" } authme = { module = "fr.xephi:authme", version.ref = "authme" } libby-core = { group = "net.byteflux", name = "libby-core", version.ref = "libby" } diff --git a/paper/build.gradle.kts b/paper/build.gradle.kts index 44bb521..e56913e 100644 --- a/paper/build.gradle.kts +++ b/paper/build.gradle.kts @@ -4,19 +4,6 @@ plugins { id("authmevelocity.spotless") } -repositories { - maven("https://repo.codemc.org/repository/maven-public/") { - mavenContent { - includeGroup("fr.xephi") - } - } - maven("https://repo.alessiodp.com/releases/"){ - mavenContent { - includeGroup("net.byteflux") - } - } -} - dependencies { compileOnly(libs.paper) compileOnly(libs.authme) @@ -26,7 +13,6 @@ dependencies { implementation(projects.authmevelocityCommon) implementation(projects.authmevelocityApiPaper) - implementation(libs.libby.bukkit) implementation(libs.libby.paper) } @@ -43,10 +29,10 @@ tasks { dependsOn(shadowJar) } runServer { - minecraftVersion("1.19.4") + minecraftVersion("1.20.4") } processResources { - filesMatching(listOf("paper-plugin.yml", "plugin.yml")) { + filesMatching("paper-plugin.yml") { expand("version" to project.version) } } diff --git a/paper/src/main/java/io/github/_4drian3d/authmevelocity/paper/AuthMeVelocityPlugin.java b/paper/src/main/java/io/github/_4drian3d/authmevelocity/paper/AuthMeVelocityPlugin.java index 2c53915..6f6af7b 100644 --- a/paper/src/main/java/io/github/_4drian3d/authmevelocity/paper/AuthMeVelocityPlugin.java +++ b/paper/src/main/java/io/github/_4drian3d/authmevelocity/paper/AuthMeVelocityPlugin.java @@ -25,48 +25,38 @@ import io.github._4drian3d.authmevelocity.common.configuration.ConfigurationCont import io.github._4drian3d.authmevelocity.common.configuration.PaperConfiguration; import io.github._4drian3d.authmevelocity.paper.listeners.AuthMeListener; import io.github._4drian3d.authmevelocity.paper.listeners.MessageListener; -import net.byteflux.libby.BukkitLibraryManager; import net.byteflux.libby.LibraryManager; import net.byteflux.libby.PaperLibraryManager; +import net.kyori.adventure.text.logger.slf4j.ComponentLogger; import org.bukkit.Bukkit; import org.bukkit.entity.Player; import org.bukkit.plugin.java.JavaPlugin; import org.jetbrains.annotations.NotNull; import java.nio.file.Path; -import java.util.logging.Level; + +import static net.kyori.adventure.text.minimessage.MiniMessage.miniMessage; public final class AuthMeVelocityPlugin extends JavaPlugin { private static final String CHANNEL = "authmevelocity:main"; private final Path dataFolder; + private ComponentLogger componentLogger; private ConfigurationContainer config; - @SuppressWarnings("unused") - public AuthMeVelocityPlugin() { - this.dataFolder = getDataFolder().toPath(); - } - public AuthMeVelocityPlugin(final Path dataFolder) { this.dataFolder = dataFolder; } @Override public void onEnable() { - LibraryManager libraryManager; - try { - Class.forName("io.papermc.paper.plugin.bootstrap.PluginBootstrap"); - libraryManager = new PaperLibraryManager(this); - } catch (ClassNotFoundException e) { - libraryManager = new BukkitLibraryManager(this); - this.getLogger().warning("You are using Spigot or a very old version of the platform you are using." - +"\nIn the future AuthMeVelocity will no longer support this version. Consider upgrading to Paper 1.19.4+."); - } + this.componentLogger = getComponentLogger(); + final LibraryManager libraryManager = new PaperLibraryManager(this); new LibsManager(libraryManager).loadLibraries(); try { this.config = ConfigurationContainer.load(dataFolder, PaperConfiguration.class); } catch (Throwable e) { - this.getLogger().log(Level.SEVERE, "Could not load config.conf file", e); + componentLogger.error("Could not load config.conf file", e); this.getServer().getPluginManager().disablePlugin(this); return; } @@ -81,7 +71,7 @@ public final class AuthMeVelocityPlugin extends JavaPlugin { AuthMePlaceholders.getExpansion().register(); } - this.getLogger().info("AuthMeVelocity enabled"); + componentLogger.info(miniMessage().deserialize("AuthMeVelocity enabled")); } @Override @@ -89,7 +79,7 @@ public final class AuthMeVelocityPlugin extends JavaPlugin { this.getServer().getMessenger().unregisterOutgoingPluginChannel(this, CHANNEL); this.getServer().getMessenger().unregisterIncomingPluginChannel(this, CHANNEL); - this.getLogger().info("AuthMeVelocity disabled"); + componentLogger.info(miniMessage().deserialize("AuthMeVelocity disabled")); } public void sendMessageToProxy( @@ -97,16 +87,16 @@ public final class AuthMeVelocityPlugin extends JavaPlugin { final @NotNull MessageType type, final @NotNull String playerName ) { - @SuppressWarnings("UnstableApiUsage") final ByteArrayDataOutput out = ByteStreams.newDataOutput(); + final ByteArrayDataOutput out = ByteStreams.newDataOutput(); out.writeUTF(type.toString()); out.writeUTF(playerName); if (player == null) { - logDebug("MessageToProxy | Null Player, Player Name: " + playerName); Bukkit.getServer().sendPluginMessage(this, CHANNEL, out.toByteArray()); + logDebug("MessageToProxy | Null Player, Player Name: " + playerName); } else { - logDebug("MessageToProxy | Player Present: " + player.getName() + ", Player Name: " + playerName); player.sendPluginMessage(this, CHANNEL, out.toByteArray()); + logDebug("MessageToProxy | Player Present: " + player.getName() + ", Player Name: " + playerName); } } @@ -119,7 +109,7 @@ public final class AuthMeVelocityPlugin extends JavaPlugin { public void logDebug(String debug) { if (config.get().debug()) { - getLogger().info("[DEBUG] " + debug); + componentLogger.info("[DEBUG] " + debug); } } } diff --git a/paper/src/main/java/io/github/_4drian3d/authmevelocity/paper/listeners/AuthMeListener.java b/paper/src/main/java/io/github/_4drian3d/authmevelocity/paper/listeners/AuthMeListener.java index acb9436..cd7ecc0 100644 --- a/paper/src/main/java/io/github/_4drian3d/authmevelocity/paper/listeners/AuthMeListener.java +++ b/paper/src/main/java/io/github/_4drian3d/authmevelocity/paper/listeners/AuthMeListener.java @@ -17,24 +17,21 @@ package io.github._4drian3d.authmevelocity.paper.listeners; -import fr.xephi.authme.events.LoginEvent; -import fr.xephi.authme.events.LogoutEvent; -import fr.xephi.authme.events.RegisterEvent; -import fr.xephi.authme.events.UnregisterByAdminEvent; -import fr.xephi.authme.events.UnregisterByPlayerEvent; +import fr.xephi.authme.events.*; import io.github._4drian3d.authmevelocity.api.paper.event.PreSendLoginEvent; import io.github._4drian3d.authmevelocity.common.MessageType; import io.github._4drian3d.authmevelocity.paper.AuthMeVelocityPlugin; -import org.bukkit.Bukkit; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; import org.bukkit.event.Listener; +import java.util.concurrent.TimeUnit; + public final class AuthMeListener implements Listener { private final AuthMeVelocityPlugin plugin; - public AuthMeListener(AuthMeVelocityPlugin plugin) { + public AuthMeListener(final AuthMeVelocityPlugin plugin) { this.plugin = plugin; } @@ -43,14 +40,25 @@ public final class AuthMeListener implements Listener { final Player player = event.getPlayer(); plugin.logDebug("LoginEvent | Start"); - // I hate this, but... Spigot compatibility ¯\_(ツ)_/¯ - final var preSendLoginEvent = new PreSendLoginEvent(player); - Bukkit.getPluginManager().callEvent(preSendLoginEvent); + plugin.getServer().getAsyncScheduler().runDelayed(plugin, task -> { + if (new PreSendLoginEvent(player).callEvent()) { + plugin.sendMessageToProxy(player, MessageType.LOGIN, player.getName()); + plugin.logDebug("LoginEvent | PreSendLoginEvent allowed"); + } + }, 1, TimeUnit.SECONDS); + } - if (!preSendLoginEvent.isCancelled()) { - plugin.sendMessageToProxy(player, MessageType.LOGIN, player.getName()); - plugin.logDebug("LoginEvent | PreSendLoginEvent allowed"); - } + @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true) + public void onSessionRestored(RestoreSessionEvent event) { + final Player player = event.getPlayer(); + plugin.logDebug("RestoreSessionEvent | Start"); + + plugin.getServer().getAsyncScheduler().runDelayed(plugin, task -> { + if (new PreSendLoginEvent(player).callEvent()) { + plugin.sendMessageToProxy(player, MessageType.LOGIN, player.getName()); + plugin.logDebug("RestoreSessionEvent | PreSendLoginEvent allowed"); + } + }, 1, TimeUnit.SECONDS); } @EventHandler diff --git a/paper/src/main/java/io/github/_4drian3d/authmevelocity/paper/listeners/MessageListener.java b/paper/src/main/java/io/github/_4drian3d/authmevelocity/paper/listeners/MessageListener.java index 136eda9..67cac84 100644 --- a/paper/src/main/java/io/github/_4drian3d/authmevelocity/paper/listeners/MessageListener.java +++ b/paper/src/main/java/io/github/_4drian3d/authmevelocity/paper/listeners/MessageListener.java @@ -42,7 +42,6 @@ public final class MessageListener implements PluginMessageListener { final byte @NotNull [] bytes ) { if (identifier.equals("authmevelocity:main")) { - @SuppressWarnings("UnstableApiUsage") final ByteArrayDataInput input = ByteStreams.newDataInput(bytes); final String data = input.readUTF(); diff --git a/paper/src/main/resources/paper-plugin.yml b/paper/src/main/resources/paper-plugin.yml index ffe73ba..885ff79 100644 --- a/paper/src/main/resources/paper-plugin.yml +++ b/paper/src/main/resources/paper-plugin.yml @@ -10,9 +10,10 @@ website: https://modrinth.com/plugin/authmevelocity api-version: '1.19' folia-supported: true dependencies: - - name: MiniPlaceholders - required: false - bootstrap: false - - name: AuthMe - required: true - bootstrap: false + server: + MiniPlaceholders: + required: false + load: BEFORE + AuthMe: + required: true + load: BEFORE diff --git a/paper/src/main/resources/plugin.yml b/paper/src/main/resources/plugin.yml deleted file mode 100644 index 43accc3..0000000 --- a/paper/src/main/resources/plugin.yml +++ /dev/null @@ -1,14 +0,0 @@ -name: AuthMeVelocity -version: "${version}" -main: io.github._4drian3d.authmevelocity.paper.AuthMeVelocityPlugin -description: AuthMeReloaded Support for Velocity -authors: - - xQuickGlare - - 4drian3d -website: https://modrinth.com/plugin/authmevelocity -depend: - - AuthMe -api-version: 1.13 -folia-supported: true -softdepend: - - MiniPlaceholders diff --git a/settings.gradle.kts b/settings.gradle.kts index 9bb5789..84f0210 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -1,3 +1,4 @@ +@file:Suppress("UnstableApiUsage") enableFeaturePreview("TYPESAFE_PROJECT_ACCESSORS") rootProject.name = "authmevelocity-parent" @@ -19,4 +20,24 @@ pluginManagement { gradlePluginPortal() mavenCentral() } -} \ No newline at end of file +} + +dependencyResolutionManagement { + repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS) + repositories { + maven("https://papermc.io/repo/repository/maven-public/") + maven("https://s01.oss.sonatype.org/content/repositories/snapshots/") + maven("https://repo.codemc.org/repository/maven-public/") { + mavenContent { + includeGroup("com.github.games647") + includeGroup("fr.xephi") + } + } + maven("https://repo.alessiodp.com/releases/") { + mavenContent { + includeGroup("net.byteflux") + } + } + maven("https://maven.elytrium.net/repo/") + } +} diff --git a/velocity/build.gradle.kts b/velocity/build.gradle.kts index fa67a4b..9818f65 100644 --- a/velocity/build.gradle.kts +++ b/velocity/build.gradle.kts @@ -4,20 +4,6 @@ plugins { id("authmevelocity.spotless") } -repositories { - maven("https://repo.codemc.org/repository/maven-public/") { - mavenContent { - includeGroup("com.github.games647") - } - } - maven("https://repo.alessiodp.com/releases/") { - mavenContent { - includeGroup("net.byteflux") - } - } - maven("https://maven.elytrium.net/repo/") -} - dependencies { compileOnly(libs.velocity.api) compileOnly(libs.velocity.proxy) @@ -31,7 +17,6 @@ dependencies { implementation(projects.authmevelocityCommon) implementation(projects.authmevelocityApiVelocity) - implementation(libs.libby.velocity) implementation(libs.bstats.velocity) testImplementation(platform("org.junit:junit-bom:5.10.1")) @@ -47,9 +32,6 @@ tasks { archiveClassifier.set("") relocate("org.bstats", "io.github._4drian3d.authmevelocity.libs.bstats") - relocate("net.byteflux.libby", "io.github._4drian3d.authmevelocity.libs.libby") - relocate("org.spongepowered", "io.github._4drian3d.authmevelocity.libs.sponge") - relocate("io.leangen.geantyref", "io.github._4drian3d.authmevelocity.libs.geantyref") } build { dependsOn(shadowJar) diff --git a/velocity/src/main/java/io/github/_4drian3d/authmevelocity/velocity/AuthMeVelocityPlugin.java b/velocity/src/main/java/io/github/_4drian3d/authmevelocity/velocity/AuthMeVelocityPlugin.java index 1f7f2d5..84a4da7 100644 --- a/velocity/src/main/java/io/github/_4drian3d/authmevelocity/velocity/AuthMeVelocityPlugin.java +++ b/velocity/src/main/java/io/github/_4drian3d/authmevelocity/velocity/AuthMeVelocityPlugin.java @@ -19,7 +19,6 @@ package io.github._4drian3d.authmevelocity.velocity; import com.google.inject.Inject; import com.google.inject.Injector; -import com.velocitypowered.api.command.CommandSource; import com.velocitypowered.api.event.Subscribe; import com.velocitypowered.api.event.proxy.ProxyInitializeEvent; import com.velocitypowered.api.plugin.Dependency; @@ -35,7 +34,6 @@ import com.velocitypowered.api.proxy.messages.MinecraftChannelIdentifier; import com.velocitypowered.api.proxy.server.RegisteredServer; import io.github._4drian3d.authmevelocity.api.velocity.AuthMeVelocityAPI; import io.github._4drian3d.authmevelocity.common.Constants; -import io.github._4drian3d.authmevelocity.common.LibsManager; import io.github._4drian3d.authmevelocity.common.configuration.ConfigurationContainer; import io.github._4drian3d.authmevelocity.common.configuration.ProxyConfiguration; import io.github._4drian3d.authmevelocity.velocity.commands.AuthMeCommand; @@ -52,12 +50,10 @@ import io.github._4drian3d.authmevelocity.velocity.listener.input.ChatListener; import io.github._4drian3d.authmevelocity.velocity.listener.input.CommandListener; import io.github._4drian3d.authmevelocity.velocity.listener.input.CompletionPacketListener; import io.github._4drian3d.authmevelocity.velocity.listener.input.TabCompleteListener; -import net.byteflux.libby.VelocityLibraryManager; -import net.kyori.adventure.text.minimessage.MiniMessage; +import net.kyori.adventure.text.logger.slf4j.ComponentLogger; import org.bstats.charts.SimplePie; import org.bstats.velocity.Metrics; import org.jetbrains.annotations.NotNull; -import org.slf4j.Logger; import java.nio.file.Path; import java.util.Set; @@ -67,6 +63,8 @@ import java.util.function.Predicate; import java.util.function.Supplier; import java.util.stream.Stream; +import static net.kyori.adventure.text.minimessage.MiniMessage.miniMessage; + @Plugin( id = "authmevelocity", name = "AuthMeVelocity", @@ -103,7 +101,7 @@ public final class AuthMeVelocityPlugin implements AuthMeVelocityAPI { @Inject private PluginManager pluginManager; @Inject - private Logger logger; + private ComponentLogger logger; @Inject @DataDirectory private Path pluginDirectory; @@ -117,12 +115,6 @@ public final class AuthMeVelocityPlugin implements AuthMeVelocityAPI { @Subscribe public void onProxyInitialization(ProxyInitializeEvent event) { - final LibsManager libraries - = new LibsManager( - new VelocityLibraryManager<>( - logger, pluginDirectory, pluginManager, this)); - libraries.loadLibraries(); - try { this.config = ConfigurationContainer.load(pluginDirectory, ProxyConfiguration.class); } catch (Exception e) { @@ -179,13 +171,10 @@ public final class AuthMeVelocityPlugin implements AuthMeVelocityAPI { } public void sendInfoMessage() { - final CommandSource source = proxy.getConsoleCommandSource(); - source.sendMessage(MiniMessage.miniMessage().deserialize( - " --- AuthMeVelocity ---")); - source.sendMessage(MiniMessage.miniMessage().deserialize( - "AuthServers: " + config.get().authServers())); + logger.info(miniMessage().deserialize(" --- AuthMeVelocity ---")); + logger.info(miniMessage().deserialize("AuthServers: " + config.get().authServers())); if (config.get().sendOnLogin().sendToServerOnLogin()) { - source.sendMessage(MiniMessage.miniMessage().deserialize( + logger.info(miniMessage().deserialize( "LobbyServers: " + config.get().sendOnLogin().teleportServers())); } } diff --git a/velocity/src/main/java/io/github/_4drian3d/authmevelocity/velocity/listener/data/PluginMessageListener.java b/velocity/src/main/java/io/github/_4drian3d/authmevelocity/velocity/listener/data/PluginMessageListener.java index ecbea2f..b28869f 100644 --- a/velocity/src/main/java/io/github/_4drian3d/authmevelocity/velocity/listener/data/PluginMessageListener.java +++ b/velocity/src/main/java/io/github/_4drian3d/authmevelocity/velocity/listener/data/PluginMessageListener.java @@ -57,8 +57,9 @@ public final class PluginMessageListener implements Listener @Override public EventTask executeAsync(final PluginMessageEvent event) { return EventTask.async(() -> { + plugin.logDebug(() -> "PluginMessageEvent | Start"); if (notAllowedEvent(event)) { - plugin.logDebug("PluginMessageEvent | Not allowed"); + plugin.logDebug(() -> "PluginMessageEvent | Not allowed"); return; } @@ -125,7 +126,7 @@ public final class PluginMessageListener implements Listener final var identifier = event.getIdentifier(); if (!(identifier.equals(AuthMeVelocityPlugin.MODERN_CHANNEL) || identifier.equals(AuthMeVelocityPlugin.LEGACY_CHANNEL))) { - plugin.logDebug("PluginMessageEvent | Not AuthMeVelocity Identifier"); + plugin.logDebug(() -> "PluginMessageEvent | Not AuthMeVelocity Identifier: " + identifier.getId()); return true; } return false;