SignalCondition class

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

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

implements: EventCondition.Event<WorldEventSignal>

Поля (5)

МодификаторыТипИмя
public static final BuilderCodec<SignalCondition.Config> CODEC
protected static final SignalCondition.Config EMPTY
final String ID
protected String signalId
SignalCondition var1

Методы (8)

МодификаторыВозвратСигнатура
public Configpublic Config()
public Handlerpublic Handler()
public EventCondition createpublic EventCondition create()
public void handlevoid handle(@Nonnull World var1, @Nonnull WorldEventSignal var2)
if if(this.config.signalId != null)
if if(this.config.signalId == null)
abstract super super(WorldEventSignal.class)
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);
      }
   }
}