From 390c0cd69185b3be7f6f49d7f8fe53f901edf5aa Mon Sep 17 00:00:00 2001 From: kwolekr Date: Sat, 6 Dec 2014 18:39:05 -0500 Subject: [PATCH] Schematics: Fix minetest.place_schematic() when defined by a Lua table --- src/mg_schematic.cpp | 2 +- src/script/common/c_content.cpp | 11 +++++++---- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/src/mg_schematic.cpp b/src/mg_schematic.cpp index 92cbf8e4e..d203a7105 100644 --- a/src/mg_schematic.cpp +++ b/src/mg_schematic.cpp @@ -57,7 +57,7 @@ void Schematic::updateContentIds() flags |= SCHEM_CIDS_UPDATED; - for (int i = 0; i != size.X * size.Y * size.Z; i++) + for (size_t i = 0; i != size.X * size.Y * size.Z; i++) schemdata[i].setContent(c_nodes[schemdata[i].getContent()]); } diff --git a/src/script/common/c_content.cpp b/src/script/common/c_content.cpp index bf4da41ec..799251bcf 100644 --- a/src/script/common/c_content.cpp +++ b/src/script/common/c_content.cpp @@ -267,7 +267,7 @@ ContentFeatures read_content_features(lua_State *L, int index) lua_getfield(L, index, "on_rightclick"); f.rightclickable = lua_isfunction(L, -1); lua_pop(L, 1); - + /* Name */ getstringfield(L, index, "name", f.name); @@ -1039,7 +1039,7 @@ bool read_schematic(lua_State *L, int index, Schematic *schem, //// Get schematic data lua_getfield(L, index, "data"); luaL_checktype(L, -1, LUA_TTABLE); - + int numnodes = size.X * size.Y * size.Z; MapNode *schemdata = new MapNode[numnodes]; int i = 0; @@ -1069,7 +1069,7 @@ bool read_schematic(lua_State *L, int index, Schematic *schem, schemdata[i] = MapNode(ndef, name, param1, param2); } - + i++; lua_pop(L, 1); } @@ -1098,7 +1098,10 @@ bool read_schematic(lua_State *L, int index, Schematic *schem, } } - schem->flags = 0; + // Here, we read the nodes directly from the INodeDefManager - there is no + // need for pending node resolutions so we'll mark this schematic as updated + schem->flags = SCHEM_CIDS_UPDATED; + schem->size = size; schem->schemdata = schemdata; schem->slice_probs = slice_probs;