generated from tilera/1710mod
fix: rare double aura in desert temples
This commit is contained in:
parent
d9a56272f7
commit
9db42fb0db
|
@ -24,7 +24,7 @@ apply from: './gradle/scripts/mixins.gradle'
|
||||||
sourceCompatibility = JavaVersion.VERSION_1_8
|
sourceCompatibility = JavaVersion.VERSION_1_8
|
||||||
targetCompatibility = JavaVersion.VERSION_1_8
|
targetCompatibility = JavaVersion.VERSION_1_8
|
||||||
|
|
||||||
version = "1.8.6"
|
version = "1.8.7"
|
||||||
group= "dev.tilera"
|
group= "dev.tilera"
|
||||||
archivesBaseName = "auracore"
|
archivesBaseName = "auracore"
|
||||||
|
|
||||||
|
|
|
@ -228,6 +228,39 @@ public class AuraManager {
|
||||||
return closest;
|
return closest;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static int getClosestAuraWithinRange(World world, double x, double z, double range) {
|
||||||
|
int dim = world.provider.dimensionId;
|
||||||
|
int cx = MathHelper.floor_double((double)x) / 16;
|
||||||
|
int cz = MathHelper.floor_double((double)z) / 16;
|
||||||
|
if (world.isRemote) {
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
int size = 5;
|
||||||
|
int closest = -1;
|
||||||
|
double clRange = Double.MAX_VALUE;
|
||||||
|
synchronized (saveLock) {
|
||||||
|
for (int xx = -size; xx <= size; ++xx) {
|
||||||
|
for (int zz = -size; zz <= size; ++zz) {
|
||||||
|
List<Integer> nc = nodeChunks.get(Arrays.asList(dim, cx + xx, cz + zz));
|
||||||
|
if (nc == null || nc.size() <= 0) continue;
|
||||||
|
for (Integer key : nc) {
|
||||||
|
try {
|
||||||
|
double zd;
|
||||||
|
double xd;
|
||||||
|
double distSq;
|
||||||
|
AuraNode node = AuraManager.copyNode(AuraManager.getNode(key));
|
||||||
|
if (node == null || node.locked || !Utils.isChunkLoaded(world, MathHelper.floor_double((double)node.xPos), MathHelper.floor_double((double)node.zPos)) || !(range * range >= (distSq = (xd = node.xPos - x) * xd + (zd = node.zPos - z) * zd)) || !(distSq < clRange)) continue;
|
||||||
|
closest = key;
|
||||||
|
clRange = distSq;
|
||||||
|
}
|
||||||
|
catch (Exception e) {}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return closest;
|
||||||
|
}
|
||||||
|
|
||||||
public static ArrayList<Integer> getAurasWithin(World world, double x, double y, double z) {
|
public static ArrayList<Integer> getAurasWithin(World world, double x, double y, double z) {
|
||||||
int dim = world.provider.dimensionId;
|
int dim = world.provider.dimensionId;
|
||||||
int cx = MathHelper.floor_double((double)x) / 16;
|
int cx = MathHelper.floor_double((double)x) / 16;
|
||||||
|
|
|
@ -98,7 +98,7 @@ public class WorldGenerator implements IWorldGenerator {
|
||||||
auraGen = true;
|
auraGen = true;
|
||||||
this.structureNode.put(var7.hashCode(), true);
|
this.structureNode.put(var7.hashCode(), true);
|
||||||
int yPos = world.getHeightValue(var7.chunkPosX, var7.chunkPosZ) + 3;
|
int yPos = world.getHeightValue(var7.chunkPosX, var7.chunkPosZ) + 3;
|
||||||
int nearKey = AuraManager.getClosestAuraWithinRange(world, var7.chunkPosX, yPos, var7.chunkPosZ, 10);
|
int nearKey = AuraManager.getClosestAuraWithinRange(world, var7.chunkPosX, var7.chunkPosZ, 10);
|
||||||
if (nearKey < 0 && yPos > 0) {
|
if (nearKey < 0 && yPos > 0) {
|
||||||
int value = random.nextInt(200) + 800;
|
int value = random.nextInt(200) + 800;
|
||||||
AuraManager.registerAuraNode(world, (short)value, EnumNodeType.NORMAL, world.provider.dimensionId, var7.chunkPosX, yPos, var7.chunkPosZ);
|
AuraManager.registerAuraNode(world, (short)value, EnumNodeType.NORMAL, world.provider.dimensionId, var7.chunkPosX, yPos, var7.chunkPosZ);
|
||||||
|
|
Loading…
Reference in a new issue