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
official ffy
intermediary net/minecraft/class_703
named net/minecraft/client/particle/Particle
  • Field Details

    • EMPTY_BOUNDING_BOX

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    • Particle

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

      public Particle(ClientWorld world, double x, double y, double z, double velocityX, double velocityY, double velocityZ)
      Mappings:
      Namespace Name Mixin selector
      official <init> Lffy;<init>(Lfdj;DDDDDD)V
      intermediary <init> Lnet/minecraft/class_703;<init>(Lnet/minecraft/class_638;DDDDDD)V
      named <init> Lnet/minecraft/client/particle/Particle;<init>(Lnet/minecraft/client/world/ClientWorld;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
      official c Lffy;c(F)Lffy;
      intermediary method_3075 Lnet/minecraft/class_703;method_3075(F)Lnet/minecraft/class_703;
      named move Lnet/minecraft/client/particle/Particle;move(F)Lnet/minecraft/client/particle/Particle;
    • 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
      official b Lffy;b(DDD)V
      intermediary method_34753 Lnet/minecraft/class_703;method_34753(DDD)V
      named setVelocity Lnet/minecraft/client/particle/Particle;setVelocity(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
      official d Lffy;d(F)Lffy;
      intermediary method_3087 Lnet/minecraft/class_703;method_3087(F)Lnet/minecraft/class_703;
      named scale Lnet/minecraft/client/particle/Particle;scale(F)Lnet/minecraft/client/particle/Particle;
    • 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
      official a Lffy;a(FFF)V
      intermediary method_3084 Lnet/minecraft/class_703;method_3084(FFF)V
      named setColor Lnet/minecraft/client/particle/Particle;setColor(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
      official e Lffy;e(F)V
      intermediary method_3083 Lnet/minecraft/class_703;method_3083(F)V
      named setAlpha Lnet/minecraft/client/particle/Particle;setAlpha(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
      official a Lffy;a(I)V
      intermediary method_3077 Lnet/minecraft/class_703;method_3077(I)V
      named setMaxAge Lnet/minecraft/client/particle/Particle;setMaxAge(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
      official j Lffy;j()I
      intermediary method_3082 Lnet/minecraft/class_703;method_3082()I
      named getMaxAge Lnet/minecraft/client/particle/Particle;getMaxAge()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
      official a Lffy;a()V
      intermediary method_3070 Lnet/minecraft/class_703;method_3070()V
      named tick Lnet/minecraft/client/particle/Particle;tick()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
      official a Lffy;a(Lehi;Lelt;F)V
      intermediary method_3074 Lnet/minecraft/class_703;method_3074(Lnet/minecraft/class_4588;Lnet/minecraft/class_4184;F)V
      named buildGeometry Lnet/minecraft/client/particle/Particle;buildGeometry(Lnet/minecraft/client/render/VertexConsumer;Lnet/minecraft/client/render/Camera;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
      official b Lffy;b()Lfgc;
      intermediary method_18122 Lnet/minecraft/class_703;method_18122()Lnet/minecraft/class_3999;
      named getType Lnet/minecraft/client/particle/Particle;getType()Lnet/minecraft/client/particle/ParticleTextureSheet;
    • 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
      official k Lffy;k()V
      intermediary method_3085 Lnet/minecraft/class_703;method_3085()V
      named markDead Lnet/minecraft/client/particle/Particle;markDead()V
    • setBoundingBoxSpacing

      protected void setBoundingBoxSpacing(float spacingXZ, float spacingY)
      Mappings:
      Namespace Name Mixin selector
      official b Lffy;b(FF)V
      intermediary method_3080 Lnet/minecraft/class_703;method_3080(FF)V
      named setBoundingBoxSpacing Lnet/minecraft/client/particle/Particle;setBoundingBoxSpacing(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
      official c Lffy;c(DDD)V
      intermediary method_3063 Lnet/minecraft/class_703;method_3063(DDD)V
      named setPos Lnet/minecraft/client/particle/Particle;setPos(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
      official a Lffy;a(DDD)V
      intermediary method_3069 Lnet/minecraft/class_703;method_3069(DDD)V
      named move Lnet/minecraft/client/particle/Particle;move(DDD)V
    • repositionFromBoundingBox

      protected void repositionFromBoundingBox()
      Mappings:
      Namespace Name Mixin selector
      official l Lffy;l()V
      intermediary method_3072 Lnet/minecraft/class_703;method_3072()V
      named repositionFromBoundingBox Lnet/minecraft/client/particle/Particle;repositionFromBoundingBox()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
      official a Lffy;a(F)I
      intermediary method_3068 Lnet/minecraft/class_703;method_3068(F)I
      named getBrightness Lnet/minecraft/client/particle/Particle;getBrightness(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
      official m Lffy;m()Z
      intermediary method_3086 Lnet/minecraft/class_703;method_3086()Z
      named isAlive Lnet/minecraft/client/particle/Particle;isAlive()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
      official n Lffy;n()Lecz;
      intermediary method_3064 Lnet/minecraft/class_703;method_3064()Lnet/minecraft/class_238;
      named getBoundingBox Lnet/minecraft/client/particle/Particle;getBoundingBox()Lnet/minecraft/util/math/Box;
    • setBoundingBox

      public void setBoundingBox(Box boundingBox)
      Mappings:
      Namespace Name Mixin selector
      official a Lffy;a(Lecz;)V
      intermediary method_3067 Lnet/minecraft/class_703;method_3067(Lnet/minecraft/class_238;)V
      named setBoundingBox Lnet/minecraft/client/particle/Particle;setBoundingBox(Lnet/minecraft/util/math/Box;)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
      official o Lffy;o()Ljava/util/Optional;
      intermediary method_34019 Lnet/minecraft/class_703;method_34019()Ljava/util/Optional;
      named getGroup Lnet/minecraft/client/particle/Particle;getGroup()Ljava/util/Optional;