From 5d790af909090c16f615882b56eccb80e8d8fe7a Mon Sep 17 00:00:00 2001 From: md_5 Date: Tue, 2 Jul 2013 13:03:56 +1000 Subject: [PATCH] Update to Minecraft 1.6.1 - Phase 1 --- CraftBukkit-Patches/0001-POM-Changes.patch | 10 +- .../0003-Skeleton-API-Implementations.patch | 8 +- .../0004-Spigot-Configuration.patch | 8 +- .../0005-Better-Chunk-Tick-Selection.patch | 12 +- .../0006-Crop-Growth-Rates.patch | 20 +- .../0008-More-Efficient-GetCubes.patch | 6 +- .../0009-Proxy-IP-Filter.patch | 10 +- .../0010-Merge-tweaks-and-configuration.patch | 14 +- .../0012-Async-Operation-Catching.patch | 26 +- CraftBukkit-Patches/0013-View-Distance.patch | 14 +- .../0014-Compressed-Nibble-Arrays.patch | 225 ++++++++++++++---- .../0015-Optimize-Chunk-Unload-Packet.patch | 11 +- ...0016-Sync-Free-Chunk-Reference-Cache.patch | 6 +- .../0017-Highly-Optimized-Tick-Loop.patch | 30 +-- .../0018-Improved-Timings-System.patch | 152 ++++-------- CraftBukkit-Patches/0019-Orebfuscator.patch | 14 +- ...b-Spawning-Relative-to-View-Distance.patch | 36 +-- .../0021-Handle-Null-Tile-Entities.patch | 6 +- .../0022-Entity-Activation-Range.patch | 38 +-- .../0024-Watchdog-Thread.patch | 12 +- CraftBukkit-Patches/0025-Netty.patch | 62 ++--- .../0026-PlayerItemDamageEvent.patch | 10 +- .../0027-Faster-UUID-for-entities.patch | 12 +- .../0029-Entity-Tracking-Ranges.patch | 8 +- .../0030-BungeeCord-Support.patch | 16 +- .../0031-Limit-Custom-Map-Rendering.patch | 10 +- .../0032-Enable-Improved-Ping-Sending.patch | 10 +- .../0033-Filter-Invalid-Names.patch | 19 +- .../0034-Thread-Naming-and-Tweaks.patch | 8 +- ...037-Improve-NextTickList-Performance.patch | 38 +-- .../0039-Recipe-Deconstruction.patch | 6 +- .../0040-Fix-Health-Scaling.patch | 14 +- ...x-EntityShootBowEvent-with-Skeletons.patch | 10 +- CraftBukkit-Patches/0043-Particle-API.patch | 8 +- .../0044-Hopper-Cooldowns.patch | 20 +- .../0045-Prevent-Shutdown-Hang.patch | 6 +- .../0046-Implement-SpawnerSpawnEvent.patch | 29 ++- .../0049-Enable-Foreign-Language-Signs.patch | 6 +- .../0050-Spam-Filter-Exclusions.patch | 10 +- ...1-Allow-Disabling-of-Command-Logging.patch | 6 +- ...Disabling-of-Random-Lighting-Updates.patch | 6 +- .../0057-Always-Fire-PreLoginEvent.patch | 26 +- .../0058-Properly-Close-Inventories.patch | 10 +- .../0059-Disallow-Interaction-With-Self.patch | 8 +- 44 files changed, 547 insertions(+), 469 deletions(-) diff --git a/CraftBukkit-Patches/0001-POM-Changes.patch b/CraftBukkit-Patches/0001-POM-Changes.patch index 8c9c398c8a..82da08169e 100644 --- a/CraftBukkit-Patches/0001-POM-Changes.patch +++ b/CraftBukkit-Patches/0001-POM-Changes.patch @@ -1,11 +1,11 @@ -From 2dd1e832500d42db77b2e7f905e6d2c7287ed664 Mon Sep 17 00:00:00 2001 +From 40b3f27d6135511d5061142bf55a0d9ae3c6722b Mon Sep 17 00:00:00 2001 From: md_5 Date: Tue, 23 Apr 2013 11:34:54 +1000 Subject: [PATCH] POM Changes diff --git a/pom.xml b/pom.xml -index 4ead01e..8c9f66b 100644 +index 7257f87..88b41b1 100644 --- a/pom.xml +++ b/pom.xml @@ -1,12 +1,20 @@ @@ -25,7 +25,7 @@ index 4ead01e..8c9f66b 100644 + org.spigotmc + spigot jar - 1.5.2-R1.1-SNAPSHOT + 1.6.1-R0.1-SNAPSHOT - CraftBukkit - http://www.bukkit.org + Spigot @@ -34,7 +34,7 @@ index 4ead01e..8c9f66b 100644 UTF-8 @@ -16,25 +24,6 @@ - 1_5_R3 + 1_6_R1 - @@ -86,7 +86,7 @@ index 4ead01e..8c9f66b 100644 + + net.sf.trove4j + trove4j -+ 3.0.2 ++ 3.0.3 + diff --git a/CraftBukkit-Patches/0003-Skeleton-API-Implementations.patch b/CraftBukkit-Patches/0003-Skeleton-API-Implementations.patch index f00e89df10..5ed1eb2d31 100644 --- a/CraftBukkit-Patches/0003-Skeleton-API-Implementations.patch +++ b/CraftBukkit-Patches/0003-Skeleton-API-Implementations.patch @@ -1,11 +1,11 @@ -From f32217fa6c8e63549ae37fb3f16ab3b881c4af80 Mon Sep 17 00:00:00 2001 +From 8e1fe60b678de75432cbd146c31eaa867ccf99aa Mon Sep 17 00:00:00 2001 From: md_5 Date: Sun, 2 Jun 2013 15:10:56 +1000 Subject: [PATCH] Skeleton API Implementations diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java -index 6c7f570..c0fb528 100644 +index e06e23b..4c16040 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java @@ -1263,4 +1263,14 @@ public class CraftWorld implements World { @@ -43,10 +43,10 @@ index b46b9c4..c91b12c 100644 + // Spigot end } diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index 8c30bf5..df07a9b 100644 +index 583b99c..1d97430 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -@@ -993,4 +993,15 @@ public class CraftPlayer extends CraftHumanEntity implements Player { +@@ -997,4 +997,15 @@ public class CraftPlayer extends CraftHumanEntity implements Player { this.server.getScoreboardManager().setPlayerBoard(this, scoreboard); } diff --git a/CraftBukkit-Patches/0004-Spigot-Configuration.patch b/CraftBukkit-Patches/0004-Spigot-Configuration.patch index 5e100766d8..81ada7ca6e 100644 --- a/CraftBukkit-Patches/0004-Spigot-Configuration.patch +++ b/CraftBukkit-Patches/0004-Spigot-Configuration.patch @@ -1,15 +1,15 @@ -From 05523e9ca5b7f91133e2fa0a43f4d00bb73c23f8 Mon Sep 17 00:00:00 2001 +From dfa59327db305e9cb30180e752e30d29962f979b Mon Sep 17 00:00:00 2001 From: md_5 Date: Sat, 22 Jun 2013 14:06:41 +1000 Subject: [PATCH] Spigot Configuration diff --git a/src/main/java/net/minecraft/server/DedicatedServer.java b/src/main/java/net/minecraft/server/DedicatedServer.java -index 7261dc9..59444cb 100644 +index 0ce6c49..ddb32ac 100644 --- a/src/main/java/net/minecraft/server/DedicatedServer.java +++ b/src/main/java/net/minecraft/server/DedicatedServer.java @@ -89,6 +89,11 @@ public class DedicatedServer extends MinecraftServer implements IMinecraftServer - if (this.G() < 0) { + if (this.I() < 0) { this.setPort(this.propertyManager.getInt("server-port", 25565)); } + // Spigot start @@ -30,7 +30,7 @@ index 7261dc9..59444cb 100644 if (!this.getOnlineMode()) { this.getLogger().warning("**** SERVER IS RUNNING IN OFFLINE/INSECURE MODE!"); diff --git a/src/main/java/net/minecraft/server/World.java b/src/main/java/net/minecraft/server/World.java -index 3a4ddea..de052bd 100644 +index f134856..0dc673d 100644 --- a/src/main/java/net/minecraft/server/World.java +++ b/src/main/java/net/minecraft/server/World.java @@ -99,6 +99,7 @@ public abstract class World implements IBlockAccess { diff --git a/CraftBukkit-Patches/0005-Better-Chunk-Tick-Selection.patch b/CraftBukkit-Patches/0005-Better-Chunk-Tick-Selection.patch index 19772f190c..1dc2510655 100644 --- a/CraftBukkit-Patches/0005-Better-Chunk-Tick-Selection.patch +++ b/CraftBukkit-Patches/0005-Better-Chunk-Tick-Selection.patch @@ -1,11 +1,11 @@ -From a4f3a529237119d805302947bd76ddb384bd9379 Mon Sep 17 00:00:00 2001 +From 7b266e982dfda605efd4355fd0947d5f1ef34bac Mon Sep 17 00:00:00 2001 From: md_5 Date: Tue, 11 Jun 2013 12:56:02 +1000 Subject: [PATCH] Better Chunk Tick Selection diff --git a/src/main/java/net/minecraft/server/World.java b/src/main/java/net/minecraft/server/World.java -index de052bd..bc692dd 100644 +index 0dc673d..41baf2b 100644 --- a/src/main/java/net/minecraft/server/World.java +++ b/src/main/java/net/minecraft/server/World.java @@ -66,13 +66,35 @@ public abstract class World implements IBlockAccess { @@ -57,7 +57,7 @@ index de052bd..bc692dd 100644 this.O = this.random.nextInt(12000); this.H = new int['\u8000']; -@@ -1956,24 +1983,44 @@ public abstract class World implements IBlockAccess { +@@ -1955,24 +1982,44 @@ public abstract class World implements IBlockAccess { int j; int k; @@ -113,10 +113,10 @@ index de052bd..bc692dd 100644 this.methodProfiler.b(); diff --git a/src/main/java/net/minecraft/server/WorldServer.java b/src/main/java/net/minecraft/server/WorldServer.java -index 49360c1..6c3fcf1 100644 +index e787fb1..09d076e 100644 --- a/src/main/java/net/minecraft/server/WorldServer.java +++ b/src/main/java/net/minecraft/server/WorldServer.java -@@ -301,9 +301,19 @@ public class WorldServer extends World implements org.bukkit.BlockChangeDelegate +@@ -300,9 +300,19 @@ public class WorldServer extends World implements org.bukkit.BlockChangeDelegate // CraftBukkit start // Iterator iterator = this.chunkTickList.iterator(); @@ -139,7 +139,7 @@ index 49360c1..6c3fcf1 100644 // ChunkCoordIntPair chunkcoordintpair = (ChunkCoordIntPair) iterator.next(); int k = chunkX * 16; int l = chunkZ * 16; -@@ -401,6 +411,7 @@ public class WorldServer extends World implements org.bukkit.BlockChangeDelegate +@@ -400,6 +410,7 @@ public class WorldServer extends World implements org.bukkit.BlockChangeDelegate if (block != null && block.isTicking()) { ++i; diff --git a/CraftBukkit-Patches/0006-Crop-Growth-Rates.patch b/CraftBukkit-Patches/0006-Crop-Growth-Rates.patch index c2699f9671..d269e38fc8 100644 --- a/CraftBukkit-Patches/0006-Crop-Growth-Rates.patch +++ b/CraftBukkit-Patches/0006-Crop-Growth-Rates.patch @@ -1,14 +1,14 @@ -From abf5bc5b131b439231197b1a3159b0dcdc3c82ec Mon Sep 17 00:00:00 2001 +From e57cb696c341a8ec945e3b4cb90613add51ff8e1 Mon Sep 17 00:00:00 2001 From: md_5 Date: Fri, 21 Jun 2013 17:17:20 +1000 Subject: [PATCH] Crop Growth Rates diff --git a/src/main/java/net/minecraft/server/Block.java b/src/main/java/net/minecraft/server/Block.java -index 4392cb2..8e041c2 100644 +index 2a85c1c..afe8735 100644 --- a/src/main/java/net/minecraft/server/Block.java +++ b/src/main/java/net/minecraft/server/Block.java -@@ -768,4 +768,16 @@ public class Block { +@@ -781,4 +781,16 @@ public class Block { return 0; } // CraftBukkit end @@ -26,7 +26,7 @@ index 4392cb2..8e041c2 100644 + // Spigot end } diff --git a/src/main/java/net/minecraft/server/BlockCactus.java b/src/main/java/net/minecraft/server/BlockCactus.java -index 83cc09d..4376051 100644 +index 03eece7..758ab84 100644 --- a/src/main/java/net/minecraft/server/BlockCactus.java +++ b/src/main/java/net/minecraft/server/BlockCactus.java @@ -23,7 +23,7 @@ public class BlockCactus extends Block { @@ -39,7 +39,7 @@ index 83cc09d..4376051 100644 world.setData(i, j, k, 0, 4); this.doPhysics(world, i, j + 1, k, this.id); diff --git a/src/main/java/net/minecraft/server/BlockCrops.java b/src/main/java/net/minecraft/server/BlockCrops.java -index 14a1c3b..d3b6095 100644 +index e157fbe..84a809b 100644 --- a/src/main/java/net/minecraft/server/BlockCrops.java +++ b/src/main/java/net/minecraft/server/BlockCrops.java @@ -28,7 +28,7 @@ public class BlockCrops extends BlockFlower { @@ -66,10 +66,10 @@ index 6f9301d..2ccc0b8 100644 int j1 = j + random.nextInt(5) - 3; int k1 = k + random.nextInt(3) - 1; diff --git a/src/main/java/net/minecraft/server/BlockMushroom.java b/src/main/java/net/minecraft/server/BlockMushroom.java -index 872ad00..abc31ac 100644 +index 796527d..b4a6800 100644 --- a/src/main/java/net/minecraft/server/BlockMushroom.java +++ b/src/main/java/net/minecraft/server/BlockMushroom.java -@@ -27,7 +27,7 @@ public class BlockMushroom extends BlockFlower { +@@ -24,7 +24,7 @@ public class BlockMushroom extends BlockFlower { public void a(World world, int i, int j, int k, Random random) { final int sourceX = i, sourceY = j, sourceZ = k; // CraftBukkit @@ -106,10 +106,10 @@ index 8657860..cf52501 100644 world.setData(i, j, k, 0, 4); } else { diff --git a/src/main/java/net/minecraft/server/BlockSapling.java b/src/main/java/net/minecraft/server/BlockSapling.java -index 3b00939..ea34899 100644 +index 706d6c9..fe675b3 100644 --- a/src/main/java/net/minecraft/server/BlockSapling.java +++ b/src/main/java/net/minecraft/server/BlockSapling.java -@@ -26,7 +26,7 @@ public class BlockSapling extends BlockFlower { +@@ -25,7 +25,7 @@ public class BlockSapling extends BlockFlower { public void a(World world, int i, int j, int k, Random random) { if (!world.isStatic) { super.a(world, i, j, k, random); @@ -119,7 +119,7 @@ index 3b00939..ea34899 100644 } } diff --git a/src/main/java/net/minecraft/server/BlockStem.java b/src/main/java/net/minecraft/server/BlockStem.java -index 8339a35..c7e2344 100644 +index f2d4e57..5fe0a81 100644 --- a/src/main/java/net/minecraft/server/BlockStem.java +++ b/src/main/java/net/minecraft/server/BlockStem.java @@ -27,7 +27,7 @@ public class BlockStem extends BlockFlower { diff --git a/CraftBukkit-Patches/0008-More-Efficient-GetCubes.patch b/CraftBukkit-Patches/0008-More-Efficient-GetCubes.patch index b5a197c90a..8970c3cbb3 100644 --- a/CraftBukkit-Patches/0008-More-Efficient-GetCubes.patch +++ b/CraftBukkit-Patches/0008-More-Efficient-GetCubes.patch @@ -1,14 +1,14 @@ -From fbb1eeb9f5d6d721eed18bbe1ffae9cc31dd8ae5 Mon Sep 17 00:00:00 2001 +From d7b9305d672eb1fdb2e248e4f0f2c274e5021d70 Mon Sep 17 00:00:00 2001 From: md_5 Date: Tue, 11 Jun 2013 12:17:37 +1000 Subject: [PATCH] More Efficient GetCubes diff --git a/src/main/java/net/minecraft/server/World.java b/src/main/java/net/minecraft/server/World.java -index bc692dd..afe3e4d 100644 +index 41baf2b..18994b6 100644 --- a/src/main/java/net/minecraft/server/World.java +++ b/src/main/java/net/minecraft/server/World.java -@@ -1045,19 +1045,47 @@ public abstract class World implements IBlockAccess { +@@ -1044,19 +1044,47 @@ public abstract class World implements IBlockAccess { int i1 = MathHelper.floor(axisalignedbb.c); int j1 = MathHelper.floor(axisalignedbb.f + 1.0D); diff --git a/CraftBukkit-Patches/0009-Proxy-IP-Filter.patch b/CraftBukkit-Patches/0009-Proxy-IP-Filter.patch index fd42474828..201da8bf96 100644 --- a/CraftBukkit-Patches/0009-Proxy-IP-Filter.patch +++ b/CraftBukkit-Patches/0009-Proxy-IP-Filter.patch @@ -1,11 +1,11 @@ -From 6c8715e0ffd4ce12e51b1505bab0af4908744c2e Mon Sep 17 00:00:00 2001 +From af630d59b1f8a97ccf6d73b1d183a73d03c6f845 Mon Sep 17 00:00:00 2001 From: md_5 Date: Tue, 23 Apr 2013 11:22:07 +1000 Subject: [PATCH] Proxy IP Filter diff --git a/src/main/java/net/minecraft/server/ThreadLoginVerifier.java b/src/main/java/net/minecraft/server/ThreadLoginVerifier.java -index 0686ba0..1254e63 100644 +index 2ce2e3a..f87ebf9 100644 --- a/src/main/java/net/minecraft/server/ThreadLoginVerifier.java +++ b/src/main/java/net/minecraft/server/ThreadLoginVerifier.java @@ -28,6 +28,7 @@ class ThreadLoginVerifier extends Thread { @@ -13,9 +13,9 @@ index 0686ba0..1254e63 100644 public void run() { try { + if (org.spigotmc.SpamHaus.filterIp(pendingConnection)) return; // Spigot - String s = (new BigInteger(MinecraftEncryption.a(PendingConnection.a(this.pendingConnection), PendingConnection.b(this.pendingConnection).F().getPublic(), PendingConnection.c(this.pendingConnection)))).toString(16); + String s = (new BigInteger(MinecraftEncryption.a(PendingConnection.a(this.pendingConnection), PendingConnection.b(this.pendingConnection).H().getPublic(), PendingConnection.c(this.pendingConnection)))).toString(16); URL url = new URL("http://session.minecraft.net/game/checkserver.jsp?user=" + URLEncoder.encode(PendingConnection.d(this.pendingConnection), "UTF-8") + "&serverId=" + URLEncoder.encode(s, "UTF-8")); - BufferedReader bufferedreader = new BufferedReader(new InputStreamReader(url.openStream())); + BufferedReader bufferedreader = new BufferedReader(new InputStreamReader(url.openConnection(PendingConnection.b(this.pendingConnection).ap()).getInputStream())); diff --git a/src/main/java/org/spigotmc/SpamHaus.java b/src/main/java/org/spigotmc/SpamHaus.java new file mode 100644 index 0000000..55d8d12 @@ -67,7 +67,7 @@ index 0000000..55d8d12 + } +} diff --git a/src/main/java/org/spigotmc/SpigotConfig.java b/src/main/java/org/spigotmc/SpigotConfig.java -index 1d915fb..56ac067 100644 +index b7dbda4..e4eaecd 100644 --- a/src/main/java/org/spigotmc/SpigotConfig.java +++ b/src/main/java/org/spigotmc/SpigotConfig.java @@ -111,4 +111,10 @@ public class SpigotConfig diff --git a/CraftBukkit-Patches/0010-Merge-tweaks-and-configuration.patch b/CraftBukkit-Patches/0010-Merge-tweaks-and-configuration.patch index 5f9983a889..007529d8ea 100644 --- a/CraftBukkit-Patches/0010-Merge-tweaks-and-configuration.patch +++ b/CraftBukkit-Patches/0010-Merge-tweaks-and-configuration.patch @@ -1,4 +1,4 @@ -From 7ec8ae26036858173a7c318944efa17ad2100cea Mon Sep 17 00:00:00 2001 +From dcf697293680dd7593a8e1f92ac65b36c7be48db Mon Sep 17 00:00:00 2001 From: md_5 Date: Sat, 23 Mar 2013 09:46:33 +1100 Subject: [PATCH] Merge tweaks and configuration @@ -6,13 +6,13 @@ Subject: [PATCH] Merge tweaks and configuration This allows the merging of Experience orbs, as well as the configuration of the merge radius of items. Additionally it refactors the merge algorithm to be a better experience for players. diff --git a/src/main/java/net/minecraft/server/EntityItem.java b/src/main/java/net/minecraft/server/EntityItem.java -index 0225f53..048e8fa 100644 +index cb2b114..6895b53 100644 --- a/src/main/java/net/minecraft/server/EntityItem.java +++ b/src/main/java/net/minecraft/server/EntityItem.java -@@ -114,7 +114,10 @@ public class EntityItem extends Entity { +@@ -112,7 +112,10 @@ public class EntityItem extends Entity { } - private void g() { + private void e() { - Iterator iterator = this.world.a(EntityItem.class, this.boundingBox.grow(0.5D, 0.0D, 0.5D)).iterator(); + // Spigot start + double radius = world.spigotConfig.itemMerge; @@ -21,7 +21,7 @@ index 0225f53..048e8fa 100644 while (iterator.hasNext()) { EntityItem entityitem = (EntityItem) iterator.next(); -@@ -143,11 +146,13 @@ public class EntityItem extends Entity { +@@ -141,11 +144,13 @@ public class EntityItem extends Entity { } else if (itemstack1.count + itemstack.count > itemstack1.getMaxStackSize()) { return false; } else { @@ -41,10 +41,10 @@ index 0225f53..048e8fa 100644 } } else { diff --git a/src/main/java/net/minecraft/server/World.java b/src/main/java/net/minecraft/server/World.java -index afe3e4d..97da2cd 100644 +index 18994b6..3e7c493 100644 --- a/src/main/java/net/minecraft/server/World.java +++ b/src/main/java/net/minecraft/server/World.java -@@ -957,6 +957,23 @@ public abstract class World implements IBlockAccess { +@@ -956,6 +956,23 @@ public abstract class World implements IBlockAccess { // Not all projectiles extend EntityProjectile, so check for Bukkit interface instead event = CraftEventFactory.callProjectileLaunchEvent(entity); } diff --git a/CraftBukkit-Patches/0012-Async-Operation-Catching.patch b/CraftBukkit-Patches/0012-Async-Operation-Catching.patch index 01cafd622e..d996e8817a 100644 --- a/CraftBukkit-Patches/0012-Async-Operation-Catching.patch +++ b/CraftBukkit-Patches/0012-Async-Operation-Catching.patch @@ -1,4 +1,4 @@ -From a8c529d46c95e00dc30e16fec26a5af608e2db78 Mon Sep 17 00:00:00 2001 +From 20ac68be1e39187e6c5f68d20619c86bacd05cb9 Mon Sep 17 00:00:00 2001 From: md_5 Date: Thu, 7 Mar 2013 20:12:46 +1100 Subject: [PATCH] Async Operation Catching @@ -6,10 +6,10 @@ Subject: [PATCH] Async Operation Catching Catch and throw an exception when a potentially unsafe operation occurs on a thread other than the main server thread. diff --git a/src/main/java/net/minecraft/server/EntityTracker.java b/src/main/java/net/minecraft/server/EntityTracker.java -index 9e2b76f..d7efe3e 100644 +index a8e45dd..7f23f71 100644 --- a/src/main/java/net/minecraft/server/EntityTracker.java +++ b/src/main/java/net/minecraft/server/EntityTracker.java -@@ -89,6 +89,7 @@ public class EntityTracker { +@@ -87,6 +87,7 @@ public class EntityTracker { } public void addEntity(Entity entity, int i, int j, boolean flag) { @@ -17,7 +17,7 @@ index 9e2b76f..d7efe3e 100644 if (i > this.d) { i = this.d; } -@@ -124,6 +125,7 @@ public class EntityTracker { +@@ -122,6 +123,7 @@ public class EntityTracker { } public void untrackEntity(Entity entity) { @@ -26,10 +26,10 @@ index 9e2b76f..d7efe3e 100644 EntityPlayer entityplayer = (EntityPlayer) entity; Iterator iterator = this.b.iterator(); diff --git a/src/main/java/net/minecraft/server/EntityTrackerEntry.java b/src/main/java/net/minecraft/server/EntityTrackerEntry.java -index 5c03732..5f3c780 100644 +index e58af63..edd2460 100644 --- a/src/main/java/net/minecraft/server/EntityTrackerEntry.java +++ b/src/main/java/net/minecraft/server/EntityTrackerEntry.java -@@ -286,6 +286,7 @@ public class EntityTrackerEntry { +@@ -292,6 +292,7 @@ public class EntityTrackerEntry { } public void updatePlayer(EntityPlayer entityplayer) { @@ -37,7 +37,7 @@ index 5c03732..5f3c780 100644 if (entityplayer != this.tracker) { double d0 = entityplayer.locX - (double) (this.xLoc / 32); double d1 = entityplayer.locZ - (double) (this.zLoc / 32); -@@ -474,6 +475,7 @@ public class EntityTrackerEntry { +@@ -501,6 +502,7 @@ public class EntityTrackerEntry { } public void clear(EntityPlayer entityplayer) { @@ -46,10 +46,10 @@ index 5c03732..5f3c780 100644 this.trackedPlayers.remove(entityplayer); entityplayer.removeQueue.add(Integer.valueOf(this.tracker.id)); diff --git a/src/main/java/net/minecraft/server/World.java b/src/main/java/net/minecraft/server/World.java -index d7e5301..e353caa 100644 +index 3e7c493..04fa7d6 100644 --- a/src/main/java/net/minecraft/server/World.java +++ b/src/main/java/net/minecraft/server/World.java -@@ -926,6 +926,7 @@ public abstract class World implements IBlockAccess { +@@ -925,6 +925,7 @@ public abstract class World implements IBlockAccess { } public boolean addEntity(Entity entity, SpawnReason spawnReason) { // Changed signature, added SpawnReason @@ -57,7 +57,7 @@ index d7e5301..e353caa 100644 if (entity == null) return false; // CraftBukkit end -@@ -1032,6 +1033,7 @@ public abstract class World implements IBlockAccess { +@@ -1031,6 +1032,7 @@ public abstract class World implements IBlockAccess { } public void removeEntity(Entity entity) { @@ -65,7 +65,7 @@ index d7e5301..e353caa 100644 entity.die(); if (entity instanceof EntityHuman) { this.players.remove(entity); -@@ -2449,6 +2451,7 @@ public abstract class World implements IBlockAccess { +@@ -2448,6 +2450,7 @@ public abstract class World implements IBlockAccess { } public void a(List list) { @@ -74,7 +74,7 @@ index d7e5301..e353caa 100644 Entity entity = null; for (int i = 0; i < list.size(); ++i) { diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java -index c0fb528..edc59b1 100644 +index 4c16040..8508d22 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java @@ -160,6 +160,7 @@ public class CraftWorld implements World { @@ -102,7 +102,7 @@ index c0fb528..edc59b1 100644 if (generate) { // Use the default variant of loadChunk when generate == true. diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index df07a9b..7cae665 100644 +index 1d97430..b3bb702 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java @@ -214,6 +214,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player { diff --git a/CraftBukkit-Patches/0013-View-Distance.patch b/CraftBukkit-Patches/0013-View-Distance.patch index d02b11d729..46697f08ea 100644 --- a/CraftBukkit-Patches/0013-View-Distance.patch +++ b/CraftBukkit-Patches/0013-View-Distance.patch @@ -1,4 +1,4 @@ -From 25fa2cfa4437bbbe2eb832d7ec12070d8842a087 Mon Sep 17 00:00:00 2001 +From 70bf4a9446eddbe4a3dad0be25ecfdefe1f0af39 Mon Sep 17 00:00:00 2001 From: md_5 Date: Sat, 23 Mar 2013 09:52:41 +1100 Subject: [PATCH] View Distance @@ -6,10 +6,10 @@ Subject: [PATCH] View Distance This commit allows the user to select per world view distances, and view distances below 3. Be wary of the issues selecting a view distance of 1 or 2 may cause! diff --git a/src/main/java/net/minecraft/server/PlayerChunkMap.java b/src/main/java/net/minecraft/server/PlayerChunkMap.java -index 0dfd190..c543bed 100644 +index 4e0398c..ae4ca63 100644 --- a/src/main/java/net/minecraft/server/PlayerChunkMap.java +++ b/src/main/java/net/minecraft/server/PlayerChunkMap.java -@@ -22,7 +22,7 @@ public class PlayerChunkMap { +@@ -24,7 +24,7 @@ public class PlayerChunkMap { public PlayerChunkMap(WorldServer worldserver, int i) { if (i > 15) { throw new IllegalArgumentException("Too big view radius!"); @@ -17,12 +17,12 @@ index 0dfd190..c543bed 100644 + } else if (i < 1) { throw new IllegalArgumentException("Too small view radius!"); } else { - this.e = i; + this.f = i; diff --git a/src/main/java/net/minecraft/server/WorldServer.java b/src/main/java/net/minecraft/server/WorldServer.java -index 6c3fcf1..614a17f 100644 +index 09d076e..c4248d0 100644 --- a/src/main/java/net/minecraft/server/WorldServer.java +++ b/src/main/java/net/minecraft/server/WorldServer.java -@@ -48,7 +48,7 @@ public class WorldServer extends World implements org.bukkit.BlockChangeDelegate +@@ -49,7 +49,7 @@ public class WorldServer extends World implements org.bukkit.BlockChangeDelegate // CraftBukkit end this.server = minecraftserver; this.tracker = new EntityTracker(this); @@ -32,7 +32,7 @@ index 6c3fcf1..614a17f 100644 this.entitiesById = new IntHashMap(); } diff --git a/src/main/java/org/spigotmc/SpigotWorldConfig.java b/src/main/java/org/spigotmc/SpigotWorldConfig.java -index ea7c211..81879e6 100644 +index 8a6d656..c2da03b 100644 --- a/src/main/java/org/spigotmc/SpigotWorldConfig.java +++ b/src/main/java/org/spigotmc/SpigotWorldConfig.java @@ -116,4 +116,11 @@ public class SpigotWorldConfig diff --git a/CraftBukkit-Patches/0014-Compressed-Nibble-Arrays.patch b/CraftBukkit-Patches/0014-Compressed-Nibble-Arrays.patch index 4505ec2493..62abfca3db 100644 --- a/CraftBukkit-Patches/0014-Compressed-Nibble-Arrays.patch +++ b/CraftBukkit-Patches/0014-Compressed-Nibble-Arrays.patch @@ -1,4 +1,4 @@ -From c34bbcf522c081442110baf7b9499eff7939b4a1 Mon Sep 17 00:00:00 2001 +From 92a6ffad3c78692c77614e848c7b42c76b273889 Mon Sep 17 00:00:00 2001 From: Mike Primm Date: Sun, 13 Jan 2013 03:49:07 -0800 Subject: [PATCH] Compressed Nibble Arrays @@ -12,10 +12,10 @@ Finish up NibbleArray lightening work - use for Snapshots, reduce copies Fix nibble handling with NBT - arrays aren't copied by NBTByteArray diff --git a/src/main/java/net/minecraft/server/ChunkRegionLoader.java b/src/main/java/net/minecraft/server/ChunkRegionLoader.java -index 5c67fe4..3f3c07e 100644 +index ba6d32f..0b086a2 100644 --- a/src/main/java/net/minecraft/server/ChunkRegionLoader.java +++ b/src/main/java/net/minecraft/server/ChunkRegionLoader.java -@@ -217,15 +217,15 @@ public class ChunkRegionLoader implements IAsyncChunkSaver, IChunkLoader { +@@ -218,15 +218,15 @@ public class ChunkRegionLoader implements IAsyncChunkSaver, IChunkLoader { nbttagcompound1.setByte("Y", (byte) (chunksection.getYPosition() >> 4 & 255)); nbttagcompound1.setByteArray("Blocks", chunksection.getIdArray()); if (chunksection.getExtendedIdArray() != null) { @@ -271,64 +271,209 @@ index 53c1cb5..9a9e20f 100644 } } diff --git a/src/main/java/net/minecraft/server/Packet51MapChunk.java b/src/main/java/net/minecraft/server/Packet51MapChunk.java -index 97c953b..3c3bdbf 100644 ---- a/src/main/java/net/minecraft/server/Packet51MapChunk.java +new file mode 100644 +index 0000000..3c3bdbf +--- /dev/null +++ b/src/main/java/net/minecraft/server/Packet51MapChunk.java -@@ -139,16 +139,22 @@ public class Packet51MapChunk extends Packet { - for (l = 0; l < achunksection.length; ++l) { - if (achunksection[l] != null && (!flag || !achunksection[l].isEmpty()) && (i & 1 << l) != 0) { - nibblearray = achunksection[l].getDataArray(); -- System.arraycopy(nibblearray.a, 0, abyte, j, nibblearray.a.length); -- j += nibblearray.a.length; +@@ -0,0 +1,198 @@ ++package net.minecraft.server; ++ ++import java.io.DataInputStream; ++import java.io.DataOutputStream; ++import java.io.IOException; ++import java.util.zip.DataFormatException; ++import java.util.zip.Deflater; ++import java.util.zip.Inflater; ++ ++public class Packet51MapChunk extends Packet { ++ ++ public int a; ++ public int b; ++ public int c; ++ public int d; ++ private byte[] buffer; ++ private byte[] inflatedBuffer; ++ public boolean e; ++ private int size; ++ private static byte[] buildBuffer = new byte[196864]; ++ ++ public Packet51MapChunk() { ++ this.lowPriority = true; ++ } ++ ++ public Packet51MapChunk(Chunk chunk, boolean flag, int i) { ++ this.lowPriority = true; ++ this.a = chunk.x; ++ this.b = chunk.z; ++ this.e = flag; ++ ChunkMap chunkmap = a(chunk, flag, i); ++ Deflater deflater = new Deflater(-1); ++ ++ this.d = chunkmap.c; ++ this.c = chunkmap.b; ++ ++ try { ++ this.inflatedBuffer = chunkmap.a; ++ deflater.setInput(chunkmap.a, 0, chunkmap.a.length); ++ deflater.finish(); ++ this.buffer = new byte[chunkmap.a.length]; ++ this.size = deflater.deflate(this.buffer); ++ } finally { ++ deflater.end(); ++ } ++ } ++ ++ public void a(DataInputStream datainputstream) throws IOException { // CraftBukkit - throws IOException ++ this.a = datainputstream.readInt(); ++ this.b = datainputstream.readInt(); ++ this.e = datainputstream.readBoolean(); ++ this.c = datainputstream.readShort(); ++ this.d = datainputstream.readShort(); ++ this.size = datainputstream.readInt(); ++ if (buildBuffer.length < this.size) { ++ buildBuffer = new byte[this.size]; ++ } ++ ++ datainputstream.readFully(buildBuffer, 0, this.size); ++ int i = 0; ++ ++ int j; ++ ++ for (j = 0; j < 16; ++j) { ++ i += this.c >> j & 1; ++ } ++ ++ j = 12288 * i; ++ if (this.e) { ++ j += 256; ++ } ++ ++ this.inflatedBuffer = new byte[j]; ++ Inflater inflater = new Inflater(); ++ ++ inflater.setInput(buildBuffer, 0, this.size); ++ ++ try { ++ inflater.inflate(this.inflatedBuffer); ++ } catch (DataFormatException dataformatexception) { ++ throw new IOException("Bad compressed data format"); ++ } finally { ++ inflater.end(); ++ } ++ } ++ ++ public void a(DataOutputStream dataoutputstream) throws IOException { // CraftBukkit - throws IOException ++ dataoutputstream.writeInt(this.a); ++ dataoutputstream.writeInt(this.b); ++ dataoutputstream.writeBoolean(this.e); ++ dataoutputstream.writeShort((short) (this.c & '\uffff')); ++ dataoutputstream.writeShort((short) (this.d & '\uffff')); ++ dataoutputstream.writeInt(this.size); ++ dataoutputstream.write(this.buffer, 0, this.size); ++ } ++ ++ public void handle(Connection connection) { ++ connection.a(this); ++ } ++ ++ public int a() { ++ return 17 + this.size; ++ } ++ ++ public static ChunkMap a(Chunk chunk, boolean flag, int i) { ++ int j = 0; ++ ChunkSection[] achunksection = chunk.i(); ++ int k = 0; ++ ChunkMap chunkmap = new ChunkMap(); ++ byte[] abyte = buildBuffer; ++ ++ if (flag) { ++ chunk.seenByPlayer = true; ++ } ++ ++ int l; ++ ++ for (l = 0; l < achunksection.length; ++l) { ++ if (achunksection[l] != null && (!flag || !achunksection[l].isEmpty()) && (i & 1 << l) != 0) { ++ chunkmap.b |= 1 << l; ++ if (achunksection[l].getExtendedIdArray() != null) { ++ chunkmap.c |= 1 << l; ++ ++k; ++ } ++ } ++ } ++ ++ for (l = 0; l < achunksection.length; ++l) { ++ if (achunksection[l] != null && (!flag || !achunksection[l].isEmpty()) && (i & 1 << l) != 0) { ++ byte[] abyte1 = achunksection[l].getIdArray(); ++ ++ System.arraycopy(abyte1, 0, abyte, j, abyte1.length); ++ j += abyte1.length; ++ } ++ } ++ ++ NibbleArray nibblearray; ++ ++ for (l = 0; l < achunksection.length; ++l) { ++ if (achunksection[l] != null && (!flag || !achunksection[l].isEmpty()) && (i & 1 << l) != 0) { ++ nibblearray = achunksection[l].getDataArray(); + // Spigot start + // System.arraycopy(nibblearray.a, 0, abyte, j, nibblearray.a.length); + // j += nibblearray.a.length; + j = nibblearray.copyToByteArray(abyte, j); + // Spigot end - } - } - - for (l = 0; l < achunksection.length; ++l) { - if (achunksection[l] != null && (!flag || !achunksection[l].isEmpty()) && (i & 1 << l) != 0) { - nibblearray = achunksection[l].getEmittedLightArray(); -- System.arraycopy(nibblearray.a, 0, abyte, j, nibblearray.a.length); -- j += nibblearray.a.length; ++ } ++ } ++ ++ for (l = 0; l < achunksection.length; ++l) { ++ if (achunksection[l] != null && (!flag || !achunksection[l].isEmpty()) && (i & 1 << l) != 0) { ++ nibblearray = achunksection[l].getEmittedLightArray(); + // Spigot start + // System.arraycopy(nibblearray.a, 0, abyte, j, nibblearray.a.length); + // j += nibblearray.a.length; + j = nibblearray.copyToByteArray(abyte, j); + // Spigot end - } - } - -@@ -156,8 +162,11 @@ public class Packet51MapChunk extends Packet { - for (l = 0; l < achunksection.length; ++l) { - if (achunksection[l] != null && (!flag || !achunksection[l].isEmpty()) && (i & 1 << l) != 0) { - nibblearray = achunksection[l].getSkyLightArray(); -- System.arraycopy(nibblearray.a, 0, abyte, j, nibblearray.a.length); -- j += nibblearray.a.length; ++ } ++ } ++ ++ if (!chunk.world.worldProvider.f) { ++ for (l = 0; l < achunksection.length; ++l) { ++ if (achunksection[l] != null && (!flag || !achunksection[l].isEmpty()) && (i & 1 << l) != 0) { ++ nibblearray = achunksection[l].getSkyLightArray(); + // Spigot start + // System.arraycopy(nibblearray.a, 0, abyte, j, nibblearray.a.length); + // j += nibblearray.a.length; + j = nibblearray.copyToByteArray(abyte, j); + // Spigot end - } - } - } -@@ -166,8 +175,11 @@ public class Packet51MapChunk extends Packet { - for (l = 0; l < achunksection.length; ++l) { - if (achunksection[l] != null && (!flag || !achunksection[l].isEmpty()) && achunksection[l].getExtendedIdArray() != null && (i & 1 << l) != 0) { - nibblearray = achunksection[l].getExtendedIdArray(); -- System.arraycopy(nibblearray.a, 0, abyte, j, nibblearray.a.length); -- j += nibblearray.a.length; ++ } ++ } ++ } ++ ++ if (k > 0) { ++ for (l = 0; l < achunksection.length; ++l) { ++ if (achunksection[l] != null && (!flag || !achunksection[l].isEmpty()) && achunksection[l].getExtendedIdArray() != null && (i & 1 << l) != 0) { ++ nibblearray = achunksection[l].getExtendedIdArray(); + // Spigot start + //System.arraycopy(nibblearray.a, 0, abyte, j, nibblearray.a.length); + //j += nibblearray.a.length; + j = nibblearray.copyToByteArray(abyte, j); + // Spigot end - } - } - } ++ } ++ } ++ } ++ ++ if (flag) { ++ byte[] abyte2 = chunk.m(); ++ ++ System.arraycopy(abyte2, 0, abyte, j, abyte2.length); ++ j += abyte2.length; ++ } ++ ++ chunkmap.a = new byte[j]; ++ System.arraycopy(abyte, 0, chunkmap.a, 0, j); ++ return chunkmap; ++ } ++} diff --git a/src/main/java/org/bukkit/craftbukkit/CraftChunk.java b/src/main/java/org/bukkit/craftbukkit/CraftChunk.java index 1a21516..6921206 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftChunk.java diff --git a/CraftBukkit-Patches/0015-Optimize-Chunk-Unload-Packet.patch b/CraftBukkit-Patches/0015-Optimize-Chunk-Unload-Packet.patch index fa21c598ba..7c74977d7d 100644 --- a/CraftBukkit-Patches/0015-Optimize-Chunk-Unload-Packet.patch +++ b/CraftBukkit-Patches/0015-Optimize-Chunk-Unload-Packet.patch @@ -1,4 +1,4 @@ -From 93bb757069c358d8f45c8e92d005a45c83de9286 Mon Sep 17 00:00:00 2001 +From 9007f313ede8a4a7711890086191f20e8c6b14f8 Mon Sep 17 00:00:00 2001 From: Ammar Askar Date: Fri, 18 Jan 2013 16:20:01 +0500 Subject: [PATCH] Optimize Chunk Unload Packet @@ -35,14 +35,17 @@ index 3c3bdbf..d11c0ea 100644 this.lowPriority = true; this.a = chunk.x; diff --git a/src/main/java/net/minecraft/server/PlayerChunk.java b/src/main/java/net/minecraft/server/PlayerChunk.java -index 10a43b6..20f8e8a 100644 +index 81d66e4..c4a6724 100644 --- a/src/main/java/net/minecraft/server/PlayerChunk.java +++ b/src/main/java/net/minecraft/server/PlayerChunk.java -@@ -52,7 +52,7 @@ class PlayerChunk { +@@ -56,9 +56,9 @@ class PlayerChunk { public void b(EntityPlayer entityplayer) { if (this.b.contains(entityplayer)) { -- entityplayer.playerConnection.sendPacket(new Packet51MapChunk(PlayerChunkMap.a(this.playerChunkMap).getChunkAt(this.location.x, this.location.z), true, 0)); +- Chunk chunk = PlayerChunkMap.a(this.playerChunkMap).getChunkAt(this.location.x, this.location.z); ++ // Chunk chunk = PlayerChunkMap.a(this.playerChunkMap).getChunkAt(this.location.x, this.location.z); + +- entityplayer.playerConnection.sendPacket(new Packet51MapChunk(chunk, true, 0)); + entityplayer.playerConnection.sendPacket(new Packet51MapChunk(this.location.x, this.location.z)); // Spigot - remove chunk load call just to unload in favour of specialized constructor this.b.remove(entityplayer); entityplayer.chunkCoordIntPairQueue.remove(this.location); diff --git a/CraftBukkit-Patches/0016-Sync-Free-Chunk-Reference-Cache.patch b/CraftBukkit-Patches/0016-Sync-Free-Chunk-Reference-Cache.patch index c62b47709b..71b577cde6 100644 --- a/CraftBukkit-Patches/0016-Sync-Free-Chunk-Reference-Cache.patch +++ b/CraftBukkit-Patches/0016-Sync-Free-Chunk-Reference-Cache.patch @@ -1,14 +1,14 @@ -From 27aa389075a5b22ffad6e7c8d4d42b9315aa1bc0 Mon Sep 17 00:00:00 2001 +From a1a850630d7e5f670fded63744285f7160e47257 Mon Sep 17 00:00:00 2001 From: Mike Primm Date: Wed, 16 Jan 2013 15:27:22 -0600 Subject: [PATCH] Sync Free Chunk Reference Cache diff --git a/src/main/java/net/minecraft/server/World.java b/src/main/java/net/minecraft/server/World.java -index e353caa..a81e06d 100644 +index 04fa7d6..8c4bbf9 100644 --- a/src/main/java/net/minecraft/server/World.java +++ b/src/main/java/net/minecraft/server/World.java -@@ -301,15 +301,13 @@ public abstract class World implements IBlockAccess { +@@ -300,15 +300,13 @@ public abstract class World implements IBlockAccess { // CraftBukkit start public Chunk getChunkAt(int i, int j) { diff --git a/CraftBukkit-Patches/0017-Highly-Optimized-Tick-Loop.patch b/CraftBukkit-Patches/0017-Highly-Optimized-Tick-Loop.patch index 153516809e..085d4e093d 100644 --- a/CraftBukkit-Patches/0017-Highly-Optimized-Tick-Loop.patch +++ b/CraftBukkit-Patches/0017-Highly-Optimized-Tick-Loop.patch @@ -1,14 +1,14 @@ -From ac8a1f6656ae9cd13e08c9e25b379769c9a6c7ae Mon Sep 17 00:00:00 2001 +From 9eb7c67eb82703dcffc537f751b364062345f23d Mon Sep 17 00:00:00 2001 From: md_5 Date: Sun, 3 Feb 2013 12:28:17 +1100 Subject: [PATCH] Highly Optimized Tick Loop diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index 3e134fb..3c80340 100644 +index 96d291d..4c845ca 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java -@@ -84,6 +84,12 @@ public abstract class MinecraftServer implements ICommandListener, Runnable, IMo +@@ -86,6 +86,12 @@ public abstract class MinecraftServer implements ICommandListener, Runnable, IMo public java.util.Queue processQueue = new java.util.concurrent.ConcurrentLinkedQueue(); public int autosavePeriod; // CraftBukkit end @@ -20,22 +20,22 @@ index 3e134fb..3c80340 100644 + // Spigot end public MinecraftServer(OptionSet options) { // CraftBukkit - signature file -> OptionSet - k = this; -@@ -380,39 +386,23 @@ public abstract class MinecraftServer implements ICommandListener, Runnable, IMo + this.c = Proxy.NO_PROXY; +@@ -390,39 +396,23 @@ public abstract class MinecraftServer implements ICommandListener, Runnable, IMo public void run() { try { if (this.init()) { -- long i = System.currentTimeMillis(); +- long i = aq(); - -- for (long j = 0L; this.isRunning; this.P = true) { -- long k = System.currentTimeMillis(); +- for (long j = 0L; this.isRunning; this.Q = true) { +- long k = aq(); - long l = k - i; - -- if (l > 2000L && i - this.Q >= 15000L) { +- if (l > 2000L && i - this.R >= 15000L) { - if (this.server.getWarnOnOverload()) // CraftBukkit - Added option to suppress warning messages - this.getLogger().warning("Can\'t keep up! Did the system time change, or is the server overloaded?"); - l = 2000L; -- this.Q = i; +- this.R = i; - } - - if (l < 0L) { @@ -46,10 +46,10 @@ index 3e134fb..3c80340 100644 - j += l; - i = k; - if (this.worlds.get(0).everyoneDeeplySleeping()) { // CraftBukkit -- this.q(); +- this.s(); - j = 0L; + // Spigot start -+ for (long lastTick = 0L; this.isRunning; this.P = true) { ++ for (long lastTick = 0L; this.isRunning; this.Q = true) { + long curTime = System.nanoTime(); + long wait = TICK_TIME - (curTime - lastTick) - catchupTime; + if (wait > 0) { @@ -60,7 +60,7 @@ index 3e134fb..3c80340 100644 - while (j > 50L) { - MinecraftServer.currentTick = (int) (System.currentTimeMillis() / 50); // CraftBukkit - j -= 50L; -- this.q(); +- this.s(); - } + catchupTime = Math.min(TICK_TIME * TPS, Math.abs(wait)); } @@ -69,7 +69,7 @@ index 3e134fb..3c80340 100644 + currentTPS = (currentTPS * 0.95) + (1E9 / (curTime - lastTick) * 0.05); + lastTick = curTime; + MinecraftServer.currentTick++; -+ this.q(); ++ this.s(); } + // Spigot end } else { @@ -117,7 +117,7 @@ index 0000000..f114a31 + } +} diff --git a/src/main/java/org/spigotmc/SpigotConfig.java b/src/main/java/org/spigotmc/SpigotConfig.java -index 56ac067..d22e8e5 100644 +index e4eaecd..7880a31 100644 --- a/src/main/java/org/spigotmc/SpigotConfig.java +++ b/src/main/java/org/spigotmc/SpigotConfig.java @@ -14,6 +14,7 @@ import net.minecraft.server.MinecraftServer; diff --git a/CraftBukkit-Patches/0018-Improved-Timings-System.patch b/CraftBukkit-Patches/0018-Improved-Timings-System.patch index 5046c39f55..33235c6a6e 100644 --- a/CraftBukkit-Patches/0018-Improved-Timings-System.patch +++ b/CraftBukkit-Patches/0018-Improved-Timings-System.patch @@ -1,4 +1,4 @@ -From 6a85506600fad57b57f604edc72a6ef581d12845 Mon Sep 17 00:00:00 2001 +From 3f038fef4412774a096de4906029304cd000af27 Mon Sep 17 00:00:00 2001 From: Aikar Date: Thu, 10 Jan 2013 00:18:11 -0500 Subject: [PATCH] Improved Timings System @@ -26,7 +26,7 @@ index b73f69c..17934c0 100644 // CraftBukkit start - If we didn't need to load the chunk run the callback now diff --git a/src/main/java/net/minecraft/server/Entity.java b/src/main/java/net/minecraft/server/Entity.java -index 0f7be97..978b6ef 100644 +index 3953bc4..72c6e66 100644 --- a/src/main/java/net/minecraft/server/Entity.java +++ b/src/main/java/net/minecraft/server/Entity.java @@ -14,6 +14,7 @@ import org.bukkit.block.BlockFace; @@ -39,14 +39,14 @@ index 0f7be97..978b6ef 100644 import org.bukkit.event.vehicle.VehicleBlockCollisionEvent; @@ -110,6 +111,8 @@ public abstract class Entity { public EnumEntitySize at; - public boolean valid = false; // CraftBukkit + public boolean valid; // CraftBukkit + public CustomTimingsHandler tickTimer = org.bukkit.craftbukkit.SpigotTimings.getEntityTimings(this); // Spigot + public Entity(World world) { this.id = entityCount++; this.l = 1.0D; -@@ -423,6 +426,7 @@ public abstract class Entity { +@@ -400,6 +403,7 @@ public abstract class Entity { } // CraftBukkit end @@ -54,7 +54,7 @@ index 0f7be97..978b6ef 100644 if (this.Z) { this.boundingBox.d(d0, d1, d2); this.locX = (this.boundingBox.a + this.boundingBox.d) / 2.0D; -@@ -722,6 +726,7 @@ public abstract class Entity { +@@ -708,6 +712,7 @@ public abstract class Entity { this.world.methodProfiler.b(); } @@ -62,80 +62,11 @@ index 0f7be97..978b6ef 100644 } protected void C() { -diff --git a/src/main/java/net/minecraft/server/EntityLiving.java b/src/main/java/net/minecraft/server/EntityLiving.java -index 965e6ce..58a4acb 100644 ---- a/src/main/java/net/minecraft/server/EntityLiving.java -+++ b/src/main/java/net/minecraft/server/EntityLiving.java -@@ -497,6 +497,7 @@ public abstract class EntityLiving extends Entity { - } - - public void l_() { -+ org.bukkit.craftbukkit.SpigotTimings.timerEntityBaseTick.startTiming(); // Spigot - super.l_(); - if (!this.world.isStatic) { - int i; -@@ -523,7 +524,9 @@ public abstract class EntityLiving extends Entity { - } - } - -+ org.bukkit.craftbukkit.SpigotTimings.timerEntityBaseTick.stopTiming(); // Spigot - this.c(); -+ org.bukkit.craftbukkit.SpigotTimings.timerEntityTickRest.startTiming(); // Spigot - double d0 = this.locX - this.lastX; - double d1 = this.locZ - this.lastZ; - float f = (float) (d0 * d0 + d1 * d1); -@@ -614,6 +617,7 @@ public abstract class EntityLiving extends Entity { - - this.world.methodProfiler.b(); - this.aE += f2; -+ org.bukkit.craftbukkit.SpigotTimings.timerEntityTickRest.stopTiming(); // Spigot - } - - // CraftBukkit start - Delegate so we can handle providing a reason for health being regained -@@ -1254,6 +1258,7 @@ public abstract class EntityLiving extends Entity { - } - - public void c() { -+ org.bukkit.craftbukkit.SpigotTimings.timerEntityAI.startTiming(); // Spigot - if (this.bX > 0) { - --this.bX; - } -@@ -1305,6 +1310,7 @@ public abstract class EntityLiving extends Entity { - this.aA = this.yaw; - } - } -+ org.bukkit.craftbukkit.SpigotTimings.timerEntityAI.stopTiming(); // Spigot - - this.world.methodProfiler.b(); - this.world.methodProfiler.a("jump"); -@@ -1323,6 +1329,7 @@ public abstract class EntityLiving extends Entity { - - this.world.methodProfiler.b(); - this.world.methodProfiler.a("travel"); -+ org.bukkit.craftbukkit.SpigotTimings.timerEntityAIMove.startTiming(); // Spigot - this.bD *= 0.98F; - this.bE *= 0.98F; - this.bF *= 0.9F; -@@ -1331,11 +1338,14 @@ public abstract class EntityLiving extends Entity { - this.aO *= this.bE(); - this.e(this.bD, this.bE); - this.aO = f; -+ org.bukkit.craftbukkit.SpigotTimings.timerEntityAIMove.stopTiming(); // Spigot - this.world.methodProfiler.b(); - this.world.methodProfiler.a("push"); -+ org.bukkit.craftbukkit.SpigotTimings.timerEntityAICollision.startTiming(); // Spigot - if (!this.world.isStatic) { - this.bg(); - } -+ org.bukkit.craftbukkit.SpigotTimings.timerEntityAICollision.stopTiming(); // Spigot - - this.world.methodProfiler.b(); - this.world.methodProfiler.a("looting"); diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index 3c80340..db396b3 100644 +index 4c845ca..f114444 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java -@@ -6,7 +6,6 @@ import java.security.KeyPair; +@@ -7,7 +7,6 @@ import java.security.KeyPair; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; @@ -143,7 +74,7 @@ index 3c80340..db396b3 100644 import java.util.List; import java.util.concurrent.Callable; import java.util.logging.Level; -@@ -19,6 +18,7 @@ import jline.console.ConsoleReader; +@@ -20,6 +19,7 @@ import jline.console.ConsoleReader; import joptsimple.OptionSet; import org.bukkit.World.Environment; @@ -151,26 +82,26 @@ index 3c80340..db396b3 100644 import org.bukkit.craftbukkit.util.Waitable; import org.bukkit.event.server.RemoteServerCommandEvent; import org.bukkit.event.world.WorldSaveEvent; -@@ -400,7 +400,10 @@ public abstract class MinecraftServer implements ICommandListener, Runnable, IMo +@@ -410,7 +410,10 @@ public abstract class MinecraftServer implements ICommandListener, Runnable, IMo currentTPS = (currentTPS * 0.95) + (1E9 / (curTime - lastTick) * 0.05); lastTick = curTime; MinecraftServer.currentTick++; + SpigotTimings.serverTickTimer.startTiming(); - this.q(); + this.s(); + SpigotTimings.serverTickTimer.stopTiming(); + org.spigotmc.CustomTimingsHandler.tick(); } // Spigot end } else { -@@ -499,6 +502,7 @@ public abstract class MinecraftServer implements ICommandListener, Runnable, IMo - public void r() { +@@ -509,6 +512,7 @@ public abstract class MinecraftServer implements ICommandListener, Runnable, IMo + public void t() { this.methodProfiler.a("levels"); + SpigotTimings.schedulerTimer.startTiming(); // Spigot // CraftBukkit start this.server.getScheduler().mainThreadHeartbeat(this.ticks); -@@ -507,7 +511,10 @@ public abstract class MinecraftServer implements ICommandListener, Runnable, IMo +@@ -517,7 +521,10 @@ public abstract class MinecraftServer implements ICommandListener, Runnable, IMo processQueue.remove().run(); } @@ -181,7 +112,7 @@ index 3c80340..db396b3 100644 // Send time updates to everyone, it will get the right time from the world the player is in. if (this.ticks % 20 == 0) { -@@ -559,7 +566,9 @@ public abstract class MinecraftServer implements ICommandListener, Runnable, IMo +@@ -569,7 +576,9 @@ public abstract class MinecraftServer implements ICommandListener, Runnable, IMo this.methodProfiler.b(); this.methodProfiler.a("tracker"); @@ -191,32 +122,32 @@ index 3c80340..db396b3 100644 this.methodProfiler.b(); this.methodProfiler.b(); // } // CraftBukkit -@@ -568,14 +577,20 @@ public abstract class MinecraftServer implements ICommandListener, Runnable, IMo +@@ -578,14 +587,20 @@ public abstract class MinecraftServer implements ICommandListener, Runnable, IMo } this.methodProfiler.c("connection"); + SpigotTimings.connectionTimer.startTiming(); // Spigot - this.ae().b(); + this.ag().b(); + SpigotTimings.connectionTimer.stopTiming(); // Spigot this.methodProfiler.c("players"); + SpigotTimings.playerListTimer.startTiming(); // Spigot - this.s.tick(); + this.t.tick(); + SpigotTimings.playerListTimer.stopTiming(); // Spigot this.methodProfiler.c("tickables"); + SpigotTimings.tickablesTimer.startTiming(); // Spigot - for (i = 0; i < this.o.size(); ++i) { - ((IUpdatePlayerListBox) this.o.get(i)).a(); + for (i = 0; i < this.p.size(); ++i) { + ((IUpdatePlayerListBox) this.p.get(i)).a(); } + SpigotTimings.tickablesTimer.stopTiming(); // Spigot this.methodProfiler.b(); } diff --git a/src/main/java/net/minecraft/server/PlayerConnection.java b/src/main/java/net/minecraft/server/PlayerConnection.java -index 018c314..8deba1b 100644 +index f82d932..e5937fc 100644 --- a/src/main/java/net/minecraft/server/PlayerConnection.java +++ b/src/main/java/net/minecraft/server/PlayerConnection.java -@@ -956,6 +956,7 @@ public class PlayerConnection extends Connection { +@@ -968,6 +968,7 @@ public class PlayerConnection extends Connection { // CraftBukkit end private void handleCommand(String s) { @@ -224,7 +155,7 @@ index 018c314..8deba1b 100644 // CraftBukkit start CraftPlayer player = this.getPlayer(); -@@ -963,19 +964,23 @@ public class PlayerConnection extends Connection { +@@ -975,19 +976,23 @@ public class PlayerConnection extends Connection { this.server.getPluginManager().callEvent(event); if (event.isCancelled()) { @@ -249,7 +180,7 @@ index 018c314..8deba1b 100644 /* CraftBukkit start - No longer needed as we have already handled it in server.dispatchServerCommand above. diff --git a/src/main/java/net/minecraft/server/TileEntity.java b/src/main/java/net/minecraft/server/TileEntity.java -index db3fc42..ffa9bb6 100644 +index f4be980..6ae7cb3 100644 --- a/src/main/java/net/minecraft/server/TileEntity.java +++ b/src/main/java/net/minecraft/server/TileEntity.java @@ -4,10 +4,12 @@ import java.util.HashMap; @@ -266,7 +197,7 @@ index db3fc42..ffa9bb6 100644 private static Map b = new HashMap(); protected World world; diff --git a/src/main/java/net/minecraft/server/World.java b/src/main/java/net/minecraft/server/World.java -index a81e06d..da069f7 100644 +index 8c4bbf9..75402e7 100644 --- a/src/main/java/net/minecraft/server/World.java +++ b/src/main/java/net/minecraft/server/World.java @@ -13,6 +13,7 @@ import java.util.concurrent.Callable; @@ -286,7 +217,7 @@ index a81e06d..da069f7 100644 public CraftWorld getWorld() { return this.world; } -@@ -201,6 +204,7 @@ public abstract class World implements IBlockAccess { +@@ -200,6 +203,7 @@ public abstract class World implements IBlockAccess { this.a(); this.getServer().addWorld(this.world); // CraftBukkit @@ -294,7 +225,7 @@ index a81e06d..da069f7 100644 } protected abstract IChunkProvider j(); -@@ -1273,6 +1277,7 @@ public abstract class World implements IBlockAccess { +@@ -1272,6 +1276,7 @@ public abstract class World implements IBlockAccess { this.f.clear(); this.methodProfiler.c("regular"); @@ -302,7 +233,7 @@ index a81e06d..da069f7 100644 for (i = 0; i < this.entityList.size(); ++i) { entity = (Entity) this.entityList.get(i); -@@ -1295,7 +1300,9 @@ public abstract class World implements IBlockAccess { +@@ -1294,7 +1299,9 @@ public abstract class World implements IBlockAccess { this.methodProfiler.a("tick"); if (!entity.dead) { try { @@ -312,7 +243,7 @@ index a81e06d..da069f7 100644 } catch (Throwable throwable1) { crashreport = CrashReport.a(throwable1, "Ticking entity"); crashreportsystemdetails = crashreport.a("Entity being ticked"); -@@ -1320,7 +1327,9 @@ public abstract class World implements IBlockAccess { +@@ -1319,7 +1326,9 @@ public abstract class World implements IBlockAccess { this.methodProfiler.b(); } @@ -322,7 +253,7 @@ index a81e06d..da069f7 100644 this.N = true; Iterator iterator = this.tileEntityList.iterator(); -@@ -1335,8 +1344,11 @@ public abstract class World implements IBlockAccess { +@@ -1334,8 +1343,11 @@ public abstract class World implements IBlockAccess { if (!tileentity.r() && tileentity.o() && this.isLoaded(tileentity.x, tileentity.y, tileentity.z)) { try { @@ -334,7 +265,7 @@ index a81e06d..da069f7 100644 crashreport = CrashReport.a(throwable2, "Ticking tile entity"); crashreportsystemdetails = crashreport.a("Tile entity being ticked"); tileentity.a(crashreportsystemdetails); -@@ -1356,6 +1368,8 @@ public abstract class World implements IBlockAccess { +@@ -1355,6 +1367,8 @@ public abstract class World implements IBlockAccess { } } @@ -343,7 +274,7 @@ index a81e06d..da069f7 100644 this.N = false; if (!this.b.isEmpty()) { this.tileEntityList.removeAll(this.b); -@@ -1394,6 +1408,7 @@ public abstract class World implements IBlockAccess { +@@ -1393,6 +1407,7 @@ public abstract class World implements IBlockAccess { this.a.clear(); } @@ -351,7 +282,7 @@ index a81e06d..da069f7 100644 this.methodProfiler.b(); this.methodProfiler.b(); } -@@ -1416,6 +1431,7 @@ public abstract class World implements IBlockAccess { +@@ -1415,6 +1430,7 @@ public abstract class World implements IBlockAccess { byte b0 = 32; if (!flag || this.e(i - b0, 0, j - b0, i + b0, 0, j + b0)) { @@ -359,7 +290,7 @@ index a81e06d..da069f7 100644 entity.U = entity.locX; entity.V = entity.locY; entity.W = entity.locZ; -@@ -1477,6 +1493,7 @@ public abstract class World implements IBlockAccess { +@@ -1476,6 +1492,7 @@ public abstract class World implements IBlockAccess { entity.passenger = null; } } @@ -368,15 +299,15 @@ index a81e06d..da069f7 100644 } diff --git a/src/main/java/net/minecraft/server/WorldServer.java b/src/main/java/net/minecraft/server/WorldServer.java -index 614a17f..69d955f 100644 +index c4248d0..b7e0551 100644 --- a/src/main/java/net/minecraft/server/WorldServer.java +++ b/src/main/java/net/minecraft/server/WorldServer.java -@@ -183,9 +183,12 @@ public class WorldServer extends World implements org.bukkit.BlockChangeDelegate +@@ -179,9 +179,12 @@ public class WorldServer extends World implements org.bukkit.BlockChangeDelegate // CraftBukkit start - Only call spawner if we have players online and the world allows for mobs or animals long time = this.worldData.getTime(); if (this.getGameRules().getBoolean("doMobSpawning") && (this.allowMonsters || this.allowAnimals) && (this instanceof WorldServer && this.players.size() > 0)) { + timings.mobSpawn.startTiming(); // Spigot - SpawnerCreature.spawnEntities(this, this.allowMonsters && (this.ticksPerMonsterSpawns != 0 && time % this.ticksPerMonsterSpawns == 0L), this.allowAnimals && (this.ticksPerAnimalSpawns != 0 && time % this.ticksPerAnimalSpawns == 0L), this.worldData.getTime() % 400L == 0L); + this.Q.spawnEntities(this, this.allowMonsters && (this.ticksPerMonsterSpawns != 0 && time % this.ticksPerMonsterSpawns == 0L), this.allowAnimals && (this.ticksPerAnimalSpawns != 0 && time % this.ticksPerAnimalSpawns == 0L), this.worldData.getTime() % 400L == 0L); + timings.mobSpawn.stopTiming(); // Spigot } // CraftBukkit end @@ -384,10 +315,10 @@ index 614a17f..69d955f 100644 this.methodProfiler.c("chunkSource"); this.chunkProvider.unloadChunks(); int j = this.a(1.0F); -@@ -196,21 +199,36 @@ public class WorldServer extends World implements org.bukkit.BlockChangeDelegate +@@ -195,21 +198,36 @@ public class WorldServer extends World implements org.bukkit.BlockChangeDelegate + this.worldData.setDayTime(this.worldData.getDayTime() + 1L); + } - this.worldData.setTime(this.worldData.getTime() + 1L); - this.worldData.setDayTime(this.worldData.getDayTime() + 1L); + timings.doChunkUnload.stopTiming(); // Spigot this.methodProfiler.c("tickPending"); + timings.doTickPending.startTiming(); // Spigot @@ -412,13 +343,12 @@ index 614a17f..69d955f 100644 + timings.doPortalForcer.stopTiming(); // Spigot this.methodProfiler.b(); + timings.doSounds.startTiming(); // Spigot - this.Z(); -- + this.aa(); + timings.doSounds.stopTiming(); // Spigot + + timings.doChunkGC.startTiming(); // Spigot this.getWorld().processChunkGC(); // CraftBukkit + timings.doChunkGC.stopTiming(); // Spigot -+ } public BiomeMeta a(EnumCreatureType enumcreaturetype, int i, int j, int k) { diff --git a/CraftBukkit-Patches/0019-Orebfuscator.patch b/CraftBukkit-Patches/0019-Orebfuscator.patch index 25fafeeb1f..7d2cda5580 100644 --- a/CraftBukkit-Patches/0019-Orebfuscator.patch +++ b/CraftBukkit-Patches/0019-Orebfuscator.patch @@ -1,14 +1,14 @@ -From 90de56da643bde4b842cc958a4b449634bb9ba8c Mon Sep 17 00:00:00 2001 +From 701fc14fd49aa989ecfdfb3986155036d594844b Mon Sep 17 00:00:00 2001 From: md_5 Date: Thu, 16 May 2013 18:51:05 +1000 Subject: [PATCH] Orebfuscator diff --git a/src/main/java/net/minecraft/server/EntityFallingBlock.java b/src/main/java/net/minecraft/server/EntityFallingBlock.java -index 17d837d..c7cd0ca 100644 +index daa376c..79c94dc 100644 --- a/src/main/java/net/minecraft/server/EntityFallingBlock.java +++ b/src/main/java/net/minecraft/server/EntityFallingBlock.java -@@ -94,6 +94,7 @@ public class EntityFallingBlock extends Entity { +@@ -86,6 +86,7 @@ public class EntityFallingBlock extends Entity { } this.world.setAir(i, j, k); @@ -17,7 +17,7 @@ index 17d837d..c7cd0ca 100644 if (this.onGround) { diff --git a/src/main/java/net/minecraft/server/Explosion.java b/src/main/java/net/minecraft/server/Explosion.java -index ef220c1..2063769 100644 +index 758d447..1d1c88c 100644 --- a/src/main/java/net/minecraft/server/Explosion.java +++ b/src/main/java/net/minecraft/server/Explosion.java @@ -240,6 +240,7 @@ public class Explosion { @@ -41,7 +41,7 @@ index d11c0ea..efe102e 100644 try { this.inflatedBuffer = chunkmap.a; diff --git a/src/main/java/net/minecraft/server/Packet56MapChunkBulk.java b/src/main/java/net/minecraft/server/Packet56MapChunkBulk.java -index 129dc4f..a2cd9b0 100644 +index 04c44fc..a6e3be2 100644 --- a/src/main/java/net/minecraft/server/Packet56MapChunkBulk.java +++ b/src/main/java/net/minecraft/server/Packet56MapChunkBulk.java @@ -28,6 +28,7 @@ public class Packet56MapChunkBulk extends Packet { @@ -95,7 +95,7 @@ index 129dc4f..a2cd9b0 100644 Deflater deflater = localDeflater.get(); deflater.reset(); diff --git a/src/main/java/net/minecraft/server/PlayerInteractManager.java b/src/main/java/net/minecraft/server/PlayerInteractManager.java -index 1243d1d..9ec8997 100644 +index d77a4cc..4aa9ab7 100644 --- a/src/main/java/net/minecraft/server/PlayerInteractManager.java +++ b/src/main/java/net/minecraft/server/PlayerInteractManager.java @@ -184,6 +184,7 @@ public class PlayerInteractManager { @@ -316,7 +316,7 @@ index 0000000..c29b789 + } +} diff --git a/src/main/java/org/spigotmc/SpigotWorldConfig.java b/src/main/java/org/spigotmc/SpigotWorldConfig.java -index 81879e6..0a304e8 100644 +index c2da03b..a788d8d 100644 --- a/src/main/java/org/spigotmc/SpigotWorldConfig.java +++ b/src/main/java/org/spigotmc/SpigotWorldConfig.java @@ -1,5 +1,6 @@ diff --git a/CraftBukkit-Patches/0020-Fix-Mob-Spawning-Relative-to-View-Distance.patch b/CraftBukkit-Patches/0020-Fix-Mob-Spawning-Relative-to-View-Distance.patch index de8b46334d..12b32e2c4f 100644 --- a/CraftBukkit-Patches/0020-Fix-Mob-Spawning-Relative-to-View-Distance.patch +++ b/CraftBukkit-Patches/0020-Fix-Mob-Spawning-Relative-to-View-Distance.patch @@ -1,22 +1,22 @@ -From d1a43b7d46685cdaa095ef806f9300db709c5d84 Mon Sep 17 00:00:00 2001 +From 33a9339848ae800087b9b00f0d3bd09eae007ff2 Mon Sep 17 00:00:00 2001 From: md_5 Date: Fri, 21 Jun 2013 17:29:54 +1000 Subject: [PATCH] Fix Mob Spawning Relative to View Distance diff --git a/src/main/java/net/minecraft/server/Chunk.java b/src/main/java/net/minecraft/server/Chunk.java -index 7416edc..e8d30c5 100644 +index 61e56ab..04cb6fb 100644 --- a/src/main/java/net/minecraft/server/Chunk.java +++ b/src/main/java/net/minecraft/server/Chunk.java @@ -33,6 +33,7 @@ public class Chunk { public int p; + public long q; private int u; - boolean q; + protected gnu.trove.map.hash.TObjectIntHashMap entityCount = new gnu.trove.map.hash.TObjectIntHashMap(); // Spigot public Chunk(World world, int i, int j) { this.sections = new ChunkSection[16]; -@@ -560,6 +561,15 @@ public class Chunk { +@@ -552,6 +553,15 @@ public class Chunk { entity.ak = k; entity.al = this.z; this.entitySlices[k].add(entity); @@ -32,7 +32,7 @@ index 7416edc..e8d30c5 100644 } public void b(Entity entity) { -@@ -576,6 +586,15 @@ public class Chunk { +@@ -568,6 +578,15 @@ public class Chunk { } this.entitySlices[i].remove(entity); @@ -49,10 +49,10 @@ index 7416edc..e8d30c5 100644 public boolean d(int i, int j, int k) { diff --git a/src/main/java/net/minecraft/server/SpawnerCreature.java b/src/main/java/net/minecraft/server/SpawnerCreature.java -index 056100f..bec0d91 100644 +index aa7698b..3a0d2ef 100644 --- a/src/main/java/net/minecraft/server/SpawnerCreature.java +++ b/src/main/java/net/minecraft/server/SpawnerCreature.java -@@ -26,6 +26,23 @@ public final class SpawnerCreature { +@@ -27,6 +27,23 @@ public final class SpawnerCreature { return new ChunkPosition(k, i1, l); } @@ -73,10 +73,10 @@ index 056100f..bec0d91 100644 + } + // Spigot end + - public static final int spawnEntities(WorldServer worldserver, boolean flag, boolean flag1, boolean flag2) { + public int spawnEntities(WorldServer worldserver, boolean flag, boolean flag1, boolean flag2) { if (!flag && !flag1) { return 0; -@@ -41,6 +58,11 @@ public final class SpawnerCreature { +@@ -42,6 +59,11 @@ public final class SpawnerCreature { j = MathHelper.floor(entityhuman.locZ / 16.0D); byte b0 = 8; @@ -88,16 +88,16 @@ index 056100f..bec0d91 100644 for (int l = -b0; l <= b0; ++l) { for (int i1 = -b0; i1 <= b0; ++i1) { -@@ -88,13 +110,15 @@ public final class SpawnerCreature { +@@ -89,13 +111,15 @@ public final class SpawnerCreature { if (limit == 0) { continue; } + int mobcnt = 0; // CraftBukkit end -- if ((!enumcreaturetype.d() || flag1) && (enumcreaturetype.d() || flag) && (!enumcreaturetype.e() || flag2) && worldserver.a(enumcreaturetype.a()) <= limit * b.size() / 256) { // CraftBukkit - use per-world limits -+ if ((!enumcreaturetype.d() || flag1) && (enumcreaturetype.d() || flag) && (!enumcreaturetype.e() || flag2) && (mobcnt = getEntityCount(worldserver, enumcreaturetype.a())) <= limit * b.size() / 256) { // Spigot - use per-world limits and use all loaded chunks - Iterator iterator = b.keySet().iterator(); +- if ((!enumcreaturetype.d() || flag1) && (enumcreaturetype.d() || flag) && (!enumcreaturetype.e() || flag2) && worldserver.a(enumcreaturetype.a()) <= limit * this.a.size() / 256) { // CraftBukkit - use per-world limits ++ if ((!enumcreaturetype.d() || flag1) && (enumcreaturetype.d() || flag) && (!enumcreaturetype.e() || flag2) && (mobcnt = getEntityCount(worldserver, enumcreaturetype.a())) <= limit * this.a.size() / 256) { // Spigot - use per-world limits and use all loaded chunks + Iterator iterator = this.a.keySet().iterator(); + int moblimit = (limit * b.size() / 256) - mobcnt + 1; // Spigot - up to 1 more than limit label110: @@ -106,9 +106,9 @@ index 056100f..bec0d91 100644 // CraftBukkit start long key = ((Long) iterator.next()).longValue(); -@@ -158,6 +182,13 @@ public final class SpawnerCreature { - a(entityliving, worldserver, f, f1, f2); - worldserver.addEntity(entityliving, SpawnReason.NATURAL); +@@ -160,6 +184,13 @@ public final class SpawnerCreature { + groupdataentity = entityinsentient.a(groupdataentity); + worldserver.addEntity(entityinsentient, SpawnReason.NATURAL); // CraftBukkit end + // Spigot start + if ( --moblimit <= 0 ) @@ -117,11 +117,11 @@ index 056100f..bec0d91 100644 + continue label110; + } + // Spigot end - if (j2 >= entityliving.by()) { + if (j2 >= entityinsentient.br()) { continue label110; } diff --git a/src/main/java/org/spigotmc/SpigotWorldConfig.java b/src/main/java/org/spigotmc/SpigotWorldConfig.java -index 0a304e8..6c2a430 100644 +index a788d8d..8bb0483 100644 --- a/src/main/java/org/spigotmc/SpigotWorldConfig.java +++ b/src/main/java/org/spigotmc/SpigotWorldConfig.java @@ -145,4 +145,11 @@ public class SpigotWorldConfig diff --git a/CraftBukkit-Patches/0021-Handle-Null-Tile-Entities.patch b/CraftBukkit-Patches/0021-Handle-Null-Tile-Entities.patch index 17ec48dc6a..6e6b88f404 100644 --- a/CraftBukkit-Patches/0021-Handle-Null-Tile-Entities.patch +++ b/CraftBukkit-Patches/0021-Handle-Null-Tile-Entities.patch @@ -1,14 +1,14 @@ -From 6231d399bc448b884b4b85b68f3ef632605b1ebd Mon Sep 17 00:00:00 2001 +From 98cd9362bbfa70e5639c086cca3887341b81a7a4 Mon Sep 17 00:00:00 2001 From: md_5 Date: Sun, 3 Feb 2013 09:20:19 +1100 Subject: [PATCH] Handle Null Tile Entities diff --git a/src/main/java/net/minecraft/server/World.java b/src/main/java/net/minecraft/server/World.java -index da069f7..d4d8f04 100644 +index 75402e7..fd76af0 100644 --- a/src/main/java/net/minecraft/server/World.java +++ b/src/main/java/net/minecraft/server/World.java -@@ -1335,6 +1335,13 @@ public abstract class World implements IBlockAccess { +@@ -1334,6 +1334,13 @@ public abstract class World implements IBlockAccess { while (iterator.hasNext()) { TileEntity tileentity = (TileEntity) iterator.next(); diff --git a/CraftBukkit-Patches/0022-Entity-Activation-Range.patch b/CraftBukkit-Patches/0022-Entity-Activation-Range.patch index e53a49b0ce..998a183869 100644 --- a/CraftBukkit-Patches/0022-Entity-Activation-Range.patch +++ b/CraftBukkit-Patches/0022-Entity-Activation-Range.patch @@ -1,4 +1,4 @@ -From df64c572448edbe8dcefa1eeaaccc7a389f626f7 Mon Sep 17 00:00:00 2001 +From c7558b9d826023a2080737a9231026645a9f6e6a Mon Sep 17 00:00:00 2001 From: Aikar Date: Sun, 3 Feb 2013 05:10:21 -0500 Subject: [PATCH] Entity Activation Range @@ -9,7 +9,7 @@ This will drastically cut down on tick timings for entities that are not in rang This change can have dramatic impact on gameplay if configured too low. Balance according to your servers desired gameplay. diff --git a/src/main/java/net/minecraft/server/Entity.java b/src/main/java/net/minecraft/server/Entity.java -index 978b6ef..438a26a 100644 +index 72c6e66..e438df5 100644 --- a/src/main/java/net/minecraft/server/Entity.java +++ b/src/main/java/net/minecraft/server/Entity.java @@ -88,7 +88,7 @@ public abstract class Entity { @@ -23,7 +23,7 @@ index 978b6ef..438a26a 100644 protected boolean fireProof; @@ -111,8 +111,15 @@ public abstract class Entity { public EnumEntitySize at; - public boolean valid = false; // CraftBukkit + public boolean valid; // CraftBukkit + // Spigot start public CustomTimingsHandler tickTimer = org.bukkit.craftbukkit.SpigotTimings.getEntityTimings(this); // Spigot @@ -37,7 +37,7 @@ index 978b6ef..438a26a 100644 public Entity(World world) { this.id = entityCount++; this.l = 1.0D; -@@ -153,7 +160,12 @@ public abstract class Entity { +@@ -131,7 +138,12 @@ public abstract class Entity { this.setPosition(0.0D, 0.0D, 0.0D); if (world != null) { this.dimension = world.worldProvider.dimension; @@ -51,11 +51,11 @@ index 978b6ef..438a26a 100644 this.datawatcher.a(0, Byte.valueOf((byte) 0)); this.datawatcher.a(1, Short.valueOf((short) 300)); diff --git a/src/main/java/net/minecraft/server/EntityAgeable.java b/src/main/java/net/minecraft/server/EntityAgeable.java -index fdc9167..16b7261 100644 +index 5ba19f3..4c73a5f 100644 --- a/src/main/java/net/minecraft/server/EntityAgeable.java +++ b/src/main/java/net/minecraft/server/EntityAgeable.java @@ -6,6 +6,31 @@ public abstract class EntityAgeable extends EntityCreature { - private float e; + private float bq; public boolean ageLocked = false; // CraftBukkit + // Spigot start @@ -87,25 +87,25 @@ index fdc9167..16b7261 100644 super(world); } diff --git a/src/main/java/net/minecraft/server/EntityArrow.java b/src/main/java/net/minecraft/server/EntityArrow.java -index f46c920..1699059 100644 +index affeca6..f44f5e2 100644 --- a/src/main/java/net/minecraft/server/EntityArrow.java +++ b/src/main/java/net/minecraft/server/EntityArrow.java @@ -14,7 +14,7 @@ public class EntityArrow extends Entity implements IProjectile { private int f = -1; - private int g = 0; - private int h = 0; -- private boolean inGround = false; + private int g; + private int h; +- private boolean inGround; + public boolean inGround = false; // Spigot - private -> public - public int fromPlayer = 0; - public int shake = 0; + public int fromPlayer; + public int shake; public Entity shooter; diff --git a/src/main/java/net/minecraft/server/EntityLiving.java b/src/main/java/net/minecraft/server/EntityLiving.java -index 58a4acb..35f3fea 100644 +index 0d9ba82..f043040 100644 --- a/src/main/java/net/minecraft/server/EntityLiving.java +++ b/src/main/java/net/minecraft/server/EntityLiving.java -@@ -113,6 +113,13 @@ public abstract class EntityLiving extends Entity { +@@ -79,6 +79,13 @@ public abstract class EntityLiving extends Entity { public int maxAirTicks = 300; - public int maxHealth = this.getMaxHealth(); + public float maxHealth; // CraftBukkit end + // Spigot start + public void inactiveTick() @@ -118,10 +118,10 @@ index 58a4acb..35f3fea 100644 public EntityLiving(World world) { super(world); diff --git a/src/main/java/net/minecraft/server/World.java b/src/main/java/net/minecraft/server/World.java -index 3a6a63d..5866abb 100644 +index fd76af0..039ba6e 100644 --- a/src/main/java/net/minecraft/server/World.java +++ b/src/main/java/net/minecraft/server/World.java -@@ -1277,6 +1277,7 @@ public abstract class World implements IBlockAccess { +@@ -1276,6 +1276,7 @@ public abstract class World implements IBlockAccess { this.f.clear(); this.methodProfiler.c("regular"); @@ -129,7 +129,7 @@ index 3a6a63d..5866abb 100644 timings.entityTick.startTiming(); // Spigot for (i = 0; i < this.entityList.size(); ++i) { entity = (Entity) this.entityList.get(i); -@@ -1437,8 +1438,13 @@ public abstract class World implements IBlockAccess { +@@ -1436,8 +1437,13 @@ public abstract class World implements IBlockAccess { int j = MathHelper.floor(entity.locZ); byte b0 = 32; @@ -462,7 +462,7 @@ index 0000000..93ce20e + } +} diff --git a/src/main/java/org/spigotmc/SpigotWorldConfig.java b/src/main/java/org/spigotmc/SpigotWorldConfig.java -index 6c2a430..8b2c1d7 100644 +index 8bb0483..eb721f5 100644 --- a/src/main/java/org/spigotmc/SpigotWorldConfig.java +++ b/src/main/java/org/spigotmc/SpigotWorldConfig.java @@ -152,4 +152,15 @@ public class SpigotWorldConfig diff --git a/CraftBukkit-Patches/0024-Watchdog-Thread.patch b/CraftBukkit-Patches/0024-Watchdog-Thread.patch index ea0f4fef28..8747c6ce0f 100644 --- a/CraftBukkit-Patches/0024-Watchdog-Thread.patch +++ b/CraftBukkit-Patches/0024-Watchdog-Thread.patch @@ -1,22 +1,22 @@ -From 3c8f2ccaa98803166178f16290fce2b8626e6ebb Mon Sep 17 00:00:00 2001 +From 4a44e729ad0a7d469c386cfa15d3cdda48f67695 Mon Sep 17 00:00:00 2001 From: md_5 Date: Sat, 23 Feb 2013 12:33:20 +1100 Subject: [PATCH] Watchdog Thread. diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index db396b3..d197f06 100644 +index f114444..399db47 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java -@@ -404,6 +404,7 @@ public abstract class MinecraftServer implements ICommandListener, Runnable, IMo - this.q(); +@@ -414,6 +414,7 @@ public abstract class MinecraftServer implements ICommandListener, Runnable, IMo + this.s(); SpigotTimings.serverTickTimer.stopTiming(); org.spigotmc.CustomTimingsHandler.tick(); + org.spigotmc.WatchdogThread.tick(); } // Spigot end } else { -@@ -431,6 +432,7 @@ public abstract class MinecraftServer implements ICommandListener, Runnable, IMo +@@ -441,6 +442,7 @@ public abstract class MinecraftServer implements ICommandListener, Runnable, IMo this.a(crashreport); } finally { try { @@ -142,7 +142,7 @@ index 0000000..a5c4549 + } +} diff --git a/src/main/java/org/spigotmc/SpigotConfig.java b/src/main/java/org/spigotmc/SpigotConfig.java -index 8f53ca9..b7f3896 100644 +index 3028526..a0a7790 100644 --- a/src/main/java/org/spigotmc/SpigotConfig.java +++ b/src/main/java/org/spigotmc/SpigotConfig.java @@ -136,4 +136,16 @@ public class SpigotConfig diff --git a/CraftBukkit-Patches/0025-Netty.patch b/CraftBukkit-Patches/0025-Netty.patch index 3b2da65e89..3f89603ebe 100644 --- a/CraftBukkit-Patches/0025-Netty.patch +++ b/CraftBukkit-Patches/0025-Netty.patch @@ -1,16 +1,16 @@ -From f3179d3cf334bf4a99db417230cc37b8997da4a6 Mon Sep 17 00:00:00 2001 +From a909284799fb1461906c4cc9fa866b391e16972e Mon Sep 17 00:00:00 2001 From: md_5 Date: Tue, 2 Jul 2013 09:06:29 +1000 Subject: [PATCH] Netty diff --git a/pom.xml b/pom.xml -index 8c9f66b..f1a4d4c 100644 +index 88b41b1..cb5e36d 100644 --- a/pom.xml +++ b/pom.xml @@ -132,6 +132,16 @@ trove4j - 3.0.2 + 3.0.3 + + io.netty @@ -26,18 +26,18 @@ index 8c9f66b..f1a4d4c 100644 diff --git a/src/main/java/net/minecraft/server/DedicatedServer.java b/src/main/java/net/minecraft/server/DedicatedServer.java -index 59444cb..121ed89 100644 +index ddb32ac..ec3d104 100644 --- a/src/main/java/net/minecraft/server/DedicatedServer.java +++ b/src/main/java/net/minecraft/server/DedicatedServer.java @@ -100,7 +100,11 @@ public class DedicatedServer extends MinecraftServer implements IMinecraftServer - this.getLogger().info("Starting Minecraft server on " + (this.getServerIp().length() == 0 ? "*" : this.getServerIp()) + ":" + this.G()); + this.getLogger().info("Starting Minecraft server on " + (this.getServerIp().length() == 0 ? "*" : this.getServerIp()) + ":" + this.I()); try { -- this.r = new DedicatedServerConnection(this, inetaddress, this.G()); +- this.s = new DedicatedServerConnection(this, inetaddress, this.I()); + // Spigot start -+ this.r = ( org.spigotmc.SpigotConfig.listeners.get( 0 ).netty ) -+ ? new org.spigotmc.netty.NettyServerConnection( this, inetaddress, this.G() ) -+ : new DedicatedServerConnection( this, inetaddress, this.G() ); ++ this.s = ( org.spigotmc.SpigotConfig.listeners.get( 0 ).netty ) ++ ? new org.spigotmc.netty.NettyServerConnection( this, inetaddress, this.I() ) ++ : new DedicatedServerConnection( this, inetaddress, this.I() ); + // Spigot end } catch (Throwable ioexception) { // CraftBukkit - IOException -> Throwable this.getLogger().warning("**** FAILED TO BIND TO PORT!"); @@ -75,10 +75,10 @@ index 0000000..6fcc5d7 + void setSocketAddress(java.net.SocketAddress address); // Spigot +} diff --git a/src/main/java/net/minecraft/server/NetworkManager.java b/src/main/java/net/minecraft/server/NetworkManager.java -index 1862863..5a24f2a 100644 +index c60abf1..e1b259b 100644 --- a/src/main/java/net/minecraft/server/NetworkManager.java +++ b/src/main/java/net/minecraft/server/NetworkManager.java -@@ -24,7 +24,7 @@ public class NetworkManager implements INetworkManager { +@@ -25,7 +25,7 @@ public class NetworkManager implements INetworkManager { private final Object h = new Object(); private final IConsoleLogManager i; public Socket socket; // CraftBukkit - private -> public @@ -87,7 +87,7 @@ index 1862863..5a24f2a 100644 private volatile DataInputStream input; private volatile DataOutputStream output; private volatile boolean n = true; -@@ -369,4 +369,6 @@ public class NetworkManager implements INetworkManager { +@@ -370,4 +370,6 @@ public class NetworkManager implements INetworkManager { static Thread h(NetworkManager networkmanager) { return networkmanager.u; } @@ -95,20 +95,20 @@ index 1862863..5a24f2a 100644 + public void setSocketAddress(SocketAddress address) { k = address; } // Spigot } diff --git a/src/main/java/net/minecraft/server/PendingConnection.java b/src/main/java/net/minecraft/server/PendingConnection.java -index 17cfacc..292fa49 100644 +index 252cea7..d0ccbff 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 { +@@ -16,7 +16,7 @@ public class PendingConnection extends Connection { private static Random random = new Random(); private byte[] d; private final MinecraftServer server; - public final NetworkManager networkManager; + public final INetworkManager networkManager; - public boolean b = false; - private int f = 0; - private String g = null; -@@ -27,10 +27,15 @@ public class PendingConnection extends Connection { - private SecretKey k = null; + public boolean b; + private int f; + private String g; +@@ -26,10 +26,15 @@ public class PendingConnection extends Connection { + private SecretKey k; public String hostname = ""; // CraftBukkit - add field + public PendingConnection(MinecraftServer minecraftserver, org.spigotmc.netty.NettyNetworkManager networkManager) { @@ -118,33 +118,33 @@ index 17cfacc..292fa49 100644 + public PendingConnection(MinecraftServer minecraftserver, Socket socket, String s) throws java.io.IOException { // CraftBukkit - throws IOException this.server = minecraftserver; - this.networkManager = new NetworkManager(minecraftserver.getLogger(), socket, s, this, minecraftserver.F().getPrivate()); + this.networkManager = new NetworkManager(minecraftserver.getLogger(), socket, s, this, minecraftserver.H().getPrivate()); - this.networkManager.e = 0; + // this.networkManager.e = 0; } // CraftBukkit start @@ -146,7 +151,7 @@ public class PendingConnection extends Connection { + String s = null; // CraftBukkit org.bukkit.event.server.ServerListPingEvent pingEvent = org.bukkit.craftbukkit.event.CraftEventFactory.callServerListPingEvent(this.server.server, getSocket().getInetAddress(), this.server.getMotd(), playerlist.getPlayerCount(), playerlist.getMaxPlayers()); - -- if (packet254getinfo.a == 1) { -+ if (true) { - // CraftBukkit start - Fix decompile issues, don't create a list from an array - Object[] list = new Object[] { 1, 61, this.server.getVersion(), pingEvent.getMotd(), playerlist.getPlayerCount(), pingEvent.getMaxPlayers() }; - -@@ -173,9 +178,18 @@ public class PendingConnection extends Connection { +- if (packet254getinfo.d()) { ++ if (galse) { // Spigot: TODO: Use trick from Bungee maybe? + // CraftBukkit + s = pingEvent.getMotd() + "\u00A7" + playerlist.getPlayerCount() + "\u00A7" + pingEvent.getMaxPlayers(); + } else { +@@ -172,9 +177,18 @@ public class PendingConnection extends Connection { this.networkManager.queue(new Packet255KickDisconnect(s)); this.networkManager.d(); -- if (inetaddress != null && this.server.ae() instanceof DedicatedServerConnection) { -- ((DedicatedServerConnection) this.server.ae()).a(inetaddress); +- if (inetaddress != null && this.server.ag() instanceof DedicatedServerConnection) { +- ((DedicatedServerConnection) this.server.ag()).a(inetaddress); + // Spigot start + if ( inetaddress != null ) + { -+ if ( this.server.ae() instanceof DedicatedServerConnection ) ++ if ( this.server.ag() instanceof DedicatedServerConnection ) + { -+ ((DedicatedServerConnection) this.server.ae()).a(inetaddress); ++ ((DedicatedServerConnection) this.server.ag()).a(inetaddress); + } else + { + ((org.spigotmc.netty.NettyServerConnection)this.server.ae()).unThrottle( inetaddress ); diff --git a/CraftBukkit-Patches/0026-PlayerItemDamageEvent.patch b/CraftBukkit-Patches/0026-PlayerItemDamageEvent.patch index c225515490..e3795ff090 100644 --- a/CraftBukkit-Patches/0026-PlayerItemDamageEvent.patch +++ b/CraftBukkit-Patches/0026-PlayerItemDamageEvent.patch @@ -1,11 +1,11 @@ -From f52dba2bbbe1ac2d868fc37d95d8a33e4e17a46e Mon Sep 17 00:00:00 2001 +From 56e4b96d211d5e45d14982673922397d775ab22d Mon Sep 17 00:00:00 2001 From: md_5 Date: Mon, 4 Mar 2013 18:45:52 +1100 Subject: [PATCH] PlayerItemDamageEvent diff --git a/src/main/java/net/minecraft/server/ItemStack.java b/src/main/java/net/minecraft/server/ItemStack.java -index 343b8cb..9c2fce6 100644 +index f42f162..3a3fc27 100644 --- a/src/main/java/net/minecraft/server/ItemStack.java +++ b/src/main/java/net/minecraft/server/ItemStack.java @@ -178,7 +178,13 @@ public final class ItemStack { @@ -44,11 +44,11 @@ index 343b8cb..9c2fce6 100644 public void damage(int i, EntityLiving entityliving) { if (!(entityliving instanceof EntityHuman) || !((EntityHuman) entityliving).abilities.canInstantlyBuild) { if (this.g()) { -- if (this.isDamaged(i, entityliving.aE())) { -+ if (this.isDamaged(i, entityliving.aE(), entityliving)) { +- if (this.isDamaged(i, entityliving.aB())) { ++ if (this.isDamaged(i, entityliving.aB(), entityliving)) { entityliving.a(this); + --this.count; if (entityliving instanceof EntityHuman) { - ((EntityHuman) entityliving).a(StatisticList.F[this.id], 1); -- 1.8.1.2 diff --git a/CraftBukkit-Patches/0027-Faster-UUID-for-entities.patch b/CraftBukkit-Patches/0027-Faster-UUID-for-entities.patch index 49e4e05ede..281fdd7dc0 100644 --- a/CraftBukkit-Patches/0027-Faster-UUID-for-entities.patch +++ b/CraftBukkit-Patches/0027-Faster-UUID-for-entities.patch @@ -1,4 +1,4 @@ -From dbd0d8f7e14ce0dbe01087ea315ef44fc26193ab Mon Sep 17 00:00:00 2001 +From f5c31d0e676d9ca15e19cf5e4468de0e1800a9d0 Mon Sep 17 00:00:00 2001 From: md_5 Date: Sun, 17 Mar 2013 19:02:50 +1100 Subject: [PATCH] Faster UUID for entities @@ -6,13 +6,13 @@ Subject: [PATCH] Faster UUID for entities It is overkill to create a new SecureRandom on each entity create and then use it to make a new Entity ID for every entity instance created. Instead we will just use a pseudo random UUID based off the random instance we already have. diff --git a/src/main/java/net/minecraft/server/Entity.java b/src/main/java/net/minecraft/server/Entity.java -index 438a26a..97b2522 100644 +index e438df5..700e450 100644 --- a/src/main/java/net/minecraft/server/Entity.java +++ b/src/main/java/net/minecraft/server/Entity.java -@@ -154,7 +154,7 @@ public abstract class Entity { - this.ai = false; - this.as = 0; - this.invulnerable = false; +@@ -132,7 +132,7 @@ public abstract class Entity { + this.maxFireTicks = 1; + this.justCreated = true; + this.datawatcher = new DataWatcher(); - this.uniqueID = UUID.randomUUID(); + this.uniqueID = new UUID(random.nextLong(), random.nextLong()); // Spigot this.at = EnumEntitySize.SIZE_2; diff --git a/CraftBukkit-Patches/0029-Entity-Tracking-Ranges.patch b/CraftBukkit-Patches/0029-Entity-Tracking-Ranges.patch index 9ee8eb1c52..9b83cfd438 100644 --- a/CraftBukkit-Patches/0029-Entity-Tracking-Ranges.patch +++ b/CraftBukkit-Patches/0029-Entity-Tracking-Ranges.patch @@ -1,4 +1,4 @@ -From 17fbd3f0e6586b3b59b8bbd9f4327e4a09512b24 Mon Sep 17 00:00:00 2001 +From 448c1c548527355aff640dca36ca4cc9813580c7 Mon Sep 17 00:00:00 2001 From: Aikar Date: Wed, 20 Feb 2013 11:58:47 -0500 Subject: [PATCH] Entity Tracking Ranges @@ -12,10 +12,10 @@ This has multiple benefits: 4) Less client lag - Not trying to render distant item frames and paintings and entities will reduce entity count on the client, which is major for shop/town worlds which may use tons of item frames. diff --git a/src/main/java/net/minecraft/server/EntityTracker.java b/src/main/java/net/minecraft/server/EntityTracker.java -index d7efe3e..59586c2 100644 +index 7f23f71..7bb153c 100644 --- a/src/main/java/net/minecraft/server/EntityTracker.java +++ b/src/main/java/net/minecraft/server/EntityTracker.java -@@ -90,6 +90,7 @@ public class EntityTracker { +@@ -88,6 +88,7 @@ public class EntityTracker { public void addEntity(Entity entity, int i, int j, boolean flag) { if (Thread.currentThread() != MinecraftServer.getServer().primaryThread) throw new IllegalStateException("Asynchronous entity track!"); // Spigot @@ -24,7 +24,7 @@ index d7efe3e..59586c2 100644 i = this.d; } diff --git a/src/main/java/org/spigotmc/SpigotWorldConfig.java b/src/main/java/org/spigotmc/SpigotWorldConfig.java -index 8b2c1d7..89d716c 100644 +index eb721f5..820c576 100644 --- a/src/main/java/org/spigotmc/SpigotWorldConfig.java +++ b/src/main/java/org/spigotmc/SpigotWorldConfig.java @@ -163,4 +163,19 @@ public class SpigotWorldConfig diff --git a/CraftBukkit-Patches/0030-BungeeCord-Support.patch b/CraftBukkit-Patches/0030-BungeeCord-Support.patch index 6aa90329fa..8d144d6db9 100644 --- a/CraftBukkit-Patches/0030-BungeeCord-Support.patch +++ b/CraftBukkit-Patches/0030-BungeeCord-Support.patch @@ -1,4 +1,4 @@ -From 6475f2a601cf734bf3e5d7b3971fd1c44a60d75f Mon Sep 17 00:00:00 2001 +From fbdeb351e9e22395803d7563bb347cce2eb722eb Mon Sep 17 00:00:00 2001 From: md_5 Date: Sat, 23 Mar 2013 11:15:11 +1100 Subject: [PATCH] BungeeCord Support @@ -6,10 +6,10 @@ Subject: [PATCH] BungeeCord Support - Allows BungeeCord to set the players real IP address very early in the login process, so that the BungeeCord proxy IP is never even seen by a plugin. diff --git a/src/main/java/net/minecraft/server/PendingConnection.java b/src/main/java/net/minecraft/server/PendingConnection.java -index 292fa49..ff32606 100644 +index d0ccbff..6308331 100644 --- a/src/main/java/net/minecraft/server/PendingConnection.java +++ b/src/main/java/net/minecraft/server/PendingConnection.java -@@ -228,4 +228,17 @@ public class PendingConnection extends Connection { +@@ -227,4 +227,17 @@ public class PendingConnection extends Connection { static boolean a(PendingConnection pendingconnection, boolean flag) { return pendingconnection.h = flag; } @@ -28,12 +28,12 @@ index 292fa49..ff32606 100644 + // Spigot end } diff --git a/src/main/java/net/minecraft/server/PlayerList.java b/src/main/java/net/minecraft/server/PlayerList.java -index b7e327b..30c6503 100644 +index b98a078..018feb2 100644 --- a/src/main/java/net/minecraft/server/PlayerList.java +++ b/src/main/java/net/minecraft/server/PlayerList.java @@ -293,7 +293,7 @@ public abstract class PlayerList { // depending on the outcome. - EntityPlayer entity = new EntityPlayer(this.server, this.server.getWorldServer(0), s, this.server.M() ? new DemoPlayerInteractManager(this.server.getWorldServer(0)) : new PlayerInteractManager(this.server.getWorldServer(0))); + EntityPlayer entity = new EntityPlayer(this.server, this.server.getWorldServer(0), s, this.server.O() ? new DemoPlayerInteractManager(this.server.getWorldServer(0)) : new PlayerInteractManager(this.server.getWorldServer(0))); Player player = entity.getBukkitEntity(); - PlayerLoginEvent event = new PlayerLoginEvent(player, hostname, pendingconnection.getSocket().getInetAddress()); + PlayerLoginEvent event = new PlayerLoginEvent(player, hostname, ((java.net.InetSocketAddress) pendingconnection.networkManager.getSocketAddress()).getAddress(), pendingconnection.getSocket().getInetAddress()); // Spigot @@ -41,7 +41,7 @@ index b7e327b..30c6503 100644 SocketAddress socketaddress = pendingconnection.networkManager.getSocketAddress(); diff --git a/src/main/java/net/minecraft/server/ThreadLoginVerifier.java b/src/main/java/net/minecraft/server/ThreadLoginVerifier.java -index 1254e63..a4eae65 100644 +index f87ebf9..f5032be 100644 --- a/src/main/java/net/minecraft/server/ThreadLoginVerifier.java +++ b/src/main/java/net/minecraft/server/ThreadLoginVerifier.java @@ -45,11 +45,11 @@ class ThreadLoginVerifier extends Thread { @@ -59,10 +59,10 @@ index 1254e63..a4eae65 100644 event.disallow(asyncEvent.getResult(), asyncEvent.getKickMessage()); } diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index 7cae665..21141f2 100644 +index b3bb702..b81a07e 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -@@ -998,6 +998,11 @@ public class CraftPlayer extends CraftHumanEntity implements Player { +@@ -1002,6 +1002,11 @@ public class CraftPlayer extends CraftHumanEntity implements Player { // Spigot start private final Spigot spigot = new Spigot() { diff --git a/CraftBukkit-Patches/0031-Limit-Custom-Map-Rendering.patch b/CraftBukkit-Patches/0031-Limit-Custom-Map-Rendering.patch index c0f84a4c6b..2979bea98e 100644 --- a/CraftBukkit-Patches/0031-Limit-Custom-Map-Rendering.patch +++ b/CraftBukkit-Patches/0031-Limit-Custom-Map-Rendering.patch @@ -1,4 +1,4 @@ -From 2f81e3294321a9bfcb00956f75bb54ea5cdfecf5 Mon Sep 17 00:00:00 2001 +From 56ce9a93bd0f4a45c2168bfc323a62ddfb23b405 Mon Sep 17 00:00:00 2001 From: md_5 Date: Sat, 23 Mar 2013 19:08:41 +1100 Subject: [PATCH] Limit Custom Map Rendering @@ -6,10 +6,10 @@ Subject: [PATCH] Limit Custom Map Rendering The default CraftBukkit render sequence for maps is ridiculously slow. By only using it when a custom renderer has been added (rarely in most cases), we can fallback to the Vanilla renderer for general usage. This leads to a much higher effiency overall, especially if no plugins are rendering such maps. diff --git a/src/main/java/net/minecraft/server/WorldMapHumanTracker.java b/src/main/java/net/minecraft/server/WorldMapHumanTracker.java -index bf3e6fe..305dceb 100644 +index 22d9c7e..bed8705 100644 --- a/src/main/java/net/minecraft/server/WorldMapHumanTracker.java +++ b/src/main/java/net/minecraft/server/WorldMapHumanTracker.java -@@ -41,23 +41,29 @@ public class WorldMapHumanTracker { +@@ -38,23 +38,29 @@ public class WorldMapHumanTracker { int i; int j; @@ -46,8 +46,8 @@ index bf3e6fe..305dceb 100644 + // Spigot end // CraftBukkit end - boolean flag = !itemstack.z(); -@@ -92,7 +98,7 @@ public class WorldMapHumanTracker { + boolean flag = !itemstack.A(); +@@ -89,7 +95,7 @@ public class WorldMapHumanTracker { abyte1[2] = (byte) j; for (int i1 = 0; i1 < abyte1.length - 3; ++i1) { diff --git a/CraftBukkit-Patches/0032-Enable-Improved-Ping-Sending.patch b/CraftBukkit-Patches/0032-Enable-Improved-Ping-Sending.patch index d9132419a2..77e037e172 100644 --- a/CraftBukkit-Patches/0032-Enable-Improved-Ping-Sending.patch +++ b/CraftBukkit-Patches/0032-Enable-Improved-Ping-Sending.patch @@ -1,14 +1,14 @@ -From 093c26055d78b7e52e6653e47dc73ae765decf5c Mon Sep 17 00:00:00 2001 +From 20feb3e62fef472d80e0685dc55b74ea8ad90675 Mon Sep 17 00:00:00 2001 From: Aikar Date: Sun, 24 Feb 2013 20:45:20 +1100 Subject: [PATCH] Enable Improved Ping Sending diff --git a/src/main/java/net/minecraft/server/EntityPlayer.java b/src/main/java/net/minecraft/server/EntityPlayer.java -index 7de5b48..35a579c 100644 +index 094da96..8d7a59a 100644 --- a/src/main/java/net/minecraft/server/EntityPlayer.java +++ b/src/main/java/net/minecraft/server/EntityPlayer.java -@@ -51,6 +51,7 @@ public class EntityPlayer extends EntityHuman implements ICrafting { +@@ -52,6 +52,7 @@ public class EntityPlayer extends EntityHuman implements ICrafting { public int newLevel = 0; public int newTotalExp = 0; public boolean keepLevel = false; @@ -17,11 +17,11 @@ index 7de5b48..35a579c 100644 public EntityPlayer(MinecraftServer minecraftserver, World world, String s, PlayerInteractManager playerinteractmanager) { diff --git a/src/main/java/net/minecraft/server/PlayerList.java b/src/main/java/net/minecraft/server/PlayerList.java -index 30c6503..1891308 100644 +index 018feb2..0e5bf6c 100644 --- a/src/main/java/net/minecraft/server/PlayerList.java +++ b/src/main/java/net/minecraft/server/PlayerList.java @@ -717,6 +717,25 @@ public abstract class PlayerList { - this.sendAll(new Packet201PlayerInfo(entityplayer.name, true, entityplayer.ping)); + this.sendAll(new Packet201PlayerInfo(entityplayer.getName(), true, entityplayer.ping)); } // CraftBukkit end */ + // Spigot start diff --git a/CraftBukkit-Patches/0033-Filter-Invalid-Names.patch b/CraftBukkit-Patches/0033-Filter-Invalid-Names.patch index 92e5a9163d..fbaa6e69fe 100644 --- a/CraftBukkit-Patches/0033-Filter-Invalid-Names.patch +++ b/CraftBukkit-Patches/0033-Filter-Invalid-Names.patch @@ -1,27 +1,28 @@ -From 47e90e4e5c72a105ff5b9901ef6929ef7511d1fb Mon Sep 17 00:00:00 2001 +From 8612d2a39a8fe4631c5c38810989282e65cba8af Mon Sep 17 00:00:00 2001 From: Benjamin James Harrison-Sims Date: Sun, 14 Apr 2013 21:19:57 +0500 Subject: [PATCH] Filter Invalid Names diff --git a/src/main/java/net/minecraft/server/Packet2Handshake.java b/src/main/java/net/minecraft/server/Packet2Handshake.java -index 343af93..26de0b5 100644 +index 1e7bad0..f25afb6 100644 --- a/src/main/java/net/minecraft/server/Packet2Handshake.java +++ b/src/main/java/net/minecraft/server/Packet2Handshake.java -@@ -14,11 +14,13 @@ public class Packet2Handshake extends Packet { +@@ -14,11 +14,14 @@ public class Packet2Handshake extends Packet { public Packet2Handshake() {} + public static final java.util.regex.Pattern validName = java.util.regex.Pattern.compile("^[a-zA-Z0-9_-]{2,16}$"); - public void a(DataInputStream datainputstream) throws IOException { // CraftBukkit - throws IOException - this.a = datainputstream.readByte(); - this.b = a(datainputstream, 16); - this.c = a(datainputstream, 255); - this.d = datainputstream.readInt(); + public void a(DataInput datainput) throws IOException { // CraftBukkit - throws IOException + this.a = datainput.readByte(); + this.b = a(datainput, 16); + this.c = a(datainput, 255); + this.d = datainput.readInt(); ++ // Spigot: TODO: md_5 hates this + if(!validName.matcher(this.b).matches()) throw new IOException("Invalid name!"); // Spigot } - public void a(DataOutputStream dataoutputstream) throws IOException { // CraftBukkit - throws IOException + public void a(DataOutput dataoutput) throws IOException { // CraftBukkit - throws IOException -- 1.8.1.2 diff --git a/CraftBukkit-Patches/0034-Thread-Naming-and-Tweaks.patch b/CraftBukkit-Patches/0034-Thread-Naming-and-Tweaks.patch index a221cf1224..af0803da8a 100644 --- a/CraftBukkit-Patches/0034-Thread-Naming-and-Tweaks.patch +++ b/CraftBukkit-Patches/0034-Thread-Naming-and-Tweaks.patch @@ -1,4 +1,4 @@ -From 3ffe256945a7df36f9b9fe08be2b44547d8e9c14 Mon Sep 17 00:00:00 2001 +From d94b6e73ee42e11ee17ac1790d326da128236375 Mon Sep 17 00:00:00 2001 From: md_5 Date: Tue, 23 Apr 2013 11:50:27 +1000 Subject: [PATCH] Thread Naming and Tweaks @@ -6,13 +6,13 @@ Subject: [PATCH] Thread Naming and Tweaks Removes the sleep forever thread and adds useful names for debugging to all staged thread files. diff --git a/src/main/java/net/minecraft/server/DedicatedServer.java b/src/main/java/net/minecraft/server/DedicatedServer.java -index b2a4229..2a6250d 100644 +index ec3d104..ccbd6bc 100644 --- a/src/main/java/net/minecraft/server/DedicatedServer.java +++ b/src/main/java/net/minecraft/server/DedicatedServer.java @@ -34,7 +34,7 @@ public class DedicatedServer extends MinecraftServer implements IMinecraftServer super(options); // CraftBukkit end - this.l = new ConsoleLogManager("Minecraft-Server", (String) null, (String) null); // CraftBukkit - null last argument + this.m = new ConsoleLogManager("Minecraft-Server", (String) null, (String) null); // CraftBukkit - null last argument - new ThreadSleepForever(this); + // new ThreadSleepForever(this); } @@ -31,7 +31,7 @@ index 489e184..bfd219c 100644 } diff --git a/src/main/java/net/minecraft/server/ThreadLoginVerifier.java b/src/main/java/net/minecraft/server/ThreadLoginVerifier.java -index a4eae65..496cfe4 100644 +index f5032be..5e45cae 100644 --- a/src/main/java/net/minecraft/server/ThreadLoginVerifier.java +++ b/src/main/java/net/minecraft/server/ThreadLoginVerifier.java @@ -21,6 +21,7 @@ class ThreadLoginVerifier extends Thread { diff --git a/CraftBukkit-Patches/0037-Improve-NextTickList-Performance.patch b/CraftBukkit-Patches/0037-Improve-NextTickList-Performance.patch index 3974f360ad..550fb1fd61 100644 --- a/CraftBukkit-Patches/0037-Improve-NextTickList-Performance.patch +++ b/CraftBukkit-Patches/0037-Improve-NextTickList-Performance.patch @@ -1,4 +1,4 @@ -From 79812d32f7cfef51de310b72ed9eb59410395573 Mon Sep 17 00:00:00 2001 +From ee7f3f6e22ddeacbad8b9ec13b96870fe585dbe2 Mon Sep 17 00:00:00 2001 From: Mike Primm Date: Wed, 24 Apr 2013 01:43:33 -0500 Subject: [PATCH] Improve NextTickList Performance @@ -20,7 +20,7 @@ index 52a70a1..08a4240 100644 public NextTickListEntry a(long i) { diff --git a/src/main/java/net/minecraft/server/WorldServer.java b/src/main/java/net/minecraft/server/WorldServer.java -index 69d955f..7cdb549 100644 +index b7e0551..1b69737 100644 --- a/src/main/java/net/minecraft/server/WorldServer.java +++ b/src/main/java/net/minecraft/server/WorldServer.java @@ -25,8 +25,8 @@ public class WorldServer extends World implements org.bukkit.BlockChangeDelegate @@ -34,17 +34,17 @@ index 69d955f..7cdb549 100644 public ChunkProviderServer chunkProviderServer; public boolean savingDisabled; private boolean N; -@@ -35,7 +35,8 @@ public class WorldServer extends World implements org.bukkit.BlockChangeDelegate - private NoteDataList[] Q = new NoteDataList[] { new NoteDataList((EmptyClass2) null), new NoteDataList((EmptyClass2) null)}; - private int R = 0; - private static final StructurePieceTreasure[] S = new StructurePieceTreasure[] { new StructurePieceTreasure(Item.STICK.id, 0, 1, 3, 10), new StructurePieceTreasure(Block.WOOD.id, 0, 1, 3, 10), new StructurePieceTreasure(Block.LOG.id, 0, 1, 3, 10), new StructurePieceTreasure(Item.STONE_AXE.id, 0, 1, 1, 3), new StructurePieceTreasure(Item.WOOD_AXE.id, 0, 1, 1, 5), new StructurePieceTreasure(Item.STONE_PICKAXE.id, 0, 1, 1, 3), new StructurePieceTreasure(Item.WOOD_PICKAXE.id, 0, 1, 1, 5), new StructurePieceTreasure(Item.APPLE.id, 0, 2, 3, 5), new StructurePieceTreasure(Item.BREAD.id, 0, 2, 3, 3)}; -- private ArrayList T = new ArrayList(); +@@ -36,7 +36,8 @@ public class WorldServer extends World implements org.bukkit.BlockChangeDelegate + private NoteDataList[] R = new NoteDataList[] { new NoteDataList((EmptyClass2) null), new NoteDataList((EmptyClass2) null)}; + private int S; + private static final StructurePieceTreasure[] T = new StructurePieceTreasure[] { new StructurePieceTreasure(Item.STICK.id, 0, 1, 3, 10), new StructurePieceTreasure(Block.WOOD.id, 0, 1, 3, 10), new StructurePieceTreasure(Block.LOG.id, 0, 1, 3, 10), new StructurePieceTreasure(Item.STONE_AXE.id, 0, 1, 1, 3), new StructurePieceTreasure(Item.WOOD_AXE.id, 0, 1, 1, 5), new StructurePieceTreasure(Item.STONE_PICKAXE.id, 0, 1, 1, 3), new StructurePieceTreasure(Item.WOOD_PICKAXE.id, 0, 1, 1, 5), new StructurePieceTreasure(Item.APPLE.id, 0, 2, 3, 5), new StructurePieceTreasure(Item.BREAD.id, 0, 2, 3, 3)}; +- private List U = new ArrayList(); + private ArrayList pendingTickEntries = new ArrayList(); // Spigot + private int nextPendingTickEntry; // Spigot private IntHashMap entitiesById; // CraftBukkit start -@@ -53,13 +54,15 @@ public class WorldServer extends World implements org.bukkit.BlockChangeDelegate +@@ -54,13 +55,15 @@ public class WorldServer extends World implements org.bukkit.BlockChangeDelegate this.entitiesById = new IntHashMap(); } @@ -64,13 +64,13 @@ index 69d955f..7cdb549 100644 this.P = new org.bukkit.craftbukkit.CraftTravelAgent(this); // CraftBukkit this.scoreboard = new ScoreboardServer(minecraftserver); -@@ -441,9 +444,16 @@ public class WorldServer extends World implements org.bukkit.BlockChangeDelegate +@@ -440,9 +443,16 @@ public class WorldServer extends World implements org.bukkit.BlockChangeDelegate } public boolean a(int i, int j, int k, int l) { - NextTickListEntry nextticklistentry = new NextTickListEntry(i, j, k, l); - -- return this.T.contains(nextticklistentry); +- return this.U.contains(nextticklistentry); + // Spigot start + int te_cnt = this.pendingTickEntries.size(); + for (int idx = this.nextPendingTickEntry; idx < te_cnt; idx++) { @@ -141,7 +141,7 @@ index 69d955f..7cdb549 100644 - this.M.remove(nextticklistentry); - this.L.remove(nextticklistentry); -- this.T.add(nextticklistentry); +- this.U.add(nextticklistentry); + // Spigot start + this.removeNextTickIfNeeded(nextticklistentry); + this.pendingTickEntries.add(nextticklistentry); @@ -150,7 +150,7 @@ index 69d955f..7cdb549 100644 this.methodProfiler.b(); this.methodProfiler.a("ticking"); -- Iterator iterator = this.T.iterator(); +- Iterator iterator = this.U.iterator(); - - while (iterator.hasNext()) { - nextticklistentry = (NextTickListEntry) iterator.next(); @@ -167,7 +167,7 @@ index 69d955f..7cdb549 100644 } this.methodProfiler.b(); -- this.T.clear(); +- this.U.clear(); - return !this.M.isEmpty(); - } + // Spigot start @@ -192,10 +192,10 @@ index 69d955f..7cdb549 100644 - if (i1 == 0) { - iterator = this.M.iterator(); - } else { -- iterator = this.T.iterator(); +- iterator = this.U.iterator(); - /* CraftBukkit start - Comment out debug spam -- if (!this.T.isEmpty()) { -- System.out.println(this.T.size()); +- if (!this.U.isEmpty()) { +- System.out.println(this.U.size()); - } - // CraftBukkit end */ - } @@ -224,8 +224,8 @@ index 69d955f..7cdb549 100644 + // Spigot end } - public void entityJoinedWorld(Entity entity, boolean flag) { -@@ -703,13 +679,15 @@ public class WorldServer extends World implements org.bukkit.BlockChangeDelegate + /* CraftBukkit start - We prevent spawning in general, so this butchering is not needed +@@ -712,13 +688,15 @@ public class WorldServer extends World implements org.bukkit.BlockChangeDelegate this.entitiesById = new IntHashMap(); } @@ -245,7 +245,7 @@ index 69d955f..7cdb549 100644 this.b(worldsettings); super.a(worldsettings); -@@ -996,4 +974,62 @@ public class WorldServer extends World implements org.bukkit.BlockChangeDelegate +@@ -1005,4 +983,62 @@ public class WorldServer extends World implements org.bukkit.BlockChangeDelegate return this.setTypeIdAndData(x, y, z, typeId, data, 3); } // CraftBukkit end diff --git a/CraftBukkit-Patches/0039-Recipe-Deconstruction.patch b/CraftBukkit-Patches/0039-Recipe-Deconstruction.patch index 043844204a..afe48e468b 100644 --- a/CraftBukkit-Patches/0039-Recipe-Deconstruction.patch +++ b/CraftBukkit-Patches/0039-Recipe-Deconstruction.patch @@ -1,4 +1,4 @@ -From 584fae45430e0fd52bcdb5742ca77f893a862264 Mon Sep 17 00:00:00 2001 +From ee9df7fc1702b48e1080b8ebeb07ce65a910e214 Mon Sep 17 00:00:00 2001 From: md_5 Date: Sat, 1 Jun 2013 16:34:38 +1000 Subject: [PATCH] Recipe Deconstruction @@ -17,7 +17,7 @@ index bb28c12..c0836e4 100644 + java.util.List getIngredients(); // Spigot } diff --git a/src/main/java/net/minecraft/server/ShapedRecipes.java b/src/main/java/net/minecraft/server/ShapedRecipes.java -index a70b828..6d0c8ca 100644 +index 8f4246b..ac92050 100644 --- a/src/main/java/net/minecraft/server/ShapedRecipes.java +++ b/src/main/java/net/minecraft/server/ShapedRecipes.java @@ -10,7 +10,7 @@ public class ShapedRecipes implements IRecipe { @@ -27,7 +27,7 @@ index a70b828..6d0c8ca 100644 - private ItemStack result; + public ItemStack result; // Spigot public final int a; - private boolean f = false; + private boolean f; @@ -158,4 +158,11 @@ public class ShapedRecipes implements IRecipe { this.f = true; diff --git a/CraftBukkit-Patches/0040-Fix-Health-Scaling.patch b/CraftBukkit-Patches/0040-Fix-Health-Scaling.patch index a36c6b74a1..f797231dcb 100644 --- a/CraftBukkit-Patches/0040-Fix-Health-Scaling.patch +++ b/CraftBukkit-Patches/0040-Fix-Health-Scaling.patch @@ -1,4 +1,4 @@ -From 5537a2a1c5596e5df2f5f3d9c953f46ef7e3d372 Mon Sep 17 00:00:00 2001 +From 0a26bbedcd04bb3f6da1e48107710865af35feed Mon Sep 17 00:00:00 2001 From: Nick Minkler Date: Sun, 2 Jun 2013 14:54:11 +1000 Subject: [PATCH] Fix Health Scaling @@ -6,12 +6,12 @@ Subject: [PATCH] Fix Health Scaling Fix scaled health sending incorrect values to client. No longer attempts to scale health above maximum. Hopefully fixes 'flash' when player eats food. diff --git a/src/main/java/net/minecraft/server/EntityLiving.java b/src/main/java/net/minecraft/server/EntityLiving.java -index 35f3fea..ae9415c 100644 +index f043040..e0bb0a5 100644 --- a/src/main/java/net/minecraft/server/EntityLiving.java +++ b/src/main/java/net/minecraft/server/EntityLiving.java -@@ -423,7 +423,10 @@ public abstract class EntityLiving extends Entity { +@@ -251,7 +251,10 @@ public abstract class EntityLiving extends Entity { - public int getScaledHealth() { + public float getScaledHealth() { if (this.maxHealth != this.getMaxHealth() && this.getHealth() > 0) { - return this.getHealth() * this.getMaxHealth() / this.maxHealth + 1; + // Spigot start @@ -22,7 +22,7 @@ index 35f3fea..ae9415c 100644 return this.getHealth(); } diff --git a/src/main/java/net/minecraft/server/FoodMetaData.java b/src/main/java/net/minecraft/server/FoodMetaData.java -index f26d552..8fcdbae 100644 +index 543a430..fcf359b 100644 --- a/src/main/java/net/minecraft/server/FoodMetaData.java +++ b/src/main/java/net/minecraft/server/FoodMetaData.java @@ -39,7 +39,8 @@ public class FoodMetaData { @@ -36,7 +36,7 @@ index f26d552..8fcdbae 100644 } } diff --git a/src/main/java/net/minecraft/server/ItemFood.java b/src/main/java/net/minecraft/server/ItemFood.java -index 409addf..c8a7f41 100644 +index 5b77fc7..56eab3f 100644 --- a/src/main/java/net/minecraft/server/ItemFood.java +++ b/src/main/java/net/minecraft/server/ItemFood.java @@ -36,7 +36,8 @@ public class ItemFood extends Item { @@ -48,7 +48,7 @@ index 409addf..c8a7f41 100644 + ((EntityPlayer) entityhuman).playerConnection.sendPacket(new Packet8UpdateHealth(((EntityPlayer) entityhuman).getScaledHealth(), entityhuman.getFoodData().foodLevel, entityhuman.getFoodData().saturationLevel)); // CraftBukkit end - world.makeSound(entityhuman, "random.burp", 0.5F, world.random.nextFloat() * 0.1F + 0.9F); + entityhuman.getFoodData().a(this); -- 1.8.1.2 diff --git a/CraftBukkit-Patches/0041-Fix-EntityShootBowEvent-with-Skeletons.patch b/CraftBukkit-Patches/0041-Fix-EntityShootBowEvent-with-Skeletons.patch index d0222641cb..ff077561a4 100644 --- a/CraftBukkit-Patches/0041-Fix-EntityShootBowEvent-with-Skeletons.patch +++ b/CraftBukkit-Patches/0041-Fix-EntityShootBowEvent-with-Skeletons.patch @@ -1,15 +1,15 @@ -From 88def699bf4f7a11ff3764f0ecd9831c162ad0e2 Mon Sep 17 00:00:00 2001 +From 9de57bd9b69a1c413d231f763ad5d2eeee1ee37f Mon Sep 17 00:00:00 2001 From: Nick Minkler Date: Sun, 2 Jun 2013 15:04:37 +1000 Subject: [PATCH] Fix EntityShootBowEvent with Skeletons diff --git a/src/main/java/net/minecraft/server/EntitySkeleton.java b/src/main/java/net/minecraft/server/EntitySkeleton.java -index 9494627..dba2257 100644 +index e5db8a1..e175344 100644 --- a/src/main/java/net/minecraft/server/EntitySkeleton.java +++ b/src/main/java/net/minecraft/server/EntitySkeleton.java -@@ -245,9 +245,21 @@ public class EntitySkeleton extends EntityMonster implements IRangedEntity { - if (EnchantmentManager.getEnchantmentLevel(Enchantment.ARROW_FIRE.id, this.bG()) > 0 || this.getSkeletonType() == 1) { +@@ -242,9 +242,21 @@ public class EntitySkeleton extends EntityMonster implements IRangedEntity { + if (EnchantmentManager.getEnchantmentLevel(Enchantment.ARROW_FIRE.id, this.aV()) > 0 || this.getSkeletonType() == 1) { entityarrow.setOnFire(100); } + // Spigot - Skeletons should throw EntityShootBowEvents @@ -25,7 +25,7 @@ index 9494627..dba2257 100644 + } + // Spigot end - this.makeSound("random.bow", 1.0F, 1.0F / (this.aE().nextFloat() * 0.4F + 0.8F)); + this.makeSound("random.bow", 1.0F, 1.0F / (this.aB().nextFloat() * 0.4F + 0.8F)); - this.world.addEntity(entityarrow); + // this.world.addEntity(entityarrow); // Spigot - moved up } diff --git a/CraftBukkit-Patches/0043-Particle-API.patch b/CraftBukkit-Patches/0043-Particle-API.patch index 3cb0082667..bc4d78ed80 100644 --- a/CraftBukkit-Patches/0043-Particle-API.patch +++ b/CraftBukkit-Patches/0043-Particle-API.patch @@ -1,4 +1,4 @@ -From d1725f257553f7abf4fa2f13734713972b756b06 Mon Sep 17 00:00:00 2001 +From e35ea6d5ff7784e40efa156226e52ffae59afe4a Mon Sep 17 00:00:00 2001 From: md_5 Date: Sun, 2 Jun 2013 16:14:30 +1000 Subject: [PATCH] Particle API @@ -43,7 +43,7 @@ index 7de0de5..7eca388 100644 datavalue = 0; } diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java -index edc59b1..0778a66 100644 +index 8508d22..9da1a47 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java @@ -766,31 +766,21 @@ public class CraftWorld implements World { @@ -152,7 +152,7 @@ index edc59b1..0778a66 100644 public Spigot spigot() diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index 21141f2..feed78e 100644 +index b81a07e..011b5fa 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java @@ -266,13 +266,11 @@ public class CraftPlayer extends CraftHumanEntity implements Player { @@ -191,7 +191,7 @@ index 21141f2..feed78e 100644 } public void sendBlockChange(Location loc, Material material, byte data) { -@@ -1003,6 +1006,43 @@ public class CraftPlayer extends CraftHumanEntity implements Player { +@@ -1007,6 +1010,43 @@ public class CraftPlayer extends CraftHumanEntity implements Player { { return ( getHandle().playerConnection == null ) ? null : (InetSocketAddress) getHandle().playerConnection.networkManager.getSocket().getRemoteSocketAddress(); } diff --git a/CraftBukkit-Patches/0044-Hopper-Cooldowns.patch b/CraftBukkit-Patches/0044-Hopper-Cooldowns.patch index c890caea35..28fae62b3d 100644 --- a/CraftBukkit-Patches/0044-Hopper-Cooldowns.patch +++ b/CraftBukkit-Patches/0044-Hopper-Cooldowns.patch @@ -1,16 +1,16 @@ -From 2a158ef53f85cf5004c22e680bfe80dcd1f4f573 Mon Sep 17 00:00:00 2001 +From db80377236dd2416e98541e7c4b5c0bdf6de28b5 Mon Sep 17 00:00:00 2001 From: DerFlash Date: Sun, 2 Jun 2013 16:23:46 +1000 Subject: [PATCH] Hopper Cooldowns diff --git a/src/main/java/net/minecraft/server/TileEntityHopper.java b/src/main/java/net/minecraft/server/TileEntityHopper.java -index f6d269d..1f69c7b 100644 +index 054cea4..37e8f3c 100644 --- a/src/main/java/net/minecraft/server/TileEntityHopper.java +++ b/src/main/java/net/minecraft/server/TileEntityHopper.java -@@ -181,16 +181,19 @@ public class TileEntityHopper extends TileEntity implements IHopper { - boolean flag = this.u() | suckInItems(this); +@@ -182,16 +182,19 @@ public class TileEntityHopper extends TileEntity implements IHopper { + flag = suckInItems(this) || flag; if (flag) { - this.c(8); + this.c(world.spigotConfig.hopperTransfer); // Spigot @@ -33,7 +33,7 @@ index f6d269d..1f69c7b 100644 } private boolean u() { -@@ -217,7 +220,7 @@ public class TileEntityHopper extends TileEntity implements IHopper { +@@ -218,7 +221,7 @@ public class TileEntityHopper extends TileEntity implements IHopper { this.getWorld().getServer().getPluginManager().callEvent(event); if (event.isCancelled()) { this.setItem(i, itemstack); @@ -42,29 +42,29 @@ index f6d269d..1f69c7b 100644 return false; } ItemStack itemstack1 = addItem(iinventory, CraftItemStack.asNMSCopy(event.getItem()), Facing.OPPOSITE_FACING[BlockHopper.c(this.p())]); -@@ -298,9 +301,9 @@ public class TileEntityHopper extends TileEntity implements IHopper { +@@ -299,9 +302,9 @@ public class TileEntityHopper extends TileEntity implements IHopper { iinventory.setItem(i, itemstack1); if (ihopper instanceof TileEntityHopper) { - ((TileEntityHopper) ihopper).c(8); // Delay hopper checks + ((TileEntityHopper) ihopper).c(ihopper.getWorld().spigotConfig.hopperTransfer); // Spigot } else if (ihopper instanceof EntityMinecartHopper) { -- ((EntityMinecartHopper) ihopper).n(4); // Delay hopper minecart checks +- ((EntityMinecartHopper) ihopper).l(4); // Delay hopper minecart checks + ((EntityMinecartHopper) ihopper).n(ihopper.getWorld().spigotConfig.hopperTransfer / 2); // Spigot } return false; -@@ -404,7 +407,7 @@ public class TileEntityHopper extends TileEntity implements IHopper { +@@ -405,7 +408,7 @@ public class TileEntityHopper extends TileEntity implements IHopper { if (flag) { if (iinventory instanceof TileEntityHopper) { - ((TileEntityHopper) iinventory).c(8); + ((TileEntityHopper) iinventory).c(((TileEntityHopper) iinventory).world.spigotConfig.hopperTransfer); // Spigot + iinventory.update(); } - iinventory.update(); diff --git a/src/main/java/org/spigotmc/SpigotWorldConfig.java b/src/main/java/org/spigotmc/SpigotWorldConfig.java -index 89d716c..8f13fa9 100644 +index 820c576..56af938 100644 --- a/src/main/java/org/spigotmc/SpigotWorldConfig.java +++ b/src/main/java/org/spigotmc/SpigotWorldConfig.java @@ -178,4 +178,13 @@ public class SpigotWorldConfig diff --git a/CraftBukkit-Patches/0045-Prevent-Shutdown-Hang.patch b/CraftBukkit-Patches/0045-Prevent-Shutdown-Hang.patch index 90ae321cda..0ebccc448e 100644 --- a/CraftBukkit-Patches/0045-Prevent-Shutdown-Hang.patch +++ b/CraftBukkit-Patches/0045-Prevent-Shutdown-Hang.patch @@ -1,4 +1,4 @@ -From c18ceeae093ea461e065fbea7051ab0917bf29dd Mon Sep 17 00:00:00 2001 +From dd5a9e11c5991ac7ffc5f7fec36058d353ca9418 Mon Sep 17 00:00:00 2001 From: md_5 Date: Tue, 11 Jun 2013 11:54:32 +1000 Subject: [PATCH] Prevent Shutdown Hang @@ -6,10 +6,10 @@ Subject: [PATCH] Prevent Shutdown Hang Prevents server hanging if players disconnect during the shutdown sequence. diff --git a/src/main/java/net/minecraft/server/PlayerList.java b/src/main/java/net/minecraft/server/PlayerList.java -index 1891308..fe846af 100644 +index 0e5bf6c..1276ec4 100644 --- a/src/main/java/net/minecraft/server/PlayerList.java +++ b/src/main/java/net/minecraft/server/PlayerList.java -@@ -1067,7 +1067,14 @@ public abstract class PlayerList { +@@ -1061,7 +1061,14 @@ public abstract class PlayerList { public void r() { while (!this.players.isEmpty()) { diff --git a/CraftBukkit-Patches/0046-Implement-SpawnerSpawnEvent.patch b/CraftBukkit-Patches/0046-Implement-SpawnerSpawnEvent.patch index 8600f3ccaf..5722e41cc2 100644 --- a/CraftBukkit-Patches/0046-Implement-SpawnerSpawnEvent.patch +++ b/CraftBukkit-Patches/0046-Implement-SpawnerSpawnEvent.patch @@ -1,4 +1,4 @@ -From 6257069117c3870c0b8640386252867a3f4f5c0a Mon Sep 17 00:00:00 2001 +From d16b6fed78847a022e2898b61512adc00a86f6ac Mon Sep 17 00:00:00 2001 From: Andy Shulman Date: Mon, 15 Apr 2013 20:06:37 -0500 Subject: [PATCH] Implement SpawnerSpawnEvent. @@ -6,7 +6,7 @@ Subject: [PATCH] Implement SpawnerSpawnEvent. Adds BUKKIT-267 diff --git a/src/main/java/net/minecraft/server/MobSpawnerAbstract.java b/src/main/java/net/minecraft/server/MobSpawnerAbstract.java -index 4ba4735..d860c88 100644 +index 108b375..4edd5e3 100644 --- a/src/main/java/net/minecraft/server/MobSpawnerAbstract.java +++ b/src/main/java/net/minecraft/server/MobSpawnerAbstract.java @@ -5,7 +5,11 @@ import java.util.Collection; @@ -30,13 +30,13 @@ index 4ba4735..d860c88 100644 + // CraftBukkit start - call SpawnerSpawnEvent, abort if cancelled + SpawnerSpawnEvent event = CraftEventFactory.callSpawnerSpawnEvent(entity, this.b(), this.c(), this.d()); + if (!event.isCancelled()) { -+ entity.world.addEntity(entity, CreatureSpawnEvent.SpawnReason.SPAWNER); ++ entity.world.addEntity(entity, CreatureSpawnEvent.SpawnReason.SPAWNER); // CraftBukkit + } + // CraftBukkit end } NBTTagCompound nbttagcompound1; -@@ -150,6 +159,12 @@ public abstract class MobSpawnerAbstract { +@@ -150,6 +159,11 @@ public abstract class MobSpawnerAbstract { entity2.f(nbttagcompound2); entity2.setPositionRotation(entity1.locX, entity1.locY, entity1.locZ, entity1.yaw, entity1.pitch); @@ -45,29 +45,28 @@ index 4ba4735..d860c88 100644 + if (event.isCancelled()) { + continue; + } -+ // CraftBukkit end - this.a().addEntity(entity2, CreatureSpawnEvent.SpawnReason.SPAWNER); // CraftBukkit); - entity1.mount(entity2); - } -@@ -158,7 +173,12 @@ public abstract class MobSpawnerAbstract { + if (entity.world != null) { + entity.world.addEntity(entity2, CreatureSpawnEvent.SpawnReason.SPAWNER); // CraftBukkit + } +@@ -161,7 +175,12 @@ public abstract class MobSpawnerAbstract { } } else if (entity instanceof EntityLiving && entity.world != null) { - ((EntityLiving) entity).bJ(); -- this.a().addEntity(entity, CreatureSpawnEvent.SpawnReason.SPAWNER); // CraftBukkit); + ((EntityInsentient) entity).a((GroupDataEntity) null); +- this.a().addEntity(entity, CreatureSpawnEvent.SpawnReason.SPAWNER); // CraftBukkit + // CraftBukkit start - call SpawnerSpawnEvent, abort if cancelled + SpawnerSpawnEvent event = CraftEventFactory.callSpawnerSpawnEvent(entity, this.b(), this.c(), this.d()); + if (!event.isCancelled()) { -+ this.a().addEntity(entity, CreatureSpawnEvent.SpawnReason.SPAWNER); ++ this.a().addEntity(entity, CreatureSpawnEvent.SpawnReason.SPAWNER); // CraftBukkit + } + // CraftBukkit end } return entity; diff --git a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java -index 2b56c75..4ba43a0 100644 +index 9986b7a..b026e54 100644 --- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java +++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java -@@ -34,6 +34,7 @@ import org.bukkit.Material; +@@ -35,6 +35,7 @@ import org.bukkit.Material; import org.bukkit.block.Block; import org.bukkit.block.BlockFace; import org.bukkit.block.BlockState; @@ -75,7 +74,7 @@ index 2b56c75..4ba43a0 100644 import org.bukkit.craftbukkit.CraftServer; import org.bukkit.craftbukkit.CraftWorld; import org.bukkit.craftbukkit.block.CraftBlock; -@@ -115,6 +116,22 @@ public class CraftEventFactory { +@@ -116,6 +117,22 @@ public class CraftEventFactory { } /** diff --git a/CraftBukkit-Patches/0049-Enable-Foreign-Language-Signs.patch b/CraftBukkit-Patches/0049-Enable-Foreign-Language-Signs.patch index 2711c15ca4..7bcded7b4e 100644 --- a/CraftBukkit-Patches/0049-Enable-Foreign-Language-Signs.patch +++ b/CraftBukkit-Patches/0049-Enable-Foreign-Language-Signs.patch @@ -1,14 +1,14 @@ -From ba0018601961308c4c4213daaeef9c23e62ef37f Mon Sep 17 00:00:00 2001 +From ae268b91679cfb9c2fc4d94e095cd01ba4d6bcba Mon Sep 17 00:00:00 2001 From: md_5 Date: Fri, 21 Jun 2013 17:53:03 +1000 Subject: [PATCH] Enable Foreign Language Signs diff --git a/src/main/java/net/minecraft/server/PlayerConnection.java b/src/main/java/net/minecraft/server/PlayerConnection.java -index 8deba1b..998ac8d 100644 +index e5937fc..1422d67 100644 --- a/src/main/java/net/minecraft/server/PlayerConnection.java +++ b/src/main/java/net/minecraft/server/PlayerConnection.java -@@ -1559,7 +1559,7 @@ public class PlayerConnection extends Connection { +@@ -1578,7 +1578,7 @@ public class PlayerConnection extends Connection { flag = false; } else { for (i = 0; i < packet130updatesign.lines[j].length(); ++i) { diff --git a/CraftBukkit-Patches/0050-Spam-Filter-Exclusions.patch b/CraftBukkit-Patches/0050-Spam-Filter-Exclusions.patch index 559a122b83..23a75c4797 100644 --- a/CraftBukkit-Patches/0050-Spam-Filter-Exclusions.patch +++ b/CraftBukkit-Patches/0050-Spam-Filter-Exclusions.patch @@ -1,18 +1,18 @@ -From 2ccdffc75467d7bca0ae9cf2f92f9441a0aa1459 Mon Sep 17 00:00:00 2001 +From 6c60d0e5cb8690f7a022ff2bc24731a7e4a43891 Mon Sep 17 00:00:00 2001 From: md_5 Date: Fri, 21 Jun 2013 17:59:22 +1000 Subject: [PATCH] Spam Filter Exclusions diff --git a/src/main/java/net/minecraft/server/PlayerConnection.java b/src/main/java/net/minecraft/server/PlayerConnection.java -index 998ac8d..03e0e1c 100644 +index 1422d67..fc174b2 100644 --- a/src/main/java/net/minecraft/server/PlayerConnection.java +++ b/src/main/java/net/minecraft/server/PlayerConnection.java -@@ -846,7 +846,17 @@ public class PlayerConnection extends Connection { +@@ -858,7 +858,17 @@ public class PlayerConnection extends Connection { this.chat(s, packet3chat.a_()); // This section stays because it is only applicable to packets -- if (chatSpamField.addAndGet(this, 20) > 200 && !this.minecraftServer.getPlayerList().isOp(this.player.name)) { // CraftBukkit use thread-safe spam +- if (chatSpamField.addAndGet(this, 20) > 200 && !this.minecraftServer.getPlayerList().isOp(this.player.getName())) { // CraftBukkit use thread-safe spam + // Spigot - spam exclusions + boolean counted = true; + for ( String exclude : org.spigotmc.SpigotConfig.spamExclusions ) @@ -23,7 +23,7 @@ index 998ac8d..03e0e1c 100644 + break; + } + } -+ if (counted && chatSpamField.addAndGet(this, 20) > 200 && !this.minecraftServer.getPlayerList().isOp(this.player.name)) { // CraftBukkit use thread-safe spam ++ if (counted && chatSpamField.addAndGet(this, 20) > 200 && !this.minecraftServer.getPlayerList().isOp(this.player.getName())) { // CraftBukkit use thread-safe spam if (packet3chat.a_()) { Waitable waitable = new Waitable() { @Override diff --git a/CraftBukkit-Patches/0051-Allow-Disabling-of-Command-Logging.patch b/CraftBukkit-Patches/0051-Allow-Disabling-of-Command-Logging.patch index ec244063d4..2a8050d221 100644 --- a/CraftBukkit-Patches/0051-Allow-Disabling-of-Command-Logging.patch +++ b/CraftBukkit-Patches/0051-Allow-Disabling-of-Command-Logging.patch @@ -1,14 +1,14 @@ -From f7c4774dfba4058a1c67d8d99589396abee5958b Mon Sep 17 00:00:00 2001 +From b2fb1342018352db6b72d88ed4891ef0f4fd5808 Mon Sep 17 00:00:00 2001 From: md_5 Date: Fri, 21 Jun 2013 18:01:29 +1000 Subject: [PATCH] Allow Disabling of Command Logging diff --git a/src/main/java/net/minecraft/server/PlayerConnection.java b/src/main/java/net/minecraft/server/PlayerConnection.java -index 03e0e1c..be44514 100644 +index fc174b2..c2a9878 100644 --- a/src/main/java/net/minecraft/server/PlayerConnection.java +++ b/src/main/java/net/minecraft/server/PlayerConnection.java -@@ -979,7 +979,12 @@ public class PlayerConnection extends Connection { +@@ -991,7 +991,12 @@ public class PlayerConnection extends Connection { } try { diff --git a/CraftBukkit-Patches/0054-Allow-Disabling-of-Random-Lighting-Updates.patch b/CraftBukkit-Patches/0054-Allow-Disabling-of-Random-Lighting-Updates.patch index 2611529106..22878ebf25 100644 --- a/CraftBukkit-Patches/0054-Allow-Disabling-of-Random-Lighting-Updates.patch +++ b/CraftBukkit-Patches/0054-Allow-Disabling-of-Random-Lighting-Updates.patch @@ -1,14 +1,14 @@ -From 2c4c883f2678a7b884bb7b135a93da0935f858a5 Mon Sep 17 00:00:00 2001 +From e73fc332b824f38374b26960ec134c67a271a6f4 Mon Sep 17 00:00:00 2001 From: md_5 Date: Sat, 22 Jun 2013 16:12:02 +1000 Subject: [PATCH] Allow Disabling of Random Lighting Updates diff --git a/src/main/java/net/minecraft/server/World.java b/src/main/java/net/minecraft/server/World.java -index 5866abb..9f87b0e 100644 +index 039ba6e..6060288 100644 --- a/src/main/java/net/minecraft/server/World.java +++ b/src/main/java/net/minecraft/server/World.java -@@ -2104,7 +2104,7 @@ public abstract class World implements IBlockAccess { +@@ -2103,7 +2103,7 @@ public abstract class World implements IBlockAccess { } this.methodProfiler.a("playerCheckLight"); diff --git a/CraftBukkit-Patches/0057-Always-Fire-PreLoginEvent.patch b/CraftBukkit-Patches/0057-Always-Fire-PreLoginEvent.patch index 13b840d81d..4bc325360d 100644 --- a/CraftBukkit-Patches/0057-Always-Fire-PreLoginEvent.patch +++ b/CraftBukkit-Patches/0057-Always-Fire-PreLoginEvent.patch @@ -1,24 +1,24 @@ -From 73fe7ed8c117bbdb3ee02a5a0f336fc5adeea12e Mon Sep 17 00:00:00 2001 +From 22b6fb72ab5ba663f138f46bab8fba97ee194286 Mon Sep 17 00:00:00 2001 From: md_5 Date: Tue, 25 Jun 2013 18:09:26 +1000 Subject: [PATCH] Always Fire PreLoginEvent diff --git a/src/main/java/net/minecraft/server/PendingConnection.java b/src/main/java/net/minecraft/server/PendingConnection.java -index e78781e..3f4c311 100644 +index 6308331..7984666 100644 --- a/src/main/java/net/minecraft/server/PendingConnection.java +++ b/src/main/java/net/minecraft/server/PendingConnection.java -@@ -105,7 +105,7 @@ public class PendingConnection extends Connection { +@@ -110,7 +110,7 @@ public class PendingConnection extends Connection { + } - public void a(Packet205ClientCommand packet205clientcommand) { - if (packet205clientcommand.a == 0) { + this.j = true; - if (this.server.getOnlineMode()) { + if (true) { // Spigot - Always fire - if (this.j) { - this.disconnect("Duplicate login"); - return; + (new ThreadLoginVerifier(this, server.server)).start(); // CraftBukkit - add CraftServer + } else { + this.h = true; diff --git a/src/main/java/net/minecraft/server/ThreadLoginVerifier.java b/src/main/java/net/minecraft/server/ThreadLoginVerifier.java -index 496cfe4..44ea39e 100644 +index 5e45cae..70f9fea 100644 --- a/src/main/java/net/minecraft/server/ThreadLoginVerifier.java +++ b/src/main/java/net/minecraft/server/ThreadLoginVerifier.java @@ -27,24 +27,29 @@ class ThreadLoginVerifier extends Thread { @@ -26,9 +26,9 @@ index 496cfe4..44ea39e 100644 } + private boolean auth() throws java.io.IOException { -+ String s = (new BigInteger(MinecraftEncryption.a(PendingConnection.a(this.pendingConnection), PendingConnection.b(this.pendingConnection).F().getPublic(), PendingConnection.c(this.pendingConnection)))).toString(16); ++ String s = (new BigInteger(MinecraftEncryption.a(PendingConnection.a(this.pendingConnection), PendingConnection.b(this.pendingConnection).H().getPublic(), PendingConnection.c(this.pendingConnection)))).toString(16); + URL url = new URL("http://session.minecraft.net/game/checkserver.jsp?user=" + URLEncoder.encode(PendingConnection.d(this.pendingConnection), "UTF-8") + "&serverId=" + URLEncoder.encode(s, "UTF-8")); -+ BufferedReader bufferedreader = new BufferedReader(new InputStreamReader(url.openStream())); ++ BufferedReader bufferedreader = new BufferedReader(new InputStreamReader(url.openConnection(PendingConnection.b(this.pendingConnection).ap()).getInputStream())); + String s1 = bufferedreader.readLine(); + + bufferedreader.close(); @@ -47,9 +47,9 @@ index 496cfe4..44ea39e 100644 public void run() { try { if (org.spigotmc.SpamHaus.filterIp(pendingConnection)) return; // Spigot -- String s = (new BigInteger(MinecraftEncryption.a(PendingConnection.a(this.pendingConnection), PendingConnection.b(this.pendingConnection).F().getPublic(), PendingConnection.c(this.pendingConnection)))).toString(16); +- String s = (new BigInteger(MinecraftEncryption.a(PendingConnection.a(this.pendingConnection), PendingConnection.b(this.pendingConnection).H().getPublic(), PendingConnection.c(this.pendingConnection)))).toString(16); - URL url = new URL("http://session.minecraft.net/game/checkserver.jsp?user=" + URLEncoder.encode(PendingConnection.d(this.pendingConnection), "UTF-8") + "&serverId=" + URLEncoder.encode(s, "UTF-8")); -- BufferedReader bufferedreader = new BufferedReader(new InputStreamReader(url.openStream())); +- BufferedReader bufferedreader = new BufferedReader(new InputStreamReader(url.openConnection(PendingConnection.b(this.pendingConnection).ap()).getInputStream())); - String s1 = bufferedreader.readLine(); - - bufferedreader.close(); diff --git a/CraftBukkit-Patches/0058-Properly-Close-Inventories.patch b/CraftBukkit-Patches/0058-Properly-Close-Inventories.patch index 6fe98eeb78..11612a1071 100644 --- a/CraftBukkit-Patches/0058-Properly-Close-Inventories.patch +++ b/CraftBukkit-Patches/0058-Properly-Close-Inventories.patch @@ -1,4 +1,4 @@ -From 7a8b5c8e972137ad02eb50e9ce7da758dab61d99 Mon Sep 17 00:00:00 2001 +From 2868feb3889d95d778dcaec82889cd0cad10f0a5 Mon Sep 17 00:00:00 2001 From: md_5 Date: Thu, 27 Jun 2013 17:26:09 +1000 Subject: [PATCH] Properly Close Inventories @@ -6,7 +6,7 @@ Subject: [PATCH] Properly Close Inventories Properly close inventories when unloading and switching worlds. diff --git a/src/main/java/net/minecraft/server/Chunk.java b/src/main/java/net/minecraft/server/Chunk.java -index e8d30c5..4879db6 100644 +index 04cb6fb..34d07f2 100644 --- a/src/main/java/net/minecraft/server/Chunk.java +++ b/src/main/java/net/minecraft/server/Chunk.java @@ -690,6 +690,15 @@ public class Chunk { @@ -42,13 +42,13 @@ index e8d30c5..4879db6 100644 // Do not pass along players, as doing so can get them stuck outside of time. // (which for example disables inventory icon updates and prevents block breaking) diff --git a/src/main/java/net/minecraft/server/EntityMinecartContainer.java b/src/main/java/net/minecraft/server/EntityMinecartContainer.java -index c207076..8f9f558 100644 +index e89b106..f58cd7e 100644 --- a/src/main/java/net/minecraft/server/EntityMinecartContainer.java +++ b/src/main/java/net/minecraft/server/EntityMinecartContainer.java @@ -149,6 +149,12 @@ public abstract class EntityMinecartContainer extends EntityMinecartAbstract imp } - public void c(int i) { + public void b(int i) { + // Spigot Start + for ( HumanEntity human : new java.util.ArrayList( transaction ) ) + { @@ -56,7 +56,7 @@ index c207076..8f9f558 100644 + } + // Spigot End this.b = false; - super.c(i); + super.b(i); } -- 1.8.1.2 diff --git a/CraftBukkit-Patches/0059-Disallow-Interaction-With-Self.patch b/CraftBukkit-Patches/0059-Disallow-Interaction-With-Self.patch index b78ea90c06..585319e927 100644 --- a/CraftBukkit-Patches/0059-Disallow-Interaction-With-Self.patch +++ b/CraftBukkit-Patches/0059-Disallow-Interaction-With-Self.patch @@ -1,14 +1,14 @@ -From 91608f72be55d36c57c22e85b4740c23f129a735 Mon Sep 17 00:00:00 2001 +From a8399a4077723881c4dc54d714ef746f706b6c7d Mon Sep 17 00:00:00 2001 From: md_5 Date: Fri, 28 Jun 2013 19:52:54 +1000 Subject: [PATCH] Disallow Interaction With Self diff --git a/src/main/java/net/minecraft/server/PlayerConnection.java b/src/main/java/net/minecraft/server/PlayerConnection.java -index be44514..f5544a3 100644 +index c2a9878..6bfc289 100644 --- a/src/main/java/net/minecraft/server/PlayerConnection.java +++ b/src/main/java/net/minecraft/server/PlayerConnection.java -@@ -1091,6 +1091,13 @@ public class PlayerConnection extends Connection { +@@ -1109,6 +1109,13 @@ public class PlayerConnection extends Connection { WorldServer worldserver = this.minecraftServer.getWorldServer(this.player.dimension); Entity entity = worldserver.getEntity(packet7useentity.target); @@ -21,7 +21,7 @@ index be44514..f5544a3 100644 + // Spigot End if (entity != null) { - boolean flag = this.player.n(entity); + boolean flag = this.player.o(entity); -- 1.8.1.2