HyCodeYourTale
classpublicPriority 3

ZonesJsonLoader

com.hypixel.hytale.server.worldgen.loader.ZonesJsonLoader

1

Methods

1

Public Methods

1

Fields

1

Constructors

Constructors

public
ZonesJsonLoader(SeedString<SeedStringResource> seed, Path dataFolder, FileLoadingContext loadingContext)

Methods

Public Methods (1)

public
Zone[] load()
@Nonnull

Fields

Protected Fields (1)

protectedFileLoadingContext loadingContext

Related Classes

Source Code

package com.hypixel.hytale.server.worldgen.loader;

import com.google.gson.JsonElement;
import com.google.gson.JsonParser;
import com.google.gson.stream.JsonReader;
import com.hypixel.hytale.procedurallib.json.Loader;
import com.hypixel.hytale.procedurallib.json.SeedString;
import com.hypixel.hytale.server.worldgen.SeedStringResource;
import com.hypixel.hytale.server.worldgen.loader.context.FileContext;
import com.hypixel.hytale.server.worldgen.loader.context.FileLoadingContext;
import com.hypixel.hytale.server.worldgen.loader.context.ZoneFileContext;
import com.hypixel.hytale.server.worldgen.loader.zone.ZoneJsonLoader;
import com.hypixel.hytale.server.worldgen.zone.Zone;
import java.nio.file.Files;
import java.nio.file.Path;
import java.util.Map.Entry;
import javax.annotation.Nonnull;

public class ZonesJsonLoader extends Loader<SeedStringResource, Zone[]> {
   protected final FileLoadingContext loadingContext;

   public ZonesJsonLoader(@Nonnull SeedString<SeedStringResource> seed, Path dataFolder, FileLoadingContext loadingContext) {
      super(seed.append(".Zones"), dataFolder);
      this.loadingContext = loadingContext;
   }

   @Nonnull
   public Zone[] load() {
      FileContext.Registry<ZoneFileContext> zoneRegistry = this.loadingContext.getZones();
      int index = 0;
      Zone[] zones = new Zone[zoneRegistry.size()];

      for (Entry<String, ZoneFileContext> zoneEntry : zoneRegistry) {
         ZoneFileContext zoneContext = zoneEntry.getValue();

         try {
            JsonReader reader = new JsonReader(Files.newBufferedReader(zoneContext.getPath().resolve("Zone.json")));

            try {
               JsonElement zoneJson = JsonParser.parseReader(reader);
               Zone zone = new ZoneJsonLoader(this.seed, this.dataFolder, zoneJson, zoneContext).load();
               zones[index++] = zone;
            } catch (Throwable var11) {
               try {
                  reader.close();
               } catch (Throwable var10) {
                  var11.addSuppressed(var10);
               }

               throw var11;
            }

            reader.close();
         } catch (Throwable var12) {
            throw new Error(String.format("Error while loading zone \"%s\" for world generator from file.", zoneContext.getPath().toString()), var12);
         }
      }

      return zones;
   }

   public interface Constants {
      String PATH_ZONES = "Zones";
      String FILE_ZONE_MAIN_FILE = "Zone.json";
      String ERROR_LOADING_ZONE = "Error while loading zone \"%s\" for world generator from file.";
   }
}