Fix missing ignore textures (#7326)
authoryou <ovvv@web.de>
Sun, 20 May 2018 12:51:50 +0000 (14:51 +0200)
committerSmallJoker <SmallJoker@users.noreply.github.com>
Sun, 20 May 2018 12:51:50 +0000 (14:51 +0200)
builtin/game/register.lua
src/nodedef.cpp
src/script/lua_api/l_item.cpp

index 43bb9e0678f65a1e72f290ebf0233fad1f296867..15c08b045ba4d5089865b87049ff05d8049e4d50 100644 (file)
@@ -116,8 +116,6 @@ function core.register_item(name, itemdef)
        end
        itemdef.name = name
 
-       local is_overriding = core.registered_items[name]
-
        -- Apply defaults and add to registered_* table
        if itemdef.type == "node" then
                -- Use the nodebox as selection box if it's not set manually
@@ -179,13 +177,7 @@ function core.register_item(name, itemdef)
        --core.log("Registering item: " .. itemdef.name)
        core.registered_items[itemdef.name] = itemdef
        core.registered_aliases[itemdef.name] = nil
-
-       -- Used to allow builtin to register ignore to registered_items
-       if name ~= "ignore" then
-               register_item_raw(itemdef)
-       elseif is_overriding then
-               core.log("warning", "Attempted redefinition of \"ignore\"")
-       end
+       register_item_raw(itemdef)
 end
 
 function core.unregister_item(name)
index e40a45f972665bf8a8d197532d490551dbd41de2..c3f2ccd601eec199b209091fe7260253cecd4b45 100644 (file)
@@ -1228,15 +1228,9 @@ content_t NodeDefManager::set(const std::string &name, const ContentFeatures &de
 {
        // Pre-conditions
        assert(name != "");
+       assert(name != "ignore");
        assert(name == def.name);
 
-       // Don't allow redefining ignore (but allow air and unknown)
-       if (name == "ignore") {
-               warningstream << "NodeDefManager: Ignoring "
-                       "CONTENT_IGNORE redefinition"<<std::endl;
-               return CONTENT_IGNORE;
-       }
-
        content_t id = CONTENT_IGNORE;
        if (!m_name_id_mapping.getId(name, id)) { // ignore aliases
                // Get new id
index d7e9f0a5bb89861482a99d5f8a703c0aef74f69e..46c1c98a019a080720f83d057b0bdd6b2a6b68b4 100644 (file)
@@ -536,11 +536,16 @@ int ModApiItemMod::l_register_item_raw(lua_State *L)
        idef->registerItem(def);
 
        // Read the node definition (content features) and register it
-       if(def.type == ITEM_NODE){
+       if (def.type == ITEM_NODE) {
                ContentFeatures f = read_content_features(L, table);
+               // when a mod reregisters ignore, only texture changes and such should
+               // be done
+               if (f.name == "ignore")
+                       return 0;
+
                content_t id = ndef->set(f.name, f);
 
-               if(id > MAX_REGISTERED_CONTENT){
+               if (id > MAX_REGISTERED_CONTENT) {
                        throw LuaError("Number of registerable nodes ("
                                        + itos(MAX_REGISTERED_CONTENT+1)
                                        + ") exceeded (" + name + ")");