From 0e3eeaeac36360d4be9548e70f1f68c6baae55c8 Mon Sep 17 00:00:00 2001 From: Business Goose Date: Wed, 4 May 2022 17:40:58 +0100 Subject: [PATCH] Allow books and signs to use SafeMiniMessage --- .../dev/plex/listener/impl/BookListener.java | 30 +++++++++++++++++++ .../dev/plex/listener/impl/SignListener.java | 20 +++++++++++++ 2 files changed, 50 insertions(+) create mode 100644 server/src/main/java/dev/plex/listener/impl/BookListener.java create mode 100644 server/src/main/java/dev/plex/listener/impl/SignListener.java diff --git a/server/src/main/java/dev/plex/listener/impl/BookListener.java b/server/src/main/java/dev/plex/listener/impl/BookListener.java new file mode 100644 index 0000000..701f628 --- /dev/null +++ b/server/src/main/java/dev/plex/listener/impl/BookListener.java @@ -0,0 +1,30 @@ +package dev.plex.listener.impl; + +import dev.plex.listener.PlexListener; +import dev.plex.util.PlexUtils; +import dev.plex.util.minimessage.SafeMiniMessage; +import java.util.ArrayList; +import java.util.List; +import net.kyori.adventure.inventory.Book; +import net.kyori.adventure.text.Component; +import org.bukkit.event.EventHandler; +import org.bukkit.event.EventPriority; +import org.bukkit.event.player.PlayerEditBookEvent; +import org.bukkit.inventory.meta.BookMeta; + +public class BookListener extends PlexListener +{ + @EventHandler(priority = EventPriority.HIGHEST) + public void onBookEdit(PlayerEditBookEvent event) + { + List pages = new ArrayList<>(); + + for (Component page : event.getNewBookMeta().pages()) + { + pages.add(SafeMiniMessage.mmDeserialize(PlexUtils.getTextFromComponent(page))); + } + + + event.setNewBookMeta((BookMeta)event.getNewBookMeta().pages(pages)); + } +} diff --git a/server/src/main/java/dev/plex/listener/impl/SignListener.java b/server/src/main/java/dev/plex/listener/impl/SignListener.java new file mode 100644 index 0000000..ce4b613 --- /dev/null +++ b/server/src/main/java/dev/plex/listener/impl/SignListener.java @@ -0,0 +1,20 @@ +package dev.plex.listener.impl; + +import dev.plex.listener.PlexListener; +import dev.plex.util.PlexUtils; +import dev.plex.util.minimessage.SafeMiniMessage; +import org.bukkit.event.EventHandler; +import org.bukkit.event.EventPriority; +import org.bukkit.event.block.SignChangeEvent; + +public class SignListener extends PlexListener +{ + @EventHandler(priority = EventPriority.HIGHEST) + public void onSignEdit(SignChangeEvent event) + { + for (int i = 0; i < event.lines().size(); i++) + { + event.line(i, SafeMiniMessage.mmDeserialize(PlexUtils.getTextFromComponent(event.line(i)))); + } + } +}