IWorldChunks interface
Пакет: com.hypixel.hytale.server.core.universe.world
Файл: com/hypixel/hytale/server/core/universe/world/IWorldChunks.java
extends: IChunkAccessorSync, IWorldChunksAsync
Поля (4)
| Модификаторы | Тип | Имя |
|---|---|---|
|
WorldChunk |
var3 |
|
WorldChunk |
var3 |
|
CompletableFuture |
var4 |
|
CompletableFuture |
var4 |
Методы (5)
| Модификаторы | Возврат | Сигнатура |
|---|---|---|
abstract |
|
for for(; !var1.isDone() |
|
|
if if(var3 != null) |
|
|
if if(var3 != null) |
abstract |
boolean |
isInThreadboolean isInThread() |
default |
<T> T |
waitForFutureWithoutLock<T> T waitForFutureWithoutLock(@Nonnull CompletableFuture<T> var1) |
Исходный код
Показать/скрыть
class="kw">package com.hypixel.hytale.server.core.universe.world;
class="kw">import com.hypixel.hytale.assetstore.AssetRegistry;
class="kw">import com.hypixel.hytale.server.core.universe.world.accessor.IChunkAccessorSync;
class="kw">import com.hypixel.hytale.server.core.universe.world.chunk.WorldChunk;
class="kw">import java.util.concurrent.CompletableFuture;
class="kw">import javax.annotation.Nonnull;
@Deprecated
class="kw">public class="kw">interface IWorldChunks class="kw">extends IChunkAccessorSync, IWorldChunksAsync {
@Deprecated
void consumeTaskQueue();
boolean isInThread();
@Override
class="kw">default WorldChunk getChunk(long var1) {
WorldChunk var3 = this.loadChunkIfInMemory(var1);
if (var3 != null) {
class="kw">return var3;
}
CompletableFuture var4 = this.getChunkAsync(var1);
class="kw">return this.waitForFutureWithoutLock(var4);
}
@Override
class="kw">default WorldChunk getNonTickingChunk(long var1) {
WorldChunk var3 = this.getChunkIfInMemory(var1);
if (var3 != null) {
class="kw">return var3;
}
CompletableFuture var4 = this.getNonTickingChunkAsync(var1);
class="kw">return this.waitForFutureWithoutLock(var4);
}
class="kw">default <T> T waitForFutureWithoutLock(@Nonnull CompletableFuture<T> var1) {
if (!this.isInThread()) {
class="kw">return var1.join();
}
AssetRegistry.ASSET_LOCK.readLock().unlock();
for (; !var1.isDone(); Thread.yield()) {
AssetRegistry.ASSET_LOCK.readLock().lock();
try {
this.consumeTaskQueue();
} class="kw">finally {
AssetRegistry.ASSET_LOCK.readLock().unlock();
}
}
AssetRegistry.ASSET_LOCK.readLock().lock();
class="kw">return var1.join();
}
}