Skip to content

Commit e4c411e

Browse files
committed
sponge: Fix mappings resource conflict when loading multiple packetevents plugins.
sponge/paper: bump packetevents.
1 parent 1be30b4 commit e4c411e

3 files changed

Lines changed: 17 additions & 3 deletions

File tree

paper/build.gradle.kts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ dependencies {
5858
exclude("com.convallyria.languagy.libs")
5959
}
6060
implementation("org.bstats:bstats-bukkit:3.0.2")
61-
implementation("com.github.retrooper:packetevents-spigot:2.12.2+22c9961-SNAPSHOT")
61+
implementation("com.github.retrooper:packetevents-spigot:2.12.2+24443d4-SNAPSHOT")
6262
}
6363

6464
tasks {

sponge/build.gradle.kts

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ val adventureApiNbt by configurations.creating
6969
dependencies {
7070
implementation(project(":api"))
7171
implementation(project(":webserver", "shadow"))
72-
implementation("com.github.retrooper:packetevents-sponge:2.12.2+22c9961-SNAPSHOT")
72+
implementation("com.github.retrooper:packetevents-sponge:2.12.2+24443d4-SNAPSHOT")
7373
implementation("org.bstats:bstats-sponge:3.0.2")
7474
implementation("org.incendo:cloud-sponge:2.0.0-SNAPSHOT") {
7575
exclude("org.checkerframework")
@@ -103,6 +103,18 @@ tasks {
103103
relocate("org.bstats", "forcepack.libs.bstats")
104104
relocate("net.kyori.adventure.nbt", "forcepack.libs.adventure.nbt")
105105
relocate("net.kyori.examination", "forcepack.libs.adventure.ex")
106+
107+
// packetevents classes are already relocated by buildlogic.java-common-conventions
108+
// (com.github.retrooper.packetevents -> forcepack.libs.pe.api, io.github.retrooper.packetevents -> forcepack.libs.pe.impl).
109+
// Rename the bundled mapping assets so a standalone packetevents install can't
110+
// accidentally load our (potentially older) copy via the classloader, and vice
111+
// versa. The matching customResourceProvider in ForcePackSponge translates
112+
// lookups back to this renamed path.
113+
eachFile {
114+
if (path.startsWith("assets/mappings/")) {
115+
path = "assets/forcepack-sponge-packetevents/mappings/" + path.removePrefix("assets/mappings/")
116+
}
117+
}
106118
}
107119
}
108120

sponge/src/main/java/com/convallyria/forcepack/sponge/ForcePackSponge.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -119,7 +119,9 @@ public void onServerStarting(final StartingEngineEvent<Server> event) {
119119
registerTranslations();
120120

121121
PacketEvents.setAPI(SpongePacketEventsBuilder.build(pluginContainer));
122-
PacketEvents.getAPI().getSettings().debug(debug()).reEncodeByDefault(false).checkForUpdates(false);
122+
PacketEvents.getAPI().getSettings().debug(debug()).reEncodeByDefault(false).checkForUpdates(false)
123+
.customResourceProvider(name -> ForcePackSponge.class.getClassLoader().getResourceAsStream(
124+
name.replaceFirst("^assets/mappings/", "assets/forcepack-sponge-packetevents/mappings/")));
123125
PacketEvents.getAPI().load();
124126

125127
GeyserUtil.isGeyserInstalledHere = Sponge.pluginManager().plugin("geyser-sponge").isPresent();

0 commit comments

Comments
 (0)