0

fixed rotated renders for anvil-formatted worlds

This commit is contained in:
Andrew Brown
2012-02-25 15:01:55 -05:00
parent aa49321efd
commit 72f292104a
2 changed files with 11 additions and 5 deletions

View File

@@ -45,7 +45,7 @@ def checkBadEscape(s):
def validateWorldPath(worldpath):
_, worldpath = checkBadEscape(worldpath)
abs_path = os.path.abspath(worldpath)
abs_path = os.path.abspath(os.path.expanduser(worldpath))
if not os.path.exists(os.path.join(abs_path, "level.dat")):
raise ValidationException("No level.dat file in '%s'. Are you sure you have the right path?" % (abs_path,))
return abs_path

View File

@@ -465,10 +465,16 @@ class RotatedRegionSet(RegionSet):
def get_chunk(self, x, z):
x,z = self.unrotate(x,z)
chunk_data = super(RotatedRegionSet, self).get_chunk(x,z)
chunk_data['Blocks'] = numpy.rot90(chunk_data['Blocks'], self.north_dir)
chunk_data['Data'] = numpy.rot90(chunk_data['Data'], self.north_dir)
chunk_data['SkyLight'] = numpy.rot90(chunk_data['SkyLight'], self.north_dir)
chunk_data['BlockLight'] = numpy.rot90(chunk_data['BlockLight'], self.north_dir)
for section in chunk_data['Sections']:
for arrayname in ['Blocks', 'Data', 'SkyLight', 'BlockLight']:
array = section[arrayname]
# New arrays are arranged with axes Y,Z,X
# numpy.rot90 always rotates the first two axes, so for it to
# work, we need to temporarily more the X axis to the 0th axis.
array = numpy.swapaxes(array, 0,2)
array = numpy.rot90(array, self.north_dir)
array = numpy.swapaxes(array, 0,2)
section[arrayname] = array
return chunk_data
def get_chunk_mtime(self, x, z):