Config class

Пакет: com.hypixel.hytale.builtin.adventure.worldevents.condition

Файл: com/hypixel/hytale/builtin/adventure/worldevents/condition/SignalCondition.java

implements: EventCondition.Config

Поля (4)

МодификаторыТипИмя
public static final BuilderCodec<SignalCondition.Config> CODEC
protected static final SignalCondition.Config EMPTY
protected String signalId
SignalCondition 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.component.WorldEventSignal;
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.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.logger.HytaleLogger;
class="kw">import com.hypixel.hytale.server.core.universe.world.World;
class="kw">import java.util.UUID;
class="kw">import javax.annotation.Nonnull;
class="kw">import javax.annotation.Nullable;

class="kw">public class SignalCondition class="kw">implements EventCondition.Event<WorldEventSignal> {
   class="kw">public class="kw">static class="kw">final String ID = "SignalCondition";
   class="kw">public class="kw">static class="kw">final EventCondition.Type TYPE = EventCondition.Type.nonTicking("SignalCondition");
   class="kw">public class="kw">static class="kw">final BuilderCodec<SignalCondition> CODEC = BuilderCodec.builder(SignalCondition.class, SignalCondition::new).build();
   class="kw">private class="kw">static class="kw">final HytaleLogger LOGGER = HytaleLogger.forEnclosingClass();
   @Nonnull
   class="kw">protected SignalCondition.Config config = SignalCondition.Config.EMPTY;
   @Nonnull
   class="kw">protected UUID eventId = WorldEvent.EMPTY_ID;
   class="kw">protected boolean completed;

   class="kw">public SignalCondition() {
   }

   @Override
   class="kw">public boolean test() {
      class="kw">return this.completed;
   }

   @Override
   class="kw">public void reset() {
      this.completed = false;
      this.eventId = WorldEvent.EMPTY_ID;
   }

   @Nonnull
   @Override
   class="kw">public Class<WorldEventSignal> eventType() {
      class="kw">return WorldEventSignal.class;
   }

   class="kw">public void handle(@Nonnull World var1, @Nonnull WorldEventSignal var2) {
      if (this.config.signalId != null) {
         if (var2.eventId() == null || this.eventId.equals(var2.eventId())) {
            if (this.config.signalId.equals(var2.signalId())) {
               this.completed = true;
            }
         }
      }
   }

   @Override
   class="kw">public boolean onStart(@Nonnull WorldEvent var1) {
      if (this.config.signalId == null) {
         ((HytaleLogger.Api)LOGGER.atWarning()).log("Failed to start SignalCondition: signalId is not defined");
         class="kw">return false;
      } else {
         this.eventId = var1.uuid;
         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<SignalCondition.Config> CODEC = BuilderCodec.builder(SignalCondition.Config.class, SignalCondition.Config::new)
         .documentation("A condition that completes when a matching world-event signal is received, for example from an encounter's SignalWorldEvent action.")
         .<String>append(new KeyedCodec<>("SignalId", Codec.STRING), (var0, var1) -> var0.signalId = var1, var0 -> var0.signalId)
         .documentation("The signal id this condition waits for. Must match the id sent by the producer.")
         .addValidator(Validators.nonNull())
         .add()
         .build();
      class="kw">protected class="kw">static class="kw">final SignalCondition.Config EMPTY = new SignalCondition.Config();
      @Nullable
      class="kw">protected String signalId;

      class="kw">public Config() {
      }

      @Nonnull
      @Override
      class="kw">public EventCondition create() {
         SignalCondition var1 = new SignalCondition();
         var1.config = this;
         class="kw">return var1;
      }

      @Override
      class="kw">public void validate(@Nonnull Validator var1) {
         if (this.signalId == null || this.signalId.isEmpty()) {
            var1.addErrorMessage("SignalCondition requires a non-empty SignalId");
         }
      }
   }

   class="kw">public class="kw">static class Handler class="kw">extends ConditionEventHandler.EntityHandler<WorldEventSignal> {
      class="kw">public Handler() {
         super(WorldEventSignal.class);
      }
   }
}