From 15bf6a21032fe9ea99540f50cef6b81e6b1ca07f Mon Sep 17 00:00:00 2001 From: Simon Gardling Date: Thu, 11 Mar 2021 11:56:46 -0500 Subject: [PATCH] Updated Upstream and Sidestream(s) (Paper/Tuinity) (#430) * Updated Upstream and Sidestream(s) (Paper) Upstream/An Sidestream has released updates that appears to apply and compile correctly This update has NOT been tested by YatopiaMC and as with ANY update, please do your own testing. Paper Changes: 808bd9198 Add fast alternative constructor for Vector3f (#5339) e849c51da fix #5336 0b25bacfc fix patch 'Remove streams from SensorNearest' (fixes #5330) 4d287e31c Use Adventure for `/version` command feedback, add copy to clipboard click event (#5333) * Updated Upstream and Sidestream(s) (Tuinity) Upstream/An Sidestream has released updates that appears to apply and compile correctly This update has NOT been tested by YatopiaMC and as with ANY update, please do your own testing. Tuinity Changes: 19ac660 Move region chunk unload & poi unload hook up 38ad5a1 Do not run close logic for inventories on chunk unload fb75a6f Do not allow the server to unload chunks at request of plugins --- PATCHES.md | 3 +- Paper | 2 +- ...-priority-of-checks-in-chunk-ticking.patch | 2 +- ...timize-random-calls-in-chunk-ticking.patch | 6 +- .../0015-Reduce-memory-allocations.patch | 209 ----------------- ...kip-POI-finding-if-stuck-in-vehicle.patch} | 0 ...ler.patch => 0016-Airplane-Profiler.patch} | 0 ... 0017-Multithreaded-entity-tracking.patch} | 32 +-- .../0003-dont-load-chunks-for-physics.patch | 2 +- .../server/0001-Origami-Server-Config.patch | 2 +- ...oc-warnings-missing-param-and-return.patch | 8 +- .../Purpur/patches/server/0007-AFK-API.patch | 8 +- .../0015-Player-invulnerabilities.patch | 4 +- .../0026-Zombie-horse-naturally-spawn.patch | 2 +- .../server/0044-Signs-allow-color-codes.patch | 2 +- .../server/0046-Controllable-Minecarts.patch | 2 +- ...048-Players-should-not-cram-to-death.patch | 2 +- ...Add-player-death-exp-control-options.patch | 4 +- ...leport-to-spawn-if-outside-world-bor.patch | 4 +- .../server/0097-Add-no-tick-block-list.patch | 2 +- .../Purpur/patches/server/0101-Ridables.patch | 8 +- ...ggling-special-MobSpawners-per-world.patch | 2 +- .../0116-Configurable-daylight-cycle.patch | 2 +- ...20-Add-tablist-suffix-option-for-afk.patch | 4 +- ...-check-to-EntityDamagedByEntityEvent.patch | 6 +- .../0136-Add-boat-fall-damage-config.patch | 2 +- ...therite-armor-grants-fire-resistance.patch | 2 +- .../server/0162-Fix-stuck-in-portals.patch | 2 +- ...-to-ignore-nearby-mobs-when-sleeping.patch | 2 +- .../patches/server/0004-Util-patch.patch | 16 +- .../server/0008-Add-soft-async-catcher.patch | 8 +- .../0012-Update-version-fetcher-repo.patch | 18 +- ...-use-NORMAL-priority-rather-than-LOW.patch | 4 +- ...0-Make-CallbackExecutor-strict-again.patch | 2 +- ...ticking-chunk-map-for-entity-tracker.patch | 4 +- ...ework-PlayerChunk-main-thread-checks.patch | 4 +- ...ket-level-changes-while-unloading-pl.patch | 10 +- .../0047-Optimise-nearby-player-lookups.patch | 2 +- ...ayerchunkmap-instance-in-light-threa.patch | 2 +- .../0061-Rewrite-the-light-engine.patch | 4 +- .../0062-Optimise-WorldServer-notify.patch | 2 +- .../0063-Actually-unload-POI-data.patch | 22 +- ...chunks-refusing-to-unload-at-low-TPS.patch | 4 +- ...cker-use-highest-range-of-passengers.patch | 4 +- ...-server-to-unload-chunks-at-request-.patch | 23 ++ ...-logic-for-inventories-on-chunk-unlo.patch | 68 ++++++ patches/server/0002-Brandings.patch | 215 +++++++++--------- ...0019-Optimize-TileEntity-load-unload.patch | 2 +- ...ze-some-stuff-in-WorldServer-ticking.patch | 8 +- ...ghly-optimize-VillagePlace-filtering.patch | 2 +- .../0029-Nuke-streams-off-BlockPosition.patch | 2 +- ...-Fix-LightEngineThreaded-memory-leak.patch | 4 +- ...st-command-for-multiple-additions-re.patch | 4 +- .../server/0036-PlayerAttackEntityEvent.patch | 4 +- .../0048-Smarter-statistics-ticking.patch | 2 +- ...0049-Configurable-criterion-triggers.patch | 2 +- .../0060-Suspected-plugins-report.patch | 2 +- upstream/Tuinity | 2 +- upstreamCommits/Tuinity | 2 +- upstreamConfig/0003-Airplane.properties | 2 +- 60 files changed, 339 insertions(+), 437 deletions(-) delete mode 100644 patches/Airplane/patches/server/0015-Reduce-memory-allocations.patch rename patches/Airplane/patches/server/{0016-Skip-POI-finding-if-stuck-in-vehicle.patch => 0015-Skip-POI-finding-if-stuck-in-vehicle.patch} (100%) rename patches/Airplane/patches/server/{0017-Airplane-Profiler.patch => 0016-Airplane-Profiler.patch} (100%) rename patches/Airplane/patches/server/{0018-Multithreaded-entity-tracking.patch => 0017-Multithreaded-entity-tracking.patch} (94%) create mode 100644 patches/Tuinity/patches/server/0069-Do-not-allow-the-server-to-unload-chunks-at-request-.patch create mode 100644 patches/Tuinity/patches/server/0070-Do-not-run-close-logic-for-inventories-on-chunk-unlo.patch diff --git a/PATCHES.md b/PATCHES.md index 96872db2..1fcdecf4 100644 --- a/PATCHES.md +++ b/PATCHES.md @@ -149,9 +149,11 @@ # Patches | server | Dispenser curse of binding protection | William Blake Galbreath | | | server | Dispensers place anvils option | William Blake Galbreath | | | server | Distance manager tick timings | Spottedleaf | | +| server | Do not allow the server to unload chunks at request of | Spottedleaf | | | server | Do not allow ticket level changes while unloading | Spottedleaf | | | server | Do not load chunks during a crash report | Spottedleaf | | | server | Do not retain playerchunkmap instance in light thread factory | Spottedleaf | | +| server | Do not run close logic for inventories on chunk unload | Spottedleaf | | | server | Do not run raytrace logic for AIR | Spottedleaf | | | server | Don't allow StructureLocateEvent to change worlds | Spottedleaf | | | server | Don't get entity equipment if not needed | Paul Sauve | | @@ -319,7 +321,6 @@ # Patches | server | Reduce allocs & improve perf of StructureManager | Paul Sauve | | | server | Reduce chunk loading & lookups | Paul Sauve | | | server | Reduce iterator allocation from chunk gen | Spottedleaf | | -| server | Reduce memory allocations | Paul Sauve | | | server | Reduce pathfinder branches | Spottedleaf | | | server | Reduce projectile chunk loading | Paul Sauve | | | server | Remove some streams and object allocations | Phoenix616 | | diff --git a/Paper b/Paper index eb11845f..808bd919 160000 --- a/Paper +++ b/Paper @@ -1 +1 @@ -Subproject commit eb11845f87197d08a68bf083e509679bead010ab +Subproject commit 808bd9198664938af58e98e622c41902343587e0 diff --git a/patches/Airplane/patches/server/0007-Swap-priority-of-checks-in-chunk-ticking.patch b/patches/Airplane/patches/server/0007-Swap-priority-of-checks-in-chunk-ticking.patch index faf080ac..19a008a8 100644 --- a/patches/Airplane/patches/server/0007-Swap-priority-of-checks-in-chunk-ticking.patch +++ b/patches/Airplane/patches/server/0007-Swap-priority-of-checks-in-chunk-ticking.patch @@ -23,7 +23,7 @@ You should have received a copy of the GNU General Public License along with this program. If not, see . diff --git a/src/main/java/net/minecraft/server/WorldServer.java b/src/main/java/net/minecraft/server/WorldServer.java -index 5d92398369862881d997c270671ddb6b78ed2cb4..6694a669f9fbae0dce857e97651ed527f5481427 100644 +index 2c73ddae3df32eea175fb1779104441b49796939..9ae0d37d41700f9fb1e13d1b61b07c7bc09b9d75 100644 --- a/src/main/java/net/minecraft/server/WorldServer.java +++ b/src/main/java/net/minecraft/server/WorldServer.java @@ -1134,7 +1134,7 @@ public class WorldServer extends World implements GeneratorAccessSeed { diff --git a/patches/Airplane/patches/server/0009-Optimize-random-calls-in-chunk-ticking.patch b/patches/Airplane/patches/server/0009-Optimize-random-calls-in-chunk-ticking.patch index 810cbe9c..3c5501a3 100644 --- a/patches/Airplane/patches/server/0009-Optimize-random-calls-in-chunk-ticking.patch +++ b/patches/Airplane/patches/server/0009-Optimize-random-calls-in-chunk-ticking.patch @@ -65,10 +65,10 @@ index 8fda4702764e80dae93ef9c0eb53abc198642ab1..0924f6b484468f3cf3c2d405101c0158 public org.bukkit.Chunk bukkitChunk; diff --git a/src/main/java/net/minecraft/server/ChunkProviderServer.java b/src/main/java/net/minecraft/server/ChunkProviderServer.java -index 18270d44185b0ec41b9b6e1d2135e7aae3b33261..e8a6bc2654e840395fee70d79695c5a395a4fc1b 100644 +index e26389d8d9ee4fedb32767fce3aed071af412304..9cf3cd69661a140d34d17195c2cd6dc299c95ddf 100644 --- a/src/main/java/net/minecraft/server/ChunkProviderServer.java +++ b/src/main/java/net/minecraft/server/ChunkProviderServer.java -@@ -973,6 +973,7 @@ public class ChunkProviderServer extends IChunkProvider { +@@ -974,6 +974,7 @@ public class ChunkProviderServer extends IChunkProvider { } // Paper end - optimize isOutisdeRange this.world.getMethodProfiler().enter("pollingChunks"); @@ -77,7 +77,7 @@ index 18270d44185b0ec41b9b6e1d2135e7aae3b33261..e8a6bc2654e840395fee70d79695c5a3 boolean flag2 = world.ticksPerAnimalSpawns != 0L && worlddata.getTime() % world.ticksPerAnimalSpawns == 0L; // CraftBukkit diff --git a/src/main/java/net/minecraft/server/WorldServer.java b/src/main/java/net/minecraft/server/WorldServer.java -index 6694a669f9fbae0dce857e97651ed527f5481427..dd9ae27a208b5e55a1c473eda6e068a0fc3eb64f 100644 +index 9ae0d37d41700f9fb1e13d1b61b07c7bc09b9d75..fe6611e480c18e97061268690d067a811b13bb1b 100644 --- a/src/main/java/net/minecraft/server/WorldServer.java +++ b/src/main/java/net/minecraft/server/WorldServer.java @@ -1124,6 +1124,8 @@ public class WorldServer extends World implements GeneratorAccessSeed { diff --git a/patches/Airplane/patches/server/0015-Reduce-memory-allocations.patch b/patches/Airplane/patches/server/0015-Reduce-memory-allocations.patch deleted file mode 100644 index 67fb5195..00000000 --- a/patches/Airplane/patches/server/0015-Reduce-memory-allocations.patch +++ /dev/null @@ -1,209 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: Paul Sauve -Date: Tue, 9 Feb 2021 19:05:58 -0600 -Subject: [PATCH] Reduce memory allocations - - -diff --git a/src/main/java/net/minecraft/server/BlockDirtSnowSpreadable.java b/src/main/java/net/minecraft/server/BlockDirtSnowSpreadable.java -index 7b29d47dfdef7611db58068af285f76d92a9f12a..6c5d96853d47850b81ce85e56a516c554819ef25 100644 ---- a/src/main/java/net/minecraft/server/BlockDirtSnowSpreadable.java -+++ b/src/main/java/net/minecraft/server/BlockDirtSnowSpreadable.java -@@ -43,8 +43,14 @@ public abstract class BlockDirtSnowSpreadable extends BlockDirtSnow { - if (worldserver.getLightLevel(blockposition.up()) >= 9) { - IBlockData iblockdata1 = this.getBlockData(); - -+ // Airplane start - use mutable position -+ BlockPosition.MutableBlockPosition blockposition1 = new BlockPosition.MutableBlockPosition(); - for (int i = 0; i < 4; ++i) { -+ blockposition1.setValues(blockposition).addValues(random.nextInt(3) - 1, random.nextInt(5) - 3, random.nextInt(3) - 1); -+ /* - BlockPosition blockposition1 = blockposition.b(random.nextInt(3) - 1, random.nextInt(5) - 3, random.nextInt(3) - 1); -+ */ -+ // Airplane end - - if (worldserver.getType(blockposition1).a(Blocks.DIRT) && c(iblockdata1, (IWorldReader) worldserver, blockposition1)) { - org.bukkit.craftbukkit.event.CraftEventFactory.handleBlockSpreadEvent(worldserver, blockposition, blockposition1, (IBlockData) iblockdata1.set(BlockDirtSnowSpreadable.a, worldserver.getType(blockposition1.up()).a(Blocks.SNOW))); // CraftBukkit -diff --git a/src/main/java/net/minecraft/server/BlockPosition.java b/src/main/java/net/minecraft/server/BlockPosition.java -index bc61aaff65a7dc1e7534452b285953b83adb7000..f38382cc681f03d9a6a0efa85f045e3770398739 100644 ---- a/src/main/java/net/minecraft/server/BlockPosition.java -+++ b/src/main/java/net/minecraft/server/BlockPosition.java -@@ -438,6 +438,14 @@ public class BlockPosition extends BaseBlockPosition { - public BlockPosition b(int i, int j, int k) { - return super.b(i, j, k).immutableCopy(); - } -+ // Airplane start - version of b that doesn't copy -+ public BlockPosition addValues(int x, int y, int z) { -+ ((BaseBlockPosition)this).a += x; -+ ((BaseBlockPosition)this).b += y; -+ ((BaseBlockPosition)this).e += z; -+ return this; -+ } -+ // Airplane end - - @Override - public BlockPosition shift(EnumDirection enumdirection, int i) { -diff --git a/src/main/java/net/minecraft/server/EntityTypes.java b/src/main/java/net/minecraft/server/EntityTypes.java -index 730b91680b226df624180d64019c2984d0e29422..60ddae95c287aea071a8f277e570c2b0f25f9feb 100644 ---- a/src/main/java/net/minecraft/server/EntityTypes.java -+++ b/src/main/java/net/minecraft/server/EntityTypes.java -@@ -140,6 +140,8 @@ public class EntityTypes { - public void setEntitySize(EntitySize entitySize) { this.br = entitySize; } // Purpur - OBFHELPER - private EntitySize br; // Purpur - remove final - -+ public java.util.function.Supplier getEntityName = () -> IRegistry.ENTITY_TYPE.getKey(this).toString(); // Airplane - create lambda ones -+ - private static EntityTypes a(String s, EntityTypes.Builder entitytypes_builder) { // CraftBukkit - decompile error - return (EntityTypes) IRegistry.a((IRegistry) IRegistry.ENTITY_TYPE, s, (Object) entitytypes_builder.a(s)); - } -diff --git a/src/main/java/net/minecraft/server/PlayerChunkMap.java b/src/main/java/net/minecraft/server/PlayerChunkMap.java -index f9482f19549074e04fc4c1e4d05612a2ea23354c..e7c373e28054c49459a44faee77301e448baea44 100644 ---- a/src/main/java/net/minecraft/server/PlayerChunkMap.java -+++ b/src/main/java/net/minecraft/server/PlayerChunkMap.java -@@ -642,7 +642,9 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d { - return d2 * d2 + d3 * d3; - } - -- private static int b(ChunkCoordIntPair chunkcoordintpair, EntityPlayer entityplayer, boolean flag) { -+ // Airplane start - create copy that accepts x/z instead of allocating pair -+ private static int b(ChunkCoordIntPair chunkcoordintpair, EntityPlayer entityplayer, boolean flag) { return someDistanceCalculation(chunkcoordintpair.x, chunkcoordintpair.z, entityplayer, flag); } -+ private static int someDistanceCalculation(int x, int z, EntityPlayer entityplayer, boolean flag) { - int i; - int j; - -@@ -656,12 +658,16 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d { - j = MathHelper.floor(entityplayer.locZ() / 16.0D); - } - -- return a(chunkcoordintpair, i, j); -+ return someOtherDistanceCalculation(x, z, i, j); -+ // Airplane end - } - -- private static int a(ChunkCoordIntPair chunkcoordintpair, int i, int j) { -- int k = chunkcoordintpair.x - i; -- int l = chunkcoordintpair.z - j; -+ // Airplane start - create copy that accepts x/z instead of allocating pair -+ private static int a(ChunkCoordIntPair chunkcoordintpair, int i, int j) { return someOtherDistanceCalculation(chunkcoordintpair.x, chunkcoordintpair.z, i, j); } -+ private static int someOtherDistanceCalculation(int x, int z, int i, int j) { -+ int k = x - i; -+ int l = z - j; -+ // Airplane end - - return Math.max(Math.abs(k), Math.abs(l)); - } -@@ -2500,11 +2506,17 @@ Sections go from 0..16. Now whenever a section is not empty, it can potentially - boolean flag1 = this.tracker.attachedToPlayer; - - if (!flag1) { -+ // Airplane start - use int/longs instead of ChunkCoordIntPair -+ /* - ChunkCoordIntPair chunkcoordintpair = new ChunkCoordIntPair(this.tracker.chunkX, this.tracker.chunkZ); -- PlayerChunk playerchunk = PlayerChunkMap.this.getVisibleChunk(chunkcoordintpair.pair()); -+ */ -+ int x = this.tracker.chunkX, z = this.tracker.chunkZ; -+ long chunkcoordintpair = ChunkCoordIntPair.pair(x, z); -+ PlayerChunk playerchunk = PlayerChunkMap.this.getVisibleChunk(chunkcoordintpair); - - if (playerchunk != null && playerchunk.getSendingChunk() != null) { // Paper - no-tick view distance -- flag1 = PlayerChunkMap.b(chunkcoordintpair, entityplayer, false) <= PlayerChunkMap.this.viewDistance; -+ flag1 = PlayerChunkMap.someDistanceCalculation(x, z, entityplayer, false) <= PlayerChunkMap.this.viewDistance; -+ // Airplane end - } - } - -@@ -2534,8 +2546,10 @@ Sections go from 0..16. Now whenever a section is not empty, it can potentially - } - - private int b() { -+ // Airplane start -+ int i = this.trackingDistance; // move out of if statement -+ if (!this.tracker.passengers.isEmpty()) { - Collection collection = this.tracker.getAllPassengers(); -- int i = this.trackingDistance; - Iterator iterator = collection.iterator(); - - while (iterator.hasNext()) { -@@ -2547,6 +2561,8 @@ Sections go from 0..16. Now whenever a section is not empty, it can potentially - i = j; - } - } -+ } -+ // Airplane end - - return this.a(i); - } -diff --git a/src/main/java/net/minecraft/server/World.java b/src/main/java/net/minecraft/server/World.java -index 44f52fb6e3aedeadec4be3979ad1c625643cf9fa..8c162c5fdeaffccc9a28b592e030971fe51cafb3 100644 ---- a/src/main/java/net/minecraft/server/World.java -+++ b/src/main/java/net/minecraft/server/World.java -@@ -1086,19 +1086,19 @@ public abstract class World implements GeneratorAccess, AutoCloseable { - - public void a(Consumer consumer, Entity entity) { - try { -- consumer.accept(entity); -+ consumer.accept(entity); // Airplane - error on change - } catch (Throwable throwable) { - if (throwable instanceof ThreadDeath) throw throwable; // Paper - // Paper start - Prevent tile entity and entity crashes - String msg = "Entity threw exception at " + entity.world.getWorld().getName() + ":" + entity.locX() + "," + entity.locY() + "," + entity.locZ(); - System.err.println(msg); - throwable.printStackTrace(); -- getServer().getPluginManager().callEvent(new ServerExceptionEvent(new ServerInternalException(msg, throwable))); -+ getServer().getPluginManager().callEvent(new ServerExceptionEvent(new ServerInternalException(msg, throwable))); // Airplane - error on change - entity.dead = true; - return; - // Paper end - } -- MinecraftServer.getServer().executeMidTickTasks(); // Tuinity - execute chunk tasks mid tick -+ MinecraftServer.getServer().executeMidTickTasks(); // Tuinity - execute chunk tasks mid tick // Airplane - error on change - } - // Paper start - Prevent armor stands from doing entity lookups - @Override -diff --git a/src/main/java/net/minecraft/server/WorldServer.java b/src/main/java/net/minecraft/server/WorldServer.java -index dd9ae27a208b5e55a1c473eda6e068a0fc3eb64f..d4672e7fa899a39bae2d9179472b22db28a58f19 100644 ---- a/src/main/java/net/minecraft/server/WorldServer.java -+++ b/src/main/java/net/minecraft/server/WorldServer.java -@@ -1012,7 +1012,28 @@ public class WorldServer extends World implements GeneratorAccessSeed { - - gameprofilerfiller.enter("tick"); - if (!entity.dead && !(entity instanceof EntityComplexPart)) { -+ // Airplane start - inline this.a to prevent creation of lambda -+ /* - this.a(this::entityJoinedWorld, entity); -+ */ -+ boolean doMidTick = false; // usually there's a returns in the catch, so treat it like that -+ try { -+ this.entityJoinedWorld(entity); -+ doMidTick = true; -+ } catch (Throwable throwable) { -+ if (throwable instanceof ThreadDeath) throw throwable; // Paper -+ // Paper start - Prevent tile entity and entity crashes -+ String msg = "Entity threw exception at " + entity.world.getWorld().getName() + ":" + entity.locX() + "," + entity.locY() + "," + entity.locZ(); -+ System.err.println(msg); -+ throwable.printStackTrace(); -+ getServer().getPluginManager().callEvent(new com.destroystokyo.paper.event.server.ServerExceptionEvent(new com.destroystokyo.paper.exception.ServerInternalException(msg, throwable))); -+ entity.dead = true; -+ // Paper end -+ } -+ if (doMidTick) { -+ MinecraftServer.getServer().executeMidTickTasks(); // Tuinity - execute chunk tasks mid tick -+ } -+ // Airplane end - } - - gameprofilerfiller.exit(); -@@ -1376,9 +1397,14 @@ public class WorldServer extends World implements GeneratorAccessSeed { - ++entity.ticksLived; - GameProfilerFiller gameprofilerfiller = this.getMethodProfiler(); - -+ // Airplane start - create debug lambda once, todo do we even WANT the method profiler? -+ /* - gameprofilerfiller.a(() -> { - return IRegistry.ENTITY_TYPE.getKey(entity.getEntityType()).toString(); - }); -+ */ -+ gameprofilerfiller.a(entity.getEntityType().getEntityName); -+ // Airplane end - gameprofilerfiller.c("tickNonPassenger"); - if (isActive) { // Paper - EAR 2 - TimingHistory.activatedEntityTicks++; // Paper diff --git a/patches/Airplane/patches/server/0016-Skip-POI-finding-if-stuck-in-vehicle.patch b/patches/Airplane/patches/server/0015-Skip-POI-finding-if-stuck-in-vehicle.patch similarity index 100% rename from patches/Airplane/patches/server/0016-Skip-POI-finding-if-stuck-in-vehicle.patch rename to patches/Airplane/patches/server/0015-Skip-POI-finding-if-stuck-in-vehicle.patch diff --git a/patches/Airplane/patches/server/0017-Airplane-Profiler.patch b/patches/Airplane/patches/server/0016-Airplane-Profiler.patch similarity index 100% rename from patches/Airplane/patches/server/0017-Airplane-Profiler.patch rename to patches/Airplane/patches/server/0016-Airplane-Profiler.patch diff --git a/patches/Airplane/patches/server/0018-Multithreaded-entity-tracking.patch b/patches/Airplane/patches/server/0017-Multithreaded-entity-tracking.patch similarity index 94% rename from patches/Airplane/patches/server/0018-Multithreaded-entity-tracking.patch rename to patches/Airplane/patches/server/0017-Multithreaded-entity-tracking.patch index 305873b5..3a9a5a04 100644 --- a/patches/Airplane/patches/server/0018-Multithreaded-entity-tracking.patch +++ b/patches/Airplane/patches/server/0017-Multithreaded-entity-tracking.patch @@ -181,7 +181,7 @@ index 0924f6b484468f3cf3c2d405101c0158c12d69e6..1d65d884d1f31a73333e4cf6a9ce30d7 this(world, chunkcoordintpair, biomestorage, ChunkConverter.a, TickListEmpty.b(), TickListEmpty.b(), 0L, (ChunkSection[]) null, (Consumer) null); } diff --git a/src/main/java/net/minecraft/server/EntityPlayer.java b/src/main/java/net/minecraft/server/EntityPlayer.java -index bf81977bfef4ddfed10f4bf4422e230d67e8199f..4c42d7fb44e2c82f516e37556b7c20e7380c7f13 100644 +index 93bca6a52dd01d9ad524a03d90c7ec79d00d2c56..d6c6a389cf214f2f8cbb343fc8106ab7d0845950 100644 --- a/src/main/java/net/minecraft/server/EntityPlayer.java +++ b/src/main/java/net/minecraft/server/EntityPlayer.java @@ -52,7 +52,7 @@ public class EntityPlayer extends EntityHuman implements ICrafting { @@ -287,10 +287,10 @@ index 2f758b3d3eaf5d5781a2072d0f3f7442b73cb9a8..63bcd1b61d0485b064d619ddfa0e2010 if (this.tracker instanceof EntityPlayer) { ((EntityPlayer) this.tracker).playerConnection.sendPacket(packet); diff --git a/src/main/java/net/minecraft/server/PlayerChunkMap.java b/src/main/java/net/minecraft/server/PlayerChunkMap.java -index e7c373e28054c49459a44faee77301e448baea44..60aa3813361947721e847ff11e50bfbc0f4a10cd 100644 +index 285e976d4a655fb61e70883ae89f974812be7152..5c3e0cadb02fd6e4d55ae0faa4618d78f0433a52 100644 --- a/src/main/java/net/minecraft/server/PlayerChunkMap.java +++ b/src/main/java/net/minecraft/server/PlayerChunkMap.java -@@ -728,6 +728,11 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d { +@@ -722,6 +722,11 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d { return (PlayerChunk) (this.hasPendingVisibleUpdate ? this.pendingVisibleChunks.get(i) : ((ProtectedVisibleChunksMap)this.visibleChunks).safeGet(i)); // Paper end } @@ -302,7 +302,7 @@ index e7c373e28054c49459a44faee77301e448baea44..60aa3813361947721e847ff11e50bfbc protected final IntSupplier getPrioritySupplier(long i) { return c(i); } // Paper - OBFHELPER protected IntSupplier c(long i) { -@@ -2127,10 +2132,30 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d { +@@ -2124,10 +2129,30 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d { entity.tracker = null; // Paper - We're no longer tracked } @@ -333,7 +333,7 @@ index e7c373e28054c49459a44faee77301e448baea44..60aa3813361947721e847ff11e50bfbc com.tuinity.tuinity.util.maplist.IteratorSafeOrderedReferenceSet.Iterator iterator = this.world.getChunkProvider().entityTickingChunks.iterator(); try { while (iterator.hasNext()) { -@@ -2392,7 +2417,7 @@ Sections go from 0..16. Now whenever a section is not empty, it can potentially +@@ -2389,7 +2414,7 @@ Sections go from 0..16. Now whenever a section is not empty, it can potentially public class EntityTracker { final EntityTrackerEntry trackerEntry; // Paper - private -> package private @@ -342,7 +342,7 @@ index e7c373e28054c49459a44faee77301e448baea44..60aa3813361947721e847ff11e50bfbc private final int trackingDistance; private SectionPosition e; // Paper start -@@ -2411,7 +2436,9 @@ Sections go from 0..16. Now whenever a section is not empty, it can potentially +@@ -2408,7 +2433,9 @@ Sections go from 0..16. Now whenever a section is not empty, it can potentially // Paper start - use distance map to optimise tracker com.destroystokyo.paper.util.misc.PooledLinkedHashSets.PooledObjectLinkedOpenHashSet lastTrackerCandidates; @@ -353,7 +353,7 @@ index e7c373e28054c49459a44faee77301e448baea44..60aa3813361947721e847ff11e50bfbc com.destroystokyo.paper.util.misc.PooledLinkedHashSets.PooledObjectLinkedOpenHashSet oldTrackerCandidates = this.lastTrackerCandidates; this.lastTrackerCandidates = newTrackerCandidates; -@@ -2452,7 +2479,13 @@ Sections go from 0..16. Now whenever a section is not empty, it can potentially +@@ -2449,7 +2476,13 @@ Sections go from 0..16. Now whenever a section is not empty, it can potentially return this.tracker.getId(); } @@ -368,7 +368,7 @@ index e7c373e28054c49459a44faee77301e448baea44..60aa3813361947721e847ff11e50bfbc Iterator iterator = this.trackedPlayers.iterator(); while (iterator.hasNext()) { -@@ -2464,6 +2497,12 @@ Sections go from 0..16. Now whenever a section is not empty, it can potentially +@@ -2461,6 +2494,12 @@ Sections go from 0..16. Now whenever a section is not empty, it can potentially } public void broadcastIncludingSelf(Packet packet) { @@ -381,7 +381,7 @@ index e7c373e28054c49459a44faee77301e448baea44..60aa3813361947721e847ff11e50bfbc this.broadcast(packet); if (this.tracker instanceof EntityPlayer) { ((EntityPlayer) this.tracker).playerConnection.sendPacket(packet); -@@ -2490,8 +2529,8 @@ Sections go from 0..16. Now whenever a section is not empty, it can potentially +@@ -2487,8 +2526,8 @@ Sections go from 0..16. Now whenever a section is not empty, it can potentially } @@ -392,12 +392,12 @@ index e7c373e28054c49459a44faee77301e448baea44..60aa3813361947721e847ff11e50bfbc if (entityplayer != this.tracker) { // Paper start - remove allocation of Vec3D here //Vec3D vec3d = entityplayer.getPositionVector().d(this.tracker.getPositionVector()); // MC-155077, SPIGOT-5113 -@@ -2512,7 +2551,7 @@ Sections go from 0..16. Now whenever a section is not empty, it can potentially - */ - int x = this.tracker.chunkX, z = this.tracker.chunkZ; - long chunkcoordintpair = ChunkCoordIntPair.pair(x, z); -- PlayerChunk playerchunk = PlayerChunkMap.this.getVisibleChunk(chunkcoordintpair); -+ PlayerChunk playerchunk = PlayerChunkMap.this.trackerGetVisibleChunk(chunkcoordintpair); // Airplane +@@ -2504,7 +2543,7 @@ Sections go from 0..16. Now whenever a section is not empty, it can potentially + + if (!flag1) { + ChunkCoordIntPair chunkcoordintpair = new ChunkCoordIntPair(this.tracker.chunkX, this.tracker.chunkZ); +- PlayerChunk playerchunk = PlayerChunkMap.this.getVisibleChunk(chunkcoordintpair.pair()); ++ PlayerChunk playerchunk = PlayerChunkMap.this.trackerGetVisibleChunk(chunkcoordintpair.pair()); // Airplane if (playerchunk != null && playerchunk.getSendingChunk() != null) { // Paper - no-tick view distance - flag1 = PlayerChunkMap.someDistanceCalculation(x, z, entityplayer, false) <= PlayerChunkMap.this.viewDistance; + flag1 = PlayerChunkMap.b(chunkcoordintpair, entityplayer, false) <= PlayerChunkMap.this.viewDistance; diff --git a/patches/Empirecraft/patches/server/0003-dont-load-chunks-for-physics.patch b/patches/Empirecraft/patches/server/0003-dont-load-chunks-for-physics.patch index db6305b5..746a1aad 100644 --- a/patches/Empirecraft/patches/server/0003-dont-load-chunks-for-physics.patch +++ b/patches/Empirecraft/patches/server/0003-dont-load-chunks-for-physics.patch @@ -19,7 +19,7 @@ index 657885cdaa086293f6b5aa6f3058acd16df0ba35..8724ad342bec7c733b3c825bd62dbfa5 Block.a(iblockdata, iblockdata1, generatoraccess, blockposition_mutableblockposition, i, j); diff --git a/src/main/java/net/minecraft/server/World.java b/src/main/java/net/minecraft/server/World.java -index 8c162c5fdeaffccc9a28b592e030971fe51cafb3..bfc7a1c234b5fe4aa58b48c3673f473d26561077 100644 +index 44f52fb6e3aedeadec4be3979ad1c625643cf9fa..0856d7389f9fec20885ee38bac242fb91834c66c 100644 --- a/src/main/java/net/minecraft/server/World.java +++ b/src/main/java/net/minecraft/server/World.java @@ -805,7 +805,8 @@ public abstract class World implements GeneratorAccess, AutoCloseable { diff --git a/patches/Origami/patches/server/0001-Origami-Server-Config.patch b/patches/Origami/patches/server/0001-Origami-Server-Config.patch index f75d464a..e6dbba92 100644 --- a/patches/Origami/patches/server/0001-Origami-Server-Config.patch +++ b/patches/Origami/patches/server/0001-Origami-Server-Config.patch @@ -129,7 +129,7 @@ index 0000000000000000000000000000000000000000..fe7330fabe386966c2d203a190a00a78 +} \ No newline at end of file diff --git a/src/main/java/net/minecraft/server/World.java b/src/main/java/net/minecraft/server/World.java -index bfc7a1c234b5fe4aa58b48c3673f473d26561077..4ffaf36b40b32be25bd1944d8b8ddbc342256947 100644 +index 0856d7389f9fec20885ee38bac242fb91834c66c..6007121ca9791bfc8e68b0354ad9005a7369d389 100644 --- a/src/main/java/net/minecraft/server/World.java +++ b/src/main/java/net/minecraft/server/World.java @@ -97,6 +97,8 @@ public abstract class World implements GeneratorAccess, AutoCloseable { diff --git a/patches/Purpur/patches/api/0031-Fix-javadoc-warnings-missing-param-and-return.patch b/patches/Purpur/patches/api/0031-Fix-javadoc-warnings-missing-param-and-return.patch index ec5cff40..ab938492 100644 --- a/patches/Purpur/patches/api/0031-Fix-javadoc-warnings-missing-param-and-return.patch +++ b/patches/Purpur/patches/api/0031-Fix-javadoc-warnings-missing-param-and-return.patch @@ -380,10 +380,10 @@ index 9db0056ab94145819628b3ad8d8d26130d117fcf..680410d8404a6d3b0ac91aa5fc4cd9d7 public static void sneaky(@NotNull Throwable exception) { diff --git a/src/main/java/com/destroystokyo/paper/util/VersionFetcher.java b/src/main/java/com/destroystokyo/paper/util/VersionFetcher.java -index 2a2651299e8dc631938ba4b4078dc694764d784c..62fafc206e7f1d8fdc0b0dfa2c1c6f1d280f4f5e 100644 +index a736d7bcdc5861a01b66ba36158db1c716339346..4825c9ca2191d3bf1440b986827fc32e230a3280 100644 --- a/src/main/java/com/destroystokyo/paper/util/VersionFetcher.java +++ b/src/main/java/com/destroystokyo/paper/util/VersionFetcher.java -@@ -3,6 +3,9 @@ package com.destroystokyo.paper.util; +@@ -5,6 +5,9 @@ import net.kyori.adventure.text.format.NamedTextColor; import org.bukkit.Bukkit; import org.jetbrains.annotations.NotNull; @@ -393,9 +393,9 @@ index 2a2651299e8dc631938ba4b4078dc694764d784c..62fafc206e7f1d8fdc0b0dfa2c1c6f1d public interface VersionFetcher { /** * Amount of time to cache results for in milliseconds -@@ -25,6 +28,9 @@ public interface VersionFetcher { +@@ -26,6 +29,9 @@ public interface VersionFetcher { @NotNull - String getVersionMessage(@NotNull String serverVersion); + Component getVersionMessage(@NotNull String serverVersion); + /** + * Dummy version fetcher diff --git a/patches/Purpur/patches/server/0007-AFK-API.patch b/patches/Purpur/patches/server/0007-AFK-API.patch index 8c3dd018..a308e682 100644 --- a/patches/Purpur/patches/server/0007-AFK-API.patch +++ b/patches/Purpur/patches/server/0007-AFK-API.patch @@ -5,7 +5,7 @@ Subject: [PATCH] AFK API diff --git a/src/main/java/net/minecraft/server/EntityHuman.java b/src/main/java/net/minecraft/server/EntityHuman.java -index cc2127b26e41182c14fa95afde878e9b5100a117..7cacaae4ec8b09d12d35f0f22c0e9ec5a48d46a4 100644 +index f034977f4666385d6e7c7288e453d058c270be01..390aae2733e397ac5c6c457c76bf75f9c8dcd873 100644 --- a/src/main/java/net/minecraft/server/EntityHuman.java +++ b/src/main/java/net/minecraft/server/EntityHuman.java @@ -84,6 +84,15 @@ public abstract class EntityHuman extends EntityLiving { @@ -25,10 +25,10 @@ index cc2127b26e41182c14fa95afde878e9b5100a117..7cacaae4ec8b09d12d35f0f22c0e9ec5 super(EntityTypes.PLAYER, world); this.bL = ItemStack.b; diff --git a/src/main/java/net/minecraft/server/EntityPlayer.java b/src/main/java/net/minecraft/server/EntityPlayer.java -index cf14b83ec3c2b9a2812f50f3bca991e029bf7c67..5affcd13a9376e68ddeba467c4ed07b6002fdee8 100644 +index f40c24b6e2f7bea21d1cb2b58ed3da45ffcfc866..9315a9f157de3a549c419f8193dc7896a098b472 100644 --- a/src/main/java/net/minecraft/server/EntityPlayer.java +++ b/src/main/java/net/minecraft/server/EntityPlayer.java -@@ -1929,8 +1929,54 @@ public class EntityPlayer extends EntityHuman implements ICrafting { +@@ -1940,8 +1940,54 @@ public class EntityPlayer extends EntityHuman implements ICrafting { public void resetIdleTimer() { this.ca = SystemUtils.getMonotonicMillis(); @@ -193,7 +193,7 @@ index 9146b60cff0aa06e2f6b6003bfe9e2be9d2f0d56..bba8dc8fd10dc34179ca3c8cf471fbb3 if (from.getX() != Double.MAX_VALUE) { Location oldTo = to.clone(); diff --git a/src/main/java/net/minecraft/server/WorldServer.java b/src/main/java/net/minecraft/server/WorldServer.java -index d2b50cdc43c737d9fdfdcd7838de24cbca2017e4..9759e5cba57d14c15f78f12985a516131800d004 100644 +index 9c77be805eb71c409a5d41c2730338583527e447..d8e39d29a792bf8a65884f18743befe29a86791e 100644 --- a/src/main/java/net/minecraft/server/WorldServer.java +++ b/src/main/java/net/minecraft/server/WorldServer.java @@ -887,7 +887,7 @@ public class WorldServer extends World implements GeneratorAccessSeed { diff --git a/patches/Purpur/patches/server/0015-Player-invulnerabilities.patch b/patches/Purpur/patches/server/0015-Player-invulnerabilities.patch index cd74903a..111d4671 100644 --- a/patches/Purpur/patches/server/0015-Player-invulnerabilities.patch +++ b/patches/Purpur/patches/server/0015-Player-invulnerabilities.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Player invulnerabilities diff --git a/src/main/java/net/minecraft/server/EntityPlayer.java b/src/main/java/net/minecraft/server/EntityPlayer.java -index 5affcd13a9376e68ddeba467c4ed07b6002fdee8..633a33e19e41c56369bc18f7af5c91a5b69be3b7 100644 +index 9315a9f157de3a549c419f8193dc7896a098b472..abe8670ec7b0ef4a93418a5e9cf23a1a536cbc96 100644 --- a/src/main/java/net/minecraft/server/EntityPlayer.java +++ b/src/main/java/net/minecraft/server/EntityPlayer.java @@ -154,6 +154,8 @@ public class EntityPlayer extends EntityHuman implements ICrafting { @@ -47,7 +47,7 @@ index 5affcd13a9376e68ddeba467c4ed07b6002fdee8..633a33e19e41c56369bc18f7af5c91a5 return this; } } -@@ -2347,9 +2356,17 @@ public class EntityPlayer extends EntityHuman implements ICrafting { +@@ -2358,9 +2367,17 @@ public class EntityPlayer extends EntityHuman implements ICrafting { @Override public boolean isFrozen() { // Paper - protected > public diff --git a/patches/Purpur/patches/server/0026-Zombie-horse-naturally-spawn.patch b/patches/Purpur/patches/server/0026-Zombie-horse-naturally-spawn.patch index af57ae6e..44ac199e 100644 --- a/patches/Purpur/patches/server/0026-Zombie-horse-naturally-spawn.patch +++ b/patches/Purpur/patches/server/0026-Zombie-horse-naturally-spawn.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Zombie horse naturally spawn diff --git a/src/main/java/net/minecraft/server/WorldServer.java b/src/main/java/net/minecraft/server/WorldServer.java -index 9759e5cba57d14c15f78f12985a516131800d004..76058d466cf256298ea6439fffbd8d661c159f58 100644 +index d8e39d29a792bf8a65884f18743befe29a86791e..428f43a37d5aa6e0bf363baeef02b0fa01951590 100644 --- a/src/main/java/net/minecraft/server/WorldServer.java +++ b/src/main/java/net/minecraft/server/WorldServer.java @@ -1101,12 +1101,18 @@ public class WorldServer extends World implements GeneratorAccessSeed { diff --git a/patches/Purpur/patches/server/0044-Signs-allow-color-codes.patch b/patches/Purpur/patches/server/0044-Signs-allow-color-codes.patch index c78ea40a..08083dd6 100644 --- a/patches/Purpur/patches/server/0044-Signs-allow-color-codes.patch +++ b/patches/Purpur/patches/server/0044-Signs-allow-color-codes.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Signs allow color codes diff --git a/src/main/java/net/minecraft/server/EntityPlayer.java b/src/main/java/net/minecraft/server/EntityPlayer.java -index 633a33e19e41c56369bc18f7af5c91a5b69be3b7..0c384641dd840b3b04b93d2e33df7d75293d9351 100644 +index abe8670ec7b0ef4a93418a5e9cf23a1a536cbc96..cdc559a8330d804a269f942f5bcba84ab9ea4289 100644 --- a/src/main/java/net/minecraft/server/EntityPlayer.java +++ b/src/main/java/net/minecraft/server/EntityPlayer.java @@ -1449,6 +1449,7 @@ public class EntityPlayer extends EntityHuman implements ICrafting { diff --git a/patches/Purpur/patches/server/0046-Controllable-Minecarts.patch b/patches/Purpur/patches/server/0046-Controllable-Minecarts.patch index 0b469c59..044355b0 100644 --- a/patches/Purpur/patches/server/0046-Controllable-Minecarts.patch +++ b/patches/Purpur/patches/server/0046-Controllable-Minecarts.patch @@ -106,7 +106,7 @@ index be859a1b41254b299a507d03e453dc8efee6f3dd..4de2877f30a9b231a5c8bbd173941699 this.move(EnumMoveType.SELF, this.getMot()); if (!this.onGround) { diff --git a/src/main/java/net/minecraft/server/EntityPlayer.java b/src/main/java/net/minecraft/server/EntityPlayer.java -index 0c384641dd840b3b04b93d2e33df7d75293d9351..64de6be4f9e740a2a036b202789be0a28b175575 100644 +index cdc559a8330d804a269f942f5bcba84ab9ea4289..320719bcc43b69a4dcca53d431a1eb4af0034c71 100644 --- a/src/main/java/net/minecraft/server/EntityPlayer.java +++ b/src/main/java/net/minecraft/server/EntityPlayer.java @@ -1002,6 +1002,7 @@ public class EntityPlayer extends EntityHuman implements ICrafting { diff --git a/patches/Purpur/patches/server/0048-Players-should-not-cram-to-death.patch b/patches/Purpur/patches/server/0048-Players-should-not-cram-to-death.patch index ebb10bde..c6f4bcd7 100644 --- a/patches/Purpur/patches/server/0048-Players-should-not-cram-to-death.patch +++ b/patches/Purpur/patches/server/0048-Players-should-not-cram-to-death.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Players should not cram to death diff --git a/src/main/java/net/minecraft/server/EntityPlayer.java b/src/main/java/net/minecraft/server/EntityPlayer.java -index 64de6be4f9e740a2a036b202789be0a28b175575..a609d62b6ad8b3be8fc6ae85dc3b1bcc0513a121 100644 +index 320719bcc43b69a4dcca53d431a1eb4af0034c71..572a2546acb6decc9fabfc77a2073bab3e0f5abf 100644 --- a/src/main/java/net/minecraft/server/EntityPlayer.java +++ b/src/main/java/net/minecraft/server/EntityPlayer.java @@ -1426,7 +1426,7 @@ public class EntityPlayer extends EntityHuman implements ICrafting { diff --git a/patches/Purpur/patches/server/0065-Add-player-death-exp-control-options.patch b/patches/Purpur/patches/server/0065-Add-player-death-exp-control-options.patch index 01789712..bb0ffd36 100644 --- a/patches/Purpur/patches/server/0065-Add-player-death-exp-control-options.patch +++ b/patches/Purpur/patches/server/0065-Add-player-death-exp-control-options.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Add player death exp control options diff --git a/src/main/java/net/minecraft/server/EntityHuman.java b/src/main/java/net/minecraft/server/EntityHuman.java -index 7cacaae4ec8b09d12d35f0f22c0e9ec5a48d46a4..10365180f518042d56929d0c0061e5297b73cf9b 100644 +index 390aae2733e397ac5c6c457c76bf75f9c8dcd873..ab2ad054ce8d896e38ab4eb6ed38d8ea73d42954 100644 --- a/src/main/java/net/minecraft/server/EntityHuman.java +++ b/src/main/java/net/minecraft/server/EntityHuman.java @@ -85,6 +85,8 @@ public abstract class EntityHuman extends EntityLiving { @@ -17,7 +17,7 @@ index 7cacaae4ec8b09d12d35f0f22c0e9ec5a48d46a4..10365180f518042d56929d0c0061e529 public void setAfk(boolean setAfk){ } -@@ -1710,9 +1712,18 @@ public abstract class EntityHuman extends EntityLiving { +@@ -1716,9 +1718,18 @@ public abstract class EntityHuman extends EntityLiving { @Override protected int getExpValue(EntityHuman entityhuman) { if (!this.world.getGameRules().getBoolean(GameRules.KEEP_INVENTORY) && !this.isSpectator()) { diff --git a/patches/Purpur/patches/server/0084-Add-option-to-teleport-to-spawn-if-outside-world-bor.patch b/patches/Purpur/patches/server/0084-Add-option-to-teleport-to-spawn-if-outside-world-bor.patch index cd64f9bc..002fe2e2 100644 --- a/patches/Purpur/patches/server/0084-Add-option-to-teleport-to-spawn-if-outside-world-bor.patch +++ b/patches/Purpur/patches/server/0084-Add-option-to-teleport-to-spawn-if-outside-world-bor.patch @@ -17,10 +17,10 @@ index 8bc0fb58ef18ce7828451857a97460bbde567c6b..a8cd7f0abf58e69d276e469bd7d5ef6a } } diff --git a/src/main/java/net/minecraft/server/EntityPlayer.java b/src/main/java/net/minecraft/server/EntityPlayer.java -index a609d62b6ad8b3be8fc6ae85dc3b1bcc0513a121..3f071154ad6b44f9fc9791addd7605bf0860d9a6 100644 +index 572a2546acb6decc9fabfc77a2073bab3e0f5abf..6052643bbe1ee12bcf98126e36fc09bd2593dfa6 100644 --- a/src/main/java/net/minecraft/server/EntityPlayer.java +++ b/src/main/java/net/minecraft/server/EntityPlayer.java -@@ -2414,4 +2414,26 @@ public class EntityPlayer extends EntityHuman implements ICrafting { +@@ -2425,4 +2425,26 @@ public class EntityPlayer extends EntityHuman implements ICrafting { return (CraftPlayer) super.getBukkitEntity(); } // CraftBukkit end diff --git a/patches/Purpur/patches/server/0097-Add-no-tick-block-list.patch b/patches/Purpur/patches/server/0097-Add-no-tick-block-list.patch index 33b56d99..795e58e2 100644 --- a/patches/Purpur/patches/server/0097-Add-no-tick-block-list.patch +++ b/patches/Purpur/patches/server/0097-Add-no-tick-block-list.patch @@ -22,7 +22,7 @@ index 829d4a7508e1656dbdc912096b7eafcf30cbb5b2..6aea156d7c7a9ca8a357aad6a6781d72 } diff --git a/src/main/java/net/minecraft/server/WorldServer.java b/src/main/java/net/minecraft/server/WorldServer.java -index 76058d466cf256298ea6439fffbd8d661c159f58..dc15d19fb75cd0988235ce193ac7f03c35d713c7 100644 +index 428f43a37d5aa6e0bf363baeef02b0fa01951590..59301aad8c257758cb0fe9709901847925d60be4 100644 --- a/src/main/java/net/minecraft/server/WorldServer.java +++ b/src/main/java/net/minecraft/server/WorldServer.java @@ -418,14 +418,14 @@ public class WorldServer extends World implements GeneratorAccessSeed { diff --git a/patches/Purpur/patches/server/0101-Ridables.patch b/patches/Purpur/patches/server/0101-Ridables.patch index f223fe0b..01160bf8 100644 --- a/patches/Purpur/patches/server/0101-Ridables.patch +++ b/patches/Purpur/patches/server/0101-Ridables.patch @@ -2125,10 +2125,10 @@ index 0e98173607c810e0e74552a2ba8febf292357c39..559ba50977147b8e2a0e7c1e7dc281fa + protected void eV() { if (world.purpurConfig.zombieHorseCanSwim) goalSelector.a(0, new PathfinderGoalFloat(this)); } // Purpur } diff --git a/src/main/java/net/minecraft/server/EntityHuman.java b/src/main/java/net/minecraft/server/EntityHuman.java -index 10365180f518042d56929d0c0061e5297b73cf9b..9266a37f66337a6051c8472934e2e396e1131736 100644 +index ab2ad054ce8d896e38ab4eb6ed38d8ea73d42954..3a7dc584bd2b88415a238f9c0cb7f85968fb8dfb 100644 --- a/src/main/java/net/minecraft/server/EntityHuman.java +++ b/src/main/java/net/minecraft/server/EntityHuman.java -@@ -2149,4 +2149,15 @@ public abstract class EntityHuman extends EntityLiving { +@@ -2155,4 +2155,15 @@ public abstract class EntityHuman extends EntityLiving { return this.g; } } @@ -3194,7 +3194,7 @@ index a3a428da99574c485fcf2b8c7944e0d8354146ee..cf7de0127166f6175a6246062c8664e6 this.targetSelector.a(2, new PathfinderGoalNearestAttackableTarget<>(this, EntityHuman.class, true)); this.targetSelector.a(3, new PathfinderGoalNearestAttackableTarget<>(this, EntityVillagerAbstract.class, false)); diff --git a/src/main/java/net/minecraft/server/EntityPlayer.java b/src/main/java/net/minecraft/server/EntityPlayer.java -index 3f071154ad6b44f9fc9791addd7605bf0860d9a6..71f37abf27edb79b81dfb7651674fc84698e3f23 100644 +index 6052643bbe1ee12bcf98126e36fc09bd2593dfa6..dbc7ca05503dd3de6d4ffe50433d9f2284016191 100644 --- a/src/main/java/net/minecraft/server/EntityPlayer.java +++ b/src/main/java/net/minecraft/server/EntityPlayer.java @@ -512,6 +512,15 @@ public class EntityPlayer extends EntityHuman implements ICrafting { @@ -5015,7 +5015,7 @@ index d3b3b771640a46ce9a898f645cf50007e25ae7c2..34e5f8b3bf1b0045856ec0d06ec6d62d // Purpur end } diff --git a/src/main/java/net/minecraft/server/WorldServer.java b/src/main/java/net/minecraft/server/WorldServer.java -index dc15d19fb75cd0988235ce193ac7f03c35d713c7..9163ee821cc91f6ceb317fb4914e0394564a821b 100644 +index 59301aad8c257758cb0fe9709901847925d60be4..33b41dc393e302c114f2ea69e789505b7ec77935 100644 --- a/src/main/java/net/minecraft/server/WorldServer.java +++ b/src/main/java/net/minecraft/server/WorldServer.java @@ -102,6 +102,7 @@ public class WorldServer extends World implements GeneratorAccessSeed { diff --git a/patches/Purpur/patches/server/0107-Allow-toggling-special-MobSpawners-per-world.patch b/patches/Purpur/patches/server/0107-Allow-toggling-special-MobSpawners-per-world.patch index a17562f6..2a26a303 100644 --- a/patches/Purpur/patches/server/0107-Allow-toggling-special-MobSpawners-per-world.patch +++ b/patches/Purpur/patches/server/0107-Allow-toggling-special-MobSpawners-per-world.patch @@ -42,7 +42,7 @@ index 34e5f8b3bf1b0045856ec0d06ec6d62d0b976862..d72580deaa50617b5b6a991777f4b36c this.generator = gen; this.world = new CraftWorld((WorldServer) this, gen, env); diff --git a/src/main/java/net/minecraft/server/WorldServer.java b/src/main/java/net/minecraft/server/WorldServer.java -index 9163ee821cc91f6ceb317fb4914e0394564a821b..ae3ec2eca3130943536b80bd1296eba67aa08e3c 100644 +index 33b41dc393e302c114f2ea69e789505b7ec77935..adc6420b63730929de491cb0a57d898ef02bb7e8 100644 --- a/src/main/java/net/minecraft/server/WorldServer.java +++ b/src/main/java/net/minecraft/server/WorldServer.java @@ -436,7 +436,24 @@ public class WorldServer extends World implements GeneratorAccessSeed { diff --git a/patches/Purpur/patches/server/0116-Configurable-daylight-cycle.patch b/patches/Purpur/patches/server/0116-Configurable-daylight-cycle.patch index cc7e659b..4d705e46 100644 --- a/patches/Purpur/patches/server/0116-Configurable-daylight-cycle.patch +++ b/patches/Purpur/patches/server/0116-Configurable-daylight-cycle.patch @@ -18,7 +18,7 @@ index 1b9b43ee696575d986c25cafec07d863acb951a7..e837db171545ceacbc84a2b360cf0d95 public PacketPlayOutUpdateTime() {} diff --git a/src/main/java/net/minecraft/server/WorldServer.java b/src/main/java/net/minecraft/server/WorldServer.java -index ae3ec2eca3130943536b80bd1296eba67aa08e3c..5d92398369862881d997c270671ddb6b78ed2cb4 100644 +index adc6420b63730929de491cb0a57d898ef02bb7e8..2c73ddae3df32eea175fb1779104441b49796939 100644 --- a/src/main/java/net/minecraft/server/WorldServer.java +++ b/src/main/java/net/minecraft/server/WorldServer.java @@ -94,6 +94,7 @@ public class WorldServer extends World implements GeneratorAccessSeed { diff --git a/patches/Purpur/patches/server/0120-Add-tablist-suffix-option-for-afk.patch b/patches/Purpur/patches/server/0120-Add-tablist-suffix-option-for-afk.patch index 9b8e2c3d..b856bcd8 100644 --- a/patches/Purpur/patches/server/0120-Add-tablist-suffix-option-for-afk.patch +++ b/patches/Purpur/patches/server/0120-Add-tablist-suffix-option-for-afk.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add tablist suffix option for afk diff --git a/src/main/java/net/minecraft/server/EntityPlayer.java b/src/main/java/net/minecraft/server/EntityPlayer.java -index 71f37abf27edb79b81dfb7651674fc84698e3f23..ee91832c0e2cad32c5bfe1baad2aeab9228535c0 100644 +index dbc7ca05503dd3de6d4ffe50433d9f2284016191..6071e5f141c04813d0f8af07d82d80bec7f0c194 100644 --- a/src/main/java/net/minecraft/server/EntityPlayer.java +++ b/src/main/java/net/minecraft/server/EntityPlayer.java -@@ -1980,7 +1980,11 @@ public class EntityPlayer extends EntityHuman implements ICrafting { +@@ -1991,7 +1991,11 @@ public class EntityPlayer extends EntityHuman implements ICrafting { } if (world.purpurConfig.idleTimeoutUpdateTabList) { diff --git a/patches/Purpur/patches/server/0129-Add-critical-hit-check-to-EntityDamagedByEntityEvent.patch b/patches/Purpur/patches/server/0129-Add-critical-hit-check-to-EntityDamagedByEntityEvent.patch index f86b279b..587758b0 100644 --- a/patches/Purpur/patches/server/0129-Add-critical-hit-check-to-EntityDamagedByEntityEvent.patch +++ b/patches/Purpur/patches/server/0129-Add-critical-hit-check-to-EntityDamagedByEntityEvent.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Add critical hit check to EntityDamagedByEntityEvent diff --git a/src/main/java/net/minecraft/server/EntityHuman.java b/src/main/java/net/minecraft/server/EntityHuman.java -index 9266a37f66337a6051c8472934e2e396e1131736..4e55f64f8da344bdd5fe142f87cc6ea129bdeabe 100644 +index 3a7dc584bd2b88415a238f9c0cb7f85968fb8dfb..7ce46b53ad9fbaf7baf198557565b2467ab43c09 100644 --- a/src/main/java/net/minecraft/server/EntityHuman.java +++ b/src/main/java/net/minecraft/server/EntityHuman.java @@ -73,6 +73,7 @@ public abstract class EntityHuman extends EntityLiving { @@ -16,7 +16,7 @@ index 9266a37f66337a6051c8472934e2e396e1131736..4e55f64f8da344bdd5fe142f87cc6ea1 // CraftBukkit start public boolean fauxSleeping; -@@ -1060,6 +1061,7 @@ public abstract class EntityHuman extends EntityLiving { +@@ -1066,6 +1067,7 @@ public abstract class EntityHuman extends EntityLiving { flag2 = flag2 && !world.paperConfig.disablePlayerCrits; // Paper flag2 = flag2 && !this.isSprinting(); if (flag2) { @@ -24,7 +24,7 @@ index 9266a37f66337a6051c8472934e2e396e1131736..4e55f64f8da344bdd5fe142f87cc6ea1 f *= 1.5F; } -@@ -1096,6 +1098,7 @@ public abstract class EntityHuman extends EntityLiving { +@@ -1102,6 +1104,7 @@ public abstract class EntityHuman extends EntityLiving { Vec3D vec3d = entity.getMot(); boolean flag5 = entity.damageEntity(DamageSource.playerAttack(this), f); diff --git a/patches/Purpur/patches/server/0136-Add-boat-fall-damage-config.patch b/patches/Purpur/patches/server/0136-Add-boat-fall-damage-config.patch index 5280e212..dab7418c 100644 --- a/patches/Purpur/patches/server/0136-Add-boat-fall-damage-config.patch +++ b/patches/Purpur/patches/server/0136-Add-boat-fall-damage-config.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Add boat fall damage config diff --git a/src/main/java/net/minecraft/server/EntityPlayer.java b/src/main/java/net/minecraft/server/EntityPlayer.java -index ee91832c0e2cad32c5bfe1baad2aeab9228535c0..0031fef270d36234e1675ccd494a87cf33ad9ed0 100644 +index 6071e5f141c04813d0f8af07d82d80bec7f0c194..44a10c656c9b131c8889da81b7999dc492077e58 100644 --- a/src/main/java/net/minecraft/server/EntityPlayer.java +++ b/src/main/java/net/minecraft/server/EntityPlayer.java @@ -1011,7 +1011,16 @@ public class EntityPlayer extends EntityHuman implements ICrafting { diff --git a/patches/Purpur/patches/server/0154-Full-netherite-armor-grants-fire-resistance.patch b/patches/Purpur/patches/server/0154-Full-netherite-armor-grants-fire-resistance.patch index f56f1e9c..12f21fca 100644 --- a/patches/Purpur/patches/server/0154-Full-netherite-armor-grants-fire-resistance.patch +++ b/patches/Purpur/patches/server/0154-Full-netherite-armor-grants-fire-resistance.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Full netherite armor grants fire resistance diff --git a/src/main/java/net/minecraft/server/EntityHuman.java b/src/main/java/net/minecraft/server/EntityHuman.java -index 4e55f64f8da344bdd5fe142f87cc6ea129bdeabe..c2e0f449400d7477be6310c8d59efe21a517afb3 100644 +index 7ce46b53ad9fbaf7baf198557565b2467ab43c09..5581e9f1b8656bd2ee0dd338ffd17ac8297df94f 100644 --- a/src/main/java/net/minecraft/server/EntityHuman.java +++ b/src/main/java/net/minecraft/server/EntityHuman.java @@ -236,6 +236,16 @@ public abstract class EntityHuman extends EntityLiving { diff --git a/patches/Purpur/patches/server/0162-Fix-stuck-in-portals.patch b/patches/Purpur/patches/server/0162-Fix-stuck-in-portals.patch index 97a85642..146d8c82 100644 --- a/patches/Purpur/patches/server/0162-Fix-stuck-in-portals.patch +++ b/patches/Purpur/patches/server/0162-Fix-stuck-in-portals.patch @@ -25,7 +25,7 @@ index 85ffb2e72dbf08604c004732f17aee9ec7e1ff9d..49a1447bae91294a23ccab27c2809bea this.inPortal = true; diff --git a/src/main/java/net/minecraft/server/EntityPlayer.java b/src/main/java/net/minecraft/server/EntityPlayer.java -index 0031fef270d36234e1675ccd494a87cf33ad9ed0..912952ff7c50b416bddd63469a592cf563e8a2cd 100644 +index 44a10c656c9b131c8889da81b7999dc492077e58..ac9238e1de65efe9fea7d9e623478c61066e8d68 100644 --- a/src/main/java/net/minecraft/server/EntityPlayer.java +++ b/src/main/java/net/minecraft/server/EntityPlayer.java @@ -1161,6 +1161,7 @@ public class EntityPlayer extends EntityHuman implements ICrafting { diff --git a/patches/Purpur/patches/server/0175-Config-to-ignore-nearby-mobs-when-sleeping.patch b/patches/Purpur/patches/server/0175-Config-to-ignore-nearby-mobs-when-sleeping.patch index e8cc877d..3ebc1486 100644 --- a/patches/Purpur/patches/server/0175-Config-to-ignore-nearby-mobs-when-sleeping.patch +++ b/patches/Purpur/patches/server/0175-Config-to-ignore-nearby-mobs-when-sleeping.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Config to ignore nearby mobs when sleeping diff --git a/src/main/java/net/minecraft/server/EntityPlayer.java b/src/main/java/net/minecraft/server/EntityPlayer.java -index 912952ff7c50b416bddd63469a592cf563e8a2cd..bf81977bfef4ddfed10f4bf4422e230d67e8199f 100644 +index ac9238e1de65efe9fea7d9e623478c61066e8d68..93bca6a52dd01d9ad524a03d90c7ec79d00d2c56 100644 --- a/src/main/java/net/minecraft/server/EntityPlayer.java +++ b/src/main/java/net/minecraft/server/EntityPlayer.java @@ -1311,7 +1311,7 @@ public class EntityPlayer extends EntityHuman implements ICrafting { diff --git a/patches/Tuinity/patches/server/0004-Util-patch.patch b/patches/Tuinity/patches/server/0004-Util-patch.patch index 29f89439..15cc2ded 100644 --- a/patches/Tuinity/patches/server/0004-Util-patch.patch +++ b/patches/Tuinity/patches/server/0004-Util-patch.patch @@ -2408,7 +2408,7 @@ index 904c6a7d0a36b57bb4f693fc4fd0dd5b17adcbac..b03865a932d341ae2fdad6c9447979fa // Paper start - raise IO/load priority if priority changes, use our preferred priority diff --git a/src/main/java/net/minecraft/server/PlayerChunkMap.java b/src/main/java/net/minecraft/server/PlayerChunkMap.java -index 00d0a5fd7c5d2db19756f3c6cfb2381868af51fd..2630de4a807062f1c455352801c65567e7e86208 100644 +index 00d0a5fd7c5d2db19756f3c6cfb2381868af51fd..2b2920a5602e23dd766ddbbf10b4fed90a1a21bc 100644 --- a/src/main/java/net/minecraft/server/PlayerChunkMap.java +++ b/src/main/java/net/minecraft/server/PlayerChunkMap.java @@ -278,6 +278,21 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d { @@ -2451,7 +2451,7 @@ index 00d0a5fd7c5d2db19756f3c6cfb2381868af51fd..2630de4a807062f1c455352801c65567 } this.updatingChunks.put(i, playerchunk); -@@ -1021,7 +1040,9 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d { +@@ -1021,7 +1040,10 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d { if (completablefuture1 != completablefuture) { this.a(i, playerchunk); } else { @@ -2459,18 +2459,22 @@ index 00d0a5fd7c5d2db19756f3c6cfb2381868af51fd..2630de4a807062f1c455352801c65567 + // Tuinity start + boolean removed; + if ((removed = this.pendingUnload.remove(i, playerchunk)) && ichunkaccess != null) { // Tuinity end ++ this.dataRegionManager.removeChunk(playerchunk.location.x, playerchunk.location.z); // Tuinity if (ichunkaccess instanceof Chunk) { ((Chunk) ichunkaccess).setLoaded(false); } -@@ -1045,6 +1066,7 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d { +@@ -1044,7 +1066,9 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d { + this.lightEngine.a(ichunkaccess.getPos()); this.lightEngine.queueUpdate(); this.worldLoadListener.a(ichunkaccess.getPos(), (ChunkStatus) null); - } -+ if (removed) this.dataRegionManager.removeChunk(playerchunk.location.x, playerchunk.location.z); // Tuinity +- } ++ } else if (removed) { // Tuinity start ++ this.dataRegionManager.removeChunk(playerchunk.location.x, playerchunk.location.z); ++ } // Tuinity end } }; -@@ -1711,6 +1733,11 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d { +@@ -1711,6 +1735,11 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d { return chunkHolder == null ? null : chunkHolder.getAvailableChunkNow(); } // Paper end diff --git a/patches/Tuinity/patches/server/0008-Add-soft-async-catcher.patch b/patches/Tuinity/patches/server/0008-Add-soft-async-catcher.patch index d2e33cca..ad673682 100644 --- a/patches/Tuinity/patches/server/0008-Add-soft-async-catcher.patch +++ b/patches/Tuinity/patches/server/0008-Add-soft-async-catcher.patch @@ -224,7 +224,7 @@ index f2a9396c2ec64c79391782249db7507f12a69a9e..798ebfdcd8e06ffb576964da006e77bd if (!list.equals(this.p)) { diff --git a/src/main/java/net/minecraft/server/PlayerChunkMap.java b/src/main/java/net/minecraft/server/PlayerChunkMap.java -index 2630de4a807062f1c455352801c65567e7e86208..fc1138b3be832231b075151518a2493e1623ddfc 100644 +index 2b2920a5602e23dd766ddbbf10b4fed90a1a21bc..bf1a1e7e6fd01b2e600c758f900e5fdb08e74930 100644 --- a/src/main/java/net/minecraft/server/PlayerChunkMap.java +++ b/src/main/java/net/minecraft/server/PlayerChunkMap.java @@ -201,6 +201,7 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d { @@ -259,7 +259,7 @@ index 2630de4a807062f1c455352801c65567e7e86208..fc1138b3be832231b075151518a2493e if (k > PlayerChunkMap.GOLDEN_TICKET && j > PlayerChunkMap.GOLDEN_TICKET) { return playerchunk; } else { -@@ -1082,6 +1086,7 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d { +@@ -1084,6 +1088,7 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d { } protected boolean b() { @@ -267,7 +267,7 @@ index 2630de4a807062f1c455352801c65567e7e86208..fc1138b3be832231b075151518a2493e if (!this.updatingChunksModified) { return false; } else { -@@ -1521,6 +1526,7 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d { +@@ -1523,6 +1528,7 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d { } public void setViewDistance(int i) { // Paper - public @@ -275,7 +275,7 @@ index 2630de4a807062f1c455352801c65567e7e86208..fc1138b3be832231b075151518a2493e int j = MathHelper.clamp(i + 1, 3, 33); // Paper - diff on change, these make the lower view distance limit 2 and the upper 32 if (j != this.viewDistance) { -@@ -1534,6 +1540,7 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d { +@@ -1536,6 +1542,7 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d { // Paper start - no-tick view distance public final void setNoTickViewDistance(int viewDistance) { diff --git a/patches/Tuinity/patches/server/0012-Update-version-fetcher-repo.patch b/patches/Tuinity/patches/server/0012-Update-version-fetcher-repo.patch index 59960a10..27ab3e3d 100644 --- a/patches/Tuinity/patches/server/0012-Update-version-fetcher-repo.patch +++ b/patches/Tuinity/patches/server/0012-Update-version-fetcher-repo.patch @@ -6,23 +6,23 @@ Subject: [PATCH] Update version fetcher repo Sets the target github repo to Tuinity in the version checker. Also disables the jenkins build lookups. diff --git a/src/main/java/com/destroystokyo/paper/PaperVersionFetcher.java b/src/main/java/com/destroystokyo/paper/PaperVersionFetcher.java -index 49a38c6608b652ff48ef4eaca0dd3ccb1ba570e3..255bbd6e48b95c70fad02ba692c64c7579496827 100644 +index dc0ea65ab87255fad0d54dfb509300098a0b4864..7063f1da3654b382e26b0093ad5d0ff04a2b38c2 100644 --- a/src/main/java/com/destroystokyo/paper/PaperVersionFetcher.java +++ b/src/main/java/com/destroystokyo/paper/PaperVersionFetcher.java -@@ -24,8 +24,8 @@ public class PaperVersionFetcher implements VersionFetcher { +@@ -28,8 +28,8 @@ public class PaperVersionFetcher implements VersionFetcher { @Nonnull @Override - public String getVersionMessage(@Nonnull String serverVersion) { + public Component getVersionMessage(@Nonnull String serverVersion) { - String[] parts = serverVersion.substring("git-Paper-".length()).split("[-\\s]"); -- String updateMessage = getUpdateStatusMessage("PaperMC/Paper", GITHUB_BRANCH_NAME, parts[0]); +- final Component updateMessage = getUpdateStatusMessage("PaperMC/Paper", GITHUB_BRANCH_NAME, parts[0]); + String[] parts = serverVersion.substring("git-Tuinity-".length()).split("[-\\s]"); // Tuinity -+ String updateMessage = getUpdateStatusMessage("Spottedleaf/Tuinity", GITHUB_BRANCH_NAME, parts[0]); // Tuinity - String history = getHistory(); ++ final Component updateMessage = getUpdateStatusMessage("Spottedleaf/Tuinity", GITHUB_BRANCH_NAME, parts[0]); // Tuinity + final Component history = getHistory(); - return history != null ? history + "\n" + updateMessage : updateMessage; -@@ -49,13 +49,10 @@ public class PaperVersionFetcher implements VersionFetcher { + return history != null ? TextComponent.ofChildren(updateMessage, Component.newline(), history) : updateMessage; +@@ -53,13 +53,10 @@ public class PaperVersionFetcher implements VersionFetcher { - private static String getUpdateStatusMessage(@Nonnull String repo, @Nonnull String branch, @Nonnull String versionInfo) { + private static Component getUpdateStatusMessage(@Nonnull String repo, @Nonnull String branch, @Nonnull String versionInfo) { int distance; - try { - int jenkinsBuild = Integer.parseInt(versionInfo); diff --git a/patches/Tuinity/patches/server/0016-Change-writes-to-use-NORMAL-priority-rather-than-LOW.patch b/patches/Tuinity/patches/server/0016-Change-writes-to-use-NORMAL-priority-rather-than-LOW.patch index 8de85be4..72b28397 100644 --- a/patches/Tuinity/patches/server/0016-Change-writes-to-use-NORMAL-priority-rather-than-LOW.patch +++ b/patches/Tuinity/patches/server/0016-Change-writes-to-use-NORMAL-priority-rather-than-LOW.patch @@ -7,7 +7,7 @@ Should limit build up of I/O tasks, or at least properly indicate to server owners that I/O is falling behind diff --git a/src/main/java/net/minecraft/server/PlayerChunkMap.java b/src/main/java/net/minecraft/server/PlayerChunkMap.java -index fc1138b3be832231b075151518a2493e1623ddfc..394029b8b2e0e35f7ada9016c53698cc6164eccb 100644 +index bf1a1e7e6fd01b2e600c758f900e5fdb08e74930..8b9e3418cdb90227eee149e25c4e208979aaf8fb 100644 --- a/src/main/java/net/minecraft/server/PlayerChunkMap.java +++ b/src/main/java/net/minecraft/server/PlayerChunkMap.java @@ -994,7 +994,7 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d { @@ -28,7 +28,7 @@ index fc1138b3be832231b075151518a2493e1623ddfc..394029b8b2e0e35f7ada9016c53698cc asyncSaveData, chunk); chunk.setLastSaved(this.world.getTime()); -@@ -1656,7 +1656,7 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d { +@@ -1658,7 +1658,7 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d { if (Thread.currentThread() != com.destroystokyo.paper.io.PaperFileIOThread.Holder.INSTANCE) { com.destroystokyo.paper.io.PaperFileIOThread.Holder.INSTANCE.scheduleSave( this.world, chunkcoordintpair.x, chunkcoordintpair.z, null, nbttagcompound, diff --git a/patches/Tuinity/patches/server/0020-Make-CallbackExecutor-strict-again.patch b/patches/Tuinity/patches/server/0020-Make-CallbackExecutor-strict-again.patch index ead8baec..34ce9adc 100644 --- a/patches/Tuinity/patches/server/0020-Make-CallbackExecutor-strict-again.patch +++ b/patches/Tuinity/patches/server/0020-Make-CallbackExecutor-strict-again.patch @@ -35,7 +35,7 @@ index c8c4d4f3d5a0ca6255473f3f256eeb32f18a9984..e1a17abda657c7eb7aee7cd0763bcb48 } catch (Throwable thr) { if (thr instanceof ThreadDeath) { diff --git a/src/main/java/net/minecraft/server/PlayerChunkMap.java b/src/main/java/net/minecraft/server/PlayerChunkMap.java -index 394029b8b2e0e35f7ada9016c53698cc6164eccb..cd8921c41b2e275746fe63e107fcf52fa39c9e9b 100644 +index 8b9e3418cdb90227eee149e25c4e208979aaf8fb..b05683f65a51363672779b5aebdce166743218c8 100644 --- a/src/main/java/net/minecraft/server/PlayerChunkMap.java +++ b/src/main/java/net/minecraft/server/PlayerChunkMap.java @@ -122,31 +122,28 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d { diff --git a/patches/Tuinity/patches/server/0028-Use-entity-ticking-chunk-map-for-entity-tracker.patch b/patches/Tuinity/patches/server/0028-Use-entity-ticking-chunk-map-for-entity-tracker.patch index 9edcdbfa..1b686d97 100644 --- a/patches/Tuinity/patches/server/0028-Use-entity-ticking-chunk-map-for-entity-tracker.patch +++ b/patches/Tuinity/patches/server/0028-Use-entity-ticking-chunk-map-for-entity-tracker.patch @@ -7,10 +7,10 @@ Should bring us back in-line with tracker performance before the loaded entity list reversion. diff --git a/src/main/java/net/minecraft/server/PlayerChunkMap.java b/src/main/java/net/minecraft/server/PlayerChunkMap.java -index cd8921c41b2e275746fe63e107fcf52fa39c9e9b..a6f7ae34a30fb3007bee3c8031a950a2a9026178 100644 +index b05683f65a51363672779b5aebdce166743218c8..ef7b76d891b28a2769c910933da91df1d3e9d152 100644 --- a/src/main/java/net/minecraft/server/PlayerChunkMap.java +++ b/src/main/java/net/minecraft/server/PlayerChunkMap.java -@@ -2069,22 +2069,25 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d { +@@ -2071,22 +2071,25 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d { private final void processTrackQueue() { this.world.timings.tracker1.startTiming(); try { diff --git a/patches/Tuinity/patches/server/0032-Rework-PlayerChunk-main-thread-checks.patch b/patches/Tuinity/patches/server/0032-Rework-PlayerChunk-main-thread-checks.patch index 8ceedf47..de577f66 100644 --- a/patches/Tuinity/patches/server/0032-Rework-PlayerChunk-main-thread-checks.patch +++ b/patches/Tuinity/patches/server/0032-Rework-PlayerChunk-main-thread-checks.patch @@ -74,10 +74,10 @@ index b03865a932d341ae2fdad6c9447979fa9e95fc14..9a321c8a0a357ca1fd47d0c7fe4fe7af if (chunk != null) { playerchunkmap.callbackExecutor.execute(() -> { diff --git a/src/main/java/net/minecraft/server/PlayerChunkMap.java b/src/main/java/net/minecraft/server/PlayerChunkMap.java -index a6f7ae34a30fb3007bee3c8031a950a2a9026178..997e0a6e67966645ab386ca050439b1f3dd3177e 100644 +index ef7b76d891b28a2769c910933da91df1d3e9d152..d829feb9f17c5412e63b2481af968391f38298d2 100644 --- a/src/main/java/net/minecraft/server/PlayerChunkMap.java +++ b/src/main/java/net/minecraft/server/PlayerChunkMap.java -@@ -1271,7 +1271,10 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d { +@@ -1273,7 +1273,10 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d { } // Paper end this.mailboxWorldGen.a(ChunkTaskQueueSorter.a(playerchunk, runnable)); diff --git a/patches/Tuinity/patches/server/0043-Do-not-allow-ticket-level-changes-while-unloading-pl.patch b/patches/Tuinity/patches/server/0043-Do-not-allow-ticket-level-changes-while-unloading-pl.patch index 8cca29ed..f6cfd63c 100644 --- a/patches/Tuinity/patches/server/0043-Do-not-allow-ticket-level-changes-while-unloading-pl.patch +++ b/patches/Tuinity/patches/server/0043-Do-not-allow-ticket-level-changes-while-unloading-pl.patch @@ -20,7 +20,7 @@ index 0e5e7a321dc7066444d92387968a7c41cb3a8470..ce0bb4d228a73d8353d67828529879e1 boolean flag = this.chunkMapDistance.a(this.playerChunkMap); boolean flag1 = this.playerChunkMap.b(); diff --git a/src/main/java/net/minecraft/server/PlayerChunkMap.java b/src/main/java/net/minecraft/server/PlayerChunkMap.java -index 997e0a6e67966645ab386ca050439b1f3dd3177e..32c384dad5201987fe2545526efa6551e538e388 100644 +index d829feb9f17c5412e63b2481af968391f38298d2..94da0b4cb9a790f866bcd3b11a61ae0c0faa1dc5 100644 --- a/src/main/java/net/minecraft/server/PlayerChunkMap.java +++ b/src/main/java/net/minecraft/server/PlayerChunkMap.java @@ -776,6 +776,7 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d { @@ -53,10 +53,10 @@ index 997e0a6e67966645ab386ca050439b1f3dd3177e..32c384dad5201987fe2545526efa6551 // Tuinity start boolean removed; if ((removed = this.pendingUnload.remove(i, playerchunk)) && ichunkaccess != null) { // Tuinity end -@@ -1068,6 +1077,7 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d { - this.worldLoadListener.a(ichunkaccess.getPos(), (ChunkStatus) null); - } - if (removed) this.dataRegionManager.removeChunk(playerchunk.location.x, playerchunk.location.z); // Tuinity +@@ -1070,6 +1079,7 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d { + } else if (removed) { // Tuinity start + this.dataRegionManager.removeChunk(playerchunk.location.x, playerchunk.location.z); + } // Tuinity end + } finally { this.unloadingPlayerChunk = unloadingBefore; } // Tuinity - do not allow ticket level changes while unloading chunks } diff --git a/patches/Tuinity/patches/server/0047-Optimise-nearby-player-lookups.patch b/patches/Tuinity/patches/server/0047-Optimise-nearby-player-lookups.patch index 651e73c7..8de45aba 100644 --- a/patches/Tuinity/patches/server/0047-Optimise-nearby-player-lookups.patch +++ b/patches/Tuinity/patches/server/0047-Optimise-nearby-player-lookups.patch @@ -185,7 +185,7 @@ index 48976b1f07aeb0d588d0856f18b6fd07b2d18e05..a22021766b3bffa4f96d1d4ee546b12e // Paper end - optimise isOutsideOfRange // Paper start - optimize chunk status progression without jumping through thread pool diff --git a/src/main/java/net/minecraft/server/PlayerChunkMap.java b/src/main/java/net/minecraft/server/PlayerChunkMap.java -index 32c384dad5201987fe2545526efa6551e538e388..952bae3101323e40da0fb03e962c2d5cbca6d1ca 100644 +index 94da0b4cb9a790f866bcd3b11a61ae0c0faa1dc5..2d15a4ea2958c4597269ba50bcd82282ee8e3bf0 100644 --- a/src/main/java/net/minecraft/server/PlayerChunkMap.java +++ b/src/main/java/net/minecraft/server/PlayerChunkMap.java @@ -196,6 +196,12 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d { diff --git a/patches/Tuinity/patches/server/0053-Do-not-retain-playerchunkmap-instance-in-light-threa.patch b/patches/Tuinity/patches/server/0053-Do-not-retain-playerchunkmap-instance-in-light-threa.patch index 6e4d03bb..e270c40a 100644 --- a/patches/Tuinity/patches/server/0053-Do-not-retain-playerchunkmap-instance-in-light-threa.patch +++ b/patches/Tuinity/patches/server/0053-Do-not-retain-playerchunkmap-instance-in-light-threa.patch @@ -7,7 +7,7 @@ The executor returned is finalizable and of course that causes issues. diff --git a/src/main/java/net/minecraft/server/PlayerChunkMap.java b/src/main/java/net/minecraft/server/PlayerChunkMap.java -index 952bae3101323e40da0fb03e962c2d5cbca6d1ca..1ac744eb0bd90d6ffd57adfdfb1e54d6bb67992a 100644 +index 2d15a4ea2958c4597269ba50bcd82282ee8e3bf0..8c4a350d59b20efb3f3c6c19e0ae0b676465de70 100644 --- a/src/main/java/net/minecraft/server/PlayerChunkMap.java +++ b/src/main/java/net/minecraft/server/PlayerChunkMap.java @@ -341,9 +341,10 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d { diff --git a/patches/Tuinity/patches/server/0061-Rewrite-the-light-engine.patch b/patches/Tuinity/patches/server/0061-Rewrite-the-light-engine.patch index af642827..cff064f8 100644 --- a/patches/Tuinity/patches/server/0061-Rewrite-the-light-engine.patch +++ b/patches/Tuinity/patches/server/0061-Rewrite-the-light-engine.patch @@ -5297,10 +5297,10 @@ index a22021766b3bffa4f96d1d4ee546b12e96b5ca58..3127fc9dd87e82243e167862cae83ac8 } diff --git a/src/main/java/net/minecraft/server/PlayerChunkMap.java b/src/main/java/net/minecraft/server/PlayerChunkMap.java -index 1ac744eb0bd90d6ffd57adfdfb1e54d6bb67992a..a5bc387980b229c61b416fc1f31235a9e65ed4b5 100644 +index 8c4a350d59b20efb3f3c6c19e0ae0b676465de70..44c04a0a0c744402edb5f6054919a3c181818c27 100644 --- a/src/main/java/net/minecraft/server/PlayerChunkMap.java +++ b/src/main/java/net/minecraft/server/PlayerChunkMap.java -@@ -1320,6 +1320,7 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d { +@@ -1322,6 +1322,7 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d { // Tuinity end - force competion on the main thread } diff --git a/patches/Tuinity/patches/server/0062-Optimise-WorldServer-notify.patch b/patches/Tuinity/patches/server/0062-Optimise-WorldServer-notify.patch index 1793d178..617f135a 100644 --- a/patches/Tuinity/patches/server/0062-Optimise-WorldServer-notify.patch +++ b/patches/Tuinity/patches/server/0062-Optimise-WorldServer-notify.patch @@ -44,7 +44,7 @@ index 55fa3911703f96cf1f97c82b19d8e2d0d220016b..b92ca4a6de01f3f86367fb8dfe3591b0 Vec3D vec3d = new Vec3D(((double) pathpoint.a + this.a.locX()) / 2.0D, ((double) pathpoint.b + this.a.locY()) / 2.0D, ((double) pathpoint.c + this.a.locZ()) / 2.0D); diff --git a/src/main/java/net/minecraft/server/PlayerChunkMap.java b/src/main/java/net/minecraft/server/PlayerChunkMap.java -index a5bc387980b229c61b416fc1f31235a9e65ed4b5..754780b1d15aecd84d725a16b8ea41a498efcb4b 100644 +index 44c04a0a0c744402edb5f6054919a3c181818c27..3ef3c05be2241c43bbef096b00c4b68141af3924 100644 --- a/src/main/java/net/minecraft/server/PlayerChunkMap.java +++ b/src/main/java/net/minecraft/server/PlayerChunkMap.java @@ -295,7 +295,15 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d { diff --git a/patches/Tuinity/patches/server/0063-Actually-unload-POI-data.patch b/patches/Tuinity/patches/server/0063-Actually-unload-POI-data.patch index 9f1717b9..ff9e7ed6 100644 --- a/patches/Tuinity/patches/server/0063-Actually-unload-POI-data.patch +++ b/patches/Tuinity/patches/server/0063-Actually-unload-POI-data.patch @@ -25,7 +25,7 @@ index 13d067f48647dea63ef1bf3a2a3e0868074ba75f..04afd7f285db2f281a038e0be6f557b8 this.a(Long.MAX_VALUE, i, j, flag); } diff --git a/src/main/java/net/minecraft/server/PlayerChunkMap.java b/src/main/java/net/minecraft/server/PlayerChunkMap.java -index 754780b1d15aecd84d725a16b8ea41a498efcb4b..f9844f3a939c29a635fe56fcb1759c279efb0627 100644 +index 3ef3c05be2241c43bbef096b00c4b68141af3924..36418fb2ede9e98c021c5e62150c46d91e5e3e01 100644 --- a/src/main/java/net/minecraft/server/PlayerChunkMap.java +++ b/src/main/java/net/minecraft/server/PlayerChunkMap.java @@ -842,6 +842,7 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d { @@ -45,15 +45,23 @@ index 754780b1d15aecd84d725a16b8ea41a498efcb4b..f9844f3a939c29a635fe56fcb1759c27 protected void unloadChunks(BooleanSupplier booleansupplier) { GameProfilerFiller gameprofilerfiller = this.world.getMethodProfiler(); -@@ -1118,6 +1119,7 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d { +@@ -1095,6 +1096,7 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d { + boolean removed; + if ((removed = this.pendingUnload.remove(i, playerchunk)) && ichunkaccess != null) { // Tuinity end + this.dataRegionManager.removeChunk(playerchunk.location.x, playerchunk.location.z); // Tuinity ++ this.getVillagePlace().queueUnload(playerchunk.location.pair(), MinecraftServer.currentTickLong + 1); // Tuinity - unload POI data + if (ichunkaccess instanceof Chunk) { + ((Chunk) ichunkaccess).setLoaded(false); + } +@@ -1119,6 +1121,7 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d { this.worldLoadListener.a(ichunkaccess.getPos(), (ChunkStatus) null); - } - if (removed) this.dataRegionManager.removeChunk(playerchunk.location.x, playerchunk.location.z); // Tuinity -+ if (removed) this.getVillagePlace().queueUnload(playerchunk.location.pair(), MinecraftServer.currentTickLong + 1); // Tuinity - unload POI data + } else if (removed) { // Tuinity start + this.dataRegionManager.removeChunk(playerchunk.location.x, playerchunk.location.z); ++ this.getVillagePlace().queueUnload(playerchunk.location.pair(), MinecraftServer.currentTickLong + 1); // Tuinity - unload POI data + } // Tuinity end } finally { this.unloadingPlayerChunk = unloadingBefore; } // Tuinity - do not allow ticket level changes while unloading chunks - } -@@ -1210,6 +1212,7 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d { +@@ -1212,6 +1215,7 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d { this.getVillagePlace().loadInData(chunkcoordintpair, chunkHolder.poiData); chunkHolder.tasks.forEach(Runnable::run); diff --git a/patches/Tuinity/patches/server/0065-Fix-chunks-refusing-to-unload-at-low-TPS.patch b/patches/Tuinity/patches/server/0065-Fix-chunks-refusing-to-unload-at-low-TPS.patch index 43550ee2..1a61b211 100644 --- a/patches/Tuinity/patches/server/0065-Fix-chunks-refusing-to-unload-at-low-TPS.patch +++ b/patches/Tuinity/patches/server/0065-Fix-chunks-refusing-to-unload-at-low-TPS.patch @@ -10,10 +10,10 @@ chunk future to complete. We can simply schedule to the immediate executor to get this effect, rather than the main mailbox. diff --git a/src/main/java/net/minecraft/server/PlayerChunkMap.java b/src/main/java/net/minecraft/server/PlayerChunkMap.java -index f9844f3a939c29a635fe56fcb1759c279efb0627..3fe03b92658b157d6c7875dcaae6bbd41952ccd5 100644 +index 36418fb2ede9e98c021c5e62150c46d91e5e3e01..391b1db2d457daeed0c3276d2e408a86f1f2e866 100644 --- a/src/main/java/net/minecraft/server/PlayerChunkMap.java +++ b/src/main/java/net/minecraft/server/PlayerChunkMap.java -@@ -1498,9 +1498,7 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d { +@@ -1501,9 +1501,7 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d { chunk.B(); return chunk; }); diff --git a/patches/Tuinity/patches/server/0068-Make-entity-tracker-use-highest-range-of-passengers.patch b/patches/Tuinity/patches/server/0068-Make-entity-tracker-use-highest-range-of-passengers.patch index bf2ddfee..5557da28 100644 --- a/patches/Tuinity/patches/server/0068-Make-entity-tracker-use-highest-range-of-passengers.patch +++ b/patches/Tuinity/patches/server/0068-Make-entity-tracker-use-highest-range-of-passengers.patch @@ -36,10 +36,10 @@ index 50c61b633faaa47a86172315b53899d3747c8e27..2ec48858be8eb2c522c9685b43bd36b3 // Paper end - optimise entity tracking diff --git a/src/main/java/net/minecraft/server/PlayerChunkMap.java b/src/main/java/net/minecraft/server/PlayerChunkMap.java -index 3fe03b92658b157d6c7875dcaae6bbd41952ccd5..f9482f19549074e04fc4c1e4d05612a2ea23354c 100644 +index 391b1db2d457daeed0c3276d2e408a86f1f2e866..285e976d4a655fb61e70883ae89f974812be7152 100644 --- a/src/main/java/net/minecraft/server/PlayerChunkMap.java +++ b/src/main/java/net/minecraft/server/PlayerChunkMap.java -@@ -2543,7 +2543,7 @@ Sections go from 0..16. Now whenever a section is not empty, it can potentially +@@ -2546,7 +2546,7 @@ Sections go from 0..16. Now whenever a section is not empty, it can potentially int j = entity.getEntityType().getChunkRange() * 16; j = org.spigotmc.TrackingRange.getEntityTrackingRange(entity, j); // Paper diff --git a/patches/Tuinity/patches/server/0069-Do-not-allow-the-server-to-unload-chunks-at-request-.patch b/patches/Tuinity/patches/server/0069-Do-not-allow-the-server-to-unload-chunks-at-request-.patch new file mode 100644 index 00000000..758be811 --- /dev/null +++ b/patches/Tuinity/patches/server/0069-Do-not-allow-the-server-to-unload-chunks-at-request-.patch @@ -0,0 +1,23 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Spottedleaf +Date: Thu, 11 Mar 2021 02:32:30 -0800 +Subject: [PATCH] Do not allow the server to unload chunks at request of + plugins + +In general the chunk system is not well suited for this behavior, +especially if it is called during a chunk load. The chunks pushed +to be unloaded will simply be unloaded next tick, rather than +immediately. + +diff --git a/src/main/java/net/minecraft/server/ChunkProviderServer.java b/src/main/java/net/minecraft/server/ChunkProviderServer.java +index 18270d44185b0ec41b9b6e1d2135e7aae3b33261..e26389d8d9ee4fedb32767fce3aed071af412304 100644 +--- a/src/main/java/net/minecraft/server/ChunkProviderServer.java ++++ b/src/main/java/net/minecraft/server/ChunkProviderServer.java +@@ -901,6 +901,7 @@ public class ChunkProviderServer extends IChunkProvider { + + // CraftBukkit start - modelled on below + public void purgeUnload() { ++ if (true) return; // Tuinity - tickets will be removed later, this behavior isn't really well accounted for by the chunk system + this.world.getMethodProfiler().enter("purge"); + this.chunkMapDistance.purgeTickets(); + this.tickDistanceManager(); diff --git a/patches/Tuinity/patches/server/0070-Do-not-run-close-logic-for-inventories-on-chunk-unlo.patch b/patches/Tuinity/patches/server/0070-Do-not-run-close-logic-for-inventories-on-chunk-unlo.patch new file mode 100644 index 00000000..67fe80a9 --- /dev/null +++ b/patches/Tuinity/patches/server/0070-Do-not-run-close-logic-for-inventories-on-chunk-unlo.patch @@ -0,0 +1,68 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Spottedleaf +Date: Thu, 11 Mar 2021 03:03:32 -0800 +Subject: [PATCH] Do not run close logic for inventories on chunk unload + +Still call the event and change the active container though. We +want to avoid close logic because it's possible to load the +chunk through it. This should also be OK from a leak prevention/ +state desync POV because the TE is getting unloaded anyways. + +diff --git a/src/main/java/net/minecraft/server/EntityHuman.java b/src/main/java/net/minecraft/server/EntityHuman.java +index cc2127b26e41182c14fa95afde878e9b5100a117..f034977f4666385d6e7c7288e453d058c270be01 100644 +--- a/src/main/java/net/minecraft/server/EntityHuman.java ++++ b/src/main/java/net/minecraft/server/EntityHuman.java +@@ -356,6 +356,12 @@ public abstract class EntityHuman extends EntityLiving { + this.activeContainer = this.defaultContainer; + } + // Paper end ++ // Tuinity start - special close for unloaded inventory ++ public void closeUnloadedInventory(org.bukkit.event.inventory.InventoryCloseEvent.Reason reason) { ++ closeInventory(); ++ this.activeContainer = this.defaultContainer; ++ } ++ // Tuinity end - special close for unloaded inventory + + public void closeInventory() { + this.activeContainer = this.defaultContainer; +diff --git a/src/main/java/net/minecraft/server/EntityPlayer.java b/src/main/java/net/minecraft/server/EntityPlayer.java +index cf14b83ec3c2b9a2812f50f3bca991e029bf7c67..f40c24b6e2f7bea21d1cb2b58ed3da45ffcfc866 100644 +--- a/src/main/java/net/minecraft/server/EntityPlayer.java ++++ b/src/main/java/net/minecraft/server/EntityPlayer.java +@@ -1588,6 +1588,17 @@ public class EntityPlayer extends EntityHuman implements ICrafting { + this.playerConnection.sendPacket(new PacketPlayOutCloseWindow(this.activeContainer.windowId)); + this.o(); + } ++ // Tuinity start - special close for unloaded inventory ++ public void closeUnloadedInventory(org.bukkit.event.inventory.InventoryCloseEvent.Reason reason) { ++ // copied from above ++ CraftEventFactory.handleInventoryCloseEvent(this, reason); // CraftBukkit ++ // Paper end ++ // copied from below ++ this.playerConnection.sendPacket(new PacketPlayOutCloseWindow(this.activeContainer.windowId)); ++ this.activeContainer = this.defaultContainer; ++ // do not run close logic ++ } ++ // Tuinity end - special close for unloaded inventory + + public void broadcastCarriedItem() { + if (!this.e) { +diff --git a/src/main/java/net/minecraft/server/WorldServer.java b/src/main/java/net/minecraft/server/WorldServer.java +index d2b50cdc43c737d9fdfdcd7838de24cbca2017e4..9c77be805eb71c409a5d41c2730338583527e447 100644 +--- a/src/main/java/net/minecraft/server/WorldServer.java ++++ b/src/main/java/net/minecraft/server/WorldServer.java +@@ -1792,9 +1792,13 @@ public class WorldServer extends World implements GeneratorAccessSeed { + // Spigot Start + for (TileEntity tileentity : chunk.getTileEntities().values()) { + if (tileentity instanceof IInventory) { ++ // Tuinity start - this area looks like it can load chunks, change the behavior ++ // chests for example can apply physics to the world ++ // so instead we just change the active container and call the event + for (org.bukkit.entity.HumanEntity h : Lists.newArrayList(((IInventory) tileentity).getViewers())) { +- h.closeInventory(org.bukkit.event.inventory.InventoryCloseEvent.Reason.UNLOADED); // Paper ++ ((org.bukkit.craftbukkit.entity.CraftHumanEntity)h).getHandle().closeUnloadedInventory(org.bukkit.event.inventory.InventoryCloseEvent.Reason.UNLOADED); // Paper + } ++ // Tuiniy end + } + } + // Spigot End diff --git a/patches/server/0002-Brandings.patch b/patches/server/0002-Brandings.patch index 52d8d47c..fa175790 100644 --- a/patches/server/0002-Brandings.patch +++ b/patches/server/0002-Brandings.patch @@ -159,133 +159,140 @@ index 089ddda8892c3660c5dcb62d0fd56544857a2eba..8ee165d1c752e53601254f734507370b } -diff --git a/src/main/java/org/yatopiamc/yatopia/server/YatopiaVersionFetcher.java b/src/main/java/org/yatopiamc/yatopia/server/YatopiaVersionFetcher.java -new file mode 100644 -index 0000000000000000000000000000000000000000..2898bfb109c63a93971bd38cc4778da1dc37c445 ---- /dev/null +diff --git a/src/main/java/net/pl3x/purpur/PurpurVersionFetcher.java b/src/main/java/org/yatopiamc/yatopia/server/YatopiaVersionFetcher.java +similarity index 57% +rename from src/main/java/net/pl3x/purpur/PurpurVersionFetcher.java +rename to src/main/java/org/yatopiamc/yatopia/server/YatopiaVersionFetcher.java +index d8b408f061d96e2fa8e2e587462e2221aaee80ce..5857bf9fc07ebb51b85bee7c65e65846ae28fca8 100644 +--- a/src/main/java/net/pl3x/purpur/PurpurVersionFetcher.java +++ b/src/main/java/org/yatopiamc/yatopia/server/YatopiaVersionFetcher.java -@@ -0,0 +1,123 @@ +@@ -1,65 +1,74 @@ +-package net.pl3x.purpur; +package org.yatopiamc.yatopia.server; -+ -+import com.destroystokyo.paper.VersionHistoryManager; -+import com.google.common.base.Charsets; -+import com.google.common.io.Resources; -+import com.google.gson.Gson; -+import com.google.gson.JsonObject; -+import com.google.gson.JsonSyntaxException; -+import java.io.BufferedReader; -+import java.io.IOException; + + import com.destroystokyo.paper.VersionHistoryManager; +-import com.destroystokyo.paper.util.VersionFetcher; + import com.google.common.base.Charsets; + import com.google.common.io.Resources; + import com.google.gson.Gson; + import com.google.gson.JsonObject; + import com.google.gson.JsonSyntaxException; +- +-import javax.annotation.Nonnull; +-import javax.annotation.Nullable; + import java.io.BufferedReader; + import java.io.IOException; +import java.io.InputStream; -+import java.io.InputStreamReader; -+import java.net.HttpURLConnection; -+import java.net.URL; + import java.io.InputStreamReader; + import java.net.HttpURLConnection; + import java.net.URL; +import java.net.URLEncoder; +import java.util.Arrays; +import java.util.Objects; +import java.util.jar.Manifest; +import javax.annotation.Nonnull; -+ + +-public class PurpurVersionFetcher implements VersionFetcher { +- private static final String JENKINS_URL = "https://ci.pl3x.net/job/Purpur/lastSuccessfulBuild/buildNumber"; +- private static final String GITHUB_BRANCH_NAME = "master"; +import com.destroystokyo.paper.util.VersionFetcher; +import javax.annotation.Nullable; ++import net.kyori.adventure.text.Component; ++import net.kyori.adventure.text.format.NamedTextColor; ++import net.kyori.adventure.text.TextComponent; ++import net.kyori.adventure.text.format.TextDecoration; + +public class YatopiaVersionFetcher implements VersionFetcher { -+ -+ @Override -+ public long getCacheTime() { + + @Override + public long getCacheTime() { +- return 720000; + return 3600000; -+ } -+ -+ @Nonnull -+ @Override -+ public String getVersionMessage(@Nonnull String serverVersion) { -+ if(serverVersion.equals("null")) return "Custom build"; + } + + @Nonnull + @Override +- public String getVersionMessage(@Nonnull String serverVersion) { +- String[] parts = serverVersion.substring("git-Purpur-".length()).split("[-\\s]"); +- String updateMessage = getUpdateStatusMessage("pl3xgaming/Purpur", GITHUB_BRANCH_NAME, parts[0]); +- String history = getHistory(); +- +- return history != null ? history + "\n" + updateMessage : updateMessage; ++ public Component getVersionMessage(@Nonnull String serverVersion) { ++ if (serverVersion.equals("null")) return Component.text("Custom build"); + String[] parts = serverVersion.substring("git-Yatopia-".length()).split("[-\\s]"); + String branch = String.join("-", Arrays.copyOfRange(parts, 0, parts.length - 3)); + String version = parts[parts.length - 3]; -+ String updateMessage = getUpdateStatusMessage("YatopiaMC/Yatopia", branch, version); -+ String history = getHistory(); -+ return history != null ? history + "\n" + updateMessage : updateMessage; -+ } -+ -+ private String getUpdateStatusMessage(String repo, String branch, String versionInfo) { -+ int distance; -+ try { -+ int jenkinsBuild = Integer.parseInt(versionInfo); ++ final Component updateMessage = getUpdateStatusMessage("YatopiaMC/Yatopia", branch, version); ++ final Component history = getHistory(); ++ return history != null ? TextComponent.ofChildren(history, Component.newline(), updateMessage) : updateMessage; + } + +- private static String getUpdateStatusMessage(@Nonnull String repo, @Nonnull String branch, @Nonnull String versionInfo) { ++ private Component getUpdateStatusMessage(String repo, String branch, String versionInfo) { + int distance; + try { + int jenkinsBuild = Integer.parseInt(versionInfo); +- distance = fetchDistanceFromJenkins(jenkinsBuild); + distance = fetchDistanceFromJenkins(branch, jenkinsBuild); -+ } catch (NumberFormatException ignored) { + } catch (NumberFormatException ignored) { +- versionInfo = versionInfo.replace("\"", ""); +- distance = fetchDistanceFromGitHub(repo, branch, versionInfo); + distance = fetchDistanceFromGitHub(repo, branch, versionInfo.replace("\"", "")); -+ } -+ -+ switch (distance) { -+ case -1: -+ return "Error obtaining version information"; -+ case 0: -+ return "You are running the latest version"; -+ case -2: -+ return "\u00AF\\_(\u30C4)_/\u00AF"; -+ default: -+ return "You are " + distance + " version(s) behind"; -+ } -+ } -+ + } + + switch (distance) { + case -1: +- return "Error obtaining version information"; ++ return Component.text("Error obtaining version information", NamedTextColor.YELLOW); + case 0: +- return "You are running the latest version"; ++ return Component.text("You are running the latest version", NamedTextColor.GREEN); + case -2: +- return "Unknown version"; ++ return Component.text("\u00AF\\_(\u30C4)_/\u00AF", NamedTextColor.YELLOW); + default: +- return "You are " + distance + " version(s) behind"; ++ return Component.text("You are " + distance + " version(s) behind", NamedTextColor.YELLOW); + } + } + +- private static int fetchDistanceFromJenkins(int jenkinsBuild) { + // modified from PurpurVersionFetcher + private static int fetchDistanceFromJenkins(String branch, int jenkinsBuild) { -+ try { + try { +- try (BufferedReader reader = Resources.asCharSource(new URL(JENKINS_URL), Charsets.UTF_8).openBufferedStream()) { + try (BufferedReader reader = Resources.asCharSource(new URL("https://ci.codemc.io/job/YatopiaMC/job/Yatopia/job/" + URLEncoder.encode(branch, Charsets.UTF_8.name()) + "/lastStableBuild/buildNumber"), Charsets.UTF_8).openBufferedStream()) { -+ return Integer.decode(reader.readLine()) - jenkinsBuild; -+ } catch (NumberFormatException ex) { -+ ex.printStackTrace(); -+ return -2; -+ } -+ } catch (IOException e) { -+ e.printStackTrace(); -+ return -1; -+ } -+ } -+ -+ // Contributed by Techcable in GH-65 + return Integer.decode(reader.readLine()) - jenkinsBuild; + } catch (NumberFormatException ex) { + ex.printStackTrace(); +@@ -72,6 +81,7 @@ public class PurpurVersionFetcher implements VersionFetcher { + } + + // Contributed by Techcable in GH-65 + // from PaperVersionFetcher -+ private static int fetchDistanceFromGitHub(@Nonnull String repo, @Nonnull String branch, @Nonnull String hash) { -+ try { -+ HttpURLConnection connection = (HttpURLConnection) new URL("https://api.github.com/repos/" + repo + "/compare/" + branch + "..." + hash).openConnection(); -+ connection.connect(); -+ if (connection.getResponseCode() == HttpURLConnection.HTTP_NOT_FOUND) return -2; // Unknown commit -+ try (BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream(), Charsets.UTF_8))) { -+ JsonObject obj = new Gson().fromJson(reader, JsonObject.class); -+ String status = obj.get("status").getAsString(); -+ switch (status) { -+ case "identical": -+ return 0; -+ case "behind": -+ return obj.get("behind_by").getAsInt(); -+ default: -+ return -1; -+ } -+ } catch (JsonSyntaxException | NumberFormatException e) { -+ e.printStackTrace(); -+ return -1; -+ } -+ } catch (IOException e) { -+ e.printStackTrace(); -+ return -1; -+ } -+ } -+ + private static int fetchDistanceFromGitHub(@Nonnull String repo, @Nonnull String branch, @Nonnull String hash) { + try { + HttpURLConnection connection = (HttpURLConnection) new URL("https://api.github.com/repos/" + repo + "/compare/" + branch + "..." + hash).openConnection(); +@@ -98,8 +108,9 @@ public class PurpurVersionFetcher implements VersionFetcher { + } + } + + // from PaperVersionFetcher -+ @Nullable -+ private String getHistory() { -+ final VersionHistoryManager.VersionData data = VersionHistoryManager.INSTANCE.getVersionData(); -+ if (data == null) { -+ return null; -+ } -+ -+ final String oldVersion = data.getOldVersion(); -+ if (oldVersion == null) { -+ return null; -+ } -+ -+ return "Previous version: " + oldVersion; -+ } + @Nullable +- private String getHistory() { ++ private Component getHistory() { + final VersionHistoryManager.VersionData data = VersionHistoryManager.INSTANCE.getVersionData(); + if (data == null) { + return null; +@@ -110,6 +121,7 @@ public class PurpurVersionFetcher implements VersionFetcher { + return null; + } + +- return "Previous version: " + oldVersion; ++ return Component.text("Previous version: " + oldVersion, NamedTextColor.GRAY, TextDecoration.ITALIC); + } +-} + +} \ No newline at end of file diff --git a/patches/server/0019-Optimize-TileEntity-load-unload.patch b/patches/server/0019-Optimize-TileEntity-load-unload.patch index cb6dc004..f1ed82fe 100644 --- a/patches/server/0019-Optimize-TileEntity-load-unload.patch +++ b/patches/server/0019-Optimize-TileEntity-load-unload.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Optimize TileEntity load/unload diff --git a/src/main/java/net/minecraft/server/World.java b/src/main/java/net/minecraft/server/World.java -index 4ffaf36b40b32be25bd1944d8b8ddbc342256947..64195edf7c277d581be4d726675b09bd4a263793 100644 +index 6007121ca9791bfc8e68b0354ad9005a7369d389..e6fb68f6e279eb1006f420c37fa408a0cf1fa0f3 100644 --- a/src/main/java/net/minecraft/server/World.java +++ b/src/main/java/net/minecraft/server/World.java @@ -42,8 +42,8 @@ public abstract class World implements GeneratorAccess, AutoCloseable { diff --git a/patches/server/0024-Optimize-some-stuff-in-WorldServer-ticking.patch b/patches/server/0024-Optimize-some-stuff-in-WorldServer-ticking.patch index 55f191d0..3038ed8a 100644 --- a/patches/server/0024-Optimize-some-stuff-in-WorldServer-ticking.patch +++ b/patches/server/0024-Optimize-some-stuff-in-WorldServer-ticking.patch @@ -6,7 +6,7 @@ Subject: [PATCH] Optimize some stuff in WorldServer ticking Replaced some streams and some array lists with glue lists diff --git a/src/main/java/net/minecraft/server/WorldServer.java b/src/main/java/net/minecraft/server/WorldServer.java -index d4672e7fa899a39bae2d9179472b22db28a58f19..cca6b3585485162e8158e43dee4f8b45d4e30bea 100644 +index fe6611e480c18e97061268690d067a811b13bb1b..68fda6e73db23cc8fb10501b2d84f229ea5afc7f 100644 --- a/src/main/java/net/minecraft/server/WorldServer.java +++ b/src/main/java/net/minecraft/server/WorldServer.java @@ -885,12 +885,21 @@ public class WorldServer extends World implements GeneratorAccessSeed { @@ -48,7 +48,7 @@ index d4672e7fa899a39bae2d9179472b22db28a58f19..cca6b3585485162e8158e43dee4f8b45 long l = this.worldData.getDayTime() + 24000L; TimeSkipEvent event = new TimeSkipEvent(this.getWorld(), TimeSkipEvent.SkipReason.NIGHT_SKIP, (l - l % 24000L) - this.getDayTime()); if (this.getGameRules().getBoolean(GameRules.DO_DAYLIGHT_CYCLE)) { -@@ -1135,9 +1142,9 @@ public class WorldServer extends World implements GeneratorAccessSeed { +@@ -1114,9 +1121,9 @@ public class WorldServer extends World implements GeneratorAccessSeed { } private void wakeupPlayers() { @@ -60,7 +60,7 @@ index d4672e7fa899a39bae2d9179472b22db28a58f19..cca6b3585485162e8158e43dee4f8b45 } // Paper start - optimise random block ticking -@@ -1930,8 +1937,9 @@ public class WorldServer extends World implements GeneratorAccessSeed { +@@ -1908,8 +1915,9 @@ public class WorldServer extends World implements GeneratorAccessSeed { // Spigot start if ( entity instanceof EntityHuman ) { @@ -71,7 +71,7 @@ index d4672e7fa899a39bae2d9179472b22db28a58f19..cca6b3585485162e8158e43dee4f8b45 for (Object o : worldData.data.values() ) { if ( o instanceof WorldMap ) -@@ -1948,7 +1956,7 @@ public class WorldServer extends World implements GeneratorAccessSeed { +@@ -1926,7 +1934,7 @@ public class WorldServer extends World implements GeneratorAccessSeed { } } } diff --git a/patches/server/0027-Highly-optimize-VillagePlace-filtering.patch b/patches/server/0027-Highly-optimize-VillagePlace-filtering.patch index 1b15804b..740fa31a 100644 --- a/patches/server/0027-Highly-optimize-VillagePlace-filtering.patch +++ b/patches/server/0027-Highly-optimize-VillagePlace-filtering.patch @@ -67,7 +67,7 @@ index 0000000000000000000000000000000000000000..e647624f4c9afe8bc603792ad88c807e + } +} diff --git a/src/main/java/net/minecraft/server/BlockPosition.java b/src/main/java/net/minecraft/server/BlockPosition.java -index f38382cc681f03d9a6a0efa85f045e3770398739..97b0aee82e080a1225454317cbf0191ef8b14fca 100644 +index bc61aaff65a7dc1e7534452b285953b83adb7000..7fddef0afbcf1f9f391c540b8fce1bebf8faa452 100644 --- a/src/main/java/net/minecraft/server/BlockPosition.java +++ b/src/main/java/net/minecraft/server/BlockPosition.java @@ -341,6 +341,16 @@ public class BlockPosition extends BaseBlockPosition { diff --git a/patches/server/0029-Nuke-streams-off-BlockPosition.patch b/patches/server/0029-Nuke-streams-off-BlockPosition.patch index 9c9fce72..e24c8032 100644 --- a/patches/server/0029-Nuke-streams-off-BlockPosition.patch +++ b/patches/server/0029-Nuke-streams-off-BlockPosition.patch @@ -17,7 +17,7 @@ index 8724ad342bec7c733b3c825bd62dbfa5c28c06dd..9907047028b754fe0e314a7d5c5238ce return this.getBlock().a(tag); } diff --git a/src/main/java/net/minecraft/server/BlockPosition.java b/src/main/java/net/minecraft/server/BlockPosition.java -index 97b0aee82e080a1225454317cbf0191ef8b14fca..c4dd89d9bae1960d25b64e2a715a83adde65719a 100644 +index 7fddef0afbcf1f9f391c540b8fce1bebf8faa452..f13b4e6ec815792c2f2b49193707da94df427424 100644 --- a/src/main/java/net/minecraft/server/BlockPosition.java +++ b/src/main/java/net/minecraft/server/BlockPosition.java @@ -318,7 +318,15 @@ public class BlockPosition extends BaseBlockPosition { diff --git a/patches/server/0032-Fix-LightEngineThreaded-memory-leak.patch b/patches/server/0032-Fix-LightEngineThreaded-memory-leak.patch index b87e26c6..b4bdd42a 100644 --- a/patches/server/0032-Fix-LightEngineThreaded-memory-leak.patch +++ b/patches/server/0032-Fix-LightEngineThreaded-memory-leak.patch @@ -18,10 +18,10 @@ index b2f51a6786d4bb92c9cbbceeea812375b1a49bd6..d16157dcbc6f36fa0c8284784641e544 return this.size == 0 && this.pendingTasks.isEmpty(); } diff --git a/src/main/java/net/minecraft/server/WorldServer.java b/src/main/java/net/minecraft/server/WorldServer.java -index cca6b3585485162e8158e43dee4f8b45d4e30bea..68fbbcac7b6b2f24a42c3a63825f940e52f6f51a 100644 +index 68fda6e73db23cc8fb10501b2d84f229ea5afc7f..426496ce2f08fc6c7d713267f735964f04eb22f1 100644 --- a/src/main/java/net/minecraft/server/WorldServer.java +++ b/src/main/java/net/minecraft/server/WorldServer.java -@@ -1916,6 +1916,7 @@ public class WorldServer extends World implements GeneratorAccessSeed { +@@ -1894,6 +1894,7 @@ public class WorldServer extends World implements GeneratorAccessSeed { } // Paper end diff --git a/patches/server/0035-Optimize-whitelist-command-for-multiple-additions-re.patch b/patches/server/0035-Optimize-whitelist-command-for-multiple-additions-re.patch index 1ee5f43e..1f7699fa 100644 --- a/patches/server/0035-Optimize-whitelist-command-for-multiple-additions-re.patch +++ b/patches/server/0035-Optimize-whitelist-command-for-multiple-additions-re.patch @@ -111,7 +111,7 @@ index 893d2c1c74ed28dcdb83b71762ccdcbfd50a8f9d..107091a4cae0e4eaba93f69ae91239ab private static int b(CommandListenerWrapper commandlistenerwrapper) throws CommandSyntaxException { diff --git a/src/main/java/net/minecraft/server/EntityHuman.java b/src/main/java/net/minecraft/server/EntityHuman.java -index c2e0f449400d7477be6310c8d59efe21a517afb3..4e95e542fa79a0cf548a939e575ecca55021229a 100644 +index 5581e9f1b8656bd2ee0dd338ffd17ac8297df94f..f506a11a1f5774488eebd13fa80cd6eb090f7446 100644 --- a/src/main/java/net/minecraft/server/EntityHuman.java +++ b/src/main/java/net/minecraft/server/EntityHuman.java @@ -78,6 +78,7 @@ public abstract class EntityHuman extends EntityLiving { @@ -122,7 +122,7 @@ index c2e0f449400d7477be6310c8d59efe21a517afb3..4e95e542fa79a0cf548a939e575ecca5 @Override public CraftHumanEntity getBukkitEntity() { -@@ -1917,6 +1918,15 @@ public abstract class EntityHuman extends EntityLiving { +@@ -1923,6 +1924,15 @@ public abstract class EntityHuman extends EntityLiving { return this.getProfile().getName(); } diff --git a/patches/server/0036-PlayerAttackEntityEvent.patch b/patches/server/0036-PlayerAttackEntityEvent.patch index 27ec2445..a7f79bde 100644 --- a/patches/server/0036-PlayerAttackEntityEvent.patch +++ b/patches/server/0036-PlayerAttackEntityEvent.patch @@ -6,10 +6,10 @@ Subject: [PATCH] PlayerAttackEntityEvent Added per request diff --git a/src/main/java/net/minecraft/server/EntityHuman.java b/src/main/java/net/minecraft/server/EntityHuman.java -index 4e95e542fa79a0cf548a939e575ecca55021229a..124802af04f06dfb90d46960975cdad422088dc4 100644 +index f506a11a1f5774488eebd13fa80cd6eb090f7446..15a2065abf7c187a9b92bd743240085e2a61a906 100644 --- a/src/main/java/net/minecraft/server/EntityHuman.java +++ b/src/main/java/net/minecraft/server/EntityHuman.java -@@ -1071,12 +1071,50 @@ public abstract class EntityHuman extends EntityLiving { +@@ -1077,12 +1077,50 @@ public abstract class EntityHuman extends EntityLiving { flag2 = flag2 && !world.paperConfig.disablePlayerCrits; // Paper flag2 = flag2 && !this.isSprinting(); diff --git a/patches/server/0048-Smarter-statistics-ticking.patch b/patches/server/0048-Smarter-statistics-ticking.patch index 4825e423..081199c4 100644 --- a/patches/server/0048-Smarter-statistics-ticking.patch +++ b/patches/server/0048-Smarter-statistics-ticking.patch @@ -8,7 +8,7 @@ In vanilla, statistics that count time spent for an action (i.e. time played or With an interval of 20, this patch saves roughly 3ms per tick on a server w/ 80 players online. diff --git a/src/main/java/net/minecraft/server/EntityHuman.java b/src/main/java/net/minecraft/server/EntityHuman.java -index 124802af04f06dfb90d46960975cdad422088dc4..9452eae41bbad0305b3d66ce2fe20667effd2bdf 100644 +index 15a2065abf7c187a9b92bd743240085e2a61a906..1730108aa67802ed15407c45542b6223ca86634f 100644 --- a/src/main/java/net/minecraft/server/EntityHuman.java +++ b/src/main/java/net/minecraft/server/EntityHuman.java @@ -175,18 +175,23 @@ public abstract class EntityHuman extends EntityLiving { diff --git a/patches/server/0049-Configurable-criterion-triggers.patch b/patches/server/0049-Configurable-criterion-triggers.patch index 718dcad2..9ba892d5 100644 --- a/patches/server/0049-Configurable-criterion-triggers.patch +++ b/patches/server/0049-Configurable-criterion-triggers.patch @@ -6,7 +6,7 @@ Subject: [PATCH] Configurable criterion triggers This patch adds toggles for three criterion triggers that are called every tick. These can be very unnecessary, and especially in the case of CriterionTriggerEnterBlock, quite heavy. diff --git a/src/main/java/net/minecraft/server/EntityPlayer.java b/src/main/java/net/minecraft/server/EntityPlayer.java -index 4c42d7fb44e2c82f516e37556b7c20e7380c7f13..a2aa223a3487338591b5135ae6907b6892a87fcb 100644 +index d6c6a389cf214f2f8cbb343fc8106ab7d0845950..ee27b814e0ae4eb9867df7fef31671fb23193cb7 100644 --- a/src/main/java/net/minecraft/server/EntityPlayer.java +++ b/src/main/java/net/minecraft/server/EntityPlayer.java @@ -439,6 +439,7 @@ public class EntityPlayer extends EntityHuman implements ICrafting { diff --git a/patches/server/0060-Suspected-plugins-report.patch b/patches/server/0060-Suspected-plugins-report.patch index 8254c9e7..cf42f653 100644 --- a/patches/server/0060-Suspected-plugins-report.patch +++ b/patches/server/0060-Suspected-plugins-report.patch @@ -108,7 +108,7 @@ index 0668d383db1f3a81d1053954d72678c7ac5aecec..7b9f83e63d0f9cd83a246be33af4ab91 ChatComponentText chatcomponenttext = new ChatComponentText("Internal server error"); diff --git a/src/main/java/net/minecraft/server/World.java b/src/main/java/net/minecraft/server/World.java -index 64195edf7c277d581be4d726675b09bd4a263793..bdc85c5026b9d5fe50e709cf6d5c8eb8d5f3653b 100644 +index e6fb68f6e279eb1006f420c37fa408a0cf1fa0f3..55238930d8352ccedb963389461f119cd813aff9 100644 --- a/src/main/java/net/minecraft/server/World.java +++ b/src/main/java/net/minecraft/server/World.java @@ -1019,6 +1019,10 @@ public abstract class World implements GeneratorAccess, AutoCloseable { diff --git a/upstream/Tuinity b/upstream/Tuinity index f87cb795..19ac6608 160000 --- a/upstream/Tuinity +++ b/upstream/Tuinity @@ -1 +1 @@ -Subproject commit f87cb795f6504a7958f2400a456eeb256145d3de +Subproject commit 19ac6608f3035459bfbad0059f342d719c9050a3 diff --git a/upstreamCommits/Tuinity b/upstreamCommits/Tuinity index f7b59e8f..88d382a9 100644 --- a/upstreamCommits/Tuinity +++ b/upstreamCommits/Tuinity @@ -1 +1 @@ -f87cb795f6504a7958f2400a456eeb256145d3de \ No newline at end of file +19ac6608f3035459bfbad0059f342d719c9050a3 \ No newline at end of file diff --git a/upstreamConfig/0003-Airplane.properties b/upstreamConfig/0003-Airplane.properties index 735b7b6e..1d781c7b 100644 --- a/upstreamConfig/0003-Airplane.properties +++ b/upstreamConfig/0003-Airplane.properties @@ -1,4 +1,4 @@ name=Airplane useBlackList=True -list=server/Airplane-Branding-Changes.patch,server/Disable-Paper-timings-by-default.patch,server/Only-check-for-spooky-season-once-an-hour.patch +list=server/Airplane-Branding-Changes.patch,server/Disable-Paper-timings-by-default.patch,server/Only-check-for-spooky-season-once-an-hour.patch,server/Reduce-memory-allocations.patch branch=origin/master