(FINAL 1.16.2) Improve Timings support for Active vs Inactive vs Passengers

This makes it so entities that are passengers of other entities no longer count in the parents timings, as well as
tracks them as a separate timers per their tick status.

This lets you see how much time is spent in activated entities vs inactive (as inactive still has to do work)

Passengers is also tracked separately so you can identify "Villagers in Minecarts" vs roaming villagers, as
the lack of ability to move can impact their performance characteristics.

This will likely break any plugin that was naughty and directly messed with our internal timings as this
moves the timings to the EntityTypes object, speeding up creation of Entities to no longer store
a timing handler object per entity.

This will also change the output of the entities in timings to use internal ID's instead of class names.

If a plugin is broken by this, shame them for doing bad things. Paper will not fix it, they will have to fix it.
This commit is contained in:
Aikar 2020-09-10 18:02:39 -04:00
parent 794e6baf14
commit 6fda3fd0ed
No known key found for this signature in database
GPG Key ID: 401ADFC9891FAAFE
41 changed files with 199 additions and 146 deletions

View File

@ -6,10 +6,10 @@ Subject: [PATCH] Timings v2
diff --git a/src/main/java/co/aikar/timings/MinecraftTimings.java b/src/main/java/co/aikar/timings/MinecraftTimings.java
new file mode 100644
index 0000000000000000000000000000000000000000..a58ef60d9976b3afc50e94364cf474bd2e5fdfd6
index 0000000000000000000000000000000000000000..11fe3524f38f7756ebd0e3807678e8848fd2217d
--- /dev/null
+++ b/src/main/java/co/aikar/timings/MinecraftTimings.java
@@ -0,0 +1,149 @@
@@ -0,0 +1,148 @@
+package co.aikar.timings;
+
+import com.google.common.collect.MapMaker;
@ -118,9 +118,8 @@ index 0000000000000000000000000000000000000000..a58ef60d9976b3afc50e94364cf474bd
+ * @param entity
+ * @return
+ */
+ public static Timing getEntityTimings(Entity entity) {
+ String entityType = entity.getClass().getName();
+ return Timings.ofSafe("Minecraft", "## tickEntity - " + entityType, tickEntityTimer);
+ public static Timing getEntityTimings(String entityType, String type) {
+ return Timings.ofSafe("Minecraft", "## tickEntity - " + entityType + " - " + type, tickEntityTimer);
+ }
+
+ /**
@ -1003,29 +1002,26 @@ index 7f3c6518cce96354cc2217e5e112ac426199ae9b..4ef6913c356663b640e6ce770c123f51
}
diff --git a/src/main/java/net/minecraft/server/Entity.java b/src/main/java/net/minecraft/server/Entity.java
index fc6930327625bf951bb0ba21df5eb1a559a2b295..afaf32db9c53d164f13f5afcd4202b40c9866e05 100644
index fc6930327625bf951bb0ba21df5eb1a559a2b295..7fe3c37feef31762014f0c77e1bbb3c3a12a0797 100644
--- a/src/main/java/net/minecraft/server/Entity.java
+++ b/src/main/java/net/minecraft/server/Entity.java
@@ -31,7 +31,8 @@ import org.bukkit.craftbukkit.event.CraftPortalEvent;
@@ -31,7 +31,6 @@ import org.bukkit.craftbukkit.event.CraftPortalEvent;
import org.bukkit.entity.Hanging;
import org.bukkit.entity.LivingEntity;
import org.bukkit.entity.Vehicle;
-import org.spigotmc.CustomTimingsHandler; // Spigot
+import co.aikar.timings.MinecraftTimings; // Paper
+import co.aikar.timings.Timing; // Paper
import org.bukkit.event.entity.EntityCombustByEntityEvent;
import org.bukkit.event.hanging.HangingBreakByEntityEvent;
import org.bukkit.event.vehicle.VehicleBlockCollisionEvent;
@@ -162,7 +163,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
@@ -162,7 +161,6 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
public boolean valid;
public org.bukkit.projectiles.ProjectileSource projectileSource; // For projectiles only
public boolean forceExplosionKnockback; // SPIGOT-949
- public CustomTimingsHandler tickTimer = org.bukkit.craftbukkit.SpigotTimings.getEntityTimings(this); // Spigot
+ public Timing tickTimer = MinecraftTimings.getEntityTimings(this); // Paper
// Spigot start
public final org.spigotmc.ActivationRange.ActivationType activationType = org.spigotmc.ActivationRange.initializeEntityActivationType(this);
public final boolean defaultActivationState;
@@ -531,7 +532,6 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
@@ -531,7 +529,6 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
}
public void move(EnumMoveType enummovetype, Vec3D vec3d) {
@ -1033,7 +1029,7 @@ index fc6930327625bf951bb0ba21df5eb1a559a2b295..afaf32db9c53d164f13f5afcd4202b40
if (this.noclip) {
this.a(this.getBoundingBox().c(vec3d));
this.recalcPosition();
@@ -667,7 +667,6 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
@@ -667,7 +664,6 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
this.world.getMethodProfiler().exit();
}
@ -1119,6 +1115,58 @@ index 3ee9be26bbfbf1fa2c4133da3e95c8ac3f533fa4..6f9fe8959e7ca47effead4ab2a59c75d
this.world.getMethodProfiler().exit();
if (!this.world.isClientSide && this.dN() && this.aF()) {
this.damageEntity(DamageSource.DROWN, 1.0F);
diff --git a/src/main/java/net/minecraft/server/EntityTypes.java b/src/main/java/net/minecraft/server/EntityTypes.java
index ffb8685e7c457483bcf4b2ed1065fec0fbaa69e2..add85654783e9c3cebf2a2072cd2e07679de1bae 100644
--- a/src/main/java/net/minecraft/server/EntityTypes.java
+++ b/src/main/java/net/minecraft/server/EntityTypes.java
@@ -151,7 +151,9 @@ public class EntityTypes<T extends Entity> {
return IRegistry.ENTITY_TYPE.getOptional(MinecraftKey.a(s));
}
- public EntityTypes(EntityTypes.b<T> entitytypes_b, EnumCreatureType enumcreaturetype, boolean flag, boolean flag1, boolean flag2, boolean flag3, ImmutableSet<Block> immutableset, EntitySize entitysize, int i, int j) {
+ public final String id;
+ public EntityTypes(EntityTypes.b<T> entitytypes_b, EnumCreatureType enumcreaturetype, boolean flag, boolean flag1, boolean flag2, boolean flag3, ImmutableSet<Block> immutableset, EntitySize entitysize, int i, int j) { this(entitytypes_b, enumcreaturetype, flag, flag1, flag2, flag3, immutableset, entitysize, i, j, "custom"); } // Paper - old signature
+ public EntityTypes(EntityTypes.b<T> entitytypes_b, EnumCreatureType enumcreaturetype, boolean flag, boolean flag1, boolean flag2, boolean flag3, ImmutableSet<Block> immutableset, EntitySize entitysize, int i, int j, String id) { // Paper - add id
this.bf = entitytypes_b;
this.bg = enumcreaturetype;
this.bl = flag3;
@@ -162,6 +164,14 @@ public class EntityTypes<T extends Entity> {
this.br = entitysize;
this.bm = i;
this.bn = j;
+
+ // Paper start - timings
+ this.id = id;
+ this.tickTimer = co.aikar.timings.MinecraftTimings.getEntityTimings(id, "tick");
+ this.inactiveTickTimer = co.aikar.timings.MinecraftTimings.getEntityTimings(id, "inactiveTick");
+ this.passengerTickTimer = co.aikar.timings.MinecraftTimings.getEntityTimings(id, "passengerTick");
+ this.passengerInactiveTickTimer = co.aikar.timings.MinecraftTimings.getEntityTimings(id, "passengerInactiveTick");
+ // Paper end
}
@Nullable
@@ -381,6 +391,12 @@ public class EntityTypes<T extends Entity> {
return this.bn;
}
+ // Paper start - timings
+ public final co.aikar.timings.Timing tickTimer;
+ public final co.aikar.timings.Timing inactiveTickTimer;
+ public final co.aikar.timings.Timing passengerTickTimer;
+ public final co.aikar.timings.Timing passengerInactiveTickTimer;
+ // Paper end
public boolean isDeltaTracking() {
return this != EntityTypes.PLAYER && this != EntityTypes.LLAMA_SPIT && this != EntityTypes.WITHER && this != EntityTypes.BAT && this != EntityTypes.ITEM_FRAME && this != EntityTypes.LEASH_KNOT && this != EntityTypes.PAINTING && this != EntityTypes.END_CRYSTAL && this != EntityTypes.EVOKER_FANGS;
}
@@ -468,7 +484,7 @@ public class EntityTypes<T extends Entity> {
SystemUtils.a(DataConverterTypes.ENTITY_TREE, s);
}
- return new EntityTypes<>(this.a, this.b, this.d, this.e, this.f, this.g, this.c, this.j, this.h, this.i);
+ return new EntityTypes<>(this.a, this.b, this.d, this.e, this.f, this.g, this.c, this.j, this.h, this.i, s); // Paper - add id
}
}
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
index 3976bf9a94657a5842a5ced06f3d12e108667dfc..bc7f74bae272d7cef681136ebdafed3d1a3df046 100644
--- a/src/main/java/net/minecraft/server/MinecraftServer.java
@ -1630,7 +1678,7 @@ index 557a265712695180c4cb1cf49c4e0a5441554e86..86e7134a402d1c1e0df954c6ea862c62
CrashReport crashreport = CrashReport.a(throwable, "Ticking entity");
CrashReportSystemDetails crashreportsystemdetails = crashreport.a("Entity being ticked");
diff --git a/src/main/java/net/minecraft/server/WorldServer.java b/src/main/java/net/minecraft/server/WorldServer.java
index 56ba84a0fcd3e6a6e2dbd035f466112bf17c6845..b281f49cd95dc9af612ee8e580f62c739920640f 100644
index 56ba84a0fcd3e6a6e2dbd035f466112bf17c6845..3c917e814c05c1a6284d6a0d00ae31aed5d37ff0 100644
--- a/src/main/java/net/minecraft/server/WorldServer.java
+++ b/src/main/java/net/minecraft/server/WorldServer.java
@@ -2,6 +2,8 @@ package net.minecraft.server;
@ -1704,35 +1752,40 @@ index 56ba84a0fcd3e6a6e2dbd035f466112bf17c6845..b281f49cd95dc9af612ee8e580f62c73
gameprofilerfiller.exit();
}
@@ -638,6 +644,7 @@ public class WorldServer extends World implements GeneratorAccessSeed {
@@ -638,14 +644,22 @@ public class WorldServer extends World implements GeneratorAccessSeed {
if (!(entity instanceof EntityHuman) && !this.getChunkProvider().a(entity)) {
this.chunkCheck(entity);
} else {
+ ++TimingHistory.entityTicks; // Paper - timings
// Spigot start
+ co.aikar.timings.Timing timer; // Paper
if (!org.spigotmc.ActivationRange.checkIfActive(entity)) {
entity.ticksLived++;
@@ -645,7 +652,9 @@ public class WorldServer extends World implements GeneratorAccessSeed {
+ timer = entity.getEntityType().inactiveTickTimer.startTiming(); try { // Paper - timings
entity.inactiveTick();
+ } finally { timer.stopTiming(); } // Paper
return;
}
// Spigot end
+ TimingHistory.activatedEntityTicks++; // Paper - timings
entity.tickTimer.startTiming(); // Spigot
+ try { // Paper - timings
- entity.tickTimer.startTiming(); // Spigot
+ // Paper start- timings
+ TimingHistory.activatedEntityTicks++;
+ timer = entity.getVehicle() != null ? entity.getEntityType().passengerTickTimer.startTiming() : entity.getEntityType().tickTimer.startTiming();
+ try {
+ // Paper end - timings
entity.g(entity.locX(), entity.locY(), entity.locZ());
entity.lastYaw = entity.yaw;
entity.lastPitch = entity.pitch;
@@ -672,7 +681,9 @@ public class WorldServer extends World implements GeneratorAccessSeed {
@@ -672,7 +686,7 @@ public class WorldServer extends World implements GeneratorAccessSeed {
this.a(entity, entity1);
}
}
+ } finally { // Paper - timings
entity.tickTimer.stopTiming(); // Spigot
+ } // Paper - timings
- entity.tickTimer.stopTiming(); // Spigot
+ } finally { timer.stopTiming(); } // Paper - timings
}
}
@@ -749,6 +760,7 @@ public class WorldServer extends World implements GeneratorAccessSeed {
@@ -749,6 +763,7 @@ public class WorldServer extends World implements GeneratorAccessSeed {
if (!flag1) {
org.bukkit.Bukkit.getPluginManager().callEvent(new org.bukkit.event.world.WorldSaveEvent(getWorld())); // CraftBukkit
@ -1740,7 +1793,7 @@ index 56ba84a0fcd3e6a6e2dbd035f466112bf17c6845..b281f49cd95dc9af612ee8e580f62c73
if (iprogressupdate != null) {
iprogressupdate.a(new ChatMessage("menu.savingLevel"));
}
@@ -758,7 +770,10 @@ public class WorldServer extends World implements GeneratorAccessSeed {
@@ -758,7 +773,10 @@ public class WorldServer extends World implements GeneratorAccessSeed {
iprogressupdate.c(new ChatMessage("menu.savingChunks"));
}

View File

@ -31,10 +31,10 @@ index 2e869004c8c6b8bfbb002fb4eda04519d50390c8..22eb89df768819f0a18f91b806b56ace
this.b.setJumping(this.a);
this.a = false;
diff --git a/src/main/java/net/minecraft/server/Entity.java b/src/main/java/net/minecraft/server/Entity.java
index 8dbf7b62d64ca7472956ad198554a98d46bac589..32e10105fa68b6f647d6c3173ae6e6db03209b78 100644
index 7fe3c37feef31762014f0c77e1bbb3c3a12a0797..b0dc450870483c0c97784a52c7d32d56e0a10fc4 100644
--- a/src/main/java/net/minecraft/server/Entity.java
+++ b/src/main/java/net/minecraft/server/Entity.java
@@ -1022,6 +1022,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
@@ -1019,6 +1019,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
return this.isInWater() || this.isInRain();
}
@ -43,7 +43,7 @@ index 8dbf7b62d64ca7472956ad198554a98d46bac589..32e10105fa68b6f647d6c3173ae6e6db
return this.isInWater() || this.isInRain() || this.k();
}
diff --git a/src/main/java/net/minecraft/server/EntityInsentient.java b/src/main/java/net/minecraft/server/EntityInsentient.java
index c19b17bbf1a816f65cfbfcbdf57c7cb2350cb841..d09faa237905a6d4ad39ece64f6db5079be655e1 100644
index 5da6528672d0f14766ca99ce5d2cc40b5035896c..f56701240ab819d31bb631684a4ee49a9a28a19b 100644
--- a/src/main/java/net/minecraft/server/EntityInsentient.java
+++ b/src/main/java/net/minecraft/server/EntityInsentient.java
@@ -33,6 +33,7 @@ public abstract class EntityInsentient extends EntityLiving {

View File

@ -24,10 +24,10 @@ index 8ee2b9bb1bce698fce50ac1b3fc477fcafd0542c..d59b82b7bb1f6d1b231f4e394e0a67a3
+ }
}
diff --git a/src/main/java/net/minecraft/server/Entity.java b/src/main/java/net/minecraft/server/Entity.java
index 66f61f7a9d3770ad1d63aca3a655c8c458845b52..18d60e66b9ebd42ca02142c1d44751881f29fc5d 100644
index b0dc450870483c0c97784a52c7d32d56e0a10fc4..f76476fba765c04a19931a36d88d9cebcba93334 100644
--- a/src/main/java/net/minecraft/server/Entity.java
+++ b/src/main/java/net/minecraft/server/Entity.java
@@ -1759,6 +1759,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
@@ -1756,6 +1756,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
return this.a(itemstack, 0.0F);
}

View File

@ -5,10 +5,10 @@ Subject: [PATCH] Player affects spawning API
diff --git a/src/main/java/net/minecraft/server/Entity.java b/src/main/java/net/minecraft/server/Entity.java
index f38931dec12c09e3822b320855f749158fd784f4..6b4f38c6528a0a730f31eff3204d741e9b4a2ae2 100644
index f76476fba765c04a19931a36d88d9cebcba93334..9bfbbacdf19801aee1f1e566006059181401f676 100644
--- a/src/main/java/net/minecraft/server/Entity.java
+++ b/src/main/java/net/minecraft/server/Entity.java
@@ -1271,6 +1271,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
@@ -1268,6 +1268,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
return MathHelper.c(f * f + f1 * f1 + f2 * f2);
}
@ -31,7 +31,7 @@ index e16be546b22c09e1c6ed50c453e1f2c711832a81..683d98dea1b46931478ac7b55e49bc9d
// CraftBukkit start
public boolean fauxSleeping;
diff --git a/src/main/java/net/minecraft/server/EntityInsentient.java b/src/main/java/net/minecraft/server/EntityInsentient.java
index 0f28d047453b99a6dc051196642cedc86b3d657b..69acb0f17577cb46a0302f1d6bbb3a42924aeda9 100644
index 30530057e2e25288abfdb138be4abe242d418612..ce6a6f91b27111535029c86ec1280d458427ea66 100644
--- a/src/main/java/net/minecraft/server/EntityInsentient.java
+++ b/src/main/java/net/minecraft/server/EntityInsentient.java
@@ -691,7 +691,7 @@ public abstract class EntityInsentient extends EntityLiving {

View File

@ -5,18 +5,18 @@ Subject: [PATCH] Entity Origin API
diff --git a/src/main/java/net/minecraft/server/Entity.java b/src/main/java/net/minecraft/server/Entity.java
index da1586b21ee12a28b66410fde09395bc044c26d0..d21106a96356032f1e183c75f020dc61d18d79fd 100644
index 9bfbbacdf19801aee1f1e566006059181401f676..9f0ae86bbd26c151b371b399db92f527fc4b51d6 100644
--- a/src/main/java/net/minecraft/server/Entity.java
+++ b/src/main/java/net/minecraft/server/Entity.java
@@ -164,6 +164,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
@@ -161,6 +161,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
public boolean valid;
public org.bukkit.projectiles.ProjectileSource projectileSource; // For projectiles only
public boolean forceExplosionKnockback; // SPIGOT-949
public Timing tickTimer = MinecraftTimings.getEntityTimings(this); // Paper
+ public org.bukkit.Location origin; // Paper
// Spigot start
public final org.spigotmc.ActivationRange.ActivationType activationType = org.spigotmc.ActivationRange.initializeEntityActivationType(this);
public final boolean defaultActivationState;
@@ -1539,6 +1540,11 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
@@ -1536,6 +1537,11 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
this.bukkitEntity.storeBukkitValues(nbttagcompound);
}
// CraftBukkit end
@ -28,7 +28,7 @@ index da1586b21ee12a28b66410fde09395bc044c26d0..d21106a96356032f1e183c75f020dc61
return nbttagcompound;
} catch (Throwable throwable) {
CrashReport crashreport = CrashReport.a(throwable, "Saving entity NBT");
@@ -1656,6 +1662,13 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
@@ -1653,6 +1659,13 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
this.getBukkitEntity().readBukkitValues(nbttagcompound);
// CraftBukkit end
@ -42,7 +42,7 @@ index da1586b21ee12a28b66410fde09395bc044c26d0..d21106a96356032f1e183c75f020dc61
} catch (Throwable throwable) {
CrashReport crashreport = CrashReport.a(throwable, "Loading entity NBT");
CrashReportSystemDetails crashreportsystemdetails = crashreport.a("Entity being loaded");
@@ -1717,6 +1730,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
@@ -1714,6 +1727,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
protected abstract void saveData(NBTTagCompound nbttagcompound);
@ -101,10 +101,10 @@ index ad8a506bb430b26fe147a657a2f826daf9bf4d45..ad4807e0bdd6409bd798f995da8f43ce
if (i >= 0 && i < this.list.size()) {
NBTBase nbtbase = (NBTBase) this.list.get(i);
diff --git a/src/main/java/net/minecraft/server/WorldServer.java b/src/main/java/net/minecraft/server/WorldServer.java
index b281f49cd95dc9af612ee8e580f62c739920640f..73faa25ff7642aab6eaee4af1a4f036cde3b691b 100644
index 3c917e814c05c1a6284d6a0d00ae31aed5d37ff0..dea829c3a568c0f78e8c4413c92f6fcc05297d8b 100644
--- a/src/main/java/net/minecraft/server/WorldServer.java
+++ b/src/main/java/net/minecraft/server/WorldServer.java
@@ -1126,6 +1126,11 @@ public class WorldServer extends World implements GeneratorAccessSeed {
@@ -1129,6 +1129,11 @@ public class WorldServer extends World implements GeneratorAccessSeed {
this.navigators.add(((EntityInsentient) entity).getNavigation());
}
entity.valid = true; // CraftBukkit

View File

@ -29,10 +29,10 @@ index d59b82b7bb1f6d1b231f4e394e0a67a3d154d7be..f7a0a33e49cadf9b2bd43f118c106937
+ }
}
diff --git a/src/main/java/net/minecraft/server/Entity.java b/src/main/java/net/minecraft/server/Entity.java
index 7cfd035d2baa4318c306cd850ea49468ac213792..acb246076e5b127703c8080a8c5000c8cb05e4ec 100644
index 9f0ae86bbd26c151b371b399db92f527fc4b51d6..ad372904a42978be83a8588dd24c22d15a7bf5b6 100644
--- a/src/main/java/net/minecraft/server/Entity.java
+++ b/src/main/java/net/minecraft/server/Entity.java
@@ -417,9 +417,16 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
@@ -414,9 +414,16 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
this.fallDistance *= 0.5F;
}
@ -49,7 +49,7 @@ index 7cfd035d2baa4318c306cd850ea49468ac213792..acb246076e5b127703c8080a8c5000c8
if (!this.world.isClientSide) {
this.setFlag(0, this.fireTicks > 0);
@@ -512,6 +519,16 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
@@ -509,6 +516,16 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
this.setFireTicks(0);
}

View File

@ -21,10 +21,10 @@ index 62e793b71b313146b86b466421e7a5f894bef9df..cd47a4ca069df26969de3051c2aac805
+ }
}
diff --git a/src/main/java/net/minecraft/server/Entity.java b/src/main/java/net/minecraft/server/Entity.java
index 02b3c1f34f29877d67f4017caa477a332aac8242..c222539ac9f0a2b9f7e4a6ded873db4ca2b2e7b6 100644
index ad372904a42978be83a8588dd24c22d15a7bf5b6..fc5cbf8cd9fa82e217084b50bd3db9458c9defbf 100644
--- a/src/main/java/net/minecraft/server/Entity.java
+++ b/src/main/java/net/minecraft/server/Entity.java
@@ -2517,7 +2517,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
@@ -2514,7 +2514,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
double d4 = DimensionManager.a(this.world.getDimensionManager(), worldserver.getDimensionManager());
BlockPosition blockposition = new BlockPosition(MathHelper.a(this.locX() * d4, d0, d2), this.locY(), MathHelper.a(this.locZ() * d4, d1, d3));
// CraftBukkit start
@ -34,7 +34,7 @@ index 02b3c1f34f29877d67f4017caa477a332aac8242..c222539ac9f0a2b9f7e4a6ded873db4c
return null;
}
diff --git a/src/main/java/net/minecraft/server/EntityPlayer.java b/src/main/java/net/minecraft/server/EntityPlayer.java
index 91496373c4dfb97adc2255e59ef413c7c78d009c..0751dd4babcb69d05ddf05c006f01d42597a1564 100644
index 9142f6294f3b6ca2488c146ffa568a2858d7650f..0355b18f1ba079fb0281a2deda80ef2e5c725c47 100644
--- a/src/main/java/net/minecraft/server/EntityPlayer.java
+++ b/src/main/java/net/minecraft/server/EntityPlayer.java
@@ -872,7 +872,7 @@ public class EntityPlayer extends EntityHuman implements ICrafting {

View File

@ -25,10 +25,10 @@ index abbf59bb91021821876a8960e8f77fac24457ec4..04430aae52205ee167662004e45c145b
+ }
}
diff --git a/src/main/java/net/minecraft/server/Entity.java b/src/main/java/net/minecraft/server/Entity.java
index c222539ac9f0a2b9f7e4a6ded873db4ca2b2e7b6..9295f5aa306d062bf95cd10e13796315a1fc8c1d 100644
index fc5cbf8cd9fa82e217084b50bd3db9458c9defbf..fd881f2e262f5514392a484cf3e442173acb9be1 100644
--- a/src/main/java/net/minecraft/server/Entity.java
+++ b/src/main/java/net/minecraft/server/Entity.java
@@ -2192,6 +2192,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
@@ -2189,6 +2189,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
@Nullable
public ScoreboardTeamBase getScoreboardTeam() {

View File

@ -6,10 +6,10 @@ 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 263564408d05a231e1857c23d2c15882c4364dd5..2a928e016b45ac8aafb97bbebebcf4c00000a9e8 100644
index fd881f2e262f5514392a484cf3e442173acb9be1..f74eaf5cfd0add930d71d89e9a5441f4115e5f6c 100644
--- a/src/main/java/net/minecraft/server/Entity.java
+++ b/src/main/java/net/minecraft/server/Entity.java
@@ -60,6 +60,21 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
@@ -58,6 +58,21 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
return tag.hasKey("Bukkit.updateLevel") && tag.getInt("Bukkit.updateLevel") >= level;
}
@ -31,7 +31,7 @@ index 263564408d05a231e1857c23d2c15882c4364dd5..2a928e016b45ac8aafb97bbebebcf4c0
private CraftEntity bukkitEntity;
public CraftEntity getBukkitEntity() {
@@ -189,7 +204,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
@@ -186,7 +201,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
this.x = Vec3D.a;
this.am = 1.0F;
this.an = 1.0F;

View File

@ -5,10 +5,10 @@ Subject: [PATCH] Entity AddTo/RemoveFrom World Events
diff --git a/src/main/java/net/minecraft/server/WorldServer.java b/src/main/java/net/minecraft/server/WorldServer.java
index 7d1cfda9ea4944ff772003b8ecbbbd7554c79da1..f07f70fcfe1b8531910561e92f47f47ec398f0ba 100644
index 3c6765cc27950a3f9b97cba86c998ceede2e3725..a8c3530bc51784865f0119d1c01393de4eb6325e 100644
--- a/src/main/java/net/minecraft/server/WorldServer.java
+++ b/src/main/java/net/minecraft/server/WorldServer.java
@@ -1094,7 +1094,7 @@ public class WorldServer extends World implements GeneratorAccessSeed {
@@ -1097,7 +1097,7 @@ public class WorldServer extends World implements GeneratorAccessSeed {
if (entity instanceof EntityInsentient) {
this.navigators.remove(((EntityInsentient) entity).getNavigation());
}
@ -17,7 +17,7 @@ index 7d1cfda9ea4944ff772003b8ecbbbd7554c79da1..f07f70fcfe1b8531910561e92f47f47e
entity.valid = false; // CraftBukkit
}
@@ -1132,6 +1132,7 @@ public class WorldServer extends World implements GeneratorAccessSeed {
@@ -1135,6 +1135,7 @@ public class WorldServer extends World implements GeneratorAccessSeed {
entity.origin = entity.getBukkitEntity().getLocation();
}
// Paper end

View File

@ -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 04887987f33b10a91ab0580b69ff1ad1db376593..03aa2d9c2d0ef96d2a97a9aae18cc04fa04b9665 100644
index e6b62da5fc798db29aa1b31d00e5df2027637d0b..5b24446fbd242d31a3fe17c1c2f5611a5e15f509 100644
--- a/src/main/java/net/minecraft/server/World.java
+++ b/src/main/java/net/minecraft/server/World.java
@@ -39,7 +39,7 @@ public abstract class World implements GeneratorAccess, AutoCloseable {
@ -67,10 +67,10 @@ index 04887987f33b10a91ab0580b69ff1ad1db376593..03aa2d9c2d0ef96d2a97a9aae18cc04f
}
diff --git a/src/main/java/net/minecraft/server/WorldServer.java b/src/main/java/net/minecraft/server/WorldServer.java
index f07f70fcfe1b8531910561e92f47f47ec398f0ba..e1484ee03f1f1c59f849f72cc563cab88acf8930 100644
index a8c3530bc51784865f0119d1c01393de4eb6325e..611b48d3d473e9c8738bd4545c9243658c03481e 100644
--- a/src/main/java/net/minecraft/server/WorldServer.java
+++ b/src/main/java/net/minecraft/server/WorldServer.java
@@ -1591,7 +1591,7 @@ public class WorldServer extends World implements GeneratorAccessSeed {
@@ -1594,7 +1594,7 @@ public class WorldServer extends World implements GeneratorAccessSeed {
}
bufferedwriter.write(String.format("entities: %d\n", this.entitiesById.size()));
@ -79,7 +79,7 @@ index f07f70fcfe1b8531910561e92f47f47ec398f0ba..e1484ee03f1f1c59f849f72cc563cab8
bufferedwriter.write(String.format("block_ticks: %d\n", this.getBlockTickList().a()));
bufferedwriter.write(String.format("fluid_ticks: %d\n", this.getFluidTickList().a()));
bufferedwriter.write("distance_manager: " + playerchunkmap.e().c() + "\n");
@@ -1730,7 +1730,7 @@ public class WorldServer extends World implements GeneratorAccessSeed {
@@ -1733,7 +1733,7 @@ public class WorldServer extends World implements GeneratorAccessSeed {
private void a(Writer writer) throws IOException {
CSVWriter csvwriter = CSVWriter.a().a("x").a("y").a("z").a("type").a(writer);

View File

@ -102,10 +102,10 @@ index e6d97e7ffae3eadac586bad078123cd4aaa69916..225353e072033d1e5aaf5604b8db255d
for ( org.bukkit.map.MapCursor cursor : render.cursors) {
diff --git a/src/main/java/net/minecraft/server/WorldServer.java b/src/main/java/net/minecraft/server/WorldServer.java
index e1484ee03f1f1c59f849f72cc563cab88acf8930..c8d553007cacdeb734c88983151d433ccfe3d36b 100644
index 611b48d3d473e9c8738bd4545c9243658c03481e..be5e3eb71f9aa1db63e7fa3e5fb750cc066662d8 100644
--- a/src/main/java/net/minecraft/server/WorldServer.java
+++ b/src/main/java/net/minecraft/server/WorldServer.java
@@ -1050,6 +1050,7 @@ public class WorldServer extends World implements GeneratorAccessSeed {
@@ -1053,6 +1053,7 @@ public class WorldServer extends World implements GeneratorAccessSeed {
{
if ( iter.next().trackee == entity )
{

View File

@ -518,10 +518,10 @@ index 0000000000000000000000000000000000000000..a1923aff2b5e2e867670a5a064a76791
+ }
+}
diff --git a/src/main/java/net/minecraft/server/Entity.java b/src/main/java/net/minecraft/server/Entity.java
index 2a928e016b45ac8aafb97bbebebcf4c00000a9e8..ef96a77ed1164ce331b65e5ed8c6bbf4350f885e 100644
index f74eaf5cfd0add930d71d89e9a5441f4115e5f6c..10d7216f3a062269d39b66b33ff65db7c4179068 100644
--- a/src/main/java/net/minecraft/server/Entity.java
+++ b/src/main/java/net/minecraft/server/Entity.java
@@ -75,6 +75,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
@@ -73,6 +73,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
};
// Paper end

View File

@ -32,10 +32,10 @@ index 05ea87a473228f5b386258fae3943f3f4561eaa6..ac76bdd7e1d91b0d242539c4495948cd
+ }
}
diff --git a/src/main/java/net/minecraft/server/Entity.java b/src/main/java/net/minecraft/server/Entity.java
index c51a80f4cbbbe355e332581559b357dc6abe66bf..3b3b443cd25ef5c327f54c5e784e03bd81c73a7a 100644
index 10d7216f3a062269d39b66b33ff65db7c4179068..8198f7cc10132bb459fed759205cf4cbc31f4659 100644
--- a/src/main/java/net/minecraft/server/Entity.java
+++ b/src/main/java/net/minecraft/server/Entity.java
@@ -2664,6 +2664,11 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
@@ -2661,6 +2661,11 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
}
public boolean bU() {

View File

@ -8,10 +8,10 @@ Vanilla will double add Spider Jockeys to the world, so ignore already added.
Also add debug if something else tries to, and abort before world gets bad state
diff --git a/src/main/java/net/minecraft/server/WorldServer.java b/src/main/java/net/minecraft/server/WorldServer.java
index c8d553007cacdeb734c88983151d433ccfe3d36b..81a7278915eef762e1ddb296be4a73ac6450d44e 100644
index be5e3eb71f9aa1db63e7fa3e5fb750cc066662d8..aab9d9000285feeb5d5b6dbe1d296779ec5b67f2 100644
--- a/src/main/java/net/minecraft/server/WorldServer.java
+++ b/src/main/java/net/minecraft/server/WorldServer.java
@@ -919,6 +919,7 @@ public class WorldServer extends World implements GeneratorAccessSeed {
@@ -922,6 +922,7 @@ public class WorldServer extends World implements GeneratorAccessSeed {
// CraftBukkit start
private boolean addEntity0(Entity entity, CreatureSpawnEvent.SpawnReason spawnReason) {
org.spigotmc.AsyncCatcher.catchOp("entity add"); // Spigot

View File

@ -8,10 +8,10 @@ World checks and the Chunk Add logic are inconsistent on how Y > 256, < 0, is tr
Keep them consistent
diff --git a/src/main/java/net/minecraft/server/WorldServer.java b/src/main/java/net/minecraft/server/WorldServer.java
index 81a7278915eef762e1ddb296be4a73ac6450d44e..173388ca55bd15ba88f730ec9108f738740d64c5 100644
index aab9d9000285feeb5d5b6dbe1d296779ec5b67f2..6c78a7101dcef4eb967aa5d2e3c93b6e1e30a681 100644
--- a/src/main/java/net/minecraft/server/WorldServer.java
+++ b/src/main/java/net/minecraft/server/WorldServer.java
@@ -728,7 +728,7 @@ public class WorldServer extends World implements GeneratorAccessSeed {
@@ -731,7 +731,7 @@ public class WorldServer extends World implements GeneratorAccessSeed {
if (entity.ck()) {
this.getMethodProfiler().enter("chunkCheck");
int i = MathHelper.floor(entity.locX() / 16.0D);

View File

@ -5,10 +5,10 @@ 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 3b3b443cd25ef5c327f54c5e784e03bd81c73a7a..55b4c8abeb0033b15a255ec36e1998678d836dd2 100644
index 8198f7cc10132bb459fed759205cf4cbc31f4659..24997b1505db537bb19cb8fd966f7049dc9a0832 100644
--- a/src/main/java/net/minecraft/server/Entity.java
+++ b/src/main/java/net/minecraft/server/Entity.java
@@ -1949,6 +1949,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
@@ -1946,6 +1946,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
}
protected boolean addPassenger(Entity entity) { // CraftBukkit

View File

@ -27,10 +27,10 @@ index 255b4081314162cbe344b008158c6f4584795fb8..04ee0856a8c62e1afb438d4fddf40e60
+ }
}
diff --git a/src/main/java/net/minecraft/server/Entity.java b/src/main/java/net/minecraft/server/Entity.java
index 55b4c8abeb0033b15a255ec36e1998678d836dd2..a734de8641a61e6764ca68c194e1bd68142db55e 100644
index 24997b1505db537bb19cb8fd966f7049dc9a0832..8c60057b94910532a6fbe72af24b2bd2175a37ed 100644
--- a/src/main/java/net/minecraft/server/Entity.java
+++ b/src/main/java/net/minecraft/server/Entity.java
@@ -185,6 +185,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
@@ -182,6 +182,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
public final org.spigotmc.ActivationRange.ActivationType activationType = org.spigotmc.ActivationRange.initializeEntityActivationType(this);
public final boolean defaultActivationState;
public long activatedTick = Integer.MIN_VALUE;

View File

@ -5,10 +5,10 @@ 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 a734de8641a61e6764ca68c194e1bd68142db55e..a3bc9636e7c76751eca496a99e62e3c747908374 100644
index 8c60057b94910532a6fbe72af24b2bd2175a37ed..5bf33cf31e5ef6313484b1d9f01f3879f608ab11 100644
--- a/src/main/java/net/minecraft/server/Entity.java
+++ b/src/main/java/net/minecraft/server/Entity.java
@@ -185,6 +185,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
@@ -182,6 +182,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
public final org.spigotmc.ActivationRange.ActivationType activationType = org.spigotmc.ActivationRange.initializeEntityActivationType(this);
public final boolean defaultActivationState;
public long activatedTick = Integer.MIN_VALUE;
@ -16,7 +16,7 @@ index a734de8641a61e6764ca68c194e1bd68142db55e..a3bc9636e7c76751eca496a99e62e3c7
protected int numCollisions = 0; // Paper
public void inactiveTick() { }
// Spigot end
@@ -1578,6 +1579,10 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
@@ -1575,6 +1576,10 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
if (this.origin != null) {
nbttagcompound.set("Paper.Origin", this.createList(origin.getX(), origin.getY(), origin.getZ()));
}
@ -27,7 +27,7 @@ index a734de8641a61e6764ca68c194e1bd68142db55e..a3bc9636e7c76751eca496a99e62e3c7
// Paper end
return nbttagcompound;
} catch (Throwable throwable) {
@@ -1701,6 +1706,8 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
@@ -1698,6 +1703,8 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
if (!originTag.isEmpty()) {
origin = new org.bukkit.Location(world.getWorld(), originTag.getDoubleAt(0), originTag.getDoubleAt(1), originTag.getDoubleAt(2));
}

View File

@ -10,7 +10,7 @@ Adds an option to control the force mode of the particle.
This adds a new Builder API which is much friendlier to use.
diff --git a/src/main/java/net/minecraft/server/WorldServer.java b/src/main/java/net/minecraft/server/WorldServer.java
index 173388ca55bd15ba88f730ec9108f738740d64c5..f841621a7fe1a2364f821ceb661972d6b03b3b9a 100644
index 6c78a7101dcef4eb967aa5d2e3c93b6e1e30a681..b62f908886478d09fb5831492d94a6427808ccf7 100644
--- a/src/main/java/net/minecraft/server/WorldServer.java
+++ b/src/main/java/net/minecraft/server/WorldServer.java
@@ -57,7 +57,7 @@ public class WorldServer extends World implements GeneratorAccessSeed {
@ -22,7 +22,7 @@ index 173388ca55bd15ba88f730ec9108f738740d64c5..f841621a7fe1a2364f821ceb661972d6
public final ChunkProviderServer chunkProvider; // Paper - public
boolean tickingEntities;
private final MinecraftServer server;
@@ -1348,12 +1348,17 @@ public class WorldServer extends World implements GeneratorAccessSeed {
@@ -1351,12 +1351,17 @@ public class WorldServer extends World implements GeneratorAccessSeed {
}
public <T extends ParticleParam> int sendParticles(EntityPlayer sender, T t0, double d0, double d1, double d2, int i, double d3, double d4, double d5, double d6, boolean force) {

View File

@ -130,10 +130,10 @@ index ea7527b16571cef5c285e898f5a9fd0c063948fa..df8a92b082139c84afc32cf02541faa8
PlayerQuitEvent playerQuitEvent = new PlayerQuitEvent(cserver.getPlayer(entityplayer), "\u00A7e" + entityplayer.getName() + " left the game");
cserver.getPluginManager().callEvent(playerQuitEvent);
diff --git a/src/main/java/net/minecraft/server/WorldServer.java b/src/main/java/net/minecraft/server/WorldServer.java
index f841621a7fe1a2364f821ceb661972d6b03b3b9a..d1699502eac193f25d2fc369526596a0b62574a3 100644
index b62f908886478d09fb5831492d94a6427808ccf7..afefa310800972f2b5f36e6364b9126a13cca5c6 100644
--- a/src/main/java/net/minecraft/server/WorldServer.java
+++ b/src/main/java/net/minecraft/server/WorldServer.java
@@ -1005,7 +1005,7 @@ public class WorldServer extends World implements GeneratorAccessSeed {
@@ -1008,7 +1008,7 @@ public class WorldServer extends World implements GeneratorAccessSeed {
for (TileEntity tileentity : chunk.getTileEntities().values()) {
if (tileentity instanceof IInventory) {
for (org.bukkit.entity.HumanEntity h : Lists.newArrayList(((IInventory) tileentity).getViewers())) {
@ -142,7 +142,7 @@ index f841621a7fe1a2364f821ceb661972d6b03b3b9a..d1699502eac193f25d2fc369526596a0
}
}
}
@@ -1063,7 +1063,7 @@ public class WorldServer extends World implements GeneratorAccessSeed {
@@ -1066,7 +1066,7 @@ public class WorldServer extends World implements GeneratorAccessSeed {
// Spigot Start
if (entity.getBukkitEntity() instanceof org.bukkit.inventory.InventoryHolder) {
for (org.bukkit.entity.HumanEntity h : Lists.newArrayList(((org.bukkit.inventory.InventoryHolder) entity.getBukkitEntity()).getInventory().getViewers())) {

View File

@ -8,10 +8,10 @@ These are a critical sign that somethin went wrong, and you've lost some data...
We should kind of know about these things you know.
diff --git a/src/main/java/net/minecraft/server/WorldServer.java b/src/main/java/net/minecraft/server/WorldServer.java
index d1699502eac193f25d2fc369526596a0b62574a3..5e6a39ded0405d8ab8ba26d2a9f152cda0fa94fb 100644
index afefa310800972f2b5f36e6364b9126a13cca5c6..694962faed48b0d333ff95312a03f3a4189c0526 100644
--- a/src/main/java/net/minecraft/server/WorldServer.java
+++ b/src/main/java/net/minecraft/server/WorldServer.java
@@ -958,7 +958,7 @@ public class WorldServer extends World implements GeneratorAccessSeed {
@@ -961,7 +961,7 @@ public class WorldServer extends World implements GeneratorAccessSeed {
if (entity1 == null) {
return false;
} else {

View File

@ -6,10 +6,10 @@ 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 a3bc9636e7c76751eca496a99e62e3c747908374..f5c285909af563b91bb81638a3bcdf9f25584913 100644
index 5bf33cf31e5ef6313484b1d9f01f3879f608ab11..fe39746a0cde32c27f051896b1472b1fc1a200a9 100644
--- a/src/main/java/net/minecraft/server/Entity.java
+++ b/src/main/java/net/minecraft/server/Entity.java
@@ -2426,7 +2426,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
@@ -2423,7 +2423,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
}
public String toString() {

View File

@ -6,10 +6,10 @@ 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 f5c285909af563b91bb81638a3bcdf9f25584913..38a0a9313e46ce1f53fa48e99ad501b65deb1342 100644
index fe39746a0cde32c27f051896b1472b1fc1a200a9..e73a4c8dc3e15bc9897b7df86a87cd62f6908073 100644
--- a/src/main/java/net/minecraft/server/Entity.java
+++ b/src/main/java/net/minecraft/server/Entity.java
@@ -78,6 +78,8 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
@@ -76,6 +76,8 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
public com.destroystokyo.paper.loottable.PaperLootableInventoryData lootableData; // Paper
private CraftEntity bukkitEntity;
@ -52,7 +52,7 @@ index aefdcbeb1a452871a5a7376b4c259b3284f10d75..ae389806f62960816e6a8d0ab1bd8351
public boolean captureBlockStates = false;
public boolean captureTreeGeneration = false;
diff --git a/src/main/java/net/minecraft/server/WorldServer.java b/src/main/java/net/minecraft/server/WorldServer.java
index 5e6a39ded0405d8ab8ba26d2a9f152cda0fa94fb..bd0e35fac15ca559d6508df8c7f593af036ab551 100644
index 694962faed48b0d333ff95312a03f3a4189c0526..1645d07da9323fa67829823cfdfbc08b60a59b27 100644
--- a/src/main/java/net/minecraft/server/WorldServer.java
+++ b/src/main/java/net/minecraft/server/WorldServer.java
@@ -84,6 +84,9 @@ public class WorldServer extends World implements GeneratorAccessSeed {
@ -65,7 +65,7 @@ index 5e6a39ded0405d8ab8ba26d2a9f152cda0fa94fb..bd0e35fac15ca559d6508df8c7f593af
@Override public Chunk getChunkIfLoaded(int x, int z) { // Paper - this was added in world too but keeping here for NMS ABI
return this.chunkProvider.getChunkAt(x, z, false);
@@ -919,8 +922,28 @@ public class WorldServer extends World implements GeneratorAccessSeed {
@@ -922,8 +925,28 @@ public class WorldServer extends World implements GeneratorAccessSeed {
// CraftBukkit start
private boolean addEntity0(Entity entity, CreatureSpawnEvent.SpawnReason spawnReason) {
org.spigotmc.AsyncCatcher.catchOp("entity add"); // Spigot
@ -95,7 +95,7 @@ index 5e6a39ded0405d8ab8ba26d2a9f152cda0fa94fb..bd0e35fac15ca559d6508df8c7f593af
// WorldServer.LOGGER.warn("Tried to add entity {} but it was marked as removed already", EntityTypes.getName(entity.getEntityType())); // CraftBukkit
return false;
} else if (this.isUUIDTaken(entity)) {
@@ -1117,7 +1140,24 @@ public class WorldServer extends World implements GeneratorAccessSeed {
@@ -1120,7 +1143,24 @@ public class WorldServer extends World implements GeneratorAccessSeed {
}
}

View File

@ -17,10 +17,10 @@ index e7052aba9d63a296873044623808e003b3b453b7..916fb9b063f061d64da1c2ade1863a84
return this.getBlock().c(this.p(), iblockaccess, blockposition, voxelshapecollision);
}
diff --git a/src/main/java/net/minecraft/server/Entity.java b/src/main/java/net/minecraft/server/Entity.java
index 38a0a9313e46ce1f53fa48e99ad501b65deb1342..003f2a3bca8db71d25101b555ada81544e319425 100644
index e73a4c8dc3e15bc9897b7df86a87cd62f6908073..06ff22f053652c7ba5b135ccb3080c12640cb9b6 100644
--- a/src/main/java/net/minecraft/server/Entity.java
+++ b/src/main/java/net/minecraft/server/Entity.java
@@ -100,7 +100,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
@@ -98,7 +98,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
private static double e = 1.0D;
private final EntityTypes<?> f;
private int id;

View File

@ -58,10 +58,10 @@ index bc249e399befa84cdf07cc58cd0072bb9cb5cced..3b3cae92513a85ba842d403c68f5a1fb
return;
}
diff --git a/src/main/java/net/minecraft/server/Entity.java b/src/main/java/net/minecraft/server/Entity.java
index 003f2a3bca8db71d25101b555ada81544e319425..174329b9adbfa9de61f76ee92c85f6c77d65d3dc 100644
index 06ff22f053652c7ba5b135ccb3080c12640cb9b6..81bbe63090f233ae45d4b4d614b6c84d4101b173 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 INamableTileEntity, ICommandListener, Ke
@@ -71,6 +71,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
}
}
};

View File

@ -80,10 +80,10 @@ index f30071fe5c1f33386829cc61d8c6976a39eff24f..1e28061dd83a4bf2daab38aee84ddba3
public static ChunkStatus.Type a(@Nullable NBTTagCompound nbttagcompound) {
if (nbttagcompound != null) {
diff --git a/src/main/java/net/minecraft/server/WorldServer.java b/src/main/java/net/minecraft/server/WorldServer.java
index bd0e35fac15ca559d6508df8c7f593af036ab551..35116b1c893d0374359cc81bd8a29b5936940576 100644
index 1645d07da9323fa67829823cfdfbc08b60a59b27..655feddd11b9793f43f4ec31b35b0cb15b0e5039 100644
--- a/src/main/java/net/minecraft/server/WorldServer.java
+++ b/src/main/java/net/minecraft/server/WorldServer.java
@@ -1037,6 +1037,7 @@ public class WorldServer extends World implements GeneratorAccessSeed {
@@ -1040,6 +1040,7 @@ public class WorldServer extends World implements GeneratorAccessSeed {
List[] aentityslice = chunk.getEntitySlices(); // Spigot
int i = aentityslice.length;
@ -91,7 +91,7 @@ index bd0e35fac15ca559d6508df8c7f593af036ab551..35116b1c893d0374359cc81bd8a29b59
for (int j = 0; j < i; ++j) {
List<Entity> entityslice = aentityslice[j]; // Spigot
Iterator iterator = entityslice.iterator();
@@ -1049,11 +1050,25 @@ public class WorldServer extends World implements GeneratorAccessSeed {
@@ -1052,11 +1053,25 @@ public class WorldServer extends World implements GeneratorAccessSeed {
throw (IllegalStateException) SystemUtils.c((Throwable) (new IllegalStateException("Removing entity while ticking!")));
}

View File

@ -51,10 +51,10 @@ index 3b3cae92513a85ba842d403c68f5a1fb8fde785d..5ee581d1634f44a98756c5d11def9c3d
if (oclass.isInstance(t0) && t0.getBoundingBox().c(axisalignedbb) && (predicate == null || predicate.test(t0))) { // Spigot - instance check
list.add(t0);
diff --git a/src/main/java/net/minecraft/server/Entity.java b/src/main/java/net/minecraft/server/Entity.java
index 174329b9adbfa9de61f76ee92c85f6c77d65d3dc..2e1214c9ebf7915aa25aa4d405ec75f73d8e0594 100644
index 81bbe63090f233ae45d4b4d614b6c84d4101b173..b71fd1aed640f7281047f74f72884ed1f7a72d0e 100644
--- a/src/main/java/net/minecraft/server/Entity.java
+++ b/src/main/java/net/minecraft/server/Entity.java
@@ -192,6 +192,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
@@ -189,6 +189,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
protected int numCollisions = 0; // Paper
public void inactiveTick() { }
// Spigot end
@ -63,10 +63,10 @@ index 174329b9adbfa9de61f76ee92c85f6c77d65d3dc..2e1214c9ebf7915aa25aa4d405ec75f7
public float getBukkitYaw() {
return this.yaw;
diff --git a/src/main/java/net/minecraft/server/WorldServer.java b/src/main/java/net/minecraft/server/WorldServer.java
index 35116b1c893d0374359cc81bd8a29b5936940576..13370a4a0d210bd3b14a26f60b1cd9a9a3a6c941 100644
index 655feddd11b9793f43f4ec31b35b0cb15b0e5039..71370c813710cebbfcdbc92f3dc8170727537322 100644
--- a/src/main/java/net/minecraft/server/WorldServer.java
+++ b/src/main/java/net/minecraft/server/WorldServer.java
@@ -1189,6 +1189,7 @@ public class WorldServer extends World implements GeneratorAccessSeed {
@@ -1192,6 +1192,7 @@ public class WorldServer extends World implements GeneratorAccessSeed {
entity.origin = entity.getBukkitEntity().getLocation();
}
// Paper end
@ -74,7 +74,7 @@ index 35116b1c893d0374359cc81bd8a29b5936940576..13370a4a0d210bd3b14a26f60b1cd9a9
new com.destroystokyo.paper.event.entity.EntityAddToWorldEvent(entity.getBukkitEntity()).callEvent(); // Paper - fire while valid
}
@@ -1201,6 +1202,7 @@ public class WorldServer extends World implements GeneratorAccessSeed {
@@ -1204,6 +1205,7 @@ public class WorldServer extends World implements GeneratorAccessSeed {
this.removeEntityFromChunk(entity);
this.entitiesById.remove(entity.getId());
this.unregisterEntity(entity);

View File

@ -95,10 +95,10 @@ index b7380f2ef554dc5f562340b7c59fd23cd1f271c1..8bb5f35dd211ef0267f55678bb568a7d
public boolean s_() {
return this.isClientSide;
diff --git a/src/main/java/net/minecraft/server/WorldServer.java b/src/main/java/net/minecraft/server/WorldServer.java
index 13370a4a0d210bd3b14a26f60b1cd9a9a3a6c941..0b7047863bb3a3f3d61491bb1924b94a0305e40a 100644
index 71370c813710cebbfcdbc92f3dc8170727537322..4bbbf2c868d90f4ef1752e886ff0e6db84e0695b 100644
--- a/src/main/java/net/minecraft/server/WorldServer.java
+++ b/src/main/java/net/minecraft/server/WorldServer.java
@@ -1527,15 +1527,17 @@ public class WorldServer extends World implements GeneratorAccessSeed {
@@ -1530,15 +1530,17 @@ public class WorldServer extends World implements GeneratorAccessSeed {
this.getMinecraftServer().getPlayerList().sendAll(new PacketPlayOutSpawnPosition(blockposition, f));
}

View File

@ -27,10 +27,10 @@ index 6281f7900afab3ef1c9ba3c034b91cbfa1900f50..7f3401d5d7878e4a0f407e92bf110dbe
int i = this.f ? 300 : 100;
diff --git a/src/main/java/net/minecraft/server/Entity.java b/src/main/java/net/minecraft/server/Entity.java
index 2e1214c9ebf7915aa25aa4d405ec75f73d8e0594..f6ad53b71c6d545a5989364516b8f2b17cfe7a63 100644
index b71fd1aed640f7281047f74f72884ed1f7a72d0e..675ff9b2ce573439462f5554f470ffcb0a971107 100644
--- a/src/main/java/net/minecraft/server/Entity.java
+++ b/src/main/java/net/minecraft/server/Entity.java
@@ -1453,6 +1453,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
@@ -1450,6 +1450,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
}
// CraftBukkit end
@ -38,7 +38,7 @@ index 2e1214c9ebf7915aa25aa4d405ec75f73d8e0594..f6ad53b71c6d545a5989364516b8f2b1
public void a(Entity entity, int i, DamageSource damagesource) {
if (entity instanceof EntityPlayer) {
CriterionTriggers.c.a((EntityPlayer) entity, this, damagesource);
@@ -2340,6 +2341,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
@@ -2337,6 +2338,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
this.fallDistance = 0.0F;
}

View File

@ -5,10 +5,10 @@ Subject: [PATCH] Reset players airTicks on respawn
diff --git a/src/main/java/net/minecraft/server/Entity.java b/src/main/java/net/minecraft/server/Entity.java
index f6ad53b71c6d545a5989364516b8f2b17cfe7a63..47c0fd89a82d91dc6083f9600ac6889e2b27234b 100644
index 675ff9b2ce573439462f5554f470ffcb0a971107..6f0050bacfda342719ba93e40743983e07868e51 100644
--- a/src/main/java/net/minecraft/server/Entity.java
+++ b/src/main/java/net/minecraft/server/Entity.java
@@ -2253,6 +2253,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
@@ -2250,6 +2250,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
}
@ -17,7 +17,7 @@ index f6ad53b71c6d545a5989364516b8f2b17cfe7a63..47c0fd89a82d91dc6083f9600ac6889e
return 300;
}
diff --git a/src/main/java/net/minecraft/server/EntityPlayer.java b/src/main/java/net/minecraft/server/EntityPlayer.java
index d1f716067e6c71f523c7561b9ef92f4296d1a726..01d679cfa6ad8f5dc5bb4539197a59cb00c65337 100644
index ea06a264564c5cf4fef7de79e5795af13094effd..777b2f7e77d2b59d5a439252daf9d317ab82a838 100644
--- a/src/main/java/net/minecraft/server/EntityPlayer.java
+++ b/src/main/java/net/minecraft/server/EntityPlayer.java
@@ -1997,6 +1997,7 @@ public class EntityPlayer extends EntityHuman implements ICrafting {

View File

@ -20,10 +20,10 @@ this is going to be the best soultion all around.
Improvements/suggestions welcome!
diff --git a/src/main/java/net/minecraft/server/Entity.java b/src/main/java/net/minecraft/server/Entity.java
index 47c0fd89a82d91dc6083f9600ac6889e2b27234b..915378493d9c5bb501b21eb7aca380580716f4c3 100644
index 6f0050bacfda342719ba93e40743983e07868e51..28873344d957fb4bababad36d5823ac43d13ab99 100644
--- a/src/main/java/net/minecraft/server/Entity.java
+++ b/src/main/java/net/minecraft/server/Entity.java
@@ -1947,12 +1947,15 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
@@ -1944,12 +1944,15 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
}
@ -41,7 +41,7 @@ index 47c0fd89a82d91dc6083f9600ac6889e2b27234b..915378493d9c5bb501b21eb7aca38058
}
}
@@ -2007,7 +2010,10 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
@@ -2004,7 +2007,10 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
return true; // CraftBukkit
}
@ -53,7 +53,7 @@ index 47c0fd89a82d91dc6083f9600ac6889e2b27234b..915378493d9c5bb501b21eb7aca38058
if (entity.getVehicle() == this) {
throw new IllegalStateException("Use x.stopRiding(y), not y.removePassenger(x)");
} else {
@@ -2017,7 +2023,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
@@ -2014,7 +2020,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
if (getBukkitEntity() instanceof Vehicle && entity.getBukkitEntity() instanceof LivingEntity) {
VehicleExitEvent event = new VehicleExitEvent(
(Vehicle) getBukkitEntity(),
@ -62,7 +62,7 @@ index 47c0fd89a82d91dc6083f9600ac6889e2b27234b..915378493d9c5bb501b21eb7aca38058
);
// Suppress during worldgen
if (this.valid) {
@@ -2031,7 +2037,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
@@ -2028,7 +2034,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
}
// CraftBukkit end
// Spigot start

View File

@ -46,10 +46,10 @@ index 02c09f39848399a86d46bd17569b4f01a7b5ab1f..ed9b2f9adfecdc6d1b9925579ec51065
double[] adouble = new double[]{1.0D};
double d0 = vec3d1.x - vec3d.x;
diff --git a/src/main/java/net/minecraft/server/Entity.java b/src/main/java/net/minecraft/server/Entity.java
index 915378493d9c5bb501b21eb7aca380580716f4c3..8832ffc0fcf9410ecc07ac100c2c8e3cd4dbddff 100644
index 28873344d957fb4bababad36d5823ac43d13ab99..04410802030f31e772f9874252459222ce916e20 100644
--- a/src/main/java/net/minecraft/server/Entity.java
+++ b/src/main/java/net/minecraft/server/Entity.java
@@ -1419,6 +1419,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
@@ -1416,6 +1416,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
return this.c(f - 90.0F, f1);
}
@ -57,7 +57,7 @@ index 915378493d9c5bb501b21eb7aca380580716f4c3..8832ffc0fcf9410ecc07ac100c2c8e3c
public final Vec3D j(float f) {
if (f == 1.0F) {
return new Vec3D(this.locX(), this.getHeadY(), this.locZ());
@@ -2056,6 +2057,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
@@ -2053,6 +2054,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
return this.getPassengers().size() < 1;
}

View File

@ -10,10 +10,10 @@ persistenting Living Entity, SPAWNER for spawners,
or DEFAULT since data was not stored.
diff --git a/src/main/java/net/minecraft/server/Entity.java b/src/main/java/net/minecraft/server/Entity.java
index 8832ffc0fcf9410ecc07ac100c2c8e3cd4dbddff..c754809203e33375365bbd3730dd266efefd84d2 100644
index 04410802030f31e772f9874252459222ce916e20..586f55cb78c639ed0079994d13d934b22c686002 100644
--- a/src/main/java/net/minecraft/server/Entity.java
+++ b/src/main/java/net/minecraft/server/Entity.java
@@ -74,6 +74,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
@@ -72,6 +72,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
}
};
List<Entity> entitySlice = null;
@ -21,7 +21,7 @@ index 8832ffc0fcf9410ecc07ac100c2c8e3cd4dbddff..c754809203e33375365bbd3730dd266e
// Paper end
public com.destroystokyo.paper.loottable.PaperLootableInventoryData lootableData; // Paper
@@ -1585,6 +1586,9 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
@@ -1582,6 +1583,9 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
if (this.origin != null) {
nbttagcompound.set("Paper.Origin", this.createList(origin.getX(), origin.getY(), origin.getZ()));
}
@ -31,7 +31,7 @@ index 8832ffc0fcf9410ecc07ac100c2c8e3cd4dbddff..c754809203e33375365bbd3730dd266e
// Save entity's from mob spawner status
if (spawnedViaMobSpawner) {
nbttagcompound.setBoolean("Paper.FromMobSpawner", true);
@@ -1714,6 +1718,26 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
@@ -1711,6 +1715,26 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
}
spawnedViaMobSpawner = nbttagcompound.getBoolean("Paper.FromMobSpawner"); // Restore entity's from mob spawner status
@ -84,10 +84,10 @@ index cb04de23dd8b506ebfd07d60acd082d6b7e14528..fbed3c1012c5b6fe61598ae6fae64edc
});
diff --git a/src/main/java/net/minecraft/server/WorldServer.java b/src/main/java/net/minecraft/server/WorldServer.java
index 0b7047863bb3a3f3d61491bb1924b94a0305e40a..ad9633747c4fc8546924c4d86ad45eb611c12102 100644
index 4bbbf2c868d90f4ef1752e886ff0e6db84e0695b..ded3db003767e4455df1e6956b85ae4fc00f52fb 100644
--- a/src/main/java/net/minecraft/server/WorldServer.java
+++ b/src/main/java/net/minecraft/server/WorldServer.java
@@ -922,6 +922,7 @@ public class WorldServer extends World implements GeneratorAccessSeed {
@@ -925,6 +925,7 @@ public class WorldServer extends World implements GeneratorAccessSeed {
// CraftBukkit start
private boolean addEntity0(Entity entity, CreatureSpawnEvent.SpawnReason spawnReason) {
org.spigotmc.AsyncCatcher.catchOp("entity add"); // Spigot

View File

@ -19,10 +19,10 @@ This change ensures the chunks are always loaded when entities are
added to the world, or a valid entity moves between chunks.
diff --git a/src/main/java/net/minecraft/server/WorldServer.java b/src/main/java/net/minecraft/server/WorldServer.java
index ad9633747c4fc8546924c4d86ad45eb611c12102..74a7fe5094a488a05352f4118ff350a5c17f96ba 100644
index ded3db003767e4455df1e6956b85ae4fc00f52fb..d9e87ef45970cefa8e9cd49b257b344c316c4dd2 100644
--- a/src/main/java/net/minecraft/server/WorldServer.java
+++ b/src/main/java/net/minecraft/server/WorldServer.java
@@ -735,11 +735,18 @@ public class WorldServer extends World implements GeneratorAccessSeed {
@@ -738,11 +738,18 @@ public class WorldServer extends World implements GeneratorAccessSeed {
int k = MathHelper.floor(entity.locZ() / 16.0D);
if (!entity.inChunk || entity.chunkX != i || entity.chunkY != j || entity.chunkZ != k) {
@ -42,7 +42,7 @@ index ad9633747c4fc8546924c4d86ad45eb611c12102..74a7fe5094a488a05352f4118ff350a5
if (entity.inChunk) {
WorldServer.LOGGER.warn("Entity {} left loaded chunk area", entity);
}
@@ -954,7 +961,7 @@ public class WorldServer extends World implements GeneratorAccessSeed {
@@ -957,7 +964,7 @@ public class WorldServer extends World implements GeneratorAccessSeed {
return false;
}
// CraftBukkit end

View File

@ -93,10 +93,10 @@ index 5ee581d1634f44a98756c5d11def9c3d46fd53e9..8e3244fc5c6e5fff22857637b4ab5944
int k = MathHelper.floor(entity.locY() / 16.0D);
diff --git a/src/main/java/net/minecraft/server/Entity.java b/src/main/java/net/minecraft/server/Entity.java
index c754809203e33375365bbd3730dd266efefd84d2..fa67a0308d9fc89652a66af35919685fab06553d 100644
index 586f55cb78c639ed0079994d13d934b22c686002..ca24d27cbc3100e989bf26c0f3f57cad3f97c11f 100644
--- a/src/main/java/net/minecraft/server/Entity.java
+++ b/src/main/java/net/minecraft/server/Entity.java
@@ -2694,6 +2694,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
@@ -2691,6 +2691,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
});
}
@ -197,7 +197,7 @@ index 4bbcd00950405a4bf3ce391b557049a3b1d4aee8..2db0f3e060850ae65033f878ed46b678
ChunkCoordIntPair chunkcoordintpair = playerchunk.i();
CompletableFuture<Either<List<IChunkAccess>, PlayerChunk.Failure>> completablefuture = this.a(chunkcoordintpair, 1, (i) -> {
diff --git a/src/main/java/net/minecraft/server/WorldServer.java b/src/main/java/net/minecraft/server/WorldServer.java
index 74a7fe5094a488a05352f4118ff350a5c17f96ba..9e3a519b14e4736ffb5b579fcc491003d4d08b83 100644
index d9e87ef45970cefa8e9cd49b257b344c316c4dd2..01b72f5555fb8d9ce95deecf77301ed84e6049db 100644
--- a/src/main/java/net/minecraft/server/WorldServer.java
+++ b/src/main/java/net/minecraft/server/WorldServer.java
@@ -4,6 +4,8 @@ import com.google.common.annotations.VisibleForTesting;
@ -209,7 +209,7 @@ index 74a7fe5094a488a05352f4118ff350a5c17f96ba..9e3a519b14e4736ffb5b579fcc491003
import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
import com.google.common.collect.Queues;
@@ -989,7 +991,22 @@ public class WorldServer extends World implements GeneratorAccessSeed {
@@ -992,7 +994,22 @@ public class WorldServer extends World implements GeneratorAccessSeed {
if (entity1 == null) {
return false;
} else {

View File

@ -102,10 +102,10 @@ index 3868572aed50c8bffd93727a139a3fbb8dc19688..ae77805f71c6c574d92f39c51b1e48f2
@Override
public void a(ChunkCoordIntPair chunkcoordintpair) {
diff --git a/src/main/java/net/minecraft/server/WorldServer.java b/src/main/java/net/minecraft/server/WorldServer.java
index 9e3a519b14e4736ffb5b579fcc491003d4d08b83..da6d9495c869150ce83dfb284c5977d7f122e71b 100644
index 01b72f5555fb8d9ce95deecf77301ed84e6049db..609d88c3d94e87ce9634f04205ca8c6cf76667d9 100644
--- a/src/main/java/net/minecraft/server/WorldServer.java
+++ b/src/main/java/net/minecraft/server/WorldServer.java
@@ -1543,12 +1543,88 @@ public class WorldServer extends World implements GeneratorAccessSeed {
@@ -1546,12 +1546,88 @@ public class WorldServer extends World implements GeneratorAccessSeed {
return ((PersistentIdCounts) this.getMinecraftServer().E().getWorldPersistentData().a(PersistentIdCounts::new, "idcounts")).a();
}

View File

@ -265,10 +265,10 @@ index d8bedba819fa9ee0a4d3bdfbf0b010da7144dd68..c4ed4d58f7b344626acb13baeb142889
return PlayerChunk.getChunkState(playerchunk.getTicketLevel());
});
diff --git a/src/main/java/net/minecraft/server/WorldServer.java b/src/main/java/net/minecraft/server/WorldServer.java
index da6d9495c869150ce83dfb284c5977d7f122e71b..c679a3838a5f4c180fbc258d59cf202a6bd91a16 100644
index 609d88c3d94e87ce9634f04205ca8c6cf76667d9..ff7d0960a3a7bd7ba7da61cc01207a27e45f3594 100644
--- a/src/main/java/net/minecraft/server/WorldServer.java
+++ b/src/main/java/net/minecraft/server/WorldServer.java
@@ -768,11 +768,43 @@ public class WorldServer extends World implements GeneratorAccessSeed {
@@ -771,11 +771,43 @@ public class WorldServer extends World implements GeneratorAccessSeed {
return !this.server.a(this, blockposition, entityhuman) && this.getWorldBorder().a(blockposition);
}
@ -313,7 +313,7 @@ index da6d9495c869150ce83dfb284c5977d7f122e71b..c679a3838a5f4c180fbc258d59cf202a
try (co.aikar.timings.Timing ignored = timings.worldSave.startTiming()) { // Paper
if (iprogressupdate != null) {
iprogressupdate.a(new ChatMessage("menu.savingLevel"));
@@ -798,6 +830,7 @@ public class WorldServer extends World implements GeneratorAccessSeed {
@@ -801,6 +833,7 @@ public class WorldServer extends World implements GeneratorAccessSeed {
// CraftBukkit end
}

View File

@ -5,10 +5,10 @@ Subject: [PATCH] Mark entities as being ticked when notifying navigation
diff --git a/src/main/java/net/minecraft/server/WorldServer.java b/src/main/java/net/minecraft/server/WorldServer.java
index cb1f2360f798f061159c365f0ed72ac3132643e6..31e433168c61fb39bec846ca4ef73a39893709fe 100644
index 5ea370c3344a720b3e0bff44938ada2019d6fa48..c7989ab2ad8e160cdbbc8ce3f47ce38828242fb0 100644
--- a/src/main/java/net/minecraft/server/WorldServer.java
+++ b/src/main/java/net/minecraft/server/WorldServer.java
@@ -1355,6 +1355,7 @@ public class WorldServer extends World implements GeneratorAccessSeed {
@@ -1358,6 +1358,7 @@ public class WorldServer extends World implements GeneratorAccessSeed {
VoxelShape voxelshape1 = iblockdata1.getCollisionShape(this, blockposition);
if (VoxelShapes.c(voxelshape, voxelshape1, OperatorBoolean.NOT_SAME)) {
@ -16,7 +16,7 @@ index cb1f2360f798f061159c365f0ed72ac3132643e6..31e433168c61fb39bec846ca4ef73a39
Iterator iterator = this.navigators.iterator();
while (iterator.hasNext()) {
@@ -1365,6 +1366,7 @@ public class WorldServer extends World implements GeneratorAccessSeed {
@@ -1368,6 +1369,7 @@ public class WorldServer extends World implements GeneratorAccessSeed {
}
}

View File

@ -3505,7 +3505,7 @@ index 8e79200b23f2dee612b0cbdcd6359a25dc2323cb..e7d9674e25c06090d57bba6c8229bc3b
return this.m;
}
diff --git a/src/main/java/net/minecraft/server/PlayerConnection.java b/src/main/java/net/minecraft/server/PlayerConnection.java
index 1ee54e80a4a76f894c97198efbc3f064d93e661b..f90ae950c72b50dadb8b83301baf5b24c71536e4 100644
index db2f4841ddec97f73882b16bc10af491f2471f86..53fe54354ee8a9e9c31bf97272d70c181e0776f1 100644
--- a/src/main/java/net/minecraft/server/PlayerConnection.java
+++ b/src/main/java/net/minecraft/server/PlayerConnection.java
@@ -539,6 +539,13 @@ public class PlayerConnection implements PacketListenerPlayIn {
@ -3910,7 +3910,7 @@ index d6aca683465c6898536507fab9e6888fef2e77e5..b926cebd053bef829517c9d9bbf1c609
HAS_SPACE(VillagePlaceRecord::d), IS_OCCUPIED(VillagePlaceRecord::e), ANY((villageplacerecord) -> {
diff --git a/src/main/java/net/minecraft/server/WorldServer.java b/src/main/java/net/minecraft/server/WorldServer.java
index 31e433168c61fb39bec846ca4ef73a39893709fe..45a1a6d64d92f9f191b7fc08fe3e56fd2786d03c 100644
index c7989ab2ad8e160cdbbc8ce3f47ce38828242fb0..db34ac8eb46338114472874e892bd7f60dcbe589 100644
--- a/src/main/java/net/minecraft/server/WorldServer.java
+++ b/src/main/java/net/minecraft/server/WorldServer.java
@@ -94,6 +94,79 @@ public class WorldServer extends World implements GeneratorAccessSeed {
@ -4002,7 +4002,7 @@ index 31e433168c61fb39bec846ca4ef73a39893709fe..45a1a6d64d92f9f191b7fc08fe3e56fd
}
// CraftBukkit start
@@ -1612,7 +1687,10 @@ public class WorldServer extends World implements GeneratorAccessSeed {
@@ -1615,7 +1690,10 @@ public class WorldServer extends World implements GeneratorAccessSeed {
}
MCUtil.getSpiralOutChunks(spawn, radiusInBlocks >> 4).forEach(pair -> {

View File

@ -573,7 +573,7 @@ index 55feb186e4f3f7985efdf7c4410ed4232e52733e..dce9c62c0cf37a37994537b74dfdc228
this.p = spawnercreature_d;
diff --git a/src/main/java/net/minecraft/server/EntityPlayer.java b/src/main/java/net/minecraft/server/EntityPlayer.java
index bd79a9464618972305139566b21c8aaa0a5e23db..697068cbccde5b57f788246c2e1f4a5e7194993e 100644
index f222ec5d943cc9ce7671db9fe8901e3a2ac9ec55..0ac879e6735f839d4fe1ef34b8d75efff661d3f1 100644
--- a/src/main/java/net/minecraft/server/EntityPlayer.java
+++ b/src/main/java/net/minecraft/server/EntityPlayer.java
@@ -87,6 +87,11 @@ public class EntityPlayer extends EntityHuman implements ICrafting {
@ -605,10 +605,10 @@ index bd79a9464618972305139566b21c8aaa0a5e23db..697068cbccde5b57f788246c2e1f4a5e
return this.cj;
}
diff --git a/src/main/java/net/minecraft/server/EntityTypes.java b/src/main/java/net/minecraft/server/EntityTypes.java
index ffb8685e7c457483bcf4b2ed1065fec0fbaa69e2..2767de830bdb9051ae6a6b7c30342175b117e7ed 100644
index add85654783e9c3cebf2a2072cd2e07679de1bae..5c03fb3af34e13bc3b8bc1840c5a7e229cf9d1f7 100644
--- a/src/main/java/net/minecraft/server/EntityTypes.java
+++ b/src/main/java/net/minecraft/server/EntityTypes.java
@@ -270,6 +270,7 @@ public class EntityTypes<T extends Entity> {
@@ -280,6 +280,7 @@ public class EntityTypes<T extends Entity> {
return this.bl;
}