Target enum

Пакет: com.hypixel.hytale.server.core.modules.interaction.interaction.config.none.simple

Файл: com/hypixel/hytale/server/core/modules/interaction/interaction/config/none/simple/SendMessageInteraction.java

Поля (1)

МодификаторыТипИмя
Universe, World, Owner

Исходный код

Показать/скрыть
class="kw">package com.hypixel.hytale.server.core.modules.interaction.interaction.config.none.simple;

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.CommandBuffer;
class="kw">import com.hypixel.hytale.component.Ref;
class="kw">import com.hypixel.hytale.logger.HytaleLogger;
class="kw">import com.hypixel.hytale.protocol.InteractionType;
class="kw">import com.hypixel.hytale.server.core.Message;
class="kw">import com.hypixel.hytale.server.core.entity.InteractionContext;
class="kw">import com.hypixel.hytale.server.core.modules.interaction.interaction.CooldownHandler;
class="kw">import com.hypixel.hytale.server.core.modules.interaction.interaction.config.SimpleInstantInteraction;
class="kw">import com.hypixel.hytale.server.core.universe.PlayerRef;
class="kw">import com.hypixel.hytale.server.core.universe.Universe;
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 java.util.logging.Level;
class="kw">import javax.annotation.Nonnull;

class="kw">public class SendMessageInteraction class="kw">extends SimpleInstantInteraction {
   @Nonnull
   class="kw">private class="kw">static class="kw">final EnumCodec<SendMessageInteraction.Target> TARGET_CODEC = new EnumCodec<>(SendMessageInteraction.Target.class)
      .documentKey(SendMessageInteraction.Target.Universe, "Send the message to every player of every live world.")
      .documentKey(SendMessageInteraction.Target.World, "Send the message to every player of the world the interaction runs in.")
      .documentKey(SendMessageInteraction.Target.Owner, "Send the message to the entity that ran the interaction.");
   @Nonnull
   class="kw">public class="kw">static class="kw">final BuilderCodec<SendMessageInteraction> CODEC = BuilderCodec.<SimpleInstantInteraction>builder(
         SendMessageInteraction.class, SendMessageInteraction::new, SimpleInstantInteraction.CODEC
      )
      .documentation("Interaction that sends a message on use.")
      .<SendMessageInteraction.Target>appendInherited(
         new KeyedCodec<>("Target", TARGET_CODEC), (var0, var1) -> var0.target = var1, var0 -> var0.target, (var0, var1) -> var0.target = var1.target
      )
      .documentation("The set of players that receive the message.")
      .add()
      .appendInherited(
         new KeyedCodec<>("Message", Codec.STRING), (var0, var1) -> var0.message = var1, var0 -> var0.message, (var0, var1) -> var0.message = var1.message
      )
      .add()
      .appendInherited(new KeyedCodec<>("Key", Codec.STRING), (var0, var1) -> var0.key = var1, var0 -> var0.key, (var0, var1) -> var0.key = var1.key)
      .add()
      .build();
   @Nonnull
   class="kw">private SendMessageInteraction.Target target = SendMessageInteraction.Target.Owner;
   class="kw">private String key;
   class="kw">private String message;

   class="kw">public SendMessageInteraction(@Nonnull String var1, @Nonnull String var2) {
      super(var1);
      this.message = var2;
      this.unknown = true;
   }

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

   @Override
   class="kw">protected void firstRun(@Nonnull InteractionType var1, @Nonnull InteractionContext var2, @Nonnull CooldownHandler var3) {
      CommandBuffer var4 = var2.getCommandBuffer();
      assert var4 != null;
      class="kw">switch (this.target) {
         case Universe:
            Message var11 = this.buildMessage();

            for (World var14 : Universe.get().getWorlds().values()) {
               if (var14.isAlive()) {
                  for (PlayerRef var9 : var14.getPlayerRefs()) {
                     var9.sendMessage(var11);
                  }
               }
            }
            break;
         case World:
            Message var10 = this.buildMessage();

            for (PlayerRef var7 : var4.getExternalData().getWorld().getPlayerRefs()) {
               var7.sendMessage(var10);
            }
            break;
         case Owner:
            Ref var5 = var2.getOwningEntity();
            PlayerRef var6 = var4.getComponent(var5, PlayerRef.getComponentType());
            if (var6 != null) {
               var6.sendMessage(this.buildMessage());
            } else {
               HytaleLogger.getLogger()
                  .at(Level.INFO)
                  .log("SendMessageInteraction: '%s' for entity %s", this.message != null ? this.message : this.key, var5.getIndex());
            }
      }
   }

   @Override
   class="kw">protected void simulateFirstRun(@Nonnull InteractionType var1, @Nonnull InteractionContext var2, @Nonnull CooldownHandler var3) {
   }

   @Nonnull
   class="kw">private Message buildMessage() {
      class="kw">return this.key != null ? Message.translation(this.key) : Message.raw(this.message);
   }

   @Nonnull
   @Override
   class="kw">public String toString() {
      class="kw">return "SendMessageInteraction{target=" + this.target + ", message=" + this.message + ", key=" + this.key + "} " + super.toString();
   }

   class="kw">public enum Target {
      Universe,
      World,
      Owner;

      Target() {
      }
   }
}