diff --git a/plugin/src/main/java/lol/pyr/znpcsplus/interaction/message/MessageAction.java b/plugin/src/main/java/lol/pyr/znpcsplus/interaction/message/MessageAction.java index daa411f..526aa63 100644 --- a/plugin/src/main/java/lol/pyr/znpcsplus/interaction/message/MessageAction.java +++ b/plugin/src/main/java/lol/pyr/znpcsplus/interaction/message/MessageAction.java @@ -1,27 +1,32 @@ package lol.pyr.znpcsplus.interaction.message; -import lol.pyr.znpcsplus.interaction.InteractionAction; import lol.pyr.znpcsplus.api.interaction.InteractionType; +import lol.pyr.znpcsplus.interaction.InteractionAction; +import lol.pyr.znpcsplus.util.PapiUtil; import net.kyori.adventure.platform.bukkit.BukkitAudiences; -import net.kyori.adventure.text.Component; +import net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer; import org.bukkit.entity.Player; public class MessageAction extends InteractionAction { private final BukkitAudiences adventure; - private final Component message; + private final String message; + private final LegacyComponentSerializer textSerializer; - public MessageAction(BukkitAudiences adventure, Component message, InteractionType interactionType, long delay) { + public MessageAction(BukkitAudiences adventure, String message, InteractionType interactionType, LegacyComponentSerializer textSerializer, long delay) { super(delay, interactionType); this.adventure = adventure; this.message = message; + this.textSerializer = textSerializer; } @Override public void run(Player player) { - adventure.player(player).sendMessage(message); + String msg = message.replace("{player}", player.getName()) + .replace("{uuid}", player.getUniqueId().toString()); + adventure.player(player).sendMessage(textSerializer.deserialize(PapiUtil.set(player, msg))); } - public Component getMessage() { + public String getMessage() { return message; } } diff --git a/plugin/src/main/java/lol/pyr/znpcsplus/interaction/message/MessageActionType.java b/plugin/src/main/java/lol/pyr/znpcsplus/interaction/message/MessageActionType.java index c6438d6..64e6e38 100644 --- a/plugin/src/main/java/lol/pyr/znpcsplus/interaction/message/MessageActionType.java +++ b/plugin/src/main/java/lol/pyr/znpcsplus/interaction/message/MessageActionType.java @@ -2,15 +2,14 @@ package lol.pyr.znpcsplus.interaction.message; import lol.pyr.director.adventure.command.CommandContext; import lol.pyr.director.common.command.CommandExecutionException; +import lol.pyr.znpcsplus.api.interaction.InteractionType; import lol.pyr.znpcsplus.interaction.InteractionActionType; import lol.pyr.znpcsplus.interaction.InteractionCommandHandler; -import lol.pyr.znpcsplus.api.interaction.InteractionType; import lol.pyr.znpcsplus.npc.NpcEntryImpl; import lol.pyr.znpcsplus.npc.NpcRegistryImpl; import net.kyori.adventure.platform.bukkit.BukkitAudiences; import net.kyori.adventure.text.Component; import net.kyori.adventure.text.format.NamedTextColor; -import net.kyori.adventure.text.minimessage.MiniMessage; import net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer; import java.nio.charset.StandardCharsets; @@ -31,14 +30,14 @@ public class MessageActionType implements InteractionActionType, @Override public String serialize(MessageAction obj) { - return Base64.getEncoder().encodeToString(MiniMessage.miniMessage().serialize(obj.getMessage()).getBytes(StandardCharsets.UTF_8)) + ";" + obj.getCooldown(); + return Base64.getEncoder().encodeToString(obj.getMessage().getBytes(StandardCharsets.UTF_8)) + ";" + obj.getCooldown(); } @Override public MessageAction deserialize(String str) { String[] split = str.split(";"); InteractionType type = split.length > 2 ? InteractionType.valueOf(split[2]) : InteractionType.ANY_CLICK; - return new MessageAction(adventure, MiniMessage.miniMessage().deserialize(new String(Base64.getDecoder().decode(split[0]), StandardCharsets.UTF_8)), type, Long.parseLong(split[1])); + return new MessageAction(adventure, new String(Base64.getDecoder().decode(split[0]), StandardCharsets.UTF_8), type, textSerializer, Long.parseLong(split[1])); } @Override @@ -53,13 +52,13 @@ public class MessageActionType implements InteractionActionType, @Override public void run(CommandContext context) throws CommandExecutionException { - context.setUsage(context.getUsage() + " consolecommand "); + context.setUsage(context.getUsage() + " message "); NpcEntryImpl entry = context.parse(NpcEntryImpl.class); InteractionType type = context.parse(InteractionType.class); long cooldown = (long) (context.parse(Double.class) * 1000D); - Component message = textSerializer.deserialize(context.dumpAllArgs()); - entry.getNpc().addAction(new MessageAction(adventure, message, type, cooldown)); - context.send(Component.text("Added a message action to the npc with the message ", NamedTextColor.GREEN).append(message)); + String message = context.dumpAllArgs(); + entry.getNpc().addAction(new MessageAction(adventure, message, type, textSerializer, cooldown)); + context.send(Component.text("Added a message action to the npc with the message ", NamedTextColor.GREEN).append(Component.text(message))); } @Override