Fixed rare out of bounds crash due to rounding errors
This commit is contained in:
parent
b3ade98445
commit
dd38421d45
1 changed files with 4 additions and 20 deletions
|
@ -2,6 +2,7 @@ package biomesoplenty.common.world.layer;
|
||||||
|
|
||||||
import biomesoplenty.common.enums.BOPClimates;
|
import biomesoplenty.common.enums.BOPClimates;
|
||||||
import biomesoplenty.core.BiomesOPlenty;
|
import biomesoplenty.core.BiomesOPlenty;
|
||||||
|
import net.minecraft.util.MathHelper;
|
||||||
import net.minecraft.world.gen.layer.GenLayer;
|
import net.minecraft.world.gen.layer.GenLayer;
|
||||||
import net.minecraft.world.gen.layer.IntCache;
|
import net.minecraft.world.gen.layer.IntCache;
|
||||||
|
|
||||||
|
@ -27,28 +28,11 @@ public class GenLayerClimate extends BOPGenLayer {
|
||||||
|
|
||||||
for (int i = 0; i < areaWidth * areaHeight; ++i)
|
for (int i = 0; i < areaWidth * areaHeight; ++i)
|
||||||
{
|
{
|
||||||
//TODO: Debug code - remove once out of bounds bug is solved.
|
|
||||||
if (i >= temperatureValues.length)
|
|
||||||
{
|
|
||||||
BiomesOPlenty.logger.error(i + " is out of bounds for temperature values");
|
|
||||||
}
|
|
||||||
|
|
||||||
if (i >= rainfallValues.length)
|
|
||||||
{
|
|
||||||
BiomesOPlenty.logger.error(i + " is out of bounds for rainfall values");
|
|
||||||
}
|
|
||||||
|
|
||||||
int index = (temperatureValues[i] * 12) + rainfallValues[i];
|
int index = (temperatureValues[i] * 12) + rainfallValues[i];
|
||||||
|
|
||||||
if (index >= climateMapping.length)
|
|
||||||
{
|
|
||||||
BiomesOPlenty.logger.error("Index " + i + " is out of bounds for climate mappings");
|
|
||||||
BiomesOPlenty.logger.error("Temperature: " + temperatureValues[i]);
|
|
||||||
BiomesOPlenty.logger.error("Rainfall: " + rainfallValues[i]);
|
|
||||||
}
|
|
||||||
|
|
||||||
// temperature values from 0 (cold) to 8 (hot) and rainfall values from 0 (wet) to 11 (dry), index is (temperatureValue * 12) + rainfallValue
|
// temperature values from 0 (cold) to 8 (hot) and rainfall values from 0 (wet) to 11 (dry), index is (temperatureValue * 12) + rainfallValue
|
||||||
out[i] = this.climateMapping[index];
|
// index is clamped to account for potential rounding errors due to use of doubles/floats
|
||||||
|
out[i] = this.climateMapping[MathHelper.clamp_int(index, 0, this.climateMapping.length)];
|
||||||
}
|
}
|
||||||
return out;
|
return out;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue