Rebuild patches for upstream merge

This commit is contained in:
Aikar 2018-07-21 16:43:00 -04:00
parent 6b63a88df0
commit 1d28f62522
No known key found for this signature in database
GPG key ID: 401ADFC9891FAAFE
19 changed files with 114 additions and 121 deletions

View file

@ -1,4 +1,4 @@
From 39039bfaab07bf1d1c0eec274aac6a6187a8781b Mon Sep 17 00:00:00 2001
From ce7ffaa9f437f871b1c1b87d5f22b482e25e9edc 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
@ -6,7 +6,7 @@ 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.
diff --git a/src/main/java/net/minecraft/server/Entity.java b/src/main/java/net/minecraft/server/Entity.java
index e16579116..c0367df20 100644
index e16579116..56aa89b45 100644
--- a/src/main/java/net/minecraft/server/Entity.java
+++ b/src/main/java/net/minecraft/server/Entity.java
@@ -50,6 +50,20 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
@ -30,7 +30,7 @@ index e16579116..c0367df20 100644
static boolean isLevelAtLeast(NBTTagCompound tag, int level) {
return tag.hasKey("Bukkit.updateLevel") && tag.getInt("Bukkit.updateLevel") >= level;
}
@@ -182,7 +183,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
@@ -182,7 +196,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
this.length = 1.8F;
this.aA = 1.0F;
this.aB = 1.0F;

View file

@ -1,4 +1,4 @@
From 22bc88a7734d7cd8f0e59448076b9f781b60cc59 Mon Sep 17 00:00:00 2001
From 66f0b458722d01614e1ecb8a82d09a92e4f5864a 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
@ -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.
diff --git a/src/main/java/net/minecraft/server/Entity.java b/src/main/java/net/minecraft/server/Entity.java
index c0367df20..c37c46e71 100644
index 56aa89b45..f98f93c5c 100644
--- a/src/main/java/net/minecraft/server/Entity.java
+++ b/src/main/java/net/minecraft/server/Entity.java
@@ -2556,7 +2556,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
@@ -2569,7 +2569,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
}
public Entity teleportTo(Location exit, boolean portal) {

View file

@ -1,4 +1,4 @@
From 9cfa1f4bdd459c8f829f60b971a5af65fb5ecb0c Mon Sep 17 00:00:00 2001
From 95364b7e710394eda68ea6d81a7691c02b21907f 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
@ -19,10 +19,10 @@ index 6ac58e5ec..ff9929a05 100644
+ }
}
diff --git a/src/main/java/net/minecraft/server/Entity.java b/src/main/java/net/minecraft/server/Entity.java
index c37c46e71..88092d823 100644
index f98f93c5c..31c580de1 100644
--- a/src/main/java/net/minecraft/server/Entity.java
+++ b/src/main/java/net/minecraft/server/Entity.java
@@ -2251,6 +2251,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
@@ -2264,6 +2264,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
return this.getFlag(5);
}

View file

@ -1,14 +1,14 @@
From 3813dcf8105186f2ad6b22b3e3c8e129656c6dbb Mon Sep 17 00:00:00 2001
From 173ce5b19ace1cc6316fe318b79cc36ee2c207d5 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
diff --git a/src/main/java/net/minecraft/server/Entity.java b/src/main/java/net/minecraft/server/Entity.java
index 88092d823..9af242380 100644
index 31c580de1..16d521dfd 100644
--- a/src/main/java/net/minecraft/server/Entity.java
+++ b/src/main/java/net/minecraft/server/Entity.java
@@ -80,7 +80,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
@@ -93,7 +93,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
public boolean j;
public final List<Entity> passengers;
protected int k;
@ -17,7 +17,7 @@ index 88092d823..9af242380 100644
public boolean attachedToPlayer;
public World world;
public double lastX;
@@ -2110,6 +2110,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
@@ -2123,6 +2123,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
throw new IllegalStateException("Use x.stopRiding(y), not y.removePassenger(x)");
} else {
// CraftBukkit start
@ -25,7 +25,7 @@ index 88092d823..9af242380 100644
CraftEntity craft = (CraftEntity) entity.getBukkitEntity().getVehicle();
Entity orig = craft == null ? null : craft.getHandle();
if (getBukkitEntity() instanceof Vehicle && entity.getBukkitEntity() instanceof LivingEntity) {
@@ -2125,7 +2126,13 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
@@ -2138,7 +2139,13 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
}
}
// CraftBukkit end

View file

@ -1,4 +1,4 @@
From be50c643cdcb8dc000e4a1bc88c37232418fbd0d Mon Sep 17 00:00:00 2001
From dde88036ee16b61e39407d75420102c714842eef 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
@ -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.
diff --git a/src/main/java/net/minecraft/server/Entity.java b/src/main/java/net/minecraft/server/Entity.java
index 9af242380..70694c8e5 100644
index 16d521dfd..dd4ac4bfe 100644
--- a/src/main/java/net/minecraft/server/Entity.java
+++ b/src/main/java/net/minecraft/server/Entity.java
@@ -57,6 +57,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
@@ -70,6 +70,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
protected CraftEntity bukkitEntity;

View file

@ -1,4 +1,4 @@
From 4a54757b19677e73932cc2db44dd47a907d8f82b Mon Sep 17 00:00:00 2001
From 66110221d713089a4bd59d79a17a4b8f6100f015 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 TNT doesn't move in water
@ -32,10 +32,10 @@ index 38de48ebc..321da3be3 100644
+ }
}
diff --git a/src/main/java/net/minecraft/server/Entity.java b/src/main/java/net/minecraft/server/Entity.java
index 70694c8e5..51b42933d 100644
index dd4ac4bfe..34c617958 100644
--- a/src/main/java/net/minecraft/server/Entity.java
+++ b/src/main/java/net/minecraft/server/Entity.java
@@ -1182,6 +1182,12 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
@@ -1195,6 +1195,12 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
}
public boolean aq() {
@ -48,7 +48,7 @@ index 70694c8e5..51b42933d 100644
return this.isInWater() || this.q();
}
@@ -2724,6 +2730,11 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
@@ -2737,6 +2743,11 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
}
public boolean bw() {

View file

@ -1,14 +1,14 @@
From cfd9c680af983aa5d1f25a5dc51d505beaa229be Mon Sep 17 00:00:00 2001
From 3b917e4772c474dd49cf79fb2fcc46cbddf928bf Mon Sep 17 00:00:00 2001
From: Zach Brown <zach.brown@destroystokyo.com>
Date: Fri, 16 Dec 2016 16:03:19 -0600
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
index 51b42933d..eb2a693af 100644
index 34c617958..c7ef67a52 100644
--- a/src/main/java/net/minecraft/server/Entity.java
+++ b/src/main/java/net/minecraft/server/Entity.java
@@ -143,7 +143,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
@@ -156,7 +156,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
public boolean ak;
public boolean impulse;
public int portalCooldown;

View file

@ -1,14 +1,14 @@
From 9998cb5e703231aa7a957c741909a28c120e59dd Mon Sep 17 00:00:00 2001
From ed67deba02ff56017e9557fc956c66b39cf8c645 Mon Sep 17 00:00:00 2001
From: Alfie Cleveland <alfeh@me.com>
Date: Sun, 8 Jan 2017 04:31:36 +0000
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
index eb2a693af..b47bf9738 100644
index c7ef67a52..4bfc49076 100644
--- a/src/main/java/net/minecraft/server/Entity.java
+++ b/src/main/java/net/minecraft/server/Entity.java
@@ -2075,6 +2075,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
@@ -2088,6 +2088,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
}
protected void o(Entity entity) {
@ -17,5 +17,5 @@ index eb2a693af..b47bf9738 100644
throw new IllegalStateException("Use x.startRiding(y), not y.addPassenger(x)");
} else {
--
2.17.1
2.18.0

View file

@ -1,4 +1,4 @@
From 6dcddbc648362d5b4fa1548043beacd6596d15d7 Mon Sep 17 00:00:00 2001
From a831d40bdd5ca262053ca1c02870cc533a90a306 Mon Sep 17 00:00:00 2001
From: Aikar <aikar@aikar.co>
Date: Sun, 22 Jan 2017 18:07:56 -0500
Subject: [PATCH] Cap Entity Collisions
@ -27,10 +27,10 @@ index 5df8b1143..0b748d402 100644
+ }
}
diff --git a/src/main/java/net/minecraft/server/Entity.java b/src/main/java/net/minecraft/server/Entity.java
index b47bf9738..db7e37aee 100644
index 4bfc49076..8a04a801b 100644
--- a/src/main/java/net/minecraft/server/Entity.java
+++ b/src/main/java/net/minecraft/server/Entity.java
@@ -168,6 +168,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
@@ -181,6 +181,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
public final boolean defaultActivationState;
public long activatedTick = Integer.MIN_VALUE;
public boolean fromMobSpawner;

View file

@ -1,14 +1,14 @@
From e199a3a50ef50a8cb6818a7b18871b3dfdac874c Mon Sep 17 00:00:00 2001
From fc4ab62ab798d05629a58a87394aedefd66ed528 Mon Sep 17 00:00:00 2001
From: BillyGalbreath <Blake.Galbreath@GMail.com>
Date: Sun, 18 Jun 2017 18:17:05 -0500
Subject: [PATCH] Entity#fromMobSpawner()
diff --git a/src/main/java/net/minecraft/server/Entity.java b/src/main/java/net/minecraft/server/Entity.java
index db7e37aee..cd1639e26 100644
index 8a04a801b..0d69e6187 100644
--- a/src/main/java/net/minecraft/server/Entity.java
+++ b/src/main/java/net/minecraft/server/Entity.java
@@ -168,6 +168,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
@@ -181,6 +181,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
public final boolean defaultActivationState;
public long activatedTick = Integer.MIN_VALUE;
public boolean fromMobSpawner;
@ -16,7 +16,7 @@ index db7e37aee..cd1639e26 100644
protected int numCollisions = 0; // Paper
public void inactiveTick() { }
// Spigot end
@@ -1658,6 +1659,10 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
@@ -1671,6 +1672,10 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
if (origin != null) {
nbttagcompound.set("Paper.Origin", this.createList(origin.getX(), origin.getY(), origin.getZ()));
}
@ -27,7 +27,7 @@ index db7e37aee..cd1639e26 100644
// Paper end
return nbttagcompound;
} catch (Throwable throwable) {
@@ -1806,6 +1811,8 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
@@ -1819,6 +1824,8 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
if (!originTag.isEmpty()) {
origin = new Location(world.getWorld(), originTag.getDoubleAt(0), originTag.getDoubleAt(1), originTag.getDoubleAt(2));
}

View file

@ -1,4 +1,4 @@
From 014b84371464966ee131a8b52ddf87154e02343e Mon Sep 17 00:00:00 2001
From e8322305c667ce125bb50e00bd4e90c377f5348b Mon Sep 17 00:00:00 2001
From: Aikar <aikar@aikar.co>
Date: Sun, 10 Jun 2018 20:04:42 -0400
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.
diff --git a/src/main/java/net/minecraft/server/Entity.java b/src/main/java/net/minecraft/server/Entity.java
index cd1639e26..ea42800ae 100644
index 0d69e6187..67af3e25c 100644
--- a/src/main/java/net/minecraft/server/Entity.java
+++ b/src/main/java/net/minecraft/server/Entity.java
@@ -2594,7 +2594,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
@@ -2607,7 +2607,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
}
// CraftBukkit end */
@ -35,7 +35,7 @@ index cd1639e26..ea42800ae 100644
this.world.methodProfiler.a("reposition");
/* 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
index 4ac2d39c5..d6d3ffa6f 100644
index 9e3804579..44d867663 100644
--- a/src/main/java/net/minecraft/server/WorldServer.java
+++ b/src/main/java/net/minecraft/server/WorldServer.java
@@ -1025,6 +1025,7 @@ public class WorldServer extends World implements IAsyncTaskHandler {

View file

@ -1,4 +1,4 @@
From d826de1e7aa6bc2cd8e10f847e3617cbc895084e Mon Sep 17 00:00:00 2001
From 0c344c05aeeb72e97f326c21aed89d3fa3ce316d Mon Sep 17 00:00:00 2001
From: Aikar <aikar@aikar.co>
Date: Thu, 19 Jul 2018 01:23:00 -0400
Subject: [PATCH] Don't process despawn if entity is in a chunk scheduled for

View file

@ -1,11 +1,11 @@
From 6e4c3841196ccf68344d2220c4e48186d0028e6f Mon Sep 17 00:00:00 2001
From b2e003731c21eab3980ab9b81ff1cf52b6411e81 Mon Sep 17 00:00:00 2001
From: Hugo Manrique <hugmanrique@gmail.com>
Date: Mon, 16 Jul 2018 12:42:20 +0200
Subject: [PATCH] Avoid item merge if stack size above max stack size
diff --git a/src/main/java/net/minecraft/server/EntityItem.java b/src/main/java/net/minecraft/server/EntityItem.java
index d232bab745..b0f22f8f09 100644
index d232bab74..b0f22f8f0 100644
--- a/src/main/java/net/minecraft/server/EntityItem.java
+++ b/src/main/java/net/minecraft/server/EntityItem.java
@@ -173,6 +173,10 @@ public class EntityItem extends Entity {

View file

@ -1,11 +1,11 @@
From 033fcb77bd332732f270f7a66f42cf2dfb3bc51e Mon Sep 17 00:00:00 2001
From 3136e6f07a5a0626b4855b8be5470e0df089e9c5 Mon Sep 17 00:00:00 2001
From: Minecrell <minecrell@minecrell.net>
Date: Tue, 17 Jul 2018 16:42:17 +0200
Subject: [PATCH] Use asynchronous Log4j 2 loggers
diff --git a/pom.xml b/pom.xml
index 8fd1e36283..0c4b0daf56 100644
index a034c87d6..efa52f356 100644
--- a/pom.xml
+++ b/pom.xml
@@ -103,6 +103,14 @@
@ -25,7 +25,7 @@ index 8fd1e36283..0c4b0daf56 100644
<groupId>junit</groupId>
diff --git a/src/main/resources/log4j2.component.properties b/src/main/resources/log4j2.component.properties
new file mode 100644
index 0000000000..ee7c90784c
index 000000000..ee7c90784
--- /dev/null
+++ b/src/main/resources/log4j2.component.properties
@@ -0,0 +1 @@

View file

@ -0,0 +1,23 @@
From 978703a87b11832ffaecca876f32c3610f67fd56 Mon Sep 17 00:00:00 2001
From: Aikar <aikar@aikar.co>
Date: Thu, 19 Jul 2018 01:13:28 -0400
Subject: [PATCH] add more information to Entity.toString()
UUID, ticks lived, valid, dead
diff --git a/src/main/java/net/minecraft/server/Entity.java b/src/main/java/net/minecraft/server/Entity.java
index 67af3e25c..0e0dc72f0 100644
--- a/src/main/java/net/minecraft/server/Entity.java
+++ b/src/main/java/net/minecraft/server/Entity.java
@@ -2506,7 +2506,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
}
public String toString() {
- return String.format(Locale.ROOT, "%s[\'%s\'/%d, l=\'%s\', x=%.2f, y=%.2f, z=%.2f]", new Object[] { this.getClass().getSimpleName(), this.getDisplayName().getText(), Integer.valueOf(this.id), this.world == null ? "~NULL~" : this.world.getWorldData().getName(), Double.valueOf(this.locX), Double.valueOf(this.locY), Double.valueOf(this.locZ)});
+ return String.format(Locale.ROOT, "%s[\'%s\'/%d, l=\'%s\', x=%.2f, y=%.2f, z=%.2f, cx=%d, cz=%d, tl=%d, v=%b, d=%b]", new Object[] { this.getClass().getSimpleName(), this.getDisplayName().getText(), Integer.valueOf(this.id), this.world == null ? "~NULL~" : this.world.getWorldData().getName(), Double.valueOf(this.locX), Double.valueOf(this.locY), Double.valueOf(this.locZ), getChunkX(), getChunkZ(), this.ticksLived, this.valid, this.dead}); // Paper - add more information
}
public boolean isInvulnerable(DamageSource damagesource) {
--
2.18.0

View file

@ -1,4 +1,4 @@
From b061a231214e88cde43e0c3880f779723828b2b4 Mon Sep 17 00:00:00 2001
From 0318662b299542a2245da28c82d08f5a3455fa69 Mon Sep 17 00:00:00 2001
From: Aikar <aikar@aikar.co>
Date: Sat, 21 Jul 2018 08:25:40 -0400
Subject: [PATCH] Add Debug Entities option to debug dupe uuid issues
@ -6,53 +6,45 @@ Subject: [PATCH] Add Debug Entities option to debug dupe uuid issues
Add -Ddebug.entities=true to your JVM flags to gain more information
diff --git a/src/main/java/net/minecraft/server/Entity.java b/src/main/java/net/minecraft/server/Entity.java
index f6b755863..108654d63 100644
index 0e0dc72f0..d725bf13e 100644
--- a/src/main/java/net/minecraft/server/Entity.java
+++ b/src/main/java/net/minecraft/server/Entity.java
@@ -73,6 +73,7 @@ public abstract class Entity implements ICommandListener, KeyedObject { // Paper
}
return bukkitEntity;
}
+ Throwable addedToWorldStack; // Paper - entity debug
// CraftBukikt end
@@ -71,6 +71,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
protected CraftEntity bukkitEntity;
private static final Logger a = LogManager.getLogger();
EntityTrackerEntry tracker; // Paper
+ Throwable addedToWorldStack; // Paper - entity debug
public CraftEntity getBukkitEntity() {
if (bukkitEntity == null) {
bukkitEntity = CraftEntity.getEntity(world.getServer(), this);
diff --git a/src/main/java/net/minecraft/server/WorldServer.java b/src/main/java/net/minecraft/server/WorldServer.java
index b16324e1a..994d4bbb8 100644
index fcb5f68f8..013f4eef5 100644
--- a/src/main/java/net/minecraft/server/WorldServer.java
+++ b/src/main/java/net/minecraft/server/WorldServer.java
@@ -7,6 +7,7 @@ import com.google.common.util.concurrent.ListenableFuture;
import java.io.File;
import java.util.ArrayList;
import java.util.Collection;
+import java.util.Date;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
@@ -53,6 +54,10 @@ public class WorldServer extends World implements IAsyncTaskHandler {
private final List<NextTickListEntry> W = Lists.newArrayList();
@@ -53,6 +53,10 @@ public class WorldServer extends World implements IAsyncTaskHandler {
private boolean Q;
// CraftBukkit start
+ private static final boolean DEBUG_ENTITIES = Boolean.getBoolean("debug.entities"); // Paper
+ private static Throwable getAddToWorldStackTrace(Entity entity) {
+ return new Throwable(entity + " Added to world at " + new Date());
+ return new Throwable(entity + " Added to world at " + new java.util.Date());
+ }
public final int dimension;
// Add env and gen to constructor
@@ -1160,6 +1165,7 @@ public class WorldServer extends World implements IAsyncTaskHandler {
@@ -980,6 +984,7 @@ public class WorldServer extends World implements IAsyncTaskHandler {
private boolean j(Entity entity) {
if (entity.dead) {
WorldServer.a.warn("Tried to add entity {} but it was marked as removed already", EntityTypes.a(entity)); // CraftBukkit // Paper
WorldServer.a.warn("Tried to add entity {} but it was marked as removed already: " + entity); // CraftBukkit // Paper
+ if (DEBUG_ENTITIES) getAddToWorldStackTrace(entity).printStackTrace();
return false;
} else {
UUID uuid = entity.getUniqueID();
@@ -1171,8 +1177,14 @@ public class WorldServer extends World implements IAsyncTaskHandler {
this.f.remove(entity1);
@@ -991,8 +996,14 @@ public class WorldServer extends World implements IAsyncTaskHandler {
this.g.remove(entity1);
} else {
if (!(entity instanceof EntityHuman)) {
- WorldServer.a.error("Keeping entity {} that already exists with UUID {} - " + entity1, EntityTypes.a(entity1), uuid.toString()); // CraftBukkit // Paper
- WorldServer.a.error("Keeping entity {} that already exists with UUID {} - " + entity1, EntityTypes.getName(entity1.P()), uuid.toString()); // CraftBukkit // Paper
+ WorldServer.a.error("Keeping entity {} that already exists with UUID {}", entity1, uuid.toString()); // CraftBukkit // Paper
WorldServer.a.error("Deleting duplicate entity {}", entity); // Paper
+ if (DEBUG_ENTITIES) {
@ -64,7 +56,7 @@ index b16324e1a..994d4bbb8 100644
return false;
}
@@ -1189,7 +1201,24 @@ public class WorldServer extends World implements IAsyncTaskHandler {
@@ -1009,7 +1020,25 @@ public class WorldServer extends World implements IAsyncTaskHandler {
protected void b(Entity entity) {
super.b(entity);
this.entitiesById.a(entity.getId(), entity);
@ -73,6 +65,7 @@ index b16324e1a..994d4bbb8 100644
+ if (DEBUG_ENTITIES) {
+ entity.addedToWorldStack = getAddToWorldStackTrace(entity);
+ }
+
+ Entity old = this.entitiesByUUID.put(entity.getUniqueID(), entity);
+ if (old != null && old.getId() != entity.getId() && old.valid) {
+ Logger logger = LogManager.getLogger();
@ -87,7 +80,7 @@ index b16324e1a..994d4bbb8 100644
+ }
+ }
+ // Paper end
Entity[] aentity = entity.bb();
Entity[] aentity = entity.bi();
if (aentity != null) {
--

View file

@ -1,4 +1,4 @@
From 9ac674cfb6f5f71dd61a4952c4bc7d88e3cfa3e5 Mon Sep 17 00:00:00 2001
From fec119593dd482c5e813c4b3e343f17cfa6185d9 Mon Sep 17 00:00:00 2001
From: Aikar <aikar@aikar.co>
Date: Sat, 21 Jul 2018 14:23:31 -0400
Subject: [PATCH] Additional Paper Config options
@ -21,10 +21,10 @@ index 62bce1806..5a17ce3d2 100644
if (verbose) {
Bukkit.getLogger().info(s);
diff --git a/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java b/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java
index 50416f40a..14c8edeff 100644
index 692206127..7bd7aa0d9 100644
--- a/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java
+++ b/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java
@@ -11,6 +11,7 @@ import org.bukkit.configuration.file.YamlConfiguration;
@@ -8,6 +8,7 @@ import org.bukkit.configuration.file.YamlConfiguration;
import org.spigotmc.SpigotWorldConfig;
import static com.destroystokyo.paper.PaperConfig.log;

View file

@ -1,4 +1,4 @@
From 2a6d7b5cf9db036928914e854416039d7c8a14af Mon Sep 17 00:00:00 2001
From 728fd7183c4e5a63f03aec4b53bfabb64d62f533 Mon Sep 17 00:00:00 2001
From: Aikar <aikar@aikar.co>
Date: Sat, 21 Jul 2018 14:27:34 -0400
Subject: [PATCH] Duplicate UUID Resolve Option
@ -33,10 +33,10 @@ But for those who are ok with leaving this inconsistent behavior, you may use WA
It is recommended you regenerate the entities, as these were legit entities, and deserve your love.
diff --git a/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java b/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java
index 14c8edeff..e3f6557e1 100644
index 7bd7aa0d9..ba6d5b7ff 100644
--- a/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java
+++ b/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java
@@ -541,4 +541,40 @@ public class PaperWorldConfig {
@@ -430,4 +430,40 @@ public class PaperWorldConfig {
log("Bed Search Radius: " + bedSearchRadius);
}
}
@ -78,7 +78,7 @@ index 14c8edeff..e3f6557e1 100644
+ }
}
diff --git a/src/main/java/net/minecraft/server/Chunk.java b/src/main/java/net/minecraft/server/Chunk.java
index 04adf4e3c..ea9559583 100644
index 03afa1236..1f50004cb 100644
--- a/src/main/java/net/minecraft/server/Chunk.java
+++ b/src/main/java/net/minecraft/server/Chunk.java
@@ -1,5 +1,10 @@
@ -90,17 +90,17 @@ index 04adf4e3c..ea9559583 100644
+import java.util.UUID;
+// Paper end
import com.destroystokyo.paper.exception.ServerInternalException;
import com.google.common.base.Predicate;
import com.google.common.collect.Maps;
@@ -31,6 +36,7 @@ public class Chunk {
import com.google.common.collect.Queues;
@@ -40,6 +45,7 @@ public class Chunk implements IChunkAccess {
public final World world;
public final int[] heightMap;
public final Map<HeightMap.Type, HeightMap> heightMap;
public Long scheduledForUnload; // Paper - delay chunk unloads
+ private static final Logger logger = LogManager.getLogger(); // Paper
public final int locX;
public final int locZ;
private boolean m;
@@ -658,6 +664,7 @@ public class Chunk {
@@ -689,6 +695,7 @@ public class Chunk implements IChunkAccess {
if (i != this.locX || j != this.locZ) {
Chunk.e.warn("Wrong location! ({}, {}) should be ({}, {}), {}", Integer.valueOf(i), Integer.valueOf(j), Integer.valueOf(this.locX), Integer.valueOf(this.locZ), entity);
entity.die();
@ -108,7 +108,7 @@ index 04adf4e3c..ea9559583 100644
}
int k = MathHelper.floor(entity.locY / 16.0D);
@@ -851,6 +858,37 @@ public class Chunk {
@@ -868,6 +875,37 @@ public class Chunk implements IChunkAccess {
for (int j = 0; j < i; ++j) {
List entityslice = aentityslice[j]; // Spigot
@ -147,32 +147,32 @@ index 04adf4e3c..ea9559583 100644
this.world.a((Collection) entityslice);
}
diff --git a/src/main/java/net/minecraft/server/Entity.java b/src/main/java/net/minecraft/server/Entity.java
index 0d3af8cb7..7188d0c99 100644
index d725bf13e..7154692ee 100644
--- a/src/main/java/net/minecraft/server/Entity.java
+++ b/src/main/java/net/minecraft/server/Entity.java
@@ -2614,6 +2614,7 @@ public abstract class Entity implements ICommandListener, KeyedObject { // Paper
@@ -2735,6 +2735,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
});
}
+ public void setUUID(UUID uuid) { a(uuid); } // Paper - OBFHELPER
public void a(UUID uuid) {
this.uniqueID = uuid;
this.ar = this.uniqueID.toString();
this.au = this.uniqueID.toString();
diff --git a/src/main/java/net/minecraft/server/WorldServer.java b/src/main/java/net/minecraft/server/WorldServer.java
index 994d4bbb8..1244baf45 100644
index 013f4eef5..b9d03d801 100644
--- a/src/main/java/net/minecraft/server/WorldServer.java
+++ b/src/main/java/net/minecraft/server/WorldServer.java
@@ -42,7 +42,7 @@ public class WorldServer extends World implements IAsyncTaskHandler {
@@ -40,7 +40,7 @@ public class WorldServer extends World implements IAsyncTaskHandler {
private final MinecraftServer server;
public EntityTracker tracker;
private final PlayerChunkMap manager;
// private final Set<NextTickListEntry> nextTickListHash = Sets.newHashSet();
private final HashTreeSet<NextTickListEntry> nextTickList = new HashTreeSet<NextTickListEntry>(); // CraftBukkit - HashTreeSet
- private final Map<UUID, Entity> entitiesByUUID = Maps.newHashMap();
+ public final Map<UUID, Entity> entitiesByUUID = Maps.newHashMap(); // Paper
public boolean savingDisabled;
private boolean Q;
private boolean K;
private int emptyTime;
@@ -1177,14 +1177,17 @@ public class WorldServer extends World implements IAsyncTaskHandler {
this.f.remove(entity1);
@@ -996,14 +996,17 @@ public class WorldServer extends World implements IAsyncTaskHandler {
this.g.remove(entity1);
} else {
if (!(entity instanceof EntityHuman)) {
- WorldServer.a.error("Keeping entity {} that already exists with UUID {}", entity1, uuid.toString()); // CraftBukkit // Paper
@ -195,9 +195,9 @@ index 994d4bbb8..1244baf45 100644
return false;
}
@@ -1206,7 +1209,7 @@ public class WorldServer extends World implements IAsyncTaskHandler {
entity.addedToWorldStack = getAddToWorldStackTrace(entity);
@@ -1026,7 +1029,7 @@ public class WorldServer extends World implements IAsyncTaskHandler {
}
Entity old = this.entitiesByUUID.put(entity.getUniqueID(), entity);
- if (old != null && old.getId() != entity.getId() && old.valid) {
+ if (old != null && old.getId() != entity.getId() && old.valid && entity.world.paperConfig.duplicateUUIDMode != com.destroystokyo.paper.PaperWorldConfig.DuplicateUUIDMode.NOTHING) {

View file

@ -1,23 +0,0 @@
From b0c9be521fc1613e6ab93cbc058b8fbf2de7068a Mon Sep 17 00:00:00 2001
From: Aikar <aikar@aikar.co>
Date: Thu, 19 Jul 2018 01:13:28 -0400
Subject: [PATCH] add more information to Entity.toString()
UUID, ticks lived, valid, dead
diff --git a/src/main/java/net/minecraft/server/Entity.java b/src/main/java/net/minecraft/server/Entity.java
index 80ecdb282..99dac412f 100644
--- a/src/main/java/net/minecraft/server/Entity.java
+++ b/src/main/java/net/minecraft/server/Entity.java
@@ -2361,7 +2361,7 @@ public abstract class Entity implements ICommandListener, KeyedObject { // Paper
}
public String toString() {
- return String.format("%s[\'%s\'/%d, l=\'%s\', x=%.2f, y=%.2f, z=%.2f]", new Object[] { this.getClass().getSimpleName(), this.getName(), Integer.valueOf(this.id), this.world == null ? "~NULL~" : this.world.getWorldData().getName(), Double.valueOf(this.locX), Double.valueOf(this.locY), Double.valueOf(this.locZ)});
+ return String.format("%s[\'%s\'/%d, uuid=\'%s\', l=\'%s\', x=%.2f, y=%.2f, z=%.2f, cx=%d, cd=%d, tl=%d, v=%b, d=%b]", new Object[] { this.getClass().getSimpleName(), this.getName(), Integer.valueOf(this.id), this.uniqueID.toString(), this.world == null ? "~NULL~" : this.world.getWorldData().getName(), Double.valueOf(this.locX), Double.valueOf(this.locY), Double.valueOf(this.locZ), getChunkX(), getChunkZ(), this.ticksLived, this.valid, this.dead}); // Paper - add more information
}
public boolean isInvulnerable(DamageSource damagesource) {
--
2.18.0