diff --git a/.github/workflows/leaves.yml b/.github/workflows/leaves.yml index 8e893052..a1807284 100644 --- a/.github/workflows/leaves.yml +++ b/.github/workflows/leaves.yml @@ -50,8 +50,8 @@ jobs: bodyFile: ${{ env.info }} tag: ${{ env.tag }} name: ${{ env.name }} + prerelease: ${{ env.pre }} token: ${{ secrets.GITHUB_TOKEN }} - prerelease: false - name: Delete Draft Releases uses: hugo19941994/delete-draft-releases@v1.0.0 env: diff --git a/build.gradle.kts b/build.gradle.kts index 45a82f74..37cc879e 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -1,7 +1,7 @@ plugins { java id("com.github.johnrengelman.shadow") version "8.1.0" apply false - id("io.papermc.paperweight.patcher") version "1.5.2" + id("io.papermc.paperweight.patcher") version "1.5.3" } repositories { @@ -13,7 +13,7 @@ repositories { dependencies { remapper("net.fabricmc:tiny-remapper:0.8.6:fat") - decompiler("net.minecraftforge:forgeflower:2.0.605.1") + decompiler("net.minecraftforge:forgeflower:2.0.627.2") paperclip("io.papermc:paperclip:3.0.2") } diff --git a/gradle.properties b/gradle.properties index 157ae674..9207eb4e 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,7 +1,8 @@ group=top.leavesmc.leaves -version=1.19.3-R0.1-SNAPSHOT +version=1.19.4-R0.1-SNAPSHOT -mcVersion=1.19.3 -packageVersion=1_19_R2 +mcVersion=1.19.4 +packageVersion=1_19_R3 org.gradle.jvmargs=-Xmx2G -paperRef=155aa36d89b260ef5841615899299756b5983c0a +paperRef=055f7228f05a11f6117b57ebebce4e7aac1f4e7f +preVersion=true \ No newline at end of file diff --git a/patches/server/0001-Build-changes.patch b/patches/server/0001-Build-changes.patch index 6d370281..e8b2e372 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 6a1853f3d988820f357c11371e32d50682e60401..f01a32ccaa36a85859647c118185e2712ed6924b 100644 +index 9cf389defdaeb887e9cad4f0fed3f3b95667b238..5c2ecb57aa3395a2bb10464e85b18c3ecf77e91d 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -7,8 +7,12 @@ plugins { @@ -16,7 +16,7 @@ index 6a1853f3d988820f357c11371e32d50682e60401..f01a32ccaa36a85859647c118185e271 - implementation(project(":paper-mojangapi")) + implementation(project(":leaves-api")) // Leaves + // Leaves start -+ implementation("io.papermc.paper:paper-mojangapi:1.19.3-R0.1-SNAPSHOT") { ++ implementation("io.papermc.paper:paper-mojangapi:1.19.4-R0.1-SNAPSHOT") { + exclude("io.papermc.paper", "paper-api") + } + // Leaves end @@ -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 710ca7d3a5659953f64bc6dccdd93b43300961cc..fd59a24743099e0599609bdb4d9b4578cd4c3940 100644 +index e67c4a7aaa11f5c67f926f92e0a174af526c2ec3..a1513818ce64c97462000eb3cf69cd09261f9ddb 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java -@@ -1654,7 +1654,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop resourcekey, 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 +@@ -277,6 +278,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable { + 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 + this.leavesConfig = new top.leavesmc.leaves.LeavesConfig.WorldConfig(((net.minecraft.world.level.storage.PrimaryLevelData)worlddatamutable).getLevelName()); // Leaves - World Config @@ -65,10 +65,10 @@ index db971ca4136c7f922d630f38aa5c78cb04adbdfa..5efece112550148d04f641249bee3221 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 f758f1349e07989481be2957b519063b094ac200..ba4a1f12c29cb28441ae316ff5e1f23358e6af02 100644 +index 3e9861287cd3b6632aa6e4e1834e4afca4dad268..b95c87514f0c684ab986c90a8c31d0c39c22a7a5 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -@@ -961,6 +961,7 @@ public final class CraftServer implements Server { +@@ -956,6 +956,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 f758f1349e07989481be2957b519063b094ac200..ba4a1f12c29cb28441ae316ff5e1f233 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)) -@@ -976,6 +977,7 @@ public final class CraftServer implements Server { +@@ -971,6 +972,7 @@ public final class CraftServer implements Server { } } world.spigotConfig.init(); // Spigot @@ -84,7 +84,7 @@ index f758f1349e07989481be2957b519063b094ac200..ba4a1f12c29cb28441ae316ff5e1f233 } Plugin[] pluginClone = pluginManager.getPlugins().clone(); // Paper -@@ -991,6 +993,7 @@ public final class CraftServer implements Server { +@@ -986,6 +988,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 f758f1349e07989481be2957b519063b094ac200..ba4a1f12c29cb28441ae316ff5e1f233 this.overrideAllCommandBlockCommands = this.commandsConfiguration.getStringList("command-block-overrides").contains("*"); this.ignoreVanillaPermissions = this.commandsConfiguration.getBoolean("ignore-vanilla-permissions"); -@@ -2745,6 +2748,14 @@ public final class CraftServer implements Server { +@@ -2743,6 +2746,14 @@ public final class CraftServer implements Server { { return CraftServer.this.console.paperConfigurations.createLegacyObject(CraftServer.this.console); } @@ -108,10 +108,10 @@ index f758f1349e07989481be2957b519063b094ac200..ba4a1f12c29cb28441ae316ff5e1f233 @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 13faf8a5ea85f4c94dba814e39a9e74b9c2e86c4..16581a015993cb555868115c356c3b5c2232396e 100644 +index b9a3d707cbe1b2a44f1401d812e1224cddd984b0..fe55d451064e339ec55ad7e7727a60bc22d5e8dd 100644 --- a/src/main/java/org/bukkit/craftbukkit/Main.java +++ b/src/main/java/org/bukkit/craftbukkit/Main.java -@@ -158,6 +158,14 @@ public class Main { +@@ -165,6 +165,14 @@ public class Main { .ofType(File.class) .defaultsTo(new File("paper.yml")) .describedAs("Yml file"); diff --git a/patches/server/0005-Fix-gravity-block-duper.patch b/patches/server/0005-Fix-gravity-block-duper.patch index 4eb6df8e..099a6d08 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 15f850f9ae1d4e45c445c5301cb167eda0287e2c..43873929f11e373186190b3ae831dc68bfa69616 100644 +index fc79183a6bd979d98d79e88422801f9bb2646ea6..98a03fd18916ec2cf0104790d8683ebbfe87ba8e 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -512,36 +512,8 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { +@@ -513,36 +513,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 15f850f9ae1d4e45c445c5301cb167eda0287e2c..43873929f11e373186190b3ae831dc68 public Entity(EntityType type, Level world) { this.id = Entity.ENTITY_COUNTER.incrementAndGet(); -@@ -2934,7 +2906,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { +@@ -2951,7 +2923,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { } this.processPortalCooldown(); @@ -56,10 +56,10 @@ index 15f850f9ae1d4e45c445c5301cb167eda0287e2c..43873929f11e373186190b3ae831dc68 } 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 eacb8a407fe99af2c13f23c12b5544696bda8890..169a93fe103fb795b6c8b49bb8c19b8643132316 100644 +index ce2c3c146ef64400e00084bd2245d2b87a67fbc2..12aae043042c5352fbe564fc777172a6adb19680 100644 --- a/src/main/java/net/minecraft/world/entity/item/FallingBlockEntity.java +++ b/src/main/java/net/minecraft/world/entity/item/FallingBlockEntity.java -@@ -63,7 +63,7 @@ public class FallingBlockEntity extends Entity { +@@ -64,7 +64,7 @@ public class FallingBlockEntity extends Entity { @Nullable public CompoundTag blockData; protected static final EntityDataAccessor DATA_START_POS = SynchedEntityData.defineId(FallingBlockEntity.class, EntityDataSerializers.BLOCK_POS); @@ -68,7 +68,7 @@ index eacb8a407fe99af2c13f23c12b5544696bda8890..169a93fe103fb795b6c8b49bb8c19b86 public FallingBlockEntity(EntityType type, Level world) { super(type, world); -@@ -129,11 +129,7 @@ public class FallingBlockEntity extends Entity { +@@ -130,11 +130,7 @@ public class FallingBlockEntity extends Entity { @Override public void tick() { @@ -81,7 +81,7 @@ index eacb8a407fe99af2c13f23c12b5544696bda8890..169a93fe103fb795b6c8b49bb8c19b86 if (this.blockState.isAir()) { this.discard(); } else { -@@ -146,11 +142,7 @@ public class FallingBlockEntity extends Entity { +@@ -147,11 +143,7 @@ public class FallingBlockEntity extends Entity { this.move(MoverType.SELF, this.getDeltaMovement()); @@ -95,7 +95,7 @@ index eacb8a407fe99af2c13f23c12b5544696bda8890..169a93fe103fb795b6c8b49bb8c19b86 // Paper start - Configurable EntityFallingBlock height nerf 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 15c5cccfe02c924c02f605eb47dd0b420b189891..d3b286e145c7eda30f3e2419d20feee107a4f42f 100644 +index 41d7cff39fc37955877668337689b4b26cd8c7cf..5e0e8afa553a8dcd87dfc10a595ba10c2b3da7df 100644 --- a/src/main/java/net/minecraft/world/level/block/EndPortalBlock.java +++ b/src/main/java/net/minecraft/world/level/block/EndPortalBlock.java @@ -53,12 +53,19 @@ public class EndPortalBlock extends BaseEntityBlock { diff --git a/patches/server/0006-Fix-trading-with-the-void.patch b/patches/server/0006-Fix-trading-with-the-void.patch index 05ac8c92..f0861db7 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 e84c67f02bce4c2f9c4eeca1b888d53377fb20d7..9d265ae4d2bb3a269c89ca76bf979400f30630a7 100644 +index 5a5ff40df37db9cbd53c584ed26a3ce4888b29c0..816b531b9d2acfc5c3d6414cc5ad49d178f65f7f 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java -@@ -2598,11 +2598,7 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -2597,11 +2597,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/0008-Make-snowball-and-egg-can-knockback-player.patch b/patches/server/0008-Make-snowball-and-egg-can-knockback-player.patch index 9fddb2ea..1a3b7e5e 100644 --- a/patches/server/0008-Make-snowball-and-egg-can-knockback-player.patch +++ b/patches/server/0008-Make-snowball-and-egg-can-knockback-player.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Make snowball and egg can knockback player diff --git a/src/main/java/net/minecraft/world/entity/projectile/Snowball.java b/src/main/java/net/minecraft/world/entity/projectile/Snowball.java -index a725851060f13e734dbd2fbf8c83c9e1af57a8b7..6bb2b5b7fe4e4605898ee70fe12a72e5e765632a 100644 +index 6cded52e4627c2b6073fa221fc6d6583f1b2a96d..faae95a9bb707e40deeca275814213773e3b765d 100644 --- a/src/main/java/net/minecraft/world/entity/projectile/Snowball.java +++ b/src/main/java/net/minecraft/world/entity/projectile/Snowball.java @@ -3,6 +3,7 @@ package net.minecraft.world.entity.projectile; @@ -13,16 +13,16 @@ index a725851060f13e734dbd2fbf8c83c9e1af57a8b7..6bb2b5b7fe4e4605898ee70fe12a72e5 import net.minecraft.core.particles.ParticleOptions; import net.minecraft.core.particles.ParticleTypes; +import net.minecraft.server.level.ServerPlayer; - import net.minecraft.world.damagesource.DamageSource; import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.EntityType; -@@ -56,6 +57,12 @@ public class Snowball extends ThrowableItemProjectile { + import net.minecraft.world.entity.LivingEntity; +@@ -55,6 +56,12 @@ public class Snowball extends ThrowableItemProjectile { Entity entity = entityHitResult.getEntity(); int i = entity instanceof Blaze ? 3 : 0; - entity.hurt(DamageSource.thrown(this, this.getOwner()), (float)i); + entity.hurt(this.damageSources().thrown(this, this.getOwner()), (float)i); + // Leaves start - make snowball can knockback player + if (top.leavesmc.leaves.LeavesConfig.snowballAndEggCanKnockback && entity instanceof ServerPlayer) { -+ entity.hurt(DamageSource.thrown(this, this.getOwner()), 0.0000001F); ++ entity.hurt(this.damageSources().thrown(this, this.getOwner()), 0.0000001F); + ((ServerPlayer) entity).knockback(0.4000000059604645D, this.getX() - entity.getX(), this.getZ() - entity.getZ(), this); + } + // Leaves end - make snowball can knockback player @@ -30,18 +30,18 @@ index a725851060f13e734dbd2fbf8c83c9e1af57a8b7..6bb2b5b7fe4e4605898ee70fe12a72e5 @Override diff --git a/src/main/java/net/minecraft/world/entity/projectile/ThrownEgg.java b/src/main/java/net/minecraft/world/entity/projectile/ThrownEgg.java -index 77941e3981e49cf5662b3e3c86a9c419080b17c8..bc9ef36f989f06acac07aa15c8fc624abcdf8738 100644 +index 326eb972078e5dd700372c9ba09ea7f8415b144e..2d7f314fc03103face462ac55979ddd78734a339 100644 --- a/src/main/java/net/minecraft/world/entity/projectile/ThrownEgg.java +++ b/src/main/java/net/minecraft/world/entity/projectile/ThrownEgg.java -@@ -46,7 +46,14 @@ public class ThrownEgg extends ThrowableItemProjectile { +@@ -45,7 +45,14 @@ public class ThrownEgg extends ThrowableItemProjectile { @Override protected void onHitEntity(EntityHitResult entityHitResult) { super.onHitEntity(entityHitResult); + Entity entity = entityHitResult.getEntity(); // Leaves - make egg can knockback player - entityHitResult.getEntity().hurt(DamageSource.thrown(this, this.getOwner()), 0.0F); + entityHitResult.getEntity().hurt(this.damageSources().thrown(this, this.getOwner()), 0.0F); + // Leaves start - make egg can knockback player + if (top.leavesmc.leaves.LeavesConfig.snowballAndEggCanKnockback && entity instanceof ServerPlayer) { -+ entity.hurt(DamageSource.thrown(this, this.getOwner()), 0.0000001F); ++ entity.hurt(this.damageSources().thrown(this, this.getOwner()), 0.0000001F); + ((ServerPlayer) entity).knockback(0.4000000059604645D, this.getX() - entity.getX(), this.getZ() - entity.getZ(), this); + } + // Leaves end - make egg can knockback player diff --git a/patches/server/0009-Fakeplayer-support.patch b/patches/server/0009-Fakeplayer-support.patch index 98f7cdcf..016b5f2c 100644 --- a/patches/server/0009-Fakeplayer-support.patch +++ b/patches/server/0009-Fakeplayer-support.patch @@ -5,10 +5,10 @@ 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 abc70f9aa1dd2080d9c0111a91f6dd74bc3ffbd0..7e15411afc2c35feb32569e557100b92b46a2b31 100644 +index 48d4b8dc0396dc7f9142fcef35e8ecbdea5f1223..ad9c90b359874ee2c9a94c5b2cf72a634e8b56f4 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java -@@ -125,6 +125,7 @@ import net.minecraft.util.profiling.metrics.profiling.ServerMetricsSamplersProvi +@@ -126,6 +126,7 @@ import net.minecraft.util.profiling.metrics.profiling.ServerMetricsSamplersProvi import net.minecraft.util.profiling.metrics.storage.MetricsPersister; import net.minecraft.util.thread.ReentrantBlockableEventLoop; import net.minecraft.world.Difficulty; @@ -16,7 +16,7 @@ index abc70f9aa1dd2080d9c0111a91f6dd74bc3ffbd0..7e15411afc2c35feb32569e557100b92 import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.ai.village.VillageSiege; import net.minecraft.world.entity.npc.CatSpawner; -@@ -632,6 +633,8 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop= -0.8)) { -+ hurt(DamageSource.FALL, (float) Math.pow(3.6, -oldVelocity.getY())); ++ hurt(this.damageSources().fall(), (float) Math.pow(3.6, -oldVelocity.getY())); + } + } + @@ -1707,7 +1707,7 @@ index 0000000000000000000000000000000000000000..65df16e8034711957ec3610a0846e9b6 + while (iterator.hasNext()) { + ServerBot bot = iterator.next(); + iterator.remove(); -+ bot.die(DamageSource.OUT_OF_WORLD); ++ bot.die(bot.damageSources().outOfWorld()); + } + return true; + } diff --git a/patches/server/0011-Redstone-Shears-Wrench.patch b/patches/server/0011-Redstone-Shears-Wrench.patch index f6b28605..6ce1aea0 100644 --- a/patches/server/0011-Redstone-Shears-Wrench.patch +++ b/patches/server/0011-Redstone-Shears-Wrench.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Redstone Shears Wrench diff --git a/src/main/java/net/minecraft/world/item/ShearsItem.java b/src/main/java/net/minecraft/world/item/ShearsItem.java -index e77af779c77de6d5580c13699df3e7d890fe7aba..c9310e88b3a967cb9cacb80288e74757fffca647 100644 +index a6ebb08a8f9681fd3a35de5d0e268f320e31ce1a..7c3c3a28a95c58caa83e283cdbb472b2499a8f7b 100644 --- a/src/main/java/net/minecraft/world/item/ShearsItem.java +++ b/src/main/java/net/minecraft/world/item/ShearsItem.java @@ -1,7 +1,9 @@ @@ -18,7 +18,7 @@ index e77af779c77de6d5580c13699df3e7d890fe7aba..c9310e88b3a967cb9cacb80288e74757 import net.minecraft.server.level.ServerPlayer; import net.minecraft.sounds.SoundEvents; import net.minecraft.sounds.SoundSource; -@@ -14,8 +16,18 @@ import net.minecraft.world.item.context.UseOnContext; +@@ -14,9 +16,19 @@ import net.minecraft.world.item.context.UseOnContext; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.Blocks; @@ -30,6 +30,7 @@ index e77af779c77de6d5580c13699df3e7d890fe7aba..c9310e88b3a967cb9cacb80288e74757 +import net.minecraft.world.level.block.RepeaterBlock; +import net.minecraft.world.level.block.piston.PistonBaseBlock; import net.minecraft.world.level.block.state.BlockState; + import net.minecraft.world.level.gameevent.GameEvent; +import net.minecraft.world.level.block.state.StateDefinition; +import net.minecraft.world.level.block.state.properties.Property; + @@ -37,7 +38,7 @@ index e77af779c77de6d5580c13699df3e7d890fe7aba..c9310e88b3a967cb9cacb80288e74757 public class ShearsItem extends Item { public ShearsItem(Item.Properties settings) { -@@ -77,6 +89,59 @@ public class ShearsItem extends Item { +@@ -80,6 +92,59 @@ public class ShearsItem extends Item { } } diff --git a/patches/server/0012-Add-isShrink-to-EntityResurrectEvent.patch b/patches/server/0012-Add-isShrink-to-EntityResurrectEvent.patch index c9531b82..520d4394 100644 --- a/patches/server/0012-Add-isShrink-to-EntityResurrectEvent.patch +++ b/patches/server/0012-Add-isShrink-to-EntityResurrectEvent.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add isShrink to EntityResurrectEvent diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index 42eb78830855d7282b7f3f1bdbe85e632d489784..f577dcc95bba43a2aa8a3a54b3afbcf50e93d52b 100644 +index e9d3e34520b706627205e0d5b17b25e09f198e7e..f02913ec025208dcdfe9d0f0e5b26a1d912f4797 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java -@@ -1549,12 +1549,12 @@ public abstract class LivingEntity extends Entity { +@@ -1538,12 +1538,12 @@ public abstract class LivingEntity extends Entity implements Attackable { } org.bukkit.inventory.EquipmentSlot handSlot = (hand != null) ? org.bukkit.craftbukkit.CraftEquipmentSlot.getHand(hand) : null; @@ -23,7 +23,7 @@ index 42eb78830855d7282b7f3f1bdbe85e632d489784..f577dcc95bba43a2aa8a3a54b3afbcf5 itemstack1.shrink(1); } if (itemstack != null && this instanceof ServerPlayer) { -@@ -4433,3 +4433,4 @@ public abstract class LivingEntity extends Entity { +@@ -4403,3 +4403,4 @@ public abstract class LivingEntity extends Entity implements Attackable { } } diff --git a/patches/server/0014-Spectator-dont-get-Advancement.patch b/patches/server/0014-Spectator-dont-get-Advancement.patch index 4fc0901c..0a12b5c9 100644 --- a/patches/server/0014-Spectator-dont-get-Advancement.patch +++ b/patches/server/0014-Spectator-dont-get-Advancement.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Spectator dont get Advancement diff --git a/src/main/java/net/minecraft/server/PlayerAdvancements.java b/src/main/java/net/minecraft/server/PlayerAdvancements.java -index 8873e12cbd3d6f9071efedb35ea3c69c78033d78..1fdaa8a9993dd6881877a3b00b02487a09a34cbe 100644 +index a1ce0cce055ad5c92b0f20760471795f08f0c886..6a5025e54c4bf4396f1f18a81d9db912848a2545 100644 --- a/src/main/java/net/minecraft/server/PlayerAdvancements.java +++ b/src/main/java/net/minecraft/server/PlayerAdvancements.java -@@ -47,6 +47,7 @@ import net.minecraft.server.level.ServerPlayer; +@@ -43,6 +43,7 @@ import net.minecraft.server.level.ServerPlayer; import net.minecraft.server.players.PlayerList; import net.minecraft.util.datafix.DataFixTypes; import net.minecraft.world.level.GameRules; @@ -16,7 +16,7 @@ index 8873e12cbd3d6f9071efedb35ea3c69c78033d78..1fdaa8a9993dd6881877a3b00b02487a import org.slf4j.Logger; import top.leavesmc.leaves.bot.ServerBot; -@@ -278,6 +279,11 @@ public class PlayerAdvancements { +@@ -230,6 +231,11 @@ public class PlayerAdvancements { return false; } // Leaves end - bot can't get advancement diff --git a/patches/server/0015-Stick-can-change-ArmorStand-arm-status.patch b/patches/server/0015-Stick-can-change-ArmorStand-arm-status.patch index c3ce40fa..5571bd55 100644 --- a/patches/server/0015-Stick-can-change-ArmorStand-arm-status.patch +++ b/patches/server/0015-Stick-can-change-ArmorStand-arm-status.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Stick can change ArmorStand arm status diff --git a/src/main/java/net/minecraft/world/entity/decoration/ArmorStand.java b/src/main/java/net/minecraft/world/entity/decoration/ArmorStand.java -index b136cdc13d94bc34c998a1986e0c93525356ac5c..a1dd65d71606e1da07be781bf95a326882fa8c9e 100644 +index 3677dd991ae73428984e62e4d6fb757317987887..3b488949ba5cd7465e4de3955e5430fc710322cc 100644 --- a/src/main/java/net/minecraft/world/entity/decoration/ArmorStand.java +++ b/src/main/java/net/minecraft/world/entity/decoration/ArmorStand.java -@@ -384,6 +384,12 @@ public class ArmorStand extends LivingEntity { +@@ -385,6 +385,12 @@ public class ArmorStand extends LivingEntity { return InteractionResult.SUCCESS; } } else { diff --git a/patches/server/0017-No-chat-sign.patch b/patches/server/0017-No-chat-sign.patch index 86c400e8..883a224e 100644 --- a/patches/server/0017-No-chat-sign.patch +++ b/patches/server/0017-No-chat-sign.patch @@ -5,10 +5,10 @@ Subject: [PATCH] No chat sign diff --git a/src/main/java/io/papermc/paper/adventure/ChatProcessor.java b/src/main/java/io/papermc/paper/adventure/ChatProcessor.java -index 309fe1162db195c7c3c94d785d6aa2700e42b08a..7f00a44fdba7ba63ea9e06ff959ff51ddfdfebf9 100644 +index 4d9bc4a62ebae0f3707900503576c64733de639f..95b8bd748abe3dcb05a9bd05e45391934a0b2771 100644 --- a/src/main/java/io/papermc/paper/adventure/ChatProcessor.java +++ b/src/main/java/io/papermc/paper/adventure/ChatProcessor.java -@@ -352,7 +352,7 @@ public final class ChatProcessor { +@@ -353,7 +353,7 @@ public final class ChatProcessor { private void sendToServer(final ChatType.Bound chatType, final @Nullable Function msgFunction) { final PlayerChatMessage toConsoleMessage = msgFunction == null ? ChatProcessor.this.message : ChatProcessor.this.message.withUnsignedContent(msgFunction.apply(ChatProcessor.this.server.console)); @@ -40,6 +40,34 @@ index 72a8aa676836fcb3b4578689d16af65e18f55bbe..47a06936a4727c6209a7ad0fb8fb1099 @Nullable public MessageSignature get(String argumentName) { for(ArgumentSignatures.Entry entry : this.entries) { +diff --git a/src/main/java/net/minecraft/network/FriendlyByteBuf.java b/src/main/java/net/minecraft/network/FriendlyByteBuf.java +index 9938bb90bef84cf784f9a1ceb02a1a45aa8b48a1..a7aa7fe8f27b7650415498d9540138a2fabc8233 100644 +--- a/src/main/java/net/minecraft/network/FriendlyByteBuf.java ++++ b/src/main/java/net/minecraft/network/FriendlyByteBuf.java +@@ -67,6 +67,7 @@ import net.minecraft.nbt.NbtIo; + import net.minecraft.nbt.Tag; + import net.minecraft.network.chat.Component; + import net.minecraft.network.chat.MutableComponent; ++import net.minecraft.network.protocol.status.ServerStatus; + import net.minecraft.resources.ResourceKey; + import net.minecraft.resources.ResourceLocation; + import net.minecraft.util.Crypt; +@@ -154,6 +155,15 @@ public class FriendlyByteBuf extends ByteBuf { + public void writeJsonWithCodec(Codec codec, T value) { + DataResult dataresult = codec.encodeStart(JsonOps.INSTANCE, value); + ++ // Leaves start - no chat sign ++ if (codec == ServerStatus.CODEC) { ++ JsonElement element = Util.getOrThrow(dataresult, string -> new EncoderException("Failed to encode: " + string + " " + value)); ++ element.getAsJsonObject().addProperty("preventsChatReports", top.leavesmc.leaves.LeavesConfig.noChatSign); ++ ++ this.writeUtf(GSON.toJson(element)); ++ } ++ // Leaves end - no chat sign ++ + this.writeUtf(FriendlyByteBuf.GSON.toJson((JsonElement) Util.getOrThrow(dataresult, (s) -> { + return new EncoderException("Failed to encode: " + s + " " + value); + }))); diff --git a/src/main/java/net/minecraft/network/protocol/game/ServerboundChatPacket.java b/src/main/java/net/minecraft/network/protocol/game/ServerboundChatPacket.java index d1d2fc0c57523c1abf1e8bfec913c78927c3dafc..50c1b722231c2add72663c475ae9068a35bfd524 100644 --- a/src/main/java/net/minecraft/network/protocol/game/ServerboundChatPacket.java @@ -81,74 +109,30 @@ index 9d6db4a378036559efab91c8b7dcf2a6b0c2cce6..2c349dc502ce275a8215766933f4855f } } diff --git a/src/main/java/net/minecraft/network/protocol/status/ServerStatus.java b/src/main/java/net/minecraft/network/protocol/status/ServerStatus.java -index 6e0a3086da142f1c42007a16bbec7edbab17da04..776be7f58746f96fe9bf7daf11053d3958690df2 100644 +index e6cc2bab1fde2e8c1394772b99201ea8d7eb8057..9545760dab2ab7e2a85c00a8b0847b3c4c4c6857 100644 --- a/src/main/java/net/minecraft/network/protocol/status/ServerStatus.java +++ b/src/main/java/net/minecraft/network/protocol/status/ServerStatus.java -@@ -27,6 +27,7 @@ public class ServerStatus { - @Nullable - private String favicon; - private boolean enforcesSecureChat; -+ private boolean preventsChatReports; // Leaves - preventsChatReports - - @Nullable - public Component getDescription() { -@@ -69,9 +70,19 @@ public class ServerStatus { - } - - public boolean enforcesSecureChat() { -- return this.enforcesSecureChat; -+ return this.enforcesSecureChat && !top.leavesmc.leaves.LeavesConfig.noChatSign; // Leaves - no enforcesSecureChat - } - -+ // Leaves start - add preventsChatReports -+ public boolean isPreventsChatReports() { -+ return preventsChatReports; -+ } -+ -+ public void setPreventsChatReports(boolean preventsChatReports) { -+ this.preventsChatReports = preventsChatReports; -+ } -+ // Leaves end - add preventsChatReports -+ - public static class Players { - private final int maxPlayers; - private final int numPlayers; -@@ -173,6 +184,10 @@ public class ServerStatus { - serverStatus.setEnforcesSecureChat(GsonHelper.getAsBoolean(jsonObject, "enforcesSecureChat")); +@@ -26,18 +26,14 @@ public record ServerStatus(Component description, Optional + private static final String PREFIX = "data:image/png;base64,"; + public static final Codec CODEC = Codec.STRING.comapFlatMap((uri) -> { + if (!uri.startsWith("data:image/png;base64,")) { +- return DataResult.error(() -> { +- return "Unknown format"; +- }); ++ return DataResult.error("Unknown format"); + } else { + try { + String string = uri.substring("data:image/png;base64,".length()).replaceAll("\n", ""); + byte[] bs = Base64.getDecoder().decode(string.getBytes(StandardCharsets.UTF_8)); + return DataResult.success(new ServerStatus.Favicon(bs)); + } catch (IllegalArgumentException var3) { +- return DataResult.error(() -> { +- return "Malformed base64 server icon"; +- }); ++ return DataResult.error("Malformed base64 server icon"); + } } - -+ if (top.leavesmc.leaves.LeavesConfig.noChatSign && jsonObject.has("preventsChatReports")) { -+ serverStatus.setPreventsChatReports(GsonHelper.getAsBoolean(jsonObject, "preventsChatReports")); -+ } -+ - return serverStatus; - } - -@@ -196,6 +211,12 @@ public class ServerStatus { - jsonObject.addProperty("favicon", serverStatus.getFavicon()); - } - -+ // Leaves start - add preventsChatReports -+ if (top.leavesmc.leaves.LeavesConfig.noChatSign) { -+ jsonObject.addProperty("preventsChatReports", true); -+ } -+ // Leaves end - add preventsChatReports -+ - return jsonObject; - } - } -diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index 7e15411afc2c35feb32569e557100b92b46a2b31..e854fbca1a90679bb4f03c38fa1cb9f1622eacbb 100644 ---- a/src/main/java/net/minecraft/server/MinecraftServer.java -+++ b/src/main/java/net/minecraft/server/MinecraftServer.java -@@ -1113,6 +1113,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop { diff --git a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java index cd0f05aa0f2720d450ee1b975648e73dc22ac9a5..90d284192f27a69f6694544c885c3e4d393081bb 100644 --- a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java @@ -163,10 +147,10 @@ index cd0f05aa0f2720d450ee1b975648e73dc22ac9a5..90d284192f27a69f6694544c885c3e4d protected boolean convertOldUsers() { diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index d9c29725e015cb4684ff2d547352505d2ad8a2fe..bc2dba4a2efe56b0ca2e6c2a8881fe5d036e4166 100644 +index 2d8488b9aa088b6d5f0c7e557b8ad0b29bc4cd88..3e501a731eacda1418009cd21a59cf3da1747848 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -@@ -2140,10 +2140,27 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic +@@ -2132,10 +2132,27 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic @Override public void send(Packet packet) { @@ -195,10 +179,10 @@ index d9c29725e015cb4684ff2d547352505d2ad8a2fe..bc2dba4a2efe56b0ca2e6c2a8881fe5d 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 d5014c1145dc25647d328835f7c93309adf8dd1a..a057f6fa87f76707cdef2615d5d49e32fc181740 100644 +index df9f4c0dd69ccd9d02683c1a6302d0b537c64804..f0fd2302519290bade97224373844de7a59a03dd 100644 --- a/src/main/java/net/minecraft/server/players/PlayerList.java +++ b/src/main/java/net/minecraft/server/players/PlayerList.java -@@ -1427,7 +1427,7 @@ public abstract class PlayerList { +@@ -1434,7 +1434,7 @@ public abstract class PlayerList { } public boolean verifyChatTrusted(PlayerChatMessage message) { // Paper - private -> public diff --git a/patches/server/0018-Optimize-mob-spawning.patch b/patches/server/0018-Optimize-mob-spawning.patch index 92c00d25..49527154 100644 --- a/patches/server/0018-Optimize-mob-spawning.patch +++ b/patches/server/0018-Optimize-mob-spawning.patch @@ -6,10 +6,10 @@ Subject: [PATCH] Optimize mob spawning 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 e854fbca1a90679bb4f03c38fa1cb9f1622eacbb..159cb3cf059730d0e74863671f9a59efabdb3d2a 100644 +index ad9c90b359874ee2c9a94c5b2cf72a634e8b56f4..4296153b171c827aadd0a3b70f1f13b8ba41cc65 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java -@@ -311,6 +311,8 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop 32767L || l < -32768L || l > 32767L || i1 < -32768L || i1 > 32767L; - - if (!flag4 && this.teleportDelay <= 400 && !this.wasRiding && this.wasOnGround == this.entity.isOnGround() && !(io.papermc.paper.configuration.GlobalConfiguration.get().collisions.sendFullPosForHardCollidingEntities && this.entity.hardCollides())) { // Paper - send full pos for hard colliding entities to prevent collision problems due to desync -- if ((!flag2 || !flag3) && !(this.entity instanceof AbstractArrow)) { -- if (flag2) { -- packet1 = new ClientboundMoveEntityPacket.Pos(this.entity.getId(), (short) ((int) k), (short) ((int) l), (short) ((int) i1), this.entity.isOnGround()); -- } else if (flag3) { -- packet1 = new ClientboundMoveEntityPacket.Rot(this.entity.getId(), (byte) i, (byte) j, this.entity.isOnGround()); -+ // Leaves start - Better checking -+ if (flag2 || flag3 || this.entity instanceof AbstractArrow) { -+ if ((!flag2 || !flag3) && !(this.entity instanceof AbstractArrow)) { -+ if (flag2) { -+ packet1 = new ClientboundMoveEntityPacket.Pos(this.entity.getId(), (short) ((int) k), (short) ((int) l), (short) ((int) i1), this.entity.isOnGround()); -+ } else if (flag3) { -+ packet1 = new ClientboundMoveEntityPacket.Rot(this.entity.getId(), (byte) i, (byte) j, this.entity.isOnGround()); -+ } -+ } else { -+ packet1 = new ClientboundMoveEntityPacket.PosRot(this.entity.getId(), (short) ((int) k), (short) ((int) l), (short) ((int) i1), (byte) i, (byte) j, this.entity.isOnGround()); - } -- } else { -- packet1 = new ClientboundMoveEntityPacket.PosRot(this.entity.getId(), (short) ((int) k), (short) ((int) l), (short) ((int) i1), (byte) i, (byte) j, this.entity.isOnGround()); +@@ -198,6 +198,7 @@ public class ServerEntity { + flag4 = true; + flag5 = true; } + // Leaves end - Better checking } else { this.wasOnGround = this.entity.isOnGround(); this.teleportDelay = 0; - packet1 = new ClientboundTeleportEntityPacket(this.entity); +@@ -205,6 +206,11 @@ public class ServerEntity { + flag4 = true; + flag5 = true; } + // Leaves start - dont send useless entity packets + if (top.leavesmc.leaves.LeavesConfig.dontSendUselessEntityPackets && isUselessPacket(packet1)) { @@ -46,8 +29,8 @@ index 190e9761087baec5827d722a8281f0ffb6798341..158da4c3b002a4948bfb214337aa28a5 } if ((this.trackDelta || this.entity.hasImpulse || this.entity instanceof LivingEntity && ((LivingEntity) this.entity).isFallFlying()) && this.tickCount > 0) { -@@ -250,6 +259,21 @@ public class ServerEntity { - +@@ -279,6 +285,21 @@ public class ServerEntity { + })); } + // Leaves start - dont send useless entity packets diff --git a/patches/server/0020-Multithreaded-Tracker.patch b/patches/server/0020-Multithreaded-Tracker.patch index 8f1e6ffa..fe7fe691 100644 --- a/patches/server/0020-Multithreaded-Tracker.patch +++ b/patches/server/0020-Multithreaded-Tracker.patch @@ -31,10 +31,10 @@ index f597d65d56964297eeeed6c7e77703764178fee0..a584f2d0829db0bb220b2934ae2934da public ChunkHolder.FullChunkStatus status; diff --git a/src/main/java/net/minecraft/server/level/ChunkMap.java b/src/main/java/net/minecraft/server/level/ChunkMap.java -index b592f5fa1d235c2c3906dd893d079cd4211794ac..634cde8069fc5ba467170a597e02da7c6b4e7b80 100644 +index 31f6791935b3f4cc1349716448d46da2bcea2f15..6cca26640b5c392d2d1bb3ecb6b2b235937f54bd 100644 --- a/src/main/java/net/minecraft/server/level/ChunkMap.java +++ b/src/main/java/net/minecraft/server/level/ChunkMap.java -@@ -1248,8 +1248,38 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider +@@ -1251,8 +1251,38 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider entity.tracker = null; // Paper - We're no longer tracked } @@ -73,7 +73,7 @@ index b592f5fa1d235c2c3906dd893d079cd4211794ac..634cde8069fc5ba467170a597e02da7c this.level.timings.tracker1.startTiming(); try { for (TrackedEntity tracker : this.entityMap.values()) { -@@ -1496,11 +1526,11 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider +@@ -1509,11 +1539,11 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider public class TrackedEntity { @@ -88,7 +88,7 @@ index b592f5fa1d235c2c3906dd893d079cd4211794ac..634cde8069fc5ba467170a597e02da7c public TrackedEntity(Entity entity, int i, int j, boolean flag) { this.serverEntity = new ServerEntity(ChunkMap.this.level, entity, j, flag, this::broadcast, this.seenBy); // CraftBukkit -@@ -1512,7 +1542,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider +@@ -1525,7 +1555,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider // Paper start - use distance map to optimise tracker com.destroystokyo.paper.util.misc.PooledLinkedHashSets.PooledObjectLinkedOpenHashSet lastTrackerCandidates; @@ -97,7 +97,7 @@ index b592f5fa1d235c2c3906dd893d079cd4211794ac..634cde8069fc5ba467170a597e02da7c com.destroystokyo.paper.util.misc.PooledLinkedHashSets.PooledObjectLinkedOpenHashSet oldTrackerCandidates = this.lastTrackerCandidates; this.lastTrackerCandidates = newTrackerCandidates; -@@ -1584,7 +1614,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider +@@ -1597,7 +1627,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider } public void removePlayer(ServerPlayer player) { @@ -106,7 +106,7 @@ index b592f5fa1d235c2c3906dd893d079cd4211794ac..634cde8069fc5ba467170a597e02da7c if (this.seenBy.remove(player.connection)) { this.serverEntity.removePairing(player); } -@@ -1592,7 +1622,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider +@@ -1605,7 +1635,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider } public void updatePlayer(ServerPlayer player) { @@ -129,10 +129,10 @@ index ca42c2642a729b90d22b968af7258f3aee72e14b..464678e973513b5c9e0cf0910cac1b3b public boolean visible = true; diff --git a/src/main/java/net/minecraft/server/level/ServerEntity.java b/src/main/java/net/minecraft/server/level/ServerEntity.java -index 158da4c3b002a4948bfb214337aa28a55b358fc9..2f8e77692811604fdc19bff6ba0faeeadcd9bba6 100644 +index 209685e67ebdb7f062bb58118242dcbf884a3876..555f5075f5b61f7c0527289471ead1c56789d200 100644 --- a/src/main/java/net/minecraft/server/level/ServerEntity.java +++ b/src/main/java/net/minecraft/server/level/ServerEntity.java -@@ -276,14 +276,18 @@ public class ServerEntity { +@@ -302,7 +302,11 @@ public class ServerEntity { public void removePairing(ServerPlayer player) { this.entity.stopSeenByPlayer(player); @@ -145,15 +145,7 @@ index 158da4c3b002a4948bfb214337aa28a55b358fc9..2f8e77692811604fdc19bff6ba0faeea } public void addPairing(ServerPlayer player) { - ServerGamePacketListenerImpl playerconnection = player.connection; - - Objects.requireNonNull(player.connection); -- this.sendPairingData(playerconnection::send, player); // CraftBukkit - add player -+ ((ServerLevel) this.entity.level).chunkSource.chunkMap.runOnTrackerMainThread(() -> this.sendPairingData(playerconnection::send, player)); // CraftBukkit - add player // Leaves - main thread - this.entity.startSeenByPlayer(player); - } - -@@ -398,12 +402,17 @@ public class ServerEntity { +@@ -425,12 +429,17 @@ public class ServerEntity { Set set = ((LivingEntity) this.entity).getAttributes().getDirtyAttributes(); if (!set.isEmpty()) { diff --git a/patches/server/0023-Optimize-suffocation.patch b/patches/server/0023-Optimize-suffocation.patch index 20a2cf3f..39d49f20 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 f577dcc95bba43a2aa8a3a54b3afbcf50e93d52b..42f89171251a5f2dcd6e75eaa1135b34f1e34d6b 100644 +index f02913ec025208dcdfe9d0f0e5b26a1d912f4797..5189762e0f9cae84b7bc60a22437cef4e95c7c36 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java -@@ -402,7 +402,7 @@ public abstract class LivingEntity extends Entity { +@@ -397,7 +397,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.isInWall()) { + if ((!top.leavesmc.leaves.LeavesConfig.enableSuffocationOptimization || (tickCount % 10 == 0 && couldPossiblyBeHurt(1.0F))) && this.isInWall()) { // Leaves - optimize suffocation - this.hurt(DamageSource.IN_WALL, 1.0F); + 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(); -@@ -1327,6 +1327,15 @@ public abstract class LivingEntity extends Entity { +@@ -1321,6 +1321,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 1eed61fe..dada54ef 100644 --- a/patches/server/0024-Strip-raytracing-for-EntityLiving-hasLineOfSight.patch +++ b/patches/server/0024-Strip-raytracing-for-EntityLiving-hasLineOfSight.patch @@ -6,10 +6,10 @@ 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 42f89171251a5f2dcd6e75eaa1135b34f1e34d6b..48ab2b1a7785ef553463fcd03edd6609ecf454ac 100644 +index 5189762e0f9cae84b7bc60a22437cef4e95c7c36..029f456504f0229a564af937e30329ca08a1b5f9 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java -@@ -3656,7 +3656,13 @@ public abstract class LivingEntity extends Entity { +@@ -3618,7 +3618,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 @@ -25,7 +25,7 @@ index 42f89171251a5f2dcd6e75eaa1135b34f1e34d6b..48ab2b1a7785ef553463fcd03edd6609 } diff --git a/src/main/java/net/minecraft/world/level/BlockGetter.java b/src/main/java/net/minecraft/world/level/BlockGetter.java -index d1eefa6ef3e9abfe7af4d8310aa64465fa2d5463..c91735828dc99af0b880a5a105025b4294c487a7 100644 +index 2ee9e8e3c1a28c1823de8e1fe421cc1f3e72f384..49670b17d8c3d0f903b823e78531d2d18cf77e3b 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 { @@ -46,10 +46,10 @@ index d1eefa6ef3e9abfe7af4d8310aa64465fa2d5463..c91735828dc99af0b880a5a105025b42 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 5efece112550148d04f641249bee3221c6375c93..7bd8998048a5505331fdd2870570351137b1a6be 100644 +index 31f0034115a88a42b18e0b838eab8b801473bbef..8cadc9655b8876ede4ec4d2b09198445b56fde29 100644 --- a/src/main/java/net/minecraft/world/level/Level.java +++ b/src/main/java/net/minecraft/world/level/Level.java -@@ -409,6 +409,91 @@ public abstract class Level implements LevelAccessor, AutoCloseable { +@@ -415,6 +415,91 @@ public abstract class Level implements LevelAccessor, AutoCloseable { return null; } diff --git a/patches/server/0025-Only-check-for-spooky-season-once-an-hour.patch b/patches/server/0025-Only-check-for-spooky-season-once-an-hour.patch index 85ed95b4..677808ef 100644 --- a/patches/server/0025-Only-check-for-spooky-season-once-an-hour.patch +++ b/patches/server/0025-Only-check-for-spooky-season-once-an-hour.patch @@ -6,10 +6,10 @@ Subject: [PATCH] Only check for spooky season once an hour This patch is Powered by Pufferfish(https://github.com/pufferfish-gg/Pufferfish) diff --git a/src/main/java/net/minecraft/world/entity/ambient/Bat.java b/src/main/java/net/minecraft/world/entity/ambient/Bat.java -index 320c558bbe80d4bbc641e895ec43cfa2b45e8d70..f57572620288d8f0e024d43a4e11e2125d45515c 100644 +index f5efdf59617d43de18a2267351fa784c0be3ae83..3af66e566c7e154eda362a564c630b5cb4ac24b8 100644 --- a/src/main/java/net/minecraft/world/entity/ambient/Bat.java +++ b/src/main/java/net/minecraft/world/entity/ambient/Bat.java -@@ -256,13 +256,30 @@ public class Bat extends AmbientCreature { +@@ -251,13 +251,30 @@ public class Bat extends AmbientCreature { } } diff --git a/patches/server/0026-Move-ThreadUnsafeRandom-Initialization.patch b/patches/server/0026-Move-ThreadUnsafeRandom-Initialization.patch index a7a1c2ef..897134cf 100644 --- a/patches/server/0026-Move-ThreadUnsafeRandom-Initialization.patch +++ b/patches/server/0026-Move-ThreadUnsafeRandom-Initialization.patch @@ -6,7 +6,7 @@ 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 dc0353bdbf6203167a7654609d13220cd6c0e713..aa81259696beafd04584ee9f5829e9d2e54be67e 100644 +index 816b531b9d2acfc5c3d6414cc5ad49d178f65f7f..dc1ba6e8e8c170681389c360fb5d33caa10bd734 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 { @@ -19,19 +19,19 @@ index dc0353bdbf6203167a7654609d13220cd6c0e713..aa81259696beafd04584ee9f5829e9d2 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 3fd487f9302f428171539e18f09f05c93037fab1..7d6fe65dc64afa00ecef0d1be2e13507086ab81a 100644 +index 8cadc9655b8876ede4ec4d2b09198445b56fde29..844ebd772c1c0b9856069356e451084a1b771324 100644 --- a/src/main/java/net/minecraft/world/level/Level.java +++ b/src/main/java/net/minecraft/world/level/Level.java -@@ -271,6 +271,8 @@ public abstract class Level implements LevelAccessor, AutoCloseable { +@@ -275,6 +275,8 @@ public abstract class Level implements LevelAccessor, AutoCloseable { public abstract ResourceKey getTypeKey(); + protected final io.papermc.paper.util.math.ThreadUnsafeRandom randomTickRandom = new io.papermc.paper.util.math.ThreadUnsafeRandom(java.util.concurrent.ThreadLocalRandom.current().nextLong()); // Leaves - move thread unsafe random initialization + - protected Level(WritableLevelData worlddatamutable, ResourceKey resourcekey, 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 + 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 -@@ -359,6 +361,12 @@ public abstract class Level implements LevelAccessor, AutoCloseable { +@@ -365,6 +367,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/0031-Config-to-disable-method-profiler.patch b/patches/server/0031-Config-to-disable-method-profiler.patch index d8321df0..990937b4 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 159cb3cf059730d0e74863671f9a59efabdb3d2a..49d3483357981e2a980a6e39e1be27e118adde87 100644 +index 4296153b171c827aadd0a3b70f1f13b8ba41cc65..3dc75d267340fdda50668ec0cc7270867dd96117 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java -@@ -2249,6 +2249,11 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop passengers = parent.getPassengers(); - -- while (iterator.hasNext()) { -- Entity entity = (Entity) iterator.next(); -- int j = entity.getType().clientTrackingRange() * 16; -- j = org.spigotmc.TrackingRange.getEntityTrackingRange(entity, j); // Paper ++ + for (int i = 0, size = passengers.size(); i < size; i++) { + Entity entity = passengers.get(i); + int range = entity.getType().clientTrackingRange() * 16; @@ -39,22 +32,27 @@ index 634cde8069fc5ba467170a597e02da7c6b4e7b80..893475f58f649a40e3962092a3608636 + return highest; + } + // Leaves end - -- if (j > i) { -- i = j; -+ private int getEffectiveRange() { -+ int i = this.range; ++ + private int getEffectiveRange() { + int i = this.range; +- Iterator iterator = this.entity.getIndirectPassengers().iterator(); + // Leaves start - remove iterators and streams + if (top.leavesmc.leaves.LeavesConfig.removeRangeCheckStreams) { + i = getHighestRange(this.entity, i); + } else { + Iterator iterator = this.entity.getIndirectPassengers().iterator(); -+ + +- while (iterator.hasNext()) { +- Entity entity = (Entity) iterator.next(); +- int j = entity.getType().clientTrackingRange() * 16; +- j = org.spigotmc.TrackingRange.getEntityTrackingRange(entity, j); // Paper + while (iterator.hasNext()) { + Entity entity = (Entity) iterator.next(); + int j = entity.getType().clientTrackingRange() * 16; + j = org.spigotmc.TrackingRange.getEntityTrackingRange(entity, j); // Paper -+ + +- if (j > i) { +- i = j; + if (j > i) { + i = j; + } diff --git a/patches/server/0040-Cache-climbing-check-for-activation.patch b/patches/server/0040-Cache-climbing-check-for-activation.patch index 4b7e0f46..fb61bda0 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 48ab2b1a7785ef553463fcd03edd6609ecf454ac..7647b8bb3117d005dd616b29e7310f8328973b7f 100644 +index 029f456504f0229a564af937e30329ca08a1b5f9..454495e3e1d432553762f36c18ec290fe13425c0 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java -@@ -1943,6 +1943,22 @@ public abstract class LivingEntity extends Entity { +@@ -1938,6 +1938,22 @@ public abstract class LivingEntity extends Entity implements Attackable { return this.lastClimbablePos; } diff --git a/patches/server/0041-Use-aging-cache-for-biome-temperatures.patch b/patches/server/0041-Use-aging-cache-for-biome-temperatures.patch index 68171311..1c864182 100644 --- a/patches/server/0041-Use-aging-cache-for-biome-temperatures.patch +++ b/patches/server/0041-Use-aging-cache-for-biome-temperatures.patch @@ -6,7 +6,7 @@ Subject: [PATCH] Use aging cache for biome temperatures This patch is Powered by Pufferfish(https://github.com/pufferfish-gg/Pufferfish) diff --git a/src/main/java/net/minecraft/world/level/biome/Biome.java b/src/main/java/net/minecraft/world/level/biome/Biome.java -index c4f1173aab1e53412a65793e06238e637910475a..44bb45b391a365d4ca4dcd7e284edbb04ed12a80 100644 +index 65012a12e1430956ef55ced56773e6354ac26444..fe43432da26a3570c993b5592b7b8020331bdb74 100644 --- a/src/main/java/net/minecraft/world/level/biome/Biome.java +++ b/src/main/java/net/minecraft/world/level/biome/Biome.java @@ -66,23 +66,37 @@ public final class Biome { @@ -57,7 +57,7 @@ index c4f1173aab1e53412a65793e06238e637910475a..44bb45b391a365d4ca4dcd7e284edbb0 public int getSkyColor() { return this.specialEffects.getSkyColor(); -@@ -114,19 +128,33 @@ public final class Biome { +@@ -118,19 +132,33 @@ public final class Biome { @Deprecated public float getTemperature(BlockPos blockPos) { long l = blockPos.asLong(); 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 d5bc420d..d0badfc8 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 c55eb9ef7217405c35661dbe03ae6be8f28576e9..78a0b3c00860a8433fe0e4b27e51fdd683793c2e 100644 +index 06709144f1cd70889e358e4e4a0b0c3a92ac0f7d..3229d81fa7e30f47a7bbee2be109b9d69d973dfb 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -4098,16 +4098,18 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { +@@ -4162,16 +4162,18 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { } public boolean updateFluidHeightAndDoFluidPushing(TagKey tag, double speed) { @@ -35,7 +35,7 @@ index c55eb9ef7217405c35661dbe03ae6be8f28576e9..78a0b3c00860a8433fe0e4b27e51fdd6 double d1 = 0.0D; boolean flag = this.isPushedByFluid(); boolean flag1 = false; -@@ -4115,38 +4117,123 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { +@@ -4179,38 +4181,123 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { int k1 = 0; BlockPos.MutableBlockPos blockposition_mutableblockposition = new BlockPos.MutableBlockPos(); @@ -181,7 +181,7 @@ index c55eb9ef7217405c35661dbe03ae6be8f28576e9..78a0b3c00860a8433fe0e4b27e51fdd6 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 b0c9fce9d4e06cac139e341d218d0b6aac1f1943..f53fee91b78ba4c1e17360a40d5a94febd11eb21 100644 +index 1b80a91fa36c59a31b57ef7ef4a68eacbb0f17f5..62f4e7a2dcd93a5b11fb9f847c70da1bced71015 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 { diff --git a/patches/server/0044-Simpler-ShapelessRecipes-comparison-for-Vanilla.patch b/patches/server/0044-Simpler-ShapelessRecipes-comparison-for-Vanilla.patch index 9adb9598..39d81f6b 100644 --- a/patches/server/0044-Simpler-ShapelessRecipes-comparison-for-Vanilla.patch +++ b/patches/server/0044-Simpler-ShapelessRecipes-comparison-for-Vanilla.patch @@ -6,10 +6,10 @@ Subject: [PATCH] Simpler ShapelessRecipes comparison for Vanilla This patch is Powered by Pufferfish(https://github.com/pufferfish-gg/Pufferfish) diff --git a/src/main/java/net/minecraft/world/item/crafting/ShapelessRecipe.java b/src/main/java/net/minecraft/world/item/crafting/ShapelessRecipe.java -index e7c06d98532160499f2610f69de27e30a326b16f..1e454e36a4fc6de4bd245ee8a908ed4fea16e611 100644 +index f4f3f3a19d3cadaef1ae1a47daa68251a983dcf2..cad40fa0482f286d4b51e934ac639ea524a08455 100644 --- a/src/main/java/net/minecraft/world/item/crafting/ShapelessRecipe.java +++ b/src/main/java/net/minecraft/world/item/crafting/ShapelessRecipe.java -@@ -26,13 +26,21 @@ public class ShapelessRecipe implements CraftingRecipe { +@@ -27,13 +27,21 @@ public class ShapelessRecipe implements CraftingRecipe { final CraftingBookCategory category; final ItemStack result; final NonNullList ingredients; @@ -31,7 +31,7 @@ index e7c06d98532160499f2610f69de27e30a326b16f..1e454e36a4fc6de4bd245ee8a908ed4f } // CraftBukkit start -@@ -81,6 +89,28 @@ public class ShapelessRecipe implements CraftingRecipe { +@@ -82,6 +90,28 @@ public class ShapelessRecipe implements CraftingRecipe { } public boolean matches(CraftingContainer inventory, Level world) { diff --git a/patches/server/0045-PCA-sync-protocol.patch b/patches/server/0045-PCA-sync-protocol.patch index 7928f4ee..6d5b5789 100644 --- a/patches/server/0045-PCA-sync-protocol.patch +++ b/patches/server/0045-PCA-sync-protocol.patch @@ -6,10 +6,10 @@ 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 bc2dba4a2efe56b0ca2e6c2a8881fe5d036e4166..2e762d02bc3f5d768e08a41f281b504ceb8d6996 100644 +index 3e501a731eacda1418009cd21a59cf3da1747848..3b158e65781758665baad82b049210c102679451 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -@@ -241,6 +241,7 @@ import org.bukkit.inventory.CraftingInventory; +@@ -243,6 +243,7 @@ import org.bukkit.inventory.CraftingInventory; import org.bukkit.inventory.EquipmentSlot; import org.bukkit.inventory.InventoryView; import org.bukkit.inventory.SmithingInventory; @@ -17,7 +17,7 @@ index bc2dba4a2efe56b0ca2e6c2a8881fe5d036e4166..2e762d02bc3f5d768e08a41f281b504c // CraftBukkit end public class ServerGamePacketListenerImpl implements ServerPlayerConnection, TickablePacketListener, ServerGamePacketListener { -@@ -3551,6 +3552,16 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic +@@ -3565,6 +3566,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 bc2dba4a2efe56b0ca2e6c2a8881fe5d036e4166..2e762d02bc3f5d768e08a41f281b504c 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 a057f6fa87f76707cdef2615d5d49e32fc181740..70493b62ad4a7722b8823d8bdc3443d3367ac959 100644 +index f0fd2302519290bade97224373844de7a59a03dd..f818dadc0a6719389f535ec142d73d34d45c8aac 100644 --- a/src/main/java/net/minecraft/server/players/PlayerList.java +++ b/src/main/java/net/minecraft/server/players/PlayerList.java -@@ -334,6 +334,7 @@ public abstract class PlayerList { +@@ -340,6 +340,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 a057f6fa87f76707cdef2615d5d49e32fc181740..70493b62ad4a7722b8823d8bdc3443d3 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 72d660cd2ade39335024897cffb8b8a151a7cb71..228abbb9ecca77694ccec405342e67c19195163b 100644 +index 47cd69f91bbc2e2be9ec970674adc522e21593c8..166f6ae5f82273d9dd0852bc4e4f0124253ff108 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 -@@ -346,6 +346,11 @@ public abstract class AbstractHorse extends Animal implements ContainerListener, +@@ -380,6 +380,11 @@ public abstract class AbstractHorse extends Animal implements ContainerListener, @Override public void containerChanged(Container sender) { @@ -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 cc74eeb45913fab03e85969957215d2811252a83..69a8436a343d7b0738e74700a01966111e37a17a 100644 +index 08f027cdcaeeca7b545483cb8c5eb8d13e4933b9..0c49b495b5f598339a0cb4644d8d39596bde96a2 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,10 +102,10 @@ index cc74eeb45913fab03e85969957215d2811252a83..69a8436a343d7b0738e74700a0196611 @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 cac2768fe520b591990c7bc943ae7e95f49efb31..59938c323ad2597af03a310e930d1a61f1a456c7 100644 +index 2a786c9fd29dc2139cf487fa645cd43345d60167..ed39799744fafe5dbb2ebc193e5be372b89126b3 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 -@@ -568,6 +568,16 @@ public abstract class AbstractFurnaceBlockEntity extends BaseContainerBlockEntit +@@ -569,6 +569,16 @@ public abstract class AbstractFurnaceBlockEntity extends BaseContainerBlockEntit } @@ -121,7 +121,7 @@ index cac2768fe520b591990c7bc943ae7e95f49efb31..59938c323ad2597af03a310e930d1a61 + @Override public boolean stillValid(net.minecraft.world.entity.player.Player player) { - return this.level.getBlockEntity(this.worldPosition) != this ? false : player.distanceToSqr((double) this.worldPosition.getX() + 0.5D, (double) this.worldPosition.getY() + 0.5D, (double) this.worldPosition.getZ() + 0.5D) <= 64.0D; + return Container.stillValidBlockEntity(this, player); diff --git a/src/main/java/net/minecraft/world/level/block/entity/BarrelBlockEntity.java b/src/main/java/net/minecraft/world/level/block/entity/BarrelBlockEntity.java index 416aa989ebb18a8741cc9d605a1180ab830f6643..213bc3c11ff4ed9bc761e8153aa669d1e2301960 100644 --- a/src/main/java/net/minecraft/world/level/block/entity/BarrelBlockEntity.java @@ -205,10 +205,10 @@ index 41c9f074203915c31c1ae7a160ce509c13383f84..4c9e84dcd154a4306659ef41ab40127e @Override diff --git a/src/main/java/net/minecraft/world/level/block/entity/BrewingStandBlockEntity.java b/src/main/java/net/minecraft/world/level/block/entity/BrewingStandBlockEntity.java -index 0bab2693b91d5bab222c7db8bc6965ccde954003..99044c31cf703f7942a89dd57cdc65ddf3a58d75 100644 +index c57efcb9a79337ec791e4e8f6671612f0a82b441..218fbc794b086c2c3c04a3d183a0d43dcb74c4c2 100644 --- a/src/main/java/net/minecraft/world/level/block/entity/BrewingStandBlockEntity.java +++ b/src/main/java/net/minecraft/world/level/block/entity/BrewingStandBlockEntity.java -@@ -333,6 +333,16 @@ public class BrewingStandBlockEntity extends BaseContainerBlockEntity implements +@@ -334,6 +334,16 @@ public class BrewingStandBlockEntity extends BaseContainerBlockEntity implements } @@ -224,7 +224,7 @@ index 0bab2693b91d5bab222c7db8bc6965ccde954003..99044c31cf703f7942a89dd57cdc65dd + @Override public boolean stillValid(Player player) { - return this.level.getBlockEntity(this.worldPosition) != this ? false : player.distanceToSqr((double) this.worldPosition.getX() + 0.5D, (double) this.worldPosition.getY() + 0.5D, (double) this.worldPosition.getZ() + 0.5D) <= 64.0D; + return Container.stillValidBlockEntity(this, player); diff --git a/src/main/java/net/minecraft/world/level/block/entity/ChestBlockEntity.java b/src/main/java/net/minecraft/world/level/block/entity/ChestBlockEntity.java index a71414397bd45ee7bcacfeef0041d80dfa25f114..1d6c7a04b8246a60d80325e1615e50573b17a6bb 100644 --- a/src/main/java/net/minecraft/world/level/block/entity/ChestBlockEntity.java @@ -289,10 +289,10 @@ 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 d76603c4172aa10889949c6c2acff05fee02a13d..d24a1e3a19dccf0c672d064d44afe5c525dc696d 100644 +index cba114f554644a37339c93026630c66c43f524b9..80156c6b93907e5a752f226a9a518c883c8410b8 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 -@@ -127,6 +127,16 @@ public class HopperBlockEntity extends RandomizableContainerBlockEntity implemen +@@ -129,6 +129,16 @@ public class HopperBlockEntity extends RandomizableContainerBlockEntity implemen } @@ -309,7 +309,7 @@ index d76603c4172aa10889949c6c2acff05fee02a13d..d24a1e3a19dccf0c672d064d44afe5c5 @Override protected Component getDefaultName() { return Component.translatable("container.hopper"); -@@ -167,6 +177,11 @@ public class HopperBlockEntity extends RandomizableContainerBlockEntity implemen +@@ -169,6 +179,11 @@ public class HopperBlockEntity extends RandomizableContainerBlockEntity implemen if (flag) { blockEntity.setCooldown(world.spigotConfig.hopperTransfer); // Spigot setChanged(world, pos, state); @@ -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 ba4a1f12c29cb28441ae316ff5e1f23358e6af02..8e9fb3731edc302ae472599f8e2d953d485a265e 100644 +index b95c87514f0c684ab986c90a8c31d0c39c22a7a5..4ffa2d267778181d853f22ccfb66eb4869866aaf 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -@@ -386,6 +386,7 @@ public final class CraftServer implements Server { +@@ -381,6 +381,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 ba4a1f12c29cb28441ae316ff5e1f23358e6af02..8e9fb3731edc302ae472599f8e2d953d } public boolean getCommandBlockOverride(String command) { -@@ -962,6 +963,13 @@ public final class CraftServer implements Server { +@@ -957,6 +958,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 d07b7724..9b9f5fd4 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 49d3483357981e2a980a6e39e1be27e118adde87..64ac23a34285328cf79550d31c7a4bbb55138de1 100644 +index 3dc75d267340fdda50668ec0cc7270867dd96117..5a36cebb698ff296a057abb2745c60b41c243ad7 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java -@@ -1585,6 +1585,8 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop cachedSingleHashSet; // Paper public PlayerNaturallySpawnCreaturesEvent playerNaturallySpawnedEvent; // Paper public org.bukkit.event.player.PlayerQuitEvent.QuitReason quitReason = null; // Paper - there are a lot of changes to do if we change all methods leading to the event @@ -20,7 +20,7 @@ index 2e5871d9af67ad1c65a382f5e4964a13a7821305..128a79504e2459826dbc32b5889f66bf public ServerPlayer(MinecraftServer server, ServerLevel world, GameProfile profile) { super(world, world.getSharedSpawnPos(), world.getSharedSpawnAngle(), profile); -@@ -661,6 +665,7 @@ public class ServerPlayer extends Player { +@@ -667,6 +671,7 @@ public class ServerPlayer extends Player { this.joining = false; } // CraftBukkit end @@ -28,7 +28,7 @@ index 2e5871d9af67ad1c65a382f5e4964a13a7821305..128a79504e2459826dbc32b5889f66bf this.gameMode.tick(); this.wardenSpawnTracker.tick(); --this.spawnInvulnerableTime; -@@ -2555,5 +2560,32 @@ public class ServerPlayer extends Player { +@@ -2547,5 +2552,32 @@ public class ServerPlayer extends Player { public CraftPlayer getBukkitEntity() { return (CraftPlayer) super.getBukkitEntity(); } @@ -62,7 +62,7 @@ index 2e5871d9af67ad1c65a382f5e4964a13a7821305..128a79504e2459826dbc32b5889f66bf // 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 58b093bb1de78ee3b3b2ea364aa50474883f443a..a59cf7c1a34ee54b3a64047498ce4e090648df86 100644 +index 0a3eb5e929c605d9eb7369de8ade8b49951f5d37..76928f9f5be525edce8aaf90eeaa91e367ae5ea8 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; diff --git a/patches/server/0052-Renewable-Elytra.patch b/patches/server/0052-Renewable-Elytra.patch index 7b72f4b6..7d23bbf0 100644 --- a/patches/server/0052-Renewable-Elytra.patch +++ b/patches/server/0052-Renewable-Elytra.patch @@ -6,7 +6,7 @@ Subject: [PATCH] Renewable Elytra This patch is Powered by Carpet-TIS-Addition(https://github.com/plusls/Carpet-TIS-Addition) diff --git a/src/main/java/net/minecraft/world/entity/monster/Phantom.java b/src/main/java/net/minecraft/world/entity/monster/Phantom.java -index aa8734856ec7b90036afad13bfda46c02e548812..5d3c60c2e216848c7bbaebbd9b4f8184c5e06518 100644 +index 97fb1d2110a51498f6419841081b500b3f190370..8fb8bc48342183b978b4bfb0845f2cc2af159ac2 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Phantom.java +++ b/src/main/java/net/minecraft/world/entity/monster/Phantom.java @@ -36,6 +36,8 @@ import net.minecraft.world.entity.ai.goal.Goal; @@ -18,8 +18,8 @@ index aa8734856ec7b90036afad13bfda46c02e548812..5d3c60c2e216848c7bbaebbd9b4f8184 import net.minecraft.world.level.Level; import net.minecraft.world.level.ServerLevelAccessor; import net.minecraft.world.level.levelgen.Heightmap; -@@ -245,6 +247,20 @@ public class Phantom extends FlyingMob implements Enemy { - return entitysize.scale(f); +@@ -250,6 +252,20 @@ public class Phantom extends FlyingMob implements Enemy { + return (double) this.getEyeHeight(); } + // Leaves start - renewable elytra diff --git a/patches/server/0053-Stackable-ShulkerBoxes.patch b/patches/server/0053-Stackable-ShulkerBoxes.patch index 180c1150..6bb79002 100644 --- a/patches/server/0053-Stackable-ShulkerBoxes.patch +++ b/patches/server/0053-Stackable-ShulkerBoxes.patch @@ -6,12 +6,12 @@ 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 f0ccdfbd7d7be8c6e302609accf8fe9cac8885c4..ec66584bb22f904b610137041c16c945a95fff16 100644 +index d47b3ac633e7936d30abfda6fc46c2c7412d76fe..0aac54b25a0d42dc8eac1618d57c678a34f8da1d 100644 --- a/src/main/java/net/minecraft/world/entity/item/ItemEntity.java +++ b/src/main/java/net/minecraft/world/entity/item/ItemEntity.java -@@ -10,10 +10,12 @@ import net.minecraft.world.entity.Entity; - import net.minecraft.world.entity.EntityType; +@@ -15,10 +15,12 @@ import net.minecraft.world.entity.EntityType; import net.minecraft.world.entity.MoverType; + import net.minecraft.world.entity.TraceableEntity; import net.minecraft.world.entity.player.Player; +import net.minecraft.world.item.BlockItem; import net.minecraft.world.item.Item; @@ -21,16 +21,16 @@ index f0ccdfbd7d7be8c6e302609accf8fe9cac8885c4..ec66584bb22f904b610137041c16c945 +import net.minecraft.world.level.block.ShulkerBoxBlock; import net.minecraft.world.level.gameevent.GameEvent; import net.minecraft.world.phys.Vec3; - import net.minecraft.Util; -@@ -31,6 +33,7 @@ import net.minecraft.stats.Stats; - import net.minecraft.tags.FluidTags; - import net.minecraft.tags.ItemTags; - import net.minecraft.util.Mth; + import net.minecraft.core.BlockPos; +@@ -32,6 +34,7 @@ import net.minecraft.server.MinecraftServer; + import net.minecraft.server.level.ServerLevel; + import net.minecraft.sounds.SoundSource; + import net.minecraft.stats.Stats; +import org.bukkit.block.ShulkerBox; import org.bukkit.event.entity.EntityPickupItemEvent; import org.bukkit.event.player.PlayerPickupItemEvent; // CraftBukkit end -@@ -69,6 +72,13 @@ public class ItemEntity extends Entity { +@@ -70,6 +73,13 @@ public class ItemEntity extends Entity implements TraceableEntity { this.setDeltaMovement(this.random.nextDouble() * 0.2D - 0.1D, 0.2D, this.random.nextDouble() * 0.2D - 0.1D); this.setItem(stack); // Paper end @@ -44,7 +44,7 @@ index f0ccdfbd7d7be8c6e302609accf8fe9cac8885c4..ec66584bb22f904b610137041c16c945 } public ItemEntity(Level world, double x, double y, double z, ItemStack stack, double velocityX, double velocityY, double velocityZ) { -@@ -274,10 +284,49 @@ public class ItemEntity extends Entity { +@@ -283,10 +293,49 @@ public class ItemEntity extends Entity implements TraceableEntity { private boolean isMergable() { ItemStack itemstack = this.getItem(); @@ -96,10 +96,10 @@ index f0ccdfbd7d7be8c6e302609accf8fe9cac8885c4..ec66584bb22f904b610137041c16c945 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 cf89cbffabf8b88265b5ffbc42b55fe617a32c82..1a9dc4afaf7dbcaf8cc46f8bdf4fa1cf7bb9c45c 100644 +index 4a89ce4fbd8b19ce1cff5905d779d2e4c63e89c4..6a26f3f9ad821688564380f1a9d3a086531364b9 100644 --- a/src/main/java/net/minecraft/world/entity/player/Inventory.java +++ b/src/main/java/net/minecraft/world/entity/player/Inventory.java -@@ -113,7 +113,7 @@ public class Inventory implements Container, Nameable { +@@ -114,7 +114,7 @@ public class Inventory implements Container, Nameable { } private boolean hasRemainingSpaceForItem(ItemStack existingStack, ItemStack stack) { @@ -108,7 +108,7 @@ index cf89cbffabf8b88265b5ffbc42b55fe617a32c82..1a9dc4afaf7dbcaf8cc46f8bdf4fa1cf } // CraftBukkit start - Watch method above! :D -@@ -282,9 +282,11 @@ public class Inventory implements Container, Nameable { +@@ -283,9 +283,11 @@ public class Inventory implements Container, Nameable { int k = j; @@ -122,7 +122,7 @@ index cf89cbffabf8b88265b5ffbc42b55fe617a32c82..1a9dc4afaf7dbcaf8cc46f8bdf4fa1cf if (k > this.getMaxStackSize() - itemstack1.getCount()) { k = this.getMaxStackSize() - itemstack1.getCount(); -@@ -403,7 +405,7 @@ public class Inventory implements Container, Nameable { +@@ -404,7 +406,7 @@ public class Inventory implements Container, Nameable { } if (i != -1) { @@ -132,7 +132,7 @@ index cf89cbffabf8b88265b5ffbc42b55fe617a32c82..1a9dc4afaf7dbcaf8cc46f8bdf4fa1cf 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 4226e20dc91087f31c44e0ea7d0e8d06ec6facc8..b84367de01803ea9d2ac043c31d74ce13994e9d7 100644 +index 4b0bdf8705eadd2ca6c0fd5a3494fd8742330ef6..2d9f35622be9a9e5f0cce8d18e6e5bb7bed1ab5c 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; @@ -156,7 +156,7 @@ index 4226e20dc91087f31c44e0ea7d0e8d06ec6facc8..b84367de01803ea9d2ac043c31d74ce1 if (itemstack3.getCount() > k1) { itemstack3.setCount(k1); @@ -575,7 +577,7 @@ public abstract class AbstractContainerMenu { - slot.set(itemstack4); + slot.setByPlayer(itemstack4); } } else if (ItemStack.isSameItemSameTags(itemstack, itemstack4)) { - Optional optional1 = slot.tryRemove(itemstack.getCount(), itemstack4.getMaxStackSize() - itemstack4.getCount(), player); @@ -224,10 +224,10 @@ index 4226e20dc91087f31c44e0ea7d0e8d06ec6facc8..b84367de01803ea9d2ac043c31d74ce1 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 52d555af415277d8d1f30d8b46855d4b05867597..68ff98bb2f44d8681cdb9d6465a8a1e715ca92c2 100644 +index 75d71b0b8a1f5b0712b76e52c8afded103f16b7b..dff796f3db78c89c82ea845ebdceaffce07139c1 100644 --- a/src/main/java/net/minecraft/world/inventory/Slot.java +++ b/src/main/java/net/minecraft/world/inventory/Slot.java -@@ -74,7 +74,7 @@ public class Slot { +@@ -73,7 +73,7 @@ public class Slot { } public int getMaxStackSize(ItemStack stack) { diff --git a/patches/server/0055-MC-Technical-Survival-Mode.patch b/patches/server/0055-MC-Technical-Survival-Mode.patch index 50c2dcff..49d4e035 100644 --- a/patches/server/0055-MC-Technical-Survival-Mode.patch +++ b/patches/server/0055-MC-Technical-Survival-Mode.patch @@ -18,10 +18,10 @@ index 9fde9ccb5d069ddce8dd837ef1bc68b93ce66434..0ceddb0ede644e082f82de6ecfa89eda 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 500500468c12d1d44ea6b83a9176b470a954f59a..1da1c130611f392ba957e0c893123f564d13dbff 100644 +index 64f17b4a22454b59968787089253eaba0a04c1f2..ac8d581041ba6491ec52984ac0ea761f04d3eda8 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 -@@ -66,7 +66,7 @@ public class EndCrystal extends Entity { +@@ -67,7 +67,7 @@ public class EndCrystal extends Entity { // CraftBukkit end } // Paper start - Fix invulnerable end crystals @@ -31,10 +31,10 @@ index 500500468c12d1d44ea6b83a9176b470a954f59a..1da1c130611f392ba957e0c893123f56 || ((ServerLevel) this.level).dragonFight() == null || ((ServerLevel) this.level).dragonFight().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 bedee2c93bd0aff148f93dcf111e0fc3d9bce4a0..92aa71991c5dec8792ae8efa2502c2279c0f2bb6 100644 +index dfdf7e7fc1070975ec18fd215c724f4fc84d3705..d62c8e53194165d3150e18ae4e4e25c7eefb0a74 100644 --- a/src/main/java/net/minecraft/world/entity/item/PrimedTnt.java +++ b/src/main/java/net/minecraft/world/entity/item/PrimedTnt.java -@@ -59,7 +59,7 @@ public class PrimedTnt extends Entity { +@@ -60,7 +60,7 @@ public class PrimedTnt extends Entity implements TraceableEntity { @Override public void tick() { @@ -44,10 +44,10 @@ index bedee2c93bd0aff148f93dcf111e0fc3d9bce4a0..92aa71991c5dec8792ae8efa2502c227 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 18eac340386a396c9850f53f30d20a41c1437788..f80ad07e5cdc937b0afbfc7d084f314eb8effde8 100644 +index 6023b9eb3001e1a98ab8b970d853c4e7c7603f4d..09d05cb9c59c73bc13c2c36f02fd18bd51caccd9 100644 --- a/src/main/java/net/minecraft/world/entity/npc/Villager.java +++ b/src/main/java/net/minecraft/world/entity/npc/Villager.java -@@ -989,7 +989,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler +@@ -1001,7 +1001,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 @@ -57,7 +57,7 @@ index 18eac340386a396c9850f53f30d20a41c1437788..f80ad07e5cdc937b0afbfc7d084f314e 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 612d536f8a1b4e45d7431dc8bbd1c7aa631a3575..9e021b4b25df941b4af1fb984ad123a3211cbbe8 100644 +index 7a3bd3e7aa208ade1d33f59ba684354d000dd011..164dd501456542c16e2e36262ba560f9b9f44cc8 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 { diff --git a/patches/server/0056-Return-nether-portal-fix.patch b/patches/server/0056-Return-nether-portal-fix.patch index 42eb33ae..ebc73eba 100644 --- a/patches/server/0056-Return-nether-portal-fix.patch +++ b/patches/server/0056-Return-nether-portal-fix.patch @@ -6,10 +6,10 @@ 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 128a79504e2459826dbc32b5889f66bf00ea4189..0f13a91c9614bd8381cc5db60fb8f2ad8b7d191c 100644 +index 86c4c4b866bd8378a628daebd51b80713246f223..b9ac3537afde153f7268362c6360c6e7576e05d2 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java -@@ -177,6 +177,7 @@ import org.bukkit.event.player.PlayerTeleportEvent; +@@ -183,6 +183,7 @@ import org.bukkit.event.player.PlayerTeleportEvent; import org.bukkit.event.player.PlayerTeleportEvent.TeleportCause; import org.bukkit.inventory.MainHand; import top.leavesmc.leaves.bot.ServerBot; @@ -17,7 +17,7 @@ index 128a79504e2459826dbc32b5889f66bf00ea4189..0f13a91c9614bd8381cc5db60fb8f2ad // CraftBukkit end public class ServerPlayer extends Player { -@@ -1226,6 +1227,24 @@ public class ServerPlayer extends Player { +@@ -1238,6 +1239,24 @@ public class ServerPlayer extends Player { PlayerChangedWorldEvent changeEvent = new PlayerChangedWorldEvent(this.getBukkitEntity(), worldserver1.getWorld()); this.level.getCraftServer().getPluginManager().callEvent(changeEvent); // CraftBukkit end @@ -42,7 +42,7 @@ index 128a79504e2459826dbc32b5889f66bf00ea4189..0f13a91c9614bd8381cc5db60fb8f2ad } // Paper start if (this.isBlocking()) { -@@ -1278,6 +1297,30 @@ public class ServerPlayer extends Player { +@@ -1290,6 +1309,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 128a79504e2459826dbc32b5889f66bf00ea4189..0f13a91c9614bd8381cc5db60fb8f2ad 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 aaa48a93550b6ad7bf5c904491e5d34d4b7dcceb..6c2a0393147b14f155401d5298ca183c252c169e 100644 +index 6803f21f43da5a5254622d61eba4ab8ddbe25344..93ef11d92952c7d58410c5d9737900d464dddf84 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; @@ -86,7 +86,7 @@ index aaa48a93550b6ad7bf5c904491e5d34d4b7dcceb..6c2a0393147b14f155401d5298ca183c import net.minecraft.ChatFormatting; import net.minecraft.FileUtil; import net.minecraft.commands.CommandSourceStack; -@@ -125,6 +127,7 @@ import org.bukkit.event.player.PlayerJoinEvent; +@@ -126,6 +128,7 @@ import org.bukkit.event.player.PlayerJoinEvent; import org.bukkit.event.player.PlayerLoginEvent; import org.bukkit.event.player.PlayerQuitEvent; import org.bukkit.event.player.PlayerRespawnEvent; @@ -94,7 +94,7 @@ index aaa48a93550b6ad7bf5c904491e5d34d4b7dcceb..6c2a0393147b14f155401d5298ca183c // CraftBukkit end public abstract class PlayerList { -@@ -959,6 +962,24 @@ public abstract class PlayerList { +@@ -966,6 +969,24 @@ public abstract class PlayerList { if (fromWorld != location.getWorld()) { PlayerChangedWorldEvent event = new PlayerChangedWorldEvent(entityplayer.getBukkitEntity(), fromWorld); server.server.getPluginManager().callEvent(event); @@ -120,10 +120,10 @@ index aaa48a93550b6ad7bf5c904491e5d34d4b7dcceb..6c2a0393147b14f155401d5298ca183c // 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 7647b8bb3117d005dd616b29e7310f8328973b7f..eaeac639924098b86da57e2a87efc2afb9e0d439 100644 +index 454495e3e1d432553762f36c18ec290fe13425c0..fc0efe4547089f709fcbf65f8eabc1b88854fb0e 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java -@@ -245,7 +245,7 @@ public abstract class LivingEntity extends Entity { +@@ -240,7 +240,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 e26b3bba..509c41f1 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 64ac23a34285328cf79550d31c7a4bbb55138de1..9c435373df254daecba83f4bde34dfab1cbf7a38 100644 +index 5a36cebb698ff296a057abb2745c60b41c243ad7..4119b5248c7fca37a59ee81d0ce4e7a184cc0f0a 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java -@@ -1586,6 +1586,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop> $GITHUB_ENV echo "jar=$jarName" >> $GITHUB_ENV echo "info=$releaseinfo" >> $GITHUB_ENV echo "discordmes=$discordmes" >> $GITHUB_ENV +echo "pre=$preVersion" >> $GITHUB_ENV echo "$leavesid [![download](https://img.shields.io/github/downloads/LeavesMC/Leaves/$tagid/total?color=0)](https://github.com/Leaves/LeavesMC/releases/download/$tagid/$jarName)" >> $releaseinfo echo "=====" >> $releaseinfo echo "" >> $releaseinfo +if [ $preVersion = "true" ]; then + echo "> This is early, experimental build. They are only recommended for usage on test servers and should be used with caution." >> $releaseinfo + echo "> **Backups are mandatory!**" >> $releaseinfo + echo "" >> $releaseinfo +fi echo "### Commit Message" >> $releaseinfo number=$(git log --oneline master ^`git describe --tags --abbrev=0` | wc -l)