diff options
author | EvilSeph <evilseph@unaligned.org> | 2011-06-08 17:00:30 -0400 |
---|---|---|
committer | EvilSeph <evilseph@unaligned.org> | 2011-06-08 17:00:30 -0400 |
commit | b5d1619e75a7d535bc33a9cc6401c64befe608dc (patch) | |
tree | 21a2a1ef7a6ec47356fb4386f5b4e5d922ecd57f /src/main/java/net/minecraft/server/NetworkManager.java | |
parent | 5296f97cde8e17d37da635c0eb3363d788d85430 (diff) | |
download | craftbukkit-b5d1619e75a7d535bc33a9cc6401c64befe608dc.tar craftbukkit-b5d1619e75a7d535bc33a9cc6401c64befe608dc.tar.gz craftbukkit-b5d1619e75a7d535bc33a9cc6401c64befe608dc.tar.lz craftbukkit-b5d1619e75a7d535bc33a9cc6401c64befe608dc.tar.xz craftbukkit-b5d1619e75a7d535bc33a9cc6401c64befe608dc.zip |
More teleport changes. Thanks Zeerix!
Diffstat (limited to 'src/main/java/net/minecraft/server/NetworkManager.java')
-rw-r--r-- | src/main/java/net/minecraft/server/NetworkManager.java | 28 |
1 files changed, 11 insertions, 17 deletions
diff --git a/src/main/java/net/minecraft/server/NetworkManager.java b/src/main/java/net/minecraft/server/NetworkManager.java index 230f7a15..b8b5f4b4 100644 --- a/src/main/java/net/minecraft/server/NetworkManager.java +++ b/src/main/java/net/minecraft/server/NetworkManager.java @@ -93,38 +93,32 @@ public class NetworkManager { try { Object object; - Packet packet; + Packet packet = null; // CraftBukkit int i; int[] aint; - if (!this.n.isEmpty() && (this.f == 0 || System.currentTimeMillis() - ((Packet) this.n.get(0)).timestamp >= (long) this.f)) { - object = this.g; - synchronized (this.g) { + // CraftBukkit start - thread safety and prioitizing packets in this.n (high prioirty queue) over those in this.o (low priority queue). + object = this.g; + synchronized (this.g) { + long time = System.currentTimeMillis(); + if (!this.n.isEmpty() && (this.f == 0 || time - ((Packet) this.n.get(0)).timestamp >= (long) this.f)) { packet = (Packet) this.n.remove(0); this.x -= packet.a() + 1; - } - - Packet.a(packet, this.output); - aint = e; - i = packet.b(); - aint[i] += packet.a() + 1; - flag = true; - } - - if (this.y-- <= 0 && !this.o.isEmpty() && (this.f == 0 || System.currentTimeMillis() - ((Packet) this.o.get(0)).timestamp >= (long) this.f)) { - object = this.g; - synchronized (this.g) { + } else if (this.y-- <= 0 && !this.o.isEmpty() && (this.f == 0 || time - ((Packet) this.o.get(0)).timestamp >= (long) this.f)) { packet = (Packet) this.o.remove(0); this.x -= packet.a() + 1; + this.y = 0; } + } + if (packet != null) { Packet.a(packet, this.output); aint = e; i = packet.b(); aint[i] += packet.a() + 1; - this.y = 0; flag = true; } + // CraftBukkit end return flag; } catch (Exception exception) { |