SendMessageInteraction class
Пакет: com.hypixel.hytale.server.core.modules.interaction.interaction.config.none.simple
Файл: com/hypixel/hytale/server/core/modules/interaction/interaction/config/none/simple/SendMessageInteraction.java
extends: SimpleInstantInteraction
Поля (8)
| Модификаторы | Тип | Имя |
|---|---|---|
|
Universe,
World, |
Owner |
|
|
break |
|
|
break |
|
Message |
var10 |
|
Message |
var11 |
|
CommandBuffer |
var4 |
|
Ref |
var5 |
|
PlayerRef |
var6 |
Методы (4)
| Модификаторы | Возврат | Сигнатура |
|---|---|---|
|
|
Target Target() |
|
|
if if(var6 != null) |
abstract |
|
super super(var1) |
|
|
switch switch(this.target) |
Исходный код
Показать/скрыть
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() {
}
}
}