package Ġmods . better fol i age . render . particle Ċ Ċ import Ġcom . moj ang . bl aze 3 d . vertex . I Vertex Builder Ċ import Ġmods . better fol i age . Better F oli age Mod Ċ import Ġmods . better fol i age . config . Config Ċ import Ġmods . better fol i age . model . Sprite Delegate Ċ import Ġmods . better fol i age . model . Sprite Set Delegate Ċ import Ġmods . better fol i age . util . Atlas Ċ import Ġmods . better fol i age . util . Double 3 Ċ import Ġmods . better fol i age . util . PI 2 Ċ import Ġmods . better fol i age . util . forEach Pair Indexed Ċ import Ġmods . better fol i age . util . random D Ċ import Ġmods . better fol i age . util . random I Ċ import Ġnet . minecraft . client . particle . IP article Render Type Ċ import Ġnet . minecraft . client . renderer . Active Render Info Ċ import Ġnet . minecraft . client . world . Client World Ċ import Ġnet . minecraft . util . Resource Location Ċ import Ġnet . minecraft . util . math . Block Pos Ċ import Ġnet . minecraft . util . math . Math Helper Ċ import Ġnet . minecraft . world . World Ċ import Ġjava . util . Deque Ċ import Ġjava . util . LinkedList Ċ import Ġkotlin . math . cos Ċ import Ġkotlin . math . sin Ċ Ċ class ĠR ising S oul Particle ( ĊĠĠĠ Ġworld : ĠClient World , Ġpos : ĠBlockPos Ċ ) Ġ: ĠAbstract Particle ( ĊĠĠĠ Ġworld , Ġpos . x . toDouble () Ġ+ Ġ 0 . 5 , Ġpos . y . toDouble () Ġ+ Ġ 1 . 0 , Ġpos . z . toDouble () Ġ+ Ġ 0 . 5 Ċ ) Ġ{ ĊĊĠĠĠ Ġval Ġparticle Trail : ĠDe que < Double 3 > Ġ= ĠLinkedList < Double 3 >() ĊĠĠĠ Ġval Ġinitial Phase Ġ= Ġrandom D ( max Ġ= ĠPI 2 ) ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġy d Ġ= Ġ 0 . 1 ĊĠĠĠĠĠĠĠ Ġgravity Ġ= Ġ 0 . 0 f ĊĠĠĠĠĠĠĠ Ġsprite Ġ= Ġhead Icons [ random I ( max Ġ= Ġ 1 0 2 4 )] ĊĠĠĠĠĠĠĠ Ġlifetime Ġ= ĠMath Helper . floor (( 0 . 6 Ġ+ Ġ 0 . 4 Ġ* Ġrandom D ()) Ġ* ĠConfig . ris ing S oul . lifetime Ġ* Ġ 2 0 . 0 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġval ĠisValid : ĠBoolean Ġget () Ġ= Ġtrue ĊĊĠĠĠ Ġoverride Ġfun Ġupdate () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġphase Ġ= Ġinitial Phase Ġ+ Ġ( age . toDouble () Ġ* ĠPI 2 Ġ/ Ġ 6 4 . 0 ) ĊĠĠĠĠĠĠĠ Ġval Ġcos Phase Ġ= Ġcos ( phase ); ĊĠĠĠĠĠĠĠ Ġval Ġsin Phase Ġ= Ġsin ( phase ) ĊĠĠĠĠĠĠĠ Ġvelocity . set To ( Config . ris ing S oul . pert urb . let Ġ{ ĠDouble 3 ( cos Phase Ġ* Ġit , Ġ 0 . 1 , Ġsin Phase Ġ* Ġit ) Ġ}) ĊĊĠĠĠĠĠĠĠ Ġparticle Trail . add First ( current Pos . copy ()) ĊĠĠĠĠĠĠĠ Ġwhile Ġ( particle Trail . size Ġ> ĠConfig . ris ing S oul . trail Length ) Ġparticle Trail . remove Last () ĊĊĠĠĠĠĠĠĠ Ġif Ġ(! Config . enabled ) Ġremove () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġrender ( vertex Builder : ĠI Vertex Builder , Ġcamera : ĠActive Render Info , Ġtick Delta : ĠFloat ) Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġalpha Ġ= ĠConfig . ris ing S oul . opacity . toFloat () ĊĠĠĠĠĠĠĠ Ġif Ġ( age Ġ> Ġlifetime Ġ- Ġ 4 0 ) Ġalpha Ġ*= Ġ( lifetime Ġ- Ġage ) Ġ/ Ġ 4 0 . 0 f ĊĊĠĠĠĠĠĠĠ Ġrender Particle Quad ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvertex Builder , Ġcamera , Ġtick Delta , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsize Ġ= ĠConfig . ris ing S oul . head Size Ġ* Ġ 0 . 2 5 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġalpha Ġ= Ġalpha ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġvar Ġscale Ġ= ĠConfig . ris ing S oul . trail Size Ġ* Ġ 0 . 2 5 ĊĠĠĠĠĠĠĠ Ġparticle Trail . forEach Pair Indexed Ġ{ Ġidx , Ġcurrent , Ġprevious Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġscale Ġ*= ĠConfig . ris ing S oul . size Dec ay ĊĠĠĠĠĠĠĠĠĠĠĠ Ġalpha Ġ*= ĠConfig . ris ing S oul . opacity Dec ay . toFloat () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( idx Ġ% ĠConfig . ris ing S oul . trail Density Ġ== Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrender Particle Quad ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvertex Builder , Ġcamera , Ġtick Delta , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Pos Ġ= Ġcurrent , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprev Pos Ġ= Ġprevious , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsize Ġ= Ġscale , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġalpha Ġ= Ġalpha , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsprite Ġ= Ġtrack Icon ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Render Type (): ĠI Particle Render Type Ġ= ĠI Particle Render Type . P ARTIC LE _ SHE ET _ TRANSL UC ENT ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġhead Icons Ġby ĠSprite Set Delegate ( Atlas . P ARTIC LES ) Ġ{ Ġidx Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠResource Location ( Better F oli age Mod . MOD _ ID , Ġ" particle / ris ing _ so ul _$ idx ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġtrack Icon Ġby ĠSprite Delegate ( Atlas . P ARTIC LES ) Ġ{ ĠResource Location ( Better F oli age Mod . MOD _ ID , Ġ" particle / so ul _ track ") Ġ} ĊĠĠĠ Ġ} Ċ } Ċ