SendMessageEffect class

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

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

extends: TriggerEffect

Поля (21)

МодификаторыТипИмя
TRIGGERING_PLAYER, NEAREST_PLAYER, PLAYERS_IN_VOLUME, ALL_PLAYERS
SpatialResource var1
PlayerRef var10
SendMessageEffect var2
List var2
Store var2
SpatialResource var2
List var2
SpatialData var2
Message var3
PlayerRef var3
SpatialData var3
ArrayList var3
ArrayList var3
PlayerRef var4
var4
double var5
var5
PlayerRef var5
PlayerRef var6
double var8

Методы (12)

МодификаторыВозвратСигнатура
Recipient Recipient()
for for(PlayerRef var5 : var2)
for for(Ref var5 : var2)
abstract for for(int var7 = 0; var7 < var3.size()
abstract for for(int var4 = 0; var4 < var2.size()
if if(this.message != null)
if if(var2 == null)
if if(var10 != null)
if if(var6 != null)
if if(var1 == null)
if if(var5 != null)
return switchreturn switch(this.recipient)

Исходный код

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

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.effect.TriggerVolumeEntityQuery;
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.component.Store;
class="kw">import com.hypixel.hytale.component.spatial.SpatialData;
class="kw">import com.hypixel.hytale.component.spatial.SpatialResource;
class="kw">import com.hypixel.hytale.server.core.Message;
class="kw">import com.hypixel.hytale.server.core.modules.entity.EntityModule;
class="kw">import com.hypixel.hytale.server.core.universe.PlayerRef;
class="kw">import com.hypixel.hytale.server.core.universe.world.storage.EntityStore;
class="kw">import java.util.ArrayList;
class="kw">import java.util.List;
class="kw">import javax.annotation.Nonnull;
class="kw">import javax.annotation.Nullable;
class="kw">import org.joml.Vector3d;

class="kw">public class SendMessageEffect class="kw">extends TriggerEffect {
   @Nonnull
   class="kw">public class="kw">static class="kw">final BuilderCodec<SendMessageEffect> CODEC = BuilderCodec.builder(SendMessageEffect.class, SendMessageEffect::new, BASE_CODEC)
      .append(new KeyedCodec<>("Message", Codec.STRING), (var0, var1) -> var0.message = var1, var0 -> var0.message)
      .add()
      .append(
         new KeyedCodec<>("Recipient", new EnumCodec<>(SendMessageEffect.Recipient.class), false),
         (var0, var1) -> var0.recipient = var1 == null ? SendMessageEffect.Recipient.TRIGGERING_PLAYER : var1,
         var0 -> var0.recipient
      )
      .add()
      .build();
   class="kw">private String message;
   @Nonnull
   class="kw">private SendMessageEffect.Recipient recipient = SendMessageEffect.Recipient.TRIGGERING_PLAYER;

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

   @Nonnull
   class="kw">public class="kw">static SendMessageEffect create(@Nonnull TriggerEventType var0, @Nonnull String var1) {
      SendMessageEffect var2 = new SendMessageEffect();
      var2.setEventType(var0);
      var2.message = var1;
      class="kw">return var2;
   }

   @Override
   class="kw">public void execute(@Nonnull TriggerContext var1) {
      if (this.message != null) {
         List var2 = this.resolveRecipients(var1);
         if (!var2.isEmpty()) {
            Message var3 = withTagParams(var1, Message.translation(this.message));

            for (PlayerRef var5 : var2) {
               var5.sendMessage(var3);
            }
         }
      }
   }

   @Nonnull
   class="kw">private List<PlayerRef> resolveRecipients(@Nonnull TriggerContext var1) {
      Store var2 = var1.getStore();

      class="kw">return class="kw">switch (this.recipient) {
         case TRIGGERING_PLAYER -> {
            PlayerRef var3 = playerRefOf(var2, var1.getEntityRef());
            yield var3 != null ? List.of(var3) : List.of();
         }
         case NEAREST_PLAYER -> nearestPlayer(var2, var1.getVolume().getPosition());
         case PLAYERS_IN_VOLUME -> playersInVolumes(var2, var1.getSpatialVolumes());
         case ALL_PLAYERS -> allPlayers(var2);
      };
   }

   @Nonnull
   class="kw">private class="kw">static List<PlayerRef> nearestPlayer(@Nonnull Store<EntityStore> var0, @Nonnull Vector3d var1) {
      SpatialResource var2 = var0.getResource(EntityModule.get().getPlayerSpatialResourceType());
      if (var2 == null) {
         class="kw">return List.of();
      }

      SpatialData var3 = var2.getSpatialData();
      PlayerRef var4 = null;
      double var5 = Double.MAX_VALUE;

      for (int var7 = 0; var7 < var3.size(); var7++) {
         double var8 = var3.getVector(var7).distanceSquared(var1);
         if (!(var8 >= var5)) {
            PlayerRef var10 = playerRefOf(var0, var3.getData(var7));
            if (var10 != null) {
               var4 = var10;
               var5 = var8;
            }
         }
      }

      class="kw">return var4 != null ? List.of(var4) : List.of();
   }

   @Nonnull
   class="kw">private class="kw">static List<PlayerRef> playersInVolumes(@Nonnull Store<EntityStore> var0, @Nonnull List<VolumeEntry> var1) {
      List var2 = TriggerVolumeEntityQuery.collectTargets(var0, var1, false, true, "");
      ArrayList var3 = new ArrayList<>(var2.size());

      for (Ref var5 : var2) {
         PlayerRef var6 = playerRefOf(var0, var5);
         if (var6 != null) {
            var3.add(var6);
         }
      }

      class="kw">return var3;
   }

   @Nonnull
   class="kw">private class="kw">static List<PlayerRef> allPlayers(@Nonnull Store<EntityStore> var0) {
      SpatialResource var1 = var0.getResource(EntityModule.get().getPlayerSpatialResourceType());
      if (var1 == null) {
         class="kw">return List.of();
      }

      SpatialData var2 = var1.getSpatialData();
      ArrayList var3 = new ArrayList<>(var2.size());

      for (int var4 = 0; var4 < var2.size(); var4++) {
         PlayerRef var5 = playerRefOf(var0, var2.getData(var4));
         if (var5 != null) {
            var3.add(var5);
         }
      }

      class="kw">return var3;
   }

   @Nullable
   class="kw">private class="kw">static PlayerRef playerRefOf(@Nonnull Store<EntityStore> var0, @Nonnull Ref<EntityStore> var1) {
      class="kw">return var1.isValid() ? var0.getComponent(var1, PlayerRef.getComponentType()) : null;
   }

   class="kw">public enum Recipient {
      TRIGGERING_PLAYER,
      NEAREST_PLAYER,
      PLAYERS_IN_VOLUME,
      ALL_PLAYERS;

      Recipient() {
      }
   }
}