Merge branch 'proto_1.12.2' into world-loader-anvil
This commit is contained in:
@@ -4,6 +4,7 @@ import lombok.Getter;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import mc.core.world.Biome;
|
||||
import mc.core.world.block.Block;
|
||||
import mc.core.world.chunk.Chunk;
|
||||
import mc.core.world.chunk.ChunkSection;
|
||||
|
||||
@@ -13,7 +14,6 @@ public class SimpleChunk implements Chunk {
|
||||
@Getter
|
||||
private final int x, z;
|
||||
private ChunkSection chunkSection;
|
||||
private final Biome biome = Biome.PLAINS;
|
||||
|
||||
@Override
|
||||
public ChunkSection getChunkSection(int height) {
|
||||
@@ -23,15 +23,57 @@ public class SimpleChunk implements Chunk {
|
||||
@Override
|
||||
public void setChunkSection(int height, ChunkSection chunkSection) {
|
||||
this.chunkSection = chunkSection;
|
||||
this.chunkSection.setParent(this);
|
||||
}
|
||||
|
||||
public Block getBlock(int x, int y, int z) {
|
||||
return chunkSection.getBlock(
|
||||
x - (x >> 4) << 4,
|
||||
y - (y >> 4) << 4,
|
||||
z - (z >> 4) << 4
|
||||
);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Biome getBiomeLocal(int x, int z) {
|
||||
return biome;
|
||||
public void setBlock(Block block) {
|
||||
// ignore
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setBiomeLocal(int x, int z, Biome biome) {
|
||||
public int getSkyLight(int x, int y, int z) {
|
||||
return chunkSection.getSkyLight(
|
||||
x - (x >> 4) << 4,
|
||||
y - (y >> 4) << 4,
|
||||
z - (z >> 4) << 4
|
||||
);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setSkyLight(int x, int y, int z, int lightLevel) {
|
||||
// ignore
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getAddition(int x, int y, int z) {
|
||||
return chunkSection.getAddition(
|
||||
x - (x >> 4) << 4,
|
||||
y - (y >> 4) << 4,
|
||||
z - (z >> 4) << 4
|
||||
);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setAddition(int x, int y, int z, int value) {
|
||||
// ignore
|
||||
}
|
||||
|
||||
@Override
|
||||
public Biome getBiome(int x, int z) {
|
||||
return Biome.PLAINS;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setBiome(int x, int z, Biome biome) {
|
||||
// ignore
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,13 +1,19 @@
|
||||
package mc.world.simple;
|
||||
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
import mc.core.world.block.Block;
|
||||
import mc.core.world.block.BlockFactory;
|
||||
import mc.core.world.block.BlockType;
|
||||
import mc.core.world.chunk.Chunk;
|
||||
import mc.core.world.chunk.ChunkSection;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public class SimpleChunkSection implements ChunkSection {
|
||||
@Getter
|
||||
@Setter
|
||||
private Chunk parent;
|
||||
private final BlockFactory blockFactory = new BlockFactory();
|
||||
private final List<BlockType> layersBlock;
|
||||
|
||||
@@ -16,27 +22,22 @@ public class SimpleChunkSection implements ChunkSection {
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getSkyLightLocal(int x, int y, int z) {
|
||||
if (y <= 3) return 0;
|
||||
public int getSkyLight(int localX, int localY, int localZ) {
|
||||
if (localY <= 3) return 0;
|
||||
else return 15;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setSkyLightLocal(int x, int y, int z, int lightLevel) {
|
||||
public void setSkyLight(int localX, int localY, int localZ, int lightLevel) {
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getAddition(int x, int y, int z) {
|
||||
public int getAddition(int localX, int localY, int localZ) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setAddition(int x, int y, int z, int value) {
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getX() {
|
||||
return 0;
|
||||
public void setAddition(int localX, int localY, int localZ, int value) {
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -44,31 +45,26 @@ public class SimpleChunkSection implements ChunkSection {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getZ() {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setBlock(Block block) {
|
||||
}
|
||||
|
||||
@Override
|
||||
public Block getBlockLocal(int x, int y, int z) {
|
||||
if (x < 0) x = 0;
|
||||
else if (x > 15) x = 15;
|
||||
if (y < 0) y = 0;
|
||||
else if (y > 15) y = 15;
|
||||
if (z < 0) z = 0;
|
||||
else if (z > 15) z = 15;
|
||||
public Block getBlock(int localX, int localY, int localZ) {
|
||||
if (localX < 0) localX = 0;
|
||||
else if (localX > 15) localX = 15;
|
||||
if (localY < 0) localY = 0;
|
||||
else if (localY > 15) localY = 15;
|
||||
if (localZ < 0) localZ = 0;
|
||||
else if (localZ > 15) localZ = 15;
|
||||
|
||||
if (y >= layersBlock.size()) {
|
||||
return blockFactory.create(BlockType.AIR, x, y, z);
|
||||
if (localY >= layersBlock.size()) {
|
||||
return blockFactory.create(BlockType.AIR, localX, localY, localZ);
|
||||
}
|
||||
|
||||
BlockType blockType = layersBlock.get(y);
|
||||
if (blockType == null) return blockFactory.create(BlockType.AIR, x, y, z);
|
||||
BlockType blockType = layersBlock.get(localY);
|
||||
if (blockType == null) return blockFactory.create(BlockType.AIR, localX, localY, localZ);
|
||||
|
||||
return blockFactory.create(blockType, x, y, z);
|
||||
return blockFactory.create(blockType, localX, localY, localZ);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -6,6 +6,7 @@ import lombok.extern.slf4j.Slf4j;
|
||||
import mc.core.EntityLocation;
|
||||
import mc.core.world.World;
|
||||
import mc.core.world.WorldType;
|
||||
import mc.core.world.block.Block;
|
||||
import mc.core.world.chunk.Chunk;
|
||||
import mc.core.world.chunk.ChunkProvider;
|
||||
import org.springframework.beans.factory.BeanNameAware;
|
||||
@@ -19,7 +20,7 @@ public class SimpleWorld implements World, BeanNameAware {
|
||||
@Getter
|
||||
private String name;
|
||||
@Getter
|
||||
private final WorldType worldType = WorldType.FLAT;
|
||||
private final WorldType type = WorldType.FLAT;
|
||||
private EntityLocation spawn;
|
||||
@Setter
|
||||
private ChunkProvider chunkProvider;
|
||||
@@ -49,6 +50,16 @@ public class SimpleWorld implements World, BeanNameAware {
|
||||
throw new UnsupportedOperationException();
|
||||
}
|
||||
|
||||
@Override
|
||||
public Block getBlock(int x, int y, int z) {
|
||||
return chunkProvider.getChunk(x >> 4, z >> 4).getBlock(x, y, z);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setBlock(Block block) {
|
||||
// nope...
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setBeanName(@Nonnull String name) {
|
||||
this.name = name;
|
||||
|
||||
@@ -35,9 +35,9 @@ class SimpleChunkSectionTest {
|
||||
for (int z = 0; z < 16; z++) {
|
||||
Block block = chunkSection.getBlock(x, y, z);
|
||||
if (y > layersBlock.size()-1) {
|
||||
assertEquals(block.getBlockType(), BlockType.AIR);
|
||||
assertEquals(block.getType(), BlockType.AIR);
|
||||
} else {
|
||||
assertEquals(block.getBlockType(), layersBlock.get(y));
|
||||
assertEquals(block.getType(), layersBlock.get(y));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user