package Ġnet . b ren ig . pix ele scape . game . world gen Ċ Ċ import Ġnet . b ren ig . pix ele scape . game . World Ċ import Ġnet . b ren ig . pix ele scape . game . data . Game Mode Ċ import Ġnet . b ren ig . pix ele scape . game . data . constants . Reference Ċ import Ġnet . b ren ig . pix ele scape . game . world gen . pre defined . IS core World Feature Ċ import Ġnet . b ren ig . pix ele scape . game . world gen . special . B arr ic ade Generator Ċ import Ġnet . b ren ig . pix ele scape . game . world gen . special . IS pec ial World Generator Ċ import Ġnet . b ren ig . pix ele scape . game . world gen . terrain .* Ċ import Ġnet . b ren ig . pix ele scape . lib . error Ċ import Ġjava . util .* Ċ Ċ /** Ċ Ġ* ĠGenerates Ġterrain Ġand Ġob stacles Ċ Ġ*/ Ċ class ĠWorld Generator ( private Ġval Ġworld : ĠWorld , Ġprivate Ġval Ġgame Mode : ĠGame Mode ) Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġterrain Generators Ġ= ĠWeight edList < IT errain Generator >() ĊĊĠĠĠ Ġprivate Ġval Ġspecial Generators Ġ= ĠArrayList < IS pec ial World Generator >() ĊĠĠĠ Ġprivate Ġval Ġspecial Pre defined Generators Ġ= ĠArrayList < IS core World Feature >() ĊĊĠĠĠ Ġ////////////////////////////////// //////// ////// ĊĠĠĠ Ġ// ĠWorld gen Ġeffects Ġ( --> Ġeg . Ġitems / Game modes ) Ġ// ĊĠĠĠ Ġ////////////////////////////////// //////// ////// ĊĠĠĠ Ġvar Ġobstacle Size Modifier Ġ= Ġ 1 f ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġregisters Ġa Ġnew ĠT errain Generator ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġgenerator ĠThe ĠGenerator Ġto Ġregister ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġregister Terrain Generator ( generator : ĠIT errain Generator ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( generator . weight Ġ<= Ġ 0 ) Ġreturn ĊĠĠĠĠĠĠĠ Ġterrain Generators . add ( generator . weight , Ġgenerator ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġgenerates Ġthe ĠWorld ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġblock To Generate Ġ Ġamount Ġof Ġblocks Ġthat Ġshould Ġget Ġgenerated ĊĠĠĠĠ Ġ* Ġ@ param Ġgeneration P asses Ġamount Ġof Ġtries Ġto Ġgenerate Ġthe Ġworld ĊĠĠĠĠ Ġ* Ġ@ param Ġrandom ĠĠĠĠĠĠĠĠĠĠ Ġworld Ġrandom - generator ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġgenerate World ( block To Generate : ĠInt , Ġgeneration P asses : ĠInt , Ġrandom : ĠRandom ) Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġremaining Blocks To Generate Ġ= Ġblock To Generate ĊĠĠĠĠĠĠĠ Ġvar Ġremaining Generation P asses Ġ= Ġgeneration P asses ĊĠĠĠĠĠĠĠ Ġif Ġ( remaining Blocks To Generate Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Init Ġavailable Ġterrain Ġgen Ġlist ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġg ens Ġ= Ġterrain Generators . create Copy () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ( remaining Generation P asses Ġ> Ġ 0 Ġ&& Ġremaining Blocks To Generate Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// get Ġlast Ġterrain ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlast Generated Terrain Pair Ġ= Ġworld . terrain . new est ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġold Terrain Buffer Index Start Ġ= Ġworld . terrain Buffer World Index ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġgen Ġ= Ġg ens . getRandom Value With Filter ( random , ĠWorld Gen Filter ( last Generated Terrain Pair , Ġremaining Blocks To Generate )) Ġ?: Ġbreak Ġ// no Ġapplicable Ġgenerators Ġleft ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġgenerated Ġ= Ġgen . generate ( world , Ġlast Generated Terrain Pair , Ġremaining Blocks To Generate , Ġworld . terrain Buffer World Index , Ġrandom ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġremaining Blocks To Generate Ġ-= Ġgenerated ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġremaining Generation P asses -- ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( remaining Blocks To Generate Ġ< Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġerror (" Invalid ĠWorld ĠGen !! ĠGenerator Ġignoring ĠMAX ! ĠGenerator : Ġ" Ġ+ Ġgen ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( old Terrain Buffer Index Start Ġ+ Ġgenerated Ġ!= Ġworld . terrain Buffer World Index ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġerror (" Invalid ĠWorld ĠGen !! ĠGenerator Ġreturn Ġvalue Ġinvalid ! ĠGenerator : Ġ" Ġ+ Ġgen Ġ+ Ġ"; Ġgenerated : Ġ" Ġ+ Ġgenerated Ġ+ Ġ"; Ġlast Gen : Ġ" Ġ+ Ġold Terrain Buffer Index Start Ġ+ Ġ"; Ġcurrent Gen : Ġ" Ġ+ Ġworld . terrain Buffer World Index ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġfor Ġ( gen Ġin Ġspecial Generators ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgen . generate ( this , Ġworld , Ġrandom , Ġgame Mode ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġadd Special Generator ( gen : ĠI Special World Generator ) Ġ{ ĊĠĠĠĠĠĠĠ Ġspecial Generators . add ( gen ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġreset () Ġ{ ĊĠĠĠĠĠĠĠ Ġfor Ġ( generator Ġin Ġspecial Generators ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgenerator . reset ( world ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġfor Ġ( gen Ġin Ġspecial Pre defined Generators ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgen . reset ( world ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġregisters Ġthe Ġdefault ĠWorld - generators ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġregister Default World Generators () Ġ{ ĊĠĠĠĠĠĠĠ Ġregister Default Terrain Generators () ĊĠĠĠĠĠĠĠ Ġregister Default B arr ic ade Generator () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġregisters Ġthe Ġdefault Ġterrain Ġgenerators Ġwith Ġdefault Ġweights ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġregister Default Terrain Generators () Ġ{ ĊĠĠĠĠĠĠĠ Ġregister Terrain Generator ( Random Terrain Generator ( 9 )) ĊĠĠĠĠĠĠĠ Ġregister Terrain Generator ( Flat Cor rid or ( 3 )) ĊĠĠĠĠĠĠĠ Ġregister Terrain Generator ( Terrain Opening ( 1 )) ĊĠĠĠĠĠĠĠ Ġregister Terrain Generator ( Terrain Closing ( 4 )) ĊĠĠĠĠĠĠĠ Ġregister Terrain Generator ( Diag onal Cor rid or ( 7 )) ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġregisters Ġthe Ġdefault ĠB arr ic ade Ġgenerator ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġregister Default B arr ic ade Generator () Ġ{ ĊĠĠĠĠĠĠĠ Ġadd Special Generator ( B arr ic ade Generator (( Reference . TARGET _ RESOL UTION _ X Ġ* Ġ 0 . 8 5 f ). toInt ())) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġinner Ġclass ĠWorld Gen Filter Ġconstructor ( private Ġval Ġold : ĠT errain Pair , Ġprivate Ġval Ġblock To Generate : ĠInt ) Ġ: ĠWeight edList . Filter < IT errain Generator > Ġ{ ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠisValid ( value : ĠIT errain Generator ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġgen Length Ġ= Ġvalue . getMin Generation Length ( old ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ!( gen Length Ġ<= Ġ 0 Ġ|| Ġgen Length Ġ> Ġblock To Generate ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ