lazy chunk loading
This commit is contained in:
parent
7f578bc3bf
commit
a64e07685b
@ -53,7 +53,7 @@ public final class CachedWorld implements ICachedChunkAccess {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public final PathingBlockType getBlockType(int x, int y, int z) {
|
public final PathingBlockType getBlockType(int x, int y, int z) {
|
||||||
CachedRegion region = getRegion(x >> 9, z >> 9);
|
CachedRegion region = getOrCreateRegion(x >> 9, z >> 9);
|
||||||
if (region != null) {
|
if (region != null) {
|
||||||
return region.getBlockType(x & 511, y, z & 511);
|
return region.getBlockType(x & 511, y, z & 511);
|
||||||
}
|
}
|
||||||
|
@ -31,8 +31,6 @@ import java.nio.file.Path;
|
|||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.function.Consumer;
|
import java.util.function.Consumer;
|
||||||
import java.util.regex.Matcher;
|
|
||||||
import java.util.regex.Pattern;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author Brady
|
* @author Brady
|
||||||
@ -42,8 +40,6 @@ public enum CachedWorldProvider implements Helper {
|
|||||||
|
|
||||||
INSTANCE;
|
INSTANCE;
|
||||||
|
|
||||||
private static final Pattern REGION_REGEX = Pattern.compile("r\\.(-?[0-9]+)\\.(-?[0-9]+)\\.bcr");
|
|
||||||
|
|
||||||
private final Map<String, CachedWorld> singlePlayerWorldCache = new HashMap<>();
|
private final Map<String, CachedWorld> singlePlayerWorldCache = new HashMap<>();
|
||||||
|
|
||||||
private CachedWorld currentWorld;
|
private CachedWorld currentWorld;
|
||||||
@ -68,21 +64,6 @@ public enum CachedWorldProvider implements Helper {
|
|||||||
}
|
}
|
||||||
|
|
||||||
this.currentWorld = this.singlePlayerWorldCache.computeIfAbsent(dir.toString(), CachedWorld::new);
|
this.currentWorld = this.singlePlayerWorldCache.computeIfAbsent(dir.toString(), CachedWorld::new);
|
||||||
|
|
||||||
try {
|
|
||||||
Files.list(dir).forEach(path -> {
|
|
||||||
String file = path.getFileName().toString();
|
|
||||||
Matcher matcher = REGION_REGEX.matcher(file);
|
|
||||||
if (matcher.matches()) {
|
|
||||||
int rx = Integer.parseInt(matcher.group(1));
|
|
||||||
int ry = Integer.parseInt(matcher.group(2));
|
|
||||||
// Recognize the region for when we load from file
|
|
||||||
this.currentWorld.getOrCreateRegion(rx, ry);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
} catch (Exception ignored) {}
|
|
||||||
|
|
||||||
this.currentWorld.load();
|
|
||||||
}
|
}
|
||||||
// TODO: Store server worlds
|
// TODO: Store server worlds
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user