From 43db8ebba13d7aee82046533db70169c04bd6972 Mon Sep 17 00:00:00 2001 From: MihailRis Date: Sun, 18 Feb 2024 22:16:18 +0300 Subject: [PATCH] lua: added set_block_states --- src/logic/scripting/lua/LuaState.cpp | 1 + src/logic/scripting/lua/api_lua.cpp | 17 +++++++++++++++++ src/logic/scripting/lua/api_lua.h | 1 + 3 files changed, 19 insertions(+) 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);