amulet-core 2.0a7__cp311-cp311-win_amd64.whl → 2.0.1.0.1297307203.19.43.34808.0a0__cp311-cp311-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.cp311-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.0a7.dist-info → amulet_core-2.0.1.0.1297307203.19.43.34808.0a0.dist-info}/METADATA +25 -20
- amulet_core-2.0.1.0.1297307203.19.43.34808.0a0.dist-info/RECORD +45 -0
- {amulet_core-2.0a7.dist-info → amulet_core-2.0.1.0.1297307203.19.43.34808.0a0.dist-info}/WHEEL +1 -1
- amulet_core-2.0.1.0.1297307203.19.43.34808.0a0.dist-info/entry_points.txt +2 -0
- amulet/__init__.cp311-win_amd64.pyd +0 -0
- amulet/__init__.py.cpp +0 -43
- amulet/__init__.pyi +0 -28
- 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 -99
- 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 -335
- 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__.py +0 -1
- amulet/mesh/block/block_mesh.py +0 -369
- amulet/mesh/block/cube.py +0 -149
- amulet/mesh/block/missing_block.py +0 -20
- 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 -62
- 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 -87
- amulet/resource_pack/bedrock/__init__.py +0 -2
- amulet/resource_pack/bedrock/bedrock_vanilla_fix/pack_icon.png +0 -0
- amulet/resource_pack/bedrock/bedrock_vanilla_fix/textures/blocks/grass_carried.png +0 -0
- amulet/resource_pack/bedrock/bedrock_vanilla_fix/textures/blocks/grass_side_carried.png +0 -0
- amulet/resource_pack/bedrock/bedrock_vanilla_fix/textures/blocks/water.png +0 -0
- amulet/resource_pack/bedrock/blockshapes/__init__.py +0 -31
- amulet/resource_pack/bedrock/blockshapes/air.py +0 -35
- amulet/resource_pack/bedrock/blockshapes/base_blockshape.py +0 -29
- amulet/resource_pack/bedrock/blockshapes/bubble_column.py +0 -29
- amulet/resource_pack/bedrock/blockshapes/cake.py +0 -46
- amulet/resource_pack/bedrock/blockshapes/chest.py +0 -54
- amulet/resource_pack/bedrock/blockshapes/comparator.py +0 -51
- amulet/resource_pack/bedrock/blockshapes/cross_texture.py +0 -186
- amulet/resource_pack/bedrock/blockshapes/cross_texture0.py +0 -17
- amulet/resource_pack/bedrock/blockshapes/cross_texture_green.py +0 -16
- amulet/resource_pack/bedrock/blockshapes/cube.py +0 -38
- amulet/resource_pack/bedrock/blockshapes/default.py +0 -14
- amulet/resource_pack/bedrock/blockshapes/door.py +0 -38
- amulet/resource_pack/bedrock/blockshapes/door1.py +0 -14
- amulet/resource_pack/bedrock/blockshapes/door2.py +0 -14
- amulet/resource_pack/bedrock/blockshapes/door3.py +0 -14
- amulet/resource_pack/bedrock/blockshapes/door4.py +0 -14
- amulet/resource_pack/bedrock/blockshapes/door5.py +0 -14
- amulet/resource_pack/bedrock/blockshapes/door6.py +0 -14
- amulet/resource_pack/bedrock/blockshapes/double_plant.py +0 -40
- amulet/resource_pack/bedrock/blockshapes/enchanting_table.py +0 -22
- amulet/resource_pack/bedrock/blockshapes/farmland.py +0 -22
- amulet/resource_pack/bedrock/blockshapes/fence.py +0 -22
- amulet/resource_pack/bedrock/blockshapes/flat.py +0 -55
- amulet/resource_pack/bedrock/blockshapes/flat_wall.py +0 -55
- amulet/resource_pack/bedrock/blockshapes/furnace.py +0 -44
- amulet/resource_pack/bedrock/blockshapes/furnace_lit.py +0 -14
- amulet/resource_pack/bedrock/blockshapes/green_cube.py +0 -39
- amulet/resource_pack/bedrock/blockshapes/ladder.py +0 -36
- amulet/resource_pack/bedrock/blockshapes/lilypad.py +0 -14
- amulet/resource_pack/bedrock/blockshapes/partial_block.py +0 -57
- amulet/resource_pack/bedrock/blockshapes/piston.py +0 -44
- amulet/resource_pack/bedrock/blockshapes/piston_arm.py +0 -72
- amulet/resource_pack/bedrock/blockshapes/portal_frame.py +0 -22
- amulet/resource_pack/bedrock/blockshapes/pressure_plate.py +0 -29
- amulet/resource_pack/bedrock/blockshapes/pumpkin.py +0 -36
- amulet/resource_pack/bedrock/blockshapes/pumpkin_carved.py +0 -14
- amulet/resource_pack/bedrock/blockshapes/pumpkin_lit.py +0 -14
- amulet/resource_pack/bedrock/blockshapes/red_dust.py +0 -14
- amulet/resource_pack/bedrock/blockshapes/repeater.py +0 -53
- amulet/resource_pack/bedrock/blockshapes/slab.py +0 -33
- amulet/resource_pack/bedrock/blockshapes/slab_double.py +0 -15
- amulet/resource_pack/bedrock/blockshapes/tree.py +0 -41
- amulet/resource_pack/bedrock/blockshapes/turtle_egg.py +0 -15
- amulet/resource_pack/bedrock/blockshapes/vine.py +0 -52
- amulet/resource_pack/bedrock/blockshapes/wall.py +0 -22
- amulet/resource_pack/bedrock/blockshapes/water.py +0 -38
- amulet/resource_pack/bedrock/download_resources.py +0 -147
- amulet/resource_pack/bedrock/resource_pack.py +0 -40
- amulet/resource_pack/bedrock/resource_pack_manager.py +0 -361
- amulet/resource_pack/bedrock/sort_blockshapes.py +0 -15
- 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 -551
- 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/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.0a7.dist-info/RECORD +0 -295
- amulet_core-2.0a7.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.0a7.dist-info → amulet_core-2.0.1.0.1297307203.19.43.34808.0a0.dist-info}/top_level.txt +0 -0
|
@@ -1,531 +0,0 @@
|
|
|
1
|
-
#include <memory>
|
|
2
|
-
#include <map>
|
|
3
|
-
#include <cstdint>
|
|
4
|
-
#include <stdexcept>
|
|
5
|
-
#include <type_traits>
|
|
6
|
-
#include <string>
|
|
7
|
-
#include <functional>
|
|
8
|
-
#include <variant>
|
|
9
|
-
#include <algorithm>
|
|
10
|
-
|
|
11
|
-
#include <pybind11/pybind11.h>
|
|
12
|
-
|
|
13
|
-
#include <amulet_nbt/tag/named_tag.hpp>
|
|
14
|
-
#include <amulet_nbt/tag/compound.hpp>
|
|
15
|
-
|
|
16
|
-
#include <amulet/version.hpp>
|
|
17
|
-
#include <amulet/block.hpp>
|
|
18
|
-
#include <amulet/chunk.hpp>
|
|
19
|
-
#include <amulet/level/java/java_chunk.hpp>
|
|
20
|
-
#include <amulet/level/java/long_array.hpp>
|
|
21
|
-
|
|
22
|
-
namespace py = pybind11;
|
|
23
|
-
using namespace AmuletNBT;
|
|
24
|
-
|
|
25
|
-
namespace Amulet {
|
|
26
|
-
template <typename tagT>
|
|
27
|
-
tagT get_tag(const CompoundTag& compound, std::string name, std::function<tagT()> get_default) {
|
|
28
|
-
const auto& it = compound.find(name);
|
|
29
|
-
if (
|
|
30
|
-
it != compound.end() &&
|
|
31
|
-
std::holds_alternative<tagT>(it->second)
|
|
32
|
-
) {
|
|
33
|
-
return std::get<tagT>(it->second);
|
|
34
|
-
}
|
|
35
|
-
return get_default();
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
template <typename tagT>
|
|
39
|
-
tagT pop_tag(CompoundTag& compound, std::string name, std::function<tagT()> get_default) {
|
|
40
|
-
auto node = compound.extract(name);
|
|
41
|
-
if (
|
|
42
|
-
node &&
|
|
43
|
-
std::holds_alternative<tagT>(node.mapped())
|
|
44
|
-
) {
|
|
45
|
-
return std::get<tagT>(node.mapped());
|
|
46
|
-
}
|
|
47
|
-
return get_default();
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
CompoundTagPtr get_region(const std::map<std::string, NamedTag>& raw_chunk) {
|
|
51
|
-
const auto& it = raw_chunk.find("region");
|
|
52
|
-
if (
|
|
53
|
-
it != raw_chunk.end() &&
|
|
54
|
-
std::holds_alternative<CompoundTagPtr>(it->second.tag_node)
|
|
55
|
-
) {
|
|
56
|
-
return std::get<CompoundTagPtr>(it->second.tag_node);
|
|
57
|
-
}
|
|
58
|
-
return std::make_shared<CompoundTag>();
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
CompoundTagPtr get_level(const CompoundTag& region) {
|
|
62
|
-
return get_tag<CompoundTagPtr>(
|
|
63
|
-
region,
|
|
64
|
-
"Level",
|
|
65
|
-
[]() { return std::make_shared<CompoundTag>(); }
|
|
66
|
-
);
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
std::int64_t validate_coords(
|
|
70
|
-
CompoundTag& level,
|
|
71
|
-
std::int64_t cx,
|
|
72
|
-
std::int64_t cz
|
|
73
|
-
) {
|
|
74
|
-
if (
|
|
75
|
-
pop_tag<IntTag>(level, "xPos", []() { return IntTag(); }).value != cx ||
|
|
76
|
-
pop_tag<IntTag>(level, "zPos", []() { return IntTag(); }).value != cz
|
|
77
|
-
) {
|
|
78
|
-
throw std::runtime_error("Chunk coord data is incorrect.");
|
|
79
|
-
}
|
|
80
|
-
std::int64_t cy = pop_tag<IntTag>(level, "yPos", []() { return IntTag(); }).value;
|
|
81
|
-
return cy << 4;
|
|
82
|
-
}
|
|
83
|
-
|
|
84
|
-
template <typename chunkT>
|
|
85
|
-
void decode_last_update(chunkT& chunk, CompoundTag& level) {
|
|
86
|
-
// TODO
|
|
87
|
-
//pop_tag<LongTag>(level, "LastUpdate", []() { return LongTag(); }).value;
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
template <typename chunkT>
|
|
91
|
-
void decode_inhabited_time(chunkT& chunk, CompoundTag& level) {
|
|
92
|
-
// TODO
|
|
93
|
-
//pop_tag<LongTag>(level, "InhabitedTime", []() { return LongTag(); }).value;
|
|
94
|
-
}
|
|
95
|
-
|
|
96
|
-
template <typename chunkT>
|
|
97
|
-
void decode_terrain_populated(chunkT& chunk, CompoundTag& level) {
|
|
98
|
-
// TODO
|
|
99
|
-
//pop_tag<ByteTag>(level, "TerrainPopulated", []() { return ByteTag(1); }).value;
|
|
100
|
-
}
|
|
101
|
-
|
|
102
|
-
template <typename chunkT>
|
|
103
|
-
void decode_light_populated(chunkT& chunk, CompoundTag& level) {
|
|
104
|
-
// TODO
|
|
105
|
-
//pop_tag<ByteTag>(level, "LightPopulated", []() { return ByteTag(1); }).value;
|
|
106
|
-
}
|
|
107
|
-
|
|
108
|
-
template <typename chunkT>
|
|
109
|
-
void decode_status(chunkT& chunk, CompoundTag& level, std::int64_t data_version) {
|
|
110
|
-
// TODO
|
|
111
|
-
/*std::string status = pop_tag<StringTag>(level, "Status", []() { return StringTag(); });
|
|
112
|
-
if (!status.empty()) {
|
|
113
|
-
chunk.set_status(status);
|
|
114
|
-
}
|
|
115
|
-
else if (data_version >= 3454) {
|
|
116
|
-
chunk.set_status("minecraft:full");
|
|
117
|
-
}
|
|
118
|
-
else if (data_version >= 1912) {
|
|
119
|
-
chunk.set_status("full");
|
|
120
|
-
}
|
|
121
|
-
else {
|
|
122
|
-
chunk.set_status("postprocessed");
|
|
123
|
-
}*/
|
|
124
|
-
}
|
|
125
|
-
|
|
126
|
-
template <typename chunkT>
|
|
127
|
-
void decode_heightmap(chunkT& chunk, CompoundTag& level) {
|
|
128
|
-
// TODO
|
|
129
|
-
}
|
|
130
|
-
|
|
131
|
-
template <typename chunkT>
|
|
132
|
-
void decode_heightmaps_compound(chunkT& chunk, CompoundTag& level) {
|
|
133
|
-
// TODO
|
|
134
|
-
}
|
|
135
|
-
|
|
136
|
-
template <int DataVersion>
|
|
137
|
-
std::shared_ptr<JavaChunk> _decode_java_chunk(
|
|
138
|
-
py::object game_version,
|
|
139
|
-
std::map<std::string, NamedTag>& raw_chunk,
|
|
140
|
-
CompoundTag& region,
|
|
141
|
-
std::int64_t cx,
|
|
142
|
-
std::int64_t cz,
|
|
143
|
-
std::shared_ptr<VersionNumber> version,
|
|
144
|
-
std::int64_t data_version,
|
|
145
|
-
std::shared_ptr<BlockStack> default_block,
|
|
146
|
-
std::shared_ptr<Biome> default_biome,
|
|
147
|
-
std::function<std::shared_ptr<Block>()> get_water
|
|
148
|
-
) {
|
|
149
|
-
// Validate coordinates
|
|
150
|
-
CompoundTagPtr level_ptr;
|
|
151
|
-
CompoundTag& level = [&]() -> CompoundTag& {
|
|
152
|
-
if constexpr (DataVersion >= 2203) {
|
|
153
|
-
return data_version >= 2844 ? region : *(level_ptr = get_level(region));
|
|
154
|
-
}
|
|
155
|
-
else {
|
|
156
|
-
level_ptr = get_level(region);
|
|
157
|
-
return *level_ptr;
|
|
158
|
-
|
|
159
|
-
}
|
|
160
|
-
}();
|
|
161
|
-
auto floor_y = validate_coords(level, cx, cz);
|
|
162
|
-
|
|
163
|
-
// Make the chunk
|
|
164
|
-
auto chunk_ptr = [&]() {
|
|
165
|
-
if constexpr (DataVersion >= 2203) {
|
|
166
|
-
return std::make_shared<JavaChunk2203>(
|
|
167
|
-
data_version,
|
|
168
|
-
default_block,
|
|
169
|
-
default_biome
|
|
170
|
-
);
|
|
171
|
-
}
|
|
172
|
-
else if constexpr (DataVersion >= 1466) {
|
|
173
|
-
return std::make_shared<JavaChunk1466>(
|
|
174
|
-
data_version,
|
|
175
|
-
default_block,
|
|
176
|
-
default_biome
|
|
177
|
-
);
|
|
178
|
-
}
|
|
179
|
-
else if constexpr (DataVersion >= 1444) {
|
|
180
|
-
return std::make_shared<JavaChunk1444>(
|
|
181
|
-
data_version,
|
|
182
|
-
default_block,
|
|
183
|
-
default_biome
|
|
184
|
-
);
|
|
185
|
-
}
|
|
186
|
-
else if constexpr (DataVersion >= 0) {
|
|
187
|
-
return std::make_shared<JavaChunk0>(
|
|
188
|
-
data_version,
|
|
189
|
-
default_block,
|
|
190
|
-
default_biome
|
|
191
|
-
);
|
|
192
|
-
}
|
|
193
|
-
else {
|
|
194
|
-
return std::make_shared<JavaChunkNA>(
|
|
195
|
-
default_block,
|
|
196
|
-
default_biome
|
|
197
|
-
);
|
|
198
|
-
}
|
|
199
|
-
}();
|
|
200
|
-
auto& chunk = *chunk_ptr;
|
|
201
|
-
|
|
202
|
-
if constexpr (DataVersion == -1) {
|
|
203
|
-
// LegacyVersionComponent TODO
|
|
204
|
-
//pop_tag<ByteTag>(*level, "V", []() { return ByteTag(1); });
|
|
205
|
-
}
|
|
206
|
-
|
|
207
|
-
decode_last_update(chunk, level);
|
|
208
|
-
decode_inhabited_time(chunk, level);
|
|
209
|
-
|
|
210
|
-
// Status
|
|
211
|
-
if constexpr (DataVersion >= 1444) {
|
|
212
|
-
decode_status(chunk, level, data_version);
|
|
213
|
-
}
|
|
214
|
-
else {
|
|
215
|
-
decode_terrain_populated(chunk, level);
|
|
216
|
-
decode_light_populated(chunk, level);
|
|
217
|
-
}
|
|
218
|
-
|
|
219
|
-
// Heightmaps
|
|
220
|
-
if constexpr (DataVersion >= 1466) {
|
|
221
|
-
decode_heightmaps_compound(chunk, level);
|
|
222
|
-
}
|
|
223
|
-
else {
|
|
224
|
-
decode_heightmap(chunk, level);
|
|
225
|
-
}
|
|
226
|
-
|
|
227
|
-
// Sections
|
|
228
|
-
ListTagPtr sections_ptr = get_tag<ListTagPtr>(level, "sections", []() { return std::make_shared<ListTag>(); });
|
|
229
|
-
if (!std::holds_alternative<CompoundListTag>(*sections_ptr)) {
|
|
230
|
-
throw std::invalid_argument("Chunk sections is not a list of compound tags.");
|
|
231
|
-
}
|
|
232
|
-
auto& sections = std::get<CompoundListTag>(*sections_ptr);
|
|
233
|
-
std::map<std::int64_t, CompoundTagPtr> sections_map;
|
|
234
|
-
for (auto& tag : sections) {
|
|
235
|
-
sections_map.emplace(
|
|
236
|
-
get_tag<ByteTag>(*tag, "Y", []() { return ByteTag(); }).value,
|
|
237
|
-
tag
|
|
238
|
-
);
|
|
239
|
-
}
|
|
240
|
-
|
|
241
|
-
// blocks
|
|
242
|
-
auto block_component = chunk.get_block();
|
|
243
|
-
auto block_palette = block_component->get_palette();
|
|
244
|
-
auto block_sections = block_component->get_sections();
|
|
245
|
-
if constexpr (DataVersion >= 1444) {
|
|
246
|
-
// Palette format
|
|
247
|
-
// if data_version >= 2844:
|
|
248
|
-
// region.sections[].block_states.data
|
|
249
|
-
// region.sections[].block_states.palette
|
|
250
|
-
// elif data_version >= 2836:
|
|
251
|
-
// region.Level.Sections[].block_states.data
|
|
252
|
-
// region.Level.Sections[].block_states.palette
|
|
253
|
-
// else:
|
|
254
|
-
// region.Level.Sections[].BlockStates
|
|
255
|
-
// region.Level.Sections[].Palette
|
|
256
|
-
|
|
257
|
-
// TODO: move this to C++
|
|
258
|
-
py::object Waterloggable = py::module::import("amulet.game.java").attr("Waterloggable");
|
|
259
|
-
py::object WaterloggableYes = Waterloggable.attr("Yes");
|
|
260
|
-
py::object WaterloggableAlways = Waterloggable.attr("Always");
|
|
261
|
-
|
|
262
|
-
for (auto& [cy, section] : sections_map) {
|
|
263
|
-
auto [palette_tag, data_tag] = [&]() {
|
|
264
|
-
if (data_version >= 2836) {
|
|
265
|
-
auto block_states_tag = pop_tag<CompoundTagPtr>(*section, "block_states", []() { return std::make_shared<CompoundTag>(); });
|
|
266
|
-
return std::make_pair(
|
|
267
|
-
pop_tag<ListTagPtr>(*block_states_tag, "palette", []() { return std::make_shared<ListTag>(); }),
|
|
268
|
-
pop_tag<LongArrayTagPtr>(*block_states_tag, "data", []() { return std::make_shared<LongArrayTag>(); })
|
|
269
|
-
);
|
|
270
|
-
}
|
|
271
|
-
else {
|
|
272
|
-
return std::make_pair(
|
|
273
|
-
pop_tag<ListTagPtr>(*section, "Palette", []() { return std::make_shared<ListTag>(); }),
|
|
274
|
-
pop_tag<LongArrayTagPtr>(*section, "BlockStates", []() { return std::make_shared<LongArrayTag>(); })
|
|
275
|
-
);
|
|
276
|
-
}
|
|
277
|
-
}();
|
|
278
|
-
if (!std::holds_alternative<CompoundListTag>(*palette_tag)) { continue; }
|
|
279
|
-
const auto& palette = std::get<CompoundListTag>(*palette_tag);
|
|
280
|
-
size_t palette_size = palette.size();
|
|
281
|
-
std::vector<std::uint32_t> lut;
|
|
282
|
-
lut.reserve(palette_size);
|
|
283
|
-
for (auto& block_tag : palette) {
|
|
284
|
-
auto block_name = get_tag<StringTag>(*block_tag, "Name", []() -> StringTag { throw std::invalid_argument("Block has no Name attribute."); });
|
|
285
|
-
auto colon_index = block_name.find(':');
|
|
286
|
-
auto [block_namespace, block_base_name] = [&]() -> std::pair<std::string, std::string> {
|
|
287
|
-
if (colon_index == std::string::npos) {
|
|
288
|
-
return std::make_pair("", block_name);
|
|
289
|
-
}
|
|
290
|
-
else {
|
|
291
|
-
return std::make_pair(
|
|
292
|
-
block_name.substr(0, colon_index),
|
|
293
|
-
block_name.substr(colon_index + 1)
|
|
294
|
-
);
|
|
295
|
-
}
|
|
296
|
-
}();
|
|
297
|
-
auto properties_tag = get_tag<CompoundTagPtr>(*block_tag, "Properties", []() { return std::make_shared<CompoundTag>(); });
|
|
298
|
-
std::map<std::string, PropertyValueType> block_properties;
|
|
299
|
-
for (const auto& [k, v] : *properties_tag) {
|
|
300
|
-
std::visit([&block_properties, &k](auto&& arg) {
|
|
301
|
-
using T = std::decay_t<decltype(arg)>;
|
|
302
|
-
if constexpr (
|
|
303
|
-
std::is_same_v<T, AmuletNBT::ByteTag> ||
|
|
304
|
-
std::is_same_v<T, AmuletNBT::ShortTag> ||
|
|
305
|
-
std::is_same_v<T, AmuletNBT::IntTag> ||
|
|
306
|
-
std::is_same_v<T, AmuletNBT::LongTag> ||
|
|
307
|
-
std::is_same_v<T, AmuletNBT::StringTag>
|
|
308
|
-
) {
|
|
309
|
-
block_properties.emplace(k, arg);
|
|
310
|
-
}
|
|
311
|
-
}, v);
|
|
312
|
-
}
|
|
313
|
-
std::vector<std::shared_ptr<Block>> blocks;
|
|
314
|
-
|
|
315
|
-
// TODO: convert this to C++
|
|
316
|
-
py::object waterloggable = game_version.attr("block").attr("waterloggable")(block_namespace, block_base_name);
|
|
317
|
-
if (waterloggable.equal(WaterloggableYes)) {
|
|
318
|
-
auto waterlogged_it = block_properties.find("waterlogged");
|
|
319
|
-
if (
|
|
320
|
-
waterlogged_it != block_properties.end() and
|
|
321
|
-
std::holds_alternative<StringTag>(waterlogged_it->second)
|
|
322
|
-
) {
|
|
323
|
-
if (std::get<StringTag>(waterlogged_it->second) == "true") {
|
|
324
|
-
blocks.push_back(get_water());
|
|
325
|
-
}
|
|
326
|
-
block_properties.erase(waterlogged_it);
|
|
327
|
-
}
|
|
328
|
-
}
|
|
329
|
-
else if (waterloggable.equal(WaterloggableAlways)) {
|
|
330
|
-
blocks.push_back(get_water());
|
|
331
|
-
}
|
|
332
|
-
blocks.insert(
|
|
333
|
-
blocks.begin(),
|
|
334
|
-
std::make_shared<Block>(
|
|
335
|
-
"java",
|
|
336
|
-
version,
|
|
337
|
-
block_namespace,
|
|
338
|
-
block_base_name,
|
|
339
|
-
block_properties
|
|
340
|
-
)
|
|
341
|
-
);
|
|
342
|
-
|
|
343
|
-
lut.push_back(
|
|
344
|
-
block_palette->block_stack_to_index(
|
|
345
|
-
std::make_shared<BlockStack>(blocks)
|
|
346
|
-
)
|
|
347
|
-
);
|
|
348
|
-
}
|
|
349
|
-
|
|
350
|
-
block_sections->set_section(
|
|
351
|
-
cy,
|
|
352
|
-
[&] {
|
|
353
|
-
if (data_tag->empty()) {
|
|
354
|
-
return std::make_shared<IndexArray3D>(
|
|
355
|
-
std::make_tuple<std::uint16_t>(16, 16, 16),
|
|
356
|
-
0
|
|
357
|
-
);
|
|
358
|
-
}
|
|
359
|
-
else {
|
|
360
|
-
std::vector<std::uint32_t> decoded_vector(4096);
|
|
361
|
-
std::span<std::uint32_t> decoded_span(decoded_vector);
|
|
362
|
-
Amulet::decode_long_array(
|
|
363
|
-
std::span<std::uint64_t>(reinterpret_cast<std::uint64_t*>(data_tag->data()), data_tag->size()),
|
|
364
|
-
decoded_span,
|
|
365
|
-
std::max<std::uint8_t>(4, std::bit_width(palette_size - 1)),
|
|
366
|
-
data_version <= 2529
|
|
367
|
-
);
|
|
368
|
-
auto index_array = std::make_shared<IndexArray3D>(
|
|
369
|
-
std::make_tuple<std::uint16_t>(16, 16, 16)
|
|
370
|
-
);
|
|
371
|
-
std::span<std::uint32_t> index_array_span(index_array->get_buffer(), index_array->get_size());
|
|
372
|
-
// Convert YZX to XYZ and look up in lut.
|
|
373
|
-
for (size_t y = 0; y < 16; y++) {
|
|
374
|
-
for (size_t x = 0; x < 16; x++) {
|
|
375
|
-
for (size_t z = 0; z < 16; z++) {
|
|
376
|
-
auto& block_index = decoded_span[y * 256 + z * 16 + x];
|
|
377
|
-
if (palette_size <= block_index) {
|
|
378
|
-
throw std::runtime_error(
|
|
379
|
-
"Block index at cx=" + std::to_string(cx) +
|
|
380
|
-
",cy=" + std::to_string(cy) +
|
|
381
|
-
",cz=" + std::to_string(cx) +
|
|
382
|
-
",dx=" + std::to_string(x) +
|
|
383
|
-
",dy=" + std::to_string(y) +
|
|
384
|
-
",dz=" + std::to_string(z) +
|
|
385
|
-
" is larger than the block palette size."
|
|
386
|
-
);
|
|
387
|
-
}
|
|
388
|
-
index_array_span[x * 256 + y * 16 + z] = lut[block_index];
|
|
389
|
-
}
|
|
390
|
-
}
|
|
391
|
-
}
|
|
392
|
-
return index_array;
|
|
393
|
-
}
|
|
394
|
-
}()
|
|
395
|
-
);
|
|
396
|
-
}
|
|
397
|
-
}
|
|
398
|
-
else {
|
|
399
|
-
// Numerical format
|
|
400
|
-
throw std::runtime_error("NotImplemented");
|
|
401
|
-
}
|
|
402
|
-
|
|
403
|
-
// TODO: biomes
|
|
404
|
-
|
|
405
|
-
// Return the chunk
|
|
406
|
-
return chunk_ptr;
|
|
407
|
-
}
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
// Get the default block for this dimension and version via the python API.
|
|
411
|
-
std::shared_ptr<BlockStack> get_default_block(
|
|
412
|
-
py::object dimension,
|
|
413
|
-
const VersionRange& version_range
|
|
414
|
-
) {
|
|
415
|
-
auto default_block = dimension.attr("default_block")().cast<std::shared_ptr<BlockStack>>();
|
|
416
|
-
std::vector<std::shared_ptr<Block>> blocks;
|
|
417
|
-
for (const auto& block : default_block->get_blocks()) {
|
|
418
|
-
if (version_range.contains(block->get_platform(), *block->get_version())) {
|
|
419
|
-
blocks.push_back(block);
|
|
420
|
-
}
|
|
421
|
-
else {
|
|
422
|
-
py::object block_ = py::module::import("amulet.game").attr("get_game_version")(
|
|
423
|
-
py::cast(block->get_platform()),
|
|
424
|
-
py::cast(block->get_version())
|
|
425
|
-
).attr("block").attr("translate")(
|
|
426
|
-
"java",
|
|
427
|
-
py::cast(version_range.get_max_version()),
|
|
428
|
-
py::cast(block)
|
|
429
|
-
).attr("__getitem__")(0);
|
|
430
|
-
if (py::isinstance<Block>(block_)) {
|
|
431
|
-
blocks.push_back(block_.cast<std::shared_ptr<Block>>());
|
|
432
|
-
}
|
|
433
|
-
}
|
|
434
|
-
}
|
|
435
|
-
if (blocks.empty()) {
|
|
436
|
-
blocks.push_back(
|
|
437
|
-
std::make_shared<Block>(
|
|
438
|
-
version_range.get_platform(),
|
|
439
|
-
version_range.get_max_version(),
|
|
440
|
-
"minecraft",
|
|
441
|
-
"air"
|
|
442
|
-
)
|
|
443
|
-
);
|
|
444
|
-
}
|
|
445
|
-
return std::make_shared<BlockStack>(blocks);
|
|
446
|
-
}
|
|
447
|
-
|
|
448
|
-
std::shared_ptr<Biome> get_default_biome(
|
|
449
|
-
py::object dimension,
|
|
450
|
-
const VersionRange& version_range
|
|
451
|
-
) {
|
|
452
|
-
auto biome = dimension.attr("default_biome")().cast<std::shared_ptr<Biome>>();
|
|
453
|
-
if (version_range.contains(biome->get_platform(), *biome->get_version())) {
|
|
454
|
-
return biome;
|
|
455
|
-
}
|
|
456
|
-
else {
|
|
457
|
-
return py::module::import("amulet.game").attr("get_game_version")(
|
|
458
|
-
py::cast(biome->get_platform()),
|
|
459
|
-
py::cast(biome->get_version())
|
|
460
|
-
).attr("biome").attr("translate")(
|
|
461
|
-
"java",
|
|
462
|
-
py::cast(version_range.get_max_version()),
|
|
463
|
-
py::cast(biome)
|
|
464
|
-
).cast<std::shared_ptr<Biome>>();
|
|
465
|
-
}
|
|
466
|
-
}
|
|
467
|
-
|
|
468
|
-
std::shared_ptr<JavaChunk> decode_java_chunk(
|
|
469
|
-
py::object raw_level,
|
|
470
|
-
py::object dimension,
|
|
471
|
-
std::map<std::string, NamedTag>& raw_chunk,
|
|
472
|
-
std::int64_t cx,
|
|
473
|
-
std::int64_t cz
|
|
474
|
-
) {
|
|
475
|
-
// Get the region compound tag
|
|
476
|
-
CompoundTagPtr region = get_region(raw_chunk);
|
|
477
|
-
|
|
478
|
-
std::int64_t data_version = pop_tag<IntTag>(
|
|
479
|
-
*region,
|
|
480
|
-
"DataVersion",
|
|
481
|
-
[]() { return IntTag(-1); }
|
|
482
|
-
).value;
|
|
483
|
-
|
|
484
|
-
auto version = std::make_shared<VersionNumber>(std::initializer_list<std::int64_t>{ data_version });
|
|
485
|
-
auto version_range = std::make_shared<VersionRange>("java", version, version);
|
|
486
|
-
auto default_block = get_default_block(dimension, *version_range);
|
|
487
|
-
auto default_biome = get_default_biome(dimension, *version_range);
|
|
488
|
-
py::object game_version = py::module::import("amulet.game").attr("get_game_version")("java", py::cast(version));
|
|
489
|
-
|
|
490
|
-
std::shared_ptr<Block> _water_block;
|
|
491
|
-
auto get_water = [&version, &_water_block]() {
|
|
492
|
-
if (!_water_block) {
|
|
493
|
-
py::object block = py::module::import("amulet.game").attr("get_game_version")(
|
|
494
|
-
"java",
|
|
495
|
-
VersionNumber({ 3837 })
|
|
496
|
-
).attr("block").attr("translate")(
|
|
497
|
-
"java",
|
|
498
|
-
version,
|
|
499
|
-
Block(
|
|
500
|
-
"java",
|
|
501
|
-
VersionNumber({ 3837 }),
|
|
502
|
-
"minecraft",
|
|
503
|
-
"water",
|
|
504
|
-
std::initializer_list<BlockProperites::value_type>{ {"level", StringTag("0")} }
|
|
505
|
-
)
|
|
506
|
-
).attr("__getitem__")(0);
|
|
507
|
-
if (!py::isinstance<Block>(block)) {
|
|
508
|
-
throw std::runtime_error("Water block did not convert to a block in version Java " + version->toString());
|
|
509
|
-
}
|
|
510
|
-
_water_block = block.cast<std::shared_ptr<Block>>();
|
|
511
|
-
}
|
|
512
|
-
return _water_block;
|
|
513
|
-
};
|
|
514
|
-
|
|
515
|
-
if (data_version >= 2203) {
|
|
516
|
-
return _decode_java_chunk<2203>(game_version, raw_chunk, *region, cx, cz, version, data_version, default_block, default_biome, get_water);
|
|
517
|
-
}
|
|
518
|
-
else if (data_version >= 1466) {
|
|
519
|
-
return _decode_java_chunk<1466>(game_version, raw_chunk, *region, cx, cz, version, data_version, default_block, default_biome, get_water);
|
|
520
|
-
}
|
|
521
|
-
else if (data_version >= 1444) {
|
|
522
|
-
return _decode_java_chunk<1444>(game_version, raw_chunk, *region, cx, cz, version, data_version, default_block, default_biome, get_water);
|
|
523
|
-
}
|
|
524
|
-
else if (data_version >= 0) {
|
|
525
|
-
return _decode_java_chunk<0>(game_version, raw_chunk, *region, cx, cz, version, data_version, default_block, default_biome, get_water);
|
|
526
|
-
}
|
|
527
|
-
else {
|
|
528
|
-
return _decode_java_chunk<-1>(game_version, raw_chunk, *region, cx, cz, version, data_version, default_block, default_biome, get_water);
|
|
529
|
-
}
|
|
530
|
-
}
|
|
531
|
-
}
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
#pragma once
|
|
2
|
-
#include <memory>
|
|
3
|
-
#include <map>
|
|
4
|
-
#include <cstdint>
|
|
5
|
-
|
|
6
|
-
#include <pybind11/pybind11.h>
|
|
7
|
-
|
|
8
|
-
#include <amulet_nbt/tag/named_tag.hpp>
|
|
9
|
-
|
|
10
|
-
#include <amulet/chunk.hpp>
|
|
11
|
-
#include <amulet/level/java/java_chunk.hpp>
|
|
12
|
-
|
|
13
|
-
namespace py = pybind11;
|
|
14
|
-
|
|
15
|
-
namespace Amulet {
|
|
16
|
-
std::shared_ptr<Amulet::JavaChunk> decode_java_chunk(
|
|
17
|
-
py::object raw_level,
|
|
18
|
-
py::object dimension,
|
|
19
|
-
std::map<std::string, AmuletNBT::NamedTag>& raw_chunk,
|
|
20
|
-
std::int64_t cx,
|
|
21
|
-
std::int64_t cz
|
|
22
|
-
);
|
|
23
|
-
}
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
#include <memory>
|
|
2
|
-
#include <map>
|
|
3
|
-
#include <cstdint>
|
|
4
|
-
#include <stdexcept>
|
|
5
|
-
|
|
6
|
-
#include <pybind11/pybind11.h>
|
|
7
|
-
|
|
8
|
-
#include <amulet_nbt/tag/named_tag.hpp>
|
|
9
|
-
|
|
10
|
-
#include <amulet/chunk.hpp>
|
|
11
|
-
#include <amulet/level/java/java_chunk.hpp>
|
|
12
|
-
|
|
13
|
-
namespace py = pybind11;
|
|
14
|
-
|
|
15
|
-
namespace Amulet {
|
|
16
|
-
std::map<std::string, AmuletNBT::NamedTag> encode_java_chunk(
|
|
17
|
-
py::object raw_level,
|
|
18
|
-
py::object dimension,
|
|
19
|
-
std::shared_ptr<Amulet::JavaChunk> chunk,
|
|
20
|
-
std::int64_t cx,
|
|
21
|
-
std::int64_t cz
|
|
22
|
-
) {
|
|
23
|
-
throw std::runtime_error("");
|
|
24
|
-
}
|
|
25
|
-
}
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
#pragma once
|
|
2
|
-
#include <memory>
|
|
3
|
-
#include <map>
|
|
4
|
-
#include <cstdint>
|
|
5
|
-
|
|
6
|
-
#include <pybind11/pybind11.h>
|
|
7
|
-
|
|
8
|
-
#include <amulet_nbt/tag/named_tag.hpp>
|
|
9
|
-
|
|
10
|
-
#include <amulet/chunk.hpp>
|
|
11
|
-
#include <amulet/level/java/java_chunk.hpp>
|
|
12
|
-
|
|
13
|
-
namespace py = pybind11;
|
|
14
|
-
|
|
15
|
-
namespace Amulet {
|
|
16
|
-
std::map<std::string, AmuletNBT::NamedTag> encode_java_chunk(
|
|
17
|
-
py::object raw_level,
|
|
18
|
-
py::object dimension,
|
|
19
|
-
std::shared_ptr<Amulet::JavaChunk> chunk,
|
|
20
|
-
std::int64_t cx,
|
|
21
|
-
std::int64_t cz
|
|
22
|
-
);
|
|
23
|
-
}
|