示例#1
0
 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
         ]
     )
示例#2
0
    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)
                )
示例#3
0
    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()
示例#4
0
    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]
        )
示例#5
0
    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()