WorldEventAsset class
Пакет: com.hypixel.hytale.builtin.adventure.worldevents.event
Файл: com/hypixel/hytale/builtin/adventure/worldevents/event/WorldEventAsset.java
implements: JsonAssetWithMap<String, AssetMap<String, WorldEventAsset>>
Поля (4)
| Модификаторы | Тип | Имя |
|---|---|---|
final |
AssetBuilderCodec<String, WorldEventAsset> |
CODEC |
|
INIT,
VALID, |
INVALID |
|
Validator.Result |
var1 |
|
WorldEvent |
var3 |
Методы (10)
| Модификаторы | Возврат | Сигнатура |
|---|---|---|
|
|
State State() |
static |
WorldEventAsset |
getAssetOrUnknownWorldEventAsset getAssetOrUnknown(@Nonnull String var0) |
|
|
if if(this.state == WorldEventAsset.State.INIT) |
public |
int |
instanceCountMaxint instanceCountMax() |
public |
boolean |
isPersistentboolean isPersistent() |
public |
int |
iterationCountint iterationCount() |
public |
int |
playerCountMinint playerCountMin() |
protected |
void |
setAssetDatavoid setAssetData(@Nullable AssetExtraInfo.Data var1) |
protected |
void |
setAssetIdvoid setAssetId(@Nonnull String var1) |
public |
boolean |
validboolean valid() |
Исходный код
Показать/скрыть
class="kw">package com.hypixel.hytale.builtin.adventure.worldevents.event;
class="kw">import com.hypixel.hytale.assetstore.AssetExtraInfo;
class="kw">import com.hypixel.hytale.assetstore.AssetMap;
class="kw">import com.hypixel.hytale.assetstore.codec.AssetBuilderCodec;
class="kw">import com.hypixel.hytale.assetstore.codec.ContainedAssetCodec;
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.codecs.array.ArrayCodec;
class="kw">import com.hypixel.hytale.codec.validation.Validators;
class="kw">import com.hypixel.hytale.logger.HytaleLogger;
class="kw">import java.util.UUID;
class="kw">import javax.annotation.Nonnull;
class="kw">import javax.annotation.Nullable;
class="kw">public class WorldEventAsset class="kw">implements JsonAssetWithMap<String, AssetMap<String, WorldEventAsset>> {
class="kw">public class="kw">static class="kw">final AssetBuilderCodec<String, WorldEventAsset> CODEC = AssetBuilderCodec.builder(
WorldEventAsset.class,
WorldEventAsset::new,
Codec.STRING,
WorldEventAsset::setAssetId,
WorldEventAsset::getAssetId,
WorldEventAsset::setAssetData,
WorldEventAsset::getAssetData
)
.documentation("Represents a timeline of stages that progress from one to the other depending on the condition and action definitions at each stage.")
.<String>appendInherited(
new KeyedCodec<>("Root", StageAsset.REF_CODEC), (var0, var1) -> var0.root = var1, var0 -> var0.root, (var0, var1) -> var0.root = var1.root
)
.documentation("The starting stage for the event.")
.add()
.<Boolean>appendInherited(
new KeyedCodec<>("Persistent", Codec.BOOLEAN),
(var0, var1) -> var0.persistent = var1,
var0 -> var0.persistent,
(var0, var1) -> var0.persistent = var1.persistent
)
.documentation("The event should be persisted with the world and resumed after server restarts.")
.add()
.<Integer>appendInherited(
new KeyedCodec<>("IterationCount", Codec.INTEGER),
(var0, var1) -> var0.iterationCount = var1,
var0 -> var0.iterationCount,
(var0, var1) -> var0.iterationCount = var1.iterationCount
)
.documentation("The number of times this event will repeat. Set to -1 to repeat indefinitely.")
.addValidator(Validators.greaterThanOrEqual(-1))
.add()
.<Integer>appendInherited(
new KeyedCodec<>("PlayerCountMin", Codec.INTEGER),
(var0, var1) -> var0.playerCountMin = var1,
var0 -> var0.playerCountMin,
(var0, var1) -> var0.playerCountMin = var1.playerCountMin
)
.documentation("The minimum number of players in the world required for the event to run.")
.addValidator(Validators.greaterThanOrEqual(0))
.add()
.<Integer>appendInherited(
new KeyedCodec<>("InstanceCountMax", Codec.INTEGER),
(var0, var1) -> var0.instanceCountMax = var1,
var0 -> var0.instanceCountMax,
(var0, var1) -> var0.instanceCountMax = var1.instanceCountMax
)
.documentation("The maximum number of instances of the event that can be running at once.")
.addValidator(Validators.greaterThanOrEqual(-1))
.add()
.build();
class="kw">public class="kw">static class="kw">final Codec<String> REF_CODEC = new ContainedAssetCodec<>(WorldEventAsset.class, CODEC);
class="kw">public class="kw">static class="kw">final Codec<String[]> REF_ARRAY_CODEC = new ArrayCodec<>(REF_CODEC, String[]::new);
class="kw">public class="kw">static class="kw">final DefaultAssetMap<String, WorldEventAsset> ASSET_MAP = new DefaultAssetMap<>();
class="kw">public class="kw">static class="kw">final String UNKNOWN_KEY = "Unknown";
class="kw">public class="kw">static class="kw">final WorldEventAsset UNKNOWN = new WorldEventAsset();
class="kw">public class="kw">static class="kw">final WorldEventAsset[] EMPTY_ARRAY = new WorldEventAsset[0];
class="kw">private class="kw">static class="kw">final HytaleLogger LOGGER = HytaleLogger.forEnclosingClass();
@Nonnull
class="kw">protected String assetId = "Unknown";
@Nullable
class="kw">protected AssetExtraInfo.Data assetData = null;
@Nonnull
class="kw">protected String root = "Unknown";
class="kw">protected boolean persistent = true;
class="kw">protected int playerCountMin = 1;
class="kw">protected int iterationCount = -1;
class="kw">protected int instanceCountMax = -1;
@Nonnull
class="kw">protected class="kw">transient WorldEventAsset.State state = WorldEventAsset.State.INIT;
class="kw">public WorldEventAsset() {
}
@Nonnull
class="kw">public String getId() {
class="kw">return this.assetId;
}
class="kw">public boolean isPersistent() {
class="kw">return this.persistent;
}
@Nonnull
class="kw">public String root() {
class="kw">return this.root;
}
class="kw">public int playerCountMin() {
class="kw">return this.playerCountMin;
}
class="kw">public int iterationCount() {
class="kw">return this.iterationCount;
}
class="kw">public int instanceCountMax() {
class="kw">return this.instanceCountMax;
}
class="kw">public boolean valid() {
if (this.state == WorldEventAsset.State.INIT) {
this.state = validate(this);
}
class="kw">return this.state == WorldEventAsset.State.VALID && this.iterationCount != 0;
}
@Nonnull
class="kw">protected String getAssetId() {
class="kw">return this.assetId;
}
class="kw">protected void setAssetId(@Nonnull String var1) {
this.assetId = var1;
}
@Nullable
class="kw">protected AssetExtraInfo.Data getAssetData() {
class="kw">return this.assetData;
}
class="kw">protected void setAssetData(@Nullable AssetExtraInfo.Data var1) {
this.assetData = var1;
}
@Nullable
class="kw">public WorldEvent build(@Nullable UUID var1, boolean var2) {
if (!this.valid()) {
((HytaleLogger.Api)LOGGER.atWarning()).log("Cannot build world-event asset that failed validation: %s", this.assetId);
class="kw">return null;
} else {
WorldEvent var3 = new WorldEvent();
var3.uuid = var1 != null && !var1.equals(WorldEvent.EMPTY_ID) ? var1 : UUID.randomUUID();
var3.isTransient = var2;
var3.asset = this.assetId;
var3.repeatCount = this.iterationCount;
var3.requiredPlayerCount = this.playerCountMin;
var3.root = StageAsset.getAssetOrUnknown(this.root).build(new StageId());
var3.stage = var3.root;
class="kw">return var3;
}
}
@Nonnull
class="kw">protected class="kw">static WorldEventAsset.State validate(@Nonnull WorldEventAsset var0) {
Validator.Result var1 = new Validator().validate(var0);
if (var1.code() == Validator.Code.PASS) {
class="kw">return WorldEventAsset.State.VALID;
}
if (var1.message() == null) {
((HytaleLogger.Api)LOGGER.atWarning()).log("WorldEventAsset is invalid");
} else {
((HytaleLogger.Api)LOGGER.atWarning()).log("WorldEventAsset is invalid: %s", var1.message());
}
class="kw">return WorldEventAsset.State.INVALID;
}
class="kw">public class="kw">static WorldEventAsset getAssetOrUnknown(@Nonnull String var0) {
class="kw">return ASSET_MAP.getAssetMap().getOrDefault(var0, UNKNOWN);
}
class="kw">protected enum State {
INIT,
VALID,
INVALID;
State() {
}
}
}