From 1dad912ec10872ea9ee6f0a2297a8d884fce2197 Mon Sep 17 00:00:00 2001 From: HypherionMC Date: Tue, 2 Jan 2024 08:23:41 +0200 Subject: [PATCH] [BUG] Fix MessageBroadcastEvent using the wrong thread context (SDLink) --- .../craterlib/api/event/server/MessageBroadcastEvent.java | 8 +++++++- .../craterlib/mixin/events/PlayerListMixin.java | 3 ++- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/Common/src/main/java/com/hypherionmc/craterlib/api/event/server/MessageBroadcastEvent.java b/Common/src/main/java/com/hypherionmc/craterlib/api/event/server/MessageBroadcastEvent.java index b0ff353..69207e6 100644 --- a/Common/src/main/java/com/hypherionmc/craterlib/api/event/server/MessageBroadcastEvent.java +++ b/Common/src/main/java/com/hypherionmc/craterlib/api/event/server/MessageBroadcastEvent.java @@ -11,11 +11,13 @@ public class MessageBroadcastEvent extends CraterEvent { private final Component component; private final Function function; private final boolean bl; + private final String threadName; - public MessageBroadcastEvent(Component component, Function function, boolean bl) { + public MessageBroadcastEvent(Component component, Function function, boolean bl, String threadName) { this.component = component; this.function = function; this.bl = bl; + this.threadName = threadName; } public Component getComponent() { @@ -30,6 +32,10 @@ public class MessageBroadcastEvent extends CraterEvent { return function; } + public String getThreadName() { + return threadName; + } + @Override public boolean canCancel() { return false; diff --git a/Common/src/main/java/com/hypherionmc/craterlib/mixin/events/PlayerListMixin.java b/Common/src/main/java/com/hypherionmc/craterlib/mixin/events/PlayerListMixin.java index 851ba8b..93607af 100644 --- a/Common/src/main/java/com/hypherionmc/craterlib/mixin/events/PlayerListMixin.java +++ b/Common/src/main/java/com/hypherionmc/craterlib/mixin/events/PlayerListMixin.java @@ -24,7 +24,8 @@ public class PlayerListMixin { @Inject(method = "broadcastSystemMessage(Lnet/minecraft/network/chat/Component;Ljava/util/function/Function;Z)V", at = @At("HEAD")) private void injectBroadcastEvent(Component component, Function function, boolean bl, CallbackInfo ci) { - MessageBroadcastEvent event = new MessageBroadcastEvent(component, function, bl); + String thread = Thread.currentThread().getStackTrace()[3].getClassName(); + MessageBroadcastEvent event = new MessageBroadcastEvent(component, function, bl, thread); CraterEventBus.INSTANCE.postEvent(event); }