Interfaces
This commit is contained in:
@@ -1,9 +1,14 @@
|
|||||||
package mc.core.block;
|
package mc.core.block;
|
||||||
|
|
||||||
|
import com.flowpowered.nbt.Tag;
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
import lombok.Setter;
|
import lombok.Setter;
|
||||||
import mc.core.Location;
|
import mc.core.Location;
|
||||||
|
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.stream.Stream;
|
||||||
|
|
||||||
public abstract class AbstractBlock implements Block {
|
public abstract class AbstractBlock implements Block {
|
||||||
@Getter@Setter
|
@Getter@Setter
|
||||||
private Location location;
|
private Location location;
|
||||||
@@ -11,6 +16,7 @@ public abstract class AbstractBlock implements Block {
|
|||||||
private int meta;
|
private int meta;
|
||||||
@Getter
|
@Getter
|
||||||
private final BlockType blockType;
|
private final BlockType blockType;
|
||||||
|
private final Map<String, Tag<?>> nbtTagsMap = new HashMap<>();
|
||||||
|
|
||||||
protected AbstractBlock(BlockType type) {
|
protected AbstractBlock(BlockType type) {
|
||||||
this.blockType = type;
|
this.blockType = type;
|
||||||
@@ -25,4 +31,19 @@ public abstract class AbstractBlock implements Block {
|
|||||||
public int getId() {
|
public int getId() {
|
||||||
return blockType.getId();
|
return blockType.getId();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Tag<?> getTag(String name) {
|
||||||
|
return nbtTagsMap.get(name);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setTag(Tag<?> tag) {
|
||||||
|
nbtTagsMap.put(tag.getName(), tag);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Stream<Tag<?>> tagStream() {
|
||||||
|
return nbtTagsMap.values().stream();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,10 @@
|
|||||||
package mc.core.block;
|
package mc.core.block;
|
||||||
|
|
||||||
|
import com.flowpowered.nbt.Tag;
|
||||||
import mc.core.Location;
|
import mc.core.Location;
|
||||||
|
import mc.core.nbt.Taggable;
|
||||||
|
|
||||||
|
import java.io.Serializable;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Serialization block info
|
* Serialization block info
|
||||||
@@ -23,23 +27,13 @@ import mc.core.Location;
|
|||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
public interface Block {
|
public interface Block extends Taggable, Serializable{
|
||||||
|
|
||||||
static Block airBlock (int x, int y, int z) {
|
static Block airBlock (int x, int y, int z) {
|
||||||
return new Block() {
|
return new AbstractBlock(BlockType.AIR) {
|
||||||
@Override
|
@Override
|
||||||
public int getId() {
|
public Tag<?> getTag(String name) {
|
||||||
return 0;
|
return null;
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public int getMeta() {
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public BlockType getBlockType() {
|
|
||||||
return BlockType.AIR;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
11
core/src/main/java/mc/core/nbt/Taggable.java
Normal file
11
core/src/main/java/mc/core/nbt/Taggable.java
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
package mc.core.nbt;
|
||||||
|
|
||||||
|
import com.flowpowered.nbt.Tag;
|
||||||
|
|
||||||
|
import java.util.stream.Stream;
|
||||||
|
|
||||||
|
public interface Taggable {
|
||||||
|
Tag<?> getTag(String name);
|
||||||
|
void setTag(Tag<?> tag);
|
||||||
|
Stream<Tag<?>> tagStream();
|
||||||
|
}
|
||||||
@@ -6,6 +6,8 @@ package mc.core.world;
|
|||||||
|
|
||||||
import mc.core.block.Block;
|
import mc.core.block.Block;
|
||||||
|
|
||||||
|
import java.io.Serializable;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Serialization chunk info
|
* Serialization chunk info
|
||||||
*
|
*
|
||||||
@@ -24,7 +26,7 @@ import mc.core.block.Block;
|
|||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
/* 16x16x16 */
|
/* 16x16x16 */
|
||||||
public interface Chunk {
|
public interface Chunk extends Serializable{
|
||||||
int getBlockType(int x, int y, int z);
|
int getBlockType(int x, int y, int z);
|
||||||
void setBlockType(int x, int y, int z, int type);
|
void setBlockType(int x, int y, int z, int type);
|
||||||
|
|
||||||
|
|||||||
@@ -3,6 +3,7 @@ package mc.core.world;
|
|||||||
import mc.core.serialization.Serializer;
|
import mc.core.serialization.Serializer;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
import java.io.Serializable;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Simple world generation unit
|
* Simple world generation unit
|
||||||
@@ -18,7 +19,7 @@ import java.io.IOException;
|
|||||||
* Total: 2097152 bits (256 Kb)
|
* Total: 2097152 bits (256 Kb)
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
public interface Region {
|
public interface Region extends Serializable{
|
||||||
Chunk getChunkAt(int x, int y, int z);
|
Chunk getChunkAt(int x, int y, int z);
|
||||||
void setChunk(int x, int y, int z, Chunk chunk);
|
void setChunk(int x, int y, int z, Chunk chunk);
|
||||||
|
|
||||||
|
|||||||
@@ -5,7 +5,9 @@
|
|||||||
package mc.core.world;
|
package mc.core.world;
|
||||||
|
|
||||||
import mc.core.Location;
|
import mc.core.Location;
|
||||||
|
import mc.core.nbt.Taggable;
|
||||||
|
|
||||||
|
import java.io.Serializable;
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -39,7 +41,7 @@ import java.util.UUID;
|
|||||||
* --> []player_uuid.dat
|
* --> []player_uuid.dat
|
||||||
*/
|
*/
|
||||||
|
|
||||||
public interface World {
|
public interface World extends Taggable, Serializable{
|
||||||
UUID getWorldId();
|
UUID getWorldId();
|
||||||
IWorldType getWorldType();
|
IWorldType getWorldType();
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user