Remove patch pulled upstream and rebuild patches
Dieser Commit ist enthalten in:
Ursprung
a308ede0bb
Commit
924ce8be30
@ -1,4 +1,4 @@
|
|||||||
From 636e967ef66ae6a0c30fdb012b1db6252fe22aee Mon Sep 17 00:00:00 2001
|
From 5007d500210a0bf7fb1ec142b25e624acf4f7240 Mon Sep 17 00:00:00 2001
|
||||||
From: Zach Brown <zach.brown@destroystokyo.com>
|
From: Zach Brown <zach.brown@destroystokyo.com>
|
||||||
Date: Mon, 29 Feb 2016 21:09:10 -0600
|
Date: Mon, 29 Feb 2016 21:09:10 -0600
|
||||||
Subject: [PATCH] mc-dev imports
|
Subject: [PATCH] mc-dev imports
|
||||||
@ -4902,362 +4902,6 @@ index 0000000..300573a
|
|||||||
+ return this.b(s);
|
+ return this.b(s);
|
||||||
+ }
|
+ }
|
||||||
+}
|
+}
|
||||||
diff --git a/src/main/java/net/minecraft/server/NavigationAbstract.java b/src/main/java/net/minecraft/server/NavigationAbstract.java
|
|
||||||
new file mode 100644
|
|
||||||
index 0000000..2f4265a
|
|
||||||
--- /dev/null
|
|
||||||
+++ b/src/main/java/net/minecraft/server/NavigationAbstract.java
|
|
||||||
@@ -0,0 +1,275 @@
|
|
||||||
+package net.minecraft.server;
|
|
||||||
+
|
|
||||||
+public abstract class NavigationAbstract {
|
|
||||||
+
|
|
||||||
+ private static int f = 20;
|
|
||||||
+ protected EntityInsentient a;
|
|
||||||
+ protected World b;
|
|
||||||
+ protected PathEntity c;
|
|
||||||
+ protected double d;
|
|
||||||
+ private final AttributeInstance g;
|
|
||||||
+ private int h;
|
|
||||||
+ private int i;
|
|
||||||
+ private Vec3D j;
|
|
||||||
+ private Vec3D k;
|
|
||||||
+ private long l;
|
|
||||||
+ private long m;
|
|
||||||
+ private double n;
|
|
||||||
+ private float o;
|
|
||||||
+ private boolean p;
|
|
||||||
+ private long q;
|
|
||||||
+ protected PathfinderAbstract e;
|
|
||||||
+ private BlockPosition r;
|
|
||||||
+ private final Pathfinder s;
|
|
||||||
+
|
|
||||||
+ public NavigationAbstract(EntityInsentient entityinsentient, World world) {
|
|
||||||
+ this.j = Vec3D.a;
|
|
||||||
+ this.k = Vec3D.a;
|
|
||||||
+ this.l = 0L;
|
|
||||||
+ this.m = 0L;
|
|
||||||
+ this.o = 0.5F;
|
|
||||||
+ this.a = entityinsentient;
|
|
||||||
+ this.b = world;
|
|
||||||
+ this.g = entityinsentient.getAttributeInstance(GenericAttributes.FOLLOW_RANGE);
|
|
||||||
+ this.s = this.a();
|
|
||||||
+ this.b.C().a(this);
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ protected abstract Pathfinder a();
|
|
||||||
+
|
|
||||||
+ public void a(double d0) {
|
|
||||||
+ this.d = d0;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ public float h() {
|
|
||||||
+ return (float) this.g.getValue();
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ public boolean i() {
|
|
||||||
+ return this.p;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ public void j() {
|
|
||||||
+ if (this.b.getTime() - this.q > (long) NavigationAbstract.f) {
|
|
||||||
+ if (this.r != null) {
|
|
||||||
+ this.c = null;
|
|
||||||
+ this.c = this.a(this.r);
|
|
||||||
+ this.q = this.b.getTime();
|
|
||||||
+ this.p = false;
|
|
||||||
+ }
|
|
||||||
+ } else {
|
|
||||||
+ this.p = true;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ public final PathEntity a(double d0, double d1, double d2) {
|
|
||||||
+ return this.a(new BlockPosition(MathHelper.floor(d0), (int) d1, MathHelper.floor(d2)));
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ public PathEntity a(BlockPosition blockposition) {
|
|
||||||
+ if (!this.b()) {
|
|
||||||
+ return null;
|
|
||||||
+ } else if (this.c != null && !this.c.b() && blockposition.equals(this.r)) {
|
|
||||||
+ return this.c;
|
|
||||||
+ } else {
|
|
||||||
+ this.r = blockposition;
|
|
||||||
+ float f = this.h();
|
|
||||||
+
|
|
||||||
+ this.b.methodProfiler.a("pathfind");
|
|
||||||
+ BlockPosition blockposition1 = new BlockPosition(this.a);
|
|
||||||
+ int i = (int) (f + 8.0F);
|
|
||||||
+ ChunkCache chunkcache = new ChunkCache(this.b, blockposition1.a(-i, -i, -i), blockposition1.a(i, i, i), 0);
|
|
||||||
+ PathEntity pathentity = this.s.a(chunkcache, this.a, this.r, f);
|
|
||||||
+
|
|
||||||
+ this.b.methodProfiler.b();
|
|
||||||
+ return pathentity;
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ public PathEntity a(Entity entity) {
|
|
||||||
+ if (!this.b()) {
|
|
||||||
+ return null;
|
|
||||||
+ } else {
|
|
||||||
+ BlockPosition blockposition = new BlockPosition(entity);
|
|
||||||
+
|
|
||||||
+ if (this.c != null && !this.c.b() && blockposition.equals(this.r)) {
|
|
||||||
+ return this.c;
|
|
||||||
+ } else {
|
|
||||||
+ this.r = blockposition;
|
|
||||||
+ float f = this.h();
|
|
||||||
+
|
|
||||||
+ this.b.methodProfiler.a("pathfind");
|
|
||||||
+ BlockPosition blockposition1 = (new BlockPosition(this.a)).up();
|
|
||||||
+ int i = (int) (f + 16.0F);
|
|
||||||
+ ChunkCache chunkcache = new ChunkCache(this.b, blockposition1.a(-i, -i, -i), blockposition1.a(i, i, i), 0);
|
|
||||||
+ PathEntity pathentity = this.s.a(chunkcache, this.a, entity, f);
|
|
||||||
+
|
|
||||||
+ this.b.methodProfiler.b();
|
|
||||||
+ return pathentity;
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ public boolean a(double d0, double d1, double d2, double d3) {
|
|
||||||
+ PathEntity pathentity = this.a((double) MathHelper.floor(d0), (double) ((int) d1), (double) MathHelper.floor(d2));
|
|
||||||
+
|
|
||||||
+ return this.a(pathentity, d3);
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ public boolean a(Entity entity, double d0) {
|
|
||||||
+ PathEntity pathentity = this.a(entity);
|
|
||||||
+
|
|
||||||
+ return pathentity != null ? this.a(pathentity, d0) : false;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ public boolean a(PathEntity pathentity, double d0) {
|
|
||||||
+ if (pathentity == null) {
|
|
||||||
+ this.c = null;
|
|
||||||
+ return false;
|
|
||||||
+ } else {
|
|
||||||
+ if (!pathentity.a(this.c)) {
|
|
||||||
+ this.c = pathentity;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ this.d();
|
|
||||||
+ if (this.c.d() == 0) {
|
|
||||||
+ return false;
|
|
||||||
+ } else {
|
|
||||||
+ this.d = d0;
|
|
||||||
+ Vec3D vec3d = this.c();
|
|
||||||
+
|
|
||||||
+ this.i = this.h;
|
|
||||||
+ this.j = vec3d;
|
|
||||||
+ return true;
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ public PathEntity k() {
|
|
||||||
+ return this.c;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ public void l() {
|
|
||||||
+ ++this.h;
|
|
||||||
+ if (this.p) {
|
|
||||||
+ this.j();
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ if (!this.n()) {
|
|
||||||
+ Vec3D vec3d;
|
|
||||||
+
|
|
||||||
+ if (this.b()) {
|
|
||||||
+ this.m();
|
|
||||||
+ } else if (this.c != null && this.c.e() < this.c.d()) {
|
|
||||||
+ vec3d = this.c();
|
|
||||||
+ Vec3D vec3d1 = this.c.a(this.a, this.c.e());
|
|
||||||
+
|
|
||||||
+ if (vec3d.y > vec3d1.y && !this.a.onGround && MathHelper.floor(vec3d.x) == MathHelper.floor(vec3d1.x) && MathHelper.floor(vec3d.z) == MathHelper.floor(vec3d1.z)) {
|
|
||||||
+ this.c.c(this.c.e() + 1);
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ if (!this.n()) {
|
|
||||||
+ vec3d = this.c.a((Entity) this.a);
|
|
||||||
+ if (vec3d != null) {
|
|
||||||
+ BlockPosition blockposition = (new BlockPosition(vec3d)).down();
|
|
||||||
+ AxisAlignedBB axisalignedbb = this.b.getType(blockposition).c(this.b, blockposition);
|
|
||||||
+
|
|
||||||
+ vec3d = vec3d.a(0.0D, 1.0D - axisalignedbb.e, 0.0D);
|
|
||||||
+ this.a.getControllerMove().a(vec3d.x, vec3d.y, vec3d.z, this.d);
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ protected void m() {
|
|
||||||
+ Vec3D vec3d = this.c();
|
|
||||||
+ int i = this.c.d();
|
|
||||||
+
|
|
||||||
+ for (int j = this.c.e(); j < this.c.d(); ++j) {
|
|
||||||
+ if ((double) this.c.a(j).b != Math.floor(vec3d.y)) {
|
|
||||||
+ i = j;
|
|
||||||
+ break;
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ this.o = this.a.width > 0.75F ? this.a.width / 2.0F : 0.75F - this.a.width / 2.0F;
|
|
||||||
+ Vec3D vec3d1 = this.c.f();
|
|
||||||
+
|
|
||||||
+ if (MathHelper.e((float) (this.a.locX - (vec3d1.x + 0.5D))) < this.o && MathHelper.e((float) (this.a.locZ - (vec3d1.z + 0.5D))) < this.o) {
|
|
||||||
+ this.c.c(this.c.e() + 1);
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ int k = MathHelper.f(this.a.width);
|
|
||||||
+ int l = (int) this.a.length + 1;
|
|
||||||
+ int i1 = k;
|
|
||||||
+
|
|
||||||
+ for (int j1 = i - 1; j1 >= this.c.e(); --j1) {
|
|
||||||
+ if (this.a(vec3d, this.c.a(this.a, j1), k, l, i1)) {
|
|
||||||
+ this.c.c(j1);
|
|
||||||
+ break;
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ this.a(vec3d);
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ protected void a(Vec3D vec3d) {
|
|
||||||
+ if (this.h - this.i > 100) {
|
|
||||||
+ if (vec3d.distanceSquared(this.j) < 2.25D) {
|
|
||||||
+ this.o();
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ this.i = this.h;
|
|
||||||
+ this.j = vec3d;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ if (this.c != null && !this.c.b()) {
|
|
||||||
+ Vec3D vec3d1 = this.c.f();
|
|
||||||
+
|
|
||||||
+ if (!vec3d1.equals(this.k)) {
|
|
||||||
+ this.k = vec3d1;
|
|
||||||
+ double d0 = vec3d.f(this.k);
|
|
||||||
+
|
|
||||||
+ this.n = this.a.ck() > 0.0F ? d0 / (double) this.a.ck() * 1000.0D : 0.0D;
|
|
||||||
+ } else {
|
|
||||||
+ this.l += System.currentTimeMillis() - this.m;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ if (this.n > 0.0D && (double) this.l > this.n * 3.0D) {
|
|
||||||
+ this.k = Vec3D.a;
|
|
||||||
+ this.l = 0L;
|
|
||||||
+ this.n = 0.0D;
|
|
||||||
+ this.o();
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ this.m = System.currentTimeMillis();
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ public boolean n() {
|
|
||||||
+ return this.c == null || this.c.b();
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ public void o() {
|
|
||||||
+ this.c = null;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ protected abstract Vec3D c();
|
|
||||||
+
|
|
||||||
+ protected abstract boolean b();
|
|
||||||
+
|
|
||||||
+ protected boolean p() {
|
|
||||||
+ return this.a.isInWater() || this.a.an();
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ protected void d() {}
|
|
||||||
+
|
|
||||||
+ protected abstract boolean a(Vec3D vec3d, Vec3D vec3d1, int i, int j, int k);
|
|
||||||
+
|
|
||||||
+ public boolean b(BlockPosition blockposition) {
|
|
||||||
+ return this.b.getType(blockposition.down()).b();
|
|
||||||
+ }
|
|
||||||
+}
|
|
||||||
diff --git a/src/main/java/net/minecraft/server/NavigationListener.java b/src/main/java/net/minecraft/server/NavigationListener.java
|
|
||||||
new file mode 100644
|
|
||||||
index 0000000..f82ea80
|
|
||||||
--- /dev/null
|
|
||||||
+++ b/src/main/java/net/minecraft/server/NavigationListener.java
|
|
||||||
@@ -0,0 +1,69 @@
|
|
||||||
+package net.minecraft.server;
|
|
||||||
+
|
|
||||||
+import java.util.WeakHashMap;
|
|
||||||
+
|
|
||||||
+public class NavigationListener implements IWorldAccess {
|
|
||||||
+
|
|
||||||
+ private static final Object a = new Object();
|
|
||||||
+ private final WeakHashMap<NavigationAbstract, Object> b = new WeakHashMap();
|
|
||||||
+
|
|
||||||
+ public NavigationListener() {}
|
|
||||||
+
|
|
||||||
+ public void a(NavigationAbstract navigationabstract) {
|
|
||||||
+ this.b.put(navigationabstract, NavigationListener.a);
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ public void a(World world, BlockPosition blockposition, IBlockData iblockdata, IBlockData iblockdata1, int i) {
|
|
||||||
+ if (this.a(world, blockposition, iblockdata, iblockdata1)) {
|
|
||||||
+ NavigationAbstract[] anavigationabstract = (NavigationAbstract[]) this.b.keySet().toArray(new NavigationAbstract[0]);
|
|
||||||
+ NavigationAbstract[] anavigationabstract1 = anavigationabstract;
|
|
||||||
+ int j = anavigationabstract.length;
|
|
||||||
+
|
|
||||||
+ for (int k = 0; k < j; ++k) {
|
|
||||||
+ NavigationAbstract navigationabstract = anavigationabstract1[k];
|
|
||||||
+
|
|
||||||
+ if (navigationabstract != null && !navigationabstract.i()) {
|
|
||||||
+ PathEntity pathentity = navigationabstract.k();
|
|
||||||
+
|
|
||||||
+ if (pathentity != null && !pathentity.b() && pathentity.d() != 0) {
|
|
||||||
+ PathPoint pathpoint = navigationabstract.c.c();
|
|
||||||
+ double d0 = blockposition.distanceSquared(((double) pathpoint.a + navigationabstract.a.locX) / 2.0D, ((double) pathpoint.b + navigationabstract.a.locY) / 2.0D, ((double) pathpoint.c + navigationabstract.a.locZ) / 2.0D);
|
|
||||||
+ int l = (pathentity.d() - pathentity.e()) * (pathentity.d() - pathentity.e());
|
|
||||||
+
|
|
||||||
+ if (d0 < (double) l) {
|
|
||||||
+ navigationabstract.j();
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ protected boolean a(World world, BlockPosition blockposition, IBlockData iblockdata, IBlockData iblockdata1) {
|
|
||||||
+ AxisAlignedBB axisalignedbb = iblockdata.d(world, blockposition);
|
|
||||||
+ AxisAlignedBB axisalignedbb1 = iblockdata1.d(world, blockposition);
|
|
||||||
+
|
|
||||||
+ return axisalignedbb != axisalignedbb1 && (axisalignedbb == null || !axisalignedbb.equals(axisalignedbb1));
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ public void a(BlockPosition blockposition) {}
|
|
||||||
+
|
|
||||||
+ public void a(int i, int j, int k, int l, int i1, int j1) {}
|
|
||||||
+
|
|
||||||
+ public void a(EntityHuman entityhuman, SoundEffect soundeffect, SoundCategory soundcategory, double d0, double d1, double d2, float f, float f1) {}
|
|
||||||
+
|
|
||||||
+ public void a(int i, boolean flag, double d0, double d1, double d2, double d3, double d4, double d5, int... aint) {}
|
|
||||||
+
|
|
||||||
+ public void a(Entity entity) {}
|
|
||||||
+
|
|
||||||
+ public void b(Entity entity) {}
|
|
||||||
+
|
|
||||||
+ public void a(SoundEffect soundeffect, BlockPosition blockposition) {}
|
|
||||||
+
|
|
||||||
+ public void a(int i, BlockPosition blockposition, int j) {}
|
|
||||||
+
|
|
||||||
+ public void a(EntityHuman entityhuman, int i, BlockPosition blockposition, int j) {}
|
|
||||||
+
|
|
||||||
+ public void b(int i, BlockPosition blockposition, int j) {}
|
|
||||||
+}
|
|
||||||
diff --git a/src/main/java/net/minecraft/server/PacketPlayInResourcePackStatus.java b/src/main/java/net/minecraft/server/PacketPlayInResourcePackStatus.java
|
diff --git a/src/main/java/net/minecraft/server/PacketPlayInResourcePackStatus.java b/src/main/java/net/minecraft/server/PacketPlayInResourcePackStatus.java
|
||||||
new file mode 100644
|
new file mode 100644
|
||||||
index 0000000..30ca225
|
index 0000000..30ca225
|
||||||
@ -5836,5 +5480,5 @@ index 0000000..2286c9e
|
|||||||
+ }
|
+ }
|
||||||
+}
|
+}
|
||||||
--
|
--
|
||||||
2.7.4
|
2.7.3
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
From af2e610ee6d63769448b95cc2386e9bf73beb02d Mon Sep 17 00:00:00 2001
|
From c2c05904915d7f992a37630a29b4ec7531065334 Mon Sep 17 00:00:00 2001
|
||||||
From: kashike <kashike@vq.lc>
|
From: kashike <kashike@vq.lc>
|
||||||
Date: Tue, 8 Mar 2016 18:28:43 -0800
|
Date: Tue, 8 Mar 2016 18:28:43 -0800
|
||||||
Subject: [PATCH] Don't nest if we don't need to when cerealising text
|
Subject: [PATCH] Don't nest if we don't need to when cerealising text
|
||||||
@ -26,5 +26,5 @@ index c0e1199..bc6c054 100644
|
|||||||
packetdataserializer.a(this.a);
|
packetdataserializer.a(this.a);
|
||||||
}
|
}
|
||||||
--
|
--
|
||||||
2.7.2
|
2.7.3
|
||||||
|
|
@ -1,104 +0,0 @@
|
|||||||
From 7a0a329dd1092b98f0951ae49af15c56d210d6d9 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Aikar <aikar@aikar.co>
|
|
||||||
Date: Tue, 8 Mar 2016 19:13:54 -0500
|
|
||||||
Subject: [PATCH] Optimize Navigation Listener
|
|
||||||
|
|
||||||
Mojang was abusing a WeakHashMap to do clean up. However this has some
|
|
||||||
scary object life concerns as you could have a NavigationListener being
|
|
||||||
ticked even after the entity it was bound to was removed from world.
|
|
||||||
|
|
||||||
Switching this to an Array List gives superior iteration performance
|
|
||||||
at a slight cost to removal performance.
|
|
||||||
|
|
||||||
Additionally, change listener registration to be done upon world add
|
|
||||||
instead of immediate up creation.
|
|
||||||
|
|
||||||
This provides benefit of only registering and ticking REAL Navigation
|
|
||||||
objects, and not invalid entities (cancelled entity spawns for example)
|
|
||||||
|
|
||||||
Gives us a much leaner NavigationListener list.
|
|
||||||
|
|
||||||
diff --git a/src/main/java/net/minecraft/server/NavigationAbstract.java b/src/main/java/net/minecraft/server/NavigationAbstract.java
|
|
||||||
index 7d794b9..aa18f54 100644
|
|
||||||
--- a/src/main/java/net/minecraft/server/NavigationAbstract.java
|
|
||||||
+++ b/src/main/java/net/minecraft/server/NavigationAbstract.java
|
|
||||||
@@ -32,7 +32,7 @@ public abstract class NavigationAbstract {
|
|
||||||
this.b = world;
|
|
||||||
this.g = entityinsentient.getAttributeInstance(GenericAttributes.FOLLOW_RANGE);
|
|
||||||
this.s = this.a();
|
|
||||||
- this.b.C().a(this);
|
|
||||||
+ //this.b.C().a(this); // Paper - Optimized Nav Listener - registered on world add
|
|
||||||
}
|
|
||||||
|
|
||||||
protected abstract Pathfinder a();
|
|
||||||
diff --git a/src/main/java/net/minecraft/server/NavigationListener.java b/src/main/java/net/minecraft/server/NavigationListener.java
|
|
||||||
index f82ea80..963a0e7 100644
|
|
||||||
--- a/src/main/java/net/minecraft/server/NavigationListener.java
|
|
||||||
+++ b/src/main/java/net/minecraft/server/NavigationListener.java
|
|
||||||
@@ -1,26 +1,35 @@
|
|
||||||
package net.minecraft.server;
|
|
||||||
|
|
||||||
+import java.util.ArrayList; // Paper
|
|
||||||
+import java.util.List; // Paper
|
|
||||||
import java.util.WeakHashMap;
|
|
||||||
|
|
||||||
public class NavigationListener implements IWorldAccess {
|
|
||||||
|
|
||||||
private static final Object a = new Object();
|
|
||||||
- private final WeakHashMap<NavigationAbstract, Object> b = new WeakHashMap();
|
|
||||||
+ private final List<NavigationAbstract> navigators = new ArrayList<>(); // Paper
|
|
||||||
|
|
||||||
public NavigationListener() {}
|
|
||||||
|
|
||||||
public void a(NavigationAbstract navigationabstract) {
|
|
||||||
- this.b.put(navigationabstract, NavigationListener.a);
|
|
||||||
+ //this.b.put(navigationabstract, NavigationListener.a); // Paper
|
|
||||||
+ System.err.println("Unexpected NavigationListener add"); // Paper
|
|
||||||
}
|
|
||||||
|
|
||||||
public void a(World world, BlockPosition blockposition, IBlockData iblockdata, IBlockData iblockdata1, int i) {
|
|
||||||
if (this.a(world, blockposition, iblockdata, iblockdata1)) {
|
|
||||||
+ /* // Paper start
|
|
||||||
NavigationAbstract[] anavigationabstract = (NavigationAbstract[]) this.b.keySet().toArray(new NavigationAbstract[0]);
|
|
||||||
NavigationAbstract[] anavigationabstract1 = anavigationabstract;
|
|
||||||
int j = anavigationabstract.length;
|
|
||||||
|
|
||||||
- for (int k = 0; k < j; ++k) {
|
|
||||||
- NavigationAbstract navigationabstract = anavigationabstract1[k];
|
|
||||||
+ */
|
|
||||||
+ // DO NOT USE AN ITERATOR! This must be a for (;;) to avoid CME.
|
|
||||||
+ // This is perfectly safe, as additions are ok to be done in this iteration
|
|
||||||
+ // and Removals are queued instead of immediate.
|
|
||||||
+ for (int k = 0; k < this.navigators.size(); ++k) {
|
|
||||||
+ NavigationAbstract navigationabstract = this.navigators.get(k);
|
|
||||||
+ // Paper end
|
|
||||||
|
|
||||||
if (navigationabstract != null && !navigationabstract.i()) {
|
|
||||||
PathEntity pathentity = navigationabstract.k();
|
|
||||||
@@ -55,9 +64,21 @@ public class NavigationListener implements IWorldAccess {
|
|
||||||
|
|
||||||
public void a(int i, boolean flag, double d0, double d1, double d2, double d3, double d4, double d5, int... aint) {}
|
|
||||||
|
|
||||||
- public void a(Entity entity) {}
|
|
||||||
+ public void a(Entity entity) {
|
|
||||||
+ // Paper start
|
|
||||||
+ if (entity instanceof EntityInsentient) {
|
|
||||||
+ this.navigators.add(((EntityInsentient) entity).navigation);
|
|
||||||
+ }
|
|
||||||
+ // Paper end
|
|
||||||
+ }
|
|
||||||
|
|
||||||
- public void b(Entity entity) {}
|
|
||||||
+ public void b(Entity entity) {
|
|
||||||
+ // Paper start
|
|
||||||
+ if (entity instanceof EntityInsentient) {
|
|
||||||
+ this.navigators.remove(((EntityInsentient) entity).navigation);
|
|
||||||
+ }
|
|
||||||
+ // Paper end
|
|
||||||
+ }
|
|
||||||
|
|
||||||
public void a(SoundEffect soundeffect, BlockPosition blockposition) {}
|
|
||||||
|
|
||||||
--
|
|
||||||
2.7.3
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
|||||||
From 11111d3ecaacfd66ca1678680b23a8aa9d6b8cde Mon Sep 17 00:00:00 2001
|
From 821a19198ac0334421250b89174b7b353543e9c2 Mon Sep 17 00:00:00 2001
|
||||||
From: Aikar <aikar@aikar.co>
|
From: Aikar <aikar@aikar.co>
|
||||||
Date: Tue, 8 Mar 2016 23:25:45 -0500
|
Date: Tue, 8 Mar 2016 23:25:45 -0500
|
||||||
Subject: [PATCH] Disable Scoreboards for non players by default
|
Subject: [PATCH] Disable Scoreboards for non players by default
|
@ -1,4 +1,4 @@
|
|||||||
From cb235b47d0b86defc04f886883da0a4cdae9ab81 Mon Sep 17 00:00:00 2001
|
From 0b995071bedb2a68563ceba6087ca30fd007ff92 Mon Sep 17 00:00:00 2001
|
||||||
From: mrapple <tony@oc.tc>
|
From: mrapple <tony@oc.tc>
|
||||||
Date: Sun, 25 Nov 2012 13:43:39 -0600
|
Date: Sun, 25 Nov 2012 13:43:39 -0600
|
||||||
Subject: [PATCH] Add methods for working with arrows stuck in living entities
|
Subject: [PATCH] Add methods for working with arrows stuck in living entities
|
||||||
@ -43,5 +43,5 @@ index 6f25d18..693d5cb 100644
|
|||||||
+ // Paper end
|
+ // Paper end
|
||||||
}
|
}
|
||||||
--
|
--
|
||||||
2.7.4
|
2.7.3
|
||||||
|
|
@ -1,4 +1,4 @@
|
|||||||
From bf6283b5e4de9efb88ab98d75a5ccc628997f268 Mon Sep 17 00:00:00 2001
|
From f73bf84af55020b362b2dca1b51f1f706c0e4205 Mon Sep 17 00:00:00 2001
|
||||||
From: Jedediah Smith <jedediah@silencegreys.com>
|
From: Jedediah Smith <jedediah@silencegreys.com>
|
||||||
Date: Sat, 4 Apr 2015 23:17:52 -0400
|
Date: Sat, 4 Apr 2015 23:17:52 -0400
|
||||||
Subject: [PATCH] Complete resource pack API
|
Subject: [PATCH] Complete resource pack API
|
||||||
@ -86,5 +86,5 @@ index 4be2653..b2b2bf4 100644
|
|||||||
|
|
||||||
// Spigot start
|
// Spigot start
|
||||||
--
|
--
|
||||||
2.7.2
|
2.7.3
|
||||||
|
|
@ -1,4 +1,4 @@
|
|||||||
From 43a8b5d2e760a663bf8674cdb794e510f3c3d62d Mon Sep 17 00:00:00 2001
|
From 50ce8bd11dd95b966cc1d566901c12c92f0c707c Mon Sep 17 00:00:00 2001
|
||||||
From: Byteflux <byte@byteflux.net>
|
From: Byteflux <byte@byteflux.net>
|
||||||
Date: Sat, 12 Mar 2016 13:37:50 -0600
|
Date: Sat, 12 Mar 2016 13:37:50 -0600
|
||||||
Subject: [PATCH] Re-add Spigot's hopper-check feature
|
Subject: [PATCH] Re-add Spigot's hopper-check feature
|
@ -1,4 +1,4 @@
|
|||||||
From 009f6b77c95094a9d2e9698ab89a0ae8eaa539b4 Mon Sep 17 00:00:00 2001
|
From 3f15c4026c0860a835923d5c3acd6f93e06ddf8b Mon Sep 17 00:00:00 2001
|
||||||
From: Aikar <aikar@aikar.co>
|
From: Aikar <aikar@aikar.co>
|
||||||
Date: Fri, 4 Mar 2016 18:18:37 -0600
|
Date: Fri, 4 Mar 2016 18:18:37 -0600
|
||||||
Subject: [PATCH] Chunk save queue improvements
|
Subject: [PATCH] Chunk save queue improvements
|
@ -1,4 +1,4 @@
|
|||||||
From 798d650695eced24d570d3234da5daf0176aa1ab Mon Sep 17 00:00:00 2001
|
From 8136953d20cd31bbf60401988b9be1e6373fdcfb Mon Sep 17 00:00:00 2001
|
||||||
From: Aikar <aikar@aikar.co>
|
From: Aikar <aikar@aikar.co>
|
||||||
Date: Mon, 4 Mar 2013 23:46:10 -0500
|
Date: Mon, 4 Mar 2013 23:46:10 -0500
|
||||||
Subject: [PATCH] Chunk Save Reattempt
|
Subject: [PATCH] Chunk Save Reattempt
|
@ -1,4 +1,4 @@
|
|||||||
From 64de83ecd218a34a0c0abccbe67882e3fd47504b Mon Sep 17 00:00:00 2001
|
From a3aaf71e3a2304bfc6b4d3f805f8a7d76b0975a1 Mon Sep 17 00:00:00 2001
|
||||||
From: Aikar <aikar@aikar.co>
|
From: Aikar <aikar@aikar.co>
|
||||||
Date: Fri, 18 Mar 2016 13:17:38 -0400
|
Date: Fri, 18 Mar 2016 13:17:38 -0400
|
||||||
Subject: [PATCH] Default loading permissions.yml before plugins
|
Subject: [PATCH] Default loading permissions.yml before plugins
|
@ -1,4 +1,4 @@
|
|||||||
From e6f2d392781558710a109c36cd8359d14c66d019 Mon Sep 17 00:00:00 2001
|
From e8d5f3cee9c2a6fe8125553eadbb0b198368f560 Mon Sep 17 00:00:00 2001
|
||||||
From: Aikar <aikar@aikar.co>
|
From: Aikar <aikar@aikar.co>
|
||||||
Date: Fri, 18 Mar 2016 13:50:14 -0400
|
Date: Fri, 18 Mar 2016 13:50:14 -0400
|
||||||
Subject: [PATCH] Invalidate Metadata on reload
|
Subject: [PATCH] Invalidate Metadata on reload
|
@ -1,4 +1,4 @@
|
|||||||
From 061b3ef97d23ed3950196836e50da0c62bf08d38 Mon Sep 17 00:00:00 2001
|
From 2629402186e7795e1e17a135a3e965758f55d300 Mon Sep 17 00:00:00 2001
|
||||||
From: Aikar <aikar@aikar.co>
|
From: Aikar <aikar@aikar.co>
|
||||||
Date: Fri, 18 Mar 2016 14:19:19 -0400
|
Date: Fri, 18 Mar 2016 14:19:19 -0400
|
||||||
Subject: [PATCH] Undead horse leashing
|
Subject: [PATCH] Undead horse leashing
|
@ -1,4 +1,4 @@
|
|||||||
From 11d6a09a93d8d330f13366fe04a374eefbb85547 Mon Sep 17 00:00:00 2001
|
From 76ca6e71647989c7af2780e5246f9e9ae389df13 Mon Sep 17 00:00:00 2001
|
||||||
From: Aikar <aikar@aikar.co>
|
From: Aikar <aikar@aikar.co>
|
||||||
Date: Fri, 18 Mar 2016 14:24:53 -0400
|
Date: Fri, 18 Mar 2016 14:24:53 -0400
|
||||||
Subject: [PATCH] Fix Furnace cook time bug
|
Subject: [PATCH] Fix Furnace cook time bug
|
@ -1,4 +1,4 @@
|
|||||||
From 5207c4aef31a69a4f9cded63c9b90e056c7f9d50 Mon Sep 17 00:00:00 2001
|
From efe95b788587939d67d7add7914c4272aef31230 Mon Sep 17 00:00:00 2001
|
||||||
From: Aikar <aikar@aikar.co>
|
From: Aikar <aikar@aikar.co>
|
||||||
Date: Thu, 28 May 2015 23:00:19 -0400
|
Date: Thu, 28 May 2015 23:00:19 -0400
|
||||||
Subject: [PATCH] Handle Item Meta Inconsistencies
|
Subject: [PATCH] Handle Item Meta Inconsistencies
|
@ -1,4 +1,4 @@
|
|||||||
From 62ffb05812c537072f184c2b561f62d77f4750b5 Mon Sep 17 00:00:00 2001
|
From d921e3e3b88a48583a089c24d5372d27e6bd4ea2 Mon Sep 17 00:00:00 2001
|
||||||
From: Aikar <aikar@aikar.co>
|
From: Aikar <aikar@aikar.co>
|
||||||
Date: Fri, 18 Mar 2016 15:12:22 -0400
|
Date: Fri, 18 Mar 2016 15:12:22 -0400
|
||||||
Subject: [PATCH] Configurable Non Player Arrow Despawn Rate
|
Subject: [PATCH] Configurable Non Player Arrow Despawn Rate
|
@ -1,4 +1,4 @@
|
|||||||
From a129b303afc36a4e665fc1328a68aa307e09f0f0 Mon Sep 17 00:00:00 2001
|
From 3f28611a24fa1d3b92132c6755774d90f0cce970 Mon Sep 17 00:00:00 2001
|
||||||
From: Aikar <aikar@aikar.co>
|
From: Aikar <aikar@aikar.co>
|
||||||
Date: Fri, 18 Mar 2016 17:57:25 -0400
|
Date: Fri, 18 Mar 2016 17:57:25 -0400
|
||||||
Subject: [PATCH] Optimize Chunk Unload Queue
|
Subject: [PATCH] Optimize Chunk Unload Queue
|
||||||
@ -175,7 +175,7 @@ index 63e118d..721bcae 100644
|
|||||||
i += server.getChunkAt( x, z ).entityCount.get( oClass );
|
i += server.getChunkAt( x, z ).entityCount.get( oClass );
|
||||||
}
|
}
|
||||||
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
|
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
|
||||||
index 40338c0..c6b70b6 100644
|
index be311cd..66d3e94 100644
|
||||||
--- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
|
--- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
|
||||||
+++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
|
+++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
|
||||||
@@ -232,7 +232,7 @@ public class CraftWorld implements World {
|
@@ -232,7 +232,7 @@ public class CraftWorld implements World {
|
||||||
@ -228,5 +228,5 @@ index 482af17..a1a6d5a 100644
|
|||||||
neighbor.setNeighborLoaded(-x, -z);
|
neighbor.setNeighborLoaded(-x, -z);
|
||||||
chunk.setNeighborLoaded(x, z);
|
chunk.setNeighborLoaded(x, z);
|
||||||
--
|
--
|
||||||
2.7.4
|
2.7.3
|
||||||
|
|
@ -1,4 +1,4 @@
|
|||||||
From 23c5437c07a1bf673509fc5f20aed2117defe615 Mon Sep 17 00:00:00 2001
|
From b13bb267023ea301e6788d681b6c894611645c8b Mon Sep 17 00:00:00 2001
|
||||||
From: Aikar <aikar@aikar.co>
|
From: Aikar <aikar@aikar.co>
|
||||||
Date: Fri, 18 Mar 2016 19:15:44 -0400
|
Date: Fri, 18 Mar 2016 19:15:44 -0400
|
||||||
Subject: [PATCH] Optimize BlockStateList/BlockData
|
Subject: [PATCH] Optimize BlockStateList/BlockData
|
||||||
@ -41,5 +41,5 @@ index a11c62f..43f198b 100644
|
|||||||
|
|
||||||
public ImmutableMap<IBlockState<?>, Comparable<?>> s() {
|
public ImmutableMap<IBlockState<?>, Comparable<?>> s() {
|
||||||
--
|
--
|
||||||
2.7.4
|
2.7.3
|
||||||
|
|
@ -1,4 +1,4 @@
|
|||||||
From 965df3c371af6bc8f0725dbaa14200f65cf61785 Mon Sep 17 00:00:00 2001
|
From 0ef28b03fcca5f758ec4080fe0fcf19baf7b1881 Mon Sep 17 00:00:00 2001
|
||||||
From: Aikar <aikar@aikar.co>
|
From: Aikar <aikar@aikar.co>
|
||||||
Date: Fri, 18 Mar 2016 20:16:03 -0400
|
Date: Fri, 18 Mar 2016 20:16:03 -0400
|
||||||
Subject: [PATCH] Add World Util Methods
|
Subject: [PATCH] Add World Util Methods
|
||||||
@ -93,5 +93,5 @@ index b356aa6..dafe3b2 100644
|
|||||||
// CraftBukkit start - tree generation
|
// CraftBukkit start - tree generation
|
||||||
if (captureTreeGeneration) {
|
if (captureTreeGeneration) {
|
||||||
--
|
--
|
||||||
2.7.4
|
2.7.3
|
||||||
|
|
@ -1,4 +1,4 @@
|
|||||||
From bd1318892df7666bce22dfd3884b8a2cce99024e Mon Sep 17 00:00:00 2001
|
From ec825855931a7fc5824289d9c60a1fbd69809887 Mon Sep 17 00:00:00 2001
|
||||||
From: Aikar <aikar@aikar.co>
|
From: Aikar <aikar@aikar.co>
|
||||||
Date: Fri, 18 Mar 2016 21:22:56 -0400
|
Date: Fri, 18 Mar 2016 21:22:56 -0400
|
||||||
Subject: [PATCH] Optimized Light Level Comparisons
|
Subject: [PATCH] Optimized Light Level Comparisons
|
||||||
@ -131,5 +131,5 @@ index 949452c..d6c07a2 100644
|
|||||||
if (!this.world.isPlayerNearby((double) i1, (double) j1, (double) k1, 7.0D) && this.world.a(entityzombie.getBoundingBox(), (Entity) entityzombie) && this.world.getCubes(entityzombie, entityzombie.getBoundingBox()).isEmpty() && !this.world.containsLiquid(entityzombie.getBoundingBox())) {
|
if (!this.world.isPlayerNearby((double) i1, (double) j1, (double) k1, 7.0D) && this.world.a(entityzombie.getBoundingBox(), (Entity) entityzombie) && this.world.getCubes(entityzombie, entityzombie.getBoundingBox()).isEmpty() && !this.world.containsLiquid(entityzombie.getBoundingBox())) {
|
||||||
this.world.addEntity(entityzombie, CreatureSpawnEvent.SpawnReason.REINFORCEMENTS); // CraftBukkit
|
this.world.addEntity(entityzombie, CreatureSpawnEvent.SpawnReason.REINFORCEMENTS); // CraftBukkit
|
||||||
--
|
--
|
||||||
2.7.4
|
2.7.3
|
||||||
|
|
@ -1,4 +1,4 @@
|
|||||||
From 7753525019a5b4ca88a9d28322329d8f6d76e14a Mon Sep 17 00:00:00 2001
|
From 352b49921f8668d23b12b13a0cccd1a929ad9d86 Mon Sep 17 00:00:00 2001
|
||||||
From: DemonWav <demonwav@gmail.com>
|
From: DemonWav <demonwav@gmail.com>
|
||||||
Date: Sat, 19 Mar 2016 12:14:50 -0500
|
Date: Sat, 19 Mar 2016 12:14:50 -0500
|
||||||
Subject: [PATCH] Revert Spigot changes to blocking code, fix issue where
|
Subject: [PATCH] Revert Spigot changes to blocking code, fix issue where
|
@ -1,4 +1,4 @@
|
|||||||
From 1937f16e1e4eb1172c75ee7b08e3e176e86e33a2 Mon Sep 17 00:00:00 2001
|
From 7c2acad690c96df7fbb0aed0428251d272d81c02 Mon Sep 17 00:00:00 2001
|
||||||
From: Aikar <aikar@aikar.co>
|
From: Aikar <aikar@aikar.co>
|
||||||
Date: Sat, 19 Mar 2016 15:16:54 -0400
|
Date: Sat, 19 Mar 2016 15:16:54 -0400
|
||||||
Subject: [PATCH] Pass world to Village creation
|
Subject: [PATCH] Pass world to Village creation
|
||||||
@ -32,5 +32,5 @@ index 932eeb7..9b59dcb 100644
|
|||||||
this.d = BlockPosition.ZERO;
|
this.d = BlockPosition.ZERO;
|
||||||
this.j = new TreeMap();
|
this.j = new TreeMap();
|
||||||
--
|
--
|
||||||
2.7.4
|
2.7.3
|
||||||
|
|
@ -1,4 +1,4 @@
|
|||||||
From 40e17a07a01c12f1d76bb1fcb944a6182976f124 Mon Sep 17 00:00:00 2001
|
From de05a5dbaa3091c15b701ddae3482249ad0fc4c2 Mon Sep 17 00:00:00 2001
|
||||||
From: Jedediah Smith <jedediah@silencegreys.com>
|
From: Jedediah Smith <jedediah@silencegreys.com>
|
||||||
Date: Sun, 21 Jun 2015 15:07:20 -0400
|
Date: Sun, 21 Jun 2015 15:07:20 -0400
|
||||||
Subject: [PATCH] Custom replacement for eaten items
|
Subject: [PATCH] Custom replacement for eaten items
|
@ -1,4 +1,4 @@
|
|||||||
From 9d6816715ea3547ca50e0a60b18721a338f58329 Mon Sep 17 00:00:00 2001
|
From eef7f73163efe6762aeed5ad0f994f63050bf159 Mon Sep 17 00:00:00 2001
|
||||||
From: Jedediah Smith <jedediah@silencegreys.com>
|
From: Jedediah Smith <jedediah@silencegreys.com>
|
||||||
Date: Sun, 19 Jul 2015 16:51:38 -0400
|
Date: Sun, 19 Jul 2015 16:51:38 -0400
|
||||||
Subject: [PATCH] Set health before death event
|
Subject: [PATCH] Set health before death event
|
||||||
@ -46,5 +46,5 @@ index 693d5cb..ef522e7 100644
|
|||||||
|
|
||||||
public double getMaxHealth() {
|
public double getMaxHealth() {
|
||||||
--
|
--
|
||||||
2.7.2
|
2.7.3
|
||||||
|
|
In neuem Issue referenzieren
Einen Benutzer sperren