11package com .mcmoddev .orespawn .json ;
22
33import java .io .File ;
4- import java .nio .file .Files ;
54import java .nio .file .Path ;
65import java .util .ArrayList ;
76import java .util .Arrays ;
2120import com .mcmoddev .orespawn .data .ReplacementsRegistry ;
2221import com .mcmoddev .orespawn .impl .os3 .DimensionBuilderImpl ;
2322import com .mcmoddev .orespawn .impl .os3 .SpawnBuilderImpl ;
23+ import com .mcmoddev .orespawn .data .Constants .ConfigNames ;
2424
25+ import net .minecraft .block .Block ;
2526import net .minecraft .block .state .IBlockState ;
2627import net .minecraft .crash .CrashReport ;
2728import net .minecraft .item .ItemBlock ;
@@ -32,7 +33,7 @@ private OS1Reader() {
3233
3334 }
3435 public static void loadEntries (Path confDir ) {
35- if ( !Files . exists (confDir ) ) {
36+ if ( !confDir . toFile (). exists () ) {
3637 // No files to read, don't go farther as that would create the dir
3738 return ;
3839 }
@@ -64,25 +65,15 @@ public static void loadEntries(Path confDir) {
6465 List <DimensionBuilder > builders = new ArrayList <>();
6566
6667 // iterate over the dimensions
67- for (JsonElement elem : root .get ("dimensions" ).getAsJsonArray () ) {
68+ JsonArray theDims = root .get (ConfigNames .DIMENSIONS ).getAsJsonArray ();
69+ for (JsonElement elem : theDims ) {
6870 JsonObject dim = elem .getAsJsonObject ();
6971 DimensionBuilder builder ;
7072
71- JsonElement dimElem = dim .get ("dimension" );
73+ JsonElement dimElem = dim .get (ConfigNames . DIMENSION );
7274 if ( dimElem .isJsonPrimitive () && !dimElem .isJsonNull ()) {
73- if ( dimElem .getAsJsonPrimitive ().isNumber () ) {
74- builder = logic .newDimensionBuilder (dimElem .getAsInt ());
75- } else {
76- String dimId = dimElem .getAsString ();
77- switch (dimId ) {
78- case "+" :
79- builder = logic .newDimensionBuilder ();
80- break ;
81- default :
82- builder = logic .newDimensionBuilder (dim .get ("dimension" ).getAsString ());
83- }
84- }
85- loadOres ( dim .get ("ores" ).getAsJsonArray (), builder );
75+ builder = getBuilder ( dimElem , logic );
76+ loadOres ( dim .get (ConfigNames .ORES ).getAsJsonArray (), builder );
8677 builders .add (builder );
8778 }
8879 }
@@ -98,46 +89,68 @@ public static void loadEntries(Path confDir) {
9889
9990 }
10091
92+ private static DimensionBuilder getBuilder (JsonElement dimElem , BuilderLogic logic ) {
93+ if ( dimElem .getAsJsonPrimitive ().isNumber () ) {
94+ return logic .newDimensionBuilder (dimElem .getAsInt ());
95+ } else {
96+ String dimId = dimElem .getAsString ();
97+ if ( "+" .equals (dimId ) ) {
98+ return logic .newDimensionBuilder ();
99+ } else {
100+ return logic .newDimensionBuilder (dimElem .getAsString ());
101+ }
102+ }
103+ }
104+
101105 private static void loadOres (JsonArray ores , DimensionBuilder builder ) {
102106 List <SpawnBuilder > spawns = new ArrayList <>();
103- for ( JsonElement e : ores ) {
107+
108+ ores .forEach ( e -> {
104109 JsonObject ore = e .getAsJsonObject ();
105110 SpawnBuilder spawn = builder .newSpawnBuilder (null );
106111 OreBuilder tO = spawn .newOreBuilder ();
107- String blockID = ore .get ("blockID" ).getAsString ();
108- int meta = ore .has ("metaData" )?ore .get ("metaData" ).getAsInt ():0 ;
112+ String blockID = ore .get (ConfigNames . BLOCKID ).getAsString ();
113+ int meta = ore .has (ConfigNames . METADATA )?ore .get (ConfigNames . METADATA ).getAsInt ():0 ;
109114 if ( meta > 0 ) {
110- tO .setOre (blockID . toString () , meta );
115+ tO .setOre (blockID , meta );
111116 } else {
112- tO .setOre (blockID . toString () );
117+ tO .setOre (blockID );
113118 }
114- float frequency = ore .has ("frequency" )?ore .get ("frequency" ).getAsFloat ():20.0f ;
115- int size = ore .has ("size" )?ore .get ("size" ).getAsInt ():8 ;
116- int maxHeight = ore .has ("maxHeight" )?ore .get ("maxHeight" ).getAsInt ():255 ;
117- int minHeight = ore .has ("minHeight" )?ore .get ("minHeight" ).getAsInt ():0 ;
118- int variation = ore .has ("variation" )?ore .get ("variation" ).getAsInt ():(int )(0.5f * size );
119- List <IBlockState > replacements = new ArrayList <>();
120- FeatureBuilder feature = spawn .newFeatureBuilder ("default" );
121- feature .addParameter ("frequency" ,frequency ).addParameter ("size" , size )
122- .addParameter ("maxHeight" , maxHeight ).addParameter ("minHeight" , minHeight )
123- .addParameter ("variation" , variation );
119+ FeatureBuilder feature = spawn .newFeatureBuilder (ConfigNames .DEFAULT );
120+ setupFeature (feature ,ore );
124121
122+ List <IBlockState > replacements = new ArrayList <>();
125123 replacements .add (ReplacementsRegistry .getDimensionDefault (-1 ));
126124 replacements .add (ReplacementsRegistry .getDimensionDefault (0 ));
127125 replacements .add (ReplacementsRegistry .getDimensionDefault (1 ));
128- replacements .addAll (OreDictionary .getOres ("stone" ).stream ().filter (stack -> stack .getItem () instanceof ItemBlock ).map (stack -> ((ItemBlock ) stack .getItem ()).getBlock ()).map ( block -> block . getDefaultState () ).collect (Collectors .toList ()));
126+ replacements .addAll (OreDictionary .getOres ("stone" ).stream ().filter (stack -> stack .getItem () instanceof ItemBlock ).map (stack -> ((ItemBlock ) stack .getItem ()).getBlock ()).map ( OS1Reader :: getDefaultBlockState ).collect (Collectors .toList ()));
129127
130128 BiomeBuilder biomes = spawn .newBiomeBuilder ();
131- if ( ore .has ("biomes" ) ) {
132- for ( JsonElement bm : ore .get ("biomes" ).getAsJsonArray () ) {
129+ if ( ore .has (ConfigNames . BIOMES ) ) {
130+ for ( JsonElement bm : ore .get (ConfigNames . BIOMES ).getAsJsonArray () ) {
133131 String biome = bm .getAsString ();
134132 biomes .whitelistBiomeByName (biome );
135133 }
136134 }
137135
138136 spawn .create (biomes , feature , replacements , tO );
139137 spawns .add (spawn );
140- }
138+ });
139+
141140 builder .create (spawns .toArray (new SpawnBuilderImpl [spawns .size ()]));
142141 }
142+
143+ private static IBlockState getDefaultBlockState ( Block block ) {
144+ return block .getDefaultState ();
145+ }
146+ private static void setupFeature (FeatureBuilder feature , JsonObject ore ) {
147+ float frequency = ore .has (ConfigNames .DefaultFeatureProperties .FREQUENCY )?ore .get (ConfigNames .DefaultFeatureProperties .FREQUENCY ).getAsFloat ():20.0f ;
148+ int size = ore .has (ConfigNames .DefaultFeatureProperties .SIZE )?ore .get (ConfigNames .DefaultFeatureProperties .SIZE ).getAsInt ():8 ;
149+ int maxHeight = ore .has (ConfigNames .DefaultFeatureProperties .MAXHEIGHT )?ore .get (ConfigNames .DefaultFeatureProperties .MAXHEIGHT ).getAsInt ():255 ;
150+ int minHeight = ore .has (ConfigNames .DefaultFeatureProperties .MINHEIGHT )?ore .get (ConfigNames .DefaultFeatureProperties .MINHEIGHT ).getAsInt ():0 ;
151+ int variation = ore .has (ConfigNames .DefaultFeatureProperties .VARIATION )?ore .get (ConfigNames .DefaultFeatureProperties .VARIATION ).getAsInt ():(int )(0.5f * size );
152+ feature .addParameter (ConfigNames .DefaultFeatureProperties .FREQUENCY ,frequency ).addParameter (ConfigNames .DefaultFeatureProperties .SIZE , size )
153+ .addParameter (ConfigNames .DefaultFeatureProperties .MAXHEIGHT , maxHeight ).addParameter (ConfigNames .DefaultFeatureProperties .MINHEIGHT , minHeight )
154+ .addParameter (ConfigNames .DefaultFeatureProperties .VARIATION , variation );
155+ }
143156}
0 commit comments