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 + "}";
   }
}