diff --git a/gradle.properties b/gradle.properties index a5b96873c..df0173c52 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,7 +1,7 @@ group = org.purpurmc.purpur version = 1.19.4-R0.1-SNAPSHOT -paperCommit = bcd8dc2c1189293c4fc0b57048f0f0668c1b7e60 +paperCommit = fa8fa1ce083521e7328dec8af97751d4bd9cebe6 org.gradle.caching = true org.gradle.parallel = true diff --git a/patches/server/0001-Pufferfish-Server-Changes.patch b/patches/server/0001-Pufferfish-Server-Changes.patch index 3ec2186e2..036041b14 100644 --- a/patches/server/0001-Pufferfish-Server-Changes.patch +++ b/patches/server/0001-Pufferfish-Server-Changes.patch @@ -3190,7 +3190,7 @@ index d190bad5d287766ed4165ed827d9901a9d878687..13594b96cc8f451723c3598ef302ccee // CraftBukkit start 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..b5e118456af6421ae3f85cb8232dc97a8b2d46b7 100644 +index 854865f28bcae0fb0c17717c914687f78e951e21..c6297917e94f5a8b4b1447b2c29c44b806ccaff6 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 { @@ -3217,7 +3217,7 @@ index 1b80a91fa36c59a31b57ef7ef4a68eacbb0f17f5..b5e118456af6421ae3f85cb8232dc97a } this.updateKnownBlockInfo(x | (z << 4) | (y << 8), iblockdata1, state); // Paper -@@ -260,6 +263,7 @@ public class LevelChunkSection { +@@ -261,6 +264,7 @@ public class LevelChunkSection { if (fluid.isRandomlyTicking()) { this.tickingFluidCount = (short) (this.tickingFluidCount + 1); } @@ -3431,7 +3431,7 @@ index ebe65474a4a05ff1637d7f37ebcfe690af59def5..42142c512b12e5b269c19f1e821c50e7 @Nullable diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -index e769f7b0904814ee63e2a73dca57e5dc33382fba..e38391da44a1b5e3b845eba2d80453021a1e0c25 100644 +index 67dbfa6b384af45837d3aa29e249fd4bf92ee8fb..f025905a7afae894401638a8842a4a44fa41d1ef 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java @@ -257,7 +257,7 @@ import javax.annotation.Nullable; // Paper diff --git a/patches/server/0005-Purpur-client-support.patch b/patches/server/0005-Purpur-client-support.patch index bff3809e5..28d277f07 100644 --- a/patches/server/0005-Purpur-client-support.patch +++ b/patches/server/0005-Purpur-client-support.patch @@ -43,10 +43,10 @@ index 9d2d72fe48b69be2f6ebe74309673a3a4e51eae4..299d43f714637beb6cdce186368c4171 try { byte[] data = new byte[packet.data.readableBytes()]; diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index 3f498543cf0476ff1b184788d93f13b70c476c16..9986b89ceabc065d96c889bf9a50a4aa093e7300 100644 +index f3e1ba16446ff569f178a4bd16d328e8c2f0e40c..7dd5879f8f4938c2742bde1e58b06f9b909fc389 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -@@ -3196,4 +3196,11 @@ public class CraftPlayer extends CraftHumanEntity implements Player { +@@ -3174,4 +3174,11 @@ public class CraftPlayer extends CraftHumanEntity implements Player { return this.spigot; } // Spigot end diff --git a/patches/server/0012-AFK-API.patch b/patches/server/0012-AFK-API.patch index e24bf2797..0b91152c1 100644 --- a/patches/server/0012-AFK-API.patch +++ b/patches/server/0012-AFK-API.patch @@ -218,7 +218,7 @@ index 3b959f42d958bf0f426853aee56753d6c455fcdb..d17abb283ea818244df0379d6b57fc63 if (range < 0.0D || d < range * range) { return true; diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index 9986b89ceabc065d96c889bf9a50a4aa093e7300..2506882191e83a3cc03666a56e63c18f7adebb68 100644 +index 7dd5879f8f4938c2742bde1e58b06f9b909fc389..3758bdbca76fe04309408ae2131ef3e7a3f82e6a 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java @@ -533,10 +533,15 @@ public class CraftPlayer extends CraftHumanEntity implements Player { @@ -238,7 +238,7 @@ index 9986b89ceabc065d96c889bf9a50a4aa093e7300..2506882191e83a3cc03666a56e63c18f for (ServerPlayer player : (List) server.getHandle().players) { if (player.getBukkitEntity().canSee(this)) { player.connection.send(new ClientboundPlayerInfoUpdatePacket(ClientboundPlayerInfoUpdatePacket.Action.UPDATE_DISPLAY_NAME, this.getHandle())); -@@ -3202,5 +3207,20 @@ public class CraftPlayer extends CraftHumanEntity implements Player { +@@ -3180,5 +3185,20 @@ public class CraftPlayer extends CraftHumanEntity implements Player { public boolean usesPurpurClient() { return getHandle().purpurClient; } diff --git a/patches/server/0013-Bring-back-server-name.patch b/patches/server/0013-Bring-back-server-name.patch index 87dcc6c66..f5bf4d787 100644 --- a/patches/server/0013-Bring-back-server-name.patch +++ b/patches/server/0013-Bring-back-server-name.patch @@ -17,10 +17,10 @@ index 818289e831e3dad29345c43265e2efd7689bc500..1ea3012995c738c67b31e997c138f824 public final boolean spawnNpcs = this.get("spawn-npcs", true); public final boolean pvp = this.get("pvp", true); diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -index 700e6af9919af1b38bb725d2f99e952df17eb31a..7421f2966b7908a673a7c2b66d9b5ced214e2eff 100644 +index 30b50785fd18610bb418992aafe5fa24ec78780d..7104df35cf3de47026ae339a5e5f0ca211c3b08c 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -@@ -2936,4 +2936,11 @@ public final class CraftServer implements Server { +@@ -2974,4 +2974,11 @@ public final class CraftServer implements Server { } // Paper end diff --git a/patches/server/0016-Lagging-threshold.patch b/patches/server/0016-Lagging-threshold.patch index 510719ec9..c8bebd4a9 100644 --- a/patches/server/0016-Lagging-threshold.patch +++ b/patches/server/0016-Lagging-threshold.patch @@ -25,10 +25,10 @@ index 57f6de7872bfa80cf7668524975946cbd7fcda56..6cdcd4f105b15f10d60499572f6f4f83 } // Spigot end diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -index 7421f2966b7908a673a7c2b66d9b5ced214e2eff..14a5f137a9f925926406ea2a6b113fef88378c2e 100644 +index 7104df35cf3de47026ae339a5e5f0ca211c3b08c..553df241cde2fb53c9b061f3fc54136d4a67a633 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -@@ -2942,5 +2942,10 @@ public final class CraftServer implements Server { +@@ -2980,5 +2980,10 @@ public final class CraftServer implements Server { public String getServerName() { return this.getProperties().serverName; } @@ -40,7 +40,7 @@ index 7421f2966b7908a673a7c2b66d9b5ced214e2eff..14a5f137a9f925926406ea2a6b113fef // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index 23c94e3872824d911d0bc25858f4ef4ebaefe36b..1c09a68b4cdc275ed85859eef678e1e6e98ae993 100644 +index c01dd22d131a0048ff1d4dd86bb48fec6965494e..96ceda25ed790d2cbc75488c46f05e44b4a876dc 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java @@ -191,6 +191,11 @@ public class PurpurConfig { diff --git a/patches/server/0018-Player-invulnerabilities.patch b/patches/server/0018-Player-invulnerabilities.patch index 305ac86ef..d248a51a0 100644 --- a/patches/server/0018-Player-invulnerabilities.patch +++ b/patches/server/0018-Player-invulnerabilities.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Player invulnerabilities diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index e16e2c7c802c387cc278542d6f013fc7441063e1..c3ce105219940d234320a415bd3050087db4778c 100644 +index 4e68585de7601f87297977c426a8f4621c8c0860..600b003551757af0a6032fa114ca26e3bbd5f461 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java @@ -278,6 +278,7 @@ public class ServerPlayer extends Player { @@ -108,7 +108,7 @@ index 24545eaad4b0867b4d14f0418a27d465461c7e1e..db737258db16ec9f61d0d601a6ea5f6b this.cserver.getPluginManager().callEvent(new PlayerResourcePackStatusEvent(this.getCraftPlayer(), packStatus)); // CraftBukkit // Paper end diff --git a/src/main/java/net/minecraft/server/players/PlayerList.java b/src/main/java/net/minecraft/server/players/PlayerList.java -index 7387bc99cd4d5172ef93364608a9ba178cc3597c..1d92befb9b9dfb5877065beeb216bdf1caefb770 100644 +index bf6d6d7a587d05f38952b22774933d9a45f8365e..e73c77cfd61cdaebf4effe302f2a25bf614d7563 100644 --- a/src/main/java/net/minecraft/server/players/PlayerList.java +++ b/src/main/java/net/minecraft/server/players/PlayerList.java @@ -969,6 +969,8 @@ public abstract class PlayerList { @@ -121,10 +121,10 @@ index 7387bc99cd4d5172ef93364608a9ba178cc3597c..1d92befb9b9dfb5877065beeb216bdf1 return entityplayer1; } diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index 2506882191e83a3cc03666a56e63c18f7adebb68..141b5428d65d7db133d59d76a214333e07620eee 100644 +index 3758bdbca76fe04309408ae2131ef3e7a3f82e6a..29b449f9b7830346004636fd7d4488f6070f16e0 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -@@ -3222,5 +3222,20 @@ public class CraftPlayer extends CraftHumanEntity implements Player { +@@ -3200,5 +3200,20 @@ public class CraftPlayer extends CraftHumanEntity implements Player { public void resetIdleTimer() { getHandle().resetLastActionTime(); } diff --git a/patches/server/0146-Sneak-to-bulk-process-composter.patch b/patches/server/0146-Sneak-to-bulk-process-composter.patch index ca1e6f437..e20437bee 100644 --- a/patches/server/0146-Sneak-to-bulk-process-composter.patch +++ b/patches/server/0146-Sneak-to-bulk-process-composter.patch @@ -18,37 +18,31 @@ index 1d33c02088c150189d7f4b0aa27f6a1de96b11cf..1a46dbb364423c889fcdf58f640b7784 if (enuminteractionresult.consumesAction()) { diff --git a/src/main/java/net/minecraft/world/level/block/ComposterBlock.java b/src/main/java/net/minecraft/world/level/block/ComposterBlock.java -index fb4382337fe83f7d00c2212a7a71e0ba5bdd51cc..f085a669e2f2645e8c4f7a7e5a3c958f13809744 100644 +index 6fab2b69a0af298bd00b309efcd6aa8399e23d1f..4f7b21caa123ea7896788fd25133d8de3ab1ccaf 100644 --- a/src/main/java/net/minecraft/world/level/block/ComposterBlock.java +++ b/src/main/java/net/minecraft/world/level/block/ComposterBlock.java -@@ -228,26 +228,28 @@ public class ComposterBlock extends Block implements WorldlyContainerHolder { +@@ -228,20 +228,28 @@ public class ComposterBlock extends Block implements WorldlyContainerHolder { ItemStack itemstack = player.getItemInHand(hand); if (i < 8 && ComposterBlock.COMPOSTABLES.containsKey(itemstack.getItem())) { - if (i < 7 && !world.isClientSide) { -- // Paper start - EntityChangeBlockEvent -- double rand = world.getRandom().nextDouble(); -- BlockState dummyBlockState = ComposterBlock.addItem(player, state, org.bukkit.craftbukkit.util.DummyGeneratorAccess.INSTANCE, pos, itemstack, rand); -- if (dummyBlockState == null) { +- BlockState iblockdata1 = ComposterBlock.addItem(player, state, world, pos, itemstack); +- // Paper start - handle cancelled events +- if (iblockdata1 == null) { - return InteractionResult.PASS; - } -- if (state != dummyBlockState && org.bukkit.craftbukkit.event.CraftEventFactory.callEntityChangeBlockEvent(player, pos, dummyBlockState).isCancelled()) { // if block state will change and event cancelled -- return InteractionResult.sidedSuccess(world.isClientSide); -- } -- BlockState iblockdata1 = ComposterBlock.addItem(player, state, world, pos, itemstack, rand); - // Paper end -- ++ // Purpur start ++ BlockState newState = process(i, state, world, itemstack, pos, player); ++ if (newState == null) { ++ return InteractionResult.PASS; ++ } + - world.levelEvent(1500, pos, state != iblockdata1 ? 1 : 0); - player.awardStat(Stats.ITEM_USED.get(itemstack.getItem())); - if (!player.getAbilities().instabuild) { - itemstack.shrink(1); - } -+ // Purpur start -+ BlockState newState = process(i, state, world, itemstack, pos, player); -+ if (newState == null) { -+ return InteractionResult.PASS; - } - + if (world.purpurConfig.composterBulkProcess && player.isShiftKeyDown() && newState != state) { + BlockState oldState; + int oldCount, newCount, oldLevel, newLevel; @@ -63,28 +57,22 @@ index fb4382337fe83f7d00c2212a7a71e0ba5bdd51cc..f085a669e2f2645e8c4f7a7e5a3c958f + newCount = itemstack.getCount(); + newLevel = newState.getValue(ComposterBlock.LEVEL); + } while (newCount > 0 && (newCount != oldCount || newLevel != oldLevel || newState != oldState)); -+ } + } + // Purpur end + return InteractionResult.sidedSuccess(world.isClientSide); } else if (i == 8) { - ComposterBlock.extractProduce(player, state, world, pos); -@@ -257,6 +259,32 @@ public class ComposterBlock extends Block implements WorldlyContainerHolder { +@@ -252,6 +260,26 @@ public class ComposterBlock extends Block implements WorldlyContainerHolder { } } -+ // Purpur start + private static BlockState process(int level, BlockState state, Level world, ItemStack itemstack, BlockPos pos, Player player) { + if (level < 7 && !world.isClientSide) { -+ // Paper start - EntityChangeBlockEvent -+ double rand = world.getRandom().nextDouble(); -+ BlockState dummyBlockState = ComposterBlock.addItem(player, state, org.bukkit.craftbukkit.util.DummyGeneratorAccess.INSTANCE, pos, itemstack, rand); -+ if (dummyBlockState == null) { -+ return dummyBlockState; ++ BlockState iblockdata1 = ComposterBlock.addItem(player, state, world, pos, itemstack); ++ // Paper start - handle cancelled events ++ if (iblockdata1 == null) { ++ return iblockdata1; + } -+ if (state != dummyBlockState && org.bukkit.craftbukkit.event.CraftEventFactory.callEntityChangeBlockEvent(player, pos, dummyBlockState).isCancelled()) { // if block state will change and event cancelled -+ return state; -+ } -+ BlockState iblockdata1 = ComposterBlock.addItem(player, state, world, pos, itemstack, rand); + // Paper end + + world.levelEvent(1500, pos, state != iblockdata1 ? 1 : 0); @@ -92,7 +80,7 @@ index fb4382337fe83f7d00c2212a7a71e0ba5bdd51cc..f085a669e2f2645e8c4f7a7e5a3c958f + if (!player.getAbilities().instabuild) { + itemstack.shrink(1); + } -+ return dummyBlockState; ++ return iblockdata1; + } + return state; + } diff --git a/patches/server/0269-Add-local-difficulty-api.patch b/patches/server/0269-Add-local-difficulty-api.patch index f05e9b2df..817e8c700 100644 --- a/patches/server/0269-Add-local-difficulty-api.patch +++ b/patches/server/0269-Add-local-difficulty-api.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add local difficulty api diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java -index 8d3a32a0538a6065fd0725721ab8a1a011c4d64a..c7bf0b4036877745d54908048f92735143c92210 100644 +index dafd2c85f89d8822e50db63c21631199c69a97a0..5fe1151f888c162abc3820617c47519f8119f7c0 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java -@@ -2249,6 +2249,12 @@ public class CraftWorld extends CraftRegionAccessor implements World { +@@ -2282,6 +2282,12 @@ public class CraftWorld extends CraftRegionAccessor implements World { return (this.getHandle().dragonFight() == null) ? null : new CraftDragonBattle(this.getHandle().dragonFight()); } diff --git a/patches/server/0279-Debug-Marker-API.patch b/patches/server/0279-Debug-Marker-API.patch index 6b8df826c..9d3eee596 100644 --- a/patches/server/0279-Debug-Marker-API.patch +++ b/patches/server/0279-Debug-Marker-API.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Debug Marker API diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -index 296b74bf4df1de9b353838f16049f7c2caf61eb2..a4f9b118bb2414ddd6a8985cdc47c37dc43432ea 100644 +index 3e0e497e0072353999165ad04e1e87572132ffc6..50da9d62ef1cdc74a3145e98a5d45885c4926744 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java @@ -1443,6 +1443,42 @@ public final class CraftServer implements Server { @@ -52,10 +52,10 @@ index 296b74bf4df1de9b353838f16049f7c2caf61eb2..a4f9b118bb2414ddd6a8985cdc47c37d @Override diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java -index c7bf0b4036877745d54908048f92735143c92210..3013aeb442799aba5b2ae45edcb3c2c72a18a740 100644 +index 5fe1151f888c162abc3820617c47519f8119f7c0..39a2ff8c34f995ab860aadc24d24136d602af646 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java -@@ -2253,6 +2253,42 @@ public class CraftWorld extends CraftRegionAccessor implements World { +@@ -2286,6 +2286,42 @@ public class CraftWorld extends CraftRegionAccessor implements World { public float getLocalDifficultyAt(Location location) { return getHandle().getCurrentDifficultyAt(io.papermc.paper.util.MCUtil.toBlockPosition(location)).getEffectiveDifficulty(); } @@ -99,10 +99,10 @@ index c7bf0b4036877745d54908048f92735143c92210..3013aeb442799aba5b2ae45edcb3c2c7 @Override diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index 303d1fb7918540ac4324d9d01a6beb70fc37ca5a..a9d0ca15a53fbf227fe3a59406d26c82b5b59396 100644 +index 9f1cbd4d74b7081ad47a30c109fee5990e70dfcf..bd772d34c621b450fdcf99ac19f00cd57e57629d 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -@@ -3263,5 +3263,48 @@ public class CraftPlayer extends CraftHumanEntity implements Player { +@@ -3241,5 +3241,48 @@ public class CraftPlayer extends CraftHumanEntity implements Player { public void setSpawnInvulnerableTicks(int spawnInvulnerableTime) { getHandle().spawnInvulnerableTime = spawnInvulnerableTime; } diff --git a/patches/server/0283-Add-death-screen-API.patch b/patches/server/0283-Add-death-screen-API.patch index 8b703defa..82df88457 100644 --- a/patches/server/0283-Add-death-screen-API.patch +++ b/patches/server/0283-Add-death-screen-API.patch @@ -30,10 +30,10 @@ index 53b75f5737a910ffc5448cd9a85eae57f9c1488f..ea95873dd034779e56a8b924cd27f937 } diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index a9d0ca15a53fbf227fe3a59406d26c82b5b59396..f4a341f72d727bbffa4cfcf72eda8ed0c8945c9e 100644 +index bd772d34c621b450fdcf99ac19f00cd57e57629d..3c31701795b25b16dafe53292e9561dd0bfbe2b5 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -@@ -3306,5 +3306,18 @@ public class CraftPlayer extends CraftHumanEntity implements Player { +@@ -3284,5 +3284,18 @@ public class CraftPlayer extends CraftHumanEntity implements Player { if (this.getHandle().connection == null) return; this.getHandle().connection.send(new net.minecraft.network.protocol.game.ClientboundCustomPayloadPacket(ClientboundCustomPayloadPacket.DEBUG_GAME_TEST_CLEAR, new FriendlyByteBuf(io.netty.buffer.Unpooled.buffer()))); }