fix another case where setting terrain weight to zero would cause a crash

This commit is contained in:
dags- 2020-03-17 12:52:07 +00:00
parent 389427504d
commit 43ef4e955c

View File

@ -63,17 +63,29 @@ public class RegionSelector implements Populator {
float smallest = Float.MAX_VALUE; float smallest = Float.MAX_VALUE;
for (Populator p : modules) { for (Populator p : modules) {
if (p instanceof TerrainPopulator) { if (p instanceof TerrainPopulator) {
smallest = Math.min(smallest, ((TerrainPopulator) p).getType().getWeight()); TerrainPopulator tp = (TerrainPopulator) p;
if (tp.getType().getWeight() == 0F) {
continue;
}
smallest = Math.min(smallest, tp.getType().getWeight());
} else { } else {
smallest = Math.min(smallest, 1); smallest = Math.min(smallest, 1);
} }
} }
if (smallest == Float.MAX_VALUE) {
return modules.toArray(new Populator[0]);
}
List<Populator> result = new LinkedList<>(); List<Populator> result = new LinkedList<>();
for (Populator p : modules) { for (Populator p : modules) {
int count; int count;
if (p instanceof TerrainPopulator) { if (p instanceof TerrainPopulator) {
count = Math.round(((TerrainPopulator) p).getType().getWeight() / smallest); TerrainPopulator tp = (TerrainPopulator) p;
if (tp.getType().getWeight() == 0F) {
continue;
}
count = Math.round(tp.getType().getWeight() / smallest);
} else { } else {
count = Math.round(1 / smallest); count = Math.round(1 / smallest);
} }