обновление интерфейсов пакета mc.core.world.*
выделены методы для локальных и глобальных координат + добавлена документация
This commit is contained in:
@@ -1,7 +1,3 @@
|
|||||||
/*
|
|
||||||
* DmitriyMX <dimon550@gmail.com>
|
|
||||||
* 2018-04-15
|
|
||||||
*/
|
|
||||||
package mc.core.world;
|
package mc.core.world;
|
||||||
|
|
||||||
import mc.core.EntityLocation;
|
import mc.core.EntityLocation;
|
||||||
@@ -21,14 +17,26 @@ public interface World {
|
|||||||
setSpawn(x, y, z, 0f, 0f);
|
setSpawn(x, y, z, 0f, 0f);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Получить чанк по координатам
|
||||||
|
* @param x глобальный X
|
||||||
|
* @param z глобальный Z
|
||||||
|
* @return {@link mc.core.world.chunk.Chunk}
|
||||||
|
*/
|
||||||
Chunk getChunk(int x, int z);
|
Chunk getChunk(int x, int z);
|
||||||
void setChunk(int x, int z, Chunk chunkSection);
|
|
||||||
|
|
||||||
default Chunk getChunk(BlockLocation location) {
|
default Chunk getChunk(BlockLocation location) {
|
||||||
return getChunk(location.getX() >> 4, location.getZ() >> 4);
|
return getChunk(location.getX() >> 4, location.getZ() >> 4);
|
||||||
}
|
}
|
||||||
|
|
||||||
default Chunk getChunk(EntityLocation location) {
|
default Chunk getChunk(EntityLocation location) {
|
||||||
return getChunk(location.getBlockX() >> 4, location.getBlockZ() >> 4);
|
return getChunk(location.getBlockX() >> 4, location.getBlockZ() >> 4);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Установить чанк по координатам
|
||||||
|
* @param x глобальный X
|
||||||
|
* @param z глобальный Z
|
||||||
|
* @param chunk {@link mc.core.world.chunk.Chunk}
|
||||||
|
*/
|
||||||
|
void setChunk(int x, int z, Chunk chunk);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,13 +2,67 @@ package mc.core.world.chunk;
|
|||||||
|
|
||||||
import mc.core.world.Biome;
|
import mc.core.world.Biome;
|
||||||
|
|
||||||
|
/* 16x256x16 */
|
||||||
public interface Chunk {
|
public interface Chunk {
|
||||||
|
/**
|
||||||
|
* Глобальная координата X
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
int getX();
|
int getX();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Глобальная координата Z
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
int getZ();
|
int getZ();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Получить секцию чанка
|
||||||
|
* @param height высота (0-15)
|
||||||
|
* @return {@link mc.core.world.chunk.ChunkSection}
|
||||||
|
*/
|
||||||
ChunkSection getChunkSection(int height);
|
ChunkSection getChunkSection(int height);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Установить секцию чанка
|
||||||
|
* @param height высота (0-15)
|
||||||
|
* @param chunkSection {@link mc.core.world.chunk.ChunkSection}
|
||||||
|
*/
|
||||||
void setChunkSection(int height, ChunkSection chunkSection);
|
void setChunkSection(int height, ChunkSection chunkSection);
|
||||||
|
|
||||||
Biome getBiome(int localX, int localZ);
|
/**
|
||||||
void setBiome(int localX, int localZ, Biome biome);
|
* Получиь данные по биому
|
||||||
|
* @param x глобальный X
|
||||||
|
* @param z глобальный Z
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
default Biome getBiome(int x, int z) {
|
||||||
|
return getBiomeLocal(x >> 4, z >> 4);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Получиь данные по биому
|
||||||
|
* @param x локальный X (0-15)
|
||||||
|
* @param z локальный Z (0-15)
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
Biome getBiomeLocal(int x, int z);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Указать данные по биому
|
||||||
|
* @param x глобальный X
|
||||||
|
* @param z глобальный Z
|
||||||
|
* @param biome {@link mc.core.world.Biome}
|
||||||
|
*/
|
||||||
|
default void setBiome(int x, int z, Biome biome) {
|
||||||
|
setBiomeLocal(x >> 4, z >> 4, biome);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Указать данные по биому
|
||||||
|
* @param x локальный X (0-15)
|
||||||
|
* @param z локальный Z (0-15)
|
||||||
|
* @param biome {@link mc.core.world.Biome}
|
||||||
|
*/
|
||||||
|
void setBiomeLocal(int x, int z, Biome biome);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,12 @@
|
|||||||
package mc.core.world.chunk;
|
package mc.core.world.chunk;
|
||||||
|
|
||||||
public interface ChunkProvider {
|
public interface ChunkProvider {
|
||||||
|
/**
|
||||||
|
* Получить чанк по координатам
|
||||||
|
* @param x глобальный X
|
||||||
|
* @param z глобальный Z
|
||||||
|
* @return {@link mc.core.world.chunk.Chunk}
|
||||||
|
*/
|
||||||
Chunk getChunk(int x , int z);
|
Chunk getChunk(int x , int z);
|
||||||
|
|
||||||
void saveChunk(Chunk chunk);
|
void saveChunk(Chunk chunk);
|
||||||
|
|||||||
@@ -5,26 +5,108 @@ import mc.core.world.block.Block;
|
|||||||
|
|
||||||
/* 16x16x16 */
|
/* 16x16x16 */
|
||||||
public interface ChunkSection {
|
public interface ChunkSection {
|
||||||
|
/**
|
||||||
|
* Глобальная координата X
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
int getX();
|
int getX();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Высота
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
int getY();
|
int getY();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Глобальная координата Z
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
int getZ();
|
int getZ();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Получить блок
|
||||||
|
* @param x глобальный X
|
||||||
|
* @param y глобальный Y
|
||||||
|
* @param z глобальный Z
|
||||||
|
* @return {@link mc.core.world.block.Block}
|
||||||
|
*/
|
||||||
|
default Block getBlock(int x, int y, int z) {
|
||||||
|
return getBlockLocal(x >> 4, y >> 4, z >> 4);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Получить блок
|
||||||
|
* @param x локальный X (0-15)
|
||||||
|
* @param y локальный Y (0-15)
|
||||||
|
* @param z локальный Z (0-15)
|
||||||
|
* @return {@link mc.core.world.block.Block}
|
||||||
|
*/
|
||||||
|
Block getBlockLocal(int x, int y, int z);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Установить блок
|
||||||
|
* @param block {@link mc.core.world.block.Block}
|
||||||
|
*/
|
||||||
void setBlock(Block block);
|
void setBlock(Block block);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Получить блок по внутренним координатам
|
* Получить данные о естественной подсветке
|
||||||
* @param x X
|
* @param x глобальный X
|
||||||
* @param y Y
|
* @param y глобальный Y
|
||||||
* @param z Z
|
* @param z глобальный Z
|
||||||
* @return {@link mc.core.world.block.Block}
|
* @return integer значение 0-15, где 0 - это света нет, а 15 - получает прямой солнечный свет
|
||||||
*/
|
*/
|
||||||
Block getBlock(int x, int y, int z);
|
default int getSkyLight(int x, int y, int z) {
|
||||||
|
return getSkyLightLocal(x >> 4, y >> 4, z >> 4);
|
||||||
|
}
|
||||||
|
|
||||||
int getSkyLight(int x, int y, int z);
|
/**
|
||||||
void setSkyLight(int x, int y, int z, int lightLevel);
|
* Получить данные о естественной подсветке
|
||||||
|
* @param x локальный X (0-15)
|
||||||
|
* @param y локальный Y (0-15)
|
||||||
|
* @param z локальный Z (0-15)
|
||||||
|
* @return integer значение 0-15, где 0 - это света нет, а 15 - получает прямой солнечный свет
|
||||||
|
*/
|
||||||
|
int getSkyLightLocal(int x, int y, int z);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Указать данные о естественной подсветке
|
||||||
|
* @param x глобальный X
|
||||||
|
* @param y глобальный Y
|
||||||
|
* @param z глобальный Z
|
||||||
|
* @param lightLevel значение 0-15, где 0 - это света нет, а 15 - получает прямой солнечный свет
|
||||||
|
*/
|
||||||
|
default void setSkyLight(int x, int y, int z, int lightLevel) {
|
||||||
|
setSkyLightLocal(x >> 4, y >> 4, z >> 4, lightLevel);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Указать данные о естественной подсветке
|
||||||
|
* @param x локальный X (0-15)
|
||||||
|
* @param y локальный Y (0-15)
|
||||||
|
* @param z локальный Z (0-15)
|
||||||
|
* @param lightLevel значение 0-15, где 0 - это света нет, а 15 - получает прямой солнечный свет
|
||||||
|
*/
|
||||||
|
void setSkyLightLocal(int x, int y, int z, int lightLevel);
|
||||||
|
|
||||||
int getAddition(int x, int y, int z);
|
int getAddition(int x, int y, int z);
|
||||||
void setAddition(int x, int y, int z, int value);
|
void setAddition(int x, int y, int z, int value);
|
||||||
|
|
||||||
Biome getBiome(int localX, int localZ);
|
/**
|
||||||
|
* Получиь данные по биому
|
||||||
|
* @param x глобальный X
|
||||||
|
* @param z глобальный Z
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
default Biome getBiome(int x, int z) {
|
||||||
|
return getBiomeLocal(x >> 4, z >> 4);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Получиь данные по биому
|
||||||
|
* @param x локальный X (0-15)
|
||||||
|
* @param z локальный Z (0-15)
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
Biome getBiomeLocal(int x, int z);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -150,11 +150,11 @@ public class ChunkDataPacket implements SCPacket {
|
|||||||
for (int y = 0; y < 16; y++) {
|
for (int y = 0; y < 16; y++) {
|
||||||
for (int z = 0; z < 16; z++) {
|
for (int z = 0; z < 16; z++) {
|
||||||
for (int x = 0; x < 16; x++) {
|
for (int x = 0; x < 16; x++) {
|
||||||
palettedChunkSection.addBlock(chunkSection.getBlock(x, y, z));
|
palettedChunkSection.addBlock(chunkSection.getBlockLocal(x, y, z));
|
||||||
palettedChunkSection.addSkyLight(chunkSection.getSkyLight(x, y, z));
|
palettedChunkSection.addSkyLight(chunkSection.getSkyLightLocal(x, y, z));
|
||||||
|
|
||||||
if (biomeWrite) {
|
if (biomeWrite) {
|
||||||
biomes.writeByte(chunkSection.getBiome(x, z).getId());
|
biomes.writeByte(chunkSection.getBiomeLocal(x, z).getId());
|
||||||
if (x == 15 && z == 15) {
|
if (x == 15 && z == 15) {
|
||||||
biomeWrite = false;
|
biomeWrite = false;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -26,12 +26,12 @@ public class SimpleChunk implements Chunk {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Biome getBiome(int localX, int localZ) {
|
public Biome getBiomeLocal(int x, int z) {
|
||||||
return biome;
|
return biome;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setBiome(int localX, int localZ, Biome biome) {
|
public void setBiomeLocal(int x, int z, Biome biome) {
|
||||||
// ignore
|
// ignore
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -17,13 +17,13 @@ public class SimpleChunkSection implements ChunkSection {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int getSkyLight(int x, int y, int z) {
|
public int getSkyLightLocal(int x, int y, int z) {
|
||||||
if (y <= 3) return 0;
|
if (y <= 3) return 0;
|
||||||
else return 15;
|
else return 15;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setSkyLight(int x, int y, int z, int lightLevel) {
|
public void setSkyLightLocal(int x, int y, int z, int lightLevel) {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -36,7 +36,7 @@ public class SimpleChunkSection implements ChunkSection {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Biome getBiome(int localX, int localZ) {
|
public Biome getBiomeLocal(int x, int z) {
|
||||||
return Biome.PLAINS;
|
return Biome.PLAINS;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -60,7 +60,7 @@ public class SimpleChunkSection implements ChunkSection {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Block getBlock(int x, int y, int z) {
|
public Block getBlockLocal(int x, int y, int z) {
|
||||||
if (x < 0) x = 0;
|
if (x < 0) x = 0;
|
||||||
else if (x > 15) x = 15;
|
else if (x > 15) x = 15;
|
||||||
if (y < 0) y = 0;
|
if (y < 0) y = 0;
|
||||||
|
|||||||
Reference in New Issue
Block a user