SendSignalEffect class

Пакет: com.hypixel.hytale.builtin.triggervolumes.effect.builtin

Файл: com/hypixel/hytale/builtin/triggervolumes/effect/builtin/SendSignalEffect.java

extends: TriggerEffect

Поля (12)

МодификаторыТипИмя
final String[] EMPTY
return
TriggerVolumeManager var2
Ref var3
UUID var4
var4
var4
SendSignalEffect var5
UUIDComponent var5
String var6
List var6
Vector3d var9

Методы (6)

МодификаторыВозвратСигнатура
public double getRadiusdouble getRadius()
if if(var3 != null)
if if(var2 != null)
if if(var3 != null)
if if(var5 == null)
void signalVolumevoid signalVolume(@Nonnull TriggerVolumeManager var1, @Nonnull VolumeEntry var2, @Nullable Ref<EntityStore> var3, @Nonnull UUID var4, @Nullable Vector3d var5)

Исходный код

Показать/скрыть
class="kw">package com.hypixel.hytale.builtin.triggervolumes.effect.builtin;

class="kw">import com.hypixel.hytale.builtin.triggervolumes.effect.SignalTag;
class="kw">import com.hypixel.hytale.builtin.triggervolumes.effect.TriggerContext;
class="kw">import com.hypixel.hytale.builtin.triggervolumes.effect.TriggerEffect;
class="kw">import com.hypixel.hytale.builtin.triggervolumes.effect.TriggerEventType;
class="kw">import com.hypixel.hytale.builtin.triggervolumes.manager.TriggerVolumeManager;
class="kw">import com.hypixel.hytale.builtin.triggervolumes.manager.VolumeEntry;
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.codecs.EnumCodec;
class="kw">import com.hypixel.hytale.component.Ref;
class="kw">import com.hypixel.hytale.server.core.entity.UUIDComponent;
class="kw">import com.hypixel.hytale.server.core.universe.world.storage.EntityStore;
class="kw">import java.util.List;
class="kw">import java.util.UUID;
class="kw">import javax.annotation.Nonnull;
class="kw">import javax.annotation.Nullable;
class="kw">import org.joml.Vector3d;

class="kw">public class SendSignalEffect class="kw">extends TriggerEffect {
   class="kw">private class="kw">static class="kw">final String[] EMPTY = new String[0];
   @Nonnull
   class="kw">public class="kw">static class="kw">final BuilderCodec<SendSignalEffect> CODEC = BuilderCodec.builder(SendSignalEffect.class, SendSignalEffect::new, BASE_CODEC)
      .append(new KeyedCodec<>("MatchKey", Codec.STRING, false), (var0, var1) -> var0.matchKey = var1, var0 -> var0.matchKey)
      .add()
      .append(new KeyedCodec<>("MatchValue", Codec.STRING, false), (var0, var1) -> var0.matchValue = var1, var0 -> var0.matchValue)
      .add()
      .append(new KeyedCodec<>("Radius", Codec.DOUBLE, false), (var0, var1) -> var0.radius = var1, var0 -> var0.radius)
      .add()
      .append(new KeyedCodec<>("Center", new EnumCodec<>(TaggedVolumeEffectUtil.Center.class), false), (var0, var1) -> var0.center = var1, var0 -> var0.center)
      .add()
      .append(
         new KeyedCodec<>("SignalKeys", Codec.STRING_ARRAY, false),
         (var0, var1) -> var0.signalKeys = var1 != null ? var1 : EMPTY,
         var0 -> var0.signalKeys.length == 0 ? null : var0.signalKeys
      )
      .add()
      .append(
         new KeyedCodec<>("SignalValues", Codec.STRING_ARRAY, false),
         (var0, var1) -> var0.signalValues = var1 != null ? var1 : EMPTY,
         var0 -> var0.signalValues.length == 0 ? null : var0.signalValues
      )
      .add()
      .build();
   @Nullable
   class="kw">private String matchKey;
   @Nullable
   class="kw">private String matchValue;
   class="kw">private double radius = 50.0;
   @Nonnull
   class="kw">private TaggedVolumeEffectUtil.Center center = TaggedVolumeEffectUtil.Center.VOLUME;
   @Nonnull
   class="kw">private String[] signalKeys = EMPTY;
   @Nonnull
   class="kw">private String[] signalValues = EMPTY;

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

   @Nonnull
   class="kw">public class="kw">static SendSignalEffect create(
      @Nonnull TriggerEventType var0, @Nullable String var1, @Nullable String var2, @Nullable String var3, @Nullable String var4
   ) {
      SendSignalEffect var5 = new SendSignalEffect();
      var5.setEventType(var0);
      var5.matchKey = var1;
      var5.matchValue = var2;
      if (var3 != null) {
         var5.signalKeys = new String[]{var3};
         var5.signalValues = var4 != null ? new String[]{var4} : EMPTY;
      }

      class="kw">return var5;
   }

   @Override
   class="kw">public void execute(@Nonnull TriggerContext var1) {
      TriggerVolumeManager var2 = TaggedVolumeEffectUtil.manager(var1);
      if (var2 != null) {
         Ref var3 = var1.getEntityRef();
         UUID var4;
         if (var3 != null) {
            UUIDComponent var5 = var1.getStore().getComponent(var3, UUIDComponent.getComponentType());
            if (var5 == null) {
               class="kw">return;
            }

            var4 = var5.getUuid();
         } else {
            var4 = TriggerVolumeManager.ENVIRONMENT_ACTOR_UUID;
         }

         Vector3d var9 = var1.getEventPosition();
         String var6 = TaggedVolumeEffectUtil.composeTagFilter(this.matchKey, this.matchValue);

         for (VolumeEntry var8 : TaggedVolumeEffectUtil.collectTargets(var1, var6, this.radius, this.center)) {
            this.signalVolume(var2, var8, var3, var4, var9);
         }
      }
   }

   void signalVolume(
      @Nonnull TriggerVolumeManager var1, @Nonnull VolumeEntry var2, @Nullable Ref<EntityStore> var3, @Nonnull UUID var4, @Nullable Vector3d var5
   ) {
      List var6 = SignalTag.zip(this.signalKeys, this.signalValues);
      var1.enqueueVolumeEvent(TriggerEventType.SIGNAL_RECEIVED, var3, var4, var2.getId(), var6, var5, null);
   }

   class="kw">public double getRadius() {
      class="kw">return this.radius;
   }
}