Skip to content

Commit e7d54d2

Browse files
committed
resolve issues noted by @jriwanek and most of the SonarLint issues that popped up
1 parent 74c141b commit e7d54d2

File tree

10 files changed

+376
-271
lines changed

10 files changed

+376
-271
lines changed

src/main/java/com/mcmoddev/orespawn/api/os3/OreBuilder.java

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,11 +10,18 @@
1010
public interface OreBuilder {
1111
OreBuilder setOre( @Nonnull String name );
1212
OreBuilder setOre( @Nonnull String name, @Nonnull String serializedState );
13-
OreBuilder setOre( @Nonnull String name, @Nonnull int metaData );
13+
OreBuilder setOre( @Nonnull String name, int metaData );
1414
OreBuilder setOre( @Nonnull Block base );
1515
OreBuilder setOre( @Nonnull Block base, @Nonnull String serializedState );
16-
OreBuilder setOre( @Nonnull Item base, @Nonnull int metaData );
16+
OreBuilder setOre( @Nonnull Item base, int metaData );
1717
OreBuilder setOre( @Nonnull ItemStack item );
18+
// Allow specifying size as an extra parameter - for those cases where it could be meta
19+
// or size, skip them to save a potential error condition
20+
OreBuilder setOre( @Nonnull String name, @Nonnull String serializedState, int chance );
21+
OreBuilder setOre( @Nonnull String name, int metaData, int chance );
22+
OreBuilder setOre( @Nonnull Block base, @Nonnull String serializedState, int chance );
23+
OreBuilder setOre( @Nonnull Item base, int metaData, int chance );
24+
OreBuilder setOre( @Nonnull ItemStack item, int chance );
1825
OreBuilder setChance( @Nonnull int chance );
1926

2027
IBlockState getOre();

src/main/java/com/mcmoddev/orespawn/data/Constants.java

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,4 +11,40 @@ public class Constants {
1111
public static final String ORE_TAG = "ores";
1212
public static final String FEATURES_TAG = "features";
1313
public static final String REPLACE_VANILLA_OREGEN = "Replace Vanilla Oregen";
14+
public static final String OVERWORLD = "overworld";
15+
public static final String THE_OVERWORLD = "the overworld";
16+
public static final String NETHER = "nether";
17+
public static final String THE_NETHER = "the nether";
18+
public static final String END = "end";
19+
public static final String THE_END = "the end";
20+
public final class ConfigNames {
21+
private ConfigNames() {}
22+
public static final String DEFAULT = "default";
23+
public static final String STATE_NORMAL = "normal";
24+
public static final String DIMENSION = "dimension";
25+
public static final String ORES = "ores";
26+
public static final String DIMENSIONS = "dimensions";
27+
public static final String BLOCKID = "blockID";
28+
public static final String BLOCK = "block";
29+
public static final String METADATA = "metaData";
30+
public static final String BIOMES = "biomes";
31+
public static final String STATE = "state";
32+
public static final String REPLACEMENT = "replacement_block";
33+
public static final String FEATURE = "feature";
34+
public static final String PARAMETERS = "parameters";
35+
public static final String FILE_VERSION = "version";
36+
public final class BiomeStuff {
37+
private BiomeStuff() {}
38+
public static final String WHITELIST = "inclusions";
39+
public static final String BLACKLIST = "exclusions";
40+
}
41+
public final class DefaultFeatureProperties {
42+
private DefaultFeatureProperties() {}
43+
public static final String SIZE = "size";
44+
public static final String VARIATION = "variation";
45+
public static final String FREQUENCY = "frequency";
46+
public static final String MAXHEIGHT = "maxHeight";
47+
public static final String MINHEIGHT = "minHeight";
48+
}
49+
}
1450
}

src/main/java/com/mcmoddev/orespawn/impl/os3/BuilderLogicImpl.java

Lines changed: 23 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
import com.mcmoddev.orespawn.OreSpawn;
99
import com.mcmoddev.orespawn.api.os3.BuilderLogic;
1010
import com.mcmoddev.orespawn.api.os3.DimensionBuilder;
11+
import com.mcmoddev.orespawn.data.Constants;
1112

1213
public class BuilderLogicImpl implements BuilderLogic {
1314
private final Map<Integer, DimensionBuilder> dimensions;
@@ -18,20 +19,11 @@ public BuilderLogicImpl() {
1819

1920
@Override
2021
public DimensionBuilder newDimensionBuilder(String name) {
21-
switch(name.toLowerCase(Locale.ROOT)) {
22-
case "overworld":
23-
return this.newDimensionBuilder(0);
24-
case "nether":
25-
case "the nether":
26-
return this.newDimensionBuilder(-1);
27-
case "end":
28-
case "the end":
29-
return this.newDimensionBuilder(1);
30-
case "+":
31-
default:
32-
// assume that they want the wildcard
22+
int id = this.dimensionNameToId(name);
23+
if( id == OreSpawn.API.dimensionWildcard() ) {
3324
return this.newDimensionBuilder();
3425
}
26+
return this.newDimensionBuilder(id);
3527
}
3628

3729
@Override
@@ -57,25 +49,7 @@ public BuilderLogic create(DimensionBuilder... dimensions) {
5749

5850
@Override
5951
public DimensionBuilder getDimension(String name) {
60-
Integer id = null;
61-
switch(name.toLowerCase(Locale.ROOT)) {
62-
case "overworld":
63-
id = 0;
64-
break;
65-
case "nether":
66-
case "the nether":
67-
id = -1;
68-
break;
69-
case "end":
70-
case "the end":
71-
id = 1;
72-
break;
73-
case "+":
74-
default:
75-
// assume that they want the wildcard
76-
id = OreSpawn.API.dimensionWildcard();
77-
}
78-
52+
Integer id = this.dimensionNameToId(name);
7953
return this.getDimension(id);
8054
}
8155

@@ -93,4 +67,22 @@ public ImmutableMap<Integer, DimensionBuilder> getAllDimensions() {
9367
return ImmutableMap.<Integer, DimensionBuilder>copyOf(dimensions);
9468
}
9569

70+
71+
private int dimensionNameToId(String name) {
72+
switch(name.toLowerCase(Locale.ROOT)) {
73+
case Constants.OVERWORLD:
74+
case Constants.THE_OVERWORLD:
75+
return 0;
76+
case Constants.NETHER:
77+
case Constants.THE_NETHER:
78+
return -1;
79+
case Constants.END:
80+
case Constants.THE_END:
81+
return 1;
82+
case "+":
83+
default:
84+
return OreSpawn.API.dimensionWildcard();
85+
}
86+
}
87+
9688
}

src/main/java/com/mcmoddev/orespawn/impl/os3/OreBuilderImpl.java

Lines changed: 28 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ public OreBuilder setOre(String name, int metaData) {
5050
return this;
5151

5252
this.ore = this.ore.getBlock().getStateFromMeta(metaData);
53-
return null;
53+
return this;
5454
}
5555

5656
@Override
@@ -69,20 +69,46 @@ public OreBuilder setOre(Block base, String serializedState) {
6969
@Override
7070
public OreBuilder setOre(Item base, int metaData) {
7171
this.ore = Block.getBlockFromItem(base).getStateFromMeta(metaData);
72-
return null;
72+
return this;
7373
}
7474

7575
@Override
7676
public OreBuilder setOre(ItemStack item) {
7777
return this.setOre(Block.getBlockFromItem(item.getItem()));
7878
}
7979

80+
@Override
81+
public OreBuilder setOre(String name, String serializedState, int chance) {
82+
return this.setOre(name, serializedState).setChance(chance);
83+
}
84+
85+
@Override
86+
public OreBuilder setOre(String name, int metaData, int chance) {
87+
return this.setOre(name, metaData).setChance(chance);
88+
}
89+
90+
@Override
91+
public OreBuilder setOre(Block base, String serializedState, int chance) {
92+
return this.setOre(base, serializedState).setChance(chance);
93+
}
94+
95+
@Override
96+
public OreBuilder setOre(Item base, int metaData, int chance) {
97+
return this.setOre(base, metaData).setChance(chance);
98+
}
99+
100+
@Override
101+
public OreBuilder setOre(ItemStack item, int chance) {
102+
return this.setOre(item).setChance(chance);
103+
}
104+
80105
@Override
81106
public OreBuilder setChance(int chance) {
82107
this.chance = chance;
83108
return this;
84109
}
85110

111+
86112
@Override
87113
public IBlockState getOre() {
88114
return this.ore;

src/main/java/com/mcmoddev/orespawn/json/OS1Reader.java

Lines changed: 49 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
package com.mcmoddev.orespawn.json;
22

33
import java.io.File;
4-
import java.nio.file.Files;
54
import java.nio.file.Path;
65
import java.util.ArrayList;
76
import java.util.Arrays;
@@ -21,7 +20,9 @@
2120
import com.mcmoddev.orespawn.data.ReplacementsRegistry;
2221
import com.mcmoddev.orespawn.impl.os3.DimensionBuilderImpl;
2322
import com.mcmoddev.orespawn.impl.os3.SpawnBuilderImpl;
23+
import com.mcmoddev.orespawn.data.Constants.ConfigNames;
2424

25+
import net.minecraft.block.Block;
2526
import net.minecraft.block.state.IBlockState;
2627
import net.minecraft.crash.CrashReport;
2728
import 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

Comments
 (0)