diff --git a/Minecraft.Client/SDK.cpp b/Minecraft.Client/SDK.cpp index 1c4490e7..cb4d99d7 100644 --- a/Minecraft.Client/SDK.cpp +++ b/Minecraft.Client/SDK.cpp @@ -319,4 +319,37 @@ bool SDK::IsFlightAllowed() { void SDK::SetFlightAllowed(bool enabled) { MinecraftServer* s = GetServer(); if (s) s->setFlightAllowed(enabled); +} + +// ============================================================================ +// Chunk / Block / World Data +// ============================================================================ + +int SDK::GetTile(int x, int y, int z, int dimension) { + ServerLevel* level = GetServerLevel(dimension); + return level ? level->getTile(x, y, z) : 0; +} + +void SDK::SetTileAndUpdate(int x, int y, int z, int tileId, int dimension) { + ServerLevel* level = GetServerLevel(dimension); + if (level) level->setTileAndUpdate(x, y, z, tileId); +} + +Biome* SDK::GetBiomeAt(int x, int z, int dimension) { + ServerLevel* level = GetServerLevel(dimension); + return level ? level->getBiome(x, z) : nullptr; +} + +std::vector>* SDK::GetTileEntitiesInRegion( + int x0, int y0, int z0, + int x1, int y1, int z1, + int dimension) +{ + ServerLevel* level = GetServerLevel(dimension); + return level ? level->getTileEntitiesInRegion(x0, y0, z0, x1, y1, z1) : nullptr; +} + +bool SDK::IsChunkLoaded(int chunkX, int chunkZ, int dimension) { + ServerLevel* level = GetServerLevel(dimension); + return level ? level->getChunk(chunkX, chunkZ) != nullptr : false; } \ No newline at end of file diff --git a/Minecraft.Client/SDK.h b/Minecraft.Client/SDK.h index 3500a2d0..728f6f61 100644 --- a/Minecraft.Client/SDK.h +++ b/Minecraft.Client/SDK.h @@ -90,4 +90,19 @@ namespace SDK { MODAPI void SetPvpAllowed(bool enabled); MODAPI bool IsFlightAllowed(); MODAPI void SetFlightAllowed(bool enabled); + + // Block reading/writing + MODAPI int GetTile(int x, int y, int z, int dimension = 0); + MODAPI void SetTileAndUpdate(int x, int y, int z, int tileId, int dimension = 0); + + // Biome + MODAPI Biome* GetBiomeAt(int x, int z, int dimension = 0); + + // Tile Entities (chests, furnaces etc) + MODAPI std::vector>* GetTileEntitiesInRegion( + int x0, int y0, int z0, + int x1, int y1, int z1, + int dimension = 0); + + MODAPI bool IsChunkLoaded(int chunkX, int chunkZ, int dimension = 0); } \ No newline at end of file