From fec68832ac3eb975be5478848b933cc456d7a7f8 Mon Sep 17 00:00:00 2001 From: Josh Roy <10731363+JRoy@users.noreply.github.com> Date: Wed, 22 Dec 2021 20:04:24 -0500 Subject: [PATCH] Prevent future ABI breakage with paper component flattener --- providers/PaperProvider/build.gradle | 4 ++-- .../PaperAdvancementListenerProvider.java | 21 +++++++++++++++++-- 2 files changed, 21 insertions(+), 4 deletions(-) diff --git a/providers/PaperProvider/build.gradle b/providers/PaperProvider/build.gradle index 9a483358e2f..af8d56f80d3 100644 --- a/providers/PaperProvider/build.gradle +++ b/providers/PaperProvider/build.gradle @@ -8,8 +8,8 @@ java { dependencies { implementation project(':providers:BaseProviders') - compileOnly 'io.papermc.paper:paper-api:1.17.1-R0.1-SNAPSHOT' - compileOnly 'io.papermc.paper:paper-mojangapi:1.17.1-R0.1-SNAPSHOT' + compileOnly 'io.papermc.paper:paper-api:1.18.1-R0.1-SNAPSHOT' + compileOnly 'io.papermc.paper:paper-mojangapi:1.18.1-R0.1-SNAPSHOT' } essentials { diff --git a/providers/PaperProvider/src/main/java/net/ess3/provider/providers/PaperAdvancementListenerProvider.java b/providers/PaperProvider/src/main/java/net/ess3/provider/providers/PaperAdvancementListenerProvider.java index c54811e2e6b..93848016f25 100644 --- a/providers/PaperProvider/src/main/java/net/ess3/provider/providers/PaperAdvancementListenerProvider.java +++ b/providers/PaperProvider/src/main/java/net/ess3/provider/providers/PaperAdvancementListenerProvider.java @@ -1,7 +1,11 @@ package net.ess3.provider.providers; import io.papermc.paper.advancement.AdvancementDisplay; +import io.papermc.paper.text.PaperComponents; import net.ess3.provider.AbstractAchievementEvent; +import net.kyori.adventure.text.Component; +import net.kyori.adventure.text.TextComponent; +import net.kyori.adventure.text.serializer.ComponentSerializer; import org.bukkit.Bukkit; import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; @@ -9,12 +13,25 @@ import org.bukkit.event.player.PlayerAdvancementDoneEvent; public class PaperAdvancementListenerProvider implements Listener { + private final ComponentSerializer serializer; + + public PaperAdvancementListenerProvider() { + ComponentSerializer yeOldSerializer; + try { + // This method is only available in Paper 1.18.1+ and replaces the old deprecated method below. + yeOldSerializer = PaperComponents.plainTextSerializer(); + } catch (NoSuchMethodError e) { + //noinspection deprecation + yeOldSerializer = PaperComponents.plainSerializer(); + } + this.serializer = yeOldSerializer; + } + @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true) public void onAdvancement(final PlayerAdvancementDoneEvent event) { final AdvancementDisplay display = event.getAdvancement().getDisplay(); if (display != null && display.doesAnnounceToChat()) { - //noinspection deprecation - Bukkit.getPluginManager().callEvent(new AbstractAchievementEvent(event.getPlayer(), Bukkit.getUnsafe().plainComponentSerializer().serialize(display.title()))); + Bukkit.getPluginManager().callEvent(new AbstractAchievementEvent(event.getPlayer(), serializer.serialize(display.title()))); } } }