diff --git a/overviewer_core/settingsValidators.py b/overviewer_core/settingsValidators.py index 2cbeaaf..95a958d 100644 --- a/overviewer_core/settingsValidators.py +++ b/overviewer_core/settingsValidators.py @@ -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 diff --git a/overviewer_core/world.py b/overviewer_core/world.py index dd67180..33456d8 100644 --- a/overviewer_core/world.py +++ b/overviewer_core/world.py @@ -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):