FileRelation.java
net.minecraft.util.filefix.access.FileRelation
信息
- 全限定名:net.minecraft.util.filefix.access.FileRelation
- 类型:public interface
- 包:net.minecraft.util.filefix.access
- 源码路径:src/main/java/net/minecraft/util/filefix/access/FileRelation.java
- 起始行号:L14
- 职责:
TODO
字段/常量
-
LOGGER- 类型:
Logger - 修饰符:
package-private - 源码定位:
L15 - 说明:
TODO
- 类型:
-
ORIGIN- 类型:
FileRelation - 修饰符:
package-private - 源码定位:
L16 - 说明:
TODO
- 类型:
-
REGION- 类型:
FileRelation - 修饰符:
package-private - 源码定位:
L17 - 说明:
TODO
- 类型:
-
DATA- 类型:
FileRelation - 修饰符:
package-private - 源码定位:
L18 - 说明:
TODO
- 类型:
-
PLAYER_DATA- 类型:
FileRelation - 修饰符:
package-private - 源码定位:
L19 - 说明:
TODO
- 类型:
-
DIMENSIONS- 类型:
FileRelation - 修饰符:
package-private - 源码定位:
L20 - 说明:
TODO
- 类型:
-
DIMENSIONS_DATA- 类型:
FileRelation - 修饰符:
package-private - 源码定位:
L21 - 说明:
TODO
- 类型:
-
GENERATED_NAMESPACES- 类型:
FileRelation - 修饰符:
package-private - 源码定位:
L22 - 说明:
TODO
- 类型:
-
OLD_OVERWORLD- 类型:
FileRelation - 修饰符:
package-private - 源码定位:
L23 - 说明:
TODO
- 类型:
-
OLD_NETHER- 类型:
FileRelation - 修饰符:
package-private - 源码定位:
L24 - 说明:
TODO
- 类型:
-
OLD_END- 类型:
FileRelation - 修饰符:
package-private - 源码定位:
L25 - 说明:
TODO
- 类型:
内部类/嵌套类型
- 无
构造器
- 无
方法
下面的方法块按源码顺序生成。
List<Path> getPaths(Path basePath) @ L27
- 方法名:getPaths
- 源码定位:L27
- 返回类型:List
- 修饰符:package-private
参数:
- basePath: Path
说明:
TODO
static FileRelation forDataFileInDimension(String dimension, String fileName) @ L29
- 方法名:forDataFileInDimension
- 源码定位:L29
- 返回类型:FileRelation
- 修饰符:static
参数:
- dimension: String
- fileName: String
说明:
TODO
default FileRelation forFile(String fileName) @ L33
- 方法名:forFile
- 源码定位:L33
- 返回类型:FileRelation
- 修饰符:default
参数:
- fileName: String
说明:
TODO
default FileRelation resolve(FileRelation other) @ L37
- 方法名:resolve
- 源码定位:L37
- 返回类型:FileRelation
- 修饰符:default
参数:
- other: FileRelation
说明:
TODO
default FileRelation join(FileRelation... relations) @ L41
- 方法名:join
- 源码定位:L41
- 返回类型:FileRelation
- 修饰符:default
参数:
- relations: FileRelation…
说明:
TODO
private static List<Path> discoverDimensions(Path basePath) @ L53
- 方法名:discoverDimensions
- 源码定位:L53
- 返回类型:List
- 修饰符:private static
参数:
- basePath: Path
说明:
TODO
static List<Path> directoriesInPath(Path path) @ L75
- 方法名:directoriesInPath
- 源码定位:L75
- 返回类型:List
- 修饰符:static
参数:
- path: Path
说明:
TODO
private static List<Path> getDefaultDimensions(Path basePath) @ L88
- 方法名:getDefaultDimensions
- 源码定位:L88
- 返回类型:List
- 修饰符:private static
参数:
- basePath: Path
说明:
TODO
代码
@FunctionalInterface
public interface FileRelation {
Logger LOGGER = LogUtils.getLogger();
FileRelation ORIGIN = List::of;
FileRelation REGION = basePath -> List.of(basePath.resolve("region"));
FileRelation DATA = basePath -> List.of(basePath.resolve("data"));
FileRelation PLAYER_DATA = basePath -> List.of(basePath.resolve("players/data"));
FileRelation DIMENSIONS = FileRelation::discoverDimensions;
FileRelation DIMENSIONS_DATA = DIMENSIONS.resolve(DATA);
FileRelation GENERATED_NAMESPACES = ORIGIN.resolve(basePath -> directoriesInPath(basePath.resolve("generated")));
FileRelation OLD_OVERWORLD = ORIGIN;
FileRelation OLD_NETHER = ORIGIN.resolve(basePath -> List.of(basePath.resolve("DIM-1")));
FileRelation OLD_END = ORIGIN.resolve(basePath -> List.of(basePath.resolve("DIM1")));
List<Path> getPaths(final Path basePath);
static FileRelation forDataFileInDimension(String dimension, String fileName) {
return basePath -> List.of(basePath.resolve("dimensions/minecraft/" + dimension + "/data/" + fileName));
}
default FileRelation forFile(String fileName) {
return this.resolve(basePath -> List.of(basePath.resolve(fileName)));
}
default FileRelation resolve(FileRelation other) {
return basePath -> this.getPaths(basePath).stream().flatMap(path -> other.getPaths(path).stream()).toList();
}
default FileRelation join(FileRelation... relations) {
return basePath -> {
Set<Path> paths = new HashSet<>();
for (FileRelation relation : relations) {
paths.addAll(relation.getPaths(basePath));
}
return List.copyOf(paths);
};
}
private static List<Path> discoverDimensions(Path basePath) {
Path dimensionsRoot = basePath.resolve("dimensions");
if (!Files.exists(dimensionsRoot)) {
return getDefaultDimensions(basePath);
} else {
try {
List var4;
try (Stream<Path> namespacePaths = Files.list(dimensionsRoot)) {
List<Path> discoveredDimensions = namespacePaths.filter(x$0 -> Files.isDirectory(x$0))
.flatMap(path -> directoriesInPath(path).stream())
.toList();
var4 = discoveredDimensions.isEmpty() ? getDefaultDimensions(basePath) : discoveredDimensions;
}
return var4;
} catch (IOException var7) {
LOGGER.warn("Failed to discover dimensions, assuming default: {}", var7.toString());
return getDefaultDimensions(basePath);
}
}
}
static List<Path> directoriesInPath(Path path) {
try {
List var2;
try (Stream<Path> dimensionPaths = Files.list(path)) {
var2 = dimensionPaths.filter(x$0 -> Files.isDirectory(x$0)).toList();
}
return var2;
} catch (IOException var6) {
return List.of();
}
}
private static List<Path> getDefaultDimensions(Path basePath) {
return List.of(
basePath.resolve("dimensions/minecraft/overworld"),
basePath.resolve("dimensions/minecraft/the_nether"),
basePath.resolve("dimensions/minecraft/the_end")
);
}
}引用的其他类
- 无