package Ġcom . sky tern ity . mount ain ous . init Ċ Ċ import Ġnet . minecraft . block . Block Ċ import Ġnet . minecraft . block . BlockState Ċ import Ġnet . minecraft . block . Blocks Ċ import Ġnet . minecraft . item . Block Item Ċ import Ġnet . minecraft . item . Item Placement Context Ċ import Ġnet . minecraft . server . world . Server World Ċ import Ġnet . minecraft . util . math . Block Pos Ċ import Ġnet . minecraft . world . Light Type Ċ import Ġnet . minecraft . world . World Ċ import Ġnet . minecraft . world . chunk . light . Lighting Provider Ċ import Ġjava . util .* Ċ import Ġjava . util . function . Supplier Ċ Ċ /** Ċ Ġ* ĠBase Ġsp readable Ġblock . Ċ Ġ* Ċ Ġ* Ġ@ author ĠQ bo i Ċ Ġ*/ Ċ abstract Ġclass ĠBase Sp readable Block ( properties : ĠSettings ) Ġ: ĠBlock ( properties . ticks Random ly ()), ĠI Base Block Ġ{ ĊĠĠĠ Ġprivate Ġvar Ġblock Item : ĠSupplier < Block Item >? Ġ= Ġnull ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠGets Ġif Ġthe Ġsp readable Ġblock Ġcan Ġsurv ive Ġat Ġa Ġspecific Ġlocation . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param ĊĠĠĠĠ Ġ* Ġ@ author ĠQ bo i ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġcan Sur v ive ( server World : ĠWorld , Ġblock Pos : ĠBlockPos ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġget Sky Visibility ( server World , Ġblock Pos ) Ġ< Ġ 9 Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget Sky Visibility ( server World , Ġblock Pos . up ()) Ġ< Ġ 9 Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget Sky Visibility ( server World , Ġblock Pos . east ()) Ġ< Ġ 9 Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget Sky Visibility ( server World , Ġblock Pos . west ()) Ġ< Ġ 9 Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget Sky Visibility ( server World , Ġblock Pos . north ()) Ġ< Ġ 9 Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget Sky Visibility ( server World , Ġblock Pos . south ()) Ġ< Ġ 9 Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget Sky Visibility ( server World , Ġblock Pos . up (). up ()) Ġ< Ġ 9 Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget Sky Visibility ( server World , Ġblock Pos . up (). up (). up ()) Ġ< Ġ 9 Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget Sky Visibility ( server World , Ġblock Pos . up (). up (). up (). up ()) Ġ< Ġ 9 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠRandom Ġtick ing Ġof Ġthe Ġblock , Ġhere 's Ġwhere Ġthe Ġsp reading Ġhappens . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġrandom Tick ( block State : ĠBlock State , Ġserver World : ĠServer World , Ġblock Pos : ĠBlockPos , Ġrandom : ĠRandom ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcan Currently Sur v ive Ġ= Ġcan Sur v ive ( server World , Ġblock Pos ) ĊĠĠĠĠĠĠĠ Ġ// ĠCan Ġsurv ive ĊĠĠĠĠĠĠĠ Ġif Ġ(! can Currently Sur v ive ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠTurn Ġback Ġto Ġdir t . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġserver World . set BlockState ( block Pos , ĠBlocks . DIR T . default State ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠCheck Ġsky Ġvisibility Ġ( light ). ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( get Sky Visibility ( server World , Ġblock Pos ) Ġ< Ġ 9 Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget Sky Visibility ( server World , Ġblock Pos . up ()) Ġ< Ġ 9 Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget Sky Visibility ( server World , Ġblock Pos . east ()) Ġ< Ġ 9 Ġ&& Ġ// ĠAlso Ġchecks Ġfor Ġthe Ġsides . ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget Sky Visibility ( server World , Ġblock Pos . west ()) Ġ< Ġ 9 Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget Sky Visibility ( server World , Ġblock Pos . north ()) Ġ< Ġ 9 Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget Sky Visibility ( server World , Ġblock Pos . south ()) Ġ< Ġ 9 Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget Sky Visibility ( server World , Ġblock Pos . up (). up ()) Ġ< Ġ 9 Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget Sky Visibility ( server World , Ġblock Pos . up (). up (). up ()) Ġ< Ġ 9 Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget Sky Visibility ( server World , Ġblock Pos . up (). up (). up (). up ()) Ġ< Ġ 9 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠRandom Ġchance . ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( random . nextInt ( 2 0 ) Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠGet Ġthe Ġcurrent Ġdefault Ġstate . ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠnewState : ĠBlock State Ġ= Ġdefault State ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ 3 Ġtimes Ġsp reading . ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 .. 3 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠGet Ġrandom Ġspread Ġposition . ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġspread Pos Ġ= Ġblock Pos . add ( random . nextInt ( 3 ) Ġ- Ġ 1 , Ġrandom . nextInt ( 5 ) Ġ- Ġ 3 , Ġrandom . nextInt ( 3 ) Ġ- Ġ 1 ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠCheck Ġfor Ġdir t Ġblock . ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( server World . getBlock State ( spread Pos ). is Of ( Blocks . DIR T )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠCheck Ġif Ġcan Ġsurv ive Ġat Ġspread Ġposition ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( can Sur v ive ( server World , Ġspread Pos )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠSet Ġnew Ġstate . ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġserver World . set BlockState ( spread Pos , ĠnewState ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Placement State ( item Placement Context : ĠItem Placement Context ): ĠBlock State ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġpos : ĠBlockPos Ġ= Ġitem Placement Context . block Pos ĊĠĠĠĠĠĠĠ Ġval Ġworld Ġ= Ġitem Placement Context . world ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( can Sur v ive ( world , Ġpos )) Ġsuper . get Placement State ( item Placement Context ) ĊĠĠĠĠĠĠĠ Ġelse ĠBlocks . DIR T . default State ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġset Block Item ( block Item : ĠSupplier < Block Item > ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . block Item Ġ= Ġblock Item ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Block Item (): ĠBlock Item Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġblock Item !!. get () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠGets Ġthe Ġsky Ġlight , Ġday / night Ġcycle Ġdoesn 't Ġaffect Ġthis . ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġserver World Ġthe Ġworld Ġto Ġcheck Ġfor Ġthe Ġsky Ġlight . ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġblock Pos Ġthe Ġposition Ġto Ġcheck Ġfor Ġthe Ġsky Ġlight . ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġget Sky Visibility ( server World : ĠWorld , Ġblock Pos : ĠBlockPos ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlight ing Provider : ĠLight ing Provider Ġ= Ġserver World . chunk Manager . lighting Provider ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġlight ing Provider [ Light Type . SK Y ]. get Light Level ( block Pos ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }