From 97140695764978ade2680871a2a752c772692ee6 Mon Sep 17 00:00:00 2001 From: joealjohn Date: Tue, 18 Aug 2026 22:35:10 +0530 Subject: [PATCH] fix: update deps and fix version bounds for 1.21.5+ / 26.1.2 support Bump PacketEvents 2.12.2 -> 2.13.0 for full Minecraft 26.1.2 protocol support. Bump XSeries 13.7.0 -> 13.7.1 for latest material/entity mappings. Fix TridentDupe: remove erroneous V_1_21_4 upper version ceiling. The trident inventory-click dupe was never patched server-side, so the module should protect all 1.13+ servers, not just up to 1.21.4. Fix BookTitleDupe: correct inverted version logic (!isOlderThan -> isOlderThan). The original condition was backwards, causing the module to activate on 1.21.2+ (where the exploit is irrelevant) instead of 1.20.6-1.21.1 (where the exploit actually exists). The module was effectively broken. Also removed dead modernLimits code since the module never runs on 1.21.2+. --- .../aef/modules/dupepreventions/BookTitleDupe.java | 12 ++++++------ .../aef/modules/dupepreventions/TridentDupe.java | 4 ++-- .../aef/modules/dupepreventions/BookTitleDupe.java | 12 ++++++------ .../aef/modules/dupepreventions/TridentDupe.java | 5 ++--- .../src/main/kotlin/me.xginko.aef.wrapper.gradle.kts | 4 ++-- 5 files changed, 18 insertions(+), 19 deletions(-) diff --git a/AnarchyExploitFixesFolia/src/main/java/me/xginko/aef/modules/dupepreventions/BookTitleDupe.java b/AnarchyExploitFixesFolia/src/main/java/me/xginko/aef/modules/dupepreventions/BookTitleDupe.java index 7a116fb8..fdf1ffe5 100755 --- a/AnarchyExploitFixesFolia/src/main/java/me/xginko/aef/modules/dupepreventions/BookTitleDupe.java +++ b/AnarchyExploitFixesFolia/src/main/java/me/xginko/aef/modules/dupepreventions/BookTitleDupe.java @@ -25,15 +25,15 @@ public class BookTitleDupe extends PacketModule { public BookTitleDupe() { super("dupe-preventions.book-title-dupe", Platform.getServerVersion().isNewerThanOrEquals(ServerVersion.V_1_20_6) - && !Platform.getServerVersion().isOlderThan(ServerVersion.V_1_21_2), + && Platform.getServerVersion().isOlderThan(ServerVersion.V_1_21_2), PacketListenerPriority.HIGHEST,""" - Relevant for 1.20.6 - 1.21: + Relevant for 1.20.6 - 1.21.1: Will prevent players from sending book packets with a too large title, to get disconnected and their inventories restored."""); - boolean modernLimits = Platform.getServerVersion().isNewerThanOrEquals(ServerVersion.V_1_21_2); - this.titleLimit = config.getInt(configPath + ".max-title-charlength", modernLimits ? 15 : 120); - this.pageLimit = config.getInt(configPath + ".max-pages", modernLimits ? 90 : 190); - this.pageCharLimit = config.getInt(configPath + ".max-page-charlength", modernLimits ? 1000 : 8100); + // This module only runs on 1.20.6-1.21.1, so modern limits are not relevant here. + this.titleLimit = config.getInt(configPath + ".max-title-charlength", 120); + this.pageLimit = config.getInt(configPath + ".max-pages", 190); + this.pageCharLimit = config.getInt(configPath + ".max-page-charlength", 8100); this.cooldownMillis = config.getLong(configPath + ".spam-cooldown-millis", 1000); this.log = config.getBoolean(configPath + ".log", false); this.kick = config.getBoolean(configPath + ".kick-player", false); diff --git a/AnarchyExploitFixesFolia/src/main/java/me/xginko/aef/modules/dupepreventions/TridentDupe.java b/AnarchyExploitFixesFolia/src/main/java/me/xginko/aef/modules/dupepreventions/TridentDupe.java index 7b21f3ac..a2950349 100755 --- a/AnarchyExploitFixesFolia/src/main/java/me/xginko/aef/modules/dupepreventions/TridentDupe.java +++ b/AnarchyExploitFixesFolia/src/main/java/me/xginko/aef/modules/dupepreventions/TridentDupe.java @@ -23,8 +23,8 @@ public class TridentDupe extends AEFModule implements Listener { public TridentDupe() { super("dupe-preventions.trident-dupe", - Platform.getServerVersion().isOlderThanOrEquals(ServerVersion.V_1_21_4), """ - Prevents trident dupe from working in 1.13 - 1.21.4 + true, """ + Prevents trident dupe from working in 1.13+. This dupe was originally found by Autism inc and turned into a mod by Killet, Laztec, and Ionar."""); this.dupePreventedMaterial = config.getList(configPath + ".materials", diff --git a/AnarchyExploitFixesLegacy/src/main/java/me/xginko/aef/modules/dupepreventions/BookTitleDupe.java b/AnarchyExploitFixesLegacy/src/main/java/me/xginko/aef/modules/dupepreventions/BookTitleDupe.java index d778238c..5f0e0892 100755 --- a/AnarchyExploitFixesLegacy/src/main/java/me/xginko/aef/modules/dupepreventions/BookTitleDupe.java +++ b/AnarchyExploitFixesLegacy/src/main/java/me/xginko/aef/modules/dupepreventions/BookTitleDupe.java @@ -25,15 +25,15 @@ public class BookTitleDupe extends PacketModule { public BookTitleDupe() { super("dupe-preventions.book-title-dupe", Platform.getServerVersion().isNewerThanOrEquals(ServerVersion.V_1_20_6) - && !Platform.getServerVersion().isOlderThan(ServerVersion.V_1_21_2), + && Platform.getServerVersion().isOlderThan(ServerVersion.V_1_21_2), PacketListenerPriority.HIGHEST, - "Relevant for 1.20.6 - 1.21:\n" + + "Relevant for 1.20.6 - 1.21.1:\n" + "Will prevent players from sending book packets with a too large title,\n" + "to get disconnected and their inventories restored."); - boolean modernLimits = Platform.getServerVersion().isNewerThanOrEquals(ServerVersion.V_1_21_2); - this.titleLimit = config.getInt(configPath + ".max-title-charlength", modernLimits ? 15 : 120); - this.pageLimit = config.getInt(configPath + ".max-pages", modernLimits ? 90 : 190); - this.pageCharLimit = config.getInt(configPath + ".max-page-charlength", modernLimits ? 1000 : 8100); + // This module only runs on 1.20.6-1.21.1, so modern limits are not relevant here. + this.titleLimit = config.getInt(configPath + ".max-title-charlength", 120); + this.pageLimit = config.getInt(configPath + ".max-pages", 190); + this.pageCharLimit = config.getInt(configPath + ".max-page-charlength", 8100); this.cooldownMillis = config.getLong(configPath + ".spam-cooldown-millis", 1000); this.log = config.getBoolean(configPath + ".log", false); this.kick = config.getBoolean(configPath + ".kick-player", false); diff --git a/AnarchyExploitFixesLegacy/src/main/java/me/xginko/aef/modules/dupepreventions/TridentDupe.java b/AnarchyExploitFixesLegacy/src/main/java/me/xginko/aef/modules/dupepreventions/TridentDupe.java index bbdecbc9..ddc7a4e1 100755 --- a/AnarchyExploitFixesLegacy/src/main/java/me/xginko/aef/modules/dupepreventions/TridentDupe.java +++ b/AnarchyExploitFixesLegacy/src/main/java/me/xginko/aef/modules/dupepreventions/TridentDupe.java @@ -23,9 +23,8 @@ public class TridentDupe extends AEFModule implements Listener { public TridentDupe() { super("dupe-preventions.trident-dupe", - Platform.getServerVersion().isOlderThanOrEquals(ServerVersion.V_1_21_4) - && Platform.getServerVersion().isNewerThan(ServerVersion.V_1_12_2), - "Prevents trident dupe from working in 1.13 - 1.21.4\n"+ + Platform.getServerVersion().isNewerThan(ServerVersion.V_1_12_2), + "Prevents trident dupe from working in 1.13+.\n"+ "This dupe was originally found by Autism inc and turned into\n"+ "a mod by Killet, Laztec, and Ionar."); this.dupePreventedMaterial = config.getList(configPath + ".materials", diff --git a/build-logic/src/main/kotlin/me.xginko.aef.wrapper.gradle.kts b/build-logic/src/main/kotlin/me.xginko.aef.wrapper.gradle.kts index d810e180..a474dcc2 100755 --- a/build-logic/src/main/kotlin/me.xginko.aef.wrapper.gradle.kts +++ b/build-logic/src/main/kotlin/me.xginko.aef.wrapper.gradle.kts @@ -49,11 +49,11 @@ repositories { dependencies { compileOnly("org.apache.logging.log4j:log4j-core:2.23.1") // Better logger - compileOnly("com.github.retrooper:packetevents-spigot:2.12.2") // Cross version packet handling + compileOnly("com.github.retrooper:packetevents-spigot:2.13.0") // Cross version packet handling compileOnly("de.tr7zw:item-nbt-api-plugin:2.15.7") // Cross version nbt handling compileOnly("com.mojang:brigadier:1.0.18") // Used in command unregister hack api("com.github.thatsmusic99:ConfigurationMaster-API:v2.0.0-rc.3") // Enhanced config management - api("com.github.cryptomorin:XSeries:13.7.0") // Crossversion Entity, material, potion, item, etc. handling + api("com.github.cryptomorin:XSeries:13.7.1") // Crossversion Entity, material, potion, item, etc. handling api("org.bstats:bstats-bukkit:3.0.2") // Bukkit bStats api("org.reflections:reflections:0.10.2") // Good reflections }