aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPerttu Ahola <celeron55@gmail.com>2010-11-29 12:16:17 +0200
committerPerttu Ahola <celeron55@gmail.com>2010-11-29 12:16:17 +0200
commitc18af6e728fc15ccec65c5c3c8a5c44f0d0a86a1 (patch)
treefef01c5239c0ed359737038ba3fe9d1dc24ade6f
parentb326e75baac47c616913b91b94ff542f0d3c4f92 (diff)
downloadminetest-c18af6e728fc15ccec65c5c3c8a5c44f0d0a86a1.tar.gz
minetest-c18af6e728fc15ccec65c5c3c8a5c44f0d0a86a1.tar.bz2
minetest-c18af6e728fc15ccec65c5c3c8a5c44f0d0a86a1.zip
- added map generating script
- dropped support for versions older than 2 because of lighting support
-rwxr-xr-xgenmap.py38
-rw-r--r--src/client.cpp4
-rw-r--r--src/map.cpp60
-rw-r--r--src/serialization.h4
4 files changed, 66 insertions, 40 deletions
diff --git a/genmap.py b/genmap.py
new file mode 100755
index 000000000..8949888a4
--- /dev/null
+++ b/genmap.py
@@ -0,0 +1,38 @@
+#!/usr/bin/python
+
+import struct
+import random
+
+def getrand():
+ i = random.randrange(0,2)
+ if i==0:
+ return 0
+ return 254
+
+"""
+Map format:
+map/sectors/XXXXZZZZ/YYYY
+
+XXXX,YYYY,ZZZZ = coordinates in hexadecimal
+
+fffe = -2
+ffff = -1
+0000 = 0
+0001 = 1
+"""
+
+f = open("map/sectors/00000000/ffff", "wb")
+
+# version
+f.write(struct.pack('B', 2))
+# is_underground
+f.write(struct.pack('B', 0))
+
+for i in range(0,16*16*16):
+ # Material content
+ f.write(struct.pack('B', getrand()))
+ # Brightness
+ f.write(struct.pack('B', 15))
+
+f.close()
+
diff --git a/src/client.cpp b/src/client.cpp
index cf9feed7d..b461549d2 100644
--- a/src/client.cpp
+++ b/src/client.cpp
@@ -148,9 +148,9 @@ void Client::step(float dtime)
counter -= dtime;
if(counter <= 0.0)
{
- counter = 10.0;
+ counter = 20.0;
- dout_client<<"Client packetcounter:"<<std::endl;
+ dout_client<<"Client packetcounter (20s):"<<std::endl;
m_packetcounter.print(dout_client);
m_packetcounter.clear();
}
diff --git a/src/map.cpp b/src/map.cpp
index f5b63d5af..1fbaf0899 100644
--- a/src/map.cpp
+++ b/src/map.cpp
@@ -1780,16 +1780,15 @@ MapBlock * ServerMap::emergeBlock(
MapNode n;
n.d = MATERIAL_MESE;
- if(rand()%8 == 0)
- block->setNode(cp, n);
+ if(is_ground_material(block->getNode(cp).d))
+ if(rand()%8 == 0)
+ block->setNode(cp, n);
for(u16 i=0; i<26; i++)
{
- if(!is_ground_material(block->getNode(cp+g_26dirs[i]).d))
- continue;
-
- if(rand()%8 == 0)
- block->setNode(cp+g_26dirs[i], n);
+ if(is_ground_material(block->getNode(cp+g_26dirs[i]).d))
+ if(rand()%8 == 0)
+ block->setNode(cp+g_26dirs[i], n);
}
}
}
@@ -1798,15 +1797,25 @@ MapBlock * ServerMap::emergeBlock(
/*
Create a few rats in empty blocks underground
*/
- /*if(is_underground && low_block_is_empty == true)
+ if(is_underground)
{
//for(u16 i=0; i<2; i++)
{
- v3s16 pos(8, 1, 8);
- RatObject *obj = new RatObject(NULL, -1, intToFloat(pos));
- block->addObject(obj);
+ v3s16 cp(
+ (rand()%(MAP_BLOCKSIZE-2))+1,
+ (rand()%(MAP_BLOCKSIZE-2))+1,
+ (rand()%(MAP_BLOCKSIZE-2))+1
+ );
+
+ // Check that the place is empty
+ //if(!is_ground_material(block->getNode(cp).d))
+ if(1)
+ {
+ RatObject *obj = new RatObject(NULL, -1, intToFloat(cp));
+ block->addObject(obj);
+ }
}
- }*/
+ }
/*
Add block to sector.
@@ -2491,31 +2500,8 @@ void ServerMap::loadBlock(std::string sectordir, std::string blockfile, MapSecto
Convert old formats to new and save
*/
- if(version == 0 || version == 1)
- {
- dstream<<"Block ("<<p3d.X<<","<<p3d.Y<<","<<p3d.Z<<")"
- " is in old format. Updating lighting and saving"
- " modified blocks in new format."<<std::endl;
-
- // Old version has zero lighting, update it
- core::map<v3s16, MapBlock*> blocks_changed;
- blocks_changed.insert(block->getPos(), block);
- core::map<v3s16, MapBlock*> modified_blocks;
- updateLighting(blocks_changed, modified_blocks);
-
- // Close input file
- is.close();
-
- // Save modified blocks
- core::map<v3s16, MapBlock * >::Iterator i = modified_blocks.getIterator();
- for(; i.atEnd() == false; i++)
- {
- MapBlock *b2 = i.getNode()->getValue();
- saveBlock(b2);
- }
- }
- // Save blocks in new format
- else if(version < SER_FMT_VER_HIGHEST)
+ // Save old format blocks in new format
+ if(version < SER_FMT_VER_HIGHEST)
{
saveBlock(block);
}
diff --git a/src/serialization.h b/src/serialization.h
index fd9b39535..b55625a4b 100644
--- a/src/serialization.h
+++ b/src/serialization.h
@@ -15,8 +15,10 @@
loadable by any version. Other compatibility is not
maintained.
Serialization format versions:
+ == Unsupported ==
0: original networked test with 1-byte nodes
1: update with 2-byte nodes
+ == Supported ==
2: lighting is transmitted in param
3: optional fetching of far blocks
4: block compression
@@ -31,7 +33,7 @@
// Highest supported serialization version
#define SER_FMT_VER_HIGHEST 9
// Lowest supported serialization version
-#define SER_FMT_VER_LOWEST 0
+#define SER_FMT_VER_LOWEST 2
#define ser_ver_supported(v) (v >= SER_FMT_VER_LOWEST && v <= SER_FMT_VER_HIGHEST)