PlayerWorldData class
Пакет: com.hypixel.hytale.server.core.entity.entities.player.data
Файл: com/hypixel/hytale/server/core/entity/entities/player/data/PlayerWorldData.java
implements: UserMapMarkersStore
Поля (3)
| Модификаторы | Тип | Имя |
|---|---|---|
|
int |
var2 |
|
boolean |
var2 |
|
int |
var3 |
Методы (22)
| Модификаторы | Возврат | Сигнатура |
|---|---|---|
public |
void |
addLastDeathvoid addLastDeath(@Nonnull String var1, @Nonnull Transform var2, int var3) |
|
|
for for(String var5 : var1) |
public |
SavedMovementStates |
getLastMovementStatesSavedMovementStates getLastMovementStates() |
public |
Transform |
getLastPositionTransform getLastPosition() |
public |
boolean |
hasRevealedMarkersboolean hasRevealedMarkers() |
public |
boolean |
hideMarkerboolean hideMarker(@Nonnull String var1) |
|
|
if if(var1 != null) |
|
|
if if(var5 != null) |
|
|
if if(var2) |
|
|
if if(var3 > 0) |
|
|
if if(var2) |
public |
boolean |
isFirstSpawnboolean isFirstSpawn() |
public |
boolean |
isMarkerRevealedboolean isMarkerRevealed(@Nonnull String var1) |
public |
boolean |
removeLastDeathboolean removeLastDeath(@Nonnull String var1) |
public |
int |
retainRevealedMarkersint retainRevealedMarkers(@Nonnull Set<String> var1) |
public |
boolean |
revealMarkerboolean revealMarker(@Nonnull String var1) |
public |
void |
setFirstSpawnvoid setFirstSpawn(boolean var1) |
public |
void |
setLastMovementStatesvoid setLastMovementStates(@Nonnull MovementStates var1, boolean var2) |
private |
void |
setLastMovementStates_internalvoid setLastMovementStates_internal(@Nonnull MovementStates var1) |
public |
void |
setLastPositionvoid setLastPosition(@Nonnull Transform var1) |
public |
void |
setPlayerConfigDatavoid setPlayerConfigData(@Nonnull PlayerConfigData var1) |
public |
void |
setRespawnPointsvoid setRespawnPoints(@Nonnull PlayerRespawnPointData[] var1) |
Исходный код
Показать/скрыть
class="kw">package com.hypixel.hytale.server.core.entity.entities.player.data;
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.array.ArrayCodec;
class="kw">import com.hypixel.hytale.math.vector.Transform;
class="kw">import com.hypixel.hytale.protocol.MovementStates;
class="kw">import com.hypixel.hytale.protocol.SavedMovementStates;
class="kw">import com.hypixel.hytale.server.core.codec.ProtocolCodecs;
class="kw">import com.hypixel.hytale.server.core.universe.world.worldmap.markers.user.UserMapMarker;
class="kw">import com.hypixel.hytale.server.core.universe.world.worldmap.markers.user.UserMapMarkersStore;
class="kw">import it.unimi.dsi.fastutil.objects.ObjectArrayList;
class="kw">import java.util.Arrays;
class="kw">import java.util.Collection;
class="kw">import java.util.List;
class="kw">import java.util.Map;
class="kw">import java.util.Set;
class="kw">import java.util.UUID;
class="kw">import java.util.concurrent.ConcurrentHashMap;
class="kw">import java.util.stream.Collectors;
class="kw">import javax.annotation.Nonnull;
class="kw">import javax.annotation.Nullable;
class="kw">import org.checkerframework.checker.nullness.compatqual.NonNullDecl;
class="kw">public class="kw">final class PlayerWorldData class="kw">implements UserMapMarkersStore {
@Nonnull
class="kw">public class="kw">static class="kw">final BuilderCodec<PlayerWorldData> CODEC = BuilderCodec.builder(PlayerWorldData.class, PlayerWorldData::new)
.append(new KeyedCodec<>("LastPosition", Transform.CODEC), (var0, var1) -> var0.lastPosition = var1, var0 -> var0.lastPosition)
.documentation("The last known position of the player.")
.add()
.<SavedMovementStates>append(
new KeyedCodec<>("LastMovementStates", ProtocolCodecs.SAVED_MOVEMENT_STATES),
(var0, var1) -> var0.lastMovementStates = var1,
var0 -> var0.lastMovementStates
)
.documentation("The last known movement states of the player.")
.add()
.<Boolean>append(new KeyedCodec<>("FirstSpawn", Codec.BOOLEAN), (var0, var1) -> var0.firstSpawn = var1, var0 -> var0.firstSpawn)
.documentation("Whether this is the first spawn of the player.")
.add()
.<PlayerRespawnPointData[]>append(
new KeyedCodec<>("RespawnPoints", new ArrayCodec<>(PlayerRespawnPointData.CODEC, PlayerRespawnPointData[]::new)),
(var0, var1) -> var0.respawnPoints = var1,
var0 -> var0.respawnPoints
)
.documentation("The respawn points of the player.")
.add()
.<PlayerDeathPositionData[]>append(
new KeyedCodec<>("DeathPositions", new ArrayCodec<>(PlayerDeathPositionData.CODEC, PlayerDeathPositionData[]::new)),
(var0, var1) -> var0.deathPositions = ObjectArrayList.wrap(var1),
var0 -> var0.deathPositions.toArray(PlayerDeathPositionData[]::new)
)
.documentation("The death positions of the player in this world.")
.add()
.<UserMapMarker[]>append(
new KeyedCodec<>("UserMarkers", UserMapMarker.ARRAY_CODEC),
(var0, var1) -> var0.mapMarkersById = Arrays.stream(var1).collect(Collectors.toConcurrentMap(UserMapMarker::getId, var0x -> (UserMapMarker)var0x)),
var0 -> var0.getUserMapMarkers().toArray(new UserMapMarker[0])
)
.documentation("The stored map markers submitted by this player.")
.add()
.<String[]>append(new KeyedCodec<>("DiscoveredMarkers", new ArrayCodec<>(Codec.STRING, String[]::new)), (var0, var1) -> {
var0.revealedMarkers.clear();
if (var1 != null) {
for (String var5 : var1) {
if (var5 != null) {
var0.revealedMarkers.add(var5);
}
}
}
}, var0 -> var0.revealedMarkers.isEmpty() ? null : var0.revealedMarkers.toArray(String[]::new))
.documentation("The IDs of the discoverable map markers this player has revealed in this world.")
.add()
.build();
class="kw">private class="kw">static class="kw">final int DEATH_POSITIONS_COUNT_MAX = 5;
class="kw">private class="kw">transient PlayerConfigData playerConfigData;
class="kw">private Transform lastPosition;
class="kw">private SavedMovementStates lastMovementStates;
class="kw">private Map<String, UserMapMarker> mapMarkersById = new ConcurrentHashMap<>();
@Nonnull
class="kw">private class="kw">final Set<String> revealedMarkers = ConcurrentHashMap.newKeySet();
class="kw">private boolean firstSpawn = true;
@Nullable
class="kw">private PlayerRespawnPointData[] respawnPoints;
@Nonnull
class="kw">private List<PlayerDeathPositionData> deathPositions = new ObjectArrayList();
class="kw">private PlayerWorldData() {
}
PlayerWorldData(@Nonnull PlayerConfigData var1) {
this.playerConfigData = var1;
}
class="kw">public void setPlayerConfigData(@Nonnull PlayerConfigData var1) {
this.playerConfigData = var1;
}
class="kw">public Transform getLastPosition() {
class="kw">return this.lastPosition;
}
class="kw">public void setLastPosition(@Nonnull Transform var1) {
this.lastPosition = var1;
this.playerConfigData.markChanged();
}
class="kw">public SavedMovementStates getLastMovementStates() {
class="kw">return this.lastMovementStates;
}
class="kw">public void setLastMovementStates(@Nonnull MovementStates var1, boolean var2) {
this.setLastMovementStates_internal(var1);
if (var2) {
this.playerConfigData.markChanged();
}
}
class="kw">private void setLastMovementStates_internal(@Nonnull MovementStates var1) {
this.lastMovementStates = new SavedMovementStates(var1.flying);
}
@Nonnull
@Override
class="kw">public Collection<? class="kw">extends UserMapMarker> getUserMapMarkers() {
class="kw">return this.mapMarkersById.values();
}
@NonNullDecl
@Override
class="kw">public Collection<? class="kw">extends UserMapMarker> getUserMapMarkers(UUID var1) {
class="kw">return this.getUserMapMarkers();
}
@Override
class="kw">public void setUserMapMarkers(@Nullable Collection<? class="kw">extends UserMapMarker> var1) {
this.mapMarkersById = var1 == null
? new ConcurrentHashMap<>()
: var1.stream().collect(Collectors.toConcurrentMap(UserMapMarker::getId, var0 -> (UserMapMarker)var0));
this.playerConfigData.markChanged();
}
@Nullable
@Override
class="kw">public UserMapMarker getUserMapMarker(String var1) {
class="kw">return this.mapMarkersById.get(var1);
}
class="kw">public boolean isMarkerRevealed(@Nonnull String var1) {
class="kw">return this.revealedMarkers.contains(var1);
}
class="kw">public boolean revealMarker(@Nonnull String var1) {
if (!this.revealedMarkers.add(var1)) {
class="kw">return false;
}
this.playerConfigData.markChanged();
class="kw">return true;
}
class="kw">public boolean hideMarker(@Nonnull String var1) {
if (!this.revealedMarkers.remove(var1)) {
class="kw">return false;
}
this.playerConfigData.markChanged();
class="kw">return true;
}
class="kw">public int retainRevealedMarkers(@Nonnull Set<String> var1) {
int var2 = this.revealedMarkers.size();
this.revealedMarkers.retainAll(var1);
int var3 = var2 - this.revealedMarkers.size();
if (var3 > 0) {
this.playerConfigData.markChanged();
}
class="kw">return var3;
}
class="kw">public boolean hasRevealedMarkers() {
class="kw">return !this.revealedMarkers.isEmpty();
}
class="kw">public boolean isFirstSpawn() {
class="kw">return this.firstSpawn;
}
class="kw">public void setFirstSpawn(boolean var1) {
this.firstSpawn = var1;
}
@Nullable
class="kw">public PlayerRespawnPointData[] getRespawnPoints() {
class="kw">return this.respawnPoints;
}
class="kw">public void setRespawnPoints(@Nonnull PlayerRespawnPointData[] var1) {
this.respawnPoints = var1;
this.playerConfigData.markChanged();
}
@Nonnull
class="kw">public List<PlayerDeathPositionData> getDeathPositions() {
class="kw">return this.deathPositions;
}
class="kw">public void addLastDeath(@Nonnull String var1, @Nonnull Transform var2, int var3) {
this.deathPositions.add(new PlayerDeathPositionData(var1, var2, var3));
while (this.deathPositions.size() > 5) {
this.deathPositions.removeFirst();
}
this.playerConfigData.markChanged();
}
class="kw">public boolean removeLastDeath(@Nonnull String var1) {
boolean var2 = this.deathPositions.removeIf(var1x -> var1x.getMarkerId().equalsIgnoreCase(var1));
if (var2) {
this.playerConfigData.markChanged();
}
class="kw">return var2;
}
}