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);
      }
   }
}