Viewport class

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

Файл: com/hypixel/hytale/builtin/hytalegenerator/Viewport.java

Поля (13)

МодификаторыТипИмя
World var1
World var1
CompletableFuture[] var2
int var3
int var3
int var4
LongIterator var4
int var5
long var5
int var6
ChunkStore var7
CompletableFuture var8
long var9

Методы (7)

МодификаторыВозвратСигнатура
for for(int var7 = var3; var7 <= var5; var7++)
for for(int var8 = var4; var8 <= var6; var8++)
if if(var1 != null)
if if(var1 != null)
if if(var1x == null)
public void refreshvoid refresh()
public void submitRefreshvoid submitRefresh()

Исходный код

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

class="kw">import com.hypixel.hytale.builtin.hytalegenerator.bounds.Bounds3i;
class="kw">import com.hypixel.hytale.math.util.ChunkUtil;
class="kw">import com.hypixel.hytale.server.core.universe.world.World;
class="kw">import com.hypixel.hytale.server.core.universe.world.storage.ChunkStore;
class="kw">import it.unimi.dsi.fastutil.longs.LongArraySet;
class="kw">import it.unimi.dsi.fastutil.longs.LongIterator;
class="kw">import it.unimi.dsi.fastutil.longs.LongSet;
class="kw">import java.lang.ref.WeakReference;
class="kw">import java.util.concurrent.CompletableFuture;
class="kw">import javax.annotation.Nonnull;

class="kw">public class Viewport {
   @Nonnull
   class="kw">private class="kw">final WeakReference<World> world;
   @Nonnull
   class="kw">private class="kw">final LongSet affectedChunkIndices;

   class="kw">public Viewport(@Nonnull Bounds3i var1, @Nonnull World var2) {
      this.world = new WeakReference<>(var2);
      int var3 = ChunkUtil.chunkCoordinate(var1.min.x);
      int var4 = ChunkUtil.chunkCoordinate(var1.min.z);
      int var5 = ChunkUtil.chunkCoordinate(var1.max.x);
      int var6 = ChunkUtil.chunkCoordinate(var1.max.z);
      this.affectedChunkIndices = new LongArraySet();

      for (int var7 = var3; var7 <= var5; var7++) {
         for (int var8 = var4; var8 <= var6; var8++) {
            long var9 = ChunkUtil.indexChunk(var7, var8);
            this.affectedChunkIndices.add(var9);
         }
      }
   }

   class="kw">public void submitRefresh() {
      World var1 = this.world.get();
      if (var1 != null) {
         var1.execute(this::refresh);
      }
   }

   class="kw">public void refresh() {
      World var1 = this.world.get();
      if (var1 != null) {
         LoggerUtil.getLogger().info("Refreshing viewport...");
         CompletableFuture[] var2 = new CompletableFuture[this.affectedChunkIndices.size()];
         int var3 = 0;
         LongIterator var4 = this.affectedChunkIndices.iterator();

         while (var4.hasNext()) {
            long var5 = (Long)var4.next();
            ChunkStore var7 = var1.getChunkStore();
            CompletableFuture var8 = var7.getChunkReferenceAsync(var5, 9);
            var2[var3++] = var8;
         }

         CompletableFuture.allOf(var2).handle((var0, var1x) -> {
            if (var1x == null) {
               class="kw">return null;
            }

            LoggerUtil.logException("viewport refresh", var1x);
            class="kw">return null;
         }).thenRun(() -> LoggerUtil.getLogger().info("Viewport refresh complete."));
      }
   }
}