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

Not needed spawnParticles calls of the server

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Awaiting Response
    • None
    • Minecraft 1.9, Minecraft 1.11.2
    • Unconfirmed

      The bug

      The following is based on decompiled version of Minecraft 1.9 using MCP 9.24 beta. All method and class names are the names used in the decompiled version.

      There are multiple methods that run for the client and the server to create particles. The particles created by the server are not send to the client due to MC-10369. However the server should not even try to create the particles in the listed cases as the client does this already. The method that they call is net.minecraft.world.World.spawnParticle(EnumParticleTypes, double, double, double, double, double, double, int...).

      Affected methods

      Last updated for 1.11.2

      Some methods might have to be adjusted to send particles and sound to the other players. This list contains only the methods which create the particles, adding a condition to only create the particles for the client might introduce new bugs. Therefor in some cases the calling methods need to be changed.

      Method Note
      net.minecraft.block.BlockLiquid.triggerMixEffects(World, BlockPos) -
      net.minecraft.block.BlockNote.eventReceived(IBlockState, World, BlockPos, int, int) -
      net.minecraft.block.BlockRedstoneOre.spawnParticles(World, BlockPos) -
      net.minecraft.entity.Entity.spawnRunningParticles() -
      net.minecraft.entity.Entity.resetHeight() should be called "createWaterParticlesAndSound" or something similar
      net.minecraft.entity.EntityLivingBase.attemptTeleport(double, double, double) -
      net.minecraft.entity.EntityLivingBase.onEntityUpdate() air bubbles under water
      net.minecraft.entity.EntityLivingBase.onDeathUpdate() -
      net.minecraft.entity.EntityLivingBase.updateItemUse(ItemStack, int) -
      net.minecraft.entity.EntityLivingBase.updatePotionEffects() -
      net.minecraft.entity.EntityLivingBase.renderBrokenItemStack(ItemStack) -
      net.minecraft.entity.boss.EntityDragon.onLivingUpdate() -
      net.minecraft.entity.boss.EntityDragon.onDeathUpdate() -
      net.minecraft.entity.boss.EntityWither.onLivingUpdate() -
      net.minecraft.entity.item.EntityEnderEye.onUpdate() -
      net.minecraft.entity.item.EntityEnderPearl.onImpact(RayTraceResult) -
      net.minecraft.entity.item.EntityMinecartFurnace.onUpdate() -
      net.minecraft.entity.item.EntityMinecartTNT.onUpdate() -
      net.minecraft.entity.item.EntityTNTPrimed.onUpdate() -
      net.minecraft.entity.monster.EntityIronGolem.onLivingUpdate() -
      net.minecraft.entity.monster.EntitySlime.onUpdate() -
      net.minecraft.entity.passive.EntityAnimal.onLivingUpdate() see MC-93826
      net.minecraft.entity.passive.EntityMooshroom.processInteract(EntityPlayer, EnumHand) -
      net.minecraft.entity.passive.EntityRabbit.createEatingParticles() duplicate eating particles?
      net.minecraft.entity.passive.EntityTameable.playTameEffect(boolean) -
      net.minecraft.entity.passive.EntityWolf.onUpdate() -
      net.minecraft.entity.projectile.EntityArrow.onUpdate() critical and in water
      net.minecraft.entity.projectile.EntityFireball.onUpdate() in water and smoke
      net.minecraft.entity.projectile.EntityThrowable.onUpdate() water particles
      net.minecraft.item.ItemBucket.tryPlaceContainedLiquid(EntityPlayer, World, BlockPos) smoke particles in Nether
      net.minecraft.world.Explosion.doExplosionB(boolean) -

            Unassigned Unassigned
            marcono1234 Marcono1234
            Votes:
            1 Vote for this issue
            Watchers:
            3 Start watching this issue

              Created:
              Updated:
              Resolved: