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."));
}
}
}