ServerRemotePlayer implements ServerActiveObject
[oweals/minetest.git] / src / voxel.h
index eced43ed544f50134badeaae38e8ed22e9834186..51df18299af620401c58f09e6a466ef32c278e99 100644 (file)
@@ -373,6 +373,42 @@ public:
 
                return m_data[m_area.index(p)];
        }
+       MapNode getNodeNoEx(v3s16 p)
+       {
+               emerge(p);
+
+               if(m_flags[m_area.index(p)] & VOXELFLAG_INEXISTENT)
+               {
+                       return MapNode(CONTENT_IGNORE);
+               }
+
+               return m_data[m_area.index(p)];
+       }
+       MapNode getNodeNoExNoEmerge(v3s16 p)
+       {
+               if(m_area.contains(p) == false)
+                       return MapNode(CONTENT_IGNORE);
+               if(m_flags[m_area.index(p)] & VOXELFLAG_INEXISTENT)
+                       return MapNode(CONTENT_IGNORE);
+               return m_data[m_area.index(p)];
+       }
+       MapNode & getNodeRef(v3s16 p)
+       {
+               emerge(p);
+
+               if(m_flags[m_area.index(p)] & VOXELFLAG_INEXISTENT)
+               {
+                       dstream<<"EXCEPT: VoxelManipulator::getNode(): "
+                                       <<"p=("<<p.X<<","<<p.Y<<","<<p.Z<<")"
+                                       <<", index="<<m_area.index(p)
+                                       <<", flags="<<(int)m_flags[m_area.index(p)]
+                                       <<" is inexistent"<<std::endl;
+                       throw InvalidPositionException
+                       ("VoxelManipulator: getNode: inexistent");
+               }
+
+               return m_data[m_area.index(p)];
+       }
        void setNode(v3s16 p, MapNode &n)
        {
                emerge(p);
@@ -417,12 +453,14 @@ public:
                if(m_area.contains(p) == false)
                        return false;
                m_data[m_area.index(p)] = n;
+               return true;
        }
        bool setNodeNoEmerge(s32 i, MapNode n)
        {
                if(m_area.contains(i) == false)
                        return false;
                m_data[i] = n;
+               return true;
        }
        /*bool setContentNoEmerge(v3s16 p, u8 c)
        {
@@ -525,7 +563,7 @@ public:
        /*
                Some settings
        */
-       bool m_disable_water_climb;
+       //bool m_disable_water_climb;
 
 private:
 };