/* Ċ Ġ* ĠMinecraft ĠDev Ġfor ĠIntelliJ Ċ Ġ* Ċ Ġ* Ġhttps :// minecraft dev . org Ċ Ġ* Ċ Ġ* ĠCopyright Ġ( c ) Ġ 2 0 1 9 Ġm inecraft - dev Ċ Ġ* Ċ Ġ* ĠMIT ĠLicense Ċ Ġ*/ Ċ Ċ @ file : Suppress (" Duplicates ") Ċ Ċ package Ġcom . de mon wav . mc dev . platform . b unge ec ord Ċ Ċ import Ġcom . de mon wav . mc dev . build system . Build Dependency Ċ import Ġcom . de mon wav . mc dev . build system . Build Repository Ċ import Ġcom . de mon wav . mc dev . build system . Build System Ċ import Ġcom . de mon wav . mc dev . platform . Platform Type Ċ import Ġcom . de mon wav . mc dev . platform . Project Configuration Ċ import Ġcom . de mon wav . mc dev . platform . bukkit . Bu kkit Like Configuration Ċ import Ġcom . de mon wav . mc dev . util . run Write Task Ċ import Ġcom . intellij . ide . util . Editor Helper Ċ import Ġcom . intellij . openapi . progress . Progress Indicator Ċ import Ġcom . intellij . openapi . project . Project Ċ import Ġcom . intellij . psi . Psi Manager Ċ Ċ class ĠB ungee C ord Project Configuration ( override Ġvar Ġtype : ĠPlatform Type ) Ġ: ĠProject Configuration (), ĊĠĠĠ ĠBu kkit Like Configuration Ġ{ ĊĊĠĠĠ Ġoverride Ġval Ġdependencies Ġ= Ġmutable ListOf < String >() ĊĠĠĠ Ġoverride Ġval Ġsoft Dependencies Ġ= Ġmutable ListOf < String >() ĊĠĠĠ Ġvar Ġm inecraft Version Ġ= Ġ"" ĊĊĠĠĠ Ġoverride Ġfun Ġhas Dependencies () Ġ= Ġlist Contains At Least One ( dependencies ) ĊĠĠĠ Ġoverride Ġfun Ġset Dependencies ( string : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġdependencies . clear () ĊĠĠĠĠĠĠĠ Ġdependencies . addAll ( comma Split ( string )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġhas Soft Dependencies () Ġ= Ġlist Contains At Least One ( soft Dependencies ) ĊĠĠĠ Ġoverride Ġfun Ġset Soft Dependencies ( string : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsoft Dependencies . clear () ĊĠĠĠĠĠĠĠ Ġsoft Dependencies . addAll ( comma Split ( string )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġcreate ( project : ĠProject , Ġbuild System : ĠBuild System , Ġindicator : ĠProgress Indicator ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( project . is Disposed ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġbase Config Ġ= Ġbase Ġ?: Ġreturn ĊĠĠĠĠĠĠĠ Ġval Ġdirs Ġ= Ġbuild System . directories Ġ?: Ġreturn ĊĊĠĠĠĠĠĠĠ Ġrun Write Task Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġindicator . text Ġ= Ġ" Writing Ġmain Ġclass " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠCreate Ġplugin Ġmain Ġclass ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġfile Ġ= Ġdirs . source Directory ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfiles Ġ= Ġbase Config . main Class . split (". "). to Typed Array () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠclassName Ġ= Ġfiles . last () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠpackageName Ġ= Ġbase Config . main Class . substring ( 0 , Ġbase Config . main Class . length Ġ- ĠclassName . length Ġ- Ġ 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfile Ġ= Ġget Main Class Directory ( files , Ġfile ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmain Class File Ġ= Ġfile . find OrCreate Child Data ( this , Ġ"$ className . java ") ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠB ungee C ord Template . apply Main Class Template ( project , Ġmain Class File , ĠpackageName , ĠclassName ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġplugin Y ml Ġ= Ġdirs . resource Directory . find OrCreate Child Data ( this , Ġ" plugin . yml ") ĊĠĠĠĠĠĠĠĠĠĠĠ ĠB ungee C ord Template . apply Plugin Description File Template ( project , Ġplugin Y ml , Ġthis , Ġbuild System ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠSet Ġthe Ġeditor Ġfocus Ġon Ġthe Ġmain Ġclass ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPsi Manager . getInstance ( project ). find File ( main Class File )?. let Ġ{ Ġmain Class Psi Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠEditor Helper . open In Editor ( main Class Psi ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġsetup Dependencies ( build System : ĠBuild System ) Ġ{ ĊĠĠĠĠĠĠĠ Ġadd Son atype ( build System . repositories ) ĊĠĠĠĠĠĠĠ Ġwhen Ġ( type ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPlatform Type . WATER FALL Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbuild System . repositories . add ( Build Repository ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" dest ro yst ok yo - repo ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" https :// repo . dest ro yst ok yo . com / repository / maven - public /" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ)) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbuild System . dependencies . add ( Build Dependency ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" io . github . water fall mc ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" water fall - api ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"$ minecraft Version - SNAPSHOT ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmaven Scope Ġ= Ġ" provided ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgradle Configuration Ġ= Ġ" compile Only " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ)) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPlatform Type . B UN GE EC ORD Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbuild System . dependencies . add ( Build Dependency ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" net . md - 5 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" b unge ec ord - api ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"$ minecraft Version - SNAPSHOT ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmaven Scope Ġ= Ġ" provided ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgradle Configuration Ġ= Ġ" compile Only " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ)) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ