LocalCachedChunkAccessor class
Пакет: com.hypixel.hytale.server.core.universe.world.accessor
Файл: com/hypixel/hytale/server/core/universe/world/accessor/LocalCachedChunkAccessor.java
implements: OverridableChunkAccessor
Поля (43)
| Модификаторы | Тип | Имя |
|---|---|---|
final |
ChunkAccessor |
delegate |
|
int |
var2 |
|
LocalCachedChunkAccessor |
var3 |
|
int |
var3 |
|
int |
var3 |
|
int |
var3 |
|
int |
var3 |
|
int |
var3 |
|
int |
var3 |
|
int |
var3 |
|
int |
var3 |
|
int |
var3 |
|
int |
var3 |
|
int |
var4 |
|
WorldChunk |
var4 |
|
int |
var4 |
|
int |
var4 |
|
int |
var4 |
|
int |
var4 |
|
int |
var4 |
|
int |
var4 |
|
int |
var4 |
|
int |
var4 |
|
int |
var4 |
|
int |
var5 |
|
int |
var5 |
|
int |
var5 |
|
int |
var5 |
|
int |
var5 |
|
int |
var5 |
|
int |
var5 |
|
int |
var5 |
|
WorldChunk |
var6 |
|
WorldChunk |
var6 |
|
WorldChunk |
var6 |
|
WorldChunk |
var6 |
|
|
var6 |
|
WorldChunk |
var6 |
|
|
var6 |
|
WorldChunk |
var6 |
|
|
var6 |
|
WorldChunk |
var6 |
|
WorldChunk |
var6 |
Методы (23)
| Модификаторы | Возврат | Сигнатура |
|---|---|---|
public |
void |
cacheChunksInRadiusvoid cacheChunksInRadius() |
|
|
for for(int var1 = 0; var1 < this.length; var1++) |
|
|
for for(int var2 = 0; var2 < this.length; var2++) |
public |
int |
getCenterXint getCenterX() |
public |
int |
getCenterZint getCenterZ() |
public |
ChunkAccessor |
getDelegateChunkAccessor getDelegate() |
public |
int |
getLengthint getLength() |
public |
int |
getMinXint getMinX() |
public |
int |
getMinZint getMinZ() |
|
|
if if(var4 == null) |
|
|
if if(var2 >= 0 && var2 < this.length && var3 >= 0 && var3 < this.length) |
|
|
if if(var3 >= 0 && var3 < this.length && var4 >= 0 && var4 < this.length) |
|
|
if if(var3 >= 0 && var3 < this.length && var4 >= 0 && var4 < this.length) |
|
|
if if(var3 >= 0 && var3 < this.length && var4 >= 0 && var4 < this.length) |
|
|
if if(var6 != null) |
|
|
if if(var3 >= 0 && var3 < this.length && var4 >= 0 && var4 < this.length) |
|
|
if if(var6 == null) |
|
|
if if(var3 >= 0 && var3 < this.length && var4 >= 0 && var4 < this.length) |
|
|
if if(var6 == null) |
|
|
if if(var3 >= 0 && var3 < this.length && var4 >= 0 && var4 < this.length) |
|
|
if if(var6 == null) |
|
|
if if(var3 >= 0 && var3 < this.length && var4 >= 0 && var4 < this.length) |
|
|
if if(var3 >= 0 && var3 < this.length && var4 >= 0 && var4 < this.length) |
Исходный код
Показать/скрыть
class="kw">package com.hypixel.hytale.server.core.universe.world.accessor;
class="kw">import com.hypixel.hytale.math.util.ChunkUtil;
class="kw">import com.hypixel.hytale.server.core.universe.world.chunk.ChunkFlag;
class="kw">import com.hypixel.hytale.server.core.universe.world.chunk.WorldChunk;
class="kw">import javax.annotation.Nonnull;
class="kw">import javax.annotation.Nullable;
@Deprecated(forRemoval = true)
class="kw">public class LocalCachedChunkAccessor class="kw">implements OverridableChunkAccessor {
class="kw">private class="kw">final ChunkAccessor delegate;
class="kw">private class="kw">final int minX;
class="kw">private class="kw">final int minZ;
class="kw">private class="kw">final int length;
@Nonnull
class="kw">private class="kw">final WorldChunk[] chunks;
@Nonnull
class="kw">public class="kw">static LocalCachedChunkAccessor atWorldCoords(ChunkAccessor var0, int var1, int var2, int var3) {
int var4 = ChunkUtil.chunkCoordinate(var3) + 1;
class="kw">return atChunkCoords(var0, ChunkUtil.chunkCoordinate(var1), ChunkUtil.chunkCoordinate(var2), var4);
}
@Nonnull
class="kw">public class="kw">static LocalCachedChunkAccessor atChunkCoords(ChunkAccessor var0, int var1, int var2, int var3) {
class="kw">return new LocalCachedChunkAccessor(var0, var1, var2, var3);
}
@Nonnull
class="kw">public class="kw">static LocalCachedChunkAccessor atChunk(ChunkAccessor var0, @Nonnull WorldChunk var1, int var2) {
LocalCachedChunkAccessor var3 = new LocalCachedChunkAccessor(var0, var1.getX(), var1.getZ(), var2);
var3.overwrite(var1);
class="kw">return var3;
}
class="kw">protected LocalCachedChunkAccessor(ChunkAccessor var1, int var2, int var3, int var4) {
this.delegate = var1;
this.minX = var2 - var4;
this.minZ = var3 - var4;
this.length = var4 * 2 + 1;
this.chunks = new WorldChunk[this.length * this.length];
}
class="kw">public ChunkAccessor getDelegate() {
class="kw">return this.delegate;
}
class="kw">public int getMinX() {
class="kw">return this.minX;
}
class="kw">public int getMinZ() {
class="kw">return this.minZ;
}
class="kw">public int getLength() {
class="kw">return this.length;
}
class="kw">public int getCenterX() {
class="kw">return this.minX + this.length / 2;
}
class="kw">public int getCenterZ() {
class="kw">return this.minZ + this.length / 2;
}
class="kw">public void cacheChunksInRadius() {
for (int var1 = 0; var1 < this.length; var1++) {
for (int var2 = 0; var2 < this.length; var2++) {
int var3 = var1 * this.length + var2;
WorldChunk var4 = this.chunks[var3];
if (var4 == null) {
this.chunks[var3] = this.delegate.getChunkIfInMemory(ChunkUtil.indexChunk(this.minX + var1, this.minZ + var2));
}
}
}
}
@Override
class="kw">public void overwrite(@Nonnull WorldChunk var1) {
int var2 = var1.getX();
int var3 = var1.getZ();
var2 -= this.minX;
var3 -= this.minZ;
if (var2 >= 0 && var2 < this.length && var3 >= 0 && var3 < this.length) {
int var4 = var2 * this.length + var3;
this.chunks[var4] = var1;
}
}
@Override
class="kw">public WorldChunk getChunkIfInMemory(long var1) {
int var3 = ChunkUtil.xOfChunkIndex(var1);
int var4 = ChunkUtil.zOfChunkIndex(var1);
var3 -= this.minX;
var4 -= this.minZ;
if (var3 >= 0 && var3 < this.length && var4 >= 0 && var4 < this.length) {
int var5 = var3 * this.length + var4;
WorldChunk var6 = this.chunks[var5];
class="kw">return var6 != null ? var6 : (this.chunks[var5] = this.delegate.getChunkIfInMemory(var1));
} else {
class="kw">return this.delegate.getChunkIfInMemory(var1);
}
}
@Nullable
class="kw">public WorldChunk getChunkIfInMemory(int var1, int var2) {
int var3 = var1 - this.minX;
int var4 = var2 - this.minZ;
if (var3 >= 0 && var3 < this.length && var4 >= 0 && var4 < this.length) {
int var5 = var3 * this.length + var4;
WorldChunk var6 = this.chunks[var5];
class="kw">return var6 != null ? var6 : (this.chunks[var5] = this.delegate.getChunkIfInMemory(ChunkUtil.indexChunk(var1, var2)));
} else {
class="kw">return this.delegate.getChunkIfInMemory(ChunkUtil.indexChunk(var1, var2));
}
}
@Override
class="kw">public WorldChunk loadChunkIfInMemory(long var1) {
int var3 = ChunkUtil.xOfChunkIndex(var1);
int var4 = ChunkUtil.zOfChunkIndex(var1);
var3 -= this.minX;
var4 -= this.minZ;
if (var3 >= 0 && var3 < this.length && var4 >= 0 && var4 < this.length) {
int var5 = var3 * this.length + var4;
WorldChunk var6 = this.chunks[var5];
if (var6 != null) {
var6.setFlag(ChunkFlag.TICKING, true);
class="kw">return var6;
} else {
class="kw">return this.chunks[var5] = this.delegate.loadChunkIfInMemory(var1);
}
} else {
class="kw">return this.delegate.loadChunkIfInMemory(var1);
}
}
@Nullable
@Override
class="kw">public WorldChunk getChunkIfLoaded(long var1) {
int var3 = ChunkUtil.xOfChunkIndex(var1);
int var4 = ChunkUtil.zOfChunkIndex(var1);
var3 -= this.minX;
var4 -= this.minZ;
if (var3 >= 0 && var3 < this.length && var4 >= 0 && var4 < this.length) {
int var5 = var3 * this.length + var4;
WorldChunk var6 = this.chunks[var5];
if (var6 == null) {
var6 = this.chunks[var5] = this.delegate.getChunkIfInMemory(var1);
}
class="kw">return var6 != null && var6.is(ChunkFlag.TICKING) ? var6 : null;
} else {
class="kw">return this.delegate.getChunkIfLoaded(var1);
}
}
@Nullable
class="kw">public WorldChunk getChunkIfLoaded(int var1, int var2) {
int var3 = var1 - this.minX;
int var4 = var2 - this.minZ;
if (var3 >= 0 && var3 < this.length && var4 >= 0 && var4 < this.length) {
int var5 = var3 * this.length + var4;
WorldChunk var6 = this.chunks[var5];
if (var6 == null) {
var6 = this.chunks[var5] = this.delegate.getChunkIfInMemory(ChunkUtil.indexChunk(var1, var2));
}
class="kw">return var6 != null && var6.is(ChunkFlag.TICKING) ? var6 : null;
} else {
class="kw">return this.delegate.getChunkIfLoaded(ChunkUtil.indexChunk(var1, var2));
}
}
@Nullable
@Override
class="kw">public WorldChunk getChunkIfNonTicking(long var1) {
int var3 = ChunkUtil.xOfChunkIndex(var1);
int var4 = ChunkUtil.zOfChunkIndex(var1);
var3 -= this.minX;
var4 -= this.minZ;
if (var3 >= 0 && var3 < this.length && var4 >= 0 && var4 < this.length) {
int var5 = var3 * this.length + var4;
WorldChunk var6 = this.chunks[var5];
if (var6 == null) {
var6 = this.chunks[var5] = this.delegate.getChunkIfInMemory(var1);
}
class="kw">return var6 != null && var6.is(ChunkFlag.TICKING) ? null : var6;
} else {
class="kw">return this.delegate.getChunkIfNonTicking(var1);
}
}
@Override
class="kw">public WorldChunk getChunk(long var1) {
int var3 = ChunkUtil.xOfChunkIndex(var1);
int var4 = ChunkUtil.zOfChunkIndex(var1);
var3 -= this.minX;
var4 -= this.minZ;
if (var3 >= 0 && var3 < this.length && var4 >= 0 && var4 < this.length) {
int var5 = var3 * this.length + var4;
WorldChunk var6 = this.chunks[var5];
class="kw">return var6 != null ? var6 : (this.chunks[var5] = this.delegate.getChunk(var1));
} else {
class="kw">return this.delegate.getChunk(var1);
}
}
@Override
class="kw">public WorldChunk getNonTickingChunk(long var1) {
int var3 = ChunkUtil.xOfChunkIndex(var1);
int var4 = ChunkUtil.zOfChunkIndex(var1);
var3 -= this.minX;
var4 -= this.minZ;
if (var3 >= 0 && var3 < this.length && var4 >= 0 && var4 < this.length) {
int var5 = var3 * this.length + var4;
WorldChunk var6 = this.chunks[var5];
class="kw">return var6 != null ? var6 : (this.chunks[var5] = this.delegate.getNonTickingChunk(var1));
} else {
class="kw">return this.delegate.getNonTickingChunk(var1);
}
}
}