1
0
Fork 0
mirror of https://github.com/luanti-org/luanti.git synced 2025-06-27 16:36:03 +00:00

Decoration: Fix schematic probability mess with new MTS file version

This commit is contained in:
kwolekr 2013-08-04 22:59:22 -04:00
parent 56b9377c1c
commit c06caa14c3
8 changed files with 75 additions and 37 deletions

View file

@ -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);

View file

@ -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);