aboutsummaryrefslogtreecommitdiffhomepage
path: root/CraftBukkit-Patches/0141-Process-conversation-input-on-the-main-thread.-Fixes.patch
diff options
context:
space:
mode:
Diffstat (limited to 'CraftBukkit-Patches/0141-Process-conversation-input-on-the-main-thread.-Fixes.patch')
-rw-r--r--CraftBukkit-Patches/0141-Process-conversation-input-on-the-main-thread.-Fixes.patch41
1 files changed, 41 insertions, 0 deletions
diff --git a/CraftBukkit-Patches/0141-Process-conversation-input-on-the-main-thread.-Fixes.patch b/CraftBukkit-Patches/0141-Process-conversation-input-on-the-main-thread.-Fixes.patch
new file mode 100644
index 0000000000..298de77884
--- /dev/null
+++ b/CraftBukkit-Patches/0141-Process-conversation-input-on-the-main-thread.-Fixes.patch
@@ -0,0 +1,41 @@
+From ed472fc3b22d71daf95948176d72e4f748781566 Mon Sep 17 00:00:00 2001
+From: riking <[email protected]>
+Date: Wed, 14 May 2014 13:46:48 -0700
+Subject: [PATCH] Process conversation input on the main thread. Fixes
+ BUKKIT-5611
+
+
+diff --git a/src/main/java/net/minecraft/server/PlayerConnection.java b/src/main/java/net/minecraft/server/PlayerConnection.java
+index 0804fe7..b723b73 100644
+--- a/src/main/java/net/minecraft/server/PlayerConnection.java
++++ b/src/main/java/net/minecraft/server/PlayerConnection.java
+@@ -835,7 +835,25 @@ public class PlayerConnection implements PacketPlayInListener {
+ } else if (s.isEmpty()) {
+ c.warn(this.player.getName() + " tried to send an empty message");
+ } else if (getPlayer().isConversing()) {
+- getPlayer().acceptConversationInput(s);
++ final String message = s;
++
++ Waitable waitable = new Waitable() {
++ @Override
++ protected Object evaluate() {
++ getPlayer().acceptConversationInput(message);
++ return null;
++ }
++ };
++
++ this.minecraftServer.processQueue.add(waitable);
++
++ try {
++ waitable.get();
++ } catch (InterruptedException e) {
++ Thread.currentThread().interrupt();
++ } catch (ExecutionException e) {
++ throw new RuntimeException(e);
++ }
+ } else if (this.player.getChatFlags() == EnumChatVisibility.SYSTEM) { // Re-add "Command Only" flag check
+ ChatMessage chatmessage = new ChatMessage("chat.cannotSend", new Object[0]);
+
+--
+1.9.1
+