package Ġat . pe tr ak . hex . api Ċ Ċ import Ġat . pe tr ak . hex . common . cast ing . CastException Ċ import Ġat . pe tr ak . hex . common . cast ing . Cast ing Context Ċ import Ġnet . minecraft . world . phys . Vec 3 Ċ Ċ /** Ċ Ġ* ĠMan ip ulates Ġthe Ġstack Ġin Ġsome Ġway , Ġusually Ġby Ġpop ping Ġsome Ġnumber Ġof Ġvalues Ġoff Ġthe Ġstack Ċ Ġ* Ġand Ġpushing Ġone Ġnew Ġvalue . Ċ Ġ* ĠFor Ġa Ġmore Ġ" trad itional " Ġpop Ġarguments , Ġpush Ġreturn Ġexperience , Ġsee Ċ Ġ* Ġ[ Simple Operator ][ at . pe tr ak . hex . common . cast ing . operators . Simple Operator ] Ċ Ġ* Ċ Ġ* ĠImplement ors ĠMUST ĠNOT Ġmutate Ġthe Ġcontext . Ċ Ġ*/ Ċ interface ĠOperator Ġ{ ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠOper ate Ġon Ġthe Ġstack Ġand Ġreturn Ġthe Ġman a Ġcost . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġmodify Stack ( stack : ĠMutable List < Spell Datum <* >>, Ġctx : ĠCast ing Context ): ĠOperation Result ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠI Ġsee Ġwhy Ġv z ak ii Ġdid Ġthis : Ġyou Ġcan 't Ġray cast Ġout Ġto Ġinfinity ! ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠMAX _ DISTANCE : ĠDouble Ġ= Ġ 3 2 . 0 ĊĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġfun Ġray cast End ( origin : ĠVec 3 , Ġlook : ĠVec 3 ): ĠVec 3 Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġorigin . add ( look . normalize (). scale ( MAX _ DISTANCE )) ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠTry Ġto Ġget Ġa Ġvalue Ġof Ġthe Ġgiven Ġtype . ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġinline Ġfun Ġ< re ified ĠT Ġ: ĠAny > ĠList < Spell Datum <* >> . get Checked ( idx : ĠInt ): ĠT Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġx Ġ= Ġthis . getOrElse ( idx ) Ġ{ Ġthrow ĠCast Exception ( CastException . Reason . NOT _ EN OU GH _ ARGS , Ġidx , Ġthis . size ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġx . try Get () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠCheck Ġif Ġthe Ġvalue Ġat Ġthe Ġgiven Ġindex Ġis ĠOK . ĠWill Ġthrow Ġan Ġerror Ġotherwise . ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġinline Ġfun Ġ< re ified ĠT Ġ: ĠAny > ĠList < Spell Datum <* >> . assert Checked ( idx : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . get Checked < T >( idx ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġfun Ġspell ListOf ( var arg Ġvs : ĠAny ): ĠList < Spell Datum <* >> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġout Ġ= ĠArrayList < Spell Datum < *> >( vs . size ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( v Ġin Ġvs ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġout . add ( Spell Datum . make ( v )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġout ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġfun Ġmake Constant Op ( x : ĠSpell Datum < *> ): ĠOperator Ġ= Ġobject Ġ: ĠConst Man a Operator Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġval Ġargc : ĠInt ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget () Ġ= Ġ 0 ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġexecute ( args : ĠList < Spell Datum <* >>, Ġctx : ĠCast ing Context ): ĠList < Spell Datum <* >> Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf ( x ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }