diff --git a/Spigot-Server-Patches/0004-MC-Utils.patch b/Spigot-Server-Patches/0004-MC-Utils.patch index dde8fa406..8ff9bbf66 100644 --- a/Spigot-Server-Patches/0004-MC-Utils.patch +++ b/Spigot-Server-Patches/0004-MC-Utils.patch @@ -1,4 +1,4 @@ -From 9360a474d1de17fd98648746c9ec18708a1711ad Mon Sep 17 00:00:00 2001 +From c750b5ba92a117b69ce896b1147e65a79044a244 Mon Sep 17 00:00:00 2001 From: Aikar Date: Mon, 28 Mar 2016 20:55:47 -0400 Subject: [PATCH] MC Utils @@ -1700,7 +1700,7 @@ index c88a62f6b..5dbd3e60f 100644 this.d = i; } diff --git a/src/main/java/net/minecraft/server/Chunk.java b/src/main/java/net/minecraft/server/Chunk.java -index 55373cae0..517014d21 100644 +index 55373cae0..af10c18d4 100644 --- a/src/main/java/net/minecraft/server/Chunk.java +++ b/src/main/java/net/minecraft/server/Chunk.java @@ -25,7 +25,7 @@ import org.apache.logging.log4j.Logger; @@ -1769,7 +1769,15 @@ index 55373cae0..517014d21 100644 this.entitySlices[k].add(entity); } -@@ -395,6 +413,7 @@ public class Chunk implements IChunkAccess { +@@ -374,6 +392,7 @@ public class Chunk implements IChunkAccess { + } + + this.entitySlices[i].remove(entity); ++ this.entities.remove(entity); // Paper + } + + @Override +@@ -395,6 +414,7 @@ public class Chunk implements IChunkAccess { return this.a(blockposition, Chunk.EnumTileEntityState.CHECK); } @@ -1777,7 +1785,7 @@ index 55373cae0..517014d21 100644 @Nullable public TileEntity a(BlockPosition blockposition, Chunk.EnumTileEntityState chunk_enumtileentitystate) { // CraftBukkit start -@@ -507,6 +526,7 @@ public class Chunk implements IChunkAccess { +@@ -507,6 +527,7 @@ public class Chunk implements IChunkAccess { // CraftBukkit start public void loadCallback() { org.bukkit.Server server = this.world.getServer(); @@ -1785,7 +1793,7 @@ index 55373cae0..517014d21 100644 if (server != null) { /* * If it's a new world, the first few chunks are generated inside -@@ -545,6 +565,7 @@ public class Chunk implements IChunkAccess { +@@ -545,6 +566,7 @@ public class Chunk implements IChunkAccess { server.getPluginManager().callEvent(unloadEvent); // note: saving can be prevented, but not forced if no saving is actually required this.mustNotSave = !unloadEvent.isSaveChunk(); diff --git a/Spigot-Server-Patches/0007-Store-reference-to-current-Chunk-for-Entity-and-Bloc.patch b/Spigot-Server-Patches/0007-Store-reference-to-current-Chunk-for-Entity-and-Bloc.patch index 3668a3f48..c2e65745f 100644 --- a/Spigot-Server-Patches/0007-Store-reference-to-current-Chunk-for-Entity-and-Bloc.patch +++ b/Spigot-Server-Patches/0007-Store-reference-to-current-Chunk-for-Entity-and-Bloc.patch @@ -1,4 +1,4 @@ -From 0fb24c3112ee195e65b308f168e3bca44fa4edab Mon Sep 17 00:00:00 2001 +From 5dceede9a1d0b751290ea95355ee03e831d4be85 Mon Sep 17 00:00:00 2001 From: Aikar Date: Wed, 4 Jul 2018 02:10:36 -0400 Subject: [PATCH] Store reference to current Chunk for Entity and Block @@ -8,7 +8,7 @@ This enables us a fast reference to the entities current chunk instead of having to look it up by hashmap lookups. diff --git a/src/main/java/net/minecraft/server/Chunk.java b/src/main/java/net/minecraft/server/Chunk.java -index a263f60d49..8627365923 100644 +index af10c18d4..02b142fe8 100644 --- a/src/main/java/net/minecraft/server/Chunk.java +++ b/src/main/java/net/minecraft/server/Chunk.java @@ -29,7 +29,7 @@ public class Chunk implements IChunkAccess { @@ -74,11 +74,10 @@ index a263f60d49..8627365923 100644 public void b(Entity entity) { this.a(entity, entity.chunkY); } -@@ -390,8 +417,12 @@ public class Chunk implements IChunkAccess { - if (i >= this.entitySlices.length) { +@@ -391,7 +418,12 @@ public class Chunk implements IChunkAccess { i = this.entitySlices.length - 1; } -- + - this.entitySlices[i].remove(entity); + // Paper start + if (entity.currentChunk != null && entity.currentChunk.get() == this) entity.setCurrentChunk(null); @@ -86,11 +85,11 @@ index a263f60d49..8627365923 100644 + return; + } + // Paper end + this.entities.remove(entity); // Paper } - @Override diff --git a/src/main/java/net/minecraft/server/Entity.java b/src/main/java/net/minecraft/server/Entity.java -index a8ea70b36b..3a969d92e0 100644 +index e9e40f159..306724e69 100644 --- a/src/main/java/net/minecraft/server/Entity.java +++ b/src/main/java/net/minecraft/server/Entity.java @@ -134,7 +134,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke @@ -143,7 +142,7 @@ index a8ea70b36b..3a969d92e0 100644 private String entityKeyString; diff --git a/src/main/java/net/minecraft/server/TileEntity.java b/src/main/java/net/minecraft/server/TileEntity.java -index 9071bb7ece..820180ab3f 100644 +index 9071bb7ec..820180ab3 100644 --- a/src/main/java/net/minecraft/server/TileEntity.java +++ b/src/main/java/net/minecraft/server/TileEntity.java @@ -51,6 +51,15 @@ public abstract class TileEntity implements KeyedObject { // Paper @@ -163,7 +162,7 @@ index 9071bb7ece..820180ab3f 100644 @Nullable diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java -index 63ecbcd47a..c82c213260 100644 +index 63ecbcd47..c82c21326 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java @@ -138,6 +138,7 @@ import net.minecraft.server.EntityZombieVillager; @@ -188,5 +187,5 @@ index 63ecbcd47a..c82c213260 100644 /** * Order is *EXTREMELY* important -- keep it right! =D -- -2.25.0.windows.1 +2.25.0 diff --git a/Spigot-Server-Patches/0008-Store-counts-for-each-Entity-Block-Entity-Type.patch b/Spigot-Server-Patches/0008-Store-counts-for-each-Entity-Block-Entity-Type.patch index 0df50f2d1..c874bcb32 100644 --- a/Spigot-Server-Patches/0008-Store-counts-for-each-Entity-Block-Entity-Type.patch +++ b/Spigot-Server-Patches/0008-Store-counts-for-each-Entity-Block-Entity-Type.patch @@ -1,4 +1,4 @@ -From 109173e7396da82ee8dcef2df5036d1dda99b0f2 Mon Sep 17 00:00:00 2001 +From 9cb17cf35fc80ec87379bcb8dcce5a034aa536e8 Mon Sep 17 00:00:00 2001 From: Aikar Date: Wed, 4 Jul 2018 02:13:59 -0400 Subject: [PATCH] Store counts for each Entity/Block Entity Type @@ -6,7 +6,7 @@ Subject: [PATCH] Store counts for each Entity/Block Entity Type Opens door for future patches to optimize performance diff --git a/src/main/java/net/minecraft/server/Chunk.java b/src/main/java/net/minecraft/server/Chunk.java -index 8627365923..4110b6fa39 100644 +index 02b142fe8..e58dd3e6d 100644 --- a/src/main/java/net/minecraft/server/Chunk.java +++ b/src/main/java/net/minecraft/server/Chunk.java @@ -56,15 +56,19 @@ public class Chunk implements IChunkAccess { @@ -45,14 +45,14 @@ index 8627365923..4110b6fa39 100644 entity.inChunk = true; entity.setCurrentChunk(this); // Paper entity.chunkX = this.loc.x; -@@ -422,6 +428,7 @@ public class Chunk implements IChunkAccess { +@@ -423,6 +429,7 @@ public class Chunk implements IChunkAccess { if (!this.entitySlices[i].remove(entity)) { return; } + entityCounts.decrement(entity.getMinecraftKeyString()); // Paper end + this.entities.remove(entity); // Paper } - -- -2.25.0.windows.1 +2.25.0 diff --git a/Spigot-Server-Patches/0009-Timings-v2.patch b/Spigot-Server-Patches/0009-Timings-v2.patch index c63baae79..9dc779917 100644 --- a/Spigot-Server-Patches/0009-Timings-v2.patch +++ b/Spigot-Server-Patches/0009-Timings-v2.patch @@ -1,4 +1,4 @@ -From 90208679a7f12b67d2c5cab6d310144554d78d2e Mon Sep 17 00:00:00 2001 +From a4a6f03e666aa2f01f7dee3aad76884da38fe00b Mon Sep 17 00:00:00 2001 From: Aikar Date: Thu, 3 Mar 2016 04:00:11 -0600 Subject: [PATCH] Timings v2 @@ -355,10 +355,10 @@ index cd72a9c84..5de881371 100644 private final float frictionFactor; private final float f; diff --git a/src/main/java/net/minecraft/server/Chunk.java b/src/main/java/net/minecraft/server/Chunk.java -index 4110b6fa3..2ebbcc695 100644 +index e58dd3e6d..0b32179b7 100644 --- a/src/main/java/net/minecraft/server/Chunk.java +++ b/src/main/java/net/minecraft/server/Chunk.java -@@ -574,6 +574,7 @@ public class Chunk implements IChunkAccess { +@@ -576,6 +576,7 @@ public class Chunk implements IChunkAccess { server.getPluginManager().callEvent(new org.bukkit.event.world.ChunkLoadEvent(this.bukkitChunk, this.needsDecoration)); if (this.needsDecoration) { @@ -366,7 +366,7 @@ index 4110b6fa3..2ebbcc695 100644 this.needsDecoration = false; java.util.Random random = new java.util.Random(); random.setSeed(world.getSeed()); -@@ -593,6 +594,7 @@ public class Chunk implements IChunkAccess { +@@ -595,6 +596,7 @@ public class Chunk implements IChunkAccess { } } server.getPluginManager().callEvent(new org.bukkit.event.world.ChunkPopulateEvent(bukkitChunk)); @@ -1848,5 +1848,5 @@ index ca7789b5e..442383969 100644 } } -- -2.25.0.windows.1 +2.25.0 diff --git a/Spigot-Server-Patches/0021-Remove-invalid-mob-spawner-tile-entities.patch b/Spigot-Server-Patches/0021-Remove-invalid-mob-spawner-tile-entities.patch index fffdae255..99ddbb99b 100644 --- a/Spigot-Server-Patches/0021-Remove-invalid-mob-spawner-tile-entities.patch +++ b/Spigot-Server-Patches/0021-Remove-invalid-mob-spawner-tile-entities.patch @@ -1,14 +1,14 @@ -From e9d2579100a78a8de64e2942babd0acee0965be5 Mon Sep 17 00:00:00 2001 +From caecbd9db7f124511fcbeb92cc6afb88982a412a Mon Sep 17 00:00:00 2001 From: Byteflux Date: Tue, 1 Mar 2016 15:08:03 -0600 Subject: [PATCH] Remove invalid mob spawner tile entities diff --git a/src/main/java/net/minecraft/server/Chunk.java b/src/main/java/net/minecraft/server/Chunk.java -index 2ebbcc6958..e7268074b4 100644 +index 0b32179b7..9adb21279 100644 --- a/src/main/java/net/minecraft/server/Chunk.java +++ b/src/main/java/net/minecraft/server/Chunk.java -@@ -506,6 +506,10 @@ public class Chunk implements IChunkAccess { +@@ -508,6 +508,10 @@ public class Chunk implements IChunkAccess { } // CraftBukkit start @@ -20,5 +20,5 @@ index 2ebbcc6958..e7268074b4 100644 System.out.println("Attempted to place a tile entity (" + tileentity + ") at " + tileentity.position.getX() + "," + tileentity.position.getY() + "," + tileentity.position.getZ() + " (" + getType(blockposition) + ") where there was no entity tile!"); -- -2.25.0.windows.1 +2.25.0 diff --git a/Spigot-Server-Patches/0054-Add-exception-reporting-event.patch b/Spigot-Server-Patches/0054-Add-exception-reporting-event.patch index 78bf05bd8..391e06c70 100644 --- a/Spigot-Server-Patches/0054-Add-exception-reporting-event.patch +++ b/Spigot-Server-Patches/0054-Add-exception-reporting-event.patch @@ -1,4 +1,4 @@ -From 058e5298ae051aef1224425039ae5e6042a61679 Mon Sep 17 00:00:00 2001 +From ad137e8e3c6ec5c46cd87caa10e2c1056439bfef Mon Sep 17 00:00:00 2001 From: Joseph Hirschfeld Date: Thu, 3 Mar 2016 03:15:41 -0600 Subject: [PATCH] Add exception reporting event @@ -6,7 +6,7 @@ Subject: [PATCH] Add exception reporting event diff --git a/src/main/java/com/destroystokyo/paper/ServerSchedulerReportingWrapper.java b/src/main/java/com/destroystokyo/paper/ServerSchedulerReportingWrapper.java new file mode 100644 -index 0000000000..f699ce18ca +index 000000000..f699ce18c --- /dev/null +++ b/src/main/java/com/destroystokyo/paper/ServerSchedulerReportingWrapper.java @@ -0,0 +1,38 @@ @@ -49,7 +49,7 @@ index 0000000000..f699ce18ca + } +} diff --git a/src/main/java/net/minecraft/server/Chunk.java b/src/main/java/net/minecraft/server/Chunk.java -index e7268074b4..6ed23ea6c8 100644 +index 9adb21279..f3d20f214 100644 --- a/src/main/java/net/minecraft/server/Chunk.java +++ b/src/main/java/net/minecraft/server/Chunk.java @@ -1,5 +1,6 @@ @@ -59,7 +59,7 @@ index e7268074b4..6ed23ea6c8 100644 import com.google.common.collect.Maps; import com.google.common.collect.Sets; import it.unimi.dsi.fastutil.longs.LongOpenHashSet; -@@ -511,10 +512,15 @@ public class Chunk implements IChunkAccess { +@@ -513,10 +514,15 @@ public class Chunk implements IChunkAccess { this.tileEntities.remove(blockposition); // Paper end } else { @@ -80,7 +80,7 @@ index e7268074b4..6ed23ea6c8 100644 } } diff --git a/src/main/java/net/minecraft/server/ChunkProviderServer.java b/src/main/java/net/minecraft/server/ChunkProviderServer.java -index 1ba34cfaa9..3ef7e4561f 100644 +index b09868e2d..1d789b668 100644 --- a/src/main/java/net/minecraft/server/ChunkProviderServer.java +++ b/src/main/java/net/minecraft/server/ChunkProviderServer.java @@ -15,6 +15,9 @@ import java.util.function.BooleanSupplier; @@ -94,7 +94,7 @@ index 1ba34cfaa9..3ef7e4561f 100644 public class ChunkProviderServer extends IChunkProvider { diff --git a/src/main/java/net/minecraft/server/NameReferencingFileConverter.java b/src/main/java/net/minecraft/server/NameReferencingFileConverter.java -index c9c2b00251..1422503e11 100644 +index c9c2b0025..1422503e1 100644 --- a/src/main/java/net/minecraft/server/NameReferencingFileConverter.java +++ b/src/main/java/net/minecraft/server/NameReferencingFileConverter.java @@ -1,5 +1,6 @@ @@ -121,7 +121,7 @@ index c9c2b00251..1422503e11 100644 } // CraftBukkit end diff --git a/src/main/java/net/minecraft/server/PlayerChunkMap.java b/src/main/java/net/minecraft/server/PlayerChunkMap.java -index b2260498cb..c575ff57dd 100644 +index b2260498c..c575ff57d 100644 --- a/src/main/java/net/minecraft/server/PlayerChunkMap.java +++ b/src/main/java/net/minecraft/server/PlayerChunkMap.java @@ -727,6 +727,7 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d { @@ -141,7 +141,7 @@ index b2260498cb..c575ff57dd 100644 } } diff --git a/src/main/java/net/minecraft/server/RegionFile.java b/src/main/java/net/minecraft/server/RegionFile.java -index 187c4e0f58..c2312a227c 100644 +index 187c4e0f5..c2312a227 100644 --- a/src/main/java/net/minecraft/server/RegionFile.java +++ b/src/main/java/net/minecraft/server/RegionFile.java @@ -241,6 +241,7 @@ public class RegionFile implements AutoCloseable { @@ -161,7 +161,7 @@ index 187c4e0f58..c2312a227c 100644 } finally { if (filechannel != null) { diff --git a/src/main/java/net/minecraft/server/SpawnerCreature.java b/src/main/java/net/minecraft/server/SpawnerCreature.java -index 8ba344df64..02157d051f 100644 +index 8ba344df6..02157d051 100644 --- a/src/main/java/net/minecraft/server/SpawnerCreature.java +++ b/src/main/java/net/minecraft/server/SpawnerCreature.java @@ -8,6 +8,7 @@ import org.apache.logging.log4j.LogManager; @@ -189,7 +189,7 @@ index 8ba344df64..02157d051f 100644 } diff --git a/src/main/java/net/minecraft/server/VillageSiege.java b/src/main/java/net/minecraft/server/VillageSiege.java -index d5e9bae709..1bcf01c09a 100644 +index d5e9bae70..1bcf01c09 100644 --- a/src/main/java/net/minecraft/server/VillageSiege.java +++ b/src/main/java/net/minecraft/server/VillageSiege.java @@ -1,5 +1,7 @@ @@ -209,7 +209,7 @@ index d5e9bae709..1bcf01c09a 100644 } diff --git a/src/main/java/net/minecraft/server/World.java b/src/main/java/net/minecraft/server/World.java -index caead09a64..bf20ce9341 100644 +index caead09a6..bf20ce934 100644 --- a/src/main/java/net/minecraft/server/World.java +++ b/src/main/java/net/minecraft/server/World.java @@ -2,6 +2,9 @@ package net.minecraft.server; @@ -248,7 +248,7 @@ index caead09a64..bf20ce9341 100644 return; // Paper end diff --git a/src/main/java/net/minecraft/server/WorldPersistentData.java b/src/main/java/net/minecraft/server/WorldPersistentData.java -index 19e68a7831..a2a25cf6a4 100644 +index 19e68a783..a2a25cf6a 100644 --- a/src/main/java/net/minecraft/server/WorldPersistentData.java +++ b/src/main/java/net/minecraft/server/WorldPersistentData.java @@ -121,6 +121,7 @@ public class WorldPersistentData { @@ -260,7 +260,7 @@ index 19e68a7831..a2a25cf6a4 100644 } finally { if (pushbackinputstream != null) { diff --git a/src/main/java/org/bukkit/craftbukkit/scheduler/CraftScheduler.java b/src/main/java/org/bukkit/craftbukkit/scheduler/CraftScheduler.java -index 8823f94f7b..552daf4376 100644 +index 8823f94f7..552daf437 100644 --- a/src/main/java/org/bukkit/craftbukkit/scheduler/CraftScheduler.java +++ b/src/main/java/org/bukkit/craftbukkit/scheduler/CraftScheduler.java @@ -16,6 +16,9 @@ import java.util.concurrent.atomic.AtomicInteger; diff --git a/Spigot-Server-Patches/0076-Configurable-Chunk-Inhabited-Time.patch b/Spigot-Server-Patches/0076-Configurable-Chunk-Inhabited-Time.patch index f29ce4563..8c42db200 100644 --- a/Spigot-Server-Patches/0076-Configurable-Chunk-Inhabited-Time.patch +++ b/Spigot-Server-Patches/0076-Configurable-Chunk-Inhabited-Time.patch @@ -1,4 +1,4 @@ -From d6acffa96589e496354732eab4ffabeb36dec11d Mon Sep 17 00:00:00 2001 +From f2b28db6cbd7289df74c913e2b2f275eb530c031 Mon Sep 17 00:00:00 2001 From: Aikar Date: Mon, 28 Mar 2016 20:46:14 -0400 Subject: [PATCH] Configurable Chunk Inhabited Time @@ -11,7 +11,7 @@ For people who want all chunks to be treated equally, you can chose a fixed valu This allows to fine-tune vanilla gameplay. diff --git a/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java b/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java -index 6ef0e1399e..5872e6b171 100644 +index 6ef0e1399..5872e6b17 100644 --- a/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java +++ b/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java @@ -236,4 +236,14 @@ public class PaperWorldConfig { @@ -30,10 +30,10 @@ index 6ef0e1399e..5872e6b171 100644 + } } diff --git a/src/main/java/net/minecraft/server/Chunk.java b/src/main/java/net/minecraft/server/Chunk.java -index 7033c6e839..c6a79644ef 100644 +index ee94f59e6..4fe36bb71 100644 --- a/src/main/java/net/minecraft/server/Chunk.java +++ b/src/main/java/net/minecraft/server/Chunk.java -@@ -840,7 +840,7 @@ public class Chunk implements IChunkAccess { +@@ -842,7 +842,7 @@ public class Chunk implements IChunkAccess { @Override public long getInhabitedTime() { @@ -43,5 +43,5 @@ index 7033c6e839..c6a79644ef 100644 @Override -- -2.25.0.windows.1 +2.25.0 diff --git a/Spigot-Server-Patches/0119-Option-to-remove-corrupt-tile-entities.patch b/Spigot-Server-Patches/0119-Option-to-remove-corrupt-tile-entities.patch index 743c14527..f94419607 100644 --- a/Spigot-Server-Patches/0119-Option-to-remove-corrupt-tile-entities.patch +++ b/Spigot-Server-Patches/0119-Option-to-remove-corrupt-tile-entities.patch @@ -1,11 +1,11 @@ -From 7db41031dd776df0570cfc2c86a08345d3d5bc2f Mon Sep 17 00:00:00 2001 +From b04aea34b60cbf074e239be94e0167d9766b9d22 Mon Sep 17 00:00:00 2001 From: Zach Brown Date: Wed, 5 Oct 2016 16:27:36 -0500 Subject: [PATCH] Option to remove corrupt tile entities diff --git a/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java b/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java -index 8cf3076f4e..721eceeffc 100644 +index 8cf3076f4..721eceeff 100644 --- a/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java +++ b/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java @@ -298,4 +298,9 @@ public class PaperWorldConfig { @@ -19,10 +19,10 @@ index 8cf3076f4e..721eceeffc 100644 + } } diff --git a/src/main/java/net/minecraft/server/Chunk.java b/src/main/java/net/minecraft/server/Chunk.java -index c6a79644ef..8fdae388e3 100644 +index 4fe36bb71..3af311c6e 100644 --- a/src/main/java/net/minecraft/server/Chunk.java +++ b/src/main/java/net/minecraft/server/Chunk.java -@@ -532,6 +532,12 @@ public class Chunk implements IChunkAccess { +@@ -534,6 +534,12 @@ public class Chunk implements IChunkAccess { "Chunk coordinates: " + (this.loc.x * 16) + "," + (this.loc.z * 16)); e.printStackTrace(); ServerInternalException.reportInternalException(e); @@ -36,5 +36,5 @@ index c6a79644ef..8fdae388e3 100644 // CraftBukkit end } -- -2.25.0.windows.1 +2.25.0 diff --git a/Spigot-Server-Patches/0258-Mark-chunk-dirty-anytime-entities-change-to-guarante.patch b/Spigot-Server-Patches/0258-Mark-chunk-dirty-anytime-entities-change-to-guarante.patch index 3d2c54141..531d9958b 100644 --- a/Spigot-Server-Patches/0258-Mark-chunk-dirty-anytime-entities-change-to-guarante.patch +++ b/Spigot-Server-Patches/0258-Mark-chunk-dirty-anytime-entities-change-to-guarante.patch @@ -1,4 +1,4 @@ -From f2538725efa773c32f5c14be02a9c19ef3f931f3 Mon Sep 17 00:00:00 2001 +From de9e6201b6df14fa0dfc31a4fcb3037d9a626da3 Mon Sep 17 00:00:00 2001 From: Aikar Date: Mon, 23 Jul 2018 22:18:31 -0400 Subject: [PATCH] Mark chunk dirty anytime entities change to guarantee it @@ -6,7 +6,7 @@ Subject: [PATCH] Mark chunk dirty anytime entities change to guarantee it diff --git a/src/main/java/net/minecraft/server/Chunk.java b/src/main/java/net/minecraft/server/Chunk.java -index 8fdae388e3..28e5105ffe 100644 +index 3af311c6e..68cde3356 100644 --- a/src/main/java/net/minecraft/server/Chunk.java +++ b/src/main/java/net/minecraft/server/Chunk.java @@ -416,6 +416,7 @@ public class Chunk implements IChunkAccess { @@ -17,14 +17,14 @@ index 8fdae388e3..28e5105ffe 100644 } @Override -@@ -442,6 +443,7 @@ public class Chunk implements IChunkAccess { +@@ -443,6 +444,7 @@ public class Chunk implements IChunkAccess { return; } entityCounts.decrement(entity.getMinecraftKeyString()); + this.markDirty(); // Paper // Paper end + this.entities.remove(entity); // Paper } - -- -2.25.0.windows.1 +2.25.0 diff --git a/Spigot-Server-Patches/0259-Add-some-Debug-to-Chunk-Entity-slices.patch b/Spigot-Server-Patches/0259-Add-some-Debug-to-Chunk-Entity-slices.patch index 076355aa0..3edc9bf33 100644 --- a/Spigot-Server-Patches/0259-Add-some-Debug-to-Chunk-Entity-slices.patch +++ b/Spigot-Server-Patches/0259-Add-some-Debug-to-Chunk-Entity-slices.patch @@ -1,4 +1,4 @@ -From 0acebe52e93af5833c06aa7223868da0e572226e Mon Sep 17 00:00:00 2001 +From 45990e551bfbcb491cba48dac25b6b669428216c Mon Sep 17 00:00:00 2001 From: Aikar Date: Mon, 23 Jul 2018 22:44:23 -0400 Subject: [PATCH] Add some Debug to Chunk Entity slices @@ -9,7 +9,7 @@ This should hopefully avoid duplicate entities ever being created if the entity was to end up in 2 different chunk slices diff --git a/src/main/java/net/minecraft/server/Chunk.java b/src/main/java/net/minecraft/server/Chunk.java -index 28e5105ffe..2004f7fbe1 100644 +index 68cde3356..1d47e4737 100644 --- a/src/main/java/net/minecraft/server/Chunk.java +++ b/src/main/java/net/minecraft/server/Chunk.java @@ -407,6 +407,25 @@ public class Chunk implements IChunkAccess { @@ -46,8 +46,8 @@ index 28e5105ffe..2004f7fbe1 100644 this.markDirty(); // Paper } -@@ -439,6 +459,9 @@ public class Chunk implements IChunkAccess { - } +@@ -440,6 +460,9 @@ public class Chunk implements IChunkAccess { + // Paper start if (entity.currentChunk != null && entity.currentChunk.get() == this) entity.setCurrentChunk(null); + if (entitySlices[i] == entity.entitySlice) { @@ -57,7 +57,7 @@ index 28e5105ffe..2004f7fbe1 100644 return; } diff --git a/src/main/java/net/minecraft/server/Entity.java b/src/main/java/net/minecraft/server/Entity.java -index 8e23f336a8..e761f71487 100644 +index fcc47182c..09ec144eb 100644 --- a/src/main/java/net/minecraft/server/Entity.java +++ b/src/main/java/net/minecraft/server/Entity.java @@ -71,6 +71,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke @@ -69,5 +69,5 @@ index 8e23f336a8..e761f71487 100644 public com.destroystokyo.paper.loottable.PaperLootableInventoryData lootableData; // Paper -- -2.25.0.windows.1 +2.25.0 diff --git a/Spigot-Server-Patches/0264-Ignore-Dead-Entities-in-entityList-iteration.patch b/Spigot-Server-Patches/0264-Ignore-Dead-Entities-in-entityList-iteration.patch index 77b7cddf0..606270e83 100644 --- a/Spigot-Server-Patches/0264-Ignore-Dead-Entities-in-entityList-iteration.patch +++ b/Spigot-Server-Patches/0264-Ignore-Dead-Entities-in-entityList-iteration.patch @@ -1,4 +1,4 @@ -From 3993ccb409951da42b475f821c3e6134b3982777 Mon Sep 17 00:00:00 2001 +From 0a72bb4348272eee4bfd507865c781c5a5d198cc Mon Sep 17 00:00:00 2001 From: Aikar Date: Sat, 28 Jul 2018 12:18:27 -0400 Subject: [PATCH] Ignore Dead Entities in entityList iteration @@ -11,7 +11,7 @@ This will ensure that dead entities are skipped from iteration since they shouldn't of been in the list in the first place. diff --git a/src/main/java/com/destroystokyo/paper/PaperCommand.java b/src/main/java/com/destroystokyo/paper/PaperCommand.java -index eecf27370b..d704fc79c0 100644 +index eecf27370..d704fc79c 100644 --- a/src/main/java/com/destroystokyo/paper/PaperCommand.java +++ b/src/main/java/com/destroystokyo/paper/PaperCommand.java @@ -179,6 +179,7 @@ public class PaperCommand extends Command { @@ -23,10 +23,10 @@ index eecf27370b..d704fc79c0 100644 MutablePair> info = list.computeIfAbsent(key, k -> MutablePair.of(0, Maps.newHashMap())); ChunkCoordIntPair chunk = new ChunkCoordIntPair(e.getChunkX(), e.getChunkZ()); diff --git a/src/main/java/net/minecraft/server/Chunk.java b/src/main/java/net/minecraft/server/Chunk.java -index 2004f7fbe1..7ecff4443a 100644 +index 1d47e4737..c464d6962 100644 --- a/src/main/java/net/minecraft/server/Chunk.java +++ b/src/main/java/net/minecraft/server/Chunk.java -@@ -679,6 +679,7 @@ public class Chunk implements IChunkAccess { +@@ -681,6 +681,7 @@ public class Chunk implements IChunkAccess { while (iterator.hasNext()) { Entity entity1 = (Entity) iterator.next(); @@ -34,7 +34,7 @@ index 2004f7fbe1..7ecff4443a 100644 if (entity1.getBoundingBox().c(axisalignedbb) && entity1 != entity) { if (predicate == null || predicate.test(entity1)) { -@@ -716,6 +717,7 @@ public class Chunk implements IChunkAccess { +@@ -718,6 +719,7 @@ public class Chunk implements IChunkAccess { while (iterator.hasNext()) { T entity = (T) iterator.next(); // CraftBukkit - decompile error @@ -42,7 +42,7 @@ index 2004f7fbe1..7ecff4443a 100644 if ((entitytypes == null || entity.getEntityType() == entitytypes) && entity.getBoundingBox().c(axisalignedbb) && predicate.test(entity)) { list.add(entity); -@@ -737,6 +739,7 @@ public class Chunk implements IChunkAccess { +@@ -739,6 +741,7 @@ public class Chunk implements IChunkAccess { while (iterator.hasNext()) { T t0 = (T) iterator.next(); // CraftBukkit - decompile error @@ -51,7 +51,7 @@ index 2004f7fbe1..7ecff4443a 100644 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 09ec144eb6..4880ece947 100644 +index 09ec144eb..4880ece94 100644 --- a/src/main/java/net/minecraft/server/Entity.java +++ b/src/main/java/net/minecraft/server/Entity.java @@ -196,6 +196,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke @@ -63,7 +63,7 @@ index 09ec144eb6..4880ece947 100644 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 3d5a50ddcc..12cdb0cc9a 100644 +index 3d5a50ddc..12cdb0cc9 100644 --- a/src/main/java/net/minecraft/server/WorldServer.java +++ b/src/main/java/net/minecraft/server/WorldServer.java @@ -904,7 +904,7 @@ public class WorldServer extends World { @@ -92,7 +92,7 @@ index 3d5a50ddcc..12cdb0cc9a 100644 } diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java -index 89705e5ffa..fe91e08f22 100644 +index 89705e5ff..fe91e08f2 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java @@ -1005,6 +1005,7 @@ public class CraftWorld implements World { diff --git a/Spigot-Server-Patches/0393-Avoid-hopper-searches-if-there-are-no-items.patch b/Spigot-Server-Patches/0393-Avoid-hopper-searches-if-there-are-no-items.patch index 9304763c8..6cab89c64 100644 --- a/Spigot-Server-Patches/0393-Avoid-hopper-searches-if-there-are-no-items.patch +++ b/Spigot-Server-Patches/0393-Avoid-hopper-searches-if-there-are-no-items.patch @@ -1,4 +1,4 @@ -From 9bc42552b2b41e2263f1f39db6b9d0d3f819b91b Mon Sep 17 00:00:00 2001 +From 141837bed113227f781b7f984d04d9baf8e1587e Mon Sep 17 00:00:00 2001 From: CullanP Date: Thu, 3 Mar 2016 02:13:38 -0600 Subject: [PATCH] Avoid hopper searches if there are no items @@ -14,7 +14,7 @@ And since minecart hoppers are used _very_ rarely near we can avoid alot of sear Combined, this adds up a lot. diff --git a/src/main/java/net/minecraft/server/Chunk.java b/src/main/java/net/minecraft/server/Chunk.java -index 3fdcc2e5d4..59d8a8719e 100644 +index 06b4dc628..37b12daff 100644 --- a/src/main/java/net/minecraft/server/Chunk.java +++ b/src/main/java/net/minecraft/server/Chunk.java @@ -84,6 +84,10 @@ public class Chunk implements IChunkAccess { @@ -42,7 +42,7 @@ index 3fdcc2e5d4..59d8a8719e 100644 entity.entitySlice = this.entitySlices[k]; // Paper this.markDirty(); // Paper } -@@ -466,6 +477,11 @@ public class Chunk implements IChunkAccess { +@@ -467,6 +478,11 @@ public class Chunk implements IChunkAccess { if (!this.entitySlices[i].remove(entity)) { return; } @@ -54,7 +54,7 @@ index 3fdcc2e5d4..59d8a8719e 100644 entityCounts.decrement(entity.getMinecraftKeyString()); this.markDirty(); // Paper // Paper end -@@ -735,9 +751,29 @@ public class Chunk implements IChunkAccess { +@@ -737,9 +753,29 @@ public class Chunk implements IChunkAccess { i = MathHelper.clamp(i, 0, this.entitySlices.length - 1); j = MathHelper.clamp(j, 0, this.entitySlices.length - 1); @@ -85,7 +85,7 @@ index 3fdcc2e5d4..59d8a8719e 100644 T t0 = (T) iterator.next(); // CraftBukkit - decompile error if (t0.shouldBeRemoved) continue; // Paper diff --git a/src/main/java/net/minecraft/server/IEntitySelector.java b/src/main/java/net/minecraft/server/IEntitySelector.java -index 498f381099..a2d1ef3602 100644 +index 498f38109..a2d1ef360 100644 --- a/src/main/java/net/minecraft/server/IEntitySelector.java +++ b/src/main/java/net/minecraft/server/IEntitySelector.java @@ -11,6 +11,7 @@ public final class IEntitySelector { @@ -97,5 +97,5 @@ index 498f381099..a2d1ef3602 100644 return entity instanceof IInventory && entity.isAlive(); }; -- -2.25.0.windows.1 +2.25.0