GeneratedChunkSection class
Пакет: com.hypixel.hytale.server.core.universe.world.worldgen
Файл: com/hypixel/hytale/server/core/universe/world/worldgen/GeneratedChunkSection.java
Поля (6)
| Модификаторы | Тип | Имя |
|---|---|---|
|
int |
var1 |
|
int |
var2 |
|
int |
var3 |
|
short |
var4 |
|
AbstractSectionPalette.SetResult |
var5 |
|
|
var5 |
Методы (15)
| Модификаторы | Возврат | Сигнатура |
|---|---|---|
|
|
for for(int var1 = 0; var1 < this.data.length; var1++) |
public |
int |
getBlockint getBlock(int var1, int var2, int var3) |
private |
int |
getBlockint getBlock(int var1) |
public |
int[] |
getDataint[] getData() |
public |
int |
getFillerint getFiller(int var1, int var2, int var3) |
public |
int |
getRotationIndexint getRotationIndex(int var1, int var2, int var3) |
private |
int |
getRotationIndexint getRotationIndex(int var1) |
|
|
if if(var5 == AbstractSectionPalette.SetResult.REQUIRES_PROMOTE) |
|
|
if if(var5 == AbstractSectionPalette.SetResult.REQUIRES_PROMOTE) |
|
|
if if(this.data[var1] != 0) |
public |
boolean |
isSolidAirboolean isSolidAir() |
public |
void |
resetvoid reset() |
public |
void |
setBlockvoid setBlock(int var1, int var2, int var3, int var4, int var5, int var6) |
public |
void |
setBlockvoid setBlock(int var1, int var2, int var3, int var4) |
|
|
while while(var1 < this.data.length) |
Исходный код
Показать/скрыть
class="kw">package com.hypixel.hytale.server.core.universe.world.worldgen;
class="kw">import com.hypixel.hytale.math.util.ChunkUtil;
class="kw">import com.hypixel.hytale.math.util.NumberUtil;
class="kw">import com.hypixel.hytale.server.core.universe.world.chunk.section.BlockSection;
class="kw">import com.hypixel.hytale.server.core.universe.world.chunk.section.palette.AbstractSectionPalette;
class="kw">import com.hypixel.hytale.server.core.universe.world.chunk.section.palette.EmptySectionPalette;
class="kw">import it.unimi.dsi.fastutil.ints.Int2ShortOpenHashMap;
class="kw">import java.util.Arrays;
class="kw">import javax.annotation.Nonnull;
class="kw">public class GeneratedChunkSection {
@Nonnull
class="kw">private class="kw">final int[] data;
@Nonnull
class="kw">private class="kw">final class="kw">transient Int2ShortOpenHashMap tempIdCounts = new Int2ShortOpenHashMap();
class="kw">private AbstractSectionPalette fillers;
class="kw">private AbstractSectionPalette rotations;
class="kw">public GeneratedChunkSection() {
this.data = new int[32768];
this.fillers = EmptySectionPalette.INSTANCE;
this.rotations = EmptySectionPalette.INSTANCE;
}
class="kw">public int getRotationIndex(int var1, int var2, int var3) {
class="kw">return this.getRotationIndex(ChunkUtil.indexBlock(var1, var2, var3));
}
class="kw">private int getRotationIndex(int var1) {
class="kw">return this.rotations.get(var1);
}
class="kw">public int getBlock(int var1, int var2, int var3) {
class="kw">return this.getBlock(ChunkUtil.indexBlock(var1, var2, var3));
}
class="kw">public int getFiller(int var1, int var2, int var3) {
class="kw">return this.fillers.get(ChunkUtil.indexBlock(var1, var2, var3));
}
class="kw">private int getBlock(int var1) {
class="kw">return this.data[var1];
}
class="kw">public void setBlock(int var1, int var2, int var3, int var4, int var5, int var6) {
this.setBlock(ChunkUtil.indexBlock(var1, var2, var3), var4, var5, var6);
}
class="kw">public void setBlock(int var1, int var2, int var3, int var4) {
this.data[var1] = var2;
AbstractSectionPalette.SetResult var5 = this.fillers.set(var1, var4);
if (var5 == AbstractSectionPalette.SetResult.REQUIRES_PROMOTE) {
this.fillers = this.fillers.promote();
this.fillers.set(var1, var4);
} else if (var5 == AbstractSectionPalette.SetResult.ADDED_OR_REMOVED && this.fillers.shouldDemote()) {
this.fillers = this.fillers.demote();
}
var5 = this.rotations.set(var1, var3);
if (var5 == AbstractSectionPalette.SetResult.REQUIRES_PROMOTE) {
this.rotations = this.rotations.promote();
this.rotations.set(var1, var3);
} else if (var5 == AbstractSectionPalette.SetResult.ADDED_OR_REMOVED && this.rotations.shouldDemote()) {
this.rotations = this.rotations.demote();
}
}
class="kw">public int[] getData() {
class="kw">return this.data;
}
class="kw">public void reset() {
Arrays.fill(this.data, 0);
this.fillers = EmptySectionPalette.INSTANCE;
this.rotations = EmptySectionPalette.INSTANCE;
}
class="kw">public boolean isSolidAir() {
for (int var1 = 0; var1 < this.data.length; var1++) {
if (this.data[var1] != 0) {
class="kw">return false;
}
}
class="kw">return true;
}
@Nonnull
class="kw">public BlockSection toChunkSection() {
this.tempIdCounts.clear();
int var1 = 0;
while (var1 < this.data.length) {
int var2 = this.data[var1];
int var3 = var1;
do {
var1++;
} while (var1 < this.data.length && this.data[var1] == var2);
short var4 = (short)(var1 - var3);
this.tempIdCounts.mergeShort(var2, var4, NumberUtil::sum);
}
class="kw">return new BlockSection(AbstractSectionPalette.from(this.data, this.tempIdCounts), this.fillers, this.rotations);
}
}