-
-
Notifications
You must be signed in to change notification settings - Fork 1
Add Placeholder API Support #4
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: master
Are you sure you want to change the base?
Conversation
RhythmicSys
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looks good, one main change requested
| Component playerName = player == null ? Component.empty() : player.displayName(); | ||
| if (Bukkit.getPluginManager().isPluginEnabled("PlaceholderAPI")) { | ||
| message = PlaceholderAPI.setPlaceholders(player, message); | ||
| } |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This needs to be adjusted because colored placeholders from placeholder API use section signs, and minimessage cannot use both the tag system and section signs.
One way this can be done is like this usage example:
public static @NotNull TagResolver papiTag(final @NotNull Player player) {
return TagResolver.resolver("papi", (argumentQueue, context) -> {
final String papiPlaceholder = argumentQueue.popOr(Message.ERROR_PAPI_NEEDS_ARGUMENT.getMessage()).value();
final String parsedPlaceholder = PlaceholderAPI.setPlaceholders(player, '%' + papiPlaceholder + '%');
Component componentPlaceholder;
if (parsedPlaceholder.contains("§")) {
componentPlaceholder = LegacyComponentSerializer.legacySection().deserialize(parsedPlaceholder);
} else {
componentPlaceholder = miniMessage.deserialize(parsedPlaceholder);
}
return Tag.selfClosingInserting(componentPlaceholder);
});
}but that requires that the user uses <papi:placeholder>
Stacktrace that is generated when attempting to use a colored placeholder from placeholder API in the message:
[19:04:42 ERROR]: Could not pass event PlayerDeepSleepEvent to SleepMessages v1.1.0
net.kyori.adventure.text.minimessage.internal.parser.ParsingExceptionImpl: Legacy formatting codes have been detected in a MiniMessage string - this is unsupported behaviour. Please refer to the Adventure documentation (https://docs.advntr.dev) for more information.
<grey>§a20.0 has fallen asleep. <sleeping> out of <needed> required players in <worldname> are sleeping.
^^
at net.kyori.adventure.text.minimessage.internal.parser.TokenParser.parseString(TokenParser.java:170) ~[adventure-text-minimessage-4.25.0.jar:?]
at net.kyori.adventure.text.minimessage.internal.parser.TokenParser.resolvePreProcessTags(TokenParser.java:112) ~[adventure-text-minimessage-4.25.0.jar:?]
at net.kyori.adventure.text.minimessage.MiniMessageParser.parseToTree(MiniMessageParser.java:195) ~[adventure-text-minimessage-4.25.0.jar:?]
at net.kyori.adventure.text.minimessage.MiniMessageParser.parseFormat(MiniMessageParser.java:209) ~[adventure-text-minimessage-4.25.0.jar:?]
at net.kyori.adventure.text.minimessage.MiniMessageImpl.deserialize(MiniMessageImpl.java:92) ~[adventure-text-minimessage-4.25.0.jar:?]
at net.kyori.adventure.text.minimessage.MiniMessage.deserialize(MiniMessage.java:182) ~[adventure-text-minimessage-4.25.0.jar:?]
at SleepMessages-1.1.0.jar//adhdmc.sleepmessages.SleepListener.sendWorldMessage(SleepListener.java:82) ~[?:?]
at SleepMessages-1.1.0.jar//adhdmc.sleepmessages.SleepListener.onPlayerSleep(SleepListener.java:55) ~[?:?]
at co.aikar.timings.TimedEventExecutor.execute(TimedEventExecutor.java:80) ~[purpur-api-1.21.11-R0.1-SNAPSHOT.jar:?]
at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:71) ~[purpur-api-1.21.11-R0.1-SNAPSHOT.jar:?]
at io.papermc.paper.plugin.manager.PaperEventManager.callEvent(PaperEventManager.java:54) ~[purpur-1.21.11.jar:1.21.11-2545-9f8e602]
at io.papermc.paper.plugin.manager.PaperPluginManagerImpl.callEvent(PaperPluginManagerImpl.java:131) ~[purpur-1.21.11.jar:1.21.11-2545-9f8e602]
at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:628) ~[purpur-api-1.21.11-R0.1-SNAPSHOT.jar:?]
at org.bukkit.event.Event.callEvent(Event.java:46) ~[purpur-api-1.21.11-R0.1-SNAPSHOT.jar:?]
at net.minecraft.world.entity.player.Player.tick(Player.java:290) ~[purpur-1.21.11.jar:1.21.11-2545-9f8e602]
at net.minecraft.server.level.ServerPlayer.doTick(ServerPlayer.java:818) ~[purpur-1.21.11.jar:1.21.11-2545-9f8e602]
at net.minecraft.server.network.ServerGamePacketListenerImpl.tickPlayer(ServerGamePacketListenerImpl.java:396) ~[purpur-1.21.11.jar:1.21.11-2545-9f8e602]
at net.minecraft.server.network.ServerGamePacketListenerImpl.tick(ServerGamePacketListenerImpl.java:370) ~[purpur-1.21.11.jar:1.21.11-2545-9f8e602]
at net.minecraft.network.Connection.tick(Connection.java:582) ~[purpur-1.21.11.jar:1.21.11-2545-9f8e602]
at net.minecraft.server.network.ServerConnectionListener.tick(ServerConnectionListener.java:230) ~[purpur-1.21.11.jar:1.21.11-2545-9f8e602]
at net.minecraft.server.MinecraftServer.tickConnection(MinecraftServer.java:1909) ~[purpur-1.21.11.jar:1.21.11-2545-9f8e602]
at net.minecraft.server.dedicated.DedicatedServer.tickConnection(DedicatedServer.java:595) ~[purpur-1.21.11.jar:1.21.11-2545-9f8e602]
at net.minecraft.server.MinecraftServer.tickChildren(MinecraftServer.java:1872) ~[purpur-1.21.11.jar:1.21.11-2545-9f8e602]
at net.minecraft.server.MinecraftServer.tickServer(MinecraftServer.java:1649) ~[purpur-1.21.11.jar:1.21.11-2545-9f8e602]
at net.minecraft.server.dedicated.DedicatedServer.tickServer(DedicatedServer.java:473) ~[purpur-1.21.11.jar:1.21.11-2545-9f8e602]
at net.minecraft.server.MinecraftServer.processPacketsAndTick(MinecraftServer.java:1705) ~[purpur-1.21.11.jar:1.21.11-2545-9f8e602]
at net.minecraft.server.MinecraftServer.runServer(MinecraftServer.java:1373) ~[purpur-1.21.11.jar:1.21.11-2545-9f8e602]
at net.minecraft.server.MinecraftServer.lambda$spin$2(MinecraftServer.java:392) ~[purpur-1.21.11.jar:1.21.11-2545-9f8e602]
at java.base/java.lang.Thread.run(Thread.java:1583) ~[?:?]
[19:04:52 ERROR]: Could not pass event PlayerDeepSleepEvent to SleepMessages v1.1.0
net.kyori.adventure.text.minimessage.internal.parser.ParsingExceptionImpl: Legacy formatting codes have been detected in a MiniMessage string - this is unsupported behaviour. Please refer to the Adventure documentation (https://docs.advntr.dev) for more information.
<grey>§a20.0 has fallen asleep. <sleeping> out of <needed> required players in <worldname> are sleeping.
^^
at net.kyori.adventure.text.minimessage.internal.parser.TokenParser.parseString(TokenParser.java:170) ~[adventure-text-minimessage-4.25.0.jar:?]
at net.kyori.adventure.text.minimessage.internal.parser.TokenParser.resolvePreProcessTags(TokenParser.java:112) ~[adventure-text-minimessage-4.25.0.jar:?]
at net.kyori.adventure.text.minimessage.MiniMessageParser.parseToTree(MiniMessageParser.java:195) ~[adventure-text-minimessage-4.25.0.jar:?]
at net.kyori.adventure.text.minimessage.MiniMessageParser.parseFormat(MiniMessageParser.java:209) ~[adventure-text-minimessage-4.25.0.jar:?]
at net.kyori.adventure.text.minimessage.MiniMessageImpl.deserialize(MiniMessageImpl.java:92) ~[adventure-text-minimessage-4.25.0.jar:?]
at net.kyori.adventure.text.minimessage.MiniMessage.deserialize(MiniMessage.java:182) ~[adventure-text-minimessage-4.25.0.jar:?]
at SleepMessages-1.1.0.jar//adhdmc.sleepmessages.SleepListener.sendWorldMessage(SleepListener.java:82) ~[?:?]
at SleepMessages-1.1.0.jar//adhdmc.sleepmessages.SleepListener.onPlayerSleep(SleepListener.java:55) ~[?:?]
at co.aikar.timings.TimedEventExecutor.execute(TimedEventExecutor.java:80) ~[purpur-api-1.21.11-R0.1-SNAPSHOT.jar:?]
at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:71) ~[purpur-api-1.21.11-R0.1-SNAPSHOT.jar:?]
at io.papermc.paper.plugin.manager.PaperEventManager.callEvent(PaperEventManager.java:54) ~[purpur-1.21.11.jar:1.21.11-2545-9f8e602]
at io.papermc.paper.plugin.manager.PaperPluginManagerImpl.callEvent(PaperPluginManagerImpl.java:131) ~[purpur-1.21.11.jar:1.21.11-2545-9f8e602]
at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:628) ~[purpur-api-1.21.11-R0.1-SNAPSHOT.jar:?]
at org.bukkit.event.Event.callEvent(Event.java:46) ~[purpur-api-1.21.11-R0.1-SNAPSHOT.jar:?]
at net.minecraft.world.entity.player.Player.tick(Player.java:290) ~[purpur-1.21.11.jar:1.21.11-2545-9f8e602]
at net.minecraft.server.level.ServerPlayer.doTick(ServerPlayer.java:818) ~[purpur-1.21.11.jar:1.21.11-2545-9f8e602]
at net.minecraft.server.network.ServerGamePacketListenerImpl.tickPlayer(ServerGamePacketListenerImpl.java:396) ~[purpur-1.21.11.jar:1.21.11-2545-9f8e602]
at net.minecraft.server.network.ServerGamePacketListenerImpl.tick(ServerGamePacketListenerImpl.java:370) ~[purpur-1.21.11.jar:1.21.11-2545-9f8e602]
at net.minecraft.network.Connection.tick(Connection.java:582) ~[purpur-1.21.11.jar:1.21.11-2545-9f8e602]
at net.minecraft.server.network.ServerConnectionListener.tick(ServerConnectionListener.java:230) ~[purpur-1.21.11.jar:1.21.11-2545-9f8e602]
at net.minecraft.server.MinecraftServer.tickConnection(MinecraftServer.java:1909) ~[purpur-1.21.11.jar:1.21.11-2545-9f8e602]
at net.minecraft.server.dedicated.DedicatedServer.tickConnection(DedicatedServer.java:595) ~[purpur-1.21.11.jar:1.21.11-2545-9f8e602]
at net.minecraft.server.MinecraftServer.tickChildren(MinecraftServer.java:1872) ~[purpur-1.21.11.jar:1.21.11-2545-9f8e602]
at net.minecraft.server.MinecraftServer.tickServer(MinecraftServer.java:1649) ~[purpur-1.21.11.jar:1.21.11-2545-9f8e602]
at net.minecraft.server.dedicated.DedicatedServer.tickServer(DedicatedServer.java:473) ~[purpur-1.21.11.jar:1.21.11-2545-9f8e602]
at net.minecraft.server.MinecraftServer.processPacketsAndTick(MinecraftServer.java:1705) ~[purpur-1.21.11.jar:1.21.11-2545-9f8e602]
at net.minecraft.server.MinecraftServer.runServer(MinecraftServer.java:1373) ~[purpur-1.21.11.jar:1.21.11-2545-9f8e602]
at net.minecraft.server.MinecraftServer.lambda$spin$2(MinecraftServer.java:392) ~[purpur-1.21.11.jar:1.21.11-2545-9f8e602]
at java.base/java.lang.Thread.run(Thread.java:1583) ~[?:?]
Resolves #3.