Skip to content

Commit 6850842

Browse files
authored
Use futureproof Paper component serializer when available (#4706)
#plainSerializer will be removed when adventure 5.0.0 releases. This PR prevents this from breaking in the future. Closes #4705
1 parent c4e62ae commit 6850842

File tree

2 files changed

+21
-4
lines changed

2 files changed

+21
-4
lines changed

providers/PaperProvider/build.gradle

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,8 @@ java {
88

99
dependencies {
1010
implementation project(':providers:BaseProviders')
11-
compileOnly 'io.papermc.paper:paper-api:1.17.1-R0.1-SNAPSHOT'
12-
compileOnly 'io.papermc.paper:paper-mojangapi:1.17.1-R0.1-SNAPSHOT'
11+
compileOnly 'io.papermc.paper:paper-api:1.18.1-R0.1-SNAPSHOT'
12+
compileOnly 'io.papermc.paper:paper-mojangapi:1.18.1-R0.1-SNAPSHOT'
1313
}
1414

1515
essentials {
Lines changed: 19 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,37 @@
11
package net.ess3.provider.providers;
22

33
import io.papermc.paper.advancement.AdvancementDisplay;
4+
import io.papermc.paper.text.PaperComponents;
45
import net.ess3.provider.AbstractAchievementEvent;
6+
import net.kyori.adventure.text.Component;
7+
import net.kyori.adventure.text.TextComponent;
8+
import net.kyori.adventure.text.serializer.ComponentSerializer;
59
import org.bukkit.Bukkit;
610
import org.bukkit.event.EventHandler;
711
import org.bukkit.event.EventPriority;
812
import org.bukkit.event.Listener;
913
import org.bukkit.event.player.PlayerAdvancementDoneEvent;
1014

1115
public class PaperAdvancementListenerProvider implements Listener {
16+
private final ComponentSerializer<Component, TextComponent, String> serializer;
17+
18+
public PaperAdvancementListenerProvider() {
19+
ComponentSerializer<Component, TextComponent, String> yeOldSerializer;
20+
try {
21+
// This method is only available in Paper 1.18.1+ and replaces the old deprecated method below.
22+
yeOldSerializer = PaperComponents.plainTextSerializer();
23+
} catch (NoSuchMethodError e) {
24+
//noinspection deprecation
25+
yeOldSerializer = PaperComponents.plainSerializer();
26+
}
27+
this.serializer = yeOldSerializer;
28+
}
29+
1230
@EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true)
1331
public void onAdvancement(final PlayerAdvancementDoneEvent event) {
1432
final AdvancementDisplay display = event.getAdvancement().getDisplay();
1533
if (display != null && display.doesAnnounceToChat()) {
16-
//noinspection deprecation
17-
Bukkit.getPluginManager().callEvent(new AbstractAchievementEvent(event.getPlayer(), Bukkit.getUnsafe().plainComponentSerializer().serialize(display.title())));
34+
Bukkit.getPluginManager().callEvent(new AbstractAchievementEvent(event.getPlayer(), serializer.serialize(display.title())));
1835
}
1936
}
2037
}

0 commit comments

Comments
 (0)