package Ġcom . github . l azo young . craft games . impl . game . module Ċ Ċ import Ġcom . github . l azo young . craft games . api . CommandHandler Ċ import Ġcom . github . l azo young . craft games . api . Timer Ċ import Ġcom . github . l azo young . craft games . api . module . Command Module Ċ import Ġcom . github . l azo young . craft games . api . script . Game Script Ċ import Ġcom . github . l azo young . craft games . impl . Main Ċ import Ġcom . github . l azo young . craft games . impl . game . Game Ċ import Ġcom . github . l azo young . craft games . impl . game . Game Layout Ċ import Ġcom . github . l azo young . craft games . impl . game . player . Player Data Ċ import Ġio . github . j ore l ali . command api . api . Command API Ċ import Ġio . github . j ore l ali . command api . api . Command Executor Ċ import Ġio . github . j ore l ali . command api . api . Command Permission Ċ import Ġio . github . j ore l ali . command api . api . arguments . Argument Ċ import Ġorg . bukkit . command . Prox ied Command Sender Ċ import Ġorg . bukkit . configuration . file . Yaml Configuration Ċ import Ġorg . bukkit . entity . Entity Ċ import Ġorg . bukkit . entity . Player Ċ import Ġorg . bukkit . scheduler . Bu kkit Runnable Ċ import Ġorg . bukkit . scheduler . Bu kkit Task Ċ import Ġorg . bukkit . util . io . Bu kkit Object InputStream Ċ import Ġorg . bukkit . util . io . Bu kkit Object OutputStream Ċ import Ġjava . io .* Ċ import Ġjava . nio . file . Paths Ċ import Ġjava . util . function . Consumer Ċ Ċ class ĠCommand Module Service ( ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġscript : ĠGame Script , ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġlayout : ĠGame Layout Ċ ) Ġ: ĠCommand Module , ĠService Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġtasks Ġ= ĠArrayList < Bu kkit Task >() ĊĊĠĠĠ Ġoverride Ġfun Ġset Log Verb osity ( verbose : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġscript . debug Ġ= Ġverbose ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġregister ( name : ĠString , Ġpermissions : ĠCommand Permission , Ġaliases : ĠArray < String > ?, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġargs : ĠLinkedHashMap < String , ĠArgument > ?, Ġhandler : ĠCommand Handler ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġexecutor Ġ= ĠCommand Executor Ġ{ Ġsender , Ġarguments Ġ-> ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcal lee Ġ= Ġif Ġ( sender Ġis ĠPro x ied Command Sender ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsender . callee ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsender ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( callee ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠPlayer Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġplayer Data Ġ= ĠPlayer Data . get ( callee ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( player Data ?. is Online () Ġ== Ġtrue ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhandler . run ( player Data . get Game (). module , Ġcal lee , Ġarguments ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ Command Executor ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( t : ĠThrowable ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġscript . write StackTrace ( t ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠEntity Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġgame Ġ= ĠGame . getBy World ( callee . world ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( game Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhandler . run ( game . module , Ġcal lee , Ġarguments ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ Command Executor ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( t : ĠThrowable ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġscript . write StackTrace ( t ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġsender . sendMessage ("\ u 0 0 A 7 e This Ġcommand Ġis Ġinactive .") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠCommand API . getInstance (). register ( name , Ġpermissions , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaliases Ġ?: Ġempty Array (), Ġargs Ġ?: ĠLinkedHashMap (), Ġexecutor ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġrepeat ( counter : ĠInt , Ġinterval : ĠTimer , Ġtask : ĠRunnable ): ĠBu kkit Task Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( interval . to Tick () Ġ< Ġ 1 L ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠIllegalArgumentException (" Repeat Ġinterval Ġis Ġtoo Ġshort ! Ġ(< Ġ 1 Ġtick )") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġbu kkit Task Ġ= Ġobject Ġ: ĠBu kkit Runnable () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġcount Ġ= Ġcounter ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġrun () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( count -- Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtask . run () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( t : ĠThrowable ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġscript . write StackTrace ( t ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . cancel () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}. run Task Timer ( Main . instance , Ġ 0 L , Ġinterval . to Tick ()) ĊĊĠĠĠĠĠĠĠ Ġtasks . add ( bukkit Task ) ĊĠĠĠĠĠĠĠ Ġreturn Ġbu kkit Task ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġwait ( delay : ĠTimer , Ġtask : ĠRunnable ): ĠBu kkit Task Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( delay . to Tick () Ġ< Ġ 1 L ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠIllegalArgumentException (" Wait Ġdelay Ġis Ġtoo Ġshort ! Ġ(< Ġ 1 Ġtick )") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġbu kkit Task Ġ= Ġobject Ġ: ĠBu kkit Runnable () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġrun () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtask . run () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( t : ĠThrowable ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġscript . write StackTrace ( t ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}. run Task Later ( Main . instance , Ġdelay . to Tick ()) ĊĊĠĠĠĠĠĠĠ Ġtasks . add ( bukkit Task ) ĊĠĠĠĠĠĠĠ Ġreturn Ġbu kkit Task ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠgetFile ( path : ĠString ): ĠFile Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( Paths . get ( path ). is Absolute ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠIllegalArgumentException (" Absolute Ġpath Ġis Ġnot Ġallowed .") ĊĊĠĠĠĠĠĠĠ Ġval Ġfile Ġ= Ġlayout . root . resolve ( path ). to File () ĊĊĠĠĠĠĠĠĠ Ġif Ġ(! file . isFile ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfile . parent File !!. mkdir s () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfile . createNew File () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġfile ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġread Object Stream ( file : ĠFile , Ġreader : ĠConsumer < Bu kkit Object InputStream >) Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġstream : ĠBu kkit Object InputStream ? Ġ= Ġnull ĊĊĠĠĠĠĠĠĠ Ġif Ġ(! file . isFile ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠFileNotFoundException (" Unable Ġto Ġlocate Ġfile : Ġ${ file . to Path () }") ĊĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġwrapper Ġ= ĠBuffered InputStream ( FileInputStream ( file )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstream Ġ= ĠBu kkit Object InputStream ( wrapper ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreader . accept ( stream ) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( t : ĠThrowable ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġt . printStackTrace () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġscript . write StackTrace ( t ) ĊĠĠĠĠĠĠĠ Ġ} Ġfinally Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstream ?. close () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠIOException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġe . printStackTrace () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġscript . write StackTrace ( e ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġwrite Object Stream ( file : ĠFile , Ġwriter : ĠConsumer < Bu kkit Object OutputStream >) Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġstream : ĠBu kkit Object OutputStream ? Ġ= Ġnull ĊĊĠĠĠĠĠĠĠ Ġif Ġ(! file . isFile ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠFileNotFoundException (" Unable Ġto Ġlocate Ġfile : Ġ${ file . to Path () }") ĊĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġwrapper Ġ= ĠBuffered OutputStream ( File OutputStream ( file )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstream Ġ= ĠBu kkit Object OutputStream ( wrapper ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwriter . accept ( stream ) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( t : ĠThrowable ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġt . printStackTrace () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġscript . write StackTrace ( t ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstream ?. reset () ĊĠĠĠĠĠĠĠ Ġ} Ġfinally Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstream ?. close () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠIOException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġe . printStackTrace () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġscript . write StackTrace ( e ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Yaml Configuration ( file : ĠFile , Ġconsumer : ĠConsumer < Yaml Configuration >) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġext Ġ= Ġfile . extension ĊĠĠĠĠĠĠĠ Ġvar Ġfile Reader : ĠBufferedReader ? Ġ= Ġnull ĊĊĠĠĠĠĠĠĠ Ġif Ġ(! file . isFile ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠFileNotFoundException (" Unable Ġto Ġlocate Ġfile : Ġ${ file . to Path () }") ĊĊĠĠĠĠĠĠĠ Ġif Ġ(! ext . equals (" yml ", Ġtrue )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠIllegalArgumentException (" Illegal Ġfile Ġformat : Ġ$ ext ") ĊĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfile Reader Ġ= Ġfile . buffered Reader ( Main . charset ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġconfig Ġ= ĠYaml Configuration . load Configuration ( file Reader ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconsumer . accept ( config ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconfig . save ( file ) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( t : ĠThrowable ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġt . printStackTrace () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġscript . write StackTrace ( t ) ĊĠĠĠĠĠĠĠ Ġ} Ġfinally Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfile Reader ?. close () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠIOException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġe . printStackTrace () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġscript . write StackTrace ( e ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġstart () Ġ{} ĊĊĠĠĠ Ġoverride Ġfun Ġterminate () Ġ{ ĊĠĠĠĠĠĠĠ Ġtasks . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . cancel () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠThrowable ) Ġ{} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }