diff --git a/src/logic/scripting/lua/LuaState.cpp b/src/logic/scripting/lua/LuaState.cpp index 174972b8..0ab5906f 100644 --- a/src/logic/scripting/lua/LuaState.cpp +++ b/src/logic/scripting/lua/LuaState.cpp @@ -115,6 +115,7 @@ void lua::LuaState::createFuncs() { addfunc("get_block_Y", lua_wrap_errors); addfunc("get_block_Z", lua_wrap_errors); addfunc("get_block_states", lua_wrap_errors); + addfunc("set_block_states", lua_wrap_errors); addfunc("get_block_user_bits", lua_wrap_errors); addfunc("set_block_user_bits", lua_wrap_errors); } diff --git a/src/logic/scripting/lua/api_lua.cpp b/src/logic/scripting/lua/api_lua.cpp index 4c374d15..01e6d3b9 100644 --- a/src/logic/scripting/lua/api_lua.cpp +++ b/src/logic/scripting/lua/api_lua.cpp @@ -15,6 +15,7 @@ #include "../../../voxels/Block.h" #include "../../../voxels/Chunks.h" #include "../../../voxels/voxel.h" +#include "../../../voxels/Chunk.h" #include "../../../items/ItemDef.h" #include "../../../items/ItemStack.h" #include "../../../items/Inventory.h" @@ -428,6 +429,22 @@ int l_get_block_states(lua_State* L) { return 1; } +int l_set_block_states(lua_State* L) { + lua::luaint x = lua_tointeger(L, 1); + lua::luaint y = lua_tointeger(L, 2); + lua::luaint z = lua_tointeger(L, 3); + lua::luaint states = lua_tointeger(L, 4); + + Chunk* chunk = scripting::level->chunks->getChunkByVoxel(x, y, z); + if (chunk == nullptr) { + return 0; + } + voxel* vox = scripting::level->chunks->get(x, y, z); + vox->states = states; + chunk->setModified(true); + return 0; +} + int l_get_block_user_bits(lua_State* L) { lua::luaint x = lua_tointeger(L, 1); lua::luaint y = lua_tointeger(L, 2); diff --git a/src/logic/scripting/lua/api_lua.h b/src/logic/scripting/lua/api_lua.h index e9dc0a1d..c92913cd 100644 --- a/src/logic/scripting/lua/api_lua.h +++ b/src/logic/scripting/lua/api_lua.h @@ -132,6 +132,7 @@ extern int l_get_block_x(lua_State* L); extern int l_get_block_y(lua_State* L); extern int l_get_block_z(lua_State* L); extern int l_get_block_states(lua_State* L); +extern int l_set_block_states(lua_State* L); extern int l_get_block_user_bits(lua_State* L); extern int l_set_block_user_bits(lua_State* L); extern int l_is_replaceable_at(lua_State* L);