WorldClosedCondition class
Пакет: com.hypixel.hytale.builtin.adventure.worldevents.condition
Файл: com/hypixel/hytale/builtin/adventure/worldevents/condition/WorldClosedCondition.java
implements: EventCondition.Ticking
Поля (8)
| Модификаторы | Тип | Имя |
|---|---|---|
|
public static final BuilderCodec<WorldClosedCondition.Config> |
CODEC |
|
protected static final float |
DEFAULT_LOAD_TIMEOUT |
|
protected static final WorldClosedCondition.Config |
EMPTY |
final |
String |
ID |
|
protected float |
loadTimeoutSeconds |
|
WorldClosedCondition |
var1 |
|
boolean |
var3 |
|
protected ContextKey |
worldKey |
Методы (6)
| Модификаторы | Возврат | Сигнатура |
|---|---|---|
|
public |
Configpublic Config() |
|
public EventCondition |
createpublic EventCondition create() |
|
|
if if(this.world != null) |
|
|
if if(this.config.worldKey == null) |
|
|
if if(this.world == null) |
|
public void |
validatepublic void validate(@Nonnull Validator var1) |
Исходный код
Показать/скрыть
class="kw">package com.hypixel.hytale.builtin.adventure.worldevents.condition;
class="kw">import com.hypixel.hytale.builtin.adventure.worldevents.context.ContextKey;
class="kw">import com.hypixel.hytale.builtin.adventure.worldevents.context.WorldContext;
class="kw">import com.hypixel.hytale.builtin.adventure.worldevents.event.Validator;
class="kw">import com.hypixel.hytale.builtin.adventure.worldevents.event.WorldEvent;
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.validation.Validators;
class="kw">import com.hypixel.hytale.component.Store;
class="kw">import com.hypixel.hytale.logger.HytaleLogger;
class="kw">import com.hypixel.hytale.server.core.universe.world.storage.EntityStore;
class="kw">import javax.annotation.Nonnull;
class="kw">import javax.annotation.Nullable;
class="kw">public class WorldClosedCondition class="kw">implements EventCondition.Ticking {
class="kw">public class="kw">static class="kw">final String ID = "WorldClosedCondition";
class="kw">public class="kw">static class="kw">final EventCondition.Type TYPE = new EventCondition.Type("WorldClosedCondition", 2.0F);
class="kw">public class="kw">static class="kw">final BuilderCodec<WorldClosedCondition> CODEC = BuilderCodec.builder(WorldClosedCondition.class, WorldClosedCondition::new).build();
class="kw">private class="kw">static class="kw">final HytaleLogger LOGGER = HytaleLogger.forEnclosingClass();
@Nonnull
class="kw">protected WorldClosedCondition.Config config = WorldClosedCondition.Config.EMPTY;
@Nullable
class="kw">protected WorldContext world = null;
class="kw">protected boolean isLoaded = false;
class="kw">protected boolean wasLoaded = false;
class="kw">protected float timeoutSeconds = Float.NaN;
class="kw">public WorldClosedCondition() {
}
@Override
class="kw">public boolean test() {
class="kw">return !this.wasLoaded && !Float.isNaN(this.timeoutSeconds) && this.timeoutSeconds <= 0.0F || this.wasLoaded && !this.isLoaded;
}
@Override
class="kw">public void reset() {
this.wasLoaded = false;
this.isLoaded = false;
this.world = null;
this.timeoutSeconds = Float.NaN;
}
@Override
class="kw">public void tick(float var1, @Nonnull Store<EntityStore> var2) {
if (this.world != null) {
assert !Float.isNaN(this.timeoutSeconds) : "WorldClosedCondition.tick() called before onStart()";
boolean var3 = this.world.getWorld() != null;
this.wasLoaded |= var3;
this.isLoaded = var3;
this.timeoutSeconds -= var1;
}
}
@Override
class="kw">public boolean onStart(@Nonnull WorldEvent var1) {
if (this.config.worldKey == null) {
((HytaleLogger.Api)LOGGER.atWarning()).log("Condition failed: worldKey not set");
class="kw">return false;
} else {
this.timeoutSeconds = this.config.loadTimeoutSeconds;
this.world = var1.context.get(this.config.worldKey, WorldContext.class);
if (this.world == null) {
((HytaleLogger.Api)LOGGER.atWarning()).log("Condition failed: WorldContext missing for key: %s", this.config.worldKey.getName());
class="kw">return false;
} else {
class="kw">return true;
}
}
}
class="kw">public class="kw">static class Config class="kw">implements EventCondition.Config {
class="kw">public class="kw">static class="kw">final BuilderCodec<WorldClosedCondition.Config> CODEC = BuilderCodec.builder(
WorldClosedCondition.Config.class, WorldClosedCondition.Config::new
)
.documentation("A condition that completes when a given world is closed and unloaded.")
.<ContextKey>append(new KeyedCodec<>("WorldKey", ContextKey.CODEC), (var0, var1) -> var0.worldKey = var1, var0 -> var0.worldKey)
.documentation("The variable name of the world to check is closed and unloaded.")
.add()
.<Float>append(new KeyedCodec<>("LoadTimeoutSeconds", Codec.FLOAT), (var0, var1) -> var0.loadTimeoutSeconds = var1, var0 -> var0.loadTimeoutSeconds)
.documentation(
"Initial amount of time to wait for the target world to load. This prevents the condition completing immediately when the world is slow to load."
)
.addValidator(Validators.greaterThanOrEqual(1.0F))
.add()
.build();
class="kw">protected class="kw">static class="kw">final WorldClosedCondition.Config EMPTY = new WorldClosedCondition.Config();
class="kw">protected class="kw">static class="kw">final float DEFAULT_LOAD_TIMEOUT = 10.0F;
@Nullable
class="kw">protected ContextKey worldKey = null;
class="kw">protected float loadTimeoutSeconds = 10.0F;
class="kw">public Config() {
}
@Nonnull
@Override
class="kw">public EventCondition create() {
WorldClosedCondition var1 = new WorldClosedCondition();
var1.config = this;
class="kw">return var1;
}
@Override
class="kw">public void validate(@Nonnull Validator var1) {
var1.addReferencedKey("WorldClosedCondition", "WorldKey", this.worldKey);
}
}
}