GeneratedBlockChunk class
Пакет: com.hypixel.hytale.server.core.universe.world.worldgen
Файл: com/hypixel/hytale/server/core/universe/world/worldgen/GeneratedBlockChunk.java
Поля (19)
| Модификаторы | Тип | Имя |
|---|---|---|
final |
HytaleLogger |
LOGGER |
|
|
break |
|
|
break |
|
|
return |
|
ShortBytePalette |
var1 |
|
int |
var2 |
|
int |
var2 |
|
GeneratedChunkSection |
var3 |
|
GeneratedChunkSection |
var3 |
|
int |
var4 |
|
GeneratedChunkSection |
var4 |
|
GeneratedChunkSection |
var4 |
|
ShortBytePalette |
var4 |
|
int |
var5 |
|
|
var5 |
|
BlockType |
var6 |
|
GeneratedChunkSection |
var7 |
|
|
var7 |
|
int |
var8 |
Методы (29)
| Модификаторы | Возврат | Сигнатура |
|---|---|---|
abstract |
return new |
BlockChunkreturn new BlockChunk(this.x, this.z, var4, this.tint, this.environments) |
|
|
for for(int var2 = 0; var2 < 32; var2++) |
|
|
for for(int var3 = 0; var3 < 32; var3++) |
|
|
for for(int var2 = 0; var2 < this.chunkSections.length; var2++) |
public |
int |
getBlockint getBlock(int var1, int var2, int var3) |
public |
int |
getEnvironmentint getEnvironment(int var1, int var2, int var3) |
public |
int |
getHeightint getHeight(int var1, int var2) |
public |
long |
getIndexlong getIndex() |
public |
int |
getRotationIndexint getRotationIndex(int var1, int var2, int var3) |
public |
int |
getTintint getTint(int var1, int var2) |
public |
int |
getXint getX() |
public |
int |
getZint getZ() |
|
|
if if(var3 == null) |
|
|
if if(var5 == 0) |
|
|
if if(var2 >= 0 && var2 < 320) |
|
|
if if(var2 >= 0 && var2 < 320) |
|
|
if if(var2 >= 0 && var2 < 320) |
|
|
if if(var7 == null) |
|
|
if if(var4 == 0) |
|
|
if if(var2 >= 0 && var2 < this.chunkSections.length) |
|
|
if if(var3 != null) |
public |
void |
removeSectionvoid removeSection(int var1) |
public |
void |
setBlockvoid setBlock(int var1, int var2, int var3, int var4, int var5, int var6) |
public |
void |
setCoordinatesvoid setCoordinates(long var1, int var3, int var4) |
public |
void |
setEnvironmentvoid setEnvironment(int var1, int var2, int var3, int var4) |
public |
void |
setEnvironmentColumnvoid setEnvironmentColumn(int var1, int var2, int var3) |
public |
void |
setTintvoid setTint(int var1, int var2, int var3) |
abstract |
|
this this(0L, 0, 0) |
|
|
while while(--var5 > 0) |
Исходный код
Показать/скрыть
class="kw">package com.hypixel.hytale.server.core.universe.world.worldgen;
class="kw">import com.hypixel.hytale.component.Holder;
class="kw">import com.hypixel.hytale.logger.HytaleLogger;
class="kw">import com.hypixel.hytale.math.util.ChunkUtil;
class="kw">import com.hypixel.hytale.protocol.Opacity;
class="kw">import com.hypixel.hytale.server.core.asset.type.blocktype.config.BlockType;
class="kw">import com.hypixel.hytale.server.core.universe.world.chunk.BlockChunk;
class="kw">import com.hypixel.hytale.server.core.universe.world.chunk.environment.EnvironmentChunk;
class="kw">import com.hypixel.hytale.server.core.universe.world.chunk.palette.IntBytePalette;
class="kw">import com.hypixel.hytale.server.core.universe.world.chunk.palette.ShortBytePalette;
class="kw">import com.hypixel.hytale.server.core.universe.world.chunk.section.BlockSection;
class="kw">import com.hypixel.hytale.server.core.universe.world.storage.ChunkStore;
class="kw">import java.util.logging.Level;
class="kw">import javax.annotation.Nonnull;
class="kw">import javax.annotation.Nullable;
class="kw">public class GeneratedBlockChunk {
class="kw">private class="kw">static class="kw">final HytaleLogger LOGGER = HytaleLogger.forEnclosingClass();
class="kw">protected long index;
class="kw">protected int x;
class="kw">protected int z;
class="kw">protected class="kw">final IntBytePalette tint;
class="kw">protected class="kw">final EnvironmentChunk environments;
class="kw">protected class="kw">final GeneratedChunkSection[] chunkSections;
class="kw">public GeneratedBlockChunk() {
this(0L, 0, 0);
}
class="kw">public GeneratedBlockChunk(long var1, int var3, int var4) {
this(var1, var3, var4, new IntBytePalette(), new EnvironmentChunk(), new GeneratedChunkSection[10]);
}
class="kw">public GeneratedBlockChunk(long var1, int var3, int var4, IntBytePalette var5, EnvironmentChunk var6, GeneratedChunkSection[] var7) {
this.index = var1;
this.x = var3;
this.z = var4;
this.tint = var5;
this.environments = var6;
this.chunkSections = var7;
}
class="kw">public long getIndex() {
class="kw">return this.index;
}
class="kw">public int getX() {
class="kw">return this.x;
}
class="kw">public int getZ() {
class="kw">return this.z;
}
class="kw">public void setCoordinates(long var1, int var3, int var4) {
this.index = var1;
this.x = var3;
this.z = var4;
}
class="kw">public int getHeight(int var1, int var2) {
int var5 = 320;
while (--var5 > 0) {
GeneratedChunkSection var3 = this.getSection(var5);
if (var3 == null) {
var5 = ChunkUtil.indexSection(var5) * 32;
if (var5 == 0) {
break;
}
} else {
int var4 = var3.getBlock(var1, var5, var2);
BlockType var6 = BlockType.getAssetMap().getAsset(var4);
if (var4 != 0 && var6 != null && var6.getOpacity() != Opacity.Transparent) {
break;
}
}
}
class="kw">return var5;
}
@Nonnull
class="kw">public ShortBytePalette generateHeight() {
ShortBytePalette var1 = new ShortBytePalette();
for (int var2 = 0; var2 < 32; var2++) {
for (int var3 = 0; var3 < 32; var3++) {
var1.set(var2, var3, (short)this.getHeight(var2, var3));
}
}
class="kw">return var1;
}
@Nonnull
class="kw">public EnvironmentChunk getEnvironmentChunk() {
class="kw">return this.environments;
}
@Nullable
class="kw">public GeneratedChunkSection getSection(int var1) {
int var2 = ChunkUtil.indexSection(var1);
class="kw">return var2 >= 0 && var2 < this.chunkSections.length ? this.chunkSections[var2] : null;
}
class="kw">public int getTint(int var1, int var2) {
class="kw">return this.tint.get(var1, var2);
}
class="kw">public void setTint(int var1, int var2, int var3) {
this.tint.set(var1, var2, var3);
}
class="kw">public void setEnvironment(int var1, int var2, int var3, int var4) {
this.environments.set(var1, var2, var3, var4);
}
class="kw">public void setEnvironmentColumn(int var1, int var2, int var3) {
this.environments.setColumn(var1, var2, var3);
}
class="kw">public int getEnvironment(int var1, int var2, int var3) {
class="kw">return this.environments.get(var1, var2, var3);
}
class="kw">public int getRotationIndex(int var1, int var2, int var3) {
if (var2 >= 0 && var2 < 320) {
GeneratedChunkSection var4 = this.getSection(var2);
class="kw">return var4 == null ? 0 : var4.getRotationIndex(var1, var2, var3);
} else {
class="kw">return 0;
}
}
class="kw">public int getBlock(int var1, int var2, int var3) {
if (var2 >= 0 && var2 < 320) {
GeneratedChunkSection var4 = this.getSection(var2);
class="kw">return var4 == null ? 0 : var4.getBlock(var1, var2, var3);
} else {
class="kw">return 0;
}
}
class="kw">public void setBlock(int var1, int var2, int var3, int var4, int var5, int var6) {
if (var2 >= 0 && var2 < 320) {
GeneratedChunkSection var7 = this.getSection(var2);
int var8 = ChunkUtil.indexSection(var2);
if (var7 == null) {
if (var4 == 0) {
class="kw">return;
}
var7 = this.initialize(var8);
}
var7.setBlock(var1, var2, var3, var4, var5, var6);
} else {
((HytaleLogger.Api)LOGGER.at(Level.INFO).withCause(new Exception()))
.log("Failed to set block %d, %d, %d to %d because it is outside the world bounds", var1, var2, var3, var4);
}
}
@Nonnull
class="kw">private GeneratedChunkSection initialize(int var1) {
class="kw">return this.chunkSections[var1] = new GeneratedChunkSection();
}
class="kw">public void removeSection(int var1) {
int var2 = ChunkUtil.indexSection(var1);
if (var2 >= 0 && var2 < this.chunkSections.length) {
this.chunkSections[var2] = null;
}
}
@Nonnull
class="kw">public BlockChunk toBlockChunk(Holder<ChunkStore>[] var1) {
for (int var2 = 0; var2 < this.chunkSections.length; var2++) {
GeneratedChunkSection var3 = this.chunkSections[var2];
if (var3 != null) {
var1[var2].putComponent(BlockSection.getComponentType(), var3.toChunkSection());
}
}
ShortBytePalette var4 = this.generateHeight();
this.environments.trim();
class="kw">return new BlockChunk(this.x, this.z, var4, this.tint, this.environments);
}
}