def get_blockstate(self, blockstate: str) -> Block: """ Converts a version-specific blockstate string into a :class:`api.blocks.Block` object by parsing the blockstate and handling any addition logic that needs to be done (IE: Adding an extra block when `waterlogged=true` for Java edition). This method is replaced at runtime with the version specific handler. :param blockstate: The blockstate string to parse/convert :return: The resulting Block object """ namespace, base_name, properties = Block.parse_blockstate_string(blockstate) return Block(namespace=namespace, base_name=base_name, properties=properties)
def parse_blockstate(blockstate: str) -> Block: namespace, base_name, properties = Block.parse_blockstate_string(blockstate) if properties.pop("waterlogged", "false").lower() == "true": block = Block( namespace=namespace, base_name=base_name, properties=properties, extra_blocks=(_WATER_CONSTANT,), ) else: block = Block(namespace=namespace, base_name=base_name, properties=properties) return block