ChunkConfig class

Пакет: com.hypixel.hytale.server.core.universe.world

Файл: com/hypixel/hytale/server/core/universe/world/WorldConfig.java

Поля (4)

МодификаторыТипИмя
public static final BuilderCodec<WorldConfig.ChunkConfig> CODEC
private static final Box2D DEFAULT_PREGENERATE_REGION
private Box2D keepLoadedRegion
private Box2D pregenerateRegion

Методы (8)

МодификаторыВозвратСигнатура
public Box2D getKeepLoadedRegionpublic Box2D getKeepLoadedRegion()
public Box2D getPregenerateRegionpublic Box2D getPregenerateRegion()
if if(var0.pregenerateRegion != null)
if if(var0.keepLoadedRegion != null)
if if(var1 != null)
if if(var1 != null)
public void setKeepLoadedRegionpublic void setKeepLoadedRegion(@Nullable Box2D var1)
public void setPregenerateRegionpublic void setPregenerateRegion(@Nullable Box2D var1)

Исходный код

Показать/скрыть
class="kw">package com.hypixel.hytale.server.core.universe.world;

class="kw">import com.hypixel.hytale.codec.Codec;
class="kw">import com.hypixel.hytale.codec.ExtraInfo;
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.ObjectMapCodec;
class="kw">import com.hypixel.hytale.codec.codecs.set.SetCodec;
class="kw">import com.hypixel.hytale.codec.lookup.MapKeyMapCodec;
class="kw">import com.hypixel.hytale.codec.schema.metadata.NoDefaultValue;
class="kw">import com.hypixel.hytale.codec.util.RawJsonReader;
class="kw">import com.hypixel.hytale.codec.validation.Validators;
class="kw">import com.hypixel.hytale.common.plugin.PluginIdentifier;
class="kw">import com.hypixel.hytale.common.semver.SemverRange;
class="kw">import com.hypixel.hytale.logger.HytaleLogger;
class="kw">import com.hypixel.hytale.math.shape.Box;
class="kw">import com.hypixel.hytale.math.shape.Box2D;
class="kw">import com.hypixel.hytale.math.vector.Transform;
class="kw">import com.hypixel.hytale.protocol.GameMode;
class="kw">import com.hypixel.hytale.server.core.HytaleServer;
class="kw">import com.hypixel.hytale.server.core.asset.type.gameplay.GameplayConfig;
class="kw">import com.hypixel.hytale.server.core.asset.type.gameplay.MutableDeathConfig;
class="kw">import com.hypixel.hytale.server.core.asset.type.weather.config.Weather;
class="kw">import com.hypixel.hytale.server.core.codec.ProtocolCodecs;
class="kw">import com.hypixel.hytale.server.core.codec.ShapeCodecs;
class="kw">import com.hypixel.hytale.server.core.config.CrashRecoveryConfig;
class="kw">import com.hypixel.hytale.server.core.config.WorldWorldMapConfig;
class="kw">import com.hypixel.hytale.server.core.modules.time.WorldTimeResource;
class="kw">import com.hypixel.hytale.server.core.universe.world.spawn.GlobalSpawnProvider;
class="kw">import com.hypixel.hytale.server.core.universe.world.spawn.ISpawnProvider;
class="kw">import com.hypixel.hytale.server.core.universe.world.storage.provider.IChunkStorageProvider;
class="kw">import com.hypixel.hytale.server.core.universe.world.storage.resources.IResourceStorageProvider;
class="kw">import com.hypixel.hytale.server.core.universe.world.worldgen.IWorldGen;
class="kw">import com.hypixel.hytale.server.core.universe.world.worldgen.provider.IWorldGenProvider;
class="kw">import com.hypixel.hytale.server.core.universe.world.worldmap.provider.IWorldMapProvider;
class="kw">import com.hypixel.hytale.server.core.util.BsonUtil;
class="kw">import java.nio.file.Path;
class="kw">import java.time.Instant;
class="kw">import java.time.temporal.ChronoUnit;
class="kw">import java.util.Collections;
class="kw">import java.util.HashMap;
class="kw">import java.util.HashSet;
class="kw">import java.util.Map;
class="kw">import java.util.Set;
class="kw">import java.util.UUID;
class="kw">import java.util.concurrent.CompletableFuture;
class="kw">import java.util.concurrent.atomic.AtomicBoolean;
class="kw">import javax.annotation.Nonnull;
class="kw">import javax.annotation.Nullable;
class="kw">import org.bson.BsonDocument;
class="kw">import org.joml.Vector2d;

class="kw">public class WorldConfig {
   class="kw">public class="kw">static class="kw">final int VERSION = 4;
   class="kw">public class="kw">static class="kw">final int INITIAL_GAME_DAY_START_HOUR = 5;
   class="kw">public class="kw">static class="kw">final int INITIAL_GAME_DAY_START_MINS = 30;
   class="kw">public class="kw">static class="kw">final MapKeyMapCodec<Object> PLUGIN_CODEC = new MapKeyMapCodec<>(false);
   class="kw">public class="kw">static class="kw">final BuilderCodec<WorldConfig> CODEC = BuilderCodec.<WorldConfig>builder(WorldConfig.class, () -> new WorldConfig(null))
      .versioned()
      .codecVersion(4)
      .documentation(
         "Configuration for a single world. Settings in here only affect the world this configuration belongs to.\n\nInstances share this configuration but ignore certain parameters (e.g. *UUID*). In this case the configuration willbe cloned before loading the instance."
      )
      .<UUID>append(new KeyedCodec<>("UUID", Codec.UUID_BINARY), (var0, var1) -> var0.uuid = var1, var0 -> var0.uuid)
      .documentation(
         "The unique identifier for this world.\n\nInstances will ignore this and replace it with a freshly generated UUID when spawning the instance."
      )
      .add()
      .<String>append(new KeyedCodec<>("DisplayName", Codec.STRING), (var0, var1) -> var0.displayName = var1, var0 -> var0.displayName)
      .documentation("The player facing name of this world.")
      .add()
      .<Long>append(new KeyedCodec<>("Seed", Codec.LONG), (var0, var1) -> var0.seed = var1, var0 -> var0.seed)
      .documentation("The seed of the world, used for world generation.\n\nIf a seed is not set then one will be randomly generated.")
      .metadata(NoDefaultValue.INSTANCE)
      .add()
      .<Transform>append(new KeyedCodec<>("SpawnPoint", Transform.CODEC), (var0, var1) -> var0.spawnProvider = new GlobalSpawnProvider(var1), var0 -> null)
      .documentation("**Deprecated**: Please use **SpawnProvider** instead.")
      .setVersionRange(0, 1)
      .add()
      .<ISpawnProvider>append(new KeyedCodec<>("SpawnProvider", ISpawnProvider.CODEC), (var0, var1) -> var0.spawnProvider = var1, var0 -> var0.spawnProvider)
      .documentation(
         "Sets the spawn provider for the world. \n\nThis controls where new players will enter the world at. This can be provided by world generation in some cases."
      )
      .add()
      .<IWorldGenProvider>append(
         new KeyedCodec<>("WorldGen", IWorldGenProvider.CODEC), (var0, var1) -> var0.worldGenProvider = var1, var0 -> var0.worldGenProvider
      )
      .documentation("Sets the world generator that will be used by the world.")
      .add()
      .append(new KeyedCodec<>("WorldMap", IWorldMapProvider.CODEC), (var0, var1) -> var0.worldMapProvider = var1, var0 -> var0.worldMapProvider)
      .add()
      .<WorldWorldMapConfig>append(
         new KeyedCodec<>("WorldMapConfig", WorldWorldMapConfig.CODEC), (var0, var1) -> var0.worldMapConfig = var1, var0 -> var0.worldMapConfig
      )
      .documentation("Optional per-world overrides for world map configuration and limits.")
      .add()
      .<IChunkStorageProvider<?>>append(
         new KeyedCodec<>("ChunkStorage", IChunkStorageProvider.CODEC), (var0, var1) -> var0.chunkStorageProvider = var1, var0 -> var0.chunkStorageProvider
      )
      .documentation("Sets the storage system that will be used by the world to store chunks.")
      .add()
      .<WorldConfig.ChunkConfig>append(
         new KeyedCodec<>("ChunkConfig", WorldConfig.ChunkConfig.CODEC), (var0, var1) -> var0.chunkConfig = var1, var0 -> var0.chunkConfig
      )
      .documentation("Configuration for chunk related settings")
      .addValidator(Validators.nonNull())
      .add()
      .<Boolean>append(new KeyedCodec<>("IsTicking", Codec.BOOLEAN), (var0, var1) -> var0.isTicking = var1, var0 -> var0.isTicking)
      .documentation("Sets whether chunks in this world are ticking or not.")
      .add()
      .<Boolean>append(new KeyedCodec<>("IsBlockTicking", Codec.BOOLEAN), (var0, var1) -> var0.isBlockTicking = var1, var0 -> var0.isBlockTicking)
      .documentation("Sets whether blocks in this world are ticking or not.")
      .add()
      .<Boolean>append(new KeyedCodec<>("IsPvpEnabled", Codec.BOOLEAN), (var0, var1) -> var0.isPvpEnabled = var1, var0 -> var0.isPvpEnabled)
      .documentation("Sets whether PvP is allowed in this world or not.")
      .add()
      .<Boolean>append(
         new KeyedCodec<>("IsFallDamageEnabled", Codec.BOOLEAN), (var0, var1) -> var0.isFallDamageEnabled = var1, var0 -> var0.isFallDamageEnabled
      )
      .documentation("Sets whether fall damage is allowed in this world or not.")
      .add()
      .<Boolean>append(new KeyedCodec<>("IsGameTimePaused", Codec.BOOLEAN), (var0, var1) -> var0.isGameTimePaused = var1, var0 -> var0.isGameTimePaused)
      .documentation("Sets whether the game time is paused.\n\nThis effects things like day/night cycles and things that rely on those.")
      .add()
      .<Instant>append(new KeyedCodec<>("GameTime", Codec.INSTANT), (var0, var1) -> var0.gameTime = var1, var0 -> var0.gameTime)
      .documentation("The current time of day in the world.")
      .add()
      .<String>append(new KeyedCodec<>("ForcedWeather", Codec.STRING), (var0, var1) -> var0.forcedWeather = var1, var0 -> var0.forcedWeather)
      .documentation("Sets the type of weather that is being forced to be active in this world.")
      .addValidator(Weather.VALIDATOR_CACHE.getValidator())
      .add()
      .<ClientEffectWorldSettings>append(
         new KeyedCodec<>("ClientEffects", ClientEffectWorldSettings.CODEC), (var0, var1) -> var0.clientEffects = var1, var0 -> var0.clientEffects
      )
      .documentation("Settings for the client's weather and post-processing effects in this world.")
      .add()
      .<Box>append(
         new KeyedCodec<>("PregenerateRegion", ShapeCodecs.BOX),
         (var0, var1) -> var0.chunkConfig.setPregenerateRegion(new Box2D(new Vector2d(var1.min.x, var1.min.z), new Vector2d(var1.max.x, var1.max.z))),
         var0 -> null
      )
      .setVersionRange(1, 3)
      .addValidator(Validators.deprecated())
      .add()
      .<Map>append(
         new KeyedCodec<>(
            "RequiredPlugins", new ObjectMapCodec<>(SemverRange.CODEC, HashMap::new, PluginIdentifier::toString, PluginIdentifier::fromString, false)
         ),
         (var0, var1) -> var0.requiredPlugins = var1,
         var0 -> var0.requiredPlugins
      )
      .documentation("Sets the plugins that are required to be enabled for this world to function.")
      .add()
      .<GameMode>append(new KeyedCodec<>("GameMode", ProtocolCodecs.GAMEMODE), (var0, var1) -> var0.gameMode = var1, var0 -> var0.gameMode)
      .documentation("Sets the class="kw">default gamemode for this world.")
      .add()
      .<String>append(
         new KeyedCodec<>("DefaultPermissionGroup", Codec.STRING), (var0, var1) -> var0.defaultPermissionGroup = var1, var0 -> var0.defaultPermissionGroup
      )
      .documentation("The class="kw">default permission group assigned to new players joining this world.")
      .add()
      .<Boolean>append(new KeyedCodec<>("IsSpawningNPC", Codec.BOOLEAN), (var0, var1) -> var0.isSpawningNPC = var1, var0 -> var0.isSpawningNPC)
      .documentation("Whether NPCs can spawn in this world or not.")
      .add()
      .<Boolean>append(
         new KeyedCodec<>("IsBlockSpawnersEnabled", Codec.BOOLEAN), (var0, var1) -> var0.isBlockSpawnersResolved = var1, var0 -> var0.isBlockSpawnersResolved
      )
      .documentation("Whether block spawners resolve into their target blocks in this world.")
      .add()
      .<Boolean>append(
         new KeyedCodec<>("IsSpawnMarkersEnabled", Codec.BOOLEAN), (var0, var1) -> var0.isSpawnMarkersEnabled = var1, var0 -> var0.isSpawnMarkersEnabled
      )
      .documentation("Whether spawn markers are enabled for this world.")
      .add()
      .<Boolean>append(new KeyedCodec<>("IsAllNPCFrozen", Codec.BOOLEAN), (var0, var1) -> var0.isAllNPCFrozen = var1, var0 -> var0.isAllNPCFrozen)
      .documentation("Whether all NPCs are frozen for this world")
      .add()
      .<String>append(new KeyedCodec<>("GameplayConfig", Codec.STRING), (var0, var1) -> var0.gameplayConfig = var1, var0 -> var0.gameplayConfig)
      .addValidator(GameplayConfig.VALIDATOR_CACHE.getValidator())
      .documentation("The gameplay configuration being used by this world")
      .add()
      .<MutableDeathConfig>append(
         new KeyedCodec<>("Death", MutableDeathConfig.CODEC), (var0, var1) -> var0.deathConfigOverride = var1, var0 -> var0.deathConfigOverride
      )
      .documentation("Inline death configuration overrides for this world. If set, these values take precedence over the referenced GameplayConfig.")
      .add()
      .<Integer>append(
         new KeyedCodec<>("DaytimeDurationSeconds", Codec.INTEGER),
         (var0, var1) -> var0.daytimeDurationSecondsOverride = var1,
         var0 -> var0.daytimeDurationSecondsOverride
      )
      .documentation("Override for the duration of daytime in seconds. If set, takes precedence over the referenced GameplayConfig.")
      .add()
      .<Integer>append(
         new KeyedCodec<>("NighttimeDurationSeconds", Codec.INTEGER),
         (var0, var1) -> var0.nighttimeDurationSecondsOverride = var1,
         var0 -> var0.nighttimeDurationSecondsOverride
      )
      .documentation("Override for the duration of nighttime in seconds. If set, takes precedence over the referenced GameplayConfig.")
      .add()
      .<Boolean>append(new KeyedCodec<>("IsCompassUpdating", Codec.BOOLEAN), (var0, var1) -> var0.isCompassUpdating = var1, var0 -> var0.isCompassUpdating)
      .documentation("Whether the compass is updating in this world")
      .add()
      .<Boolean>append(new KeyedCodec<>("IsSavingPlayers", Codec.BOOLEAN), (var0, var1) -> var0.isSavingPlayers = var1, var0 -> var0.isSavingPlayers)
      .documentation("Whether the configuration for player's is being saved for players in this world.")
      .add()
      .<Boolean>append(new KeyedCodec<>("IsSavingChunks", Codec.BOOLEAN), (var0, var1) -> var0.canSaveChunks = var1, var0 -> var0.canSaveChunks)
      .documentation("Whether the chunk data is allowed to be saved to the disk for this world.")
      .add()
      .<Boolean>append(new KeyedCodec<>("SaveNewChunks", Codec.BOOLEAN), (var0, var1) -> var0.saveNewChunks = var1, var0 -> var0.saveNewChunks)
      .documentation(
         "Whether newly generated chunks should be marked for saving or not.\nEnabling this can prevent random chunks from being out of place if/when worldgen changes but will increase the size of the world on disk."
      )
      .add()
      .<Boolean>append(new KeyedCodec<>("IsUnloadingChunks", Codec.BOOLEAN), (var0, var1) -> var0.canUnloadChunks = var1, var0 -> var0.canUnloadChunks)
      .documentation("Whether the chunks should be unloaded like normally, or should be prevented from unloading at all.")
      .add()
      .<Boolean>append(
         new KeyedCodec<>("IsObjectiveMarkersEnabled", Codec.BOOLEAN),
         (var0, var1) -> var0.isObjectiveMarkersEnabled = var1,
         var0 -> var0.isObjectiveMarkersEnabled
      )
      .documentation("Whether objective markers are enabled for this world.")
      .add()
      .<Boolean>append(
         new KeyedCodec<>("DeleteOnUniverseStart", Codec.BOOLEAN), (var0, var1) -> var0.deleteOnUniverseStart = var1, var0 -> var0.deleteOnUniverseStart
      )
      .documentation(
         "Whether this world should be deleted when loaded from Universe start. By class="kw">default this is when going through the world folders in the universe directory."
      )
      .add()
      .<Boolean>append(new KeyedCodec<>("DeleteOnRemove", Codec.BOOLEAN), (var0, var1) -> var0.deleteOnRemove = var1, var0 -> var0.deleteOnRemove)
      .documentation("Whether this world should be deleted once its been removed from the server")
      .add()
      .<CrashRecoveryConfig>append(
         new KeyedCodec<>("CrashRecovery", CrashRecoveryConfig.CODEC), (var0, var1) -> var0.crashRecovery = var1, var0 -> var0.crashRecovery
      )
      .documentation("Recovery policy for this world when its thread crashes. Overrides the server class="kw">default.")
      .add()
      .<BsonDocument>append(
         new KeyedCodec<>("Instance", Codec.BSON_DOCUMENT),
         (var0, var1, var2) -> var0.pluginConfig.put(PLUGIN_CODEC.getKeyForId("Instance"), PLUGIN_CODEC.decodeById("Instance", var1, var2)),
         (var0, var1) -> null
      )
      .setVersionRange(0, 2)
      .documentation("Instance specific configuration.")
      .addValidator(Validators.deprecated())
      .add()
      .<Set>append(
         new KeyedCodec<>("DisabledFluidTickers", new SetCodec<>(Codec.STRING, HashSet::new, false)),
         (var0, var1) -> var0.disabledFluidTickers = var1,
         var0 -> var0.disabledFluidTickers
      )
      .documentation(
         "A set of fluid tag strings (e.g. \"Fluid=Water\", \"Fire=Fire\") whose tickers should be disabled in this world. Fluids matching any of these tags will not tick."
      )
      .add()
      .<IResourceStorageProvider>append(
         new KeyedCodec<>("ResourceStorage", IResourceStorageProvider.CODEC),
         (var0, var1) -> var0.resourceStorageProvider = var1,
         var0 -> var0.resourceStorageProvider
      )
      .documentation("Sets the storage system that will be used to store resources.")
      .add()
      .<MapKeyMapCodec.TypeMap<Object>>appendInherited(new KeyedCodec<>("Plugin", PLUGIN_CODEC), (var0, var1) -> {
         if (var0.pluginConfig.isEmpty()) {
            var0.pluginConfig = var1;
         } else {
            MapKeyMapCodec.TypeMap var2 = var0.pluginConfig;
            var0.pluginConfig.putAll(var2);
            var0.pluginConfig.putAll(var1);
         }
      }, var0 -> var0.pluginConfig, (var0, var1) -> var0.pluginConfig = var1.pluginConfig)
      .addValidator(Validators.nonNull())
      .add()
      .build();
   @Nonnull
   class="kw">private class="kw">final class="kw">transient AtomicBoolean hasChanged = new AtomicBoolean();
   class="kw">private UUID uuid = UUID.randomUUID();
   class="kw">private String displayName;
   class="kw">private long seed = System.currentTimeMillis();
   @Nullable
   class="kw">private ISpawnProvider spawnProvider = null;
   class="kw">private IWorldGenProvider worldGenProvider = IWorldGenProvider.CODEC.getDefault();
   class="kw">private IWorldMapProvider worldMapProvider = IWorldMapProvider.CODEC.getDefault();
   @Nullable
   class="kw">private WorldWorldMapConfig worldMapConfig;
   class="kw">private IChunkStorageProvider<?> chunkStorageProvider = IChunkStorageProvider.CODEC.getDefault();
   @Nonnull
   class="kw">private WorldConfig.ChunkConfig chunkConfig = new WorldConfig.ChunkConfig();
   class="kw">private boolean isTicking = true;
   class="kw">private boolean isBlockTicking = true;
   class="kw">private boolean isPvpEnabled = false;
   class="kw">private boolean isFallDamageEnabled = true;
   class="kw">private boolean isGameTimePaused = false;
   class="kw">private Instant gameTime = WorldTimeResource.ZERO_YEAR.plus(5L, ChronoUnit.HOURS).plus(30L, ChronoUnit.MINUTES);
   class="kw">private String forcedWeather;
   class="kw">private ClientEffectWorldSettings clientEffects = new ClientEffectWorldSettings();
   class="kw">private Map<PluginIdentifier, SemverRange> requiredPlugins = Collections.emptyMap();
   class="kw">private GameMode gameMode;
   @Nullable
   class="kw">private String defaultPermissionGroup;
   class="kw">private boolean isSpawningNPC = true;
   class="kw">private boolean isBlockSpawnersResolved = true;
   class="kw">private boolean isSpawnMarkersEnabled = true;
   class="kw">private boolean isAllNPCFrozen = false;
   class="kw">private String gameplayConfig = "Default";
   @Nullable
   class="kw">private MutableDeathConfig deathConfigOverride = null;
   @Nullable
   class="kw">private Integer daytimeDurationSecondsOverride = null;
   @Nullable
   class="kw">private Integer nighttimeDurationSecondsOverride = null;
   class="kw">private boolean isCompassUpdating = true;
   class="kw">private boolean isSavingPlayers = true;
   class="kw">private boolean canSaveChunks = true;
   class="kw">private boolean saveNewChunks = true;
   class="kw">private boolean canUnloadChunks = true;
   class="kw">private boolean isObjectiveMarkersEnabled = true;
   class="kw">private boolean deleteOnUniverseStart = false;
   class="kw">private boolean deleteOnRemove = false;
   @Nullable
   class="kw">private CrashRecoveryConfig crashRecovery;
   @Nonnull
   class="kw">private Set<String> disabledFluidTickers = Collections.emptySet();
   class="kw">private IResourceStorageProvider resourceStorageProvider = IResourceStorageProvider.CODEC.getDefault();
   class="kw">protected MapKeyMapCodec.TypeMap<Object> pluginConfig = new MapKeyMapCodec.TypeMap<>(PLUGIN_CODEC);
   @Nullable
   class="kw">private class="kw">transient ISpawnProvider defaultSpawnProvider;
   class="kw">private class="kw">transient boolean isSavingConfig = true;

   class="kw">public WorldConfig() {
      this.markChanged();
   }

   class="kw">private WorldConfig(Void var1) {
   }

   @Nonnull
   class="kw">public UUID getUuid() {
      class="kw">return this.uuid;
   }

   class="kw">public void setUuid(UUID var1) {
      this.uuid = var1;
   }

   class="kw">public boolean isDeleteOnUniverseStart() {
      class="kw">return this.deleteOnUniverseStart;
   }

   class="kw">public void setDeleteOnUniverseStart(boolean var1) {
      this.deleteOnUniverseStart = var1;
   }

   class="kw">public boolean isDeleteOnRemove() {
      class="kw">return this.deleteOnRemove;
   }

   class="kw">public void setDeleteOnRemove(boolean var1) {
      this.deleteOnRemove = var1;
   }

   @Nullable
   class="kw">public CrashRecoveryConfig getCrashRecovery() {
      class="kw">return this.crashRecovery;
   }

   class="kw">public void setCrashRecovery(@Nullable CrashRecoveryConfig var1) {
      this.crashRecovery = var1;
   }

   class="kw">public boolean isSavingConfig() {
      class="kw">return this.isSavingConfig;
   }

   class="kw">public void setSavingConfig(boolean var1) {
      this.isSavingConfig = var1;
   }

   class="kw">public String getDisplayName() {
      class="kw">return this.displayName;
   }

   class="kw">public void setDisplayName(String var1) {
      this.displayName = var1;
   }

   @Nonnull
   class="kw">public class="kw">static String formatDisplayName(@Nonnull String var0) {
      int var1 = var0.lastIndexOf(47);
      String var2 = var1 >= 0 ? var0.substring(var1 + 1) : var0;
      class="kw">return var2.replaceAll("([a-z])([A-Z])", "$1 $2").replaceAll("([A-Za-z])([0-9])", "$1 $2").replaceAll("_", " ");
   }

   class="kw">public long getSeed() {
      class="kw">return this.seed;
   }

   class="kw">public void setSeed(long var1) {
      this.seed = var1;
   }

   @Nullable
   class="kw">public ISpawnProvider getSpawnProvider() {
      class="kw">return this.spawnProvider != null ? this.spawnProvider : this.defaultSpawnProvider;
   }

   class="kw">public void setSpawnProvider(ISpawnProvider var1) {
      this.spawnProvider = var1;
   }

   class="kw">public void setDefaultSpawnProvider(@Nonnull IWorldGen var1) {
      this.defaultSpawnProvider = var1.getDefaultSpawnProvider((int)this.seed);
   }

   class="kw">public IWorldGenProvider getWorldGenProvider() {
      class="kw">return this.worldGenProvider;
   }

   class="kw">public void setWorldGenProvider(IWorldGenProvider var1) {
      this.worldGenProvider = var1;
   }

   class="kw">public IWorldMapProvider getWorldMapProvider() {
      class="kw">return this.worldMapProvider;
   }

   class="kw">public void setWorldMapProvider(IWorldMapProvider var1) {
      this.worldMapProvider = var1;
   }

   @Nullable
   class="kw">public WorldWorldMapConfig getWorldMapConfig() {
      class="kw">return this.worldMapConfig;
   }

   class="kw">public void setWorldMapConfig(@Nullable WorldWorldMapConfig var1) {
      this.worldMapConfig = var1;
      this.markChanged();
   }

   class="kw">public IChunkStorageProvider<?> getChunkStorageProvider() {
      class="kw">return this.chunkStorageProvider;
   }

   class="kw">public void setChunkStorageProvider(IChunkStorageProvider<?> var1) {
      this.chunkStorageProvider = var1;
   }

   @Nonnull
   class="kw">public WorldConfig.ChunkConfig getChunkConfig() {
      class="kw">return this.chunkConfig;
   }

   class="kw">public void setChunkConfig(@Nonnull WorldConfig.ChunkConfig var1) {
      this.chunkConfig = var1;
   }

   class="kw">public boolean isTicking() {
      class="kw">return this.isTicking;
   }

   class="kw">public void setTicking(boolean var1) {
      this.isTicking = var1;
   }

   class="kw">public boolean isBlockTicking() {
      class="kw">return this.isBlockTicking;
   }

   class="kw">public void setBlockTicking(boolean var1) {
      this.isBlockTicking = var1;
   }

   class="kw">public boolean isPvpEnabled() {
      class="kw">return this.isPvpEnabled;
   }

   class="kw">public void setPvpEnabled(boolean var1) {
      this.isPvpEnabled = var1;
   }

   class="kw">public boolean isFallDamageEnabled() {
      class="kw">return this.isFallDamageEnabled;
   }

   class="kw">public void setFallDamageEnabled(boolean var1) {
      this.isFallDamageEnabled = var1;
   }

   class="kw">public boolean isGameTimePaused() {
      class="kw">return this.isGameTimePaused;
   }

   class="kw">public void setGameTimePaused(boolean var1) {
      this.isGameTimePaused = var1;
   }

   class="kw">public Instant getGameTime() {
      class="kw">return this.gameTime;
   }

   class="kw">public void setGameTime(Instant var1) {
      this.gameTime = var1;
   }

   class="kw">public String getForcedWeather() {
      class="kw">return this.forcedWeather;
   }

   class="kw">public void setForcedWeather(String var1) {
      this.forcedWeather = var1;
   }

   class="kw">public void setClientEffects(ClientEffectWorldSettings var1) {
      this.clientEffects = var1;
   }

   class="kw">public ClientEffectWorldSettings getClientEffects() {
      class="kw">return this.clientEffects;
   }

   @Nonnull
   class="kw">public Map<PluginIdentifier, SemverRange> getRequiredPlugins() {
      class="kw">return Collections.unmodifiableMap(this.requiredPlugins);
   }

   class="kw">public void setRequiredPlugins(Map<PluginIdentifier, SemverRange> var1) {
      this.requiredPlugins = var1;
   }

   class="kw">public GameMode getGameMode() {
      class="kw">return this.gameMode != null ? this.gameMode : HytaleServer.get().getConfig().getDefaults().getGameMode();
   }

   class="kw">public void setGameMode(GameMode var1) {
      this.gameMode = var1;
   }

   @Nonnull
   class="kw">public String getDefaultPermissionGroup() {
      class="kw">return this.defaultPermissionGroup != null ? this.defaultPermissionGroup : "hytale:Adventurer";
   }

   class="kw">public void setDefaultPermissionGroup(@Nullable String var1) {
      this.defaultPermissionGroup = var1;
   }

   class="kw">public boolean isSpawningNPC() {
      class="kw">return this.isSpawningNPC;
   }

   class="kw">public void setSpawningNPC(boolean var1) {
      this.isSpawningNPC = var1;
   }

   class="kw">public boolean isBlockSpawnersResolved() {
      class="kw">return this.isBlockSpawnersResolved;
   }

   class="kw">public void setBlockSpawnersResolved(boolean var1) {
      this.isBlockSpawnersResolved = var1;
   }

   class="kw">public boolean isSpawnMarkersEnabled() {
      class="kw">return this.isSpawnMarkersEnabled;
   }

   class="kw">public void setIsSpawnMarkersEnabled(boolean var1) {
      this.isSpawnMarkersEnabled = var1;
   }

   class="kw">public boolean isAllNPCFrozen() {
      class="kw">return this.isAllNPCFrozen;
   }

   class="kw">public void setIsAllNPCFrozen(boolean var1) {
      this.isAllNPCFrozen = var1;
   }

   class="kw">public String getGameplayConfig() {
      class="kw">return this.gameplayConfig;
   }

   class="kw">public void setGameplayConfig(String var1) {
      this.gameplayConfig = var1;
   }

   @Nullable
   class="kw">public MutableDeathConfig getDeathConfigOverride() {
      class="kw">return this.deathConfigOverride;
   }

   class="kw">public void setDeathConfigOverride(@Nullable MutableDeathConfig var1) {
      this.deathConfigOverride = var1;
      this.markChanged();
   }

   @Nullable
   class="kw">public Integer getDaytimeDurationSecondsOverride() {
      class="kw">return this.daytimeDurationSecondsOverride;
   }

   @Nullable
   class="kw">public Integer getNighttimeDurationSecondsOverride() {
      class="kw">return this.nighttimeDurationSecondsOverride;
   }

   class="kw">public boolean isCompassUpdating() {
      class="kw">return this.isCompassUpdating;
   }

   class="kw">public void setCompassUpdating(boolean var1) {
      this.isCompassUpdating = var1;
   }

   class="kw">public boolean isSavingPlayers() {
      class="kw">return this.isSavingPlayers;
   }

   class="kw">public void setSavingPlayers(boolean var1) {
      this.isSavingPlayers = var1;
   }

   class="kw">public boolean canUnloadChunks() {
      class="kw">return this.canUnloadChunks;
   }

   class="kw">public void setCanUnloadChunks(boolean var1) {
      this.canUnloadChunks = var1;
   }

   class="kw">public boolean canSaveChunks() {
      class="kw">return this.canSaveChunks;
   }

   class="kw">public void setCanSaveChunks(boolean var1) {
      this.canSaveChunks = var1;
   }

   class="kw">public boolean shouldSaveNewChunks() {
      class="kw">return this.saveNewChunks;
   }

   class="kw">public void setSaveNewChunks(boolean var1) {
      this.saveNewChunks = var1;
   }

   class="kw">public boolean isObjectiveMarkersEnabled() {
      class="kw">return this.isObjectiveMarkersEnabled;
   }

   class="kw">public void setObjectiveMarkersEnabled(boolean var1) {
      this.isObjectiveMarkersEnabled = var1;
   }

   @Nonnull
   class="kw">public Set<String> getDisabledFluidTickers() {
      class="kw">return this.disabledFluidTickers;
   }

   class="kw">public void setDisabledFluidTickers(@Nonnull Set<String> var1) {
      this.disabledFluidTickers = var1;
   }

   class="kw">public IResourceStorageProvider getResourceStorageProvider() {
      class="kw">return this.resourceStorageProvider;
   }

   class="kw">public void setResourceStorageProvider(@Nonnull IResourceStorageProvider var1) {
      this.resourceStorageProvider = var1;
   }

   class="kw">public MapKeyMapCodec.TypeMap<Object> getPluginConfig() {
      class="kw">return this.pluginConfig;
   }

   class="kw">public void markChanged() {
      this.hasChanged.set(true);
   }

   class="kw">public boolean consumeHasChanged() {
      class="kw">return this.hasChanged.getAndSet(false);
   }

   @Nonnull
   class="kw">public class="kw">static CompletableFuture<WorldConfig> load(@Nonnull Path var0) {
      class="kw">return CompletableFuture.supplyAsync(() -> {
         WorldConfig var1 = RawJsonReader.readSyncWithBak(var0, CODEC, HytaleLogger.getLogger());
         class="kw">return var1 != null ? var1 : new WorldConfig();
      });
   }

   @Nonnull
   class="kw">public class="kw">static CompletableFuture<Void> save(@Nonnull Path var0, WorldConfig var1) {
      BsonDocument var2 = CODEC.encode(var1, ExtraInfo.THREAD_LOCAL.get());
      class="kw">return BsonUtil.writeDocument(var0, var2);
   }

   class="kw">public class="kw">static class ChunkConfig {
      class="kw">public class="kw">static class="kw">final BuilderCodec<WorldConfig.ChunkConfig> CODEC = BuilderCodec.builder(WorldConfig.ChunkConfig.class, WorldConfig.ChunkConfig::new)
         .appendInherited(
            new KeyedCodec<>("PregenerateRegion", Box2D.CODEC),
            (var0, var1) -> var0.pregenerateRegion = var1,
            var0 -> var0.pregenerateRegion,
            (var0, var1) -> var0.pregenerateRegion = var1.pregenerateRegion
         )
         .documentation("Sets the region that will be pregenerated for the world.\n\nIf set, the specified region will be pregenerated when the world starts.")
         .add()
         .<Box2D>appendInherited(
            new KeyedCodec<>("KeepLoadedRegion", Box2D.CODEC),
            (var0, var1) -> var0.keepLoadedRegion = var1,
            var0 -> var0.keepLoadedRegion,
            (var0, var1) -> var0.keepLoadedRegion = var1.keepLoadedRegion
         )
         .documentation("Sets a region of chunks that will never be unloaded.")
         .add()
         .afterDecode(var0 -> {
            if (var0.pregenerateRegion != null) {
               var0.pregenerateRegion.normalize();
            }

            if (var0.keepLoadedRegion != null) {
               var0.keepLoadedRegion.normalize();
            }
         })
         .build();
      class="kw">private class="kw">static class="kw">final Box2D DEFAULT_PREGENERATE_REGION = new Box2D(new Vector2d(-512.0, -512.0), new Vector2d(512.0, 512.0));
      @Nullable
      class="kw">private Box2D pregenerateRegion;
      @Nullable
      class="kw">private Box2D keepLoadedRegion;

      class="kw">public ChunkConfig() {
      }

      @Nullable
      class="kw">public Box2D getPregenerateRegion() {
         class="kw">return this.pregenerateRegion;
      }

      class="kw">public void setPregenerateRegion(@Nullable Box2D var1) {
         if (var1 != null) {
            var1.normalize();
         }

         this.pregenerateRegion = var1;
      }

      @Nullable
      class="kw">public Box2D getKeepLoadedRegion() {
         class="kw">return this.keepLoadedRegion;
      }

      class="kw">public void setKeepLoadedRegion(@Nullable Box2D var1) {
         if (var1 != null) {
            var1.normalize();
         }

         this.keepLoadedRegion = var1;
      }
   }
}