RootContext class
Пакет: com.hypixel.hytale.server.worldgen.loader.context
Файл: com/hypixel/hytale/server/worldgen/loader/context/FileContext.java
extends: FileContext<FileContext.RootContext>
Поля (1)
| Модификаторы | Тип | Имя |
|---|---|---|
|
public static final FileContext.RootContext |
INSTANCE |
Исходный код
Показать/скрыть
class="kw">package com.hypixel.hytale.server.worldgen.loader.context;
class="kw">import it.unimi.dsi.fastutil.objects.Object2ObjectLinkedOpenHashMap;
class="kw">import it.unimi.dsi.fastutil.objects.Object2ObjectMap;
class="kw">import java.nio.file.Path;
class="kw">import java.nio.file.Paths;
class="kw">import java.util.Iterator;
class="kw">import java.util.Map.Entry;
class="kw">import javax.annotation.Nonnull;
class="kw">public class FileContext<T class="kw">extends FileContext<?>> {
class="kw">private class="kw">final int id;
@Nonnull
class="kw">private class="kw">final String name;
@Nonnull
class="kw">private class="kw">final Path filepath;
@Nonnull
class="kw">private class="kw">final T parentContext;
class="kw">private class="kw">transient String rootPath = null;
class="kw">private class="kw">transient String contentPath = null;
class="kw">public FileContext(int var1, @Nonnull String var2, @Nonnull Path var3, @Nonnull T var4) {
this.id = var1;
this.name = var2;
this.filepath = var3;
this.parentContext = var4;
}
class="kw">public int getId() {
class="kw">return this.id;
}
@Nonnull
class="kw">public String getName() {
class="kw">return this.name;
}
@Nonnull
class="kw">public Path getPath() {
class="kw">return this.filepath;
}
@Nonnull
class="kw">public String getRootPath() {
if (this.rootPath == null) {
this.rootPath = this.getRoot().filepath.getFileName().toString();
}
class="kw">return this.rootPath;
}
@Nonnull
class="kw">public T getParentContext() {
class="kw">return this.parentContext;
}
@Nonnull
class="kw">public String getContentPath() {
if (this.contentPath == null) {
this.contentPath = toContentPath(this.filepath, this.parentContext);
}
class="kw">return this.contentPath;
}
@Nonnull
class="kw">public FileContext<?> getRoot() {
FileContext var1 = this;
while (var1.parentContext != FileContext.RootContext.INSTANCE) {
var1 = var1.parentContext;
}
class="kw">return var1;
}
@Nonnull
class="kw">private class="kw">static String toContentPath(@Nonnull Path var0, @Nonnull FileContext<?> var1) {
StringBuilder var2 = new StringBuilder();
int var3 = var1 == FileContext.RootContext.INSTANCE ? 0 : var1.getRoot().filepath.getNameCount();
for (int var4 = var3; var4 < var0.getNameCount(); var4++) {
if (var4 > var3) {
var2.append('.');
}
String var5 = var0.getName(var4).toString();
int var6 = var5.length();
if (var4 == var0.getNameCount() - 1) {
int var7 = var5.lastIndexOf(46);
if (var7 != -1) {
var6 = var7;
}
}
var2.append(var5, 0, var6);
}
class="kw">return var2.toString();
}
class="kw">public class="kw">interface Constants {
String ERROR_MISSING_ENTRY = "Missing %s entry for key %s";
String ERROR_DUPLICATE_ENTRY = "Duplicate %s entry registered for key %s";
}
class="kw">public class="kw">static class Registry<T> class="kw">implements Iterable<Entry<String, T>> {
class="kw">private class="kw">final String registryName;
@Nonnull
class="kw">private class="kw">final Object2ObjectMap<String, T> backing;
class="kw">public Registry(String var1) {
this.registryName = var1;
this.backing = new Object2ObjectLinkedOpenHashMap();
}
class="kw">public int size() {
class="kw">return this.backing.size();
}
class="kw">public String getName() {
class="kw">return this.registryName;
}
class="kw">public boolean contains(String var1) {
class="kw">return this.backing.containsKey(var1);
}
@Nonnull
class="kw">public T get(String var1) {
Object var2 = (T)this.backing.get(var1);
if (var2 == null) {
throw new Error(String.format("Missing %s entry for key %s", this.registryName, var1));
} else {
class="kw">return var2;
}
}
class="kw">public void register(String var1, T var2) {
if (this.backing.containsKey(var1)) {
throw new Error(String.format("Duplicate %s entry registered for key %s", this.registryName, var1));
}
this.backing.put(var1, var2);
}
@Nonnull
@Override
class="kw">public Iterator<Entry<String, T>> iterator() {
class="kw">return this.backing.entrySet().iterator();
}
}
class="kw">public class="kw">static class RootContext class="kw">extends FileContext<FileContext.RootContext> {
class="kw">public class="kw">static class="kw">final FileContext.RootContext INSTANCE = new FileContext.RootContext();
class="kw">private RootContext() {
super(-1, ".", Paths.get("."), null);
}
}
}