+ void setParam1(u8 p) noexcept
+ {
+ param1 = p;
+ }
+ u8 getParam2() const noexcept
+ {
+ return param2;
+ }
+ void setParam2(u8 p) noexcept
+ {
+ param2 = p;
+ }
+
+ /*!
+ * Returns the color of the node.
+ *
+ * \param f content features of this node
+ * \param color output, contains the node's color.
+ */
+ void getColor(const ContentFeatures &f, video::SColor *color) const;
+
+ void setLight(LightBank bank, u8 a_light, const ContentFeatures &f) noexcept;
+
+ void setLight(LightBank bank, u8 a_light, const NodeDefManager *nodemgr);
+
+ /**
+ * Check if the light value for night differs from the light value for day.
+ *
+ * @return If the light values are equal, returns true; otherwise false
+ */
+ bool isLightDayNightEq(const NodeDefManager *nodemgr) const;
+
+ u8 getLight(LightBank bank, const NodeDefManager *nodemgr) const;
+
+ /*!
+ * Returns the node's light level from param1.
+ * If the node emits light, it is ignored.
+ * \param f the ContentFeatures of this node.
+ */
+ u8 getLightRaw(LightBank bank, const ContentFeatures &f) const noexcept;
+
+ /**
+ * This function differs from getLight(LightBank bank, NodeDefManager *nodemgr)
+ * in that the ContentFeatures of the node in question are not retrieved by
+ * the function itself. Thus, if you have already called nodemgr->get() to
+ * get the ContentFeatures you pass it to this function instead of the
+ * function getting ContentFeatures itself. Since NodeDefManager::get()
+ * is relatively expensive this can lead to significant performance
+ * improvements in some situations. Call this function if (and only if)
+ * you have already retrieved the ContentFeatures by calling
+ * NodeDefManager::get() for the node you're working with and the
+ * pre-conditions listed are true.
+ *
+ * @pre f != NULL
+ * @pre f->param_type == CPT_LIGHT
+ */
+ u8 getLightNoChecks(LightBank bank, const ContentFeatures *f) const noexcept;
+
+ bool getLightBanks(u8 &lightday, u8 &lightnight,
+ const NodeDefManager *nodemgr) const;
+