package Ġray . mint cat . barrier . utils Ċ Ċ import Ġkotlinx . serialization . Experimental Serialization Api Ċ import Ġme . clip . placeholder api . Placeholder API Ċ import Ġorg . bukkit . Bu kkit Ċ import Ġorg . bukkit . Location Ċ import Ġorg . bukkit . Sound Ċ import Ġorg . bukkit . command . Command Sender Ċ import Ġorg . bukkit . entity . Player Ċ import Ġorg . bukkit . inventory . ItemStack Ċ import Ġorg . bukkit . util . Number Conversions Ċ import Ġorg . bukkit . util . Vector Ċ import Ġray . mint cat . barrier . Barrier Ċ import Ġray . mint cat . barrier . common . Barrier Poly Ċ import Ġray . mint cat . barrier . common . permission . Permission Ċ import Ġtab ool ib . common . platform . function . adapt Player Ċ import Ġtab ool ib . common . platform . function . submit Ċ import Ġtab ool ib . common 5 . B aff le Ċ import Ġtab ool ib . module . ke ther . Ke ther Shell Ċ import Ġtab ool ib . module . ke ther . print Ke ther ErrorMessage Ċ import Ġtab ool ib . module . ui . Click Event Ċ import Ġtab ool ib . module . ui . type . Basic Ċ import Ġtab ool ib . platform . util . build Item Ċ import Ġjava . text . SimpleDateFormat Ċ import Ġjava . util .* ĊĊ Ċ fun ĠLocation . get Poly (): ĠBar rier Poly ? Ġ{ ĊĠĠĠ Ġreturn ĠBar rier . pol ys . first OrNull Ġ{ Ġit . in Node ( this ) Ġ} Ċ } Ċ Ċ fun ĠPermission . register () Ġ{ ĊĠĠĠ Ġif Ġ(! Barrier . permissions . map Ġ{ Ġit . id Ġ}. contains ( this . id )) Ġ{ ĊĠĠĠĠĠĠĠ ĠBar rier . permissions . add ( this ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun ĠString . as P api ( player : ĠPlayer ): ĠString Ġ{ ĊĠĠĠ Ġreturn ĠPlace holder API . set Place holders ( player , Ġthis ); Ċ } Ċ Ċ fun ĠCollection < String >. as P api ( player : ĠPlayer ): ĠList < String > Ġ{ ĊĠĠĠ Ġreturn Ġthis . map Ġ{ Ġit . as P api ( player ) Ġ} Ċ } Ċ Ċ fun ĠString . as Char (): ĠChar Ġ{ ĊĠĠĠ Ġreturn Ġthis . toCharArray ()[ 0 ] Ċ } Ċ Ċ fun ĠInt . as Char (): ĠChar Ġ{ ĊĠĠĠ Ġreturn Ġthis . toString (). toCharArray ()[ 0 ] Ċ } Ċ Ċ fun ĠLong . to Time String (): ĠString Ġ{ ĊĠĠĠ Ġval Ġsdf 2 Ġ= ĠSimpleDateFormat (" yyyy å¹´ MM æľĪ dd æĹ¥ HH æĹ¶ mm åĪĨ ss ç§Ĵ ") ĊĠĠĠ Ġreturn Ġsdf 2 . format ( Date ( this )) Ċ } Ċ Ċ val Ġtp Map Ġ= ĠHashMap < UUID , ĠLocation >() Ċ Ċ // å»¶ è¿ Ł ä¼ł éĢģ Ġ åįķä½į s Ċ fun ĠPlayer . tp Delay ( mint : ĠInt , Ġlocation To : ĠLocation ) Ġ{ ĊĠĠĠ Ġtp Map [ this . unique Id ] Ġ= Ġthis . location ĊĠĠĠ Ġthis . info ("${ mint } s Ġ åĲİ å¼Ģå§ĭ ä¼ł éĢģ Ġ è¯· åĭ ¿ ç§»åĬ¨ !") ĊĠĠĠ Ġsubmit ( delay Ġ= Ġmint . to Long () Ġ* Ġ 2 0 ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġa Ġ= Ġthis @ tp Delay . location ĊĠĠĠĠĠĠĠ Ġval Ġb Ġ= Ġtp Map [ this @ tp Delay . unique Id ] Ġ?: Ġreturn @ submit ĊĠĠĠĠĠĠĠ Ġif Ġ( a . x Ġ!= Ġb . x Ġ|| Ġa . y Ġ!= Ġb . y Ġ|| Ġa . z Ġ!= Ġb . z ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis @ tp Delay . error (" çĶ±äºİ æĤ¨çļĦ ç§»åĬ¨ å·² åıĸæ¶Ī ä¼ł éĢģ !") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtp Map . remove ( this @ tp Delay . unique Id ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ submit ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġthis @ tp Delay . tele port ( location To ) ĊĠĠĠĠĠĠĠ Ġtp Map . remove ( this @ tp Delay . unique Id ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun Ġfrom Location ( location : ĠLocation ): ĠString Ġ{ ĊĠĠĠ Ġreturn Ġ"${ location . world ?. name }, ${ location . x }, ${ location . y }, ${ location . z }". replace (".", Ġ"__ ") Ċ } Ċ Ċ fun Ġto Location ( source : ĠString ): ĠLocation Ġ{ ĊĠĠĠ Ġreturn Ġsource . replace ("__ ", Ġ". "). split ("," ). run Ġ{ ĊĠĠĠĠĠĠĠ ĠLocation ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠBu kkit . get World ( get ( 0 )), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget OrElse ( 1 ) Ġ{ Ġ" 0 " Ġ}. as Double (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget OrElse ( 2 ) Ġ{ Ġ" 0 " Ġ}. as Double (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget OrElse ( 3 ) Ġ{ Ġ" 0 " Ġ}. as Double () ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun ĠString . as Double (): ĠDouble Ġ{ ĊĠĠĠ Ġreturn ĠNumber Conversions . toDouble ( this ) Ċ } Ċ Ċ val ĠBoolean . display : ĠString ĊĠĠĠ Ġget () Ġ= Ġif Ġ( this ) Ġ" Â§ a åħģè®¸ " Ġelse Ġ" Â§ c éĺ» æŃ¢ " Ċ Ċ /** Ċ Ġ* Ġ éĽĨåĲĪ æĭ Ĩ ç®± æĵįä½ľ Ċ Ġ* Ċ Ġ* Ġ@ receiver Ġ çĽ®æłĩ éĽĨåĲĪ Ċ Ġ* Ġ@ return Ġ çĽ®æłĩ éĽĨåĲĪ éĩĮ çļĦæīĢæľī éĽĨåĲĪ åĮħåĲ« çļĦ åħĥç´ł Ċ Ġ*/ Ċ Ċ fun Ġ< T > ĠCollection < Collection < T >> . dev anning (): ĠCollection < T > Ġ{ ĊĠĠĠ Ġval Ġlist Ġ= Ġmutable ListOf < T >() ĊĠĠĠ Ġthis @ dev anning . as Sequence (). map Ġ{ Ġa Ġ-> ĊĠĠĠĠĠĠĠ Ġa . map Ġ{ Ġlist . add ( it ) Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġlist Ċ } Ċ Ċ fun Ġ< T > ĠCollection < T >. contains ( element : ĠCollection < T >): ĠBoolean Ġ{ ĊĠĠĠ Ġelement . forEach Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( this . contains ( it )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġfalse Ċ } Ċ Ċ /** Ċ Ġ* ĠåĪ¤æĸŃ åĿĲæłĩ æĺ¯åĲ¦ åĨį ä¸¤ä¸ª çĤ¹ å½¢ æĪĲ çļĦ çŁ© å½¢ åĨħ Ċ Ġ* Ċ Ġ* Ġ@ receiver Ġ åºĶ åĪ¤æĸŃ çļĦ åĿĲæłĩ Ċ Ġ* Ġ@ param Ġpos A Ġ åĲĳ éĩı çĤ¹ A Ċ Ġ* Ġ@ param Ġpos B Ġ åĲĳ éĩı çĤ¹ B Ċ Ġ* Ġ@ return Ġåľ¨ èĮĥåĽ´ åĨħ ä¸º true Ġ åıį ä¹ĭ ä¸º false Ċ Ġ* Ġ@ since Ġ 1 . 0 Ċ Ġ*/ Ċ fun ĠLocation . isIn AABB ( pos A : ĠLocation , Ġpos B : ĠLocation ): ĠBoolean Ġ{ ĊĠĠĠ Ġval Ġp A Ġ= ĠVector ( pos A . x . coerce At Least ( pos B . x ), Ġpos A . y . coerce At Least ( pos B . y ), Ġpos A . z . coerce At Least ( pos B . z )) ĊĠĠĠ Ġval Ġp B Ġ= ĠVector ( pos A . x . coerce At Most ( pos B . x ), Ġpos A . y . coerce At Most ( pos B . y ), Ġpos A . z . coerce At Most ( pos B . z )) ĊĠĠĠ Ġreturn Ġthis . to Vector (). isIn AABB ( p B , Ġp A ) Ċ } Ċ Ċ /** Ċ Ġ* Ġ ç»Ļ çĽ®æłĩ çİ© å®¶ åıĳéĢģ ä¸ĢäºĽ æ¶Īæģ¯ Ġ( æıĲç¤º ) Ċ Ġ* Ċ Ġ* Ġ@ receiver Ġ çĽ®æłĩ çİ© å®¶ Ċ Ġ* Ġ@ param Ġblock Ġ åıĳéĢģ çļĦåĨħå®¹ Ġåı¯ åĮħåĲ« Ġ& Ġä¼ļ èĩªåĬ¨ æĽ¿æį¢ ä¸º Ċ Ġ* Ġ@ since Ġ 1 . 0 Ċ Ġ*/ Ċ fun ĠPlayer . info ( var arg Ġblock : ĠString ) Ġ{ ĊĠĠĠ Ġblock . forEach Ġ{ ĊĠĠĠĠĠĠĠ Ġto Info ( this , Ġit ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun ĠPlayer . info Title ( info : ĠString , Ġsub : ĠString ) Ġ{ ĊĠĠĠ Ġthis . send Title ( info . replace ("& ", Ġ" Â§ "), Ġsub . replace ("& ", Ġ" Â§ "), Ġ 1 0 , Ġ 2 5 , Ġ 1 0 ) Ċ } Ċ Ċ /** Ċ Ġ* Ġ ç»Ļ çĽ®æłĩ çİ© å®¶ åıĳéĢģ ä¸ĢäºĽ æ¶Īæģ¯ Ġ( èŃ¦ åĳĬ ) Ċ Ġ* Ċ Ġ* Ġ@ receiver Ġ çĽ®æłĩ çİ© å®¶ Ċ Ġ* Ġ@ param Ġblock Ġ åıĳéĢģ çļĦåĨħå®¹ Ġåı¯ åĮħåĲ« Ġ& Ġä¼ļ èĩªåĬ¨ æĽ¿æį¢ ä¸º Ċ Ġ* Ġ@ since Ġ 1 . 0 Ċ Ġ*/ Ċ fun ĠPlayer . error ( var arg Ġblock : ĠString ) Ġ{ ĊĠĠĠ Ġblock . forEach Ġ{ ĊĠĠĠĠĠĠĠ Ġto Error ( this , Ġit ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun ĠBasic . set ( c : ĠChar , Ġbuild Item : ĠItemStack , Ġfunction : Ġ( event : ĠClick Event ) Ġ-> ĠUnit ) Ġ{ ĊĠĠĠ Ġset ( c , Ġbuild Item ( build Item ) Ġ{ ĊĠĠĠĠĠĠĠ Ġcolored () ĊĠĠĠ Ġ}) ĊĠĠĠ ĠonClick ( c , Ġfunction ) Ċ } Ċ Ċ fun ĠCommand Sender . error ( var arg Ġblock : ĠString ) Ġ{ ĊĠĠĠ Ġblock . forEach Ġ{ ĊĠĠĠĠĠĠĠ Ġto Error ( this , Ġit ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun ĠCommand Sender . info ( var arg Ġblock : ĠString ) Ġ{ ĊĠĠĠ Ġblock . forEach Ġ{ ĊĠĠĠĠĠĠĠ Ġto Info ( this , Ġit ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ /** Ċ Ġ* Ġ ç»Ļ ç®¡çĲĨ èĢħ åıĳéĢģ DEBUG ä¿¡æģ¯ Ċ Ġ* Ġ ç»Ļ ç®¡çĲĨ èĢħ ĠRay _ H ug hes ĠB ing Zi 2 3 3 Ċ Ġ* Ċ Ġ* Ġ@ param Ġblock Ġ åıĳéĢģ çļĦåĨħå®¹ Ġåı¯ åĮħåĲ« Ġ& Ġä¼ļ èĩªåĬ¨ æĽ¿æį¢ ä¸º Ċ Ġ* Ġ@ since Ġ 1 . 0 Ċ Ġ*/ Ċ fun Ġdebug ( var arg Ġblock : ĠAny ) Ġ{ ĊĠĠĠ Ġif Ġ( Bu kkit . getPlayer Exact (" Ray _ H ug hes ") Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠ Ġblock . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġto Error ( Bu kkit . getPlayer Exact (" Ray _ H ug hes ") !! , Ġit . toString ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ /** Ċ Ġ* Ġ åıĳéĢģ ä¿¡æģ¯ Ċ Ġ* Ċ Ġ* Ġ@ param Ġsender Ġ æİ¥æĶ¶ èĢħ Ċ Ġ* Ġ@ param Ġmessage Ġ ä¿¡æģ¯ Ċ Ġ* Ġ@ since Ġ 1 . 0 Ċ Ġ*/ Ċ fun Ġto Info ( sender : ĠCommand Sender , Ġmessage : ĠString ) Ġ{ ĊĠĠĠ Ġsender . sendMessage (" Â§ 8 [ Â§ a ĠBar rier ĠÂ§ 8 ] ĠÂ§ 7 ${ message . replace ("& ", Ġ" Â§ ") }") ĊĠĠĠ Ġif Ġ( sender Ġis ĠPlayer Ġ&& Ġ! co old own . hasNext ( sender . name )) Ġ{ ĊĠĠĠĠĠĠĠ Ġsender . play Sound ( sender . location , ĠSound . UI _ BUTTON _ CLICK , Ġ 1 f , Ġ( 1 .. 2 ). random (). toFloat ()) ĊĠĠĠ Ġ} Ċ } Ċ Ċ /** Ċ Ġ* Ġ åıĳéĢģ ä¿¡æģ¯ Ċ Ġ* Ċ Ġ* Ġ@ param Ġsender Ġ æİ¥æĶ¶ èĢħ Ċ Ġ* Ġ@ param Ġmessage Ġ ä¿¡æģ¯ Ċ Ġ* Ġ@ since Ġ 1 . 0 Ċ Ġ*/ Ċ fun Ġto Error ( sender : ĠCommand Sender , Ġmessage : ĠString ) Ġ{ ĊĠĠĠ Ġsender . sendMessage (" Â§ 8 [ Â§ 4 ĠBar rier ĠÂ§ 8 ] ĠÂ§ 7 ${ message . replace ("& ", Ġ" Â§ ") }") ĊĠĠĠ Ġif Ġ( sender Ġis ĠPlayer Ġ&& Ġ! co old own . hasNext ( sender . name )) Ġ{ ĊĠĠĠĠĠĠĠ Ġsender . play Sound ( sender . location , ĠSound . ENTITY _ V ILL AGER _ NO , Ġ 1 f , Ġ( 1 .. 2 ). random (). toFloat ()) ĊĠĠĠ Ġ} Ċ } Ċ Ċ /** Ċ Ġ* Ġ åıĳéĢģ ä¿¡æģ¯ Ċ Ġ* Ċ Ġ* Ġ@ param Ġsender Ġ æİ¥æĶ¶ èĢħ Ċ Ġ* Ġ@ param Ġmessage Ġ ä¿¡æģ¯ Ċ Ġ* Ġ@ since Ġ 1 . 0 Ċ Ġ*/ Ċ fun Ġto Done ( sender : ĠCommand Sender , Ġmessage : ĠString ) Ġ{ ĊĠĠĠ Ġsender . sendMessage (" Â§ 8 [ Â§ 6 ĠBar rier ĠÂ§ 8 ] ĠÂ§ 7 ${ message . replace ("& ", Ġ" Â§ ") }") ĊĠĠĠ Ġif Ġ( sender Ġis ĠPlayer Ġ&& Ġ! co old own . hasNext ( sender . name )) Ġ{ ĊĠĠĠĠĠĠĠ Ġsender . play Sound ( sender . location , ĠSound . ENTITY _ EX PER I ENCE _ OR B _ P ICK UP , Ġ 1 f , Ġ( 1 .. 2 ). random (). toFloat ()) ĊĠĠĠ Ġ} Ċ } Ċ Ċ /** Ċ Ġ* Ġ åıĳéĢģ ä¿¡æģ¯ åĪ° åĲİåı° Ċ Ġ* Ċ Ġ* Ġ@ param Ġmessage Ġ ä¿¡æģ¯ Ċ Ġ* Ġ@ since Ġ 1 . 0 Ċ Ġ*/ Ċ fun Ġto Console ( message : ĠString ) Ġ{ ĊĠĠĠ ĠBu kkit . get Console Sender (). sendMessage (" Â§ 8 [ Â§ e ĠBar rier ĠÂ§ 8 ] ĠÂ§ 7 ${ message . replace ("& ", Ġ" Â§ ") }") Ċ } Ċ Ċ /** Ċ Ġ* Ġ éŁ³ æķĪ çļĦä¸Ģä¸ª CD Ġ éĺ² æŃ¢ åĻ ª éŁ³ Ċ Ġ*/ Ċ val Ġcool down Ġ= ĠB aff le . of ( 1 0 0 ) Ċ Ċ fun ĠList < String >. eval ( player : ĠPlayer ) Ġ{ ĊĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠ ĠKe ther Shell . eval ( this , Ġsender Ġ= Ġadapt Player ( player )) ĊĠĠĠ Ġ} Ġcatch Ġ( e : ĠThrowable ) Ġ{ ĊĠĠĠĠĠĠĠ Ġe . print Ke ther ErrorMessage () ĊĠĠĠ Ġ} Ċ } Ċ Ċ infix Ġfun ĠString . p api ( player : ĠPlayer ): ĠString Ġ{ ĊĠĠĠ Ġreturn ĠPlace holder API . set Place holders ( player , Ġthis ); Ċ }