From 5bb3cc88e5c3b2bd8eb37e36dce009c3dea89f22 Mon Sep 17 00:00:00 2001 From: MD <1917406+mdcfe@users.noreply.github.com> Date: Fri, 11 Dec 2020 16:36:29 +0000 Subject: [PATCH] Dispatch commands on main thread when run from XMPP (#3803) This PR fixes an issue reported on Discord, where commands executed through XMPP are dispatched async from the XMPP listener thread. --- .../com/earth2me/essentials/xmpp/XMPPManager.java | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/EssentialsXMPP/src/main/java/com/earth2me/essentials/xmpp/XMPPManager.java b/EssentialsXMPP/src/main/java/com/earth2me/essentials/xmpp/XMPPManager.java index 4b6f70c56..4fc9a2dbf 100644 --- a/EssentialsXMPP/src/main/java/com/earth2me/essentials/xmpp/XMPPManager.java +++ b/EssentialsXMPP/src/main/java/com/earth2me/essentials/xmpp/XMPPManager.java @@ -320,11 +320,13 @@ public class XMPPManager extends Handler implements MessageListener, ChatManager private void sendCommand(final Chat chat, final String message) { if (config.getStringList("op-users").contains(StringUtils.parseBareAddress(chat.getParticipant()))) { - try { - parent.getServer().dispatchCommand(Console.getInstance().getCommandSender(), message.substring(1)); - } catch (final Exception ex) { - logger.log(Level.SEVERE, ex.getMessage(), ex); - } + parent.getServer().getScheduler().runTask(parent, () -> { + try { + parent.getServer().dispatchCommand(Console.getInstance().getCommandSender(), message.substring(1)); + } catch (final Exception ex) { + logger.log(Level.SEVERE, ex.getMessage(), ex); + } + }); } }