def _biomes_from_universal(translator_version: "Version", chunk: Chunk): chunk._biome_palette = BiomeManager( [ translator_version.biome.from_universal(biome) for biome in chunk.biome_palette ] )
def _unpack_biomes( translation_manager: "TranslationManager", version_identifier: VersionIdentifierType, chunk: Chunk, ): """ Unpack the version-specific biome_palette into the stringified version where needed. :return: The biome_palette converted to biome objects. """ version = translation_manager.get_version(*version_identifier) if chunk.biomes.dimension == BiomesShape.Shape2D: biome_int_palette, biome_array = numpy.unique( chunk.biomes, return_inverse=True ) chunk.biomes = biome_array.reshape(chunk.biomes.shape) chunk._biome_palette = BiomeManager( [version.biome.unpack(biome) for biome in biome_int_palette] ) elif chunk.biomes.dimension == BiomesShape.Shape3D: biomes = {} palette = [] palette_length = 0 for sy in chunk.biomes.sections: biome_int_palette, biome_array = numpy.unique( chunk.biomes.get_section(sy), return_inverse=True ) biomes[sy] = ( biome_array.reshape(chunk.biomes.section_shape) + palette_length ) palette_length += len(biome_int_palette) palette.append(biome_int_palette) if palette: chunk_palette, lut = numpy.unique( numpy.concatenate(palette), return_inverse=True ) lut = lut.astype(numpy.uint32) for sy in biomes: biomes[sy] = lut[biomes[sy]] chunk.biomes = biomes chunk._biome_palette = BiomeManager( numpy.vectorize(version.biome.unpack)(chunk_palette) )
def _pack_biomes( translation_manager: "TranslationManager", version_identifier: VersionIdentifierType, chunk: Chunk, ): """ Unpack the version-specific biome_palette into the stringified version where needed. :return: The biome_palette converted to biome objects. """ version = translation_manager.get_version(*version_identifier) biome_palette = numpy.array( [version.biome.pack(biome) for biome in chunk.biome_palette] ) chunk.biomes = biome_palette[chunk.biomes] chunk._biome_palette = BiomeManager()
def _unpack_biomes( translation_manager: "TranslationManager", version_identifier: VersionIdentifierType, chunk: Chunk, ): """ Unpack the version-specific biome_palette into the stringified version where needed. :return: The biome_palette converted to biome objects. """ version = translation_manager.get_version(*version_identifier) biome_int_palette, biome_array = numpy.unique(chunk.biomes, return_inverse=True) chunk.biomes = biome_array chunk._biome_palette = BiomeManager( [version.biome.unpack(biome) for biome in biome_int_palette] )
def _pack_biomes( translation_manager: "TranslationManager", version_identifier: VersionIdentifierType, chunk: Chunk, ): """ Unpack the version-specific biome_palette into the stringified version where needed. :return: The biome_palette converted to biome objects. """ version = translation_manager.get_version(*version_identifier) biome_palette = numpy.array( [version.biome.pack(biome) for biome in chunk.biome_palette], numpy.uint32 ) if chunk.biomes.dimension == BiomesShape.Shape2D: chunk.biomes = biome_palette[chunk.biomes] elif chunk.biomes.dimension == BiomesShape.Shape3D: chunk.biomes = { sy: biome_palette[chunk.biomes.get_section(sy)] for sy in chunk.biomes.sections } chunk._biome_palette = BiomeManager()