Ban class

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

Файл: com/hypixel/hytale/server/core/modules/accesscontrol/ban/Ban.java

Поля (8)

МодификаторыТипИмя
Duration var1
long var2
BsonValue var3
Ban var4
long var4
BsonValue var5
long var6
Message var8

Методы (3)

МодификаторыВозвратСигнатура
if if(var3 == null)
if if(this.expiresOn == null)
public boolean isInEffectboolean isInEffect()

Исходный код

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

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.validation.Validators;
class="kw">import com.hypixel.hytale.server.core.Message;
class="kw">import java.time.Duration;
class="kw">import java.time.Instant;
class="kw">import java.util.UUID;
class="kw">import javax.annotation.Nonnull;
class="kw">import javax.annotation.Nullable;
class="kw">import org.bson.BsonDocument;
class="kw">import org.bson.BsonValue;

class="kw">public class="kw">final class Ban {
   @Nonnull
   class="kw">public class="kw">static class="kw">final BuilderCodec<Ban> CODEC = BuilderCodec.builder(Ban.class, Ban::new)
      .append(new KeyedCodec<>("Target", Codec.UUID_STRING), (var0, var1) -> var0.target = var1, var0 -> var0.target)
      .addValidator(Validators.nonNull())
      .add()
      .<UUID>append(new KeyedCodec<>("By", Codec.UUID_STRING), (var0, var1) -> var0.by = var1, var0 -> var0.by)
      .addValidator(Validators.nonNull())
      .add()
      .<Instant>append(new KeyedCodec<>("Timestamp", Codec.INSTANT), (var0, var1) -> var0.timestamp = var1, var0 -> var0.timestamp)
      .addValidator(Validators.nonNull())
      .add()
      .append(new KeyedCodec<>("ExpiresOn", Codec.INSTANT), (var0, var1) -> var0.expiresOn = var1, var0 -> var0.expiresOn)
      .add()
      .append(new KeyedCodec<>("Reason", Codec.STRING), (var0, var1) -> var0.reason = var1, var0 -> var0.reason)
      .add()
      .append(
         new KeyedCodec<>("Metadata", Codec.BSON_DOCUMENT),
         (var0, var1) -> var0.metadata = var1 == null ? new BsonDocument() : var1,
         var0 -> var0.metadata.isEmpty() ? null : var0.metadata
      )
      .add()
      .build();
   class="kw">private UUID target;
   class="kw">private UUID by;
   class="kw">private Instant timestamp;
   @Nullable
   class="kw">private Instant expiresOn;
   @Nullable
   class="kw">private String reason;
   @Nonnull
   class="kw">private BsonDocument metadata = new BsonDocument();

   class="kw">private Ban() {
   }

   class="kw">public Ban(@Nonnull UUID var1, @Nonnull UUID var2, @Nonnull Instant var3, @Nullable Instant var4, @Nullable String var5) {
      this.target = var1;
      this.by = var2;
      this.timestamp = var3;
      this.expiresOn = var4;
      this.reason = var5;
   }

   @Nonnull
   class="kw">public UUID getTarget() {
      class="kw">return this.target;
   }

   @Nonnull
   class="kw">public UUID getBy() {
      class="kw">return this.by;
   }

   @Nonnull
   class="kw">public Instant getTimestamp() {
      class="kw">return this.timestamp;
   }

   @Nullable
   class="kw">public Instant getExpiresOn() {
      class="kw">return this.expiresOn;
   }

   @Nullable
   class="kw">public String getReason() {
      class="kw">return this.reason;
   }

   @Nullable
   class="kw">public <T> T getMetadata(@Nonnull KeyedCodec<T> var1) {
      class="kw">return var1.getOrNull(this.metadata);
   }

   @Nullable
   class="kw">public <T> T getMetadata(@Nonnull String var1, @Nonnull Codec<T> var2) {
      BsonValue var3 = this.metadata.get(var1);
      class="kw">return var3 == null ? null : var2.decode(var3);
   }

   @Nonnull
   class="kw">public <T> Ban withMetadata(@Nonnull KeyedCodec<T> var1, @Nullable T var2) {
      class="kw">return this.withMetadata(var1.getKey(), var1.getChildCodec(), var2);
   }

   @Nonnull
   class="kw">public <T> Ban withMetadata(@Nonnull String var1, @Nonnull Codec<T> var2, @Nullable T var3) {
      Ban var4 = new Ban(this.target, this.by, this.timestamp, this.expiresOn, this.reason);
      var4.metadata = this.metadata.clone();
      if (var3 == null) {
         var4.metadata.remove(var1);
         class="kw">return var4;
      }

      BsonValue var5 = var2.encode(var3);
      if (!var5.isNull() && !(var5 class="kw">instanceof BsonDocument var6 && var6.isEmpty())) {
         var4.metadata.put(var1, var5);
      } else {
         var4.metadata.remove(var1);
      }

      class="kw">return var4;
   }

   class="kw">public boolean isInEffect() {
      class="kw">return this.expiresOn == null || this.expiresOn.isAfter(Instant.now());
   }

   @Nonnull
   class="kw">public Message getDisconnectReason() {
      if (this.expiresOn == null) {
         class="kw">return this.reason == null
            ? Message.translation("client.general.disconnect.banned.permanent")
            : Message.translation("client.general.disconnect.banned.permanent.withReason").param("reason", this.reason);
      }

      Duration var1 = Duration.between(Instant.now(), this.expiresOn);
      long var2 = var1.toDaysPart();
      long var4 = var1.toHoursPart();
      long var6 = var1.toMinutesPart();
      Message var8 = this.reason == null
         ? Message.translation("client.general.disconnect.banned.timed")
         : Message.translation("client.general.disconnect.banned.timed.withReason").param("reason", this.reason);
      class="kw">return var8.param("days", var2).param("hours", var4).param("mins", var6);
   }
}