package Ġbuilder Ċ Ċ import Ġlanguage . lines . Line Ċ import Ġlanguage . objects . Player Ċ Ċ class ĠPlayer Builder ( fileName : ĠString , Ġlines : ĠArray < Line >): ĠBuilder ( fileName ," item ", Ġlines , ĊĠĠĠĠĠĠĠ ĠPlayer (" self ") ĊĠĠĠĠĠĠĠ Ġ// TODO : Ġworld Ġgoes Ġhere ĊĠĠĠ Ġ) Ġ{ ĊĊĠĠĠ Ġ// TODO : ĠReplace Ġthese Ġwith Ġplayer Ġevents ĊĠĠĠ Ġprivate Ġval Ġright Click Ġ= Ġ" public ĠActionResult < ItemStack > Ġon Item Right Click ( World Ġworld , ĠEntity Player Ġplayer , ĠEnum Hand Ġhand )" ĊĠĠĠ Ġprivate Ġval Ġupdate Ġ= Ġ" public Ġvoid ĠonUpdate ( ItemStack Ġstack , ĠWorld Ġworld , ĠEntity Ġentity , Ġint Ġslot , Ġboolean Ġselected )" ĊĠĠĠ Ġprivate Ġval Ġhit Entity Ġ= Ġ" public Ġboolean Ġhit Entity ( ItemStack Ġstack , ĠEntity Living Base Ġtarget , ĠEntity Living Base Ġattacker )" ĊĊĠĠĠ Ġprivate Ġvar Ġmax Health Ġ= Ġ 2 0 ĊĠĠĠ Ġprivate Ġvar Ġattack Damage Ġ= Ġ 1 ĊĠĠĠ Ġprivate Ġvar Ġjump Multiplier Ġ= Ġ 1 . 0 ĊĊĠĠĠ Ġoverride Ġfun Ġvalidate Attributes () Ġ{ ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġpass To Next () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// TODO : ĠPass Ġdata Ġto Ġmod Ġbuilder Ċ // ĠĠĠĠĠĠĠ ĠMod Builder . register Item ( Item ( name , Ġtexture , Ġdescription , Ġstack Size , Ġsh iny , Ġmake Override Map ())) ĊĠĠĠ Ġ} Ċ Ċ // ĠĠĠ Ġoverride Ġfun Ġprocess Line ( line : ĠLine ) Ġ{ Ċ // ĠĠĠĠĠĠĠ Ġif ( context Ġ== Ġ" constructor ") Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġif ( line Ġis ĠSet Line ) Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen ( line . field ) Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" heart s " Ġ-> Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġheart s Ġ= Ġline . value . toInt () Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmax Health Ġ= Ġheart s Ġ* Ġ 2 Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch ( exception : ĠNumber FormatException ) Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġline . throw Error ( fileName , Ġ"${ line . value } Ġis Ġnot Ġa Ġvalid Ġinteger ") Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ċ // Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" strength " Ġ-> Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdamage Ġ= Ġline . value . toInt () Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġattack Damage Ġ= Ġdamage Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch ( exception : ĠNumber FormatException ) Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġline . throw Error ( fileName , Ġ"${ line . value } Ġis Ġnot Ġa Ġvalid Ġinteger ") Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ċ // Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" jump _ height " Ġ-> Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġheight Ġ= Ġline . value . toDouble () Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġjump Multiplier Ġ= Ġheight Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch ( exception : ĠNumber FormatException ) Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġline . throw Error ( fileName , Ġ"${ line . value } Ġis Ġnot Ġa Ġvalid Ġfloating - point Ġnumber ") Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ċ // ĠĠĠĠĠĠĠ Ġ} Ċ // Ċ // ĠĠĠĠĠĠĠ Ġelse Ġif ( context Ġin Ġvalid Be havi ours ) Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġevent Ġ= Ġvalid Be havi ours [ context ] Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġif ( event Ġ!= Ġnull ) Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġvisible Objects : ĠMap < String , ĠV ul can Object > Ġ= ĠgetAll Visible Objects ( event ) Ċ // Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif ( line Ġis ĠAction Line ) Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif ( visible Objects . containsKey ( line . target )) Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtarget Ġ= Ġvisible Objects [ line . target ] !! Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif ( target . isValid Message ( line . method )) Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġjava Function Call Ġ= Ġ"" Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġjava Function Call Ġ= Ġtarget . message To Java ( line . method , Ġline . arguments , Ġevent . parameters ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch ( exception : ĠIllegalArgumentException ) Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġline . throw Error ( fileName , exception . message Ġ?: Ġ" no Ġerror Ġmessage Ġwas Ġprovided ") Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ċ // Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif ( java Function Call . isNotEmpty ()) Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbehaviour Content [ context ]?. add ( java Function Call ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġline . throw Error ( fileName ," invalid Ġmessage Ġ\" ${ line . method }\" ") Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġline . throw Error ( fileName ," invalid Ġtarget Ġfor Ġmessage Ġ\" ${ line . target }\" ") Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ċ // ĠĠĠĠĠĠĠ Ġ} Ċ // ĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĠReturns Ġa Ġmap Ġfor Ġmethod Ġoverrides Ġfor Ġthe Ġjava Ġitem Ġobject . ĊĠĠĠĠ Ġ* ĠThe Ġkey Ġis Ġthe Ġmethod Ġdeclaration Ġline Ġand Ġthe Ġvalue Ġis Ġthe Ġmethod Ġcontent . Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġmake Override Map (): ĠMap < String , ĠString > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġoverrides : ĠHashMap < String , ĠString > Ġ= Ġhash Map Of () ĊĠĠĠĠĠĠĠ Ġbehaviour Content . as Sequence (). forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġcontent Ġ= Ġ"" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . value . as Sequence (). forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif ( content . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontent Ġ+= Ġ" Â ¶ " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontent Ġ+= Ġit ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( content . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( it . key ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" right _ click " Ġ-> Ġoverrides [ right Click ] Ġ= Ġcontent Ġ+ Ġ" Â ¶ return Ġsuper . on Item Right Click ( world , Ġplayer , Ġhand );" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" held " Ġ-> Ġoverrides [ update ] Ġ= Ġ" if ( selected Ġ&& Ġentity Ġinstanceof ĠEntity Player ) Ġ{ Â ¶ Entity Player Ġplayer Ġ= Ġ( Entity Player ) entity ; Â ¶ $ content Â ¶ }" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" hit _ entity " Ġ-> Ġoverrides [ hit Entity ] Ġ= Ġcontent Ġ+ Ġ" Â ¶ return Ġtrue ;" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġoverrides . toMap () ĊĠĠĠ Ġ} Ċ }