Class Particle

java.lang.Object
net.minecraft.client.particle.Particle
Direct Known Subclasses:
BillboardParticle, ElderGuardianAppearanceParticle, ItemPickupParticle, NoRenderParticle

@Environment(CLIENT) public abstract class Particle extends Object
A client-side visual effect with position, velocity, collision, and additional render properties.

Each particle is typically rendered as a camera-facing texture quad. SpriteBillboardParticle provides this behavior, and most vanilla particles inherit from it.

If you would like a particle with no direct rendering effects, inherit from NoRenderParticle.

Mappings:
Namespace Name
named net/minecraft/client/particle/Particle
intermediary net/minecraft/class_703
official gcn
  • Field Details

    • EMPTY_BOUNDING_BOX

      private static final Box EMPTY_BOUNDING_BOX
      Mappings:
      Namespace Name Mixin selector
      named EMPTY_BOUNDING_BOX Lnet/minecraft/client/particle/Particle;EMPTY_BOUNDING_BOX:Lnet/minecraft/util/math/Box;
      intermediary field_3860 Lnet/minecraft/class_703;field_3860:Lnet/minecraft/class_238;
      official a Lgcn;a:Lewx;
    • MAX_SQUARED_COLLISION_CHECK_DISTANCE

      private static final double MAX_SQUARED_COLLISION_CHECK_DISTANCE
      Mappings:
      Namespace Name Mixin selector
      named MAX_SQUARED_COLLISION_CHECK_DISTANCE Lnet/minecraft/client/particle/Particle;MAX_SQUARED_COLLISION_CHECK_DISTANCE:D
      intermediary field_36193 Lnet/minecraft/class_703;field_36193:D
      official b Lgcn;b:D
    • world

      protected final ClientWorld world
      Mappings:
      Namespace Name Mixin selector
      named world Lnet/minecraft/client/particle/Particle;world:Lnet/minecraft/client/world/ClientWorld;
      intermediary field_3851 Lnet/minecraft/class_703;field_3851:Lnet/minecraft/class_638;
      official c Lgcn;c:Lfzf;
    • prevPosX

      protected double prevPosX
      Mappings:
      Namespace Name Mixin selector
      named prevPosX Lnet/minecraft/client/particle/Particle;prevPosX:D
      intermediary field_3858 Lnet/minecraft/class_703;field_3858:D
      official d Lgcn;d:D
    • prevPosY

      protected double prevPosY
      Mappings:
      Namespace Name Mixin selector
      named prevPosY Lnet/minecraft/client/particle/Particle;prevPosY:D
      intermediary field_3838 Lnet/minecraft/class_703;field_3838:D
      official e Lgcn;e:D
    • prevPosZ

      protected double prevPosZ
      Mappings:
      Namespace Name Mixin selector
      named prevPosZ Lnet/minecraft/client/particle/Particle;prevPosZ:D
      intermediary field_3856 Lnet/minecraft/class_703;field_3856:D
      official f Lgcn;f:D
    • x

      protected double x
      Mappings:
      Namespace Name Mixin selector
      named x Lnet/minecraft/client/particle/Particle;x:D
      intermediary field_3874 Lnet/minecraft/class_703;field_3874:D
      official g Lgcn;g:D
    • y

      protected double y
      Mappings:
      Namespace Name Mixin selector
      named y Lnet/minecraft/client/particle/Particle;y:D
      intermediary field_3854 Lnet/minecraft/class_703;field_3854:D
      official h Lgcn;h:D
    • z

      protected double z
      Mappings:
      Namespace Name Mixin selector
      named z Lnet/minecraft/client/particle/Particle;z:D
      intermediary field_3871 Lnet/minecraft/class_703;field_3871:D
      official i Lgcn;i:D
    • velocityX

      protected double velocityX
      Mappings:
      Namespace Name Mixin selector
      named velocityX Lnet/minecraft/client/particle/Particle;velocityX:D
      intermediary field_3852 Lnet/minecraft/class_703;field_3852:D
      official j Lgcn;j:D
    • velocityY

      protected double velocityY
      Mappings:
      Namespace Name Mixin selector
      named velocityY Lnet/minecraft/client/particle/Particle;velocityY:D
      intermediary field_3869 Lnet/minecraft/class_703;field_3869:D
      official k Lgcn;k:D
    • velocityZ

      protected double velocityZ
      Mappings:
      Namespace Name Mixin selector
      named velocityZ Lnet/minecraft/client/particle/Particle;velocityZ:D
      intermediary field_3850 Lnet/minecraft/class_703;field_3850:D
      official l Lgcn;l:D
    • boundingBox

      private Box boundingBox
      Mappings:
      Namespace Name Mixin selector
      named boundingBox Lnet/minecraft/client/particle/Particle;boundingBox:Lnet/minecraft/util/math/Box;
      intermediary field_3872 Lnet/minecraft/class_703;field_3872:Lnet/minecraft/class_238;
      official D Lgcn;D:Lewx;
    • onGround

      protected boolean onGround
      Mappings:
      Namespace Name Mixin selector
      named onGround Lnet/minecraft/client/particle/Particle;onGround:Z
      intermediary field_3845 Lnet/minecraft/class_703;field_3845:Z
      official m Lgcn;m:Z
    • collidesWithWorld

      protected boolean collidesWithWorld
      Mappings:
      Namespace Name Mixin selector
      named collidesWithWorld Lnet/minecraft/client/particle/Particle;collidesWithWorld:Z
      intermediary field_3862 Lnet/minecraft/class_703;field_3862:Z
      official n Lgcn;n:Z
    • stopped

      private boolean stopped
      Mappings:
      Namespace Name Mixin selector
      named stopped Lnet/minecraft/client/particle/Particle;stopped:Z
      intermediary field_21507 Lnet/minecraft/class_703;field_21507:Z
      official E Lgcn;E:Z
    • dead

      protected boolean dead
      Mappings:
      Namespace Name Mixin selector
      named dead Lnet/minecraft/client/particle/Particle;dead:Z
      intermediary field_3843 Lnet/minecraft/class_703;field_3843:Z
      official o Lgcn;o:Z
    • spacingXZ

      protected float spacingXZ
      Mappings:
      Namespace Name Mixin selector
      named spacingXZ Lnet/minecraft/client/particle/Particle;spacingXZ:F
      intermediary field_3849 Lnet/minecraft/class_703;field_3849:F
      official p Lgcn;p:F
    • spacingY

      protected float spacingY
      Mappings:
      Namespace Name Mixin selector
      named spacingY Lnet/minecraft/client/particle/Particle;spacingY:F
      intermediary field_3867 Lnet/minecraft/class_703;field_3867:F
      official q Lgcn;q:F
    • random

      protected final Random random
      Mappings:
      Namespace Name Mixin selector
      named random Lnet/minecraft/client/particle/Particle;random:Lnet/minecraft/util/math/random/Random;
      intermediary field_3840 Lnet/minecraft/class_703;field_3840:Lnet/minecraft/class_5819;
      official r Lgcn;r:Layw;
    • age

      protected int age
      Mappings:
      Namespace Name Mixin selector
      named age Lnet/minecraft/client/particle/Particle;age:I
      intermediary field_3866 Lnet/minecraft/class_703;field_3866:I
      official s Lgcn;s:I
    • maxAge

      protected int maxAge
      Mappings:
      Namespace Name Mixin selector
      named maxAge Lnet/minecraft/client/particle/Particle;maxAge:I
      intermediary field_3847 Lnet/minecraft/class_703;field_3847:I
      official t Lgcn;t:I
    • gravityStrength

      protected float gravityStrength
      Mappings:
      Namespace Name Mixin selector
      named gravityStrength Lnet/minecraft/client/particle/Particle;gravityStrength:F
      intermediary field_3844 Lnet/minecraft/class_703;field_3844:F
      official u Lgcn;u:F
    • red

      protected float red
      Mappings:
      Namespace Name Mixin selector
      named red Lnet/minecraft/client/particle/Particle;red:F
      intermediary field_3861 Lnet/minecraft/class_703;field_3861:F
      official v Lgcn;v:F
    • green

      protected float green
      Mappings:
      Namespace Name Mixin selector
      named green Lnet/minecraft/client/particle/Particle;green:F
      intermediary field_3842 Lnet/minecraft/class_703;field_3842:F
      official w Lgcn;w:F
    • blue

      protected float blue
      Mappings:
      Namespace Name Mixin selector
      named blue Lnet/minecraft/client/particle/Particle;blue:F
      intermediary field_3859 Lnet/minecraft/class_703;field_3859:F
      official x Lgcn;x:F
    • alpha

      protected float alpha
      Mappings:
      Namespace Name Mixin selector
      named alpha Lnet/minecraft/client/particle/Particle;alpha:F
      intermediary field_3841 Lnet/minecraft/class_703;field_3841:F
      official y Lgcn;y:F
    • angle

      protected float angle
      Mappings:
      Namespace Name Mixin selector
      named angle Lnet/minecraft/client/particle/Particle;angle:F
      intermediary field_3839 Lnet/minecraft/class_703;field_3839:F
      official z Lgcn;z:F
    • prevAngle

      protected float prevAngle
      Mappings:
      Namespace Name Mixin selector
      named prevAngle Lnet/minecraft/client/particle/Particle;prevAngle:F
      intermediary field_3857 Lnet/minecraft/class_703;field_3857:F
      official A Lgcn;A:F
    • velocityMultiplier

      protected float velocityMultiplier
      Mappings:
      Namespace Name Mixin selector
      named velocityMultiplier Lnet/minecraft/client/particle/Particle;velocityMultiplier:F
      intermediary field_28786 Lnet/minecraft/class_703;field_28786:F
      official B Lgcn;B:F
    • ascending

      protected boolean ascending
      Mappings:
      Namespace Name Mixin selector
      named ascending Lnet/minecraft/client/particle/Particle;ascending:Z
      intermediary field_28787 Lnet/minecraft/class_703;field_28787:Z
      official C Lgcn;C:Z
  • Constructor Details

    • Particle

      protected Particle(ClientWorld world, double x, double y, double z)
      Mappings:
      Namespace Name Mixin selector
      named <init> Lnet/minecraft/client/particle/Particle;<init>(Lnet/minecraft/client/world/ClientWorld;DDD)V
      intermediary <init> Lnet/minecraft/class_703;<init>(Lnet/minecraft/class_638;DDD)V
      official <init> Lgcn;<init>(Lfzf;DDD)V
    • Particle

      public Particle(ClientWorld world, double x, double y, double z, double velocityX, double velocityY, double velocityZ)
      Mappings:
      Namespace Name Mixin selector
      named <init> Lnet/minecraft/client/particle/Particle;<init>(Lnet/minecraft/client/world/ClientWorld;DDDDDD)V
      intermediary <init> Lnet/minecraft/class_703;<init>(Lnet/minecraft/class_638;DDDDDD)V
      official <init> Lgcn;<init>(Lfzf;DDDDDD)V
  • Method Details

    • move

      public Particle move(float speed)
      Multiplies this particle's current velocity by the target speed amount.
      Parameters:
      speed - the velocity multiplier to apply to this particle
      Mappings:
      Namespace Name Mixin selector
      named move Lnet/minecraft/client/particle/Particle;move(F)Lnet/minecraft/client/particle/Particle;
      intermediary method_3075 Lnet/minecraft/class_703;method_3075(F)Lnet/minecraft/class_703;
      official c Lgcn;c(F)Lgcn;
    • setVelocity

      public void setVelocity(double velocityX, double velocityY, double velocityZ)
      Updates this particle's velocity to the target X, Y, and Z values.
      Parameters:
      velocityX - the new x-velocity of this particle
      velocityY - the new y-velocity of this particle
      velocityZ - the new z-velocity of this particle
      Mappings:
      Namespace Name Mixin selector
      named setVelocity Lnet/minecraft/client/particle/Particle;setVelocity(DDD)V
      intermediary method_34753 Lnet/minecraft/class_703;method_34753(DDD)V
      official b Lgcn;b(DDD)V
    • scale

      public Particle scale(float scale)
      Scales the size of this particle by the given scale amount.
      Parameters:
      scale - the amount to scale this particle's size by
      Returns:
      this particle
      Mappings:
      Namespace Name Mixin selector
      named scale Lnet/minecraft/client/particle/Particle;scale(F)Lnet/minecraft/client/particle/Particle;
      intermediary method_3087 Lnet/minecraft/class_703;method_3087(F)Lnet/minecraft/class_703;
      official d Lgcn;d(F)Lgcn;
    • setColor

      public void setColor(float red, float green, float blue)
      Updates the rendering color of this particle. Each value should be between 0.0 (no channel color) and 1.0 (full channel color).
      Parameters:
      red - the target red color to use while rendering
      green - the target green color to use while rendering
      blue - the target blue color to use while rendering
      Mappings:
      Namespace Name Mixin selector
      named setColor Lnet/minecraft/client/particle/Particle;setColor(FFF)V
      intermediary method_3084 Lnet/minecraft/class_703;method_3084(FFF)V
      official a Lgcn;a(FFF)V
    • setAlpha

      protected void setAlpha(float alpha)
      Updates the alpha value of this particle to use while rendering.

      Note that a particle cannot render with transparency unless getType() is ParticleTextureSheet.PARTICLE_SHEET_TRANSLUCENT, or another sheet that supports transparency.

      Also note that the default particle shader (core/particle.fsh) will discard all transparent pixels below 0.1 alpha.

      Parameters:
      alpha - the new alpha value of this particle
      Mappings:
      Namespace Name Mixin selector
      named setAlpha Lnet/minecraft/client/particle/Particle;setAlpha(F)V
      intermediary method_3083 Lnet/minecraft/class_703;method_3083(F)V
      official e Lgcn;e(F)V
    • setMaxAge

      public void setMaxAge(int maxAge)
      Sets the maximum age, in ticks, that this particle can exist for.
      Parameters:
      maxAge - the new maximum age of this particle, in ticks
      Mappings:
      Namespace Name Mixin selector
      named setMaxAge Lnet/minecraft/client/particle/Particle;setMaxAge(I)V
      intermediary method_3077 Lnet/minecraft/class_703;method_3077(I)V
      official a Lgcn;a(I)V
    • getMaxAge

      public int getMaxAge()
      Returns the maximum age, in ticks, of this particle. If this particle's age exceeds this value, it will be removed from the world.
      Returns:
      the maximum age, in ticks, of this particle
      Mappings:
      Namespace Name Mixin selector
      named getMaxAge Lnet/minecraft/client/particle/Particle;getMaxAge()I
      intermediary method_3082 Lnet/minecraft/class_703;method_3082()I
      official j Lgcn;j()I
    • tick

      public void tick()
      Called each game tick (20 times per second), and should be used to do core particle logic, such as movement and collision.
      Mappings:
      Namespace Name Mixin selector
      named tick Lnet/minecraft/client/particle/Particle;tick()V
      intermediary method_3070 Lnet/minecraft/class_703;method_3070()V
      official a Lgcn;a()V
    • buildGeometry

      public abstract void buildGeometry(VertexConsumer vertexConsumer, Camera camera, float tickDelta)
      Renders this particle to the given VertexConsumer buffer.
      Parameters:
      vertexConsumer - the buffer to render to
      camera - the current active game Camera
      tickDelta - frame tick delta amount
      Mappings:
      Namespace Name Mixin selector
      named buildGeometry Lnet/minecraft/client/particle/Particle;buildGeometry(Lnet/minecraft/client/render/VertexConsumer;Lnet/minecraft/client/render/Camera;F)V
      intermediary method_3074 Lnet/minecraft/class_703;method_3074(Lnet/minecraft/class_4588;Lnet/minecraft/class_4184;F)V
      official a Lgcn;a(Lfbm;Lffy;F)V
    • getType

      public abstract ParticleTextureSheet getType()
      Returns the rendering category this particle is rendered under.

      For more information on the properties and types available to each Particle, visit ParticleTextureSheet.

      Returns:
      the rendering category this particle is rendered under
      Mappings:
      Namespace Name Mixin selector
      named getType Lnet/minecraft/client/particle/Particle;getType()Lnet/minecraft/client/particle/ParticleTextureSheet;
      intermediary method_18122 Lnet/minecraft/class_703;method_18122()Lnet/minecraft/class_3999;
      official b Lgcn;b()Lgcr;
    • toString

      public String toString()
      Overrides:
      toString in class Object
    • markDead

      public void markDead()
      Marks this particle as ready to be removed from the containing ClientWorld.
      Mappings:
      Namespace Name Mixin selector
      named markDead Lnet/minecraft/client/particle/Particle;markDead()V
      intermediary method_3085 Lnet/minecraft/class_703;method_3085()V
      official k Lgcn;k()V
    • setBoundingBoxSpacing

      protected void setBoundingBoxSpacing(float spacingXZ, float spacingY)
      Mappings:
      Namespace Name Mixin selector
      named setBoundingBoxSpacing Lnet/minecraft/client/particle/Particle;setBoundingBoxSpacing(FF)V
      intermediary method_3080 Lnet/minecraft/class_703;method_3080(FF)V
      official b Lgcn;b(FF)V
    • setPos

      public void setPos(double x, double y, double z)
      Updates the position and bounding box of this particle to the target x, y, z position.
      Parameters:
      x - the x position to move this particle to
      y - the y position to move this particle to
      z - the z position to move this particle to
      Mappings:
      Namespace Name Mixin selector
      named setPos Lnet/minecraft/client/particle/Particle;setPos(DDD)V
      intermediary method_3063 Lnet/minecraft/class_703;method_3063(DDD)V
      official c Lgcn;c(DDD)V
    • move

      public void move(double dx, double dy, double dz)
      Moves this particle by the specified delta amounts, re-positioning bounding boxes and adjusting movement for collision with the world.
      Parameters:
      dx - the delta x to move this particle by
      dy - the delta y to move this particle by
      dz - the delta z to move this particle by
      Mappings:
      Namespace Name Mixin selector
      named move Lnet/minecraft/client/particle/Particle;move(DDD)V
      intermediary method_3069 Lnet/minecraft/class_703;method_3069(DDD)V
      official a Lgcn;a(DDD)V
    • repositionFromBoundingBox

      protected void repositionFromBoundingBox()
      Mappings:
      Namespace Name Mixin selector
      named repositionFromBoundingBox Lnet/minecraft/client/particle/Particle;repositionFromBoundingBox()V
      intermediary method_3072 Lnet/minecraft/class_703;method_3072()V
      official l Lgcn;l()V
    • getBrightness

      protected int getBrightness(float tint)
      Returns the packed light level this particle should render at.
      Returns:
      the packed light level this particle should render at
      See Also:
      Mappings:
      Namespace Name Mixin selector
      named getBrightness Lnet/minecraft/client/particle/Particle;getBrightness(F)I
      intermediary method_3068 Lnet/minecraft/class_703;method_3068(F)I
      official a Lgcn;a(F)I
    • isAlive

      public boolean isAlive()
      Returns false if this particle is finished and should be removed from the parent ParticleManager, otherwise true if the particle is still alive.
      Returns:
      false if this particle is finished and should be removed from the parent ParticleManager, otherwise true if the particle is still alive
      Mappings:
      Namespace Name Mixin selector
      named isAlive Lnet/minecraft/client/particle/Particle;isAlive()Z
      intermediary method_3086 Lnet/minecraft/class_703;method_3086()Z
      official m Lgcn;m()Z
    • getBoundingBox

      public Box getBoundingBox()
      Returns the bounding Box of this particle used for collision and movement logic.

      By default, this bounding box is automatically repositioned when a particle moves in tick(). To adjust the size of the returned box, visit setBoundingBoxSpacing(float, float). To directly update the current bounding box, visit setBoundingBox(Box);

      Returns:
      the bounding Box of this particle used for collision and movement logic
      Mappings:
      Namespace Name Mixin selector
      named getBoundingBox Lnet/minecraft/client/particle/Particle;getBoundingBox()Lnet/minecraft/util/math/Box;
      intermediary method_3064 Lnet/minecraft/class_703;method_3064()Lnet/minecraft/class_238;
      official n Lgcn;n()Lewx;
    • setBoundingBox

      public void setBoundingBox(Box boundingBox)
      Mappings:
      Namespace Name Mixin selector
      named setBoundingBox Lnet/minecraft/client/particle/Particle;setBoundingBox(Lnet/minecraft/util/math/Box;)V
      intermediary method_3067 Lnet/minecraft/class_703;method_3067(Lnet/minecraft/class_238;)V
      official a Lgcn;a(Lewx;)V
    • getGroup

      public Optional<ParticleGroup> getGroup()
      Returns the optional group that this particle belongs to.

      A particle group restricts the number of particles from the group that can be rendered in a client world. If the particle does not have a group, it is not restricted.

      Returns:
      the optional group that this particle belongs to
      Mappings:
      Namespace Name Mixin selector
      named getGroup Lnet/minecraft/client/particle/Particle;getGroup()Ljava/util/Optional;
      intermediary method_34019 Lnet/minecraft/class_703;method_34019()Ljava/util/Optional;
      official o Lgcn;o()Ljava/util/Optional;