package Ġdev . toast mc . toast client . api . util . entity Ċ Ċ import Ġdev . toast mc . toast client . api . util . mc Ċ import Ġnet . minecraft . ench ant ment . Enchant ment Helper Ċ import Ġnet . minecraft . entity . Damage Util Ċ import Ġnet . minecraft . entity . Entity Ċ import Ġnet . minecraft . entity . Living Entity Ċ import Ġnet . minecraft . entity . attribute . Entity Attributes Ċ import Ġnet . minecraft . entity . decoration . End Cr ystal Entity Ċ import Ġnet . minecraft . entity . effect . Status Effects Ċ import Ġnet . minecraft . entity . player . Player Entity Ċ import Ġnet . minecraft . util . math . Block Pos Ċ import Ġnet . minecraft . util . math . Box Ċ import Ġnet . minecraft . util . math . Math Helper Ċ import Ġnet . minecraft . util . math . Vec 3 d Ċ import Ġnet . minecraft . world . Difficulty Ċ import Ġnet . minecraft . world . explo sion . Explo sion Ċ Ċ object ĠDamage Util Ġ{ ĊĊĠĠĠ Ġfun ĠL iving Entity . get Cr ystal Damage ( base Pos : ĠBlockPos ): ĠFloat Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġget Cr ystal Damage ( base Pos , Ġthis ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠL iving Entity . get Cr ystal Damage ( crystal : ĠEnd Cr ystal Entity ): ĠFloat Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġget Cr ystal Damage ( crystal , Ġthis ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Jvm Name (" get Cr ystal Damage 1 ") ĊĠĠĠ Ġfun ĠBlockPos . get Cr ystal Damage ( entity : ĠL iving Entity ): ĠFloat Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġget Cr ystal Damage ( this , Ġentity ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Cr ystal Damage ( crystal : ĠEnd Cr ystal Entity , Ġtarget : ĠL iving Entity ): ĠFloat Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġget Cr ystal Damage ( crystal . block Pos . down (), Ġtarget ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Cr ystal Damage ( base Pos : ĠBlockPos , Ġtarget : ĠL iving Entity ): ĠFloat Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( mc . world !!. difficulty Ġ== ĠDiff iculty . PE ACE FUL ) Ġreturn Ġ 0 f ĊĠĠĠĠĠĠĠ Ġval Ġcr ystal Pos : ĠVec 3 d Ġ= ĠVec 3 d . of ( base Pos ). add ( 0 . 5 , Ġ 1 . 0 , Ġ 0 . 5 ) ĊĠĠĠĠĠĠĠ Ġval Ġexplo sion Ġ= ĠExplo sion ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmc . world , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcr ystal Pos . x , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcr ystal Pos . y , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcr ystal Pos . z , ĊĠĠĠĠĠĠĠĠĠĠĠĠ 6 f , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfalse , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠExplo sion . Dest r uction Type . DESTROY ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġval Ġpower Ġ= Ġ 1 2 . 0 ĊĠĠĠĠĠĠĠ Ġif Ġ(! mc . world !!. get Other Entities ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull Ġas ĠEntity ?, ĠBox ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMath Helper . floor ( crystal Pos . x Ġ- Ġpower Ġ- Ġ 1 . 0 ). toDouble (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMath Helper . floor ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcr ystal Pos . y Ġ- Ġpower Ġ- Ġ 1 . 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ). toDouble (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMath Helper . floor ( crystal Pos . z Ġ- Ġpower Ġ- Ġ 1 . 0 ). toDouble (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMath Helper . floor ( crystal Pos . x Ġ+ Ġpower Ġ+ Ġ 1 . 0 ). toDouble (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMath Helper . floor ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcr ystal Pos . y Ġ+ Ġpower Ġ+ Ġ 1 . 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ). toDouble (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMath Helper . floor ( crystal Pos . z Ġ+ Ġpower Ġ+ Ġ 1 . 0 ). toDouble () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ). contains ( target ) ĊĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ 0 f ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ(! target . is Imm une To Explo sion ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdouble _ 8 Ġ= ĠMath Helper . sqrt ( target . squared Distance To ( crystal Pos )) Ġ/ Ġpower ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( double _ 8 Ġ<= Ġ 1 . 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġx : ĠDouble Ġ= Ġtarget . x Ġ- Ġcr ystal Pos . x ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġy : ĠDouble Ġ= Ġtarget . y Ġ+ Ġtarget . standing Eye Height Ġ- Ġcr ystal Pos . y ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġz : ĠDouble Ġ= Ġtarget . z Ġ- Ġcr ystal Pos . z ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdouble _ 1 2 Ġ= ĠMath Helper . sqrt ( x Ġ* Ġx Ġ+ Ġy Ġ* Ġy Ġ+ Ġz Ġ* Ġz ). toDouble () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( double _ 1 2 Ġ!= Ġ 0 . 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġx Ġ/= Ġdouble _ 1 2 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġy Ġ/= Ġdouble _ 1 2 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġz Ġ/= Ġdouble _ 1 2 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdouble _ 1 3 Ġ= ĠExplo sion . get Exposure ( crystal Pos , Ġtarget ). toDouble () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdouble _ 1 4 Ġ= Ġ( 1 . 0 Ġ- Ġdouble _ 8 ) Ġ* Ġdouble _ 1 3 ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġentity _ 1 . damage ( explo sion . get Damage Source (), Ġ( float )(( int )(( double _ 1 4 Ġ* ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġdouble _ 1 4 Ġ+ Ġdouble _ 1 4 ) Ġ/ Ġ 2 . 0 D Ġ* Ġ 7 . 0 D Ġ* Ġpower Ġ+ Ġ 1 . 0 D ))); ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġto Damage Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMath . floor (( double _ 1 4 Ġ* Ġdouble _ 1 4 Ġ+ Ġdouble _ 1 4 ) Ġ/ Ġ 2 . 0 Ġ* Ġ 7 . 0 Ġ* Ġpower Ġ+ Ġ 1 . 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. toFloat () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( target Ġis ĠPlayer Entity ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( mc . world !!. difficulty Ġ== ĠDiff iculty . E ASY ) Ġto Damage Ġ= ĠMath . min ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġto Damage Ġ/ Ġ 2 . 0 f Ġ+ Ġ 1 . 0 f , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġto Damage ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġelse Ġif Ġ( mc . world !!. difficulty Ġ== ĠDiff iculty . HARD ) Ġto Damage Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġto Damage Ġ* Ġ 3 . 0 f Ġ/ Ġ 2 . 0 f ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠArm or ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġto Damage Ġ= ĠDamage Util . get Damage Left ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġto Damage , Ġtarget . armor . toFloat (), Ġtarget . getAttribute Instance ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠEntity Attributes . GENERIC _ ARM OR _ TO UGH NESS ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) !!. value . toFloat () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠEn chant ments ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( target . has Status Effect ( Status Effects . RE SIST ANCE )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresistance Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( target . getStatus Effect ( Status Effects . RE SIST ANCE ) !!. amp l ifier Ġ+ Ġ 1 ) Ġ* Ġ 5 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġint _ 2 Ġ= Ġ 2 5 Ġ- Ġresistance ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresistance _ 1 Ġ= Ġto Damage Ġ* Ġint _ 2 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġto Damage Ġ= ĠMath . max ( res istance _ 1 Ġ/ Ġ 2 5 . 0 f , Ġ 0 . 0 f ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( to Damage Ġ<= Ġ 0 . 0 f ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġto Damage Ġ= Ġ 0 . 0 f ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġprot Amount Ġ= ĠEn chant ment Helper . get Protection Amount ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtarget . armor Items , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexplo sion . damage Source ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( prot Amount Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġto Damage Ġ= ĠDamage Util . get Inf lict ed Damage ( to Damage , Ġprot Amount . toFloat ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġto Damage ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġ 0 f ĊĠĠĠ Ġ} Ċ }