diff --git a/build.gradle b/build.gradle index 6b162465..5cdf5b0f 100644 --- a/build.gradle +++ b/build.gradle @@ -34,7 +34,7 @@ allprojects { // bStats, mcMMO, BentoBox maven { url 'https://repo.codemc.org/repository/maven-public/' } - // Spigot API + // Spigot API, Bungee API maven { url 'https://hub.spigotmc.org/nexus/content/repositories/snapshots/' } // PlaceholderAPI @@ -57,6 +57,9 @@ allprojects { // IridiumSkyblock maven { url 'https://nexus.iridiumdevelopment.net/repository/maven-releases/' } + + // Velocity + maven { url 'https://repo.velocitypowered.com/snapshots/' } } dependencies { diff --git a/eco-api/src/main/java/com/willfp/eco/core/Prerequisite.java b/eco-api/src/main/java/com/willfp/eco/core/Prerequisite.java index 2cb228bb..a9e0fdd4 100644 --- a/eco-api/src/main/java/com/willfp/eco/core/Prerequisite.java +++ b/eco-api/src/main/java/com/willfp/eco/core/Prerequisite.java @@ -58,6 +58,14 @@ public class Prerequisite { "Requires server to be running BungeeCord (or a fork)" ); + /** + * Requires the server to be running an implementation of Velocity. + */ + public static final Prerequisite HAS_VELOCITY = new Prerequisite( + () -> ClassUtils.exists("com.velocitypowered.api.event.player.ServerConnectedEvent"), + "Requires server to be running Velocity (or a fork)" + ); + /** * If the necessary prerequisite condition has been met. */ diff --git a/eco-core/core-plugin/build.gradle b/eco-core/core-plugin/build.gradle index 753b0a26..ec46754c 100644 --- a/eco-core/core-plugin/build.gradle +++ b/eco-core/core-plugin/build.gradle @@ -42,6 +42,7 @@ dependencies { compileOnly 'com.google.guava:guava:31.0.1-jre' compileOnly 'com.iridium:IridiumSkyblock:3.1.2' compileOnly 'net.md-5:bungeecord-api:1.16-R0.5-SNAPSHOT' + compileOnly 'com.velocitypowered:velocity-api:3.0.0-SNAPSHOT' // CombatLogX V10 + NewbieHelper Expansion compileOnly 'com.SirBlobman.combatlogx:CombatLogX-API:10.0.0.0-SNAPSHOT' diff --git a/eco-core/core-plugin/src/main/kotlin/com/willfp/eco/spigot/EcoSpigotPlugin.kt b/eco-core/core-plugin/src/main/kotlin/com/willfp/eco/spigot/EcoSpigotPlugin.kt index 3919afe2..6a5436ef 100644 --- a/eco-core/core-plugin/src/main/kotlin/com/willfp/eco/spigot/EcoSpigotPlugin.kt +++ b/eco-core/core-plugin/src/main/kotlin/com/willfp/eco/spigot/EcoSpigotPlugin.kt @@ -24,10 +24,7 @@ import com.willfp.eco.proxy.FastItemStackFactoryProxy import com.willfp.eco.proxy.SkullProxy import com.willfp.eco.proxy.TPSProxy import com.willfp.eco.spigot.arrows.ArrowDataListener -import com.willfp.eco.spigot.data.BungeeDataListener -import com.willfp.eco.spigot.data.DataListener -import com.willfp.eco.spigot.data.EcoPlayerProfileHandler -import com.willfp.eco.spigot.data.PlayerBlockListener +import com.willfp.eco.spigot.data.* import com.willfp.eco.spigot.data.storage.DataHandler import com.willfp.eco.spigot.data.storage.MySQLDataHandler import com.willfp.eco.spigot.data.storage.YamlDataHandler @@ -253,6 +250,10 @@ abstract class EcoSpigotPlugin : EcoPlugin( listeners.add(BungeeDataListener()) } + if (Prerequisite.HAS_VELOCITY.isMet) { + listeners.add(VelocityDataListener()) + } + return listeners } } \ No newline at end of file diff --git a/eco-core/core-plugin/src/main/kotlin/com/willfp/eco/spigot/data/BungeeDataListener.kt b/eco-core/core-plugin/src/main/kotlin/com/willfp/eco/spigot/data/BungeeDataListener.kt new file mode 100644 index 00000000..80dd751c --- /dev/null +++ b/eco-core/core-plugin/src/main/kotlin/com/willfp/eco/spigot/data/BungeeDataListener.kt @@ -0,0 +1,25 @@ +package com.willfp.eco.spigot.data + +import com.willfp.eco.core.Eco +import net.md_5.bungee.api.event.ServerConnectedEvent +import net.md_5.bungee.api.event.ServerDisconnectEvent +import net.md_5.bungee.api.event.ServerSwitchEvent +import org.bukkit.event.EventHandler +import org.bukkit.event.Listener + +class BungeeDataListener : Listener { + @EventHandler + fun onConnected(event: ServerConnectedEvent) { + (Eco.getHandler().playerProfileHandler as EcoPlayerProfileHandler).unloadPlayer(event.player.uniqueId) + } + + @EventHandler + fun onDisconnect(event: ServerDisconnectEvent) { + (Eco.getHandler().playerProfileHandler as EcoPlayerProfileHandler).unloadPlayer(event.player.uniqueId) + } + + @EventHandler + fun onSwitch(event: ServerSwitchEvent) { + (Eco.getHandler().playerProfileHandler as EcoPlayerProfileHandler).unloadPlayer(event.player.uniqueId) + } +} diff --git a/eco-core/core-plugin/src/main/kotlin/com/willfp/eco/spigot/data/DataListener.kt b/eco-core/core-plugin/src/main/kotlin/com/willfp/eco/spigot/data/DataListener.kt index bacf5578..685d8e86 100644 --- a/eco-core/core-plugin/src/main/kotlin/com/willfp/eco/spigot/data/DataListener.kt +++ b/eco-core/core-plugin/src/main/kotlin/com/willfp/eco/spigot/data/DataListener.kt @@ -2,9 +2,6 @@ package com.willfp.eco.spigot.data import com.willfp.eco.core.Eco import com.willfp.eco.util.PlayerUtils -import net.md_5.bungee.api.event.ServerConnectedEvent -import net.md_5.bungee.api.event.ServerDisconnectEvent -import net.md_5.bungee.api.event.ServerSwitchEvent import org.bukkit.event.EventHandler import org.bukkit.event.Listener import org.bukkit.event.player.PlayerJoinEvent @@ -23,20 +20,3 @@ class DataListener : Listener { PlayerUtils.updateSavedDisplayName(event.player) } } - -class BungeeDataListener : Listener { - @EventHandler - fun onConnected(event: ServerConnectedEvent) { - (Eco.getHandler().playerProfileHandler as EcoPlayerProfileHandler).unloadPlayer(event.player.uniqueId) - } - - @EventHandler - fun onDisconnect(event: ServerDisconnectEvent) { - (Eco.getHandler().playerProfileHandler as EcoPlayerProfileHandler).unloadPlayer(event.player.uniqueId) - } - - @EventHandler - fun onSwitch(event: ServerSwitchEvent) { - (Eco.getHandler().playerProfileHandler as EcoPlayerProfileHandler).unloadPlayer(event.player.uniqueId) - } -} \ No newline at end of file diff --git a/eco-core/core-plugin/src/main/kotlin/com/willfp/eco/spigot/data/VelocityDataListener.kt b/eco-core/core-plugin/src/main/kotlin/com/willfp/eco/spigot/data/VelocityDataListener.kt new file mode 100644 index 00000000..db69f171 --- /dev/null +++ b/eco-core/core-plugin/src/main/kotlin/com/willfp/eco/spigot/data/VelocityDataListener.kt @@ -0,0 +1,19 @@ +package com.willfp.eco.spigot.data + +import com.velocitypowered.api.event.connection.DisconnectEvent +import com.velocitypowered.api.event.player.ServerConnectedEvent +import com.willfp.eco.core.Eco +import org.bukkit.event.EventHandler +import org.bukkit.event.Listener + +class VelocityDataListener : Listener { + @EventHandler + fun onConnected(event: ServerConnectedEvent) { + (Eco.getHandler().playerProfileHandler as EcoPlayerProfileHandler).unloadPlayer(event.player.uniqueId) + } + + @EventHandler + fun onDisconnect(event: DisconnectEvent) { + (Eco.getHandler().playerProfileHandler as EcoPlayerProfileHandler).unloadPlayer(event.player.uniqueId) + } +}