package Ġworld . ce pi . labor atory . generator . pop ulator Ċ Ċ import Ġde . art ic div e . j noise . J Noise Ċ import Ġde . art ic div e . j noise . interpolation . Interpolation Type Ċ import Ġnet . min est om . server . coordinate . Pos Ċ import Ġnet . min est om . server . instance . Chunk Ċ import Ġnet . min est om . server . instance . Chunk Pop ulator Ċ import Ġnet . min est om . server . instance . batch . Chunk Batch Ċ import Ġnet . min est om . server . instance . block . Block Ċ import Ġworld . ce pi . labor atory . generator . L abor atory Generator Ċ import Ġworld . ce pi . labor atory . generator . Structure Ċ Ċ internal Ġclass ĠTree Pop ulator ( val Ġgenerator : ĠLaboratory Generator ) Ġ: ĠChunk Pop ulator Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġj Noise Ġ= ĊĠĠĠĠĠĠĠ ĠJ Noise . newBuilder (). per lin (). set Interpolation ( Interpolation Type . LINEAR ). set Seed ( generator . random . nextInt (). to Long ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Frequency ( 0 . 6 ). build () ĊĊĠĠĠ Ġprivate Ġval Ġtree : ĠStructure Ġ= ĠStructure () ĊĊĠĠĠ Ġ// todo Ġimprove ĊĠĠĠ Ġoverride Ġfun Ġpopulate Chunk ( batch : ĠChunk Batch , Ġchunk : ĠChunk ) Ġ{ ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ- 2 .. 1 7 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( j Ġin Ġ- 2 .. 1 7 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( j Noise . get Noise ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( i Ġ+ Ġchunk . chunk X Ġ* Ġ 1 6 ). toDouble (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( j Ġ+ Ġchunk . chunk Z Ġ* Ġ 1 6 ). toDouble () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ> Ġ 0 . 7 5 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġy Ġ= Ġgenerator . getHeight ( i Ġ+ Ġchunk . chunk X Ġ* Ġ 1 6 , Ġj Ġ+ Ġchunk . chunk Z Ġ* Ġ 1 6 ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġposition Ġ= ĠPos ( i . toDouble (), Ġy . toDouble (), Ġj . toDouble ()) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( chunk . getBlock ( position ) Ġ!= ĠBlock . WATER ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontinue ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtree . build ( batch , ĠPos ( i . toDouble (), Ġy . toDouble (), Ġj . toDouble ())) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġlog Ġ= ĠBlock . QU ART Z _ PI LL AR ĊĠĠĠĠĠĠĠ Ġval Ġleaves Ġ= ĠBlock . BLUE _ ST AIN ED _ GL ASS ĊĠĠĠ Ġ} ĊĠĠĠĠĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġtree . add Block ( log , Ġ 0 , Ġ 0 , Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġtree . add Block ( log , Ġ 0 , Ġ 1 , Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġtree . add Block ( log , Ġ 0 , Ġ 2 , Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġtree . add Block ( log , Ġ 0 , Ġ 3 , Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġtree . add Block ( leaves , Ġ 1 , Ġ 1 , Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġtree . add Block ( leaves , Ġ 2 , Ġ 1 , Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġtree . add Block ( leaves , Ġ- 1 , Ġ 1 , Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġtree . add Block ( leaves , Ġ- 2 , Ġ 1 , Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġtree . add Block ( leaves , Ġ 1 , Ġ 1 , Ġ 1 ) ĊĠĠĠĠĠĠĠ Ġtree . add Block ( leaves , Ġ 2 , Ġ 1 , Ġ 1 ) ĊĠĠĠĠĠĠĠ Ġtree . add Block ( leaves , Ġ 0 , Ġ 1 , Ġ 1 ) ĊĠĠĠĠĠĠĠ Ġtree . add Block ( leaves , Ġ- 1 , Ġ 1 , Ġ 1 ) ĊĠĠĠĠĠĠĠ Ġtree . add Block ( leaves , Ġ- 2 , Ġ 1 , Ġ 1 ) ĊĠĠĠĠĠĠĠ Ġtree . add Block ( leaves , Ġ 1 , Ġ 1 , Ġ 2 ) ĊĠĠĠĠĠĠĠ Ġtree . add Block ( leaves , Ġ 2 , Ġ 1 , Ġ 2 ) ĊĠĠĠĠĠĠĠ Ġtree . add Block ( leaves , Ġ 0 , Ġ 1 , Ġ 2 ) ĊĠĠĠĠĠĠĠ Ġtree . add Block ( leaves , Ġ- 1 , Ġ 1 , Ġ 2 ) ĊĠĠĠĠĠĠĠ Ġtree . add Block ( leaves , Ġ- 2 , Ġ 1 , Ġ 2 ) ĊĠĠĠĠĠĠĠ Ġtree . add Block ( leaves , Ġ 1 , Ġ 1 , Ġ- 1 ) ĊĠĠĠĠĠĠĠ Ġtree . add Block ( leaves , Ġ 2 , Ġ 1 , Ġ- 1 ) ĊĠĠĠĠĠĠĠ Ġtree . add Block ( leaves , Ġ 0 , Ġ 1 , Ġ- 1 ) ĊĠĠĠĠĠĠĠ Ġtree . add Block ( leaves , Ġ- 1 , Ġ 1 , Ġ- 1 ) ĊĠĠĠĠĠĠĠ Ġtree . add Block ( leaves , Ġ- 2 , Ġ 1 , Ġ- 1 ) ĊĠĠĠĠĠĠĠ Ġtree . add Block ( leaves , Ġ 1 , Ġ 1 , Ġ- 2 ) ĊĠĠĠĠĠĠĠ Ġtree . add Block ( leaves , Ġ 2 , Ġ 1 , Ġ- 2 ) ĊĠĠĠĠĠĠĠ Ġtree . add Block ( leaves , Ġ 0 , Ġ 1 , Ġ- 2 ) ĊĠĠĠĠĠĠĠ Ġtree . add Block ( leaves , Ġ- 1 , Ġ 1 , Ġ- 2 ) ĊĠĠĠĠĠĠĠ Ġtree . add Block ( leaves , Ġ- 2 , Ġ 1 , Ġ- 2 ) ĊĠĠĠĠĠĠĠ Ġtree . add Block ( leaves , Ġ 1 , Ġ 2 , Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġtree . add Block ( leaves , Ġ 2 , Ġ 2 , Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġtree . add Block ( leaves , Ġ- 1 , Ġ 2 , Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġtree . add Block ( leaves , Ġ- 2 , Ġ 2 , Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġtree . add Block ( leaves , Ġ 1 , Ġ 2 , Ġ 1 ) ĊĠĠĠĠĠĠĠ Ġtree . add Block ( leaves , Ġ 2 , Ġ 2 , Ġ 1 ) ĊĠĠĠĠĠĠĠ Ġtree . add Block ( leaves , Ġ 0 , Ġ 2 , Ġ 1 ) ĊĠĠĠĠĠĠĠ Ġtree . add Block ( leaves , Ġ- 1 , Ġ 2 , Ġ 1 ) ĊĠĠĠĠĠĠĠ Ġtree . add Block ( leaves , Ġ- 2 , Ġ 2 , Ġ 1 ) ĊĠĠĠĠĠĠĠ Ġtree . add Block ( leaves , Ġ 1 , Ġ 2 , Ġ 2 ) ĊĠĠĠĠĠĠĠ Ġtree . add Block ( leaves , Ġ 2 , Ġ 2 , Ġ 2 ) ĊĠĠĠĠĠĠĠ Ġtree . add Block ( leaves , Ġ 0 , Ġ 2 , Ġ 2 ) ĊĠĠĠĠĠĠĠ Ġtree . add Block ( leaves , Ġ- 1 , Ġ 2 , Ġ 2 ) ĊĠĠĠĠĠĠĠ Ġtree . add Block ( leaves , Ġ- 2 , Ġ 2 , Ġ 2 ) ĊĠĠĠĠĠĠĠ Ġtree . add Block ( leaves , Ġ 1 , Ġ 2 , Ġ- 1 ) ĊĠĠĠĠĠĠĠ Ġtree . add Block ( leaves , Ġ 2 , Ġ 2 , Ġ- 1 ) ĊĠĠĠĠĠĠĠ Ġtree . add Block ( leaves , Ġ 0 , Ġ 2 , Ġ- 1 ) ĊĠĠĠĠĠĠĠ Ġtree . add Block ( leaves , Ġ- 1 , Ġ 2 , Ġ- 1 ) ĊĠĠĠĠĠĠĠ Ġtree . add Block ( leaves , Ġ- 2 , Ġ 2 , Ġ- 1 ) ĊĠĠĠĠĠĠĠ Ġtree . add Block ( leaves , Ġ 1 , Ġ 2 , Ġ- 2 ) ĊĠĠĠĠĠĠĠ Ġtree . add Block ( leaves , Ġ 2 , Ġ 2 , Ġ- 2 ) ĊĠĠĠĠĠĠĠ Ġtree . add Block ( leaves , Ġ 0 , Ġ 2 , Ġ- 2 ) ĊĠĠĠĠĠĠĠ Ġtree . add Block ( leaves , Ġ- 1 , Ġ 2 , Ġ- 2 ) ĊĠĠĠĠĠĠĠ Ġtree . add Block ( leaves , Ġ- 2 , Ġ 2 , Ġ- 2 ) ĊĠĠĠĠĠĠĠ Ġtree . add Block ( leaves , Ġ 1 , Ġ 3 , Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġtree . add Block ( leaves , Ġ- 1 , Ġ 3 , Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġtree . add Block ( leaves , Ġ 1 , Ġ 3 , Ġ 1 ) ĊĠĠĠĠĠĠĠ Ġtree . add Block ( leaves , Ġ 0 , Ġ 3 , Ġ 1 ) ĊĠĠĠĠĠĠĠ Ġtree . add Block ( leaves , Ġ- 1 , Ġ 3 , Ġ 1 ) ĊĠĠĠĠĠĠĠ Ġtree . add Block ( leaves , Ġ 1 , Ġ 3 , Ġ- 1 ) ĊĠĠĠĠĠĠĠ Ġtree . add Block ( leaves , Ġ 0 , Ġ 3 , Ġ- 1 ) ĊĠĠĠĠĠĠĠ Ġtree . add Block ( leaves , Ġ- 1 , Ġ 3 , Ġ- 1 ) ĊĠĠĠĠĠĠĠ Ġtree . add Block ( leaves , Ġ 1 , Ġ 4 , Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġtree . add Block ( leaves , Ġ 0 , Ġ 4 , Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġtree . add Block ( leaves , Ġ- 1 , Ġ 4 , Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġtree . add Block ( leaves , Ġ 0 , Ġ 4 , Ġ 1 ) ĊĠĠĠĠĠĠĠ Ġtree . add Block ( leaves , Ġ 0 , Ġ 4 , Ġ- 1 ) ĊĠĠĠĠĠĠĠ Ġtree . add Block ( leaves , Ġ- 1 , Ġ 4 , Ġ- 1 ) ĊĠĠĠ Ġ} Ċ }