diff --git a/paper-server/patches/sources/net/minecraft/world/damagesource/DamageSource.java.patch b/paper-server/patches/sources/net/minecraft/world/damagesource/DamageSource.java.patch index d530c5c2c1..1d3dfd68ee 100644 --- a/paper-server/patches/sources/net/minecraft/world/damagesource/DamageSource.java.patch +++ b/paper-server/patches/sources/net/minecraft/world/damagesource/DamageSource.java.patch @@ -1,6 +1,6 @@ --- a/net/minecraft/world/damagesource/DamageSource.java +++ b/net/minecraft/world/damagesource/DamageSource.java -@@ -20,6 +_,92 @@ +@@ -20,6 +_,97 @@ private final Entity directEntity; @Nullable private final Vec3 damageSourcePosition; @@ -60,11 +60,16 @@ + return this.fromBlockSnapshot; + } + -+ public DamageSource causingBlockSnapshot(final @Nullable org.bukkit.block.BlockState blockState) { ++ public DamageSource causingBlockSnapshot( ++ final net.minecraft.world.level.LevelAccessor level, ++ final net.minecraft.core.BlockPos pos, ++ final @Nullable org.bukkit.block.BlockState blockState ++ ) { + if (this.eventBlockDamager != null) { + throw new IllegalStateException("Cannot set a block snapshot when an event block damager is already set (report a bug to Paper)"); + } + final DamageSource damageSource = this.copy(); ++ damageSource.eventBlockDamager = org.bukkit.craftbukkit.block.CraftBlock.at(level, pos); + damageSource.fromBlockSnapshot = blockState; + return damageSource; + } diff --git a/paper-server/patches/sources/net/minecraft/world/level/block/BedBlock.java.patch b/paper-server/patches/sources/net/minecraft/world/level/block/BedBlock.java.patch index 1b12bd9f77..18fb2518ec 100644 --- a/paper-server/patches/sources/net/minecraft/world/level/block/BedBlock.java.patch +++ b/paper-server/patches/sources/net/minecraft/world/level/block/BedBlock.java.patch @@ -59,7 +59,7 @@ + } + + Vec3 center = pos.getCenter(); -+ level.explode(null, level.damageSources().badRespawnPointExplosion(center).causingBlockSnapshot(blockState), null, center, 5.0F, true, Level.ExplosionInteraction.BLOCK); // CraftBukkit - add state ++ level.explode(null, level.damageSources().badRespawnPointExplosion(center).causingBlockSnapshot(level, pos, blockState), null, center, 5.0F, true, Level.ExplosionInteraction.BLOCK); // CraftBukkit - add state + return InteractionResult.SUCCESS_SERVER; + } + // CraftBukkit end diff --git a/paper-server/patches/sources/net/minecraft/world/level/block/RespawnAnchorBlock.java.patch b/paper-server/patches/sources/net/minecraft/world/level/block/RespawnAnchorBlock.java.patch index c66c883b7c..63c5b22f8b 100644 --- a/paper-server/patches/sources/net/minecraft/world/level/block/RespawnAnchorBlock.java.patch +++ b/paper-server/patches/sources/net/minecraft/world/level/block/RespawnAnchorBlock.java.patch @@ -31,7 +31,7 @@ Vec3 center = pos2.getCenter(); level.explode( - null, level.damageSources().badRespawnPointExplosion(center), explosionDamageCalculator, center, 5.0F, true, Level.ExplosionInteraction.BLOCK -+ null, level.damageSources().badRespawnPointExplosion(center).causingBlockSnapshot(blockState), explosionDamageCalculator, center, 5.0F, true, Level.ExplosionInteraction.BLOCK // CraftBukkit - add state ++ null, level.damageSources().badRespawnPointExplosion(center).causingBlockSnapshot(level, pos2, blockState), explosionDamageCalculator, center, 5.0F, true, Level.ExplosionInteraction.BLOCK // CraftBukkit - add state ); }