Translated using Weblate (Japanese)
[oweals/minetest.git] / src / mapblock.cpp
index 7ad67c589640a2ff8586618f6e9df8c7b0235069..346f01a0b2038a193174160275b3805aca9cf207 100644 (file)
@@ -57,7 +57,7 @@ static const char *modified_reason_strings[] = {
        "deactivateFarObjects: Static data moved in",
        "deactivateFarObjects: Static data moved out",
        "deactivateFarObjects: Static data changed considerably",
-       "finishBlockMake: expireDayNightDiff"
+       "finishBlockMake: expireDayNightDiff",
        "unknown",
 };
 
@@ -69,6 +69,7 @@ static const char *modified_reason_strings[] = {
 MapBlock::MapBlock(Map *parent, v3s16 pos, IGameDef *gamedef, bool dummy):
                m_parent(parent),
                m_pos(pos),
+               m_pos_relative(pos * MAP_BLOCKSIZE),
                m_gamedef(gamedef),
                m_modified(MOD_STATE_WRITE_NEEDED),
                m_modified_reason(MOD_REASON_INITIAL),
@@ -95,7 +96,7 @@ MapBlock::~MapBlock()
 {
 #ifndef SERVER
        {
-               //JMutexAutoLock lock(mesh_mutex);
+               //MutexAutoLock lock(mesh_mutex);
 
                if(mesh)
                {
@@ -132,7 +133,7 @@ MapNode MapBlock::getNodeParent(v3s16 p, bool *is_valid_position)
        }
        if (is_valid_position)
                *is_valid_position = true;
-       return data[p.Z*MAP_BLOCKSIZE*MAP_BLOCKSIZE + p.Y*MAP_BLOCKSIZE + p.X];
+       return data[p.Z * zstride + p.Y * ystride + p.X];
 }
 
 std::string MapBlock::getModifiedReasonString()
@@ -388,7 +389,7 @@ void MapBlock::actuallyUpdateDayNightDiff()
        /*
                Check if any lighting value differs
        */
-       for (u32 i = 0; i < MAP_BLOCKSIZE*MAP_BLOCKSIZE*MAP_BLOCKSIZE; i++) {
+       for (u32 i = 0; i < nodecount; i++) {
                MapNode &n = data[i];
 
                differs = !n.isLightDayNightEq(nodemgr);
@@ -402,7 +403,7 @@ void MapBlock::actuallyUpdateDayNightDiff()
        */
        if (differs) {
                bool only_air = true;
-               for (u32 i = 0; i < MAP_BLOCKSIZE*MAP_BLOCKSIZE*MAP_BLOCKSIZE; i++) {
+               for (u32 i = 0; i < nodecount; i++) {
                        MapNode &n = data[i];
                        if (n.getContent() != CONTENT_AIR) {
                                only_air = false;
@@ -465,16 +466,15 @@ s16 MapBlock::getGroundLevel(v2s16 p2d)
 // sure we can handle all content ids. But it's absolutely worth it as it's
 // a speedup of 4 for one of the major time consuming functions on storing
 // mapblocks.
-static content_t getBlockNodeIdMapping_mapping[USHRT_MAX];
+static content_t getBlockNodeIdMapping_mapping[USHRT_MAX + 1];
 static void getBlockNodeIdMapping(NameIdMapping *nimap, MapNode *nodes,
                INodeDefManager *nodedef)
 {
-       memset(getBlockNodeIdMapping_mapping, 0xFF, USHRT_MAX * sizeof(content_t));
+       memset(getBlockNodeIdMapping_mapping, 0xFF, (USHRT_MAX + 1) * sizeof(content_t));
 
        std::set<content_t> unknown_contents;
        content_t id_counter = 0;
-       for(u32 i=0; i<MAP_BLOCKSIZE*MAP_BLOCKSIZE*MAP_BLOCKSIZE; i++)
-       {
+       for (u32 i = 0; i < MapBlock::nodecount; i++) {
                content_t global_id = nodes[i].getContent();
                content_t id = CONTENT_IGNORE;
 
@@ -501,7 +501,7 @@ static void getBlockNodeIdMapping(NameIdMapping *nimap, MapNode *nodes,
        }
        for(std::set<content_t>::const_iterator
                        i = unknown_contents.begin();
-                       i != unknown_contents.end(); i++){
+                       i != unknown_contents.end(); ++i){
                errorstream<<"getBlockNodeIdMapping(): IGNORING ERROR: "
                                <<"Name for node id "<<(*i)<<" not known"<<std::endl;
        }
@@ -519,8 +519,7 @@ static void correctBlockNodeIds(const NameIdMapping *nimap, MapNode *nodes,
        // correct ids.
        std::set<content_t> unnamed_contents;
        std::set<std::string> unallocatable_contents;
-       for(u32 i=0; i<MAP_BLOCKSIZE*MAP_BLOCKSIZE*MAP_BLOCKSIZE; i++)
-       {
+       for (u32 i = 0; i < MapBlock::nodecount; i++) {
                content_t local_id = nodes[i].getContent();
                std::string name;
                bool found = nimap->getName(local_id, name);
@@ -541,14 +540,14 @@ static void correctBlockNodeIds(const NameIdMapping *nimap, MapNode *nodes,
        }
        for(std::set<content_t>::const_iterator
                        i = unnamed_contents.begin();
-                       i != unnamed_contents.end(); i++){
+                       i != unnamed_contents.end(); ++i){
                errorstream<<"correctBlockNodeIds(): IGNORING ERROR: "
                                <<"Block contains id "<<(*i)
                                <<" with no name mapping"<<std::endl;
        }
        for(std::set<std::string>::const_iterator
                        i = unallocatable_contents.begin();
-                       i != unallocatable_contents.end(); i++){
+                       i != unallocatable_contents.end(); ++i){
                errorstream<<"correctBlockNodeIds(): IGNORING ERROR: "
                                <<"Could not allocate global id for node name \""
                                <<(*i)<<"\""<<std::endl;
@@ -583,7 +582,6 @@ void MapBlock::serialize(std::ostream &os, u8 version, bool disk)
                Bulk node data
        */
        NameIdMapping nimap;
-       u32 nodecount = MAP_BLOCKSIZE*MAP_BLOCKSIZE*MAP_BLOCKSIZE;
        if(disk)
        {
                MapNode *tmp_nodes = new MapNode[nodecount];
@@ -683,7 +681,6 @@ void MapBlock::deSerialize(std::istream &is, u8 version, bool disk)
        */
        TRACESTREAM(<<"MapBlock::deSerialize "<<PP(getPos())
                        <<": Bulk node data"<<std::endl);
-       u32 nodecount = MAP_BLOCKSIZE*MAP_BLOCKSIZE*MAP_BLOCKSIZE;
        u8 content_width = readU8(is);
        u8 params_width = readU8(is);
        if(content_width != 1 && content_width != 2)
@@ -786,8 +783,6 @@ void MapBlock::deSerializeNetworkSpecific(std::istream &is)
 
 void MapBlock::deSerialize_pre22(std::istream &is, u8 version, bool disk)
 {
-       u32 nodecount = MAP_BLOCKSIZE*MAP_BLOCKSIZE*MAP_BLOCKSIZE;
-
        // Initialize default flags
        is_underground = false;
        m_day_night_differs = false;