diff --git a/gradle.properties b/gradle.properties index 7606aa0..f0efe1c 100644 --- a/gradle.properties +++ b/gradle.properties @@ -5,4 +5,4 @@ org.gradle.vfs.watch=false group=wtf.etil.mirai version=1.19.2-R0.1-SNAPSHOT mcVersion=1.19.2 -pufferfishRef=58865aa0d59aa6f459d4256f78917e97428a6124 \ No newline at end of file +pufferfishRef=9d9a0e1a32466455cd3c3eff5b673a9e177491d6 \ No newline at end of file diff --git a/patches/api/0001-Mirai-Configuration.patch b/patches/api/0001-Mirai-Configuration.patch index 7dce134..5a74cac 100644 --- a/patches/api/0001-Mirai-Configuration.patch +++ b/patches/api/0001-Mirai-Configuration.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Mirai Configuration diff --git a/src/main/java/org/bukkit/Server.java b/src/main/java/org/bukkit/Server.java -index da5cab4246bd253fcc4e4d9574bdae1867ebb5ab..61026efa7aa6f60f3bc7f137164734bc08c1bc96 100644 +index e43fef0152468944d8a33036344a43e95fe58476..0aa8e0b5f0e5e93114c4ad65e9d9254f7dcd9c12 100644 --- a/src/main/java/org/bukkit/Server.java +++ b/src/main/java/org/bukkit/Server.java -@@ -1948,6 +1948,18 @@ public interface Server extends PluginMessageRecipient, net.kyori.adventure.audi +@@ -1969,6 +1969,18 @@ public interface Server extends PluginMessageRecipient, net.kyori.adventure.audi } // Paper end diff --git a/patches/api/0003-Add-last-tick-time-API.patch b/patches/api/0003-Add-last-tick-time-API.patch index daa8df7..d3e4b37 100644 --- a/patches/api/0003-Add-last-tick-time-API.patch +++ b/patches/api/0003-Add-last-tick-time-API.patch @@ -7,10 +7,10 @@ Original code by YatopiaMC, licensed under MIT You can find the original code on https://github.com/YatopiaMC/Yatopia diff --git a/src/main/java/org/bukkit/Bukkit.java b/src/main/java/org/bukkit/Bukkit.java -index 840aaf9e8fc828b5a7ea02252038c6524680f2e0..994e81359154fc52392fe64cbe5f17a7a67e66c0 100644 +index 232c08c9a588d957d90f198ce479e57615c6e650..bfa71be59dd84459bd420ace2d6694e1d80aee81 100644 --- a/src/main/java/org/bukkit/Bukkit.java +++ b/src/main/java/org/bukkit/Bukkit.java -@@ -2410,6 +2410,16 @@ public final class Bukkit { +@@ -2430,6 +2430,16 @@ public final class Bukkit { return server.isStopping(); } @@ -28,10 +28,10 @@ index 840aaf9e8fc828b5a7ea02252038c6524680f2e0..994e81359154fc52392fe64cbe5f17a7 * Returns the {@link com.destroystokyo.paper.entity.ai.MobGoals} manager * diff --git a/src/main/java/org/bukkit/Server.java b/src/main/java/org/bukkit/Server.java -index 61026efa7aa6f60f3bc7f137164734bc08c1bc96..f25e6808c9ce7276c3e49c6ad03eda5ffa35e5f8 100644 +index 0aa8e0b5f0e5e93114c4ad65e9d9254f7dcd9c12..259209a999b80542a21ce6083301d3848d4006af 100644 --- a/src/main/java/org/bukkit/Server.java +++ b/src/main/java/org/bukkit/Server.java -@@ -2107,6 +2107,26 @@ public interface Server extends PluginMessageRecipient, net.kyori.adventure.audi +@@ -2128,6 +2128,26 @@ public interface Server extends PluginMessageRecipient, net.kyori.adventure.audi */ boolean isStopping(); diff --git a/patches/api/0008-Set-BlockData-without-light-updates.patch b/patches/api/0008-Set-BlockData-without-light-updates.patch deleted file mode 100644 index 48ca5c9..0000000 --- a/patches/api/0008-Set-BlockData-without-light-updates.patch +++ /dev/null @@ -1,43 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: Tom -Date: Fri, 12 Aug 2022 08:20:02 -0500 -Subject: [PATCH] Set BlockData without light updates - -Copyright (c) 2021 Tom Miller - -Original license: MIT -Original project: https://github.com/Cryptite/Slice - -diff --git a/src/main/java/org/bukkit/block/Block.java b/src/main/java/org/bukkit/block/Block.java -index 9930ebe7a23d306c602840fd43652fbdaba481b3..ed65bb8867bc2b8e67726dee07a82ac3671b0306 100644 ---- a/src/main/java/org/bukkit/block/Block.java -+++ b/src/main/java/org/bukkit/block/Block.java -@@ -297,6 +297,28 @@ public interface Block extends Metadatable, net.kyori.adventure.translation.Tran - */ - void setBlockData(@NotNull BlockData data, boolean applyPhysics); - -+ /** -+ * Sets the complete data for this block -+ * -+ *
-+ * Note that applyPhysics = false is not in general safe. It should only be -+ * used when you need to avoid triggering a physics update of neighboring -+ * blocks, for example when creating a {@link Bisected} block. If you are -+ * using a custom populator, then this parameter may also be required to -+ * prevent triggering infinite chunk loads on border blocks. This method -+ * should NOT be used to "hack" physics by placing blocks in impossible -+ * locations. Such blocks are liable to be removed on various events such as -+ * world upgrades. Furthermore setting large amounts of such blocks in close -+ * proximity may overload the server physics engine if an update is -+ * triggered at a later point. If this occurs, the resulting behavior is -+ * undefined. -+ * -+ * @param data new block specific data -+ * @param applyPhysics false to cancel physics from the changed block -+ * @param checkLight false to prevent a light-check update -+ */ -+ void setBlockData(@NotNull BlockData data, boolean applyPhysics, boolean checkLight); -+ - /** - * Sets the type of this block - * diff --git a/patches/api/0009-Set-multiple-Team-settings-at-once.patch b/patches/api/0008-Set-multiple-Team-settings-at-once.patch similarity index 100% rename from patches/api/0009-Set-multiple-Team-settings-at-once.patch rename to patches/api/0008-Set-multiple-Team-settings-at-once.patch diff --git a/patches/api/0010-Smooth-Teleports.patch b/patches/api/0009-Smooth-Teleports.patch similarity index 89% rename from patches/api/0010-Smooth-Teleports.patch rename to patches/api/0009-Smooth-Teleports.patch index f44c0e7..dc7fe5c 100644 --- a/patches/api/0010-Smooth-Teleports.patch +++ b/patches/api/0009-Smooth-Teleports.patch @@ -9,10 +9,10 @@ Original license: MIT Original project: https://github.com/Cryptite/Slice diff --git a/src/main/java/org/bukkit/entity/Player.java b/src/main/java/org/bukkit/entity/Player.java -index 5e51bc9176b481ec70fd7e5ac23d04d59f8d1a9a..5e79e8fd5d59bb8e372a7b376daa4684285b729f 100644 +index 1d98abff1ad0116f7a2599f078aa730cb84843c1..f874819cd0f15c77a032345ac7985cd3d3aa4b25 100644 --- a/src/main/java/org/bukkit/entity/Player.java +++ b/src/main/java/org/bukkit/entity/Player.java -@@ -2739,6 +2739,19 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM +@@ -2763,6 +2763,19 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM String getClientBrandName(); // Paper end diff --git a/patches/server/0001-Mirai-Branding-Changes.patch b/patches/server/0001-Mirai-Branding-Changes.patch index d81d04d..a3ca6c4 100644 --- a/patches/server/0001-Mirai-Branding-Changes.patch +++ b/patches/server/0001-Mirai-Branding-Changes.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Mirai Branding Changes diff --git a/build.gradle.kts b/build.gradle.kts -index 7074295d7399d03e259598bb4bfa0f21434d74be..b3b74bfee4a568697f36d6fab9f77652911c75ff 100644 +index f0d22a733e3b97fb959cd566fb6c93c6d5681e16..65441b943a97f8aa453f31bf5cf7f87862fdcc07 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -9,7 +9,7 @@ plugins { @@ -204,7 +204,7 @@ index bf42969859545a8a520923ef1836ffa4a5cc24a0..00000000000000000000000000000000 - } -} diff --git a/src/main/java/com/destroystokyo/paper/console/PaperConsole.java b/src/main/java/com/destroystokyo/paper/console/PaperConsole.java -index b0390eedb507d27426d1e1d73bd4ab63aec89ebe..509a9a5326d94200ca3d7a83ae47c6bb093d6969 100644 +index c5d5648f4ca603ef2b1df723b58f9caf4dd3c722..d0a342ce8a5cc1a12ecab7969187166fe3597708 100644 --- a/src/main/java/com/destroystokyo/paper/console/PaperConsole.java +++ b/src/main/java/com/destroystokyo/paper/console/PaperConsole.java @@ -17,7 +17,7 @@ public final class PaperConsole extends SimpleTerminalConsole { @@ -217,10 +217,10 @@ index b0390eedb507d27426d1e1d73bd4ab63aec89ebe..509a9a5326d94200ca3d7a83ae47c6bb .completer(new ConsoleCommandCompleter(this.server)) .option(LineReader.Option.COMPLETE_IN_WORD, true); diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index 92f685b1b6015cdd3e6c50fd39a79e2ad187fc91..9b64602e5ce5100dd1d467d404b4a6486ccc2faa 100644 +index af9da39dffda01325af2ab3dd8b5e1efb18e013a..da9623b90f3d25dc4c3e3aa269c4ccd2c8a0a52c 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java -@@ -913,7 +913,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop { @@ -75,7 +75,7 @@ index 85882eeb86d7b74db0219aa65783946d8083885d..06bcf27bf42ad1b6259999c25fe7ae80 protected static final int DEFAULT_CAPACITY = 4; protected E[] storage; -@@ -200,7 +200,7 @@ public final class ChunkEntitySlices { +@@ -309,7 +309,7 @@ public final class ChunkEntitySlices { } public BasicEntityList(final int cap) { @@ -84,7 +84,7 @@ index 85882eeb86d7b74db0219aa65783946d8083885d..06bcf27bf42ad1b6259999c25fe7ae80 } public boolean isEmpty() { -@@ -212,7 +212,7 @@ public final class ChunkEntitySlices { +@@ -321,7 +321,7 @@ public final class ChunkEntitySlices { } private void resize() { @@ -237,7 +237,7 @@ index a2920b8a9eff77d9c5d1d7f70ad3abdacba8f0fa..f7f19e360d712211625ff28e92f83949 protected CipherBase(Cipher cipher) { this.cipher = cipher; diff --git a/src/main/java/net/minecraft/network/Connection.java b/src/main/java/net/minecraft/network/Connection.java -index 2a26d03fba2f3b37f176be9e47954ef9a6cd7b3e..969968cfcf2c2ed019fab3407b22d4974926bdd2 100644 +index 6967c90c50ea75fb9dd5da808b2c8c8ea046ecec..2852c47afcba5633a747977e250e60a5d28b0e1e 100644 --- a/src/main/java/net/minecraft/network/Connection.java +++ b/src/main/java/net/minecraft/network/Connection.java @@ -311,7 +311,7 @@ public class Connection extends SimpleChannelInboundHandler> { @@ -276,10 +276,10 @@ index 5962f7a2b185d7d54a0f9e341a4fdf6e6f1c1ec5..0b677d128cbd108bb58d74d3cfe60155 OptionSpec optionspec11 = optionparser.accepts("port").withRequiredArg().ofType(Integer.class).defaultsTo(-1, new Integer[0]); OptionSpec optionspec12 = optionparser.accepts("serverId").withRequiredArg(); diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index 9b64602e5ce5100dd1d467d404b4a6486ccc2faa..e5e88728d2d3b4ac9e266294999af84aee4aeae4 100644 +index da9623b90f3d25dc4c3e3aa269c4ccd2c8a0a52c..7ace6c1e81519b3e4f673d23627ca603fecb646d 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java -@@ -1374,8 +1374,8 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop> list = Lists.newArrayList(); @@ -304,10 +304,10 @@ index 88152988425b7b02ec5ce229ba4c24b40e030329..a0317be1eea29e4e911976e0106563cf for (int j = 0; j < i; ++j) { diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index 8ed9f14f1ca71111a8215b28821bd5e398c0d0a6..31a4dac824b3d98e05cef5b96473a8a179516a01 100644 +index f8750675044708e71dbf6293be6ce36bd6c510ca..413c5891e1affc89f2d4e63214ef6621d63f83b3 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java -@@ -877,7 +877,7 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -907,7 +907,7 @@ public class ServerLevel extends Level implements WorldGenLevel { BlockPos blockposition2 = blockposition.set(j + randomX, randomY, k + randomZ); BlockState iblockdata = com.destroystokyo.paper.util.maplist.IBlockDataList.getBlockDataFromRaw(raw); @@ -316,7 +316,7 @@ index 8ed9f14f1ca71111a8215b28821bd5e398c0d0a6..31a4dac824b3d98e05cef5b96473a8a1 // We drop the fluid tick since LAVA is ALREADY TICKED by the above method (See LiquidBlock). // TODO CHECK ON UPDATE } -@@ -1132,7 +1132,7 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -1162,7 +1162,7 @@ public class ServerLevel extends Level implements WorldGenLevel { public static List getCurrentlyTickingEntities() { Entity ticking = currentlyTickingEntity.get(); @@ -364,7 +364,7 @@ index cc55cb14f2d0f656213be25a1e428132871ac5dd..69316c97dd898ecf1a72f032374ccd8e } } diff --git a/src/main/java/net/minecraft/server/network/ServerLoginPacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerLoginPacketListenerImpl.java -index 855eac5e6f3a99a2fc31ad0e02c496d4b5c60622..e7ff681368bcbda82ff9f783ce5d953c8dc194b8 100644 +index b607f5ccbce10570f827dd21eb38504f42781d2f..d6f1cbea24de82ada6083749f079401dbcca1ced 100644 --- a/src/main/java/net/minecraft/server/network/ServerLoginPacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerLoginPacketListenerImpl.java @@ -269,8 +269,8 @@ public class ServerLoginPacketListenerImpl implements TickablePacketListener, Se @@ -388,7 +388,7 @@ index 855eac5e6f3a99a2fc31ad0e02c496d4b5c60622..e7ff681368bcbda82ff9f783ce5d953c final String s; diff --git a/src/main/java/net/minecraft/server/players/PlayerList.java b/src/main/java/net/minecraft/server/players/PlayerList.java -index 5999d85e38951503fc83b40cfe39671921ae5088..c50d214eed0414e9b8dc3062d67dc9427c534ef0 100644 +index 06eda955f96b5fe2d08ed0d39229c7a6ebb88931..3fc95b7d7b41e078e1d219e29ada27aeab1320bf 100644 --- a/src/main/java/net/minecraft/server/players/PlayerList.java +++ b/src/main/java/net/minecraft/server/players/PlayerList.java @@ -741,7 +741,7 @@ public abstract class PlayerList { @@ -451,10 +451,10 @@ index c82bb38b5b1c9204daef21455723d21509ad1c44..4aa044ab8748c01b0022096733e5bacf private EquipmentSlot(EquipmentSlot.Type type, int entityId, int armorStandId, String name) { this.type = type; diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index ded69bc892aaf35cc57a562116bb623c07b08550..d33d551838ea12f9f7f4416b9e7b5111e86ad82e 100644 +index 26efc49b4530112c8bd3f580ce375ab4203c9609..c0e316582e085873c05a76c16e612eabd2e8cf2a 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java -@@ -3067,7 +3067,7 @@ public abstract class LivingEntity extends Entity { +@@ -3070,7 +3070,7 @@ public abstract class LivingEntity extends Entity { @Nullable private Map collectEquipmentChanges() { Map map = null; @@ -464,7 +464,7 @@ index ded69bc892aaf35cc57a562116bb623c07b08550..d33d551838ea12f9f7f4416b9e7b5111 for (int j = 0; j < i; ++j) { diff --git a/src/main/java/net/minecraft/world/entity/Mob.java b/src/main/java/net/minecraft/world/entity/Mob.java -index 5ab1f5d36a61e7a7fe8da4e74f75963ea6432101..5c0b53b5ddc2f5f18850f72fa562938fe108b244 100644 +index e89b88eb3d4202ea7ff043dc9e92163332cd10d3..78b1fc7b4cacfc98a9e3e6ba93e17c3307d5449c 100644 --- a/src/main/java/net/minecraft/world/entity/Mob.java +++ b/src/main/java/net/minecraft/world/entity/Mob.java @@ -1027,7 +1027,7 @@ public abstract class Mob extends LivingEntity { @@ -583,12 +583,12 @@ index 2f9f15d99f8b31e9f13f7f32378b2a9e09bcb5e5..b9579e3d1610ddcb5251baa2dd9462e0 @Override diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java -index 388a153113d87ba99515828c6d535110b4413c7c..6014e93a0698ddb283778478fd64ee1c8400a27b 100644 +index 0277633fd328ef9993fea4ac29df83b5b00c0f42..0948242ecebe507c90af343faeffc7c9388fa7e4 100644 --- a/src/main/java/net/minecraft/world/level/Level.java +++ b/src/main/java/net/minecraft/world/level/Level.java -@@ -1522,7 +1522,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable { +@@ -1521,7 +1521,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable { public org.bukkit.entity.Entity[] getChunkEntities(int chunkX, int chunkZ) { - io.papermc.paper.world.ChunkEntitySlices slices = this.entitySliceManager.getChunk(chunkX, chunkZ); + io.papermc.paper.world.ChunkEntitySlices slices = ((ServerLevel)this).getEntityLookup().getChunk(chunkX, chunkZ); if (slices == null) { - return new org.bukkit.entity.Entity[0]; + return me.titaniumtown.Constants.EMPTY_bukkit_entity_arr; // JettPack @@ -627,7 +627,7 @@ index 492e3ffd6a4588a521486db631f3e8b2a25b74ec..111635d43ac0b93e089f5a115521a502 @Override diff --git a/src/main/java/net/minecraft/world/level/block/entity/AbstractFurnaceBlockEntity.java b/src/main/java/net/minecraft/world/level/block/entity/AbstractFurnaceBlockEntity.java -index 4977f3fad3bfc12fd4c5f9fbe8beea2895247c57..f86ac933490d50179e09fa61e2f6e5af339249c3 100644 +index c6aeda6497cb59673b469588142f5f15a338389d..ebf718cea97d4ff88e888675eeceeca253dc01cb 100644 --- a/src/main/java/net/minecraft/world/level/block/entity/AbstractFurnaceBlockEntity.java +++ b/src/main/java/net/minecraft/world/level/block/entity/AbstractFurnaceBlockEntity.java @@ -64,7 +64,7 @@ public abstract class AbstractFurnaceBlockEntity extends BaseContainerBlockEntit @@ -666,10 +666,10 @@ index 16d2aa4556bc9f32a2def7f9ca282aa3fa23fb87..290a0d35e1e4ca8b7281aa6d8cdb66da @Nullable diff --git a/src/main/java/org/bukkit/craftbukkit/CraftEquipmentSlot.java b/src/main/java/org/bukkit/craftbukkit/CraftEquipmentSlot.java -index e91714a66f582c14184ddb5e4bf2443d3ed45efb..375107cbc51b907342379bb5539500d76fb76a92 100644 +index 402a238cf502003a232bb95473bd13e59e067fab..6ab50d7ed8481d14152f19a4b63a3d96e52a40a7 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftEquipmentSlot.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftEquipmentSlot.java -@@ -4,8 +4,8 @@ import org.bukkit.inventory.EquipmentSlot; +@@ -5,8 +5,8 @@ import org.bukkit.inventory.EquipmentSlot; public class CraftEquipmentSlot { diff --git a/patches/server/0007-lithium-CompactSineLUT.patch b/patches/server/0007-lithium-CompactSineLUT.patch index e060fa1..d022f56 100644 --- a/patches/server/0007-lithium-CompactSineLUT.patch +++ b/patches/server/0007-lithium-CompactSineLUT.patch @@ -8,7 +8,7 @@ You can find the original code on https://github.com/CaffeineMC/lithium-fabric ( diff --git a/src/main/java/me/jellysquid/mods/lithium/common/util/math/CompactSineLUT.java b/src/main/java/me/jellysquid/mods/lithium/common/util/math/CompactSineLUT.java new file mode 100644 -index 0000000000000000000000000000000000000000..d2b00d9a91b60716d5f458048df3d944060eb749 +index 0000000000000000000000000000000000000000..b8c9cb28876c2c1781cd72870076d528b9647916 --- /dev/null +++ b/src/main/java/me/jellysquid/mods/lithium/common/util/math/CompactSineLUT.java @@ -0,0 +1,90 @@ @@ -67,12 +67,12 @@ index 0000000000000000000000000000000000000000..d2b00d9a91b60716d5f458048df3d944 + + // [VanillaCopy] MathHelper#sin(float) + public static float sin(float f) { -+ return lookup((int) (f * 10430.38) & 0xFFFF); ++ return lookup((int) (f * 10430.378f) & 0xFFFF); + } + + // [VanillaCopy] MathHelper#cos(float) + public static float cos(float f) { -+ return lookup((int) (f * 10430.38 + 16384.0) & 0xFFFF); ++ return lookup((int) (f * 10430.378f + 16384.0f) & 0xFFFF); + } + + private static float lookup(int index) { diff --git a/patches/server/0009-Add-last-tick-time-API.patch b/patches/server/0009-Add-last-tick-time-API.patch index bc7016d..f8793f9 100644 --- a/patches/server/0009-Add-last-tick-time-API.patch +++ b/patches/server/0009-Add-last-tick-time-API.patch @@ -7,19 +7,18 @@ Original code by YatopiaMC, licensed under MIT You can find the original code on https://github.com/YatopiaMC/Yatopia diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index e5e88728d2d3b4ac9e266294999af84aee4aeae4..98b9b07e24b50e7021546680baf2ddd86ce5bd98 100644 +index 7ace6c1e81519b3e4f673d23627ca603fecb646d..3378298b0c465c0df9618804c390930e875bcce3 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java -@@ -1122,6 +1122,8 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop optional = Optional.of(this.getFile("server-icon.png")).filter(File::isFile); diff --git a/src/main/java/net/minecraft/server/level/ServerChunkCache.java b/src/main/java/net/minecraft/server/level/ServerChunkCache.java -index 795691bcb61a7c2b4f903d8db3b6714908c78ac2..2bb545b505aa726b7ed7c757caed84bf0538782e 100644 +index 7266e6703d5cd0fea90ec88c74a7d4567f2420ae..16ee24bef4eb2184d821565665f3c1ddf0f3bb39 100644 --- a/src/main/java/net/minecraft/server/level/ServerChunkCache.java +++ b/src/main/java/net/minecraft/server/level/ServerChunkCache.java -@@ -1085,10 +1085,12 @@ public class ServerChunkCache extends ChunkSource { +@@ -1007,10 +1007,12 @@ public class ServerChunkCache extends ChunkSource { return runnable; } diff --git a/patches/server/0016-Don-t-create-new-random-instance.patch b/patches/server/0016-Don-t-create-new-random-instance.patch index 6bb5b4a..c497c44 100644 --- a/patches/server/0016-Don-t-create-new-random-instance.patch +++ b/patches/server/0016-Don-t-create-new-random-instance.patch @@ -7,10 +7,10 @@ Original code by PatinaMC, licensed under GNU General Public License v3.0 You can find the original code on https://github.com/PatinaMC/Patina diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index 94944ba458178f9e5b772224da329bb5d85f4394..56e5679a3910a6e5b25aeb0d3eb7420444296932 100644 +index af7acb628b84539b1ee5ef1934f75f091c4cd91e..707b803e4851b1cb00aa31de49e0961d403dbad5 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java -@@ -376,7 +376,7 @@ public class ServerPlayer extends Player { +@@ -361,7 +361,7 @@ public class ServerPlayer extends Player { long l = k * k; int i1 = l > 2147483647L ? Integer.MAX_VALUE : (int) l; int j1 = this.getCoprime(i1); @@ -19,7 +19,7 @@ index 94944ba458178f9e5b772224da329bb5d85f4394..56e5679a3910a6e5b25aeb0d3eb74204 for (int l1 = 0; l1 < i1; ++l1) { int i2 = (k1 + j1 * l1) % i1; -@@ -413,7 +413,7 @@ public class ServerPlayer extends Player { +@@ -398,7 +398,7 @@ public class ServerPlayer extends Player { long l = k * k; int i1 = l > 2147483647L ? Integer.MAX_VALUE : (int) l; int j1 = this.getCoprime(i1); diff --git a/patches/server/0021-Remove-Spigot-tick-limiter.patch b/patches/server/0021-Remove-Spigot-tick-limiter.patch index 053c05b..50fc51c 100644 --- a/patches/server/0021-Remove-Spigot-tick-limiter.patch +++ b/patches/server/0021-Remove-Spigot-tick-limiter.patch @@ -7,7 +7,7 @@ Original code by Titaniumtown, licensed under GNU General Public License v3.0 You can find the original code on https://gitlab.com/Titaniumtown/JettPack diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java -index 4b9db6c2e800c4ad8211afca79c2521a741dba1e..53149faf2b33d202809e259800b15a0d0c2dacf2 100644 +index 13aee2a785b3ddb481744277a25c1ab95e036d4a..7fc3c9892d69d14de694d5328fe17a971019cc54 100644 --- a/src/main/java/net/minecraft/world/level/Level.java +++ b/src/main/java/net/minecraft/world/level/Level.java @@ -176,8 +176,8 @@ public abstract class Level implements LevelAccessor, AutoCloseable { @@ -30,8 +30,8 @@ index 4b9db6c2e800c4ad8211afca79c2521a741dba1e..53149faf2b33d202809e259800b15a0d + //this.entityLimiter = new org.spigotmc.TickLimiter(spigotConfig.entityMaxTickTime); // JettPack - remove tick limiter + //this.tileLimiter = new org.spigotmc.TickLimiter(spigotConfig.tileMaxTickTime); // JettPack - remove tick limiter this.chunkPacketBlockController = this.paperConfig().anticheat.antiXray.enabled ? new com.destroystokyo.paper.antixray.ChunkPacketBlockControllerAntiXray(this, executor) : com.destroystokyo.paper.antixray.ChunkPacketBlockController.NO_OPERATION_INSTANCE; // Paper - Anti-Xray - this.entitySliceManager = new io.papermc.paper.world.EntitySliceManager((ServerLevel)this); // Paper } + diff --git a/src/main/java/org/spigotmc/SpigotWorldConfig.java b/src/main/java/org/spigotmc/SpigotWorldConfig.java index bbf15fbb889670e57bd86377590a1b3abe80b96d..ce61f9e8a835bc5e2d3815e337ed9785f9d06f04 100644 --- a/src/main/java/org/spigotmc/SpigotWorldConfig.java diff --git a/patches/server/0029-Spread-out-and-optimise-player-list-ticksSpread-out-.patch b/patches/server/0029-Spread-out-and-optimise-player-list-ticksSpread-out-.patch index 48db014..09ef800 100644 --- a/patches/server/0029-Spread-out-and-optimise-player-list-ticksSpread-out-.patch +++ b/patches/server/0029-Spread-out-and-optimise-player-list-ticksSpread-out-.patch @@ -8,7 +8,7 @@ Original code by PurpurMC, licensed under MIT You can find the original code on https://github.com/PurpurMC/Purpur diff --git a/src/main/java/net/minecraft/server/players/PlayerList.java b/src/main/java/net/minecraft/server/players/PlayerList.java -index 95455c3a786a746dbf14095c89dfd2b7bdb1e4da..32b74aa339db55d187824984b1bd82ccb0953167 100644 +index 532de4002d797c4d049f1f94ee588c20f80f6b69..b4158aed45ec60be71251d5b90e340f790e239fb 100644 --- a/src/main/java/net/minecraft/server/players/PlayerList.java +++ b/src/main/java/net/minecraft/server/players/PlayerList.java @@ -1038,22 +1038,22 @@ public abstract class PlayerList { @@ -48,10 +48,10 @@ index 95455c3a786a746dbf14095c89dfd2b7bdb1e4da..32b74aa339db55d187824984b1bd82cc public void broadcastAll(Packet packet) { diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index 4ba927b4585ca56337fa763d60d21de3b58bb2f7..b85ed871a502d0793b4991ed6e7d3f9ad6bba027 100644 +index 968aa80b57a31d89852c6f4bc0ec5ed4a98c6530..d0fc98ed0530a99adeb3c126b1040e40bb97685b 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -@@ -1840,7 +1840,13 @@ public class CraftPlayer extends CraftHumanEntity implements Player { +@@ -1883,7 +1883,13 @@ public class CraftPlayer extends CraftHumanEntity implements Player { @Override public boolean canSee(org.bukkit.entity.Entity entity) { diff --git a/patches/server/0034-Dont-send-useless-entity-packets.patch b/patches/server/0034-Dont-send-useless-entity-packets.patch index c85c01b..d4755f2 100644 --- a/patches/server/0034-Dont-send-useless-entity-packets.patch +++ b/patches/server/0034-Dont-send-useless-entity-packets.patch @@ -7,7 +7,7 @@ Original code by PurpurMC, licensed under MIT You can find the original code on https://github.com/PurpurMC/Purpur diff --git a/src/main/java/net/minecraft/server/level/ServerEntity.java b/src/main/java/net/minecraft/server/level/ServerEntity.java -index a0317be1eea29e4e911976e0106563cf49db1e6b..4197961b2f03a5151b396d0d09bf5cb9ab6481e7 100644 +index 9901ffe9de585a73e9ef32c700b1e8702f8786d3..aa1bd3423829900729d413a5f98f4a0b9aaf6135 100644 --- a/src/main/java/net/minecraft/server/level/ServerEntity.java +++ b/src/main/java/net/minecraft/server/level/ServerEntity.java @@ -181,6 +181,7 @@ public class ServerEntity { @@ -40,7 +40,7 @@ index a0317be1eea29e4e911976e0106563cf49db1e6b..4197961b2f03a5151b396d0d09bf5cb9 + public void removePairing(ServerPlayer player) { this.entity.stopSeenByPlayer(player); - // Pufferfish start - ensure main thread + player.connection.send(new ClientboundRemoveEntitiesPacket(new int[]{this.entity.getId()})); diff --git a/src/main/java/wtf/etil/mirai/MiraiConfig.java b/src/main/java/wtf/etil/mirai/MiraiConfig.java index 0f94e6a76ab2c323562231ffe58a7c18819e6b00..992ab312e6e2b8283ef8187bcbeeb35dd51858a1 100644 --- a/src/main/java/wtf/etil/mirai/MiraiConfig.java diff --git a/patches/server/0038-Add-5-second-tps-average-in-tps.patch b/patches/server/0038-Add-5-second-tps-average-in-tps.patch index d4c7008..742091a 100644 --- a/patches/server/0038-Add-5-second-tps-average-in-tps.patch +++ b/patches/server/0038-Add-5-second-tps-average-in-tps.patch @@ -29,7 +29,7 @@ index fa56cd09102a89692b42f1d14257990508c5c720..f9251183df72ddc56662fd3f02acf216 setListData(vector); } diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index fa185dba873f8a58378a5575bf4086905d2f430c..c25f0c98128c85ed4e867c6d842c8de28e0936fb 100644 +index 904ce75db06d3a50025bf758279e84346912ef6c..6cdced357fdcd5ea4ce0c63d29e39573a5f40f65 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java @@ -290,7 +290,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop -Date: Sun, 21 Nov 2021 03:01:00 +0100 -Subject: [PATCH] vmp: ingredient_matching - -Copyright (c) 2021-2022 ishland - -Original code by RelativityMC, licensed under MIT -You can find the original code on https://github.com/RelativityMC/VMP-fabric (Yarn mappings) - -diff --git a/src/main/java/net/minecraft/world/item/crafting/Ingredient.java b/src/main/java/net/minecraft/world/item/crafting/Ingredient.java -index 895c0f1600139e340aa22a7c398978add56fa706..bbf7d112b8020567f2c1d02ce0b2c1a22b2279d1 100644 ---- a/src/main/java/net/minecraft/world/item/crafting/Ingredient.java -+++ b/src/main/java/net/minecraft/world/item/crafting/Ingredient.java -@@ -12,9 +12,12 @@ import it.unimi.dsi.fastutil.ints.IntList; - import java.util.Arrays; - import java.util.Collection; - import java.util.Collections; -+import java.util.HashSet; // Mirai - import java.util.Iterator; - import java.util.List; -+import java.util.Set; // Mirai - import java.util.function.Predicate; -+import java.util.stream.Collectors; // Mirai - import java.util.stream.Stream; - import java.util.stream.StreamSupport; - import javax.annotation.Nullable; -@@ -38,6 +41,8 @@ public final class Ingredient implements Predicate { - @Nullable - private IntList stackingIds; - public boolean exact; // CraftBukkit -+ private Set matchingItems = null; // Mirai -+ private boolean isEmptyMatch = false; // Mirai - - public Ingredient(Stream entries) { - this.values = (Ingredient.Value[]) entries.toArray((i) -> { -@@ -65,32 +70,25 @@ public final class Ingredient implements Predicate { - if (itemstack == null) { - return false; - } else { -- this.dissolve(); -- if (this.itemStacks.length == 0) { -- return itemstack.isEmpty(); -- } else { -- ItemStack[] aitemstack = this.itemStacks; -- int i = aitemstack.length; -- -- for (int j = 0; j < i; ++j) { -- ItemStack itemstack1 = aitemstack[j]; -- -- // CraftBukkit start -- if (this.exact) { -- if (itemstack1.getItem() == itemstack.getItem() && ItemStack.tagMatches(itemstack, itemstack1)) { -- return true; -- } -- -- continue; -- } -- // CraftBukkit end -- if (itemstack1.is(itemstack.getItem())) { -- return true; -- } -- } -- -- return false; -+ // Mirai start -+ /** -+ * @author ishland -+ * @reason optimize test() -+ */ -+ Set matchingItems = this.matchingItems; -+ boolean isEmptyMatch = this.isEmptyMatch; -+ if (matchingItems == null) { -+ matchingItems = this.matchingItems = Arrays.stream(this.values) -+ .flatMap(entry -> entry.getItems().stream()) -+ .filter(itemstack1 -> !itemstack1.isEmpty()) -+ .map(ItemStack::getItem) -+ .collect(Collectors.toCollection(HashSet::new)); -+ isEmptyMatch = this.isEmptyMatch = this.matchingItems.isEmpty(); -+ } -+ if (itemstack.isEmpty()) { -+ return isEmptyMatch; - } -+ return matchingItems.contains(itemstack.getItem()); - } - } - diff --git a/patches/server/0055-vmp-spawn_density_cap.patch b/patches/server/0053-vmp-spawn_density_cap.patch similarity index 100% rename from patches/server/0055-vmp-spawn_density_cap.patch rename to patches/server/0053-vmp-spawn_density_cap.patch diff --git a/patches/server/0056-lithium-entity.fast_elytra_check.patch b/patches/server/0054-lithium-entity.fast_elytra_check.patch similarity index 84% rename from patches/server/0056-lithium-entity.fast_elytra_check.patch rename to patches/server/0054-lithium-entity.fast_elytra_check.patch index aed156b..34effd2 100644 --- a/patches/server/0056-lithium-entity.fast_elytra_check.patch +++ b/patches/server/0054-lithium-entity.fast_elytra_check.patch @@ -7,10 +7,10 @@ Original code by CaffeineMC, licensed under GNU Lesser General Public License v3 You can find the original code on https://github.com/CaffeineMC/lithium-fabric (Yarn mappings) diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index d33d551838ea12f9f7f4416b9e7b5111e86ad82e..3677f635f6fec3be02dce49f2585a0396b1af004 100644 +index c0e316582e085873c05a76c16e612eabd2e8cf2a..dbcabd230bd9bd070e157f35d098553f3ed06987 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java -@@ -3425,6 +3425,8 @@ public abstract class LivingEntity extends Entity { +@@ -3428,6 +3428,8 @@ public abstract class LivingEntity extends Entity { } private void updateFallFlying() { diff --git a/patches/server/0054-vmp-entity.iteration.patch b/patches/server/0054-vmp-entity.iteration.patch deleted file mode 100644 index b83547a..0000000 --- a/patches/server/0054-vmp-entity.iteration.patch +++ /dev/null @@ -1,112 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: ishland -Date: Sat, 1 Jan 2022 11:05:22 +0100 -Subject: [PATCH] vmp: entity.iteration - -Copyright (c) 2021-2022 ishland - -Original code by RelativityMC, licensed under MIT -You can find the original code on https://github.com/RelativityMC/VMP-fabric (Yarn mappings) - -diff --git a/src/main/java/com/ishland/vmp/common/general/collections/ITypeFilterableList.java b/src/main/java/com/ishland/vmp/common/general/collections/ITypeFilterableList.java -new file mode 100644 -index 0000000000000000000000000000000000000000..beaa0a60771b17b93e4074b272b503a2f6e4cf34 ---- /dev/null -+++ b/src/main/java/com/ishland/vmp/common/general/collections/ITypeFilterableList.java -@@ -0,0 +1,8 @@ -+package com.ishland.vmp.common.general.collections; -+ -+public interface ITypeFilterableList { -+ -+ Object[] getBackingArray(); -+ -+ -+} -\ No newline at end of file -diff --git a/src/main/java/net/minecraft/world/level/entity/EntitySection.java b/src/main/java/net/minecraft/world/level/entity/EntitySection.java -index e9aee7d11798c3bd990466f101e9e342686de11c..13ebaf6aede402f5f702aae6c1e44445b00cd9bb 100644 ---- a/src/main/java/net/minecraft/world/level/entity/EntitySection.java -+++ b/src/main/java/net/minecraft/world/level/entity/EntitySection.java -@@ -8,6 +8,10 @@ import net.minecraft.util.ClassInstanceMultiMap; - import net.minecraft.util.VisibleForDebug; - import net.minecraft.world.phys.AABB; - import org.slf4j.Logger; -+import com.ishland.vmp.common.general.collections.ITypeFilterableList; // Mirai -+import it.unimi.dsi.fastutil.objects.ObjectArrayList; // Mirai -+import net.minecraft.world.level.entity.EntityAccess; // Mirai -+import net.minecraft.world.level.entity.EntityTypeTest; // Mirai - - public class EntitySection { - private static final Logger LOGGER = LogUtils.getLogger(); -@@ -45,27 +49,62 @@ public class EntitySection { - return this.storage.remove(entity); - } - -+ // Mirai start -+ /** -+ * @author ishland -+ * @reason use array for iteration & inline math -+ */ - public void getEntities(AABB box, Consumer action) { -- for(T entityAccess : this.storage) { -- if (entityAccess.getBoundingBox().intersects(box)) { -- action.accept(entityAccess); -+ if (this.storage instanceof ITypeFilterableList iTypeFilterableList) { // use array for iteration -+ for (Object _entityLike : iTypeFilterableList.getBackingArray()) { -+ if (_entityLike != null) { -+ @SuppressWarnings("unchecked") T entityAccess = (T) _entityLike; -+ AABB box1 = entityAccess.getBoundingBox(); -+ if (box1.minX < box.maxX && box1.maxX > box.minX && box1.minY < box.maxY && box1.maxY > box.minY && box1.minZ < box.maxZ && box1.maxZ > box.minZ) { // inline math -+ action.accept(entityAccess); -+ } -+ } -+ } -+ } else { // fallback -+ for (T entityAccess : this.storage) { -+ AABB box1 = entityAccess.getBoundingBox(); -+ if (box1.minX < box.maxX && box1.maxX > box.minX && box1.minY < box.maxY && box1.maxY > box.minY && box1.minZ < box.maxZ && box1.maxZ > box.minZ) { // inline math -+ action.accept(entityAccess); -+ } - } - } -- - } - -+ /** -+ * @author ishland -+ * @reason use array for iteration & inline math -+ */ - public void getEntities(EntityTypeTest type, AABB box, Consumer action) { - Collection collection = this.storage.find(type.getBaseClass()); - if (!collection.isEmpty()) { -- for(T entityAccess : collection) { -- U entityAccess2 = (U)((EntityAccess)type.tryCast(entityAccess)); -- if (entityAccess2 != null && entityAccess.getBoundingBox().intersects(box)) { -- action.accept(entityAccess2); // Paper - decompile fix -+ if (collection instanceof ObjectArrayList objectArrayList) { // use array for iteration -+ for (Object _entityLike : objectArrayList.elements()) { -+ if (_entityLike != null) { -+ T entityAccess = (T) _entityLike; -+ U entityAccess2 = type.tryCast(entityAccess); -+ final AABB boundingBox = entityAccess.getBoundingBox(); -+ if (entityAccess2 != null && boundingBox.minX < box.maxX && boundingBox.maxX > box.minX && boundingBox.minY < box.maxY && boundingBox.maxY > box.minY && boundingBox.minZ < box.maxZ && boundingBox.maxZ > box.minZ) { // inline math -+ action.accept(entityAccess2); -+ } -+ } -+ } -+ } else { // fallback -+ for(T entityAccess : collection) { -+ U entityAccess2 = type.tryCast(entityAccess); -+ AABB box1 = entityAccess.getBoundingBox(); -+ if (entityAccess2 != null && box1.minX < box.maxX && box1.maxX > box.minX && box1.minY < box.maxY && box1.maxY > box.minY && box1.minZ < box.maxZ && box1.maxZ > box.minZ) { // inline math -+ action.accept(entityAccess2); -+ } - } - } -- - } - } -+ // Mirai end - - public boolean isEmpty() { - return this.storage.isEmpty(); diff --git a/patches/server/0057-lithium-profiler.patch b/patches/server/0055-lithium-profiler.patch similarity index 92% rename from patches/server/0057-lithium-profiler.patch rename to patches/server/0055-lithium-profiler.patch index 633d38c..a5b5b61 100644 --- a/patches/server/0057-lithium-profiler.patch +++ b/patches/server/0055-lithium-profiler.patch @@ -7,7 +7,7 @@ Original code by CaffeineMC, licensed under GNU Lesser General Public License v3 You can find the original code on https://github.com/CaffeineMC/lithium-fabric (Yarn mappings) diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index 31a4dac824b3d98e05cef5b96473a8a179516a01..e298e40166e7804b8c5e17a4e98f20bb1de8fd50 100644 +index 413c5891e1affc89f2d4e63214ef6621d63f83b3..aef9c28228be51e217b068e8731665cceff17717 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java @@ -224,6 +224,13 @@ public class ServerLevel extends Level implements WorldGenLevel { diff --git a/patches/server/0058-lithium-entity.fast_hand_swing.patch b/patches/server/0056-lithium-entity.fast_hand_swing.patch similarity index 84% rename from patches/server/0058-lithium-entity.fast_hand_swing.patch rename to patches/server/0056-lithium-entity.fast_hand_swing.patch index 05bad48..224c52d 100644 --- a/patches/server/0058-lithium-entity.fast_hand_swing.patch +++ b/patches/server/0056-lithium-entity.fast_hand_swing.patch @@ -7,10 +7,10 @@ Original code by CaffeineMC, licensed under GNU Lesser General Public License v3 You can find the original code on https://github.com/CaffeineMC/lithium-fabric (Yarn mappings) diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index 3677f635f6fec3be02dce49f2585a0396b1af004..28424fc7a1dad07baebe850f8931835e2f74f304 100644 +index dbcabd230bd9bd070e157f35d098553f3ed06987..2cd8dfe953ac72f6be14557ab39d3cec1108499e 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java -@@ -2485,6 +2485,8 @@ public abstract class LivingEntity extends Entity { +@@ -2488,6 +2488,8 @@ public abstract class LivingEntity extends Entity { } protected void updateSwingTime() { diff --git a/patches/server/0059-c2me-opts-math.patch b/patches/server/0057-c2me-opts-math.patch similarity index 100% rename from patches/server/0059-c2me-opts-math.patch rename to patches/server/0057-c2me-opts-math.patch diff --git a/patches/server/0060-lithium-entity.fast_powder_snow_check.patch b/patches/server/0058-lithium-entity.fast_powder_snow_check.patch similarity index 94% rename from patches/server/0060-lithium-entity.fast_powder_snow_check.patch rename to patches/server/0058-lithium-entity.fast_powder_snow_check.patch index d49b82a..87f2007 100644 --- a/patches/server/0060-lithium-entity.fast_powder_snow_check.patch +++ b/patches/server/0058-lithium-entity.fast_powder_snow_check.patch @@ -7,7 +7,7 @@ Original code by CaffeineMC, licensed under GNU Lesser General Public License v3 You can find the original code on https://github.com/CaffeineMC/lithium-fabric (Yarn mappings) diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index 28424fc7a1dad07baebe850f8931835e2f74f304..843642cd3b635e3f6a3dee9d5cd8bad38108143b 100644 +index 2cd8dfe953ac72f6be14557ab39d3cec1108499e..d6f7fd9dc4804e7565c89a9cbb0948f256559f03 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java @@ -569,11 +569,11 @@ public abstract class LivingEntity extends Entity { diff --git a/patches/server/0061-lithium-collections.attributes.patch b/patches/server/0059-lithium-collections.attributes.patch similarity index 100% rename from patches/server/0061-lithium-collections.attributes.patch rename to patches/server/0059-lithium-collections.attributes.patch diff --git a/patches/server/0062-lithium-collections.entity_by_type.patch b/patches/server/0060-lithium-collections.entity_by_type.patch similarity index 100% rename from patches/server/0062-lithium-collections.entity_by_type.patch rename to patches/server/0060-lithium-collections.entity_by_type.patch diff --git a/patches/server/0063-lithium-collections.entity_filtering.patch b/patches/server/0061-lithium-collections.entity_filtering.patch similarity index 100% rename from patches/server/0063-lithium-collections.entity_filtering.patch rename to patches/server/0061-lithium-collections.entity_filtering.patch diff --git a/patches/server/0064-lithium-chunk.serialization.patch b/patches/server/0062-lithium-chunk.serialization.patch similarity index 100% rename from patches/server/0064-lithium-chunk.serialization.patch rename to patches/server/0062-lithium-chunk.serialization.patch diff --git a/patches/server/0065-Configurable-criterion-triggers.patch b/patches/server/0063-Configurable-criterion-triggers.patch similarity index 92% rename from patches/server/0065-Configurable-criterion-triggers.patch rename to patches/server/0063-Configurable-criterion-triggers.patch index a5fbcaf..404617f 100644 --- a/patches/server/0065-Configurable-criterion-triggers.patch +++ b/patches/server/0063-Configurable-criterion-triggers.patch @@ -9,10 +9,10 @@ Original code by YatopiaMC, licensed under MIT You can find the original code on https://github.com/YatopiaMC/Yatopia diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index e52256415e2776f41d107cbf39a73708d6e0d506..4d705dc5294bb07b0ce34c68d1c4bbf33bb84848 100644 +index d298e85ff59d4fd3229a711468d520bb73028f8b..48e195a6c8005a64cb286cfae39e54745f83affe 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java -@@ -615,7 +615,7 @@ public class ServerPlayer extends Player { +@@ -600,7 +600,7 @@ public class ServerPlayer extends Player { @Override protected void onInsideBlock(BlockState state) { @@ -21,7 +21,7 @@ index e52256415e2776f41d107cbf39a73708d6e0d506..4d705dc5294bb07b0ce34c68d1c4bbf3 } @Override -@@ -661,7 +661,7 @@ public class ServerPlayer extends Player { +@@ -646,7 +646,7 @@ public class ServerPlayer extends Player { } } @@ -30,7 +30,7 @@ index e52256415e2776f41d107cbf39a73708d6e0d506..4d705dc5294bb07b0ce34c68d1c4bbf3 if (this.levitationStartPos != null) { CriteriaTriggers.LEVITATION.trigger(this, this.levitationStartPos, this.tickCount - this.levitationStartTime); } -@@ -737,9 +737,7 @@ public class ServerPlayer extends Player { +@@ -722,9 +722,7 @@ public class ServerPlayer extends Player { this.connection.send(new ClientboundSetExperiencePacket(this.experienceProgress, this.totalExperience, this.experienceLevel)); } diff --git a/patches/server/0066-Set-item-stuck-sleep-to-15-ticks.patch b/patches/server/0064-Set-item-stuck-sleep-to-15-ticks.patch similarity index 100% rename from patches/server/0066-Set-item-stuck-sleep-to-15-ticks.patch rename to patches/server/0064-Set-item-stuck-sleep-to-15-ticks.patch diff --git a/patches/server/0067-Smarter-statistics-ticking.patch b/patches/server/0065-Smarter-statistics-ticking.patch similarity index 100% rename from patches/server/0067-Smarter-statistics-ticking.patch rename to patches/server/0065-Smarter-statistics-ticking.patch diff --git a/patches/server/0068-some-entity-micro-opts.patch b/patches/server/0066-some-entity-micro-opts.patch similarity index 92% rename from patches/server/0068-some-entity-micro-opts.patch rename to patches/server/0066-some-entity-micro-opts.patch index d3d7a14..6f720ef 100644 --- a/patches/server/0068-some-entity-micro-opts.patch +++ b/patches/server/0066-some-entity-micro-opts.patch @@ -7,10 +7,10 @@ Original code by Titaniumtown, licensed under GNU General Public License v3.0 You can find the original code on https://gitlab.com/Titaniumtown/JettPack diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index aabc4a50f7af451c236f34efbcb3ef1330414a36..d388b5fb34d9a5f1156bd49f3b5bd4445ac18974 100644 +index d4ae6b345762d224f89ca65634ff4af178dc634f..4e92962cc351bf3abcf51b8952eff5686eda5ea9 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -1880,12 +1880,18 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { +@@ -1881,12 +1881,18 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { } } @@ -30,7 +30,7 @@ index aabc4a50f7af451c236f34efbcb3ef1330414a36..d388b5fb34d9a5f1156bd49f3b5bd444 public void absMoveTo(double x, double y, double z, float yaw, float pitch) { this.absMoveTo(x, y, z); this.setYRot(yaw % 360.0F); -@@ -4323,6 +4329,12 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { +@@ -4334,6 +4340,12 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { } // Paper end - block invalid positions @@ -44,7 +44,7 @@ index aabc4a50f7af451c236f34efbcb3ef1330414a36..d388b5fb34d9a5f1156bd49f3b5bd444 // Paper start this.setPosRaw(x, y, z, false); diff --git a/src/main/java/net/minecraft/world/entity/Mob.java b/src/main/java/net/minecraft/world/entity/Mob.java -index 5c0b53b5ddc2f5f18850f72fa562938fe108b244..ee6c33ff21dcbc6d7ee5f4df18be02fe2350ebd6 100644 +index 78b1fc7b4cacfc98a9e3e6ba93e17c3307d5449c..63911fd0d2a5f194ed4632f209555b3146ed7b79 100644 --- a/src/main/java/net/minecraft/world/entity/Mob.java +++ b/src/main/java/net/minecraft/world/entity/Mob.java @@ -1647,15 +1647,31 @@ public abstract class Mob extends LivingEntity { diff --git a/patches/server/0069-Dont-eat-blocks-in-non-ticking-chunks.patch b/patches/server/0067-Dont-eat-blocks-in-non-ticking-chunks.patch similarity index 92% rename from patches/server/0069-Dont-eat-blocks-in-non-ticking-chunks.patch rename to patches/server/0067-Dont-eat-blocks-in-non-ticking-chunks.patch index 79829d1..db6ab0e 100644 --- a/patches/server/0069-Dont-eat-blocks-in-non-ticking-chunks.patch +++ b/patches/server/0067-Dont-eat-blocks-in-non-ticking-chunks.patch @@ -7,10 +7,10 @@ Original code by PurpurMC, licensed under MIT You can find the original code on https://github.com/PurpurMC/Purpur diff --git a/src/main/java/net/minecraft/server/level/ChunkMap.java b/src/main/java/net/minecraft/server/level/ChunkMap.java -index 5fdef81245cb3cc686225cfd7c5ce13b011503ef..cec58f0d7ac6bf73a0f7b418a595704b8b807425 100644 +index 9ac645e08275bb7943dd1edcd635c179c0620d89..4748828f84f7d5f2dd79945dd65f3fa55cd43010 100644 --- a/src/main/java/net/minecraft/server/level/ChunkMap.java +++ b/src/main/java/net/minecraft/server/level/ChunkMap.java -@@ -1821,7 +1821,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider +@@ -983,7 +983,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider return this.anyPlayerCloseEnoughForSpawning(this.getUpdatingChunkIfPresent(chunkcoordintpair.toLong()), chunkcoordintpair, reducedRange); } diff --git a/patches/server/0070-Fast-speed-check.patch b/patches/server/0068-Fast-speed-check.patch similarity index 93% rename from patches/server/0070-Fast-speed-check.patch rename to patches/server/0068-Fast-speed-check.patch index 05c1cee..6f44bb5 100644 --- a/patches/server/0070-Fast-speed-check.patch +++ b/patches/server/0068-Fast-speed-check.patch @@ -12,10 +12,10 @@ doing questionable/buggy ones, and claiming breathtaking performance improvement any of those Spigot forks! diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index d388b5fb34d9a5f1156bd49f3b5bd4445ac18974..d4452da9e89f711d20c8c3450ab050c3b2b00a1e 100644 +index 4e92962cc351bf3abcf51b8952eff5686eda5ea9..6153c46809b12c44f2f8588e6978a4cab21e02f4 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -1205,7 +1205,18 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { +@@ -1206,7 +1206,18 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { } this.tryCheckInsideBlocks(); diff --git a/patches/server/0071-lithium-cache-iterate-outwards.patch b/patches/server/0069-lithium-cache-iterate-outwards.patch similarity index 100% rename from patches/server/0071-lithium-cache-iterate-outwards.patch rename to patches/server/0069-lithium-cache-iterate-outwards.patch diff --git a/patches/server/0072-lithium-ai.raid.patch b/patches/server/0070-lithium-ai.raid.patch similarity index 100% rename from patches/server/0072-lithium-ai.raid.patch rename to patches/server/0070-lithium-ai.raid.patch diff --git a/patches/server/0073-lithium-block.moving_block_shapes.patch b/patches/server/0071-lithium-block.moving_block_shapes.patch similarity index 100% rename from patches/server/0073-lithium-block.moving_block_shapes.patch rename to patches/server/0071-lithium-block.moving_block_shapes.patch diff --git a/patches/server/0074-lithium-shapes.blockstate_cache.patch b/patches/server/0072-lithium-shapes.blockstate_cache.patch similarity index 100% rename from patches/server/0074-lithium-shapes.blockstate_cache.patch rename to patches/server/0072-lithium-shapes.blockstate_cache.patch diff --git a/patches/server/0075-lithium-gen.patch b/patches/server/0073-lithium-gen.patch similarity index 99% rename from patches/server/0075-lithium-gen.patch rename to patches/server/0073-lithium-gen.patch index 5b73d08..7310c98 100644 --- a/patches/server/0075-lithium-gen.patch +++ b/patches/server/0073-lithium-gen.patch @@ -201,7 +201,7 @@ index 1194c501a82e0e84d961d4ccb62f0c6092db559e..8afacc53a673567cead4c6e49966f07f @Override public FluidState getFluidState(BlockPos pos) { diff --git a/src/main/java/net/minecraft/world/level/levelgen/NoiseBasedChunkGenerator.java b/src/main/java/net/minecraft/world/level/levelgen/NoiseBasedChunkGenerator.java -index 575efe82a7219e256afd8362984eb26795445119..6292dead8c2d682e524edee6af9f04b31a79489c 100644 +index cf87490a446285132daaf9d90154ac6d477a62fe..3d6c50822701a3828cbde704f419d1c900a67954 100644 --- a/src/main/java/net/minecraft/world/level/levelgen/NoiseBasedChunkGenerator.java +++ b/src/main/java/net/minecraft/world/level/levelgen/NoiseBasedChunkGenerator.java @@ -67,6 +67,7 @@ public final class NoiseBasedChunkGenerator extends ChunkGenerator { diff --git a/patches/server/0076-PaperPR-Add-more-collision-code-skipping-logic.patch b/patches/server/0074-PaperPR-Add-more-collision-code-skipping-logic.patch similarity index 87% rename from patches/server/0076-PaperPR-Add-more-collision-code-skipping-logic.patch rename to patches/server/0074-PaperPR-Add-more-collision-code-skipping-logic.patch index 573d764..f05a587 100644 --- a/patches/server/0076-PaperPR-Add-more-collision-code-skipping-logic.patch +++ b/patches/server/0074-PaperPR-Add-more-collision-code-skipping-logic.patch @@ -6,10 +6,10 @@ Subject: [PATCH] PaperPR Add more collision code skipping logic Taken from https://github.com/PaperMC/Paper/pull/7581 diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index 843642cd3b635e3f6a3dee9d5cd8bad38108143b..fea7b1c5a1236a4667c738b9cf27800863b26cfb 100644 +index d6f7fd9dc4804e7565c89a9cbb0948f256559f03..24484d985929c7860aa08dbfca6df113086d2ed0 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java -@@ -3467,6 +3467,10 @@ public abstract class LivingEntity extends Entity { +@@ -3470,6 +3470,10 @@ public abstract class LivingEntity extends Entity { protected void pushEntities() { // Paper start - don't run getEntities if we're not going to use its result diff --git a/patches/server/0077-vmp-use-linked-map-for-entity-trackers-for-faster-it.patch b/patches/server/0075-vmp-use-linked-map-for-entity-trackers-for-faster-it.patch similarity index 75% rename from patches/server/0077-vmp-use-linked-map-for-entity-trackers-for-faster-it.patch rename to patches/server/0075-vmp-use-linked-map-for-entity-trackers-for-faster-it.patch index ea2cb4b..7ad07c2 100644 --- a/patches/server/0077-vmp-use-linked-map-for-entity-trackers-for-faster-it.patch +++ b/patches/server/0075-vmp-use-linked-map-for-entity-trackers-for-faster-it.patch @@ -9,23 +9,23 @@ Original code by RelativityMC, licensed under MIT You can find the original code on https://github.com/RelativityMC/VMP-fabric (Yarn mappings) diff --git a/src/main/java/net/minecraft/server/level/ChunkMap.java b/src/main/java/net/minecraft/server/level/ChunkMap.java -index cec58f0d7ac6bf73a0f7b418a595704b8b807425..a9f83218af1675a15505acafd67d79954a8ed38d 100644 +index 4748828f84f7d5f2dd79945dd65f3fa55cd43010..a83b5520b0210d82e26cb6ec490fe30778ea92ab 100644 --- a/src/main/java/net/minecraft/server/level/ChunkMap.java +++ b/src/main/java/net/minecraft/server/level/ChunkMap.java -@@ -111,6 +111,7 @@ import org.bukkit.craftbukkit.generator.CustomChunkGenerator; - import org.bukkit.entity.Player; +@@ -111,6 +111,7 @@ import org.bukkit.entity.Player; // CraftBukkit end + import it.unimi.dsi.fastutil.objects.ReferenceOpenHashSet; // Paper +import it.unimi.dsi.fastutil.ints.Int2ObjectLinkedOpenHashMap; // Mirai - vmp: use linked map for entity trackers for faster iteration public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider { -@@ -416,7 +417,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider - this.toDrop = new LongOpenHashSet(); +@@ -291,7 +292,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider + // Paper - rewrite chunk system this.tickingGenerated = new AtomicInteger(); this.playerMap = new PlayerMap(); - this.entityMap = new Int2ObjectOpenHashMap(); + this.entityMap = new Int2ObjectLinkedOpenHashMap<>(); // Mirai - vmp: use linked map for entity trackers for faster iteration this.chunkTypeCache = new Long2ByteOpenHashMap(); this.chunkSaveCooldowns = new Long2LongOpenHashMap(); - this.unloadQueue = new com.destroystokyo.paper.utils.CachedSizeConcurrentLinkedQueue<>(); // Paper - need constant-time size() + this.unloadQueue = Queues.newConcurrentLinkedQueue(); diff --git a/patches/server/0078-c2me-reduce_allocs.patch b/patches/server/0076-c2me-reduce_allocs.patch similarity index 100% rename from patches/server/0078-c2me-reduce_allocs.patch rename to patches/server/0076-c2me-reduce_allocs.patch diff --git a/patches/server/0079-lithium-ai.sensor.secondary_poi.patch b/patches/server/0077-lithium-ai.sensor.secondary_poi.patch similarity index 100% rename from patches/server/0079-lithium-ai.sensor.secondary_poi.patch rename to patches/server/0077-lithium-ai.sensor.secondary_poi.patch diff --git a/patches/server/0080-Fix-tick-function-tag-running-before-load.patch b/patches/server/0078-Fix-tick-function-tag-running-before-load.patch similarity index 100% rename from patches/server/0080-Fix-tick-function-tag-running-before-load.patch rename to patches/server/0078-Fix-tick-function-tag-running-before-load.patch diff --git a/patches/server/0081-lithium-suffocation.patch b/patches/server/0079-lithium-suffocation.patch similarity index 96% rename from patches/server/0081-lithium-suffocation.patch rename to patches/server/0079-lithium-suffocation.patch index e2feda1..f1caf7d 100644 --- a/patches/server/0081-lithium-suffocation.patch +++ b/patches/server/0079-lithium-suffocation.patch @@ -9,10 +9,10 @@ Original license: GNU Lesser General Public License v3.0 Original project: https://github.com/CaffeineMC/lithium-fabric (Yarn mappings) diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index d4452da9e89f711d20c8c3450ab050c3b2b00a1e..968f5382ca001e60698ce06eea751bbea45cb31c 100644 +index 6153c46809b12c44f2f8588e6978a4cab21e02f4..1508e8c4ba01f92e79b8256b306b4eaab96aa888 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -2607,39 +2607,64 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { +@@ -2608,39 +2608,64 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { return !this.isRemoved(); } diff --git a/patches/server/0082-Optimize-default-values-for-configs.patch b/patches/server/0080-Optimize-default-values-for-configs.patch similarity index 93% rename from patches/server/0082-Optimize-default-values-for-configs.patch rename to patches/server/0080-Optimize-default-values-for-configs.patch index 4c57e6b..e2132fb 100644 --- a/patches/server/0082-Optimize-default-values-for-configs.patch +++ b/patches/server/0080-Optimize-default-values-for-configs.patch @@ -5,28 +5,10 @@ Subject: [PATCH] Optimize default values for configs diff --git a/src/main/java/gg/pufferfish/pufferfish/PufferfishConfig.java b/src/main/java/gg/pufferfish/pufferfish/PufferfishConfig.java -index 38cb29c646ff496ffaa6553f98a565b71155c464..26f9a007931edb1c0b67920309bc7c6b848bbd32 100644 +index 34eb43ca2bf446504c372f98dfbe6dbfd0a81369..74d86c1a9ef79e09b1ec02b93e8f62d3e0746d43 100644 --- a/src/main/java/gg/pufferfish/pufferfish/PufferfishConfig.java +++ b/src/main/java/gg/pufferfish/pufferfish/PufferfishConfig.java -@@ -216,7 +216,7 @@ public class PufferfishConfig { - public static boolean enableAsyncEntityTracker; - public static boolean enableAsyncEntityTrackerInitialized; - private static void asyncEntityTracker() { -- boolean temp = getBoolean("enable-async-entity-tracker", false, -+ boolean temp = getBoolean("enable-async-entity-tracker", true, // Mirai - optimize default values for configs - "Whether or not async entity tracking should be enabled."); - if (!enableAsyncEntityTrackerInitialized) { - enableAsyncEntityTrackerInitialized = true; -@@ -227,7 +227,7 @@ public class PufferfishConfig { - public static boolean enableAsyncPathfinding; - public static boolean enableAsyncPathfindingInitialized; - private static void asyncPathfinding() { -- boolean temp = getBoolean("enable-async-pathfinding", false, -+ boolean temp = getBoolean("enable-async-pathfinding", true, // Mirai - optimize default values for configs - "Whether or not async pathfinding should be enabled."); - if (!enableAsyncPathfindingInitialized) { - enableAsyncPathfindingInitialized = true; -@@ -239,7 +239,7 @@ public class PufferfishConfig { +@@ -217,7 +217,7 @@ public class PufferfishConfig { public static int maxProjectileLoadsPerProjectile; private static void projectileLoading() { maxProjectileLoadsPerTick = getInt("projectile.max-loads-per-tick", 10, "Controls how many chunks are allowed", "to be sync loaded by projectiles in a tick."); @@ -36,10 +18,10 @@ index 38cb29c646ff496ffaa6553f98a565b71155c464..26f9a007931edb1c0b67920309bc7c6b setComment("projectile", "Optimizes projectile settings"); } diff --git a/src/main/java/io/papermc/paper/configuration/GlobalConfiguration.java b/src/main/java/io/papermc/paper/configuration/GlobalConfiguration.java -index bc72131afa1ae9986ee311a9b371e97c8feb38f8..0130e2c3c047055fbea9c3d893a9b4593fa10ed2 100644 +index 54bca103347e89f116fb7fbf37449a32ac094286..76810d7767b1a66315b006569654c718105ab4ee 100644 --- a/src/main/java/io/papermc/paper/configuration/GlobalConfiguration.java +++ b/src/main/java/io/papermc/paper/configuration/GlobalConfiguration.java -@@ -56,7 +56,7 @@ public class GlobalConfiguration extends ConfigurationPart { +@@ -55,7 +55,7 @@ public class GlobalConfiguration extends ConfigurationPart { public boolean enabled = true; public boolean reallyEnabled = false; public boolean verbose = true; @@ -48,7 +30,7 @@ index bc72131afa1ae9986ee311a9b371e97c8feb38f8..0130e2c3c047055fbea9c3d893a9b459 public boolean serverNamePrivacy = false; public List hiddenConfigEntries = List.of( "database", -@@ -266,9 +266,9 @@ public class GlobalConfiguration extends ConfigurationPart { +@@ -289,9 +289,9 @@ public class GlobalConfiguration extends ConfigurationPart { public boolean fixEntityPositionDesync = true; public boolean loadPermissionsYmlBeforePlugins = true; @Constraints.Min(4) diff --git a/patches/server/0083-Fix-hunger-saturation-depleting-on-peaceful.patch b/patches/server/0081-Fix-hunger-saturation-depleting-on-peaceful.patch similarity index 100% rename from patches/server/0083-Fix-hunger-saturation-depleting-on-peaceful.patch rename to patches/server/0081-Fix-hunger-saturation-depleting-on-peaceful.patch diff --git a/patches/server/0084-Fix-mobs-attacking-themselves.patch b/patches/server/0082-Fix-mobs-attacking-themselves.patch similarity index 100% rename from patches/server/0084-Fix-mobs-attacking-themselves.patch rename to patches/server/0082-Fix-mobs-attacking-themselves.patch diff --git a/patches/server/0085-Fix-brewing-stands-resetting-their-brewTime-when-bei.patch b/patches/server/0083-Fix-brewing-stands-resetting-their-brewTime-when-bei.patch similarity index 100% rename from patches/server/0085-Fix-brewing-stands-resetting-their-brewTime-when-bei.patch rename to patches/server/0083-Fix-brewing-stands-resetting-their-brewTime-when-bei.patch diff --git a/patches/server/0086-lithium-world.tick_scheduler.patch b/patches/server/0084-lithium-world.tick_scheduler.patch similarity index 100% rename from patches/server/0086-lithium-world.tick_scheduler.patch rename to patches/server/0084-lithium-world.tick_scheduler.patch diff --git a/patches/server/0087-Save-Json-list-asynchronously.patch b/patches/server/0085-Save-Json-list-asynchronously.patch similarity index 100% rename from patches/server/0087-Save-Json-list-asynchronously.patch rename to patches/server/0085-Save-Json-list-asynchronously.patch diff --git a/patches/server/0088-Swaps-the-predicate-order-of-collision.patch b/patches/server/0086-Swaps-the-predicate-order-of-collision.patch similarity index 88% rename from patches/server/0088-Swaps-the-predicate-order-of-collision.patch rename to patches/server/0086-Swaps-the-predicate-order-of-collision.patch index 34b932a..e3058f0 100644 --- a/patches/server/0088-Swaps-the-predicate-order-of-collision.patch +++ b/patches/server/0086-Swaps-the-predicate-order-of-collision.patch @@ -8,10 +8,10 @@ Original license: GPLv3 Original project: https://github.com/Akarin-project/Akarin diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 968f5382ca001e60698ce06eea751bbea45cb31c..630f97c436b15225157007622533593033dcad1a 100644 +index 1508e8c4ba01f92e79b8256b306b4eaab96aa888..e2565f129cf61d1e3dd9cb6076299edcf66119dc 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -1997,8 +1997,9 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { +@@ -1998,8 +1998,9 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { public void playerTouch(Player player) {} public void push(Entity entity) { diff --git a/patches/server/0089-Fix-head-rotation-packet-spam.patch b/patches/server/0087-Fix-head-rotation-packet-spam.patch similarity index 89% rename from patches/server/0089-Fix-head-rotation-packet-spam.patch rename to patches/server/0087-Fix-head-rotation-packet-spam.patch index 90eee41..fe24349 100644 --- a/patches/server/0089-Fix-head-rotation-packet-spam.patch +++ b/patches/server/0087-Fix-head-rotation-packet-spam.patch @@ -7,10 +7,10 @@ Original license: GPLv3 Original project: https://github.com/Electroid/SportPaper diff --git a/src/main/java/net/minecraft/server/level/ServerEntity.java b/src/main/java/net/minecraft/server/level/ServerEntity.java -index 4197961b2f03a5151b396d0d09bf5cb9ab6481e7..09be313aefd5dda15bd4db6ee0324b2aec879744 100644 +index aa1bd3423829900729d413a5f98f4a0b9aaf6135..82604712640140dbc5ec632233b937b2e073e28e 100644 --- a/src/main/java/net/minecraft/server/level/ServerEntity.java +++ b/src/main/java/net/minecraft/server/level/ServerEntity.java -@@ -346,8 +346,10 @@ public class ServerEntity { +@@ -342,8 +342,10 @@ public class ServerEntity { } // CraftBukkit start - Fix for nonsensical head yaw diff --git a/patches/server/0090-Cache-block-break-animation-packet.patch b/patches/server/0088-Cache-block-break-animation-packet.patch similarity index 86% rename from patches/server/0090-Cache-block-break-animation-packet.patch rename to patches/server/0088-Cache-block-break-animation-packet.patch index 1b552eb..b6805e7 100644 --- a/patches/server/0090-Cache-block-break-animation-packet.patch +++ b/patches/server/0088-Cache-block-break-animation-packet.patch @@ -7,10 +7,10 @@ Original license: GPLv3 Original project: https://github.com/Electroid/SportPaper diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index e298e40166e7804b8c5e17a4e98f20bb1de8fd50..e2da2c2823fd64ec714c3d083039fc04d11fea73 100644 +index aef9c28228be51e217b068e8731665cceff17717..b0b881eed06b1963c639b1a2c0808ab47fb34ac0 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java -@@ -1545,6 +1545,7 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -1570,6 +1570,7 @@ public class ServerLevel extends Level implements WorldGenLevel { if (entity instanceof Player) entityhuman = (Player) entity; // CraftBukkit end @@ -18,7 +18,7 @@ index e298e40166e7804b8c5e17a4e98f20bb1de8fd50..e2da2c2823fd64ec714c3d083039fc04 while (iterator.hasNext()) { ServerPlayer entityplayer = (ServerPlayer) iterator.next(); -@@ -1560,7 +1561,10 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -1585,7 +1586,10 @@ public class ServerLevel extends Level implements WorldGenLevel { // CraftBukkit end if (d0 * d0 + d1 * d1 + d2 * d2 < 1024.0D) { diff --git a/patches/server/0091-Use-more-fastutil-data-structures.patch b/patches/server/0089-Use-more-fastutil-data-structures.patch similarity index 100% rename from patches/server/0091-Use-more-fastutil-data-structures.patch rename to patches/server/0089-Use-more-fastutil-data-structures.patch diff --git a/patches/server/0092-Optimize-Math.round-and-Math.hypot-functions.patch b/patches/server/0090-Optimize-Math.round-and-Math.hypot-functions.patch similarity index 96% rename from patches/server/0092-Optimize-Math.round-and-Math.hypot-functions.patch rename to patches/server/0090-Optimize-Math.round-and-Math.hypot-functions.patch index 6c5da4a..e993dd6 100644 --- a/patches/server/0092-Optimize-Math.round-and-Math.hypot-functions.patch +++ b/patches/server/0090-Optimize-Math.round-and-Math.hypot-functions.patch @@ -114,7 +114,7 @@ index 40447d00aefb5ffedb8a2ee87155a04088f0649f..633a6e313174244cf13ed89b53893ea5 } } diff --git a/src/main/java/io/papermc/paper/chunk/PlayerChunkLoader.java b/src/main/java/io/papermc/paper/chunk/PlayerChunkLoader.java -index b53402903eb6845df361daf6b05a668608ad7b63..0d43afcdd5db346d0ddf82e06bad5b219721715c 100644 +index dd501e83d991e45598509134fab05bafc1904953..5ecdbeb90e9715fc89ff25e9b3c33a2e8d98ff93 100644 --- a/src/main/java/io/papermc/paper/chunk/PlayerChunkLoader.java +++ b/src/main/java/io/papermc/paper/chunk/PlayerChunkLoader.java @@ -387,11 +387,11 @@ public final class PlayerChunkLoader { @@ -132,10 +132,10 @@ index b53402903eb6845df361daf6b05a668608ad7b63..0d43afcdd5db346d0ddf82e06bad5b21 public void onChunkPlayerTickReady(final int chunkX, final int chunkZ) { diff --git a/src/main/java/io/papermc/paper/command/subcommands/FixLightCommand.java b/src/main/java/io/papermc/paper/command/subcommands/FixLightCommand.java -index 68645bbbab9b4225048b647252d8f462028a9c84..14eff63f7725769ba0ce15eedf7f605ee34d1722 100644 +index 450bd95218852174cfbc88d4517e17daee5ffd5f..317e952655db5a4dcb2e6ec6573510f75bba9255 100644 --- a/src/main/java/io/papermc/paper/command/subcommands/FixLightCommand.java +++ b/src/main/java/io/papermc/paper/command/subcommands/FixLightCommand.java -@@ -105,12 +105,12 @@ public final class FixLightCommand implements PaperSubcommand { +@@ -95,12 +95,12 @@ public final class FixLightCommand implements PaperSubcommand { ++relitChunks[0]; sender.getBukkitEntity().sendMessage(text().color(DARK_AQUA).append( text("Relit chunk ", BLUE), text(chunkPos.toString()), @@ -143,7 +143,7 @@ index 68645bbbab9b4225048b647252d8f462028a9c84..14eff63f7725769ba0ce15eedf7f605e + text(", progress: ", BLUE), text((int) (carpetfixes.helpers.FastMath.round(100.0 * (double) (relitChunks[0]) / (double) pending[0])) + "%") // Mirai )); }, - (int totalRelit) -> { + (final int totalRelit) -> { final long end = System.nanoTime(); - final long diff = Math.round(1.0e-6 * (end - start)); + final long diff = carpetfixes.helpers.FastMath.round(1.0e-6 * (end - start)); // Mirai @@ -164,10 +164,10 @@ index e3e80db89c18588322ffdaa0f9fd85e398cb1471..d947011b80ee14e7aaf74af3d9081fc7 throw ERROR_INVALID_TICK_COUNT.create(j); } else { diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index c25f0c98128c85ed4e867c6d842c8de28e0936fb..2789eb371b3c9c8803a10d07f8c21ced49ad6d16 100644 +index 6cdced357fdcd5ea4ce0c63d29e39573a5f40f65..3c528e612e9ed17e8c58bbef6c26471cc3411a7a 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java -@@ -2787,7 +2787,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop 0.0F && f3 < 3.4028235E37F) { if (this instanceof ServerPlayer) { @@ -226,7 +226,7 @@ index fea7b1c5a1236a4667c738b9cf27800863b26cfb..e31bb8d49a9efa0417e6f855a020035a } } } -@@ -2161,9 +2161,9 @@ public abstract class LivingEntity extends Entity { +@@ -2164,9 +2164,9 @@ public abstract class LivingEntity extends Entity { float f3 = (float) -event.getDamage(DamageModifier.RESISTANCE); if (f3 > 0.0F && f3 < 3.4028235E37F) { if (this instanceof ServerPlayer) { @@ -238,7 +238,7 @@ index fea7b1c5a1236a4667c738b9cf27800863b26cfb..e31bb8d49a9efa0417e6f855a020035a } } } -@@ -2195,10 +2195,10 @@ public abstract class LivingEntity extends Entity { +@@ -2198,10 +2198,10 @@ public abstract class LivingEntity extends Entity { float f2 = absorptionModifier; if (f2 > 0.0F && f2 < 3.4028235E37F && this instanceof net.minecraft.world.entity.player.Player) { @@ -251,7 +251,7 @@ index fea7b1c5a1236a4667c738b9cf27800863b26cfb..e31bb8d49a9efa0417e6f855a020035a } if (f > 0 || !human) { -@@ -2206,7 +2206,7 @@ public abstract class LivingEntity extends Entity { +@@ -2209,7 +2209,7 @@ public abstract class LivingEntity extends Entity { // PAIL: Be sure to drag all this code from the EntityHuman subclass each update. ((net.minecraft.world.entity.player.Player) this).causeFoodExhaustion(damagesource.getFoodExhaustion(), org.bukkit.event.entity.EntityExhaustionEvent.ExhaustionReason.DAMAGED); // CraftBukkit - EntityExhaustionEvent if (f < 3.4028235E37F) { @@ -260,7 +260,7 @@ index fea7b1c5a1236a4667c738b9cf27800863b26cfb..e31bb8d49a9efa0417e6f855a020035a } } // CraftBukkit end -@@ -2228,7 +2228,7 @@ public abstract class LivingEntity extends Entity { +@@ -2231,7 +2231,7 @@ public abstract class LivingEntity extends Entity { CriteriaTriggers.ENTITY_HURT_PLAYER.trigger((ServerPlayer) this, damagesource, f, originalDamage, true); f2 = (float) -event.getDamage(DamageModifier.BLOCKING); if (f2 > 0.0F && f2 < 3.4028235E37F) { @@ -269,7 +269,7 @@ index fea7b1c5a1236a4667c738b9cf27800863b26cfb..e31bb8d49a9efa0417e6f855a020035a } } -@@ -3032,13 +3032,13 @@ public abstract class LivingEntity extends Entity { +@@ -3035,13 +3035,13 @@ public abstract class LivingEntity extends Entity { this.level.getProfiler().push("rangeChecks"); // Paper start - stop large pitch and yaw changes from crashing the server @@ -424,7 +424,7 @@ index 16504b8be08064e61b013fa943f692816612cbd0..38f6759501dcc2a0adb9608a9f639c24 i = Mth.clamp(i, (int) 0, (int) 15); diff --git a/src/main/java/net/minecraft/world/level/chunk/ChunkGenerator.java b/src/main/java/net/minecraft/world/level/chunk/ChunkGenerator.java -index 19ffd93b7bc745d9a6822f1e5642d2f640f61df7..61e35c7a91341701bad119ca9ea56373b6b7d7a9 100644 +index cb64b46eb874bb7ce22cdbf9e9629c929a05fb61..92439cfe75932ff0997c6deabf43a552175e927e 100644 --- a/src/main/java/net/minecraft/world/level/chunk/ChunkGenerator.java +++ b/src/main/java/net/minecraft/world/level/chunk/ChunkGenerator.java @@ -249,8 +249,8 @@ public abstract class ChunkGenerator { diff --git a/patches/server/0093-Faster-Sheep.getOffspringColor.patch b/patches/server/0091-Faster-Sheep.getOffspringColor.patch similarity index 100% rename from patches/server/0093-Faster-Sheep.getOffspringColor.patch rename to patches/server/0091-Faster-Sheep.getOffspringColor.patch diff --git a/patches/server/0094-Implement-Velocity-VarInt-optimizations.patch b/patches/server/0092-PaperPR-Optimize-VarInts.patch similarity index 66% rename from patches/server/0094-Implement-Velocity-VarInt-optimizations.patch rename to patches/server/0092-PaperPR-Optimize-VarInts.patch index 684146a..2a77b65 100644 --- a/patches/server/0094-Implement-Velocity-VarInt-optimizations.patch +++ b/patches/server/0092-PaperPR-Optimize-VarInts.patch @@ -1,51 +1,47 @@ From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: etil2jz <81570777+etil2jz@users.noreply.github.com> -Date: Sat, 16 Jul 2022 18:12:38 +0200 -Subject: [PATCH] Implement Velocity VarInt optimizations +From: astei +Date: Sat, 1 Oct 2022 09:56:47 +0200 +Subject: [PATCH] PaperPR Optimize VarInts Original license: GPLv3 Original project: https://github.com/PaperMC/Velocity -Paper pull request: https://github.com/PaperMC/Paper/pull/6957 +Paper pull request: https://github.com/PaperMC/Paper/pull/8418 diff --git a/src/main/java/net/minecraft/network/FriendlyByteBuf.java b/src/main/java/net/minecraft/network/FriendlyByteBuf.java -index 35377576ed182814051c11f902e02e8e921e84e3..8747a55d8818d4526939070fa29a12ab643f0798 100644 +index 35377576ed182814051c11f902e02e8e921e84e3..4b4a3c0da7a512e16d9a5758ed7312dc9ddc1e28 100644 --- a/src/main/java/net/minecraft/network/FriendlyByteBuf.java +++ b/src/main/java/net/minecraft/network/FriendlyByteBuf.java -@@ -82,19 +82,22 @@ public class FriendlyByteBuf extends ByteBuf { - private static final int PUBLIC_KEY_SIZE = 256; - private static final int MAX_PUBLIC_KEY_HEADER_SIZE = 256; - private static final int MAX_PUBLIC_KEY_LENGTH = 512; -+ // Mirai start - Optimize VarInts -+ private static final int[] VARINT_EXACT_BYTE_LENGTHS = new int[33]; -+ static { -+ for (int i = 0; i <= 32; ++i) { -+ VARINT_EXACT_BYTE_LENGTHS[i] = (int) Math.ceil((31d - (i - 1)) / 7d); -+ } -+ VARINT_EXACT_BYTE_LENGTHS[32] = 1; // Special case for the number 0. -+ } -+ // Mirai end - - public FriendlyByteBuf(ByteBuf parent) { +@@ -87,15 +87,18 @@ public class FriendlyByteBuf extends ByteBuf { this.source = parent; } - public static int getVarIntSize(int value) { +- public static int getVarIntSize(int value) { - for (int j = 1; j < 5; ++j) { - if ((value & -1 << j * 7) == 0) { - return j; - } -- } ++ //Paper start - Optimize VarInts ++ private static final int[] VARINT_EXACT_BYTE_LENGTHS = new int[33]; ++ static { ++ for (int i = 0; i <= 32; ++i) { ++ VARINT_EXACT_BYTE_LENGTHS[i] = (int) Math.ceil((31d - (i - 1)) / 7d); + } - - return 5; -+ return VARINT_EXACT_BYTE_LENGTHS[Integer.numberOfLeadingZeros(value)]; // Mirai - Optimize VarInts ++ VARINT_EXACT_BYTE_LENGTHS[32] = 1; // Special case for the number 0. ++ } ++ public static int getVarIntSize(int value) { ++ return VARINT_EXACT_BYTE_LENGTHS[Integer.numberOfLeadingZeros(value)]; // Paper - Optimize VarInts } ++ //Paper end - Optimize VarInts public static int getVarLongSize(long value) { -@@ -503,7 +506,23 @@ public class FriendlyByteBuf extends ByteBuf { + for (int j = 1; j < 10; ++j) { +@@ -503,7 +506,22 @@ public class FriendlyByteBuf extends ByteBuf { return new UUID(this.readLong(), this.readLong()); } -+ // Mirai start - Optimize VarInts ++ // Paper start - Optimize VarInts public FriendlyByteBuf writeVarInt(int value) { + // Peel the one and two byte count cases explicitly as they are the most common VarInt sizes + // that the proxy will write, to improve inlining. @@ -59,9 +55,8 @@ index 35377576ed182814051c11f902e02e8e921e84e3..8747a55d8818d4526939070fa29a12ab + } + return this; + } -+ + public FriendlyByteBuf writeVarInt_(int value) { -+ // Mirai end ++ // Paper end - Optimize VarInts while ((value & -128) != 0) { this.writeByte(value & 127 | 128); value >>>= 7; diff --git a/patches/server/0095-reduce-work-done-by-game-event-system.patch b/patches/server/0093-reduce-work-done-by-game-event-system.patch similarity index 95% rename from patches/server/0095-reduce-work-done-by-game-event-system.patch rename to patches/server/0093-reduce-work-done-by-game-event-system.patch index 18e1702..2ac2ee6 100644 --- a/patches/server/0095-reduce-work-done-by-game-event-system.patch +++ b/patches/server/0093-reduce-work-done-by-game-event-system.patch @@ -11,10 +11,10 @@ Original project: https://github.com/Bloom-host/Petal 2. euclideangameeventdispatcher is not used concurrently so we ban that usage for improved performance with allays diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index e2da2c2823fd64ec714c3d083039fc04d11fea73..3f749f33f9168455cfe14a6e6120f36b412205f3 100644 +index b0b881eed06b1963c639b1a2c0808ab47fb34ac0..7dc341e91aaa581e499dfa3823712fcece9d5756 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java -@@ -1623,6 +1623,7 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -1648,6 +1648,7 @@ public class ServerLevel extends Level implements WorldGenLevel { if (chunk != null) { for (int j2 = k; j2 <= j1; ++j2) { flag |= chunk.getEventDispatcher(j2).walkListeners(event, emitterPos, emitter, (gameeventlistener, vec3d1) -> { @@ -41,7 +41,7 @@ index 22c309343299e60ed8028229b7f134109001ff35..d5947d29295ddc93ba8ac1c0fc61f7ba org.bukkit.craftbukkit.event.CraftEventFactory.sourceBlockOverride = blockEntity.getBlockPos(); // CraftBukkit - SPIGOT-7068: Add source block override, not the most elegant way but better than passing down a BlockPosition up to five methods deep. blockEntity.sculkSpreader.updateCursors(world, pos, world.getRandom(), true); diff --git a/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java b/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java -index 0b08a91ae9dc73c011dbb5f517becac7d08fd1e9..b3f8de20eb09547672218c62817759d03461922d 100644 +index 34334c139176e0aa9f6d93a87821508d17567cfc..6ba7d8c32cdd51c2c291ccafe0a9d145c88155f5 100644 --- a/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java +++ b/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java @@ -84,7 +84,18 @@ public class LevelChunk extends ChunkAccess { @@ -63,8 +63,8 @@ index 0b08a91ae9dc73c011dbb5f517becac7d08fd1e9..b3f8de20eb09547672218c62817759d0 + // petal end private final LevelChunkTicks blockTicks; private final LevelChunkTicks fluidTicks; - // Paper start - track last save time -@@ -119,7 +130,7 @@ public class LevelChunk extends ChunkAccess { + +@@ -113,7 +124,7 @@ public class LevelChunk extends ChunkAccess { this.tickersInLevel = Maps.newHashMap(); this.clientLightReady = false; this.level = (ServerLevel) world; // CraftBukkit - type @@ -73,7 +73,7 @@ index 0b08a91ae9dc73c011dbb5f517becac7d08fd1e9..b3f8de20eb09547672218c62817759d0 Heightmap.Types[] aheightmap_type = Heightmap.Types.values(); int j = aheightmap_type.length; -@@ -453,9 +464,23 @@ public class LevelChunk extends ChunkAccess { +@@ -446,9 +457,23 @@ public class LevelChunk extends ChunkAccess { if (world instanceof ServerLevel) { ServerLevel worldserver = (ServerLevel) world; @@ -100,7 +100,7 @@ index 0b08a91ae9dc73c011dbb5f517becac7d08fd1e9..b3f8de20eb09547672218c62817759d0 } else { return super.getEventDispatcher(ySectionCoord); } -@@ -819,7 +844,7 @@ public class LevelChunk extends ChunkAccess { +@@ -812,7 +837,7 @@ public class LevelChunk extends ChunkAccess { gameeventdispatcher.unregister(gameeventlistener); if (gameeventdispatcher.isEmpty()) { diff --git a/patches/server/0096-reduce-sensor-work.patch b/patches/server/0094-reduce-sensor-work.patch similarity index 93% rename from patches/server/0096-reduce-sensor-work.patch rename to patches/server/0094-reduce-sensor-work.patch index 1745b35..584e667 100644 --- a/patches/server/0096-reduce-sensor-work.patch +++ b/patches/server/0094-reduce-sensor-work.patch @@ -10,7 +10,7 @@ this patch is focused around the sensors used for ai delete the line of sight cache less often and use a faster nearby comparison diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index e31bb8d49a9efa0417e6f855a020035ae2c7041d..0b4d283ec3af265eed4e75ac89007ad30adc3071 100644 +index 2c4cd831414f73e6eba51e8b49d97cdb89ec6fbb..bfa50273b6726e6f228ee235b1abf4d9d5145703 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java @@ -998,12 +998,14 @@ public abstract class LivingEntity extends Entity { @@ -31,7 +31,7 @@ index e31bb8d49a9efa0417e6f855a020035ae2c7041d..0b4d283ec3af265eed4e75ac89007ad3 return d0; diff --git a/src/main/java/net/minecraft/world/entity/Mob.java b/src/main/java/net/minecraft/world/entity/Mob.java -index ee6c33ff21dcbc6d7ee5f4df18be02fe2350ebd6..4d8604bbf9f5f740a3248b1388408a76c9f232d0 100644 +index 63911fd0d2a5f194ed4632f209555b3146ed7b79..fe6ea0b8f40172e59ad0f84c440ceeddd9b2c001 100644 --- a/src/main/java/net/minecraft/world/entity/Mob.java +++ b/src/main/java/net/minecraft/world/entity/Mob.java @@ -855,10 +855,10 @@ public abstract class Mob extends LivingEntity { diff --git a/patches/server/0097-Configurable-chat-message-signatures.patch b/patches/server/0095-Configurable-chat-message-signatures.patch similarity index 95% rename from patches/server/0097-Configurable-chat-message-signatures.patch rename to patches/server/0095-Configurable-chat-message-signatures.patch index 7f76a49..576d807 100644 --- a/patches/server/0097-Configurable-chat-message-signatures.patch +++ b/patches/server/0095-Configurable-chat-message-signatures.patch @@ -17,10 +17,10 @@ index 11183b4a39b9897e1b1067eb2a3556d2b1d90f52..d08127b516fbae1a5500a9d3f0df02a4 } diff --git a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java -index aec14ff5235686a3e02b66eb3ad05fed2c4756b4..60ba00eb6daeeb9b97281f9380d373af3cc29402 100644 +index 7cce3a758a0b19956572135162d88e92e4412018..6fd98bfba759af0f21d5225664757c023a9e4f6c 100644 --- a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java +++ b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java -@@ -619,6 +619,7 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface +@@ -646,6 +646,7 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface @Override public boolean enforceSecureProfile() { @@ -68,7 +68,7 @@ index c2f1eeeac3f48b99ade23f95b2af034773af2286..bc916c46c940e9395feb4f7c835e2844 if (packet == null || this.processedDisconnect) { // Spigot return; diff --git a/src/main/java/net/minecraft/server/players/PlayerList.java b/src/main/java/net/minecraft/server/players/PlayerList.java -index 32b74aa339db55d187824984b1bd82ccb0953167..193ff873323b2f4845ef6e90f8a05fc168b6b77d 100644 +index b4158aed45ec60be71251d5b90e340f790e239fb..631cb49918cb0eef97407ffc95a0b001ecd31a62 100644 --- a/src/main/java/net/minecraft/server/players/PlayerList.java +++ b/src/main/java/net/minecraft/server/players/PlayerList.java @@ -1489,6 +1489,7 @@ public abstract class PlayerList { diff --git a/patches/server/0098-PaperPR-Fix-exact-choice-recipe-book-clicks.patch b/patches/server/0096-PaperPR-Fix-exact-choice-recipe-book-clicks.patch similarity index 96% rename from patches/server/0098-PaperPR-Fix-exact-choice-recipe-book-clicks.patch rename to patches/server/0096-PaperPR-Fix-exact-choice-recipe-book-clicks.patch index d28a3e2..020cc11 100644 --- a/patches/server/0098-PaperPR-Fix-exact-choice-recipe-book-clicks.patch +++ b/patches/server/0096-PaperPR-Fix-exact-choice-recipe-book-clicks.patch @@ -98,10 +98,10 @@ index 4fea1c9873b4dd9c9f21722adbb02200487caf3c..cd47b6882509888f7d34e95b4687ca7a return instance.group(Registry.ITEM.byNameCodec().fieldOf("id").forGetter((itemstack) -> { return itemstack.item; diff --git a/src/main/java/net/minecraft/world/item/crafting/Ingredient.java b/src/main/java/net/minecraft/world/item/crafting/Ingredient.java -index bbf7d112b8020567f2c1d02ce0b2c1a22b2279d1..c707fd29ba282c1ee45d3dc8d8c03dca048420ef 100644 +index 895c0f1600139e340aa22a7c398978add56fa706..d5ced4c4ad354bbe6e6d256853de659923044299 100644 --- a/src/main/java/net/minecraft/world/item/crafting/Ingredient.java +++ b/src/main/java/net/minecraft/world/item/crafting/Ingredient.java -@@ -59,7 +59,11 @@ public final class Ingredient implements Predicate { +@@ -54,7 +54,11 @@ public final class Ingredient implements Predicate { if (this.itemStacks == null) { this.itemStacks = (ItemStack[]) Arrays.stream(this.values).flatMap((recipeitemstack_provider) -> { return recipeitemstack_provider.getItems().stream(); @@ -114,7 +114,7 @@ index bbf7d112b8020567f2c1d02ce0b2c1a22b2279d1..c707fd29ba282c1ee45d3dc8d8c03dca return new ItemStack[i]; }); } -@@ -102,7 +106,13 @@ public final class Ingredient implements Predicate { +@@ -104,7 +108,13 @@ public final class Ingredient implements Predicate { for (int j = 0; j < i; ++j) { ItemStack itemstack = aitemstack[j]; diff --git a/patches/server/0099-Fix-MC-238526.patch b/patches/server/0097-Fix-MC-238526.patch similarity index 100% rename from patches/server/0099-Fix-MC-238526.patch rename to patches/server/0097-Fix-MC-238526.patch diff --git a/patches/server/0100-Lobotomize-stuck-villagers.patch b/patches/server/0098-Lobotomize-stuck-villagers.patch similarity index 100% rename from patches/server/0100-Lobotomize-stuck-villagers.patch rename to patches/server/0098-Lobotomize-stuck-villagers.patch diff --git a/patches/server/0102-Fix-legacy-colors-in-console.patch b/patches/server/0099-Fix-legacy-colors-in-console.patch similarity index 100% rename from patches/server/0102-Fix-legacy-colors-in-console.patch rename to patches/server/0099-Fix-legacy-colors-in-console.patch diff --git a/patches/server/0105-Set-multiple-Team-settings-at-once.patch b/patches/server/0100-Set-multiple-Team-settings-at-once.patch similarity index 100% rename from patches/server/0105-Set-multiple-Team-settings-at-once.patch rename to patches/server/0100-Set-multiple-Team-settings-at-once.patch diff --git a/patches/server/0101-Fix-a-bunch-of-vanilla-bugs.patch b/patches/server/0101-Fix-a-bunch-of-vanilla-bugs.patch deleted file mode 100644 index 364db96..0000000 --- a/patches/server/0101-Fix-a-bunch-of-vanilla-bugs.patch +++ /dev/null @@ -1,121 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: Jake Potrebic -Date: Mon, 11 Jul 2022 11:56:41 -0700 -Subject: [PATCH] Fix a bunch of vanilla bugs - -https://bugs.mojang.com/browse/MC-253884 - show raid entity event to all tracking players - -https://bugs.mojang.com/browse/MC-253721 - wrong msg for opping multiple players - -https://bugs.mojang.com/browse/MC-248588 - respect mob griefing gamerule for draining water cauldrons - -https://bugs.mojang.com/browse/MC-244739 - play goat eating sound for last item in stack - -https://bugs.mojang.com/browse/MC-243057 - ignore furnace fuel slot in recipe book click - -Taken from https://github.com/PaperMC/Paper/pull/8187 - -diff --git a/src/main/java/net/minecraft/server/commands/DeOpCommands.java b/src/main/java/net/minecraft/server/commands/DeOpCommands.java -index cca2618d90306eed9894c5fa7b6ed96b68210688..10769c60bd53438d44fbc6192667acdf4cc95594 100644 ---- a/src/main/java/net/minecraft/server/commands/DeOpCommands.java -+++ b/src/main/java/net/minecraft/server/commands/DeOpCommands.java -@@ -33,7 +33,7 @@ public class DeOpCommands { - if (playerList.isOp(gameProfile)) { - playerList.deop(gameProfile); - ++i; -- source.sendSuccess(Component.translatable("commands.deop.success", targets.iterator().next().getName()), true); -+ source.sendSuccess(Component.translatable("commands.deop.success", gameProfile.getName()), true); // Paper - fixes MC-253721 - } - } - -diff --git a/src/main/java/net/minecraft/server/commands/OpCommand.java b/src/main/java/net/minecraft/server/commands/OpCommand.java -index 43e77cef0fce75f59aeb05e161668bebb8fca229..ef50fbf8cb3f008827850b5ed33422007be09bd2 100644 ---- a/src/main/java/net/minecraft/server/commands/OpCommand.java -+++ b/src/main/java/net/minecraft/server/commands/OpCommand.java -@@ -38,7 +38,7 @@ public class OpCommand { - if (!playerList.isOp(gameProfile)) { - playerList.op(gameProfile); - ++i; -- source.sendSuccess(Component.translatable("commands.op.success", targets.iterator().next().getName()), true); -+ source.sendSuccess(Component.translatable("commands.op.success", gameProfile.getName()), true); // Paper - fixes MC-253721 - } - } - -diff --git a/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java b/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java -index 362f952888f63a453a4352a9f1dc7df799244a3c..0a700defc04f649fb45cb3d3df1e332f39f6d89a 100644 ---- a/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java -+++ b/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java -@@ -213,9 +213,10 @@ public class Goat extends Animal { - player.setItemInHand(hand, itemstack1); - return InteractionResult.sidedSuccess(this.level.isClientSide); - } else { -+ boolean isFood = this.isFood(itemstack); // Paper - track before stack is possibly decreased to 0 (Fixes MC-244739) - InteractionResult enuminteractionresult = super.mobInteract(player, hand); - -- if (enuminteractionresult.consumesAction() && this.isFood(itemstack)) { -+ if (enuminteractionresult.consumesAction() && isFood) { // Paper - this.level.playSound((Player) null, (Entity) this, this.getEatingSound(itemstack), SoundSource.NEUTRAL, 1.0F, Mth.randomBetween(this.level.random, 0.8F, 1.2F)); - } - -diff --git a/src/main/java/net/minecraft/world/entity/raid/Raids.java b/src/main/java/net/minecraft/world/entity/raid/Raids.java -index fa8fcdfea51a35e4a482d3d7b18159099da62706..feb89eb69994bdd1d2f95d2b9992e69251b2bee7 100644 ---- a/src/main/java/net/minecraft/world/entity/raid/Raids.java -+++ b/src/main/java/net/minecraft/world/entity/raid/Raids.java -@@ -125,7 +125,7 @@ public class Raids extends SavedData { - // CraftBukkit end - } else { - player.removeEffect(MobEffects.BAD_OMEN); -- player.connection.send(new ClientboundEntityEventPacket(player, (byte) 43)); -+ this.level.broadcastEntityEvent(player, net.minecraft.world.entity.EntityEvent.BAD_OMEN_TRIGGERED /* (byte) 43 */); // Paper - Fix MC-253884 - } - - if (flag) { -@@ -140,7 +140,7 @@ public class Raids extends SavedData { - } - // CraftBukkit end - raid.absorbBadOmen(player); -- player.connection.send(new ClientboundEntityEventPacket(player, (byte) 43)); -+ this.level.broadcastEntityEvent(player, net.minecraft.world.entity.EntityEvent.BAD_OMEN_TRIGGERED /* (byte) 43 */); // Paper - Fix MC-253884 - if (!raid.hasFirstWaveSpawned()) { - player.awardStat(Stats.RAID_TRIGGER); - CriteriaTriggers.BAD_OMEN.trigger(player); -diff --git a/src/main/java/net/minecraft/world/level/block/LayeredCauldronBlock.java b/src/main/java/net/minecraft/world/level/block/LayeredCauldronBlock.java -index a223959f766ac41aff7aeff80606f5e7c37ebf49..1a90860bc39afb8bade96a5c6c40861dbb68c21e 100644 ---- a/src/main/java/net/minecraft/world/level/block/LayeredCauldronBlock.java -+++ b/src/main/java/net/minecraft/world/level/block/LayeredCauldronBlock.java -@@ -63,7 +63,7 @@ public class LayeredCauldronBlock extends AbstractCauldronBlock { - if (!new io.papermc.paper.event.entity.EntityInsideBlockEvent(entity.getBukkitEntity(), org.bukkit.craftbukkit.block.CraftBlock.at(world, pos)).callEvent()) { return; } // Paper - if (!world.isClientSide && entity.isOnFire() && this.isEntityInsideContent(state, pos, entity)) { - // CraftBukkit start -- if (entity.mayInteract(world, pos)) { -+ if ((entity instanceof net.minecraft.world.entity.player.Player || world.getGameRules().getBoolean(net.minecraft.world.level.GameRules.RULE_MOBGRIEFING)) && entity.mayInteract(world, pos)) { // Paper - Fixes MC-248588 - if (!this.handleEntityOnFireInsideWithEvent(state, world, pos, entity)) { // Paper - fix powdered snow cauldron extinguishing entities - return; - } -diff --git a/src/main/java/net/minecraft/world/level/block/entity/AbstractFurnaceBlockEntity.java b/src/main/java/net/minecraft/world/level/block/entity/AbstractFurnaceBlockEntity.java -index f86ac933490d50179e09fa61e2f6e5af339249c3..ebf718cea97d4ff88e888675eeceeca253dc01cb 100644 ---- a/src/main/java/net/minecraft/world/level/block/entity/AbstractFurnaceBlockEntity.java -+++ b/src/main/java/net/minecraft/world/level/block/entity/AbstractFurnaceBlockEntity.java -@@ -669,13 +669,10 @@ public abstract class AbstractFurnaceBlockEntity extends BaseContainerBlockEntit - - @Override - public void fillStackedContents(StackedContents finder) { -- Iterator iterator = this.items.iterator(); -- -- while (iterator.hasNext()) { -- ItemStack itemstack = (ItemStack) iterator.next(); -- -- finder.accountStack(itemstack); -- } -+ // Paper start - don't account fuel stack (fixes MC-243057) -+ finder.accountStack(this.items.get(SLOT_INPUT)); -+ finder.accountStack(this.items.get(SLOT_RESULT)); -+ // Paper end - - } - } diff --git a/patches/server/0106-Smooth-Teleports.patch b/patches/server/0101-Smooth-Teleports.patch similarity index 92% rename from patches/server/0106-Smooth-Teleports.patch rename to patches/server/0101-Smooth-Teleports.patch index 8e6998b..1a49b5b 100644 --- a/patches/server/0106-Smooth-Teleports.patch +++ b/patches/server/0101-Smooth-Teleports.patch @@ -9,7 +9,7 @@ Original license: MIT Original project: https://github.com/Cryptite/Slice diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index 9c49496741db2e4f309b1bc6ece26f592dd216b8..ac64ed3d6c64caa5c548f350f141e2fee5c2e736 100644 +index 48e195a6c8005a64cb286cfae39e54745f83affe..9afedb53289cbdeb62e3e14f8f58b4b77e241a49 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java @@ -266,6 +266,7 @@ public class ServerPlayer extends Player { @@ -21,7 +21,7 @@ index 9c49496741db2e4f309b1bc6ece26f592dd216b8..ac64ed3d6c64caa5c548f350f141e2fe public ServerPlayer(MinecraftServer server, ServerLevel world, GameProfile profile, @Nullable ProfilePublicKey publicKey) { super(world, world.getSharedSpawnPos(), world.getSharedSpawnAngle(), profile, publicKey); diff --git a/src/main/java/net/minecraft/server/players/PlayerList.java b/src/main/java/net/minecraft/server/players/PlayerList.java -index 193ff873323b2f4845ef6e90f8a05fc168b6b77d..bded25d3d87ee8c6e90874275e9d1ab3fd65a26b 100644 +index 631cb49918cb0eef97407ffc95a0b001ecd31a62..2441cda53d8d0197abf49e53ef101dd5bf63185e 100644 --- a/src/main/java/net/minecraft/server/players/PlayerList.java +++ b/src/main/java/net/minecraft/server/players/PlayerList.java @@ -970,12 +970,12 @@ public abstract class PlayerList { @@ -40,10 +40,10 @@ index 193ff873323b2f4845ef6e90f8a05fc168b6b77d..bded25d3d87ee8c6e90874275e9d1ab3 // entityplayer1.connection.teleport(entityplayer1.getX(), entityplayer1.getY(), entityplayer1.getZ(), entityplayer1.getYRot(), entityplayer1.getXRot()); diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index b85ed871a502d0793b4991ed6e7d3f9ad6bba027..35ef241b3d3fbd2249c22f3069bfe41a53ab64be 100644 +index d0fc98ed0530a99adeb3c126b1040e40bb97685b..f20d307cc9cf684c181b5e7e9f32625452fea93d 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -@@ -1169,6 +1169,15 @@ public class CraftPlayer extends CraftHumanEntity implements Player { +@@ -1212,6 +1212,15 @@ public class CraftPlayer extends CraftHumanEntity implements Player { // Paper end } diff --git a/patches/server/0107-Unfreeze-MappedRegistry.patch b/patches/server/0102-Unfreeze-MappedRegistry.patch similarity index 100% rename from patches/server/0107-Unfreeze-MappedRegistry.patch rename to patches/server/0102-Unfreeze-MappedRegistry.patch diff --git a/patches/server/0110-Don-t-double-save-the-json-lists.patch b/patches/server/0103-Don-t-double-save-the-json-lists.patch similarity index 100% rename from patches/server/0110-Don-t-double-save-the-json-lists.patch rename to patches/server/0103-Don-t-double-save-the-json-lists.patch diff --git a/patches/server/0103-PaperPR-Set-position-before-player-sending-on-dimens.patch b/patches/server/0103-PaperPR-Set-position-before-player-sending-on-dimens.patch deleted file mode 100644 index 8a67cf6..0000000 --- a/patches/server/0103-PaperPR-Set-position-before-player-sending-on-dimens.patch +++ /dev/null @@ -1,23 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: Owen1212055 <23108066+Owen1212055@users.noreply.github.com> -Date: Sat, 6 Aug 2022 18:10:14 -0400 -Subject: [PATCH] PaperPR Set position before player sending on dimension - change - -This causes a moment where the player entity is sent with the previous location, and the -teleport packet which is sent shortly after is meant to correct that. - -Taken from https://github.com/PaperMC/Paper/pull/8253 - -diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index 4d705dc5294bb07b0ce34c68d1c4bbf33bb84848..9c49496741db2e4f309b1bc6ece26f592dd216b8 100644 ---- a/src/main/java/net/minecraft/server/level/ServerPlayer.java -+++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java -@@ -1155,6 +1155,7 @@ public class ServerPlayer extends Player { - - // CraftBukkit end - this.setLevel(worldserver); -+ this.moveTo(exit.getX(), exit.getY(), exit.getZ(), exit.getYaw(), exit.getPitch()); // Paper - Set the location before - worldserver.addDuringPortalTeleport(this); - this.connection.teleport(exit); // CraftBukkit - use internal teleport without event - this.connection.resetPosition(); // CraftBukkit - sync position after changing it (from PortalTravelAgent#findAndteleport) diff --git a/patches/server/0111-Don-t-wander-into-non-ticking-chunks.patch b/patches/server/0104-Don-t-wander-into-non-ticking-chunks.patch similarity index 100% rename from patches/server/0111-Don-t-wander-into-non-ticking-chunks.patch rename to patches/server/0104-Don-t-wander-into-non-ticking-chunks.patch diff --git a/patches/server/0104-Set-BlockData-without-light-updates.patch b/patches/server/0104-Set-BlockData-without-light-updates.patch deleted file mode 100644 index 3b33cfe..0000000 --- a/patches/server/0104-Set-BlockData-without-light-updates.patch +++ /dev/null @@ -1,181 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: Tom -Date: Fri, 12 Aug 2022 08:20:02 -0500 -Subject: [PATCH] Set BlockData without light updates - -Copyright (c) 2021 Tom Miller - -Original license: MIT -Original project: https://github.com/Cryptite/Slice - -diff --git a/src/main/java/net/minecraft/server/level/WorldGenRegion.java b/src/main/java/net/minecraft/server/level/WorldGenRegion.java -index 8afacc53a673567cead4c6e49966f07f1d5da754..33f07595a99a94984f221fdf8e436dd3c3b094f5 100644 ---- a/src/main/java/net/minecraft/server/level/WorldGenRegion.java -+++ b/src/main/java/net/minecraft/server/level/WorldGenRegion.java -@@ -278,7 +278,7 @@ public class WorldGenRegion implements WorldGenLevel { - Block.dropResources(iblockdata, this.level, pos, tileentity, breakingEntity, ItemStack.EMPTY); - } - -- return this.setBlock(pos, Blocks.AIR.defaultBlockState(), 3, maxUpdateDepth); -+ return this.setBlock(pos, Blocks.AIR.defaultBlockState(), 3, maxUpdateDepth, true); // Slice - } - } - -@@ -353,7 +353,7 @@ public class WorldGenRegion implements WorldGenLevel { - } - - @Override -- public boolean setBlock(BlockPos pos, BlockState state, int flags, int maxUpdateDepth) { -+ public boolean setBlock(BlockPos pos, BlockState state, int flags, int maxUpdateDepth, boolean checkLight) { // Slice - if (!this.ensureCanWrite(pos)) { - return false; - } else { -diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java -index 53149faf2b33d202809e259800b15a0d0c2dacf2..4f79fb616d594c1d1456cf7efc938c6621fbee68 100644 ---- a/src/main/java/net/minecraft/world/level/Level.java -+++ b/src/main/java/net/minecraft/world/level/Level.java -@@ -613,12 +613,12 @@ public abstract class Level implements LevelAccessor, AutoCloseable { - } - - @Override -- public final boolean setBlock(BlockPos pos, BlockState state, int flags) { // Paper - final for inline -- return this.setBlock(pos, state, flags, 512); -+ public final boolean setBlock(BlockPos pos, BlockState state, int flags, boolean checkLight) { // Paper - final for inline -+ return this.setBlock(pos, state, flags, 512, checkLight); - } - - @Override -- public boolean setBlock(BlockPos pos, BlockState state, int flags, int maxUpdateDepth) { -+ public boolean setBlock(BlockPos pos, BlockState state, int flags, int maxUpdateDepth, boolean checkLight) { - // CraftBukkit start - tree generation - if (this.captureTreeGeneration) { - // Paper start -@@ -665,7 +665,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable { - } else { - BlockState iblockdata2 = this.getBlockState(pos); - -- if ((flags & 128) == 0 && iblockdata2 != iblockdata1 && (iblockdata2.getLightBlock(this, pos) != iblockdata1.getLightBlock(this, pos) || iblockdata2.getLightEmission() != iblockdata1.getLightEmission() || iblockdata2.useShapeForLightOcclusion() || iblockdata1.useShapeForLightOcclusion())) { -+ if (checkLight && (flags & 128) == 0 && iblockdata2 != iblockdata1 && (iblockdata2.getLightBlock(this, pos) != iblockdata1.getLightBlock(this, pos) || iblockdata2.getLightEmission() != iblockdata1.getLightEmission() || iblockdata2.useShapeForLightOcclusion() || iblockdata1.useShapeForLightOcclusion())) { - this.getProfiler().push("queueCheckLight"); - this.getChunkSource().getLightEngine().checkBlock(pos); - this.getProfiler().pop(); -@@ -813,7 +813,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable { - Block.dropResources(iblockdata, this, pos, tileentity, breakingEntity, ItemStack.EMPTY); - } - -- boolean flag1 = this.setBlock(pos, fluid.createLegacyBlock(), 3, maxUpdateDepth); -+ boolean flag1 = this.setBlock(pos, fluid.createLegacyBlock(), 3, maxUpdateDepth, true); - - if (flag1) { - this.gameEvent(GameEvent.BLOCK_DESTROY, pos, GameEvent.Context.of(breakingEntity, iblockdata)); -diff --git a/src/main/java/net/minecraft/world/level/LevelWriter.java b/src/main/java/net/minecraft/world/level/LevelWriter.java -index 134e5ec79bf2dddd4e31930f8a7cb2c02fa29518..fd72d278a2719911a46b6bc9e7da2dc24bbe681e 100644 ---- a/src/main/java/net/minecraft/world/level/LevelWriter.java -+++ b/src/main/java/net/minecraft/world/level/LevelWriter.java -@@ -7,10 +7,14 @@ import net.minecraft.world.level.block.state.BlockState; - - public interface LevelWriter { - -- boolean setBlock(BlockPos pos, BlockState state, int flags, int maxUpdateDepth); -+ boolean setBlock(BlockPos pos, BlockState state, int flags, int maxUpdateDepth, boolean checkLight); - - default boolean setBlock(BlockPos pos, BlockState state, int flags) { -- return this.setBlock(pos, state, flags, 512); -+ return this.setBlock(pos, state, flags, 512, true); -+ } -+ -+ default boolean setBlock(BlockPos pos, BlockState state, int flags, boolean checkLight) { -+ return this.setBlock(pos, state, flags, 512, checkLight); - } - - boolean removeBlock(BlockPos pos, boolean move); -diff --git a/src/main/java/net/minecraft/world/level/block/Block.java b/src/main/java/net/minecraft/world/level/block/Block.java -index 1834470b549d8352317cf081173ff542c9faac1e..ebbbb5033f88a4cea866b0415001c2f747e1248f 100644 ---- a/src/main/java/net/minecraft/world/level/block/Block.java -+++ b/src/main/java/net/minecraft/world/level/block/Block.java -@@ -200,7 +200,7 @@ public class Block extends BlockBehaviour implements ItemLike { - world.destroyBlock(pos, (flags & 32) == 0, (Entity) null, maxUpdateDepth); - } - } else { -- world.setBlock(pos, newState, flags & -33, maxUpdateDepth); -+ world.setBlock(pos, newState, flags & -33, maxUpdateDepth, true); // Slice - } - } - -diff --git a/src/main/java/org/bukkit/craftbukkit/CraftRegionAccessor.java b/src/main/java/org/bukkit/craftbukkit/CraftRegionAccessor.java -index 62bca85da6c5d9877e21fecb702370506ddf671c..9e339db1a9257e64f5645ba7e4025debaa4110e9 100644 ---- a/src/main/java/org/bukkit/craftbukkit/CraftRegionAccessor.java -+++ b/src/main/java/org/bukkit/craftbukkit/CraftRegionAccessor.java -@@ -277,7 +277,7 @@ public abstract class CraftRegionAccessor implements RegionAccessor { - BlockPos pos = new BlockPos(x, y, z); - net.minecraft.world.level.block.state.BlockState old = this.getHandle().getBlockState(pos); - -- CraftBlock.setTypeAndData(world, pos, old, ((CraftBlockData) blockData).getState(), true); -+ CraftBlock.setTypeAndData(world, pos, old, ((CraftBlockData) blockData).getState(), true, true); - } - - @Override -diff --git a/src/main/java/org/bukkit/craftbukkit/block/CraftBlock.java b/src/main/java/org/bukkit/craftbukkit/block/CraftBlock.java -index 0d47460494135d4ec4c95260de033e054c2f0404..4d49cc4ceba781bc24ac9b4229483625a996839d 100644 ---- a/src/main/java/org/bukkit/craftbukkit/block/CraftBlock.java -+++ b/src/main/java/org/bukkit/craftbukkit/block/CraftBlock.java -@@ -187,15 +187,20 @@ public class CraftBlock implements Block { - - @Override - public void setBlockData(BlockData data, boolean applyPhysics) { -+ setBlockData(data, applyPhysics, true); -+ } -+ -+ @Override -+ public void setBlockData(BlockData data, boolean applyPhysics, boolean checkLight) { - Preconditions.checkArgument(data != null, "BlockData cannot be null"); -- this.setTypeAndData(((CraftBlockData) data).getState(), applyPhysics); -+ this.setTypeAndData(((CraftBlockData) data).getState(), applyPhysics, checkLight); - } - -- boolean setTypeAndData(final net.minecraft.world.level.block.state.BlockState blockData, final boolean applyPhysics) { -- return CraftBlock.setTypeAndData(this.world, this.position, this.getNMS(), blockData, applyPhysics); -+ boolean setTypeAndData(final net.minecraft.world.level.block.state.BlockState blockData, final boolean applyPhysics, boolean checkLight) { -+ return CraftBlock.setTypeAndData(this.world, this.position, this.getNMS(), blockData, applyPhysics, checkLight); - } - -- public static boolean setTypeAndData(LevelAccessor world, BlockPos position, net.minecraft.world.level.block.state.BlockState old, net.minecraft.world.level.block.state.BlockState blockData, boolean applyPhysics) { -+ public static boolean setTypeAndData(LevelAccessor world, BlockPos position, net.minecraft.world.level.block.state.BlockState old, net.minecraft.world.level.block.state.BlockState blockData, boolean applyPhysics, boolean checkLight) { - // SPIGOT-611: need to do this to prevent glitchiness. Easier to handle this here (like /setblock) than to fix weirdness in tile entity cleanup - if (old.hasBlockEntity() && blockData.getBlock() != old.getBlock()) { // SPIGOT-3725 remove old tile entity if block changes - // SPIGOT-4612: faster - just clear tile -@@ -209,7 +214,7 @@ public class CraftBlock implements Block { - if (applyPhysics) { - return world.setBlock(position, blockData, 3); - } else { -- boolean success = world.setBlock(position, blockData, 2 | 16 | 1024); // NOTIFY | NO_OBSERVER | NO_PLACE (custom) -+ boolean success = world.setBlock(position, blockData, 2 | 16 | 1024, checkLight); // NOTIFY | NO_OBSERVER | NO_PLACE (custom) - if (success && world instanceof net.minecraft.world.level.Level) { - world.getMinecraftWorld().sendBlockUpdated( - position, -diff --git a/src/main/java/org/bukkit/craftbukkit/block/CraftBlockState.java b/src/main/java/org/bukkit/craftbukkit/block/CraftBlockState.java -index 966ac60daebb7bb211ab8096fc0c5f33db67320a..d68b046e30d0f3d186ed90b7c36086ccd889de1f 100644 ---- a/src/main/java/org/bukkit/craftbukkit/block/CraftBlockState.java -+++ b/src/main/java/org/bukkit/craftbukkit/block/CraftBlockState.java -@@ -213,7 +213,7 @@ public class CraftBlockState implements BlockState { - } - - net.minecraft.world.level.block.state.BlockState newBlock = this.data; -- block.setTypeAndData(newBlock, applyPhysics); -+ block.setTypeAndData(newBlock, applyPhysics, true); - if (access instanceof net.minecraft.world.level.Level) { - this.world.getHandle().sendBlockUpdated( - position, -diff --git a/src/main/java/org/bukkit/craftbukkit/util/DummyGeneratorAccess.java b/src/main/java/org/bukkit/craftbukkit/util/DummyGeneratorAccess.java -index cd0dc080fbd8c5b1509d67e2b60264393b2b7dbb..8195cace753c6d044a128f768459303bc2f97588 100644 ---- a/src/main/java/org/bukkit/craftbukkit/util/DummyGeneratorAccess.java -+++ b/src/main/java/org/bukkit/craftbukkit/util/DummyGeneratorAccess.java -@@ -241,7 +241,7 @@ public class DummyGeneratorAccess implements WorldGenLevel { - } - - @Override -- public boolean setBlock(BlockPos pos, BlockState state, int flags, int maxUpdateDepth) { -+ public boolean setBlock(BlockPos pos, BlockState state, int flags, int maxUpdateDepth, boolean checkLight) { - return false; - } - diff --git a/patches/server/0112-Optimize-CraftServer.getWorld-UUID.patch b/patches/server/0105-Optimize-CraftServer.getWorld-UUID.patch similarity index 89% rename from patches/server/0112-Optimize-CraftServer.getWorld-UUID.patch rename to patches/server/0105-Optimize-CraftServer.getWorld-UUID.patch index 89b61fd..9a457b1 100644 --- a/patches/server/0112-Optimize-CraftServer.getWorld-UUID.patch +++ b/patches/server/0105-Optimize-CraftServer.getWorld-UUID.patch @@ -7,7 +7,7 @@ Original license: GPLv3 Original project: https://github.com/MultiPaper/MultiPaper diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -index 1b1e3cff46ed4c8447421d056a91018e624a47a6..d2298a4c77ebfd3c93ad83959e8e685d8f85e052 100644 +index d2478bda9e8395a8730a3416ce3133782ab9a8e9..cc9c5eecc4ef1d5dc4e814ad89a40a34f4d48a69 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java @@ -45,6 +45,8 @@ import java.util.logging.Level; @@ -27,7 +27,7 @@ index 1b1e3cff46ed4c8447421d056a91018e624a47a6..d2298a4c77ebfd3c93ad83959e8e685d private final Map, Registry> registries = new HashMap<>(); private YamlConfiguration configuration; private YamlConfiguration commandsConfiguration; -@@ -1307,6 +1310,7 @@ public final class CraftServer implements Server { +@@ -1312,6 +1315,7 @@ public final class CraftServer implements Server { this.getLogger().log(Level.SEVERE, null, ex); } @@ -35,7 +35,7 @@ index 1b1e3cff46ed4c8447421d056a91018e624a47a6..d2298a4c77ebfd3c93ad83959e8e685d this.worlds.remove(world.getName().toLowerCase(java.util.Locale.ENGLISH)); this.console.removeLevel(handle); return true; -@@ -1325,6 +1329,7 @@ public final class CraftServer implements Server { +@@ -1330,6 +1334,7 @@ public final class CraftServer implements Server { @Override public World getWorld(UUID uid) { @@ -43,7 +43,7 @@ index 1b1e3cff46ed4c8447421d056a91018e624a47a6..d2298a4c77ebfd3c93ad83959e8e685d for (World world : this.worlds.values()) { if (world.getUID().equals(uid)) { return world; -@@ -1348,6 +1353,7 @@ public final class CraftServer implements Server { +@@ -1353,6 +1358,7 @@ public final class CraftServer implements Server { System.out.println("World " + world.getName() + " is a duplicate of another world and has been prevented from loading. Please delete the uid.dat file from " + world.getName() + "'s world directory if you want to be able to load the duplicate world."); return; } diff --git a/patches/server/0113-Configurable-mobs-from-spawners-picking-up-loot.patch b/patches/server/0106-Configurable-mobs-from-spawners-picking-up-loot.patch similarity index 100% rename from patches/server/0113-Configurable-mobs-from-spawners-picking-up-loot.patch rename to patches/server/0106-Configurable-mobs-from-spawners-picking-up-loot.patch diff --git a/patches/server/0108-Run-tasks-while-reading-poi-data.patch b/patches/server/0108-Run-tasks-while-reading-poi-data.patch deleted file mode 100644 index 498e827..0000000 --- a/patches/server/0108-Run-tasks-while-reading-poi-data.patch +++ /dev/null @@ -1,45 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: PureGero -Date: Sat, 25 Dec 2021 18:34:04 +1000 -Subject: [PATCH] Run tasks while reading poi data - -Original license: GPLv3 -Original project: https://github.com/MultiPaper/MultiPaper - -diff --git a/src/main/java/net/minecraft/world/entity/ai/village/poi/PoiManager.java b/src/main/java/net/minecraft/world/entity/ai/village/poi/PoiManager.java -index 210b0cdd4831421c8f43c3d823ac8e962b56bbbc..a52955c51988c821ab00f0c2298193aaa8126330 100644 ---- a/src/main/java/net/minecraft/world/entity/ai/village/poi/PoiManager.java -+++ b/src/main/java/net/minecraft/world/entity/ai/village/poi/PoiManager.java -@@ -1,5 +1,6 @@ - package net.minecraft.world.entity.ai.village.poi; - -+import com.destroystokyo.paper.io.PaperFileIOThread; - import it.unimi.dsi.fastutil.longs.Long2ObjectOpenHashMap; // Paper - import com.mojang.datafixers.DataFixer; - import com.mojang.datafixers.util.Pair; -@@ -11,6 +12,7 @@ import java.nio.file.Path; - import java.util.Comparator; - import java.util.List; - import java.util.Optional; -+import java.util.concurrent.CompletableFuture; - import java.util.function.BiConsumer; - import java.util.function.BiPredicate; - import java.util.function.BooleanSupplier; -@@ -460,9 +462,15 @@ public class PoiManager extends SectionStorage { - @Override - public net.minecraft.nbt.CompoundTag read(ChunkPos chunkcoordintpair) throws java.io.IOException { - if (this.world != null && Thread.currentThread() != com.destroystokyo.paper.io.PaperFileIOThread.Holder.INSTANCE) { -- net.minecraft.nbt.CompoundTag ret = com.destroystokyo.paper.io.PaperFileIOThread.Holder.INSTANCE -+ // MultiPaper start - don't block the main thread, run tasks in the meantime -+ CompletableFuture completablefuture = com.destroystokyo.paper.io.PaperFileIOThread.Holder.INSTANCE - .loadChunkDataAsyncFuture(this.world, chunkcoordintpair.x, chunkcoordintpair.z, com.destroystokyo.paper.io.IOUtil.getPriorityForCurrentThread(), -- true, false, true).join().poiData; -+ true, false, true); -+ if (!completablefuture.isDone()) { -+ world.chunkSource.mainThreadProcessor.managedBlock(completablefuture::isDone); -+ } -+ net.minecraft.nbt.CompoundTag ret = completablefuture.join().poiData; -+ // MultiPaper end - - if (ret == com.destroystokyo.paper.io.PaperFileIOThread.FAILURE_VALUE) { - throw new java.io.IOException("See logs for further detail"); diff --git a/patches/server/0109-Run-tasks-while-we-wait-for-the-entity-storage-worke.patch b/patches/server/0109-Run-tasks-while-we-wait-for-the-entity-storage-worke.patch deleted file mode 100644 index 6b69eb8..0000000 --- a/patches/server/0109-Run-tasks-while-we-wait-for-the-entity-storage-worke.patch +++ /dev/null @@ -1,27 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: PureGero -Date: Thu, 27 Jan 2022 22:43:56 +1000 -Subject: [PATCH] Run tasks while we wait for the entity storage worker to - close - -Original license: GPLv3 -Original project: https://github.com/MultiPaper/MultiPaper - -diff --git a/src/main/java/net/minecraft/world/level/chunk/storage/EntityStorage.java b/src/main/java/net/minecraft/world/level/chunk/storage/EntityStorage.java -index 2bc0384728f89b7c64a8beec78a1b77dc063d37b..513ba9199a1361e678e0146e1ca36af9e42ce3dd 100644 ---- a/src/main/java/net/minecraft/world/level/chunk/storage/EntityStorage.java -+++ b/src/main/java/net/minecraft/world/level/chunk/storage/EntityStorage.java -@@ -122,7 +122,12 @@ public class EntityStorage implements EntityPersistentStorage { - - @Override - public void flush(boolean sync) { -- this.worker.synchronize(sync).join(); -+ // MultiPaper start - Run tasks while we wait for the entity storage worker to close -+ CompletableFuture completableFuture = this.worker.synchronize(sync); -+ if (!completableFuture.isDone()) { -+ level.chunkSource.mainThreadProcessor.managedBlock(completableFuture::isDone); -+ } -+ // MultiPaper end - this.entityDeserializerQueue.runAll(); - } -