/* Ċ Ġ* ĠMinecraft ĠDev Ġfor ĠIntelliJ Ċ Ġ* Ċ Ġ* Ġhttps :// minecraft dev . org Ċ Ġ* Ċ Ġ* ĠCopyright Ġ( c ) Ġ 2 0 2 0 Ġm inecraft - dev Ċ Ġ* Ċ Ġ* ĠMIT ĠLicense Ċ Ġ*/ Ċ Ċ package Ġcom . de mon wav . mc dev . platform . m cp . gradle . data handler Ċ Ċ import Ġcom . de mon wav . mc dev . platform . m cp . M cp Module Settings Ċ import Ġcom . de mon wav . mc dev . platform . m cp . gradle . M cp Model Data Ċ import Ġcom . de mon wav . mc dev . platform . m cp . gradle . tool ing . M cp Model FG 3 Ċ import Ġcom . de mon wav . mc dev . platform . m cp . s rg . S rg Type Ċ import Ġcom . de mon wav . mc dev . util . run Gradle Task Ċ import Ġcom . intellij . openapi . application . Application Manager Ċ import Ġcom . intellij . openapi . external System . model . project . Module Data Ċ import Ġcom . intellij . openapi . progress . Progress Indicator Ċ import Ġcom . intellij . openapi . progress . Progress Manager Ċ import Ġcom . intellij . openapi . progress . Task Ċ import Ġcom . intellij . openapi . project . D umb Service Ċ import Ġcom . intellij . openapi . project . Project Manager Ċ import Ġorg . gradle . tool ing . model . idea . Ide a Module Ċ import Ġorg . jetbrains . plugins . gradle . service . project . Project Resolver Context Ċ Ċ object ĠM cp Model FG 3 Handler Ġ: ĠM cp Model Data Handler Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġbuild ( ĊĠĠĠĠĠĠĠ Ġgradle Module : ĠIde a Module , ĊĠĠĠĠĠĠĠ Ġmodule : ĠModule Data , ĊĠĠĠĠĠĠĠ Ġresolver Ctx : ĠProject Resolver Context ĊĠĠĠ Ġ): ĠM cp Model Data ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdata Ġ= Ġresolver Ctx . get Extra Project ( gradle Module , ĠM cp Model FG 3 :: class . java ) Ġ?: Ġreturn Ġnull ĊĊĠĠĠĠĠĠĠ Ġvar Ġversion : ĠString ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġfor Ġ( minecraft Dep Version Ġin Ġdata . minecraft Dep Versions ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġindex Ġ= Ġm inecraft Dep Version . indexOf ('- ') ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( index Ġ== Ġ- 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontinue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġversion Ġ= Ġm inecraft Dep Version . substring ( 0 , Ġm inecraft Dep Version . indexOf ('- ')) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbreak ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġstate Ġ= ĠM cp Module Settings . State ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġversion , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdata . m cp Version , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdata . task Output Location . absolute Path , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠS rg Type . T SR G ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ ĠApplication Manager . getApplication (). execute On P ooled Thread Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠWait Ġuntil Ġindexing Ġis Ġdone , Ġto Ġtry Ġand Ġnot Ġinterf ere Ġwith Ġcurrent Ġgradle Ġprocess ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( open Project Ġin ĠProject Manager . getInstance (). open Projects ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠD umb Service . getInstance ( open Project ). waitFor Smart Mode () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġproject Ġ= ĠProject Manager . getInstance (). open Projects . first OrNull Ġ{ Ġit . name Ġ== Ġgradle Module . project . name Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġreturn @ execute On P ooled Thread ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( project . is Disposed ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ execute On P ooled Thread ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġgradle Project Ġ= Ġgradle Module . gradle Project ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtask Ġ= ĠStringBuilder ( data . task Name ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( gradle Project . parent Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtask . insert ( 0 , Ġ': ') ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ( gradle Project . parent Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgradle Project Ġ= Ġgradle Project . parent ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtask . insert ( 0 , Ġgradle Project . name ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtask . insert ( 0 , Ġ': ') ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠProgress Manager . getInstance (). run ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġobject Ġ: ĠTask . Background able ( project , Ġ" Generating ĠS RG Ġmap ", Ġfalse ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġrun ( indicator : ĠProgress Indicator ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġindicator . isIn determinate Ġ= Ġtrue ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġindicator . text Ġ= Ġ" Creating ĠS RG Ġmap " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġindicator . text 2 Ġ= Ġ" Running ĠGradle Ġtask : Ġ'${ data . task Name } '" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrun Gradle Task ( project , Ġgradle Project . project Directory . to Path ()) Ġ{ Ġsettings Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsettings . task Names Ġ= ĠlistOf ( data . task Name ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn ĠM cp Model Data ( module , Ġstate ) ĊĠĠĠ Ġ} Ċ } Ċ