/minecraftmap

Simple Python 3 editor for Minecraft Maps (the item) in NBT format.

Primary LanguagePythonMIT LicenseMIT

Minecraft Maps Editor

Simple Python 3 editor for Minecraft maps (the item) in NBT format. Allows editing the map image with the Python Image Library or by editing bytes in the color native format.

Usage:

import minecraftmap
filepath = "/Users/spookymushroom/AppData/Roaming/.minecraft/saves/Test World/data/map_0.dat"

# The False eco value indicates that __init__ should run genimage to update im (the PIL image)
m = minecraftmap.Map(filepath,eco=False)

# The '8' byte in Minecraft's color format is equivalent to (174, 164, 115)
print(m.allcolors[8])

# The allcolorsinversemap dictionary will return the byte value of a color
# when any native Minecraft map color is passed into it
print(m.allcolorsinversemap[(174, 164, 115)])

if m.getbyte(6747) != 8:
   m.setbyte(6747,8)

# Equivalent to getbyte(6747) for a 128x128 map
if m.getpoint((91,52)) != 8:
   m.setpoint((91,52),8)

# Updates Map.im (PIL) to match Map.file (NBT)
m.genimage()

# PIL methods, m.font defaults to Andrew Tyler's Minecraftia
m.draw.rectangle((0,0,30,30),fill=(56,58,89))
m.draw.text((40,40),"testing",font=m.font)

# Save Map.im (The PIL.Image object) to a file
m.saveimagepng("map_0.png") #front-end for m.im.save
m.saveimagejpg("map_0.jpg") #front-end for m.im.save

# PIL.Image.save method
m.im.save("map_0_customqual.jpg","JPEG",quality=80)

# Updates Map.file (NBT data) to match Map.im (PIL image)
# Versions before 0.2 require that the image contains only native colors
m.imagetonbt()

# Saves Map.file to an NBT file
# If filename argument is left blank, it saves data to
# the original file as identified by m.file.filename
print(m.file.filename)
m.savenbt()
Requires:Thomas Woolford's NBT library
Requires:Python Image Library (Pillow)
Includes:Andrew Tyler's Minecraftia font