hotfix: Oops!
This commit is contained in:
@@ -2,16 +2,18 @@ package mc.world.generated_world.chunk;
|
||||
|
||||
import lombok.Getter;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import mc.core.block.Block;
|
||||
import mc.core.block.BlockType;
|
||||
import mc.core.world.block.Block;
|
||||
import mc.core.world.block.BlockFactory;
|
||||
import mc.core.world.block.BlockType;
|
||||
import mc.core.world.Biome;
|
||||
import mc.core.world.Chunk;
|
||||
import mc.core.world.chunk.Chunk;
|
||||
import mc.core.world.Region;
|
||||
|
||||
import static mc.world.generated_world.WorldConstants.WORLD_CHUNK_SIZE;
|
||||
|
||||
@RequiredArgsConstructor
|
||||
public class ChunkImpl implements Chunk{
|
||||
private static final BlockFactory blockFactory = new BlockFactory();
|
||||
@Getter
|
||||
private final int x;
|
||||
@Getter
|
||||
@@ -22,33 +24,25 @@ public class ChunkImpl implements Chunk{
|
||||
private final transient Region region;
|
||||
|
||||
@Override
|
||||
public int getBlockType(int x, int y, int z) {
|
||||
return blocks[x][y][z].getId();
|
||||
public Block getBlock(int x, int y, int z) {
|
||||
Block block = blocks[x][y][z];
|
||||
if (block == null) {
|
||||
block = blockFactory.create(BlockType.AIR, 0, x, y, z);
|
||||
}
|
||||
block.setLight(15);
|
||||
return block;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setBlockType(int x, int y, int z, int type) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getBlockMetadata(int x, int y, int z) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setBlockMetadata(int x, int y, int z, int metadata) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getBlockLight(int x, int y, int z) {
|
||||
return 15;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setBlockLight(int x, int y, int z, int lightLevel) {
|
||||
|
||||
public void setBlock(Block block) {
|
||||
if (block.getBlockType() == BlockType.AIR) {
|
||||
blocks[block.getLocation().getBlockX()]
|
||||
[block.getLocation().getBlockY()]
|
||||
[block.getLocation().getBlockZ()] = null;
|
||||
}
|
||||
blocks[block.getLocation().getBlockX()]
|
||||
[block.getLocation().getBlockY()]
|
||||
[block.getLocation().getBlockZ()] = block;
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -58,7 +52,7 @@ public class ChunkImpl implements Chunk{
|
||||
|
||||
@Override
|
||||
public void setSkyLight(int x, int y, int z, int lightLevel) {
|
||||
|
||||
throw new UnsupportedOperationException();
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -68,7 +62,7 @@ public class ChunkImpl implements Chunk{
|
||||
|
||||
@Override
|
||||
public void setAddition(int x, int y, int z, int value) {
|
||||
|
||||
throw new UnsupportedOperationException();
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -80,21 +74,4 @@ public class ChunkImpl implements Chunk{
|
||||
public void setBiome(int x, int z, Biome biome) {
|
||||
region.setBiome(x + this.x * WORLD_CHUNK_SIZE,z + this.z * WORLD_CHUNK_SIZE, biome);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setBlock(int x, int y, int z, Block block) {
|
||||
if (block.getBlockType() == BlockType.AIR) {
|
||||
blocks[x][y][z] = null;
|
||||
}
|
||||
blocks[x][y][z] = block;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Block getBlock(int x, int y, int z) {
|
||||
Block block = blocks[x][y][z];
|
||||
if (block == null) {
|
||||
return Block.airBlock(x, y, z);
|
||||
}
|
||||
return blocks[x][y][z];
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
package mc.world.generated_world.chunk;
|
||||
|
||||
import mc.core.block.Block;
|
||||
import mc.core.world.block.Block;
|
||||
import mc.core.world.Biome;
|
||||
import mc.core.world.Chunk;
|
||||
import mc.core.world.chunk.Chunk;
|
||||
|
||||
import java.util.concurrent.locks.ReadWriteLock;
|
||||
import java.util.concurrent.locks.ReentrantReadWriteLock;
|
||||
@@ -29,39 +29,15 @@ public class ChunkProxy implements Chunk {
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getBlockType(int x, int y, int z) {
|
||||
public Block getBlock(int x, int y, int z) {
|
||||
use();
|
||||
return chunk.getBlockType(x, y, z);
|
||||
return chunk.getBlock(x, y, z);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setBlockType(int x, int y, int z, int type) {
|
||||
public void setBlock(Block block) {
|
||||
use();
|
||||
chunk.setBlockType(x, y, z, type);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getBlockMetadata(int x, int y, int z) {
|
||||
use();
|
||||
return chunk.getBlockMetadata(x, y, z);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setBlockMetadata(int x, int y, int z, int metadata) {
|
||||
use();
|
||||
chunk.setBlockMetadata(x, y, z, metadata);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getBlockLight(int x, int y, int z) {
|
||||
use();
|
||||
return chunk.getBlockLight(x, y, z);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setBlockLight(int x, int y, int z, int lightLevel) {
|
||||
use();
|
||||
chunk.setBlockLight(x, y, z, lightLevel);
|
||||
chunk.setBlock(block);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -117,16 +93,4 @@ public class ChunkProxy implements Chunk {
|
||||
use();
|
||||
return chunk.getZ();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setBlock(int x, int y, int z, Block block) {
|
||||
use();
|
||||
chunk.setBlock(x, y, z, block);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Block getBlock(int x, int y, int z) {
|
||||
use();
|
||||
return chunk.getBlock(x, y, z);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3,6 +3,8 @@ package mc.world.generated_world.chunk;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import mc.core.serialization.Serializer;
|
||||
import mc.core.world.*;
|
||||
import mc.core.world.chunk.Chunk;
|
||||
import mc.core.world.chunk.ChunkLoader;
|
||||
import mc.world.generated_world.serialization.ChunkReader;
|
||||
import mc.world.generated_world.serialization.RegionReaderWriter;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
|
||||
@@ -2,9 +2,10 @@ package mc.world.generated_world.generator;
|
||||
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import mc.core.block.BlockFactory;
|
||||
import mc.core.block.BlockType;
|
||||
import mc.core.world.block.BlockFactory;
|
||||
import mc.core.world.block.BlockType;
|
||||
import mc.core.world.*;
|
||||
import mc.core.world.chunk.Chunk;
|
||||
import mc.world.generated_world.region.RegionImpl;
|
||||
import mc.world.generated_world.serialization.ChunkSerializer;
|
||||
import mc.world.generated_world.serialization.RegionReaderWriter;
|
||||
@@ -308,35 +309,35 @@ public class SeedBasedWorldGenerator implements WorldGenerator {
|
||||
for (int y = 0; y < WORLD_SEA_LEVEL; y ++) {
|
||||
Chunk chunk = region.getChunkAt(x / 16, y / 16, z / 16);
|
||||
if (y == 0) {
|
||||
chunk.setBlock(x % 16, y % 16, z % 16, blockFactory.create(BlockType.BEDROCK, 0));
|
||||
chunk.setBlock(blockFactory.create(BlockType.BEDROCK, 0, x % 16, y % 16, z % 16));
|
||||
continue;
|
||||
}
|
||||
if (y < heightMap[x][z]) {
|
||||
if (y < heightMap[x][z] - grassMap[x][z]) {
|
||||
chunk.setBlock(x % 16, y % 16, z % 16, blockFactory.create(BlockType.STONE, 0));
|
||||
chunk.setBlock(blockFactory.create(BlockType.STONE, 0, x % 16, y % 16, z % 16));
|
||||
} else {
|
||||
chunk.setBlock(x % 16, y % 16, z % 16, blockFactory.create(BlockType.SAND, 0));
|
||||
chunk.setBlock(blockFactory.create(BlockType.SAND, 0, x % 16, y % 16, z % 16));
|
||||
}
|
||||
} else {
|
||||
chunk.setBlock(x % 16, y % 16, z % 16, blockFactory.create(BlockType.WATER, 0));
|
||||
chunk.setBlock(blockFactory.create(BlockType.WATER, 0, x % 16, y % 16, z % 16));
|
||||
}
|
||||
}
|
||||
} else {
|
||||
for (int y = 0; y < heightMap[x][z]; y++) {
|
||||
Chunk chunk = region.getChunkAt(x / 16, y / 16, z / 16);
|
||||
if (y == 0) {
|
||||
chunk.setBlock(x % 16, y % 16, z % 16, blockFactory.create(BlockType.BEDROCK, 0));
|
||||
chunk.setBlock(blockFactory.create(BlockType.BEDROCK, 0, x % 16, y % 16, z % 16));
|
||||
continue;
|
||||
}
|
||||
if (y < heightMap[x][z] - grassMap[x][z]) {
|
||||
chunk.setBlock(x % 16, y % 16, z % 16, blockFactory.create(BlockType.STONE, 0));
|
||||
chunk.setBlock(blockFactory.create(BlockType.STONE, 0, x % 16, y % 16, z % 16));
|
||||
} else {
|
||||
if (biomes[x][z] == Biome.DESERT || biomes[x][z] == Biome.DESERT_HILLS) {
|
||||
chunk.setBlock(x % 16, y % 16, z % 16, blockFactory.create(BlockType.SAND, 0));
|
||||
chunk.setBlock(blockFactory.create(BlockType.SAND, 0, x % 16, y % 16, z % 16));
|
||||
} else if (biomes[x][z] == Biome.TAIGA || biomes[x][z] == Biome.TAIGA_HILLS) {
|
||||
chunk.setBlock(x % 16, y % 16, z % 16, blockFactory.create(BlockType.DIRT, 0));
|
||||
chunk.setBlock(blockFactory.create(BlockType.DIRT, 0, x % 16, y % 16, z % 16));
|
||||
} else {
|
||||
chunk.setBlock(x % 16, y % 16, z % 16, blockFactory.create(BlockType.GRASS, 0));
|
||||
chunk.setBlock(blockFactory.create(BlockType.GRASS, 0, x % 16, y % 16, z % 16));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -6,6 +6,8 @@ import lombok.extern.slf4j.Slf4j;
|
||||
import mc.core.serialization.IRegionReaderWriter;
|
||||
import mc.core.serialization.Serializer;
|
||||
import mc.core.world.*;
|
||||
import mc.core.world.chunk.Chunk;
|
||||
import mc.core.world.chunk.ChunkLoader;
|
||||
import mc.world.generated_world.chunk.InMemoryCacheChunkLoader;
|
||||
import mc.world.generated_world.chunk.ChunkImpl;
|
||||
import mc.world.generated_world.chunk.ChunkProxy;
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
package mc.world.generated_world.serialization;
|
||||
|
||||
import mc.core.block.Block;
|
||||
import mc.core.block.BlockFactory;
|
||||
import mc.core.block.BlockType;
|
||||
import mc.core.world.block.Block;
|
||||
import mc.core.world.block.BlockFactory;
|
||||
import mc.core.world.block.BlockType;
|
||||
import mc.core.serialization.Deserializer;
|
||||
import mc.core.serialization.Serializer;
|
||||
import mc.core.world.Chunk;
|
||||
import mc.core.world.chunk.Chunk;
|
||||
|
||||
/**
|
||||
* Prototype
|
||||
|
||||
@@ -1,10 +1,9 @@
|
||||
package mc.world.generated_world.serialization;
|
||||
|
||||
import mc.core.Location;
|
||||
import mc.core.block.Block;
|
||||
import mc.core.world.block.Block;
|
||||
import mc.core.serialization.Deserializer;
|
||||
import mc.core.serialization.IChunkReader;
|
||||
import mc.core.world.Chunk;
|
||||
import mc.core.world.chunk.Chunk;
|
||||
import mc.core.world.Region;
|
||||
import mc.world.generated_world.chunk.ChunkImpl;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
@@ -41,8 +40,7 @@ public class ChunkReader implements IChunkReader{
|
||||
blockBytes[1] = chunkBytes[1 + 3 * i];
|
||||
blockBytes[2] = chunkBytes[2 + 3 * i];
|
||||
Block block = blockDeserializer.deserialize(blockBytes);
|
||||
Location blockLocation = block.getLocation();
|
||||
chunk.setBlock(blockLocation.getBlockX(), blockLocation.getBlockY(), blockLocation.getBlockZ(), block);
|
||||
chunk.setBlock(block);
|
||||
}
|
||||
return chunk;
|
||||
}
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
package mc.world.generated_world.serialization;
|
||||
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import mc.core.block.Block;
|
||||
import mc.core.block.BlockFactory;
|
||||
import mc.core.block.BlockType;
|
||||
import mc.core.world.block.Block;
|
||||
import mc.core.world.block.BlockFactory;
|
||||
import mc.core.world.block.BlockType;
|
||||
import mc.core.serialization.Serializer;
|
||||
import mc.core.world.Chunk;
|
||||
import mc.core.world.chunk.Chunk;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
|
||||
import java.io.ByteArrayOutputStream;
|
||||
|
||||
@@ -6,9 +6,9 @@ import lombok.Setter;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import mc.core.Location;
|
||||
import mc.core.WarpPosition;
|
||||
import mc.core.block.BlockType;
|
||||
import mc.core.world.block.BlockType;
|
||||
import mc.core.player.Look;
|
||||
import mc.core.world.Chunk;
|
||||
import mc.core.world.chunk.Chunk;
|
||||
import mc.core.world.IWorldType;
|
||||
import mc.core.world.Region;
|
||||
import mc.core.world.World;
|
||||
|
||||
Reference in New Issue
Block a user