mirror of
https://github.com/luanti-org/luanti.git
synced 2025-06-27 16:36:03 +00:00
updated example map generator python script
This commit is contained in:
parent
50a8087684
commit
81ac026e1f
4 changed files with 176 additions and 22 deletions
91
genmap.py
91
genmap.py
|
@ -1,17 +1,12 @@
|
|||
#!/usr/bin/python
|
||||
#!/usr/bin/python2
|
||||
|
||||
"
|
||||
This is an example script that generates some valid map data.
|
||||
"
|
||||
# This is an example script that generates some valid map data.
|
||||
|
||||
import struct
|
||||
import random
|
||||
|
||||
def getrand():
|
||||
i = random.randrange(0,2)
|
||||
if i==0:
|
||||
return 0
|
||||
return 254
|
||||
import os
|
||||
import sys
|
||||
from pnoise import pnoise
|
||||
|
||||
"""
|
||||
Map format:
|
||||
|
@ -25,18 +20,72 @@ ffff = -1
|
|||
0001 = 1
|
||||
"""
|
||||
|
||||
f = open("map/sectors/00000000/ffff", "wb")
|
||||
def to4h(i):
|
||||
s = "";
|
||||
s += '{0:1x}'.format((i>>12) & 0x000f)
|
||||
s += '{0:1x}'.format((i>>8) & 0x000f)
|
||||
s += '{0:1x}'.format((i>>4) & 0x000f)
|
||||
s += '{0:1x}'.format((i>>0) & 0x000f)
|
||||
return s
|
||||
|
||||
# version
|
||||
f.write(struct.pack('B', 2))
|
||||
# is_underground
|
||||
f.write(struct.pack('B', 0))
|
||||
def getrand():
|
||||
i = random.randrange(0,2)
|
||||
if i==0:
|
||||
return 0
|
||||
return 254
|
||||
|
||||
for i in range(0,16*16*16):
|
||||
# Material content
|
||||
f.write(struct.pack('B', getrand()))
|
||||
# Brightness
|
||||
f.write(struct.pack('B', 15))
|
||||
def writeblock(mapdir, px,py,pz, version):
|
||||
sectordir = mapdir + "/sectors/" + to4h(px) + to4h(pz)
|
||||
|
||||
try:
|
||||
os.makedirs(sectordir)
|
||||
except OSError:
|
||||
pass
|
||||
|
||||
f.close()
|
||||
f = open(sectordir+"/"+to4h(py), "wb")
|
||||
|
||||
if version == 0:
|
||||
# version
|
||||
f.write(struct.pack('B', 0))
|
||||
# is_underground
|
||||
f.write(struct.pack('B', 0))
|
||||
elif version == 2:
|
||||
# version
|
||||
f.write(struct.pack('B', 2))
|
||||
# is_underground
|
||||
f.write(struct.pack('B', 0))
|
||||
|
||||
for z in range(0,16):
|
||||
for y in range(0,16):
|
||||
for x in range(0,16):
|
||||
b = 254
|
||||
r = 20.0*pnoise((px*16+x)/100.,(pz*16+z)/100.,0)
|
||||
r += 5.0*pnoise((px*16+x)/25.,(pz*16+z)/25.,0)
|
||||
#print("r="+str(r))
|
||||
y1 = py*16+y
|
||||
if y1 <= r-3:
|
||||
b = 0 #stone
|
||||
elif y1 <= r:
|
||||
b = 1 #grass
|
||||
elif y1 <= 1:
|
||||
b = 9 #water
|
||||
if version == 0:
|
||||
# Material content
|
||||
f.write(struct.pack('B', b))
|
||||
elif version == 2:
|
||||
# Material content
|
||||
f.write(struct.pack('B', b))
|
||||
# Brightness
|
||||
f.write(struct.pack('B', 15))
|
||||
|
||||
f.close()
|
||||
|
||||
mapdir = "map"
|
||||
|
||||
for z in range(-2,3):
|
||||
for y in range(-1,2):
|
||||
for x in range(-2,3):
|
||||
print("generating block "+str(x)+","+str(y)+","+str(z))
|
||||
writeblock(mapdir, x,y,z, 0)
|
||||
|
||||
#END
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue