Skip to content

Commit 5a839c4

Browse files
committed
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.
1 parent 3025ba5 commit 5a839c4

File tree

2 files changed

+7
-6
lines changed

2 files changed

+7
-6
lines changed

providers/PaperProvider/src/main/java/net/ess3/provider/providers/PaperChatEvent.java

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import io.papermc.paper.event.player.AsyncChatEvent;
44
import net.ess3.provider.AbstractChatEvent;
55
import net.kyori.adventure.audience.Audience;
6+
import net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer;
67
import org.bukkit.entity.Player;
78

89
import java.util.Collections;
@@ -12,12 +13,12 @@
1213

1314
public class PaperChatEvent implements AbstractChatEvent {
1415
private final AsyncChatEvent event;
16+
private final LegacyComponentSerializer serializer;
1517
private String fakeFormat;
16-
private String fakeMessage;
1718

18-
public PaperChatEvent(final AsyncChatEvent event) {
19+
public PaperChatEvent(final AsyncChatEvent event, final LegacyComponentSerializer serializer) {
1920
this.event = event;
20-
this.fakeMessage = event.signedMessage().message();
21+
this.serializer = serializer;
2122
}
2223

2324
@Override
@@ -47,12 +48,12 @@ public void setFormat(String format) {
4748

4849
@Override
4950
public String getMessage() {
50-
return fakeMessage;
51+
return serializer.serialize(event.message());
5152
}
5253

5354
@Override
5455
public void setMessage(String message) {
55-
this.fakeMessage = message;
56+
event.message(serializer.deserialize(message));
5657
}
5758

5859
@Override

providers/PaperProvider/src/main/java/net/ess3/provider/providers/PaperChatListenerProvider.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ private PaperChatEvent wrap(final AsyncChatEvent event) {
6868
return paperChatEvent;
6969
}
7070

71-
paperChatEvent = new PaperChatEvent(event);
71+
paperChatEvent = new PaperChatEvent(event, serializer);
7272
eventMap.put(event, paperChatEvent);
7373

7474
return paperChatEvent;

0 commit comments

Comments
 (0)