package Ġnet . edu ard . api . server Ċ Ċ import Ġnet . edu ard . api . lib . command . Command Ċ import Ġnet . edu ard . api . lib . config . Config Ċ import Ġnet . edu ard . api . lib . database . DB Manager Ċ import Ġnet . edu ard . api . lib . database . SQL Manager Ċ import Ġnet . edu ard . api . lib . kotlin . resolve Put Ċ import Ġnet . edu ard . api . lib . kotlin . resolve Take Ċ import Ġnet . edu ard . api . lib . manager . Command Manager Ċ import Ġnet . edu ard . api . lib . menu . Menu Ċ import Ġnet . edu ard . api . lib . modules . Bu kkit Time Handler Ċ import Ġnet . edu ard . api . lib . modules . Extra Ċ import Ġnet . edu ard . api . lib . modules . Mine Ċ import Ġnet . edu ard . api . lib . plugin . I Plugin Ċ import Ġnet . edu ard . api . lib . plugin . Plugin Settings Ċ import Ġnet . edu ard . api . lib . storage . Storage API Ċ import Ġorg . apache . commons . io . IO Utils Ċ import Ġorg . bukkit . Bu kkit Ċ import Ġorg . bukkit . event . Handler List Ċ import Ġorg . bukkit . plugin . Plugin Ċ import Ġorg . bukkit . plugin . java . Java Plugin Ċ import Ġjava . io .* Ċ import Ġjava . text . SimpleDateFormat Ċ import Ġjava . util . concurrent . TimeUnit Ċ import Ġjava . util . zip . Zip Entry Ċ import Ġjava . util . zip . Zip OutputStream ĊĊ Ċ /** Ċ Ġ* ĠRepresent a Ġos Ġplugins Ġfe itos Ġpelo ĠE du ard Ċ Ġ* Ċ Ġ* Ġ@ author ĠE du ard Ċ Ġ* Ġ@ version Ġ 1 . 0 Ċ Ġ* Ġ@ since Ġ 2 . 0 Ċ Ġ*/ Ċ open Ġclass ĠE du ard Plugin Ġ: ĠJava Plugin (), ĠBu kkit Time Handler , ĠI Plugin Ġ{ ĊĠĠĠ Ġfun ĠgetString ( key : ĠString ) Ġ= Ġconfigs . getString ( key ) ĊĠĠĠ Ġfun Ġmessage ( key : ĠString ) Ġ= Ġmessages . message ( key ) ĊĠĠĠ Ġfun Ġget Int ( key : ĠString ) Ġ= Ġconfigs . getInt ( key ) ĊĠĠĠ Ġfun Ġget Long ( key : ĠString ) Ġ= Ġconfigs . getLong ( key ) ĊĠĠĠ Ġfun Ġget Boolean ( key : ĠString ) Ġ= Ġconfigs . getBoolean ( key ) ĊĠĠĠ Ġfun Ġget Messages ( key : ĠString ) Ġ= Ġmessages . get Messages ( key ) ĊĠĠĠ Ġvar Ġcalc Lag Ġ= Ġfalse ĊĠĠĠ Ġvar Ġis Free Ġ= Ġfalse ĊĠĠĠ Ġvar Ġactivated Ġ= Ġfalse ĊĠĠĠ Ġvar Ġre loaded Ġ= Ġfalse ĊĠĠĠ Ġvar Ġstarted Ġ= Ġfalse ĊĊĠĠĠ Ġ@ Transient ĊĠĠĠ Ġ@ Volatile ĊĠĠĠ Ġvar Ġcreating Backup Ġ= Ġfalse ĊĊĠĠĠ Ġ@ Throws ( IOException :: class ) ĊĠĠĠ Ġprivate Ġfun Ġzip Folder ( folder : ĠFile , Ġzip File : ĠFile ) Ġ{ ĊĠĠĠĠĠĠĠ Ġzip Folder ( folder , ĠFileOutputStream ( zip File )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Throws ( IOException :: class ) ĊĠĠĠ Ġprivate Ġfun Ġzip Folder ( folder : ĠFile , ĠoutputStream : ĠOutputStream ) Ġ{ ĊĠĠĠĠĠĠĠ ĠZip OutputStream ( output Stream ). use Ġ{ Ġzip OutputStream Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprocess Folder ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfolder , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġzip OutputStream , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfolder . path . length Ġ+ Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Throws ( IOException :: class ) ĊĠĠĠ Ġprivate Ġfun Ġprocess Folder ( folder : ĠFile , Ġzip OutputStream : ĠZip OutputStream , Ġprefix Length : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġfor Ġ( file Ġin Ġfolder . list Files () !! ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( file . isFile ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġzip Entry Ġ= ĠZip Entry ( file . path . substring ( prefix Length )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġzip OutputStream . put Next Entry ( zip Entry ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠFileInputStream ( file ). use Ġ{ ĠinputStream Ġ-> ĠIO Utils . copy ( inputStream , Ġzip OutputStream ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġzip OutputStream . close Entry () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( file . isDirectory ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprocess Folder ( file , Ġzip OutputStream , Ġprefix Length ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġ@ Throws ( IOException :: class ) ĊĠĠĠ Ġfun Ġbackup () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( creating Backup ) return ĊĠĠĠĠĠĠĠ Ġcreating Backup = true ĊĠĠĠĠĠĠĠ Ġsettings . last Backup Ġ= ĠSystem . currentTimeMillis () ĊĠĠĠĠĠĠĠ Ġval Ġpast a Backup Ġ= ĠFile (" plugins - backup /$ name /") ĊĠĠĠĠĠĠĠ Ġpast a Backup . mkdir s () ĊĠĠĠĠĠĠĠ Ġval Ġformat ador Ġ= ĠSimpleDateFormat (" dd - MM - yyyy - HH - mm ") ĊĠĠĠĠĠĠĠ Ġval Ġbackup Name Ġ= Ġformat ador . format ( System . currentTimeMillis ()) ĊĠĠĠĠĠĠĠ Ġval Ġbackup Zip Ġ= ĠFile ( past a Backup , Ġ"$ backup Name . zip ") ĊĠĠĠĠĠĠĠ Ġzip Folder ( plugin Folder Ġ, Ġbackup Zip ) ĊĠĠĠĠĠĠĠ Ġcreating Backup = false ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Plugin (): ĠE du ard Plugin Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġopen Ġfun Ġon Activation () Ġ{ ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget System Name (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġdescription . name ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġlateinit Ġvar Ġconfigs : ĠConfig ĊĠĠĠ Ġlateinit Ġvar Ġmessages : ĠConfig ĊĠĠĠ Ġlateinit Ġvar Ġstorage : ĠConfig ĊĠĠĠ Ġlateinit Ġvar Ġsettings : ĠPlugin Settings ĊĠĠĠ Ġlateinit Ġvar Ġdb Manager : ĠDB Manager ĊĠĠĠ Ġlateinit Ġvar Ġsql Manager : ĠSQL Manager ĊĠĠĠ Ġoverride Ġfun ĠonLoad () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĊĠĠĠĠĠĠĠ Ġval Ġcurrent Instance : ĠE du ard Plugin Ġ= Ġthis ĊĠĠĠĠĠĠĠ Ġif Ġ(! current Instance . started ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Instance . db Manager Ġ= ĠDB Manager () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Instance . configs Ġ= ĠConfig ( current Instance , Ġ" config . yml ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Instance . messages Ġ= ĠConfig ( current Instance , Ġ" messages . yml ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Instance . storage Ġ= ĠConfig ( current Instance , Ġ" storage . yml ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Instance . settings Ġ= ĠPlugin Settings () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Instance . configs . add (" settings ", Ġcurrent Instance . settings ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Instance . configs . add (" database ", Ġcurrent Instance . db Manager ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Instance . configs . save Config () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Instance . settings Ġ= Ġcurrent Instance . configs . get (" settings ", ĠPlugin Settings :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Instance . db Manager Ġ= Ġcurrent Instance . configs . get (" database ", ĠDB Manager :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Instance . sql Manager Ġ= ĠSQL Manager ( current Instance . db Manager ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ Ġcurrent Instance . set Storage Manager ( new ĠStorage Manager ( current Instance . get Sql Manager ())); ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Instance . started Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġcurrent Instance . get Storage Manager (). setType ( current Instance . get Settings (). get Store Type ()); ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( current Instance . db Manager . isEnabled ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Instance . db Manager . open Connection () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠEn via Ġmens agem Ġpara Ġo Ġconsole Ġcaso Ġas ĠLog ĠNorm ais Ġeste ja Ġat iv ada Ġpara Ġele ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġmessage ĠM ens agem ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġopen Ġfun Ġlog ( message : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( settings . isDebug ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠBu kkit . get Console Sender (). sendMessage (" Â§ b [ ${ name }] ĠÂ§ f $ message ") ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġoverride Ġfun Ġget Plugin Connected (): ĠPlugin Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠEn via Ġmens agem Ġpara Ġo Ġconsole Ġcaso Ġas ĠLog Ġde ĠEr ros Ġeste ja Ġat iv ada Ġpara Ġele ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġmessage ĠM ens agem ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġopen Ġfun Ġerror ( message : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( settings . isDebug ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠBu kkit . get Console Sender (). sendMessage (" Â§ b [ ${ name }] ĠÂ§ c $ message ") ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠNe cess ario Ġfazer Ġsuper . on Enable () Ġpara Ġpoder Ġsup ort ar Ġos Ġcom andos Ġdo ĠPlug Man ĊĠĠĠĠ Ġ* Ġ< br ></ br > Ġ/ plug man Ġun load ĠN ome Plugin ĊĠĠĠĠ Ġ* Ġ< br ></ br >/ plug man Ġload ĠN ome Plugin ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġon Enable () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(! started ) ĠonLoad () ĊĠĠĠĠĠĠĠ Ġlog (" F oi Ġat iv ado Ġna Ġv " Ġ+ Ġdescription . version Ġ+ Ġ" Ġum Ġplugin Ġ" Ġ+ Ġ( if Ġ( is Free ) Ġ" Â§ a Gr atu ito " Ġelse Ġ" Â§ b Pago ") Ġ+ Ġ" Â§ f Ġfe ito Ġpelo ĠE du ard ") ĊĠĠĠĠĠĠĠ Ġresolve Put ( this ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Classes ( pack : ĠString ): ĠMutable List < Class <* >> Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠM ine . get Classes ( this , Ġpack ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġautos ave () Ġ{ ĊĠĠĠĠĠĠĠ Ġsettings . last Save Ġ= ĠExtra . get Now () ĊĠĠĠĠĠĠĠ Ġsave () ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġfun Ġunregister Services () Ġ{ ĊĠĠĠĠĠĠĠ ĠBu kkit . get Services Manager (). unregister All ( this ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġunregister Listeners () Ġ{ ĊĠĠĠĠĠĠĠ ĠHandler List . unregister All ( this ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġunregister Tasks () Ġ{ ĊĠĠĠĠĠĠĠ ĠBu kkit . get Scheduler (). cancel Tasks ( this ) ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġfun Ġunregister Menus () Ġ{ ĊĠĠĠĠĠĠĠ Ġfor Ġ( menu Ġin ĠMenu . registered Menus . toList ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( this Ġ== Ġmenu . plugin ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmenu . unregister Menu () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCor rig ido Ġdesc ar reg amento Ġde Ġcomando Ġao Ġ/ plug man Ġreload ĠN ome Plugin ĊĠĠĠĠ Ġ* ĠD ia Ġ 1 3 / 1 1 / 2 0 2 1 ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġunregister Commands () Ġ{ ĊĠĠĠĠĠĠĠ ĠCommand Manager . unregister Commands ( this ) ĊĠĠĠĠĠĠĠ ĠCommand . unregister Commands ( this ) ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġinline Ġfun Ġcalculate ( action Name : ĠString , Ġaction : Ġ() Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġinicio Ġ= ĠSystem . currentTimeMillis () ĊĠĠĠĠĠĠĠ Ġaction . invoke () ĊĠĠĠĠĠĠĠ Ġval Ġf im Ġ= ĠSystem . currentTimeMillis () ĊĠĠĠĠĠĠĠ Ġval Ġlag Ġ= Ġf im Ġ- Ġinicio ĊĠĠĠĠĠĠĠ Ġif Ġ( calc Lag ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlog (" Lag Ġca us ado Ġem Ġ$ action Name Ġ-> Ġ${ lag } ms ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Disable () Ġ{ ĊĠĠĠĠĠĠĠ Ġcalculate (" Des regist r ando ĠSer v icos ") Ġ{ Ġunregister Services () Ġ} ĊĠĠĠĠĠĠĠ Ġcalculate (" Des regist r ando ĠList eners ") Ġ{ Ġunregister Listeners () Ġ} ĊĠĠĠĠĠĠĠ Ġcalculate (" Des regist r ando ĠCom andos ") Ġ{ Ġunregister Commands () Ġ} ĊĠĠĠĠĠĠĠ Ġcalculate (" Des regist r ando ĠTasks ") Ġ{ Ġunregister Tasks () Ġ} ĊĠĠĠĠĠĠĠ Ġcalculate (" Des regist r ando ĠSt or ables ") Ġ{ Ġunregister St orable Classes () Ġ} ĊĠĠĠĠĠĠĠ Ġcalculate (" Des regist r ando Ġmenus ") Ġ{ Ġunregister Menus () Ġ} ĊĠĠĠĠĠĠĠ Ġcalculate (" Des con ect ando ĠDatabase ĠConnection s Ġe ĠL imp ando ĠCache ") Ġ{ Ġdb Manager . close Connection () Ġ} ĊĠĠĠĠĠĠĠ Ġlog (" F oi Ġdes ativ ado Ġna Ġv " Ġ+ Ġdescription . version Ġ+ Ġ" Ġum Ġplugin Ġ" Ġ+ Ġif Ġ( is Free ) Ġ" Â§ a Gr atu ito " Ġelse Ġ" Â§ b Pago ") ĊĠĠĠĠĠĠĠ Ġresolve Take ( this ) ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġopen Ġfun Ġsave () Ġ{ ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Plugin Folder () Ġ= Ġdata Folder ĊĊĠĠĠ Ġopen Ġfun Ġreload () Ġ{ ĊĠĠĠĠĠĠĠ Ġre loaded Ġ= Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġopen Ġfun Ġconfig Default () Ġ{ ĊĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġfun Ġunregister St orable Classes () Ġ{ ĊĠĠĠĠĠĠĠ ĠStorage API . unregister Plugin ( java Class ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠDe leta Ġos Ġbackups Ġdos Ġdi as Ġan ter iores ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġdelete Old Backups () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġpast a Ġ= ĠFile ( plugin Folder , Ġ"/ backup /") ĊĠĠĠĠĠĠĠ Ġpast a . mkdir s () ĊĠĠĠĠĠĠĠ Ġval Ġlista Ġ= ĠlistOf (* past a . list Files () !! ) ĊĠĠĠĠĠĠĠ Ġlista . filter Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . lastModified () Ġ+ ĠTimeUnit . DAYS ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. to Millis ( 1 ) Ġ<= ĠSystem . currentTimeMillis () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠExtra . delete Folder ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it . exists ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . delete () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ } Ċ