Config class
Пакет: com.hypixel.hytale.builtin.adventure.worldevents.condition
Файл: com/hypixel/hytale/builtin/adventure/worldevents/condition/ProximityCondition.java
implements: EventCondition.Config
Поля (6)
| Модификаторы | Тип | Имя |
|---|---|---|
|
public static final BuilderCodec<ProximityCondition.Config> |
CODEC |
|
protected static final ProximityCondition.Config |
EMPTY |
|
protected boolean |
invert |
|
protected ContextKey |
locationKey |
|
protected double |
radius |
|
ProximityCondition |
var1 |
Методы (2)
| Модификаторы | Возврат | Сигнатура |
|---|---|---|
|
public EventCondition |
createpublic EventCondition create() |
|
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.LocationContext;
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.component.Ref;
class="kw">import com.hypixel.hytale.component.Store;
class="kw">import com.hypixel.hytale.component.spatial.SpatialResource;
class="kw">import com.hypixel.hytale.logger.HytaleLogger;
class="kw">import com.hypixel.hytale.server.core.modules.entity.EntityModule;
class="kw">import com.hypixel.hytale.server.core.universe.world.storage.EntityStore;
class="kw">import java.util.List;
class="kw">import javax.annotation.Nonnull;
class="kw">import javax.annotation.Nullable;
class="kw">import org.joml.Vector3d;
class="kw">public class ProximityCondition class="kw">implements EventCondition.Ticking {
class="kw">public class="kw">static class="kw">final String ID = "ProximityCondition";
class="kw">public class="kw">static class="kw">final EventCondition.Type TYPE = new EventCondition.Type("ProximityCondition", 0.25F);
class="kw">public class="kw">static class="kw">final BuilderCodec<ProximityCondition> CODEC = BuilderCodec.builder(ProximityCondition.class, ProximityCondition::new).build();
class="kw">private class="kw">static class="kw">final HytaleLogger LOGGER = HytaleLogger.forEnclosingClass();
@Nonnull
class="kw">protected ProximityCondition.Config config = ProximityCondition.Config.EMPTY;
@Nullable
class="kw">protected LocationContext location = null;
class="kw">protected boolean result = false;
class="kw">protected class="kw">final Vector3d position = new Vector3d();
class="kw">public ProximityCondition() {
}
@Override
class="kw">public boolean test() {
class="kw">return this.result;
}
@Override
class="kw">public void reset() {
this.result = false;
}
@Override
class="kw">public void tick(float var1, @Nonnull Store<EntityStore> var2) {
if (!this.result && this.location != null) {
SpatialResource var3 = var2.getResource(EntityModule.get().getPlayerSpatialResourceType());
List var4 = SpatialResource.getThreadLocalReferenceList();
var3.getSpatialStructure().collect(this.position.set(this.location.location()), this.config.radius, var4);
this.result = var4.isEmpty() == this.config.invert;
}
}
@Override
class="kw">public boolean onStart(@Nonnull WorldEvent var1) {
if (this.config.locationKey == null) {
((HytaleLogger.Api)LOGGER.atWarning()).log("Condition failed: locationKey is not set");
class="kw">return false;
} else {
this.location = var1.context.get(this.config.locationKey, LocationContext.class);
if (this.location == null) {
((HytaleLogger.Api)LOGGER.atWarning()).log("Condition failed: LocationContext missing for key: %s", this.config.locationKey.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<ProximityCondition.Config> CODEC = BuilderCodec.builder(ProximityCondition.Config.class, ProximityCondition.Config::new)
.documentation("An event condition that completes once one or more players have entered proximity of a given location.")
.<ContextKey>append(new KeyedCodec<>("LocationKey", ContextKey.CODEC), (var0, var1) -> var0.locationKey = var1, var0 -> var0.locationKey)
.documentation("The variable name of the location to check player proximity to.")
.add()
.<Double>append(new KeyedCodec<>("Radius", Codec.DOUBLE), (var0, var1) -> var0.radius = var1, var0 -> var0.radius)
.documentation("The radius around the location that one or more players must be within to complete the condition.")
.add()
.<Boolean>append(new KeyedCodec<>("Invert", Codec.BOOLEAN), (var0, var1) -> var0.invert = var1, var0 -> var0.invert)
.documentation("Inverts the result so that it completes once there are no players within proximity of the location.")
.add()
.build();
class="kw">protected class="kw">static class="kw">final ProximityCondition.Config EMPTY = new ProximityCondition.Config();
@Nullable
class="kw">protected ContextKey locationKey = null;
class="kw">protected double radius = 10.0;
class="kw">protected boolean invert = false;
class="kw">public Config() {
}
@Nonnull
@Override
class="kw">public EventCondition create() {
ProximityCondition var1 = new ProximityCondition();
var1.config = this;
class="kw">return var1;
}
@Override
class="kw">public void validate(@Nonnull Validator var1) {
var1.addReferencedKey("ProximityCondition", "LocationKey", this.locationKey);
}
}
}