diff --git a/PATCHES.md b/PATCHES.md index fb8d75f4..b71a7e4b 100644 --- a/PATCHES.md +++ b/PATCHES.md @@ -173,9 +173,11 @@ # Patches | server | Fix IndexOutOfBoundsException when sending too many changes | Ivan Pekov | | | server | Fix LightEngineThreaded memory leak | Ivan Pekov | | | server | Fix PlayerEditBookEvent not saving new book | BillyGalbreath | | +| server | Fix chunks refusing to unload at low TPS | Spottedleaf | | | server | Fix cow rotation when shearing mooshroom | William Blake Galbreath | | | server | Fix death message colors | William Blake Galbreath | | | server | Fix exp drop of zombie pigmen (MC-56653) | Phoenix616 | | +| server | Fix incorrect isRealPlayer init | Spottedleaf | | | api | Fix javadoc warnings (missing @param and @return) | BillyGalbreath | | | server | Fix lead fall dmg config | tr7zw | | | server | Fix rotating UP/DOWN CW and CCW | BillyGalbreath | | @@ -325,6 +327,7 @@ # Patches | server | Rewrite the light engine | Spottedleaf | | | server | Ridables | William Blake Galbreath | | | api | Ridables | William Blake Galbreath | | +| server | Send full pos packets for hard colliding entities | Spottedleaf | | | server | Separate lookup locking from state access in UserCache | Spottedleaf | | | server | Set name visible when using a Name Tag on an Armor Stand | jmp | | | server | Short enderman height | William Blake Galbreath | | diff --git a/patches/Airplane/patches/server/0006-Queue-lighting-update-only-once.patch b/patches/Airplane/patches/server/0006-Queue-lighting-update-only-once.patch index 7ae00541..95c5bc84 100644 --- a/patches/Airplane/patches/server/0006-Queue-lighting-update-only-once.patch +++ b/patches/Airplane/patches/server/0006-Queue-lighting-update-only-once.patch @@ -49,10 +49,10 @@ index 9e6381a60b804a957eda5b72582d5545faebcb3e..1da5c7def8b476cf638548b05d3e2015 this.world.getMethodProfiler().enter("customSpawners"); if (flag1) { diff --git a/src/main/java/net/minecraft/server/WorldServer.java b/src/main/java/net/minecraft/server/WorldServer.java -index cb2c429bda81b8c151a50ef3627716fef1e422d0..7e48b44047b09b44b2005e67ea1ef6bb2f2de6bc 100644 +index 307794aebb4ccd4d409013ed485e6defda2149ca..f599f80a543cfd3de97e5f80372ffed6c7bfd9ff 100644 --- a/src/main/java/net/minecraft/server/WorldServer.java +++ b/src/main/java/net/minecraft/server/WorldServer.java -@@ -1019,7 +1019,10 @@ public class WorldServer extends World implements GeneratorAccessSeed { +@@ -1027,7 +1027,10 @@ public class WorldServer extends World implements GeneratorAccessSeed { private final com.destroystokyo.paper.util.math.ThreadUnsafeRandom randomTickRandom = new com.destroystokyo.paper.util.math.ThreadUnsafeRandom(); // Paper end @@ -64,7 +64,7 @@ index cb2c429bda81b8c151a50ef3627716fef1e422d0..7e48b44047b09b44b2005e67ea1ef6bb ChunkCoordIntPair chunkcoordintpair = chunk.getPos(); boolean flag = this.isRaining(); int j = chunkcoordintpair.d(); -@@ -1128,9 +1131,13 @@ public class WorldServer extends World implements GeneratorAccessSeed { +@@ -1136,9 +1139,13 @@ public class WorldServer extends World implements GeneratorAccessSeed { } gameprofilerfiller.exit(); timings.chunkTicksBlocks.stopTiming(); // Paper diff --git a/patches/Airplane/patches/server/0008-Swap-priority-of-checks-in-chunk-ticking.patch b/patches/Airplane/patches/server/0008-Swap-priority-of-checks-in-chunk-ticking.patch index dbe0c73a..169fee6f 100644 --- a/patches/Airplane/patches/server/0008-Swap-priority-of-checks-in-chunk-ticking.patch +++ b/patches/Airplane/patches/server/0008-Swap-priority-of-checks-in-chunk-ticking.patch @@ -23,10 +23,10 @@ You should have received a copy of the GNU General Public License along with this program. If not, see . diff --git a/src/main/java/net/minecraft/server/WorldServer.java b/src/main/java/net/minecraft/server/WorldServer.java -index 7e48b44047b09b44b2005e67ea1ef6bb2f2de6bc..994c1822a4b53552befc64d88e922285715fa31d 100644 +index f599f80a543cfd3de97e5f80372ffed6c7bfd9ff..fdab9a50bc5d433c76fda1501110524792a749c8 100644 --- a/src/main/java/net/minecraft/server/WorldServer.java +++ b/src/main/java/net/minecraft/server/WorldServer.java -@@ -1032,7 +1032,7 @@ public class WorldServer extends World implements GeneratorAccessSeed { +@@ -1040,7 +1040,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 diff --git a/patches/Airplane/patches/server/0010-Optimize-random-calls-in-chunk-ticking.patch b/patches/Airplane/patches/server/0010-Optimize-random-calls-in-chunk-ticking.patch index 30671440..e25c4225 100644 --- a/patches/Airplane/patches/server/0010-Optimize-random-calls-in-chunk-ticking.patch +++ b/patches/Airplane/patches/server/0010-Optimize-random-calls-in-chunk-ticking.patch @@ -77,10 +77,10 @@ index 1da5c7def8b476cf638548b05d3e2015bc372f51..03bcd704e3c08f5b54b124df1583e3cc boolean flag2 = world.ticksPerAnimalSpawns != 0L && worlddata.getTime() % world.ticksPerAnimalSpawns == 0L; // CraftBukkit diff --git a/src/main/java/net/minecraft/server/WorldServer.java b/src/main/java/net/minecraft/server/WorldServer.java -index 994c1822a4b53552befc64d88e922285715fa31d..f3e8e5dafa528075acc76fa2e75907f63438a93d 100644 +index fdab9a50bc5d433c76fda1501110524792a749c8..6dc1f6d7f734b8c769c86109701155ebe9c2f6bd 100644 --- a/src/main/java/net/minecraft/server/WorldServer.java +++ b/src/main/java/net/minecraft/server/WorldServer.java -@@ -1019,6 +1019,8 @@ public class WorldServer extends World implements GeneratorAccessSeed { +@@ -1027,6 +1027,8 @@ public class WorldServer extends World implements GeneratorAccessSeed { private final com.destroystokyo.paper.util.math.ThreadUnsafeRandom randomTickRandom = new com.destroystokyo.paper.util.math.ThreadUnsafeRandom(); // Paper end @@ -89,7 +89,7 @@ index 994c1822a4b53552befc64d88e922285715fa31d..f3e8e5dafa528075acc76fa2e75907f6 // Airplane start - create version of chunk tick that returns a bool for updating lighting public void a(Chunk chunk, int i) { this.abool(chunk, i); } public boolean abool(Chunk chunk, int i) { final int randomTickSpeed = i; // Paper -@@ -1032,7 +1034,7 @@ public class WorldServer extends World implements GeneratorAccessSeed { +@@ -1040,7 +1042,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 @@ -98,7 +98,7 @@ index 994c1822a4b53552befc64d88e922285715fa31d..f3e8e5dafa528075acc76fa2e75907f6 blockposition.setValues(this.a(this.a(j, 0, k, 15))); // Paper if (this.isRainingAt(blockposition)) { DifficultyDamageScaler difficultydamagescaler = this.getDamageScaler(blockposition); -@@ -1062,7 +1064,7 @@ public class WorldServer extends World implements GeneratorAccessSeed { +@@ -1070,7 +1072,7 @@ public class WorldServer extends World implements GeneratorAccessSeed { } gameprofilerfiller.exitEnter("iceandsnow"); diff --git a/patches/Airplane/patches/server/0016-Reduce-memory-allocations.patch b/patches/Airplane/patches/server/0016-Reduce-memory-allocations.patch index c43e4581..f755071d 100644 --- a/patches/Airplane/patches/server/0016-Reduce-memory-allocations.patch +++ b/patches/Airplane/patches/server/0016-Reduce-memory-allocations.patch @@ -56,7 +56,7 @@ index 631eb682e81e30d2a937fd1eafccd8a9ab82d21e..dc07376845f84ea949a2153cb75d2cd9 return (EntityTypes) IRegistry.a((IRegistry) IRegistry.ENTITY_TYPE, s, (Object) entitytypes_builder.a(s)); } diff --git a/src/main/java/net/minecraft/server/PlayerChunkMap.java b/src/main/java/net/minecraft/server/PlayerChunkMap.java -index a42571cfd2c9c80df27e59db832cb64c2a64e141..c5546838187e3dc0d752e69c1eafa0dbc3804b0c 100644 +index 2c2becef8b56d7e5e998976222df85d2c8516c43..cde7d0e641b2e1e8e6a4ce9510a996343d62a88d 100644 --- a/src/main/java/net/minecraft/server/PlayerChunkMap.java +++ b/src/main/java/net/minecraft/server/PlayerChunkMap.java @@ -638,7 +638,9 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d { @@ -91,7 +91,7 @@ index a42571cfd2c9c80df27e59db832cb64c2a64e141..c5546838187e3dc0d752e69c1eafa0db return Math.max(Math.abs(k), Math.abs(l)); } -@@ -2498,11 +2504,17 @@ Sections go from 0..16. Now whenever a section is not empty, it can potentially +@@ -2496,11 +2502,17 @@ Sections go from 0..16. Now whenever a section is not empty, it can potentially boolean flag1 = this.tracker.attachedToPlayer; if (!flag1) { @@ -111,7 +111,7 @@ index a42571cfd2c9c80df27e59db832cb64c2a64e141..c5546838187e3dc0d752e69c1eafa0db } } -@@ -2532,8 +2544,10 @@ Sections go from 0..16. Now whenever a section is not empty, it can potentially +@@ -2530,8 +2542,10 @@ Sections go from 0..16. Now whenever a section is not empty, it can potentially } private int b() { @@ -123,7 +123,7 @@ index a42571cfd2c9c80df27e59db832cb64c2a64e141..c5546838187e3dc0d752e69c1eafa0db Iterator iterator = collection.iterator(); while (iterator.hasNext()) { -@@ -2545,6 +2559,8 @@ Sections go from 0..16. Now whenever a section is not empty, it can potentially +@@ -2543,6 +2557,8 @@ Sections go from 0..16. Now whenever a section is not empty, it can potentially i = j; } } @@ -160,10 +160,10 @@ index 6e6059daba05d7ce3aabeed85cc0e0d2daa04f92..6e4c7a9b32c9e8057db3cbcead0b75d8 // Paper start - Prevent armor stands from doing entity lookups @Override diff --git a/src/main/java/net/minecraft/server/WorldServer.java b/src/main/java/net/minecraft/server/WorldServer.java -index f3e8e5dafa528075acc76fa2e75907f63438a93d..4d47cca6db7a771677c31ade9425ed3ad83393ea 100644 +index 6dc1f6d7f734b8c769c86109701155ebe9c2f6bd..2289c92c8933bfa0f382167fa5790a4ea17b7c75 100644 --- a/src/main/java/net/minecraft/server/WorldServer.java +++ b/src/main/java/net/minecraft/server/WorldServer.java -@@ -907,7 +907,28 @@ public class WorldServer extends World implements GeneratorAccessSeed { +@@ -915,7 +915,28 @@ public class WorldServer extends World implements GeneratorAccessSeed { gameprofilerfiller.enter("tick"); if (!entity.dead && !(entity instanceof EntityComplexPart)) { @@ -192,7 +192,7 @@ index f3e8e5dafa528075acc76fa2e75907f63438a93d..4d47cca6db7a771677c31ade9425ed3a } gameprofilerfiller.exit(); -@@ -1278,9 +1299,14 @@ public class WorldServer extends World implements GeneratorAccessSeed { +@@ -1286,9 +1307,14 @@ public class WorldServer extends World implements GeneratorAccessSeed { ++entity.ticksLived; GameProfilerFiller gameprofilerfiller = this.getMethodProfiler(); diff --git a/patches/Purpur/patches/server/0008-AFK-API.patch b/patches/Purpur/patches/server/0008-AFK-API.patch index 8ca54cc8..75e6e300 100644 --- a/patches/Purpur/patches/server/0008-AFK-API.patch +++ b/patches/Purpur/patches/server/0008-AFK-API.patch @@ -84,7 +84,7 @@ index 173a210392d71cdfc551f095dc0d9c9040d22d3f..7d7a512ad752e15fbe0edce47da1da76 return this.serverStatisticManager; } diff --git a/src/main/java/net/minecraft/server/IEntityAccess.java b/src/main/java/net/minecraft/server/IEntityAccess.java -index cbaf18af1066e8bde10293bba5eb3060bae1e66f..0c98a436021cbdedba5352073b1f8bf9852298eb 100644 +index 93f2ac996904ddefed04704e554209d047faa59f..b1a546c9ef91169591ed5a71ac1c97dbc84afc03 100644 --- a/src/main/java/net/minecraft/server/IEntityAccess.java +++ b/src/main/java/net/minecraft/server/IEntityAccess.java @@ -174,28 +174,18 @@ public interface IEntityAccess { @@ -149,7 +149,7 @@ index b5e1a860a2569d7668330827614d221b60f3fc78..5f85a1d513f4fdc21b64e1a2b6882e33 // Paper start public static final Predicate affectsSpawning = (entity) -> { diff --git a/src/main/java/net/minecraft/server/PlayerConnection.java b/src/main/java/net/minecraft/server/PlayerConnection.java -index 4058c1f7ada7d0c9e4ba73a0073b4f94bf410a8f..caf9ce94a7cb6154981d42953c81b588b19e3814 100644 +index 4185ec46435ddf48d9e25c4d71ac4e14eb6301cf..1d810a9b23d236493db121dde92c7ebce25a25fe 100644 --- a/src/main/java/net/minecraft/server/PlayerConnection.java +++ b/src/main/java/net/minecraft/server/PlayerConnection.java @@ -250,6 +250,12 @@ public class PlayerConnection implements PacketListenerPlayIn { @@ -174,7 +174,7 @@ index 4058c1f7ada7d0c9e4ba73a0073b4f94bf410a8f..caf9ce94a7cb6154981d42953c81b588 // Skip the first time we do this if (true) { // Spigot - don't skip any move events Location oldTo = to.clone(); -@@ -1228,7 +1236,7 @@ public class PlayerConnection implements PacketListenerPlayIn { +@@ -1253,7 +1261,7 @@ public class PlayerConnection implements PacketListenerPlayIn { if (!this.player.H() && d11 > org.spigotmc.SpigotConfig.movedWronglyThreshold && !this.player.isSleeping() && !this.player.playerInteractManager.isCreative() && this.player.playerInteractManager.getGameMode() != EnumGamemode.SPECTATOR) { // Spigot flag1 = true; // Tuinity - diff on change, this should be moved wrongly @@ -183,7 +183,7 @@ index 4058c1f7ada7d0c9e4ba73a0073b4f94bf410a8f..caf9ce94a7cb6154981d42953c81b588 } this.player.setLocation(d4, d5, d6, f, f1); -@@ -1278,6 +1286,8 @@ public class PlayerConnection implements PacketListenerPlayIn { +@@ -1303,6 +1311,8 @@ public class PlayerConnection implements PacketListenerPlayIn { this.lastYaw = to.getYaw(); this.lastPitch = to.getPitch(); @@ -193,10 +193,10 @@ index 4058c1f7ada7d0c9e4ba73a0073b4f94bf410a8f..caf9ce94a7cb6154981d42953c81b588 if (from.getX() != Double.MAX_VALUE) { Location oldTo = to.clone(); diff --git a/src/main/java/net/minecraft/server/WorldServer.java b/src/main/java/net/minecraft/server/WorldServer.java -index 9c11a6ba0384baafaec1403a6a7c3f894d5cd7b3..e99c3ad507f1381c9aa495052d2014ba8b7e0750 100644 +index 9a8a1e05a60bca77adc904017ae70ef5f629df0b..cc1182be1f9b01ab5d8e2499f7f15ad8798de3d3 100644 --- a/src/main/java/net/minecraft/server/WorldServer.java +++ b/src/main/java/net/minecraft/server/WorldServer.java -@@ -782,7 +782,7 @@ public class WorldServer extends World implements GeneratorAccessSeed { +@@ -790,7 +790,7 @@ public class WorldServer extends World implements GeneratorAccessSeed { // CraftBukkit end if (this.everyoneSleeping && this.players.stream().noneMatch((entityplayer) -> { @@ -205,7 +205,7 @@ index 9c11a6ba0384baafaec1403a6a7c3f894d5cd7b3..e99c3ad507f1381c9aa495052d2014ba })) { // CraftBukkit start long l = this.worldData.getDayTime() + 24000L; -@@ -1119,7 +1119,7 @@ public class WorldServer extends World implements GeneratorAccessSeed { +@@ -1127,7 +1127,7 @@ public class WorldServer extends World implements GeneratorAccessSeed { while (iterator.hasNext()) { EntityPlayer entityplayer = (EntityPlayer) iterator.next(); diff --git a/patches/Purpur/patches/server/0016-Player-invulnerabilities.patch b/patches/Purpur/patches/server/0016-Player-invulnerabilities.patch index 2a547c5e..3425989b 100644 --- a/patches/Purpur/patches/server/0016-Player-invulnerabilities.patch +++ b/patches/Purpur/patches/server/0016-Player-invulnerabilities.patch @@ -67,10 +67,10 @@ index 7d7a512ad752e15fbe0edce47da1da76c01df3b3..9b09d68435290add2781a72e5bc62ce5 public Scoreboard getScoreboard() { return getBukkitEntity().getScoreboard().getHandle(); diff --git a/src/main/java/net/minecraft/server/PlayerConnection.java b/src/main/java/net/minecraft/server/PlayerConnection.java -index caf9ce94a7cb6154981d42953c81b588b19e3814..e833447073585ff97f8ab3a95caea8866fcc24e2 100644 +index 1d810a9b23d236493db121dde92c7ebce25a25fe..218ebc7befca683607b0b9863384a5b5d6bd3a2f 100644 --- a/src/main/java/net/minecraft/server/PlayerConnection.java +++ b/src/main/java/net/minecraft/server/PlayerConnection.java -@@ -1708,6 +1708,7 @@ public class PlayerConnection implements PacketListenerPlayIn { +@@ -1733,6 +1733,7 @@ public class PlayerConnection implements PacketListenerPlayIn { PlayerConnectionUtils.ensureMainThread(packetplayinresourcepackstatus, this, this.player.getWorldServer()); // Paper start PlayerResourcePackStatusEvent.Status packStatus = PlayerResourcePackStatusEvent.Status.values()[packetplayinresourcepackstatus.status.ordinal()]; @@ -79,10 +79,10 @@ index caf9ce94a7cb6154981d42953c81b588b19e3814..e833447073585ff97f8ab3a95caea886 this.server.getPluginManager().callEvent(new PlayerResourcePackStatusEvent(getPlayer(), packStatus)); // Paper end diff --git a/src/main/java/net/minecraft/server/PlayerList.java b/src/main/java/net/minecraft/server/PlayerList.java -index 1eb44877e7384ae0a028a12b832684126b8d50ec..5b0fdcf5190e4ab2af249a5a0952b66d52f08751 100644 +index eabd1aa2b740bcb6db40be300cd6daf59674fa3f..46043d3a4f4056fff93b867c65d363ac1277db7a 100644 --- a/src/main/java/net/minecraft/server/PlayerList.java +++ b/src/main/java/net/minecraft/server/PlayerList.java -@@ -914,6 +914,8 @@ public abstract class PlayerList { +@@ -915,6 +915,8 @@ public abstract class PlayerList { } // Paper end diff --git a/patches/Purpur/patches/server/0019-Alternative-Keepalive-Handling.patch b/patches/Purpur/patches/server/0019-Alternative-Keepalive-Handling.patch index 5cb0efbd..fc0b83b8 100644 --- a/patches/Purpur/patches/server/0019-Alternative-Keepalive-Handling.patch +++ b/patches/Purpur/patches/server/0019-Alternative-Keepalive-Handling.patch @@ -17,7 +17,7 @@ index 8e93f1540ba5f995489c1fbcec70d10b011cd9c3..470f92c4fb0919d052b19acff8dff533 return this.a; } diff --git a/src/main/java/net/minecraft/server/PlayerConnection.java b/src/main/java/net/minecraft/server/PlayerConnection.java -index e833447073585ff97f8ab3a95caea8866fcc24e2..fdd517290a0b306dff9c0fffadc424b59b8504f3 100644 +index 218ebc7befca683607b0b9863384a5b5d6bd3a2f..dc93f0c8f65e2a796604b8e4488c1b3bd155b64e 100644 --- a/src/main/java/net/minecraft/server/PlayerConnection.java +++ b/src/main/java/net/minecraft/server/PlayerConnection.java @@ -84,6 +84,7 @@ public class PlayerConnection implements PacketListenerPlayIn { @@ -50,7 +50,7 @@ index e833447073585ff97f8ab3a95caea8866fcc24e2..fdd517290a0b306dff9c0fffadc424b5 if (this.isPendingPing()) { if (!this.processedDisconnect && elapsedTime >= KEEPALIVE_LIMIT) { // check keepalive limit, don't fire if already disconnected PlayerConnection.LOGGER.warn("{} was kicked due to keepalive timeout!", this.player.getName()); // more info -@@ -2882,6 +2898,16 @@ public class PlayerConnection implements PacketListenerPlayIn { +@@ -2907,6 +2923,16 @@ public class PlayerConnection implements PacketListenerPlayIn { @Override public void a(PacketPlayInKeepAlive packetplayinkeepalive) { diff --git a/patches/Purpur/patches/server/0027-Zombie-horse-naturally-spawn.patch b/patches/Purpur/patches/server/0027-Zombie-horse-naturally-spawn.patch index 5c372d5b..b1ff8a32 100644 --- a/patches/Purpur/patches/server/0027-Zombie-horse-naturally-spawn.patch +++ b/patches/Purpur/patches/server/0027-Zombie-horse-naturally-spawn.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Zombie horse naturally spawn diff --git a/src/main/java/net/minecraft/server/WorldServer.java b/src/main/java/net/minecraft/server/WorldServer.java -index e99c3ad507f1381c9aa495052d2014ba8b7e0750..49ae8bd50810473d121e786a06a813b777909904 100644 +index cc1182be1f9b01ab5d8e2499f7f15ad8798de3d3..30388fca6d3db797825949642d372a4091cc48c2 100644 --- a/src/main/java/net/minecraft/server/WorldServer.java +++ b/src/main/java/net/minecraft/server/WorldServer.java -@@ -996,12 +996,18 @@ public class WorldServer extends World implements GeneratorAccessSeed { +@@ -1004,12 +1004,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/Purpur/patches/server/0032-Dont-send-useless-entity-packets.patch b/patches/Purpur/patches/server/0032-Dont-send-useless-entity-packets.patch index 13089abe..e282b094 100644 --- a/patches/Purpur/patches/server/0032-Dont-send-useless-entity-packets.patch +++ b/patches/Purpur/patches/server/0032-Dont-send-useless-entity-packets.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Dont send useless entity packets diff --git a/src/main/java/net/minecraft/server/EntityTrackerEntry.java b/src/main/java/net/minecraft/server/EntityTrackerEntry.java -index 526c1419af7bd0b6098a8f9a0a24a64ba61c6ebc..81a82a1fa811956a8b5233677981c2d3783b34fb 100644 +index 81869215876d10a84ab27c0e6f41963c1346fd1c..f3b37f5704d752d1ec4d4d916690907dace67183 100644 --- a/src/main/java/net/minecraft/server/EntityTrackerEntry.java +++ b/src/main/java/net/minecraft/server/EntityTrackerEntry.java @@ -172,6 +172,7 @@ public class EntityTrackerEntry { diff --git a/patches/Purpur/patches/server/0037-Cat-spawning-options.patch b/patches/Purpur/patches/server/0037-Cat-spawning-options.patch index 87be9d47..e24ed8be 100644 --- a/patches/Purpur/patches/server/0037-Cat-spawning-options.patch +++ b/patches/Purpur/patches/server/0037-Cat-spawning-options.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Cat spawning options diff --git a/src/main/java/net/minecraft/server/IEntityAccess.java b/src/main/java/net/minecraft/server/IEntityAccess.java -index 0c98a436021cbdedba5352073b1f8bf9852298eb..08778cc0de9b1ffefc52d12d31403c33c50ddb2f 100644 +index b1a546c9ef91169591ed5a71ac1c97dbc84afc03..6edff6d8ce67f64420a845e992339dadf53641f8 100644 --- a/src/main/java/net/minecraft/server/IEntityAccess.java +++ b/src/main/java/net/minecraft/server/IEntityAccess.java @@ -47,6 +47,7 @@ public interface IEntityAccess { diff --git a/patches/Purpur/patches/server/0045-Signs-allow-color-codes.patch b/patches/Purpur/patches/server/0045-Signs-allow-color-codes.patch index f4447235..23a4168e 100644 --- a/patches/Purpur/patches/server/0045-Signs-allow-color-codes.patch +++ b/patches/Purpur/patches/server/0045-Signs-allow-color-codes.patch @@ -17,10 +17,10 @@ index 9b09d68435290add2781a72e5bc62ce50a79e39f..1d69c07eb3890e61383928433db727bd this.playerConnection.sendPacket(new PacketPlayOutOpenSignEditor(tileentitysign.getPosition())); } diff --git a/src/main/java/net/minecraft/server/PlayerConnection.java b/src/main/java/net/minecraft/server/PlayerConnection.java -index fdd517290a0b306dff9c0fffadc424b59b8504f3..3fca11948fad36b6adec55883d365e58a17925fa 100644 +index dc93f0c8f65e2a796604b8e4488c1b3bd155b64e..eaddc933261aeccc963ac0f35eebb387c16ae6a0 100644 --- a/src/main/java/net/minecraft/server/PlayerConnection.java +++ b/src/main/java/net/minecraft/server/PlayerConnection.java -@@ -2879,6 +2879,14 @@ public class PlayerConnection implements PacketListenerPlayIn { +@@ -2904,6 +2904,14 @@ public class PlayerConnection implements PacketListenerPlayIn { } } // Paper end diff --git a/patches/Purpur/patches/server/0054-Add-permission-for-F3-N-debug.patch b/patches/Purpur/patches/server/0054-Add-permission-for-F3-N-debug.patch index 89cb0bf3..8e1e10df 100644 --- a/patches/Purpur/patches/server/0054-Add-permission-for-F3-N-debug.patch +++ b/patches/Purpur/patches/server/0054-Add-permission-for-F3-N-debug.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add permission for F3+N debug diff --git a/src/main/java/net/minecraft/server/PlayerList.java b/src/main/java/net/minecraft/server/PlayerList.java -index 5b0fdcf5190e4ab2af249a5a0952b66d52f08751..3c19e931ad7d5330f1c77ef65aaa5858a001e4df 100644 +index 46043d3a4f4056fff93b867c65d363ac1277db7a..726e3292318f6a0de474f68fe30da4a954c7600a 100644 --- a/src/main/java/net/minecraft/server/PlayerList.java +++ b/src/main/java/net/minecraft/server/PlayerList.java -@@ -1073,6 +1073,7 @@ public abstract class PlayerList { +@@ -1074,6 +1074,7 @@ public abstract class PlayerList { } else { b0 = (byte) (24 + i); } diff --git a/patches/Purpur/patches/server/0075-Item-entity-immunities.patch b/patches/Purpur/patches/server/0075-Item-entity-immunities.patch index f469bbed..75d4ed80 100644 --- a/patches/Purpur/patches/server/0075-Item-entity-immunities.patch +++ b/patches/Purpur/patches/server/0075-Item-entity-immunities.patch @@ -74,7 +74,7 @@ index d99cecc4075338d7b8f154ab94d8ac04190ba371..ec37d2c3b0393c43097bdfc6064ebe3a + // Purpur end } diff --git a/src/main/java/net/minecraft/server/EntityTrackerEntry.java b/src/main/java/net/minecraft/server/EntityTrackerEntry.java -index 81a82a1fa811956a8b5233677981c2d3783b34fb..a9d60e5dc2f3b38a192a68d79bcf78e4873664a2 100644 +index f3b37f5704d752d1ec4d4d916690907dace67183..1cae524fe4248370f6f6967327cb4a463b5f19fc 100644 --- a/src/main/java/net/minecraft/server/EntityTrackerEntry.java +++ b/src/main/java/net/minecraft/server/EntityTrackerEntry.java @@ -106,6 +106,15 @@ public class EntityTrackerEntry { diff --git a/patches/Purpur/patches/server/0083-Allow-color-codes-in-books.patch b/patches/Purpur/patches/server/0083-Allow-color-codes-in-books.patch index 9192e913..27c0a671 100644 --- a/patches/Purpur/patches/server/0083-Allow-color-codes-in-books.patch +++ b/patches/Purpur/patches/server/0083-Allow-color-codes-in-books.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Allow color codes in books diff --git a/src/main/java/net/minecraft/server/PlayerConnection.java b/src/main/java/net/minecraft/server/PlayerConnection.java -index 3fca11948fad36b6adec55883d365e58a17925fa..ffccdc3bf1d28836f4fc2772ebfde843415ea232 100644 +index eaddc933261aeccc963ac0f35eebb387c16ae6a0..67fa3bd958876abc39c46d9e517551836b0e86ed 100644 --- a/src/main/java/net/minecraft/server/PlayerConnection.java +++ b/src/main/java/net/minecraft/server/PlayerConnection.java -@@ -1029,7 +1029,8 @@ public class PlayerConnection implements PacketListenerPlayIn { +@@ -1054,7 +1054,8 @@ public class PlayerConnection implements PacketListenerPlayIn { if (itemstack.getItem() == Items.WRITABLE_BOOK) { NBTTagList nbttaglist = new NBTTagList(); @@ -18,7 +18,7 @@ index 3fca11948fad36b6adec55883d365e58a17925fa..ffccdc3bf1d28836f4fc2772ebfde843 ItemStack old = itemstack.cloneItemStack(); // CraftBukkit itemstack.a("pages", (NBTBase) nbttaglist); CraftEventFactory.handleEditBookEvent(player, i, old, itemstack); // CraftBukkit -@@ -1047,13 +1048,14 @@ public class PlayerConnection implements PacketListenerPlayIn { +@@ -1072,13 +1073,14 @@ public class PlayerConnection implements PacketListenerPlayIn { itemstack1.setTag(nbttagcompound.clone()); } @@ -35,7 +35,7 @@ index 3fca11948fad36b6adec55883d365e58a17925fa..ffccdc3bf1d28836f4fc2772ebfde843 ChatComponentText chatcomponenttext = new ChatComponentText(s1); String s2 = IChatBaseComponent.ChatSerializer.a((IChatBaseComponent) chatcomponenttext); -@@ -1065,6 +1067,16 @@ public class PlayerConnection implements PacketListenerPlayIn { +@@ -1090,6 +1092,16 @@ public class PlayerConnection implements PacketListenerPlayIn { } } diff --git a/patches/Purpur/patches/server/0084-Entity-lifespan.patch b/patches/Purpur/patches/server/0084-Entity-lifespan.patch index a24f9b47..d5afcdd8 100644 --- a/patches/Purpur/patches/server/0084-Entity-lifespan.patch +++ b/patches/Purpur/patches/server/0084-Entity-lifespan.patch @@ -92,10 +92,10 @@ index 21f94651fcb47103b12806d456417882e7f84dcd..fcc247e86992d1e1a94438ee4f0a7018 } diff --git a/src/main/java/net/minecraft/server/PlayerConnection.java b/src/main/java/net/minecraft/server/PlayerConnection.java -index ffccdc3bf1d28836f4fc2772ebfde843415ea232..8932f4854d9fc52fb2ec66a748e640dfd8806461 100644 +index 67fa3bd958876abc39c46d9e517551836b0e86ed..94353290087df17e441dba8fe8999ad558652cda 100644 --- a/src/main/java/net/minecraft/server/PlayerConnection.java +++ b/src/main/java/net/minecraft/server/PlayerConnection.java -@@ -2271,6 +2271,7 @@ public class PlayerConnection implements PacketListenerPlayIn { +@@ -2296,6 +2296,7 @@ public class PlayerConnection implements PacketListenerPlayIn { boolean triggerLeashUpdate = itemInHand != null && itemInHand.getItem() == Items.LEAD && entity instanceof EntityInsentient; Item origItem = this.player.inventory.getItemInHand() == null ? null : this.player.inventory.getItemInHand().getItem(); PlayerInteractEntityEvent event; diff --git a/patches/Purpur/patches/server/0094-Duplicate-paper-s-vanilla-scoreboard-colors-patch-to.patch b/patches/Purpur/patches/server/0094-Duplicate-paper-s-vanilla-scoreboard-colors-patch-to.patch index b5f43b10..d5074167 100644 --- a/patches/Purpur/patches/server/0094-Duplicate-paper-s-vanilla-scoreboard-colors-patch-to.patch +++ b/patches/Purpur/patches/server/0094-Duplicate-paper-s-vanilla-scoreboard-colors-patch-to.patch @@ -6,10 +6,10 @@ Subject: [PATCH] Duplicate paper's vanilla scoreboard colors patch to sync diff --git a/src/main/java/net/minecraft/server/PlayerConnection.java b/src/main/java/net/minecraft/server/PlayerConnection.java -index 8932f4854d9fc52fb2ec66a748e640dfd8806461..eff58bba46e5cb4bd412fcb65e293d5b9eb58aba 100644 +index 94353290087df17e441dba8fe8999ad558652cda..05f2cc5904f196c70e8e83625810673f6110aba0 100644 --- a/src/main/java/net/minecraft/server/PlayerConnection.java +++ b/src/main/java/net/minecraft/server/PlayerConnection.java -@@ -2030,7 +2030,15 @@ public class PlayerConnection implements PacketListenerPlayIn { +@@ -2055,7 +2055,15 @@ public class PlayerConnection implements PacketListenerPlayIn { return null; } @@ -26,7 +26,7 @@ index 8932f4854d9fc52fb2ec66a748e640dfd8806461..eff58bba46e5cb4bd412fcb65e293d5b PlayerConnection.this.minecraftServer.console.sendMessage(message); if (((LazyPlayerSet) queueEvent.getRecipients()).isLazy()) { for (Object player : PlayerConnection.this.minecraftServer.getPlayerList().players) { -@@ -2063,7 +2071,7 @@ public class PlayerConnection implements PacketListenerPlayIn { +@@ -2088,7 +2096,7 @@ public class PlayerConnection implements PacketListenerPlayIn { // Paper Start - (Meh) Support for vanilla world scoreboard name coloring String displayName = event.getPlayer().getDisplayName(); if (this.player.getWorld().paperConfig.useVanillaScoreboardColoring) { diff --git a/patches/Purpur/patches/server/0095-Populator-seed-controls.patch b/patches/Purpur/patches/server/0095-Populator-seed-controls.patch index f721d6a0..159b14f7 100644 --- a/patches/Purpur/patches/server/0095-Populator-seed-controls.patch +++ b/patches/Purpur/patches/server/0095-Populator-seed-controls.patch @@ -18,7 +18,7 @@ index dae2e5d70756c5b61163d57099b65f7e415b288c..55b67f1057224101272f9d6023a93872 } final Object val = config.get(key); diff --git a/src/main/java/com/tuinity/tuinity/config/TuinityConfig.java b/src/main/java/com/tuinity/tuinity/config/TuinityConfig.java -index ceeb515f4528551659598d9999917f8596e3eded..274b93dce71d630107c2647a045ab28e3eec58c4 100644 +index 0959aa6855a150b121b9b75885216c46b151179e..b181b22cdd78f9ddeea38f315a5dc856134d1c58 100644 --- a/src/main/java/com/tuinity/tuinity/config/TuinityConfig.java +++ b/src/main/java/com/tuinity/tuinity/config/TuinityConfig.java @@ -1,5 +1,6 @@ @@ -28,7 +28,7 @@ index ceeb515f4528551659598d9999917f8596e3eded..274b93dce71d630107c2647a045ab28e import com.destroystokyo.paper.util.SneakyThrow; import net.minecraft.server.MinecraftServer; import net.minecraft.server.TicketType; -@@ -376,6 +377,19 @@ public final class TuinityConfig { +@@ -382,6 +383,19 @@ public final class TuinityConfig { this.spawnLimitAmbient = this.getInt(path + ".ambient", -1); } diff --git a/patches/Purpur/patches/server/0100-Add-no-tick-block-list.patch b/patches/Purpur/patches/server/0100-Add-no-tick-block-list.patch index f99fbf72..6444e548 100644 --- a/patches/Purpur/patches/server/0100-Add-no-tick-block-list.patch +++ b/patches/Purpur/patches/server/0100-Add-no-tick-block-list.patch @@ -22,7 +22,7 @@ index 829d4a7508e1656dbdc912096b7eafcf30cbb5b2..6aea156d7c7a9ca8a357aad6a6781d72 } diff --git a/src/main/java/net/minecraft/server/WorldServer.java b/src/main/java/net/minecraft/server/WorldServer.java -index 49ae8bd50810473d121e786a06a813b777909904..c92f3043f6993e569cf83ac69682b85ef178d622 100644 +index 30388fca6d3db797825949642d372a4091cc48c2..138f5c577391980f2b218b25a4251ac853bb9bad 100644 --- a/src/main/java/net/minecraft/server/WorldServer.java +++ b/src/main/java/net/minecraft/server/WorldServer.java @@ -321,14 +321,14 @@ public class WorldServer extends World implements GeneratorAccessSeed { diff --git a/patches/Purpur/patches/server/0104-Ridables.patch b/patches/Purpur/patches/server/0104-Ridables.patch index 46e4f09e..8ae326a2 100644 --- a/patches/Purpur/patches/server/0104-Ridables.patch +++ b/patches/Purpur/patches/server/0104-Ridables.patch @@ -4975,10 +4975,10 @@ index 0000000000000000000000000000000000000000..44929182dfd7ad847d9657c324f440cb + } +} diff --git a/src/main/java/net/minecraft/server/PlayerConnection.java b/src/main/java/net/minecraft/server/PlayerConnection.java -index eff58bba46e5cb4bd412fcb65e293d5b9eb58aba..e9485684b7d5ddde72fc388d51cfef679178bad3 100644 +index 05f2cc5904f196c70e8e83625810673f6110aba0..ef222cdfdfb49dcdcb0e3bf6f6cabc765be003cc 100644 --- a/src/main/java/net/minecraft/server/PlayerConnection.java +++ b/src/main/java/net/minecraft/server/PlayerConnection.java -@@ -2288,6 +2288,8 @@ public class PlayerConnection implements PacketListenerPlayIn { +@@ -2313,6 +2313,8 @@ public class PlayerConnection implements PacketListenerPlayIn { } this.server.getPluginManager().callEvent(event); @@ -5043,7 +5043,7 @@ index 1ac2e9f373ae5b4250ff9faf726a962a739d6faf..97cc98af100edfad82668200759a5eed // Purpur end } diff --git a/src/main/java/net/minecraft/server/WorldServer.java b/src/main/java/net/minecraft/server/WorldServer.java -index c92f3043f6993e569cf83ac69682b85ef178d622..5a6aace070e64b6db315d766d16773c408de638e 100644 +index 138f5c577391980f2b218b25a4251ac853bb9bad..c451e71601fc48294f9161ca5ef8442d31ad96f7 100644 --- a/src/main/java/net/minecraft/server/WorldServer.java +++ b/src/main/java/net/minecraft/server/WorldServer.java @@ -102,6 +102,7 @@ public class WorldServer extends World implements GeneratorAccessSeed { diff --git a/patches/Purpur/patches/server/0110-Allow-toggling-special-MobSpawners-per-world.patch b/patches/Purpur/patches/server/0110-Allow-toggling-special-MobSpawners-per-world.patch index 44a21031..07c223f4 100644 --- a/patches/Purpur/patches/server/0110-Allow-toggling-special-MobSpawners-per-world.patch +++ b/patches/Purpur/patches/server/0110-Allow-toggling-special-MobSpawners-per-world.patch @@ -42,7 +42,7 @@ index 97cc98af100edfad82668200759a5eed8fc67558..ded92fe7c7871bae6e9741747a67636d this.generator = gen; this.world = new CraftWorld((WorldServer) this, gen, env); diff --git a/src/main/java/net/minecraft/server/WorldServer.java b/src/main/java/net/minecraft/server/WorldServer.java -index 5a6aace070e64b6db315d766d16773c408de638e..ded19d1773237eaf51f72ce93a6794db8f56d160 100644 +index c451e71601fc48294f9161ca5ef8442d31ad96f7..02cbbf11a2b71573f50aac6fdfaa6643c18832bf 100644 --- a/src/main/java/net/minecraft/server/WorldServer.java +++ b/src/main/java/net/minecraft/server/WorldServer.java @@ -339,7 +339,24 @@ public class WorldServer extends World implements GeneratorAccessSeed { diff --git a/patches/Purpur/patches/server/0120-Configurable-daylight-cycle.patch b/patches/Purpur/patches/server/0120-Configurable-daylight-cycle.patch index 0b86873c..626ebb0f 100644 --- a/patches/Purpur/patches/server/0120-Configurable-daylight-cycle.patch +++ b/patches/Purpur/patches/server/0120-Configurable-daylight-cycle.patch @@ -18,7 +18,7 @@ index 1b9b43ee696575d986c25cafec07d863acb951a7..e837db171545ceacbc84a2b360cf0d95 public PacketPlayOutUpdateTime() {} diff --git a/src/main/java/net/minecraft/server/WorldServer.java b/src/main/java/net/minecraft/server/WorldServer.java -index ded19d1773237eaf51f72ce93a6794db8f56d160..cb2c429bda81b8c151a50ef3627716fef1e422d0 100644 +index 02cbbf11a2b71573f50aac6fdfaa6643c18832bf..307794aebb4ccd4d409013ed485e6defda2149ca 100644 --- a/src/main/java/net/minecraft/server/WorldServer.java +++ b/src/main/java/net/minecraft/server/WorldServer.java @@ -94,6 +94,7 @@ public class WorldServer extends World implements GeneratorAccessSeed { @@ -37,7 +37,7 @@ index ded19d1773237eaf51f72ce93a6794db8f56d160..cb2c429bda81b8c151a50ef3627716fe } // Tuinity start - optimise collision -@@ -964,7 +966,21 @@ public class WorldServer extends World implements GeneratorAccessSeed { +@@ -972,7 +974,21 @@ public class WorldServer extends World implements GeneratorAccessSeed { this.nextTickListBlock.nextTick(); // Paper this.nextTickListFluid.nextTick(); // Paper this.worldDataServer.u().a(this.server, i); @@ -60,7 +60,7 @@ index ded19d1773237eaf51f72ce93a6794db8f56d160..cb2c429bda81b8c151a50ef3627716fe this.setDayTime(this.worldData.getDayTime() + 1L); } -@@ -973,6 +989,12 @@ public class WorldServer extends World implements GeneratorAccessSeed { +@@ -981,6 +997,12 @@ public class WorldServer extends World implements GeneratorAccessSeed { public void setDayTime(long i) { this.worldDataServer.setDayTime(i); diff --git a/patches/Purpur/patches/server/0149-Spread-out-and-optimise-player-list-ticks.patch b/patches/Purpur/patches/server/0149-Spread-out-and-optimise-player-list-ticks.patch index dcb996c1..6ac4516e 100644 --- a/patches/Purpur/patches/server/0149-Spread-out-and-optimise-player-list-ticks.patch +++ b/patches/Purpur/patches/server/0149-Spread-out-and-optimise-player-list-ticks.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Spread out and optimise player list ticks diff --git a/src/main/java/net/minecraft/server/PlayerList.java b/src/main/java/net/minecraft/server/PlayerList.java -index 3c19e931ad7d5330f1c77ef65aaa5858a001e4df..0efc210ad55d843fd297f0caa88a5f355fbfef80 100644 +index 726e3292318f6a0de474f68fe30da4a954c7600a..58a184c518c557b7e4cfeebba9e4a7a9fbaf8c85 100644 --- a/src/main/java/net/minecraft/server/PlayerList.java +++ b/src/main/java/net/minecraft/server/PlayerList.java @@ -71,7 +71,7 @@ public abstract class PlayerList { @@ -17,7 +17,7 @@ index 3c19e931ad7d5330f1c77ef65aaa5858a001e4df..0efc210ad55d843fd297f0caa88a5f35 // CraftBukkit start private CraftServer cserver; -@@ -928,22 +928,23 @@ public abstract class PlayerList { +@@ -929,22 +929,23 @@ public abstract class PlayerList { } public void tick() { diff --git a/patches/Purpur/patches/server/0155-Implement-TPSBar.patch b/patches/Purpur/patches/server/0155-Implement-TPSBar.patch index 84c21663..07f24910 100644 --- a/patches/Purpur/patches/server/0155-Implement-TPSBar.patch +++ b/patches/Purpur/patches/server/0155-Implement-TPSBar.patch @@ -37,10 +37,10 @@ index eea187723c1931a5db9a2d79a1abddd664d890a1..33d43478b1bc4b0ca3f16ba80e0cd99b this.isRestarting = isRestarting; if (flag) { diff --git a/src/main/java/net/minecraft/server/PlayerList.java b/src/main/java/net/minecraft/server/PlayerList.java -index 0efc210ad55d843fd297f0caa88a5f355fbfef80..ca19cfa1ff801e5292332ff7b92bba881762306e 100644 +index 58a184c518c557b7e4cfeebba9e4a7a9fbaf8c85..7db99b6639a0afdd1f68539f6c6a6f48275e5b6b 100644 --- a/src/main/java/net/minecraft/server/PlayerList.java +++ b/src/main/java/net/minecraft/server/PlayerList.java -@@ -513,6 +513,8 @@ public abstract class PlayerList { +@@ -514,6 +514,8 @@ public abstract class PlayerList { if (entityplayer.didPlayerJoinEvent) cserver.getPluginManager().callEvent(playerQuitEvent); // Paper - if we disconnected before join ever fired, don't fire quit entityplayer.getBukkitEntity().disconnect(playerQuitEvent.getQuitMessage()); diff --git a/patches/Purpur/patches/server/0157-PlayerBookTooLargeEvent.patch b/patches/Purpur/patches/server/0157-PlayerBookTooLargeEvent.patch index dcf5eacc..4a946df5 100644 --- a/patches/Purpur/patches/server/0157-PlayerBookTooLargeEvent.patch +++ b/patches/Purpur/patches/server/0157-PlayerBookTooLargeEvent.patch @@ -5,10 +5,10 @@ Subject: [PATCH] PlayerBookTooLargeEvent diff --git a/src/main/java/net/minecraft/server/PlayerConnection.java b/src/main/java/net/minecraft/server/PlayerConnection.java -index e9485684b7d5ddde72fc388d51cfef679178bad3..75d955948a407d94e6f3a88f86afa8b1d6ba33cb 100644 +index ef222cdfdfb49dcdcb0e3bf6f6cabc765be003cc..95c1ba7241069ad291c2acef6972937ac7c4c7c7 100644 --- a/src/main/java/net/minecraft/server/PlayerConnection.java +++ b/src/main/java/net/minecraft/server/PlayerConnection.java -@@ -941,6 +941,7 @@ public class PlayerConnection implements PacketListenerPlayIn { +@@ -966,6 +966,7 @@ public class PlayerConnection implements PacketListenerPlayIn { NBTTagList pageList = testStack.getTag().getList("pages", 8); if (pageList.size() > 100) { PlayerConnection.LOGGER.warn(this.player.getName() + " tried to send a book with too many pages"); @@ -16,7 +16,7 @@ index e9485684b7d5ddde72fc388d51cfef679178bad3..75d955948a407d94e6f3a88f86afa8b1 minecraftServer.scheduleOnMain(() -> this.disconnect("Book too large!")); return; } -@@ -953,6 +954,7 @@ public class PlayerConnection implements PacketListenerPlayIn { +@@ -978,6 +979,7 @@ public class PlayerConnection implements PacketListenerPlayIn { int byteLength = testString.getBytes(java.nio.charset.StandardCharsets.UTF_8).length; if (byteLength > 256 * 4) { PlayerConnection.LOGGER.warn(this.player.getName() + " tried to send a book with with a page too large!"); @@ -24,7 +24,7 @@ index e9485684b7d5ddde72fc388d51cfef679178bad3..75d955948a407d94e6f3a88f86afa8b1 minecraftServer.scheduleOnMain(() -> this.disconnect("Book too large!")); return; } -@@ -976,6 +978,7 @@ public class PlayerConnection implements PacketListenerPlayIn { +@@ -1001,6 +1003,7 @@ public class PlayerConnection implements PacketListenerPlayIn { if (byteTotal > byteAllowed) { PlayerConnection.LOGGER.warn(this.player.getName() + " tried to send too large of a book. Book Size: " + byteTotal + " - Allowed: "+ byteAllowed + " - Pages: " + pageList.size()); diff --git a/patches/Purpur/patches/server/0167-Fix-PlayerEditBookEvent-not-saving-new-book.patch b/patches/Purpur/patches/server/0167-Fix-PlayerEditBookEvent-not-saving-new-book.patch index 04472c98..3c4c39f7 100644 --- a/patches/Purpur/patches/server/0167-Fix-PlayerEditBookEvent-not-saving-new-book.patch +++ b/patches/Purpur/patches/server/0167-Fix-PlayerEditBookEvent-not-saving-new-book.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Fix PlayerEditBookEvent not saving new book diff --git a/src/main/java/net/minecraft/server/PlayerConnection.java b/src/main/java/net/minecraft/server/PlayerConnection.java -index 75d955948a407d94e6f3a88f86afa8b1d6ba33cb..ca190409b6718607183df2e86f0b4be98c9b6c33 100644 +index 95c1ba7241069ad291c2acef6972937ac7c4c7c7..1471785da53a18edf31a20212f3cc6c19de92822 100644 --- a/src/main/java/net/minecraft/server/PlayerConnection.java +++ b/src/main/java/net/minecraft/server/PlayerConnection.java -@@ -1036,7 +1036,7 @@ public class PlayerConnection implements PacketListenerPlayIn { +@@ -1061,7 +1061,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); diff --git a/patches/Tuinity/patches/server/0025-Highly-optimise-single-and-multi-AABB-VoxelShapes-an.patch b/patches/Tuinity/patches/server/0025-Highly-optimise-single-and-multi-AABB-VoxelShapes-an.patch index d4a862e9..946065e4 100644 --- a/patches/Tuinity/patches/server/0025-Highly-optimise-single-and-multi-AABB-VoxelShapes-an.patch +++ b/patches/Tuinity/patches/server/0025-Highly-optimise-single-and-multi-AABB-VoxelShapes-an.patch @@ -907,12 +907,15 @@ index 25e54a1fadc5d31fb250a3f47524b4f345fc8cc6..cce0ac8a36bef3b9e5a2b95e0c3dd137 return this.d(entity, axisalignedbb, predicate).allMatch(VoxelShape::isEmpty); } finally { if (entity != null) entity.collisionLoadChunks = false; } // Paper diff --git a/src/main/java/net/minecraft/server/IEntityAccess.java b/src/main/java/net/minecraft/server/IEntityAccess.java -index b053bb74f6df174a27dbfd7b1b3e3ccbb0b26659..64b59b17d28803f510b8b088ebafe446c450d486 100644 +index b053bb74f6df174a27dbfd7b1b3e3ccbb0b26659..c17cbadeff9cb3ea955b9db99ab71d6d7fd8c247 100644 --- a/src/main/java/net/minecraft/server/IEntityAccess.java +++ b/src/main/java/net/minecraft/server/IEntityAccess.java -@@ -70,7 +70,8 @@ public interface IEntityAccess { +@@ -68,9 +68,10 @@ public interface IEntityAccess { + if (axisalignedbb.a() < 1.0E-7D) { + return Stream.empty(); } else { - AxisAlignedBB axisalignedbb1 = axisalignedbb.g(1.0E-7D); +- AxisAlignedBB axisalignedbb1 = axisalignedbb.g(1.0E-7D); ++ AxisAlignedBB axisalignedbb1 = axisalignedbb.g(-1.0E-7D); // Tuinity - to comply with vanilla intersection rules, expand by -epsilon so we only get stuff we definitely collide with. expanding by +epsilon gives us stuff we don't collide with, which will screw over callers in some cases. - predicate = predicate.and((entity1) -> { // Tuinity - optimise entity hard collisions + if (predicate == null) predicate = (e) -> true; // Tuinity - allow nullable @@ -1454,10 +1457,10 @@ index f011869880fedae4b69e505491e8bdbc5f51dfba..0d10d317cd0b60fc0866ae505c7fd71f return this.j.d(); } diff --git a/src/main/java/net/minecraft/server/WorldServer.java b/src/main/java/net/minecraft/server/WorldServer.java -index da9172303b8acf5613b283a98bf7f6f0fe859d62..8cb3f69b5ccf6a6895fb6fef92d4023baf45593f 100644 +index da9172303b8acf5613b283a98bf7f6f0fe859d62..8e1bd6029a5230f03616d9ff00b55ab14feced3f 100644 --- a/src/main/java/net/minecraft/server/WorldServer.java +++ b/src/main/java/net/minecraft/server/WorldServer.java -@@ -361,6 +361,243 @@ public class WorldServer extends World implements GeneratorAccessSeed { +@@ -361,6 +361,251 @@ public class WorldServer extends World implements GeneratorAccessSeed { this.asyncChunkTaskManager = new com.destroystokyo.paper.io.chunk.ChunkTaskManager(this); // Paper } @@ -1477,7 +1480,11 @@ index da9172303b8acf5613b283a98bf7f6f0fe859d62..8cb3f69b5ccf6a6895fb6fef92d4023b + if (axisalignedbb.isEmpty()) { + return false; + } -+ axisalignedbb = axisalignedbb.grow(MCUtil.COLLISION_EPSILON, MCUtil.COLLISION_EPSILON, MCUtil.COLLISION_EPSILON); ++ ++ // to comply with vanilla intersection rules, expand by -epsilon so we only get stuff we definitely collide with. ++ // Vanilla for hard collisions has this backwards, and they expand by +epsilon but this causes terrible problems ++ // specifically with boat collisions. ++ axisalignedbb = axisalignedbb.grow(-MCUtil.COLLISION_EPSILON, -MCUtil.COLLISION_EPSILON, -MCUtil.COLLISION_EPSILON); + List entities = com.tuinity.tuinity.util.CachedLists.getTempGetEntitiesList(); + try { + if (entity != null && entity.hardCollides()) { @@ -1647,7 +1654,11 @@ index da9172303b8acf5613b283a98bf7f6f0fe859d62..8cb3f69b5ccf6a6895fb6fef92d4023b + if (axisalignedbb.isEmpty()) { + return; + } -+ axisalignedbb = axisalignedbb.grow(MCUtil.COLLISION_EPSILON, MCUtil.COLLISION_EPSILON, MCUtil.COLLISION_EPSILON); ++ ++ // to comply with vanilla intersection rules, expand by -epsilon so we only get stuff we definitely collide with. ++ // Vanilla for hard collisions has this backwards, and they expand by +epsilon but this causes terrible problems ++ // specifically with boat collisions. ++ axisalignedbb = axisalignedbb.grow(-MCUtil.COLLISION_EPSILON, -MCUtil.COLLISION_EPSILON, -MCUtil.COLLISION_EPSILON); + List entities = com.tuinity.tuinity.util.CachedLists.getTempGetEntitiesList(); + try { + if (entity != null && entity.hardCollides()) { diff --git a/patches/Tuinity/patches/server/0033-Allow-Entities-to-be-removed-from-a-world-while-tick.patch b/patches/Tuinity/patches/server/0033-Allow-Entities-to-be-removed-from-a-world-while-tick.patch index 620fb7b3..8d64b44c 100644 --- a/patches/Tuinity/patches/server/0033-Allow-Entities-to-be-removed-from-a-world-while-tick.patch +++ b/patches/Tuinity/patches/server/0033-Allow-Entities-to-be-removed-from-a-world-while-tick.patch @@ -9,7 +9,7 @@ issues where teleporting players across worlds while ticking. Also allows us to run mid tick while ticking entities. diff --git a/src/main/java/net/minecraft/server/WorldServer.java b/src/main/java/net/minecraft/server/WorldServer.java -index 8cb3f69b5ccf6a6895fb6fef92d4023baf45593f..99a0845a64e4853fe12722a76cc00385131269cc 100644 +index 8e1bd6029a5230f03616d9ff00b55ab14feced3f..6e5a3467f92c29181d26c03ecf49d598d75a4633 100644 --- a/src/main/java/net/minecraft/server/WorldServer.java +++ b/src/main/java/net/minecraft/server/WorldServer.java @@ -61,7 +61,7 @@ public class WorldServer extends World implements GeneratorAccessSeed { @@ -30,7 +30,7 @@ index 8cb3f69b5ccf6a6895fb6fef92d4023baf45593f..99a0845a64e4853fe12722a76cc00385 protected final PersistentRaid persistentRaid; private final ObjectLinkedOpenHashSet L; private boolean ticking; -@@ -825,13 +825,12 @@ public class WorldServer extends World implements GeneratorAccessSeed { +@@ -833,13 +833,12 @@ public class WorldServer extends World implements GeneratorAccessSeed { } this.tickingEntities = true; @@ -46,7 +46,7 @@ index 8cb3f69b5ccf6a6895fb6fef92d4023baf45593f..99a0845a64e4853fe12722a76cc00385 Entity entity1 = entity.getVehicle(); /* CraftBukkit start - We prevent spawning in general, so this butchering is not needed -@@ -867,7 +866,7 @@ public class WorldServer extends World implements GeneratorAccessSeed { +@@ -875,7 +874,7 @@ public class WorldServer extends World implements GeneratorAccessSeed { gameprofilerfiller.enter("remove"); if (entity.dead) { this.removeEntityFromChunk(entity); @@ -55,7 +55,7 @@ index 8cb3f69b5ccf6a6895fb6fef92d4023baf45593f..99a0845a64e4853fe12722a76cc00385 this.unregisterEntity(entity); } -@@ -875,6 +874,7 @@ public class WorldServer extends World implements GeneratorAccessSeed { +@@ -883,6 +882,7 @@ public class WorldServer extends World implements GeneratorAccessSeed { } timings.entityTick.stopTiming(); // Spigot @@ -63,7 +63,7 @@ index 8cb3f69b5ccf6a6895fb6fef92d4023baf45593f..99a0845a64e4853fe12722a76cc00385 this.tickingEntities = false; // Paper start for (java.lang.Runnable run : this.afterEntityTickingTasks) { -@@ -1654,7 +1654,7 @@ public class WorldServer extends World implements GeneratorAccessSeed { +@@ -1662,7 +1662,7 @@ public class WorldServer extends World implements GeneratorAccessSeed { Entity entity = (Entity) iterator.next(); if (!(entity instanceof EntityPlayer)) { @@ -72,7 +72,7 @@ index 8cb3f69b5ccf6a6895fb6fef92d4023baf45593f..99a0845a64e4853fe12722a76cc00385 throw (IllegalStateException) SystemUtils.c((Throwable) (new IllegalStateException("Removing entity while ticking!"))); } -@@ -1682,6 +1682,7 @@ public class WorldServer extends World implements GeneratorAccessSeed { +@@ -1690,6 +1690,7 @@ public class WorldServer extends World implements GeneratorAccessSeed { public void unregisterEntity(Entity entity) { org.spigotmc.AsyncCatcher.catchOp("entity unregister"); // Spigot @@ -80,7 +80,7 @@ index 8cb3f69b5ccf6a6895fb6fef92d4023baf45593f..99a0845a64e4853fe12722a76cc00385 // 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 -@@ -1748,12 +1749,16 @@ public class WorldServer extends World implements GeneratorAccessSeed { +@@ -1756,12 +1757,16 @@ public class WorldServer extends World implements GeneratorAccessSeed { this.getScoreboard().a(entity); // CraftBukkit start - SPIGOT-5278 if (entity instanceof EntityDrowned) { @@ -100,7 +100,7 @@ index 8cb3f69b5ccf6a6895fb6fef92d4023baf45593f..99a0845a64e4853fe12722a76cc00385 } new com.destroystokyo.paper.event.entity.EntityRemoveFromWorldEvent(entity.getBukkitEntity()).callEvent(); // Paper - fire while valid entity.valid = false; // CraftBukkit -@@ -1769,7 +1774,7 @@ public class WorldServer extends World implements GeneratorAccessSeed { +@@ -1777,7 +1782,7 @@ public class WorldServer extends World implements GeneratorAccessSeed { return; } // Paper end @@ -109,7 +109,7 @@ index 8cb3f69b5ccf6a6895fb6fef92d4023baf45593f..99a0845a64e4853fe12722a76cc00385 if (!entity.isQueuedForRegister) { // Paper this.entitiesToAdd.add(entity); entity.isQueuedForRegister = true; // Paper -@@ -1777,6 +1782,7 @@ public class WorldServer extends World implements GeneratorAccessSeed { +@@ -1785,6 +1790,7 @@ public class WorldServer extends World implements GeneratorAccessSeed { } else { entity.isQueuedForRegister = false; // Paper this.entitiesById.put(entity.getId(), entity); @@ -117,7 +117,7 @@ index 8cb3f69b5ccf6a6895fb6fef92d4023baf45593f..99a0845a64e4853fe12722a76cc00385 if (entity instanceof EntityEnderDragon) { EntityComplexPart[] aentitycomplexpart = ((EntityEnderDragon) entity).eJ(); int i = aentitycomplexpart.length; -@@ -1785,6 +1791,7 @@ public class WorldServer extends World implements GeneratorAccessSeed { +@@ -1793,6 +1799,7 @@ public class WorldServer extends World implements GeneratorAccessSeed { EntityComplexPart entitycomplexpart = aentitycomplexpart[j]; this.entitiesById.put(entitycomplexpart.getId(), entitycomplexpart); @@ -125,7 +125,7 @@ index 8cb3f69b5ccf6a6895fb6fef92d4023baf45593f..99a0845a64e4853fe12722a76cc00385 } } -@@ -1809,12 +1816,16 @@ public class WorldServer extends World implements GeneratorAccessSeed { +@@ -1817,12 +1824,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) { @@ -145,7 +145,7 @@ index 8cb3f69b5ccf6a6895fb6fef92d4023baf45593f..99a0845a64e4853fe12722a76cc00385 } entity.valid = true; // CraftBukkit this.getChunkProvider().addEntity(entity); // Paper - from above to be below valid=true -@@ -1830,7 +1841,7 @@ public class WorldServer extends World implements GeneratorAccessSeed { +@@ -1838,7 +1849,7 @@ public class WorldServer extends World implements GeneratorAccessSeed { } public void removeEntity(Entity entity) { @@ -154,7 +154,7 @@ index 8cb3f69b5ccf6a6895fb6fef92d4023baf45593f..99a0845a64e4853fe12722a76cc00385 throw (IllegalStateException) SystemUtils.c((Throwable) (new IllegalStateException("Removing entity while ticking!"))); } else { this.removeEntityFromChunk(entity); -@@ -1934,7 +1945,9 @@ public class WorldServer extends World implements GeneratorAccessSeed { +@@ -1942,7 +1953,9 @@ public class WorldServer extends World implements GeneratorAccessSeed { if (VoxelShapes.c(voxelshape, voxelshape1, OperatorBoolean.NOT_SAME)) { boolean wasTicking = this.tickingEntities; this.tickingEntities = true; // Paper @@ -165,7 +165,7 @@ index 8cb3f69b5ccf6a6895fb6fef92d4023baf45593f..99a0845a64e4853fe12722a76cc00385 while (iterator.hasNext()) { NavigationAbstract navigationabstract = (NavigationAbstract) iterator.next(); -@@ -1943,6 +1956,9 @@ public class WorldServer extends World implements GeneratorAccessSeed { +@@ -1951,6 +1964,9 @@ public class WorldServer extends World implements GeneratorAccessSeed { navigationabstract.b(blockposition); } } diff --git a/patches/Tuinity/patches/server/0035-Optimise-collision-checking-in-player-move-packet-ha.patch b/patches/Tuinity/patches/server/0035-Optimise-collision-checking-in-player-move-packet-ha.patch index b8b683ad..fbb0186a 100644 --- a/patches/Tuinity/patches/server/0035-Optimise-collision-checking-in-player-move-packet-ha.patch +++ b/patches/Tuinity/patches/server/0035-Optimise-collision-checking-in-player-move-packet-ha.patch @@ -6,7 +6,7 @@ Subject: [PATCH] Optimise collision checking in player move packet handling Move collision logic to just the hasNewCollision call instead of getCubes + hasNewCollision diff --git a/src/main/java/net/minecraft/server/PlayerConnection.java b/src/main/java/net/minecraft/server/PlayerConnection.java -index f1be42b5f1d0eb403e6895e8ff1d106861fa4298..4058c1f7ada7d0c9e4ba73a0073b4f94bf410a8f 100644 +index f1be42b5f1d0eb403e6895e8ff1d106861fa4298..4185ec46435ddf48d9e25c4d71ac4e14eb6301cf 100644 --- a/src/main/java/net/minecraft/server/PlayerConnection.java +++ b/src/main/java/net/minecraft/server/PlayerConnection.java @@ -434,12 +434,14 @@ public class PlayerConnection implements PacketListenerPlayIn { @@ -55,7 +55,41 @@ index f1be42b5f1d0eb403e6895e8ff1d106861fa4298..4058c1f7ada7d0c9e4ba73a0073b4f94 entity.setLocation(d0, d1, d2, f, f1); player.setLocation(d0, d1, d2, this.player.yaw, this.player.pitch); // CraftBukkit this.networkManager.sendPacket(new PacketPlayOutVehicleMove(entity)); -@@ -1070,7 +1081,7 @@ public class PlayerConnection implements PacketListenerPlayIn { +@@ -548,7 +559,32 @@ public class PlayerConnection implements PacketListenerPlayIn { + } + + private boolean a(Entity entity) { +- return entity.world.a(entity.getBoundingBox().g(0.0625D).b(0.0D, -0.55D, 0.0D)).allMatch(BlockBase.BlockData::isAir); ++ // Tuinity start - stop using streams, this is already a known fixed problem in Entity#move ++ AxisAlignedBB box = entity.getBoundingBox().g(0.0625D).b(0.0D, -0.55D, 0.0D); ++ int minX = MathHelper.floor(box.minX); ++ int minY = MathHelper.floor(box.minY); ++ int minZ = MathHelper.floor(box.minZ); ++ int maxX = MathHelper.floor(box.maxX); ++ int maxY = MathHelper.floor(box.maxY); ++ int maxZ = MathHelper.floor(box.maxZ); ++ ++ World world = entity.world; ++ BlockPosition.MutableBlockPosition pos = new BlockPosition.MutableBlockPosition(); ++ ++ for (int y = minY; y <= maxY; ++y) { ++ for (int z = minZ; z <= maxZ; ++z) { ++ for (int x = minX; x <= maxX; ++x) { ++ pos.setValues(x, y, z); ++ IBlockData type = world.getTypeIfLoaded(pos); ++ if (type != null && !type.isAir()) { ++ return false; ++ } ++ } ++ } ++ } ++ ++ return true; ++ // Tuinity end - stop using streams, this is already a known fixed problem in Entity#move + } + + @Override +@@ -1070,7 +1106,7 @@ public class PlayerConnection implements PacketListenerPlayIn { } if (this.teleportPos != null) { @@ -64,7 +98,7 @@ index f1be42b5f1d0eb403e6895e8ff1d106861fa4298..4058c1f7ada7d0c9e4ba73a0073b4f94 this.A = this.e; this.a(this.teleportPos.x, this.teleportPos.y, this.teleportPos.z, this.player.yaw, this.player.pitch); } -@@ -1157,7 +1168,7 @@ public class PlayerConnection implements PacketListenerPlayIn { +@@ -1157,7 +1193,7 @@ public class PlayerConnection implements PacketListenerPlayIn { } } @@ -73,7 +107,7 @@ index f1be42b5f1d0eb403e6895e8ff1d106861fa4298..4058c1f7ada7d0c9e4ba73a0073b4f94 d7 = d4 - this.o; d8 = d5 - this.p; -@@ -1196,6 +1207,7 @@ public class PlayerConnection implements PacketListenerPlayIn { +@@ -1196,6 +1232,7 @@ public class PlayerConnection implements PacketListenerPlayIn { } this.player.move(EnumMoveType.PLAYER, new Vec3D(d7, d8, d9)); @@ -81,7 +115,7 @@ index f1be42b5f1d0eb403e6895e8ff1d106861fa4298..4058c1f7ada7d0c9e4ba73a0073b4f94 this.player.setOnGround(packetplayinflying.b()); // CraftBukkit - SPIGOT-5810, SPIGOT-5835: reset by this.player.move // Paper start - prevent position desync if (this.teleportPos != null) { -@@ -1215,12 +1227,23 @@ public class PlayerConnection implements PacketListenerPlayIn { +@@ -1215,12 +1252,23 @@ public class PlayerConnection implements PacketListenerPlayIn { boolean flag1 = false; if (!this.player.H() && d11 > org.spigotmc.SpigotConfig.movedWronglyThreshold && !this.player.isSleeping() && !this.player.playerInteractManager.isCreative() && this.player.playerInteractManager.getGameMode() != EnumGamemode.SPECTATOR) { // Spigot @@ -107,7 +141,7 @@ index f1be42b5f1d0eb403e6895e8ff1d106861fa4298..4058c1f7ada7d0c9e4ba73a0073b4f94 this.a(d0, d1, d2, f, f1); } else { // CraftBukkit start - fire PlayerMoveEvent -@@ -1307,6 +1330,26 @@ public class PlayerConnection implements PacketListenerPlayIn { +@@ -1307,6 +1355,26 @@ public class PlayerConnection implements PacketListenerPlayIn { } } diff --git a/patches/Tuinity/patches/server/0046-Optimise-closest-entity-lookup-used-by-AI-goals.patch b/patches/Tuinity/patches/server/0046-Optimise-closest-entity-lookup-used-by-AI-goals.patch index 3d5b01a4..7e65a485 100644 --- a/patches/Tuinity/patches/server/0046-Optimise-closest-entity-lookup-used-by-AI-goals.patch +++ b/patches/Tuinity/patches/server/0046-Optimise-closest-entity-lookup-used-by-AI-goals.patch @@ -293,7 +293,7 @@ index dface62144bb230c576e9eafad1016d19d211118..cd4a36a2f0feb2df928ee5ed7f0bca6d org.spigotmc.AsyncCatcher.catchOp("Chunk getEntities call"); // Spigot int i = MathHelper.floor((axisalignedbb.minY - 2.0D) / 16.0D); diff --git a/src/main/java/net/minecraft/server/IEntityAccess.java b/src/main/java/net/minecraft/server/IEntityAccess.java -index 64b59b17d28803f510b8b088ebafe446c450d486..cbaf18af1066e8bde10293bba5eb3060bae1e66f 100644 +index c17cbadeff9cb3ea955b9db99ab71d6d7fd8c247..93f2ac996904ddefed04704e554209d047faa59f 100644 --- a/src/main/java/net/minecraft/server/IEntityAccess.java +++ b/src/main/java/net/minecraft/server/IEntityAccess.java @@ -214,12 +214,12 @@ public interface IEntityAccess { diff --git a/patches/Tuinity/patches/server/0047-Optimise-EntityInsentient-checkDespawn.patch b/patches/Tuinity/patches/server/0047-Optimise-EntityInsentient-checkDespawn.patch index 9568a5dd..48f2c680 100644 --- a/patches/Tuinity/patches/server/0047-Optimise-EntityInsentient-checkDespawn.patch +++ b/patches/Tuinity/patches/server/0047-Optimise-EntityInsentient-checkDespawn.patch @@ -242,7 +242,7 @@ index 1d87e7461d28d8a639fafcfdfa5496014e9180f6..93c0c3376c3cb2fe416c8ae3e740ffda this.spigotConfig = new org.spigotmc.SpigotWorldConfig(((WorldDataServer) worlddatamutable).getName()); // Spigot this.paperConfig = new com.destroystokyo.paper.PaperWorldConfig(((WorldDataServer) worlddatamutable).getName(), this.spigotConfig); // Paper diff --git a/src/main/java/net/minecraft/server/WorldServer.java b/src/main/java/net/minecraft/server/WorldServer.java -index 99a0845a64e4853fe12722a76cc00385131269cc..e4f5ba7f32d9d64ff3be5effad09faf1e4c0ce3f 100644 +index 6e5a3467f92c29181d26c03ecf49d598d75a4633..b1b63a11a6585971685b9ace1b6d91643a36aa95 100644 --- a/src/main/java/net/minecraft/server/WorldServer.java +++ b/src/main/java/net/minecraft/server/WorldServer.java @@ -301,6 +301,10 @@ public class WorldServer extends World implements GeneratorAccessSeed { @@ -256,7 +256,7 @@ index 99a0845a64e4853fe12722a76cc00385131269cc..e4f5ba7f32d9d64ff3be5effad09faf1 // Add env and gen to constructor, WorldData -> WorldDataServer public WorldServer(MinecraftServer minecraftserver, Executor executor, Convertable.ConversionSession convertable_conversionsession, IWorldDataServer iworlddataserver, ResourceKey resourcekey, DimensionManager dimensionmanager, WorldLoadListener worldloadlistener, ChunkGenerator chunkgenerator, boolean flag, long i, List list, boolean flag1, org.bukkit.World.Environment env, org.bukkit.generator.ChunkGenerator gen) { super(iworlddataserver, resourcekey, dimensionmanager, minecraftserver::getMethodProfiler, false, flag, i, gen, env, executor); // Paper pass executor -@@ -651,6 +655,14 @@ public class WorldServer extends World implements GeneratorAccessSeed { +@@ -659,6 +663,14 @@ public class WorldServer extends World implements GeneratorAccessSeed { public void doTick(BooleanSupplier booleansupplier) { GameProfilerFiller gameprofilerfiller = this.getMethodProfiler(); diff --git a/patches/Tuinity/patches/server/0061-Rewrite-the-light-engine.patch b/patches/Tuinity/patches/server/0061-Rewrite-the-light-engine.patch index dd99ecc9..5529101f 100644 --- a/patches/Tuinity/patches/server/0061-Rewrite-the-light-engine.patch +++ b/patches/Tuinity/patches/server/0061-Rewrite-the-light-engine.patch @@ -5474,7 +5474,7 @@ index 700660dd93b3090334bb3033d5f5fdd6ab684744..e3b72922e2dfad07f3452ec5ee2af379 VoxelShape[] avoxelshape = new VoxelShape[]{VoxelShapes.a()}; diff --git a/src/main/java/net/minecraft/server/WorldServer.java b/src/main/java/net/minecraft/server/WorldServer.java -index e4f5ba7f32d9d64ff3be5effad09faf1e4c0ce3f..71650a3585b968f68203490da1410608565dfc10 100644 +index b1b63a11a6585971685b9ace1b6d91643a36aa95..c448f75b22ead5a178b031d625338f92752617ec 100644 --- a/src/main/java/net/minecraft/server/WorldServer.java +++ b/src/main/java/net/minecraft/server/WorldServer.java @@ -305,6 +305,13 @@ public class WorldServer extends World implements GeneratorAccessSeed { diff --git a/patches/Tuinity/patches/server/0062-Optimise-WorldServer-notify.patch b/patches/Tuinity/patches/server/0062-Optimise-WorldServer-notify.patch index 964cf197..224705b2 100644 --- a/patches/Tuinity/patches/server/0062-Optimise-WorldServer-notify.patch +++ b/patches/Tuinity/patches/server/0062-Optimise-WorldServer-notify.patch @@ -65,10 +65,10 @@ index 9be1581868627b99709bcd446de6dc89c34b42d3..5fe928e4511f320aef1f3b94a092d2a7 @Override diff --git a/src/main/java/net/minecraft/server/WorldServer.java b/src/main/java/net/minecraft/server/WorldServer.java -index 71650a3585b968f68203490da1410608565dfc10..9c11a6ba0384baafaec1403a6a7c3f894d5cd7b3 100644 +index c448f75b22ead5a178b031d625338f92752617ec..9a8a1e05a60bca77adc904017ae70ef5f629df0b 100644 --- a/src/main/java/net/minecraft/server/WorldServer.java +++ b/src/main/java/net/minecraft/server/WorldServer.java -@@ -865,6 +865,15 @@ public class WorldServer extends World implements GeneratorAccessSeed { +@@ -873,6 +873,15 @@ public class WorldServer extends World implements GeneratorAccessSeed { gameprofilerfiller.enter("checkDespawn"); if (!entity.dead) { entity.checkDespawn(); @@ -84,7 +84,7 @@ index 71650a3585b968f68203490da1410608565dfc10..9c11a6ba0384baafaec1403a6a7c3f89 } gameprofilerfiller.exit(); -@@ -887,7 +896,14 @@ public class WorldServer extends World implements GeneratorAccessSeed { +@@ -895,7 +904,14 @@ public class WorldServer extends World implements GeneratorAccessSeed { this.removeEntityFromChunk(entity); this.entitiesById.remove(entity.getId()); // Tuinity this.unregisterEntity(entity); @@ -99,7 +99,7 @@ index 71650a3585b968f68203490da1410608565dfc10..9c11a6ba0384baafaec1403a6a7c3f89 gameprofilerfiller.exit(); } -@@ -1296,6 +1312,12 @@ public class WorldServer extends World implements GeneratorAccessSeed { +@@ -1304,6 +1320,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); @@ -112,7 +112,7 @@ index 71650a3585b968f68203490da1410608565dfc10..9c11a6ba0384baafaec1403a6a7c3f89 if (!entity.inChunk || entity.chunkX != i || entity.chunkY != j || entity.chunkZ != k) { // Paper start - remove entity if its in a chunk more correctly. -@@ -1305,6 +1327,12 @@ public class WorldServer extends World implements GeneratorAccessSeed { +@@ -1313,6 +1335,12 @@ public class WorldServer extends World implements GeneratorAccessSeed { } // Paper end @@ -125,7 +125,7 @@ index 71650a3585b968f68203490da1410608565dfc10..9c11a6ba0384baafaec1403a6a7c3f89 if (entity.inChunk && this.isChunkLoaded(entity.chunkX, entity.chunkZ)) { this.getChunkAt(entity.chunkX, entity.chunkZ).a(entity, entity.chunkY); } -@@ -1318,6 +1346,11 @@ public class WorldServer extends World implements GeneratorAccessSeed { +@@ -1326,6 +1354,11 @@ public class WorldServer extends World implements GeneratorAccessSeed { } else { this.getChunkAt(i, k).a(entity); } @@ -137,7 +137,7 @@ index 71650a3585b968f68203490da1410608565dfc10..9c11a6ba0384baafaec1403a6a7c3f89 } this.getMethodProfiler().exit(); -@@ -1780,9 +1813,96 @@ public class WorldServer extends World implements GeneratorAccessSeed { +@@ -1788,9 +1821,96 @@ public class WorldServer extends World implements GeneratorAccessSeed { // Tuinity end } new com.destroystokyo.paper.event.entity.EntityRemoveFromWorldEvent(entity.getBukkitEntity()).callEvent(); // Paper - fire while valid @@ -234,7 +234,7 @@ index 71650a3585b968f68203490da1410608565dfc10..9c11a6ba0384baafaec1403a6a7c3f89 private void registerEntity(Entity entity) { org.spigotmc.AsyncCatcher.catchOp("entity register"); // Spigot // Paper start - don't double enqueue entity registration -@@ -1963,9 +2083,25 @@ public class WorldServer extends World implements GeneratorAccessSeed { +@@ -1971,9 +2091,25 @@ public class WorldServer extends World implements GeneratorAccessSeed { VoxelShape voxelshape1 = iblockdata1.getCollisionShape(this, blockposition); if (VoxelShapes.c(voxelshape, voxelshape1, OperatorBoolean.NOT_SAME)) { @@ -261,7 +261,7 @@ index 71650a3585b968f68203490da1410608565dfc10..9c11a6ba0384baafaec1403a6a7c3f89 try { // Tuinity end while (iterator.hasNext()) { -@@ -1974,10 +2110,21 @@ public class WorldServer extends World implements GeneratorAccessSeed { +@@ -1982,10 +2118,21 @@ public class WorldServer extends World implements GeneratorAccessSeed { if (!navigationabstract.i()) { navigationabstract.b(blockposition); } diff --git a/patches/Tuinity/patches/server/0064-Send-full-pos-packets-for-hard-colliding-entities.patch b/patches/Tuinity/patches/server/0064-Send-full-pos-packets-for-hard-colliding-entities.patch new file mode 100644 index 00000000..17021066 --- /dev/null +++ b/patches/Tuinity/patches/server/0064-Send-full-pos-packets-for-hard-colliding-entities.patch @@ -0,0 +1,40 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Spottedleaf +Date: Tue, 16 Feb 2021 00:16:56 -0800 +Subject: [PATCH] Send full pos packets for hard colliding entities + +Prevent collision problems due to desync (i.e boats) + +Configurable under +`send-full-pos-for-hard-colliding-entities` + +diff --git a/src/main/java/com/tuinity/tuinity/config/TuinityConfig.java b/src/main/java/com/tuinity/tuinity/config/TuinityConfig.java +index ceeb515f4528551659598d9999917f8596e3eded..0959aa6855a150b121b9b75885216c46b151179e 100644 +--- a/src/main/java/com/tuinity/tuinity/config/TuinityConfig.java ++++ b/src/main/java/com/tuinity/tuinity/config/TuinityConfig.java +@@ -229,6 +229,12 @@ public final class TuinityConfig { + useNewLightEngine = TuinityConfig.getBoolean("use-new-light-engine", true); + } + ++ public static boolean sendFullPosForHardCollidingEntities; ++ ++ private static void sendFullPosForHardCollidingEntities() { ++ sendFullPosForHardCollidingEntities = TuinityConfig.getBoolean("send-full-pos-for-hard-colliding-entities", true); ++ } ++ + public static final class WorldConfig { + + public final String worldName; +diff --git a/src/main/java/net/minecraft/server/EntityTrackerEntry.java b/src/main/java/net/minecraft/server/EntityTrackerEntry.java +index 526c1419af7bd0b6098a8f9a0a24a64ba61c6ebc..81869215876d10a84ab27c0e6f41963c1346fd1c 100644 +--- a/src/main/java/net/minecraft/server/EntityTrackerEntry.java ++++ b/src/main/java/net/minecraft/server/EntityTrackerEntry.java +@@ -157,7 +157,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; + +- if (!flag4 && this.o <= 400 && !this.q && this.r == this.tracker.isOnGround()) { ++ if (!flag4 && this.o <= 400 && !this.q && this.r == this.tracker.isOnGround() && !(com.tuinity.tuinity.config.TuinityConfig.sendFullPosForHardCollidingEntities && this.tracker.hardCollides())) { // Tuinity - send full pos for hard colliding entities to prevent collision problems due to desync + if ((!flag2 || !flag3) && !(this.tracker instanceof EntityArrow)) { + if (flag2) { + packet1 = new PacketPlayOutEntity.PacketPlayOutRelEntityMove(this.tracker.getId(), (short) ((int) k), (short) ((int) l), (short) ((int) i1), this.tracker.isOnGround()); diff --git a/patches/Tuinity/patches/server/0065-Fix-chunks-refusing-to-unload-at-low-TPS.patch b/patches/Tuinity/patches/server/0065-Fix-chunks-refusing-to-unload-at-low-TPS.patch new file mode 100644 index 00000000..590fa53e --- /dev/null +++ b/patches/Tuinity/patches/server/0065-Fix-chunks-refusing-to-unload-at-low-TPS.patch @@ -0,0 +1,26 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Spottedleaf +Date: Mon, 1 Feb 2021 15:35:14 -0800 +Subject: [PATCH] Fix chunks refusing to unload at low TPS + +The full chunk future is appended to the chunk save future, but +when moving to unloaded ticket level it is not being completed with +the empty chunk access, so the chunk save must wait for the full +chunk future to complete. We can simply schedule to the immediate +executor to get this effect, rather than the main mailbox. + +diff --git a/src/main/java/net/minecraft/server/PlayerChunkMap.java b/src/main/java/net/minecraft/server/PlayerChunkMap.java +index a42571cfd2c9c80df27e59db832cb64c2a64e141..2c2becef8b56d7e5e998976222df85d2c8516c43 100644 +--- a/src/main/java/net/minecraft/server/PlayerChunkMap.java ++++ b/src/main/java/net/minecraft/server/PlayerChunkMap.java +@@ -1494,9 +1494,7 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d { + chunk.B(); + return chunk; + }); +- }, (runnable) -> { +- this.mailboxMain.a(ChunkTaskQueueSorter.a(playerchunk, runnable)); +- }); ++ }, this.executor); // Tuinity - queue to execute immediately so this doesn't delay chunk unloading + } + + public int c() { diff --git a/patches/Tuinity/patches/server/0066-Fix-incorrect-isRealPlayer-init.patch b/patches/Tuinity/patches/server/0066-Fix-incorrect-isRealPlayer-init.patch new file mode 100644 index 00000000..aa2ca1a4 --- /dev/null +++ b/patches/Tuinity/patches/server/0066-Fix-incorrect-isRealPlayer-init.patch @@ -0,0 +1,31 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Spottedleaf +Date: Wed, 27 Jan 2021 15:15:01 -0800 +Subject: [PATCH] Fix incorrect isRealPlayer init + +Some plugins, namely ProtocolSupport, don't route to where +paper placed their logic. So it wont correctly set in this case. + +Fix by moving it to a different place. + +diff --git a/src/main/java/net/minecraft/server/PlayerList.java b/src/main/java/net/minecraft/server/PlayerList.java +index 1eb44877e7384ae0a028a12b832684126b8d50ec..eabd1aa2b740bcb6db40be300cd6daf59674fa3f 100644 +--- a/src/main/java/net/minecraft/server/PlayerList.java ++++ b/src/main/java/net/minecraft/server/PlayerList.java +@@ -98,6 +98,7 @@ public abstract class PlayerList { + } + + public void a(NetworkManager networkmanager, EntityPlayer entityplayer) { ++ entityplayer.isRealPlayer = true; // Paper // Tuinity - this is a better place to write this that works and isn't overriden by plugins + EntityPlayer prev = pendingPlayers.put(entityplayer.getUniqueID(), entityplayer);// Paper + if (prev != null) { + disconnectPendingPlayer(prev); +@@ -637,7 +638,7 @@ public abstract class PlayerList { + SocketAddress socketaddress = loginlistener.networkManager.getSocketAddress(); + + EntityPlayer entity = new EntityPlayer(this.server, this.server.getWorldServer(World.OVERWORLD), gameprofile, new PlayerInteractManager(this.server.getWorldServer(World.OVERWORLD))); +- entity.isRealPlayer = true; // Paper ++ // Tuinity - some plugins (namely protocolsupport) bypass this logic completely! So this needs to be moved. + Player player = entity.getBukkitEntity(); + PlayerLoginEvent event = new PlayerLoginEvent(player, hostname, ((java.net.InetSocketAddress) socketaddress).getAddress(), ((java.net.InetSocketAddress) loginlistener.networkManager.getRawAddress()).getAddress()); + diff --git a/patches/server/0006-Yatopia-configuration.patch b/patches/server/0006-Yatopia-configuration.patch index 0c88c544..45b82c59 100644 --- a/patches/server/0006-Yatopia-configuration.patch +++ b/patches/server/0006-Yatopia-configuration.patch @@ -67,10 +67,10 @@ index a198bdf26b60caea8c8b105cb0e4b82c0340fede..39280197902b330dd3d39c721cdef744 if (this.isFireProof() || this.world.isClientSide) { this.extinguish(); diff --git a/src/main/java/net/minecraft/server/PlayerList.java b/src/main/java/net/minecraft/server/PlayerList.java -index ca19cfa1ff801e5292332ff7b92bba881762306e..14d8492c405db32e454bc363207a127167432a61 100644 +index 7db99b6639a0afdd1f68539f6c6a6f48275e5b6b..8b3b0dd9f67a0462737d0c2d61948f33840fceb1 100644 --- a/src/main/java/net/minecraft/server/PlayerList.java +++ b/src/main/java/net/minecraft/server/PlayerList.java -@@ -188,7 +188,7 @@ public abstract class PlayerList { +@@ -189,7 +189,7 @@ public abstract class PlayerList { // Spigot - view distance playerconnection.sendPacket(new PacketPlayOutLogin(entityplayer.getId(), entityplayer.playerInteractManager.getGameMode(), entityplayer.playerInteractManager.c(), BiomeManager.a(worldserver1.getSeed()), worlddata.isHardcore(), this.server.F(), this.s, worldserver1.getDimensionManager(), worldserver1.getDimensionKey(), this.getMaxPlayers(), worldserver1.getChunkProvider().playerChunkMap.getLoadViewDistance(), flag1, !flag, worldserver1.isDebugWorld(), worldserver1.isFlatWorld())); // Paper - no-tick view distance entityplayer.getBukkitEntity().sendSupportedChannels(); // CraftBukkit diff --git a/patches/server/0024-Optimize-some-stuff-in-WorldServer-ticking.patch b/patches/server/0024-Optimize-some-stuff-in-WorldServer-ticking.patch index 138f8355..8b090929 100644 --- a/patches/server/0024-Optimize-some-stuff-in-WorldServer-ticking.patch +++ b/patches/server/0024-Optimize-some-stuff-in-WorldServer-ticking.patch @@ -6,10 +6,10 @@ Subject: [PATCH] Optimize some stuff in WorldServer ticking Replaced some streams and some array lists with glue lists diff --git a/src/main/java/net/minecraft/server/WorldServer.java b/src/main/java/net/minecraft/server/WorldServer.java -index 4d47cca6db7a771677c31ade9425ed3ad83393ea..17d728bf4f8393defd0a6f274d32f2ce926232a3 100644 +index 2289c92c8933bfa0f382167fa5790a4ea17b7c75..1196b482d33e655eb4aa5ea6b66326f12c4363a4 100644 --- a/src/main/java/net/minecraft/server/WorldServer.java +++ b/src/main/java/net/minecraft/server/WorldServer.java -@@ -780,12 +780,21 @@ public class WorldServer extends World implements GeneratorAccessSeed { +@@ -788,12 +788,21 @@ public class WorldServer extends World implements GeneratorAccessSeed { this.server.getPlayerList().sendAll(new PacketPlayOutGameStateChange(PacketPlayOutGameStateChange.i, this.thunderLevel)); } // */ @@ -34,7 +34,7 @@ index 4d47cca6db7a771677c31ade9425ed3ad83393ea..17d728bf4f8393defd0a6f274d32f2ce if (flag != this.isRaining()) { // Only send weather packets to those affected for (int idx = 0; idx < this.players.size(); ++idx) { -@@ -800,11 +809,9 @@ public class WorldServer extends World implements GeneratorAccessSeed { +@@ -808,11 +817,9 @@ public class WorldServer extends World implements GeneratorAccessSeed { } } // CraftBukkit end @@ -48,7 +48,7 @@ index 4d47cca6db7a771677c31ade9425ed3ad83393ea..17d728bf4f8393defd0a6f274d32f2ce long l = this.worldData.getDayTime() + 24000L; TimeSkipEvent event = new TimeSkipEvent(this.getWorld(), TimeSkipEvent.SkipReason.NIGHT_SKIP, (l - l % 24000L) - this.getDayTime()); if (this.getGameRules().getBoolean(GameRules.DO_DAYLIGHT_CYCLE)) { -@@ -1030,9 +1037,9 @@ public class WorldServer extends World implements GeneratorAccessSeed { +@@ -1038,9 +1045,9 @@ public class WorldServer extends World implements GeneratorAccessSeed { } private void wakeupPlayers() { @@ -60,7 +60,7 @@ index 4d47cca6db7a771677c31ade9425ed3ad83393ea..17d728bf4f8393defd0a6f274d32f2ce } // Paper start - optimise random block ticking -@@ -1832,8 +1839,9 @@ public class WorldServer extends World implements GeneratorAccessSeed { +@@ -1840,8 +1847,9 @@ public class WorldServer extends World implements GeneratorAccessSeed { // Spigot start if ( entity instanceof EntityHuman ) { @@ -71,7 +71,7 @@ index 4d47cca6db7a771677c31ade9425ed3ad83393ea..17d728bf4f8393defd0a6f274d32f2ce for (Object o : worldData.data.values() ) { if ( o instanceof WorldMap ) -@@ -1850,7 +1858,7 @@ public class WorldServer extends World implements GeneratorAccessSeed { +@@ -1858,7 +1866,7 @@ public class WorldServer extends World implements GeneratorAccessSeed { } } } diff --git a/patches/server/0031-Stop-wasting-resources-on-JsonList-get.patch b/patches/server/0031-Stop-wasting-resources-on-JsonList-get.patch index 491f11f0..cda17655 100644 --- a/patches/server/0031-Stop-wasting-resources-on-JsonList-get.patch +++ b/patches/server/0031-Stop-wasting-resources-on-JsonList-get.patch @@ -55,10 +55,10 @@ index 1fc0139cb9694ddea41f57d95774c3b47e8530c5..d683e3e509cc21d007d3e32f68235cfa Throwable throwable = null; diff --git a/src/main/java/net/minecraft/server/PlayerList.java b/src/main/java/net/minecraft/server/PlayerList.java -index 14d8492c405db32e454bc363207a127167432a61..f354712e8e1cd359bc8fb0461f30214b8db24112 100644 +index 8b3b0dd9f67a0462737d0c2d61948f33840fceb1..cf53c8fe805764e995cab8eced00f10f9c52fd8e 100644 --- a/src/main/java/net/minecraft/server/PlayerList.java +++ b/src/main/java/net/minecraft/server/PlayerList.java -@@ -647,6 +647,7 @@ public abstract class PlayerList { +@@ -648,6 +648,7 @@ public abstract class PlayerList { GameProfileBanEntry gameprofilebanentry; if (getProfileBans().isBanned(gameprofile) && (gameprofilebanentry = getProfileBans().get(gameprofile)) != null) { // Paper end @@ -66,7 +66,7 @@ index 14d8492c405db32e454bc363207a127167432a61..f354712e8e1cd359bc8fb0461f30214b chatmessage = new ChatMessage("multiplayer.disconnect.banned.reason", new Object[]{gameprofilebanentry.getReason()}); if (gameprofilebanentry.getExpires() != null) { -@@ -654,7 +655,11 @@ public abstract class PlayerList { +@@ -655,7 +656,11 @@ public abstract class PlayerList { } // return chatmessage; diff --git a/patches/server/0032-Fix-LightEngineThreaded-memory-leak.patch b/patches/server/0032-Fix-LightEngineThreaded-memory-leak.patch index 230d51cd..75092a23 100644 --- a/patches/server/0032-Fix-LightEngineThreaded-memory-leak.patch +++ b/patches/server/0032-Fix-LightEngineThreaded-memory-leak.patch @@ -18,10 +18,10 @@ index 001ac05cf26237eec8a77c476e678ff6d0840311..7b4935dd8c54f5fcb4f26b96c270d3e4 return this.size == 0 && this.pendingTasks.isEmpty(); } diff --git a/src/main/java/net/minecraft/server/WorldServer.java b/src/main/java/net/minecraft/server/WorldServer.java -index 17d728bf4f8393defd0a6f274d32f2ce926232a3..789e885eded90f1827332e0b4000c35b78ec2661 100644 +index 1196b482d33e655eb4aa5ea6b66326f12c4363a4..be5bf0d2ebf4723a5a892f9f51aa18ea74f82fd1 100644 --- a/src/main/java/net/minecraft/server/WorldServer.java +++ b/src/main/java/net/minecraft/server/WorldServer.java -@@ -1818,6 +1818,7 @@ public class WorldServer extends World implements GeneratorAccessSeed { +@@ -1826,6 +1826,7 @@ public class WorldServer extends World implements GeneratorAccessSeed { } // Paper end diff --git a/patches/server/0033-Respect-PlayerKickEvent-leaveMessage.patch b/patches/server/0033-Respect-PlayerKickEvent-leaveMessage.patch index 21c03323..853d27be 100644 --- a/patches/server/0033-Respect-PlayerKickEvent-leaveMessage.patch +++ b/patches/server/0033-Respect-PlayerKickEvent-leaveMessage.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Respect PlayerKickEvent leaveMessage diff --git a/src/main/java/net/minecraft/server/PlayerConnection.java b/src/main/java/net/minecraft/server/PlayerConnection.java -index ca190409b6718607183df2e86f0b4be98c9b6c33..aed9a2d151dad500e30d1871e059adec712fa450 100644 +index 1471785da53a18edf31a20212f3cc6c19de92822..8bb500513b8d3baf2b08137d7b31737792265608 100644 --- a/src/main/java/net/minecraft/server/PlayerConnection.java +++ b/src/main/java/net/minecraft/server/PlayerConnection.java @@ -329,7 +329,7 @@ public class PlayerConnection implements PacketListenerPlayIn { @@ -17,7 +17,7 @@ index ca190409b6718607183df2e86f0b4be98c9b6c33..aed9a2d151dad500e30d1871e059adec this.networkManager.stopReading(); MinecraftServer minecraftserver = this.minecraftServer; NetworkManager networkmanager = this.networkManager; -@@ -1759,6 +1759,11 @@ public class PlayerConnection implements PacketListenerPlayIn { +@@ -1784,6 +1784,11 @@ public class PlayerConnection implements PacketListenerPlayIn { @Override public void a(IChatBaseComponent ichatbasecomponent) { @@ -29,7 +29,7 @@ index ca190409b6718607183df2e86f0b4be98c9b6c33..aed9a2d151dad500e30d1871e059adec // CraftBukkit start - Rarely it would send a disconnect line twice if (this.processedDisconnect) { return; -@@ -1774,7 +1779,7 @@ public class PlayerConnection implements PacketListenerPlayIn { +@@ -1799,7 +1804,7 @@ public class PlayerConnection implements PacketListenerPlayIn { */ this.player.p(); @@ -39,10 +39,10 @@ index ca190409b6718607183df2e86f0b4be98c9b6c33..aed9a2d151dad500e30d1871e059adec this.minecraftServer.getPlayerList().sendMessage(CraftChatMessage.fromString(quitMessage)); } diff --git a/src/main/java/net/minecraft/server/PlayerList.java b/src/main/java/net/minecraft/server/PlayerList.java -index f354712e8e1cd359bc8fb0461f30214b8db24112..7e42654873195d17c9a5a2a718216a943533e658 100644 +index cf53c8fe805764e995cab8eced00f10f9c52fd8e..c094d27c2d46e75212b0742040a7f57bd0406943 100644 --- a/src/main/java/net/minecraft/server/PlayerList.java +++ b/src/main/java/net/minecraft/server/PlayerList.java -@@ -499,6 +499,11 @@ public abstract class PlayerList { +@@ -500,6 +500,11 @@ public abstract class PlayerList { } public String disconnect(EntityPlayer entityplayer) { // CraftBukkit - return string @@ -54,7 +54,7 @@ index f354712e8e1cd359bc8fb0461f30214b8db24112..7e42654873195d17c9a5a2a718216a94 WorldServer worldserver = entityplayer.getWorldServer(); entityplayer.a(StatisticList.LEAVE_GAME); -@@ -598,7 +603,7 @@ public abstract class PlayerList { +@@ -599,7 +604,7 @@ public abstract class PlayerList { cserver.getScoreboardManager().removePlayer(entityplayer.getBukkitEntity()); // CraftBukkit end diff --git a/patches/server/0042-Configurable-flight-checks.patch b/patches/server/0042-Configurable-flight-checks.patch index dd1a1643..c6904d89 100644 --- a/patches/server/0042-Configurable-flight-checks.patch +++ b/patches/server/0042-Configurable-flight-checks.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Configurable flight checks diff --git a/src/main/java/net/minecraft/server/PlayerConnection.java b/src/main/java/net/minecraft/server/PlayerConnection.java -index aed9a2d151dad500e30d1871e059adec712fa450..2d10a3b5aa073ebc7e51beb428f707d6fbfc3001 100644 +index 8bb500513b8d3baf2b08137d7b31737792265608..d895a1366c5f6f526c78bab195559ce159d2d28d 100644 --- a/src/main/java/net/minecraft/server/PlayerConnection.java +++ b/src/main/java/net/minecraft/server/PlayerConnection.java @@ -179,7 +179,7 @@ public class PlayerConnection implements PacketListenerPlayIn { diff --git a/patches/server/0053-Configurable-movement-checks.patch b/patches/server/0053-Configurable-movement-checks.patch index 64a010b7..63016409 100644 --- a/patches/server/0053-Configurable-movement-checks.patch +++ b/patches/server/0053-Configurable-movement-checks.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Configurable movement checks diff --git a/src/main/java/net/minecraft/server/PlayerConnection.java b/src/main/java/net/minecraft/server/PlayerConnection.java -index 2d10a3b5aa073ebc7e51beb428f707d6fbfc3001..06bd1dd8faa025b4353ff8e68df5f3e7c4db760a 100644 +index d895a1366c5f6f526c78bab195559ce159d2d28d..47ce63e1ea8ae2d6700330934598daa56450ce1c 100644 --- a/src/main/java/net/minecraft/server/PlayerConnection.java +++ b/src/main/java/net/minecraft/server/PlayerConnection.java @@ -449,7 +449,7 @@ public class PlayerConnection implements PacketListenerPlayIn { @@ -26,7 +26,7 @@ index 2d10a3b5aa073ebc7e51beb428f707d6fbfc3001..06bd1dd8faa025b4353ff8e68df5f3e7 flag1 = true; // Tuinity - diff on change, this should be moved wrongly PlayerConnection.LOGGER.warn("{} (vehicle of {}) moved wrongly! {}", entity.getDisplayName().getString(), this.player.getDisplayName().getString(), Math.sqrt(d10)); } -@@ -1199,7 +1199,7 @@ public class PlayerConnection implements PacketListenerPlayIn { +@@ -1224,7 +1224,7 @@ public class PlayerConnection implements PacketListenerPlayIn { if (!this.player.H() && (!this.player.getWorldServer().getGameRules().getBoolean(GameRules.DISABLE_ELYTRA_MOVEMENT_CHECK) || !this.player.isGliding())) { float f2 = this.player.isGliding() ? 300.0F : 100.0F; @@ -35,7 +35,7 @@ index 2d10a3b5aa073ebc7e51beb428f707d6fbfc3001..06bd1dd8faa025b4353ff8e68df5f3e7 // CraftBukkit end PlayerConnection.LOGGER.warn("{} moved too quickly! {},{},{}", this.player.getDisplayName().getString(), d7, d8, d9); this.a(this.player.locX(), this.player.locY(), this.player.locZ(), this.player.yaw, this.player.pitch); -@@ -1265,7 +1265,7 @@ public class PlayerConnection implements PacketListenerPlayIn { +@@ -1290,7 +1290,7 @@ public class PlayerConnection implements PacketListenerPlayIn { d11 = d7 * d7 + d8 * d8 + d9 * d9; boolean flag1 = false; diff --git a/patches/server/0058-add-config-for-logging-login-location.patch b/patches/server/0058-add-config-for-logging-login-location.patch index 49621ba1..8103a53c 100644 --- a/patches/server/0058-add-config-for-logging-login-location.patch +++ b/patches/server/0058-add-config-for-logging-login-location.patch @@ -5,10 +5,10 @@ Subject: [PATCH] add config for logging login location diff --git a/src/main/java/net/minecraft/server/PlayerList.java b/src/main/java/net/minecraft/server/PlayerList.java -index 7e42654873195d17c9a5a2a718216a943533e658..fd2fe2f5e53f34957f80223e1694a57308de4016 100644 +index c094d27c2d46e75212b0742040a7f57bd0406943..c5b617c2a20163fddcf79a5493a76cb675eab834 100644 --- a/src/main/java/net/minecraft/server/PlayerList.java +++ b/src/main/java/net/minecraft/server/PlayerList.java -@@ -395,7 +395,14 @@ public abstract class PlayerList { +@@ -396,7 +396,14 @@ public abstract class PlayerList { } // Paper end // CraftBukkit - Moved from above, added world diff --git a/upstream/Empirecraft b/upstream/Empirecraft index bbc8d297..e8696c6d 160000 --- a/upstream/Empirecraft +++ b/upstream/Empirecraft @@ -1 +1 @@ -Subproject commit bbc8d297dbcb1183997ec1b56f774319d079ba31 +Subproject commit e8696c6d78fb6773480072803cab59145daa8669 diff --git a/upstream/Tuinity b/upstream/Tuinity index 502d57ba..2dfd22e4 160000 --- a/upstream/Tuinity +++ b/upstream/Tuinity @@ -1 +1 @@ -Subproject commit 502d57ba8376333163a56c5491a46e408178d575 +Subproject commit 2dfd22e41c4d1822f6e813317e64ff7afdb33e80 diff --git a/upstreamCommits/Empirecraft b/upstreamCommits/Empirecraft index 303829aa..f9d80edd 100644 --- a/upstreamCommits/Empirecraft +++ b/upstreamCommits/Empirecraft @@ -1 +1 @@ -bbc8d297dbcb1183997ec1b56f774319d079ba31 \ No newline at end of file +e8696c6d78fb6773480072803cab59145daa8669 \ No newline at end of file diff --git a/upstreamCommits/Tuinity b/upstreamCommits/Tuinity index 9d041861..7d0b0088 100644 --- a/upstreamCommits/Tuinity +++ b/upstreamCommits/Tuinity @@ -1 +1 @@ -502d57ba8376333163a56c5491a46e408178d575 \ No newline at end of file +2dfd22e41c4d1822f6e813317e64ff7afdb33e80 \ No newline at end of file