WorldNPCSpawn class

Пакет: com.hypixel.hytale.server.spawning.assets.spawns.config

Файл: com/hypixel/hytale/server/spawning/assets/spawns/config/WorldNPCSpawn.java

extends: NPCSpawn

implements: JsonAssetWithMap<String, IndexedLookupTableAssetMap<String, WorldNPCSpawn>>

Поля (2)

МодификаторыТипИмя
ASSET_MAP
final AssetBuilderCodec<String, WorldNPCSpawn> CODEC

Методы (4)

МодификаторыВозвратСигнатура
static IndexedLookupTableAssetMap<String, WorldNPCSpawn> getAssetMapIndexedLookupTableAssetMap<String, WorldNPCSpawn> getAssetMap()
public double[] getMoonPhaseWeightModifiersdouble[] getMoonPhaseWeightModifiers()
if if(ASSET_MAP == null)
abstract super super(var1)

Исходный код

Показать/скрыть
class="kw">package com.hypixel.hytale.server.spawning.assets.spawns.config;

class="kw">import com.hypixel.hytale.assetstore.AssetRegistry;
class="kw">import com.hypixel.hytale.assetstore.codec.AssetBuilderCodec;
class="kw">import com.hypixel.hytale.assetstore.map.IndexedLookupTableAssetMap;
class="kw">import com.hypixel.hytale.assetstore.map.JsonAssetWithMap;
class="kw">import com.hypixel.hytale.codec.Codec;
class="kw">import com.hypixel.hytale.codec.KeyedCodec;
class="kw">import com.hypixel.hytale.codec.validation.Validators;
class="kw">import com.hypixel.hytale.codec.validation.validator.DoubleArrayValidator;
class="kw">import com.hypixel.hytale.server.core.asset.type.environment.config.Environment;
class="kw">import java.util.Arrays;
class="kw">import javax.annotation.Nonnull;

class="kw">public class WorldNPCSpawn class="kw">extends NPCSpawn class="kw">implements JsonAssetWithMap<String, IndexedLookupTableAssetMap<String, WorldNPCSpawn>> {
   class="kw">public class="kw">static class="kw">final AssetBuilderCodec<String, WorldNPCSpawn> CODEC = AssetBuilderCodec.<String, WorldNPCSpawn>builder(
         WorldNPCSpawn.class,
         WorldNPCSpawn::new,
         NPCSpawn.BASE_CODEC,
         Codec.STRING,
         (var0, var1) -> var0.id = var1,
         var0 -> var0.id,
         (var0, var1) -> var0.data = var1,
         var0 -> var0.data
      )
      .documentation("A spawning configuration used to spawn NPCs around the world.")
      .<String[]>appendInherited(
         new KeyedCodec<>("Environments", Codec.STRING_ARRAY),
         (var0, var1) -> var0.environments = var1,
         var0 -> var0.environments,
         (var0, var1) -> var0.environments = var1.environments
      )
      .documentation(
         "A required list of environments that this configuration covers. Each combination of environment and NPC in this configuration should be unique."
      )
      .addValidator(Validators.nonEmptyArray())
      .addValidator(Validators.uniqueInArray())
      .addValidator(Environment.VALIDATOR_CACHE.getArrayValidator())
      .add()
      .<double[]>appendInherited(
         new KeyedCodec<>("MoonPhaseWeightModifiers", Codec.DOUBLE_ARRAY),
         (var0, var1) -> var0.moonPhaseWeightModifiers = var1,
         var0 -> var0.moonPhaseWeightModifiers,
         (var0, var1) -> var0.moonPhaseWeightModifiers = var1.moonPhaseWeightModifiers
      )
      .documentation(
         "An array of modifiers which will be multiplied into the weights for each NPC in this config dependent on the current moon phase.\n\nAt present, Hytale has **5** moon phases, with day 0 being a full moon which gradually wanes up to day 4 which is a new moon. These are represented in the array indices.\n\nEach modifier can only be between 0 and 2, where 0 means the NPC will not spawn at all, 1 will use the standard weight, and 2 will result in twice the spawns\n\ne.g. `[ 0, 0, 0.5, 1, 2 ]` would result in NPCs that do not spawn during day 0 and day 1 (full moon and three quarters), would spawn half as much on day 2, the defined amount on day 3, and twice as many on day 4 (new moon)."
      )
      .addValidator(new DoubleArrayValidator(Validators.range(0.0, 2.0)))
      .add()
      .build();
   class="kw">private class="kw">static IndexedLookupTableAssetMap<String, WorldNPCSpawn> ASSET_MAP;
   class="kw">protected double[] moonPhaseWeightModifiers;

   class="kw">public class="kw">static IndexedLookupTableAssetMap<String, WorldNPCSpawn> getAssetMap() {
      if (ASSET_MAP == null) {
         ASSET_MAP = (IndexedLookupTableAssetMap<String, WorldNPCSpawn>)AssetRegistry.getAssetStore(WorldNPCSpawn.class).getAssetMap();
      }

      class="kw">return ASSET_MAP;
   }

   class="kw">public WorldNPCSpawn(String var1) {
      super(var1);
   }

   class="kw">protected WorldNPCSpawn() {
   }

   @Override
   class="kw">public String getId() {
      class="kw">return this.id;
   }

   class="kw">public double[] getMoonPhaseWeightModifiers() {
      class="kw">return this.moonPhaseWeightModifiers;
   }

   @Nonnull
   @Override
   class="kw">public String toString() {
      class="kw">return "WorldNPCSpawn{moonPhaseWeightModifiers=" + Arrays.toString(this.moonPhaseWeightModifiers) + "} " + super.toString();
   }
}