EncounterBossBarState class

Пакет: com.hypixel.hytale.builtin.encountermanager

Файл: com/hypixel/hytale/builtin/encountermanager/EncounterBossBarState.java

implements: Component<EntityStore>, EncounterMemberConsumer

Поля (10)

МодификаторыТипИмя
final int NO_ENTITY
Ref var2
DisplayNameComponent var2
NetworkId var3
Message var3
UpdateBossBar var3
UpdateBossBar var3
PlayerRef var3
int var4
FormattedMessage var5

Методы (7)

МодификаторыВозвратСигнатура
public void clearvoid clear()
private void hidevoid hide(@Nonnull ComponentAccessor<EntityStore> var1, @Nonnull Ref<EntityStore> var2)
if if(var3 == null)
if if(var3 != null)
if if(var3 == null)
public void setTrackedvoid setTracked(@Nonnull Ref<EntityStore> var1, @Nonnull UUID var2, @Nullable String var3)
static boolean writeboolean write(@Nonnull ComponentAccessor<EntityStore> var0, @Nonnull Ref<EntityStore> var1, @Nonnull UpdateBossBar var2)

Исходный код

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

class="kw">import com.hypixel.hytale.component.Component;
class="kw">import com.hypixel.hytale.component.ComponentAccessor;
class="kw">import com.hypixel.hytale.component.ComponentType;
class="kw">import com.hypixel.hytale.component.Ref;
class="kw">import com.hypixel.hytale.protocol.FormattedMessage;
class="kw">import com.hypixel.hytale.protocol.packets.interface_.UpdateBossBar;
class="kw">import com.hypixel.hytale.server.core.Message;
class="kw">import com.hypixel.hytale.server.core.entity.reference.PersistentRef;
class="kw">import com.hypixel.hytale.server.core.modules.entity.component.DisplayNameComponent;
class="kw">import com.hypixel.hytale.server.core.modules.entity.tracker.NetworkId;
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 it.unimi.dsi.fastutil.objects.Reference2ObjectOpenHashMap;
class="kw">import java.util.Objects;
class="kw">import java.util.UUID;
class="kw">import javax.annotation.Nonnull;
class="kw">import javax.annotation.Nullable;

class="kw">public class EncounterBossBarState class="kw">implements Component<EntityStore>, EncounterMemberConsumer {
   class="kw">private class="kw">static class="kw">final int NO_ENTITY = 0;
   @Nonnull
   class="kw">private class="kw">final PersistentRef target = new PersistentRef();
   @Nullable
   class="kw">private String nameKey;
   class="kw">private int resolvedNetworkId = 0;
   @Nullable
   class="kw">private String resolvedNameKey;
   @Nullable
   class="kw">private FormattedMessage resolvedDisplayName;
   @Nullable
   class="kw">private UpdateBossBar packet;
   @Nonnull
   class="kw">private class="kw">final Reference2ObjectOpenHashMap<Ref<EntityStore>, UpdateBossBar> lastSent = new Reference2ObjectOpenHashMap();

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

   @Nonnull
   class="kw">public class="kw">static ComponentType<EntityStore, EncounterBossBarState> getComponentType() {
      class="kw">return EncounterManagerPlugin.get().getEncounterBossBarStateComponentType();
   }

   class="kw">public void setTracked(@Nonnull Ref<EntityStore> var1, @Nonnull UUID var2, @Nullable String var3) {
      this.nameKey = var3;
      this.target.setEntity(var1, var2);
   }

   class="kw">public void clear() {
      this.target.clear();
      this.nameKey = null;
   }

   @Override
   class="kw">public void beginTick(@Nonnull ComponentAccessor<EntityStore> var1) {
      Ref var2 = this.target.getEntity(var1);
      NetworkId var3 = var2 != null ? var1.getComponent(var2, NetworkId.getComponentType()) : null;
      int var4 = var3 != null ? var3.getId() : 0;
      FormattedMessage var5 = var4 != 0 && this.nameKey == null ? displayNameOf(var1, var2) : null;
      if (var4 != this.resolvedNetworkId || !Objects.equals(this.nameKey, this.resolvedNameKey) || !Objects.equals(var5, this.resolvedDisplayName)) {
         this.resolvedNetworkId = var4;
         this.resolvedNameKey = this.nameKey;
         this.resolvedDisplayName = var5;
         this.packet = var4 == 0 ? null : new UpdateBossBar(var4, this.nameKey != null ? translate(this.nameKey) : var5, false);
      }
   }

   @Nullable
   class="kw">private class="kw">static FormattedMessage displayNameOf(@Nonnull ComponentAccessor<EntityStore> var0, @Nonnull Ref<EntityStore> var1) {
      DisplayNameComponent var2 = var0.getComponent(var1, DisplayNameComponent.getComponentType());
      Message var3 = var2 != null ? var2.getDisplayName() : null;
      class="kw">return var3 != null ? var3.getFormattedMessage() : null;
   }

   @Nonnull
   class="kw">private class="kw">static FormattedMessage translate(@Nonnull String var0) {
      class="kw">return Message.translation(var0).getFormattedMessage();
   }

   @Override
   class="kw">public void applyToPlayer(@Nonnull ComponentAccessor<EntityStore> var1, @Nonnull Ref<EntityStore> var2) {
      UpdateBossBar var3 = this.packet;
      if (var3 == null) {
         this.hide(var1, var2);
      } else if (this.lastSent.get(var2) != var3) {
         if (write(var1, var2, var3)) {
            this.lastSent.put(var2, var3);
         }
      }
   }

   @Override
   class="kw">public void revertPlayer(@Nonnull ComponentAccessor<EntityStore> var1, @Nonnull Ref<EntityStore> var2) {
      this.hide(var1, var2);
   }

   @Override
   class="kw">public void forgetPlayer(@Nonnull Ref<EntityStore> var1) {
      this.lastSent.remove(var1);
   }

   class="kw">private void hide(@Nonnull ComponentAccessor<EntityStore> var1, @Nonnull Ref<EntityStore> var2) {
      UpdateBossBar var3 = (UpdateBossBar)this.lastSent.remove(var2);
      if (var3 != null) {
         write(var1, var2, new UpdateBossBar(var3.entityNetworkId, null, true));
      }
   }

   class="kw">private class="kw">static boolean write(@Nonnull ComponentAccessor<EntityStore> var0, @Nonnull Ref<EntityStore> var1, @Nonnull UpdateBossBar var2) {
      PlayerRef var3 = var0.getComponent(var1, PlayerRef.getComponentType());
      if (var3 == null) {
         class="kw">return false;
      }

      var3.getPacketHandler().writeNoCache(var2);
      class="kw">return true;
   }

   @Nonnull
   @Override
   class="kw">public Component<EntityStore> clone() {
      class="kw">return new EncounterBossBarState();
   }
}