amulet-core 2.0a7__cp311-cp311-win_amd64.whl → 2.0.1a2.post250529084738__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.

Files changed (325) hide show
  1. amulet/core/__init__.py +36 -0
  2. amulet/core/__pyinstaller/hook-amulet.core.py +4 -0
  3. amulet/core/_amulet_core.cp311-win_amd64.pyd +0 -0
  4. amulet/core/_amulet_core.pyi +7 -0
  5. amulet/{_version.py → core/_version.py} +3 -3
  6. amulet/core/amulet_core.dll +0 -0
  7. amulet/core/amulet_core.lib +0 -0
  8. amulet/core/amulet_coreConfig.cmake +18 -0
  9. amulet/{biome.pyi → core/biome/__init__.pyi} +3 -3
  10. amulet/core/biome/biome.hpp +53 -0
  11. amulet/{block.pyi → core/block/__init__.pyi} +25 -26
  12. amulet/core/block/block.hpp +156 -0
  13. amulet/{block_entity.pyi → core/block_entity/__init__.pyi} +7 -7
  14. amulet/core/block_entity/block_entity.hpp +84 -0
  15. amulet/{errors.py → core/chunk/__init__.pyi} +37 -33
  16. amulet/core/chunk/chunk.hpp +126 -0
  17. amulet/core/chunk/component/__init__.pyi +18 -0
  18. amulet/core/chunk/component/biome_3d_component.hpp +96 -0
  19. amulet/core/chunk/component/block_component.hpp +101 -0
  20. amulet/core/chunk/component/block_component.pyi +28 -0
  21. amulet/core/chunk/component/block_entity_component.hpp +119 -0
  22. amulet/core/chunk/component/section_array_map.hpp +129 -0
  23. amulet/{chunk_components.pyi → core/chunk/component/section_array_map.pyi} +4 -24
  24. amulet/core/dll.hpp +21 -0
  25. amulet/core/entity/__init__.pyi +105 -0
  26. amulet/core/entity/entity.hpp +100 -0
  27. amulet/{palette → core/palette}/__init__.pyi +2 -2
  28. amulet/core/palette/biome_palette.hpp +65 -0
  29. amulet/{palette → core/palette}/biome_palette.pyi +8 -8
  30. amulet/core/palette/block_palette.hpp +71 -0
  31. amulet/{palette → core/palette}/block_palette.pyi +12 -10
  32. amulet/core/selection/__init__.pyi +8 -0
  33. amulet/core/selection/box.hpp +86 -0
  34. amulet/core/selection/box.pyi +215 -0
  35. amulet/core/selection/group.hpp +80 -0
  36. amulet/core/selection/group.pyi +213 -0
  37. amulet/{version.pyi → core/version/__init__.pyi} +58 -10
  38. amulet/core/version/version.hpp +204 -0
  39. {amulet_core-2.0a7.dist-info → amulet_core-2.0.1a2.post250529084738.dist-info}/METADATA +25 -20
  40. amulet_core-2.0.1a2.post250529084738.dist-info/RECORD +45 -0
  41. {amulet_core-2.0a7.dist-info → amulet_core-2.0.1a2.post250529084738.dist-info}/WHEEL +1 -1
  42. amulet_core-2.0.1a2.post250529084738.dist-info/entry_points.txt +2 -0
  43. amulet/__init__.cp311-win_amd64.pyd +0 -0
  44. amulet/__init__.py.cpp +0 -43
  45. amulet/__init__.pyi +0 -28
  46. amulet/__pyinstaller/hook-amulet.py +0 -4
  47. amulet/_init.py +0 -26
  48. amulet/biome.cpp +0 -36
  49. amulet/biome.hpp +0 -43
  50. amulet/biome.py.cpp +0 -122
  51. amulet/block.cpp +0 -435
  52. amulet/block.hpp +0 -119
  53. amulet/block.py.cpp +0 -377
  54. amulet/block_entity.cpp +0 -12
  55. amulet/block_entity.hpp +0 -56
  56. amulet/block_entity.py.cpp +0 -115
  57. amulet/chunk.cpp +0 -16
  58. amulet/chunk.hpp +0 -99
  59. amulet/chunk.py.cpp +0 -80
  60. amulet/chunk.pyi +0 -28
  61. amulet/chunk_components/biome_3d_component.cpp +0 -5
  62. amulet/chunk_components/biome_3d_component.hpp +0 -79
  63. amulet/chunk_components/block_component.cpp +0 -41
  64. amulet/chunk_components/block_component.hpp +0 -88
  65. amulet/chunk_components/block_entity_component.cpp +0 -5
  66. amulet/chunk_components/block_entity_component.hpp +0 -147
  67. amulet/chunk_components/section_array_map.cpp +0 -129
  68. amulet/chunk_components/section_array_map.hpp +0 -147
  69. amulet/collections/eq.py.hpp +0 -37
  70. amulet/collections/hash.py.hpp +0 -27
  71. amulet/collections/holder.py.hpp +0 -37
  72. amulet/collections/iterator.py.hpp +0 -80
  73. amulet/collections/mapping.py.hpp +0 -199
  74. amulet/collections/mutable_mapping.py.hpp +0 -226
  75. amulet/collections/sequence.py.hpp +0 -163
  76. amulet/collections.pyi +0 -40
  77. amulet/data_types.py +0 -29
  78. amulet/entity.py +0 -182
  79. amulet/game/__init__.py +0 -7
  80. amulet/game/_game.py +0 -152
  81. amulet/game/_universal/__init__.py +0 -1
  82. amulet/game/_universal/_biome.py +0 -17
  83. amulet/game/_universal/_block.py +0 -47
  84. amulet/game/_universal/_version.py +0 -68
  85. amulet/game/abc/__init__.py +0 -22
  86. amulet/game/abc/_block_specification.py +0 -150
  87. amulet/game/abc/biome.py +0 -213
  88. amulet/game/abc/block.py +0 -331
  89. amulet/game/abc/game_version_container.py +0 -25
  90. amulet/game/abc/json_interface.py +0 -27
  91. amulet/game/abc/version.py +0 -44
  92. amulet/game/bedrock/__init__.py +0 -1
  93. amulet/game/bedrock/_biome.py +0 -35
  94. amulet/game/bedrock/_block.py +0 -42
  95. amulet/game/bedrock/_version.py +0 -165
  96. amulet/game/java/__init__.py +0 -2
  97. amulet/game/java/_biome.py +0 -35
  98. amulet/game/java/_block.py +0 -60
  99. amulet/game/java/_version.py +0 -176
  100. amulet/game/translate/__init__.py +0 -12
  101. amulet/game/translate/_functions/__init__.py +0 -15
  102. amulet/game/translate/_functions/_code_functions/__init__.py +0 -0
  103. amulet/game/translate/_functions/_code_functions/_text.py +0 -553
  104. amulet/game/translate/_functions/_code_functions/banner_pattern.py +0 -67
  105. amulet/game/translate/_functions/_code_functions/bedrock_chest_connection.py +0 -152
  106. amulet/game/translate/_functions/_code_functions/bedrock_moving_block_pos.py +0 -88
  107. amulet/game/translate/_functions/_code_functions/bedrock_sign.py +0 -152
  108. amulet/game/translate/_functions/_code_functions/bedrock_skull_rotation.py +0 -16
  109. amulet/game/translate/_functions/_code_functions/custom_name.py +0 -146
  110. amulet/game/translate/_functions/_frozen.py +0 -66
  111. amulet/game/translate/_functions/_state.py +0 -54
  112. amulet/game/translate/_functions/_typing.py +0 -98
  113. amulet/game/translate/_functions/abc.py +0 -123
  114. amulet/game/translate/_functions/carry_nbt.py +0 -160
  115. amulet/game/translate/_functions/carry_properties.py +0 -80
  116. amulet/game/translate/_functions/code.py +0 -143
  117. amulet/game/translate/_functions/map_block_name.py +0 -66
  118. amulet/game/translate/_functions/map_nbt.py +0 -111
  119. amulet/game/translate/_functions/map_properties.py +0 -93
  120. amulet/game/translate/_functions/multiblock.py +0 -112
  121. amulet/game/translate/_functions/new_block.py +0 -42
  122. amulet/game/translate/_functions/new_entity.py +0 -43
  123. amulet/game/translate/_functions/new_nbt.py +0 -206
  124. amulet/game/translate/_functions/new_properties.py +0 -64
  125. amulet/game/translate/_functions/sequence.py +0 -51
  126. amulet/game/translate/_functions/walk_input_nbt.py +0 -331
  127. amulet/game/translate/_translator.py +0 -433
  128. amulet/img/__init__.py +0 -10
  129. amulet/img/missing_no.png +0 -0
  130. amulet/img/missing_pack.png +0 -0
  131. amulet/img/missing_world.png +0 -0
  132. amulet/io/binary_reader.hpp +0 -45
  133. amulet/io/binary_writer.hpp +0 -30
  134. amulet/item.py +0 -75
  135. amulet/level/__init__.pyi +0 -23
  136. amulet/level/_load.py +0 -100
  137. amulet/level/abc/__init__.py +0 -12
  138. amulet/level/abc/_chunk_handle.py +0 -335
  139. amulet/level/abc/_dimension.py +0 -86
  140. amulet/level/abc/_history/__init__.py +0 -1
  141. amulet/level/abc/_history/_cache.py +0 -224
  142. amulet/level/abc/_history/_history_manager.py +0 -291
  143. amulet/level/abc/_level/__init__.py +0 -5
  144. amulet/level/abc/_level/_compactable_level.py +0 -10
  145. amulet/level/abc/_level/_creatable_level.py +0 -28
  146. amulet/level/abc/_level/_disk_level.py +0 -17
  147. amulet/level/abc/_level/_level.py +0 -449
  148. amulet/level/abc/_level/_loadable_level.py +0 -42
  149. amulet/level/abc/_player_storage.py +0 -7
  150. amulet/level/abc/_raw_level.py +0 -187
  151. amulet/level/abc/_registry.py +0 -40
  152. amulet/level/java/__init__.pyi +0 -16
  153. amulet/level/java/_chunk_handle.py +0 -17
  154. amulet/level/java/_dimension.py +0 -20
  155. amulet/level/java/_level.py +0 -184
  156. amulet/level/java/_raw/__init__.pyi +0 -15
  157. amulet/level/java/_raw/_chunk.pyi +0 -23
  158. amulet/level/java/_raw/_constant.py +0 -9
  159. amulet/level/java/_raw/_data_pack/__init__.py +0 -2
  160. amulet/level/java/_raw/_data_pack/data_pack.py +0 -241
  161. amulet/level/java/_raw/_data_pack/data_pack_manager.py +0 -77
  162. amulet/level/java/_raw/_dimension.py +0 -86
  163. amulet/level/java/_raw/_level.py +0 -507
  164. amulet/level/java/_raw/_typing.py +0 -3
  165. amulet/level/java/_raw/java_chunk_decode.cpp +0 -531
  166. amulet/level/java/_raw/java_chunk_decode.hpp +0 -23
  167. amulet/level/java/_raw/java_chunk_encode.cpp +0 -25
  168. amulet/level/java/_raw/java_chunk_encode.hpp +0 -23
  169. amulet/level/java/anvil/__init__.py +0 -2
  170. amulet/level/java/anvil/_dimension.py +0 -170
  171. amulet/level/java/anvil/_region.py +0 -421
  172. amulet/level/java/anvil/_sector_manager.py +0 -223
  173. amulet/level/java/chunk.pyi +0 -81
  174. amulet/level/java/chunk_/_chunk.py +0 -260
  175. amulet/level/java/chunk_/components/inhabited_time.py +0 -12
  176. amulet/level/java/chunk_/components/last_update.py +0 -12
  177. amulet/level/java/chunk_/components/legacy_version.py +0 -12
  178. amulet/level/java/chunk_/components/light_populated.py +0 -12
  179. amulet/level/java/chunk_/components/named_height_2d.py +0 -37
  180. amulet/level/java/chunk_/components/status.py +0 -11
  181. amulet/level/java/chunk_/components/terrain_populated.py +0 -12
  182. amulet/level/java/chunk_components/data_version_component.cpp +0 -32
  183. amulet/level/java/chunk_components/data_version_component.hpp +0 -31
  184. amulet/level/java/chunk_components/java_raw_chunk_component.cpp +0 -56
  185. amulet/level/java/chunk_components/java_raw_chunk_component.hpp +0 -45
  186. amulet/level/java/chunk_components.pyi +0 -22
  187. amulet/level/java/java_chunk.cpp +0 -170
  188. amulet/level/java/java_chunk.hpp +0 -141
  189. amulet/level/java/long_array.hpp +0 -175
  190. amulet/level/java/long_array.pyi +0 -39
  191. amulet/level/temporary_level/__init__.py +0 -1
  192. amulet/level/temporary_level/_level.py +0 -16
  193. amulet/mesh/__init__.py +0 -0
  194. amulet/mesh/block/__init__.py +0 -1
  195. amulet/mesh/block/block_mesh.py +0 -369
  196. amulet/mesh/block/cube.py +0 -149
  197. amulet/mesh/block/missing_block.py +0 -20
  198. amulet/mesh/util.py +0 -17
  199. amulet/palette/biome_palette.hpp +0 -85
  200. amulet/palette/block_palette.cpp +0 -32
  201. amulet/palette/block_palette.hpp +0 -93
  202. amulet/player.py +0 -62
  203. amulet/pybind11/collections.hpp +0 -118
  204. amulet/pybind11/numpy.hpp +0 -26
  205. amulet/pybind11/py_module.hpp +0 -34
  206. amulet/pybind11/type_hints.hpp +0 -51
  207. amulet/pybind11/types.hpp +0 -25
  208. amulet/pybind11/typing.hpp +0 -7
  209. amulet/resource_pack/__init__.py +0 -62
  210. amulet/resource_pack/abc/__init__.py +0 -2
  211. amulet/resource_pack/abc/resource_pack.py +0 -38
  212. amulet/resource_pack/abc/resource_pack_manager.py +0 -87
  213. amulet/resource_pack/bedrock/__init__.py +0 -2
  214. amulet/resource_pack/bedrock/bedrock_vanilla_fix/pack_icon.png +0 -0
  215. amulet/resource_pack/bedrock/bedrock_vanilla_fix/textures/blocks/grass_carried.png +0 -0
  216. amulet/resource_pack/bedrock/bedrock_vanilla_fix/textures/blocks/grass_side_carried.png +0 -0
  217. amulet/resource_pack/bedrock/bedrock_vanilla_fix/textures/blocks/water.png +0 -0
  218. amulet/resource_pack/bedrock/blockshapes/__init__.py +0 -31
  219. amulet/resource_pack/bedrock/blockshapes/air.py +0 -35
  220. amulet/resource_pack/bedrock/blockshapes/base_blockshape.py +0 -29
  221. amulet/resource_pack/bedrock/blockshapes/bubble_column.py +0 -29
  222. amulet/resource_pack/bedrock/blockshapes/cake.py +0 -46
  223. amulet/resource_pack/bedrock/blockshapes/chest.py +0 -54
  224. amulet/resource_pack/bedrock/blockshapes/comparator.py +0 -51
  225. amulet/resource_pack/bedrock/blockshapes/cross_texture.py +0 -186
  226. amulet/resource_pack/bedrock/blockshapes/cross_texture0.py +0 -17
  227. amulet/resource_pack/bedrock/blockshapes/cross_texture_green.py +0 -16
  228. amulet/resource_pack/bedrock/blockshapes/cube.py +0 -38
  229. amulet/resource_pack/bedrock/blockshapes/default.py +0 -14
  230. amulet/resource_pack/bedrock/blockshapes/door.py +0 -38
  231. amulet/resource_pack/bedrock/blockshapes/door1.py +0 -14
  232. amulet/resource_pack/bedrock/blockshapes/door2.py +0 -14
  233. amulet/resource_pack/bedrock/blockshapes/door3.py +0 -14
  234. amulet/resource_pack/bedrock/blockshapes/door4.py +0 -14
  235. amulet/resource_pack/bedrock/blockshapes/door5.py +0 -14
  236. amulet/resource_pack/bedrock/blockshapes/door6.py +0 -14
  237. amulet/resource_pack/bedrock/blockshapes/double_plant.py +0 -40
  238. amulet/resource_pack/bedrock/blockshapes/enchanting_table.py +0 -22
  239. amulet/resource_pack/bedrock/blockshapes/farmland.py +0 -22
  240. amulet/resource_pack/bedrock/blockshapes/fence.py +0 -22
  241. amulet/resource_pack/bedrock/blockshapes/flat.py +0 -55
  242. amulet/resource_pack/bedrock/blockshapes/flat_wall.py +0 -55
  243. amulet/resource_pack/bedrock/blockshapes/furnace.py +0 -44
  244. amulet/resource_pack/bedrock/blockshapes/furnace_lit.py +0 -14
  245. amulet/resource_pack/bedrock/blockshapes/green_cube.py +0 -39
  246. amulet/resource_pack/bedrock/blockshapes/ladder.py +0 -36
  247. amulet/resource_pack/bedrock/blockshapes/lilypad.py +0 -14
  248. amulet/resource_pack/bedrock/blockshapes/partial_block.py +0 -57
  249. amulet/resource_pack/bedrock/blockshapes/piston.py +0 -44
  250. amulet/resource_pack/bedrock/blockshapes/piston_arm.py +0 -72
  251. amulet/resource_pack/bedrock/blockshapes/portal_frame.py +0 -22
  252. amulet/resource_pack/bedrock/blockshapes/pressure_plate.py +0 -29
  253. amulet/resource_pack/bedrock/blockshapes/pumpkin.py +0 -36
  254. amulet/resource_pack/bedrock/blockshapes/pumpkin_carved.py +0 -14
  255. amulet/resource_pack/bedrock/blockshapes/pumpkin_lit.py +0 -14
  256. amulet/resource_pack/bedrock/blockshapes/red_dust.py +0 -14
  257. amulet/resource_pack/bedrock/blockshapes/repeater.py +0 -53
  258. amulet/resource_pack/bedrock/blockshapes/slab.py +0 -33
  259. amulet/resource_pack/bedrock/blockshapes/slab_double.py +0 -15
  260. amulet/resource_pack/bedrock/blockshapes/tree.py +0 -41
  261. amulet/resource_pack/bedrock/blockshapes/turtle_egg.py +0 -15
  262. amulet/resource_pack/bedrock/blockshapes/vine.py +0 -52
  263. amulet/resource_pack/bedrock/blockshapes/wall.py +0 -22
  264. amulet/resource_pack/bedrock/blockshapes/water.py +0 -38
  265. amulet/resource_pack/bedrock/download_resources.py +0 -147
  266. amulet/resource_pack/bedrock/resource_pack.py +0 -40
  267. amulet/resource_pack/bedrock/resource_pack_manager.py +0 -361
  268. amulet/resource_pack/bedrock/sort_blockshapes.py +0 -15
  269. amulet/resource_pack/java/__init__.py +0 -2
  270. amulet/resource_pack/java/download_resources.py +0 -212
  271. amulet/resource_pack/java/java_vanilla_fix/assets/minecraft/textures/block/banner/banner_black.png +0 -0
  272. amulet/resource_pack/java/java_vanilla_fix/assets/minecraft/textures/block/banner/banner_blue.png +0 -0
  273. amulet/resource_pack/java/java_vanilla_fix/assets/minecraft/textures/block/banner/banner_brown.png +0 -0
  274. amulet/resource_pack/java/java_vanilla_fix/assets/minecraft/textures/block/banner/banner_cyan.png +0 -0
  275. amulet/resource_pack/java/java_vanilla_fix/assets/minecraft/textures/block/banner/banner_gray.png +0 -0
  276. amulet/resource_pack/java/java_vanilla_fix/assets/minecraft/textures/block/banner/banner_green.png +0 -0
  277. amulet/resource_pack/java/java_vanilla_fix/assets/minecraft/textures/block/banner/banner_light_blue.png +0 -0
  278. amulet/resource_pack/java/java_vanilla_fix/assets/minecraft/textures/block/banner/banner_light_gray.png +0 -0
  279. amulet/resource_pack/java/java_vanilla_fix/assets/minecraft/textures/block/banner/banner_lime.png +0 -0
  280. amulet/resource_pack/java/java_vanilla_fix/assets/minecraft/textures/block/banner/banner_magenta.png +0 -0
  281. amulet/resource_pack/java/java_vanilla_fix/assets/minecraft/textures/block/banner/banner_orange.png +0 -0
  282. amulet/resource_pack/java/java_vanilla_fix/assets/minecraft/textures/block/banner/banner_pink.png +0 -0
  283. amulet/resource_pack/java/java_vanilla_fix/assets/minecraft/textures/block/banner/banner_purple.png +0 -0
  284. amulet/resource_pack/java/java_vanilla_fix/assets/minecraft/textures/block/banner/banner_red.png +0 -0
  285. amulet/resource_pack/java/java_vanilla_fix/assets/minecraft/textures/block/banner/banner_white.png +0 -0
  286. amulet/resource_pack/java/java_vanilla_fix/assets/minecraft/textures/block/banner/banner_yellow.png +0 -0
  287. amulet/resource_pack/java/java_vanilla_fix/assets/minecraft/textures/block/barrier.png +0 -0
  288. amulet/resource_pack/java/java_vanilla_fix/assets/minecraft/textures/block/end_portal.png +0 -0
  289. amulet/resource_pack/java/java_vanilla_fix/assets/minecraft/textures/block/grass.png +0 -0
  290. amulet/resource_pack/java/java_vanilla_fix/assets/minecraft/textures/block/lava.png +0 -0
  291. amulet/resource_pack/java/java_vanilla_fix/assets/minecraft/textures/block/structure_void.png +0 -0
  292. amulet/resource_pack/java/java_vanilla_fix/assets/minecraft/textures/block/water.png +0 -0
  293. amulet/resource_pack/java/java_vanilla_fix/pack.png +0 -0
  294. amulet/resource_pack/java/resource_pack.py +0 -44
  295. amulet/resource_pack/java/resource_pack_manager.py +0 -551
  296. amulet/resource_pack/unknown_resource_pack.py +0 -10
  297. amulet/selection/__init__.py +0 -2
  298. amulet/selection/abstract_selection.py +0 -342
  299. amulet/selection/box.py +0 -852
  300. amulet/selection/group.py +0 -481
  301. amulet/utils/__init__.pyi +0 -23
  302. amulet/utils/call_spec/__init__.py +0 -24
  303. amulet/utils/call_spec/_call_spec.py +0 -257
  304. amulet/utils/comment_json.py +0 -188
  305. amulet/utils/format_utils.py +0 -41
  306. amulet/utils/generator.py +0 -18
  307. amulet/utils/matrix.py +0 -243
  308. amulet/utils/numpy.hpp +0 -36
  309. amulet/utils/numpy.pyi +0 -11
  310. amulet/utils/numpy_helpers.py +0 -19
  311. amulet/utils/shareable_lock.py +0 -335
  312. amulet/utils/signal/__init__.py +0 -10
  313. amulet/utils/signal/_signal.py +0 -228
  314. amulet/utils/task_manager.py +0 -235
  315. amulet/utils/typed_property.py +0 -111
  316. amulet/utils/weakref.py +0 -70
  317. amulet/utils/world_utils.py +0 -102
  318. amulet/version.cpp +0 -136
  319. amulet/version.hpp +0 -142
  320. amulet/version.py.cpp +0 -281
  321. amulet_core-2.0a7.dist-info/RECORD +0 -295
  322. amulet_core-2.0a7.dist-info/entry_points.txt +0 -2
  323. /amulet/{__pyinstaller → core/__pyinstaller}/__init__.py +0 -0
  324. /amulet/{py.typed → core/py.typed} +0 -0
  325. {amulet_core-2.0a7.dist-info → amulet_core-2.0.1a2.post250529084738.dist-info}/top_level.txt +0 -0
@@ -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()
@@ -0,0 +1,4 @@
1
+ from PyInstaller.utils.hooks import collect_data_files, collect_submodules
2
+
3
+ hiddenimports = collect_submodules("amulet.core")
4
+ datas = collect_data_files("amulet.core")
@@ -0,0 +1,7 @@
1
+ from __future__ import annotations
2
+
3
+ import types
4
+
5
+ __all__ = ["init"]
6
+
7
+ def init(arg0: types.ModuleType) -> None: ...
@@ -8,11 +8,11 @@ import json
8
8
 
9
9
  version_json = '''
10
10
  {
11
- "date": "2024-09-25T13:37:55+0100",
11
+ "date": "2025-05-29T09:42:08+0100",
12
12
  "dirty": false,
13
13
  "error": null,
14
- "full-revisionid": "bef077cfb019dd2608e14edab047d37d75dfba61",
15
- "version": "2.0a7"
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 amulet_nbt
7
+ import amulet.core.version
8
+ import amulet.nbt
9
9
 
10
- __all__ = ["Block", "BlockStack", "PropertyValueType"]
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
- amulet_nbt.ByteTag
88
- | amulet_nbt.ShortTag
89
- | amulet_nbt.IntTag
90
- | amulet_nbt.LongTag
91
- | amulet_nbt.StringTag,
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
- amulet_nbt.ByteTag
174
- | amulet_nbt.ShortTag
175
- | amulet_nbt.IntTag
176
- | amulet_nbt.LongTag
177
- | amulet_nbt.StringTag,
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 amulet_nbt
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: amulet_nbt.NamedTag,
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) -> amulet_nbt.NamedTag:
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: amulet_nbt.NamedTag) -> None: ...
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
- class DimensionDoesNotExist(Exception):
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
- class ChunkLoadError(Exception):
6
- """
7
- An error thrown if a chunk failed to load for some reason.
5
+ __all__ = [
6
+ "Chunk",
7
+ "ChunkDoesNotExist",
8
+ "ChunkLoadError",
9
+ "component",
10
+ "get_null_chunk",
11
+ ]
8
12
 
9
- This may be due to a corrupt chunk, an unsupported chunk format or just because the chunk does not exist to be loaded.
13
+ class Chunk:
14
+ """
15
+ A base class for all chunk classes.
16
+ """
10
17
 
11
- Catching this error will also catch :class:`ChunkDoesNotExist`
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
- >>> try:
14
- >>> # get chunk
15
- >>> chunk = world.get_chunk(cx, cz, dimension)
16
- >>> except ChunkLoadError:
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
- class LevelReadError(Exception):
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
- This is usually because the data has been opened somewhere else.
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
- An error thrown when the raw level data cannot be written to.
61
-
62
- This is usually because the data has been opened somewhere else.
66
+ This is a private function
63
67
  """