mirror of
https://github.com/EssentialsX/Essentials.git
synced 2025-04-06 13:30:43 +08:00
Fix modifying messages with Paper chat events
Previously, our wrapper for Paper chat events did not account for other plugins modifying the message component during the event lifecycle, this will translate calls between (get/set)Message to and from legacy strings. This further add a barrier hover/click events for now but those never worked with EssXChat installed anyway and will require further refactoring at a later date in order to add support.
This commit is contained in:
parent
3025ba5c05
commit
5a839c47bc
@ -3,6 +3,7 @@ package net.ess3.provider.providers;
|
||||
import io.papermc.paper.event.player.AsyncChatEvent;
|
||||
import net.ess3.provider.AbstractChatEvent;
|
||||
import net.kyori.adventure.audience.Audience;
|
||||
import net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
import java.util.Collections;
|
||||
@ -12,12 +13,12 @@ import java.util.function.Predicate;
|
||||
|
||||
public class PaperChatEvent implements AbstractChatEvent {
|
||||
private final AsyncChatEvent event;
|
||||
private final LegacyComponentSerializer serializer;
|
||||
private String fakeFormat;
|
||||
private String fakeMessage;
|
||||
|
||||
public PaperChatEvent(final AsyncChatEvent event) {
|
||||
public PaperChatEvent(final AsyncChatEvent event, final LegacyComponentSerializer serializer) {
|
||||
this.event = event;
|
||||
this.fakeMessage = event.signedMessage().message();
|
||||
this.serializer = serializer;
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -47,12 +48,12 @@ public class PaperChatEvent implements AbstractChatEvent {
|
||||
|
||||
@Override
|
||||
public String getMessage() {
|
||||
return fakeMessage;
|
||||
return serializer.serialize(event.message());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setMessage(String message) {
|
||||
this.fakeMessage = message;
|
||||
event.message(serializer.deserialize(message));
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -68,7 +68,7 @@ public abstract class PaperChatListenerProvider implements Listener {
|
||||
return paperChatEvent;
|
||||
}
|
||||
|
||||
paperChatEvent = new PaperChatEvent(event);
|
||||
paperChatEvent = new PaperChatEvent(event, serializer);
|
||||
eventMap.put(event, paperChatEvent);
|
||||
|
||||
return paperChatEvent;
|
||||
|
Loading…
x
Reference in New Issue
Block a user