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();
}
}