Uploaded image for project: 'Minecraft: Java Edition'
  1. Minecraft: Java Edition
  2. MC-248600

Particles produced from moving in powder snow cannot be seen by other players

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Unresolved
    • None
    • 1.18.1, 22w06a, 22w07a, 1.18.2 Pre-release 1, 1.18.2, 1.19, 1.19.1, 1.19.2, 1.19.3, 1.19.4, 23w18a, 1.20.1
    • Confirmed
    • Particles
    • Low
    • Gameplay

      The Bug:

      Particles produced from moving in powder snow cannot be seen by other players.

      Steps to Reproduce:

      1. Summon a medium-sized area of of powder snow by using the command provided below.
        /fill ~1 ~ ~1 ~5 ~ ~5 minecraft:powder_snow
      2. Get two players and label them "Player A" and "Player B".
      3. Have "Player A" enter the powder snow and move around in it constantly.
      4. Get "Player B" to watch "Player A" closely.
      5. Take note as to whether or not particles produced from moving in powder snow can be seen by other players.

      Observed Behavior:

      Powder snow particles can only be seen by the person moving in the powder snow, and not other players.

      Expected Behavior:

      Powder snow particles would be seen by all players.

      Code Analysis:

      Code analysis by Avoma can be found below.

      The following is based on a decompiled version of Minecraft 1.18.1 using MCP-Reborn.

      net.minecraft.world.level.block.PowderSnowBlock.java
      public class PowderSnowBlock extends Block implements BucketPickup {
         ...
         public void entityInside(BlockState $bs, Level $l, BlockPos $bp, Entity $e) {
            if (!($e instanceof LivingEntity) || $e.getFeetBlockState().is(this)) {
               $e.makeStuckInBlock($bs, new Vec3((double)0.9F, 1.5D, (double)0.9F));
               if ($l.isClientSide) {
                  Random random = $l.getRandom();
                  boolean flag = $e.xOld != $e.getX() || $e.zOld != $e.getZ();
                  if (flag && random.nextBoolean()) {
                     $l.addParticle(ParticleTypes.SNOWFLAKE, $e.getX(), (double)($bp.getY() + 1), $e.getZ(), (double)(Mth.randomBetween(random, -1.0F, 1.0F) * 0.083333336F), (double)0.05F, (double)(Mth.randomBetween(random, -1.0F, 1.0F) * 0.083333336F));
                  }
               }
            }
            ...

      If we look at the above class, we can see that particles produced from moving in powder snow are only produced client-side. This is evident through the following line of code:

      if ($l.isClientSide)

            Unassigned Unassigned
            Avoma [Mod] Avoma
            Votes:
            6 Vote for this issue
            Watchers:
            5 Start watching this issue

              Created:
              Updated:
              CHK: