From 704107c3dd2628b28b5b2c917b78b7c8e004ca87 Mon Sep 17 00:00:00 2001 From: Jason Penilla <11360596+jpenilla@users.noreply.github.com> Date: Thu, 28 Aug 2025 18:11:29 -0700 Subject: [PATCH] Resend frozen ticks when cancelling EntityInsideBlockEvent for powder snow fixes #13033 (#13035) --- build-data/paper.at | 1 + .../world/level/block/PowderSnowBlock.java.patch | 9 +++++++-- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/build-data/paper.at b/build-data/paper.at index 303fe449c..935a86c7b 100644 --- a/build-data/paper.at +++ b/build-data/paper.at @@ -188,6 +188,7 @@ public net.minecraft.world.entity.Display$TextDisplay getTextOpacity()B public net.minecraft.world.entity.Display$TextDisplay setFlags(B)V public net.minecraft.world.entity.Display$TextDisplay setText(Lnet/minecraft/network/chat/Component;)V public net.minecraft.world.entity.Display$TextDisplay setTextOpacity(B)V +public net.minecraft.world.entity.Entity DATA_TICKS_FROZEN public net.minecraft.world.entity.Entity FLAG_INVISIBLE public net.minecraft.world.entity.Entity getEncodeId()Ljava/lang/String; public net.minecraft.world.entity.Entity getFireImmuneTicks()I diff --git a/paper-server/patches/sources/net/minecraft/world/level/block/PowderSnowBlock.java.patch b/paper-server/patches/sources/net/minecraft/world/level/block/PowderSnowBlock.java.patch index 2fd9fda10..40ce13880 100644 --- a/paper-server/patches/sources/net/minecraft/world/level/block/PowderSnowBlock.java.patch +++ b/paper-server/patches/sources/net/minecraft/world/level/block/PowderSnowBlock.java.patch @@ -1,10 +1,15 @@ --- a/net/minecraft/world/level/block/PowderSnowBlock.java +++ b/net/minecraft/world/level/block/PowderSnowBlock.java -@@ -60,6 +_,7 @@ +@@ -60,6 +_,12 @@ @Override protected void entityInside(BlockState state, Level level, BlockPos pos, Entity entity, InsideBlockEffectApplier effectApplier) { -+ if (!new io.papermc.paper.event.entity.EntityInsideBlockEvent(entity.getBukkitEntity(), org.bukkit.craftbukkit.block.CraftBlock.at(level, pos)).callEvent()) { return; } // Paper - Add EntityInsideBlockEvent ++ // Paper start - Add EntityInsideBlockEvent ++ if (!new io.papermc.paper.event.entity.EntityInsideBlockEvent(entity.getBukkitEntity(), org.bukkit.craftbukkit.block.CraftBlock.at(level, pos)).callEvent()) { ++ entity.getEntityData().markDirty(net.minecraft.world.entity.Entity.DATA_TICKS_FROZEN); // prevent desync on cancelled event ++ return; ++ } ++ // Paper end - Add EntityInsideBlockEvent if (!(entity instanceof LivingEntity) || entity.getInBlockState().is(this)) { entity.makeStuckInBlock(state, new Vec3(0.9F, 1.5, 0.9F)); if (level.isClientSide) {