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