mirror of
https://github.com/VolmitSoftware/Iris.git
synced 2026-06-18 14:50:57 +00:00
Fix mantle
This commit is contained in:
@@ -80,7 +80,7 @@ public class Mantle {
|
|||||||
unload = new KSet<>();
|
unload = new KSet<>();
|
||||||
loadedRegions = new KMap<>();
|
loadedRegions = new KMap<>();
|
||||||
lastUse = new KMap<>();
|
lastUse = new KMap<>();
|
||||||
ioBurst = MultiBurst.burst;
|
ioBurst = new MultiBurst("Iris Mantle[" + dataFolder.hashCode() + "]", Thread.MIN_PRIORITY, Runtime.getRuntime().availableProcessors() / 2);
|
||||||
Iris.debug("Opened The Mantle " + C.DARK_AQUA + dataFolder.getAbsolutePath());
|
Iris.debug("Opened The Mantle " + C.DARK_AQUA + dataFolder.getAbsolutePath());
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -126,19 +126,6 @@ public class Mantle {
|
|||||||
get(x >> 5, z >> 5).getOrCreate(x & 31, z & 31).flag(flag, flagged);
|
get(x >> 5, z >> 5).getOrCreate(x & 31, z & 31).flag(flag, flagged);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Check very quickly if a tectonic plate exists via cached or the file system
|
|
||||||
* @param x the x region coordinate
|
|
||||||
* @param z the z region coordinate
|
|
||||||
* @return true if it exists
|
|
||||||
*/
|
|
||||||
@RegionCoordinates
|
|
||||||
public boolean hasTectonicPlate(int x, int z)
|
|
||||||
{
|
|
||||||
Long k = key(x, z);
|
|
||||||
return loadedRegions.containsKey(k) || fileForRegion(dataFolder, k).exists();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Iterate data in a chunk
|
* Iterate data in a chunk
|
||||||
* @param x the chunk x
|
* @param x the chunk x
|
||||||
@@ -150,11 +137,6 @@ public class Mantle {
|
|||||||
*/
|
*/
|
||||||
@ChunkCoordinates
|
@ChunkCoordinates
|
||||||
public <T> void iterateChunk(int x, int z, Class<T> type, Consumer4<Integer, Integer, Integer, T> iterator, MantleFlag... requiredFlags) {
|
public <T> void iterateChunk(int x, int z, Class<T> type, Consumer4<Integer, Integer, Integer, T> iterator, MantleFlag... requiredFlags) {
|
||||||
if(!hasTectonicPlate(x >> 5, z >> 5))
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
for (MantleFlag i : requiredFlags) {
|
for (MantleFlag i : requiredFlags) {
|
||||||
if (!hasFlag(x, z, i)) {
|
if (!hasFlag(x, z, i)) {
|
||||||
return;
|
return;
|
||||||
@@ -173,11 +155,6 @@ public class Mantle {
|
|||||||
*/
|
*/
|
||||||
@ChunkCoordinates
|
@ChunkCoordinates
|
||||||
public boolean hasFlag(int x, int z, MantleFlag flag) {
|
public boolean hasFlag(int x, int z, MantleFlag flag) {
|
||||||
if(!hasTectonicPlate(x >> 5, z >> 5))
|
|
||||||
{
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
return get(x >> 5, z >> 5).getOrCreate(x & 31, z & 31).isFlagged(flag);
|
return get(x >> 5, z >> 5).getOrCreate(x & 31, z & 31).isFlagged(flag);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -234,12 +211,7 @@ public class Mantle {
|
|||||||
throw new RuntimeException("The Mantle is closed");
|
throw new RuntimeException("The Mantle is closed");
|
||||||
}
|
}
|
||||||
|
|
||||||
if(!hasTectonicPlate(x >> 5, z >> 5))
|
if (y < 0) {
|
||||||
{
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (y < 0 || y >= worldHeight) {
|
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -291,6 +263,7 @@ public class Mantle {
|
|||||||
Iris.reportError(e);
|
Iris.reportError(e);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ioBurst.shutdownNow();
|
||||||
Iris.debug("The Mantle has Closed " + C.DARK_AQUA + dataFolder.getAbsolutePath());
|
Iris.debug("The Mantle has Closed " + C.DARK_AQUA + dataFolder.getAbsolutePath());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user