|
1 | 1 | package net.ess3.provider.providers; |
2 | 2 |
|
3 | 3 | import io.papermc.paper.advancement.AdvancementDisplay; |
| 4 | +import io.papermc.paper.text.PaperComponents; |
4 | 5 | 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; |
5 | 9 | import org.bukkit.Bukkit; |
6 | 10 | import org.bukkit.event.EventHandler; |
7 | 11 | import org.bukkit.event.EventPriority; |
8 | 12 | import org.bukkit.event.Listener; |
9 | 13 | import org.bukkit.event.player.PlayerAdvancementDoneEvent; |
10 | 14 |
|
11 | 15 | 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 | + |
12 | 30 | @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true) |
13 | 31 | public void onAdvancement(final PlayerAdvancementDoneEvent event) { |
14 | 32 | final AdvancementDisplay display = event.getAdvancement().getDisplay(); |
15 | 33 | 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()))); |
18 | 35 | } |
19 | 36 | } |
20 | 37 | } |
0 commit comments