diff --git a/gradle.properties b/gradle.properties index 82f9aa47..b6387e10 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,8 +1,8 @@ group=top.leavesmc.leaves -version=1.19.4-R0.1-SNAPSHOT +version=1.20-R0.1-SNAPSHOT -mcVersion=1.19.4 -packageVersion=1_19_R3 +mcVersion=1.20 +packageVersion=1_20_R1 org.gradle.jvmargs=-Xmx2G -paperRef=bcd8dc2c1189293c4fc0b57048f0f0668c1b7e60 -preVersion=false +paperRef=dc30ee591d52a55ac1f6dfce6e731a583cc21fad +preVersion=true diff --git a/patches/api/0001-Leaves-Server-Config.patch b/patches/api/0001-Leaves-Server-Config.patch index e2dc6757..588cc12e 100644 --- a/patches/api/0001-Leaves-Server-Config.patch +++ b/patches/api/0001-Leaves-Server-Config.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Leaves Server Config diff --git a/src/main/java/org/bukkit/Server.java b/src/main/java/org/bukkit/Server.java -index 9f7029d327b55c8b1b9cfef8ea2678b87dad8ddb..2d14421051ffa6951aef42f3d2742e7207f63859 100644 +index 1d1a1d087dabc9794e0062a064da2cced4062309..b3d333c898b8b64386d4253ca9272eab638040a0 100644 --- a/src/main/java/org/bukkit/Server.java +++ b/src/main/java/org/bukkit/Server.java -@@ -1966,6 +1966,14 @@ public interface Server extends PluginMessageRecipient, net.kyori.adventure.audi +@@ -1993,6 +1993,14 @@ public interface Server extends PluginMessageRecipient, net.kyori.adventure.audi throw new UnsupportedOperationException("Not supported yet."); } // Paper end diff --git a/patches/server/0001-Build-changes.patch b/patches/server/0001-Build-changes.patch index 70f677f9..ae54bb46 100644 --- a/patches/server/0001-Build-changes.patch +++ b/patches/server/0001-Build-changes.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Build changes diff --git a/build.gradle.kts b/build.gradle.kts -index 9cf389defdaeb887e9cad4f0fed3f3b95667b238..5c2ecb57aa3395a2bb10464e85b18c3ecf77e91d 100644 +index e7a03ea1dab56e7725f718da0b44c736018ac995..b84bd99de502335f75b5cc07d607756d81c7c9c2 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -7,8 +7,12 @@ plugins { @@ -79,10 +79,10 @@ index 4b002e8b75d117b726b0de274a76d3596fce015b..0ac8bcb0a4b7d1da3d0e016617db7a81 metrics.addCustomChart(new Metrics.DrilldownPie("java_version", () -> { Map> map = new HashMap<>(); diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index 9f15d9dbdfa74a0640b1a2b4ff695609d4758a4c..e5d4c3eb2f6bfe446d6520564a263dbc6fecc1fa 100644 +index fb82bb52f219e7683fe1d3c0fb3acbe2251de8d4..5235cdd0f8264b8bd47ddb984e95870138f17560 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java -@@ -1682,7 +1682,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop resourcekey, RegistryAccess iregistrycustom, Holder holder, Supplier supplier, boolean flag, boolean flag1, long i, int j, org.bukkit.generator.ChunkGenerator gen, org.bukkit.generator.BiomeProvider biomeProvider, org.bukkit.World.Environment env, java.util.function.Function paperWorldConfigCreator, java.util.concurrent.Executor executor) { // Paper - Async-Anti-Xray - Pass executor this.spigotConfig = new org.spigotmc.SpigotWorldConfig(((net.minecraft.world.level.storage.PrimaryLevelData) worlddatamutable).getLevelName()); // Spigot this.paperConfig = paperWorldConfigCreator.apply(this.spigotConfig); // Paper @@ -65,10 +65,10 @@ index 973ecd50f9cb6b86c353586e84d15dcb118ccb60..31f0034115a88a42b18e0b838eab8b80 this.world = new CraftWorld((ServerLevel) this, gen, biomeProvider, env); diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -index 0d9f5e8b880bff78c122e863c42a23e47c455b9c..4cc3d03b30db2057b6e03a3b3e92459f8ad81eae 100644 +index 9869740f1d0e5dfbc1ffa0d3de9b683db848396b..5b128a82f9759dcc033d313f576914d6c9f2214b 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -@@ -957,6 +957,7 @@ public final class CraftServer implements Server { +@@ -979,6 +979,7 @@ public final class CraftServer implements Server { org.spigotmc.SpigotConfig.init((File) console.options.valueOf("spigot-settings")); // Spigot this.console.paperConfigurations.reloadConfigs(this.console); @@ -76,7 +76,7 @@ index 0d9f5e8b880bff78c122e863c42a23e47c455b9c..4cc3d03b30db2057b6e03a3b3e92459f for (ServerLevel world : this.console.getAllLevels()) { // world.serverLevelData.setDifficulty(config.difficulty); // Paper - per level difficulty world.setSpawnSettings(world.serverLevelData.getDifficulty() != Difficulty.PEACEFUL && config.spawnMonsters, config.spawnAnimals); // Paper - per level difficulty (from MinecraftServer#setDifficulty(ServerLevel, Difficulty, boolean)) -@@ -972,6 +973,7 @@ public final class CraftServer implements Server { +@@ -994,6 +995,7 @@ public final class CraftServer implements Server { } } world.spigotConfig.init(); // Spigot @@ -84,7 +84,7 @@ index 0d9f5e8b880bff78c122e863c42a23e47c455b9c..4cc3d03b30db2057b6e03a3b3e92459f } Plugin[] pluginClone = pluginManager.getPlugins().clone(); // Paper -@@ -987,6 +989,7 @@ public final class CraftServer implements Server { +@@ -1009,6 +1011,7 @@ public final class CraftServer implements Server { this.reloadData(); org.spigotmc.SpigotConfig.registerCommands(); // Spigot io.papermc.paper.command.PaperCommands.registerCommands(this.console); // Paper @@ -92,7 +92,7 @@ index 0d9f5e8b880bff78c122e863c42a23e47c455b9c..4cc3d03b30db2057b6e03a3b3e92459f this.overrideAllCommandBlockCommands = this.commandsConfiguration.getStringList("command-block-overrides").contains("*"); this.ignoreVanillaPermissions = this.commandsConfiguration.getBoolean("ignore-vanilla-permissions"); -@@ -2740,6 +2743,14 @@ public final class CraftServer implements Server { +@@ -2758,6 +2761,14 @@ public final class CraftServer implements Server { { return CraftServer.this.console.paperConfigurations.createLegacyObject(CraftServer.this.console); } @@ -108,7 +108,7 @@ index 0d9f5e8b880bff78c122e863c42a23e47c455b9c..4cc3d03b30db2057b6e03a3b3e92459f @Override public void restart() { diff --git a/src/main/java/org/bukkit/craftbukkit/Main.java b/src/main/java/org/bukkit/craftbukkit/Main.java -index ca4925d43413600ba092581c71086a7f5e357853..62e21fff47afa7b63c779e7271446dc3c92924e2 100644 +index 5c4bf6d99da409988871465de27e0357af79f37e..ce9873f216cbb330dee4abbdf8b0459f7e53dbe5 100644 --- a/src/main/java/org/bukkit/craftbukkit/Main.java +++ b/src/main/java/org/bukkit/craftbukkit/Main.java @@ -165,6 +165,14 @@ public class Main { diff --git a/patches/server/0005-Fix-gravity-block-duper.patch b/patches/server/0005-Fix-gravity-block-duper.patch index 2b933ae7..78e32d32 100644 --- a/patches/server/0005-Fix-gravity-block-duper.patch +++ b/patches/server/0005-Fix-gravity-block-duper.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Fix gravity block duper diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 8544ee07fa72f848e330697823233a201f8cd052..62e90767096b8998253d4bde99ec7968bd079529 100644 +index ec3f1227ad3cd1469258cabe9a36caaf605151d9..39a65a784c9051d183a62291c01240034c86dd70 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -514,36 +514,8 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { +@@ -519,36 +519,8 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { return chunkMap.playerEntityTrackerTrackMaps[type.ordinal()].getObjectsInRange(MCUtil.getCoordinateKey(this)); } // Paper end - optimise entity tracking @@ -46,7 +46,7 @@ index 8544ee07fa72f848e330697823233a201f8cd052..62e90767096b8998253d4bde99ec7968 public Entity(EntityType type, Level world) { this.id = Entity.ENTITY_COUNTER.incrementAndGet(); -@@ -2952,7 +2924,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { +@@ -3073,7 +3045,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { } this.processPortalCooldown(); @@ -56,7 +56,7 @@ index 8544ee07fa72f848e330697823233a201f8cd052..62e90767096b8998253d4bde99ec7968 } diff --git a/src/main/java/net/minecraft/world/entity/item/FallingBlockEntity.java b/src/main/java/net/minecraft/world/entity/item/FallingBlockEntity.java -index 536856300da929c101f50da5827677bada5feb50..5537ee2c32367ad253f4fdad5d9e74980013153f 100644 +index eff81e846f696349b3bd3d26c02442f157b169f0..0352808f4b2783e7f941c6224f5929b98b95d51e 100644 --- a/src/main/java/net/minecraft/world/entity/item/FallingBlockEntity.java +++ b/src/main/java/net/minecraft/world/entity/item/FallingBlockEntity.java @@ -64,7 +64,7 @@ public class FallingBlockEntity extends Entity { @@ -93,7 +93,7 @@ index 536856300da929c101f50da5827677bada5feb50..5537ee2c32367ad253f4fdad5d9e7498 + // Leaves - fix gravity block duper // Paper start - Configurable EntityFallingBlock height nerf - if (this.level.paperConfig().fixes.fallingBlockHeightNerf.test(v -> this.getY() > v)) { + if (this.level().paperConfig().fixes.fallingBlockHeightNerf.test(v -> this.getY() > v)) { diff --git a/src/main/java/net/minecraft/world/level/block/EndPortalBlock.java b/src/main/java/net/minecraft/world/level/block/EndPortalBlock.java index 41d7cff39fc37955877668337689b4b26cd8c7cf..5e0e8afa553a8dcd87dfc10a595ba10c2b3da7df 100644 --- a/src/main/java/net/minecraft/world/level/block/EndPortalBlock.java diff --git a/patches/server/0006-Fix-trading-with-the-void.patch b/patches/server/0006-Fix-trading-with-the-void.patch index 0dbfae01..c469a9a0 100644 --- a/patches/server/0006-Fix-trading-with-the-void.patch +++ b/patches/server/0006-Fix-trading-with-the-void.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Fix trading with the void diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index 3bb63a652aca3c23f5f1bbf9cb70fce6540f2e33..431ec5a4486b0bf4f6b2ddc1d21187fb64fdc50f 100644 +index 18aac3da3c88f33b1a71a5920a8daa27e9723913..05e7c0986f1959ec16a6f81cf905744ac3df2f6a 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java -@@ -2602,11 +2602,7 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -2752,11 +2752,7 @@ public class ServerLevel extends Level implements WorldGenLevel { // Spigot end // Spigot Start if (entity.getBukkitEntity() instanceof org.bukkit.inventory.InventoryHolder && (!(entity instanceof ServerPlayer) || entity.getRemovalReason() != Entity.RemovalReason.KILLED)) { // SPIGOT-6876: closeInventory clears death message diff --git a/patches/server/0007-Player-can-edit-sign.patch b/patches/server/0007-Player-can-edit-sign.patch index 20682666..0848a6a3 100644 --- a/patches/server/0007-Player-can-edit-sign.patch +++ b/patches/server/0007-Player-can-edit-sign.patch @@ -4,46 +4,6 @@ Date: Thu, 27 Jan 2022 20:11:05 +0800 Subject: [PATCH] Player can edit sign -diff --git a/src/main/java/net/minecraft/world/level/block/SignBlock.java b/src/main/java/net/minecraft/world/level/block/SignBlock.java -index aface9a9697095a29edaf73c9cdabc2c1414b9d7..c2053114c4e89418b9ae6e24a99d11a9542cd676 100644 ---- a/src/main/java/net/minecraft/world/level/block/SignBlock.java -+++ b/src/main/java/net/minecraft/world/level/block/SignBlock.java -@@ -3,6 +3,7 @@ package net.minecraft.world.level.block; - import net.minecraft.advancements.CriteriaTriggers; - import net.minecraft.core.BlockPos; - import net.minecraft.core.Direction; -+import net.minecraft.network.protocol.game.ClientboundOpenSignEditorPacket; - import net.minecraft.server.level.ServerPlayer; - import net.minecraft.sounds.SoundEvents; - import net.minecraft.sounds.SoundSource; -@@ -73,15 +74,24 @@ public abstract class SignBlock extends BaseEntityBlock implements SimpleWaterlo - boolean bl2 = itemStack.is(Items.GLOW_INK_SAC); - boolean bl3 = itemStack.is(Items.INK_SAC); - boolean bl4 = (bl2 || bl || bl3) && player.getAbilities().mayBuild; -+ boolean bl7 = itemStack.is(Items.AIR); // Leaves - Player can edit sign - if (world.isClientSide) { - return bl4 ? InteractionResult.SUCCESS : InteractionResult.CONSUME; - } else { -- BlockEntity bl5 = world.getBlockEntity(pos); -- if (!(bl5 instanceof SignBlockEntity)) { -+ BlockEntity blockEntity = world.getBlockEntity(pos); -+ if (!(blockEntity instanceof SignBlockEntity)) { - return InteractionResult.PASS; - } else { -- SignBlockEntity signBlockEntity = (SignBlockEntity)bl5; -+ SignBlockEntity signBlockEntity = (SignBlockEntity)blockEntity; - boolean bl5 = signBlockEntity.hasGlowingText(); -+ // Leaves start - Player can edit sign -+ if (top.leavesmc.leaves.LeavesConfig.playerCanEditSign && bl7 && !signBlockEntity.isEditable) { -+ signBlockEntity.setEditable(true); -+ signBlockEntity.setAllowedPlayerEditor(player.getUUID()); -+ ((ServerPlayer) player).connection.send(new ClientboundOpenSignEditorPacket(pos)); -+ return InteractionResult.SUCCESS; -+ } -+ // Leaves end - Player can edit sign - if ((!bl2 || !bl5) && (!bl3 || bl5)) { - if (bl4) { - boolean bl6; diff --git a/src/main/java/top/leavesmc/leaves/LeavesConfig.java b/src/main/java/top/leavesmc/leaves/LeavesConfig.java index 4c290eb2d4abf9e9b923b8d0878f319328b7cf8c..d6abf25f70f6f5a19787c72e87fddd2801b47def 100644 --- a/src/main/java/top/leavesmc/leaves/LeavesConfig.java diff --git a/patches/server/0009-Fakeplayer-support.patch b/patches/server/0009-Fakeplayer-support.patch index 5d1e3eb0..9af3e92e 100644 --- a/patches/server/0009-Fakeplayer-support.patch +++ b/patches/server/0009-Fakeplayer-support.patch @@ -5,13 +5,13 @@ Subject: [PATCH] Fakeplayer support diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index 3095f4ef8aea1d47d0a8880fcfdaf9d124d83773..d2087c9b06fac0c40a1eee3b5f4dfa167f9073fd 100644 +index 2c78ab8c70212926ecfd05cc1dea13794c259c27..badc618da91f554d11331e43524ac9ce59267175 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java -@@ -126,6 +126,7 @@ import net.minecraft.util.profiling.metrics.profiling.ServerMetricsSamplersProvi - import net.minecraft.util.profiling.metrics.storage.MetricsPersister; +@@ -127,6 +127,7 @@ import net.minecraft.util.profiling.metrics.storage.MetricsPersister; import net.minecraft.util.thread.ReentrantBlockableEventLoop; import net.minecraft.world.Difficulty; + import net.minecraft.world.RandomSequences; +import net.minecraft.world.damagesource.DamageSource; import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.ai.village.VillageSiege; @@ -25,7 +25,7 @@ index 3095f4ef8aea1d47d0a8880fcfdaf9d124d83773..d2087c9b06fac0c40a1eee3b5f4dfa16 this.server.enablePlugins(org.bukkit.plugin.PluginLoadOrder.POSTWORLD); this.server.getPluginManager().callEvent(new ServerLoadEvent(ServerLoadEvent.LoadType.STARTUP)); this.connection.acceptConnections(); -@@ -942,6 +945,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop packet) { @@ -155,10 +155,10 @@ index aa287d7f37f38d938d195114408cb6dbda59063d..fe5355824a87e4b792dd1e7cc731ce1e 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 1b62288cd4d4cd4bb9e44795dcb08fea850051dc..e38ad358f9fc4c4567e48f87ab57a39f6d2cd466 100644 +index 254171bacd48142cc7bd0c8b79c6526984cd0033..e50bb5b8624411f775d05d59515db1af18d04355 100644 --- a/src/main/java/net/minecraft/server/players/PlayerList.java +++ b/src/main/java/net/minecraft/server/players/PlayerList.java -@@ -1443,7 +1443,7 @@ public abstract class PlayerList { +@@ -1450,7 +1450,7 @@ public abstract class PlayerList { } public boolean verifyChatTrusted(PlayerChatMessage message) { // Paper - private -> public diff --git a/patches/server/0019-Dont-send-useless-entity-packets.patch b/patches/server/0019-Dont-send-useless-entity-packets.patch index 25f90bd1..800b68a8 100644 --- a/patches/server/0019-Dont-send-useless-entity-packets.patch +++ b/patches/server/0019-Dont-send-useless-entity-packets.patch @@ -6,18 +6,18 @@ Subject: [PATCH] Dont send useless entity packets This patch is Powered by Purpur(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 b7fd8e70413c38923d0719aff803449e392383ac..209685e67ebdb7f062bb58118242dcbf884a3876 100644 +index 6670e657e08e130f7e0368f418379fd1ece00cdf..bd520b2f298ac7e9210532e7e7aca4766a21ecff 100644 --- a/src/main/java/net/minecraft/server/level/ServerEntity.java +++ b/src/main/java/net/minecraft/server/level/ServerEntity.java -@@ -198,6 +198,7 @@ public class ServerEntity { +@@ -194,6 +194,7 @@ public class ServerEntity { flag4 = true; flag5 = true; } + // Leaves end - Better checking } else { - this.wasOnGround = this.entity.isOnGround(); + this.wasOnGround = this.entity.onGround(); this.teleportDelay = 0; -@@ -205,6 +206,11 @@ public class ServerEntity { +@@ -201,6 +202,11 @@ public class ServerEntity { flag4 = true; flag5 = true; } @@ -29,8 +29,8 @@ index b7fd8e70413c38923d0719aff803449e392383ac..209685e67ebdb7f062bb58118242dcbf } if ((this.trackDelta || this.entity.hasImpulse || this.entity instanceof LivingEntity && ((LivingEntity) this.entity).isFallFlying()) && this.tickCount > 0) { -@@ -279,6 +285,21 @@ public class ServerEntity { - })); +@@ -273,6 +279,21 @@ public class ServerEntity { + }); } + // Leaves start - dont send useless entity packets diff --git a/patches/server/0021-Fix-Paper-6045-block-goal-shouldn-t-load-chunks.patch b/patches/server/0021-Fix-Paper-6045-block-goal-shouldn-t-load-chunks.patch index 4c26a4c1..43bacc75 100644 --- a/patches/server/0021-Fix-Paper-6045-block-goal-shouldn-t-load-chunks.patch +++ b/patches/server/0021-Fix-Paper-6045-block-goal-shouldn-t-load-chunks.patch @@ -6,15 +6,15 @@ Subject: [PATCH] Fix Paper#6045, block goal shouldn't load chunks This patch is Powered by Pufferfish(https://github.com/pufferfish-gg/Pufferfish) diff --git a/src/main/java/net/minecraft/world/entity/ai/goal/MoveToBlockGoal.java b/src/main/java/net/minecraft/world/entity/ai/goal/MoveToBlockGoal.java -index 26bf383caea68834c654b25653ced9017f1b1b22..71e3c7fc5c071e83dfeca6954771e55946b7d533 100644 +index 34f319ad09276c6f68dde449c79351de0d7d86f5..bbca34e70b1ee88ac77b0d8e319eedbffae3effb 100644 --- a/src/main/java/net/minecraft/world/entity/ai/goal/MoveToBlockGoal.java +++ b/src/main/java/net/minecraft/world/entity/ai/goal/MoveToBlockGoal.java @@ -119,6 +119,7 @@ public abstract class MoveToBlockGoal extends Goal { for(int m = 0; m <= l; m = m > 0 ? -m : 1 - m) { for(int n = m < l && m > -l ? l : 0; n <= l; n = n > 0 ? -n : 1 - n) { mutableBlockPos.setWithOffset(blockPos, m, k - 1, n); -+ if (top.leavesmc.leaves.LeavesConfig.fixPaper6045 && !this.mob.level.hasChunkAt(mutableBlockPos)) continue; // Leaves - if this block isn't loaded, continue - if (this.mob.isWithinRestriction(mutableBlockPos) && this.isValidTarget(this.mob.level, mutableBlockPos)) { ++ if (top.leavesmc.leaves.LeavesConfig.fixPaper6045 && !this.mob.level().hasChunkAt(mutableBlockPos)) continue; // Leaves - if this block isn't loaded, continue + if (this.mob.isWithinRestriction(mutableBlockPos) && this.isValidTarget(this.mob.level(), mutableBlockPos)) { this.blockPos = mutableBlockPos; setTargetPosition(mutableBlockPos.immutable()); // Paper diff --git a/src/main/java/top/leavesmc/leaves/LeavesConfig.java b/src/main/java/top/leavesmc/leaves/LeavesConfig.java diff --git a/patches/server/0022-Optimize-entity-coordinate-key.patch b/patches/server/0022-Optimize-entity-coordinate-key.patch index 09d36ff4..5d0e5132 100644 --- a/patches/server/0022-Optimize-entity-coordinate-key.patch +++ b/patches/server/0022-Optimize-entity-coordinate-key.patch @@ -6,7 +6,7 @@ Subject: [PATCH] Optimize entity coordinate key This patch is Powered by Pufferfish(https://github.com/pufferfish-gg/Pufferfish) diff --git a/src/main/java/io/papermc/paper/util/MCUtil.java b/src/main/java/io/papermc/paper/util/MCUtil.java -index 6efb8b10f17c70b05128039376d254e6beda3841..abbb75af4ffad5b82d8b785b4a747b06ef372f4d 100644 +index 2d11a67bdc82088abf0b3ca134f352f155c8eb1f..e664a86efd456ca1a2165940df7a984b7387916b 100644 --- a/src/main/java/io/papermc/paper/util/MCUtil.java +++ b/src/main/java/io/papermc/paper/util/MCUtil.java @@ -210,7 +210,13 @@ public final class MCUtil { @@ -25,10 +25,10 @@ index 6efb8b10f17c70b05128039376d254e6beda3841..abbb75af4ffad5b82d8b785b4a747b06 public static long getCoordinateKey(final ChunkPos pair) { diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 62e90767096b8998253d4bde99ec7968bd079529..6bac5eb6534b6f5c47a136afa17a3dd7b2bc1577 100644 +index 39a65a784c9051d183a62291c01240034c86dd70..72b35cbd1840141c7654357c3c3bf446d4fb01d4 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -292,7 +292,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { +@@ -294,7 +294,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { public double yo; public double zo; private Vec3 position; diff --git a/patches/server/0023-Optimize-suffocation.patch b/patches/server/0023-Optimize-suffocation.patch index 8a19370d..78b006c9 100644 --- a/patches/server/0023-Optimize-suffocation.patch +++ b/patches/server/0023-Optimize-suffocation.patch @@ -6,19 +6,19 @@ Subject: [PATCH] Optimize suffocation This patch is Powered by Pufferfish(https://github.com/pufferfish-gg/Pufferfish) diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index bf41a901ed274fd2f5e8c861301f395825b50167..f0579a29fb4fa51aa9db8f9467f63926ea80cd3c 100644 +index 67bf9ff852e190d89c877b86d9bfee07d6282430..903299fd5357b9955538aa20ec790672867bf394 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java -@@ -397,7 +397,7 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -415,7 +415,7 @@ public abstract class LivingEntity extends Entity implements Attackable { boolean flag = this instanceof net.minecraft.world.entity.player.Player; - if (!this.level.isClientSide) { + if (!this.level().isClientSide) { - if (this.isInWall()) { + if ((!top.leavesmc.leaves.LeavesConfig.enableSuffocationOptimization || (tickCount % 10 == 0 && couldPossiblyBeHurt(1.0F))) && this.isInWall()) { // Leaves - optimize suffocation this.hurt(this.damageSources().inWall(), 1.0F); - } else if (flag && !this.level.getWorldBorder().isWithinBounds(this.getBoundingBox())) { - double d0 = this.level.getWorldBorder().getDistanceToBorder(this) + this.level.getWorldBorder().getDamageSafeZone(); -@@ -1321,6 +1321,15 @@ public abstract class LivingEntity extends Entity implements Attackable { + } else if (flag && !this.level().getWorldBorder().isWithinBounds(this.getBoundingBox())) { + double d0 = this.level().getWorldBorder().getDistanceToBorder(this) + this.level().getWorldBorder().getDamageSafeZone(); +@@ -1370,6 +1370,15 @@ public abstract class LivingEntity extends Entity implements Attackable { return this.getHealth() <= 0.0F; } diff --git a/patches/server/0024-Strip-raytracing-for-EntityLiving-hasLineOfSight.patch b/patches/server/0024-Strip-raytracing-for-EntityLiving-hasLineOfSight.patch index cdd646e8..43005d15 100644 --- a/patches/server/0024-Strip-raytracing-for-EntityLiving-hasLineOfSight.patch +++ b/patches/server/0024-Strip-raytracing-for-EntityLiving-hasLineOfSight.patch @@ -6,29 +6,29 @@ Subject: [PATCH] Strip raytracing for EntityLiving#hasLineOfSight This patch is Powered by Pufferfish(https://github.com/pufferfish-gg/Pufferfish) diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index f0579a29fb4fa51aa9db8f9467f63926ea80cd3c..f240f2b337524a417f6ddb57cbf063f013aa80f7 100644 +index 903299fd5357b9955538aa20ec790672867bf394..00081da07c63d1507657d3d69e34e4342be17f9c 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java -@@ -3618,7 +3618,13 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -3667,7 +3667,13 @@ public abstract class LivingEntity extends Entity implements Attackable { Vec3 vec3d1 = new Vec3(entity.getX(), entity.getEyeY(), entity.getZ()); // Paper - diff on change - used in CraftLivingEntity#hasLineOfSight(Location) and CraftWorld#lineOfSightExists -- return vec3d1.distanceToSqr(vec3d) > 128D * 128D ? false : this.level.clip(new ClipContext(vec3d, vec3d1, ClipContext.Block.COLLIDER, ClipContext.Fluid.NONE, this)).getType() == HitResult.Type.MISS; // Paper - use distanceToSqr +- return vec3d1.distanceToSqr(vec3d) > 128D * 128D ? false : this.level().clip(new ClipContext(vec3d, vec3d1, ClipContext.Block.COLLIDER, ClipContext.Fluid.NONE, this)).getType() == HitResult.Type.MISS; + // Leaves start - strip raytracing + if (top.leavesmc.leaves.LeavesConfig.entityStripRaytracing) { -+ return vec3d1.distanceToSqr(vec3d) > 128D * 128D ? false : this.level.rayTraceDirect(vec3d, vec3d1, net.minecraft.world.phys.shapes.CollisionContext.of(this)) == net.minecraft.world.phys.BlockHitResult.Type.MISS; ++ return vec3d1.distanceToSqr(vec3d) > 128D * 128D ? false : this.level().rayTraceDirect(vec3d, vec3d1, net.minecraft.world.phys.shapes.CollisionContext.of(this)) == net.minecraft.world.phys.BlockHitResult.Type.MISS; + } else { -+ return vec3d1.distanceToSqr(vec3d) > 128D * 128D ? false : this.level.clip(new ClipContext(vec3d, vec3d1, ClipContext.Block.COLLIDER, ClipContext.Fluid.NONE, this)).getType() == HitResult.Type.MISS; // Paper - use distanceToSqr ++ return vec3d1.distanceToSqr(vec3d) > 128D * 128D ? false : this.level().clip(new ClipContext(vec3d, vec3d1, ClipContext.Block.COLLIDER, ClipContext.Fluid.NONE, this)).getType() == HitResult.Type.MISS; // Paper - use distanceToSqr + } + // Leaves end - strip raytracing } } diff --git a/src/main/java/net/minecraft/world/level/BlockGetter.java b/src/main/java/net/minecraft/world/level/BlockGetter.java -index 2ee9e8e3c1a28c1823de8e1fe421cc1f3e72f384..49670b17d8c3d0f903b823e78531d2d18cf77e3b 100644 +index 0e8746759752b692668886370181aa5db1fd0bb0..f5e92bd13154d7c39670a7d5188f6621f4a6fde8 100644 --- a/src/main/java/net/minecraft/world/level/BlockGetter.java +++ b/src/main/java/net/minecraft/world/level/BlockGetter.java -@@ -73,6 +73,16 @@ public interface BlockGetter extends LevelHeightAccessor { +@@ -68,6 +68,16 @@ public interface BlockGetter extends LevelHeightAccessor { }); } @@ -46,10 +46,10 @@ index 2ee9e8e3c1a28c1823de8e1fe421cc1f3e72f384..49670b17d8c3d0f903b823e78531d2d1 default BlockHitResult clip(ClipContext raytrace1, BlockPos blockposition) { // Paper start - Prevent raytrace from loading chunks diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java -index 31f0034115a88a42b18e0b838eab8b801473bbef..8cadc9655b8876ede4ec4d2b09198445b56fde29 100644 +index 4f0a2c9b352f5824ec0c30d0f0af0fe16320aea3..a0693f18c04eb11cf010700499b0302475bb7cd1 100644 --- a/src/main/java/net/minecraft/world/level/Level.java +++ b/src/main/java/net/minecraft/world/level/Level.java -@@ -415,6 +415,91 @@ public abstract class Level implements LevelAccessor, AutoCloseable { +@@ -414,6 +414,91 @@ public abstract class Level implements LevelAccessor, AutoCloseable { return null; } diff --git a/patches/server/0026-Move-ThreadUnsafeRandom-Initialization.patch b/patches/server/0026-Move-ThreadUnsafeRandom-Initialization.patch index 897134cf..ecefcc06 100644 --- a/patches/server/0026-Move-ThreadUnsafeRandom-Initialization.patch +++ b/patches/server/0026-Move-ThreadUnsafeRandom-Initialization.patch @@ -6,10 +6,10 @@ Subject: [PATCH] Move ThreadUnsafeRandom Initialization This patch is Powered by Pufferfish(https://github.com/pufferfish-gg/Pufferfish) diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index 816b531b9d2acfc5c3d6414cc5ad49d178f65f7f..dc1ba6e8e8c170681389c360fb5d33caa10bd734 100644 +index 05e7c0986f1959ec16a6f81cf905744ac3df2f6a..b6ad64f0bed9459aa2ecb4f80b71653691a8359f 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java -@@ -793,7 +793,7 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -934,7 +934,7 @@ public class ServerLevel extends Level implements WorldGenLevel { } // Paper start - optimise random block ticking private final BlockPos.MutableBlockPos chunkTickMutablePosition = new BlockPos.MutableBlockPos(); @@ -19,10 +19,10 @@ index 816b531b9d2acfc5c3d6414cc5ad49d178f65f7f..dc1ba6e8e8c170681389c360fb5d33ca public void tickChunk(LevelChunk chunk, int randomTickSpeed) { diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java -index 8cadc9655b8876ede4ec4d2b09198445b56fde29..844ebd772c1c0b9856069356e451084a1b771324 100644 +index a0693f18c04eb11cf010700499b0302475bb7cd1..11d362ce8043966a7fce6c64849b7c080133fcbd 100644 --- a/src/main/java/net/minecraft/world/level/Level.java +++ b/src/main/java/net/minecraft/world/level/Level.java -@@ -275,6 +275,8 @@ public abstract class Level implements LevelAccessor, AutoCloseable { +@@ -274,6 +274,8 @@ public abstract class Level implements LevelAccessor, AutoCloseable { public abstract ResourceKey getTypeKey(); @@ -31,7 +31,7 @@ index 8cadc9655b8876ede4ec4d2b09198445b56fde29..844ebd772c1c0b9856069356e451084a protected Level(WritableLevelData worlddatamutable, ResourceKey resourcekey, RegistryAccess iregistrycustom, Holder holder, Supplier supplier, boolean flag, boolean flag1, long i, int j, org.bukkit.generator.ChunkGenerator gen, org.bukkit.generator.BiomeProvider biomeProvider, org.bukkit.World.Environment env, java.util.function.Function paperWorldConfigCreator, java.util.concurrent.Executor executor) { // Paper - Async-Anti-Xray - Pass executor this.spigotConfig = new org.spigotmc.SpigotWorldConfig(((net.minecraft.world.level.storage.PrimaryLevelData) worlddatamutable).getLevelName()); // Spigot this.paperConfig = paperWorldConfigCreator.apply(this.spigotConfig); // Paper -@@ -365,6 +367,12 @@ public abstract class Level implements LevelAccessor, AutoCloseable { +@@ -364,6 +366,12 @@ public abstract class Level implements LevelAccessor, AutoCloseable { 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 } diff --git a/patches/server/0027-Optimize-random-calls-in-chunk-ticking.patch b/patches/server/0027-Optimize-random-calls-in-chunk-ticking.patch index 7be572b4..0a200664 100644 --- a/patches/server/0027-Optimize-random-calls-in-chunk-ticking.patch +++ b/patches/server/0027-Optimize-random-calls-in-chunk-ticking.patch @@ -6,10 +6,10 @@ Subject: [PATCH] Optimize random calls in chunk ticking This patch is Powered by Pufferfish(https://github.com/pufferfish-gg/Pufferfish) diff --git a/src/main/java/net/minecraft/server/level/ServerChunkCache.java b/src/main/java/net/minecraft/server/level/ServerChunkCache.java -index ca84eddbdb1e198b899750e5f6b3eafd25ce970f..188a0e1b8b9c30ad9e3f88301a91aa4809818d2d 100644 +index 488a253e218409b5f0b4a872cee0928578fa7582..a55ed382125310dfdfaeb7e80de2634a8d67f929 100644 --- a/src/main/java/net/minecraft/server/level/ServerChunkCache.java +++ b/src/main/java/net/minecraft/server/level/ServerChunkCache.java -@@ -703,6 +703,11 @@ public class ServerChunkCache extends ChunkSource { +@@ -553,6 +553,11 @@ public class ServerChunkCache extends ChunkSource { ProfilerFiller gameprofilerfiller = this.level.getProfiler(); gameprofilerfiller.push("pollingChunks"); @@ -22,10 +22,10 @@ index ca84eddbdb1e198b899750e5f6b3eafd25ce970f..188a0e1b8b9c30ad9e3f88301a91aa48 boolean flag1 = level.ticksPerSpawnCategory.getLong(org.bukkit.entity.SpawnCategory.ANIMAL) != 0L && worlddata.getGameTime() % level.ticksPerSpawnCategory.getLong(org.bukkit.entity.SpawnCategory.ANIMAL) == 0L; // CraftBukkit diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index 8925adb86fb0a9f163030d8ed73bb47b8266b7b0..b06a79cbf4ab0fe3ff6f2f9a2d4697e6bf237d60 100644 +index b6ad64f0bed9459aa2ecb4f80b71653691a8359f..bf05f321373c9cb5d42fd6cace010a75dc98b90a 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java -@@ -796,6 +796,13 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -937,6 +937,13 @@ public class ServerLevel extends Level implements WorldGenLevel { // private final io.papermc.paper.util.math.ThreadUnsafeRandom randomTickRandom = new io.papermc.paper.util.math.ThreadUnsafeRandom(this.random.nextLong()); // Leaves - moved to super // Paper end @@ -39,7 +39,7 @@ index 8925adb86fb0a9f163030d8ed73bb47b8266b7b0..b06a79cbf4ab0fe3ff6f2f9a2d4697e6 public void tickChunk(LevelChunk chunk, int randomTickSpeed) { ChunkPos chunkcoordintpair = chunk.getPos(); boolean flag = this.isRaining(); -@@ -806,7 +813,7 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -947,7 +954,7 @@ public class ServerLevel extends Level implements WorldGenLevel { gameprofilerfiller.push("thunder"); final BlockPos.MutableBlockPos blockposition = this.chunkTickMutablePosition; // Paper - use mutable to reduce allocation rate, final to force compile fail on change @@ -48,9 +48,9 @@ index 8925adb86fb0a9f163030d8ed73bb47b8266b7b0..b06a79cbf4ab0fe3ff6f2f9a2d4697e6 blockposition.set(this.findLightningTargetAround(this.getBlockRandomPos(j, 0, k, 15))); // Paper if (this.isRainingAt(blockposition)) { DifficultyInstance difficultydamagescaler = this.getCurrentDifficultyAt(blockposition); -@@ -836,7 +843,7 @@ public class ServerLevel extends Level implements WorldGenLevel { - gameprofilerfiller.popPush("iceandsnow"); +@@ -978,7 +985,7 @@ public class ServerLevel extends Level implements WorldGenLevel { int l; + int i1; - if (!this.paperConfig().environment.disableIceAndSnow && this.random.nextInt(16) == 0) { // Paper - Disable ice and snow + if (!this.paperConfig().environment.disableIceAndSnow && (top.leavesmc.leaves.LeavesConfig.optimizeChunkTicking ? (this.currentIceAndSnowTick++ & 15) == 0 : this.random.nextInt(16) == 0)) { // Paper - Disable ice and snow // Paper - optimise random ticking // Leaves - optimize further random ticking @@ -58,10 +58,10 @@ index 8925adb86fb0a9f163030d8ed73bb47b8266b7b0..b06a79cbf4ab0fe3ff6f2f9a2d4697e6 this.getRandomBlockPosition(j, 0, k, 15, blockposition); int normalY = chunk.getHeight(Heightmap.Types.MOTION_BLOCKING, blockposition.getX() & 15, blockposition.getZ() & 15) + 1; 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 d190bad5d287766ed4165ed827d9901a9d878687..19012c60ea6f725248f7e4a18d78eb1025f4b3a4 100644 +index 4ff0d2fc9fd76e92e64abd69f2c9e299aa08ac32..cc224af0139a6e3adefd22cbfa0cd519735b7191 100644 --- a/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java +++ b/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java -@@ -88,6 +88,18 @@ public class LevelChunk extends ChunkAccess { +@@ -85,6 +85,18 @@ public class LevelChunk extends ChunkAccess { private final LevelChunkTicks blockTicks; private final LevelChunkTicks fluidTicks; @@ -80,7 +80,7 @@ index d190bad5d287766ed4165ed827d9901a9d878687..19012c60ea6f725248f7e4a18d78eb10 public LevelChunk(Level world, ChunkPos pos) { this(world, pos, UpgradeData.EMPTY, new LevelChunkTicks<>(), new LevelChunkTicks<>(), 0L, (LevelChunkSection[]) null, (LevelChunk.PostLoadProcessor) null, (BlendingData) null); } -@@ -116,6 +128,12 @@ public class LevelChunk extends ChunkAccess { +@@ -112,6 +124,12 @@ public class LevelChunk extends ChunkAccess { this.postLoad = entityLoader; this.blockTicks = blockTickScheduler; this.fluidTicks = fluidTickScheduler; diff --git a/patches/server/0031-Config-to-disable-method-profiler.patch b/patches/server/0031-Config-to-disable-method-profiler.patch index 0cb25ec6..a5d570de 100644 --- a/patches/server/0031-Config-to-disable-method-profiler.patch +++ b/patches/server/0031-Config-to-disable-method-profiler.patch @@ -6,10 +6,10 @@ Subject: [PATCH] Config to disable method profiler This patch is Powered by Pufferfish(https://github.com/pufferfish-gg/Pufferfish) diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index d2087c9b06fac0c40a1eee3b5f4dfa167f9073fd..1e68576474d613d0d8da91098a18b384fcace44f 100644 +index badc618da91f554d11331e43524ac9ce59267175..100ea32bc60e5c052007bb75b35eba16564eadff 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java -@@ -2272,6 +2272,11 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop parameter) { diff --git a/src/main/java/top/leavesmc/leaves/LeavesConfig.java b/src/main/java/top/leavesmc/leaves/LeavesConfig.java index 53ccd141c53faa3fa53127f546ba0faeb685d731..1335959fc27da3e53ea845dff83fcac0b3a1e873 100644 --- a/src/main/java/top/leavesmc/leaves/LeavesConfig.java diff --git a/patches/server/0034-Reduce-entity-allocations.patch b/patches/server/0034-Reduce-entity-allocations.patch index bc5ff9bc..d25e4ee0 100644 --- a/patches/server/0034-Reduce-entity-allocations.patch +++ b/patches/server/0034-Reduce-entity-allocations.patch @@ -6,10 +6,10 @@ Subject: [PATCH] Reduce entity allocations This patch is Powered by Pufferfish(https://github.com/pufferfish-gg/Pufferfish) diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 6bac5eb6534b6f5c47a136afa17a3dd7b2bc1577..91d87917ce7b693c4cc55a5e9c98320b4e7a5ef9 100644 +index 72b35cbd1840141c7654357c3c3bf446d4fb01d4..c1920e8d571a71cdd9fa18f26d16aabc43f5a88f 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -417,6 +417,8 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { +@@ -422,6 +422,8 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { return this.originWorld; } // Paper end diff --git a/patches/server/0035-Remove-lambda-from-ticking-guard.patch b/patches/server/0035-Remove-lambda-from-ticking-guard.patch index 2dcb52fd..e06ec3ca 100644 --- a/patches/server/0035-Remove-lambda-from-ticking-guard.patch +++ b/patches/server/0035-Remove-lambda-from-ticking-guard.patch @@ -6,10 +6,10 @@ Subject: [PATCH] Remove lambda from ticking guard This patch is Powered by Pufferfish(https://github.com/pufferfish-gg/Pufferfish) diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index b06a79cbf4ab0fe3ff6f2f9a2d4697e6bf237d60..b0a30f6426868b397ae73d20d57e0c3ddc03b470 100644 +index bf05f321373c9cb5d42fd6cace010a75dc98b90a..5a373196692fd6eb408492c9c4539ec941a819b9 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java -@@ -728,7 +728,24 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -869,7 +869,24 @@ public class ServerLevel extends Level implements WorldGenLevel { } gameprofilerfiller.push("tick"); diff --git a/patches/server/0036-Remove-iterators-from-inventory-contains.patch b/patches/server/0036-Remove-iterators-from-inventory-contains.patch index 84f8355a..cd48b489 100644 --- a/patches/server/0036-Remove-iterators-from-inventory-contains.patch +++ b/patches/server/0036-Remove-iterators-from-inventory-contains.patch @@ -6,10 +6,10 @@ Subject: [PATCH] Remove iterators from inventory contains This patch is Powered by Pufferfish(https://github.com/pufferfish-gg/Pufferfish) diff --git a/src/main/java/net/minecraft/world/entity/player/Inventory.java b/src/main/java/net/minecraft/world/entity/player/Inventory.java -index 27c028ab6b1edb6e413af3bbaa27bf30f2d85540..4a89ce4fbd8b19ce1cff5905d779d2e4c63e89c4 100644 +index 395cecc385e4126a7534ac9aeb15cf323efab03e..fee876947e0c00f3e0d0914cf84b5969cc788696 100644 --- a/src/main/java/net/minecraft/world/entity/player/Inventory.java +++ b/src/main/java/net/minecraft/world/entity/player/Inventory.java -@@ -682,21 +682,35 @@ public class Inventory implements Container, Nameable { +@@ -681,21 +681,35 @@ public class Inventory implements Container, Nameable { } public boolean contains(ItemStack stack) { diff --git a/patches/server/0037-Remove-streams-from-getting-nearby-players.patch b/patches/server/0037-Remove-streams-from-getting-nearby-players.patch index a4d64b15..fef526b7 100644 --- a/patches/server/0037-Remove-streams-from-getting-nearby-players.patch +++ b/patches/server/0037-Remove-streams-from-getting-nearby-players.patch @@ -6,10 +6,10 @@ Subject: [PATCH] Remove streams from getting nearby players This patch is Powered by Pufferfish(https://github.com/pufferfish-gg/Pufferfish) diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 91d87917ce7b693c4cc55a5e9c98320b4e7a5ef9..57f32de8f536eedda907ab352ca3f2b29f4db6c3 100644 +index c1920e8d571a71cdd9fa18f26d16aabc43f5a88f..9f11a60c1856e474227624118d0362aa22af6c2d 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -493,25 +493,50 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { +@@ -498,25 +498,50 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { this.isLegacyTrackingEntity = isLegacyTrackingEntity; } diff --git a/patches/server/0038-Remove-streams-and-iterators-from-range-check.patch b/patches/server/0038-Remove-streams-and-iterators-from-range-check.patch index 3a67284a..f04a76d4 100644 --- a/patches/server/0038-Remove-streams-and-iterators-from-range-check.patch +++ b/patches/server/0038-Remove-streams-and-iterators-from-range-check.patch @@ -6,10 +6,10 @@ Subject: [PATCH] Remove streams and iterators from range check This patch is Powered by Pufferfish(https://github.com/pufferfish-gg/Pufferfish) diff --git a/src/main/java/net/minecraft/server/level/ChunkMap.java b/src/main/java/net/minecraft/server/level/ChunkMap.java -index fbe209a66c77c47935ad026dd3e45e682af91fd8..71d62db53b5b103c3640e1f77609445b4b3e047e 100644 +index 9209b598d7168b82574e4800056b8b9f84265dd0..e122a633bc3e26f7a98149f66da8a9e8359c6faf 100644 --- a/src/main/java/net/minecraft/server/level/ChunkMap.java +++ b/src/main/java/net/minecraft/server/level/ChunkMap.java -@@ -1637,19 +1637,45 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider +@@ -1556,19 +1556,45 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider return ChunkMap.this.level.getServer().getScaledTrackingDistance(initialDistance); } diff --git a/patches/server/0040-Cache-climbing-check-for-activation.patch b/patches/server/0040-Cache-climbing-check-for-activation.patch index 954a2e58..e86402a5 100644 --- a/patches/server/0040-Cache-climbing-check-for-activation.patch +++ b/patches/server/0040-Cache-climbing-check-for-activation.patch @@ -6,10 +6,10 @@ Subject: [PATCH] Cache climbing check for activation This patch is Powered by Pufferfish(https://github.com/pufferfish-gg/Pufferfish) diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index f240f2b337524a417f6ddb57cbf063f013aa80f7..523a46eb4a23b4a4aa9e5ea38771a5953c1bdccc 100644 +index 00081da07c63d1507657d3d69e34e4342be17f9c..b391fa45df30aa29b58a5aaa2159683314841f90 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java -@@ -1938,6 +1938,22 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -1981,6 +1981,22 @@ public abstract class LivingEntity extends Entity implements Attackable { return this.lastClimbablePos; } @@ -33,7 +33,7 @@ index f240f2b337524a417f6ddb57cbf063f013aa80f7..523a46eb4a23b4a4aa9e5ea38771a595 if (this.isSpectator()) { return false; diff --git a/src/main/java/org/spigotmc/ActivationRange.java b/src/main/java/org/spigotmc/ActivationRange.java -index 52780192d6417f8085566e4cdf3a895a83638520..eeb3522c39dde84e497d22758e90b42f3a2d5a96 100644 +index d4da9ec6e00bb92b70598ee9a0d0ca5816562378..af138ee23295847377b391dcc73bc9322bb11ca8 100644 --- a/src/main/java/org/spigotmc/ActivationRange.java +++ b/src/main/java/org/spigotmc/ActivationRange.java @@ -292,7 +292,7 @@ public class ActivationRange diff --git a/patches/server/0042-Reduce-entity-fluid-lookups-if-no-fluids.patch b/patches/server/0042-Reduce-entity-fluid-lookups-if-no-fluids.patch index d61a9361..14b93524 100644 --- a/patches/server/0042-Reduce-entity-fluid-lookups-if-no-fluids.patch +++ b/patches/server/0042-Reduce-entity-fluid-lookups-if-no-fluids.patch @@ -6,10 +6,10 @@ Subject: [PATCH] Reduce entity fluid lookups if no fluids This patch is Powered by Pufferfish(https://github.com/pufferfish-gg/Pufferfish) diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 57f32de8f536eedda907ab352ca3f2b29f4db6c3..0f5ad5a35bc47a46da0f0b5a0ca3350b7992000c 100644 +index 9f11a60c1856e474227624118d0362aa22af6c2d..185b7686643a5c26c517e16135ead0124ff4ee37 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -4169,16 +4169,18 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { +@@ -4299,16 +4299,18 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { } public boolean updateFluidHeightAndDoFluidPushing(TagKey tag, double speed) { @@ -35,7 +35,7 @@ index 57f32de8f536eedda907ab352ca3f2b29f4db6c3..0f5ad5a35bc47a46da0f0b5a0ca3350b double d1 = 0.0D; boolean flag = this.isPushedByFluid(); boolean flag1 = false; -@@ -4186,38 +4188,123 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { +@@ -4316,38 +4318,123 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { int k1 = 0; BlockPos.MutableBlockPos blockposition_mutableblockposition = new BlockPos.MutableBlockPos(); @@ -43,7 +43,7 @@ index 57f32de8f536eedda907ab352ca3f2b29f4db6c3..0f5ad5a35bc47a46da0f0b5a0ca3350b - for (int i2 = k; i2 < l; ++i2) { - for (int j2 = i1; j2 < j1; ++j2) { - blockposition_mutableblockposition.set(l1, i2, j2); -- FluidState fluid = this.level.getFluidState(blockposition_mutableblockposition); +- FluidState fluid = this.level().getFluidState(blockposition_mutableblockposition); + // Leaves start - based off CollisionUtil.getCollisionsForBlocksOrWorldBorder + if (top.leavesmc.leaves.LeavesConfig.reduceEntityFluidLookup) { + final int minSection = io.papermc.paper.util.WorldUtil.getMinSection(this.level); @@ -52,7 +52,7 @@ index 57f32de8f536eedda907ab352ca3f2b29f4db6c3..0f5ad5a35bc47a46da0f0b5a0ca3350b + final int maxBlock = (maxSection << 4) | 15; - if (fluid.is(tag)) { -- double d2 = (double) ((float) i2 + fluid.getHeight(this.level, blockposition_mutableblockposition)); +- double d2 = (double) ((float) i2 + fluid.getHeight(this.level(), blockposition_mutableblockposition)); + // special cases: + if (minBlockY > maxBlock || maxBlockY < minBlock) { + // no point in checking @@ -63,7 +63,7 @@ index 57f32de8f536eedda907ab352ca3f2b29f4db6c3..0f5ad5a35bc47a46da0f0b5a0ca3350b - flag1 = true; - d1 = Math.max(d2 - axisalignedbb.minY, d1); - if (flag) { -- Vec3 vec3d1 = fluid.getFlow(this.level, blockposition_mutableblockposition); +- Vec3 vec3d1 = fluid.getFlow(this.level(), blockposition_mutableblockposition); + int minYIterate = Math.max(minBlock, minBlockY); + int maxYIterate = Math.min(maxBlock, maxBlockY); @@ -146,16 +146,16 @@ index 57f32de8f536eedda907ab352ca3f2b29f4db6c3..0f5ad5a35bc47a46da0f0b5a0ca3350b + for (int i2 = minBlockY; i2 < maxBlockY; ++i2) { + for (int j2 = minBlockZ; j2 < maxBlockZ; ++j2) { + blockposition_mutableblockposition.set(l1, i2, j2); -+ FluidState fluid = this.level.getFluidState(blockposition_mutableblockposition); ++ FluidState fluid = this.level().getFluidState(blockposition_mutableblockposition); + + if (fluid.is(tag)) { -+ double d2 = (double) ((float) i2 + fluid.getHeight(this.level, blockposition_mutableblockposition)); ++ double d2 = (double) ((float) i2 + fluid.getHeight(this.level(), blockposition_mutableblockposition)); + + if (d2 >= axisalignedbb.minY) { + flag1 = true; + d1 = Math.max(d2 - axisalignedbb.minY, d1); + if (flag) { -+ Vec3 vec3d1 = fluid.getFlow(this.level, blockposition_mutableblockposition); ++ Vec3 vec3d1 = fluid.getFlow(this.level(), blockposition_mutableblockposition); + + if (d1 < 0.4D) { + vec3d1 = vec3d1.scale(d1); @@ -181,18 +181,18 @@ index 57f32de8f536eedda907ab352ca3f2b29f4db6c3..0f5ad5a35bc47a46da0f0b5a0ca3350b if (vec3d.length() > 0.0D) { if (k1 > 0) { diff --git a/src/main/java/net/minecraft/world/level/chunk/LevelChunkSection.java b/src/main/java/net/minecraft/world/level/chunk/LevelChunkSection.java -index 1b80a91fa36c59a31b57ef7ef4a68eacbb0f17f5..62f4e7a2dcd93a5b11fb9f847c70da1bced71015 100644 +index d4477b0dda6a1ef7bd8323c0d11b636bd071d18e..3b7fcf532761362d2f657f58962d7bd2a6f35e94 100644 --- a/src/main/java/net/minecraft/world/level/chunk/LevelChunkSection.java +++ b/src/main/java/net/minecraft/world/level/chunk/LevelChunkSection.java -@@ -27,6 +27,7 @@ public class LevelChunkSection { +@@ -25,6 +25,7 @@ public class LevelChunkSection { public final PalettedContainer states; // CraftBukkit start - read/write private PalettedContainer> biomes; + public short fluidStateCount; // Leaves public final com.destroystokyo.paper.util.maplist.IBlockDataList tickingList = new com.destroystokyo.paper.util.maplist.IBlockDataList(); // Paper - public LevelChunkSection(int i, PalettedContainer datapaletteblock, PalettedContainer> palettedcontainerro) { -@@ -198,6 +199,7 @@ public class LevelChunkSection { + public LevelChunkSection(PalettedContainer datapaletteblock, PalettedContainer> palettedcontainerro) { +@@ -190,6 +191,7 @@ public class LevelChunkSection { if (!fluid.isEmpty()) { --this.tickingFluidCount; @@ -200,7 +200,7 @@ index 1b80a91fa36c59a31b57ef7ef4a68eacbb0f17f5..62f4e7a2dcd93a5b11fb9f847c70da1b } if (!state.isAir()) { -@@ -212,6 +214,7 @@ public class LevelChunkSection { +@@ -204,6 +206,7 @@ public class LevelChunkSection { if (!fluid1.isEmpty()) { ++this.tickingFluidCount; @@ -208,7 +208,7 @@ index 1b80a91fa36c59a31b57ef7ef4a68eacbb0f17f5..62f4e7a2dcd93a5b11fb9f847c70da1b } this.updateKnownBlockInfo(x | (z << 4) | (y << 8), iblockdata1, state); // Paper -@@ -260,6 +263,7 @@ public class LevelChunkSection { +@@ -249,6 +252,7 @@ public class LevelChunkSection { if (fluid.isRandomlyTicking()) { this.tickingFluidCount = (short) (this.tickingFluidCount + 1); } diff --git a/patches/server/0043-Reduce-chunk-loading-lookups.patch b/patches/server/0043-Reduce-chunk-loading-lookups.patch index 1afa7920..18453af8 100644 --- a/patches/server/0043-Reduce-chunk-loading-lookups.patch +++ b/patches/server/0043-Reduce-chunk-loading-lookups.patch @@ -6,14 +6,14 @@ Subject: [PATCH] Reduce chunk loading & lookups This patch is Powered by Pufferfish(https://github.com/pufferfish-gg/Pufferfish) diff --git a/src/main/java/net/minecraft/world/entity/monster/EnderMan.java b/src/main/java/net/minecraft/world/entity/monster/EnderMan.java -index 418d6301f067803e2471e59ac2d52a68cbff249b..5659e7e61bc3ab36817d17e95a758696d08007a5 100644 +index 4616addb05fcc20b1ec6ca1dea01cbefed697acd..5fe47a97498177d7d131d32c95a7fbe8ee9c380f 100644 --- a/src/main/java/net/minecraft/world/entity/monster/EnderMan.java +++ b/src/main/java/net/minecraft/world/entity/monster/EnderMan.java @@ -322,11 +322,28 @@ public class EnderMan extends Monster implements NeutralMob { private boolean teleport(double x, double y, double z) { BlockPos.MutableBlockPos blockposition_mutableblockposition = new BlockPos.MutableBlockPos(x, y, z); -- while (blockposition_mutableblockposition.getY() > this.level.getMinBuildHeight() && !this.level.getBlockState(blockposition_mutableblockposition).getMaterial().blocksMotion()) { +- while (blockposition_mutableblockposition.getY() > this.level().getMinBuildHeight() && !this.level().getBlockState(blockposition_mutableblockposition).blocksMotion()) { - blockposition_mutableblockposition.move(Direction.DOWN); + // Leaves start - single chunk lookup + BlockState iblockdata; @@ -29,16 +29,16 @@ index 418d6301f067803e2471e59ac2d52a68cbff249b..5659e7e61bc3ab36817d17e95a758696 + + iblockdata = chunk.getBlockState(blockposition_mutableblockposition); + } else { -+ while (blockposition_mutableblockposition.getY() > this.level.getMinBuildHeight() && !this.level.getBlockState(blockposition_mutableblockposition).getMaterial().blocksMotion()) { ++ while (blockposition_mutableblockposition.getY() > this.level().getMinBuildHeight() && !this.level().getBlockState(blockposition_mutableblockposition).blocksMotion()) { + blockposition_mutableblockposition.move(Direction.DOWN); + } + -+ iblockdata = this.level.getBlockState(blockposition_mutableblockposition); ++ iblockdata = this.level().getBlockState(blockposition_mutableblockposition); } + // Leaves end - single chunk lookup -- BlockState iblockdata = this.level.getBlockState(blockposition_mutableblockposition); - boolean flag = iblockdata.getMaterial().blocksMotion(); +- BlockState iblockdata = this.level().getBlockState(blockposition_mutableblockposition); + boolean flag = iblockdata.blocksMotion(); boolean flag1 = iblockdata.getFluidState().is(FluidTags.WATER); diff --git a/src/main/java/top/leavesmc/leaves/LeavesConfig.java b/src/main/java/top/leavesmc/leaves/LeavesConfig.java diff --git a/patches/server/0045-PCA-sync-protocol.patch b/patches/server/0045-PCA-sync-protocol.patch index 16bea929..04c3196f 100644 --- a/patches/server/0045-PCA-sync-protocol.patch +++ b/patches/server/0045-PCA-sync-protocol.patch @@ -6,7 +6,7 @@ Subject: [PATCH] PCA sync protocol This patch is Powered by plusls-carpet-addition(https://github.com/plusls/plusls-carpet-addition) diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index fe5355824a87e4b792dd1e7cc731ce1ed8d9fef6..d0e06dd6097d8983fed7aac1b1c839d480981c89 100644 +index 99e982f81745a65f0df6ccdf26b050ec0def4d31..ba990b85172a44333d619f82f4ad7f2b67c8765c 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java @@ -245,6 +245,7 @@ import org.bukkit.inventory.CraftingInventory; @@ -17,7 +17,7 @@ index fe5355824a87e4b792dd1e7cc731ce1ed8d9fef6..d0e06dd6097d8983fed7aac1b1c839d4 // CraftBukkit end public class ServerGamePacketListenerImpl implements ServerPlayerConnection, TickablePacketListener, ServerGamePacketListener { -@@ -3582,6 +3583,16 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic +@@ -3544,6 +3545,16 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic this.disconnect("Invalid payload UNREGISTER!", org.bukkit.event.player.PlayerKickEvent.Cause.INVALID_PAYLOAD); // Paper - kick event cause } } else { @@ -35,10 +35,10 @@ index fe5355824a87e4b792dd1e7cc731ce1ed8d9fef6..d0e06dd6097d8983fed7aac1b1c839d4 byte[] data = new byte[packet.data.readableBytes()]; packet.data.readBytes(data); diff --git a/src/main/java/net/minecraft/server/players/PlayerList.java b/src/main/java/net/minecraft/server/players/PlayerList.java -index e38ad358f9fc4c4567e48f87ab57a39f6d2cd466..4e63c4b9f873dc392646f758e1dff8bf72a7bf06 100644 +index e50bb5b8624411f775d05d59515db1af18d04355..151ecdb16a331c59287095b497516e99a894db61 100644 --- a/src/main/java/net/minecraft/server/players/PlayerList.java +++ b/src/main/java/net/minecraft/server/players/PlayerList.java -@@ -349,6 +349,7 @@ public abstract class PlayerList { +@@ -356,6 +356,7 @@ public abstract class PlayerList { bot1.render(playerconnection, true,player.getBukkitEntity().getWorld() == bot1.getBukkitEntity().getWorld())); // Leaves - render bot } // Leaves end - bot support @@ -47,10 +47,10 @@ index e38ad358f9fc4c4567e48f87ab57a39f6d2cd466..4e63c4b9f873dc392646f758e1dff8bf final net.kyori.adventure.text.Component jm = playerJoinEvent.joinMessage(); diff --git a/src/main/java/net/minecraft/world/entity/animal/horse/AbstractHorse.java b/src/main/java/net/minecraft/world/entity/animal/horse/AbstractHorse.java -index 47cd69f91bbc2e2be9ec970674adc522e21593c8..166f6ae5f82273d9dd0852bc4e4f0124253ff108 100644 +index 79b6e241f425622fdc575b77d8dce7061c0ab783..57579e83cb2ba6ad82509e9e7b8fdda96b3553ce 100644 --- a/src/main/java/net/minecraft/world/entity/animal/horse/AbstractHorse.java +++ b/src/main/java/net/minecraft/world/entity/animal/horse/AbstractHorse.java -@@ -380,6 +380,11 @@ public abstract class AbstractHorse extends Animal implements ContainerListener, +@@ -376,6 +376,11 @@ public abstract class AbstractHorse extends Animal implements ContainerListener, @Override public void containerChanged(Container sender) { @@ -63,7 +63,7 @@ index 47cd69f91bbc2e2be9ec970674adc522e21593c8..166f6ae5f82273d9dd0852bc4e4f0124 this.updateContainerEquipment(); diff --git a/src/main/java/net/minecraft/world/entity/npc/AbstractVillager.java b/src/main/java/net/minecraft/world/entity/npc/AbstractVillager.java -index ca96b893e22de3ae7c11d5cded51edf70bdcb6f2..a0380713ff1e3faa285c76ea45f75c9c480caafe 100644 +index 564908ce0a560c2190fb624e77d227d3b7031024..806526e79c7d5380955e4dd9d6da865c73647329 100644 --- a/src/main/java/net/minecraft/world/entity/npc/AbstractVillager.java +++ b/src/main/java/net/minecraft/world/entity/npc/AbstractVillager.java @@ -65,6 +65,15 @@ public abstract class AbstractVillager extends AgeableMob implements InventoryCa @@ -83,7 +83,7 @@ index ca96b893e22de3ae7c11d5cded51edf70bdcb6f2..a0380713ff1e3faa285c76ea45f75c9c @Override diff --git a/src/main/java/net/minecraft/world/entity/vehicle/AbstractMinecartContainer.java b/src/main/java/net/minecraft/world/entity/vehicle/AbstractMinecartContainer.java -index 08f027cdcaeeca7b545483cb8c5eb8d13e4933b9..0c49b495b5f598339a0cb4644d8d39596bde96a2 100644 +index 272095d7a09ab41227d741172735f66fd2798ce1..f6acbef804a50c58f4298ebeae4fdbebaf129e1c 100644 --- a/src/main/java/net/minecraft/world/entity/vehicle/AbstractMinecartContainer.java +++ b/src/main/java/net/minecraft/world/entity/vehicle/AbstractMinecartContainer.java @@ -129,7 +129,13 @@ public abstract class AbstractMinecartContainer extends AbstractMinecart impleme @@ -102,7 +102,7 @@ index 08f027cdcaeeca7b545483cb8c5eb8d13e4933b9..0c49b495b5f598339a0cb4644d8d3959 @Override public boolean stillValid(Player player) { 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 a3f073066f6e2eea8964461ad2b0409ade202f35..c04df7b6661669fe8eb993af7237f8293ca6d64c 100644 +index 448fa4f4f200430d6ce3051763c7ceb697696146..6171f1ec26a822f89c126f64edf3e02a354239df 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 @@ -569,6 +569,16 @@ public abstract class AbstractFurnaceBlockEntity extends BaseContainerBlockEntit @@ -289,7 +289,7 @@ index 881379681c39230a00b3a1f11cd87498984396c7..e01eb2025458cf311348c58a15308540 protected Component getDefaultName() { return Component.translatable("container.dispenser"); diff --git a/src/main/java/net/minecraft/world/level/block/entity/HopperBlockEntity.java b/src/main/java/net/minecraft/world/level/block/entity/HopperBlockEntity.java -index aac5572c1d40a10cd1d17f89c9eb836718837577..c7d41a88fcdddc918311a098565b29688f4c1249 100644 +index beb70310f2e9657fee89cb4b6a9885712b0116e6..1bbff66a973cfa61da6fabbae7205a7495cd6290 100644 --- a/src/main/java/net/minecraft/world/level/block/entity/HopperBlockEntity.java +++ b/src/main/java/net/minecraft/world/level/block/entity/HopperBlockEntity.java @@ -129,6 +129,16 @@ public class HopperBlockEntity extends RandomizableContainerBlockEntity implemen @@ -343,10 +343,10 @@ index b7686fd63b7c5d88c3a12ec4ee9bc01a17f997e0..25a9c38c60d183bb65b14f4d7550ab98 public int[] getSlotsForFace(Direction side) { return ShulkerBoxBlockEntity.SLOTS; diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -index 4cc3d03b30db2057b6e03a3b3e92459f8ad81eae..5821d377f54dddbdf4766311f76ccacb35b262e4 100644 +index 5b128a82f9759dcc033d313f576914d6c9f2214b..87301f69c72b8ed98cc894dfaf285aa72a947894 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -@@ -382,6 +382,7 @@ public final class CraftServer implements Server { +@@ -389,6 +389,7 @@ public final class CraftServer implements Server { MapPalette.setMapColorCache(new CraftMapColorCache(this.logger)); } datapackManager = new io.papermc.paper.datapack.PaperDatapackManager(console.getPackRepository()); // Paper @@ -354,7 +354,7 @@ index 4cc3d03b30db2057b6e03a3b3e92459f8ad81eae..5821d377f54dddbdf4766311f76ccacb } public boolean getCommandBlockOverride(String command) { -@@ -958,6 +959,13 @@ public final class CraftServer implements Server { +@@ -980,6 +981,13 @@ public final class CraftServer implements Server { org.spigotmc.SpigotConfig.init((File) console.options.valueOf("spigot-settings")); // Spigot this.console.paperConfigurations.reloadConfigs(this.console); top.leavesmc.leaves.LeavesConfig.init((File) console.options.valueOf("leaves-settings")); // Leaves - Server Config diff --git a/patches/server/0046-BBOR-Protocol.patch b/patches/server/0046-BBOR-Protocol.patch index 836418b5..8e6da6de 100644 --- a/patches/server/0046-BBOR-Protocol.patch +++ b/patches/server/0046-BBOR-Protocol.patch @@ -5,10 +5,10 @@ Subject: [PATCH] BBOR Protocol diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index 1e68576474d613d0d8da91098a18b384fcace44f..0d51123a5a2c9f72937481bc42e22ca4258bb00e 100644 +index 100ea32bc60e5c052007bb75b35eba16564eadff..a932f1096fb9a89644d649edc2ef70491d187786 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java -@@ -1590,6 +1590,8 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop viewDistances = new java.util.concurrent.atomic.AtomicReference<>(new io.papermc.paper.chunk.system.RegionizedPlayerChunkLoader.ViewDistances(-1, -1, -1)); + public io.papermc.paper.chunk.system.RegionizedPlayerChunkLoader.PlayerChunkLoaderData chunkLoader; +@@ -711,6 +715,7 @@ public class ServerPlayer extends Player { this.joining = false; } // CraftBukkit end @@ -28,7 +28,7 @@ index efd4c9882338559f8fba3b17919270f06ee5d8b6..c15eadd90e143a7b2a1974fff696b1b2 this.gameMode.tick(); this.wardenSpawnTracker.tick(); --this.spawnInvulnerableTime; -@@ -2571,5 +2576,32 @@ public class ServerPlayer extends Player { +@@ -2656,5 +2661,32 @@ public class ServerPlayer extends Player { public CraftPlayer getBukkitEntity() { return (CraftPlayer) super.getBukkitEntity(); } @@ -62,7 +62,7 @@ index efd4c9882338559f8fba3b17919270f06ee5d8b6..c15eadd90e143a7b2a1974fff696b1b2 // CraftBukkit end } diff --git a/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java b/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java -index 1d33c02088c150189d7f4b0aa27f6a1de96b11cf..1d3b2a017b2fcabb1e19fcac7856d051932124ba 100644 +index 1635fee928d64f4d2c336dca6675ed4641918830..75596d91e011d27ccf59f5b7f41a8f3c76b059ca 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java @@ -44,6 +44,7 @@ import org.bukkit.event.Event; @@ -73,7 +73,7 @@ index 1d33c02088c150189d7f4b0aa27f6a1de96b11cf..1d3b2a017b2fcabb1e19fcac7856d051 // CraftBukkit end public class ServerPlayerGameMode { -@@ -333,6 +334,19 @@ public class ServerPlayerGameMode { +@@ -334,6 +335,19 @@ public class ServerPlayerGameMode { } public void destroyAndAck(BlockPos pos, int sequence, String reason) { diff --git a/patches/server/0053-Stackable-ShulkerBoxes.patch b/patches/server/0053-Stackable-ShulkerBoxes.patch index aec5675e..2f93b361 100644 --- a/patches/server/0053-Stackable-ShulkerBoxes.patch +++ b/patches/server/0053-Stackable-ShulkerBoxes.patch @@ -6,7 +6,7 @@ Subject: [PATCH] Stackable ShulkerBoxes This patch is Powered by fabric-carpet(https://github.com/gnembon/fabric-carpet) and plusls-carpet-addition(https://github.com/plusls/plusls-carpet-addition) diff --git a/src/main/java/net/minecraft/world/entity/item/ItemEntity.java b/src/main/java/net/minecraft/world/entity/item/ItemEntity.java -index d47b3ac633e7936d30abfda6fc46c2c7412d76fe..0aac54b25a0d42dc8eac1618d57c678a34f8da1d 100644 +index 3d41dbe0285f8fec8adae1e93010cf464df9b08c..7f5c131b16152c7817b0a29064dacdf405f6e6e5 100644 --- a/src/main/java/net/minecraft/world/entity/item/ItemEntity.java +++ b/src/main/java/net/minecraft/world/entity/item/ItemEntity.java @@ -15,10 +15,12 @@ import net.minecraft.world.entity.EntityType; @@ -44,7 +44,7 @@ index d47b3ac633e7936d30abfda6fc46c2c7412d76fe..0aac54b25a0d42dc8eac1618d57c678a } public ItemEntity(Level world, double x, double y, double z, ItemStack stack, double velocityX, double velocityY, double velocityZ) { -@@ -283,10 +293,49 @@ public class ItemEntity extends Entity implements TraceableEntity { +@@ -288,10 +298,49 @@ public class ItemEntity extends Entity implements TraceableEntity { private boolean isMergable() { ItemStack itemstack = this.getItem(); @@ -96,7 +96,7 @@ index d47b3ac633e7936d30abfda6fc46c2c7412d76fe..0aac54b25a0d42dc8eac1618d57c678a ItemStack itemstack1 = other.getItem(); diff --git a/src/main/java/net/minecraft/world/entity/player/Inventory.java b/src/main/java/net/minecraft/world/entity/player/Inventory.java -index 4a89ce4fbd8b19ce1cff5905d779d2e4c63e89c4..6a26f3f9ad821688564380f1a9d3a086531364b9 100644 +index fee876947e0c00f3e0d0914cf84b5969cc788696..625110623fc28f70c0076295e5f8c6d42db24322 100644 --- a/src/main/java/net/minecraft/world/entity/player/Inventory.java +++ b/src/main/java/net/minecraft/world/entity/player/Inventory.java @@ -114,7 +114,7 @@ public class Inventory implements Container, Nameable { @@ -122,7 +122,7 @@ index 4a89ce4fbd8b19ce1cff5905d779d2e4c63e89c4..6a26f3f9ad821688564380f1a9d3a086 if (k > this.getMaxStackSize() - itemstack1.getCount()) { k = this.getMaxStackSize() - itemstack1.getCount(); -@@ -404,7 +406,7 @@ public class Inventory implements Container, Nameable { +@@ -403,7 +405,7 @@ public class Inventory implements Container, Nameable { } if (i != -1) { @@ -132,7 +132,7 @@ index 4a89ce4fbd8b19ce1cff5905d779d2e4c63e89c4..6a26f3f9ad821688564380f1a9d3a086 if (this.add(i, stack.split(j)) && notifiesClient && this.player instanceof ServerPlayer) { ((ServerPlayer) this.player).connection.send(new ClientboundContainerSetSlotPacket(-2, 0, i, this.getItem(i))); diff --git a/src/main/java/net/minecraft/world/inventory/AbstractContainerMenu.java b/src/main/java/net/minecraft/world/inventory/AbstractContainerMenu.java -index 4b0bdf8705eadd2ca6c0fd5a3494fd8742330ef6..2d9f35622be9a9e5f0cce8d18e6e5bb7bed1ab5c 100644 +index f13f21dbd50f63a71276837abbcf82e0a72ff52c..4ab69a9962bf7642446d952bc6c70c92d716311b 100644 --- a/src/main/java/net/minecraft/world/inventory/AbstractContainerMenu.java +++ b/src/main/java/net/minecraft/world/inventory/AbstractContainerMenu.java @@ -30,8 +30,10 @@ import net.minecraft.world.entity.SlotAccess; @@ -146,52 +146,52 @@ index 4b0bdf8705eadd2ca6c0fd5a3494fd8742330ef6..2d9f35622be9a9e5f0cce8d18e6e5bb7 import net.minecraft.world.level.block.entity.BlockEntity; import org.slf4j.Logger; -@@ -453,7 +455,7 @@ public abstract class AbstractContainerMenu { +@@ -455,7 +457,7 @@ public abstract class AbstractContainerMenu { + + if (slot1 != null && AbstractContainerMenu.canItemQuickReplace(slot1, itemstack2, true) && slot1.mayPlace(itemstack2) && (this.quickcraftType == 2 || itemstack2.getCount() >= this.quickcraftSlots.size()) && this.canDragTo(slot1)) { int j1 = slot1.hasItem() ? slot1.getItem().getCount() : 0; +- int k1 = Math.min(itemstack1.getMaxStackSize(), slot1.getMaxStackSize(itemstack1)); ++ int k1 = Math.min(top.leavesmc.leaves.util.ShulkerBoxUtils.getItemStackMaxCount(itemstack1), slot1.getMaxStackSize(itemstack1)); // Leaves - stackable shulker boxes int l1 = Math.min(AbstractContainerMenu.getQuickCraftPlaceCount(this.quickcraftSlots, this.quickcraftType, itemstack1) + j1, k1); + int l1 = Math.min(AbstractContainerMenu.getQuickCraftPlaceCount(this.quickcraftSlots, this.quickcraftType, itemstack1) + j1, k1); - AbstractContainerMenu.getQuickCraftSlotCount(this.quickcraftSlots, this.quickcraftType, itemstack3, j1); -- int k1 = Math.min(itemstack3.getMaxStackSize(), slot1.getMaxStackSize(itemstack3)); -+ int k1 = Math.min(top.leavesmc.leaves.util.ShulkerBoxUtils.getItemStackMaxCount(itemstack3), slot1.getMaxStackSize(itemstack3)); // Leaves - stackable shulker boxes - - if (itemstack3.getCount() > k1) { - itemstack3.setCount(k1); -@@ -575,7 +577,7 @@ public abstract class AbstractContainerMenu { - slot.setByPlayer(itemstack4); + l -= l1 - j1; +@@ -574,7 +576,7 @@ public abstract class AbstractContainerMenu { + slot.setByPlayer(itemstack3); } - } else if (ItemStack.isSameItemSameTags(itemstack, itemstack4)) { -- Optional optional1 = slot.tryRemove(itemstack.getCount(), itemstack4.getMaxStackSize() - itemstack4.getCount(), player); -+ Optional optional1 = slot.tryRemove(itemstack.getCount(), top.leavesmc.leaves.util.ShulkerBoxUtils.getItemStackMaxCount(itemstack4) - itemstack4.getCount(), player); // Leaves - stackable shulker boxes + } else if (ItemStack.isSameItemSameTags(itemstack, itemstack3)) { +- Optional optional1 = slot.tryRemove(itemstack.getCount(), itemstack3.getMaxStackSize() - itemstack3.getCount(), player); ++ Optional optional1 = slot.tryRemove(itemstack.getCount(), top.leavesmc.leaves.util.ShulkerBoxUtils.getItemStackMaxCount(itemstack3) - itemstack3.getCount(), player); - optional1.ifPresent((itemstack5) -> { - itemstack4.grow(itemstack5.getCount()); -@@ -641,7 +643,7 @@ public abstract class AbstractContainerMenu { + optional1.ifPresent((itemstack4) -> { + itemstack3.grow(itemstack4.getCount()); +@@ -640,7 +642,7 @@ public abstract class AbstractContainerMenu { slot2 = (Slot) this.slots.get(slotIndex); if (slot2.hasItem()) { - itemstack1 = slot2.getItem().copy(); -- itemstack1.setCount(itemstack1.getMaxStackSize()); -+ itemstack1.setCount(top.leavesmc.leaves.util.ShulkerBoxUtils.getItemStackMaxCount(itemstack1)); // Leaves - stackable shulker boxes - this.setCarried(itemstack1); + itemstack1 = slot2.getItem(); +- this.setCarried(itemstack1.copyWithCount(itemstack1.getMaxStackSize())); ++ this.setCarried(itemstack1.copyWithCount(top.leavesmc.leaves.util.ShulkerBoxUtils.getItemStackMaxCount(itemstack1))); // Leaves - stackable shulker boxes } } else if (actionType == ClickType.THROW && this.getCarried().isEmpty() && slotIndex >= 0) { -@@ -657,14 +659,14 @@ public abstract class AbstractContainerMenu { - i2 = button == 0 ? 1 : -1; + slot2 = (Slot) this.slots.get(slotIndex); +@@ -655,14 +657,14 @@ public abstract class AbstractContainerMenu { + j2 = button == 0 ? 1 : -1; - for (l1 = 0; l1 < 2; ++l1) { -- for (int j2 = l; j2 >= 0 && j2 < this.slots.size() && itemstack1.getCount() < itemstack1.getMaxStackSize(); j2 += i2) { -+ for (int j2 = l; j2 >= 0 && j2 < this.slots.size() && itemstack1.getCount() < top.leavesmc.leaves.util.ShulkerBoxUtils.getItemStackMaxCount(itemstack1); j2 += i2) { // Leaves - stackable shulker boxes - Slot slot3 = (Slot) this.slots.get(j2); + for (i2 = 0; i2 < 2; ++i2) { +- for (int k2 = l; k2 >= 0 && k2 < this.slots.size() && itemstack1.getCount() < itemstack1.getMaxStackSize(); k2 += j2) { ++ for (int k2 = l; k2 >= 0 && k2 < this.slots.size() && itemstack1.getCount() < top.leavesmc.leaves.util.ShulkerBoxUtils.getItemStackMaxCount(itemstack1); k2 += j2) { // Leaves - stackable shulker boxes + Slot slot3 = (Slot) this.slots.get(k2); if (slot3.hasItem() && AbstractContainerMenu.canItemQuickReplace(slot3, itemstack1, true) && slot3.mayPickup(player) && this.canTakeItemForPickAll(itemstack1, slot3)) { - ItemStack itemstack5 = slot3.getItem(); + ItemStack itemstack4 = slot3.getItem(); -- if (l1 != 0 || itemstack5.getCount() != itemstack5.getMaxStackSize()) { -- ItemStack itemstack6 = slot3.safeTake(itemstack5.getCount(), itemstack1.getMaxStackSize() - itemstack1.getCount(), player); -+ if (l1 != 0 || itemstack5.getCount() != top.leavesmc.leaves.util.ShulkerBoxUtils.getItemStackMaxCount(itemstack5)) { // Leaves - stackable shulker boxes -+ ItemStack itemstack6 = slot3.safeTake(itemstack5.getCount(), top.leavesmc.leaves.util.ShulkerBoxUtils.getItemStackMaxCount(itemstack5) - itemstack1.getCount(), player); // Leaves - stackable shulker boxes +- if (i2 != 0 || itemstack4.getCount() != itemstack4.getMaxStackSize()) { +- ItemStack itemstack5 = slot3.safeTake(itemstack4.getCount(), itemstack1.getMaxStackSize() - itemstack1.getCount(), player); ++ if (i2 != 0 || itemstack4.getCount() != top.leavesmc.leaves.util.ShulkerBoxUtils.getItemStackMaxCount(itemstack4)) { // Leaves - stackable shulker boxes ++ ItemStack itemstack5 = slot3.safeTake(itemstack4.getCount(), top.leavesmc.leaves.util.ShulkerBoxUtils.getItemStackMaxCount(itemstack1) - itemstack1.getCount(), player); // Leaves - stackable shulker boxes - itemstack1.grow(itemstack6.getCount()); + itemstack1.grow(itemstack5.getCount()); } -@@ -801,7 +803,7 @@ public abstract class AbstractContainerMenu { +@@ -799,7 +801,7 @@ public abstract class AbstractContainerMenu { Slot slot; ItemStack itemstack1; @@ -200,7 +200,7 @@ index 4b0bdf8705eadd2ca6c0fd5a3494fd8742330ef6..2d9f35622be9a9e5f0cce8d18e6e5bb7 while (!stack.isEmpty()) { if (fromLast) { if (k < startIndex) { -@@ -821,16 +823,18 @@ public abstract class AbstractContainerMenu { +@@ -819,16 +821,18 @@ public abstract class AbstractContainerMenu { if (!itemstack1.isEmpty() && ItemStack.isSameItemSameTags(stack, itemstack1)) { int l = itemstack1.getCount() + stack.getCount(); @@ -224,7 +224,7 @@ index 4b0bdf8705eadd2ca6c0fd5a3494fd8742330ef6..2d9f35622be9a9e5f0cce8d18e6e5bb7 slot.setChanged(); } // Paper diff --git a/src/main/java/net/minecraft/world/inventory/Slot.java b/src/main/java/net/minecraft/world/inventory/Slot.java -index 75d71b0b8a1f5b0712b76e52c8afded103f16b7b..dff796f3db78c89c82ea845ebdceaffce07139c1 100644 +index 92699f79f19b4dcd7d349976cedc0408836263a6..6c979ee6c7a12111fe4380bbb0abc285dc7c264b 100644 --- a/src/main/java/net/minecraft/world/inventory/Slot.java +++ b/src/main/java/net/minecraft/world/inventory/Slot.java @@ -73,7 +73,7 @@ public class Slot { diff --git a/patches/server/0054-Improve-fluid-direction-caching.patch b/patches/server/0054-Improve-fluid-direction-caching.patch index 89d4b29f..4e4aff3b 100644 --- a/patches/server/0054-Improve-fluid-direction-caching.patch +++ b/patches/server/0054-Improve-fluid-direction-caching.patch @@ -7,10 +7,10 @@ This patch is Powered by Pufferfish (https://github.com/pufferfish-gg/Pufferfish) diff --git a/src/main/java/net/minecraft/world/level/material/FlowingFluid.java b/src/main/java/net/minecraft/world/level/material/FlowingFluid.java -index bf4de7b8fd630c596e096a411a8c84c64c13ebf7..72a1414efbcf62c888c3f4542985709cba108009 100644 +index 5502ad143fd2575f1346334b5b4fe7846628f54e..39669ad8e8895f1ff3e3a7e3ee1ab39c1b74b09d 100644 --- a/src/main/java/net/minecraft/world/level/material/FlowingFluid.java +++ b/src/main/java/net/minecraft/world/level/material/FlowingFluid.java -@@ -51,6 +51,11 @@ public abstract class FlowingFluid extends Fluid { +@@ -52,6 +52,11 @@ public abstract class FlowingFluid extends Fluid { object2bytelinkedopenhashmap.defaultReturnValue((byte) 127); return object2bytelinkedopenhashmap; }); @@ -22,7 +22,7 @@ index bf4de7b8fd630c596e096a411a8c84c64c13ebf7..72a1414efbcf62c888c3f4542985709c private final Map shapes = Maps.newIdentityHashMap(); public FlowingFluid() {} -@@ -239,40 +244,70 @@ public abstract class FlowingFluid extends Fluid { +@@ -240,40 +245,70 @@ public abstract class FlowingFluid extends Fluid { } private boolean canPassThroughWall(Direction face, BlockGetter world, BlockPos pos, BlockState state, BlockPos fromPos, BlockState fromState) { diff --git a/patches/server/0055-MC-Technical-Survival-Mode.patch b/patches/server/0055-MC-Technical-Survival-Mode.patch index aa91eb2c..4da07164 100644 --- a/patches/server/0055-MC-Technical-Survival-Mode.patch +++ b/patches/server/0055-MC-Technical-Survival-Mode.patch @@ -18,54 +18,54 @@ index f6b9d216c24d8858802f85209fe1a869e5a9be31..fc8b373df2a8c9e54e1e80b88f87e341 throw new RuntimeException("Could not reload paper configuration files", ex); } diff --git a/src/main/java/net/minecraft/world/entity/boss/enderdragon/EndCrystal.java b/src/main/java/net/minecraft/world/entity/boss/enderdragon/EndCrystal.java -index 64f17b4a22454b59968787089253eaba0a04c1f2..ac8d581041ba6491ec52984ac0ea761f04d3eda8 100644 +index 5465711d486e5f265a26042031e895fb09e30608..4d1d5977e84ea8e2143c58c45e87d80f7bf2bbe1 100644 --- a/src/main/java/net/minecraft/world/entity/boss/enderdragon/EndCrystal.java +++ b/src/main/java/net/minecraft/world/entity/boss/enderdragon/EndCrystal.java @@ -67,7 +67,7 @@ public class EndCrystal extends Entity { // CraftBukkit end } // Paper start - Fix invulnerable end crystals -- if (this.level.paperConfig().unsupportedSettings.fixInvulnerableEndCrystalExploit && this.generatedByDragonFight && this.isInvulnerable()) { -+ if (!top.leavesmc.leaves.LeavesConfig.mcTechnicalMode && this.level.paperConfig().unsupportedSettings.fixInvulnerableEndCrystalExploit && this.generatedByDragonFight && this.isInvulnerable()) { // Leaves - mc technical survival mode - if (!java.util.Objects.equals(((ServerLevel) this.level).uuid, this.getOriginWorld()) - || ((ServerLevel) this.level).dragonFight() == null - || ((ServerLevel) this.level).dragonFight().respawnStage == null +- if (this.level().paperConfig().unsupportedSettings.fixInvulnerableEndCrystalExploit && this.generatedByDragonFight && this.isInvulnerable()) { ++ if (!top.leavesmc.leaves.LeavesConfig.mcTechnicalMode && this.level().paperConfig().unsupportedSettings.fixInvulnerableEndCrystalExploit && this.generatedByDragonFight && this.isInvulnerable()) { // Leaves - mc technical survival mode + if (!java.util.Objects.equals(((ServerLevel) this.level()).uuid, this.getOriginWorld()) + || ((ServerLevel) this.level()).getDragonFight() == null + || ((ServerLevel) this.level()).getDragonFight().respawnStage == null diff --git a/src/main/java/net/minecraft/world/entity/item/PrimedTnt.java b/src/main/java/net/minecraft/world/entity/item/PrimedTnt.java -index dfdf7e7fc1070975ec18fd215c724f4fc84d3705..d62c8e53194165d3150e18ae4e4e25c7eefb0a74 100644 +index bf3301eb1341ba9d482e10873447c42bd670f5ed..bbb322df340cd0b188603a427f58f8c1c3474bda 100644 --- a/src/main/java/net/minecraft/world/entity/item/PrimedTnt.java +++ b/src/main/java/net/minecraft/world/entity/item/PrimedTnt.java @@ -60,7 +60,7 @@ public class PrimedTnt extends Entity implements TraceableEntity { @Override public void tick() { -- if (level.spigotConfig.maxTntTicksPerTick > 0 && ++level.spigotConfig.currentPrimedTnt > level.spigotConfig.maxTntTicksPerTick) { return; } // Spigot -+ if (level.spigotConfig.maxTntTicksPerTick > 0 && ++level.spigotConfig.currentPrimedTnt > (top.leavesmc.leaves.LeavesConfig.mcTechnicalMode ? 2000 : level.spigotConfig.maxTntTicksPerTick)) { return; } // Spigot // Leaves - mc technical survival mode +- if (this.level().spigotConfig.maxTntTicksPerTick > 0 && ++this.level().spigotConfig.currentPrimedTnt > this.level().spigotConfig.maxTntTicksPerTick) { return; } // Spigot ++ if (this.level().spigotConfig.maxTntTicksPerTick > 0 && ++this.level().spigotConfig.currentPrimedTnt > (top.leavesmc.leaves.LeavesConfig.mcTechnicalMode ? 2000 : this.level().spigotConfig.maxTntTicksPerTick)) { return; } // Spigot // Leaves - mc technical survival mode if (!this.isNoGravity()) { this.setDeltaMovement(this.getDeltaMovement().add(0.0D, -0.04D, 0.0D)); } diff --git a/src/main/java/net/minecraft/world/entity/npc/Villager.java b/src/main/java/net/minecraft/world/entity/npc/Villager.java -index 6023b9eb3001e1a98ab8b970d853c4e7c7603f4d..09d05cb9c59c73bc13c2c36f02fd18bd51caccd9 100644 +index e30d5ae3e2900f43d7cafde71b8196f26e872841..79bfd7b5da13197c2d3f7dbf9c3154dd783d1ba8 100644 --- a/src/main/java/net/minecraft/world/entity/npc/Villager.java +++ b/src/main/java/net/minecraft/world/entity/npc/Villager.java -@@ -1001,7 +1001,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler +@@ -1009,7 +1009,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler public void onReputationEventFrom(ReputationEventType interaction, Entity entity) { if (interaction == ReputationEventType.ZOMBIE_VILLAGER_CURED) { // Paper start - fix MC-181190 -- if (level.paperConfig().fixes.fixCuringZombieVillagerDiscountExploit) { -+ if (!top.leavesmc.leaves.LeavesConfig.mcTechnicalMode && level.paperConfig().fixes.fixCuringZombieVillagerDiscountExploit) { // Leaves - mc technical survival mode +- if (this.level().paperConfig().fixes.fixCuringZombieVillagerDiscountExploit) { ++ if (!top.leavesmc.leaves.LeavesConfig.mcTechnicalMode && this.level().paperConfig().fixes.fixCuringZombieVillagerDiscountExploit) { // Leaves - mc technical survival mode final GossipContainer.EntityGossips playerReputation = this.getGossips().gossips.get(entity.getUUID()); if (playerReputation != null) { playerReputation.remove(GossipType.MAJOR_POSITIVE); diff --git a/src/main/java/net/minecraft/world/level/NaturalSpawner.java b/src/main/java/net/minecraft/world/level/NaturalSpawner.java -index 7a3bd3e7aa208ade1d33f59ba684354d000dd011..164dd501456542c16e2e36262ba560f9b9f44cc8 100644 +index c767257b56acbe2cde391f405c010f5b2f62a17c..4327ec0948fb82939272f2dc1bbde8b1e090c5b7 100644 --- a/src/main/java/net/minecraft/world/level/NaturalSpawner.java +++ b/src/main/java/net/minecraft/world/level/NaturalSpawner.java @@ -95,7 +95,7 @@ public final class NaturalSpawner { if (enumcreaturetype != MobCategory.MISC) { // Paper start - Only count natural spawns -- if (!entity.level.paperConfig().entities.spawning.countAllMobsForSpawning && -+ if (!top.leavesmc.leaves.LeavesConfig.mcTechnicalMode && !entity.level.paperConfig().entities.spawning.countAllMobsForSpawning && // Leaves - mc technical survival mode +- if (!entity.level().paperConfig().entities.spawning.countAllMobsForSpawning && ++ if (!top.leavesmc.leaves.LeavesConfig.mcTechnicalMode && !entity.level().paperConfig().entities.spawning.countAllMobsForSpawning && // Leaves - mc technical survival mode !(entity.spawnReason == org.bukkit.event.entity.CreatureSpawnEvent.SpawnReason.NATURAL || entity.spawnReason == org.bukkit.event.entity.CreatureSpawnEvent.SpawnReason.CHUNK_GEN)) { continue; diff --git a/patches/server/0056-Return-nether-portal-fix.patch b/patches/server/0056-Return-nether-portal-fix.patch index e23bb584..a10c5676 100644 --- a/patches/server/0056-Return-nether-portal-fix.patch +++ b/patches/server/0056-Return-nether-portal-fix.patch @@ -6,7 +6,7 @@ Subject: [PATCH] Return nether portal fix This patch is powered by NetherPortalFix(https://github.com/TwelveIterationMods/NetherPortalFix) diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index c15eadd90e143a7b2a1974fff696b1b2426d3fb8..04203fd2f4e790e0d1f306a11cb17ad668dc75f5 100644 +index afcc518ff50066e846e9b1a79cb99dc25cac4f24..02e1b6725f0129bb0dacc39b71b0397c9fe8da93 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java @@ -186,6 +186,7 @@ import org.bukkit.event.player.PlayerTeleportEvent.TeleportCause; @@ -17,9 +17,9 @@ index c15eadd90e143a7b2a1974fff696b1b2426d3fb8..04203fd2f4e790e0d1f306a11cb17ad6 // CraftBukkit end public class ServerPlayer extends Player { -@@ -1241,6 +1242,24 @@ public class ServerPlayer extends Player { +@@ -1281,6 +1282,24 @@ public class ServerPlayer extends Player { PlayerChangedWorldEvent changeEvent = new PlayerChangedWorldEvent(this.getBukkitEntity(), worldserver1.getWorld()); - this.level.getCraftServer().getPluginManager().callEvent(changeEvent); + this.level().getCraftServer().getPluginManager().callEvent(changeEvent); // CraftBukkit end + // Leaves start - nether portal fix + if (top.leavesmc.leaves.LeavesConfig.netherPortalFix) { @@ -42,7 +42,7 @@ index c15eadd90e143a7b2a1974fff696b1b2426d3fb8..04203fd2f4e790e0d1f306a11cb17ad6 } // Paper start if (this.isBlocking()) { -@@ -1293,6 +1312,30 @@ public class ServerPlayer extends Player { +@@ -1333,6 +1352,30 @@ public class ServerPlayer extends Player { protected Optional getExitPortal(ServerLevel worldserver, BlockPos blockposition, boolean flag, WorldBorder worldborder, int searchRadius, boolean canCreatePortal, int createRadius) { // CraftBukkit Optional optional = super.getExitPortal(worldserver, blockposition, flag, worldborder, searchRadius, canCreatePortal, createRadius); // CraftBukkit @@ -74,7 +74,7 @@ index c15eadd90e143a7b2a1974fff696b1b2426d3fb8..04203fd2f4e790e0d1f306a11cb17ad6 return optional; } else { diff --git a/src/main/java/net/minecraft/server/players/PlayerList.java b/src/main/java/net/minecraft/server/players/PlayerList.java -index 5a697351408e5f681620328996b06dfda0fa2f34..7bda5a4766cbe3a1f96851a58e1bd1dd4756d527 100644 +index 2d27d6b7c530106c2f50ecc438a36046a9a6d6f3..930171ea05c8acbc7790a3067ace9bdb1bf8315a 100644 --- a/src/main/java/net/minecraft/server/players/PlayerList.java +++ b/src/main/java/net/minecraft/server/players/PlayerList.java @@ -27,6 +27,8 @@ import java.util.UUID; @@ -95,7 +95,7 @@ index 5a697351408e5f681620328996b06dfda0fa2f34..7bda5a4766cbe3a1f96851a58e1bd1dd public abstract class PlayerList { public static final File USERBANLIST_FILE = new File("banned-players.json"); -@@ -975,6 +979,24 @@ public abstract class PlayerList { +@@ -982,6 +986,24 @@ public abstract class PlayerList { if (fromWorld != location.getWorld()) { PlayerChangedWorldEvent event = new PlayerChangedWorldEvent(entityplayer.getBukkitEntity(), fromWorld); server.server.getPluginManager().callEvent(event); @@ -121,10 +121,10 @@ index 5a697351408e5f681620328996b06dfda0fa2f34..7bda5a4766cbe3a1f96851a58e1bd1dd // Save player file again if they were disconnected diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index 523a46eb4a23b4a4aa9e5ea38771a5953c1bdccc..00d88ed58b8fe93e8655d675f9d5e4f852170d4d 100644 +index b391fa45df30aa29b58a5aaa2159683314841f90..1a30fab8e52c3b14ae1ba908d7b33873d34ec0f3 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java -@@ -240,7 +240,7 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -243,7 +243,7 @@ public abstract class LivingEntity extends Entity implements Attackable { protected ItemStack useItem; protected int useItemRemaining; protected int fallFlyTicks; diff --git a/patches/server/0057-Appleskin-Protocol.patch b/patches/server/0057-Appleskin-Protocol.patch index 43b71d06..af85be71 100644 --- a/patches/server/0057-Appleskin-Protocol.patch +++ b/patches/server/0057-Appleskin-Protocol.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Appleskin Protocol diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index 0d51123a5a2c9f72937481bc42e22ca4258bb00e..41c942edf5227654ab17414b93812104cc19b764 100644 +index a932f1096fb9a89644d649edc2ef70491d187786..38fe3c8ae7ee5788760f4c295936ccf3caa238b9 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java -@@ -1591,6 +1591,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop -1) { -@@ -2109,6 +2117,11 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic +@@ -2107,6 +2115,11 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic this.processedDisconnect = true; } // CraftBukkit end @@ -43,7 +43,7 @@ index 9f3898e3b079a1d59e66546c66a64b3f5179b0b5..c098ad149f5dd7829aa2ffde5f45fd5c this.chatMessageChain.close(); ServerGamePacketListenerImpl.LOGGER.info("{} lost connection: {}", this.player.getName().getString(), reason.getString()); // CraftBukkit start - Replace vanilla quit message handling with our own. -@@ -3594,6 +3607,9 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic +@@ -3556,6 +3569,9 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic if (top.leavesmc.leaves.LeavesConfig.jadeProtocol && ProtocolUtils.isNamespacePacket(packet, top.leavesmc.leaves.protocol.JadeProtocol.PROTOCOL_ID)) { top.leavesmc.leaves.protocol.JadeProtocol.handlePacket(server, player, packet); } diff --git a/patches/server/0064-Fix-trapdoor-feature.patch b/patches/server/0064-Fix-trapdoor-feature.patch index cc599c8e..eb36fe87 100644 --- a/patches/server/0064-Fix-trapdoor-feature.patch +++ b/patches/server/0064-Fix-trapdoor-feature.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Fix trapdoor feature diff --git a/src/main/java/net/minecraft/world/level/block/TrapDoorBlock.java b/src/main/java/net/minecraft/world/level/block/TrapDoorBlock.java -index 29e43313ff6bd9b10cf6409e3519c0b2603b431e..1646170dc41f8cefac46d95378b45c919a23cad4 100644 +index b9e3c9cd709d42bced85436720ccc7b9c7e49552..90f193caf333d39e9494f1596d49b4a592e56e4c 100644 --- a/src/main/java/net/minecraft/world/level/block/TrapDoorBlock.java +++ b/src/main/java/net/minecraft/world/level/block/TrapDoorBlock.java -@@ -125,26 +125,7 @@ public class TrapDoorBlock extends HorizontalDirectionalBlock implements SimpleW +@@ -124,26 +124,7 @@ public class TrapDoorBlock extends HorizontalDirectionalBlock implements SimpleW flag1 = eventRedstone.getNewCurrent() > 0; } // CraftBukkit end diff --git a/patches/server/0065-Disable-distance-check-for-UseItemOnPacket.patch b/patches/server/0065-Disable-distance-check-for-UseItemOnPacket.patch index 99b5872a..6ff23f01 100644 --- a/patches/server/0065-Disable-distance-check-for-UseItemOnPacket.patch +++ b/patches/server/0065-Disable-distance-check-for-UseItemOnPacket.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Disable distance check for UseItemOnPacket diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index c098ad149f5dd7829aa2ffde5f45fd5c43ac4d59..b8b9ee4b023510bb672bb2b6bbf8d792632932c8 100644 +index f5c43e538f730df9c400d5d74fafc2ecce28c754..8868da64ca18ddf674dab200dfab3a5412f70e1c 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -@@ -1956,7 +1956,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic +@@ -1954,7 +1954,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic Vec3 vec3d2 = vec3d.subtract(vec3d1); double d0 = 1.0000001D; diff --git a/patches/server/0066-No-feather-falling-trample.patch b/patches/server/0066-No-feather-falling-trample.patch index b9717c2b..5a30a3b8 100644 --- a/patches/server/0066-No-feather-falling-trample.patch +++ b/patches/server/0066-No-feather-falling-trample.patch @@ -5,10 +5,10 @@ Subject: [PATCH] No feather falling trample diff --git a/src/main/java/net/minecraft/world/level/block/FarmBlock.java b/src/main/java/net/minecraft/world/level/block/FarmBlock.java -index 34d744837e599633a3c2c0b72f253bb0e157f226..1604a01c79caf98fafa83c0e7c6112f033c534ef 100644 +index 552d8c8f3f56bfccd25d11488ed7ec1644a92f47..a0af2e1b417a311464d09d3a9fb458f9f5f952c2 100644 --- a/src/main/java/net/minecraft/world/level/block/FarmBlock.java +++ b/src/main/java/net/minecraft/world/level/block/FarmBlock.java -@@ -101,6 +101,13 @@ public class FarmBlock extends Block { +@@ -102,6 +102,13 @@ public class FarmBlock extends Block { public void fallOn(Level world, BlockState state, BlockPos pos, Entity entity, float fallDistance) { super.fallOn(world, state, pos, entity, fallDistance); // CraftBukkit - moved here as game rules / events shouldn't affect fall damage. if (!world.isClientSide && world.random.nextFloat() < fallDistance - 0.5F && entity instanceof LivingEntity && (entity instanceof Player || world.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING)) && entity.getBbWidth() * entity.getBbWidth() * entity.getBbHeight() > 0.512F) {