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() {
}
}
}
}