Guard the Entity.SHARED_RANDOM from seed changes

I don't clearly see any, but as a protection for future changes.
This commit is contained in:
Aikar 2018-07-21 09:03:10 -04:00
parent fa8406dab4
commit 82bcd1408a
No known key found for this signature in database
GPG Key ID: 401ADFC9891FAAFE
13 changed files with 61 additions and 48 deletions

View File

@ -1,4 +1,4 @@
From 95dfc2d6b2593ea2603bc30932824b855b8bb672 Mon Sep 17 00:00:00 2001 From 077011a996a7c44bb7ec934b0e46aaf16725f121 Mon Sep 17 00:00:00 2001
From: Aikar <aikar@aikar.co> From: Aikar <aikar@aikar.co>
Date: Tue, 22 Mar 2016 00:33:47 -0400 Date: Tue, 22 Mar 2016 00:33:47 -0400
Subject: [PATCH] Use a Shared Random for Entities Subject: [PATCH] Use a Shared Random for Entities
@ -6,18 +6,31 @@ Subject: [PATCH] Use a Shared Random for Entities
Reduces memory usage and provides ensures more randomness, Especially since a lot of garbage entity objects get created. Reduces memory usage and provides ensures more randomness, Especially since a lot of garbage entity objects get created.
diff --git a/src/main/java/net/minecraft/server/Entity.java b/src/main/java/net/minecraft/server/Entity.java diff --git a/src/main/java/net/minecraft/server/Entity.java b/src/main/java/net/minecraft/server/Entity.java
index b4ad611fc..4a08db5ba 100644 index f547dbfd0..daf97bce3 100644
--- a/src/main/java/net/minecraft/server/Entity.java --- a/src/main/java/net/minecraft/server/Entity.java
+++ b/src/main/java/net/minecraft/server/Entity.java +++ b/src/main/java/net/minecraft/server/Entity.java
@@ -46,6 +46,7 @@ public abstract class Entity implements ICommandListener, KeyedObject { // Paper @@ -46,6 +46,20 @@ public abstract class Entity implements ICommandListener, KeyedObject { // Paper
// CraftBukkit start // CraftBukkit start
private static final int CURRENT_LEVEL = 2; private static final int CURRENT_LEVEL = 2;
+ public static Random SHARED_RANDOM = new Random(); // Paper + // Paper start
+ public static Random SHARED_RANDOM = new Random() {
+ private boolean locked = false;
+ @Override
+ public synchronized void setSeed(long seed) {
+ if (locked) {
+ LogManager.getLogger().error("Ignoring setSeed on Entity.SHARED_RANDOM", new Throwable());
+ } else {
+ super.setSeed(seed);
+ locked = true;
+ }
+ }
+ };
+ // Paper end
static boolean isLevelAtLeast(NBTTagCompound tag, int level) { static boolean isLevelAtLeast(NBTTagCompound tag, int level) {
return tag.hasKey("Bukkit.updateLevel") && tag.getInt("Bukkit.updateLevel") >= level; return tag.hasKey("Bukkit.updateLevel") && tag.getInt("Bukkit.updateLevel") >= level;
} }
@@ -171,7 +172,7 @@ public abstract class Entity implements ICommandListener, KeyedObject { // Paper @@ -171,7 +185,7 @@ public abstract class Entity implements ICommandListener, KeyedObject { // Paper
this.length = 1.8F; this.length = 1.8F;
this.ax = 1; this.ax = 1;
this.ay = 1.0F; this.ay = 1.0F;

View File

@ -1,4 +1,4 @@
From d24cf71aec74d0f22ad259e435ccbce611139fed Mon Sep 17 00:00:00 2001 From 3faa48aebbc50348a1c69b43c8f4be1f0d8d78e8 Mon Sep 17 00:00:00 2001
From: Aikar <aikar@aikar.co> From: Aikar <aikar@aikar.co>
Date: Tue, 22 Mar 2016 00:55:23 -0400 Date: Tue, 22 Mar 2016 00:55:23 -0400
Subject: [PATCH] Don't teleport dead entities Subject: [PATCH] Don't teleport dead entities
@ -7,10 +7,10 @@ Had some issue with this in past, and this is the vanilla logic.
Potentially an old CB change that's no longer needed. Potentially an old CB change that's no longer needed.
diff --git a/src/main/java/net/minecraft/server/Entity.java b/src/main/java/net/minecraft/server/Entity.java diff --git a/src/main/java/net/minecraft/server/Entity.java b/src/main/java/net/minecraft/server/Entity.java
index eb07d4233..e2202ed0c 100644 index daf97bce3..87b82f908 100644
--- a/src/main/java/net/minecraft/server/Entity.java --- a/src/main/java/net/minecraft/server/Entity.java
+++ b/src/main/java/net/minecraft/server/Entity.java +++ b/src/main/java/net/minecraft/server/Entity.java
@@ -2399,7 +2399,7 @@ public abstract class Entity implements ICommandListener, KeyedObject { // Paper @@ -2412,7 +2412,7 @@ public abstract class Entity implements ICommandListener, KeyedObject { // Paper
} }
public Entity teleportTo(Location exit, boolean portal) { public Entity teleportTo(Location exit, boolean portal) {

View File

@ -1,4 +1,4 @@
From 90ca9d579f3d73834d58123205d8db9cfe179b56 Mon Sep 17 00:00:00 2001 From 0f917b2215537ad0e4c08b4c4add7ad3bdec07c7 Mon Sep 17 00:00:00 2001
From: Zach Brown <zach.brown@destroystokyo.com> From: Zach Brown <zach.brown@destroystokyo.com>
Date: Wed, 6 Apr 2016 01:04:23 -0500 Date: Wed, 6 Apr 2016 01:04:23 -0500
Subject: [PATCH] Option to use vanilla per-world scoreboard coloring on names Subject: [PATCH] Option to use vanilla per-world scoreboard coloring on names
@ -19,10 +19,10 @@ index abc1aabdd..6ea608ba9 100644
+ } + }
} }
diff --git a/src/main/java/net/minecraft/server/Entity.java b/src/main/java/net/minecraft/server/Entity.java diff --git a/src/main/java/net/minecraft/server/Entity.java b/src/main/java/net/minecraft/server/Entity.java
index e2202ed0c..88faa4601 100644 index 87b82f908..fa9319aff 100644
--- a/src/main/java/net/minecraft/server/Entity.java --- a/src/main/java/net/minecraft/server/Entity.java
+++ b/src/main/java/net/minecraft/server/Entity.java +++ b/src/main/java/net/minecraft/server/Entity.java
@@ -2122,6 +2122,7 @@ public abstract class Entity implements ICommandListener, KeyedObject { // Paper @@ -2135,6 +2135,7 @@ public abstract class Entity implements ICommandListener, KeyedObject { // Paper
return this.getFlag(5); return this.getFlag(5);
} }

View File

@ -1,14 +1,14 @@
From eb11e43a94909435f4ce4020d2eded1eb0b8cdb1 Mon Sep 17 00:00:00 2001 From 59d26d28500f04c9cced47dc4c99d71fc7efb7e5 Mon Sep 17 00:00:00 2001
From: Zach Brown <zach.brown@destroystokyo.com> From: Zach Brown <zach.brown@destroystokyo.com>
Date: Fri, 22 Apr 2016 18:20:05 -0500 Date: Fri, 22 Apr 2016 18:20:05 -0500
Subject: [PATCH] Vehicle Event Cancellation Changes Subject: [PATCH] Vehicle Event Cancellation Changes
diff --git a/src/main/java/net/minecraft/server/Entity.java b/src/main/java/net/minecraft/server/Entity.java diff --git a/src/main/java/net/minecraft/server/Entity.java b/src/main/java/net/minecraft/server/Entity.java
index 88faa4601..aece54d26 100644 index fa9319aff..a3e9ee052 100644
--- a/src/main/java/net/minecraft/server/Entity.java --- a/src/main/java/net/minecraft/server/Entity.java
+++ b/src/main/java/net/minecraft/server/Entity.java +++ b/src/main/java/net/minecraft/server/Entity.java
@@ -70,7 +70,7 @@ public abstract class Entity implements ICommandListener, KeyedObject { // Paper @@ -83,7 +83,7 @@ public abstract class Entity implements ICommandListener, KeyedObject { // Paper
public boolean i; public boolean i;
public final List<Entity> passengers; public final List<Entity> passengers;
protected int j; protected int j;
@ -17,7 +17,7 @@ index 88faa4601..aece54d26 100644
public boolean attachedToPlayer; public boolean attachedToPlayer;
public World world; public World world;
public double lastX; public double lastX;
@@ -2004,6 +2004,7 @@ public abstract class Entity implements ICommandListener, KeyedObject { // Paper @@ -2017,6 +2017,7 @@ public abstract class Entity implements ICommandListener, KeyedObject { // Paper
throw new IllegalStateException("Use x.stopRiding(y), not y.removePassenger(x)"); throw new IllegalStateException("Use x.stopRiding(y), not y.removePassenger(x)");
} else { } else {
// CraftBukkit start // CraftBukkit start
@ -25,7 +25,7 @@ index 88faa4601..aece54d26 100644
CraftEntity craft = (CraftEntity) entity.getBukkitEntity().getVehicle(); CraftEntity craft = (CraftEntity) entity.getBukkitEntity().getVehicle();
Entity orig = craft == null ? null : craft.getHandle(); Entity orig = craft == null ? null : craft.getHandle();
if (getBukkitEntity() instanceof Vehicle && entity.getBukkitEntity() instanceof LivingEntity) { if (getBukkitEntity() instanceof Vehicle && entity.getBukkitEntity() instanceof LivingEntity) {
@@ -2019,7 +2020,13 @@ public abstract class Entity implements ICommandListener, KeyedObject { // Paper @@ -2032,7 +2033,13 @@ public abstract class Entity implements ICommandListener, KeyedObject { // Paper
} }
} }
// CraftBukkit end // CraftBukkit end

View File

@ -1,4 +1,4 @@
From 2c29fda252395dc3caf19e77deea3ef876473ace Mon Sep 17 00:00:00 2001 From 76366b2e02fbcffccddaec97bd494277c0d92d55 Mon Sep 17 00:00:00 2001
From: Aikar <aikar@aikar.co> From: Aikar <aikar@aikar.co>
Date: Mon, 17 Jun 2013 01:24:00 -0400 Date: Mon, 17 Jun 2013 01:24:00 -0400
Subject: [PATCH] Entity Tracking Improvements Subject: [PATCH] Entity Tracking Improvements
@ -7,10 +7,10 @@ If any part of a Vehicle/Passenger relationship is visible to a player,
send all passenger/vehicles to the player in the chain. send all passenger/vehicles to the player in the chain.
diff --git a/src/main/java/net/minecraft/server/Entity.java b/src/main/java/net/minecraft/server/Entity.java diff --git a/src/main/java/net/minecraft/server/Entity.java b/src/main/java/net/minecraft/server/Entity.java
index d1f07bbbd..945f06c93 100644 index a3e9ee052..9b01c23e0 100644
--- a/src/main/java/net/minecraft/server/Entity.java --- a/src/main/java/net/minecraft/server/Entity.java
+++ b/src/main/java/net/minecraft/server/Entity.java +++ b/src/main/java/net/minecraft/server/Entity.java
@@ -53,6 +53,7 @@ public abstract class Entity implements ICommandListener, KeyedObject { // Paper @@ -66,6 +66,7 @@ public abstract class Entity implements ICommandListener, KeyedObject { // Paper
protected CraftEntity bukkitEntity; protected CraftEntity bukkitEntity;

View File

@ -1,4 +1,4 @@
From d45df5fa649ad40f1cb1057bc29f5f23aed74c96 Mon Sep 17 00:00:00 2001 From 036e57626907e289a1c0a842460a9bac8da4e5d3 Mon Sep 17 00:00:00 2001
From: Zach Brown <zach.brown@destroystokyo.com> From: Zach Brown <zach.brown@destroystokyo.com>
Date: Sun, 22 May 2016 20:20:55 -0500 Date: Sun, 22 May 2016 20:20:55 -0500
Subject: [PATCH] Optional TNT doesn't move in water Subject: [PATCH] Optional TNT doesn't move in water
@ -32,10 +32,10 @@ index 067cb233e..06acdaaf0 100644
+ } + }
} }
diff --git a/src/main/java/net/minecraft/server/Entity.java b/src/main/java/net/minecraft/server/Entity.java diff --git a/src/main/java/net/minecraft/server/Entity.java b/src/main/java/net/minecraft/server/Entity.java
index c105dd9b0..334441ed7 100644 index 9b01c23e0..0a62ebf4a 100644
--- a/src/main/java/net/minecraft/server/Entity.java --- a/src/main/java/net/minecraft/server/Entity.java
+++ b/src/main/java/net/minecraft/server/Entity.java +++ b/src/main/java/net/minecraft/server/Entity.java
@@ -1114,6 +1114,11 @@ public abstract class Entity implements ICommandListener, KeyedObject { // Paper @@ -1127,6 +1127,11 @@ public abstract class Entity implements ICommandListener, KeyedObject { // Paper
} }
public boolean aq() { public boolean aq() {
@ -47,7 +47,7 @@ index c105dd9b0..334441ed7 100644
if (this.bJ() instanceof EntityBoat) { if (this.bJ() instanceof EntityBoat) {
this.inWater = false; this.inWater = false;
} else if (this.world.a(this.getBoundingBox().grow(0.0D, -0.4000000059604645D, 0.0D).shrink(0.001D), Material.WATER, this)) { } else if (this.world.a(this.getBoundingBox().grow(0.0D, -0.4000000059604645D, 0.0D).shrink(0.001D), Material.WATER, this)) {
@@ -2587,6 +2592,11 @@ public abstract class Entity implements ICommandListener, KeyedObject { // Paper @@ -2600,6 +2605,11 @@ public abstract class Entity implements ICommandListener, KeyedObject { // Paper
} }
public boolean bo() { public boolean bo() {

View File

@ -1,4 +1,4 @@
From b882250f89918c9a9e256def49d0d5b92d7e8916 Mon Sep 17 00:00:00 2001 From 85cc2d8515551c826977868bf3c68b1d78cccead Mon Sep 17 00:00:00 2001
From: Techcable <Techcable@outlook.com> From: Techcable <Techcable@outlook.com>
Date: Sat, 18 Jun 2016 01:01:37 -0500 Date: Sat, 18 Jun 2016 01:01:37 -0500
Subject: [PATCH] Make entities look for hoppers Subject: [PATCH] Make entities look for hoppers
@ -133,10 +133,10 @@ index 008ed206d..b3c1f550c 100644
this.b = i; this.b = i;
this.c = j; this.c = j;
diff --git a/src/main/java/net/minecraft/server/Entity.java b/src/main/java/net/minecraft/server/Entity.java diff --git a/src/main/java/net/minecraft/server/Entity.java b/src/main/java/net/minecraft/server/Entity.java
index cb9ef622c..c675a6e16 100644 index 0a62ebf4a..0950c315f 100644
--- a/src/main/java/net/minecraft/server/Entity.java --- a/src/main/java/net/minecraft/server/Entity.java
+++ b/src/main/java/net/minecraft/server/Entity.java +++ b/src/main/java/net/minecraft/server/Entity.java
@@ -80,6 +80,19 @@ public abstract class Entity implements ICommandListener, KeyedObject { // Paper @@ -93,6 +93,19 @@ public abstract class Entity implements ICommandListener, KeyedObject { // Paper
public double locX; public double locX;
public double locY; public double locY;
public double locZ; public double locZ;

View File

@ -1,14 +1,14 @@
From 5f57f26f976b45cda5fcda4dffebc4981d748109 Mon Sep 17 00:00:00 2001 From e04b0035798d951d1068d1625eda2fb758a34404 Mon Sep 17 00:00:00 2001
From: Zach Brown <zach.brown@destroystokyo.com> From: Zach Brown <zach.brown@destroystokyo.com>
Date: Fri, 16 Dec 2016 16:03:19 -0600 Date: Fri, 16 Dec 2016 16:03:19 -0600
Subject: [PATCH] Don't let fishinghooks use portals Subject: [PATCH] Don't let fishinghooks use portals
diff --git a/src/main/java/net/minecraft/server/Entity.java b/src/main/java/net/minecraft/server/Entity.java diff --git a/src/main/java/net/minecraft/server/Entity.java b/src/main/java/net/minecraft/server/Entity.java
index c675a6e16..f71528b5f 100644 index 0950c315f..d79844a98 100644
--- a/src/main/java/net/minecraft/server/Entity.java --- a/src/main/java/net/minecraft/server/Entity.java
+++ b/src/main/java/net/minecraft/server/Entity.java +++ b/src/main/java/net/minecraft/server/Entity.java
@@ -144,7 +144,7 @@ public abstract class Entity implements ICommandListener, KeyedObject { // Paper @@ -157,7 +157,7 @@ public abstract class Entity implements ICommandListener, KeyedObject { // Paper
public boolean ah; public boolean ah;
public boolean impulse; public boolean impulse;
public int portalCooldown; public int portalCooldown;

View File

@ -1,14 +1,14 @@
From 570c45e9491173c215cae1bd4ff5ff9b9b8b1fa0 Mon Sep 17 00:00:00 2001 From 6c9aa29b50e035dc386794e866d64ec07c4c9c19 Mon Sep 17 00:00:00 2001
From: Zach Brown <zach.brown@destroystokyo.com> From: Zach Brown <zach.brown@destroystokyo.com>
Date: Fri, 16 Dec 2016 22:10:35 -0600 Date: Fri, 16 Dec 2016 22:10:35 -0600
Subject: [PATCH] Vanished players don't have rights Subject: [PATCH] Vanished players don't have rights
diff --git a/src/main/java/net/minecraft/server/Entity.java b/src/main/java/net/minecraft/server/Entity.java diff --git a/src/main/java/net/minecraft/server/Entity.java b/src/main/java/net/minecraft/server/Entity.java
index f71528b5f..b13830e87 100644 index d79844a98..6d1e61e23 100644
--- a/src/main/java/net/minecraft/server/Entity.java --- a/src/main/java/net/minecraft/server/Entity.java
+++ b/src/main/java/net/minecraft/server/Entity.java +++ b/src/main/java/net/minecraft/server/Entity.java
@@ -68,7 +68,7 @@ public abstract class Entity implements ICommandListener, KeyedObject { // Paper @@ -81,7 +81,7 @@ public abstract class Entity implements ICommandListener, KeyedObject { // Paper
private static double f = 1.0D; private static double f = 1.0D;
private static int entityCount; private static int entityCount;
private int id; private int id;

View File

@ -1,14 +1,14 @@
From 977e13e598af25e22f19ad88220a047723a12193 Mon Sep 17 00:00:00 2001 From 512e2cf16911c2f07c0c5b763d4b56b1788344fb Mon Sep 17 00:00:00 2001
From: Alfie Cleveland <alfeh@me.com> From: Alfie Cleveland <alfeh@me.com>
Date: Sun, 8 Jan 2017 04:31:36 +0000 Date: Sun, 8 Jan 2017 04:31:36 +0000
Subject: [PATCH] Don't allow entities to ride themselves - #572 Subject: [PATCH] Don't allow entities to ride themselves - #572
diff --git a/src/main/java/net/minecraft/server/Entity.java b/src/main/java/net/minecraft/server/Entity.java diff --git a/src/main/java/net/minecraft/server/Entity.java b/src/main/java/net/minecraft/server/Entity.java
index b6711dcfa..e7f63c927 100644 index 6d1e61e23..92b2bcb86 100644
--- a/src/main/java/net/minecraft/server/Entity.java --- a/src/main/java/net/minecraft/server/Entity.java
+++ b/src/main/java/net/minecraft/server/Entity.java +++ b/src/main/java/net/minecraft/server/Entity.java
@@ -1981,6 +1981,7 @@ public abstract class Entity implements ICommandListener, KeyedObject { // Paper @@ -1994,6 +1994,7 @@ public abstract class Entity implements ICommandListener, KeyedObject { // Paper
} }
protected void o(Entity entity) { protected void o(Entity entity) {

View File

@ -1,4 +1,4 @@
From a30098615015d5b407960dfe74033d7545d7eb12 Mon Sep 17 00:00:00 2001 From 1ffe7e986e130686ef5b48ac41b63296f77b4e9c Mon Sep 17 00:00:00 2001
From: Aikar <aikar@aikar.co> From: Aikar <aikar@aikar.co>
Date: Sun, 22 Jan 2017 18:07:56 -0500 Date: Sun, 22 Jan 2017 18:07:56 -0500
Subject: [PATCH] Cap Entity Collisions Subject: [PATCH] Cap Entity Collisions
@ -27,10 +27,10 @@ index 5f06d4e5e..29b4bdb47 100644
+ } + }
} }
diff --git a/src/main/java/net/minecraft/server/Entity.java b/src/main/java/net/minecraft/server/Entity.java diff --git a/src/main/java/net/minecraft/server/Entity.java b/src/main/java/net/minecraft/server/Entity.java
index 20324deeb..b4233df5f 100644 index 92b2bcb86..5a4de30fe 100644
--- a/src/main/java/net/minecraft/server/Entity.java --- a/src/main/java/net/minecraft/server/Entity.java
+++ b/src/main/java/net/minecraft/server/Entity.java +++ b/src/main/java/net/minecraft/server/Entity.java
@@ -170,6 +170,7 @@ public abstract class Entity implements ICommandListener, KeyedObject { // Paper @@ -183,6 +183,7 @@ public abstract class Entity implements ICommandListener, KeyedObject { // Paper
public final boolean defaultActivationState; public final boolean defaultActivationState;
public long activatedTick = Integer.MIN_VALUE; public long activatedTick = Integer.MIN_VALUE;
public boolean fromMobSpawner; public boolean fromMobSpawner;

View File

@ -1,14 +1,14 @@
From 57ed55129a54deecee7292fd00036b45ac0bd6ed Mon Sep 17 00:00:00 2001 From 69193e9240f2c55715208ca6341f085a2b1cabca Mon Sep 17 00:00:00 2001
From: BillyGalbreath <Blake.Galbreath@GMail.com> From: BillyGalbreath <Blake.Galbreath@GMail.com>
Date: Sun, 18 Jun 2017 18:17:05 -0500 Date: Sun, 18 Jun 2017 18:17:05 -0500
Subject: [PATCH] Entity#fromMobSpawner() Subject: [PATCH] Entity#fromMobSpawner()
diff --git a/src/main/java/net/minecraft/server/Entity.java b/src/main/java/net/minecraft/server/Entity.java diff --git a/src/main/java/net/minecraft/server/Entity.java b/src/main/java/net/minecraft/server/Entity.java
index b4233df5f..00791faf2 100644 index 5a4de30fe..2dbb88f2d 100644
--- a/src/main/java/net/minecraft/server/Entity.java --- a/src/main/java/net/minecraft/server/Entity.java
+++ b/src/main/java/net/minecraft/server/Entity.java +++ b/src/main/java/net/minecraft/server/Entity.java
@@ -170,6 +170,7 @@ public abstract class Entity implements ICommandListener, KeyedObject { // Paper @@ -183,6 +183,7 @@ public abstract class Entity implements ICommandListener, KeyedObject { // Paper
public final boolean defaultActivationState; public final boolean defaultActivationState;
public long activatedTick = Integer.MIN_VALUE; public long activatedTick = Integer.MIN_VALUE;
public boolean fromMobSpawner; public boolean fromMobSpawner;
@ -16,7 +16,7 @@ index b4233df5f..00791faf2 100644
protected int numCollisions = 0; // Paper protected int numCollisions = 0; // Paper
public void inactiveTick() { } public void inactiveTick() { }
// Spigot end // Spigot end
@@ -1590,6 +1591,10 @@ public abstract class Entity implements ICommandListener, KeyedObject { // Paper @@ -1603,6 +1604,10 @@ public abstract class Entity implements ICommandListener, KeyedObject { // Paper
if (origin != null) { if (origin != null) {
nbttagcompound.set("Paper.Origin", this.createList(origin.getX(), origin.getY(), origin.getZ())); nbttagcompound.set("Paper.Origin", this.createList(origin.getX(), origin.getY(), origin.getZ()));
} }
@ -27,7 +27,7 @@ index b4233df5f..00791faf2 100644
// Paper end // Paper end
return nbttagcompound; return nbttagcompound;
} catch (Throwable throwable) { } catch (Throwable throwable) {
@@ -1739,6 +1744,8 @@ public abstract class Entity implements ICommandListener, KeyedObject { // Paper @@ -1752,6 +1757,8 @@ public abstract class Entity implements ICommandListener, KeyedObject { // Paper
if (!originTag.isEmpty()) { if (!originTag.isEmpty()) {
origin = new Location(world.getWorld(), originTag.getDoubleAt(0), originTag.getDoubleAt(1), originTag.getDoubleAt(2)); origin = new Location(world.getWorld(), originTag.getDoubleAt(0), originTag.getDoubleAt(1), originTag.getDoubleAt(2));
} }

View File

@ -1,4 +1,4 @@
From b770be1d1eb24d049cd7ca1af1a96bb87aed62e3 Mon Sep 17 00:00:00 2001 From 11c4b454e2dca08dc7d8823bf7d533e20d67c7ef Mon Sep 17 00:00:00 2001
From: Aikar <aikar@aikar.co> From: Aikar <aikar@aikar.co>
Date: Sun, 10 Jun 2018 20:04:42 -0400 Date: Sun, 10 Jun 2018 20:04:42 -0400
Subject: [PATCH] Properly remove entities on dimension teleport Subject: [PATCH] Properly remove entities on dimension teleport
@ -22,10 +22,10 @@ requirement, but plugins (such as my own) use this method to
trigger a "reload" of the entity on the client. trigger a "reload" of the entity on the client.
diff --git a/src/main/java/net/minecraft/server/Entity.java b/src/main/java/net/minecraft/server/Entity.java diff --git a/src/main/java/net/minecraft/server/Entity.java b/src/main/java/net/minecraft/server/Entity.java
index 7b17c32bb..d03e7c24f 100644 index 2dbb88f2d..80ecdb282 100644
--- a/src/main/java/net/minecraft/server/Entity.java --- a/src/main/java/net/minecraft/server/Entity.java
+++ b/src/main/java/net/minecraft/server/Entity.java +++ b/src/main/java/net/minecraft/server/Entity.java
@@ -2449,7 +2449,7 @@ public abstract class Entity implements ICommandListener, KeyedObject { // Paper @@ -2462,7 +2462,7 @@ public abstract class Entity implements ICommandListener, KeyedObject { // Paper
} }
// CraftBukkit end */ // CraftBukkit end */
@ -35,14 +35,14 @@ index 7b17c32bb..d03e7c24f 100644
this.world.methodProfiler.a("reposition"); this.world.methodProfiler.a("reposition");
/* CraftBukkit start - Handled in calculateTarget /* CraftBukkit start - Handled in calculateTarget
diff --git a/src/main/java/net/minecraft/server/WorldServer.java b/src/main/java/net/minecraft/server/WorldServer.java diff --git a/src/main/java/net/minecraft/server/WorldServer.java b/src/main/java/net/minecraft/server/WorldServer.java
index 49019d54d..9fe5c4406 100644 index 49019d54d..bba2e164f 100644
--- a/src/main/java/net/minecraft/server/WorldServer.java --- a/src/main/java/net/minecraft/server/WorldServer.java
+++ b/src/main/java/net/minecraft/server/WorldServer.java +++ b/src/main/java/net/minecraft/server/WorldServer.java
@@ -1205,6 +1205,7 @@ public class WorldServer extends World implements IAsyncTaskHandler { @@ -1205,6 +1205,7 @@ public class WorldServer extends World implements IAsyncTaskHandler {
} }
protected void c(Entity entity) { protected void c(Entity entity) {
+ if (!entity.valid) return; // Paper - Already removed, dont fire twice - this looks like it can happen even without our changes + if (!this.entitiesByUUID.containsKey(entity.getUniqueID()) && !entity.valid) return; // Paper - Already removed, dont fire twice - this looks like it can happen even without our changes
super.c(entity); super.c(entity);
this.entitiesById.d(entity.getId()); this.entitiesById.d(entity.getId());
this.entitiesByUUID.remove(entity.getUniqueID()); this.entitiesByUUID.remove(entity.getUniqueID());