amulet-core 2.0a8__cp312-cp312-win_amd64.whl → 2.0.1a2.post250529084747__cp312-cp312-win_amd64.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of amulet-core might be problematic. Click here for more details.
- amulet/core/__init__.py +36 -0
- amulet/core/__pyinstaller/hook-amulet.core.py +4 -0
- amulet/core/_amulet_core.cp312-win_amd64.pyd +0 -0
- amulet/core/_amulet_core.pyi +7 -0
- amulet/{_version.py → core/_version.py} +3 -3
- amulet/core/amulet_core.dll +0 -0
- amulet/core/amulet_core.lib +0 -0
- amulet/core/amulet_coreConfig.cmake +18 -0
- amulet/{biome.pyi → core/biome/__init__.pyi} +3 -3
- amulet/core/biome/biome.hpp +53 -0
- amulet/{block.pyi → core/block/__init__.pyi} +25 -26
- amulet/core/block/block.hpp +156 -0
- amulet/{block_entity.pyi → core/block_entity/__init__.pyi} +7 -7
- amulet/core/block_entity/block_entity.hpp +84 -0
- amulet/{errors.py → core/chunk/__init__.pyi} +37 -33
- amulet/core/chunk/chunk.hpp +126 -0
- amulet/core/chunk/component/__init__.pyi +18 -0
- amulet/core/chunk/component/biome_3d_component.hpp +96 -0
- amulet/core/chunk/component/block_component.hpp +101 -0
- amulet/core/chunk/component/block_component.pyi +28 -0
- amulet/core/chunk/component/block_entity_component.hpp +119 -0
- amulet/core/chunk/component/section_array_map.hpp +129 -0
- amulet/{chunk_components.pyi → core/chunk/component/section_array_map.pyi} +4 -24
- amulet/core/dll.hpp +21 -0
- amulet/core/entity/__init__.pyi +105 -0
- amulet/core/entity/entity.hpp +100 -0
- amulet/{palette → core/palette}/__init__.pyi +2 -2
- amulet/core/palette/biome_palette.hpp +65 -0
- amulet/{palette → core/palette}/biome_palette.pyi +8 -8
- amulet/core/palette/block_palette.hpp +71 -0
- amulet/{palette → core/palette}/block_palette.pyi +12 -10
- amulet/core/selection/__init__.pyi +8 -0
- amulet/core/selection/box.hpp +86 -0
- amulet/core/selection/box.pyi +215 -0
- amulet/core/selection/group.hpp +80 -0
- amulet/core/selection/group.pyi +213 -0
- amulet/{version.pyi → core/version/__init__.pyi} +58 -10
- amulet/core/version/version.hpp +204 -0
- {amulet_core-2.0a8.dist-info → amulet_core-2.0.1a2.post250529084747.dist-info}/METADATA +25 -20
- amulet_core-2.0.1a2.post250529084747.dist-info/RECORD +45 -0
- {amulet_core-2.0a8.dist-info → amulet_core-2.0.1a2.post250529084747.dist-info}/WHEEL +1 -1
- amulet_core-2.0.1a2.post250529084747.dist-info/entry_points.txt +2 -0
- amulet/__init__.cp312-win_amd64.pyd +0 -0
- amulet/__init__.py.cpp +0 -45
- amulet/__init__.pyi +0 -30
- amulet/__pyinstaller/hook-amulet.py +0 -4
- amulet/_init.py +0 -26
- amulet/biome.cpp +0 -36
- amulet/biome.hpp +0 -43
- amulet/biome.py.cpp +0 -122
- amulet/block.cpp +0 -435
- amulet/block.hpp +0 -119
- amulet/block.py.cpp +0 -377
- amulet/block_entity.cpp +0 -12
- amulet/block_entity.hpp +0 -56
- amulet/block_entity.py.cpp +0 -115
- amulet/chunk.cpp +0 -16
- amulet/chunk.hpp +0 -100
- amulet/chunk.py.cpp +0 -80
- amulet/chunk.pyi +0 -28
- amulet/chunk_components/biome_3d_component.cpp +0 -5
- amulet/chunk_components/biome_3d_component.hpp +0 -79
- amulet/chunk_components/block_component.cpp +0 -41
- amulet/chunk_components/block_component.hpp +0 -88
- amulet/chunk_components/block_entity_component.cpp +0 -5
- amulet/chunk_components/block_entity_component.hpp +0 -147
- amulet/chunk_components/section_array_map.cpp +0 -129
- amulet/chunk_components/section_array_map.hpp +0 -147
- amulet/collections/eq.py.hpp +0 -37
- amulet/collections/hash.py.hpp +0 -27
- amulet/collections/holder.py.hpp +0 -37
- amulet/collections/iterator.py.hpp +0 -80
- amulet/collections/mapping.py.hpp +0 -199
- amulet/collections/mutable_mapping.py.hpp +0 -226
- amulet/collections/sequence.py.hpp +0 -163
- amulet/collections.pyi +0 -40
- amulet/data_types.py +0 -29
- amulet/entity.py +0 -182
- amulet/game/__init__.py +0 -7
- amulet/game/_game.py +0 -152
- amulet/game/_universal/__init__.py +0 -1
- amulet/game/_universal/_biome.py +0 -17
- amulet/game/_universal/_block.py +0 -47
- amulet/game/_universal/_version.py +0 -68
- amulet/game/abc/__init__.py +0 -22
- amulet/game/abc/_block_specification.py +0 -150
- amulet/game/abc/biome.py +0 -213
- amulet/game/abc/block.py +0 -331
- amulet/game/abc/game_version_container.py +0 -25
- amulet/game/abc/json_interface.py +0 -27
- amulet/game/abc/version.py +0 -44
- amulet/game/bedrock/__init__.py +0 -1
- amulet/game/bedrock/_biome.py +0 -35
- amulet/game/bedrock/_block.py +0 -42
- amulet/game/bedrock/_version.py +0 -165
- amulet/game/java/__init__.py +0 -2
- amulet/game/java/_biome.py +0 -35
- amulet/game/java/_block.py +0 -60
- amulet/game/java/_version.py +0 -176
- amulet/game/translate/__init__.py +0 -12
- amulet/game/translate/_functions/__init__.py +0 -15
- amulet/game/translate/_functions/_code_functions/__init__.py +0 -0
- amulet/game/translate/_functions/_code_functions/_text.py +0 -553
- amulet/game/translate/_functions/_code_functions/banner_pattern.py +0 -67
- amulet/game/translate/_functions/_code_functions/bedrock_chest_connection.py +0 -152
- amulet/game/translate/_functions/_code_functions/bedrock_moving_block_pos.py +0 -88
- amulet/game/translate/_functions/_code_functions/bedrock_sign.py +0 -152
- amulet/game/translate/_functions/_code_functions/bedrock_skull_rotation.py +0 -16
- amulet/game/translate/_functions/_code_functions/custom_name.py +0 -146
- amulet/game/translate/_functions/_frozen.py +0 -66
- amulet/game/translate/_functions/_state.py +0 -54
- amulet/game/translate/_functions/_typing.py +0 -98
- amulet/game/translate/_functions/abc.py +0 -123
- amulet/game/translate/_functions/carry_nbt.py +0 -160
- amulet/game/translate/_functions/carry_properties.py +0 -80
- amulet/game/translate/_functions/code.py +0 -143
- amulet/game/translate/_functions/map_block_name.py +0 -66
- amulet/game/translate/_functions/map_nbt.py +0 -111
- amulet/game/translate/_functions/map_properties.py +0 -93
- amulet/game/translate/_functions/multiblock.py +0 -112
- amulet/game/translate/_functions/new_block.py +0 -42
- amulet/game/translate/_functions/new_entity.py +0 -43
- amulet/game/translate/_functions/new_nbt.py +0 -206
- amulet/game/translate/_functions/new_properties.py +0 -64
- amulet/game/translate/_functions/sequence.py +0 -51
- amulet/game/translate/_functions/walk_input_nbt.py +0 -331
- amulet/game/translate/_translator.py +0 -433
- amulet/img/__init__.py +0 -10
- amulet/img/missing_no.png +0 -0
- amulet/img/missing_pack.png +0 -0
- amulet/img/missing_world.png +0 -0
- amulet/io/binary_reader.hpp +0 -45
- amulet/io/binary_writer.hpp +0 -30
- amulet/item.py +0 -75
- amulet/level/__init__.pyi +0 -23
- amulet/level/_load.py +0 -100
- amulet/level/abc/__init__.py +0 -12
- amulet/level/abc/_chunk_handle.py +0 -358
- amulet/level/abc/_dimension.py +0 -86
- amulet/level/abc/_history/__init__.py +0 -1
- amulet/level/abc/_history/_cache.py +0 -224
- amulet/level/abc/_history/_history_manager.py +0 -291
- amulet/level/abc/_level/__init__.py +0 -5
- amulet/level/abc/_level/_compactable_level.py +0 -10
- amulet/level/abc/_level/_creatable_level.py +0 -28
- amulet/level/abc/_level/_disk_level.py +0 -17
- amulet/level/abc/_level/_level.py +0 -449
- amulet/level/abc/_level/_loadable_level.py +0 -42
- amulet/level/abc/_player_storage.py +0 -7
- amulet/level/abc/_raw_level.py +0 -187
- amulet/level/abc/_registry.py +0 -40
- amulet/level/java/__init__.pyi +0 -16
- amulet/level/java/_chunk_handle.py +0 -17
- amulet/level/java/_dimension.py +0 -20
- amulet/level/java/_level.py +0 -184
- amulet/level/java/_raw/__init__.pyi +0 -15
- amulet/level/java/_raw/_chunk.pyi +0 -23
- amulet/level/java/_raw/_constant.py +0 -9
- amulet/level/java/_raw/_data_pack/__init__.py +0 -2
- amulet/level/java/_raw/_data_pack/data_pack.py +0 -241
- amulet/level/java/_raw/_data_pack/data_pack_manager.py +0 -77
- amulet/level/java/_raw/_dimension.py +0 -86
- amulet/level/java/_raw/_level.py +0 -507
- amulet/level/java/_raw/_typing.py +0 -3
- amulet/level/java/_raw/java_chunk_decode.cpp +0 -531
- amulet/level/java/_raw/java_chunk_decode.hpp +0 -23
- amulet/level/java/_raw/java_chunk_encode.cpp +0 -25
- amulet/level/java/_raw/java_chunk_encode.hpp +0 -23
- amulet/level/java/anvil/__init__.py +0 -2
- amulet/level/java/anvil/_dimension.py +0 -170
- amulet/level/java/anvil/_region.py +0 -421
- amulet/level/java/anvil/_sector_manager.py +0 -223
- amulet/level/java/chunk.pyi +0 -81
- amulet/level/java/chunk_/_chunk.py +0 -260
- amulet/level/java/chunk_/components/inhabited_time.py +0 -12
- amulet/level/java/chunk_/components/last_update.py +0 -12
- amulet/level/java/chunk_/components/legacy_version.py +0 -12
- amulet/level/java/chunk_/components/light_populated.py +0 -12
- amulet/level/java/chunk_/components/named_height_2d.py +0 -37
- amulet/level/java/chunk_/components/status.py +0 -11
- amulet/level/java/chunk_/components/terrain_populated.py +0 -12
- amulet/level/java/chunk_components/data_version_component.cpp +0 -32
- amulet/level/java/chunk_components/data_version_component.hpp +0 -31
- amulet/level/java/chunk_components/java_raw_chunk_component.cpp +0 -56
- amulet/level/java/chunk_components/java_raw_chunk_component.hpp +0 -45
- amulet/level/java/chunk_components.pyi +0 -22
- amulet/level/java/java_chunk.cpp +0 -170
- amulet/level/java/java_chunk.hpp +0 -141
- amulet/level/java/long_array.hpp +0 -175
- amulet/level/java/long_array.pyi +0 -39
- amulet/level/temporary_level/__init__.py +0 -1
- amulet/level/temporary_level/_level.py +0 -16
- amulet/mesh/__init__.py +0 -0
- amulet/mesh/block/__init__.pyi +0 -301
- amulet/mesh/block/_cube.py +0 -198
- amulet/mesh/block/_missing_block.py +0 -20
- amulet/mesh/block/block_mesh.cpp +0 -107
- amulet/mesh/block/block_mesh.hpp +0 -207
- amulet/mesh/util.py +0 -17
- amulet/palette/biome_palette.hpp +0 -85
- amulet/palette/block_palette.cpp +0 -32
- amulet/palette/block_palette.hpp +0 -93
- amulet/player.py +0 -62
- amulet/pybind11/collections.hpp +0 -118
- amulet/pybind11/numpy.hpp +0 -26
- amulet/pybind11/py_module.hpp +0 -34
- amulet/pybind11/type_hints.hpp +0 -51
- amulet/pybind11/types.hpp +0 -25
- amulet/pybind11/typing.hpp +0 -7
- amulet/resource_pack/__init__.py +0 -63
- amulet/resource_pack/abc/__init__.py +0 -2
- amulet/resource_pack/abc/resource_pack.py +0 -38
- amulet/resource_pack/abc/resource_pack_manager.py +0 -85
- amulet/resource_pack/java/__init__.py +0 -2
- amulet/resource_pack/java/download_resources.py +0 -212
- amulet/resource_pack/java/java_vanilla_fix/assets/minecraft/textures/block/banner/banner_black.png +0 -0
- amulet/resource_pack/java/java_vanilla_fix/assets/minecraft/textures/block/banner/banner_blue.png +0 -0
- amulet/resource_pack/java/java_vanilla_fix/assets/minecraft/textures/block/banner/banner_brown.png +0 -0
- amulet/resource_pack/java/java_vanilla_fix/assets/minecraft/textures/block/banner/banner_cyan.png +0 -0
- amulet/resource_pack/java/java_vanilla_fix/assets/minecraft/textures/block/banner/banner_gray.png +0 -0
- amulet/resource_pack/java/java_vanilla_fix/assets/minecraft/textures/block/banner/banner_green.png +0 -0
- amulet/resource_pack/java/java_vanilla_fix/assets/minecraft/textures/block/banner/banner_light_blue.png +0 -0
- amulet/resource_pack/java/java_vanilla_fix/assets/minecraft/textures/block/banner/banner_light_gray.png +0 -0
- amulet/resource_pack/java/java_vanilla_fix/assets/minecraft/textures/block/banner/banner_lime.png +0 -0
- amulet/resource_pack/java/java_vanilla_fix/assets/minecraft/textures/block/banner/banner_magenta.png +0 -0
- amulet/resource_pack/java/java_vanilla_fix/assets/minecraft/textures/block/banner/banner_orange.png +0 -0
- amulet/resource_pack/java/java_vanilla_fix/assets/minecraft/textures/block/banner/banner_pink.png +0 -0
- amulet/resource_pack/java/java_vanilla_fix/assets/minecraft/textures/block/banner/banner_purple.png +0 -0
- amulet/resource_pack/java/java_vanilla_fix/assets/minecraft/textures/block/banner/banner_red.png +0 -0
- amulet/resource_pack/java/java_vanilla_fix/assets/minecraft/textures/block/banner/banner_white.png +0 -0
- amulet/resource_pack/java/java_vanilla_fix/assets/minecraft/textures/block/banner/banner_yellow.png +0 -0
- amulet/resource_pack/java/java_vanilla_fix/assets/minecraft/textures/block/barrier.png +0 -0
- amulet/resource_pack/java/java_vanilla_fix/assets/minecraft/textures/block/end_portal.png +0 -0
- amulet/resource_pack/java/java_vanilla_fix/assets/minecraft/textures/block/grass.png +0 -0
- amulet/resource_pack/java/java_vanilla_fix/assets/minecraft/textures/block/lava.png +0 -0
- amulet/resource_pack/java/java_vanilla_fix/assets/minecraft/textures/block/structure_void.png +0 -0
- amulet/resource_pack/java/java_vanilla_fix/assets/minecraft/textures/block/water.png +0 -0
- amulet/resource_pack/java/java_vanilla_fix/pack.png +0 -0
- amulet/resource_pack/java/resource_pack.py +0 -44
- amulet/resource_pack/java/resource_pack_manager.py +0 -563
- amulet/resource_pack/unknown_resource_pack.py +0 -10
- amulet/selection/__init__.py +0 -2
- amulet/selection/abstract_selection.py +0 -342
- amulet/selection/box.py +0 -852
- amulet/selection/group.py +0 -481
- amulet/utils/__init__.pyi +0 -23
- amulet/utils/call_spec/__init__.py +0 -24
- amulet/utils/call_spec/_call_spec.py +0 -257
- amulet/utils/cast.py +0 -10
- amulet/utils/comment_json.py +0 -188
- amulet/utils/format_utils.py +0 -41
- amulet/utils/generator.py +0 -18
- amulet/utils/matrix.py +0 -243
- amulet/utils/numpy.hpp +0 -36
- amulet/utils/numpy.pyi +0 -11
- amulet/utils/numpy_helpers.py +0 -19
- amulet/utils/shareable_lock.py +0 -335
- amulet/utils/signal/__init__.py +0 -10
- amulet/utils/signal/_signal.py +0 -228
- amulet/utils/task_manager.py +0 -235
- amulet/utils/typed_property.py +0 -111
- amulet/utils/weakref.py +0 -70
- amulet/utils/world_utils.py +0 -102
- amulet/version.cpp +0 -136
- amulet/version.hpp +0 -142
- amulet/version.py.cpp +0 -281
- amulet_core-2.0a8.dist-info/RECORD +0 -241
- amulet_core-2.0a8.dist-info/entry_points.txt +0 -2
- /amulet/{__pyinstaller → core/__pyinstaller}/__init__.py +0 -0
- /amulet/{py.typed → core/py.typed} +0 -0
- {amulet_core-2.0a8.dist-info → amulet_core-2.0.1a2.post250529084747.dist-info}/top_level.txt +0 -0
amulet/core/__init__.py
ADDED
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import logging
|
|
2
|
+
|
|
3
|
+
from . import _version
|
|
4
|
+
|
|
5
|
+
__version__ = _version.get_versions()["version"]
|
|
6
|
+
|
|
7
|
+
# init a default logger
|
|
8
|
+
logging.basicConfig(level=logging.INFO, format="%(levelname)s - %(message)s")
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
def _init() -> None:
|
|
12
|
+
import os
|
|
13
|
+
import sys
|
|
14
|
+
import ctypes
|
|
15
|
+
|
|
16
|
+
if sys.platform == "win32":
|
|
17
|
+
lib_path = os.path.join(os.path.dirname(__file__), "amulet_core.dll")
|
|
18
|
+
elif sys.platform == "darwin":
|
|
19
|
+
lib_path = os.path.join(os.path.dirname(__file__), "libamulet_core.dylib")
|
|
20
|
+
elif sys.platform == "linux":
|
|
21
|
+
lib_path = os.path.join(os.path.dirname(__file__), "libamulet_core.so")
|
|
22
|
+
else:
|
|
23
|
+
raise RuntimeError(f"Unsupported platform {sys.platform}")
|
|
24
|
+
|
|
25
|
+
# Import dependencies
|
|
26
|
+
import amulet.nbt
|
|
27
|
+
|
|
28
|
+
# Load the shared library
|
|
29
|
+
ctypes.cdll.LoadLibrary(lib_path)
|
|
30
|
+
|
|
31
|
+
from ._amulet_core import init
|
|
32
|
+
|
|
33
|
+
init(sys.modules[__name__])
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
_init()
|
|
Binary file
|
|
@@ -8,11 +8,11 @@ import json
|
|
|
8
8
|
|
|
9
9
|
version_json = '''
|
|
10
10
|
{
|
|
11
|
-
"date": "
|
|
11
|
+
"date": "2025-05-29T09:42:08+0100",
|
|
12
12
|
"dirty": false,
|
|
13
13
|
"error": null,
|
|
14
|
-
"full-revisionid": "
|
|
15
|
-
"version": "2.
|
|
14
|
+
"full-revisionid": "5a4364bf92e8e1d1a3ccb77de14d813c5bb40acc",
|
|
15
|
+
"version": "2.0.1a2"
|
|
16
16
|
}
|
|
17
17
|
''' # END VERSION_JSON
|
|
18
18
|
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
if (NOT TARGET amulet_core)
|
|
2
|
+
message(STATUS "Finding amulet_core")
|
|
3
|
+
|
|
4
|
+
find_package(amulet_io CONFIG REQUIRED)
|
|
5
|
+
find_package(amulet_nbt CONFIG REQUIRED)
|
|
6
|
+
|
|
7
|
+
set(amulet_core_INCLUDE_DIR "${CMAKE_CURRENT_LIST_DIR}/../..")
|
|
8
|
+
find_library(amulet_core_LIBRARY NAMES amulet_core PATHS "${CMAKE_CURRENT_LIST_DIR}")
|
|
9
|
+
message(STATUS "amulet_core_LIBRARY: ${amulet_core_LIBRARY}")
|
|
10
|
+
|
|
11
|
+
add_library(amulet_core SHARED IMPORTED)
|
|
12
|
+
set_target_properties(amulet_core PROPERTIES
|
|
13
|
+
INTERFACE_INCLUDE_DIRECTORIES "${amulet_core_INCLUDE_DIR}"
|
|
14
|
+
INTERFACE_LINK_LIBRARIES amulet_io
|
|
15
|
+
INTERFACE_LINK_LIBRARIES amulet_nbt
|
|
16
|
+
IMPORTED_IMPLIB "${amulet_core_LIBRARY}"
|
|
17
|
+
)
|
|
18
|
+
endif()
|
|
@@ -3,11 +3,11 @@ from __future__ import annotations
|
|
|
3
3
|
import types
|
|
4
4
|
import typing
|
|
5
5
|
|
|
6
|
-
import amulet.version
|
|
6
|
+
import amulet.core.version
|
|
7
7
|
|
|
8
8
|
__all__ = ["Biome"]
|
|
9
9
|
|
|
10
|
-
class Biome(amulet.version.PlatformVersionContainer):
|
|
10
|
+
class Biome(amulet.core.version.PlatformVersionContainer):
|
|
11
11
|
"""
|
|
12
12
|
A class to manage the state of a biome.
|
|
13
13
|
|
|
@@ -34,7 +34,7 @@ class Biome(amulet.version.PlatformVersionContainer):
|
|
|
34
34
|
def __init__(
|
|
35
35
|
self,
|
|
36
36
|
platform: str,
|
|
37
|
-
version: amulet.version.VersionNumber,
|
|
37
|
+
version: amulet.core.version.VersionNumber,
|
|
38
38
|
namespace: str,
|
|
39
39
|
base_name: str,
|
|
40
40
|
) -> None: ...
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
#pragma once
|
|
2
|
+
|
|
3
|
+
#include <string>
|
|
4
|
+
|
|
5
|
+
#include <amulet/io/binary_reader.hpp>
|
|
6
|
+
#include <amulet/io/binary_writer.hpp>
|
|
7
|
+
|
|
8
|
+
#include <amulet/core/dll.hpp>
|
|
9
|
+
#include <amulet/core/version/version.hpp>
|
|
10
|
+
|
|
11
|
+
namespace Amulet {
|
|
12
|
+
class Biome : public PlatformVersionContainer {
|
|
13
|
+
private:
|
|
14
|
+
std::string _namespace;
|
|
15
|
+
std::string _base_name;
|
|
16
|
+
|
|
17
|
+
public:
|
|
18
|
+
const std::string& get_namespace() const { return _namespace; }
|
|
19
|
+
const std::string& get_base_name() const { return _base_name; }
|
|
20
|
+
|
|
21
|
+
template <typename PlatformT, typename VersionT, typename NamespaceT, typename BaseNameT>
|
|
22
|
+
Biome(
|
|
23
|
+
PlatformT&& platform,
|
|
24
|
+
VersionT&& version,
|
|
25
|
+
NamespaceT&& namespace_,
|
|
26
|
+
BaseNameT&& base_name)
|
|
27
|
+
: PlatformVersionContainer(std::forward<PlatformT>(platform), std::forward<VersionT>(version))
|
|
28
|
+
, _namespace(std::forward<NamespaceT>(namespace_))
|
|
29
|
+
, _base_name(std::forward<BaseNameT>(base_name))
|
|
30
|
+
{
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
AMULET_CORE_EXPORT void serialise(BinaryWriter&) const;
|
|
34
|
+
AMULET_CORE_EXPORT static Biome deserialise(BinaryReader&);
|
|
35
|
+
|
|
36
|
+
auto operator<=>(const Biome& other) const
|
|
37
|
+
{
|
|
38
|
+
auto cmp = PlatformVersionContainer::operator<=>(other);
|
|
39
|
+
if (cmp != 0) {
|
|
40
|
+
return cmp;
|
|
41
|
+
}
|
|
42
|
+
cmp = _namespace <=> other._namespace;
|
|
43
|
+
if (cmp != 0) {
|
|
44
|
+
return cmp;
|
|
45
|
+
}
|
|
46
|
+
return _base_name <=> other._base_name;
|
|
47
|
+
}
|
|
48
|
+
bool operator==(const Biome& other) const
|
|
49
|
+
{
|
|
50
|
+
return (*this <=> other) == 0;
|
|
51
|
+
}
|
|
52
|
+
};
|
|
53
|
+
}
|
|
@@ -4,12 +4,12 @@ import collections.abc
|
|
|
4
4
|
import types
|
|
5
5
|
import typing
|
|
6
6
|
|
|
7
|
-
import amulet.version
|
|
8
|
-
import
|
|
7
|
+
import amulet.core.version
|
|
8
|
+
import amulet.nbt
|
|
9
9
|
|
|
10
|
-
__all__ = ["Block", "BlockStack"
|
|
10
|
+
__all__ = ["Block", "BlockStack"]
|
|
11
11
|
|
|
12
|
-
class Block(amulet.version.PlatformVersionContainer):
|
|
12
|
+
class Block(amulet.core.version.PlatformVersionContainer):
|
|
13
13
|
"""
|
|
14
14
|
A class to manage the state of a block.
|
|
15
15
|
|
|
@@ -37,9 +37,16 @@ class Block(amulet.version.PlatformVersionContainer):
|
|
|
37
37
|
>>> )
|
|
38
38
|
"""
|
|
39
39
|
|
|
40
|
+
PropertyValue: typing.ClassVar[typing.TypeAlias] = (
|
|
41
|
+
amulet.nbt.ByteTag
|
|
42
|
+
| amulet.nbt.ShortTag
|
|
43
|
+
| amulet.nbt.IntTag
|
|
44
|
+
| amulet.nbt.LongTag
|
|
45
|
+
| amulet.nbt.StringTag
|
|
46
|
+
)
|
|
40
47
|
@staticmethod
|
|
41
48
|
def from_bedrock_blockstate(
|
|
42
|
-
platform: str, version: amulet.version.VersionNumber, blockstate: str
|
|
49
|
+
platform: str, version: amulet.core.version.VersionNumber, blockstate: str
|
|
43
50
|
) -> Block:
|
|
44
51
|
"""
|
|
45
52
|
Parse a Bedrock format blockstate where values are all strings and populate a :class:`Block` class with the data.
|
|
@@ -55,7 +62,7 @@ class Block(amulet.version.PlatformVersionContainer):
|
|
|
55
62
|
|
|
56
63
|
@staticmethod
|
|
57
64
|
def from_java_blockstate(
|
|
58
|
-
platform: str, version: amulet.version.VersionNumber, blockstate: str
|
|
65
|
+
platform: str, version: amulet.core.version.VersionNumber, blockstate: str
|
|
59
66
|
) -> Block:
|
|
60
67
|
"""
|
|
61
68
|
Parse a Java format blockstate where values are all strings and populate a :class:`Block` class with the data.
|
|
@@ -79,16 +86,16 @@ class Block(amulet.version.PlatformVersionContainer):
|
|
|
79
86
|
def __init__(
|
|
80
87
|
self,
|
|
81
88
|
platform: str,
|
|
82
|
-
version: amulet.version.VersionNumber,
|
|
89
|
+
version: amulet.core.version.VersionNumber,
|
|
83
90
|
namespace: str,
|
|
84
91
|
base_name: str,
|
|
85
92
|
properties: dict[
|
|
86
93
|
str,
|
|
87
|
-
|
|
88
|
-
|
|
|
89
|
-
|
|
|
90
|
-
|
|
|
91
|
-
|
|
|
94
|
+
amulet.nbt.ByteTag
|
|
95
|
+
| amulet.nbt.ShortTag
|
|
96
|
+
| amulet.nbt.IntTag
|
|
97
|
+
| amulet.nbt.LongTag
|
|
98
|
+
| amulet.nbt.StringTag,
|
|
92
99
|
] = {},
|
|
93
100
|
) -> None: ...
|
|
94
101
|
def __le__(self, arg0: Block) -> bool: ...
|
|
@@ -170,11 +177,11 @@ class Block(amulet.version.PlatformVersionContainer):
|
|
|
170
177
|
self,
|
|
171
178
|
) -> dict[
|
|
172
179
|
str,
|
|
173
|
-
|
|
174
|
-
|
|
|
175
|
-
|
|
|
176
|
-
|
|
|
177
|
-
|
|
|
180
|
+
amulet.nbt.ByteTag
|
|
181
|
+
| amulet.nbt.ShortTag
|
|
182
|
+
| amulet.nbt.IntTag
|
|
183
|
+
| amulet.nbt.LongTag
|
|
184
|
+
| amulet.nbt.StringTag,
|
|
178
185
|
]:
|
|
179
186
|
"""
|
|
180
187
|
The properties of the blockstate represented by the :class:`Block` object as a dictionary.
|
|
@@ -248,7 +255,7 @@ class BlockStack:
|
|
|
248
255
|
"""
|
|
249
256
|
|
|
250
257
|
@property
|
|
251
|
-
def extra_blocks(self) -> tuple:
|
|
258
|
+
def extra_blocks(self) -> tuple[Block]:
|
|
252
259
|
"""
|
|
253
260
|
The extra blocks in the stack.
|
|
254
261
|
|
|
@@ -261,11 +268,3 @@ class BlockStack:
|
|
|
261
268
|
|
|
262
269
|
:return: A tuple of :class:`Block` objects
|
|
263
270
|
"""
|
|
264
|
-
|
|
265
|
-
PropertyValueType: typing.TypeAlias = (
|
|
266
|
-
amulet_nbt.ByteTag
|
|
267
|
-
| amulet_nbt.ShortTag
|
|
268
|
-
| amulet_nbt.IntTag
|
|
269
|
-
| amulet_nbt.LongTag
|
|
270
|
-
| amulet_nbt.StringTag
|
|
271
|
-
)
|
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
#pragma once
|
|
2
|
+
|
|
3
|
+
#include <map>
|
|
4
|
+
#include <string>
|
|
5
|
+
#include <variant>
|
|
6
|
+
|
|
7
|
+
#include <amulet/io/binary_reader.hpp>
|
|
8
|
+
#include <amulet/io/binary_writer.hpp>
|
|
9
|
+
|
|
10
|
+
#include <amulet/nbt/tag/int.hpp>
|
|
11
|
+
#include <amulet/nbt/tag/string.hpp>
|
|
12
|
+
|
|
13
|
+
#include <amulet/core/dll.hpp>
|
|
14
|
+
#include <amulet/core/version/version.hpp>
|
|
15
|
+
|
|
16
|
+
namespace Amulet {
|
|
17
|
+
|
|
18
|
+
class Block : public PlatformVersionContainer {
|
|
19
|
+
public:
|
|
20
|
+
using PropertyValue = std::variant<
|
|
21
|
+
Amulet::NBT::ByteTag,
|
|
22
|
+
Amulet::NBT::ShortTag,
|
|
23
|
+
Amulet::NBT::IntTag,
|
|
24
|
+
Amulet::NBT::LongTag,
|
|
25
|
+
Amulet::NBT::StringTag>;
|
|
26
|
+
|
|
27
|
+
using PropertyMap = std::map<std::string, PropertyValue>;
|
|
28
|
+
|
|
29
|
+
private:
|
|
30
|
+
std::string _namespace;
|
|
31
|
+
std::string _base_name;
|
|
32
|
+
PropertyMap _properties;
|
|
33
|
+
|
|
34
|
+
public:
|
|
35
|
+
const std::string& get_namespace() const { return _namespace; }
|
|
36
|
+
const std::string& get_base_name() const { return _base_name; }
|
|
37
|
+
const PropertyMap& get_properties() const { return _properties; }
|
|
38
|
+
|
|
39
|
+
template <
|
|
40
|
+
typename PlatformT,
|
|
41
|
+
typename VersionT,
|
|
42
|
+
typename NamespaceT,
|
|
43
|
+
typename BaseNameT>
|
|
44
|
+
Block(
|
|
45
|
+
PlatformT&& platform,
|
|
46
|
+
VersionT&& version,
|
|
47
|
+
NamespaceT&& namespace_,
|
|
48
|
+
BaseNameT&& base_name)
|
|
49
|
+
: PlatformVersionContainer(std::forward<PlatformT>(platform), std::forward<VersionT>(version))
|
|
50
|
+
, _namespace(std::forward<NamespaceT>(namespace_))
|
|
51
|
+
, _base_name(std::forward<BaseNameT>(base_name))
|
|
52
|
+
, _properties()
|
|
53
|
+
{
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
template <
|
|
57
|
+
typename PlatformT,
|
|
58
|
+
typename VersionT,
|
|
59
|
+
typename NamespaceT,
|
|
60
|
+
typename BaseNameT,
|
|
61
|
+
typename PropertiesT>
|
|
62
|
+
Block(
|
|
63
|
+
PlatformT&& platform,
|
|
64
|
+
VersionT&& version,
|
|
65
|
+
NamespaceT&& namespace_,
|
|
66
|
+
BaseNameT&& base_name,
|
|
67
|
+
PropertiesT&& properties)
|
|
68
|
+
: PlatformVersionContainer(std::forward<PlatformT>(platform), std::forward<VersionT>(version))
|
|
69
|
+
, _namespace(std::forward<NamespaceT>(namespace_))
|
|
70
|
+
, _base_name(std::forward<BaseNameT>(base_name))
|
|
71
|
+
, _properties(std::forward<PropertiesT>(properties))
|
|
72
|
+
{
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
AMULET_CORE_EXPORT void serialise(BinaryWriter&) const;
|
|
76
|
+
AMULET_CORE_EXPORT static Block deserialise(BinaryReader&);
|
|
77
|
+
|
|
78
|
+
auto operator<=>(const Block& other) const
|
|
79
|
+
{
|
|
80
|
+
auto cmp = PlatformVersionContainer::operator<=>(other);
|
|
81
|
+
if (cmp != 0) {
|
|
82
|
+
return cmp;
|
|
83
|
+
}
|
|
84
|
+
cmp = _namespace <=> other._namespace;
|
|
85
|
+
if (cmp != 0) {
|
|
86
|
+
return cmp;
|
|
87
|
+
}
|
|
88
|
+
cmp = _base_name <=> other._base_name;
|
|
89
|
+
if (cmp != 0) {
|
|
90
|
+
return cmp;
|
|
91
|
+
}
|
|
92
|
+
return _properties <=> other._properties;
|
|
93
|
+
}
|
|
94
|
+
bool operator==(const Block& other) const
|
|
95
|
+
{
|
|
96
|
+
return (*this <=> other) == 0;
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
AMULET_CORE_EXPORT std::string java_blockstate() const;
|
|
100
|
+
AMULET_CORE_EXPORT std::string bedrock_blockstate() const;
|
|
101
|
+
AMULET_CORE_EXPORT static Block from_java_blockstate(const PlatformType&, const VersionNumber&, const std::string&);
|
|
102
|
+
AMULET_CORE_EXPORT static Block from_bedrock_blockstate(const PlatformType&, const VersionNumber&, const std::string&);
|
|
103
|
+
};
|
|
104
|
+
|
|
105
|
+
class BlockStack {
|
|
106
|
+
private:
|
|
107
|
+
std::vector<Block> _blocks;
|
|
108
|
+
|
|
109
|
+
public:
|
|
110
|
+
const std::vector<Block>& get_blocks() const { return _blocks; }
|
|
111
|
+
|
|
112
|
+
template <typename... Args>
|
|
113
|
+
requires std::is_constructible_v<std::vector<Block>, Args...>
|
|
114
|
+
BlockStack(Args&&... args)
|
|
115
|
+
: _blocks(std::forward<Args>(args)...)
|
|
116
|
+
{
|
|
117
|
+
if (_blocks.empty()) {
|
|
118
|
+
throw std::invalid_argument("A BlockStack must contain at least one block");
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
BlockStack(std::initializer_list<Block> blocks)
|
|
123
|
+
: _blocks(blocks)
|
|
124
|
+
{
|
|
125
|
+
if (_blocks.empty()) {
|
|
126
|
+
throw std::invalid_argument("A BlockStack must contain at least one block");
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
AMULET_CORE_EXPORT void serialise(BinaryWriter&) const;
|
|
131
|
+
AMULET_CORE_EXPORT static BlockStack deserialise(BinaryReader&);
|
|
132
|
+
|
|
133
|
+
auto operator<=>(const BlockStack& other) const
|
|
134
|
+
{
|
|
135
|
+
auto cmp = size() <=> other.size();
|
|
136
|
+
if (cmp != 0) {
|
|
137
|
+
return cmp;
|
|
138
|
+
}
|
|
139
|
+
for (size_t i = 0; i < size(); i++) {
|
|
140
|
+
cmp = at(i) <=> other.at(i);
|
|
141
|
+
if (cmp != 0) {
|
|
142
|
+
return cmp;
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
return std::strong_ordering::equal;
|
|
146
|
+
}
|
|
147
|
+
bool operator==(const BlockStack& other) const
|
|
148
|
+
{
|
|
149
|
+
return (*this <=> other) == 0;
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
size_t size() const { return _blocks.size(); }
|
|
153
|
+
const Block& at(size_t index) const { return _blocks.at(index); }
|
|
154
|
+
};
|
|
155
|
+
|
|
156
|
+
} // namespace Amulet
|
|
@@ -3,12 +3,12 @@ from __future__ import annotations
|
|
|
3
3
|
import types
|
|
4
4
|
import typing
|
|
5
5
|
|
|
6
|
-
import amulet.version
|
|
7
|
-
import
|
|
6
|
+
import amulet.core.version
|
|
7
|
+
import amulet.nbt
|
|
8
8
|
|
|
9
9
|
__all__ = ["BlockEntity"]
|
|
10
10
|
|
|
11
|
-
class BlockEntity(amulet.version.PlatformVersionContainer):
|
|
11
|
+
class BlockEntity(amulet.core.version.PlatformVersionContainer):
|
|
12
12
|
"""
|
|
13
13
|
A class to contain all the data to define a BlockEntity.
|
|
14
14
|
"""
|
|
@@ -21,10 +21,10 @@ class BlockEntity(amulet.version.PlatformVersionContainer):
|
|
|
21
21
|
def __init__(
|
|
22
22
|
self,
|
|
23
23
|
platform: str,
|
|
24
|
-
version: amulet.version.VersionNumber,
|
|
24
|
+
version: amulet.core.version.VersionNumber,
|
|
25
25
|
namespace: str,
|
|
26
26
|
base_name: str,
|
|
27
|
-
nbt:
|
|
27
|
+
nbt: amulet.nbt.NamedTag,
|
|
28
28
|
) -> None: ...
|
|
29
29
|
def __repr__(self) -> str: ...
|
|
30
30
|
@property
|
|
@@ -65,7 +65,7 @@ class BlockEntity(amulet.version.PlatformVersionContainer):
|
|
|
65
65
|
"""
|
|
66
66
|
|
|
67
67
|
@property
|
|
68
|
-
def nbt(self) ->
|
|
68
|
+
def nbt(self) -> amulet.nbt.NamedTag:
|
|
69
69
|
"""
|
|
70
70
|
The nbt data for the block entity.
|
|
71
71
|
>>> block_entity: BlockEntity
|
|
@@ -75,4 +75,4 @@ class BlockEntity(amulet.version.PlatformVersionContainer):
|
|
|
75
75
|
"""
|
|
76
76
|
|
|
77
77
|
@nbt.setter
|
|
78
|
-
def nbt(self, arg1:
|
|
78
|
+
def nbt(self, arg1: amulet.nbt.NamedTag) -> None: ...
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
#pragma once
|
|
2
|
+
|
|
3
|
+
#include <map>
|
|
4
|
+
#include <string>
|
|
5
|
+
#include <variant>
|
|
6
|
+
|
|
7
|
+
#include <amulet/io/binary_reader.hpp>
|
|
8
|
+
#include <amulet/io/binary_writer.hpp>
|
|
9
|
+
|
|
10
|
+
#include <amulet/nbt/tag/eq.hpp>
|
|
11
|
+
#include <amulet/nbt/tag/named_tag.hpp>
|
|
12
|
+
|
|
13
|
+
#include <amulet/core/dll.hpp>
|
|
14
|
+
#include <amulet/core/version/version.hpp>
|
|
15
|
+
|
|
16
|
+
namespace Amulet {
|
|
17
|
+
class BlockEntity : public PlatformVersionContainer {
|
|
18
|
+
private:
|
|
19
|
+
std::string _namespace;
|
|
20
|
+
std::string _base_name;
|
|
21
|
+
std::shared_ptr<Amulet::NBT::NamedTag> _nbt;
|
|
22
|
+
|
|
23
|
+
public:
|
|
24
|
+
const std::string& get_namespace() const
|
|
25
|
+
{
|
|
26
|
+
return _namespace;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
template <typename NamespaceT>
|
|
30
|
+
void set_namespace(NamespaceT&& namespace_)
|
|
31
|
+
{
|
|
32
|
+
_namespace = std::forward<NamespaceT>(namespace_);
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
const std::string& get_base_name() const
|
|
36
|
+
{
|
|
37
|
+
return _base_name;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
template <typename BaseNameT>
|
|
41
|
+
void set_base_name(BaseNameT&& base_name)
|
|
42
|
+
{
|
|
43
|
+
_base_name = std::forward<BaseNameT>(base_name);
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
std::shared_ptr<Amulet::NBT::NamedTag> get_nbt() const
|
|
47
|
+
{
|
|
48
|
+
return _nbt;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
template <typename NBTT>
|
|
52
|
+
void set_nbt(NBTT&& nbt)
|
|
53
|
+
{
|
|
54
|
+
if constexpr (std::is_same_v<std::shared_ptr<Amulet::NBT::NamedTag>, std::decay_t<NBTT>>) {
|
|
55
|
+
_nbt = std::forward<NBTT>(nbt);
|
|
56
|
+
} else {
|
|
57
|
+
_nbt = std::make_shared<Amulet::NBT::NamedTag>(std::forward<NBTT>(nbt));
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
template <
|
|
62
|
+
typename PlatformT,
|
|
63
|
+
typename VersionNumberT,
|
|
64
|
+
typename NamespaceT,
|
|
65
|
+
typename BaseNameT>
|
|
66
|
+
BlockEntity(
|
|
67
|
+
PlatformT&& platform,
|
|
68
|
+
VersionNumberT&& version,
|
|
69
|
+
NamespaceT&& namespace_,
|
|
70
|
+
BaseNameT&& base_name,
|
|
71
|
+
std::shared_ptr<Amulet::NBT::NamedTag> nbt)
|
|
72
|
+
: PlatformVersionContainer(std::forward<PlatformT>(platform), std::forward<VersionNumberT>(version))
|
|
73
|
+
, _namespace(std::forward<NamespaceT>(namespace_))
|
|
74
|
+
, _base_name(std::forward<BaseNameT>(base_name))
|
|
75
|
+
, _nbt(std::move(nbt))
|
|
76
|
+
{
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
AMULET_CORE_EXPORT void serialise(BinaryWriter&) const;
|
|
80
|
+
AMULET_CORE_EXPORT static BlockEntity deserialise(BinaryReader&);
|
|
81
|
+
|
|
82
|
+
AMULET_CORE_EXPORT bool operator==(const BlockEntity& other) const;
|
|
83
|
+
};
|
|
84
|
+
}
|
|
@@ -1,23 +1,34 @@
|
|
|
1
|
-
|
|
2
|
-
"""An error thrown if trying to load data from a dimension that does not exist."""
|
|
1
|
+
from __future__ import annotations
|
|
3
2
|
|
|
3
|
+
from . import component
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
""
|
|
7
|
-
|
|
5
|
+
__all__ = [
|
|
6
|
+
"Chunk",
|
|
7
|
+
"ChunkDoesNotExist",
|
|
8
|
+
"ChunkLoadError",
|
|
9
|
+
"component",
|
|
10
|
+
"get_null_chunk",
|
|
11
|
+
]
|
|
8
12
|
|
|
9
|
-
|
|
13
|
+
class Chunk:
|
|
14
|
+
"""
|
|
15
|
+
A base class for all chunk classes.
|
|
16
|
+
"""
|
|
10
17
|
|
|
11
|
-
|
|
18
|
+
def reconstruct_chunk(self, arg0: dict[str, bytes | None]) -> None:
|
|
19
|
+
"""
|
|
20
|
+
This is private. Do not use this. It will be removed in the future.
|
|
21
|
+
"""
|
|
12
22
|
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
>>> # will catch all chunks that have failed to load
|
|
18
|
-
>>> # either because they do not exist or errored during loading.
|
|
19
|
-
"""
|
|
23
|
+
def serialise_chunk(self) -> dict[str, bytes | None]:
|
|
24
|
+
"""
|
|
25
|
+
This is private. Do not use this. It will be removed in the future.
|
|
26
|
+
"""
|
|
20
27
|
|
|
28
|
+
@property
|
|
29
|
+
def chunk_id(self) -> str: ...
|
|
30
|
+
@property
|
|
31
|
+
def component_ids(self) -> set[str]: ...
|
|
21
32
|
|
|
22
33
|
class ChunkDoesNotExist(ChunkLoadError):
|
|
23
34
|
"""
|
|
@@ -34,30 +45,23 @@ class ChunkDoesNotExist(ChunkLoadError):
|
|
|
34
45
|
>>> # chunks that do not exist were caught by the previous except section.
|
|
35
46
|
"""
|
|
36
47
|
|
|
37
|
-
|
|
38
|
-
class PlayerLoadError(Exception):
|
|
39
|
-
"""
|
|
40
|
-
An error thrown if a player failed to load for some reason.
|
|
41
|
-
"""
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
class PlayerDoesNotExist(PlayerLoadError):
|
|
45
|
-
"""
|
|
46
|
-
An error thrown if a player does not exist.
|
|
48
|
+
class ChunkLoadError(RuntimeError):
|
|
47
49
|
"""
|
|
50
|
+
An error thrown if a chunk failed to load for some reason.
|
|
48
51
|
|
|
52
|
+
This may be due to a corrupt chunk, an unsupported chunk format or just because the chunk does not exist to be loaded.
|
|
49
53
|
|
|
50
|
-
|
|
51
|
-
"""
|
|
52
|
-
An error thrown when the raw level data cannot be read from.
|
|
54
|
+
Catching this error will also catch :class:`ChunkDoesNotExist`
|
|
53
55
|
|
|
54
|
-
|
|
56
|
+
>>> try:
|
|
57
|
+
>>> # get chunk
|
|
58
|
+
>>> chunk = world.get_chunk(cx, cz, dimension)
|
|
59
|
+
>>> except ChunkLoadError:
|
|
60
|
+
>>> # will catch all chunks that have failed to load
|
|
61
|
+
>>> # either because they do not exist or errored during loading.
|
|
55
62
|
"""
|
|
56
63
|
|
|
57
|
-
|
|
58
|
-
class LevelWriteError(Exception):
|
|
64
|
+
def get_null_chunk(arg0: str) -> Chunk:
|
|
59
65
|
"""
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
This is usually because the data has been opened somewhere else.
|
|
66
|
+
This is a private function
|
|
63
67
|
"""
|