package Ġme . ar asp le . mc . tr ho log ram . api Ċ Ċ import Ġorg . bukkit . Bu kkit Ċ import Ġorg . bukkit . Location Ċ import Ġorg . bukkit . World Ċ import Ġkotlin . math . pow Ċ import Ġkotlin . math . sqrt Ċ Ċ /** Ċ Ġ* Ġ@ author ĠAr asp le Ċ Ġ* Ġ@ date Ġ 2 0 2 1 / 2 / 1 0 Ġ 1 0 : 5 3 Ċ Ġ*/ Ċ class ĠPosition : ĠClone able Ġ{ ĊĊĠĠĠ Ġval Ġworld : ĠWorld ĊĠĠĠ Ġval Ġx : ĠDouble ĊĠĠĠ Ġval Ġy : ĠDouble ĊĠĠĠ Ġval Ġz : ĠDouble ĊĊĠĠĠ Ġconstructor ( x : ĠDouble Ġ= Ġ 0 . 0 , Ġy : ĠDouble Ġ= Ġ 0 . 0 , Ġz : ĠDouble Ġ= Ġ 0 . 0 ) Ġ: Ġthis ( Bu kkit . get World s ()[ 0 ], Ġx , Ġy , Ġz ) ĊĊĠĠĠ Ġconstructor ( world : ĠWorld Ġ= ĠBu kkit . get World s ()[ 0 ], Ġx : ĠDouble Ġ= Ġ 0 . 0 , Ġy : ĠDouble Ġ= Ġ 0 . 0 , Ġz : ĠDouble Ġ= Ġ 0 . 0 ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . world Ġ= Ġworld ĊĠĠĠĠĠĠĠ Ġthis . x Ġ= Ġx ĊĠĠĠĠĠĠĠ Ġthis . y Ġ= Ġy ĊĠĠĠĠĠĠĠ Ġthis . z Ġ= Ġz ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġdistance ( l : ĠPosition ) Ġ= ĊĠĠĠĠĠĠĠ Ġdistance ( l . x , Ġl . y , Ġl . z ) ĊĊĠĠĠ Ġfun Ġdistance ( l : ĠLocation ) Ġ= ĊĠĠĠĠĠĠĠ Ġdistance ( l . x , Ġl . y , Ġl . z ) ĊĊĠĠĠ Ġfun Ġclone ( x : ĠDouble Ġ= Ġ 0 . 0 , Ġy : ĠDouble Ġ= Ġ 0 . 0 , Ġz : ĠDouble Ġ= Ġ 0 . 0 ) Ġ= ĊĠĠĠĠĠĠĠ ĠPosition ( world , Ġthis . x Ġ+ Ġx , Ġthis . y Ġ+ Ġy , Ġthis . z Ġ+ Ġz ) ĊĊĠĠĠ Ġprivate Ġfun Ġdistance ( x : ĠDouble , Ġy : ĠDouble , Ġz : ĠDouble ) Ġ= ĊĠĠĠĠĠĠĠ Ġsqrt (( this . x Ġ- Ġx ). pow ( 2 ) Ġ+ Ġ( this . y Ġ- Ġy ). pow ( 2 ) Ġ+ Ġ( this . z Ġ- Ġz ). pow ( 2 )) ĊĊĠĠĠ Ġfun Ġto Velocity () Ġ= ĊĠĠĠĠĠĠĠ ĠInstant Vector ( x , Ġy , Ġz ) ĊĊĠĠĠ Ġfun Ġto Location () Ġ= ĊĠĠĠĠĠĠĠ ĠLocation ( world , Ġx , Ġy , Ġz ) ĊĊĠĠĠ Ġoverride Ġfun ĠtoString () Ġ= ĊĠĠĠĠĠĠĠ Ġ"${ world . name } Ġ~ Ġ$ x , Ġ$ y , Ġ$ z " ĊĊĠĠĠ Ġoverride Ġfun Ġclone (): ĠLocation Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġsuper . clone () Ġas ĠLocation ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġfun Ġfrom Location ( l : ĠLocation ) Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPosition ( l . world !! , Ġl . x , Ġl . y , Ġl . z ) ĊĊĠĠĠ Ġ} Ċ Ċ }