EnterPortalCondition class
Пакет: com.hypixel.hytale.builtin.portals.integrations
Файл: com/hypixel/hytale/builtin/portals/integrations/EnterPortalCondition.java
implements: EventCondition.TrackedEvent<EnterPortalEvent>
Поля (7)
| Модификаторы | Тип | Имя |
|---|---|---|
|
public static final BuilderCodec<EnterPortalCondition.Config> |
CODEC |
|
protected static final EnterPortalCondition.Config |
EMPTY |
final |
String |
ID |
|
EnterPortalCondition |
var1 |
|
UUID |
var4 |
|
Ref |
var5 |
|
protected ContextKey |
worldKey |
Методы (10)
| Модификаторы | Возврат | Сигнатура |
|---|---|---|
|
public |
Configpublic Config() |
|
public |
Handlerpublic Handler() |
|
public EventCondition |
createpublic EventCondition create() |
public |
void |
handlevoid handle(@Nonnull World var1, @Nonnull EnterPortalEvent var2, @Nonnull TrackedComponent var3) |
|
|
if if(var4 != null) |
|
|
if if(this.config.worldKey == null) |
|
|
if if(this.config.worldKey == null) |
|
|
if if(var1 instanceof EnterPortalCondition var2) |
abstract |
|
super super(EnterPortalEvent.class) |
|
public void |
validatepublic void validate(@Nonnull Validator var1) |
Исходный код
Показать/скрыть
class="kw">package com.hypixel.hytale.builtin.portals.integrations;
class="kw">import com.hypixel.hytale.builtin.adventure.worldevents.component.TrackedComponent;
class="kw">import com.hypixel.hytale.builtin.adventure.worldevents.condition.EventCondition;
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.builtin.adventure.worldevents.system.ConditionEventHandler;
class="kw">import com.hypixel.hytale.builtin.portals.events.EnterPortalEvent;
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.logger.HytaleLogger;
class="kw">import com.hypixel.hytale.server.core.universe.PlayerRef;
class="kw">import com.hypixel.hytale.server.core.universe.world.World;
class="kw">import com.hypixel.hytale.server.core.universe.world.storage.EntityStore;
class="kw">import com.hypixel.hytale.server.core.util.UUIDUtil;
class="kw">import java.util.UUID;
class="kw">import javax.annotation.Nonnull;
class="kw">public class EnterPortalCondition class="kw">implements EventCondition.TrackedEvent<EnterPortalEvent> {
class="kw">public class="kw">static class="kw">final String ID = "EnterPortalCondition";
class="kw">public class="kw">static class="kw">final EventCondition.Type TYPE = EventCondition.Type.nonTicking("EnterPortalCondition");
class="kw">public class="kw">static class="kw">final BuilderCodec<EnterPortalCondition> CODEC = BuilderCodec.builder(EnterPortalCondition.class, EnterPortalCondition::new).build();
class="kw">protected class="kw">static class="kw">final HytaleLogger LOGGER = HytaleLogger.forEnclosingClass();
@Nonnull
class="kw">protected EnterPortalCondition.Config config = EnterPortalCondition.Config.EMPTY;
@Nonnull
class="kw">protected UUID worldUUID = UUIDUtil.EMPTY_UUID;
@Nonnull
class="kw">protected UUID worldEventUUID = UUIDUtil.EMPTY_UUID;
class="kw">public EnterPortalCondition() {
}
@Override
class="kw">public boolean test() {
class="kw">return !this.worldUUID.equals(UUIDUtil.EMPTY_UUID);
}
@Override
class="kw">public void reset() {
this.worldUUID = UUIDUtil.EMPTY_UUID;
this.worldEventUUID = UUIDUtil.EMPTY_UUID;
}
@Override
class="kw">public Class<EnterPortalEvent> eventType() {
class="kw">return EnterPortalEvent.class;
}
class="kw">public void handle(@Nonnull World var1, @Nonnull EnterPortalEvent var2, @Nonnull TrackedComponent var3) {
if (!this.worldEventUUID.equals(UUIDUtil.EMPTY_UUID)) {
if (var3.getUUID().equals(this.worldEventUUID)) {
UUID var4 = var2.getPortalDevice().getDestinationWorldUuid();
if (var4 != null) {
Ref var5 = var2.getEntityRef();
if (var5.getStore().getComponent(var5, PlayerRef.getComponentType()) != null) {
this.worldUUID = var4;
}
}
}
}
}
@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.worldEventUUID = var1.uuid;
class="kw">return true;
}
}
@Override
class="kw">public boolean onComplete(@Nonnull WorldEvent var1) {
if (this.config.worldKey == null) {
((HytaleLogger.Api)LOGGER.atWarning()).log("Condition failed: worldKey not set");
class="kw">return false;
} else {
var1.context.put(this.config.worldKey, new WorldContext(this.worldUUID));
class="kw">return true;
}
}
@Override
class="kw">public void merge(@Nonnull EventCondition var1) {
if (var1 class="kw">instanceof EnterPortalCondition var2) {
this.worldUUID = var2.worldUUID;
this.worldEventUUID = var2.worldEventUUID;
}
}
class="kw">public class="kw">static class Config class="kw">implements EventCondition.Config {
class="kw">public class="kw">static class="kw">final BuilderCodec<EnterPortalCondition.Config> CODEC = BuilderCodec.builder(
EnterPortalCondition.Config.class, EnterPortalCondition.Config::new
)
.documentation("A condition that is completed once a portal has been entered by a player.")
.<ContextKey>append(new KeyedCodec<>("WorldKey", ContextKey.CODEC), (var0, var1) -> var0.worldKey = var1, var0 -> var0.worldKey)
.documentation("Define the world variable name that other conditions and actions can reference")
.add()
.build();
class="kw">protected class="kw">static class="kw">final EnterPortalCondition.Config EMPTY = new EnterPortalCondition.Config();
class="kw">protected ContextKey worldKey = null;
class="kw">public Config() {
}
@Nonnull
@Override
class="kw">public EventCondition create() {
EnterPortalCondition var1 = new EnterPortalCondition();
var1.config = this;
class="kw">return var1;
}
@Override
class="kw">public void validate(@Nonnull Validator var1) {
var1.addDefinedKey("EnterPortalCondition", "WorldKey", this.worldKey);
}
}
class="kw">public class="kw">static class Handler class="kw">extends ConditionEventHandler.TrackedBlockEntityHandler<EnterPortalEvent> {
class="kw">public Handler() {
super(EnterPortalEvent.class);
}
}
}