Archived
0

обновление интерфейсов пакета mc.core.world.*

выделены методы для локальных и глобальных координат + добавлена документация
This commit is contained in:
2018-10-28 20:45:47 +03:00
parent 2e2fc13615
commit 58334591d0
7 changed files with 176 additions and 26 deletions

View File

@@ -1,7 +1,3 @@
/*
* DmitriyMX <dimon550@gmail.com>
* 2018-04-15
*/
package mc.core.world;
import mc.core.EntityLocation;
@@ -21,14 +17,26 @@ public interface World {
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);
void setChunk(int x, int z, Chunk chunkSection);
default Chunk getChunk(BlockLocation location) {
return getChunk(location.getX() >> 4, location.getZ() >> 4);
}
default Chunk getChunk(EntityLocation location) {
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);
}

View File

@@ -2,13 +2,67 @@ package mc.core.world.chunk;
import mc.core.world.Biome;
/* 16x256x16 */
public interface Chunk {
/**
* Глобальная координата X
* @return
*/
int getX();
/**
* Глобальная координата Z
* @return
*/
int getZ();
/**
* Получить секцию чанка
* @param height высота (0-15)
* @return {@link mc.core.world.chunk.ChunkSection}
*/
ChunkSection getChunkSection(int height);
/**
* Установить секцию чанка
* @param height высота (0-15)
* @param chunkSection {@link mc.core.world.chunk.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);
}

View File

@@ -1,6 +1,12 @@
package mc.core.world.chunk;
public interface ChunkProvider {
/**
* Получить чанк по координатам
* @param x глобальный X
* @param z глобальный Z
* @return {@link mc.core.world.chunk.Chunk}
*/
Chunk getChunk(int x , int z);
void saveChunk(Chunk chunk);

View File

@@ -5,26 +5,108 @@ import mc.core.world.block.Block;
/* 16x16x16 */
public interface ChunkSection {
/**
* Глобальная координата X
* @return
*/
int getX();
/**
* Высота
* @return
*/
int getY();
/**
* Глобальная координата Z
* @return
*/
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);
/**
* Получить блок по внутренним координатам
* @param x X
* @param y Y
* @param z Z
* @return {@link mc.core.world.block.Block}
* Получить данные о естественной подсветке
* @param x глобальный X
* @param y глобальный Y
* @param z глобальный Z
* @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);
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);
}