Message class

Пакет: com.hypixel.hytale.server.core

Файл: com/hypixel/hytale/server/core/Message.java

Поля (30)

МодификаторыТипИмя
final BuilderCodec.Builder<FormattedMessage> MESSAGE_CODEC_BUILDER
List var1
String var1
int var2
var2
int var2
var2
String var2
StringParamValue var3
BoolParamValue var3
IntParamValue var3
DoubleParamValue var3
String var3
LongParamValue var3
yield var3
BoolParamValue var3
DoubleParamValue var4
LongParamValue var4
StringBuilder var4
IntParamValue var4
yield var4
BoolParamValue var5
yield var5
DoubleParamValue var5
StringParamValue var6
yield var6
double var6
DoubleParamValue var7
yield var7
StringParamValue var7

Методы (27)

МодификаторыВозвратСигнатура
abstract throw new IllegalArgumentExceptionthrow new IllegalArgumentException("Invalid boolean value")
private ParamValueCodecprivate ParamValueCodec()
public ParamValue decodepublic ParamValue decode(BsonValue var1, ExtraInfo var2)
public ParamValue decodeJsonpublic ParamValue decodeJson(@Nonnull RawJsonReader var1, ExtraInfo var2)
public BsonValue encodepublic BsonValue encode(ParamValue var1, ExtraInfo var2)
for for(Message var6 : var1)
for for(Message var4 : var1)
for for(FormattedMessage var5 : this.message.children)
public FormattedMessage getFormattedMessageFormattedMessage getFormattedMessage()
if if(var2)
if if(this.message.params == null)
if if(this.message.params == null)
if if(this.message.params == null)
if if(this.message.params == null)
if if(this.message.params == null)
if if(this.message.params == null)
if if(this.message.messageParams == null)
if if(this.message.children != null)
if if(this.message.children != null)
if if(this.message.children == null)
if if(var1 != null)
if if(var2 == null)
if if(var3 != null)
if if(this.message.params != null)
if if(this.message.messageParams != null)
abstract this this()
public Schema toSchemapublic Schema toSchema(@Nonnull SchemaContext var1)

Исходный код

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

class="kw">import com.hypixel.hytale.codec.Codec;
class="kw">import com.hypixel.hytale.codec.EmptyExtraInfo;
class="kw">import com.hypixel.hytale.codec.ExtraInfo;
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.array.ArrayCodec;
class="kw">import com.hypixel.hytale.codec.codecs.map.MapCodec;
class="kw">import com.hypixel.hytale.codec.function.FunctionCodec;
class="kw">import com.hypixel.hytale.codec.schema.SchemaContext;
class="kw">import com.hypixel.hytale.codec.schema.config.BooleanSchema;
class="kw">import com.hypixel.hytale.codec.schema.config.IntegerSchema;
class="kw">import com.hypixel.hytale.codec.schema.config.NumberSchema;
class="kw">import com.hypixel.hytale.codec.schema.config.Schema;
class="kw">import com.hypixel.hytale.codec.schema.config.StringSchema;
class="kw">import com.hypixel.hytale.codec.util.RawJsonReader;
class="kw">import com.hypixel.hytale.common.util.ArrayUtil;
class="kw">import com.hypixel.hytale.protocol.BoolParamValue;
class="kw">import com.hypixel.hytale.protocol.DoubleParamValue;
class="kw">import com.hypixel.hytale.protocol.FormattedMessage;
class="kw">import com.hypixel.hytale.protocol.IntParamValue;
class="kw">import com.hypixel.hytale.protocol.LongParamValue;
class="kw">import com.hypixel.hytale.protocol.ParamValue;
class="kw">import com.hypixel.hytale.protocol.StringParamValue;
class="kw">import com.hypixel.hytale.server.core.asset.util.ColorParseUtil;
class="kw">import com.hypixel.hytale.server.core.modules.i18n.I18nModule;
class="kw">import com.hypixel.hytale.server.core.util.MessageUtil;
class="kw">import com.hypixel.hytale.sneakythrow.SneakyThrow;
class="kw">import it.unimi.dsi.fastutil.objects.ObjectArrayList;
class="kw">import java.awt.Color;
class="kw">import java.io.IOException;
class="kw">import java.util.Arrays;
class="kw">import java.util.Collections;
class="kw">import java.util.HashMap;
class="kw">import java.util.List;
class="kw">import java.util.Map.Entry;
class="kw">import javax.annotation.Nonnull;
class="kw">import javax.annotation.Nullable;
class="kw">import org.bson.BsonBoolean;
class="kw">import org.bson.BsonDouble;
class="kw">import org.bson.BsonInt32;
class="kw">import org.bson.BsonInt64;
class="kw">import org.bson.BsonString;
class="kw">import org.bson.BsonValue;

class="kw">public class Message {
   class="kw">private class="kw">static class="kw">final BuilderCodec.Builder<FormattedMessage> MESSAGE_CODEC_BUILDER = BuilderCodec.builder(FormattedMessage.class, FormattedMessage::new);
   class="kw">private class="kw">static class="kw">final BuilderCodec<FormattedMessage> MESSAGE_CODEC = MESSAGE_CODEC_BUILDER.build();
   class="kw">private class="kw">static class="kw">final Codec<ParamValue> PARAM_CODEC = new Message.ParamValueCodec();
   class="kw">public class="kw">static class="kw">final FunctionCodec<FormattedMessage, Message> CODEC = new FunctionCodec<>(MESSAGE_CODEC, Message::new, Message::getFormattedMessage);
   class="kw">private class="kw">final FormattedMessage message;

   class="kw">protected Message(@Nonnull String var1, boolean var2) {
      this();
      if (var2) {
         this.message.messageId = var1;
      } else {
         this.message.rawText = var1;
      }
   }

   class="kw">protected Message() {
      this.message = new FormattedMessage();
   }

   class="kw">public Message(@Nonnull FormattedMessage var1) {
      this.message = var1;
   }

   @Nonnull
   class="kw">public Message param(@Nonnull String var1, @Nonnull String var2) {
      if (this.message.params == null) {
         this.message.params = new HashMap<>();
      }

      StringParamValue var3 = new StringParamValue();
      var3.value = var2;
      this.message.params.put(var1, var3);
      class="kw">return this;
   }

   @Nonnull
   class="kw">public Message param(@Nonnull String var1, boolean var2) {
      if (this.message.params == null) {
         this.message.params = new HashMap<>();
      }

      BoolParamValue var3 = new BoolParamValue();
      var3.value = var2;
      this.message.params.put(var1, var3);
      class="kw">return this;
   }

   @Nonnull
   class="kw">public Message param(@Nonnull String var1, double var2) {
      if (this.message.params == null) {
         this.message.params = new HashMap<>();
      }

      DoubleParamValue var4 = new DoubleParamValue();
      var4.value = var2;
      this.message.params.put(var1, var4);
      class="kw">return this;
   }

   @Nonnull
   class="kw">public Message param(@Nonnull String var1, int var2) {
      if (this.message.params == null) {
         this.message.params = new HashMap<>();
      }

      IntParamValue var3 = new IntParamValue();
      var3.value = var2;
      this.message.params.put(var1, var3);
      class="kw">return this;
   }

   @Nonnull
   class="kw">public Message param(@Nonnull String var1, long var2) {
      if (this.message.params == null) {
         this.message.params = new HashMap<>();
      }

      LongParamValue var4 = new LongParamValue();
      var4.value = var2;
      this.message.params.put(var1, var4);
      class="kw">return this;
   }

   @Nonnull
   class="kw">public Message param(@Nonnull String var1, float var2) {
      if (this.message.params == null) {
         this.message.params = new HashMap<>();
      }

      DoubleParamValue var3 = new DoubleParamValue();
      var3.value = var2;
      this.message.params.put(var1, var3);
      class="kw">return this;
   }

   @Nonnull
   class="kw">public Message param(@Nonnull String var1, @Nonnull Message var2) {
      if (this.message.messageParams == null) {
         this.message.messageParams = new HashMap<>();
      }

      this.message.messageParams.put(var1, var2.message);
      class="kw">return this;
   }

   @Nonnull
   class="kw">public Message bold(boolean var1) {
      this.message.bold = var1;
      class="kw">return this;
   }

   @Nonnull
   class="kw">public Message italic(boolean var1) {
      this.message.italic = var1;
      class="kw">return this;
   }

   @Nonnull
   class="kw">public Message monospace(boolean var1) {
      this.message.monospace = var1;
      class="kw">return this;
   }

   @Nonnull
   class="kw">public Message strikethrough(boolean var1) {
      this.message.strikethrough = var1;
      class="kw">return this;
   }

   @Nonnull
   class="kw">public Message color(@Nonnull String var1) {
      this.message.color = var1;
      class="kw">return this;
   }

   @Nonnull
   class="kw">public Message color(@Nonnull Color var1) {
      this.message.color = ColorParseUtil.colorToHex(var1);
      class="kw">return this;
   }

   @Nonnull
   class="kw">public Message link(@Nonnull String var1) {
      this.message.link = var1;
      class="kw">return this;
   }

   @Nonnull
   class="kw">public Message insert(@Nonnull Message var1) {
      this.message.children = ArrayUtil.append(this.message.children, var1.message);
      class="kw">return this;
   }

   @Nonnull
   class="kw">public Message insert(@Nonnull String var1) {
      class="kw">return this.insert(raw(var1));
   }

   @Nonnull
   class="kw">public Message insertAll(@Nonnull Message... var1) {
      int var2 = 0;
      if (this.message.children != null) {
         var2 = this.message.children.length;
         this.message.children = Arrays.copyOf(this.message.children, this.message.children.length + var1.length);
      } else {
         this.message.children = new FormattedMessage[var1.length];
      }

      for (Message var6 : var1) {
         this.message.children[var2++] = var6.message;
      }

      class="kw">return this;
   }

   @Nonnull
   class="kw">public Message insertAll(@Nonnull List<Message> var1) {
      int var2 = 0;
      if (this.message.children != null) {
         var2 = this.message.children.length;
         this.message.children = Arrays.copyOf(this.message.children, this.message.children.length + var1.size());
      } else {
         this.message.children = new FormattedMessage[var1.size()];
      }

      for (Message var4 : var1) {
         this.message.children[var2++] = var4.message;
      }

      class="kw">return this;
   }

   @Nullable
   class="kw">public String getRawText() {
      class="kw">return this.message.rawText;
   }

   @Nullable
   class="kw">public String getMessageId() {
      class="kw">return this.message.messageId;
   }

   @Nullable
   class="kw">public String getColor() {
      class="kw">return this.message.color;
   }

   @Nonnull
   class="kw">public List<Message> getChildren() {
      if (this.message.children == null) {
         class="kw">return Collections.emptyList();
      }

      List var1 = new ObjectArrayList();

      for (FormattedMessage var5 : this.message.children) {
         var1.add(new Message(var5));
      }

      class="kw">return var1;
   }

   @Nonnull
   class="kw">public String getAnsiMessage() {
      String var1 = this.getRawText();
      if (var1 != null) {
         class="kw">return var1;
      }

      String var2 = this.getMessageId();
      if (var2 == null) {
         class="kw">return "";
      }

      String var3 = I18nModule.get().getMessage("en-US", var2);
      if (var3 != null) {
         class="kw">return MessageUtil.formatText(var3, this.message.params, this.message.messageParams);
      }

      StringBuilder var4 = new StringBuilder(var2);
      if (this.message.params != null) {
         var4.append(this.message.params);
      }

      if (this.message.messageParams != null) {
         for (Entry var6 : this.message.messageParams.entrySet()) {
            var4.append(var6.getValue()).append("=").append(new Message(var6.getValue()).getAnsiMessage());
         }
      }

      class="kw">return var4.toString();
   }

   class="kw">public FormattedMessage getFormattedMessage() {
      class="kw">return this.message;
   }

   @Override
   class="kw">public String toString() {
      class="kw">return this.message.toString();
   }

   @Nonnull
   class="kw">public class="kw">static Message empty() {
      class="kw">return new Message();
   }

   @Nonnull
   class="kw">public class="kw">static Message translation(@Nonnull String var0) {
      class="kw">return new Message(var0, true);
   }

   @Nonnull
   class="kw">public class="kw">static Message raw(@Nonnull String var0) {
      class="kw">return new Message(var0, false);
   }

   @Nonnull
   class="kw">public class="kw">static Message parse(@Nonnull String var0) {
      try {
         class="kw">return CODEC.decodeJson(new RawJsonReader(var0.toCharArray()), EmptyExtraInfo.EMPTY);
      } catch (IOException var2) {
         throw SneakyThrow.sneakyThrow(var2);
      }
   }

   @Nonnull
   class="kw">public class="kw">static Message join(@Nonnull Message... var0) {
      class="kw">return new Message().insertAll(var0);
   }

   class="kw">static {
      MESSAGE_CODEC_BUILDER.appendInherited(
            new KeyedCodec<>("RawText", Codec.STRING), (var0, var1) -> var0.rawText = var1, var0 -> var0.rawText, (var0, var1) -> var0.rawText = var1.rawText
         )
         .add()
         .appendInherited(
            new KeyedCodec<>("MessageId", Codec.STRING),
            (var0, var1) -> var0.messageId = var1,
            var0 -> var0.messageId,
            (var0, var1) -> var0.messageId = var1.messageId
         )
         .add()
         .appendInherited(
            new KeyedCodec<>("Params", new MapCodec<>(PARAM_CODEC, HashMap::new)),
            (var0, var1) -> var0.params = var1,
            var0 -> var0.params,
            (var0, var1) -> var0.params = var1.params
         )
         .add()
         .appendInherited(
            new KeyedCodec<>("MessageParams", new MapCodec<>(MESSAGE_CODEC, HashMap::new)),
            (var0, var1) -> var0.messageParams = var1,
            var0 -> var0.messageParams,
            (var0, var1) -> var0.messageParams = var1.messageParams
         )
         .add()
         .appendInherited(
            new KeyedCodec<>("Children", new ArrayCodec<>(MESSAGE_CODEC, FormattedMessage[]::new)),
            (var0, var1) -> var0.children = var1,
            var0 -> var0.children,
            (var0, var1) -> var0.children = var1.children
         )
         .add()
         .appendInherited(
            new KeyedCodec<>("Bold", Codec.NULLABLE_BOOLEAN), (var0, var1) -> var0.bold = var1, var0 -> var0.bold, (var0, var1) -> var0.bold = var1.bold
         )
         .add()
         .appendInherited(
            new KeyedCodec<>("Italic", Codec.NULLABLE_BOOLEAN),
            (var0, var1) -> var0.italic = var1,
            var0 -> var0.italic,
            (var0, var1) -> var0.italic = var1.italic
         )
         .add()
         .appendInherited(
            new KeyedCodec<>("Monospace", Codec.NULLABLE_BOOLEAN),
            (var0, var1) -> var0.monospace = var1,
            var0 -> var0.monospace,
            (var0, var1) -> var0.monospace = var1.monospace
         )
         .add()
         .appendInherited(
            new KeyedCodec<>("Underline", Codec.NULLABLE_BOOLEAN),
            (var0, var1) -> var0.underlined = var1,
            var0 -> var0.underlined,
            (var0, var1) -> var0.underlined = var1.underlined
         )
         .add()
         .appendInherited(
            new KeyedCodec<>("Strikethrough", Codec.NULLABLE_BOOLEAN),
            (var0, var1) -> var0.strikethrough = var1,
            var0 -> var0.strikethrough,
            (var0, var1) -> var0.strikethrough = var1.strikethrough
         )
         .add()
         .appendInherited(
            new KeyedCodec<>("Color", Codec.STRING), (var0, var1) -> var0.color = var1, var0 -> var0.color, (var0, var1) -> var0.color = var1.color
         )
         .add()
         .appendInherited(new KeyedCodec<>("Link", Codec.STRING), (var0, var1) -> var0.link = var1, var0 -> var0.link, (var0, var1) -> var0.link = var1.link)
         .add();
   }

   class="kw">private class="kw">static class ParamValueCodec class="kw">implements Codec<ParamValue> {
      class="kw">private ParamValueCodec() {
      }

      @Nullable
      class="kw">public ParamValue decode(BsonValue var1, ExtraInfo var2) {
         class="kw">return class="kw">switch (var1.getBsonType()) {
            case DOUBLE -> {
               DoubleParamValue var7 = new DoubleParamValue();
               var7.value = var1.asDouble().getValue();
               yield var7;
            }
            case STRING -> {
               StringParamValue var6 = new StringParamValue();
               var6.value = var1.asString().getValue();
               yield var6;
            }
            case BOOLEAN -> {
               BoolParamValue var5 = new BoolParamValue();
               var5.value = var1.asBoolean().getValue();
               yield var5;
            }
            case INT32 -> {
               IntParamValue var4 = new IntParamValue();
               var4.value = var1.asInt32().getValue();
               yield var4;
            }
            case INT64 -> {
               LongParamValue var3 = new LongParamValue();
               var3.value = var1.asInt64().getValue();
               yield var3;
            }
            class="kw">default -> throw new IllegalArgumentException("Unsupported bson type: " + var1.getBsonType());
         };
      }

      class="kw">public BsonValue encode(ParamValue var1, ExtraInfo var2) {
         class="kw">return (BsonValue)(class="kw">switch (var1) {
            case StringParamValue var5 -> new BsonString(var5.value);
            case BoolParamValue var6 -> BsonBoolean.valueOf(var6.value);
            case DoubleParamValue var7 -> new BsonDouble(var7.value);
            case IntParamValue var8 -> new BsonInt32(var8.value);
            case LongParamValue var9 -> new BsonInt64(var9.value);
            class="kw">default -> throw new IllegalArgumentException("Unknown ParamValue type: " + var1.getClass());
         });
      }

      @Nullable
      class="kw">public ParamValue decodeJson(@Nonnull RawJsonReader var1, ExtraInfo var2) class="kw">throws IOException {
         if (var1.peekFor('"')) {
            StringParamValue var7 = new StringParamValue();
            var7.value = var1.readString();
            class="kw">return var7;
         }

         if (!var1.peekFor('f') && !var1.peekFor('t')) {
            double var6 = var1.readDoubleValue();
            DoubleParamValue var5 = new DoubleParamValue();
            var5.value = var6;
            class="kw">return var5;
         }

         if (!var1.tryConsume("false")) {
            throw new IllegalArgumentException("Invalid boolean value");
         }

         BoolParamValue var3 = new BoolParamValue();
         var3.value = var1.readBooleanValue();
         class="kw">return var3;
      }

      @Nonnull
      @Override
      class="kw">public Schema toSchema(@Nonnull SchemaContext var1) {
         class="kw">return Schema.anyOf(new BooleanSchema(), new NumberSchema(), new IntegerSchema(), new StringSchema());
      }
   }
}