Mirror von
https://github.com/PaperMC/Paper.git
synchronisiert 2024-11-15 12:30:06 +01:00
4104545b11
"It was from a different time before books were as jank as they are now. As time has gone on they've only proven to be worse and worse."
40 Zeilen
2.2 KiB
Diff
40 Zeilen
2.2 KiB
Diff
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
From: Aikar <aikar@aikar.co>
|
|
Date: Sun, 12 Aug 2018 02:33:39 -0400
|
|
Subject: [PATCH] Use a Queue for Queueing Commands
|
|
|
|
Lists are bad as Queues mmmkay.
|
|
|
|
diff --git a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java
|
|
index 45ae21718df16e16b5a3835a92afbf714959950e..6f9b7c3cf22d0c44f31b81bcbfa3cb1f8c065083 100644
|
|
--- a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java
|
|
+++ b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java
|
|
@@ -78,7 +78,7 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface
|
|
private static final int CONVERSION_RETRY_DELAY_MS = 5000;
|
|
private static final int CONVERSION_RETRIES = 2;
|
|
private static final Pattern SHA1 = Pattern.compile("^[a-fA-F0-9]{40}$");
|
|
- private final List<ConsoleInput> consoleInput = Collections.synchronizedList(Lists.newArrayList());
|
|
+ private final java.util.Queue<ConsoleInput> serverCommandQueue = new java.util.concurrent.ConcurrentLinkedQueue<>(); // Paper - use a proper queue
|
|
private QueryThreadGs4 queryThreadGs4;
|
|
public final RconConsoleSource rconConsoleSource;
|
|
private RconThread rconThread;
|
|
@@ -473,13 +473,15 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface
|
|
}
|
|
|
|
public void handleConsoleInput(String command, CommandSourceStack commandSource) {
|
|
- this.consoleInput.add(new ConsoleInput(command, commandSource));
|
|
+ this.serverCommandQueue.add(new ConsoleInput(command, commandSource));
|
|
}
|
|
|
|
public void handleConsoleInputs() {
|
|
MinecraftTimings.serverCommandTimer.startTiming(); // Spigot
|
|
- while (!this.consoleInput.isEmpty()) {
|
|
- ConsoleInput servercommand = (ConsoleInput) this.consoleInput.remove(0);
|
|
+ // Paper start - use proper queue
|
|
+ ConsoleInput servercommand;
|
|
+ while ((servercommand = this.serverCommandQueue.poll()) != null) {
|
|
+ // Paper end
|
|
|
|
// CraftBukkit start - ServerCommand for preprocessing
|
|
ServerCommandEvent event = new ServerCommandEvent(console, servercommand.msg);
|