Mojira Archive
MC-99597

Not needed spawnParticles calls of the server

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) -

Awaiting Response

Marcono1234

2016-03-13, 09:58 PM

2018-10-02, 11:25 PM

2018-10-02, 11:25 PM

1

3

Unconfirmed

particle, server

Minecraft 1.9, Minecraft 1.11.2

-