создана реализация FlatChunkProvider
This commit is contained in:
@@ -0,0 +1,51 @@
|
|||||||
|
package mc.world.simple;
|
||||||
|
|
||||||
|
import mc.core.world.block.BlockType;
|
||||||
|
import mc.core.world.chunk.Chunk;
|
||||||
|
import mc.core.world.chunk.ChunkProvider;
|
||||||
|
import mc.core.world.chunk.ChunkSection;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
public class FlatChunkProvider implements ChunkProvider {
|
||||||
|
private ChunkSection chunkSection;
|
||||||
|
|
||||||
|
public void setLayersBlock(List<String> listOfLayers) {
|
||||||
|
List<BlockType> layoutsBlock = new ArrayList<>();
|
||||||
|
|
||||||
|
for (String value : listOfLayers) {
|
||||||
|
String[] splitValue = value.split(";");
|
||||||
|
|
||||||
|
BlockType blockType;
|
||||||
|
try {
|
||||||
|
blockType = BlockType.valueOf(splitValue[1]);
|
||||||
|
} catch (IllegalArgumentException e) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
for (int i = 0; i < Integer.parseInt(splitValue[0]); i++) {
|
||||||
|
layoutsBlock.add(blockType);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
this.chunkSection = new SimpleChunkSection(layoutsBlock);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Chunk getChunk(int x, int z) {
|
||||||
|
Chunk chunk = new SimpleChunk(x, z);
|
||||||
|
chunk.setChunkSection(0, chunkSection);
|
||||||
|
return chunk;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void saveChunk(Chunk chunk) {
|
||||||
|
//TODO ignore
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void saveChunk(Chunk... chunks) {
|
||||||
|
//TODO ignore
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -5,12 +5,14 @@
|
|||||||
package mc.world.simple;
|
package mc.world.simple;
|
||||||
|
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
|
import lombok.Setter;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import mc.core.EntityLocation;
|
import mc.core.EntityLocation;
|
||||||
import mc.core.world.World;
|
import mc.core.world.World;
|
||||||
import mc.core.world.WorldType;
|
import mc.core.world.WorldType;
|
||||||
import mc.core.world.block.BlockType;
|
import mc.core.world.block.BlockType;
|
||||||
import mc.core.world.chunk.Chunk;
|
import mc.core.world.chunk.Chunk;
|
||||||
|
import mc.core.world.chunk.ChunkProvider;
|
||||||
import mc.core.world.chunk.ChunkSection;
|
import mc.core.world.chunk.ChunkSection;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
@@ -21,13 +23,14 @@ public class SimpleWorld implements World {
|
|||||||
@Getter
|
@Getter
|
||||||
private final WorldType worldType = WorldType.FLAT;
|
private final WorldType worldType = WorldType.FLAT;
|
||||||
private EntityLocation spawn;
|
private EntityLocation spawn;
|
||||||
private ChunkSection chunkSection;
|
@Setter
|
||||||
|
private ChunkProvider chunkProvider;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public EntityLocation getSpawn() {
|
public EntityLocation getSpawn() {
|
||||||
if (this.spawn == null) {
|
if (this.spawn == null) {
|
||||||
log.warn("Spawn is not defined! Set spawn [0, 6, 0]");
|
log.warn("Spawn is not defined! Set spawn [0, 6, 0]");
|
||||||
this.spawn = new EntityLocation(0d, 6d, 0d, 0f, 0f, this);
|
setSpawn(0d, 6d, 0d);
|
||||||
}
|
}
|
||||||
|
|
||||||
return this.spawn;
|
return this.spawn;
|
||||||
@@ -40,9 +43,7 @@ public class SimpleWorld implements World {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Chunk getChunk(int x, int z) {
|
public Chunk getChunk(int x, int z) {
|
||||||
Chunk chunk = new SimpleChunk(x, z);
|
return chunkProvider.getChunk(x, z);
|
||||||
chunk.setChunkSection(0, chunkSection);
|
|
||||||
return chunk;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -50,24 +51,14 @@ public class SimpleWorld implements World {
|
|||||||
throw new UnsupportedOperationException();
|
throw new UnsupportedOperationException();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Deprecated
|
||||||
public void setLayersBlock(List<String> listOfLayers) {
|
public void setLayersBlock(List<String> listOfLayers) {
|
||||||
List<BlockType> layoutsBlock = new ArrayList<>();
|
if (chunkProvider == null) {
|
||||||
|
FlatChunkProvider chunkProvider = new FlatChunkProvider();
|
||||||
for (String value : listOfLayers) {
|
chunkProvider.setLayersBlock(listOfLayers);
|
||||||
String[] splitValue = value.split(";");
|
this.chunkProvider = chunkProvider;
|
||||||
|
} else if (this.chunkProvider instanceof FlatChunkProvider) {
|
||||||
BlockType blockType;
|
((FlatChunkProvider)chunkProvider).setLayersBlock(listOfLayers);
|
||||||
try {
|
|
||||||
blockType = BlockType.valueOf(splitValue[1]);
|
|
||||||
} catch (IllegalArgumentException e) {
|
|
||||||
continue;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
for (int i = 0; i < Integer.parseInt(splitValue[0]); i++) {
|
|
||||||
layoutsBlock.add(blockType);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
this.chunkSection = new SimpleChunkSection(layoutsBlock);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user