ZonePatternProviderJsonLoader class

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

Файл: com/hypixel/hytale/server/worldgen/loader/zone/ZonePatternProviderJsonLoader.java

extends: JsonLoader<SeedStringResource, ZonePatternProvider>

Поля (9)

МодификаторыТипИмя
String ERROR_NO_MAPPING
String ERROR_UNMAPPED_COLOR
String KEY_GRID_GENERATOR
String KEY_MASK_MAPPING
String KEY_UNIQUE_ZONES
int UNIQUE_ZONE_CANDIDATE_POS_LIMIT
final MaskProvider maskProvider
ZoneColorMapping var1
Zone.UniqueEntry[] var1

Методы (14)

МодификаторыВозвратСигнатура
abstract throw new IllegalArgumentExceptionthrow new IllegalArgumentException("Could not find mappings for colors in mask file. Keyword: MaskMapping")
protected void ensureMaskIntegrityvoid ensureMaskIntegrity(@Nonnull ZoneColorMapping var1)
for for(Zone var5 : var1)
for for(ClimateType var10 : var6.children)
if if(this.maskProvider instanceof ClimateMaskProvider var2)
if if(var6.children.length == 0)
if if(this.maskProvider instanceof ClimateMaskProvider var3)
protected Zone.UniqueCandidate[] loadUniqueZoneCandidatesZone.UniqueCandidate[] loadUniqueZoneCandidates()
public void setZonesvoid setZones(Zone[] var1)
static void validateMappingvoid validateMapping(@Nullable ClimateType var0, @Nonnull ClimateType var1, @Nonnull ClimateColor var2, ZoneColorMapping var3, String var4)
abstract validateMapping validateMapping(var6, var6, var6.color, var1, "")
abstract validateMapping validateMapping(var6, var6, var6.island, var1, "Island")
abstract validateMapping validateMapping(var6, var10, var10.color, var1, "")
abstract validateMapping validateMapping(var6, var10, var10.island, var1, "Island.")

Исходный код

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

class="kw">import com.google.gson.JsonElement;
class="kw">import com.hypixel.hytale.procedurallib.json.JsonLoader;
class="kw">import com.hypixel.hytale.procedurallib.json.PointGeneratorJsonLoader;
class="kw">import com.hypixel.hytale.procedurallib.json.SeedString;
class="kw">import com.hypixel.hytale.procedurallib.logic.point.IPointGenerator;
class="kw">import com.hypixel.hytale.server.worldgen.SeedStringResource;
class="kw">import com.hypixel.hytale.server.worldgen.chunk.MaskProvider;
class="kw">import com.hypixel.hytale.server.worldgen.climate.ClimateColor;
class="kw">import com.hypixel.hytale.server.worldgen.climate.ClimateMaskProvider;
class="kw">import com.hypixel.hytale.server.worldgen.climate.ClimateType;
class="kw">import com.hypixel.hytale.server.worldgen.zone.Zone;
class="kw">import com.hypixel.hytale.server.worldgen.zone.ZoneColorMapping;
class="kw">import com.hypixel.hytale.server.worldgen.zone.ZonePatternProvider;
class="kw">import java.nio.file.Path;
class="kw">import java.util.HashMap;
class="kw">import java.util.Map;
class="kw">import java.util.Set;
class="kw">import javax.annotation.Nonnull;
class="kw">import javax.annotation.Nullable;

class="kw">public class ZonePatternProviderJsonLoader class="kw">extends JsonLoader<SeedStringResource, ZonePatternProvider> {
   class="kw">protected class="kw">final MaskProvider maskProvider;
   class="kw">protected Zone[] zones;
   class="kw">protected Map<String, Zone> zoneLookup = Map.of();

   class="kw">public ZonePatternProviderJsonLoader(@Nonnull SeedString<SeedStringResource> var1, Path var2, JsonElement var3, MaskProvider var4) {
      super(var1.append(".ZonePatternGenerator"), var2, var3);
      this.maskProvider = var4;
   }

   class="kw">public void setZones(Zone[] var1) {
      this.zones = var1;
      this.zoneLookup = new HashMap<>();

      for (Zone var5 : var1) {
         this.zoneLookup.put(var5.name(), var5);
      }
   }

   @Nonnull
   class="kw">public ZonePatternProvider load() {
      class="kw">return new ZonePatternProvider(this.loadGridGenerator(), this.zones, this.loadUniqueZoneCandidates(), this.maskProvider, this.loadColorMapping());
   }

   @Nullable
   class="kw">protected IPointGenerator loadGridGenerator() {
      class="kw">return new PointGeneratorJsonLoader<>(this.seed, this.dataFolder, this.get("GridGenerator")).load();
   }

   @Nonnull
   class="kw">protected ZoneColorMapping loadColorMapping() {
      if (!this.has("MaskMapping")) {
         throw new IllegalArgumentException("Could not find mappings for colors in mask file. Keyword: MaskMapping");
      }

      ZoneColorMapping var1 = new ZoneColorMappingJsonLoader(this.seed, this.dataFolder, this.get("MaskMapping"), this.zoneLookup).load();
      this.ensureMaskIntegrity(var1);
      class="kw">return var1;
   }

   @Nonnull
   class="kw">public Set<String> loadZoneRequirement() {
      class="kw">return new ZoneRequirementJsonLoader(this.seed, this.dataFolder, this.json).load();
   }

   class="kw">protected void ensureMaskIntegrity(@Nonnull ZoneColorMapping var1) {
      if (this.maskProvider class="kw">instanceof ClimateMaskProvider var2) {
         for (ClimateType var6 : var2.getGraph().getParents()) {
            if (var6.children.length == 0) {
               validateMapping(var6, var6, var6.color, var1, "");
               validateMapping(var6, var6, var6.island, var1, "Island");
            } else {
               for (ClimateType var10 : var6.children) {
                  validateMapping(var6, var10, var10.color, var1, "");
                  validateMapping(var6, var10, var10.island, var1, "Island.");
               }
            }
         }
      } else {
         this.maskProvider.getFuzzyZoom().getExactZoom().getDistanceProvider().getColors().forEach(var1x -> {
            if (var1.get(var1x) == null) {
               throw new NullPointerException(Integer.toHexString(var1x));
            }
         });
      }
   }

   class="kw">protected Zone.UniqueCandidate[] loadUniqueZoneCandidates() {
      if (this.maskProvider class="kw">instanceof ClimateMaskProvider var3) {
         class="kw">return var3.getUniqueZoneCandidates(this.zoneLookup);
      } else {
         Zone.UniqueEntry[] var1 = new UniqueZoneEntryJsonLoader(this.seed, this.dataFolder, this.get("UniqueZones"), this.zoneLookup).load();
         class="kw">return this.maskProvider.generateUniqueZoneCandidates(var1, 100);
      }
   }

   class="kw">protected class="kw">static void validateMapping(@Nullable ClimateType var0, @Nonnull ClimateType var1, @Nonnull ClimateColor var2, ZoneColorMapping var3, String var4) {
      if (var3.get(var2.land) == null) {
         throw new Error(var4 + "Color is not mapped in climate type: " + ClimateType.name(var0, var1));
      }

      if (var3.get(var2.shore) == null) {
         throw new Error(var4 + "Shore is not mapped in climate type: " + ClimateType.name(var0, var1));
      }

      if (var3.get(var2.ocean) == null) {
         throw new Error(var4 + "Ocean is not mapped in climate type: " + ClimateType.name(var0, var1));
      }

      if (var3.get(var2.shallowOcean) == null) {
         throw new Error(var4 + "ShallowOcean is not mapped in climate type: " + ClimateType.name(var0, var1));
      }
   }

   class="kw">public class="kw">interface Constants {
      String KEY_GRID_GENERATOR = "GridGenerator";
      String KEY_UNIQUE_ZONES = "UniqueZones";
      String KEY_MASK_MAPPING = "MaskMapping";
      String ERROR_UNMAPPED_COLOR = "Mask image contains unmapped color! #%s";
      String ERROR_NO_MAPPING = "Could not find mappings for colors in mask file. Keyword: MaskMapping";
      int UNIQUE_ZONE_CANDIDATE_POS_LIMIT = 100;
   }
}