Constants interface

Пакет: com.hypixel.hytale.server.worldgen.loader.biome

Файл: com/hypixel/hytale/server/worldgen/loader/biome/BiomeInterpolationJsonLoader.java

Поля (11)

МодификаторыТипИмя
String ERROR_BIOME_RADIUS
String ERROR_DEFAULT_RADIUS
String ERROR_DUPLICATE_BIOME
String ERROR_INVALID_BIOME_ENTRY
String ERROR_INVALID_BIOME_LIST
String ERROR_MISSING_PROPERTY
String KEY_BIOMES
String KEY_DEFAULT_RADIUS
String KEY_MASK
String KEY_RADIUS
String SEED_OFFSET_MASK

Исходный код

Показать/скрыть
class="kw">package com.hypixel.hytale.server.worldgen.loader.biome;

class="kw">import com.google.gson.JsonElement;
class="kw">import com.google.gson.JsonObject;
class="kw">import com.hypixel.hytale.procedurallib.condition.IIntCondition;
class="kw">import com.hypixel.hytale.procedurallib.json.JsonLoader;
class="kw">import com.hypixel.hytale.procedurallib.json.SeedString;
class="kw">import com.hypixel.hytale.server.worldgen.SeedStringResource;
class="kw">import com.hypixel.hytale.server.worldgen.biome.BiomeInterpolation;
class="kw">import com.hypixel.hytale.server.worldgen.loader.context.ZoneFileContext;
class="kw">import com.hypixel.hytale.server.worldgen.util.condition.HashSetIntCondition;
class="kw">import it.unimi.dsi.fastutil.ints.Int2IntMap;
class="kw">import it.unimi.dsi.fastutil.ints.Int2IntOpenHashMap;
class="kw">import it.unimi.dsi.fastutil.ints.IntIterator;
class="kw">import it.unimi.dsi.fastutil.ints.IntSet;
class="kw">import java.nio.file.Path;
class="kw">import javax.annotation.Nonnull;
class="kw">import javax.annotation.Nullable;

class="kw">public class BiomeInterpolationJsonLoader class="kw">extends JsonLoader<SeedStringResource, BiomeInterpolation> {
   class="kw">protected class="kw">final ZoneFileContext zoneFileContext;

   class="kw">public BiomeInterpolationJsonLoader(SeedString<SeedStringResource> var1, Path var2, JsonElement var3, ZoneFileContext var4) {
      super(var1, var2, var3);
      this.zoneFileContext = var4;
   }

   class="kw">public BiomeInterpolation load() {
      int var1 = this.loadDefaultRadius();
      Int2IntMap var2 = this.loadBiomeRadii(var1);
      class="kw">return BiomeInterpolation.create(var1, var2);
   }

   class="kw">protected int loadDefaultRadius() {
      if (!this.has("DefaultRadius")) {
         class="kw">return 5;
      } else {
         int var1 = this.get("DefaultRadius").getAsInt();
         if (var1 >= 0 && var1 <= 5) {
            class="kw">return var1;
         } else {
            throw new Error(String.format("Default biome interpolation radius %s lies outside the range 0-5", var1));
         }
      }
   }

   @Nonnull
   class="kw">protected Int2IntMap loadBiomeRadii(int var1) {
      if (!this.has("Biomes")) {
         class="kw">return BiomeInterpolation.EMPTY_MAP;
      }

      JsonElement var2 = this.get("Biomes");
      if (!var2.isJsonArray()) {
         throw new Error("Invalid json-type for Biomes property. Must be an array!");
      }

      Int2IntOpenHashMap var3 = new Int2IntOpenHashMap();

      for (JsonElement var5 : var2.getAsJsonArray()) {
         this.loadBiomeEntry(var5, var1, var3);
      }

      class="kw">return var3;
   }

   class="kw">protected void loadBiomeEntry(@Nonnull JsonElement var1, int var2, @Nonnull Int2IntMap var3) {
      if (!var1.isJsonObject()) {
         throw new Error("Invalid json-type for biome entry. Must be an object!");
      }

      int var4 = loadBiomeRadius(var1.getAsJsonObject(), var2);
      if (var4 != var2) {
         IIntCondition var5 = this.loadBiomeMask(var1.getAsJsonObject());
         addBiomes(var5, var4, var3);
      }
   }

   @Nullable
   class="kw">protected IIntCondition loadBiomeMask(@Nonnull JsonObject var1) {
      if (!var1.has("Mask")) {
         throw new Error(String.format("Missing property %s", "Mask"));
      } else {
         class="kw">return new BiomeMaskJsonLoader(this.seed, this.dataFolder, var1.get("Mask"), "InterpolationMask", this.zoneFileContext).load();
      }
   }

   class="kw">protected class="kw">static int loadBiomeRadius(@Nonnull JsonObject var0, int var1) {
      if (!var0.has("Radius")) {
         throw new Error(String.format("Missing property %s", "Radius"));
      } else {
         int var2 = var0.get("Radius").getAsInt();
         if (var2 >= 0 && var2 <= var1) {
            class="kw">return var2;
         } else {
            throw new Error(String.format("Biome interpolation radius %s is outside the range 0-%s", var2, var1));
         }
      }
   }

   class="kw">protected class="kw">static void addBiomes(IIntCondition var0, int var1, @Nonnull Int2IntMap var2) {
      if (var0 class="kw">instanceof HashSetIntCondition) {
         int var3 = var1 * var1;
         IntSet var4 = ((HashSetIntCondition)var0).getSet();
         IntIterator var5 = var4.iterator();

         while (var5.hasNext()) {
            int var6 = (Integer)var5.next();
            if (var2.containsKey(var6)) {
               throw new Error("Duplicate biome detected in interpolation rules");
            }

            var2.put(var6, var3);
         }
      }
   }

   class="kw">public class="kw">interface Constants {
      String KEY_DEFAULT_RADIUS = "DefaultRadius";
      String KEY_RADIUS = "Radius";
      String KEY_BIOMES = "Biomes";
      String KEY_MASK = "Mask";
      String SEED_OFFSET_MASK = "InterpolationMask";
      String ERROR_MISSING_PROPERTY = "Missing property %s";
      String ERROR_INVALID_BIOME_LIST = "Invalid json-type for Biomes property. Must be an array!";
      String ERROR_INVALID_BIOME_ENTRY = "Invalid json-type for biome entry. Must be an object!";
      String ERROR_DUPLICATE_BIOME = "Duplicate biome detected in interpolation rules";
      String ERROR_BIOME_RADIUS = "Biome interpolation radius %s is outside the range 0-%s";
      String ERROR_DEFAULT_RADIUS = "Default biome interpolation radius %s lies outside the range 0-5";
   }
}