diff --git a/CraftBukkit-Patches/0021-Netty.patch b/CraftBukkit-Patches/0021-Netty.patch index 32405b061a..6fa289dddb 100644 --- a/CraftBukkit-Patches/0021-Netty.patch +++ b/CraftBukkit-Patches/0021-Netty.patch @@ -1,8 +1,35 @@ -From d2c3009e1ee527e5d6b990264190370ff50444b2 Mon Sep 17 00:00:00 2001 +From e2f25a41e80e4c9ece6059b2808f003a49556769 Mon Sep 17 00:00:00 2001 From: md_5 Date: Fri, 19 Apr 2013 17:44:39 +1000 Subject: [PATCH] Netty + Implement an uber efficient network engine based on the + Java NIO framework Netty. This is basically a complete rewrite of the + Minecraft network engine with many distinct advantages. First and foremost, + there will no longer be the horrid, and redundant case of 2, or even at + times, 3 threads per a connection. Instead low level select/epoll based NIO + is used. The number of threads used for network reading and writing will + scale automatically to the number of cores for use on your server. In most + cases this will be around 8 threads for a 4 core server, much better than the + up to 1000 threads that could be in use at one time with the old engine. To + facilitate asynchronous packet sending or receiving (currently only chat), a + thread pool of 16 threads is kept handy. == Plugin incompatibilities As a + side effect of this change, plugins which rely on very specific + implementation level details within Minecraft are broken. At this point in + time, TagAPI and ProtocolLib are affected. If you are a user of ProtocolLib + you are advised to update to the latest build, where full support is enabled. + If you are a user of TagAPI, support has not yet been added, so you will need + to install the updated ProtocolLib so that TagAPI may use its functions. == + Stability The code within this commit has been very lightly tested in + production (300 players for approximately 24 hours), however it is not + guaranteed to be free from all bugs. If you experence weird connection + behaviour, reporting the bug and steps to reproduce are advised. You are also + free to downgrade to the latest recommend build, which is guaranteed to be + stable. == Summary This commit provides a reduction in threads, which gives + the CPU / operating system more time to allocate to the main server threads, + as well as various other side benefits such as chat thread pooling and a + slight reduction in latency. This commit is licensed under the Creative + Commons Attribution-ShareAlike 3.0 Unported license. diff --git a/pom.xml b/pom.xml index da1a0eb..b8c24af 100644 @@ -134,7 +161,7 @@ index 9f8afe3..b1d3a17 100644 }; // CraftBukkit end diff --git a/src/main/java/net/minecraft/server/PendingConnection.java b/src/main/java/net/minecraft/server/PendingConnection.java -index eb474f5..71e4739 100644 +index eb474f5..836ad94 100644 --- a/src/main/java/net/minecraft/server/PendingConnection.java +++ b/src/main/java/net/minecraft/server/PendingConnection.java @@ -17,7 +17,7 @@ public class PendingConnection extends Connection { @@ -180,7 +207,7 @@ index eb474f5..71e4739 100644 - ((DedicatedServerConnection) this.server.ae()).a(inetaddress); + // Spigot start + if (inetaddress != null) { -+ ((org.spigotmc.MultiplexingServerConnection) this.server.ae()).throttle(inetaddress); ++ ((org.spigotmc.MultiplexingServerConnection) this.server.ae()).unThrottle(inetaddress); } + // Spigot end @@ -258,7 +285,7 @@ index 84dcfcc..a30f217 100644 private static final int RECENT_TICKS; diff --git a/src/main/java/org/spigotmc/MultiplexingServerConnection.java b/src/main/java/org/spigotmc/MultiplexingServerConnection.java new file mode 100644 -index 0000000..7dc2533 +index 0000000..6e5de56 --- /dev/null +++ b/src/main/java/org/spigotmc/MultiplexingServerConnection.java @@ -0,0 +1,126 @@ @@ -356,7 +383,7 @@ index 0000000..7dc2533 + * + * @param address the address to remove + */ -+ public void a(InetAddress address) { ++ public void unThrottle(InetAddress address) { + if (address != null) { + synchronized (throttle) { + throttle.remove(address); diff --git a/CraftBukkit-Patches/0038-Prevent-handshake-spam-from-invalid-names.patch b/CraftBukkit-Patches/0038-Prevent-handshake-spam-from-invalid-names.patch index 77f16b01fd..022fb19ea9 100644 --- a/CraftBukkit-Patches/0038-Prevent-handshake-spam-from-invalid-names.patch +++ b/CraftBukkit-Patches/0038-Prevent-handshake-spam-from-invalid-names.patch @@ -1,4 +1,4 @@ -From bdb32d91ed3c63d9592aab483640c795828e8a6b Mon Sep 17 00:00:00 2001 +From 7c45fcce863877c76d52a4878aa9ccacc37b24b9 Mon Sep 17 00:00:00 2001 From: Benjamin James Harrison-Sims Date: Sun, 14 Apr 2013 21:19:57 +0500 Subject: [PATCH] Prevent handshake spam from invalid names. @@ -25,7 +25,7 @@ index 343af93..aa6609b 100644 public void a(DataOutputStream dataoutputstream) throws IOException { // CraftBukkit - throws IOException diff --git a/src/main/java/org/bukkit/craftbukkit/Spigot.java b/src/main/java/org/bukkit/craftbukkit/Spigot.java -index 504bd8b..ff28a99 100644 +index 504bd8b..2bb9664 100644 --- a/src/main/java/org/bukkit/craftbukkit/Spigot.java +++ b/src/main/java/org/bukkit/craftbukkit/Spigot.java @@ -9,6 +9,8 @@ import org.bukkit.configuration.file.YamlConfiguration; @@ -41,7 +41,7 @@ index 504bd8b..ff28a99 100644 private static Metrics metrics; public static List bungeeIPs; public static int textureResolution = 16; -+ public static final Pattern validName = Pattern.compile("^[a-zA-Z0-9_]{2,16}$"); ++ public static final Pattern validName = Pattern.compile("^[a-zA-Z0-9_-]{2,16}$"); public static void initialize(CraftServer server, SimpleCommandMap commandMap, YamlConfiguration configuration) { commandMap.register("bukkit", new org.bukkit.craftbukkit.command.TicksPerSecondCommand("tps")); diff --git a/CraftBukkit-Patches/0039-Snapshot-Protocol.patch b/CraftBukkit-Patches/0039-Snapshot-Protocol.patch index 1df04c97ca..1c7318d552 100644 --- a/CraftBukkit-Patches/0039-Snapshot-Protocol.patch +++ b/CraftBukkit-Patches/0039-Snapshot-Protocol.patch @@ -1,4 +1,4 @@ -From ee9246854da8fff0ec2a98c4e3263334325c0a52 Mon Sep 17 00:00:00 2001 +From 4499dfd50e9bf1272980f4ca537b4c507e55fe28 Mon Sep 17 00:00:00 2001 From: md_5 Date: Fri, 19 Apr 2013 19:13:42 +1000 Subject: [PATCH] Snapshot Protocol @@ -316,7 +316,7 @@ index 0000000..bbfbb88 + } +} diff --git a/src/main/java/net/minecraft/server/PendingConnection.java b/src/main/java/net/minecraft/server/PendingConnection.java -index 27cf4e3..adc3509 100644 +index 72fb172..9e5035a 100644 --- a/src/main/java/net/minecraft/server/PendingConnection.java +++ b/src/main/java/net/minecraft/server/PendingConnection.java @@ -77,8 +77,8 @@ public class PendingConnection extends Connection { @@ -340,13 +340,13 @@ index 27cf4e3..adc3509 100644 for (Object object : list) { if (s == null) { diff --git a/src/main/java/org/bukkit/craftbukkit/Spigot.java b/src/main/java/org/bukkit/craftbukkit/Spigot.java -index ff28a99..99e8aa8 100644 +index 2bb9664..8a513a6 100644 --- a/src/main/java/org/bukkit/craftbukkit/Spigot.java +++ b/src/main/java/org/bukkit/craftbukkit/Spigot.java @@ -28,6 +28,9 @@ public class Spigot { public static List bungeeIPs; public static int textureResolution = 16; - public static final Pattern validName = Pattern.compile("^[a-zA-Z0-9_]{2,16}$"); + public static final Pattern validName = Pattern.compile("^[a-zA-Z0-9_-]{2,16}$"); + public static boolean snapshotSupport; + public static int snapshotProtocolVersion = 62; + public static String snapshotVersion = "13w16a";