java.lang.Object
com.hypixel.hytale.server.core.modules.entity.player.ChunkTracker
All Implemented Interfaces:
Component<EntityStore>, Cloneable

public class ChunkTracker extends Object implements Component<EntityStore>
  • Field Details

    • METRICS_REGISTRY

      public static final MetricsRegistry<ChunkTracker> METRICS_REGISTRY
    • MAX_CHUNKS_PER_SECOND_LOCAL

      public static final int MAX_CHUNKS_PER_SECOND_LOCAL
      See Also:
    • MAX_CHUNKS_PER_SECOND_LAN

      public static final int MAX_CHUNKS_PER_SECOND_LAN
      See Also:
    • MAX_CHUNKS_PER_SECOND

      public static final int MAX_CHUNKS_PER_SECOND
      See Also:
    • MAX_CHUNKS_PER_TICK

      public static final int MAX_CHUNKS_PER_TICK
      See Also:
    • MIN_LOADED_CHUNKS_RADIUS

      public static final int MIN_LOADED_CHUNKS_RADIUS
      See Also:
    • MAX_HOT_LOADED_CHUNKS_RADIUS

      public static final int MAX_HOT_LOADED_CHUNKS_RADIUS
      See Also:
    • MAX_FAILURE_BACKOFF_NANOS

      public static final long MAX_FAILURE_BACKOFF_NANOS
    • transformComponent

      @Nullable private TransformComponent transformComponent
    • chunkViewRadius

      private int chunkViewRadius
    • spiralIterator

      private final CircleSpiralIterator spiralIterator
    • loadedLock

      private final StampedLock loadedLock
    • loading

      private final HLongSet loading
    • loaded

      private final HLongSet loaded
    • reload

      private final HLongSet reload
    • maxChunksPerSecond

      private int maxChunksPerSecond
    • inverseMaxChunksPerSecond

      private float inverseMaxChunksPerSecond
    • maxChunksPerTick

      private int maxChunksPerTick
    • minLoadedChunksRadius

      private int minLoadedChunksRadius
    • maxHotLoadedChunksRadius

      private int maxHotLoadedChunksRadius
    • accumulator

      private float accumulator
    • sentViewRadius

      private int sentViewRadius
    • hotRadius

      private int hotRadius
    • lastChunkX

      private int lastChunkX
    • lastChunkZ

      private int lastChunkZ
    • readyForChunks

      private boolean readyForChunks
  • Constructor Details

    • ChunkTracker

      public ChunkTracker()
    • ChunkTracker

      private ChunkTracker(@Nonnull ChunkTracker other)
  • Method Details

    • getComponentType

      public static ComponentType<EntityStore,ChunkTracker> getComponentType()
    • unloadAll

      public void unloadAll(@Nonnull PlayerRef playerRefComponent)
    • clear

      public void clear()
    • tick

      public void tick(@Nonnull Ref<EntityStore> playerRef, float dt, @Nonnull CommandBuffer<EntityStore> commandBuffer)
    • isLoaded

      public boolean isLoaded(long indexChunk)
    • removeForReload

      public void removeForReload(long indexChunk)
    • shouldBeVisible

      public boolean shouldBeVisible(long chunkCoordinates)
    • getChunkVisibility

      public ChunkTracker.ChunkVisibility getChunkVisibility(long indexChunk)
    • getMaxChunksPerSecond

      public int getMaxChunksPerSecond()
    • setMaxChunksPerSecond

      public void setMaxChunksPerSecond(int maxChunksPerSecond)
    • setDefaultMaxChunksPerSecond

      public void setDefaultMaxChunksPerSecond(@Nonnull PlayerRef playerRef)
    • getMaxChunksPerTick

      public int getMaxChunksPerTick()
    • setMaxChunksPerTick

      public void setMaxChunksPerTick(int maxChunksPerTick)
    • getMinLoadedChunksRadius

      public int getMinLoadedChunksRadius()
    • setMinLoadedChunksRadius

      public void setMinLoadedChunksRadius(int minLoadedChunksRadius)
    • getMaxHotLoadedChunksRadius

      public int getMaxHotLoadedChunksRadius()
    • setMaxHotLoadedChunksRadius

      public void setMaxHotLoadedChunksRadius(int maxHotLoadedChunksRadius)
    • getLoadedChunksCount

      public int getLoadedChunksCount()
    • getLoadingChunksCount

      public int getLoadingChunksCount()
    • getLoadedChunksGrid

      @Nonnull private String getLoadedChunksGrid()
    • getLoadedChunksMessage

      @Nonnull public Message getLoadedChunksMessage()
    • getLoadedChunksDebug

      @Nonnull public String getLoadedChunksDebug()
    • setReadyForChunks

      public void setReadyForChunks(boolean readyForChunks)
    • isReadyForChunks

      public boolean isReadyForChunks()
    • copyFrom

      public void copyFrom(@Nonnull ChunkTracker chunkTracker)
    • clone

      @Nonnull public Component<EntityStore> clone()
      Specified by:
      clone in interface Component<EntityStore>
      Overrides:
      clone in class Object
    • shouldBeVisible

      private static boolean shouldBeVisible(int chunkViewRadiusSquared, int chunkX, int chunkZ, int x, int z)
    • tryUnloadChunk

      public static boolean tryUnloadChunk(long chunkIndex, int chunkViewRadiusSquared, int chunkX, int chunkZ, @Nonnull PlayerRef playerRef, @Nonnull it.unimi.dsi.fastutil.longs.LongSet loading)
    • tryLoadChunkAsync

      public void tryLoadChunkAsync(@Nonnull ChunkStore chunkStore, @Nonnull PlayerRef playerRefComponent, long chunkIndex, @Nonnull TransformComponent transformComponent, @Nonnull ComponentAccessor<EntityStore> componentAccessor)
    • _loadChunkAsync

      @Nonnull private CompletableFuture<Void> _loadChunkAsync(long chunkIndex, @Nonnull PlayerRef playerRefComponent, @Nonnull Ref<ChunkStore> chunkRef, @Nonnull ChunkStore chunkStore)