]> git.lizzy.rs Git - dragonfireclient.git/blobdiff - src/gui/guiFormSpecMenu.cpp
Formspecs: Introduce formspec_version to mods
[dragonfireclient.git] / src / gui / guiFormSpecMenu.cpp
index e02abf018a422953b579bbb6e42499d2ccf5a6b3..f291b4e877b09747bf4d9632ba4c958638799274 100644 (file)
@@ -2167,6 +2167,9 @@ void GUIFormSpecMenu::parseElement(parserData* data, const std::string &element)
        if (element.empty())
                return;
 
+       if (parseVersionDirect(element))
+               return;
+
        std::vector<std::string> parts = split(element,'[');
 
        // ugly workaround to keep compatibility
@@ -2503,7 +2506,7 @@ void GUIFormSpecMenu::regenerateGui(v2u32 screensize)
        }
 
        /* Copy of the "real_coordinates" element for after the form size. */
-       mydata.real_coordinates = false;
+       mydata.real_coordinates = m_formspec_version >= 2;
        for (; i < elements.size(); i++) {
                std::vector<std::string> parts = split(elements[i], '[');
                std::string name = trim(parts[0]);
@@ -2648,10 +2651,14 @@ void GUIFormSpecMenu::regenerateGui(v2u32 screensize)
        if (enable_prepends) {
                // Backup the coordinates so that prepends can use the coordinates of choice.
                bool rc_backup = mydata.real_coordinates;
+               bool version_backup = m_formspec_version;
                mydata.real_coordinates = false; // Old coordinates by default.
+
                std::vector<std::string> prepend_elements = split(m_formspec_prepend, ']');
                for (const auto &element : prepend_elements)
                        parseElement(&mydata, element);
+
+               m_formspec_version = version_backup;
                mydata.real_coordinates = rc_backup; // Restore coordinates
        }