diff --git a/build.gradle b/build.gradle index 82a694e..96a4fd5 100644 --- a/build.gradle +++ b/build.gradle @@ -8,7 +8,7 @@ plugins { group = 'dev.colbster937' -version = '1.0.2' +version = '1.0.3' description = 'A reimplementation of OriginBlacklist for EaglerXServer' def targetJavaVersion = 17 diff --git a/src/main/java/dev/colbster937/originblacklist/base/Base.java b/src/main/java/dev/colbster937/originblacklist/base/Base.java index 17a4ce7..a787acb 100644 --- a/src/main/java/dev/colbster937/originblacklist/base/Base.java +++ b/src/main/java/dev/colbster937/originblacklist/base/Base.java @@ -4,7 +4,7 @@ import net.kyori.adventure.text.Component; import net.kyori.adventure.text.minimessage.MiniMessage; import net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer; import net.lax1dude.eaglercraft.backend.server.api.*; -import net.lax1dude.eaglercraft.backend.server.api.event.IEaglercraftLoginEvent; +import net.lax1dude.eaglercraft.backend.server.api.event.IEaglercraftClientBrandEvent; import net.lax1dude.eaglercraft.backend.server.api.event.IEaglercraftMOTDEvent; import net.lax1dude.eaglercraft.backend.server.api.query.IMOTDConnection; @@ -34,6 +34,20 @@ public class Base { api = api1; } + public static String apiVer = "1.0.2"; + + public static boolean checkVer(String v1, String v2) { + String[] c = v1.split("\\."); + String[] r = v2.split("\\."); + for (int i = 0; i < Math.max(c.length, r.length); i++) { + int c1 = i < c.length ? Integer.parseInt(c[i]) : 0; + int r1 = i < r.length ? Integer.parseInt(r[i]) : 0; + if (c1 < r1) return false; + if (c1 > r1) return true; + } + return true; + } + public static LoggerAdapter getLogger() { if (adapter == null) throw new IllegalStateException("Logger not initialized!"); return adapter; @@ -45,8 +59,8 @@ public class Base { void error(String msg); } - public static void handleConnection(IEaglercraftLoginEvent e) { - IEaglerLoginConnection conn = e.getLoginConnection(); + public static void handleConnection(IEaglercraftClientBrandEvent e) { + IEaglerPendingConnection conn = e.getPendingConnection(); String origin = conn.getWebSocketHeader(EnumWebSocketHeader.HEADER_ORIGIN); String brand = conn.getEaglerBrandString(); if ((origin != "null" || origin != null) && !config.blacklist.missing_origin) { diff --git a/src/main/java/dev/colbster937/originblacklist/bukkit/OriginBlacklistBukkit.java b/src/main/java/dev/colbster937/originblacklist/bukkit/OriginBlacklistBukkit.java index ec2f94e..804dc73 100644 --- a/src/main/java/dev/colbster937/originblacklist/bukkit/OriginBlacklistBukkit.java +++ b/src/main/java/dev/colbster937/originblacklist/bukkit/OriginBlacklistBukkit.java @@ -2,16 +2,29 @@ package dev.colbster937.originblacklist.bukkit; import dev.colbster937.originblacklist.base.Base; import net.lax1dude.eaglercraft.backend.server.api.bukkit.EaglerXServerAPI; -import net.lax1dude.eaglercraft.backend.server.api.bukkit.event.EaglercraftLoginEvent; +import net.lax1dude.eaglercraft.backend.server.api.bukkit.event.EaglercraftClientBrandEvent; import net.lax1dude.eaglercraft.backend.server.api.bukkit.event.EaglercraftMOTDEvent; import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; import org.bukkit.plugin.java.JavaPlugin; +import org.bukkit.plugin.Plugin; public class OriginBlacklistBukkit extends JavaPlugin implements Listener { @Override public void onEnable() { + Plugin plugin = getServer().getPluginManager().getPlugin("eaglerxserver"); + if (plugin != null) { + String version = plugin.getDescription().getVersion(); + if (!Base.checkVer(version, Base.apiVer)) { + getLogger().severe("EaglerXServer " + Base.apiVer + " is required!"); + throw new RuntimeException("Incompatible API version"); + } + } else { + throw new RuntimeException("Missing EaglerXServer"); + } + + Base.setLogger(new Base.LoggerAdapter() { @Override public void info(String msg) { getLogger().info(msg); } @Override public void warn(String msg) { getLogger().warning(msg); } @@ -29,7 +42,7 @@ public class OriginBlacklistBukkit extends JavaPlugin implements Listener { } @EventHandler - public void onLogin(EaglercraftLoginEvent event) { + public void onLogin(EaglercraftClientBrandEvent event) { Base.handleConnection(event); } diff --git a/src/main/java/dev/colbster937/originblacklist/bungee/OriginBlacklistBungee.java b/src/main/java/dev/colbster937/originblacklist/bungee/OriginBlacklistBungee.java index c7d0fa3..a5286c0 100644 --- a/src/main/java/dev/colbster937/originblacklist/bungee/OriginBlacklistBungee.java +++ b/src/main/java/dev/colbster937/originblacklist/bungee/OriginBlacklistBungee.java @@ -2,7 +2,7 @@ package dev.colbster937.originblacklist.bungee; import dev.colbster937.originblacklist.base.Base; import net.lax1dude.eaglercraft.backend.server.api.bungee.EaglerXServerAPI; -import net.lax1dude.eaglercraft.backend.server.api.bungee.event.EaglercraftLoginEvent; +import net.lax1dude.eaglercraft.backend.server.api.bungee.event.EaglercraftClientBrandEvent; import net.lax1dude.eaglercraft.backend.server.api.bungee.event.EaglercraftMOTDEvent; import net.md_5.bungee.api.plugin.Plugin; import net.md_5.bungee.api.plugin.Listener; @@ -12,6 +12,18 @@ public class OriginBlacklistBungee extends Plugin implements Listener { @Override public void onEnable() { + Plugin plugin = getProxy().getPluginManager().getPlugin("eaglerxserver"); + if (plugin != null) { + String version = plugin.getDescription().getVersion(); + if (!Base.checkVer(version, Base.apiVer)) { + getLogger().severe("EaglerXServer " + Base.apiVer + " is required!"); + throw new RuntimeException("Incompatible API version"); + } + } else { + throw new RuntimeException("Missing EaglerXServer"); + } + + Base.setLogger(new Base.LoggerAdapter() { @Override public void info(String msg) { getLogger().info(msg); } @Override public void warn(String msg) { getLogger().warning(msg); } @@ -29,7 +41,7 @@ public class OriginBlacklistBungee extends Plugin implements Listener { } @EventHandler - public void onLogin(EaglercraftLoginEvent event) { + public void onLogin(EaglercraftClientBrandEvent event) { Base.handleConnection(event); } diff --git a/src/main/java/dev/colbster937/originblacklist/velocity/OriginBlacklistVelocity.java b/src/main/java/dev/colbster937/originblacklist/velocity/OriginBlacklistVelocity.java index c70466d..2019582 100644 --- a/src/main/java/dev/colbster937/originblacklist/velocity/OriginBlacklistVelocity.java +++ b/src/main/java/dev/colbster937/originblacklist/velocity/OriginBlacklistVelocity.java @@ -6,7 +6,7 @@ import com.velocitypowered.api.event.Subscribe; import com.velocitypowered.api.proxy.ProxyServer; import dev.colbster937.originblacklist.base.Base; import net.lax1dude.eaglercraft.backend.server.api.velocity.EaglerXServerAPI; -import net.lax1dude.eaglercraft.backend.server.api.velocity.event.EaglercraftLoginEvent; +import net.lax1dude.eaglercraft.backend.server.api.velocity.event.EaglercraftClientBrandEvent; import net.lax1dude.eaglercraft.backend.server.api.velocity.event.EaglercraftMOTDEvent; import org.slf4j.Logger; @@ -28,6 +28,14 @@ public class OriginBlacklistVelocity { @Subscribe public void onProxyInitialization(ProxyInitializeEvent event) { + proxy.getPluginManager().getPlugin("eaglerxserver").ifPresentOrElse(plugin -> { + if (!Base.checkVer(plugin.getDescription().getVersion().orElse("1.0.0"), Base.apiVer)) { + logger.error("EaglerXServer " + Base.apiVer + " is required!"); + throw new RuntimeException("Incompatible api version"); + } + }, () -> { + throw new RuntimeException("Missing EaglerXServer"); + }); Base.setApi(EaglerXServerAPI.instance()); Base.reloadConfig(); Base.init(); @@ -36,7 +44,7 @@ public class OriginBlacklistVelocity { } @Subscribe - public void onLogin(EaglercraftLoginEvent event) { + public void onLogin(EaglercraftClientBrandEvent event) { Base.handleConnection(event); }