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);
      }
   }
}