package Ġdial ight . extensions čĊč Ċ import Ġcom . flow powered . math . vector . Vector 3 d č Ċ import Ġorg . spongepowered . api . block . Block Types č Ċ import Ġorg . spongepowered . api . entity . Entity č Ċ import Ġorg . spongepowered . api . entity . EntityType č Ċ import Ġorg . spongepowered . api . entity . living . player . Player č Ċ import Ġorg . spongepowered . api . world . Location č Ċ import Ġorg . spongepowered . api . world . World č Ċ import Ġjava . io . File č Ċ import Ġjava . io . File OutputStream č Ċ import Ġjava . io . IOException č Ċ import Ġjava . util .* č Ċ import Ġjava . util . zip . Zip File č Ċ import Ġsun . awt . windows . Theme Reader . getPosition č Ċ import Ġorg . spongepowered . api . util . block ray . Block Ray Hit č Ċ import Ġorg . spongepowered . api . util . block ray . Block Ray čĊčĊč Ċ object ĠUtils Ġ{ čĊčĊĠĠĠ Ġfun Ġmatch World ( world : ĠFile ): ĠBoolean Ġ{ čĊĠĠĠĠĠĠĠ Ġif Ġ(! world . isDirectory ) Ġreturn Ġfalse čĊĠĠĠĠĠĠĠ Ġif Ġ( File ( world , Ġ" level . dat "). exists ()) Ġreturn Ġtrue čĊĠĠĠĠĠĠĠ Ġval Ġregion Ġ= ĠFile ( world , Ġ" region ") čĊĠĠĠĠĠĠĠ Ġif Ġ(! region . exists ()) Ġreturn Ġfalse čĊĠĠĠĠĠĠĠ Ġif Ġ(! region . isDirectory ) Ġreturn Ġfalse čĊĠĠĠĠĠĠĠ Ġreturn Ġregion . list Files () !!. isNotEmpty () čĊĠĠĠ Ġ} čĊčĊč Ċ // ĠĠĠ Ġfun Ġfast Item Equals ( st : ĠItemStack , Ġnd : ĠItemStack ?): ĠBoolean Ġ{ č Ċ // ĠĠĠĠĠĠĠ Ġif Ġ( nd Ġ== Ġnull ) Ġreturn Ġfalse č Ċ // ĠĠĠĠĠĠĠ Ġif Ġ( st . hashCode () Ġ!= Ġnd . hashCode ()) Ġreturn Ġfalse č Ċ // ĠĠĠĠĠĠĠ Ġif Ġ( st . type Ġ!= Ġnd . type ) Ġreturn Ġfalse č Ċ // ĠĠĠĠĠĠĠ Ġif Ġ( st . getItem Meta (). get DisplayName () Ġ!= Ġnd . getItem Meta (). get DisplayName ()) Ġreturn Ġfalse č Ċ // ĠĠĠĠĠĠĠ Ġif Ġ( st . get Enchant ments (). size Ġ!= Ġnd . get Enchant ments (). size ) Ġreturn Ġfalse č Ċ // ĠĠĠĠĠĠĠ Ġif Ġ( st . getItem Meta (). get L ore (). size Ġ!= Ġnd . getItem Meta (). get L ore (). size ) Ġreturn Ġfalse č Ċ // ĠĠĠĠĠĠĠ Ġval Ġlst Ġ= Ġst . getItem Meta (). get L ore () č Ċ // ĠĠĠĠĠĠĠ Ġval Ġl nd Ġ= Ġnd . getItem Meta (). get L ore () č Ċ // ĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġst . getItem Meta (). get L ore (). size ) č Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( lst . get ( i ) Ġ!= Ġl nd . get ( i )) Ġreturn Ġfalse č Ċ // č Ċ // ĠĠĠĠĠĠĠ Ġ// return Ġst . is Similar ( nd ); č Ċ // ĠĠĠĠĠĠĠ Ġreturn Ġtrue č Ċ // ĠĠĠ Ġ} čĊč Ċ // ĠĠĠ Ġfun Ġfast Item Remove ( inv : ĠInventory , Ġst : ĠItemStack ) Ġ{ č Ċ // ĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġinv . get Contents (). size ) č Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( fast Item Equals ( st , Ġinv . get Contents ()[ i ])) Ġinv . clear ( i ) č Ċ // ĠĠĠ Ġ} čĊčĊĠĠĠ Ġ/** čĊĠĠĠĠ Ġ* ĠÐ ¤ ÑĥÐ½Ðº ÑĨÐ¸Ñı ĠÐ½Ð° Ñħ Ð¾Ð¶ Ð´ ÐµÐ½Ð¸Ñı ĠÐ¿ÐµÑĢ Ð² Ð¾Ð³Ð¾ ĠÐ¿ Ð¾Ð¿ Ð°Ð² ÑĪ ÐµÐ³Ð¾ ÑģÑı ĠÐ± Ð» Ð¾Ðº Ð° čĊĠĠĠĠ Ġ* Ġ@ param Ġl ĠÐ¢ Ð¾Ñĩ ÐºÐ° ĠÐ¾ÑĤ Ñģ ÑĩÐµÑĤ Ð° čĊĠĠĠĠ Ġ* Ġ@ param Ġv ĠÐ ¨ Ð°Ð³ čĊĠĠĠĠ Ġ* Ġ@ param Ġi ĠÐļ Ð¾Ð» Ð¸Ñĩ ÐµÑģÑĤÐ²Ð¾ ĠÑĪ Ð°Ð³ Ð¾Ð² čĊĠĠĠĠ Ġ* Ġ@ return ĠÐŁ ÐµÑĢ Ð² ÑĭÐ¹ ĠÐ¿ Ð¾Ð¿ Ð°Ð² ÑĪÐ¸ Ð¹ ÑģÑı ĠÐ± Ð» Ð¾Ðº čĊĠĠĠĠ Ġ*/ čĊĠĠĠ Ġfun Ġget Target Block ( l : ĠLocation < World >, Ġv : ĠVector 3 d , Ġi : ĠInt ): ĠLocation < World > Ġ{ č Ċ // ĠĠĠĠĠĠĠ Ġval Ġblock Ray Ġ= ĠBlock Ray . from ( l ). skip Filter ( Block Ray . only Air Filter ()). stop Filter ( Block Ray . all Filter ()). build () č Ċ // ĠĠĠĠĠĠĠ Ġval Ġhit Opt Ġ= Ġblock Ray . end () č Ċ // ĠĠĠĠĠĠĠ Ġif Ġ( hit Opt . isPresent ) Ġ{ č Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġhit Ġ= Ġhit Opt . get () č Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġprintln ( č Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Found Ġ" Ġ+ Ġhit . location . block Type Ġ+ Ġ" Ġblock Ġat Ġ" č Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ+ Ġhit . location Ġ+ Ġ" Ġwith Ġintersection Ġat Ġ" Ġ+ Ġhit . position č Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġ) č Ċ // ĠĠĠĠĠĠĠ Ġ} č Ċ // ĠĠĠĠĠĠĠ Ġv . normalize () čĊĠĠĠĠĠĠĠ Ġvar Ġr Ġ= Ġl čĊĠĠĠĠĠĠĠ Ġfor Ġ( j Ġin Ġ 1 .. i ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġr Ġ= Ġr . add ( v ) čĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġb Ġ= Ġr . block čĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( b . type Ġ!= ĠBlock Types . AIR ) Ġbreak čĊĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠ Ġreturn ĠLocation ( r . extent , Ġr . block Position ) čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġ/** čĊĠĠĠĠ Ġ* ĠÐĺ Ñī ÐµÑĤ ĠÑģ ÑĥÑī Ð½Ð¾ÑģÑĤÑĮ ĠÐ¿Ð¾ ĠÐ½Ð°Ð¿ ÑĢÐ°Ð² Ð» ÐµÐ½Ð¸ Ñİ ĠÐº Ñĥ Ð´Ð° ĠÑģÐ¼ Ð¾ÑĤ ÑĢ Ð¸ÑĤ Ġplayer . čĊĠĠĠĠ Ġ* Ġ@ param Ġplayer ĠÐĺ Ð³ÑĢ Ð¾Ðº ĠÐ¾ÑĤ ĠÐºÐ¾ÑĤÐ¾ÑĢ Ð¾Ð³Ð¾ ĠÐ¸ Ð´ ÐµÑĤ ĠÐ¿Ð¾ Ð¸Ñģ Ðº . čĊĠĠĠĠ Ġ* Ġ@ param Ġdistance ĠÐł Ð°Ñģ ÑģÑĤ Ð¾Ñı Ð½Ð¸ Ðµ ĠÐ½Ð° ĠÐºÐ¾ÑĤÐ¾ÑĢ Ð¾Ð¼ ĠÐ¸ Ñī ÑĥÑĤ ÑģÑı ĠÑģ ÑĥÑī Ð½Ð¾ÑģÑĤÐ¸ . čĊĠĠĠĠ Ġ* Ġ@ param Ġdelta ĠÐ ¨ Ð¸ ÑĢÐ¸ Ð½Ð° ĠÐ¿ÑĢ Ð¾Ð²ÐµÑĢ ÐºÐ¸ . čĊĠĠĠĠ Ġ* Ġ@ param Ġtypes čĊĠĠĠĠ Ġ* Ġ@ return ĠÐĿ Ð°Ð¹ Ð´ ÐµÐ½ Ð½Ð°Ñı ĠÑģ ÑĥÑī Ð½Ð¾ÑģÑĤÑĮ ĠÐ¸Ð»Ð¸ Ġnull , ĠÐµÑģÐ»Ð¸ ĠÑģ ÑĥÑī Ð½Ð¾ÑģÑĤÑĮ ĠÐ½Ðµ ĠÐ½ Ð°Ð¹ Ð´ ÐµÐ½Ð° . čĊĠĠĠĠ Ġ*/ čĊčĊĠĠĠ Ġfun Ġget En By Direction ( player : ĠPlayer , Ġdistance : ĠDouble , Ġdelta : ĠDouble , Ġvar arg Ġtypes : ĠEntityType ): ĠEntity ? Ġ{ čĊĠĠĠĠĠĠĠ Ġval Ġv Ġ= Ġplayer . direction čĊĠĠĠĠĠĠĠ Ġval Ġl Ġ= Ġplayer . eye Location . position . add ( v ). add ( v ) čĊĠĠĠĠĠĠĠ Ġval Ġhalf Ġ= Ġdistance Ġ/ Ġ 2 čĊĠĠĠĠĠĠĠ Ġval Ġcenter Ġ= Ġl . add ( v . clone (). mul ( half )) Ġ Ġ// ĠÐ ¦ ÐµÐ½ÑĤ ÑĢ ĠÐ¾ÑĤ ÑĢ ÐµÐ· ÐºÐ° čĊĠĠĠĠĠĠĠ Ġval Ġentities : ĠCollection < Entity > Ġ= Ġif ( types . isEmpty ()) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġplayer . world . get Near by Entities ( center , Ġhalf ) čĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġet ypes Ġ= Ġtypes . asList () čĊĠĠĠĠĠĠĠĠĠĠĠ Ġplayer . get Near by Entities Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif (! et ypes . contains ( it . type )) Ġreturn @ get Near by Entities Ġfalse čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . location . position . distance ( center ) Ġ<= Ġhalf čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠ Ġreturn Ġget En By Direction _ impl ( l , Ġv , Ġdelta , Ġentities ) čĊĠĠĠ Ġ} čĊĠĠĠ Ġfun Ġget En By Direction ( player : ĠPlayer , Ġdistance : ĠDouble , Ġdelta : ĠDouble , Ġentities : ĠCollection < Entity >): ĠEntity ? Ġ{ čĊĠĠĠĠĠĠĠ Ġval Ġv Ġ= Ġplayer . direction čĊĠĠĠĠĠĠĠ Ġval Ġl Ġ= Ġplayer . eye Location . position . add ( v ). add ( v ) čĊĠĠĠĠĠĠĠ Ġreturn Ġget En By Direction ( l , Ġv , Ġdistance , Ġdelta , Ġentities ) čĊĠĠĠ Ġ} čĊĠĠĠ Ġfun Ġget En By Direction ( location : ĠVector 3 d , Ġdirection : ĠVector 3 d , Ġdistance : ĠDouble , Ġdelta : ĠDouble , Ġentities : ĠCollection < Entity >): ĠEntity ? Ġ{ čĊĠĠĠĠĠĠĠ Ġval Ġhalf Ġ= Ġdistance Ġ/ Ġ 2 čĊĠĠĠĠĠĠĠ Ġval Ġcenter Ġ= Ġlocation . add ( direction . clone (). mul ( half )) Ġ Ġ// ĠÐ ¦ ÐµÐ½ÑĤ ÑĢ ĠÐ¾ÑĤ ÑĢ ÐµÐ· ÐºÐ° čĊĠĠĠĠĠĠĠ Ġval Ġfiltered Ġ= Ġentities . filter Ġ{ Ġit . location . position . distance ( center ) Ġ<= Ġhalf Ġ} čĊĠĠĠĠĠĠĠ Ġreturn Ġget En By Direction _ impl ( location , Ġdirection , Ġdelta , Ġfiltered ) čĊĠĠĠ Ġ} čĊĠĠĠ Ġprivate Ġfun Ġget En By Direction _ impl ( location : ĠVector 3 d , Ġdirection : ĠVector 3 d , Ġdelta : ĠDouble , Ġentities : ĠCollection < Entity >): ĠEntity ? Ġ{ čĊĠĠĠĠĠĠĠ Ġvar Ġclosest Entity : ĠEntity ? Ġ= Ġnull čĊĠĠĠĠĠĠĠ Ġvar Ġclosest Proj Ġ= Ġdelta čĊĠĠĠĠĠĠĠ Ġfor Ġ( en Ġin Ġentities ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġt Ġ= Ġen . location . position . add ( 0 . 0 , Ġ 1 . 0 , Ġ 0 . 0 ) čĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcur Proj Ġ= Ġprojection To Ray ( location , Ġdirection , Ġt ) čĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( cur Proj Ġ<= Ġclosest Proj ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġclosest Proj Ġ= Ġcur Proj čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġclosest Entity Ġ= Ġen čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġ Ġ// ĠÐ£ ÑģÐ» Ð¾Ð² Ð¸Ðµ ĠÐ½Ð° Ñħ Ð¾Ð¶ Ð´ ÐµÐ½Ð¸Ñı ĠÐ± Ð»Ð¸ Ð¶ Ð°Ð¹ ÑĪ ÐµÐ¹ ĠÐº ĠÐ¿ÑĢ Ñı Ð¼ Ð¾Ð¹ ĠÑģ ÑĥÑī Ð½Ð¾ÑģÑĤÐ¸ čĊĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠ Ġreturn Ġclosest Entity čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġfun Ġarr List ( var arg Ġargs : ĠString ): ĠArrayList < String > Ġ{ čĊĠĠĠĠĠĠĠ Ġval Ġret Ġ= ĠArrayList < String >( args . size ) čĊĠĠĠĠĠĠĠ Ġfor Ġ( arg Ġin Ġargs ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġret . add ( arg ) čĊĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠ Ġreturn Ġret čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġfun Ġadd All ( list : ĠMutable List < String >, Ġvar arg Ġargs : ĠString ) Ġ{ čĊĠĠĠĠĠĠĠ Ġfor Ġ( arg Ġin Ġargs ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġlist . add ( arg ) čĊĠĠĠĠĠĠĠ Ġ} čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġfun Ġtop Div ( a : ĠInt , Ġb : ĠInt ): ĠInt Ġ{ čĊĠĠĠĠĠĠĠ Ġreturn Ġ( a Ġ+ Ġ( b Ġ- Ġ 1 )) Ġ/ Ġb čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġ@ Throws ( IOException :: class ) čĊĠĠĠ Ġfun Ġunzip ( zip File : ĠFile , Ġdest : ĠFile ) Ġ{ čĊĠĠĠĠĠĠĠ ĠZip File ( zip File ). use Ġ{ Ġzip Ġ-> čĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġentries Ġ= Ġzip . entries () čĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ( entries . hasMore Elements ()) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġentry Ġ= Ġentries . nextElement () čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġentry Dest Ġ= ĠFile ( dest , Ġentry . name ) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( entry . isDirectory ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġentry Dest . mkdir s () čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġentry Dest . parent File . mkdir s () čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġ` in ` Ġ= Ġzip . getInputStream ( entry ) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠFileOutputStream ( entry Dest ). use Ġ{ Ġout Ġ-> čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠIO Utils . copy ( in , Ġout ); čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠIO Utils . close Quiet ly ( in ); čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠ Ġ} čĊĠĠĠ Ġ} čĊč Ċ } čĊ