Optimize isInvalidYLocation, getType and getBlockData

Some pretty micro optimizations, but this is the hottest method in the server....

This will drastically reduce number of operations to perform getType

the 2 previous patches was squashed into 1
This commit is contained in:
Aikar 2016-06-22 22:43:02 -04:00
parent 0973e46de1
commit 3faaaab75d
108 changed files with 401 additions and 269 deletions

View File

@ -1,4 +1,4 @@
From 7000bff5800158522ae29ddfeb1433a4844d8f59 Mon Sep 17 00:00:00 2001
From 4218b818924a5051199822173d5fe96a416ed53d Mon Sep 17 00:00:00 2001
From: CullanP <cullanpage@gmail.com>
Date: Thu, 3 Mar 2016 02:13:38 -0600
Subject: [PATCH] Avoid hopper searches if there are no items
@ -14,7 +14,7 @@ And since minecart hoppers are used _very_ rarely near we can avoid alot of sear
Combined, this adds up a lot.
diff --git a/src/main/java/net/minecraft/server/Chunk.java b/src/main/java/net/minecraft/server/Chunk.java
index 1a0a5e5..f0f4264 100644
index 0fae95d..684e5f7 100644
--- a/src/main/java/net/minecraft/server/Chunk.java
+++ b/src/main/java/net/minecraft/server/Chunk.java
@@ -47,6 +47,13 @@ public class Chunk {
@ -31,7 +31,7 @@ index 1a0a5e5..f0f4264 100644
// CraftBukkit start - Neighbor loaded cache for chunk lighting and entity ticking
private int neighbors = 0x1 << 12;
public long chunkKey;
@@ -625,6 +632,13 @@ public class Chunk {
@@ -618,6 +625,13 @@ public class Chunk {
entity.ad = k;
entity.ae = this.locZ;
this.entitySlices[k].add(entity);
@ -45,7 +45,7 @@ index 1a0a5e5..f0f4264 100644
// Spigot start - increment creature type count
// Keep this synced up with World.a(Class)
if (entity instanceof EntityInsentient) {
@@ -657,6 +671,13 @@ public class Chunk {
@@ -650,6 +664,13 @@ public class Chunk {
}
this.entitySlices[i].remove(entity);
@ -59,7 +59,7 @@ index 1a0a5e5..f0f4264 100644
// Spigot start - decrement creature type count
// Keep this synced up with World.a(Class)
if (entity instanceof EntityInsentient) {
@@ -848,6 +869,15 @@ public class Chunk {
@@ -841,6 +862,15 @@ public class Chunk {
if (!this.entitySlices[k].isEmpty()) {
Iterator iterator = this.entitySlices[k].iterator();
@ -75,7 +75,7 @@ index 1a0a5e5..f0f4264 100644
while (iterator.hasNext()) {
Entity entity1 = (Entity) iterator.next();
@@ -884,7 +914,18 @@ public class Chunk {
@@ -877,7 +907,18 @@ public class Chunk {
i = MathHelper.clamp(i, 0, this.entitySlices.length - 1);
j = MathHelper.clamp(j, 0, this.entitySlices.length - 1);

View File

@ -1,31 +0,0 @@
From 4a9976d0b2b7783046a35a9c48146e0a562cb72f Mon Sep 17 00:00:00 2001
From: Aikar <aikar@aikar.co>
Date: Thu, 3 Mar 2016 02:07:55 -0600
Subject: [PATCH] Optimize getBlockData
Hot method, so reduce # of instructions for the method.
diff --git a/src/main/java/net/minecraft/server/Chunk.java b/src/main/java/net/minecraft/server/Chunk.java
index 0fae95d..1a0a5e5 100644
--- a/src/main/java/net/minecraft/server/Chunk.java
+++ b/src/main/java/net/minecraft/server/Chunk.java
@@ -397,8 +397,15 @@ public class Chunk {
return this.a(i, j, k).c();
}
+ // Paper - Optimize getBlockData
public IBlockData getBlockData(BlockPosition blockposition) {
- return this.a(blockposition.getX(), blockposition.getY(), blockposition.getZ());
+ if (blockposition.getY() >= 0 && blockposition.getY() >> 4 < this.sections.length) {
+ ChunkSection chunksection = this.sections[blockposition.getY() >> 4];
+ if (chunksection != null) {
+ return chunksection.getType(blockposition.getX() & 15, blockposition.getY() & 15, blockposition.getZ() & 15);
+ }
+ }
+ return Blocks.AIR.getBlockData();
}
public IBlockData a(final int i, final int j, final int k) {
--
2.9.0

View File

@ -1,4 +1,4 @@
From f13c3a2728d644b624656810efa02069d44ec301 Mon Sep 17 00:00:00 2001
From a91cf68943834508930b5314c6cc67c15484194e Mon Sep 17 00:00:00 2001
From: kashike <kashike@vq.lc>
Date: Thu, 3 Mar 2016 02:15:57 -0600
Subject: [PATCH] Expose server CommandMap

View File

@ -1,4 +1,4 @@
From 2e57178592ad2d78a55f221af67ac8e63ed1c764 Mon Sep 17 00:00:00 2001
From 141983dc1c88235f76dd597e6e4f971103992b15 Mon Sep 17 00:00:00 2001
From: kashike <kashike@vq.lc>
Date: Thu, 3 Mar 2016 02:18:39 -0600
Subject: [PATCH] Be a bit more informative in maxHealth exception

View File

@ -1,4 +1,4 @@
From c1cf998ff2314c70cb0de8a55586676bdd7b162f Mon Sep 17 00:00:00 2001
From bec2920701b7661f4dfd3bc75d44f685a7832d0c Mon Sep 17 00:00:00 2001
From: Zach Brown <zach.brown@destroystokyo.com>
Date: Thu, 3 Mar 2016 02:21:58 -0600
Subject: [PATCH] Graduate bungeecord chat API from spigot subclasses

View File

@ -1,4 +1,4 @@
From 9bbb8fc51c33eb96c773efbf925c0df43e361548 Mon Sep 17 00:00:00 2001
From 1608cd40656ac9b476859d2d2def639550f4874f Mon Sep 17 00:00:00 2001
From: Techcable <Techcable@outlook.com>
Date: Thu, 3 Mar 2016 02:32:10 -0600
Subject: [PATCH] Player Tab List and Title APIs

View File

@ -1,4 +1,4 @@
From 5cfaf07def26c1caf6625a18f49386e78ab0299a Mon Sep 17 00:00:00 2001
From a8a92b91cd28ea0a4115976ff0a8daabf36abf9a Mon Sep 17 00:00:00 2001
From: Joseph Hirschfeld <joe@ibj.io>
Date: Thu, 3 Mar 2016 02:33:53 -0600
Subject: [PATCH] Ensure inv drag is in bounds

View File

@ -1,4 +1,4 @@
From 279fede1ac5e6ed7499702b85e1c6bbfed03db84 Mon Sep 17 00:00:00 2001
From 23113242e70d884bf3091ee1efcda06dd2d71ab8 Mon Sep 17 00:00:00 2001
From: Joseph Hirschfeld <joe@ibj.io>
Date: Thu, 3 Mar 2016 02:39:54 -0600
Subject: [PATCH] Change implementation of (tile)entity removal list

View File

@ -1,4 +1,4 @@
From dbf7b0e43495ab62d668d7571acebe46c616200d Mon Sep 17 00:00:00 2001
From 3e529ff8e46271ef3e60ec7f9268f11735d97990 Mon Sep 17 00:00:00 2001
From: Joseph Hirschfeld <joe@ibj.io>
Date: Thu, 3 Mar 2016 02:46:17 -0600
Subject: [PATCH] Add configurable portal search radius

View File

@ -1,4 +1,4 @@
From ca1fca4babc5402d36fc058a8847955cdbe2d0cc Mon Sep 17 00:00:00 2001
From e89c6191576e753b2742b027227a378963d67b72 Mon Sep 17 00:00:00 2001
From: Joseph Hirschfeld <joe@ibj.io>
Date: Thu, 3 Mar 2016 02:48:12 -0600
Subject: [PATCH] Add velocity warnings

View File

@ -1,4 +1,4 @@
From 11301f2c211f2ea89528de536eeacfcf4ead86f2 Mon Sep 17 00:00:00 2001
From 2f889b7b96695761c43f97cc3541d53d6726b1f9 Mon Sep 17 00:00:00 2001
From: Sudzzy <originmc@outlook.com>
Date: Thu, 3 Mar 2016 02:50:31 -0600
Subject: [PATCH] Fix inter-world teleportation glitches

View File

@ -1,4 +1,4 @@
From cd3e2243707e47c864ccffb74f635c23f680c009 Mon Sep 17 00:00:00 2001
From c6c618ab92a20d2ede15a3cbc4ab76443a8a447e Mon Sep 17 00:00:00 2001
From: Joseph Hirschfeld <joe@ibj.io>
Date: Thu, 3 Mar 2016 03:15:41 -0600
Subject: [PATCH] Add exception reporting event
@ -50,7 +50,7 @@ index 0000000..9339718
+}
\ No newline at end of file
diff --git a/src/main/java/net/minecraft/server/Chunk.java b/src/main/java/net/minecraft/server/Chunk.java
index f0f4264..f16a5dc 100644
index 684e5f7..bc55a2b 100644
--- a/src/main/java/net/minecraft/server/Chunk.java
+++ b/src/main/java/net/minecraft/server/Chunk.java
@@ -1,5 +1,6 @@
@ -68,7 +68,7 @@ index f0f4264..f16a5dc 100644
public class Chunk {
@@ -764,10 +766,15 @@ public class Chunk {
@@ -757,10 +759,15 @@ public class Chunk {
this.tileEntities.remove(blockposition);
// Paper end
} else {

View File

@ -1,4 +1,4 @@
From 4b5fde287ea26f500f8edf14d1636c0d372ab9b6 Mon Sep 17 00:00:00 2001
From e11bae4003629ef3f93d618965611e3248a3024f Mon Sep 17 00:00:00 2001
From: kashike <kashike@vq.lc>
Date: Tue, 8 Mar 2016 18:28:43 -0800
Subject: [PATCH] Don't nest if we don't need to when cerealising text

View File

@ -1,4 +1,4 @@
From 777b799746e474f24272c0b8932a63dc6f2e4c9a Mon Sep 17 00:00:00 2001
From 777ae8cd4930e25569e4bcb8b2a328ab69dbd327 Mon Sep 17 00:00:00 2001
From: Aikar <aikar@aikar.co>
Date: Tue, 8 Mar 2016 23:25:45 -0500
Subject: [PATCH] Disable Scoreboards for non players by default

View File

@ -1,4 +1,4 @@
From 91af7f355185096176f4070926669c40151b5333 Mon Sep 17 00:00:00 2001
From 93008463fc0aeff69213286894da86add44a934b Mon Sep 17 00:00:00 2001
From: mrapple <tony@oc.tc>
Date: Sun, 25 Nov 2012 13:43:39 -0600
Subject: [PATCH] Add methods for working with arrows stuck in living entities

View File

@ -1,4 +1,4 @@
From 98ba9d47b5f6b8d99fd00e68ea966674c74f1890 Mon Sep 17 00:00:00 2001
From a583c941f42db8331d0edfd157c9d568300e1a0a Mon Sep 17 00:00:00 2001
From: Jedediah Smith <jedediah@silencegreys.com>
Date: Sat, 4 Apr 2015 23:17:52 -0400
Subject: [PATCH] Complete resource pack API

View File

@ -1,4 +1,4 @@
From ff7e19c54ec11a8211c8dbeca7e2e71802a23462 Mon Sep 17 00:00:00 2001
From 420cb861f8b6dad37dd2700405637935cd23a682 Mon Sep 17 00:00:00 2001
From: Byteflux <byte@byteflux.net>
Date: Sat, 12 Mar 2016 13:37:50 -0600
Subject: [PATCH] Re-add Spigot's hopper-check feature

View File

@ -1,4 +1,4 @@
From 1082497acdfe306440b40df188fb49ec9e320efd Mon Sep 17 00:00:00 2001
From aff4b290456e97c2fbc14b5b99a8bcd186f1a693 Mon Sep 17 00:00:00 2001
From: Aikar <aikar@aikar.co>
Date: Fri, 4 Mar 2016 18:18:37 -0600
Subject: [PATCH] Chunk save queue improvements

View File

@ -1,4 +1,4 @@
From 89a3a519e4d2b83ea8d1ece326af825a76359f17 Mon Sep 17 00:00:00 2001
From a71fb1acf842874b674263765f8685d47ae4aafa Mon Sep 17 00:00:00 2001
From: Aikar <aikar@aikar.co>
Date: Mon, 4 Mar 2013 23:46:10 -0500
Subject: [PATCH] Chunk Save Reattempt

View File

@ -1,4 +1,4 @@
From 6767ecd0b2bdd6694d872ac098e9575f0e5f0248 Mon Sep 17 00:00:00 2001
From 913b7a2ebb69c79d655cdba8b0402a996045cfe9 Mon Sep 17 00:00:00 2001
From: Aikar <aikar@aikar.co>
Date: Fri, 18 Mar 2016 13:17:38 -0400
Subject: [PATCH] Default loading permissions.yml before plugins

View File

@ -1,4 +1,4 @@
From 5f65cecee125448dd46386c3a7a5e88bff946270 Mon Sep 17 00:00:00 2001
From a692352ea8fce1de2f01d97711e4a3b5dc7b4ec3 Mon Sep 17 00:00:00 2001
From: William <admin@domnian.com>
Date: Fri, 18 Mar 2016 03:30:17 -0400
Subject: [PATCH] Allow Reloading of Custom Permissions

View File

@ -1,4 +1,4 @@
From 469ab12bed07d8349d8e46c14d2aec61c6f375e1 Mon Sep 17 00:00:00 2001
From d09a45e281463742aa26b2f37f42411346161314 Mon Sep 17 00:00:00 2001
From: Aikar <aikar@aikar.co>
Date: Fri, 18 Mar 2016 13:50:14 -0400
Subject: [PATCH] Remove Metadata on reload

View File

@ -1,4 +1,4 @@
From b6c9198666362fafdb1113d0fc4e3d49390cd845 Mon Sep 17 00:00:00 2001
From 20309f9506d73253a2e1ec0055805ecde69f02fb Mon Sep 17 00:00:00 2001
From: Aikar <aikar@aikar.co>
Date: Fri, 18 Mar 2016 14:19:19 -0400
Subject: [PATCH] Undead horse leashing

View File

@ -1,4 +1,4 @@
From 03ac1c1a1577ede07787c0ffb012a32d2c76021b Mon Sep 17 00:00:00 2001
From f8841a72c02e9282be1739d120943ae0c00279d4 Mon Sep 17 00:00:00 2001
From: Aikar <aikar@aikar.co>
Date: Fri, 18 Mar 2016 14:24:53 -0400
Subject: [PATCH] Fix Furnace cook time bug

View File

@ -1,4 +1,4 @@
From 5a9cce0d979b8f386d5bd14e7d8f79b883d9450f Mon Sep 17 00:00:00 2001
From 7f4112d646d99c9b3b8c02f8956b3186eb3cbb61 Mon Sep 17 00:00:00 2001
From: Aikar <aikar@aikar.co>
Date: Thu, 28 May 2015 23:00:19 -0400
Subject: [PATCH] Handle Item Meta Inconsistencies

View File

@ -1,4 +1,4 @@
From 646fe3e6b248037980db9a34ce73a5d1597787fa Mon Sep 17 00:00:00 2001
From d041dc5744a8c53ce8ae8803331ed26d69c7b4b0 Mon Sep 17 00:00:00 2001
From: Aikar <aikar@aikar.co>
Date: Fri, 18 Mar 2016 15:12:22 -0400
Subject: [PATCH] Configurable Non Player Arrow Despawn Rate

View File

@ -1,4 +1,4 @@
From 774ef91a1facbc95c2553fdcf3ff263997d91030 Mon Sep 17 00:00:00 2001
From c4a425cbbbb658a9efb4969c4b959e700379fdf5 Mon Sep 17 00:00:00 2001
From: Aikar <aikar@aikar.co>
Date: Fri, 18 Mar 2016 20:16:03 -0400
Subject: [PATCH] Add World Util Methods

View File

@ -1,4 +1,4 @@
From 9a613f51aa662677034ca6ae4b50e4834470a8cb Mon Sep 17 00:00:00 2001
From 91c2e62925acb46c336de017322ee57ab965c3c0 Mon Sep 17 00:00:00 2001
From: Aikar <aikar@aikar.co>
Date: Fri, 18 Mar 2016 21:22:56 -0400
Subject: [PATCH] Optimized Light Level Comparisons

View File

@ -1,4 +1,4 @@
From dfcc0ce210acfc019a056521d045530c84b27c9c Mon Sep 17 00:00:00 2001
From 11a94ee75fa7051513d0447c5dd2e6bc43e440ab Mon Sep 17 00:00:00 2001
From: Aikar <aikar@aikar.co>
Date: Sat, 19 Mar 2016 15:16:54 -0400
Subject: [PATCH] Pass world to Village creation

View File

@ -1,4 +1,4 @@
From d7da853993caa9fb5552c447700a55d8955499fa Mon Sep 17 00:00:00 2001
From 4249673124a2de38a0d6f8f81ff64379780f36f0 Mon Sep 17 00:00:00 2001
From: Jedediah Smith <jedediah@silencegreys.com>
Date: Sun, 21 Jun 2015 15:07:20 -0400
Subject: [PATCH] Custom replacement for eaten items

View File

@ -1,4 +1,4 @@
From e00d6b5e984f4094d39d50abdaa0e9c0f38c985a Mon Sep 17 00:00:00 2001
From a6d981de32a11967e9073a6f8530a05c3c5d5dde Mon Sep 17 00:00:00 2001
From: Jedediah Smith <jedediah@silencegreys.com>
Date: Sun, 19 Jul 2015 16:51:38 -0400
Subject: [PATCH] Set health before death event

View File

@ -1,4 +1,4 @@
From 2486ffed9b27c2bc743fdbeca5011f39322c701d Mon Sep 17 00:00:00 2001
From cfa7b89e6571573602f9286f3e188a219b259698 Mon Sep 17 00:00:00 2001
From: Aikar <aikar@aikar.co>
Date: Sun, 27 Sep 2015 01:18:02 -0400
Subject: [PATCH] handle NaN health/absorb values and repair bad data

View File

@ -1,4 +1,4 @@
From 047cb571ae5bebf5552dae64251c9798f4aea496 Mon Sep 17 00:00:00 2001
From e3ba0fd0099369577e52fad29db661e97692ee11 Mon Sep 17 00:00:00 2001
From: Daniel Ennis <dennis@icontact.com>
Date: Sun, 20 Mar 2016 15:22:42 -0400
Subject: [PATCH] Catch Async PlayerChunkMap operations

View File

@ -1,4 +1,4 @@
From 347f67ad379a3896b94e16eef873877d4a11f552 Mon Sep 17 00:00:00 2001
From 9b45817648bcf287ebb160f0fde6bc5c71c965b9 Mon Sep 17 00:00:00 2001
From: Zach Brown <zach.brown@destroystokyo.com>
Date: Mon, 21 Mar 2016 00:19:18 -0500
Subject: [PATCH] Support offline mode in whitelist command as well

View File

@ -1,4 +1,4 @@
From 6a32f12665124c6a996667bef11906a2d11bcc73 Mon Sep 17 00:00:00 2001
From 567933cffee3dee78675df9fefb8dc3818e26cc6 Mon Sep 17 00:00:00 2001
From: Aikar <aikar@aikar.co>
Date: Tue, 5 Jan 2016 21:48:24 -0500
Subject: [PATCH] Fix SkullCache case bug

View File

@ -1,4 +1,4 @@
From 622aaa52969e38210d9fb21cdcb4d50733e0fbbe Mon Sep 17 00:00:00 2001
From 0754b1047b0b70fc03196ae2754d6b87355061b5 Mon Sep 17 00:00:00 2001
From: Gabscap <sonstige.netzwerke@gabriel-paradzik.de>
Date: Sat, 19 Mar 2016 22:25:11 +0100
Subject: [PATCH] Waving banner workaround

View File

@ -1,4 +1,4 @@
From fe4e74f137ae6f78391549744051b88ea46ba584 Mon Sep 17 00:00:00 2001
From 95cd62455ffa927843a8833c9d2b9bbb80d2998c Mon Sep 17 00:00:00 2001
From: Aikar <aikar@aikar.co>
Date: Tue, 22 Mar 2016 00:33:47 -0400
Subject: [PATCH] Use a Shared Random for Entities

View File

@ -1,4 +1,4 @@
From 01685a4f00fb187001f989b8839d1368db7b6e55 Mon Sep 17 00:00:00 2001
From 14040aaa93730c538cd6b521cf1ed838475a21d6 Mon Sep 17 00:00:00 2001
From: Aikar <aikar@aikar.co>
Date: Tue, 22 Mar 2016 00:55:23 -0400
Subject: [PATCH] Don't teleport dead entities

View File

@ -1,4 +1,4 @@
From e5e40424dbd26cdf7935353671f5322e25464303 Mon Sep 17 00:00:00 2001
From 11f18326b98f9ebe0906aee6bad03a02e9ab6f95 Mon Sep 17 00:00:00 2001
From: Aikar <aikar@aikar.co>
Date: Thu, 27 Aug 2015 01:15:02 -0400
Subject: [PATCH] Optimize Chunk Access

View File

@ -1,4 +1,4 @@
From 5ddb0e43c99a57e1a2e606e99ec3555cd5cb8e82 Mon Sep 17 00:00:00 2001
From 6f05d463f21dfc2c75c1f508dae7efe5ab405859 Mon Sep 17 00:00:00 2001
From: Zach Brown <zach.brown@destroystokyo.com>
Date: Tue, 22 Mar 2016 12:04:28 -0500
Subject: [PATCH] Configurable spawn chances for skeleton horses

View File

@ -0,0 +1,259 @@
From 97e8ff8186b89c486bcc524a2c81c5864fd14ca4 Mon Sep 17 00:00:00 2001
From: Aikar <aikar@aikar.co>
Date: Thu, 3 Mar 2016 02:07:55 -0600
Subject: [PATCH] Optimize isValidLocation, getType and getBlockData for inling
Hot methods, so reduce # of instructions for the method.
Move is valid location test to the BlockPosition class so that it can access local variables.
Replace all calls to the new place to the unnecessary forward.
Optimize getType and getBlockData to manually inline and optimize the calls
diff --git a/src/main/java/net/minecraft/server/BaseBlockPosition.java b/src/main/java/net/minecraft/server/BaseBlockPosition.java
index d60e755..f772c7c 100644
--- a/src/main/java/net/minecraft/server/BaseBlockPosition.java
+++ b/src/main/java/net/minecraft/server/BaseBlockPosition.java
@@ -10,6 +10,14 @@ public class BaseBlockPosition implements Comparable<BaseBlockPosition> {
private final int a;
private final int b;
private final int c;
+ // Paper start
+ public boolean isValidLocation() {
+ return a >= -30000000 && c >= -30000000 && a < 30000000 && c < 30000000 && b >= 0 && b < 256;
+ }
+ public boolean isInvalidYLocation() {
+ return b < 0 || b >= 256;
+ }
+ // Paper end
public BaseBlockPosition(int i, int j, int k) {
this.a = i;
diff --git a/src/main/java/net/minecraft/server/BlockPosition.java b/src/main/java/net/minecraft/server/BlockPosition.java
index 8603d83..704faa9 100644
--- a/src/main/java/net/minecraft/server/BlockPosition.java
+++ b/src/main/java/net/minecraft/server/BlockPosition.java
@@ -326,6 +326,16 @@ public class BlockPosition extends BaseBlockPosition {
protected int b;
protected int c;
protected int d;
+ // Paper start
+ @Override
+ public boolean isValidLocation() {
+ return b >= -30000000 && d >= -30000000 && b < 30000000 && d < 30000000 && c >= 0 && c < 256;
+ }
+ @Override
+ public boolean isInvalidYLocation() {
+ return c < 0 || c >= 256;
+ }
+ // Paper end
public MutableBlockPosition() {
this(0, 0, 0);
diff --git a/src/main/java/net/minecraft/server/Chunk.java b/src/main/java/net/minecraft/server/Chunk.java
index bc55a2b..c7452d9 100644
--- a/src/main/java/net/minecraft/server/Chunk.java
+++ b/src/main/java/net/minecraft/server/Chunk.java
@@ -406,11 +406,26 @@ public class Chunk {
return this.a(i, j, k).c();
}
- public IBlockData getBlockData(BlockPosition blockposition) {
- return this.a(blockposition.getX(), blockposition.getY(), blockposition.getZ());
+ // Paper start - Optimize getBlockData to reduce instructions
+ public final IBlockData getBlockData(final BlockPosition pos) {
+ return getBlockData(pos.getX(), pos.getY(), pos.getZ());
+ }
+
+ public final IBlockData getBlockData(final int x, final int y, final int z) {
+ // Method body / logic copied from below
+ final int i = y >> 4;
+ if (y >= 0 && i < this.sections.length && this.sections[i] != null) {
+ // Inlined ChunkSection.getType() and DataPaletteBlock.a(int,int,int)
+ return this.sections[i].blockIds.a((y & 15) << 8 | (z & 15) << 4 | x & 15);
+ }
+ return Blocks.AIR.getBlockData();
}
public IBlockData a(final int i, final int j, final int k) {
+ return getBlockData(i, j, k);
+ }
+ public IBlockData unused(final int i, final int j, final int k) {
+ // Paper end
if (this.world.L() == WorldType.DEBUG_ALL_BLOCK_STATES) {
IBlockData iblockdata = null;
diff --git a/src/main/java/net/minecraft/server/ChunkSection.java b/src/main/java/net/minecraft/server/ChunkSection.java
index fc5c895..a12fa23 100644
--- a/src/main/java/net/minecraft/server/ChunkSection.java
+++ b/src/main/java/net/minecraft/server/ChunkSection.java
@@ -5,7 +5,7 @@ public class ChunkSection {
private final int yPos;
private int nonEmptyBlockCount;
private int tickingBlockCount;
- private final DataPaletteBlock blockIds;
+ final DataPaletteBlock blockIds; // Paper - package
private NibbleArray emittedLight;
private NibbleArray skyLight;
diff --git a/src/main/java/net/minecraft/server/World.java b/src/main/java/net/minecraft/server/World.java
index 12f6761..54d1442 100644
--- a/src/main/java/net/minecraft/server/World.java
+++ b/src/main/java/net/minecraft/server/World.java
@@ -274,12 +274,12 @@ public abstract class World implements IBlockAccess {
return this.getType(blockposition1);
}
- private boolean isValidLocation(BlockPosition blockposition) {
- return !this.E(blockposition) && blockposition.getX() >= -30000000 && blockposition.getZ() >= -30000000 && blockposition.getX() < 30000000 && blockposition.getZ() < 30000000;
+ private static boolean isValidLocation(BlockPosition blockposition) { // Paper - unused but incase reflection / future uses
+ return blockposition.isValidLocation(); // Paper
}
- private boolean E(BlockPosition blockposition) {
- return blockposition.getY() < 0 || blockposition.getY() >= 256;
+ private static boolean E(BlockPosition blockposition) { // Paper - unused but incase reflection / future uses
+ return blockposition.isInvalidYLocation(); // Paper
}
public boolean isEmpty(BlockPosition blockposition) {
@@ -371,7 +371,7 @@ public abstract class World implements IBlockAccess {
return true;
}
// CraftBukkit end
- if (this.E(blockposition)) {
+ if (blockposition.isInvalidYLocation()) { // Paper
return false;
} else if (!this.isClientSide && this.worldData.getType() == WorldType.DEBUG_ALL_BLOCK_STATES) {
return false;
@@ -639,7 +639,7 @@ public abstract class World implements IBlockAccess {
// Paper start - test if meets light level, return faster
// logic copied from below
public boolean isLightLevel(BlockPosition blockposition, int level) {
- if (isValidLocation(blockposition)) {
+ if (blockposition.isValidLocation()) {
if (this.getType(blockposition).f()) {
if (this.c(blockposition.up(), false) >= level) {
return true;
@@ -757,7 +757,7 @@ public abstract class World implements IBlockAccess {
blockposition = new BlockPosition(blockposition.getX(), 0, blockposition.getZ());
}
- if (!this.isValidLocation(blockposition)) {
+ if (!blockposition.isValidLocation()) { // Paper
return enumskyblock.c;
} else if (!this.isLoaded(blockposition)) {
return enumskyblock.c;
@@ -769,7 +769,7 @@ public abstract class World implements IBlockAccess {
}
public void a(EnumSkyBlock enumskyblock, BlockPosition blockposition, int i) {
- if (this.isValidLocation(blockposition)) {
+ if (blockposition.isValidLocation()) { // Paper
if (this.isLoaded(blockposition)) {
Chunk chunk = this.getChunkAtWorldCoords(blockposition);
@@ -793,19 +793,19 @@ public abstract class World implements IBlockAccess {
// Paper start - reduces need to do isLoaded before getType
public IBlockData getTypeIfLoaded(BlockPosition blockposition) {
// CraftBukkit start - tree generation
+ final int x = blockposition.getX();
+ final int y = blockposition.getY();
+ final int z = blockposition.getZ();
if (captureTreeGeneration) {
- Iterator<BlockState> it = capturedBlockStates.iterator();
- while (it.hasNext()) {
- BlockState previous = it.next();
- if (previous.getX() == blockposition.getX() && previous.getY() == blockposition.getY() && previous.getZ() == blockposition.getZ()) {
- return CraftMagicNumbers.getBlock(previous.getTypeId()).fromLegacyData(previous.getRawData());
- }
+ final IBlockData previous = getCapturedBlockType(x, y, z);
+ if (previous != null) {
+ return previous;
}
}
// CraftBukkit end
- Chunk chunk = this.getChunkIfLoaded(blockposition);
+ Chunk chunk = ((ChunkProviderServer) this.chunkProvider).getChunkIfLoaded(x >> 4, z >> 4);
if (chunk != null) {
- return this.isValidLocation(blockposition) ? chunk.getBlockData(blockposition) : Blocks.AIR.getBlockData();
+ return chunk.getBlockData(x, y, z);
}
return null;
}
@@ -813,24 +813,33 @@ public abstract class World implements IBlockAccess {
public IBlockData getType(BlockPosition blockposition) {
// CraftBukkit start - tree generation
+ // Paper start - optimize getType lookup to reduce instructions - getBlockData already enforces valid Y, move tree out
+ final int x = blockposition.getX();
+ final int y = blockposition.getY();
+ final int z = blockposition.getZ();
if (captureTreeGeneration) {
- Iterator<BlockState> it = capturedBlockStates.iterator();
- while (it.hasNext()) {
- BlockState previous = it.next();
- if (previous.getX() == blockposition.getX() && previous.getY() == blockposition.getY() && previous.getZ() == blockposition.getZ()) {
- return CraftMagicNumbers.getBlock(previous.getTypeId()).fromLegacyData(previous.getRawData());
- }
+ final IBlockData previous = getCapturedBlockType(x, y, z);
+ if (previous != null) {
+ return previous;
}
}
// CraftBukkit end
- if (this.E(blockposition)) {
- return Blocks.AIR.getBlockData();
- } else {
- Chunk chunk = this.getChunkAtWorldCoords(blockposition);
+ return this.chunkProvider.getChunkAt(x >> 4, z >> 4).getBlockData(x, y, z);
+ // Paper end
+ }
- return chunk.getBlockData(blockposition);
+ // Paper start
+ private IBlockData getCapturedBlockType(int x, int y, int z) {
+ Iterator<BlockState> it = capturedBlockStates.iterator();
+ while (it.hasNext()) {
+ BlockState previous = it.next();
+ if (previous.getX() == x && previous.getY() == y && previous.getZ() == z) {
+ return CraftMagicNumbers.getBlock(previous.getTypeId()).fromLegacyData(previous.getRawData());
+ }
}
+ return null;
}
+ // Paper end
public boolean B() {
return this.J < 4;
@@ -2051,7 +2060,7 @@ public abstract class World implements IBlockAccess {
public Map<BlockPosition, TileEntity> capturedTileEntities = Maps.newHashMap();
@Nullable
public TileEntity getTileEntity(BlockPosition blockposition) {
- if (this.E(blockposition)) {
+ if (blockposition.isInvalidYLocation()) { // Paper
return null;
} else {
// CraftBukkit start
@@ -2092,7 +2101,7 @@ public abstract class World implements IBlockAccess {
}
public void setTileEntity(BlockPosition blockposition, @Nullable TileEntity tileentity) {
- if (!this.E(blockposition)) {
+ if (!blockposition.isInvalidYLocation()) { // Paper
if (tileentity != null && !tileentity.x()) {
// CraftBukkit start
if (captureBlockStates) {
@@ -2155,7 +2164,7 @@ public abstract class World implements IBlockAccess {
}
public boolean d(BlockPosition blockposition, boolean flag) {
- if (this.E(blockposition)) {
+ if (blockposition.isInvalidYLocation()) { // Paper
return false;
} else {
Chunk chunk = this.chunkProvider.getLoadedChunkAt(blockposition.getX() >> 4, blockposition.getZ() >> 4);
--
2.9.0

View File

@ -1,96 +0,0 @@
From 5c67471847f9f1f0efc8f68a1675aeed56250f41 Mon Sep 17 00:00:00 2001
From: Aikar <aikar@aikar.co>
Date: Tue, 22 Mar 2016 23:41:34 -0400
Subject: [PATCH] Optimize isValidLocation for inlining
Move test to the blockPosition class so that it can access local variables.
Replace all calls to the new place to the unnecessary forward.
diff --git a/src/main/java/net/minecraft/server/BaseBlockPosition.java b/src/main/java/net/minecraft/server/BaseBlockPosition.java
index d60e755..9114388 100644
--- a/src/main/java/net/minecraft/server/BaseBlockPosition.java
+++ b/src/main/java/net/minecraft/server/BaseBlockPosition.java
@@ -10,6 +10,11 @@ public class BaseBlockPosition implements Comparable<BaseBlockPosition> {
private final int a;
private final int b;
private final int c;
+ // Paper start
+ public boolean isValidLocation() {
+ return a >= -30000000 && c >= -30000000 && a < 30000000 && c < 30000000 && b >= 0 && b < 256;
+ }
+ // Paper end
public BaseBlockPosition(int i, int j, int k) {
this.a = i;
diff --git a/src/main/java/net/minecraft/server/BlockPosition.java b/src/main/java/net/minecraft/server/BlockPosition.java
index 8603d83..9ba987a 100644
--- a/src/main/java/net/minecraft/server/BlockPosition.java
+++ b/src/main/java/net/minecraft/server/BlockPosition.java
@@ -326,6 +326,12 @@ public class BlockPosition extends BaseBlockPosition {
protected int b;
protected int c;
protected int d;
+ // Paper start
+ @Override
+ public boolean isValidLocation() {
+ return this.getX() >= -30000000 && this.getZ() >= -30000000 && this.getX() < 30000000 && this.getZ() < 30000000 && this.getY() >= 0 && this.getY() < 256;
+ }
+ // Paper end
public MutableBlockPosition() {
this(0, 0, 0);
diff --git a/src/main/java/net/minecraft/server/World.java b/src/main/java/net/minecraft/server/World.java
index 12f6761..8233ee7 100644
--- a/src/main/java/net/minecraft/server/World.java
+++ b/src/main/java/net/minecraft/server/World.java
@@ -274,8 +274,8 @@ public abstract class World implements IBlockAccess {
return this.getType(blockposition1);
}
- private boolean isValidLocation(BlockPosition blockposition) {
- return !this.E(blockposition) && blockposition.getX() >= -30000000 && blockposition.getZ() >= -30000000 && blockposition.getX() < 30000000 && blockposition.getZ() < 30000000;
+ private static boolean isValidLocation(BlockPosition blockposition) { // Paper
+ return blockposition.isValidLocation(); // Paper
}
private boolean E(BlockPosition blockposition) {
@@ -639,7 +639,7 @@ public abstract class World implements IBlockAccess {
// Paper start - test if meets light level, return faster
// logic copied from below
public boolean isLightLevel(BlockPosition blockposition, int level) {
- if (isValidLocation(blockposition)) {
+ if (blockposition.isValidLocation()) {
if (this.getType(blockposition).f()) {
if (this.c(blockposition.up(), false) >= level) {
return true;
@@ -757,7 +757,7 @@ public abstract class World implements IBlockAccess {
blockposition = new BlockPosition(blockposition.getX(), 0, blockposition.getZ());
}
- if (!this.isValidLocation(blockposition)) {
+ if (!blockposition.isValidLocation()) { // Paper
return enumskyblock.c;
} else if (!this.isLoaded(blockposition)) {
return enumskyblock.c;
@@ -769,7 +769,7 @@ public abstract class World implements IBlockAccess {
}
public void a(EnumSkyBlock enumskyblock, BlockPosition blockposition, int i) {
- if (this.isValidLocation(blockposition)) {
+ if (blockposition.isValidLocation()) { // Paper
if (this.isLoaded(blockposition)) {
Chunk chunk = this.getChunkAtWorldCoords(blockposition);
@@ -805,7 +805,7 @@ public abstract class World implements IBlockAccess {
// CraftBukkit end
Chunk chunk = this.getChunkIfLoaded(blockposition);
if (chunk != null) {
- return this.isValidLocation(blockposition) ? chunk.getBlockData(blockposition) : Blocks.AIR.getBlockData();
+ return blockposition.isValidLocation() ? chunk.getBlockData(blockposition) : Blocks.AIR.getBlockData();
}
return null;
}
--
2.9.0

View File

@ -1,4 +1,4 @@
From 9ba4a309f6d6596993df301c090164d59a758737 Mon Sep 17 00:00:00 2001
From 998ca2697fc4262c3146a8b1286795e8ad979a3c Mon Sep 17 00:00:00 2001
From: Jedediah Smith <jedediah@silencegreys.com>
Date: Tue, 22 Mar 2016 16:00:16 -0400
Subject: [PATCH] Use correct item in arrow pickup event

View File

@ -1,4 +1,4 @@
From fbbbd0c8b1d8b5aa1225d4469ac27e89163aed7c Mon Sep 17 00:00:00 2001
From 59b4657819f58356f60016f3c27ef2de3eb3bf90 Mon Sep 17 00:00:00 2001
From: Jedediah Smith <jedediah@silencegreys.com>
Date: Tue, 1 Mar 2016 04:32:08 -0500
Subject: [PATCH] Fix cooked fish legacy import

View File

@ -1,11 +1,11 @@
From 5e121b5dc2021f9ad2315f1213646109b3305cdb Mon Sep 17 00:00:00 2001
From 9fda9b975db0dc3d25ccd4b859d75bfd93ff2bea Mon Sep 17 00:00:00 2001
From: DemonWav <demonwav@gmail.com>
Date: Sat, 26 Mar 2016 21:36:05 -0500
Subject: [PATCH] Prevent possible infinite loop in BlockPosition iterator
diff --git a/src/main/java/net/minecraft/server/BlockPosition.java b/src/main/java/net/minecraft/server/BlockPosition.java
index 9ba987a..557fa3a 100644
index 704faa9..d6cc51b 100644
--- a/src/main/java/net/minecraft/server/BlockPosition.java
+++ b/src/main/java/net/minecraft/server/BlockPosition.java
@@ -141,15 +141,17 @@ public class BlockPosition extends BaseBlockPosition {

View File

@ -1,4 +1,4 @@
From ffe1e11ceb3bceed707d8dfcf613e38a5ec315e0 Mon Sep 17 00:00:00 2001
From e8b05a60fea474060dc708b1ffae37cd0d31f07e Mon Sep 17 00:00:00 2001
From: Jedediah Smith <jedediah@silencegreys.com>
Date: Sun, 20 Mar 2016 06:45:01 -0400
Subject: [PATCH] Access items by EquipmentSlot

View File

@ -1,4 +1,4 @@
From d2f5088de2801207e9186ccd8c469168760f1a53 Mon Sep 17 00:00:00 2001
From ac5312f352b60d9cf048e9cabf8cc12a21fa8678 Mon Sep 17 00:00:00 2001
From: Zach Brown <zach.brown@destroystokyo.com>
Date: Sun, 27 Mar 2016 20:24:05 -0500
Subject: [PATCH] Check async, remove unused vars, GH-159

View File

@ -1,4 +1,4 @@
From b32ea1463566d788c7c741ecf045c25b512ebc50 Mon Sep 17 00:00:00 2001
From 679ac3739ff04c06dc2c499424a6d0212395709b Mon Sep 17 00:00:00 2001
From: Aikar <aikar@aikar.co>
Date: Mon, 28 Mar 2016 19:55:45 -0400
Subject: [PATCH] Option to disable BlockPhysicsEvent for Redstone
@ -25,7 +25,7 @@ index 5652108..a97eee7 100644
+ }
}
diff --git a/src/main/java/net/minecraft/server/World.java b/src/main/java/net/minecraft/server/World.java
index 8233ee7..a5392fd 100644
index 54d1442..d5422ff 100644
--- a/src/main/java/net/minecraft/server/World.java
+++ b/src/main/java/net/minecraft/server/World.java
@@ -558,7 +558,7 @@ public abstract class World implements IBlockAccess {

View File

@ -1,14 +1,14 @@
From 46184d4b56450191f8e6a7bd0c5bb5b18df45a19 Mon Sep 17 00:00:00 2001
From 7d7731267ad9097ba4793192ab9b0d350d9f708c Mon Sep 17 00:00:00 2001
From: Aikar <aikar@aikar.co>
Date: Mon, 28 Mar 2016 20:32:58 -0400
Subject: [PATCH] Entity AddTo/RemoveFrom World Events
diff --git a/src/main/java/net/minecraft/server/World.java b/src/main/java/net/minecraft/server/World.java
index a5392fd..970c963 100644
index d5422ff..cfda7e2 100644
--- a/src/main/java/net/minecraft/server/World.java
+++ b/src/main/java/net/minecraft/server/World.java
@@ -1111,6 +1111,7 @@ public abstract class World implements IBlockAccess {
@@ -1120,6 +1120,7 @@ public abstract class World implements IBlockAccess {
}
entity.valid = true; // CraftBukkit
@ -16,7 +16,7 @@ index a5392fd..970c963 100644
}
protected void c(Entity entity) {
@@ -1118,6 +1119,7 @@ public abstract class World implements IBlockAccess {
@@ -1127,6 +1128,7 @@ public abstract class World implements IBlockAccess {
((IWorldAccess) this.u.get(i)).b(entity);
}

View File

@ -1,4 +1,4 @@
From 9980980250aadce72171d5d66013b0444e050383 Mon Sep 17 00:00:00 2001
From 43dbd3c0ac26aee92c2039f72f38663d55e108c7 Mon Sep 17 00:00:00 2001
From: Aikar <aikar@aikar.co>
Date: Mon, 28 Mar 2016 20:46:14 -0400
Subject: [PATCH] Configurable Chunk Inhabited Timer
@ -23,10 +23,10 @@ index a97eee7..8966b4a 100644
+ }
}
diff --git a/src/main/java/net/minecraft/server/Chunk.java b/src/main/java/net/minecraft/server/Chunk.java
index f16a5dc..1c113cf 100644
index c7452d9..e36525a 100644
--- a/src/main/java/net/minecraft/server/Chunk.java
+++ b/src/main/java/net/minecraft/server/Chunk.java
@@ -1394,7 +1394,7 @@ public class Chunk {
@@ -1402,7 +1402,7 @@ public class Chunk {
}
public long x() {

View File

@ -1,4 +1,4 @@
From fe79ecdc9c91781b8c44d18810fa5b0331d192d5 Mon Sep 17 00:00:00 2001
From 9dd5a669d39313e875da0d995a621ae051f030be Mon Sep 17 00:00:00 2001
From: Aikar <aikar@aikar.co>
Date: Mon, 28 Mar 2016 21:22:26 -0400
Subject: [PATCH] EntityPathfindEvent

View File

@ -1,4 +1,4 @@
From 8f4d8a4c78b6b567e4ad2bcea34c48da1b8a0af5 Mon Sep 17 00:00:00 2001
From f208c1991624aba4aff4fbec77a6b0ea6a5b3848 Mon Sep 17 00:00:00 2001
From: Aikar <aikar@aikar.co>
Date: Mon, 28 Mar 2016 22:03:09 -0400
Subject: [PATCH] Prevent Waterflow BlockFromToEvent from loading chunks

View File

@ -1,4 +1,4 @@
From 11fca59c65fa2c5e88d0f8549f48ea15f761754f Mon Sep 17 00:00:00 2001
From 6f1b42e1117b77a826bef99f49e7da1d8e22dd96 Mon Sep 17 00:00:00 2001
From: Fabse <fabse@uwmc.info>
Date: Mon, 28 Mar 2016 00:46:46 +0200
Subject: [PATCH] Minecart drop name workaround

View File

@ -1,4 +1,4 @@
From b465ecaa189a7047564172d11e8c99a122723db7 Mon Sep 17 00:00:00 2001
From 29345dd2c97756df84a4ecf03627e92d7d759897 Mon Sep 17 00:00:00 2001
From: Antony Riley <antony@cyberiantiger.org>
Date: Tue, 29 Mar 2016 06:56:23 +0300
Subject: [PATCH] Reduce IO ops opening a new region file.

View File

@ -1,4 +1,4 @@
From f2d3287c91ba106c1a17dc9321523695cc2b778f Mon Sep 17 00:00:00 2001
From b6dd2dd92ace414736b3da9ad9959ef8bbe686f2 Mon Sep 17 00:00:00 2001
From: Antony Riley <antony@cyberiantiger.org>
Date: Tue, 29 Mar 2016 08:22:55 +0300
Subject: [PATCH] Sanitise RegionFileCache and make configurable.

View File

@ -1,4 +1,4 @@
From 82dceb56570d6f01e3d1a9924bc419d05f9edd6a Mon Sep 17 00:00:00 2001
From 40c2809484e385f980422a51dceb91e97b840b4c Mon Sep 17 00:00:00 2001
From: DemonWav <demonwav@gmail.com>
Date: Wed, 30 Mar 2016 01:20:11 -0500
Subject: [PATCH] Add getEntity by UUID API

View File

@ -1,4 +1,4 @@
From e062ea357a0764c8027c0364c91c9f663e64c0c1 Mon Sep 17 00:00:00 2001
From 43f823f34760fd83d553efa9b943e2414813284d Mon Sep 17 00:00:00 2001
From: Aikar <aikar@aikar.co>
Date: Wed, 30 Mar 2016 02:13:24 -0400
Subject: [PATCH] Use Optimized Collections

View File

@ -1,4 +1,4 @@
From 2025ef8530622278c906685e364ae0cf7964bdec Mon Sep 17 00:00:00 2001
From c22e8ea925d50cfaca77e1f7345f24652aa61cf0 Mon Sep 17 00:00:00 2001
From: Aikar <aikar@aikar.co>
Date: Thu, 31 Mar 2016 19:17:58 -0400
Subject: [PATCH] Do not load chunks for light checks
@ -7,7 +7,7 @@ Should only happen for blocks on the edge that uses neighbors light level
(certain blocks). In that case, there will be 3-4 other neighbors to get a light level from.
diff --git a/src/main/java/net/minecraft/server/World.java b/src/main/java/net/minecraft/server/World.java
index 970c963..e508be3 100644
index cfda7e2..8ba0d1f 100644
--- a/src/main/java/net/minecraft/server/World.java
+++ b/src/main/java/net/minecraft/server/World.java
@@ -707,6 +707,7 @@ public abstract class World implements IBlockAccess {

View File

@ -1,4 +1,4 @@
From 00ebbfe2ebbbe367b61599f397f8a61430ea896b Mon Sep 17 00:00:00 2001
From e230ff98a7ceeff5895c07851fed74161f1979aa Mon Sep 17 00:00:00 2001
From: Jedediah Smith <jedediah@silencegreys.com>
Date: Sat, 2 Apr 2016 05:09:16 -0400
Subject: [PATCH] Add PlayerUseUnknownEntityEvent

View File

@ -1,4 +1,4 @@
From 11a1a646df18c0d48fb18cc5df7b91b681b2502a Mon Sep 17 00:00:00 2001
From 3b42b3d60f48eafb32983f7c8fe3016ac0a8ff96 Mon Sep 17 00:00:00 2001
From: Jedediah Smith <jedediah@silencegreys.com>
Date: Sat, 2 Apr 2016 20:37:03 -0400
Subject: [PATCH] Fix reducedDebugInfo not initialized on client

View File

@ -1,4 +1,4 @@
From 856525a95504aab542a6b267217fdeb727980812 Mon Sep 17 00:00:00 2001
From e847ad6495c01d38137b107e391045be96054600 Mon Sep 17 00:00:00 2001
From: Aikar <aikar@aikar.co>
Date: Sun, 3 Apr 2016 16:28:17 -0400
Subject: [PATCH] Configurable Grass Spread Tick Rate

View File

@ -1,4 +1,4 @@
From 8cd87982b44492ea4e3fad29203bfe7b7c6053d4 Mon Sep 17 00:00:00 2001
From 56f98f216eb1b94cbade9110cb3aeff4fd471b6f Mon Sep 17 00:00:00 2001
From: Aikar <aikar@aikar.co>
Date: Sat, 13 Sep 2014 23:14:43 -0400
Subject: [PATCH] Configurable Keep Spawn Loaded range per world
@ -37,10 +37,10 @@ index 64868c0..bfa6836 100644
if (i1 - j > 1000L) {
diff --git a/src/main/java/net/minecraft/server/World.java b/src/main/java/net/minecraft/server/World.java
index e508be3..5b2b8de 100644
index 8ba0d1f..2c6deef 100644
--- a/src/main/java/net/minecraft/server/World.java
+++ b/src/main/java/net/minecraft/server/World.java
@@ -3233,8 +3233,9 @@ public abstract class World implements IBlockAccess {
@@ -3242,8 +3242,9 @@ public abstract class World implements IBlockAccess {
int k = i * 16 + 8 - blockposition.getX();
int l = j * 16 + 8 - blockposition.getZ();
boolean flag = true;

View File

@ -1,11 +1,11 @@
From e8253303924fa0aa2d06dbde96012bd5d38e4f46 Mon Sep 17 00:00:00 2001
From 502d5ac9425763d8f14067ff1692f4bb948bbde4 Mon Sep 17 00:00:00 2001
From: Aikar <aikar@aikar.co>
Date: Sun, 3 Apr 2016 17:48:50 -0400
Subject: [PATCH] Fix Cancelling BlockPlaceEvent triggering physics
diff --git a/src/main/java/net/minecraft/server/World.java b/src/main/java/net/minecraft/server/World.java
index 5b2b8de..facbdad 100644
index 2c6deef..539100b 100644
--- a/src/main/java/net/minecraft/server/World.java
+++ b/src/main/java/net/minecraft/server/World.java
@@ -516,6 +516,7 @@ public abstract class World implements IBlockAccess {

View File

@ -1,14 +1,14 @@
From 9e60152ce508910c50b5d635fc066faeaf3f9f80 Mon Sep 17 00:00:00 2001
From 980f9cd6c2c465296f3fc12611f285e7e9b3f573 Mon Sep 17 00:00:00 2001
From: Aikar <aikar@aikar.co>
Date: Tue, 5 Apr 2016 19:42:22 -0400
Subject: [PATCH] Don't spam reload spawn chunks in nether/end
diff --git a/src/main/java/net/minecraft/server/World.java b/src/main/java/net/minecraft/server/World.java
index facbdad..e25b864 100644
index 539100b..5400a53 100644
--- a/src/main/java/net/minecraft/server/World.java
+++ b/src/main/java/net/minecraft/server/World.java
@@ -3229,6 +3229,7 @@ public abstract class World implements IBlockAccess {
@@ -3238,6 +3238,7 @@ public abstract class World implements IBlockAccess {
return this.N;
}

View File

@ -1,4 +1,4 @@
From cecb8f8ae50271615c1c7714d7f4761ad4c22dde Mon Sep 17 00:00:00 2001
From 1dc1103e5ddaff90993bbd49d383d273c98b5db2 Mon Sep 17 00:00:00 2001
From: Aikar <aikar@aikar.co>
Date: Tue, 5 Apr 2016 21:38:58 -0400
Subject: [PATCH] Remove Debug checks from DataBits

View File

@ -1,4 +1,4 @@
From 0021cfc35b58d8605c27fe57c75c6f577f9e8df0 Mon Sep 17 00:00:00 2001
From 720fe6133fb0d2a4f19f6fc93bb8cae93d00b570 Mon Sep 17 00:00:00 2001
From: Zach Brown <zach.brown@destroystokyo.com>
Date: Wed, 6 Apr 2016 01:04:23 -0500
Subject: [PATCH] Option to use vanilla per-world scoreboard coloring on names

View File

@ -1,4 +1,4 @@
From ec4c864f8f44361607434a46fddbb00c25fda046 Mon Sep 17 00:00:00 2001
From 1ba823ed3a80809ac78a11b495c1ea3d54aa8d2d Mon Sep 17 00:00:00 2001
From: Zach Brown <zach.brown@destroystokyo.com>
Date: Sun, 10 Apr 2016 03:23:32 -0500
Subject: [PATCH] Workaround for setting passengers on players

View File

@ -1,4 +1,4 @@
From 647bda8348b38151b9956753392c2fede265009c Mon Sep 17 00:00:00 2001
From 89cc41ddcc93c188ecdc21c2c817a18541fee80f Mon Sep 17 00:00:00 2001
From: Aikar <aikar@aikar.co>
Date: Sun, 10 Apr 2016 22:36:10 -0400
Subject: [PATCH] SPIGOT-1903: Update PlayerConnection on teleporting players

View File

@ -1,4 +1,4 @@
From 3543fd59b86e411f4979606f543c2f6db96a001b Mon Sep 17 00:00:00 2001
From dec3a348a2c634b75a34149bd38eae2f214c0d08 Mon Sep 17 00:00:00 2001
From: Aikar <aikar@aikar.co>
Date: Wed, 13 Apr 2016 00:25:28 -0400
Subject: [PATCH] Remove unused World Tile Entity List
@ -6,7 +6,7 @@ Subject: [PATCH] Remove unused World Tile Entity List
Massive hit to performance and it is completely unnecessary.
diff --git a/src/main/java/net/minecraft/server/World.java b/src/main/java/net/minecraft/server/World.java
index e25b864..b3165eb 100644
index 5400a53..8479c6e 100644
--- a/src/main/java/net/minecraft/server/World.java
+++ b/src/main/java/net/minecraft/server/World.java
@@ -69,7 +69,7 @@ public abstract class World implements IBlockAccess {
@ -18,7 +18,7 @@ index e25b864..b3165eb 100644
public final List<TileEntity> tileEntityListTick = Lists.newArrayList();
private final List<TileEntity> b = Lists.newArrayList();
private final Set<TileEntity> tileEntityListUnload = Sets.newHashSet(); // Paper
@@ -1558,7 +1558,7 @@ public abstract class World implements IBlockAccess {
@@ -1567,7 +1567,7 @@ public abstract class World implements IBlockAccess {
// CraftBukkit start - From below, clean up tile entities before ticking them
if (!this.tileEntityListUnload.isEmpty()) {
this.tileEntityListTick.removeAll(this.tileEntityListUnload);
@ -27,7 +27,7 @@ index e25b864..b3165eb 100644
this.tileEntityListUnload.clear();
}
// CraftBukkit end
@@ -1609,7 +1609,7 @@ public abstract class World implements IBlockAccess {
@@ -1618,7 +1618,7 @@ public abstract class World implements IBlockAccess {
if (tileentity.x()) {
tilesThisCycle--;
this.tileEntityListTick.remove(tileTickPosition--);
@ -36,7 +36,7 @@ index e25b864..b3165eb 100644
if (this.isLoaded(tileentity.getPosition())) {
this.getChunkAtWorldCoords(tileentity.getPosition()).d(tileentity.getPosition());
}
@@ -1647,7 +1647,7 @@ public abstract class World implements IBlockAccess {
@@ -1656,7 +1656,7 @@ public abstract class World implements IBlockAccess {
this.notify(tileentity1.getPosition(), iblockdata, iblockdata, 3);
// CraftBukkit start
// From above, don't screw this up - SPIGOT-1746
@ -45,7 +45,7 @@ index e25b864..b3165eb 100644
this.a(tileentity1);
}
// CraftBukkit end
@@ -1667,9 +1667,9 @@ public abstract class World implements IBlockAccess {
@@ -1676,9 +1676,9 @@ public abstract class World implements IBlockAccess {
protected void l() {}
public boolean a(TileEntity tileentity) {
@ -57,7 +57,7 @@ index e25b864..b3165eb 100644
this.tileEntityListTick.add(tileentity);
}
@@ -2139,7 +2139,7 @@ public abstract class World implements IBlockAccess {
@@ -2148,7 +2148,7 @@ public abstract class World implements IBlockAccess {
} else {
if (tileentity != null) {
this.b.remove(tileentity);

View File

@ -1,4 +1,4 @@
From f111af4039872df7ea8ba4e5c075669e13185981 Mon Sep 17 00:00:00 2001
From 32617ea374eb4534a7254475cf9ba2b13e2cfae2 Mon Sep 17 00:00:00 2001
From: Aikar <aikar@aikar.co>
Date: Wed, 13 Apr 2016 00:30:10 -0400
Subject: [PATCH] Don't tick Skulls - unused code

View File

@ -1,4 +1,4 @@
From f6ae56e4c2d9042ff278827a27a377108058c12b Mon Sep 17 00:00:00 2001
From 9ca0316efd9a773e426f3327a6e2cd14c9d6aa86 Mon Sep 17 00:00:00 2001
From: Jedediah Smith <jedediah@silencegreys.com>
Date: Tue, 29 Mar 2016 20:19:20 -0400
Subject: [PATCH] Fix some players not being kicked on shutdown

View File

@ -1,4 +1,4 @@
From 9838b5ed83155b41d03da1361db86907470af133 Mon Sep 17 00:00:00 2001
From a5ffdd4c67dcea575adf72616c30225d80ed31a1 Mon Sep 17 00:00:00 2001
From: Aikar <aikar@aikar.co>
Date: Wed, 13 Apr 2016 02:10:49 -0400
Subject: [PATCH] Configurable Player Collision

View File

@ -1,4 +1,4 @@
From cf9d9c64c0bbbb64963f6a7f7288279515800f71 Mon Sep 17 00:00:00 2001
From 1c0510dc27ac8561fd19ace91b8e07b62359a56d Mon Sep 17 00:00:00 2001
From: kashike <kashike@vq.lc>
Date: Wed, 13 Apr 2016 20:21:38 -0700
Subject: [PATCH] Add handshake event to allow plugins to handle client

View File

@ -1,4 +1,4 @@
From a37608db3922c27b8c4bfc0d46bd6ae3d1bfb66c Mon Sep 17 00:00:00 2001
From 6aac550ebf2a897af86f4bbc51447b5a23fe7d0b Mon Sep 17 00:00:00 2001
From: Zach Brown <zach.brown@destroystokyo.com>
Date: Thu, 14 Apr 2016 17:48:56 -0500
Subject: [PATCH] Water mobs should only spawn in the water

View File

@ -1,4 +1,4 @@
From eac57545e4af2be5afdcbacfc57641f44b2d7129 Mon Sep 17 00:00:00 2001
From 119997f9b1d26d4b02d04d694ae9f9a3ba9b5415 Mon Sep 17 00:00:00 2001
From: Aikar <aikar@aikar.co>
Date: Thu, 14 Apr 2016 21:01:39 -0400
Subject: [PATCH] Fix Bugs with Spigot Mob Spawn Logic
@ -14,10 +14,10 @@ Specially with servers using smaller mob spawn ranges than view distance, as wel
This patch returns mob counting to use all loaded chunks, and 17x17 division.
diff --git a/src/main/java/net/minecraft/server/Chunk.java b/src/main/java/net/minecraft/server/Chunk.java
index 1c113cf..d670671 100644
index e36525a..3419d0f 100644
--- a/src/main/java/net/minecraft/server/Chunk.java
+++ b/src/main/java/net/minecraft/server/Chunk.java
@@ -672,7 +672,7 @@ public class Chunk {
@@ -680,7 +680,7 @@ public class Chunk {
i = this.entitySlices.length - 1;
}

View File

@ -1,4 +1,4 @@
From 2304e7d9cf2d99b463ab4a315826b179f91d52e5 Mon Sep 17 00:00:00 2001
From 268412ca895a48808c55da85f821fca73aee1663 Mon Sep 17 00:00:00 2001
From: Aikar <aikar@aikar.co>
Date: Sat, 16 Apr 2016 00:39:33 -0400
Subject: [PATCH] Configurable RCON IP address

View File

@ -1,4 +1,4 @@
From 3c8ae0d36856cd89c14944ba9f95e35c49833ed4 Mon Sep 17 00:00:00 2001
From 265813111c36cb9a5b4e4e3cbbb056843e6d08fe Mon Sep 17 00:00:00 2001
From: Aikar <aikar@aikar.co>
Date: Sun, 17 Apr 2016 17:27:09 -0400
Subject: [PATCH] Prevent Fire from loading chunks

View File

@ -1,4 +1,4 @@
From 118eabe40eb578c54ebc193da348f6f9eac3f9f0 Mon Sep 17 00:00:00 2001
From e9c013296bbcc5353de1a2e9795b6b3a0839198d Mon Sep 17 00:00:00 2001
From: Isaac Moore <rmsy@me.com>
Date: Tue, 19 Apr 2016 14:09:31 -0500
Subject: [PATCH] Implement PlayerLocaleChangeEvent

View File

@ -1,4 +1,4 @@
From 7f41214fdeb5f5d5cbb2687cd160531ae6f37afd Mon Sep 17 00:00:00 2001
From aed3ba5574b80a82667f18b5ad45afa40b7aea01 Mon Sep 17 00:00:00 2001
From: Zach Brown <zach.brown@destroystokyo.com>
Date: Fri, 22 Apr 2016 01:43:11 -0500
Subject: [PATCH] EntityRegainHealthEvent isFastRegen API

View File

@ -1,4 +1,4 @@
From 145884a82101e7d9715f6a606b4b5a1c618c2028 Mon Sep 17 00:00:00 2001
From 9c70f718778daa5d3acad4c64766d5dc547b11fc Mon Sep 17 00:00:00 2001
From: kashike <kashike@vq.lc>
Date: Thu, 21 Apr 2016 23:51:55 -0700
Subject: [PATCH] Add ability to configure frosted_ice properties

View File

@ -1,4 +1,4 @@
From 03228d9f034e01c313fa6d4898cb9cfa3b2a0f40 Mon Sep 17 00:00:00 2001
From d3f148dd37236f33449d8ec4dbb8237b4eb2dc19 Mon Sep 17 00:00:00 2001
From: Zach Brown <zach.brown@destroystokyo.com>
Date: Fri, 22 Apr 2016 18:20:05 -0500
Subject: [PATCH] Vehicle Event Cancellation Changes

View File

@ -1,4 +1,4 @@
From bc96ad5586de906f720c4dae537aaeed5bd63c75 Mon Sep 17 00:00:00 2001
From 4a3c1ad5500406d3e6f6c221ef8a0a1c3b012202 Mon Sep 17 00:00:00 2001
From: Jedediah Smith <jedediah@silencegreys.com>
Date: Fri, 4 Mar 2016 03:16:11 -0500
Subject: [PATCH] Arrow pickup rule API

View File

@ -1,4 +1,4 @@
From e3a313ca14af95c77206c86528e8daae51792ddf Mon Sep 17 00:00:00 2001
From ba9bd41e146d01da235510663be86a00a5cf579e Mon Sep 17 00:00:00 2001
From: Zach Brown <zach.brown@destroystokyo.com>
Date: Sun, 24 Apr 2016 19:49:33 -0500
Subject: [PATCH] SPIGOT-1401: Fix dispenser, dropper, furnace placement

View File

@ -1,4 +1,4 @@
From bbac89af60c38b75044e3161d729843c819bf8d8 Mon Sep 17 00:00:00 2001
From 8e86f7031c88407a8f3e9886b3ba6acde9ccf17c Mon Sep 17 00:00:00 2001
From: Aikar <aikar@aikar.co>
Date: Wed, 27 Apr 2016 22:09:52 -0400
Subject: [PATCH] Improve Minecraft Hopper Performance

View File

@ -1,4 +1,4 @@
From 12deafddafaa2e61cdb9d05f32dc8a5d143a9c74 Mon Sep 17 00:00:00 2001
From 04bef9c46051bdfcb0a745a022be5defef1da644 Mon Sep 17 00:00:00 2001
From: Aikar <aikar@aikar.co>
Date: Thu, 28 Apr 2016 00:57:27 -0400
Subject: [PATCH] remove null possibility for getServer singleton

View File

@ -1,4 +1,4 @@
From 5395987701e0de5b725031c31c928050b726c248 Mon Sep 17 00:00:00 2001
From 2a93008a600628a5df218771c20eeb641af1f49e Mon Sep 17 00:00:00 2001
From: Aikar <aikar@aikar.co>
Date: Fri, 29 Apr 2016 20:02:00 -0400
Subject: [PATCH] Improve Maps (in item frames) performance and bug fixes
@ -48,10 +48,10 @@ index 413925e..f505e3c 100644
Iterator iterator = this.trackedPlayers.iterator(); // CraftBukkit
diff --git a/src/main/java/net/minecraft/server/World.java b/src/main/java/net/minecraft/server/World.java
index b3165eb..38a3692 100644
index 8479c6e..98fe386 100644
--- a/src/main/java/net/minecraft/server/World.java
+++ b/src/main/java/net/minecraft/server/World.java
@@ -1148,6 +1148,7 @@ public abstract class World implements IBlockAccess {
@@ -1157,6 +1157,7 @@ public abstract class World implements IBlockAccess {
{
if ( iter.next().trackee == entity )
{

View File

@ -1,4 +1,4 @@
From 1ac7c10918e24d0ba8739bb98c10e92d4c22bbbb Mon Sep 17 00:00:00 2001
From 0e07bd7fe9f2f38d0339008bd2793aa6a24a73cd Mon Sep 17 00:00:00 2001
From: Aikar <aikar@aikar.co>
Date: Sun, 1 May 2016 21:19:14 -0400
Subject: [PATCH] LootTable API & Replenishable Lootables Feature

View File

@ -1,4 +1,4 @@
From d17e644ae739920dd3b964a8d17be4bebddcd73f Mon Sep 17 00:00:00 2001
From 317f5c917e682c5e8c4aab755556541a015f2e6e Mon Sep 17 00:00:00 2001
From: Aikar <aikar@aikar.co>
Date: Tue, 19 Jan 2016 00:13:19 -0500
Subject: [PATCH] Do not load chunks for pathfinding

View File

@ -1,4 +1,4 @@
From b3b374803b9f4e4a4afe64e5ca8bb6fd946449ab Mon Sep 17 00:00:00 2001
From 8b396c2ea8d8042baef4042fc6fec5bb2fb6152f Mon Sep 17 00:00:00 2001
From: Aikar <aikar@aikar.co>
Date: Mon, 17 Jun 2013 01:24:00 -0400
Subject: [PATCH] Entity Tracking Improvements

View File

@ -1,4 +1,4 @@
From 33702c0ad5a5fa70ee060427c5a5b86a6fb07d98 Mon Sep 17 00:00:00 2001
From 7ac9506d355be738247bdc6cfc04894ce8ab7f8b Mon Sep 17 00:00:00 2001
From: Aikar <aikar@aikar.co>
Date: Sat, 7 May 2016 23:33:08 -0400
Subject: [PATCH] Don't save empty scoreboard teams to scoreboard.dat

View File

@ -1,4 +1,4 @@
From 2eac14cc481adc373ca6a73bcfe96ff35a020a60 Mon Sep 17 00:00:00 2001
From 9d9f8c72a5dcc526b661b7f906279cfde77f0ddf Mon Sep 17 00:00:00 2001
From: Aikar <aikar@aikar.co>
Date: Thu, 12 May 2016 01:55:17 -0400
Subject: [PATCH] Do not mark chunks as active for neighbor updates
@ -6,10 +6,10 @@ Subject: [PATCH] Do not mark chunks as active for neighbor updates
Fixes chunk unload issues
diff --git a/src/main/java/net/minecraft/server/Chunk.java b/src/main/java/net/minecraft/server/Chunk.java
index d670671..2b7679f 100644
index 3419d0f..a2d9f62 100644
--- a/src/main/java/net/minecraft/server/Chunk.java
+++ b/src/main/java/net/minecraft/server/Chunk.java
@@ -995,25 +995,25 @@ public class Chunk {
@@ -1003,25 +1003,25 @@ public class Chunk {
}
// CraftBukkit end

View File

@ -1,4 +1,4 @@
From de46bb6b526dcd7ed0ca8eb07e08340ce4c670f5 Mon Sep 17 00:00:00 2001
From d3ff485bf65704cddbc2b3ef9864d07dc56453c9 Mon Sep 17 00:00:00 2001
From: Aikar <aikar@aikar.co>
Date: Thu, 12 May 2016 02:03:56 -0400
Subject: [PATCH] Fix Chunk Unload Queue Issues
@ -9,7 +9,7 @@ has not resolved all the bugs with the changes.
This patch fixes known issues and really should be applied by Spigot team.
diff --git a/src/main/java/net/minecraft/server/Chunk.java b/src/main/java/net/minecraft/server/Chunk.java
index 2b7679f..44f576e 100644
index a2d9f62..a1f7e83 100644
--- a/src/main/java/net/minecraft/server/Chunk.java
+++ b/src/main/java/net/minecraft/server/Chunk.java
@@ -46,7 +46,7 @@ public class Chunk {

View File

@ -1,4 +1,4 @@
From c7078febc6fdfb8ac49a31303d57d298d89a026e Mon Sep 17 00:00:00 2001
From 74b09046787728d12af571cf9ed96cb54ea3b3eb Mon Sep 17 00:00:00 2001
From: Zach Brown <zach.brown@destroystokyo.com>
Date: Thu, 12 May 2016 23:02:58 -0500
Subject: [PATCH] System property for disabling watchdoge

View File

@ -1,4 +1,4 @@
From 3a976afbedde9e6e9edd83453c83c83c6431f686 Mon Sep 17 00:00:00 2001
From 978ed103e4eaa5ba1b5ed1688cebf74407c6c6fb Mon Sep 17 00:00:00 2001
From: Aikar <aikar@aikar.co>
Date: Fri, 13 May 2016 01:38:06 -0400
Subject: [PATCH] Optimize EAR

View File

@ -1,4 +1,4 @@
From 8fe65882bdab6c572f9c34533160c69dd877a92b Mon Sep 17 00:00:00 2001
From cd24299884c8332c642d17def56fb348eea786fd Mon Sep 17 00:00:00 2001
From: Aikar <aikar@aikar.co>
Date: Mon, 16 May 2016 20:47:41 -0400
Subject: [PATCH] Optimize UserCache / Thread Safe

View File

@ -1,4 +1,4 @@
From be421cca86540ac31adfb56cb0d6ce8110f8613b Mon Sep 17 00:00:00 2001
From 3490ddd51256ba1788e4f8b0b7afee1f04f19498 Mon Sep 17 00:00:00 2001
From: Aikar <aikar@aikar.co>
Date: Mon, 16 May 2016 22:54:36 -0400
Subject: [PATCH] MC-99914 - ensure EntityItem loads before EntityPotion

View File

@ -1,4 +1,4 @@
From 758896f0432b1030722b0b4696f89747feaef889 Mon Sep 17 00:00:00 2001
From 2ad56b9c1251e19cba94064d448640141c4e805d Mon Sep 17 00:00:00 2001
From: Aikar <aikar@aikar.co>
Date: Mon, 16 May 2016 23:19:16 -0400
Subject: [PATCH] Avoid blocking on Network Manager creation

View File

@ -1,4 +1,4 @@
From 3f55bd6e20e89b8c35bd813cb081e4381e894ad6 Mon Sep 17 00:00:00 2001
From d91fecdc72088d80f3f0ce7725970524513417d2 Mon Sep 17 00:00:00 2001
From: Zach Brown <zach.brown@destroystokyo.com>
Date: Sun, 22 May 2016 20:20:55 -0500
Subject: [PATCH] Optional old TNT cannon behaviors

View File

@ -1,4 +1,4 @@
From 78b7716582545dd15e67518bfd5a395a4b474e3d Mon Sep 17 00:00:00 2001
From c4afaa0de50ca681f3872b7c424e9e049a05469a Mon Sep 17 00:00:00 2001
From: Martin Panzer <postremus1996@googlemail.com>
Date: Mon, 23 May 2016 12:12:37 +0200
Subject: [PATCH] Faster redstone torch rapid clock removal

View File

@ -1,4 +1,4 @@
From 71e41aa5a152433d30973e4639560c33bc6f4944 Mon Sep 17 00:00:00 2001
From ea485cf2940bdf54d4f7143860c44bb100c27749 Mon Sep 17 00:00:00 2001
From: Aikar <aikar@aikar.co>
Date: Fri, 27 May 2016 21:41:26 -0400
Subject: [PATCH] Ensure Chunks never ever load async

Some files were not shown because too many files have changed in this diff Show More