diff options
author | kwolekr <kwolekr@minetest.net> | 2013-08-04 22:59:22 -0400 |
---|---|---|
committer | kwolekr <kwolekr@minetest.net> | 2013-08-11 15:34:49 -0400 |
commit | c06caa14c31ffa480146a7dbb7094224a486c1bd (patch) | |
tree | aa647a832e856a9b71e5fed67a74cee52f405f6e /src/script | |
parent | 56b9377c1c55a08eb5ae09c058f9f1cb8e9e4a73 (diff) | |
download | minetest-c06caa14c31ffa480146a7dbb7094224a486c1bd.tar.gz minetest-c06caa14c31ffa480146a7dbb7094224a486c1bd.tar.bz2 minetest-c06caa14c31ffa480146a7dbb7094224a486c1bd.zip |
Decoration: Fix schematic probability mess with new MTS file version
Diffstat (limited to 'src/script')
-rw-r--r-- | src/script/common/c_content.cpp | 20 | ||||
-rw-r--r-- | src/script/lua_api/luaapi.cpp | 11 |
2 files changed, 21 insertions, 10 deletions
diff --git a/src/script/common/c_content.cpp b/src/script/common/c_content.cpp index f9765b655..ca7c7fde9 100644 --- a/src/script/common/c_content.cpp +++ b/src/script/common/c_content.cpp @@ -956,8 +956,24 @@ bool read_schematic(lua_State *L, int index, DecoSchematic *dschem, Server *serv lua_pushnil(L); while (lua_next(L, -2)) { - if (i < numnodes) - schemdata[i] = readnode(L, -1, ndef); + if (i < numnodes) { + // same as readnode, except param1 default is MTSCHEM_PROB_CONST + lua_getfield(L, -1, "name"); + const char *name = luaL_checkstring(L, -1); + lua_pop(L, 1); + + u8 param1; + lua_getfield(L, -1, "param1"); + param1 = !lua_isnil(L, -1) ? lua_tonumber(L, -1) : MTSCHEM_PROB_ALWAYS; + lua_pop(L, 1); + + u8 param2; + lua_getfield(L, -1, "param2"); + param2 = !lua_isnil(L, -1) ? lua_tonumber(L, -1) : 0; + lua_pop(L, 1); + + schemdata[i] = MapNode(ndef, name, param1, param2); + } i++; lua_pop(L, 1); diff --git a/src/script/lua_api/luaapi.cpp b/src/script/lua_api/luaapi.cpp index 929aa40d0..26fb0c318 100644 --- a/src/script/lua_api/luaapi.cpp +++ b/src/script/lua_api/luaapi.cpp @@ -867,7 +867,7 @@ int ModApiBasic::l_create_schematic(lua_State *L) v3s16 p2 = read_v3s16(L, 2); sortBoxVerticies(p1, p2); - std::vector<std::pair<v3s16, s16> > probability_list; + std::vector<std::pair<v3s16, u8> > probability_list; if (lua_istable(L, 3)) { lua_pushnil(L); while (lua_next(L, 3)) { @@ -876,13 +876,8 @@ int ModApiBasic::l_create_schematic(lua_State *L) v3s16 pos = read_v3s16(L, -1); lua_pop(L, 1); - s16 prob = getintfield_default(L, -1, "prob", 0); - if (prob < -1 || prob >= UCHAR_MAX) { - errorstream << "create_schematic: probability value of " - << prob << " at " << PP(pos) << " out of range" << std::endl; - } else { - probability_list.push_back(std::make_pair(pos, prob)); - } + u8 prob = getintfield_default(L, -1, "prob", 0xFF); + probability_list.push_back(std::make_pair(pos, prob)); } lua_pop(L, 1); |