Archived
0

почти успешная загрузка карты

зафиксированы следующие ошибки:
- не прогружаются некоторые чанки (совсем);
- не отображаюся некоторые чанки (пока не пнёшь);
- секция чанка некоректно загружается, если там есть сундук;
- местами некорректно отображаются данные о block light.
This commit is contained in:
2018-11-04 15:20:07 +03:00
parent 70835fe1ea
commit bd2991abaa
4 changed files with 135 additions and 19 deletions

View File

@@ -1,17 +1,15 @@
package mc.world.anvil;
import com.flowpowered.nbt.Tag;
import lombok.extern.slf4j.Slf4j;
import mc.core.world.block.Block;
import mc.core.world.block.BlockLocation;
import mc.core.world.block.BlockType;
import java.util.stream.Stream;
@Slf4j
public class AnvilBlock implements Block {
private final AnvilChunkSection chunkSection;
private final BlockLocation location;
private BlockLocation globalLocation;
public AnvilBlock(AnvilChunkSection chunkSection, int x, int y, int z) {
this.chunkSection = chunkSection;
@@ -30,20 +28,31 @@ public class AnvilBlock implements Block {
@Override
public BlockType getBlockType() {
final byte id = chunkSection.getBlocks().get((location.getY() * 256) + (location.getZ() * 16) + location.getX());
final byte id = chunkSection.getBlocks().get((location.getY() << 8) + (location.getZ() << 4) + location.getX());
final int meta = chunkSection.getBlocksMeta().get(location);
return BlockType.getByIdMeta(id, meta);
BlockType type = BlockType.getByIdMeta(id & 0xFF, meta);
if (type.equals(BlockType.BEDROCK) && id != 7) {
log.warn("ChunkSection: {},{},{} | Block: {}",
chunkSection.getX(),
chunkSection.getY(),
chunkSection.getZ(),
location.toString());
}
return type;
}
@Override
public BlockLocation getLocation() {
return location;
if (globalLocation == null) {
globalLocation = location.toGlobal(chunkSection);
}
return globalLocation;
}
@Override
public String toString() {
return "AnvilBlock{" +
"location=" + location +
"location=" + getLocation() +
", type=" + getBlockType() +
'}';
}