package Ġcom . re ic hel tp . cel tic _ rit ual s . ingredients . mist leto e Ċ Ċ import Ġcom . re ic hel tp . cel tic _ rit ual s . MOD _ ID Ċ import Ġcom . re ic hel tp . cel tic _ rit ual s . init . Mod Blocks Ċ import Ġjava . util . Random Ċ import Ġjava . util . function . Function Ċ import Ġkotlin . math . abs Ċ import Ġnet . minecraft . block . BlockState Ċ import Ġnet . minecraft . block . Blocks Ċ import Ġnet . minecraft . util . Resource Location Ċ import Ġnet . minecraft . util . math . Block Pos Ċ import Ġnet . minecraft . util . math . Mutable BoundingBox Ċ import Ġnet . minecraft . world . bio me . Bio me Ċ import Ġnet . minecraft . world . gen . Generation Stage Ċ import Ġnet . minecraft . world . gen . I World Generation Reader Ċ import Ġnet . minecraft . world . gen . feature . Abstract Tree Feature Ċ import Ġnet . minecraft . world . gen . feature . IF eature Config Ċ import Ġnet . minecraft . world . gen . feature . No Feature Config Ċ import Ġnet . minecraft . world . gen . placement . Chance Config Ċ import Ġnet . minecraft . world . gen . placement . Placement Ċ Ċ class ĠM ist leto e Tree Feature Ġ: ĊĠĠĠ ĠAbstract Tree Feature < No Feature Config >( Function Ġ{ ĠNo Feature Config . deserialize ( it ) Ġ}, Ġfalse ) Ġ{ ĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġregistry Name Ġ= ĠResource Location ( MOD _ ID , Ġ" mist leto e _ tree ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠThis Ġis Ġjust Ġpicked Ġfrom Ġ[ net . minecraft . block . trees . B ir ch Tree ] ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠModified Ġto Ġpick Ġthe Ġleaves Ġrandomly . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġpublic Ġoverride Ġfun Ġplace ( ĊĠĠĠĠĠ Ġchanged Blocks : ĠSet < Block Pos >, ĊĠĠĠĠĠ Ġworld In : ĠI World Generation Reader , ĊĠĠĠĠĠ Ġrand : ĠRandom , ĊĠĠĠĠĠ Ġposition : ĠBlockPos , ĊĠĠĠĠĠ Ġbounding Box : ĠMutable BoundingBox ĊĠĠĠ Ġ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġi Ġ= Ġrand . nextInt ( 3 ) Ġ+ Ġ 5 ĊĊĠĠĠĠĠĠĠ Ġvar Ġflag Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġif Ġ( position . y Ġ>= Ġ 1 Ġ&& Ġposition . y Ġ+ Ġi Ġ+ Ġ 1 Ġ<= Ġworld In . max Height ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( j Ġin Ġposition . y .. position . y Ġ+ Ġ 1 Ġ+ Ġi ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġk Ġ= Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( j Ġ== Ġposition . y ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġk Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( j Ġ>= Ġposition . y Ġ+ Ġ 1 Ġ+ Ġi Ġ- Ġ 2 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġk Ġ= Ġ 2 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmutable Block Pos Ġ= ĠBlockPos . Mutable Block Pos () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġl Ġ= Ġposition . x Ġ- Ġk ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ( l Ġ<= Ġposition . x Ġ+ Ġk Ġ&& Ġflag ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġi 1 Ġ= Ġposition . z Ġ- Ġk ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ( i 1 Ġ<= Ġposition . z Ġ+ Ġk Ġ&& Ġflag ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( j Ġ>= Ġ 0 Ġ&& Ġj Ġ< Ġworld In . max Height ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! func _ 2 1 4 5 8 7 _ a ( world In , Ġmutable Block Pos . set Pos ( l , Ġj , Ġi 1 ))) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġflag Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġflag Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ++ i 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ++ l ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! flag ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( is So il ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġworld In , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġposition . down (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠgetS ap ling () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ&& Ġposition . y Ġ< Ġworld In . max Height Ġ- Ġi Ġ- Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . set Dir t At ( world In , Ġposition . down (), Ġposition ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( l 1 Ġin Ġposition . y Ġ- Ġ 3 Ġ+ Ġi .. position . y Ġ+ Ġi ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġj 2 Ġ= Ġl 1 Ġ- Ġ( position . y Ġ+ Ġi ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġk 2 Ġ= Ġ 1 Ġ- Ġj 2 Ġ/ Ġ 2 ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( l 2 Ġin Ġposition . x Ġ- Ġk 2 .. position . x Ġ+ Ġk 2 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġi 3 Ġ= Ġl 2 Ġ- Ġposition . x ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( j 1 Ġin Ġposition . z Ġ- Ġk 2 .. position . z Ġ+ Ġk 2 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġk 1 Ġ= Ġj 1 Ġ- Ġposition . z ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( abs ( i 3 ) Ġ!= Ġk 2 Ġ|| Ġabs ( k 1 ) Ġ!= Ġk 2 Ġ|| Ġrand . nextInt ( 2 ) Ġ!= Ġ 0 Ġ&& Ġj 2 Ġ!= Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpos Ġ= ĠBlockPos ( l 2 , Ġl 1 , Ġj 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Air Or Le aves ( world In , Ġpos )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . set Log State ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchanged Blocks , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġworld In , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpos , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġleaf ( rand ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbounding Box ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( i 2 Ġin Ġ 0 Ġuntil Ġi ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Air Or Le aves ( world In , Ġposition . up ( i 2 ))) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . set Log State ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchanged Blocks , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġworld In , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġposition . up ( i 2 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLOG , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbounding Box ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠOne Ġof Ġ 2 0 Ġleaves Ġshould Ġbe Ġa Ġmist leto e . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠThus , Ġthere 's Ġa Ġgood Ġchance Ġfor Ġa Ġtree Ġto Ġhave Ġat Ġleast Ġone . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġleaf ( random : ĠRandom ): ĠBlock State Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( random . nextInt ( 2 0 ) Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠMod Blocks . M IST LE TO E _ LE AV ES !!. default State ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn ĠLE AF ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠLOG Ġ= ĠBlocks . B IR CH _ LOG . default State ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠLE AF Ġ= ĠBlocks . B IR CH _ LE AV ES . default State ĊĠĠĠ Ġ} Ċ } Ċ Ċ /** Ċ Ġ* ĠAdds Ġa Ġmist leto e Ġinf ected Ġtree Ġevery Ġ 3 2 Ġchunks Ġwithin Ġa Ġmedium Ġtemperature Ġforest Ġbio me . Ċ Ġ*/ Ċ fun ĠM ist leto e Tree Feature . addTo Forest Bio mes ( bio mes : ĠCollection < Bio me >) Ġ{ ĊĠĠĠ Ġfor Ġ( bio me Ġin Ġbio mes ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( bio me . category Ġ!= ĠBio me . Category . FO REST ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontinue ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( bio me . temp Category Ġ!= ĠBio me . Temp Category . MEDIUM ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontinue ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġbio me . add Feature ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠGeneration Stage . Decoration . VE GET AL _ DE COR ATION , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠBio me . create Decorated Feature ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠI Feature Config . NO _ FEATURE _ CONFIG , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPl acement . CH ANCE _ HEIGHT MAP , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCh ance Config ( 3 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} Ċ } Ċ