Skip to content
This repository was archived by the owner on Apr 13, 2025. It is now read-only.

Commit b0d36ca

Browse files
committed
Updated Upstream (Paper)
Upstream has released updates that appear to apply and compile correctly Paper Changes: PaperMC/Paper@9b9de827 Update Alternate Current patch to v1.9.1 (#12115) PaperMC/Paper@c62252e1 Add lore content guard (#12116) PaperMC/Paper@40416784 [ci/skip] Mention missing World#regenerateChunk implementation in jd (#12109) PaperMC/Paper@a6e82d90 [ci/skip] Clarify getChunkAtAsyncUrgently javadocs (#12125) PaperMC/Paper@cb25c0cf [ci/skip] Fix annotation fields used in NMS getBukkitEntity (#12120) PaperMC/Paper@00701267 [ci/skip] improvement example in javadoc for DatapackRegistrar (#12122) PaperMC/Paper@608f004a add method on ItemStack to edit pdc (#12022) PaperMC/Paper@7bee9971 Cleanup damage source a bit (#12106) PaperMC/Paper@b9023b5d Add EntityAttemptSmashAttackEvent (#12113) PaperMC/Paper@a3781ff3 Separate tick count to ensure vanilla parity (#12077) PaperMC/Paper@2a4a1154 Add EntityEquipmentChangedEvent (#12011) PaperMC/Paper@06f96dd6 Improvement in /plugins command (#12121) PaperMC/Paper@28d07dc5 use correct spigot plugin count PaperMC/Paper@60394c5b Fix PlayerReadyArrowEvent cancellation desync (#12111) PaperMC/Paper@b27e11cc Fix bad world to chunk coordinate example in javadocs (#12131) PaperMC/Paper@88cdd220 Fixup luck and random implementation in CB loot-tables (#11926) PaperMC/Paper@84609dc0 Don't auto-create any brig redirects (#11954) PaperMC/Paper@8eb8e44a Allow For Default Titles in InventoryView Builders (#12013)
1 parent 22bd418 commit b0d36ca

27 files changed

Lines changed: 144 additions & 153 deletions

gradle.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ group = org.purpurmc.purpur
22
version = 1.21.4-R0.1-SNAPSHOT
33

44
mcVersion = 1.21.4
5-
paperCommit = 6cfa2f7f315cbad23d7b12984b751f2721b496b6
5+
paperCommit = 8eb8e44ac32a99f53da7af50e800ac8831030580
66

77
org.gradle.configuration-cache = true
88
org.gradle.caching = true

purpur-api/paper-patches/files/src/main/java/org/bukkit/World.java.patch

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
--- a/src/main/java/org/bukkit/World.java
22
+++ b/src/main/java/org/bukkit/World.java
3-
@@ -4255,6 +_,86 @@
3+
@@ -4278,6 +_,86 @@
44
@Nullable
55
public DragonBattle getEnderDragonBattle();
66

purpur-api/paper-patches/files/src/main/java/org/bukkit/inventory/ItemStack.java.patch

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
--- a/src/main/java/org/bukkit/inventory/ItemStack.java
22
+++ b/src/main/java/org/bukkit/inventory/ItemStack.java
33
@@ -21,6 +_,13 @@
4-
import org.bukkit.material.MaterialData;
4+
import org.bukkit.persistence.PersistentDataContainer;
55
import org.jetbrains.annotations.NotNull;
66
import org.jetbrains.annotations.Nullable;
77
+// Purpur start - ItemStack convenience methods
@@ -14,7 +14,7 @@
1414

1515
/**
1616
* Represents a stack of items.
17-
@@ -1329,4 +_,482 @@
17+
@@ -1345,4 +_,482 @@
1818
return this.craftDelegate.matchesWithoutData(item, excludeTypes, ignoreCount);
1919
}
2020
// Paper end - data component API

purpur-server/minecraft-patches/features/0001-Ridables.patch

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ index 121b57c7f5345f5d8884eaa1d36dac79fb7d42ef..9afbfe9bf493e09ca1963e8956ab7573
3030
/* Drop global time updates
3131
if (this.tickCount % 20 == 0) {
3232
diff --git a/net/minecraft/server/level/ServerLevel.java b/net/minecraft/server/level/ServerLevel.java
33-
index 5cf2c7f8fb05a91ed17f1d9c07f7d3e748738058..3770dc90d9412c6378c0bd57a651b9c3e62b9a72 100644
33+
index 412472b3f6d27ca65759f8422e17b536912e3a99..59d03ddc42d53e2b825abe0cf2ab24e85d586a19 100644
3434
--- a/net/minecraft/server/level/ServerLevel.java
3535
+++ b/net/minecraft/server/level/ServerLevel.java
3636
@@ -217,6 +217,7 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe
@@ -62,7 +62,7 @@ index a6f771cbee878eb383b67c61fa2469f2916413b5..d77381237f8a7d1b2f280a5032f5e1c8
6262

6363
private void updatePlayerAttributes() {
6464
diff --git a/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/net/minecraft/server/network/ServerGamePacketListenerImpl.java
65-
index d681e14d33a8de6ca2c7f0a2e1ff9bb9d55adbbb..ee002c2cef9d4810fdacac71de77e948f5b0e89d 100644
65+
index e5ffb15ac5faa0e863af624091dcd35ffa4ffe94..b45b37fcdfe0d3877b368444f8f6a376d6373f59 100644
6666
--- a/net/minecraft/server/network/ServerGamePacketListenerImpl.java
6767
+++ b/net/minecraft/server/network/ServerGamePacketListenerImpl.java
6868
@@ -2835,6 +2835,8 @@ public class ServerGamePacketListenerImpl
@@ -75,10 +75,10 @@ index d681e14d33a8de6ca2c7f0a2e1ff9bb9d55adbbb..ee002c2cef9d4810fdacac71de77e948
7575
if ((target instanceof Bucketable && target instanceof LivingEntity && origItem != null && origItem.asItem() == Items.WATER_BUCKET) && (event.isCancelled() || ServerGamePacketListenerImpl.this.player.getInventory().getSelected() == null || ServerGamePacketListenerImpl.this.player.getInventory().getSelected().getItem() != origItem)) {
7676
target.resendPossiblyDesyncedEntityData(ServerGamePacketListenerImpl.this.player); // Paper - The entire mob gets deleted, so resend it
7777
diff --git a/net/minecraft/world/entity/Entity.java b/net/minecraft/world/entity/Entity.java
78-
index 43a4427a8f327fbb224cb25e63a5c6b244eb9b09..62a38ecedbd579b32a8fd9cff5a433bfe635fc62 100644
78+
index ff2e8a40035c8e268733f87c17566b28d5baa22a..f02723a017d2c21c425fb11d2814052185960b97 100644
7979
--- a/net/minecraft/world/entity/Entity.java
8080
+++ b/net/minecraft/world/entity/Entity.java
81-
@@ -3151,6 +3151,13 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
81+
@@ -3152,6 +3152,13 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
8282
this.passengers = ImmutableList.copyOf(list);
8383
}
8484

@@ -92,7 +92,7 @@ index 43a4427a8f327fbb224cb25e63a5c6b244eb9b09..62a38ecedbd579b32a8fd9cff5a433bf
9292
this.gameEvent(GameEvent.ENTITY_MOUNT, passenger);
9393
}
9494
}
95-
@@ -3192,6 +3199,14 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
95+
@@ -3193,6 +3200,14 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
9696
return false;
9797
}
9898
// CraftBukkit end
@@ -107,7 +107,7 @@ index 43a4427a8f327fbb224cb25e63a5c6b244eb9b09..62a38ecedbd579b32a8fd9cff5a433bf
107107
if (this.passengers.size() == 1 && this.passengers.get(0) == passenger) {
108108
this.passengers = ImmutableList.of();
109109
} else {
110-
@@ -5115,4 +5130,44 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
110+
@@ -5116,4 +5131,44 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
111111
return ((ServerLevel) this.level).isPositionEntityTicking(this.blockPosition());
112112
}
113113
// Paper end - Expose entity id counter
@@ -177,7 +177,7 @@ index 95d78dcdb6777df73898694367ee17b1cb76d7a2..d0313fd5368baa53ec511c8c07fc78a1
177177
protected ParticleOptions getInkParticle() {
178178
return ParticleTypes.GLOW_SQUID_INK;
179179
diff --git a/net/minecraft/world/entity/LivingEntity.java b/net/minecraft/world/entity/LivingEntity.java
180-
index f41d5ffe83e3cfb4c30d150f8b66f8f2568ae20c..8c2bdb1775f7c4110c5f967b1052eba6a8fcbbfa 100644
180+
index c370bc7fa01e13bcd4a0be83dc5387367d2bf28d..98abba1edeb43f026795db6da10517f9561137db 100644
181181
--- a/net/minecraft/world/entity/LivingEntity.java
182182
+++ b/net/minecraft/world/entity/LivingEntity.java
183183
@@ -250,9 +250,9 @@ public abstract class LivingEntity extends Entity implements Attackable {
@@ -210,7 +210,7 @@ index f41d5ffe83e3cfb4c30d150f8b66f8f2568ae20c..8c2bdb1775f7c4110c5f967b1052eba6
210210

211211
@Override
212212
protected void checkFallDamage(double y, boolean onGround, BlockState state, BlockPos pos) {
213-
@@ -3537,8 +3538,10 @@ public abstract class LivingEntity extends Entity implements Attackable {
213+
@@ -3555,8 +3556,10 @@ public abstract class LivingEntity extends Entity implements Attackable {
214214
this.pushEntities();
215215
profilerFiller.pop();
216216
// Paper start - Add EntityMoveEvent
@@ -223,7 +223,7 @@ index f41d5ffe83e3cfb4c30d150f8b66f8f2568ae20c..8c2bdb1775f7c4110c5f967b1052eba6
223223
Location from = new Location(this.level().getWorld(), this.xo, this.yo, this.zo, this.yRotO, this.xRotO);
224224
Location to = new Location(this.level().getWorld(), this.getX(), this.getY(), this.getZ(), this.getYRot(), this.getXRot());
225225
io.papermc.paper.event.entity.EntityMoveEvent event = new io.papermc.paper.event.entity.EntityMoveEvent(this.getBukkitLivingEntity(), from, to.clone());
226-
@@ -3548,6 +3551,21 @@ public abstract class LivingEntity extends Entity implements Attackable {
226+
@@ -3566,6 +3569,21 @@ public abstract class LivingEntity extends Entity implements Attackable {
227227
this.absMoveTo(event.getTo().getX(), event.getTo().getY(), event.getTo().getZ(), event.getTo().getYaw(), event.getTo().getPitch());
228228
}
229229
}
@@ -568,7 +568,7 @@ index c0997c8c0f8ee4474d3acdd5938b1879c4e589a2..28ae152125ed83d8917674b6068f227f
568568
double d = this.wantedX - this.fish.getX();
569569
double d1 = this.wantedY - this.fish.getY();
570570
diff --git a/net/minecraft/world/entity/animal/Bee.java b/net/minecraft/world/entity/animal/Bee.java
571-
index 3793570827eb6ca21c6b990d76c679c00ad100f4..af0cf64b4c74d290dec8032f8a6127867e301130 100644
571+
index 646bdd1c5d5a8b6459ee8b94e887d3d19442ea05..1c27e44ca6744150e8a107a00bb00fb4784acf3b 100644
572572
--- a/net/minecraft/world/entity/animal/Bee.java
573573
+++ b/net/minecraft/world/entity/animal/Bee.java
574574
@@ -145,6 +145,7 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal {
@@ -966,7 +966,7 @@ index 8be0dd148d88dfdfb9efab91124c829e60b5dea5..35bce598bb5857356823594d2a001006
966966
this.setAirSupply(this.getMaxAirSupply());
967967
} else {
968968
diff --git a/net/minecraft/world/entity/animal/Fox.java b/net/minecraft/world/entity/animal/Fox.java
969-
index ddc252c76cedec0a0e9e268d8a874015a5ad52fe..8b0a813f9dd001c6dd108ba7aac04d134a20fbc1 100644
969+
index 2455324b49e28c57e1b154fd6d9a4d82ee289234..d31ffaba61098568c3134d0a10e1513b10dc8728 100644
970970
--- a/net/minecraft/world/entity/animal/Fox.java
971971
+++ b/net/minecraft/world/entity/animal/Fox.java
972972
@@ -129,6 +129,44 @@ public class Fox extends Animal implements VariantHolder<Fox.Variant> {
@@ -1701,7 +1701,7 @@ index e686c500e4b5f3e7b0e808af8b2e43ddbd163bef..c27bb9e8a4a5e8fdc8ae28dae8203859
17011701
this.goalSelector.addGoal(2, new BreedGoal(this, 1.0));
17021702
this.goalSelector.addGoal(3, new TemptGoal(this, 1.1, stack -> stack.is(ItemTags.SHEEP_FOOD), false));
17031703
diff --git a/net/minecraft/world/entity/animal/SnowGolem.java b/net/minecraft/world/entity/animal/SnowGolem.java
1704-
index 29427515b648b84248f486c156c5cd7a0995ba14..52de92b118b613217b8f92ff672c01ddf798a1fc 100644
1704+
index a26d57a16d06adb7fbf7abf1baeda2ab1824853d..6a4a43b86d4b3812bba7b7d8bdb95eb06d234355 100644
17051705
--- a/net/minecraft/world/entity/animal/SnowGolem.java
17061706
+++ b/net/minecraft/world/entity/animal/SnowGolem.java
17071707
@@ -61,12 +61,31 @@ public class SnowGolem extends AbstractGolem implements Shearable, RangedAttackM
@@ -1861,7 +1861,7 @@ index fa5f7f7d54083f9ea2095dd44362069d00e0b9a5..1e31a39b276e1c5ae767da7af0b53600
18611861
return "entity.minecraft.tropical_fish.predefined." + variantId;
18621862
}
18631863
diff --git a/net/minecraft/world/entity/animal/Turtle.java b/net/minecraft/world/entity/animal/Turtle.java
1864-
index 354ec2b987882d8f40ef4ac5257183d2fda73bb8..98cb91574c8d2bdb6d180256f657ecc67987a6fe 100644
1864+
index 0e2d2dd3f2ef2783f3773a9a05c4f718991f7784..cf8daa9897b978ffb89e01d63257a9ea35dcc8a4 100644
18651865
--- a/net/minecraft/world/entity/animal/Turtle.java
18661866
+++ b/net/minecraft/world/entity/animal/Turtle.java
18671867
@@ -84,6 +84,23 @@ public class Turtle extends Animal {
@@ -4377,7 +4377,7 @@ index ce690b564ea8ee055823928169fe605893498f3d..78671f02ef28f4a3b796b357d21fb4c9
43774377
if (isFood && !this.isSilent()) {
43784378
this.level()
43794379
diff --git a/net/minecraft/world/entity/monster/Vex.java b/net/minecraft/world/entity/monster/Vex.java
4380-
index 7f1cdea810db24182f8f87076c42a19b1b43e98a..26528bc9a9cffb68f82917a3e70900cfb65304d7 100644
4380+
index af3fef70998cff4e4832adfa2071832324ebd91c..f5d3b8e3a84ffb2fe1c0620edd8857362cf696f5 100644
43814381
--- a/net/minecraft/world/entity/monster/Vex.java
43824382
+++ b/net/minecraft/world/entity/monster/Vex.java
43834383
@@ -58,6 +58,50 @@ public class Vex extends Monster implements TraceableEntity {
@@ -5047,7 +5047,7 @@ index fab309dc34eb88f2b9c844078f167885121675c1..0f8ec3abead11c46205cd21290c65ec2
50475047
if (this.level().purpurConfig.wanderingTraderAllowTrading) { // Purpur - Add config for villager trading
50485048
this.setTradingPlayer(player);
50495049
diff --git a/net/minecraft/world/entity/player/Player.java b/net/minecraft/world/entity/player/Player.java
5050-
index 3ca4dd7fdb3b8205d72593c13a0fe76e86f76095..ca998a8a480af63d4a5f58a1f4490528a7b33c69 100644
5050+
index 87aabf903e64a9ab241917967616cf78938658f4..d972774332836c91a2cc31bfd89a21889cb9954b 100644
50515051
--- a/net/minecraft/world/entity/player/Player.java
50525052
+++ b/net/minecraft/world/entity/player/Player.java
50535053
@@ -220,6 +220,19 @@ public abstract class Player extends LivingEntity {
@@ -5088,7 +5088,7 @@ index 4880db97135d54fa72f64c108b2bd4ded096438b..bc102b049047d6e2a1d29e10f92cdf5a
50885088
protected double getDefaultGravity() {
50895089
return 0.06;
50905090
diff --git a/net/minecraft/world/entity/projectile/WitherSkull.java b/net/minecraft/world/entity/projectile/WitherSkull.java
5091-
index c7a76d45b5749cf054607808610eb710493f80ea..9af37bd40649f602d700fc7b683c646ae9189eb9 100644
5091+
index 70a6f4f8aaebf4e3fc40676480a9e8cbb115c107..a0b909c745ea60cae73def06f9d947345911c5e4 100644
50925092
--- a/net/minecraft/world/entity/projectile/WitherSkull.java
50935093
+++ b/net/minecraft/world/entity/projectile/WitherSkull.java
50945094
@@ -110,6 +110,14 @@ public class WitherSkull extends AbstractHurtingProjectile {

purpur-server/minecraft-patches/features/0009-Implement-elytra-settings.patch

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,10 @@ Subject: [PATCH] Implement elytra settings
55

66

77
diff --git a/net/minecraft/world/entity/LivingEntity.java b/net/minecraft/world/entity/LivingEntity.java
8-
index d1f7da0f4adc4609247c349d7ccdb0e6bba9b8f8..6de5f527c018201d874e06a45c9509fa12125766 100644
8+
index 893a1448bca5e06a7ebb42eed20899dbe0732006..4388a1e3d409a55cffd66fc32cae8753c39dd064 100644
99
--- a/net/minecraft/world/entity/LivingEntity.java
1010
+++ b/net/minecraft/world/entity/LivingEntity.java
11-
@@ -3595,7 +3595,18 @@ public abstract class LivingEntity extends Entity implements Attackable {
11+
@@ -3613,7 +3613,18 @@ public abstract class LivingEntity extends Entity implements Attackable {
1212
if (i1 % 2 == 0) {
1313
List<EquipmentSlot> list = EquipmentSlot.VALUES.stream().filter(slot -> canGlideUsing(this.getItemBySlot(slot), slot)).toList();
1414
EquipmentSlot equipmentSlot = Util.getRandom(list, this.random);

purpur-server/minecraft-patches/features/0016-Add-mobGriefing-bypass-to-everything-affected.patch

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ Subject: [PATCH] Add mobGriefing bypass to everything affected
55

66

77
diff --git a/net/minecraft/world/entity/LivingEntity.java b/net/minecraft/world/entity/LivingEntity.java
8-
index 6de5f527c018201d874e06a45c9509fa12125766..2dc588e2d503c16ccd2589ce18abd2ecebbc8e74 100644
8+
index 4388a1e3d409a55cffd66fc32cae8753c39dd064..611732d56e5bb71973cb33a41507f61195c4cd2d 100644
99
--- a/net/minecraft/world/entity/LivingEntity.java
1010
+++ b/net/minecraft/world/entity/LivingEntity.java
1111
@@ -1818,7 +1818,7 @@ public abstract class LivingEntity extends Entity implements Attackable {
@@ -92,7 +92,7 @@ index 579ca031d461ed4327fe4fb45c5289565322e64e..95fa516910a3834bbd4db6d11279e13a
9292
} else if (this.nextStartTick > 0) {
9393
this.nextStartTick--;
9494
diff --git a/net/minecraft/world/entity/animal/Fox.java b/net/minecraft/world/entity/animal/Fox.java
95-
index 1acf9b8c9e6a5915b3f095e83d3f209708947093..3d94d5c9ecab0fe7332daf4cdac879385159eaa1 100644
95+
index 7bc31391b0bd696ce73223d639a96278994010ca..950bf1c834111e00a3f3eda1390da7ede177ae15 100644
9696
--- a/net/minecraft/world/entity/animal/Fox.java
9797
+++ b/net/minecraft/world/entity/animal/Fox.java
9898
@@ -1038,7 +1038,7 @@ public class Fox extends Animal implements VariantHolder<Fox.Variant> {
@@ -118,11 +118,11 @@ index bbdd06002b07699fffebdf6ed8148abdb69c24cc..7379def14f3f700fb8a746dc89d89e24
118118
}
119119

120120
diff --git a/net/minecraft/world/entity/animal/SnowGolem.java b/net/minecraft/world/entity/animal/SnowGolem.java
121-
index d97a297db3bec0c86c6a82ef1c353015df2115f7..6ee73b798ab306f7c828c9f06ca5b1a96bd96139 100644
121+
index 495284016f0141d34fcda3c1a1799233a5f708cf..0faa2d786a1162f125c531d93a5d1f215f310dfe 100644
122122
--- a/net/minecraft/world/entity/animal/SnowGolem.java
123123
+++ b/net/minecraft/world/entity/animal/SnowGolem.java
124124
@@ -136,7 +136,7 @@ public class SnowGolem extends AbstractGolem implements Shearable, RangedAttackM
125-
this.hurtServer(serverLevel, this.damageSources().melting(), 1.0F); // CraftBukkit - DamageSources.ON_FIRE -> CraftEventFactory.MELTING
125+
this.hurtServer(serverLevel, this.damageSources().onFire().knownCause(org.bukkit.event.entity.EntityDamageEvent.DamageCause.MELTING), 1.0F); // CraftBukkit
126126
}
127127

128128
- if (!serverLevel.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING)) {

purpur-server/minecraft-patches/features/0019-API-for-any-mob-to-burn-daylight.patch

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,10 @@ Subject: [PATCH] API for any mob to burn daylight
66
Co-authored by: Encode42 <me@encode42.dev>
77

88
diff --git a/net/minecraft/world/entity/Entity.java b/net/minecraft/world/entity/Entity.java
9-
index 4037d6445216bd16c778e4080e8c836400a35d96..95178c3a1de870709ea9d15a7d00c870d2edebff 100644
9+
index f02723a017d2c21c425fb11d2814052185960b97..80f2d38449f1db1d9b6926e4552d3061cb88b4af 100644
1010
--- a/net/minecraft/world/entity/Entity.java
1111
+++ b/net/minecraft/world/entity/Entity.java
12-
@@ -530,6 +530,24 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
12+
@@ -531,6 +531,24 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
1313
}
1414
// Purpur end - Add canSaveToDisk to Entity
1515

@@ -35,7 +35,7 @@ index 4037d6445216bd16c778e4080e8c836400a35d96..95178c3a1de870709ea9d15a7d00c870
3535
this.type = entityType;
3636
this.level = level;
3737
diff --git a/net/minecraft/world/entity/LivingEntity.java b/net/minecraft/world/entity/LivingEntity.java
38-
index 2dc588e2d503c16ccd2589ce18abd2ecebbc8e74..db5a2227009bc4d655fc781d5850221f36f2d112 100644
38+
index 611732d56e5bb71973cb33a41507f61195c4cd2d..b38bd29e9c3c1565abb3452ffbbaa54cd924961d 100644
3939
--- a/net/minecraft/world/entity/LivingEntity.java
4040
+++ b/net/minecraft/world/entity/LivingEntity.java
4141
@@ -301,6 +301,7 @@ public abstract class LivingEntity extends Entity implements Attackable {
@@ -67,7 +67,7 @@ index 2dc588e2d503c16ccd2589ce18abd2ecebbc8e74..db5a2227009bc4d655fc781d5850221f
6767
}
6868

6969
// CraftBukkit start
70-
@@ -3574,6 +3582,32 @@ public abstract class LivingEntity extends Entity implements Attackable {
70+
@@ -3592,6 +3600,32 @@ public abstract class LivingEntity extends Entity implements Attackable {
7171
if (this.level() instanceof ServerLevel serverLevel && this.isSensitiveToWater() && this.isInWaterRainOrBubble()) {
7272
this.hurtServer(serverLevel, this.damageSources().drown(), 1.0F);
7373
}

purpur-server/minecraft-patches/sources/net/minecraft/commands/Commands.java.patch

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,15 +26,15 @@
2626
}
2727

2828
if (selection.includeIntegrated) {
29-
@@ -488,6 +_,7 @@
29+
@@ -482,6 +_,7 @@
3030
private void runSync(ServerPlayer player, java.util.Collection<String> bukkit, RootCommandNode<SharedSuggestionProvider> rootCommandNode) {
3131
// Paper end - Perf: Async command map building
3232
new com.destroystokyo.paper.event.brigadier.AsyncPlayerSendCommandsEvent<CommandSourceStack>(player.getBukkitEntity(), (RootCommandNode) rootCommandNode, true).callEvent(); // Paper - Brigadier API
3333
+ if (org.bukkit.event.player.PlayerCommandSendEvent.getHandlerList().getRegisteredListeners().length > 0) { // Purpur - Skip events if there's no listeners
3434
org.bukkit.event.player.PlayerCommandSendEvent event = new org.bukkit.event.player.PlayerCommandSendEvent(player.getBukkitEntity(), new java.util.LinkedHashSet<>(bukkit));
3535
event.getPlayer().getServer().getPluginManager().callEvent(event);
3636

37-
@@ -498,6 +_,7 @@
37+
@@ -492,6 +_,7 @@
3838
}
3939
}
4040
// CraftBukkit end

purpur-server/minecraft-patches/sources/net/minecraft/server/level/ServerLevel.java.patch

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -161,7 +161,7 @@
161161
this.serverLevelData.setThundering(false, org.bukkit.event.weather.ThunderChangeEvent.Cause.SLEEP); // Paper - Add cause to Weather/ThunderChangeEvents
162162
// CraftBukkit start
163163
// If we stop due to everyone sleeping we should reset the weather duration to some other random value.
164-
@@ -2676,7 +_,7 @@
164+
@@ -2678,7 +_,7 @@
165165
// Spigot start
166166
if (entity.getBukkitEntity() instanceof org.bukkit.inventory.InventoryHolder && (!(entity instanceof ServerPlayer) || entity.getRemovalReason() != Entity.RemovalReason.KILLED)) { // SPIGOT-6876: closeInventory clears death message
167167
// Paper start - Fix merchant inventory not closing on entity removal

0 commit comments

Comments
 (0)