From 5e89d2377da79e6bae38977dc2b8101c68bc537d Mon Sep 17 00:00:00 2001 From: jmp Date: Wed, 7 Apr 2021 20:24:49 -0700 Subject: [PATCH] Updated Upstream (Paper & Airplane) Upstream has released updates that appear to apply and compile correctly Paper Changes: 3db3aaf39 [Auto] Updated Upstream (CraftBukkit) c953e51dd [Auto] Updated Upstream (CraftBukkit/Spigot) dc529c7a9 Fix PlayerEditBookEvent (#5463) 3fea87edb [Auto] Updated Upstream (CraftBukkit) a111b1365 Send post ChatEvent messages as MessageType.CHAT d15161114 [Auto] Updated Upstream (Spigot) e8889e96a [Auto] Updated Upstream (CraftBukkit) 3bc888ba6 [Auto] Updated Upstream (CraftBukkit) 211f8e041 Prevent light queue overfill when no players are online Airplane Changes: 3ed988c05 Use AIR library for configuration parsing --- Paper | 2 +- .../server/0001-Tuinity-Server-Changes.patch | 161 ++++---- .../server/0002-Airplane-Server-Changes.patch | 343 ++++-------------- .../0003-Multithreaded-entity-tracking.patch | 27 +- patches/server/0004-Rebrand.patch | 19 +- patches/server/0010-AFK-API.patch | 8 +- .../0013-LivingEntity-safeFallDistance.patch | 2 +- .../0018-Player-invulnerabilities.patch | 2 +- .../0021-Alternative-Keepalive-Handling.patch | 2 +- patches/server/0027-Giants-AI-settings.patch | 2 +- .../0029-Zombie-horse-naturally-spawn.patch | 4 +- ...034-Dont-send-useless-entity-packets.patch | 6 +- patches/server/0041-Cows-eat-mushrooms.patch | 2 +- .../server/0047-Signs-allow-color-codes.patch | 2 +- .../server/0049-Controllable-Minecarts.patch | 2 +- ...able-loot-drops-on-death-by-cramming.patch | 2 +- ...0054-Fix-the-dead-lagging-the-server.patch | 2 +- ...0075-Add-5-second-tps-average-in-tps.patch | 2 +- .../0076-Implement-elytra-settings.patch | 2 +- .../server/0077-Item-entity-immunities.patch | 4 +- .../0085-Allow-color-codes-in-books.patch | 4 +- patches/server/0086-Entity-lifespan.patch | 2 +- ...leport-to-spawn-if-outside-world-bor.patch | 2 +- .../0094-Totems-work-in-inventory.patch | 2 +- .../0100-Add-no-random-tick-block-list.patch | 6 +- ...Stop-squids-floating-on-top-of-water.patch | 6 +- patches/server/0104-Ridables.patch | 22 +- ...ing-obsidian-valid-for-portal-frames.patch | 4 +- ...ggling-special-MobSpawners-per-world.patch | 2 +- patches/server/0116-Flying-squids-Oh-my.patch | 8 +- .../0119-Configurable-daylight-cycle.patch | 6 +- ...-check-to-EntityDamagedByEntityEvent.patch | 2 +- ...ble-chance-for-wolves-to-spawn-rabid.patch | 2 +- ...-Configurable-entity-base-attributes.patch | 4 +- .../server/0156-PlayerBookTooLargeEvent.patch | 2 +- ...iefing-bypass-to-everything-affected.patch | 2 +- ...0162-Add-EntityTeleportHinderedEvent.patch | 4 +- ...to-use-infinity-bows-without-arrows.patch} | 0 ...yerEditBookEvent-not-saving-new-book.patch | 19 - ...ggle-for-water-sensitive-mob-damage.patch} | 2 +- ...9-Config-to-always-tame-in-Creative.patch} | 0 ... 0170-End-crystal-explosion-options.patch} | 0 ...Add-unsafe-Entity-serialization-API.patch} | 0 ...172-Add-ghast-allow-griefing-option.patch} | 0 ...ther-Ender-Dragon-can-ride-vehicles.patch} | 0 ...atch => 0174-Dont-run-with-scissors.patch} | 2 +- ...nch-Man.patch => 0175-One-Punch-Man.patch} | 2 +- ...176-Add-config-for-snow-on-blue-ice.patch} | 0 ...r-Pearl-cooldown-damage-and-Endermi.patch} | 0 ...to-ignore-nearby-mobs-when-sleeping.patch} | 0 ...nderman-to-aggro-spawned-Endermites.patch} | 0 ...Dragon-Head-wearers-and-stare-aggro.patch} | 0 ...> 0181-Re-enable-timings-by-default.patch} | 0 ...ig.patch => 0182-Tick-fluids-config.patch} | 0 ...83-Config-to-disable-Llama-caravans.patch} | 0 ...g-to-make-Creepers-explode-on-death.patch} | 0 ...rable-ravager-griefable-blocks-list.patch} | 0 ...186-Sneak-to-bulk-process-composter.patch} | 0 ...h => 0187-Config-for-skipping-night.patch} | 4 +- ...188-Add-config-for-villager-trading.patch} | 0 ...=> 0189-Allow-infinity-on-crossbows.patch} | 0 ...ngs.patch => 0190-Drowning-Settings.patch} | 2 +- ...reak-individual-slabs-when-sneaking.patch} | 0 ...to-disable-hostile-mob-spawn-on-ice.patch} | 0 ...g-to-show-Armor-Stand-arms-on-spawn.patch} | 0 ...ption-to-make-doors-require-restone.patch} | 0 ...Config-to-allow-for-unsafe-enchants.patch} | 0 ...0196-Configurable-sponge-absorption.patch} | 0 ...ch => 0197-Projectile-offset-config.patch} | 0 ...or-powered-rail-activation-distance.patch} | 0 subprojects/server.gradle.kts | 7 + 71 files changed, 241 insertions(+), 473 deletions(-) rename patches/server/{0168-Config-to-use-infinity-bows-without-arrows.patch => 0167-Config-to-use-infinity-bows-without-arrows.patch} (100%) delete mode 100644 patches/server/0167-Fix-PlayerEditBookEvent-not-saving-new-book.patch rename patches/server/{0169-Toggle-for-water-sensitive-mob-damage.patch => 0168-Toggle-for-water-sensitive-mob-damage.patch} (98%) rename patches/server/{0170-Config-to-always-tame-in-Creative.patch => 0169-Config-to-always-tame-in-Creative.patch} (100%) rename patches/server/{0171-End-crystal-explosion-options.patch => 0170-End-crystal-explosion-options.patch} (100%) rename patches/server/{0172-Add-unsafe-Entity-serialization-API.patch => 0171-Add-unsafe-Entity-serialization-API.patch} (100%) rename patches/server/{0173-Add-ghast-allow-griefing-option.patch => 0172-Add-ghast-allow-griefing-option.patch} (100%) rename patches/server/{0174-Configs-for-if-Wither-Ender-Dragon-can-ride-vehicles.patch => 0173-Configs-for-if-Wither-Ender-Dragon-can-ride-vehicles.patch} (100%) rename patches/server/{0175-Dont-run-with-scissors.patch => 0174-Dont-run-with-scissors.patch} (96%) rename patches/server/{0176-One-Punch-Man.patch => 0175-One-Punch-Man.patch} (97%) rename patches/server/{0177-Add-config-for-snow-on-blue-ice.patch => 0176-Add-config-for-snow-on-blue-ice.patch} (100%) rename patches/server/{0178-Configurable-Ender-Pearl-cooldown-damage-and-Endermi.patch => 0177-Configurable-Ender-Pearl-cooldown-damage-and-Endermi.patch} (100%) rename patches/server/{0179-Config-to-ignore-nearby-mobs-when-sleeping.patch => 0178-Config-to-ignore-nearby-mobs-when-sleeping.patch} (100%) rename patches/server/{0180-Config-for-Enderman-to-aggro-spawned-Endermites.patch => 0179-Config-for-Enderman-to-aggro-spawned-Endermites.patch} (100%) rename patches/server/{0181-Config-to-ignore-Dragon-Head-wearers-and-stare-aggro.patch => 0180-Config-to-ignore-Dragon-Head-wearers-and-stare-aggro.patch} (100%) rename patches/server/{0182-Re-enable-timings-by-default.patch => 0181-Re-enable-timings-by-default.patch} (100%) rename patches/server/{0183-Tick-fluids-config.patch => 0182-Tick-fluids-config.patch} (100%) rename patches/server/{0184-Config-to-disable-Llama-caravans.patch => 0183-Config-to-disable-Llama-caravans.patch} (100%) rename patches/server/{0185-Config-to-make-Creepers-explode-on-death.patch => 0184-Config-to-make-Creepers-explode-on-death.patch} (100%) rename patches/server/{0186-Configurable-ravager-griefable-blocks-list.patch => 0185-Configurable-ravager-griefable-blocks-list.patch} (100%) rename patches/server/{0187-Sneak-to-bulk-process-composter.patch => 0186-Sneak-to-bulk-process-composter.patch} (100%) rename patches/server/{0188-Config-for-skipping-night.patch => 0187-Config-for-skipping-night.patch} (93%) rename patches/server/{0189-Add-config-for-villager-trading.patch => 0188-Add-config-for-villager-trading.patch} (100%) rename patches/server/{0190-Allow-infinity-on-crossbows.patch => 0189-Allow-infinity-on-crossbows.patch} (100%) rename patches/server/{0191-Drowning-Settings.patch => 0190-Drowning-Settings.patch} (97%) rename patches/server/{0192-Break-individual-slabs-when-sneaking.patch => 0191-Break-individual-slabs-when-sneaking.patch} (100%) rename patches/server/{0193-Config-to-disable-hostile-mob-spawn-on-ice.patch => 0192-Config-to-disable-hostile-mob-spawn-on-ice.patch} (100%) rename patches/server/{0194-Config-to-show-Armor-Stand-arms-on-spawn.patch => 0193-Config-to-show-Armor-Stand-arms-on-spawn.patch} (100%) rename patches/server/{0195-Option-to-make-doors-require-restone.patch => 0194-Option-to-make-doors-require-restone.patch} (100%) rename patches/server/{0196-Config-to-allow-for-unsafe-enchants.patch => 0195-Config-to-allow-for-unsafe-enchants.patch} (100%) rename patches/server/{0197-Configurable-sponge-absorption.patch => 0196-Configurable-sponge-absorption.patch} (100%) rename patches/server/{0198-Projectile-offset-config.patch => 0197-Projectile-offset-config.patch} (100%) rename patches/server/{0199-Config-for-powered-rail-activation-distance.patch => 0198-Config-for-powered-rail-activation-distance.patch} (100%) diff --git a/Paper b/Paper index 4b78c0b80..3db3aaf39 160000 --- a/Paper +++ b/Paper @@ -1 +1 @@ -Subproject commit 4b78c0b805e92cfdc9f3b7452ce25132129ebe0e +Subproject commit 3db3aaf393709cd7d0e59b6c24ab7170c5b2942e diff --git a/patches/server/0001-Tuinity-Server-Changes.patch b/patches/server/0001-Tuinity-Server-Changes.patch index c3d503aa0..f05fab21f 100644 --- a/patches/server/0001-Tuinity-Server-Changes.patch +++ b/patches/server/0001-Tuinity-Server-Changes.patch @@ -11404,7 +11404,7 @@ index 2f8bca35508640f6b8c312fff17d55f129431599..db8532c42fcb2e96f4b3491352d1b9a2 class b extends ChunkMap { diff --git a/src/main/java/net/minecraft/server/level/ChunkProviderServer.java b/src/main/java/net/minecraft/server/level/ChunkProviderServer.java -index e542fe5fb63064e67c7fde8fad614826d6f3344c..cb83f1152c52a99d25e4e80cc8bf18c6793e8b50 100644 +index c5e54c519e1f686761faa53b5e9579c514a65332..fe040615ff03478a20cdf8376f89a6b7d100ba61 100644 --- a/src/main/java/net/minecraft/server/level/ChunkProviderServer.java +++ b/src/main/java/net/minecraft/server/level/ChunkProviderServer.java @@ -47,6 +47,12 @@ import net.minecraft.world.level.storage.WorldData; @@ -11800,7 +11800,7 @@ index e542fe5fb63064e67c7fde8fad614826d6f3344c..cb83f1152c52a99d25e4e80cc8bf18c6 } private void a(long i, Consumer consumer) { -@@ -1026,51 +1237,19 @@ public class ChunkProviderServer extends IChunkProvider { +@@ -1026,44 +1237,12 @@ public class ChunkProviderServer extends IChunkProvider { ChunkProviderServer.this.world.getMethodProfiler().c("runTask"); super.executeTask(runnable); } @@ -11848,14 +11848,6 @@ index e542fe5fb63064e67c7fde8fad614826d6f3344c..cb83f1152c52a99d25e4e80cc8bf18c6 // CraftBukkit start - process pending Chunk loadCallback() and unloadCallback() after each run task try { boolean execChunkTask = com.destroystokyo.paper.io.chunk.ChunkTaskManager.pollChunkWaitQueue() || ChunkProviderServer.this.world.asyncChunkTaskManager.pollNextChunkTask(); // Paper - if (ChunkProviderServer.this.tickDistanceManager()) { - return true; - } else { -- //ChunkProviderServer.this.lightEngine.queueUpdate(); // Paper - not needed -+ ChunkProviderServer.this.lightEngine.queueUpdate(); // Paper - not needed // Tuinity - prevent queue overflow when no players are in this world - return super.executeNext() || execChunkTask; // Paper - } - } finally { diff --git a/src/main/java/net/minecraft/server/level/EntityPlayer.java b/src/main/java/net/minecraft/server/level/EntityPlayer.java index 37c9b5fd712e30a9a0faccc840f738f4b2cfc723..59989db6dcf96a8ab5a75775bb588c31cec3418a 100644 --- a/src/main/java/net/minecraft/server/level/EntityPlayer.java @@ -12074,7 +12066,7 @@ index 37c9b5fd712e30a9a0faccc840f738f4b2cfc723..59989db6dcf96a8ab5a75775bb588c31 public void broadcastCarriedItem() { if (!this.e) { diff --git a/src/main/java/net/minecraft/server/level/EntityTrackerEntry.java b/src/main/java/net/minecraft/server/level/EntityTrackerEntry.java -index f65eb0168ed365e5c1b490c56ec84e3b7ff87c1d..a1512ee8422fa39a95e4f19c86fe71b77af54ca0 100644 +index 1df8fb8cb3fcf8201e1c5fa8ca13f7a9c632c379..67ca28463f5add7c18f7f16b918c3f36f8feeeda 100644 --- a/src/main/java/net/minecraft/server/level/EntityTrackerEntry.java +++ b/src/main/java/net/minecraft/server/level/EntityTrackerEntry.java @@ -103,6 +103,7 @@ public class EntityTrackerEntry { @@ -12085,7 +12077,7 @@ index f65eb0168ed365e5c1b490c56ec84e3b7ff87c1d..a1512ee8422fa39a95e4f19c86fe71b7 List list = this.tracker.passengers; // Paper - do not copy list if (!list.equals(this.p)) { -@@ -185,7 +186,7 @@ public class EntityTrackerEntry { +@@ -184,7 +185,7 @@ public class EntityTrackerEntry { // Paper end - remove allocation of Vec3D here boolean flag4 = k < -32768L || k > 32767L || l < -32768L || l > 32767L || i1 < -32768L || i1 > 32767L; @@ -13680,7 +13672,7 @@ index 3c804c7b20a14ea6e510810e2be10c1cc89ff5c1..3738c51b5e673c439d88a7ef7f4614f3 return new TicketType<>(s, comparator, 0L); } diff --git a/src/main/java/net/minecraft/server/level/WorldServer.java b/src/main/java/net/minecraft/server/level/WorldServer.java -index 0a698a5a4a6502a488c9afb0ad97165e60030896..46f960b9276dced41deb8f741454b6cce5a81529 100644 +index ef9b08df58d9d28df6b8ade076d95bf7e5cb1b18..46baad407de5598ecb23fcbb9a3fb4ee82addb17 100644 --- a/src/main/java/net/minecraft/server/level/WorldServer.java +++ b/src/main/java/net/minecraft/server/level/WorldServer.java @@ -168,12 +168,13 @@ import org.bukkit.event.server.MapInitializeEvent; @@ -14168,7 +14160,7 @@ index 0a698a5a4a6502a488c9afb0ad97165e60030896..46f960b9276dced41deb8f741454b6cc // CraftBukkit start @Override public TileEntity getTileEntity(BlockPosition pos, boolean validate) { -@@ -432,6 +880,14 @@ public class WorldServer extends World implements GeneratorAccessSeed { +@@ -434,6 +882,14 @@ public class WorldServer extends World implements GeneratorAccessSeed { public void doTick(BooleanSupplier booleansupplier) { GameProfilerFiller gameprofilerfiller = this.getMethodProfiler(); @@ -14183,7 +14175,7 @@ index 0a698a5a4a6502a488c9afb0ad97165e60030896..46f960b9276dced41deb8f741454b6cc this.ticking = true; gameprofilerfiller.enter("world border"); -@@ -581,7 +1037,7 @@ public class WorldServer extends World implements GeneratorAccessSeed { +@@ -583,7 +1039,7 @@ public class WorldServer extends World implements GeneratorAccessSeed { } timings.scheduledBlocks.stopTiming(); // Paper @@ -14192,7 +14184,7 @@ index 0a698a5a4a6502a488c9afb0ad97165e60030896..46f960b9276dced41deb8f741454b6cc gameprofilerfiller.exitEnter("raid"); this.timings.raids.startTiming(); // Paper - timings this.persistentRaid.a(); -@@ -590,7 +1046,7 @@ public class WorldServer extends World implements GeneratorAccessSeed { +@@ -592,7 +1048,7 @@ public class WorldServer extends World implements GeneratorAccessSeed { timings.doSounds.startTiming(); // Spigot this.ak(); timings.doSounds.stopTiming(); // Spigot @@ -14201,7 +14193,7 @@ index 0a698a5a4a6502a488c9afb0ad97165e60030896..46f960b9276dced41deb8f741454b6cc this.ticking = false; gameprofilerfiller.exitEnter("entities"); boolean flag3 = true || !this.players.isEmpty() || !this.getForceLoadedChunks().isEmpty(); // CraftBukkit - this prevents entity cleanup, other issues on servers with no players -@@ -606,13 +1062,12 @@ public class WorldServer extends World implements GeneratorAccessSeed { +@@ -608,13 +1064,12 @@ public class WorldServer extends World implements GeneratorAccessSeed { } this.tickingEntities = true; @@ -14217,7 +14209,7 @@ index 0a698a5a4a6502a488c9afb0ad97165e60030896..46f960b9276dced41deb8f741454b6cc Entity entity1 = entity.getVehicle(); /* CraftBukkit start - We prevent spawning in general, so this butchering is not needed -@@ -628,6 +1083,15 @@ public class WorldServer extends World implements GeneratorAccessSeed { +@@ -630,6 +1085,15 @@ public class WorldServer extends World implements GeneratorAccessSeed { gameprofilerfiller.enter("checkDespawn"); if (!entity.dead) { entity.checkDespawn(); @@ -14233,7 +14225,7 @@ index 0a698a5a4a6502a488c9afb0ad97165e60030896..46f960b9276dced41deb8f741454b6cc } gameprofilerfiller.exit(); -@@ -648,14 +1112,22 @@ public class WorldServer extends World implements GeneratorAccessSeed { +@@ -650,14 +1114,22 @@ public class WorldServer extends World implements GeneratorAccessSeed { gameprofilerfiller.enter("remove"); if (entity.dead) { this.removeEntityFromChunk(entity); @@ -14257,7 +14249,7 @@ index 0a698a5a4a6502a488c9afb0ad97165e60030896..46f960b9276dced41deb8f741454b6cc this.tickingEntities = false; // Paper start for (java.lang.Runnable run : this.afterEntityTickingTasks) { -@@ -667,7 +1139,7 @@ public class WorldServer extends World implements GeneratorAccessSeed { +@@ -669,7 +1141,7 @@ public class WorldServer extends World implements GeneratorAccessSeed { } this.afterEntityTickingTasks.clear(); // Paper end @@ -14266,7 +14258,7 @@ index 0a698a5a4a6502a488c9afb0ad97165e60030896..46f960b9276dced41deb8f741454b6cc Entity entity2; -@@ -677,7 +1149,7 @@ public class WorldServer extends World implements GeneratorAccessSeed { +@@ -679,7 +1151,7 @@ public class WorldServer extends World implements GeneratorAccessSeed { } timings.tickEntities.stopTiming(); // Spigot @@ -14275,7 +14267,7 @@ index 0a698a5a4a6502a488c9afb0ad97165e60030896..46f960b9276dced41deb8f741454b6cc this.tickBlockEntities(); } -@@ -724,6 +1196,9 @@ public class WorldServer extends World implements GeneratorAccessSeed { +@@ -726,6 +1198,9 @@ public class WorldServer extends World implements GeneratorAccessSeed { private final BlockPosition.MutableBlockPosition chunkTickMutablePosition = new BlockPosition.MutableBlockPosition(); private final com.destroystokyo.paper.util.math.ThreadUnsafeRandom randomTickRandom = new com.destroystokyo.paper.util.math.ThreadUnsafeRandom(); // Paper end @@ -14285,7 +14277,7 @@ index 0a698a5a4a6502a488c9afb0ad97165e60030896..46f960b9276dced41deb8f741454b6cc public void a(Chunk chunk, int i) { final int randomTickSpeed = i; // Paper ChunkCoordIntPair chunkcoordintpair = chunk.getPos(); -@@ -761,28 +1236,32 @@ public class WorldServer extends World implements GeneratorAccessSeed { +@@ -763,28 +1238,32 @@ public class WorldServer extends World implements GeneratorAccessSeed { gameprofilerfiller.exitEnter("iceandsnow"); if (!this.paperConfig.disableIceAndSnow && this.randomTickRandom.nextInt(16) == 0) { // Paper - Disable ice and snow // Paper - optimise random ticking // Paper start - optimise chunk ticking @@ -14322,16 +14314,7 @@ index 0a698a5a4a6502a488c9afb0ad97165e60030896..46f960b9276dced41deb8f741454b6cc chunk.getType(blockposition).getBlock().c((World) this, blockposition); // Paper end } -@@ -828,7 +1307,7 @@ public class WorldServer extends World implements GeneratorAccessSeed { - } - gameprofilerfiller.exit(); - timings.chunkTicksBlocks.stopTiming(); // Paper -- getChunkProvider().getLightEngine().queueUpdate(); // Paper -+ //getChunkProvider().getLightEngine().queueUpdate(); // Paper // Tuinity - no longer needed here, moved into task execution - // Paper end - } - } -@@ -923,7 +1402,26 @@ public class WorldServer extends World implements GeneratorAccessSeed { +@@ -924,7 +1403,26 @@ public class WorldServer extends World implements GeneratorAccessSeed { } @@ -14358,7 +14341,7 @@ index 0a698a5a4a6502a488c9afb0ad97165e60030896..46f960b9276dced41deb8f741454b6cc if (!(entity instanceof EntityHuman) && !this.getChunkProvider().a(entity)) { this.chunkCheck(entity); } else { -@@ -976,6 +1474,13 @@ public class WorldServer extends World implements GeneratorAccessSeed { +@@ -977,6 +1475,13 @@ public class WorldServer extends World implements GeneratorAccessSeed { //} finally { timer.stopTiming(); } // Paper - timings - move up } @@ -14372,7 +14355,7 @@ index 0a698a5a4a6502a488c9afb0ad97165e60030896..46f960b9276dced41deb8f741454b6cc } public void a(Entity entity, Entity entity1) { -@@ -1034,6 +1539,12 @@ public class WorldServer extends World implements GeneratorAccessSeed { +@@ -1035,6 +1540,12 @@ public class WorldServer extends World implements GeneratorAccessSeed { int i = MathHelper.floor(entity.locX() / 16.0D); int j = Math.min(15, Math.max(0, MathHelper.floor(entity.locY() / 16.0D))); // Paper - stay consistent with chunk add/remove behavior int k = MathHelper.floor(entity.locZ() / 16.0D); @@ -14385,7 +14368,7 @@ index 0a698a5a4a6502a488c9afb0ad97165e60030896..46f960b9276dced41deb8f741454b6cc if (!entity.inChunk || entity.chunkX != i || entity.chunkY != j || entity.chunkZ != k) { // Paper start - remove entity if its in a chunk more correctly. -@@ -1043,6 +1554,12 @@ public class WorldServer extends World implements GeneratorAccessSeed { +@@ -1044,6 +1555,12 @@ public class WorldServer extends World implements GeneratorAccessSeed { } // Paper end @@ -14398,7 +14381,7 @@ index 0a698a5a4a6502a488c9afb0ad97165e60030896..46f960b9276dced41deb8f741454b6cc if (entity.inChunk && this.isChunkLoaded(entity.chunkX, entity.chunkZ)) { this.getChunkAt(entity.chunkX, entity.chunkZ).a(entity, entity.chunkY); } -@@ -1054,8 +1571,41 @@ public class WorldServer extends World implements GeneratorAccessSeed { +@@ -1055,8 +1572,41 @@ public class WorldServer extends World implements GeneratorAccessSeed { entity.inChunk = false; } else { @@ -14441,7 +14424,7 @@ index 0a698a5a4a6502a488c9afb0ad97165e60030896..46f960b9276dced41deb8f741454b6cc } this.getMethodProfiler().exit(); -@@ -1392,10 +1942,14 @@ public class WorldServer extends World implements GeneratorAccessSeed { +@@ -1393,10 +1943,14 @@ public class WorldServer extends World implements GeneratorAccessSeed { // Spigot Start for (TileEntity tileentity : chunk.getTileEntities().values()) { if (tileentity instanceof net.minecraft.world.IInventory) { @@ -14457,7 +14440,7 @@ index 0a698a5a4a6502a488c9afb0ad97165e60030896..46f960b9276dced41deb8f741454b6cc } // Spigot End this.tileEntityListUnload.addAll(chunk.getTileEntities().values()); -@@ -1411,7 +1965,7 @@ public class WorldServer extends World implements GeneratorAccessSeed { +@@ -1412,7 +1966,7 @@ public class WorldServer extends World implements GeneratorAccessSeed { Entity entity = (Entity) iterator.next(); if (!(entity instanceof EntityPlayer)) { @@ -14466,7 +14449,7 @@ index 0a698a5a4a6502a488c9afb0ad97165e60030896..46f960b9276dced41deb8f741454b6cc throw (IllegalStateException) SystemUtils.c((Throwable) (new IllegalStateException("Removing entity while ticking!"))); } -@@ -1439,6 +1993,7 @@ public class WorldServer extends World implements GeneratorAccessSeed { +@@ -1440,6 +1994,7 @@ public class WorldServer extends World implements GeneratorAccessSeed { public void unregisterEntity(Entity entity) { org.spigotmc.AsyncCatcher.catchOp("entity unregister"); // Spigot @@ -14474,7 +14457,7 @@ index 0a698a5a4a6502a488c9afb0ad97165e60030896..46f960b9276dced41deb8f741454b6cc // Paper start - fix entity registration issues if (entity instanceof EntityComplexPart) { // Usually this is a no-op for complex parts, and ID's should be removed, but go ahead and remove it anyways -@@ -1505,17 +2060,76 @@ public class WorldServer extends World implements GeneratorAccessSeed { +@@ -1506,17 +2061,76 @@ public class WorldServer extends World implements GeneratorAccessSeed { this.getScoreboard().a(entity); // CraftBukkit start - SPIGOT-5278 if (entity instanceof EntityDrowned) { @@ -14554,7 +14537,7 @@ index 0a698a5a4a6502a488c9afb0ad97165e60030896..46f960b9276dced41deb8f741454b6cc private void registerEntity(Entity entity) { org.spigotmc.AsyncCatcher.catchOp("entity register"); // Spigot // Paper start - don't double enqueue entity registration -@@ -1526,7 +2140,7 @@ public class WorldServer extends World implements GeneratorAccessSeed { +@@ -1527,7 +2141,7 @@ public class WorldServer extends World implements GeneratorAccessSeed { return; } // Paper end @@ -14563,7 +14546,7 @@ index 0a698a5a4a6502a488c9afb0ad97165e60030896..46f960b9276dced41deb8f741454b6cc if (!entity.isQueuedForRegister) { // Paper this.entitiesToAdd.add(entity); entity.isQueuedForRegister = true; // Paper -@@ -1534,6 +2148,7 @@ public class WorldServer extends World implements GeneratorAccessSeed { +@@ -1535,6 +2149,7 @@ public class WorldServer extends World implements GeneratorAccessSeed { } else { entity.isQueuedForRegister = false; // Paper this.entitiesById.put(entity.getId(), entity); @@ -14571,7 +14554,7 @@ index 0a698a5a4a6502a488c9afb0ad97165e60030896..46f960b9276dced41deb8f741454b6cc if (entity instanceof EntityEnderDragon) { EntityComplexPart[] aentitycomplexpart = ((EntityEnderDragon) entity).eJ(); int i = aentitycomplexpart.length; -@@ -1542,6 +2157,7 @@ public class WorldServer extends World implements GeneratorAccessSeed { +@@ -1543,6 +2158,7 @@ public class WorldServer extends World implements GeneratorAccessSeed { EntityComplexPart entitycomplexpart = aentitycomplexpart[j]; this.entitiesById.put(entitycomplexpart.getId(), entitycomplexpart); @@ -14579,7 +14562,7 @@ index 0a698a5a4a6502a488c9afb0ad97165e60030896..46f960b9276dced41deb8f741454b6cc } } -@@ -1566,12 +2182,16 @@ public class WorldServer extends World implements GeneratorAccessSeed { +@@ -1567,12 +2183,16 @@ public class WorldServer extends World implements GeneratorAccessSeed { // this.getChunkProvider().addEntity(entity); // Paper - moved down below valid=true // CraftBukkit start - SPIGOT-5278 if (entity instanceof EntityDrowned) { @@ -14599,7 +14582,7 @@ index 0a698a5a4a6502a488c9afb0ad97165e60030896..46f960b9276dced41deb8f741454b6cc } entity.valid = true; // CraftBukkit this.getChunkProvider().addEntity(entity); // Paper - from above to be below valid=true -@@ -1587,7 +2207,7 @@ public class WorldServer extends World implements GeneratorAccessSeed { +@@ -1588,7 +2208,7 @@ public class WorldServer extends World implements GeneratorAccessSeed { } public void removeEntity(Entity entity) { @@ -14608,7 +14591,7 @@ index 0a698a5a4a6502a488c9afb0ad97165e60030896..46f960b9276dced41deb8f741454b6cc throw (IllegalStateException) SystemUtils.c((Throwable) (new IllegalStateException("Removing entity while ticking!"))); } else { this.removeEntityFromChunk(entity); -@@ -1683,20 +2303,33 @@ public class WorldServer extends World implements GeneratorAccessSeed { +@@ -1684,20 +2304,33 @@ public class WorldServer extends World implements GeneratorAccessSeed { @Override public void notify(BlockPosition blockposition, IBlockData iblockdata, IBlockData iblockdata1, int i) { @@ -14644,7 +14627,7 @@ index 0a698a5a4a6502a488c9afb0ad97165e60030896..46f960b9276dced41deb8f741454b6cc } catch (java.util.ConcurrentModificationException ex) { // This can happen because the pathfinder update below may trigger a chunk load, which in turn may cause more navigators to register // In this case we just run the update again across all the iterators as the chunk will then be loaded -@@ -1710,6 +2343,9 @@ public class WorldServer extends World implements GeneratorAccessSeed { +@@ -1711,6 +2344,9 @@ public class WorldServer extends World implements GeneratorAccessSeed { navigationabstract.b(blockposition); } } @@ -14668,7 +14651,7 @@ index 185667110cd6f566b23546728d20fc79223f3c92..dc98ef48a664d9ee2a302fff8c611fd1 throw new IllegalStateException("Protocol error", cryptographyexception); } diff --git a/src/main/java/net/minecraft/server/network/PlayerConnection.java b/src/main/java/net/minecraft/server/network/PlayerConnection.java -index 4a3f6f26da0d99ee2ff6942c2ff7d0595b53b684..a5871955d487dbf6552d20e5559f2cb1427aeb3e 100644 +index e6ea84ba098b4d77bc68e99862992a10ef4585b5..40a7f69e5e14078977ef615abf3a0f1f61d76f9f 100644 --- a/src/main/java/net/minecraft/server/network/PlayerConnection.java +++ b/src/main/java/net/minecraft/server/network/PlayerConnection.java @@ -568,7 +568,9 @@ public class PlayerConnection implements PacketListenerPlayIn { @@ -14915,10 +14898,10 @@ index 2df8e914f66176e22aeddf8b94a83af5ea921d88..499b516330f3f3a48fb64802f2e8c1b7 return; } diff --git a/src/main/java/net/minecraft/server/players/UserCache.java b/src/main/java/net/minecraft/server/players/UserCache.java -index 74b024a51f6c3ee88db730cbf97a24af66fa332b..66eee0998be2210042db8e6b537fa10a016a9c8a 100644 +index e813d4dd1a46734d16b42905808caa889811afcc..ee5c038c4ede294ec5b9b9b9f705ba46b6c7ac8c 100644 --- a/src/main/java/net/minecraft/server/players/UserCache.java +++ b/src/main/java/net/minecraft/server/players/UserCache.java -@@ -51,6 +51,11 @@ public class UserCache { +@@ -52,6 +52,11 @@ public class UserCache { private final File g; private final AtomicLong h = new AtomicLong(); @@ -14930,7 +14913,7 @@ index 74b024a51f6c3ee88db730cbf97a24af66fa332b..66eee0998be2210042db8e6b537fa10a public UserCache(GameProfileRepository gameprofilerepository, File file) { this.e = gameprofilerepository; this.g = file; -@@ -58,6 +63,7 @@ public class UserCache { +@@ -59,6 +64,7 @@ public class UserCache { } private void a(UserCache.UserCacheEntry usercache_usercacheentry) { @@ -14938,7 +14921,7 @@ index 74b024a51f6c3ee88db730cbf97a24af66fa332b..66eee0998be2210042db8e6b537fa10a GameProfile gameprofile = usercache_usercacheentry.a(); usercache_usercacheentry.a(this.d()); -@@ -72,6 +78,7 @@ public class UserCache { +@@ -73,6 +79,7 @@ public class UserCache { if (uuid != null) { this.d.put(uuid, usercache_usercacheentry); } @@ -14946,7 +14929,7 @@ index 74b024a51f6c3ee88db730cbf97a24af66fa332b..66eee0998be2210042db8e6b537fa10a } -@@ -109,7 +116,7 @@ public class UserCache { +@@ -110,7 +117,7 @@ public class UserCache { } public void saveProfile(GameProfile gameprofile) { a(gameprofile); } // Paper - OBFHELPER @@ -14955,7 +14938,7 @@ index 74b024a51f6c3ee88db730cbf97a24af66fa332b..66eee0998be2210042db8e6b537fa10a Calendar calendar = Calendar.getInstance(); calendar.setTime(new Date()); -@@ -126,8 +133,9 @@ public class UserCache { +@@ -127,8 +134,9 @@ public class UserCache { } @Nullable @@ -14966,7 +14949,7 @@ index 74b024a51f6c3ee88db730cbf97a24af66fa332b..66eee0998be2210042db8e6b537fa10a UserCache.UserCacheEntry usercache_usercacheentry = (UserCache.UserCacheEntry) this.c.get(s1); boolean flag = false; -@@ -141,10 +149,14 @@ public class UserCache { +@@ -142,10 +150,14 @@ public class UserCache { GameProfile gameprofile; if (usercache_usercacheentry != null) { @@ -14981,7 +14964,7 @@ index 74b024a51f6c3ee88db730cbf97a24af66fa332b..66eee0998be2210042db8e6b537fa10a if (gameprofile != null) { this.a(gameprofile); flag = false; -@@ -156,6 +168,7 @@ public class UserCache { +@@ -157,6 +169,7 @@ public class UserCache { } return gameprofile; @@ -14989,7 +14972,7 @@ index 74b024a51f6c3ee88db730cbf97a24af66fa332b..66eee0998be2210042db8e6b537fa10a } // Paper start -@@ -290,7 +303,9 @@ public class UserCache { +@@ -291,7 +304,9 @@ public class UserCache { } private Stream a(int i) { @@ -15490,7 +15473,7 @@ index 85f571a791bce63989890f277857bc7bdeec0cb5..9e4137768c7d8966759324a4b368330c double deltaZ = this.locZ() - player.locZ(); double distanceSquared = deltaX * deltaX + deltaZ * deltaZ; diff --git a/src/main/java/net/minecraft/world/entity/EntityLiving.java b/src/main/java/net/minecraft/world/entity/EntityLiving.java -index b0ee9e98d5f1e56c8d82e90dd7761c8ef79cfb1c..561905be42428855a07a2e63aca80d5dd63b22bf 100644 +index 21341eeb8148be119fbc1dd370c1beaf70a319e0..d933323d57a2a7ff283408f12d4650699f8177e7 100644 --- a/src/main/java/net/minecraft/world/entity/EntityLiving.java +++ b/src/main/java/net/minecraft/world/entity/EntityLiving.java @@ -2973,7 +2973,11 @@ public abstract class EntityLiving extends Entity { @@ -16914,10 +16897,10 @@ index 24771c3522ea74ac12058591137eafc21adf3762..d497006f05f79015cd791849888832bb } else if (worldserver.getSpawn().a((IPosition) (new Vec3D((double) blockposition_mutableblockposition.getX() + 0.5D, (double) blockposition_mutableblockposition.getY(), (double) blockposition_mutableblockposition.getZ() + 0.5D)), 24.0D)) { return false; diff --git a/src/main/java/net/minecraft/world/level/StructureManager.java b/src/main/java/net/minecraft/world/level/StructureManager.java -index 1077f988e16688f74c9e40d6da517c954cb06ecb..acacbf9617f99b97fc7fd2ba718775e1b3e429e9 100644 +index 07dcfd56af1014ad159828dd9ee2d89c2010b9f4..43418273f00f3703c7bd86586847d469af92c18f 100644 --- a/src/main/java/net/minecraft/world/level/StructureManager.java +++ b/src/main/java/net/minecraft/world/level/StructureManager.java -@@ -45,8 +45,13 @@ public class StructureManager { +@@ -46,8 +46,13 @@ public class StructureManager { // Paper start - remove structure streams public java.util.List> getFeatureStarts(SectionPosition sectionPosition, StructureGenerator structureGenerator) { @@ -16932,7 +16915,7 @@ index 1077f988e16688f74c9e40d6da517c954cb06ecb..acacbf9617f99b97fc7fd2ba718775e1 SectionPosition sectionPosition1 = SectionPosition.a(new ChunkCoordIntPair(curLong), 0); StructureStart structurestart = a(sectionPosition1, structureGenerator, getLevel().getChunkAt(sectionPosition1.a(), sectionPosition1.c(), ChunkStatus.STRUCTURE_STARTS)); if (structurestart != null && structurestart.e()) { -@@ -75,8 +80,12 @@ public class StructureManager { +@@ -76,8 +81,12 @@ public class StructureManager { } public StructureStart a(BlockPosition blockposition, boolean flag, StructureGenerator structuregenerator) { @@ -17340,10 +17323,10 @@ index 15096a9c2719b8b4c099f62d0a1c808e56b63a8e..9bbd175f7e20591bbefdbddcb5e998e7 } } diff --git a/src/main/java/net/minecraft/world/level/block/state/BlockBase.java b/src/main/java/net/minecraft/world/level/block/state/BlockBase.java -index ac3709c8158d42ccafd457cfa44a16dc8c9eb949..0b852fa247c65cb1e889ad4e55886e256f89a763 100644 +index 3fdafc0ff0c4148ec844dbdc1455d17cdcb4a75a..6124b56d935386784371422960a07d518f848cf3 100644 --- a/src/main/java/net/minecraft/world/level/block/state/BlockBase.java +++ b/src/main/java/net/minecraft/world/level/block/state/BlockBase.java -@@ -347,21 +347,23 @@ public abstract class BlockBase { +@@ -348,21 +348,23 @@ public abstract class BlockBase { public abstract static class BlockData extends IBlockDataHolder { @@ -17371,7 +17354,7 @@ index ac3709c8158d42ccafd457cfa44a16dc8c9eb949..0b852fa247c65cb1e889ad4e55886e25 protected BlockData(Block block, ImmutableMap, Comparable> immutablemap, MapCodec mapcodec) { super(block, immutablemap, mapcodec); -@@ -380,6 +382,7 @@ public abstract class BlockBase { +@@ -381,6 +383,7 @@ public abstract class BlockBase { this.n = blockbase_info.s; this.o = blockbase_info.t; this.p = blockbase_info.u; @@ -17379,7 +17362,7 @@ index ac3709c8158d42ccafd457cfa44a16dc8c9eb949..0b852fa247c65cb1e889ad4e55886e25 } // Paper start - impl cached craft block data, lazy load to fix issue with loading at the wrong time private org.bukkit.craftbukkit.block.data.CraftBlockData cachedCraftBlockData; -@@ -395,12 +398,63 @@ public abstract class BlockBase { +@@ -396,12 +399,63 @@ public abstract class BlockBase { protected Fluid fluid; // Paper end @@ -17443,7 +17426,7 @@ index ac3709c8158d42ccafd457cfa44a16dc8c9eb949..0b852fa247c65cb1e889ad4e55886e25 } -@@ -424,10 +478,12 @@ public abstract class BlockBase { +@@ -425,10 +479,12 @@ public abstract class BlockBase { return this.a != null ? this.a.g : this.getBlock().b(this.p(), iblockaccess, blockposition); } @@ -17456,7 +17439,7 @@ index ac3709c8158d42ccafd457cfa44a16dc8c9eb949..0b852fa247c65cb1e889ad4e55886e25 public VoxelShape a(IBlockAccess iblockaccess, BlockPosition blockposition, EnumDirection enumdirection) { return this.a != null && this.a.i != null ? this.a.i[enumdirection.ordinal()] : VoxelShapes.a(this.c(iblockaccess, blockposition), enumdirection); } -@@ -437,7 +493,7 @@ public abstract class BlockBase { +@@ -438,7 +494,7 @@ public abstract class BlockBase { } public final boolean d() { // Paper @@ -17465,7 +17448,7 @@ index ac3709c8158d42ccafd457cfa44a16dc8c9eb949..0b852fa247c65cb1e889ad4e55886e25 } public final boolean e() { // Paper -@@ -727,9 +783,9 @@ public abstract class BlockBase { +@@ -728,9 +784,9 @@ public abstract class BlockBase { private static final int f = EnumBlockSupport.values().length; protected final boolean a; private final boolean g; @@ -18267,10 +18250,10 @@ index 43b8361e8ad0a8c429406cb6ff538020f670bdbd..bb63ed58e1eaeb474e99992e39d811b2 IBlockAccess getWorld(); diff --git a/src/main/java/net/minecraft/world/level/chunk/NibbleArray.java b/src/main/java/net/minecraft/world/level/chunk/NibbleArray.java -index 3a85a89be2a736e5b6b7f08032f4becd6bb39ed1..d32369d9a555fd7595df175e56f853ce8b012522 100644 +index 0fec15e141051863dbf51a2b3e1ace5028cd2fc1..d7757e60402be9939fc2d90ad79b2bb76c5249ca 100644 --- a/src/main/java/net/minecraft/world/level/chunk/NibbleArray.java +++ b/src/main/java/net/minecraft/world/level/chunk/NibbleArray.java -@@ -58,6 +58,7 @@ public class NibbleArray { +@@ -59,6 +59,7 @@ public class NibbleArray { boolean poolSafe = false; public java.lang.Runnable cleaner; private void registerCleaner() { @@ -18278,7 +18261,7 @@ index 3a85a89be2a736e5b6b7f08032f4becd6bb39ed1..d32369d9a555fd7595df175e56f853ce if (!poolSafe) { cleaner = MCUtil.registerCleaner(this, this.a, NibbleArray::releaseBytes); } else { -@@ -65,7 +66,7 @@ public class NibbleArray { +@@ -66,7 +67,7 @@ public class NibbleArray { } } // Paper end @@ -18287,7 +18270,7 @@ index 3a85a89be2a736e5b6b7f08032f4becd6bb39ed1..d32369d9a555fd7595df175e56f853ce public NibbleArray() {} -@@ -76,7 +77,7 @@ public class NibbleArray { +@@ -77,7 +78,7 @@ public class NibbleArray { } public NibbleArray(byte[] abyte, boolean isSafe) { this.a = abyte; @@ -18296,7 +18279,7 @@ index 3a85a89be2a736e5b6b7f08032f4becd6bb39ed1..d32369d9a555fd7595df175e56f853ce registerCleaner(); // Paper end if (abyte.length != 2048) { -@@ -164,7 +165,7 @@ public class NibbleArray { +@@ -165,7 +166,7 @@ public class NibbleArray { public NibbleArray copy() { return this.b(); } // Paper - OBFHELPER public NibbleArray b() { @@ -18645,10 +18628,10 @@ index 890362d28ab9cb760c73fe5014e144fb08ada6b8..3c532d3996dfc734ec07181701280b60 // Paper - nuke IOWorker } diff --git a/src/main/java/net/minecraft/world/level/chunk/storage/RegionFile.java b/src/main/java/net/minecraft/world/level/chunk/storage/RegionFile.java -index 4999ba61fb04713ffe3d23c556f732dc4abbf0bc..0bba434d29b09d7d164f5ca4f49cd660bec66927 100644 +index 1b0535ba211904b2384cc80c02c21ed1a606e752..7cdac33e153ccba0a7e8b5aa8fbcbb58ade6a9d2 100644 --- a/src/main/java/net/minecraft/world/level/chunk/storage/RegionFile.java +++ b/src/main/java/net/minecraft/world/level/chunk/storage/RegionFile.java -@@ -5,6 +5,7 @@ import java.io.BufferedInputStream; +@@ -6,6 +6,7 @@ import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; @@ -18656,7 +18639,7 @@ index 4999ba61fb04713ffe3d23c556f732dc4abbf0bc..0bba434d29b09d7d164f5ca4f49cd660 import java.io.DataInputStream; import java.io.DataOutputStream; import java.io.File; -@@ -35,15 +36,350 @@ public class RegionFile implements AutoCloseable { +@@ -36,15 +37,350 @@ public class RegionFile implements AutoCloseable { private static final Logger LOGGER = LogManager.getLogger(); private static final ByteBuffer c = ByteBuffer.allocateDirect(1); private final FileChannel dataFile; @@ -19011,7 +18994,7 @@ index 4999ba61fb04713ffe3d23c556f732dc4abbf0bc..0bba434d29b09d7d164f5ca4f49cd660 public final java.util.concurrent.locks.ReentrantLock fileLock = new java.util.concurrent.locks.ReentrantLock(true); // Paper // Paper start - Cache chunk status -@@ -71,10 +407,21 @@ public class RegionFile implements AutoCloseable { +@@ -72,10 +408,21 @@ public class RegionFile implements AutoCloseable { // Paper end public RegionFile(File file, File file1, boolean flag) throws IOException { @@ -19033,7 +19016,7 @@ index 4999ba61fb04713ffe3d23c556f732dc4abbf0bc..0bba434d29b09d7d164f5ca4f49cd660 this.g = ByteBuffer.allocateDirect(8192); this.file = path.toFile(); // Paper initOversizedState(); // Paper -@@ -103,14 +450,16 @@ public class RegionFile implements AutoCloseable { +@@ -104,14 +451,16 @@ public class RegionFile implements AutoCloseable { RegionFile.LOGGER.warn("Region file {} has truncated header: {}", path, i); } @@ -19054,7 +19037,7 @@ index 4999ba61fb04713ffe3d23c556f732dc4abbf0bc..0bba434d29b09d7d164f5ca4f49cd660 // Spigot start if (j1 == 255) { // We're maxed out, so we need to read the proper length from the section -@@ -118,33 +467,105 @@ public class RegionFile implements AutoCloseable { +@@ -119,33 +468,105 @@ public class RegionFile implements AutoCloseable { this.dataFile.read(realLen, i1 * 4096); j1 = (realLen.getInt(0) + 4) / 4096 + 1; } @@ -19166,8 +19149,8 @@ index 4999ba61fb04713ffe3d23c556f732dc4abbf0bc..0bba434d29b09d7d164f5ca4f49cd660 @Nullable public synchronized DataInputStream getReadStream(ChunkCoordIntPair chunkCoordIntPair) throws IOException { return a(chunkCoordIntPair);} // Paper - OBFHELPER @Nullable public synchronized DataInputStream a(ChunkCoordIntPair chunkcoordintpair) throws IOException { -@@ -169,6 +590,12 @@ public class RegionFile implements AutoCloseable { - ((java.nio.Buffer) bytebuffer).flip(); +@@ -170,6 +591,12 @@ public class RegionFile implements AutoCloseable { + ((java.nio.Buffer) bytebuffer).flip(); // CraftBukkit - decompile error if (bytebuffer.remaining() < 5) { RegionFile.LOGGER.error("Chunk {} header is truncated: expected {} but read {}", chunkcoordintpair, l, bytebuffer.remaining()); + // Tuinity start - recalculate header on regionfile corruption @@ -19179,7 +19162,7 @@ index 4999ba61fb04713ffe3d23c556f732dc4abbf0bc..0bba434d29b09d7d164f5ca4f49cd660 return null; } else { int i1 = bytebuffer.getInt(); -@@ -176,6 +603,12 @@ public class RegionFile implements AutoCloseable { +@@ -177,6 +604,12 @@ public class RegionFile implements AutoCloseable { if (i1 == 0) { RegionFile.LOGGER.warn("Chunk {} is allocated, but stream is missing", chunkcoordintpair); @@ -19192,7 +19175,7 @@ index 4999ba61fb04713ffe3d23c556f732dc4abbf0bc..0bba434d29b09d7d164f5ca4f49cd660 return null; } else { int j1 = i1 - 1; -@@ -183,17 +616,49 @@ public class RegionFile implements AutoCloseable { +@@ -184,17 +617,49 @@ public class RegionFile implements AutoCloseable { if (a(b0)) { if (j1 != 0) { RegionFile.LOGGER.warn("Chunk has both internal and external streams"); @@ -19244,7 +19227,7 @@ index 4999ba61fb04713ffe3d23c556f732dc4abbf0bc..0bba434d29b09d7d164f5ca4f49cd660 } } } -@@ -353,10 +818,15 @@ public class RegionFile implements AutoCloseable { +@@ -354,10 +819,15 @@ public class RegionFile implements AutoCloseable { } private ByteBuffer b() { @@ -19258,16 +19241,16 @@ index 4999ba61fb04713ffe3d23c556f732dc4abbf0bc..0bba434d29b09d7d164f5ca4f49cd660 bytebuffer.putInt(1); - bytebuffer.put((byte) (this.f.a() | 128)); + bytebuffer.put((byte) (compressionType.compressionTypeId() | 128)); // Tuinity - replace with compressionType - ((java.nio.Buffer) bytebuffer).flip(); + ((java.nio.Buffer) bytebuffer).flip(); // CraftBukkit - decompile error return bytebuffer; } -@@ -393,6 +863,7 @@ public class RegionFile implements AutoCloseable { +@@ -394,6 +864,7 @@ public class RegionFile implements AutoCloseable { }; } -+ private final void flushHeader() throws IOException { this.b(); } // Tuinity - OBFHELPER ++ private final void flushHeader() throws IOException { this.c(); } // Tuinity - OBFHELPER private void c() throws IOException { - ((java.nio.Buffer) this.g).position(0); + ((java.nio.Buffer) this.g).position(0); // CraftBukkit - decompile error this.dataFile.write(this.g, 0L); diff --git a/src/main/java/net/minecraft/world/level/chunk/storage/RegionFileBitSet.java b/src/main/java/net/minecraft/world/level/chunk/storage/RegionFileBitSet.java index c96eac4b0b519b2807153fa5a8ebf5a020a2b140..b5c8d9b17c2d5e229db5b48448709194d1fc04f8 100644 diff --git a/patches/server/0002-Airplane-Server-Changes.patch b/patches/server/0002-Airplane-Server-Changes.patch index 468515231..348785c3f 100644 --- a/patches/server/0002-Airplane-Server-Changes.patch +++ b/patches/server/0002-Airplane-Server-Changes.patch @@ -626,7 +626,7 @@ copy of the Program in return for a fee. END OF TERMS AND CONDITIONS diff --git a/pom.xml b/pom.xml -index dad9981b1cd1ca8b27a45972188fd2b92f5146e7..fc2c3714b6c772d67e258be269aa92dda80cdb12 100644 +index dad9981b1cd1ca8b27a45972188fd2b92f5146e7..2071c1f39cdf954c7dc15afcabab58cf2e340e68 100644 --- a/pom.xml +++ b/pom.xml @@ -27,8 +27,8 @@ @@ -640,10 +640,17 @@ index dad9981b1cd1ca8b27a45972188fd2b92f5146e7..fc2c3714b6c772d67e258be269aa92dd ${project.version} compile -@@ -159,8 +159,23 @@ +@@ -159,6 +159,20 @@ 1.1.0-SNAPSHOT compile ++ ++ ++ com.github.technove ++ AIR ++ fe3dbb4420 ++ compile ++ + + + com.github.technove @@ -653,17 +660,7 @@ index dad9981b1cd1ca8b27a45972188fd2b92f5146e7..fc2c3714b6c772d67e258be269aa92dd + -+ -+ -+ -+ jitpack.io -+ https://jitpack.io -+ -+ -+ - - tuinity-${minecraft.version} diff --git a/src/main/java/com/destroystokyo/paper/Metrics.java b/src/main/java/com/destroystokyo/paper/Metrics.java index 52c0ab1ce46e1f3233ef746d9bc699356fa9fae4..b480bd3044370b8eb733166f0c4b737344475993 100644 --- a/src/main/java/com/destroystokyo/paper/Metrics.java @@ -723,12 +720,14 @@ index 7063f1da3654b382e26b0093ad5d0ff04a2b38c2..b9c5479e5561f8fe68ea8f94fbf4e64d return history != null ? TextComponent.ofChildren(updateMessage, Component.newline(), history) : updateMessage; diff --git a/src/main/java/gg/airplane/AirplaneCommand.java b/src/main/java/gg/airplane/AirplaneCommand.java new file mode 100644 -index 0000000000000000000000000000000000000000..1fa9b40e2f89272fa8bc9d927a9a852b5eb0db22 +index 0000000000000000000000000000000000000000..89c89e633f14b5820147e734b1b7ad8cadfdce80 --- /dev/null +++ b/src/main/java/gg/airplane/AirplaneCommand.java -@@ -0,0 +1,56 @@ +@@ -0,0 +1,65 @@ +package gg.airplane; + ++import net.kyori.adventure.text.Component; ++import net.kyori.adventure.text.format.NamedTextColor; +import net.md_5.bungee.api.ChatColor; +import net.minecraft.server.MinecraftServer; +import org.bukkit.Bukkit; @@ -736,6 +735,7 @@ index 0000000000000000000000000000000000000000..1fa9b40e2f89272fa8bc9d927a9a852b +import org.bukkit.command.Command; +import org.bukkit.command.CommandSender; + ++import java.io.IOException; +import java.util.Collections; +import java.util.List; +import java.util.stream.Collectors; @@ -772,7 +772,13 @@ index 0000000000000000000000000000000000000000..1fa9b40e2f89272fa8bc9d927a9a852b + + if (args[0].equalsIgnoreCase("reload")) { + MinecraftServer console = MinecraftServer.getServer(); -+ AirplaneConfig.load(); ++ try { ++ AirplaneConfig.load(); ++ } catch (IOException e) { ++ sender.sendMessage(Component.text("Failed to reload.", NamedTextColor.RED)); ++ e.printStackTrace(); ++ return true; ++ } + console.server.reloadCount++; + + Command.broadcastCommandMessage(sender, prefix + "Airplane configuration has been reloaded."); @@ -785,37 +791,42 @@ index 0000000000000000000000000000000000000000..1fa9b40e2f89272fa8bc9d927a9a852b +} diff --git a/src/main/java/gg/airplane/AirplaneConfig.java b/src/main/java/gg/airplane/AirplaneConfig.java new file mode 100644 -index 0000000000000000000000000000000000000000..39ef53c9dd49d5951103777002f866a64a252bfd +index 0000000000000000000000000000000000000000..a77e628518920e84b03a8a00e1308a9a53a00896 --- /dev/null +++ b/src/main/java/gg/airplane/AirplaneConfig.java -@@ -0,0 +1,94 @@ +@@ -0,0 +1,99 @@ +package gg.airplane; + -+import gg.airplane.manual.ManualParser; ++import co.technove.air.AIR; +import net.minecraft.server.MinecraftServer; +import org.apache.logging.log4j.Level; + +import java.io.File; ++import java.io.FileInputStream; ++import java.io.FileOutputStream; +import java.io.IOException; +import java.lang.reflect.Method; +import java.lang.reflect.Modifier; + +public class AirplaneConfig { + -+ private static ManualParser manual; ++ private static AIR config; + -+ public static void load() { -+ try { -+ manual = new ManualParser(new File("airplane.air")); -+ } catch (IOException e) { -+ e.printStackTrace(); ++ public static void load() throws IOException { ++ File configFile = new File("airplane.air"); ++ if (configFile.exists()) { ++ try (FileInputStream inputStream = new FileInputStream(configFile)) { ++ config = new AIR(inputStream); ++ } ++ } else { ++ config = new AIR(); + } + -+ manual.get("info.version", "1.0"); -+ manual.setComment("info", ++ config.setComment("info", + "Airplane Configuration", + "Read https://blog.airplane.gg/ to find out more about Airplane", + "Join our Discord to receive support & optimization help: https://discord.gg/3gtc45q"); ++ config.getString("info.version", "1.0"); + + for (Method method : AirplaneConfig.class.getDeclaredMethods()) { + if (Modifier.isStatic(method.getModifiers()) && Modifier.isPrivate(method.getModifiers())) { @@ -828,10 +839,8 @@ index 0000000000000000000000000000000000000000..39ef53c9dd49d5951103777002f866a6 + } + } + -+ try { -+ manual.save(); -+ } catch (IOException e) { -+ e.printStackTrace(); ++ try (FileOutputStream outputStream = new FileOutputStream(configFile)) { ++ config.save(outputStream); + } + } + @@ -843,45 +852,47 @@ index 0000000000000000000000000000000000000000..39ef53c9dd49d5951103777002f866a6 + public static boolean dynamicHoglinBehavior = true; + + private static void dynamicActivationRange() { -+ manual.setComment("activation-range", "Optimizes how entities act when", "they're far away from the player"); ++ config.setComment("activation-range", "Optimizes how entities act when", "they're far away from the player"); + -+ maximumActivationPrio = manual.get("activation-range.max-tick-freq", maximumActivationPrio, ++ maximumActivationPrio = config.getInt("activation-range.max-tick-freq", maximumActivationPrio, + "This value defines how often in ticks, the furthest entity", + "will get their pathfinders and behaviors ticked. 20 = 1s"); -+ activationDistanceMod = manual.get("activation-range.activation-dist-mod", activationDistanceMod, ++ activationDistanceMod = config.getInt("activation-range.activation-dist-mod", activationDistanceMod, + "This value defines how much distance modifies an entity's", + "tick frequency. freq = (distanceToPlayer^2) / (2^value)", + "If you want further away entities to tick less often, use 8.", + "If you want further away entities to tick more often, try 10."); + -+ manual.setComment("behavior-activation", "A list of entities to use the dynamic activation range", "to modify how often their behaviors are ticked"); -+ dynamicVillagerBehavior = manual.get("behavior-activation.villager", dynamicVillagerBehavior); -+ dynamicPiglinBehavior = manual.get("behavior-activation.piglin", dynamicPiglinBehavior); -+ dynamicHoglinBehavior = manual.get("behavior-activation.hoglin", dynamicHoglinBehavior); ++ config.setComment("behavior-activation", "A list of entities to use the dynamic activation range", "to modify how often their behaviors are ticked"); ++ ++ dynamicVillagerBehavior = config.getBoolean("behavior-activation.villager", dynamicVillagerBehavior); ++ dynamicPiglinBehavior = config.getBoolean("behavior-activation.piglin", dynamicPiglinBehavior); ++ dynamicHoglinBehavior = config.getBoolean("behavior-activation.hoglin", dynamicHoglinBehavior); + } + + + public static String profileWebUrl = "https://flare.airplane.gg"; + + private static void profilerOptions() { -+ manual.setComment("flare", "Configures Flare, the built-in profiler"); ++ config.setComment("flare", "Configures Flare, the built-in profiler"); + -+ profileWebUrl = manual.get("flare.url", profileWebUrl, "Sets the server to use for profiles."); ++ profileWebUrl = config.getString("flare.url", profileWebUrl, "Sets the server to use for profiles."); + } + + + public static String accessToken = ""; + + private static void airplaneWebServices() { -+ manual.setComment("web-services", "Options for connecting to Airplane's online utilities"); ++ config.setComment("web-services", "Options for connecting to Airplane's online utilities"); + -+ accessToken = manual.get("web-services.token", ""); ++ accessToken = config.getString("web-services.token", ""); + // todo lookup token (off-thread) and let users know if their token is valid + if (accessToken.length() > 0) { + gg.airplane.flare.FlareSetup.init(); // Airplane + } + } + ++ +} diff --git a/src/main/java/gg/airplane/AirplaneLogger.java b/src/main/java/gg/airplane/AirplaneLogger.java new file mode 100644 @@ -1385,222 +1396,6 @@ index 0000000000000000000000000000000000000000..86d6650d174a7794a7ebe793cad033b4 + } + +} -diff --git a/src/main/java/gg/airplane/manual/ManualParser.java b/src/main/java/gg/airplane/manual/ManualParser.java -new file mode 100644 -index 0000000000000000000000000000000000000000..ace29adb0f140d99a8d85ac824654beded4bf5b8 ---- /dev/null -+++ b/src/main/java/gg/airplane/manual/ManualParser.java -@@ -0,0 +1,210 @@ -+package gg.airplane.manual; -+ -+import java.io.BufferedReader; -+import java.io.BufferedWriter; -+import java.io.File; -+import java.io.FileReader; -+import java.io.FileWriter; -+import java.io.IOException; -+import java.util.ArrayList; -+import java.util.Arrays; -+import java.util.LinkedHashMap; -+import java.util.List; -+import java.util.Map; -+import java.util.TreeMap; -+ -+// todo make this cleaner and more ergonomic to use -+// also probably needs lists eventually -+public class ManualParser { -+ -+ private final File file; -+ private final Map sections = new LinkedHashMap<>(); -+ -+ private static class ManualObject { -+ public final String key; -+ public final List comments; -+ -+ private ManualObject(String key, List comments) { -+ this.key = key; -+ this.comments = comments == null ? new ArrayList<>() : comments; -+ } -+ } -+ -+ private static class Section extends ManualObject { -+ public final Map values; -+ -+ private Section(String key, List comments) { -+ super(key, comments); -+ this.values = new LinkedHashMap<>(); -+ } -+ -+ public void add(String key, Value value) { -+ this.values.put(key, value); -+ value.parent = this; -+ } -+ -+ public Value get(String key) { -+ return this.values.computeIfAbsent(key, k -> { -+ Value value = new Value(k, null, null); -+ value.parent = this; -+ return value; -+ }); -+ } -+ } -+ -+ private static class Value extends ManualObject { -+ public Object value; -+ public Section parent; -+ -+ private Value(String key, Object value, List comments) { -+ super(key, comments); -+ this.value = value; -+ } -+ } -+ -+ public ManualParser(File file) throws IOException { -+ this.file = file; -+ -+ if (!file.exists()) { -+ return; -+ } -+ -+ try (BufferedReader reader = new BufferedReader(new FileReader(file))) { -+ Section currentSection = null; -+ List currentComment = new ArrayList<>(); -+ -+ String line; -+ while ((line = reader.readLine()) != null) { -+ line = line.trim(); -+ -+ if (line.length() == 0) { -+ continue; // empty line -+ } -+ -+ if (line.startsWith("#")) { -+ currentComment.add(line.substring(1).trim()); -+ } else if (line.startsWith("[")) { -+ if (!line.endsWith("]")) { -+ throw new IllegalArgumentException("Invalid configuration, section '" + line + "' does not end with ]"); -+ } -+ if (line.length() < 3) { -+ throw new IllegalArgumentException("Invalid configuration, section '" + line + "' does not have a name"); -+ } -+ String sectionName = line.substring(1, line.length() - 1); -+ Section newSection = new Section(sectionName, currentComment); -+ currentComment = new ArrayList<>(); -+ currentSection = newSection; -+ this.sections.put(sectionName, newSection); -+ } else { -+ if (currentSection == null) { -+ throw new IllegalArgumentException("Invalid configuration, found value outside of section " + line); -+ } -+ int equals = line.indexOf("="); -+ if (equals <= 1 || equals == line.length() - 1) { -+ throw new IllegalArgumentException("Invalid configuration, assignment invalid " + line); -+ } -+ -+ String key = line.substring(0, equals).trim(); -+ -+ String value = line.substring(equals + 1).trim(); -+ if (value.length() == 0) { -+ throw new IllegalArgumentException("Invalid configuration, value does not exist " + line); -+ } -+ if (value.startsWith("\"")) { -+ if (!value.endsWith("\"")) { -+ throw new IllegalArgumentException("Invalid configuration, value has no ending quote " + line); -+ } -+ String stringValue = value.substring(1, value.length() - 1); -+ currentSection.add(key, new Value(key, stringValue, currentComment)); -+ } else if (Character.isDigit(value.charAt(0))) { -+ if (value.contains(".")) { -+ double doubleValue = Double.parseDouble(value); -+ currentSection.add(key, new Value(key, doubleValue, currentComment)); -+ } else { -+ int intValue = Integer.parseInt(value); -+ currentSection.add(key, new Value(key, intValue, currentComment)); -+ } -+ } else if (value.equals("true") || value.equals("false")) { -+ boolean boolValue = Boolean.parseBoolean(value); -+ currentSection.add(key, new Value(key, boolValue, currentComment)); -+ } else { -+ throw new IllegalArgumentException("Invalid configuration, unknown type for " + line); -+ } -+ currentComment = new ArrayList<>(); -+ } -+ } -+ } -+ } -+ -+ public void save() throws IOException { -+ try (BufferedWriter writer = new BufferedWriter(new FileWriter(this.file))) { -+ for (Map.Entry entry : this.sections.entrySet()) { -+ Section section = entry.getValue(); -+ if (section.comments != null) { -+ for (String comment : section.comments) { -+ writer.write("# " + comment + "\n"); -+ } -+ } -+ writer.write("[" + section.key + "]" + "\n"); -+ for (Value value : section.values.values()) { -+ if (value.comments != null) { -+ for (String comment : value.comments) { -+ writer.write(" # " + comment + "\n"); -+ } -+ } -+ writer.write(" " + value.key + " = " + serialize(value.value) + "\n"); -+ } -+ writer.write("\n"); -+ } -+ } -+ } -+ -+ private ManualObject getObject(String key) { -+ String[] split = key.split("\\.", 2); -+ if (split.length == 1) { -+ return this.sections.computeIfAbsent(key, k -> new Section(k, null)); -+ } -+ return this.sections.computeIfAbsent(split[0], k -> new Section(k, null)).get(split[1]); -+ } -+ -+ public void setComment(String key, String... comment) { -+ ManualObject object = this.getObject(key); -+ object.comments.clear(); -+ object.comments.addAll(Arrays.asList(comment)); -+ } -+ -+ public T get(String key, T defaultValue, String... comment) { -+ String[] split = key.split("\\.", 2); -+ if (split.length == 1) { -+ throw new IllegalArgumentException("Key " + key + " does not include section"); -+ } -+ Section section = this.sections.computeIfAbsent(split[0], k -> new Section(k, null)); -+ if (!section.values.containsKey(split[1])) { -+ Value value = section.get(split[1]); -+ value.value = defaultValue; -+ value.comments.addAll(Arrays.asList(comment)); -+ return defaultValue; -+ } -+ Value value = section.get(split[1]); -+ if (value.comments.isEmpty()) { -+ value.comments.addAll(Arrays.asList(comment)); -+ } -+ return (T) value.value; -+ } -+ -+ public void set(String key, Object value) { -+ ManualObject object = getObject(key); -+ if (!(object instanceof Value)) { -+ throw new IllegalArgumentException("Invalid key for value " + key); -+ } -+ ((Value) object).value = value; -+ } -+ -+ private String serialize(Object object) { -+ if (object instanceof String) { -+ return "\"" + object + "\""; -+ } -+ return String.valueOf(object); -+ } -+ -+} diff --git a/src/main/java/net/minecraft/core/BlockPosition.java b/src/main/java/net/minecraft/core/BlockPosition.java index 8edc279e7a3fdfb7e10718f1deee34b7e3fb2f28..73ec17dea5d5668e49c9a6ad679bd3a362960c72 100644 --- a/src/main/java/net/minecraft/core/BlockPosition.java @@ -1647,7 +1442,7 @@ index d902efdb8f2d42ea4c3933f7fa76ebe135ee09db..24a46ad36613faa5f5a1a12b70f7af88 this.setPVP(dedicatedserverproperties.pvp); this.setAllowFlight(dedicatedserverproperties.allowFlight); diff --git a/src/main/java/net/minecraft/server/level/ChunkProviderServer.java b/src/main/java/net/minecraft/server/level/ChunkProviderServer.java -index cb83f1152c52a99d25e4e80cc8bf18c6793e8b50..87c87b9767003652814c3726eece64470dbb69a8 100644 +index fe040615ff03478a20cdf8376f89a6b7d100ba61..207a9c3928aad7c6e89a120b54d87e003ebd232c 100644 --- a/src/main/java/net/minecraft/server/level/ChunkProviderServer.java +++ b/src/main/java/net/minecraft/server/level/ChunkProviderServer.java @@ -1000,6 +1000,7 @@ public class ChunkProviderServer extends IChunkProvider { @@ -1736,10 +1531,10 @@ index d7eede51f1c4ebbe8e00b16efd6331c87db53bb4..bc18b9c3aac4c5feeb1603554e0ac009 return this.a(i); } diff --git a/src/main/java/net/minecraft/server/level/WorldServer.java b/src/main/java/net/minecraft/server/level/WorldServer.java -index 46f960b9276dced41deb8f741454b6cce5a81529..9d97e2ea5c207c42f1cc9aa14bc87dc8e0a1bb1e 100644 +index 46baad407de5598ecb23fcbb9a3fb4ee82addb17..c35e7d01af6dde7998edc4da74ed005c8ccc11ee 100644 --- a/src/main/java/net/minecraft/server/level/WorldServer.java +++ b/src/main/java/net/minecraft/server/level/WorldServer.java -@@ -1081,11 +1081,12 @@ public class WorldServer extends World implements GeneratorAccessSeed { +@@ -1083,11 +1083,12 @@ public class WorldServer extends World implements GeneratorAccessSeed { // CraftBukkit end */ gameprofilerfiller.enter("checkDespawn"); @@ -1753,7 +1548,7 @@ index 46f960b9276dced41deb8f741454b6cce5a81529..9d97e2ea5c207c42f1cc9aa14bc87dc8 this.updateNavigatorsInRegion(entity); } } else { -@@ -1105,7 +1106,28 @@ public class WorldServer extends World implements GeneratorAccessSeed { +@@ -1107,7 +1108,28 @@ public class WorldServer extends World implements GeneratorAccessSeed { gameprofilerfiller.enter("tick"); if (!entity.dead && !(entity instanceof EntityComplexPart)) { @@ -1782,7 +1577,7 @@ index 46f960b9276dced41deb8f741454b6cce5a81529..9d97e2ea5c207c42f1cc9aa14bc87dc8 } gameprofilerfiller.exit(); -@@ -1115,7 +1137,7 @@ public class WorldServer extends World implements GeneratorAccessSeed { +@@ -1117,7 +1139,7 @@ public class WorldServer extends World implements GeneratorAccessSeed { this.entitiesById.remove(entity.getId()); // Tuinity this.unregisterEntity(entity); } else if (entity.inChunk && entity.valid) { // Tuinity start - optimise notify() @@ -1791,7 +1586,7 @@ index 46f960b9276dced41deb8f741454b6cce5a81529..9d97e2ea5c207c42f1cc9aa14bc87dc8 this.updateNavigatorsInRegion(entity); } } else { -@@ -1200,6 +1222,8 @@ public class WorldServer extends World implements GeneratorAccessSeed { +@@ -1202,6 +1224,8 @@ public class WorldServer extends World implements GeneratorAccessSeed { private final BiomeBase[] biomeBaseCache = new BiomeBase[1]; // Tuinity end - optimise chunk ice snow ticking @@ -1800,7 +1595,7 @@ index 46f960b9276dced41deb8f741454b6cce5a81529..9d97e2ea5c207c42f1cc9aa14bc87dc8 public void a(Chunk chunk, int i) { final int randomTickSpeed = i; // Paper ChunkCoordIntPair chunkcoordintpair = chunk.getPos(); boolean flag = this.isRaining(); -@@ -1210,7 +1234,7 @@ public class WorldServer extends World implements GeneratorAccessSeed { +@@ -1212,7 +1236,7 @@ public class WorldServer extends World implements GeneratorAccessSeed { gameprofilerfiller.enter("thunder"); final BlockPosition.MutableBlockPosition blockposition = this.chunkTickMutablePosition; // Paper - use mutable to reduce allocation rate, final to force compile fail on change @@ -1809,7 +1604,7 @@ index 46f960b9276dced41deb8f741454b6cce5a81529..9d97e2ea5c207c42f1cc9aa14bc87dc8 blockposition.setValues(this.a(this.a(j, 0, k, 15))); // Paper if (this.isRainingAt(blockposition)) { DifficultyDamageScaler difficultydamagescaler = this.getDamageScaler(blockposition); -@@ -1234,7 +1258,7 @@ public class WorldServer extends World implements GeneratorAccessSeed { +@@ -1236,7 +1260,7 @@ public class WorldServer extends World implements GeneratorAccessSeed { } gameprofilerfiller.exitEnter("iceandsnow"); @@ -1818,7 +1613,7 @@ index 46f960b9276dced41deb8f741454b6cce5a81529..9d97e2ea5c207c42f1cc9aa14bc87dc8 // Paper start - optimise chunk ticking // Tuinity start - optimise chunk ice snow ticking BiomeBase[] biomeCache = this.biomeBaseCache; -@@ -1414,7 +1438,9 @@ public class WorldServer extends World implements GeneratorAccessSeed { +@@ -1415,7 +1439,9 @@ public class WorldServer extends World implements GeneratorAccessSeed { } // Tuinity end - log detailed entity tick information @@ -1829,7 +1624,7 @@ index 46f960b9276dced41deb8f741454b6cce5a81529..9d97e2ea5c207c42f1cc9aa14bc87dc8 // Tuinity start - log detailed entity tick information com.tuinity.tuinity.util.TickThread.ensureTickThread("Cannot tick an entity off-main"); try { -@@ -1422,7 +1448,7 @@ public class WorldServer extends World implements GeneratorAccessSeed { +@@ -1423,7 +1449,7 @@ public class WorldServer extends World implements GeneratorAccessSeed { currentlyTickingEntity.lazySet(entity); } // Tuinity end - log detailed entity tick information @@ -1838,7 +1633,7 @@ index 46f960b9276dced41deb8f741454b6cce5a81529..9d97e2ea5c207c42f1cc9aa14bc87dc8 this.chunkCheck(entity); } else { ++TimingHistory.entityTicks; // Paper - timings -@@ -1448,9 +1474,14 @@ public class WorldServer extends World implements GeneratorAccessSeed { +@@ -1449,9 +1475,14 @@ public class WorldServer extends World implements GeneratorAccessSeed { ++entity.ticksLived; GameProfilerFiller gameprofilerfiller = this.getMethodProfiler(); @@ -1925,7 +1720,7 @@ index aae13c2e6c2a30b69c33417932c6a4d0aefeb7f5..f4440a5c4aedb1d7d303517f86a07c85 this.world.getMethodProfiler().exit(); this.world.getMethodProfiler().enter("navigation"); diff --git a/src/main/java/net/minecraft/world/entity/EntityLiving.java b/src/main/java/net/minecraft/world/entity/EntityLiving.java -index 561905be42428855a07a2e63aca80d5dd63b22bf..1a7866bed9cb7f0431454d3af4733de05c0cba78 100644 +index d933323d57a2a7ff283408f12d4650699f8177e7..5c983a441cd2a06eae6e79bc07ba5440d294574b 100644 --- a/src/main/java/net/minecraft/world/entity/EntityLiving.java +++ b/src/main/java/net/minecraft/world/entity/EntityLiving.java @@ -111,6 +111,7 @@ import net.minecraft.world.phys.AxisAlignedBB; @@ -2479,10 +2274,10 @@ index d497006f05f79015cd791849888832bb53f4a414..d98526785ff2fa3b72e8ffffcb89a57a private static BlockPosition getRandomPosition(World world, Chunk chunk) { diff --git a/src/main/java/net/minecraft/world/level/StructureManager.java b/src/main/java/net/minecraft/world/level/StructureManager.java -index acacbf9617f99b97fc7fd2ba718775e1b3e429e9..967ae0212028d57d366497f7f25c61776c1ac3f2 100644 +index 43418273f00f3703c7bd86586847d469af92c18f..d11e79093f9a5121c98b7da840bc79d204895b65 100644 --- a/src/main/java/net/minecraft/world/level/StructureManager.java +++ b/src/main/java/net/minecraft/world/level/StructureManager.java -@@ -15,6 +15,11 @@ import net.minecraft.world.level.levelgen.feature.StructureGenerator; +@@ -16,6 +16,11 @@ import net.minecraft.world.level.levelgen.feature.StructureGenerator; import net.minecraft.world.level.levelgen.structure.StructurePiece; import net.minecraft.world.level.levelgen.structure.StructureStart; @@ -2494,7 +2289,7 @@ index acacbf9617f99b97fc7fd2ba718775e1b3e429e9..967ae0212028d57d366497f7f25c6177 public class StructureManager { private final GeneratorAccess a; public GeneratorAccess getLevel() { return a; } // Paper - OBFHELPER -@@ -51,13 +56,15 @@ public class StructureManager { +@@ -52,13 +57,15 @@ public class StructureManager { public java.util.List> getFeatureStarts(SectionPosition sectionPosition, StructureGenerator structureGenerator, IWorldReader world) { // Tuinity end - add world parameter java.util.List> list = new ObjectArrayList<>(); @@ -2513,7 +2308,7 @@ index acacbf9617f99b97fc7fd2ba718775e1b3e429e9..967ae0212028d57d366497f7f25c6177 return list; } // Paper end -@@ -85,7 +92,18 @@ public class StructureManager { +@@ -86,7 +93,18 @@ public class StructureManager { } public StructureStart getStructureStarts(BlockPosition blockposition, boolean flag, StructureGenerator structuregenerator, IWorldReader world) { // Paper start - remove structure streams @@ -2533,7 +2328,7 @@ index acacbf9617f99b97fc7fd2ba718775e1b3e429e9..967ae0212028d57d366497f7f25c6177 if (structurestart.c().b(blockposition)) { if (!flag) { return structurestart; -@@ -96,7 +114,10 @@ public class StructureManager { +@@ -97,7 +115,10 @@ public class StructureManager { } } } diff --git a/patches/server/0003-Multithreaded-entity-tracking.patch b/patches/server/0003-Multithreaded-entity-tracking.patch index 28a7b3d39..f647be4df 100644 --- a/patches/server/0003-Multithreaded-entity-tracking.patch +++ b/patches/server/0003-Multithreaded-entity-tracking.patch @@ -42,23 +42,22 @@ index be408aebbccbda46e8aa82ef337574137cfa0096..739839314fd8a88b5fca8b9678e1df07 private final boolean threadRestricted; diff --git a/src/main/java/gg/airplane/AirplaneConfig.java b/src/main/java/gg/airplane/AirplaneConfig.java -index 39ef53c9dd49d5951103777002f866a64a252bfd..3886c731a69540f638d57a411285da289d3b704b 100644 +index a77e628518920e84b03a8a00e1308a9a53a00896..5a20ad857b7c550281000e8d94dac78d72591f31 100644 --- a/src/main/java/gg/airplane/AirplaneConfig.java +++ b/src/main/java/gg/airplane/AirplaneConfig.java -@@ -91,4 +91,18 @@ public class AirplaneConfig { - } +@@ -96,4 +96,17 @@ public class AirplaneConfig { } -+ + + public static boolean multithreadedEntityTracker = false; + public static boolean entityTrackerAsyncPackets = false; + + private static void entityTracker() { -+ manual.setComment("tracker", "Options to improve the performance of the entity tracker"); ++ config.setComment("tracker", "Options to improve the performance of the entity tracker"); + -+ multithreadedEntityTracker = manual.get("tracker.multithreaded", multithreadedEntityTracker, ++ multithreadedEntityTracker = config.getBoolean("tracker.multithreaded", multithreadedEntityTracker, + "This enables the multithreading of the tracker."); -+ entityTrackerAsyncPackets = manual.get("tracker.unsafe-async-packets", entityTrackerAsyncPackets, ++ entityTrackerAsyncPackets = config.getBoolean("tracker.unsafe-async-packets", entityTrackerAsyncPackets, + "This option can break plugins that assume packets from the", + "entity tracker will be sent sync."); + } @@ -198,7 +197,7 @@ index 0000000000000000000000000000000000000000..4419fbe94041f4b8a0ea848880798289 + +} diff --git a/src/main/java/net/minecraft/server/level/ChunkProviderServer.java b/src/main/java/net/minecraft/server/level/ChunkProviderServer.java -index 87c87b9767003652814c3726eece64470dbb69a8..dc1b7db4d39d4dfa65d60e5a059d3b94def6cf62 100644 +index 207a9c3928aad7c6e89a120b54d87e003ebd232c..424cd048f905cd0ed3f7a4545a26ffde8da1f91f 100644 --- a/src/main/java/net/minecraft/server/level/ChunkProviderServer.java +++ b/src/main/java/net/minecraft/server/level/ChunkProviderServer.java @@ -388,7 +388,7 @@ public class ChunkProviderServer extends IChunkProvider { @@ -224,7 +223,7 @@ index 59989db6dcf96a8ab5a75775bb588c31cec3418a..534c7266fe9d6f60b74a71e5e61ed248 private final ServerStatisticManager serverStatisticManager; private float lastHealthScored = Float.MIN_VALUE; diff --git a/src/main/java/net/minecraft/server/level/EntityTrackerEntry.java b/src/main/java/net/minecraft/server/level/EntityTrackerEntry.java -index a1512ee8422fa39a95e4f19c86fe71b77af54ca0..c830b257054b7f8153aa9225c1f61f49a6ea0a84 100644 +index 67ca28463f5add7c18f7f16b918c3f36f8feeeda..37e64e24ca3a90370cdf12e5ff9cd1fceede796b 100644 --- a/src/main/java/net/minecraft/server/level/EntityTrackerEntry.java +++ b/src/main/java/net/minecraft/server/level/EntityTrackerEntry.java @@ -75,6 +75,10 @@ public class EntityTrackerEntry { @@ -247,7 +246,7 @@ index a1512ee8422fa39a95e4f19c86fe71b77af54ca0..c830b257054b7f8153aa9225c1f61f49 List list = this.tracker.passengers; // Paper - do not copy list if (!list.equals(this.p)) { -@@ -117,6 +121,8 @@ public class EntityTrackerEntry { +@@ -116,6 +120,8 @@ public class EntityTrackerEntry { ItemStack itemstack = entityitemframe.getItem(); if (this.tickCounter % 10 == 0 && itemstack.getItem() instanceof ItemWorldMap) { // CraftBukkit - Moved this.tickCounter % 10 logic here so item frames do not enter the other blocks @@ -256,7 +255,7 @@ index a1512ee8422fa39a95e4f19c86fe71b77af54ca0..c830b257054b7f8153aa9225c1f61f49 WorldMap worldmap = ItemWorldMap.getSavedMap(itemstack, this.b); Iterator iterator = this.trackedPlayers.iterator(); // CraftBukkit -@@ -130,6 +136,8 @@ public class EntityTrackerEntry { +@@ -129,6 +135,8 @@ public class EntityTrackerEntry { entityplayer.playerConnection.sendPacket(packet); } } @@ -265,7 +264,7 @@ index a1512ee8422fa39a95e4f19c86fe71b77af54ca0..c830b257054b7f8153aa9225c1f61f49 } this.c(); -@@ -264,18 +272,25 @@ public class EntityTrackerEntry { +@@ -263,18 +271,25 @@ public class EntityTrackerEntry { // CraftBukkit start - Create PlayerVelocity event boolean cancelled = false; @@ -295,7 +294,7 @@ index a1512ee8422fa39a95e4f19c86fe71b77af54ca0..c830b257054b7f8153aa9225c1f61f49 } if (!cancelled) { -@@ -359,7 +374,9 @@ public class EntityTrackerEntry { +@@ -358,7 +373,9 @@ public class EntityTrackerEntry { if (!list.isEmpty()) { consumer.accept(new PacketPlayOutEntityEquipment(this.tracker.getId(), list)); } @@ -305,7 +304,7 @@ index a1512ee8422fa39a95e4f19c86fe71b77af54ca0..c830b257054b7f8153aa9225c1f61f49 } // CraftBukkit start - Fix for nonsensical head yaw -@@ -437,6 +454,10 @@ public class EntityTrackerEntry { +@@ -436,6 +453,10 @@ public class EntityTrackerEntry { // Paper end private void broadcastIncludingSelf(Packet packet) { diff --git a/patches/server/0004-Rebrand.patch b/patches/server/0004-Rebrand.patch index 467a47917..9530e231d 100644 --- a/patches/server/0004-Rebrand.patch +++ b/patches/server/0004-Rebrand.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Rebrand diff --git a/pom.xml b/pom.xml -index fc2c3714b6c772d67e258be269aa92dda80cdb12..854c014fb17d7241b8588646fd253381f7e8ff39 100644 +index 2071c1f39cdf954c7dc15afcabab58cf2e340e68..622519b575b224805f147d3ef60d41b9ca3566de 100644 --- a/pom.xml +++ b/pom.xml @@ -27,8 +27,10 @@ @@ -21,19 +21,22 @@ index fc2c3714b6c772d67e258be269aa92dda80cdb12..854c014fb17d7241b8588646fd253381 ${project.version} compile -@@ -174,6 +176,11 @@ - jitpack.io - https://jitpack.io - +@@ -175,6 +177,14 @@ + + + ++ + + + purpur-snapshots + https://repo.pl3x.net/ + - - ++ ++ -@@ -353,8 +360,15 @@ + + tuinity-${minecraft.version} +@@ -352,8 +362,15 @@ org.eclipse.jdt ecj diff --git a/patches/server/0010-AFK-API.patch b/patches/server/0010-AFK-API.patch index 2d4037085..438256353 100644 --- a/patches/server/0010-AFK-API.patch +++ b/patches/server/0010-AFK-API.patch @@ -64,10 +64,10 @@ index 534c7266fe9d6f60b74a71e5e61ed248e515dffd..f30dcbd26ed56ba8f1a99260722a0b39 return this.serverStatisticManager; } diff --git a/src/main/java/net/minecraft/server/level/WorldServer.java b/src/main/java/net/minecraft/server/level/WorldServer.java -index 9d97e2ea5c207c42f1cc9aa14bc87dc8e0a1bb1e..984a90a0a69f60315536d60eff597f65b6d49c57 100644 +index c35e7d01af6dde7998edc4da74ed005c8ccc11ee..c4f58ea8818d0c3e6dcd215f4cbb46a4b59ffa3b 100644 --- a/src/main/java/net/minecraft/server/level/WorldServer.java +++ b/src/main/java/net/minecraft/server/level/WorldServer.java -@@ -1000,7 +1000,7 @@ public class WorldServer extends World implements GeneratorAccessSeed { +@@ -1002,7 +1002,7 @@ public class WorldServer extends World implements GeneratorAccessSeed { // CraftBukkit end if (this.everyoneSleeping && this.players.stream().noneMatch((entityplayer) -> { @@ -76,7 +76,7 @@ index 9d97e2ea5c207c42f1cc9aa14bc87dc8e0a1bb1e..984a90a0a69f60315536d60eff597f65 })) { // CraftBukkit start long l = this.worldData.getDayTime() + 24000L; -@@ -1368,7 +1368,7 @@ public class WorldServer extends World implements GeneratorAccessSeed { +@@ -1369,7 +1369,7 @@ public class WorldServer extends World implements GeneratorAccessSeed { while (iterator.hasNext()) { EntityPlayer entityplayer = (EntityPlayer) iterator.next(); @@ -86,7 +86,7 @@ index 9d97e2ea5c207c42f1cc9aa14bc87dc8e0a1bb1e..984a90a0a69f60315536d60eff597f65 } else if (entityplayer.isSleeping()) { ++j; diff --git a/src/main/java/net/minecraft/server/network/PlayerConnection.java b/src/main/java/net/minecraft/server/network/PlayerConnection.java -index a5871955d487dbf6552d20e5559f2cb1427aeb3e..9603503f8959379c3b6e30b22946fa2b6b100504 100644 +index 40a7f69e5e14078977ef615abf3a0f1f61d76f9f..a1db769f91ce52b1179837b5f532875c21a57367 100644 --- a/src/main/java/net/minecraft/server/network/PlayerConnection.java +++ b/src/main/java/net/minecraft/server/network/PlayerConnection.java @@ -397,6 +397,12 @@ public class PlayerConnection implements PacketListenerPlayIn { diff --git a/patches/server/0013-LivingEntity-safeFallDistance.patch b/patches/server/0013-LivingEntity-safeFallDistance.patch index 68ca7ee18..7aaf33d9b 100644 --- a/patches/server/0013-LivingEntity-safeFallDistance.patch +++ b/patches/server/0013-LivingEntity-safeFallDistance.patch @@ -5,7 +5,7 @@ Subject: [PATCH] LivingEntity safeFallDistance diff --git a/src/main/java/net/minecraft/world/entity/EntityLiving.java b/src/main/java/net/minecraft/world/entity/EntityLiving.java -index 1a7866bed9cb7f0431454d3af4733de05c0cba78..30aabde3d6703eefcb6d57bab43666b97197ba1f 100644 +index 5c983a441cd2a06eae6e79bc07ba5440d294574b..b987cee913bf909fa0daa6280376838e9429fe5d 100644 --- a/src/main/java/net/minecraft/world/entity/EntityLiving.java +++ b/src/main/java/net/minecraft/world/entity/EntityLiving.java @@ -228,6 +228,7 @@ public abstract class EntityLiving extends Entity { diff --git a/patches/server/0018-Player-invulnerabilities.patch b/patches/server/0018-Player-invulnerabilities.patch index e33500ef7..232e56d80 100644 --- a/patches/server/0018-Player-invulnerabilities.patch +++ b/patches/server/0018-Player-invulnerabilities.patch @@ -67,7 +67,7 @@ index f30dcbd26ed56ba8f1a99260722a0b395c220954..7cd1ae92768164b657af9febe9b4feb7 public Scoreboard getScoreboard() { return getBukkitEntity().getScoreboard().getHandle(); diff --git a/src/main/java/net/minecraft/server/network/PlayerConnection.java b/src/main/java/net/minecraft/server/network/PlayerConnection.java -index 9603503f8959379c3b6e30b22946fa2b6b100504..016e4c92545ee6effe0311ad7651255cb88bd9f2 100644 +index a1db769f91ce52b1179837b5f532875c21a57367..78522c87e5c6dc63912eb8c329cf7dfa4320b35a 100644 --- a/src/main/java/net/minecraft/server/network/PlayerConnection.java +++ b/src/main/java/net/minecraft/server/network/PlayerConnection.java @@ -1882,6 +1882,7 @@ public class PlayerConnection implements PacketListenerPlayIn { diff --git a/patches/server/0021-Alternative-Keepalive-Handling.patch b/patches/server/0021-Alternative-Keepalive-Handling.patch index 0922da586..905e83c2f 100644 --- a/patches/server/0021-Alternative-Keepalive-Handling.patch +++ b/patches/server/0021-Alternative-Keepalive-Handling.patch @@ -17,7 +17,7 @@ index b4c37287362907b8507d156b978ba5b9d961bb7b..9e6e6636539702507abb78515e002819 return this.a; } diff --git a/src/main/java/net/minecraft/server/network/PlayerConnection.java b/src/main/java/net/minecraft/server/network/PlayerConnection.java -index 016e4c92545ee6effe0311ad7651255cb88bd9f2..5173affbc42ca00305557b53f606f1d9eb78d468 100644 +index 78522c87e5c6dc63912eb8c329cf7dfa4320b35a..87735e7c205d7a9c212935bb56e70b449bb024bb 100644 --- a/src/main/java/net/minecraft/server/network/PlayerConnection.java +++ b/src/main/java/net/minecraft/server/network/PlayerConnection.java @@ -231,6 +231,7 @@ public class PlayerConnection implements PacketListenerPlayIn { diff --git a/patches/server/0027-Giants-AI-settings.patch b/patches/server/0027-Giants-AI-settings.patch index 84798f012..e2dc631ee 100644 --- a/patches/server/0027-Giants-AI-settings.patch +++ b/patches/server/0027-Giants-AI-settings.patch @@ -38,7 +38,7 @@ index f4440a5c4aedb1d7d303517f86a07c856dd1309b..7443fe924486404931c11793acc67e2f float f = difficultydamagescaler.d(); diff --git a/src/main/java/net/minecraft/world/entity/EntityLiving.java b/src/main/java/net/minecraft/world/entity/EntityLiving.java -index 30aabde3d6703eefcb6d57bab43666b97197ba1f..ffc5ca763a22a1c4d06ffdb72c30482c13ec0a7b 100644 +index b987cee913bf909fa0daa6280376838e9429fe5d..7720cf9dcbc5a9680c68f47aef08ff1c3b154022 100644 --- a/src/main/java/net/minecraft/world/entity/EntityLiving.java +++ b/src/main/java/net/minecraft/world/entity/EntityLiving.java @@ -261,6 +261,7 @@ public abstract class EntityLiving extends Entity { diff --git a/patches/server/0029-Zombie-horse-naturally-spawn.patch b/patches/server/0029-Zombie-horse-naturally-spawn.patch index 520276bde..c7d8fdd75 100644 --- a/patches/server/0029-Zombie-horse-naturally-spawn.patch +++ b/patches/server/0029-Zombie-horse-naturally-spawn.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Zombie horse naturally spawn diff --git a/src/main/java/net/minecraft/server/level/WorldServer.java b/src/main/java/net/minecraft/server/level/WorldServer.java -index 984a90a0a69f60315536d60eff597f65b6d49c57..bdc1aaa02836cb675224062e59cd635c6fe6e28a 100644 +index c4f58ea8818d0c3e6dcd215f4cbb46a4b59ffa3b..2048b6f05d68eb31154f4a4c36ff8fa9ee225434 100644 --- a/src/main/java/net/minecraft/server/level/WorldServer.java +++ b/src/main/java/net/minecraft/server/level/WorldServer.java @@ -96,6 +96,7 @@ import net.minecraft.world.entity.ai.village.poi.VillagePlace; @@ -16,7 +16,7 @@ index 984a90a0a69f60315536d60eff597f65b6d49c57..bdc1aaa02836cb675224062e59cd635c import net.minecraft.world.entity.animal.horse.EntityHorseSkeleton; import net.minecraft.world.entity.boss.EntityComplexPart; import net.minecraft.world.entity.boss.enderdragon.EntityEnderDragon; -@@ -1241,12 +1242,18 @@ public class WorldServer extends World implements GeneratorAccessSeed { +@@ -1243,12 +1244,18 @@ public class WorldServer extends World implements GeneratorAccessSeed { boolean flag1 = this.getGameRules().getBoolean(GameRules.DO_MOB_SPAWNING) && this.random.nextDouble() < (double) difficultydamagescaler.b() * paperConfig.skeleHorseSpawnChance; // Paper if (flag1) { diff --git a/patches/server/0034-Dont-send-useless-entity-packets.patch b/patches/server/0034-Dont-send-useless-entity-packets.patch index 8f94d0095..127e472b2 100644 --- a/patches/server/0034-Dont-send-useless-entity-packets.patch +++ b/patches/server/0034-Dont-send-useless-entity-packets.patch @@ -26,10 +26,10 @@ index 0eed10a6c4e0c7245f219d19ed1e2e5c94364db9..2b54a5f3347f788b751892105f888663 protected boolean h; protected boolean i; diff --git a/src/main/java/net/minecraft/server/level/EntityTrackerEntry.java b/src/main/java/net/minecraft/server/level/EntityTrackerEntry.java -index c830b257054b7f8153aa9225c1f61f49a6ea0a84..3a66a34db2b8ac612431131cea80e57ee72de05f 100644 +index 37e64e24ca3a90370cdf12e5ff9cd1fceede796b..f63ec5fa5a1cb34f4809a06a29d01603efb178f1 100644 --- a/src/main/java/net/minecraft/server/level/EntityTrackerEntry.java +++ b/src/main/java/net/minecraft/server/level/EntityTrackerEntry.java -@@ -209,6 +209,7 @@ public class EntityTrackerEntry { +@@ -208,6 +208,7 @@ public class EntityTrackerEntry { this.o = 0; packet1 = new PacketPlayOutEntityTeleport(this.tracker); } @@ -37,7 +37,7 @@ index c830b257054b7f8153aa9225c1f61f49a6ea0a84..3a66a34db2b8ac612431131cea80e57e } if ((this.e || this.tracker.impulse || this.tracker instanceof EntityLiving && ((EntityLiving) this.tracker).isGliding()) && this.tickCounter > 0) { -@@ -302,6 +303,22 @@ public class EntityTrackerEntry { +@@ -301,6 +302,22 @@ public class EntityTrackerEntry { } diff --git a/patches/server/0041-Cows-eat-mushrooms.patch b/patches/server/0041-Cows-eat-mushrooms.patch index 32aa6e245..b0b68fe0e 100644 --- a/patches/server/0041-Cows-eat-mushrooms.patch +++ b/patches/server/0041-Cows-eat-mushrooms.patch @@ -17,7 +17,7 @@ index b7c72eaf5715a30bb8f82891f9830f9f62ec03c9..c8071e2909c03bd8eafb92fbf8fd8701 this.setPositionRotation(entity.locX(), entity.locY(), entity.locZ(), entity.yaw, entity.pitch); } diff --git a/src/main/java/net/minecraft/world/entity/EntityLiving.java b/src/main/java/net/minecraft/world/entity/EntityLiving.java -index ffc5ca763a22a1c4d06ffdb72c30482c13ec0a7b..1902b706345ff0031aaa8babde8cabffced99b78 100644 +index 7720cf9dcbc5a9680c68f47aef08ff1c3b154022..ee42f3d97c3453bacfe0be40ee99f08649d44acf 100644 --- a/src/main/java/net/minecraft/world/entity/EntityLiving.java +++ b/src/main/java/net/minecraft/world/entity/EntityLiving.java @@ -176,7 +176,7 @@ public abstract class EntityLiving extends Entity { diff --git a/patches/server/0047-Signs-allow-color-codes.patch b/patches/server/0047-Signs-allow-color-codes.patch index eda9b8eea..0cacbd332 100644 --- a/patches/server/0047-Signs-allow-color-codes.patch +++ b/patches/server/0047-Signs-allow-color-codes.patch @@ -17,7 +17,7 @@ index 7cd1ae92768164b657af9febe9b4feb7fd02f55a..fe583fbc58309564d35d4cdd56fafc4d this.playerConnection.sendPacket(new PacketPlayOutOpenSignEditor(tileentitysign.getPosition())); } diff --git a/src/main/java/net/minecraft/server/network/PlayerConnection.java b/src/main/java/net/minecraft/server/network/PlayerConnection.java -index 5173affbc42ca00305557b53f606f1d9eb78d468..5f91259b305a48fd09a156799808c25561788882 100644 +index 87735e7c205d7a9c212935bb56e70b449bb024bb..ac7618caf6845bd35a5ea5980d1e2f889fb8301f 100644 --- a/src/main/java/net/minecraft/server/network/PlayerConnection.java +++ b/src/main/java/net/minecraft/server/network/PlayerConnection.java @@ -3047,6 +3047,15 @@ public class PlayerConnection implements PacketListenerPlayIn { diff --git a/patches/server/0049-Controllable-Minecarts.patch b/patches/server/0049-Controllable-Minecarts.patch index 6a1ed278e..484c796a9 100644 --- a/patches/server/0049-Controllable-Minecarts.patch +++ b/patches/server/0049-Controllable-Minecarts.patch @@ -50,7 +50,7 @@ index fe583fbc58309564d35d4cdd56fafc4de8ba31c8..4a2ea4c83107e957bda69604ca0ae98c if (!flag && isSpawnInvulnerable() && damagesource != DamageSource.OUT_OF_WORLD) { // Purpur diff --git a/src/main/java/net/minecraft/world/entity/EntityLiving.java b/src/main/java/net/minecraft/world/entity/EntityLiving.java -index 1902b706345ff0031aaa8babde8cabffced99b78..c3acf0de92f1dbbcfbe7a9673c843107a6bd00b7 100644 +index ee42f3d97c3453bacfe0be40ee99f08649d44acf..09c00dae1d25878a7d55bdc2498b7d6e325dc45a 100644 --- a/src/main/java/net/minecraft/world/entity/EntityLiving.java +++ b/src/main/java/net/minecraft/world/entity/EntityLiving.java @@ -194,9 +194,9 @@ public abstract class EntityLiving extends Entity { diff --git a/patches/server/0050-Disable-loot-drops-on-death-by-cramming.patch b/patches/server/0050-Disable-loot-drops-on-death-by-cramming.patch index a0f217601..0ba069d6e 100644 --- a/patches/server/0050-Disable-loot-drops-on-death-by-cramming.patch +++ b/patches/server/0050-Disable-loot-drops-on-death-by-cramming.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Disable loot drops on death by cramming diff --git a/src/main/java/net/minecraft/world/entity/EntityLiving.java b/src/main/java/net/minecraft/world/entity/EntityLiving.java -index c3acf0de92f1dbbcfbe7a9673c843107a6bd00b7..1602c00e04cccdee4e9eb4f4512145e8b1aeaf57 100644 +index 09c00dae1d25878a7d55bdc2498b7d6e325dc45a..f338c3fc638d76eb6850573517c6123584bc7e04 100644 --- a/src/main/java/net/minecraft/world/entity/EntityLiving.java +++ b/src/main/java/net/minecraft/world/entity/EntityLiving.java @@ -1598,8 +1598,10 @@ public abstract class EntityLiving extends Entity { diff --git a/patches/server/0054-Fix-the-dead-lagging-the-server.patch b/patches/server/0054-Fix-the-dead-lagging-the-server.patch index f24ce7d26..732ea64f7 100644 --- a/patches/server/0054-Fix-the-dead-lagging-the-server.patch +++ b/patches/server/0054-Fix-the-dead-lagging-the-server.patch @@ -17,7 +17,7 @@ index c8071e2909c03bd8eafb92fbf8fd8701642df1f9..7c9fc120d2b58ca969b8a0ff9619e96f public void f(double d0, double d1, double d2) { diff --git a/src/main/java/net/minecraft/world/entity/EntityLiving.java b/src/main/java/net/minecraft/world/entity/EntityLiving.java -index 1602c00e04cccdee4e9eb4f4512145e8b1aeaf57..c540886511261303d2266ac97353e1b98c1f9601 100644 +index f338c3fc638d76eb6850573517c6123584bc7e04..7d1b5c992521ae1dae94d3e658d73491387e1d98 100644 --- a/src/main/java/net/minecraft/world/entity/EntityLiving.java +++ b/src/main/java/net/minecraft/world/entity/EntityLiving.java @@ -2597,7 +2597,7 @@ public abstract class EntityLiving extends Entity { diff --git a/patches/server/0075-Add-5-second-tps-average-in-tps.patch b/patches/server/0075-Add-5-second-tps-average-in-tps.patch index 104e10ba9..c63f6d574 100644 --- a/patches/server/0075-Add-5-second-tps-average-in-tps.patch +++ b/patches/server/0075-Add-5-second-tps-average-in-tps.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Add 5 second tps average in /tps diff --git a/src/main/java/com/destroystokyo/paper/gui/RAMDetails.java b/src/main/java/com/destroystokyo/paper/gui/RAMDetails.java -index dc6bc1910ad0f9b27144d5750078c3ca607d03d3..93f78b062688ceee0633a29c05e455cc2d09e8ef 100644 +index dc6bc1910ad0f9b27144d5750078c3ca607d03d3..e8be35f836ede2630d44902e99a21489a7bad61f 100644 --- a/src/main/java/com/destroystokyo/paper/gui/RAMDetails.java +++ b/src/main/java/com/destroystokyo/paper/gui/RAMDetails.java @@ -58,7 +58,7 @@ public class RAMDetails extends JList { diff --git a/patches/server/0076-Implement-elytra-settings.patch b/patches/server/0076-Implement-elytra-settings.patch index a50fa3a0b..b41d4cf9f 100644 --- a/patches/server/0076-Implement-elytra-settings.patch +++ b/patches/server/0076-Implement-elytra-settings.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Implement elytra settings diff --git a/src/main/java/net/minecraft/world/entity/EntityLiving.java b/src/main/java/net/minecraft/world/entity/EntityLiving.java -index c540886511261303d2266ac97353e1b98c1f9601..5a060b98fe9f3edc199cd520a636505c653556e9 100644 +index 7d1b5c992521ae1dae94d3e658d73491387e1d98..35936f4651484c495a43529638d79b5df65b82ee 100644 --- a/src/main/java/net/minecraft/world/entity/EntityLiving.java +++ b/src/main/java/net/minecraft/world/entity/EntityLiving.java @@ -2955,7 +2955,16 @@ public abstract class EntityLiving extends Entity { diff --git a/patches/server/0077-Item-entity-immunities.patch b/patches/server/0077-Item-entity-immunities.patch index f4fbceea7..620007fb1 100644 --- a/patches/server/0077-Item-entity-immunities.patch +++ b/patches/server/0077-Item-entity-immunities.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Item entity immunities diff --git a/src/main/java/net/minecraft/server/level/EntityTrackerEntry.java b/src/main/java/net/minecraft/server/level/EntityTrackerEntry.java -index 3a66a34db2b8ac612431131cea80e57ee72de05f..70a1ff235690a5990f94bd9cf97d670b2f4c2aea 100644 +index f63ec5fa5a1cb34f4809a06a29d01603efb178f1..b773480baef218d0aab2f524e7e305c18443517d 100644 --- a/src/main/java/net/minecraft/server/level/EntityTrackerEntry.java +++ b/src/main/java/net/minecraft/server/level/EntityTrackerEntry.java @@ -31,6 +31,7 @@ import net.minecraft.world.entity.EntityLiving; @@ -25,7 +25,7 @@ index 3a66a34db2b8ac612431131cea80e57ee72de05f..70a1ff235690a5990f94bd9cf97d670b // Paper start private java.util.Map trackedPlayerMap = null; -@@ -143,6 +144,15 @@ public class EntityTrackerEntry { +@@ -142,6 +143,15 @@ public class EntityTrackerEntry { this.c(); } diff --git a/patches/server/0085-Allow-color-codes-in-books.patch b/patches/server/0085-Allow-color-codes-in-books.patch index 9e4f60c95..bfdadfaa9 100644 --- a/patches/server/0085-Allow-color-codes-in-books.patch +++ b/patches/server/0085-Allow-color-codes-in-books.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Allow color codes in books diff --git a/src/main/java/net/minecraft/server/network/PlayerConnection.java b/src/main/java/net/minecraft/server/network/PlayerConnection.java -index 5f91259b305a48fd09a156799808c25561788882..72dda95171cf7d4632256b4d661338209d2adfb5 100644 +index ac7618caf6845bd35a5ea5980d1e2f889fb8301f..ac170c62b053e6a56ce6792d243722447565f333 100644 --- a/src/main/java/net/minecraft/server/network/PlayerConnection.java +++ b/src/main/java/net/minecraft/server/network/PlayerConnection.java @@ -1203,7 +1203,8 @@ public class PlayerConnection implements PacketListenerPlayIn { @@ -17,7 +17,7 @@ index 5f91259b305a48fd09a156799808c25561788882..72dda95171cf7d4632256b4d66133820 + list.stream().map(s -> s = color(s, hasPerm, false)).map(NBTTagString::a).forEach(nbttaglist::add); // Purpur - edit book ItemStack old = itemstack.cloneItemStack(); // CraftBukkit itemstack.a("pages", (NBTBase) nbttaglist); - CraftEventFactory.handleEditBookEvent(player, i, old, itemstack); // CraftBukkit + this.player.inventory.setItem(i, CraftEventFactory.handleEditBookEvent(player, i, old, itemstack)); // CraftBukkit // Paper - Don't ignore result (see other callsite for handleEditBookEvent) @@ -1221,13 +1222,14 @@ public class PlayerConnection implements PacketListenerPlayIn { itemstack1.setTag(nbttagcompound.clone()); } diff --git a/patches/server/0086-Entity-lifespan.patch b/patches/server/0086-Entity-lifespan.patch index 8a5f3b587..32cf1ba0f 100644 --- a/patches/server/0086-Entity-lifespan.patch +++ b/patches/server/0086-Entity-lifespan.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Entity lifespan diff --git a/src/main/java/net/minecraft/server/network/PlayerConnection.java b/src/main/java/net/minecraft/server/network/PlayerConnection.java -index 72dda95171cf7d4632256b4d661338209d2adfb5..c5549b74a3875c0fa1bfe8f270b25b59317073a3 100644 +index ac170c62b053e6a56ce6792d243722447565f333..e5092da7731a3fe449d6f4c6ccae2283665edb08 100644 --- a/src/main/java/net/minecraft/server/network/PlayerConnection.java +++ b/src/main/java/net/minecraft/server/network/PlayerConnection.java @@ -2443,6 +2443,7 @@ public class PlayerConnection implements PacketListenerPlayIn { diff --git a/patches/server/0087-Add-option-to-teleport-to-spawn-if-outside-world-bor.patch b/patches/server/0087-Add-option-to-teleport-to-spawn-if-outside-world-bor.patch index 0b3facab0..a9302e2d1 100644 --- a/patches/server/0087-Add-option-to-teleport-to-spawn-if-outside-world-bor.patch +++ b/patches/server/0087-Add-option-to-teleport-to-spawn-if-outside-world-bor.patch @@ -36,7 +36,7 @@ index e129480fa1045fbeaafa97045d53696b44952bcf..9de660f0c679f101512bddf7c6582ca6 + // Purpur end } diff --git a/src/main/java/net/minecraft/world/entity/EntityLiving.java b/src/main/java/net/minecraft/world/entity/EntityLiving.java -index 5a060b98fe9f3edc199cd520a636505c653556e9..e453502c34f717797c4b67a7149d2e0da1b1232d 100644 +index 35936f4651484c495a43529638d79b5df65b82ee..a2073fd6fc5c2a5fd2835445019c7ecf86c5eb47 100644 --- a/src/main/java/net/minecraft/world/entity/EntityLiving.java +++ b/src/main/java/net/minecraft/world/entity/EntityLiving.java @@ -45,6 +45,7 @@ import net.minecraft.network.syncher.DataWatcher; diff --git a/patches/server/0094-Totems-work-in-inventory.patch b/patches/server/0094-Totems-work-in-inventory.patch index 83c0864b1..ae6bc72da 100644 --- a/patches/server/0094-Totems-work-in-inventory.patch +++ b/patches/server/0094-Totems-work-in-inventory.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Totems work in inventory diff --git a/src/main/java/net/minecraft/world/entity/EntityLiving.java b/src/main/java/net/minecraft/world/entity/EntityLiving.java -index e453502c34f717797c4b67a7149d2e0da1b1232d..df9ab64ed3800dfdf9e175fc95a8d3d7dba00c51 100644 +index a2073fd6fc5c2a5fd2835445019c7ecf86c5eb47..451a28b1950bad61de7181a2fb89549063d8e2bf 100644 --- a/src/main/java/net/minecraft/world/entity/EntityLiving.java +++ b/src/main/java/net/minecraft/world/entity/EntityLiving.java @@ -1426,6 +1426,19 @@ public abstract class EntityLiving extends Entity { diff --git a/patches/server/0100-Add-no-random-tick-block-list.patch b/patches/server/0100-Add-no-random-tick-block-list.patch index ec4f7c721..35cc25be0 100644 --- a/patches/server/0100-Add-no-random-tick-block-list.patch +++ b/patches/server/0100-Add-no-random-tick-block-list.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Add no-random-tick block list diff --git a/src/main/java/net/minecraft/server/level/WorldServer.java b/src/main/java/net/minecraft/server/level/WorldServer.java -index bdc1aaa02836cb675224062e59cd635c6fe6e28a..345718ed5b30a2ba1ee6082b571e5771112e381b 100644 +index 2048b6f05d68eb31154f4a4c36ff8fa9ee225434..ff33ad8917c6325ee6d73cbb3473dc390e49d7cb 100644 --- a/src/main/java/net/minecraft/server/level/WorldServer.java +++ b/src/main/java/net/minecraft/server/level/WorldServer.java @@ -532,14 +532,14 @@ public class WorldServer extends World implements GeneratorAccessSeed { @@ -26,10 +26,10 @@ index bdc1aaa02836cb675224062e59cd635c6fe6e28a..345718ed5b30a2ba1ee6082b571e5771 this.nextTickListFluid = new TickListServer<>(this, (fluidtype) -> { return fluidtype == null || fluidtype == FluidTypes.EMPTY; diff --git a/src/main/java/net/minecraft/world/level/block/state/BlockBase.java b/src/main/java/net/minecraft/world/level/block/state/BlockBase.java -index 0b852fa247c65cb1e889ad4e55886e256f89a763..aa78176ddd9eced179ceb8e53a1884172490f059 100644 +index 6124b56d935386784371422960a07d518f848cf3..e5f66cdf95b6073545efc8d1527b0a5e2741f79d 100644 --- a/src/main/java/net/minecraft/world/level/block/state/BlockBase.java +++ b/src/main/java/net/minecraft/world/level/block/state/BlockBase.java -@@ -670,10 +670,12 @@ public abstract class BlockBase { +@@ -671,10 +671,12 @@ public abstract class BlockBase { } public void a(WorldServer worldserver, BlockPosition blockposition, Random random) { diff --git a/patches/server/0103-Stop-squids-floating-on-top-of-water.patch b/patches/server/0103-Stop-squids-floating-on-top-of-water.patch index 5d40a8822..d109dd8a0 100644 --- a/patches/server/0103-Stop-squids-floating-on-top-of-water.patch +++ b/patches/server/0103-Stop-squids-floating-on-top-of-water.patch @@ -24,10 +24,10 @@ index 5ac6b7759cf43dbbad1bcf74d5d86efd69883cf5..240f30f6ca6007ba8e7de1c3e033b2a8 int j = MathHelper.f(axisalignedbb.maxX); int k = MathHelper.floor(axisalignedbb.minY); diff --git a/src/main/java/net/minecraft/world/entity/animal/EntitySquid.java b/src/main/java/net/minecraft/world/entity/animal/EntitySquid.java -index 92ff03f8e8286f710fd5e63b4d103e489787d453..081929990a8208f643d298a885acc4ddfa401bfb 100644 +index 1f5f3e0d209426b97e32b82dd15176b800f85816..e6757b22497c6e274c3999d58671653e931ebe2b 100644 --- a/src/main/java/net/minecraft/world/entity/animal/EntitySquid.java +++ b/src/main/java/net/minecraft/world/entity/animal/EntitySquid.java -@@ -26,6 +26,7 @@ import net.minecraft.world.level.GeneratorAccess; +@@ -27,6 +27,7 @@ import net.minecraft.world.level.GeneratorAccess; import net.minecraft.world.level.World; import net.minecraft.world.level.block.state.IBlockData; import net.minecraft.world.level.material.Fluid; @@ -35,7 +35,7 @@ index 92ff03f8e8286f710fd5e63b4d103e489787d453..081929990a8208f643d298a885acc4dd import net.minecraft.world.phys.Vec3D; public class EntitySquid extends EntityWaterAnimal { -@@ -51,6 +52,14 @@ public class EntitySquid extends EntityWaterAnimal { +@@ -52,6 +53,14 @@ public class EntitySquid extends EntityWaterAnimal { this.bu = 1.0F / (this.random.nextFloat() + 1.0F) * 0.2F; } diff --git a/patches/server/0104-Ridables.patch b/patches/server/0104-Ridables.patch index bedbf61fd..f12719f54 100644 --- a/patches/server/0104-Ridables.patch +++ b/patches/server/0104-Ridables.patch @@ -88,7 +88,7 @@ index 9de660f0c679f101512bddf7c6582ca6cd18ca5b..e1a6e4a359eb2aa484d479fde398473c public void playerTick() { diff --git a/src/main/java/net/minecraft/server/level/WorldServer.java b/src/main/java/net/minecraft/server/level/WorldServer.java -index 345718ed5b30a2ba1ee6082b571e5771112e381b..88741bec1a16b14c6e80737328411c5deb6a467b 100644 +index ff33ad8917c6325ee6d73cbb3473dc390e49d7cb..19c2a278ec13efc64c683d63aed5b4f1dd7a4a72 100644 --- a/src/main/java/net/minecraft/server/level/WorldServer.java +++ b/src/main/java/net/minecraft/server/level/WorldServer.java @@ -216,6 +216,7 @@ public class WorldServer extends World implements GeneratorAccessSeed { @@ -100,7 +100,7 @@ index 345718ed5b30a2ba1ee6082b571e5771112e381b..88741bec1a16b14c6e80737328411c5d return new Throwable(entity + " Added to world at " + new java.util.Date()); } diff --git a/src/main/java/net/minecraft/server/network/PlayerConnection.java b/src/main/java/net/minecraft/server/network/PlayerConnection.java -index c5549b74a3875c0fa1bfe8f270b25b59317073a3..d5c38de84787089466d73dd5400f3276470716be 100644 +index e5092da7731a3fe449d6f4c6ccae2283665edb08..851d4ac34feb94f0cd4ba8a5399093dfa40ce1cd 100644 --- a/src/main/java/net/minecraft/server/network/PlayerConnection.java +++ b/src/main/java/net/minecraft/server/network/PlayerConnection.java @@ -2452,6 +2452,8 @@ public class PlayerConnection implements PacketListenerPlayIn { @@ -419,7 +419,7 @@ index c9136f1b54ff0620a621b703b4e7487f4a63b01d..8b7f840bb1b24996b40c9bef85f4c1e9 + // Purpur end } diff --git a/src/main/java/net/minecraft/world/entity/EntityLiving.java b/src/main/java/net/minecraft/world/entity/EntityLiving.java -index df9ab64ed3800dfdf9e175fc95a8d3d7dba00c51..617657ff7f27996ed7d97801dc49c9a39f59a240 100644 +index 451a28b1950bad61de7181a2fb89549063d8e2bf..81c0ccc4f8d0d1cf749cc2929c8d8f3c2c6c9887 100644 --- a/src/main/java/net/minecraft/world/entity/EntityLiving.java +++ b/src/main/java/net/minecraft/world/entity/EntityLiving.java @@ -559,7 +559,7 @@ public abstract class EntityLiving extends Entity { @@ -2296,10 +2296,10 @@ index 44119f52a4f169ffcea53fb69393bfedfd1a62a7..cfcf67e99ae345f77a55771e6a25bdcd } diff --git a/src/main/java/net/minecraft/world/entity/animal/EntitySquid.java b/src/main/java/net/minecraft/world/entity/animal/EntitySquid.java -index 081929990a8208f643d298a885acc4ddfa401bfb..10e228a36b213a87e17f26a633adfca18a006e94 100644 +index e6757b22497c6e274c3999d58671653e931ebe2b..a9fa18931d93dd7fa428b8cd6a414d4b3a3b4fbb 100644 --- a/src/main/java/net/minecraft/world/entity/animal/EntitySquid.java +++ b/src/main/java/net/minecraft/world/entity/animal/EntitySquid.java -@@ -3,6 +3,7 @@ package net.minecraft.world.entity.animal; +@@ -4,6 +4,7 @@ package net.minecraft.world.entity.animal; import java.util.Random; import net.minecraft.core.BlockPosition; import net.minecraft.core.particles.Particles; @@ -2307,7 +2307,7 @@ index 081929990a8208f643d298a885acc4ddfa401bfb..10e228a36b213a87e17f26a633adfca1 import net.minecraft.server.level.WorldServer; import net.minecraft.sounds.SoundEffect; import net.minecraft.sounds.SoundEffects; -@@ -22,6 +23,7 @@ import net.minecraft.world.entity.EnumMoveType; +@@ -23,6 +24,7 @@ import net.minecraft.world.entity.EnumMoveType; import net.minecraft.world.entity.ai.attributes.AttributeProvider; import net.minecraft.world.entity.ai.attributes.GenericAttributes; import net.minecraft.world.entity.ai.goal.PathfinderGoal; @@ -2315,7 +2315,7 @@ index 081929990a8208f643d298a885acc4ddfa401bfb..10e228a36b213a87e17f26a633adfca1 import net.minecraft.world.level.GeneratorAccess; import net.minecraft.world.level.World; import net.minecraft.world.level.block.state.IBlockData; -@@ -53,17 +55,38 @@ public class EntitySquid extends EntityWaterAnimal { +@@ -54,17 +56,38 @@ public class EntitySquid extends EntityWaterAnimal { } // Purpur start @@ -2355,7 +2355,7 @@ index 081929990a8208f643d298a885acc4ddfa401bfb..10e228a36b213a87e17f26a633adfca1 } public static AttributeProvider.Builder m() { -@@ -208,6 +231,7 @@ public class EntitySquid extends EntityWaterAnimal { +@@ -209,6 +232,7 @@ public class EntitySquid extends EntityWaterAnimal { return blockposition.getY() > generatoraccess.getMinecraftWorld().spigotConfig.squidSpawnRangeMin && blockposition.getY() < maxHeight; // Spigot // Paper } @@ -2363,7 +2363,7 @@ index 081929990a8208f643d298a885acc4ddfa401bfb..10e228a36b213a87e17f26a633adfca1 public void a(float f, float f1, float f2) { this.bw = f; this.bx = f1; -@@ -279,7 +303,7 @@ public class EntitySquid extends EntityWaterAnimal { +@@ -280,7 +304,7 @@ public class EntitySquid extends EntityWaterAnimal { class PathfinderGoalSquid extends PathfinderGoal { @@ -2372,7 +2372,7 @@ index 081929990a8208f643d298a885acc4ddfa401bfb..10e228a36b213a87e17f26a633adfca1 public PathfinderGoalSquid(EntitySquid entitysquid) { this.b = entitysquid; -@@ -292,6 +316,38 @@ public class EntitySquid extends EntityWaterAnimal { +@@ -293,6 +317,38 @@ public class EntitySquid extends EntityWaterAnimal { @Override public void e() { @@ -6862,7 +6862,7 @@ index dee4d12a49468d38f077784b219199f0070786f2..c524a0994f1c9ef1d0534403efa4e448 + // Purpur end } diff --git a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java -index 926440e846eff2c1aaa262aa2b3975b7dd225332..9a6c4f292940b1cef2f4ef87c2e47d82ba5cb60f 100644 +index 9084aa4b7c0059c995a3d1a89188379b52c9d620..7341b1956123d8e5d45d9041e7319de8ee8b768a 100644 --- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java +++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java @@ -530,6 +530,18 @@ public class CraftEventFactory { diff --git a/patches/server/0106-Crying-obsidian-valid-for-portal-frames.patch b/patches/server/0106-Crying-obsidian-valid-for-portal-frames.patch index 462a0a7f0..f3903c794 100644 --- a/patches/server/0106-Crying-obsidian-valid-for-portal-frames.patch +++ b/patches/server/0106-Crying-obsidian-valid-for-portal-frames.patch @@ -17,10 +17,10 @@ index 5ea059cde9e1a089c2ade12512e4a7abd07c5b8a..97eb81338207c93125bea08225638494 return this == block; } diff --git a/src/main/java/net/minecraft/world/level/block/state/BlockBase.java b/src/main/java/net/minecraft/world/level/block/state/BlockBase.java -index aa78176ddd9eced179ceb8e53a1884172490f059..936933ab4c9e78877e1a2fc250721c2158e3810c 100644 +index e5f66cdf95b6073545efc8d1527b0a5e2741f79d..23a3b1b317b6b3e9d812f5a7b09b099b0528c59e 100644 --- a/src/main/java/net/minecraft/world/level/block/state/BlockBase.java +++ b/src/main/java/net/minecraft/world/level/block/state/BlockBase.java -@@ -740,6 +740,7 @@ public abstract class BlockBase { +@@ -741,6 +741,7 @@ public abstract class BlockBase { return this.getBlock().a(tag) && predicate.test(this); } diff --git a/patches/server/0110-Allow-toggling-special-MobSpawners-per-world.patch b/patches/server/0110-Allow-toggling-special-MobSpawners-per-world.patch index 079c2ac2c..e75877502 100644 --- a/patches/server/0110-Allow-toggling-special-MobSpawners-per-world.patch +++ b/patches/server/0110-Allow-toggling-special-MobSpawners-per-world.patch @@ -6,7 +6,7 @@ Subject: [PATCH] Allow toggling special MobSpawners per world In vanilla, these are all hardcoded on for world type 0 (overworld) and hardcoded off for every other world type. Default config behaviour matches this. diff --git a/src/main/java/net/minecraft/server/level/WorldServer.java b/src/main/java/net/minecraft/server/level/WorldServer.java -index 88741bec1a16b14c6e80737328411c5deb6a467b..906af187d9f52cd1df9b6ec47b88230d35860471 100644 +index 19c2a278ec13efc64c683d63aed5b4f1dd7a4a72..e024b35e8d2f96d2141204ef79f595a8ea13e90c 100644 --- a/src/main/java/net/minecraft/server/level/WorldServer.java +++ b/src/main/java/net/minecraft/server/level/WorldServer.java @@ -92,6 +92,7 @@ import net.minecraft.world.entity.EnumCreatureType; diff --git a/patches/server/0116-Flying-squids-Oh-my.patch b/patches/server/0116-Flying-squids-Oh-my.patch index 8106603c0..a506b39d4 100644 --- a/patches/server/0116-Flying-squids-Oh-my.patch +++ b/patches/server/0116-Flying-squids-Oh-my.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Flying squids! Oh my! diff --git a/src/main/java/net/minecraft/world/entity/animal/EntitySquid.java b/src/main/java/net/minecraft/world/entity/animal/EntitySquid.java -index 10e228a36b213a87e17f26a633adfca18a006e94..07b1db0e1fff1beffe464a3984716d5d84ea1873 100644 +index a9fa18931d93dd7fa428b8cd6a414d4b3a3b4fbb..be48e12dd6c9a390bf383129953bcd3d1f818427 100644 --- a/src/main/java/net/minecraft/world/entity/animal/EntitySquid.java +++ b/src/main/java/net/minecraft/world/entity/animal/EntitySquid.java -@@ -80,6 +80,11 @@ public class EntitySquid extends EntityWaterAnimal { +@@ -81,6 +81,11 @@ public class EntitySquid extends EntityWaterAnimal { vector.setX(cos * x - sine * z); vector.setZ(sine * x + cos * z); } @@ -20,7 +20,7 @@ index 10e228a36b213a87e17f26a633adfca18a006e94..07b1db0e1fff1beffe464a3984716d5d // Purpur end @Override -@@ -145,6 +150,7 @@ public class EntitySquid extends EntityWaterAnimal { +@@ -146,6 +151,7 @@ public class EntitySquid extends EntityWaterAnimal { } if (this.aH()) { @@ -28,7 +28,7 @@ index 10e228a36b213a87e17f26a633adfca18a006e94..07b1db0e1fff1beffe464a3984716d5d if (this.bp < 3.1415927F) { float f = this.bp / 3.1415927F; -@@ -352,7 +358,7 @@ public class EntitySquid extends EntityWaterAnimal { +@@ -353,7 +359,7 @@ public class EntitySquid extends EntityWaterAnimal { if (i > 100) { this.b.a(0.0F, 0.0F, 0.0F); diff --git a/patches/server/0119-Configurable-daylight-cycle.patch b/patches/server/0119-Configurable-daylight-cycle.patch index 72a813dda..9847802ab 100644 --- a/patches/server/0119-Configurable-daylight-cycle.patch +++ b/patches/server/0119-Configurable-daylight-cycle.patch @@ -18,7 +18,7 @@ index 3086ee023685781d94e2fb99fc8dff5264f01165..74c1047305cac5673e274096709c757e public PacketPlayOutUpdateTime() {} diff --git a/src/main/java/net/minecraft/server/level/WorldServer.java b/src/main/java/net/minecraft/server/level/WorldServer.java -index 906af187d9f52cd1df9b6ec47b88230d35860471..fc77904699bb75cf55e7ea77a55c8ad4a9412c18 100644 +index e024b35e8d2f96d2141204ef79f595a8ea13e90c..587bbd1b4cce7cc5ee30471e86c4fe56362b92b8 100644 --- a/src/main/java/net/minecraft/server/level/WorldServer.java +++ b/src/main/java/net/minecraft/server/level/WorldServer.java @@ -64,6 +64,7 @@ import net.minecraft.network.protocol.game.PacketPlayOutExplosion; @@ -45,7 +45,7 @@ index 906af187d9f52cd1df9b6ec47b88230d35860471..fc77904699bb75cf55e7ea77a55c8ad4 } // Tuinity start - optimise collision -@@ -1210,7 +1213,21 @@ public class WorldServer extends World implements GeneratorAccessSeed { +@@ -1212,7 +1215,21 @@ public class WorldServer extends World implements GeneratorAccessSeed { this.nextTickListBlock.nextTick(); // Paper this.nextTickListFluid.nextTick(); // Paper this.worldDataServer.u().a(this.server, i); @@ -68,7 +68,7 @@ index 906af187d9f52cd1df9b6ec47b88230d35860471..fc77904699bb75cf55e7ea77a55c8ad4 this.setDayTime(this.worldData.getDayTime() + 1L); } -@@ -1219,6 +1236,12 @@ public class WorldServer extends World implements GeneratorAccessSeed { +@@ -1221,6 +1238,12 @@ public class WorldServer extends World implements GeneratorAccessSeed { public void setDayTime(long i) { this.worldDataServer.setDayTime(i); diff --git a/patches/server/0132-Add-critical-hit-check-to-EntityDamagedByEntityEvent.patch b/patches/server/0132-Add-critical-hit-check-to-EntityDamagedByEntityEvent.patch index df2c2a109..95ffd9f4f 100644 --- a/patches/server/0132-Add-critical-hit-check-to-EntityDamagedByEntityEvent.patch +++ b/patches/server/0132-Add-critical-hit-check-to-EntityDamagedByEntityEvent.patch @@ -33,7 +33,7 @@ index 1062317c22171bccee78a2db1841e0fd2b3023d7..907bfe42bd866188639f7d25150fcde0 if (flag5) { if (i > 0) { diff --git a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java -index 9a6c4f292940b1cef2f4ef87c2e47d82ba5cb60f..b068e08e3922536b4de8a54e7d63a1ec943602f3 100644 +index 7341b1956123d8e5d45d9041e7319de8ee8b768a..470ae06db18a78327cc3218f1f7180bcc859a198 100644 --- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java +++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java @@ -1076,7 +1076,7 @@ public class CraftEventFactory { diff --git a/patches/server/0149-Configurable-chance-for-wolves-to-spawn-rabid.patch b/patches/server/0149-Configurable-chance-for-wolves-to-spawn-rabid.patch index 17e99e7d6..cf4311dde 100644 --- a/patches/server/0149-Configurable-chance-for-wolves-to-spawn-rabid.patch +++ b/patches/server/0149-Configurable-chance-for-wolves-to-spawn-rabid.patch @@ -7,7 +7,7 @@ Configurable chance to spawn a wolf that is rabid. Rabid wolves attack all players, mobs, and animals. diff --git a/src/main/java/net/minecraft/world/entity/EntityLiving.java b/src/main/java/net/minecraft/world/entity/EntityLiving.java -index 617657ff7f27996ed7d97801dc49c9a39f59a240..f3f528065eb9ee2f385edbaceeeddef39552485c 100644 +index 81c0ccc4f8d0d1cf749cc2929c8d8f3c2c6c9887..72febe30dfcc731bc357d5fe1ede2a240f3d176d 100644 --- a/src/main/java/net/minecraft/world/entity/EntityLiving.java +++ b/src/main/java/net/minecraft/world/entity/EntityLiving.java @@ -2200,6 +2200,7 @@ public abstract class EntityLiving extends Entity { diff --git a/patches/server/0151-Configurable-entity-base-attributes.patch b/patches/server/0151-Configurable-entity-base-attributes.patch index 5cc12530f..02e5324de 100644 --- a/patches/server/0151-Configurable-entity-base-attributes.patch +++ b/patches/server/0151-Configurable-entity-base-attributes.patch @@ -384,10 +384,10 @@ index 28b5c22ecfe573ac9d91b74e54ebd3e3c5e6373f..88db8ff8cb415b84ab98cc0550c705d5 @Override diff --git a/src/main/java/net/minecraft/world/entity/animal/EntitySquid.java b/src/main/java/net/minecraft/world/entity/animal/EntitySquid.java -index 07b1db0e1fff1beffe464a3984716d5d84ea1873..2d2a3fc083bff18cdf50b1ef49b198f8253987ec 100644 +index be48e12dd6c9a390bf383129953bcd3d1f818427..1e7632d2ca4440dee4e406e26da61411ec5bc88f 100644 --- a/src/main/java/net/minecraft/world/entity/animal/EntitySquid.java +++ b/src/main/java/net/minecraft/world/entity/animal/EntitySquid.java -@@ -85,6 +85,11 @@ public class EntitySquid extends EntityWaterAnimal { +@@ -86,6 +86,11 @@ public class EntitySquid extends EntityWaterAnimal { public boolean isInWater() { return this.inWater || world.purpurConfig.squidsCanFly; } diff --git a/patches/server/0156-PlayerBookTooLargeEvent.patch b/patches/server/0156-PlayerBookTooLargeEvent.patch index b37445d93..35723b773 100644 --- a/patches/server/0156-PlayerBookTooLargeEvent.patch +++ b/patches/server/0156-PlayerBookTooLargeEvent.patch @@ -5,7 +5,7 @@ Subject: [PATCH] PlayerBookTooLargeEvent diff --git a/src/main/java/net/minecraft/server/network/PlayerConnection.java b/src/main/java/net/minecraft/server/network/PlayerConnection.java -index d5c38de84787089466d73dd5400f3276470716be..42f1216db0832b8606e57fc762d5e016450eaf5b 100644 +index 851d4ac34feb94f0cd4ba8a5399093dfa40ce1cd..da95a9e8870da7002c6ef47fc48ead32f3ab4856 100644 --- a/src/main/java/net/minecraft/server/network/PlayerConnection.java +++ b/src/main/java/net/minecraft/server/network/PlayerConnection.java @@ -1115,6 +1115,7 @@ public class PlayerConnection implements PacketListenerPlayIn { diff --git a/patches/server/0160-Add-mobGriefing-bypass-to-everything-affected.patch b/patches/server/0160-Add-mobGriefing-bypass-to-everything-affected.patch index 2c29643e0..55eaf7f70 100644 --- a/patches/server/0160-Add-mobGriefing-bypass-to-everything-affected.patch +++ b/patches/server/0160-Add-mobGriefing-bypass-to-everything-affected.patch @@ -6,7 +6,7 @@ Subject: [PATCH] Add mobGriefing bypass to everything affected This adds the "bypass-mob-griefing" world config option to everything that is affected by the gamerule. diff --git a/src/main/java/net/minecraft/world/entity/EntityLiving.java b/src/main/java/net/minecraft/world/entity/EntityLiving.java -index f3f528065eb9ee2f385edbaceeeddef39552485c..1e57358c02e67a6b062149926ada46696da24487 100644 +index 72febe30dfcc731bc357d5fe1ede2a240f3d176d..ac5b13e943d70cfb982f9e2c8e19ab1e69b6ec43 100644 --- a/src/main/java/net/minecraft/world/entity/EntityLiving.java +++ b/src/main/java/net/minecraft/world/entity/EntityLiving.java @@ -1571,7 +1571,7 @@ public abstract class EntityLiving extends Entity { diff --git a/patches/server/0162-Add-EntityTeleportHinderedEvent.patch b/patches/server/0162-Add-EntityTeleportHinderedEvent.patch index b607563a7..b9b9b411f 100644 --- a/patches/server/0162-Add-EntityTeleportHinderedEvent.patch +++ b/patches/server/0162-Add-EntityTeleportHinderedEvent.patch @@ -82,10 +82,10 @@ index d918194e45953764fa3fd286b715714330a60941..70496562faa89e92da34a4f7b891f845 if (this.exitPortal == null && this.world.getTypeKey() == DimensionManager.THE_END) { // CraftBukkit - work in alternate worlds this.a((WorldServer) this.world); diff --git a/src/main/java/net/minecraft/world/level/block/state/BlockBase.java b/src/main/java/net/minecraft/world/level/block/state/BlockBase.java -index 936933ab4c9e78877e1a2fc250721c2158e3810c..c47c98480572e83b1385fcd62940d4c69a79f9dc 100644 +index 23a3b1b317b6b3e9d812f5a7b09b099b0528c59e..4f40c6c3397596c81147fae4a6a51bfd517643d2 100644 --- a/src/main/java/net/minecraft/world/level/block/state/BlockBase.java +++ b/src/main/java/net/minecraft/world/level/block/state/BlockBase.java -@@ -302,6 +302,7 @@ public abstract class BlockBase { +@@ -303,6 +303,7 @@ public abstract class BlockBase { return 0; } diff --git a/patches/server/0168-Config-to-use-infinity-bows-without-arrows.patch b/patches/server/0167-Config-to-use-infinity-bows-without-arrows.patch similarity index 100% rename from patches/server/0168-Config-to-use-infinity-bows-without-arrows.patch rename to patches/server/0167-Config-to-use-infinity-bows-without-arrows.patch diff --git a/patches/server/0167-Fix-PlayerEditBookEvent-not-saving-new-book.patch b/patches/server/0167-Fix-PlayerEditBookEvent-not-saving-new-book.patch deleted file mode 100644 index 94e6b8245..000000000 --- a/patches/server/0167-Fix-PlayerEditBookEvent-not-saving-new-book.patch +++ /dev/null @@ -1,19 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: BillyGalbreath -Date: Mon, 25 Jan 2021 10:22:28 -0600 -Subject: [PATCH] Fix PlayerEditBookEvent not saving new book - - -diff --git a/src/main/java/net/minecraft/server/network/PlayerConnection.java b/src/main/java/net/minecraft/server/network/PlayerConnection.java -index 42f1216db0832b8606e57fc762d5e016450eaf5b..c93fc03d49c467a6db2e55f4999edad3452136a4 100644 ---- a/src/main/java/net/minecraft/server/network/PlayerConnection.java -+++ b/src/main/java/net/minecraft/server/network/PlayerConnection.java -@@ -1210,7 +1210,7 @@ public class PlayerConnection implements PacketListenerPlayIn { - list.stream().map(s -> s = color(s, hasPerm, false)).map(NBTTagString::a).forEach(nbttaglist::add); // Purpur - edit book - ItemStack old = itemstack.cloneItemStack(); // CraftBukkit - itemstack.a("pages", (NBTBase) nbttaglist); -- CraftEventFactory.handleEditBookEvent(player, i, old, itemstack); // CraftBukkit -+ this.player.inventory.setItem(i, CraftEventFactory.handleEditBookEvent(player, i, old, itemstack)); // CraftBukkit // Purpur - } - } - diff --git a/patches/server/0169-Toggle-for-water-sensitive-mob-damage.patch b/patches/server/0168-Toggle-for-water-sensitive-mob-damage.patch similarity index 98% rename from patches/server/0169-Toggle-for-water-sensitive-mob-damage.patch rename to patches/server/0168-Toggle-for-water-sensitive-mob-damage.patch index 768a33d34..cf9f2a1e3 100644 --- a/patches/server/0169-Toggle-for-water-sensitive-mob-damage.patch +++ b/patches/server/0168-Toggle-for-water-sensitive-mob-damage.patch @@ -19,7 +19,7 @@ index 63d93060b350069040876aaacb91c853d674ea7b..e9793954c872baacfe7be80ecf3888e8 } return; diff --git a/src/main/java/net/minecraft/world/entity/EntityLiving.java b/src/main/java/net/minecraft/world/entity/EntityLiving.java -index 1e57358c02e67a6b062149926ada46696da24487..66f1750172df09f1cbb47ca5a679a77a9ccab282 100644 +index ac5b13e943d70cfb982f9e2c8e19ab1e69b6ec43..6ef78c9099a234abce3669a23e32777ec3beaba7 100644 --- a/src/main/java/net/minecraft/world/entity/EntityLiving.java +++ b/src/main/java/net/minecraft/world/entity/EntityLiving.java @@ -2974,6 +2974,7 @@ public abstract class EntityLiving extends Entity { diff --git a/patches/server/0170-Config-to-always-tame-in-Creative.patch b/patches/server/0169-Config-to-always-tame-in-Creative.patch similarity index 100% rename from patches/server/0170-Config-to-always-tame-in-Creative.patch rename to patches/server/0169-Config-to-always-tame-in-Creative.patch diff --git a/patches/server/0171-End-crystal-explosion-options.patch b/patches/server/0170-End-crystal-explosion-options.patch similarity index 100% rename from patches/server/0171-End-crystal-explosion-options.patch rename to patches/server/0170-End-crystal-explosion-options.patch diff --git a/patches/server/0172-Add-unsafe-Entity-serialization-API.patch b/patches/server/0171-Add-unsafe-Entity-serialization-API.patch similarity index 100% rename from patches/server/0172-Add-unsafe-Entity-serialization-API.patch rename to patches/server/0171-Add-unsafe-Entity-serialization-API.patch diff --git a/patches/server/0173-Add-ghast-allow-griefing-option.patch b/patches/server/0172-Add-ghast-allow-griefing-option.patch similarity index 100% rename from patches/server/0173-Add-ghast-allow-griefing-option.patch rename to patches/server/0172-Add-ghast-allow-griefing-option.patch diff --git a/patches/server/0174-Configs-for-if-Wither-Ender-Dragon-can-ride-vehicles.patch b/patches/server/0173-Configs-for-if-Wither-Ender-Dragon-can-ride-vehicles.patch similarity index 100% rename from patches/server/0174-Configs-for-if-Wither-Ender-Dragon-can-ride-vehicles.patch rename to patches/server/0173-Configs-for-if-Wither-Ender-Dragon-can-ride-vehicles.patch diff --git a/patches/server/0175-Dont-run-with-scissors.patch b/patches/server/0174-Dont-run-with-scissors.patch similarity index 96% rename from patches/server/0175-Dont-run-with-scissors.patch rename to patches/server/0174-Dont-run-with-scissors.patch index 30af353ac..84d48e240 100644 --- a/patches/server/0175-Dont-run-with-scissors.patch +++ b/patches/server/0174-Dont-run-with-scissors.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Dont run with scissors! diff --git a/src/main/java/net/minecraft/server/network/PlayerConnection.java b/src/main/java/net/minecraft/server/network/PlayerConnection.java -index c93fc03d49c467a6db2e55f4999edad3452136a4..8359ccf316d292d81c56600887178cea6e33f270 100644 +index da95a9e8870da7002c6ef47fc48ead32f3ab4856..6672858b163aa9d7c51777f9a0a45f701f6e9ac8 100644 --- a/src/main/java/net/minecraft/server/network/PlayerConnection.java +++ b/src/main/java/net/minecraft/server/network/PlayerConnection.java @@ -1533,6 +1533,12 @@ public class PlayerConnection implements PacketListenerPlayIn { diff --git a/patches/server/0176-One-Punch-Man.patch b/patches/server/0175-One-Punch-Man.patch similarity index 97% rename from patches/server/0176-One-Punch-Man.patch rename to patches/server/0175-One-Punch-Man.patch index 444f4e09e..ee63c325c 100644 --- a/patches/server/0176-One-Punch-Man.patch +++ b/patches/server/0175-One-Punch-Man.patch @@ -5,7 +5,7 @@ Subject: [PATCH] One Punch Man! diff --git a/src/main/java/net/minecraft/world/entity/EntityLiving.java b/src/main/java/net/minecraft/world/entity/EntityLiving.java -index 66f1750172df09f1cbb47ca5a679a77a9ccab282..659ccc8075945531ca714c43a034f2d5baa5defb 100644 +index 6ef78c9099a234abce3669a23e32777ec3beaba7..49fefb5f20bda418ae9fcdc238630c5f27b1b859 100644 --- a/src/main/java/net/minecraft/world/entity/EntityLiving.java +++ b/src/main/java/net/minecraft/world/entity/EntityLiving.java @@ -2019,6 +2019,23 @@ public abstract class EntityLiving extends Entity { diff --git a/patches/server/0177-Add-config-for-snow-on-blue-ice.patch b/patches/server/0176-Add-config-for-snow-on-blue-ice.patch similarity index 100% rename from patches/server/0177-Add-config-for-snow-on-blue-ice.patch rename to patches/server/0176-Add-config-for-snow-on-blue-ice.patch diff --git a/patches/server/0178-Configurable-Ender-Pearl-cooldown-damage-and-Endermi.patch b/patches/server/0177-Configurable-Ender-Pearl-cooldown-damage-and-Endermi.patch similarity index 100% rename from patches/server/0178-Configurable-Ender-Pearl-cooldown-damage-and-Endermi.patch rename to patches/server/0177-Configurable-Ender-Pearl-cooldown-damage-and-Endermi.patch diff --git a/patches/server/0179-Config-to-ignore-nearby-mobs-when-sleeping.patch b/patches/server/0178-Config-to-ignore-nearby-mobs-when-sleeping.patch similarity index 100% rename from patches/server/0179-Config-to-ignore-nearby-mobs-when-sleeping.patch rename to patches/server/0178-Config-to-ignore-nearby-mobs-when-sleeping.patch diff --git a/patches/server/0180-Config-for-Enderman-to-aggro-spawned-Endermites.patch b/patches/server/0179-Config-for-Enderman-to-aggro-spawned-Endermites.patch similarity index 100% rename from patches/server/0180-Config-for-Enderman-to-aggro-spawned-Endermites.patch rename to patches/server/0179-Config-for-Enderman-to-aggro-spawned-Endermites.patch diff --git a/patches/server/0181-Config-to-ignore-Dragon-Head-wearers-and-stare-aggro.patch b/patches/server/0180-Config-to-ignore-Dragon-Head-wearers-and-stare-aggro.patch similarity index 100% rename from patches/server/0181-Config-to-ignore-Dragon-Head-wearers-and-stare-aggro.patch rename to patches/server/0180-Config-to-ignore-Dragon-Head-wearers-and-stare-aggro.patch diff --git a/patches/server/0182-Re-enable-timings-by-default.patch b/patches/server/0181-Re-enable-timings-by-default.patch similarity index 100% rename from patches/server/0182-Re-enable-timings-by-default.patch rename to patches/server/0181-Re-enable-timings-by-default.patch diff --git a/patches/server/0183-Tick-fluids-config.patch b/patches/server/0182-Tick-fluids-config.patch similarity index 100% rename from patches/server/0183-Tick-fluids-config.patch rename to patches/server/0182-Tick-fluids-config.patch diff --git a/patches/server/0184-Config-to-disable-Llama-caravans.patch b/patches/server/0183-Config-to-disable-Llama-caravans.patch similarity index 100% rename from patches/server/0184-Config-to-disable-Llama-caravans.patch rename to patches/server/0183-Config-to-disable-Llama-caravans.patch diff --git a/patches/server/0185-Config-to-make-Creepers-explode-on-death.patch b/patches/server/0184-Config-to-make-Creepers-explode-on-death.patch similarity index 100% rename from patches/server/0185-Config-to-make-Creepers-explode-on-death.patch rename to patches/server/0184-Config-to-make-Creepers-explode-on-death.patch diff --git a/patches/server/0186-Configurable-ravager-griefable-blocks-list.patch b/patches/server/0185-Configurable-ravager-griefable-blocks-list.patch similarity index 100% rename from patches/server/0186-Configurable-ravager-griefable-blocks-list.patch rename to patches/server/0185-Configurable-ravager-griefable-blocks-list.patch diff --git a/patches/server/0187-Sneak-to-bulk-process-composter.patch b/patches/server/0186-Sneak-to-bulk-process-composter.patch similarity index 100% rename from patches/server/0187-Sneak-to-bulk-process-composter.patch rename to patches/server/0186-Sneak-to-bulk-process-composter.patch diff --git a/patches/server/0188-Config-for-skipping-night.patch b/patches/server/0187-Config-for-skipping-night.patch similarity index 93% rename from patches/server/0188-Config-for-skipping-night.patch rename to patches/server/0187-Config-for-skipping-night.patch index d876083b2..565fdd2d0 100644 --- a/patches/server/0188-Config-for-skipping-night.patch +++ b/patches/server/0187-Config-for-skipping-night.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Config for skipping night diff --git a/src/main/java/net/minecraft/server/level/WorldServer.java b/src/main/java/net/minecraft/server/level/WorldServer.java -index fc77904699bb75cf55e7ea77a55c8ad4a9412c18..5d8326b465458f1f4eeff9f17ef4fe3f12453225 100644 +index 587bbd1b4cce7cc5ee30471e86c4fe56362b92b8..32b169df6041ede4d8512b471ebc9da40493c99e 100644 --- a/src/main/java/net/minecraft/server/level/WorldServer.java +++ b/src/main/java/net/minecraft/server/level/WorldServer.java -@@ -1026,7 +1026,7 @@ public class WorldServer extends World implements GeneratorAccessSeed { +@@ -1028,7 +1028,7 @@ public class WorldServer extends World implements GeneratorAccessSeed { } // CraftBukkit end diff --git a/patches/server/0189-Add-config-for-villager-trading.patch b/patches/server/0188-Add-config-for-villager-trading.patch similarity index 100% rename from patches/server/0189-Add-config-for-villager-trading.patch rename to patches/server/0188-Add-config-for-villager-trading.patch diff --git a/patches/server/0190-Allow-infinity-on-crossbows.patch b/patches/server/0189-Allow-infinity-on-crossbows.patch similarity index 100% rename from patches/server/0190-Allow-infinity-on-crossbows.patch rename to patches/server/0189-Allow-infinity-on-crossbows.patch diff --git a/patches/server/0191-Drowning-Settings.patch b/patches/server/0190-Drowning-Settings.patch similarity index 97% rename from patches/server/0191-Drowning-Settings.patch rename to patches/server/0190-Drowning-Settings.patch index 09e104fbc..90a2e4a5c 100644 --- a/patches/server/0191-Drowning-Settings.patch +++ b/patches/server/0190-Drowning-Settings.patch @@ -18,7 +18,7 @@ index d321616b7f726f4ff307b46ced9efce6cc20b82f..c20787a20cf6f273092d2b7ef0d7d90a public Iterable bn() { diff --git a/src/main/java/net/minecraft/world/entity/EntityLiving.java b/src/main/java/net/minecraft/world/entity/EntityLiving.java -index 659ccc8075945531ca714c43a034f2d5baa5defb..1d319ad82179ae261738d6e70aac3bbbd3aecae7 100644 +index 49fefb5f20bda418ae9fcdc238630c5f27b1b859..7dbfd2dca4d99fcafc3a2fcd83b39f5d52c24f1c 100644 --- a/src/main/java/net/minecraft/world/entity/EntityLiving.java +++ b/src/main/java/net/minecraft/world/entity/EntityLiving.java @@ -394,7 +394,7 @@ public abstract class EntityLiving extends Entity { diff --git a/patches/server/0192-Break-individual-slabs-when-sneaking.patch b/patches/server/0191-Break-individual-slabs-when-sneaking.patch similarity index 100% rename from patches/server/0192-Break-individual-slabs-when-sneaking.patch rename to patches/server/0191-Break-individual-slabs-when-sneaking.patch diff --git a/patches/server/0193-Config-to-disable-hostile-mob-spawn-on-ice.patch b/patches/server/0192-Config-to-disable-hostile-mob-spawn-on-ice.patch similarity index 100% rename from patches/server/0193-Config-to-disable-hostile-mob-spawn-on-ice.patch rename to patches/server/0192-Config-to-disable-hostile-mob-spawn-on-ice.patch diff --git a/patches/server/0194-Config-to-show-Armor-Stand-arms-on-spawn.patch b/patches/server/0193-Config-to-show-Armor-Stand-arms-on-spawn.patch similarity index 100% rename from patches/server/0194-Config-to-show-Armor-Stand-arms-on-spawn.patch rename to patches/server/0193-Config-to-show-Armor-Stand-arms-on-spawn.patch diff --git a/patches/server/0195-Option-to-make-doors-require-restone.patch b/patches/server/0194-Option-to-make-doors-require-restone.patch similarity index 100% rename from patches/server/0195-Option-to-make-doors-require-restone.patch rename to patches/server/0194-Option-to-make-doors-require-restone.patch diff --git a/patches/server/0196-Config-to-allow-for-unsafe-enchants.patch b/patches/server/0195-Config-to-allow-for-unsafe-enchants.patch similarity index 100% rename from patches/server/0196-Config-to-allow-for-unsafe-enchants.patch rename to patches/server/0195-Config-to-allow-for-unsafe-enchants.patch diff --git a/patches/server/0197-Configurable-sponge-absorption.patch b/patches/server/0196-Configurable-sponge-absorption.patch similarity index 100% rename from patches/server/0197-Configurable-sponge-absorption.patch rename to patches/server/0196-Configurable-sponge-absorption.patch diff --git a/patches/server/0198-Projectile-offset-config.patch b/patches/server/0197-Projectile-offset-config.patch similarity index 100% rename from patches/server/0198-Projectile-offset-config.patch rename to patches/server/0197-Projectile-offset-config.patch diff --git a/patches/server/0199-Config-for-powered-rail-activation-distance.patch b/patches/server/0198-Config-for-powered-rail-activation-distance.patch similarity index 100% rename from patches/server/0199-Config-for-powered-rail-activation-distance.patch rename to patches/server/0198-Config-for-powered-rail-activation-distance.patch diff --git a/subprojects/server.gradle.kts b/subprojects/server.gradle.kts index b4aebc9ec..813508a64 100644 --- a/subprojects/server.gradle.kts +++ b/subprojects/server.gradle.kts @@ -1,3 +1,10 @@ +repositories { + // Airplane libs... + maven("https://jitpack.io") { + content { includeGroupByRegex("com\\.github\\..*") } + } +} + dependencies { implementation("cat.inspiracio", "rhino-js-engine", "1.7.7.1") }