Config class

Пакет: com.hypixel.hytale.builtin.portals.integrations

Файл: com/hypixel/hytale/builtin/portals/integrations/EnterPortalCondition.java

implements: EventCondition.Config

Поля (4)

МодификаторыТипИмя
public static final BuilderCodec<EnterPortalCondition.Config> CODEC
protected static final EnterPortalCondition.Config EMPTY
EnterPortalCondition var1
protected ContextKey worldKey

Методы (2)

МодификаторыВозвратСигнатура
public EventCondition createpublic EventCondition create()
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);
      }
   }
}