CompanionBlockSpawnerRecipe class

Пакет: com.hypixel.hytale.builtin.companionblockspawner.config

Файл: com/hypixel/hytale/builtin/companionblockspawner/config/CompanionBlockSpawnerRecipe.java

implements: JsonAssetWithMap<String, DefaultAssetMap<String, CompanionBlockSpawnerRecipe>>

Поля (8)

МодификаторыТипИмя
ASSET_STORE
final AssetBuilderCodec<String, CompanionBlockSpawnerRecipe> CODEC
public static final BuilderCodec<CompanionBlockSpawnerRecipe.RequiredBlock> CODEC
public static final CompanionBlockSpawnerRecipe.RequiredBlock[] EMPTY_ARRAY
BLOCK_ID, TAG
protected int count
protected CompanionBlockSpawnerRecipe.RequiredBlock.MatchBy matchBy
protected String value

Методы (12)

МодификаторыВозвратСигнатура
MatchBy MatchBy()
protected RequiredBlockprotected RequiredBlock()
static DefaultAssetMap<String, CompanionBlockSpawnerRecipe> getAssetMapDefaultAssetMap<String, CompanionBlockSpawnerRecipe> getAssetMap()
static AssetStore<String, CompanionBlockSpawnerRecipe, DefaultAssetMap<String, CompanionBlockSpawnerRecipe>> getAssetStoreAssetStore<String, CompanionBlockSpawnerRecipe, DefaultAssetMap<String, CompanionBlockSpawnerRecipe>> getAssetStore()
public int getCountpublic int getCount()
public String getIdString getId()
public CompanionBlockSpawnerRecipe.RequiredBlock.MatchBy getMatchBypublic CompanionBlockSpawnerRecipe.RequiredBlock.MatchBy getMatchBy()
public double getRadiusdouble getRadius()
public String getSpawnMarkerString getSpawnMarker()
public String getSpawnerBlockTypeKeyString getSpawnerBlockTypeKey()
public String getValuepublic String getValue()
if if(ASSET_STORE == null)

Исходный код

Показать/скрыть
class="kw">package com.hypixel.hytale.builtin.companionblockspawner.config;

class="kw">import com.hypixel.hytale.assetstore.AssetExtraInfo;
class="kw">import com.hypixel.hytale.assetstore.AssetRegistry;
class="kw">import com.hypixel.hytale.assetstore.AssetStore;
class="kw">import com.hypixel.hytale.assetstore.codec.AssetBuilderCodec;
class="kw">import com.hypixel.hytale.assetstore.map.DefaultAssetMap;
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.builder.BuilderCodec;
class="kw">import com.hypixel.hytale.codec.codecs.EnumCodec;
class="kw">import com.hypixel.hytale.codec.codecs.array.ArrayCodec;
class="kw">import com.hypixel.hytale.codec.validation.Validators;
class="kw">import com.hypixel.hytale.server.core.asset.type.blocktype.config.BlockType;
class="kw">import com.hypixel.hytale.server.spawning.assets.spawnmarker.config.SpawnMarker;
class="kw">import javax.annotation.Nonnull;
class="kw">import javax.annotation.Nullable;

class="kw">public class CompanionBlockSpawnerRecipe class="kw">implements JsonAssetWithMap<String, DefaultAssetMap<String, CompanionBlockSpawnerRecipe>> {
   class="kw">public class="kw">static class="kw">final AssetBuilderCodec<String, CompanionBlockSpawnerRecipe> CODEC = AssetBuilderCodec.<String, CompanionBlockSpawnerRecipe>builder(
         CompanionBlockSpawnerRecipe.class,
         CompanionBlockSpawnerRecipe::new,
         Codec.STRING,
         (var0, var1) -> var0.id = var1,
         var0 -> var0.id,
         (var0, var1) -> var0.data = var1,
         var0 -> var0.data
      )
      .documentation(
         "A configuration that spawns a companion NPC when a spawner block and all of its required surrounding blocks are present within a radius. Requirement blocks are claimed exclusively (two spawners can't share one). While the setup holds, the referenced spawn marker keeps the companion alive (re-spawning it on death); breaking the setup despawns it."
      )
      .<String>appendInherited(
         new KeyedCodec<>("SpawnerBlockTypeKey", Codec.STRING),
         (var0, var1) -> var0.spawnerBlockTypeKey = var1,
         var0 -> var0.spawnerBlockTypeKey,
         (var0, var1) -> var0.spawnerBlockTypeKey = var1.spawnerBlockTypeKey
      )
      .documentation("The block type key of the spawner block that hosts the companion.")
      .addValidator(Validators.nonEmptyString())
      .addValidator(BlockType.VALIDATOR_CACHE.getValidator())
      .add()
      .<Double>appendInherited(
         new KeyedCodec<>("Radius", Codec.DOUBLE), (var0, var1) -> var0.radius = var1, var0 -> var0.radius, (var0, var1) -> var0.radius = var1.radius
      )
      .documentation("The radius (in blocks) around the spawner within which the required blocks are searched for.")
      .addValidator(Validators.greaterThan(0.0))
      .add()
      .<CompanionBlockSpawnerRecipe.RequiredBlock[]>appendInherited(
         new KeyedCodec<>("RequiredBlocks", new ArrayCodec<>(CompanionBlockSpawnerRecipe.RequiredBlock.CODEC, CompanionBlockSpawnerRecipe.RequiredBlock[]::new)),
         (var0, var1) -> var0.requiredBlocks = var1,
         var0 -> var0.requiredBlocks,
         (var0, var1) -> var0.requiredBlocks = var1.requiredBlocks
      )
      .documentation("The requirement blocks and their counts that must be present within the radius for the companion to spawn.")
      .addValidator(Validators.nonNull())
      .add()
      .<String>appendInherited(
         new KeyedCodec<>("SpawnMarker", Codec.STRING),
         (var0, var1) -> var0.spawnMarker = var1,
         var0 -> var0.spawnMarker,
         (var0, var1) -> var0.spawnMarker = var1.spawnMarker
      )
      .documentation(
         "The id of the spawn marker (NPC/Spawn/Markers) that defines the companion NPC. While conditions hold the spawner block keeps this marker alive; the marker spawns/respawns the companion and despawns it when removed."
      )
      .addValidator(Validators.nonEmptyString())
      .addValidator(SpawnMarker.VALIDATOR_CACHE.getValidator())
      .add()
      .build();
   class="kw">private class="kw">static AssetStore<String, CompanionBlockSpawnerRecipe, DefaultAssetMap<String, CompanionBlockSpawnerRecipe>> ASSET_STORE;
   class="kw">private AssetExtraInfo.Data data;
   class="kw">protected String id;
   class="kw">protected String spawnerBlockTypeKey;
   class="kw">protected double radius = 1.0;
   class="kw">protected CompanionBlockSpawnerRecipe.RequiredBlock[] requiredBlocks = CompanionBlockSpawnerRecipe.RequiredBlock.EMPTY_ARRAY;
   class="kw">protected String spawnMarker;

   class="kw">public class="kw">static AssetStore<String, CompanionBlockSpawnerRecipe, DefaultAssetMap<String, CompanionBlockSpawnerRecipe>> getAssetStore() {
      if (ASSET_STORE == null) {
         ASSET_STORE = AssetRegistry.getAssetStore(CompanionBlockSpawnerRecipe.class);
      }

      class="kw">return ASSET_STORE;
   }

   class="kw">public class="kw">static DefaultAssetMap<String, CompanionBlockSpawnerRecipe> getAssetMap() {
      class="kw">return (DefaultAssetMap<String, CompanionBlockSpawnerRecipe>)getAssetStore().getAssetMap();
   }

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

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

   class="kw">public String getSpawnerBlockTypeKey() {
      class="kw">return this.spawnerBlockTypeKey;
   }

   class="kw">public double getRadius() {
      class="kw">return this.radius;
   }

   @Nonnull
   class="kw">public CompanionBlockSpawnerRecipe.RequiredBlock[] getRequiredBlocks() {
      class="kw">return this.requiredBlocks;
   }

   class="kw">public String getSpawnMarker() {
      class="kw">return this.spawnMarker;
   }

   class="kw">public class="kw">static class RequiredBlock {
      class="kw">public class="kw">static class="kw">final CompanionBlockSpawnerRecipe.RequiredBlock[] EMPTY_ARRAY = new CompanionBlockSpawnerRecipe.RequiredBlock[0];
      class="kw">public class="kw">static class="kw">final BuilderCodec<CompanionBlockSpawnerRecipe.RequiredBlock> CODEC = BuilderCodec.builder(
            CompanionBlockSpawnerRecipe.RequiredBlock.class, CompanionBlockSpawnerRecipe.RequiredBlock::new
         )
         .documentation(
            "A required block - how it is matched (MatchBy) and the value to match (Value) - plus the minimum count of it within the recipe radius."
         )
         .<CompanionBlockSpawnerRecipe.RequiredBlock.MatchBy>append(
            new KeyedCodec<>("MatchBy", new EnumCodec<>(CompanionBlockSpawnerRecipe.RequiredBlock.MatchBy.class)),
            (var0, var1) -> var0.matchBy = var1,
            var0 -> var0.matchBy
         )
         .documentation("How Value is interpreted: BlockId for an exact block type key, or Tag for a block tag.")
         .addValidator(Validators.nonNull())
         .add()
         .<String>append(new KeyedCodec<>("Value", Codec.STRING), (var0, var1) -> var0.value = var1, var0 -> var0.value)
         .documentation("The exact block type key (MatchBy=BlockId) or block tag such as \"Bed\" / \"Family=Crude\" (MatchBy=Tag) that satisfies this entry.")
         .add()
         .<Integer>append(new KeyedCodec<>("Count", Codec.INTEGER), (var0, var1) -> var0.count = var1, var0 -> var0.count)
         .documentation("The minimum number of matching blocks required within the radius.")
         .addValidator(Validators.greaterThan(0))
         .add()
         .build();
      class="kw">protected CompanionBlockSpawnerRecipe.RequiredBlock.MatchBy matchBy;
      class="kw">protected String value;
      class="kw">protected int count = 1;

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

      @Nullable
      class="kw">public CompanionBlockSpawnerRecipe.RequiredBlock.MatchBy getMatchBy() {
         class="kw">return this.matchBy;
      }

      @Nullable
      class="kw">public String getValue() {
         class="kw">return this.value;
      }

      class="kw">public int getCount() {
         class="kw">return this.count;
      }

      class="kw">public enum MatchBy {
         BLOCK_ID,
         TAG;

         MatchBy() {
         }
      }
   }
}