WorldPathConfig class
Пакет: com.hypixel.hytale.server.core.universe.world.path
Файл: com/hypixel/hytale/server/core/universe/world/path/WorldPathConfig.java
Поля (6)
| Модификаторы | Тип | Имя |
|---|---|---|
final |
BuilderCodec<WorldPathConfig> |
CODEC |
|
Path |
var1 |
|
WorldPathConfig |
var1 |
|
IEventDispatcher |
var2 |
|
BsonValue |
var2 |
|
Path |
var2 |
Методы (2)
| Модификаторы | Возврат | Сигнатура |
|---|---|---|
public |
WorldPath |
getPathWorldPath getPath(String var1) |
public |
WorldPath |
removePathWorldPath removePath(String var1) |
Исходный код
Показать/скрыть
class="kw">package com.hypixel.hytale.server.core.universe.world.path;
class="kw">import com.hypixel.hytale.codec.KeyedCodec;
class="kw">import com.hypixel.hytale.codec.builder.BuilderCodec;
class="kw">import com.hypixel.hytale.codec.codecs.map.MapCodec;
class="kw">import com.hypixel.hytale.codec.util.RawJsonReader;
class="kw">import com.hypixel.hytale.event.IEventDispatcher;
class="kw">import com.hypixel.hytale.logger.HytaleLogger;
class="kw">import com.hypixel.hytale.server.core.HytaleServer;
class="kw">import com.hypixel.hytale.server.core.universe.world.World;
class="kw">import com.hypixel.hytale.server.core.util.BsonUtil;
class="kw">import java.io.IOException;
class="kw">import java.nio.file.Files;
class="kw">import java.nio.file.Path;
class="kw">import java.util.Collections;
class="kw">import java.util.Map;
class="kw">import java.util.Objects;
class="kw">import java.util.concurrent.CompletableFuture;
class="kw">import java.util.concurrent.ConcurrentHashMap;
class="kw">import javax.annotation.Nonnull;
class="kw">import javax.annotation.Nullable;
class="kw">import org.bson.BsonValue;
class="kw">public class WorldPathConfig {
class="kw">public class="kw">static class="kw">final BuilderCodec<WorldPathConfig> CODEC = BuilderCodec.builder(WorldPathConfig.class, WorldPathConfig::new)
.addField(
new KeyedCodec<>("Paths", new MapCodec<>(WorldPath.CODEC, ConcurrentHashMap::new, false)), (var0, var1) -> var0.paths = var1, var0 -> var0.paths
)
.build();
class="kw">protected Map<String, WorldPath> paths = new ConcurrentHashMap<>();
class="kw">public WorldPathConfig() {
}
class="kw">public WorldPath getPath(String var1) {
class="kw">return this.paths.get(var1);
}
@Nonnull
class="kw">public Map<String, WorldPath> getPaths() {
class="kw">return Collections.unmodifiableMap(this.paths);
}
@Nullable
class="kw">public WorldPath putPath(@Nonnull WorldPath var1) {
Objects.requireNonNull(var1);
IEventDispatcher var2 = HytaleServer.get().getEventBus().dispatchFor(WorldPathChangedEvent.class);
if (var2.hasListener()) {
var2.dispatch(new WorldPathChangedEvent(var1));
}
class="kw">return this.paths.put(var1.getName(), var1);
}
class="kw">public WorldPath removePath(String var1) {
Objects.requireNonNull(var1);
class="kw">return this.paths.remove(var1);
}
@Nonnull
class="kw">public CompletableFuture<Void> save(World var1) {
BsonValue var2 = CODEC.encode(this);
class="kw">return BsonUtil.writeDocument(var1.getSavePath().resolve("paths.json"), var2.asDocument());
}
@Nonnull
class="kw">public class="kw">static CompletableFuture<WorldPathConfig> load(World var0) {
Path var1 = var0.getSavePath().resolve("paths.bson");
Path var2 = var0.getSavePath().resolve("paths.json");
if (Files.exists(var1) && !Files.exists(var2)) {
try {
Files.move(var1, var2);
} catch (IOException var4) {
}
}
class="kw">return CompletableFuture.supplyAsync(() -> {
WorldPathConfig var1 = RawJsonReader.readSyncWithBak(var2, CODEC, HytaleLogger.getLogger());
class="kw">return var1 != null ? var1 : new WorldPathConfig();
});
}
@Nonnull
@Override
class="kw">public String toString() {
class="kw">return "WorldPathConfig{paths=" + this.paths + "}";
}
}