--- a/net/minecraft/world/level/block/WitherRoseBlock.java
+++ b/net/minecraft/world/level/block/WitherRoseBlock.java
@@ -22,13 +22,14 @@
 import net.minecraft.world.phys.shapes.VoxelShape;
 
 public class WitherRoseBlock extends FlowerBlock {
-    public static final MapCodec<WitherRoseBlock> CODEC = RecordCodecBuilder.mapCodec(
-        instance -> instance.group(EFFECTS_FIELD.forGetter(FlowerBlock::getSuspiciousEffects), propertiesCodec()).apply(instance, WitherRoseBlock::new)
-    );
+
+    public static final MapCodec<WitherRoseBlock> CODEC = RecordCodecBuilder.mapCodec((instance) -> {
+        return instance.group(WitherRoseBlock.EFFECTS_FIELD.forGetter(FlowerBlock::getSuspiciousEffects), propertiesCodec()).apply(instance, WitherRoseBlock::new);
+    });
 
     @Override
     public MapCodec<WitherRoseBlock> codec() {
-        return CODEC;
+        return WitherRoseBlock.CODEC;
     }
 
     public WitherRoseBlock(Holder<MobEffect> holder, float f, BlockBehaviour.Properties settings) {
@@ -46,32 +47,31 @@
 
     @Override
     public void animateTick(BlockState state, Level world, BlockPos pos, RandomSource random) {
-        VoxelShape voxelShape = this.getShape(state, world, pos, CollisionContext.empty());
-        Vec3 vec3 = voxelShape.bounds().getCenter();
-        double d = (double)pos.getX() + vec3.x;
-        double e = (double)pos.getZ() + vec3.z;
+        VoxelShape voxelshape = this.getShape(state, world, pos, CollisionContext.empty());
+        Vec3 vec3d = voxelshape.bounds().getCenter();
+        double d0 = (double) pos.getX() + vec3d.x;
+        double d1 = (double) pos.getZ() + vec3d.z;
 
-        for (int i = 0; i < 3; i++) {
+        for (int i = 0; i < 3; ++i) {
             if (random.nextBoolean()) {
-                world.addParticle(
-                    ParticleTypes.SMOKE,
-                    d + random.nextDouble() / 5.0,
-                    (double)pos.getY() + (0.5 - random.nextDouble()),
-                    e + random.nextDouble() / 5.0,
-                    0.0,
-                    0.0,
-                    0.0
-                );
+                world.addParticle(ParticleTypes.SMOKE, d0 + random.nextDouble() / 5.0D, (double) pos.getY() + (0.5D - random.nextDouble()), d1 + random.nextDouble() / 5.0D, 0.0D, 0.0D, 0.0D);
             }
         }
+
     }
 
     @Override
     protected void entityInside(BlockState state, Level world, BlockPos pos, Entity entity) {
+        if (!new io.papermc.paper.event.entity.EntityInsideBlockEvent(entity.getBukkitEntity(), org.bukkit.craftbukkit.block.CraftBlock.at(world, pos)).callEvent()) { return; } // Paper - Add EntityInsideBlockEvent
         if (!world.isClientSide && world.getDifficulty() != Difficulty.PEACEFUL) {
-            if (entity instanceof LivingEntity livingEntity && !livingEntity.isInvulnerableTo(world.damageSources().wither())) {
-                livingEntity.addEffect(new MobEffectInstance(MobEffects.WITHER, 40));
+            if (entity instanceof LivingEntity) {
+                LivingEntity entityliving = (LivingEntity) entity;
+
+                if (!entityliving.isInvulnerableTo(world.damageSources().wither())) {
+                    entityliving.addEffect(new MobEffectInstance(MobEffects.WITHER, 40), org.bukkit.event.entity.EntityPotionEffectEvent.Cause.WITHER_ROSE); // CraftBukkit
+                }
             }
+
         }
     }
 }
