amulet-core 2.0a8__tar.gz → 2.0.1a0__tar.gz

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 (330) hide show
  1. amulet_core-2.0.1a0/CMakeLists.txt +111 -0
  2. amulet_core-2.0.1a0/MANIFEST.in +8 -0
  3. {amulet_core-2.0a8/src/amulet_core.egg-info → amulet_core-2.0.1a0}/PKG-INFO +21 -16
  4. amulet_core-2.0.1a0/build_requires.py +24 -0
  5. amulet_core-2.0.1a0/pyproject.toml +77 -0
  6. amulet_core-2.0.1a0/requirements.py +70 -0
  7. amulet_core-2.0.1a0/setup.cfg +4 -0
  8. amulet_core-2.0.1a0/setup.py +108 -0
  9. amulet_core-2.0.1a0/src/amulet/core/__init__.py +36 -0
  10. amulet_core-2.0.1a0/src/amulet/core/__pyinstaller/hook-amulet.core.py +4 -0
  11. amulet_core-2.0.1a0/src/amulet/core/_amulet_core.py.cpp +40 -0
  12. amulet_core-2.0.1a0/src/amulet/core/_amulet_core.pyi +7 -0
  13. {amulet_core-2.0a8/src/amulet → amulet_core-2.0.1a0/src/amulet/core}/_version.py +3 -3
  14. amulet_core-2.0.1a0/src/amulet/core/amulet_coreConfig.cmake +18 -0
  15. amulet_core-2.0a8/src/amulet/biome.pyi → amulet_core-2.0.1a0/src/amulet/core/biome/__init__.pyi +3 -3
  16. amulet_core-2.0.1a0/src/amulet/core/biome/biome.cpp +41 -0
  17. amulet_core-2.0.1a0/src/amulet/core/biome/biome.hpp +53 -0
  18. amulet_core-2.0.1a0/src/amulet/core/biome/biome.py.cpp +108 -0
  19. amulet_core-2.0a8/src/amulet/block.pyi → amulet_core-2.0.1a0/src/amulet/core/block/__init__.pyi +25 -26
  20. amulet_core-2.0.1a0/src/amulet/core/block/block.cpp +423 -0
  21. amulet_core-2.0.1a0/src/amulet/core/block/block.hpp +156 -0
  22. amulet_core-2.0.1a0/src/amulet/core/block/block.py.cpp +345 -0
  23. amulet_core-2.0a8/src/amulet/block_entity.pyi → amulet_core-2.0.1a0/src/amulet/core/block_entity/__init__.pyi +7 -7
  24. amulet_core-2.0.1a0/src/amulet/core/block_entity/block_entity.cpp +26 -0
  25. amulet_core-2.0.1a0/src/amulet/core/block_entity/block_entity.hpp +84 -0
  26. amulet_core-2.0.1a0/src/amulet/core/block_entity/block_entity.py.cpp +112 -0
  27. amulet_core-2.0a8/src/amulet/errors.py → amulet_core-2.0.1a0/src/amulet/core/chunk/__init__.pyi +37 -33
  28. amulet_core-2.0.1a0/src/amulet/core/chunk/chunk.cpp +50 -0
  29. amulet_core-2.0.1a0/src/amulet/core/chunk/chunk.hpp +126 -0
  30. amulet_core-2.0.1a0/src/amulet/core/chunk/chunk.py.cpp +113 -0
  31. amulet_core-2.0.1a0/src/amulet/core/chunk/component/__init__.pyi +18 -0
  32. amulet_core-2.0.1a0/src/amulet/core/chunk/component/__init_chunk_components.py.cpp +22 -0
  33. amulet_core-2.0.1a0/src/amulet/core/chunk/component/biome_3d_component.cpp +45 -0
  34. amulet_core-2.0.1a0/src/amulet/core/chunk/component/biome_3d_component.hpp +96 -0
  35. amulet_core-2.0.1a0/src/amulet/core/chunk/component/block_component.cpp +74 -0
  36. amulet_core-2.0.1a0/src/amulet/core/chunk/component/block_component.hpp +101 -0
  37. amulet_core-2.0.1a0/src/amulet/core/chunk/component/block_component.py.cpp +47 -0
  38. amulet_core-2.0.1a0/src/amulet/core/chunk/component/block_component.pyi +28 -0
  39. amulet_core-2.0.1a0/src/amulet/core/chunk/component/block_entity_component.cpp +71 -0
  40. amulet_core-2.0.1a0/src/amulet/core/chunk/component/block_entity_component.hpp +119 -0
  41. amulet_core-2.0.1a0/src/amulet/core/chunk/component/section_array_map.cpp +223 -0
  42. amulet_core-2.0.1a0/src/amulet/core/chunk/component/section_array_map.hpp +129 -0
  43. {amulet_core-2.0a8/src/amulet/chunk_components → amulet_core-2.0.1a0/src/amulet/core/chunk/component}/section_array_map.py.cpp +93 -125
  44. amulet_core-2.0a8/src/amulet/chunk_components.pyi → amulet_core-2.0.1a0/src/amulet/core/chunk/component/section_array_map.pyi +4 -24
  45. amulet_core-2.0.1a0/src/amulet/core/dll.hpp +21 -0
  46. amulet_core-2.0.1a0/src/amulet/core/entity/__init__.pyi +105 -0
  47. amulet_core-2.0.1a0/src/amulet/core/entity/entity.cpp +29 -0
  48. amulet_core-2.0.1a0/src/amulet/core/entity/entity.hpp +100 -0
  49. amulet_core-2.0.1a0/src/amulet/core/entity/entity.py.cpp +135 -0
  50. {amulet_core-2.0a8/src/amulet → amulet_core-2.0.1a0/src/amulet/core}/palette/__init__.pyi +2 -2
  51. amulet_core-2.0a8/src/amulet/palette/_init_palette.py.cpp → amulet_core-2.0.1a0/src/amulet/core/palette/__init_palette.py.cpp +7 -2
  52. amulet_core-2.0.1a0/src/amulet/core/palette/biome_palette.cpp +33 -0
  53. amulet_core-2.0.1a0/src/amulet/core/palette/biome_palette.hpp +65 -0
  54. amulet_core-2.0.1a0/src/amulet/core/palette/biome_palette.py.cpp +88 -0
  55. {amulet_core-2.0a8/src/amulet → amulet_core-2.0.1a0/src/amulet/core}/palette/biome_palette.pyi +8 -8
  56. amulet_core-2.0.1a0/src/amulet/core/palette/block_palette.cpp +33 -0
  57. amulet_core-2.0.1a0/src/amulet/core/palette/block_palette.hpp +71 -0
  58. amulet_core-2.0.1a0/src/amulet/core/palette/block_palette.py.cpp +88 -0
  59. {amulet_core-2.0a8/src/amulet → amulet_core-2.0.1a0/src/amulet/core}/palette/block_palette.pyi +12 -10
  60. amulet_core-2.0.1a0/src/amulet/core/selection/__init__.pyi +8 -0
  61. amulet_core-2.0.1a0/src/amulet/core/selection/__init_selection.py.cpp +598 -0
  62. amulet_core-2.0.1a0/src/amulet/core/selection/box.cpp +65 -0
  63. amulet_core-2.0.1a0/src/amulet/core/selection/box.hpp +86 -0
  64. amulet_core-2.0.1a0/src/amulet/core/selection/box.pyi +215 -0
  65. amulet_core-2.0.1a0/src/amulet/core/selection/group.cpp +236 -0
  66. amulet_core-2.0.1a0/src/amulet/core/selection/group.hpp +80 -0
  67. amulet_core-2.0.1a0/src/amulet/core/selection/group.pyi +213 -0
  68. amulet_core-2.0a8/src/amulet/version.pyi → amulet_core-2.0.1a0/src/amulet/core/version/__init__.pyi +58 -10
  69. amulet_core-2.0.1a0/src/amulet/core/version/version.cpp +147 -0
  70. amulet_core-2.0.1a0/src/amulet/core/version/version.hpp +204 -0
  71. amulet_core-2.0.1a0/src/amulet/core/version/version.py.cpp +275 -0
  72. {amulet_core-2.0a8 → amulet_core-2.0.1a0/src/amulet_core.egg-info}/PKG-INFO +21 -16
  73. amulet_core-2.0.1a0/src/amulet_core.egg-info/SOURCES.txt +78 -0
  74. amulet_core-2.0.1a0/src/amulet_core.egg-info/entry_points.txt +2 -0
  75. amulet_core-2.0.1a0/src/amulet_core.egg-info/requires.txt +25 -0
  76. amulet_core-2.0a8/MANIFEST.in +0 -1
  77. amulet_core-2.0a8/pyproject.toml +0 -9
  78. amulet_core-2.0a8/setup.cfg +0 -73
  79. amulet_core-2.0a8/setup.py +0 -55
  80. amulet_core-2.0a8/src/amulet/__init__.py.cpp +0 -45
  81. amulet_core-2.0a8/src/amulet/__init__.pyi +0 -30
  82. amulet_core-2.0a8/src/amulet/__pyinstaller/hook-amulet.py +0 -4
  83. amulet_core-2.0a8/src/amulet/_init.py +0 -26
  84. amulet_core-2.0a8/src/amulet/biome.cpp +0 -36
  85. amulet_core-2.0a8/src/amulet/biome.hpp +0 -43
  86. amulet_core-2.0a8/src/amulet/biome.py.cpp +0 -122
  87. amulet_core-2.0a8/src/amulet/block.cpp +0 -435
  88. amulet_core-2.0a8/src/amulet/block.hpp +0 -119
  89. amulet_core-2.0a8/src/amulet/block.py.cpp +0 -377
  90. amulet_core-2.0a8/src/amulet/block_entity.cpp +0 -12
  91. amulet_core-2.0a8/src/amulet/block_entity.hpp +0 -56
  92. amulet_core-2.0a8/src/amulet/block_entity.py.cpp +0 -115
  93. amulet_core-2.0a8/src/amulet/chunk.cpp +0 -16
  94. amulet_core-2.0a8/src/amulet/chunk.hpp +0 -100
  95. amulet_core-2.0a8/src/amulet/chunk.py.cpp +0 -80
  96. amulet_core-2.0a8/src/amulet/chunk.pyi +0 -28
  97. amulet_core-2.0a8/src/amulet/chunk_components/_init_chunk_components.py.cpp +0 -11
  98. amulet_core-2.0a8/src/amulet/chunk_components/biome_3d_component.cpp +0 -5
  99. amulet_core-2.0a8/src/amulet/chunk_components/biome_3d_component.hpp +0 -79
  100. amulet_core-2.0a8/src/amulet/chunk_components/block_component.cpp +0 -41
  101. amulet_core-2.0a8/src/amulet/chunk_components/block_component.hpp +0 -88
  102. amulet_core-2.0a8/src/amulet/chunk_components/block_component.py.cpp +0 -51
  103. amulet_core-2.0a8/src/amulet/chunk_components/block_entity_component.cpp +0 -5
  104. amulet_core-2.0a8/src/amulet/chunk_components/block_entity_component.hpp +0 -147
  105. amulet_core-2.0a8/src/amulet/chunk_components/section_array_map.cpp +0 -129
  106. amulet_core-2.0a8/src/amulet/chunk_components/section_array_map.hpp +0 -147
  107. amulet_core-2.0a8/src/amulet/collections/collections.py.cpp +0 -19
  108. amulet_core-2.0a8/src/amulet/collections/eq.py.hpp +0 -37
  109. amulet_core-2.0a8/src/amulet/collections/hash.py.hpp +0 -27
  110. amulet_core-2.0a8/src/amulet/collections/holder.py.cpp +0 -11
  111. amulet_core-2.0a8/src/amulet/collections/holder.py.hpp +0 -37
  112. amulet_core-2.0a8/src/amulet/collections/iterator.py.cpp +0 -36
  113. amulet_core-2.0a8/src/amulet/collections/iterator.py.hpp +0 -80
  114. amulet_core-2.0a8/src/amulet/collections/mapping.py.cpp +0 -44
  115. amulet_core-2.0a8/src/amulet/collections/mapping.py.hpp +0 -199
  116. amulet_core-2.0a8/src/amulet/collections/mutable_mapping.py.cpp +0 -31
  117. amulet_core-2.0a8/src/amulet/collections/mutable_mapping.py.hpp +0 -226
  118. amulet_core-2.0a8/src/amulet/collections/sequence.py.hpp +0 -163
  119. amulet_core-2.0a8/src/amulet/collections.pyi +0 -40
  120. amulet_core-2.0a8/src/amulet/data_types.py +0 -29
  121. amulet_core-2.0a8/src/amulet/entity.py +0 -182
  122. amulet_core-2.0a8/src/amulet/game/__init__.py +0 -7
  123. amulet_core-2.0a8/src/amulet/game/_game.py +0 -152
  124. amulet_core-2.0a8/src/amulet/game/_universal/__init__.py +0 -1
  125. amulet_core-2.0a8/src/amulet/game/_universal/_biome.py +0 -17
  126. amulet_core-2.0a8/src/amulet/game/_universal/_block.py +0 -47
  127. amulet_core-2.0a8/src/amulet/game/_universal/_version.py +0 -68
  128. amulet_core-2.0a8/src/amulet/game/abc/__init__.py +0 -22
  129. amulet_core-2.0a8/src/amulet/game/abc/_block_specification.py +0 -150
  130. amulet_core-2.0a8/src/amulet/game/abc/biome.py +0 -213
  131. amulet_core-2.0a8/src/amulet/game/abc/block.py +0 -331
  132. amulet_core-2.0a8/src/amulet/game/abc/game_version_container.py +0 -25
  133. amulet_core-2.0a8/src/amulet/game/abc/json_interface.py +0 -27
  134. amulet_core-2.0a8/src/amulet/game/abc/version.py +0 -44
  135. amulet_core-2.0a8/src/amulet/game/bedrock/__init__.py +0 -1
  136. amulet_core-2.0a8/src/amulet/game/bedrock/_biome.py +0 -35
  137. amulet_core-2.0a8/src/amulet/game/bedrock/_block.py +0 -42
  138. amulet_core-2.0a8/src/amulet/game/bedrock/_version.py +0 -165
  139. amulet_core-2.0a8/src/amulet/game/java/__init__.py +0 -2
  140. amulet_core-2.0a8/src/amulet/game/java/_biome.py +0 -35
  141. amulet_core-2.0a8/src/amulet/game/java/_block.py +0 -60
  142. amulet_core-2.0a8/src/amulet/game/java/_version.py +0 -176
  143. amulet_core-2.0a8/src/amulet/game/translate/__init__.py +0 -12
  144. amulet_core-2.0a8/src/amulet/game/translate/_functions/__init__.py +0 -15
  145. amulet_core-2.0a8/src/amulet/game/translate/_functions/_code_functions/__init__.py +0 -0
  146. amulet_core-2.0a8/src/amulet/game/translate/_functions/_code_functions/_text.py +0 -553
  147. amulet_core-2.0a8/src/amulet/game/translate/_functions/_code_functions/banner_pattern.py +0 -67
  148. amulet_core-2.0a8/src/amulet/game/translate/_functions/_code_functions/bedrock_chest_connection.py +0 -152
  149. amulet_core-2.0a8/src/amulet/game/translate/_functions/_code_functions/bedrock_moving_block_pos.py +0 -88
  150. amulet_core-2.0a8/src/amulet/game/translate/_functions/_code_functions/bedrock_sign.py +0 -152
  151. amulet_core-2.0a8/src/amulet/game/translate/_functions/_code_functions/bedrock_skull_rotation.py +0 -16
  152. amulet_core-2.0a8/src/amulet/game/translate/_functions/_code_functions/custom_name.py +0 -146
  153. amulet_core-2.0a8/src/amulet/game/translate/_functions/_frozen.py +0 -66
  154. amulet_core-2.0a8/src/amulet/game/translate/_functions/_state.py +0 -54
  155. amulet_core-2.0a8/src/amulet/game/translate/_functions/_typing.py +0 -98
  156. amulet_core-2.0a8/src/amulet/game/translate/_functions/abc.py +0 -123
  157. amulet_core-2.0a8/src/amulet/game/translate/_functions/carry_nbt.py +0 -160
  158. amulet_core-2.0a8/src/amulet/game/translate/_functions/carry_properties.py +0 -80
  159. amulet_core-2.0a8/src/amulet/game/translate/_functions/code.py +0 -143
  160. amulet_core-2.0a8/src/amulet/game/translate/_functions/map_block_name.py +0 -66
  161. amulet_core-2.0a8/src/amulet/game/translate/_functions/map_nbt.py +0 -111
  162. amulet_core-2.0a8/src/amulet/game/translate/_functions/map_properties.py +0 -93
  163. amulet_core-2.0a8/src/amulet/game/translate/_functions/multiblock.py +0 -112
  164. amulet_core-2.0a8/src/amulet/game/translate/_functions/new_block.py +0 -42
  165. amulet_core-2.0a8/src/amulet/game/translate/_functions/new_entity.py +0 -43
  166. amulet_core-2.0a8/src/amulet/game/translate/_functions/new_nbt.py +0 -206
  167. amulet_core-2.0a8/src/amulet/game/translate/_functions/new_properties.py +0 -64
  168. amulet_core-2.0a8/src/amulet/game/translate/_functions/sequence.py +0 -51
  169. amulet_core-2.0a8/src/amulet/game/translate/_functions/walk_input_nbt.py +0 -331
  170. amulet_core-2.0a8/src/amulet/game/translate/_translator.py +0 -433
  171. amulet_core-2.0a8/src/amulet/img/__init__.py +0 -10
  172. amulet_core-2.0a8/src/amulet/img/missing_no.png +0 -0
  173. amulet_core-2.0a8/src/amulet/img/missing_pack.png +0 -0
  174. amulet_core-2.0a8/src/amulet/img/missing_world.png +0 -0
  175. amulet_core-2.0a8/src/amulet/io/binary_reader.hpp +0 -45
  176. amulet_core-2.0a8/src/amulet/io/binary_writer.hpp +0 -30
  177. amulet_core-2.0a8/src/amulet/item.py +0 -75
  178. amulet_core-2.0a8/src/amulet/level/__init__.pyi +0 -23
  179. amulet_core-2.0a8/src/amulet/level/_init_level.py.cpp +0 -25
  180. amulet_core-2.0a8/src/amulet/level/_load.py +0 -100
  181. amulet_core-2.0a8/src/amulet/level/abc/__init__.py +0 -12
  182. amulet_core-2.0a8/src/amulet/level/abc/_chunk_handle.py +0 -358
  183. amulet_core-2.0a8/src/amulet/level/abc/_dimension.py +0 -86
  184. amulet_core-2.0a8/src/amulet/level/abc/_history/__init__.py +0 -1
  185. amulet_core-2.0a8/src/amulet/level/abc/_history/_cache.py +0 -224
  186. amulet_core-2.0a8/src/amulet/level/abc/_history/_history_manager.py +0 -291
  187. amulet_core-2.0a8/src/amulet/level/abc/_level/__init__.py +0 -5
  188. amulet_core-2.0a8/src/amulet/level/abc/_level/_compactable_level.py +0 -10
  189. amulet_core-2.0a8/src/amulet/level/abc/_level/_creatable_level.py +0 -28
  190. amulet_core-2.0a8/src/amulet/level/abc/_level/_disk_level.py +0 -17
  191. amulet_core-2.0a8/src/amulet/level/abc/_level/_level.py +0 -449
  192. amulet_core-2.0a8/src/amulet/level/abc/_level/_loadable_level.py +0 -42
  193. amulet_core-2.0a8/src/amulet/level/abc/_player_storage.py +0 -7
  194. amulet_core-2.0a8/src/amulet/level/abc/_raw_level.py +0 -187
  195. amulet_core-2.0a8/src/amulet/level/abc/_registry.py +0 -40
  196. amulet_core-2.0a8/src/amulet/level/java/__init__.pyi +0 -16
  197. amulet_core-2.0a8/src/amulet/level/java/__init_java.py.cpp +0 -23
  198. amulet_core-2.0a8/src/amulet/level/java/_chunk_handle.py +0 -17
  199. amulet_core-2.0a8/src/amulet/level/java/_dimension.py +0 -20
  200. amulet_core-2.0a8/src/amulet/level/java/_level.py +0 -184
  201. amulet_core-2.0a8/src/amulet/level/java/_raw/__init__.pyi +0 -15
  202. amulet_core-2.0a8/src/amulet/level/java/_raw/__init_java_raw.py.cpp +0 -31
  203. amulet_core-2.0a8/src/amulet/level/java/_raw/_chunk.pyi +0 -23
  204. amulet_core-2.0a8/src/amulet/level/java/_raw/_constant.py +0 -9
  205. amulet_core-2.0a8/src/amulet/level/java/_raw/_data_pack/__init__.py +0 -2
  206. amulet_core-2.0a8/src/amulet/level/java/_raw/_data_pack/data_pack.py +0 -241
  207. amulet_core-2.0a8/src/amulet/level/java/_raw/_data_pack/data_pack_manager.py +0 -77
  208. amulet_core-2.0a8/src/amulet/level/java/_raw/_dimension.py +0 -86
  209. amulet_core-2.0a8/src/amulet/level/java/_raw/_level.py +0 -507
  210. amulet_core-2.0a8/src/amulet/level/java/_raw/_typing.py +0 -3
  211. amulet_core-2.0a8/src/amulet/level/java/_raw/java_chunk_decode.cpp +0 -531
  212. amulet_core-2.0a8/src/amulet/level/java/_raw/java_chunk_decode.hpp +0 -23
  213. amulet_core-2.0a8/src/amulet/level/java/_raw/java_chunk_encode.cpp +0 -25
  214. amulet_core-2.0a8/src/amulet/level/java/_raw/java_chunk_encode.hpp +0 -23
  215. amulet_core-2.0a8/src/amulet/level/java/anvil/__init__.py +0 -2
  216. amulet_core-2.0a8/src/amulet/level/java/anvil/_dimension.py +0 -170
  217. amulet_core-2.0a8/src/amulet/level/java/anvil/_region.py +0 -421
  218. amulet_core-2.0a8/src/amulet/level/java/anvil/_sector_manager.py +0 -223
  219. amulet_core-2.0a8/src/amulet/level/java/chunk.pyi +0 -81
  220. amulet_core-2.0a8/src/amulet/level/java/chunk_/_chunk.py +0 -260
  221. amulet_core-2.0a8/src/amulet/level/java/chunk_/components/inhabited_time.py +0 -12
  222. amulet_core-2.0a8/src/amulet/level/java/chunk_/components/last_update.py +0 -12
  223. amulet_core-2.0a8/src/amulet/level/java/chunk_/components/legacy_version.py +0 -12
  224. amulet_core-2.0a8/src/amulet/level/java/chunk_/components/light_populated.py +0 -12
  225. amulet_core-2.0a8/src/amulet/level/java/chunk_/components/named_height_2d.py +0 -37
  226. amulet_core-2.0a8/src/amulet/level/java/chunk_/components/status.py +0 -11
  227. amulet_core-2.0a8/src/amulet/level/java/chunk_/components/terrain_populated.py +0 -12
  228. amulet_core-2.0a8/src/amulet/level/java/chunk_components/_init_java_chunk_components.py.cpp +0 -13
  229. amulet_core-2.0a8/src/amulet/level/java/chunk_components/data_version_component.cpp +0 -32
  230. amulet_core-2.0a8/src/amulet/level/java/chunk_components/data_version_component.hpp +0 -31
  231. amulet_core-2.0a8/src/amulet/level/java/chunk_components/data_version_component.py.cpp +0 -23
  232. amulet_core-2.0a8/src/amulet/level/java/chunk_components/java_raw_chunk_component.cpp +0 -56
  233. amulet_core-2.0a8/src/amulet/level/java/chunk_components/java_raw_chunk_component.hpp +0 -45
  234. amulet_core-2.0a8/src/amulet/level/java/chunk_components/java_raw_chunk_component.py.cpp +0 -51
  235. amulet_core-2.0a8/src/amulet/level/java/chunk_components.pyi +0 -22
  236. amulet_core-2.0a8/src/amulet/level/java/java_chunk.cpp +0 -170
  237. amulet_core-2.0a8/src/amulet/level/java/java_chunk.hpp +0 -141
  238. amulet_core-2.0a8/src/amulet/level/java/java_chunk.py.cpp +0 -161
  239. amulet_core-2.0a8/src/amulet/level/java/long_array.hpp +0 -175
  240. amulet_core-2.0a8/src/amulet/level/java/long_array.py.cpp +0 -193
  241. amulet_core-2.0a8/src/amulet/level/java/long_array.pyi +0 -39
  242. amulet_core-2.0a8/src/amulet/level/temporary_level/__init__.py +0 -1
  243. amulet_core-2.0a8/src/amulet/level/temporary_level/_level.py +0 -16
  244. amulet_core-2.0a8/src/amulet/mesh/__init__.py +0 -0
  245. amulet_core-2.0a8/src/amulet/mesh/block/__init__.pyi +0 -301
  246. amulet_core-2.0a8/src/amulet/mesh/block/_cube.py +0 -198
  247. amulet_core-2.0a8/src/amulet/mesh/block/_missing_block.py +0 -20
  248. amulet_core-2.0a8/src/amulet/mesh/block/block_mesh.cpp +0 -107
  249. amulet_core-2.0a8/src/amulet/mesh/block/block_mesh.hpp +0 -207
  250. amulet_core-2.0a8/src/amulet/mesh/block/block_mesh.py.cpp +0 -167
  251. amulet_core-2.0a8/src/amulet/mesh/util.py +0 -17
  252. amulet_core-2.0a8/src/amulet/palette/biome_palette.hpp +0 -85
  253. amulet_core-2.0a8/src/amulet/palette/biome_palette.py.cpp +0 -102
  254. amulet_core-2.0a8/src/amulet/palette/block_palette.cpp +0 -32
  255. amulet_core-2.0a8/src/amulet/palette/block_palette.hpp +0 -93
  256. amulet_core-2.0a8/src/amulet/palette/block_palette.py.cpp +0 -102
  257. amulet_core-2.0a8/src/amulet/player.py +0 -62
  258. amulet_core-2.0a8/src/amulet/pybind11/collections.hpp +0 -118
  259. amulet_core-2.0a8/src/amulet/pybind11/numpy.hpp +0 -26
  260. amulet_core-2.0a8/src/amulet/pybind11/py_module.hpp +0 -34
  261. amulet_core-2.0a8/src/amulet/pybind11/type_hints.hpp +0 -51
  262. amulet_core-2.0a8/src/amulet/pybind11/types.hpp +0 -25
  263. amulet_core-2.0a8/src/amulet/pybind11/typing.hpp +0 -7
  264. amulet_core-2.0a8/src/amulet/resource_pack/__init__.py +0 -63
  265. amulet_core-2.0a8/src/amulet/resource_pack/abc/__init__.py +0 -2
  266. amulet_core-2.0a8/src/amulet/resource_pack/abc/resource_pack.py +0 -38
  267. amulet_core-2.0a8/src/amulet/resource_pack/abc/resource_pack_manager.py +0 -85
  268. amulet_core-2.0a8/src/amulet/resource_pack/java/__init__.py +0 -2
  269. amulet_core-2.0a8/src/amulet/resource_pack/java/download_resources.py +0 -212
  270. amulet_core-2.0a8/src/amulet/resource_pack/java/java_vanilla_fix/assets/minecraft/textures/block/banner/banner_black.png +0 -0
  271. amulet_core-2.0a8/src/amulet/resource_pack/java/java_vanilla_fix/assets/minecraft/textures/block/banner/banner_blue.png +0 -0
  272. amulet_core-2.0a8/src/amulet/resource_pack/java/java_vanilla_fix/assets/minecraft/textures/block/banner/banner_brown.png +0 -0
  273. amulet_core-2.0a8/src/amulet/resource_pack/java/java_vanilla_fix/assets/minecraft/textures/block/banner/banner_cyan.png +0 -0
  274. amulet_core-2.0a8/src/amulet/resource_pack/java/java_vanilla_fix/assets/minecraft/textures/block/banner/banner_gray.png +0 -0
  275. amulet_core-2.0a8/src/amulet/resource_pack/java/java_vanilla_fix/assets/minecraft/textures/block/banner/banner_green.png +0 -0
  276. amulet_core-2.0a8/src/amulet/resource_pack/java/java_vanilla_fix/assets/minecraft/textures/block/banner/banner_light_blue.png +0 -0
  277. amulet_core-2.0a8/src/amulet/resource_pack/java/java_vanilla_fix/assets/minecraft/textures/block/banner/banner_light_gray.png +0 -0
  278. amulet_core-2.0a8/src/amulet/resource_pack/java/java_vanilla_fix/assets/minecraft/textures/block/banner/banner_lime.png +0 -0
  279. amulet_core-2.0a8/src/amulet/resource_pack/java/java_vanilla_fix/assets/minecraft/textures/block/banner/banner_magenta.png +0 -0
  280. amulet_core-2.0a8/src/amulet/resource_pack/java/java_vanilla_fix/assets/minecraft/textures/block/banner/banner_orange.png +0 -0
  281. amulet_core-2.0a8/src/amulet/resource_pack/java/java_vanilla_fix/assets/minecraft/textures/block/banner/banner_pink.png +0 -0
  282. amulet_core-2.0a8/src/amulet/resource_pack/java/java_vanilla_fix/assets/minecraft/textures/block/banner/banner_purple.png +0 -0
  283. amulet_core-2.0a8/src/amulet/resource_pack/java/java_vanilla_fix/assets/minecraft/textures/block/banner/banner_red.png +0 -0
  284. amulet_core-2.0a8/src/amulet/resource_pack/java/java_vanilla_fix/assets/minecraft/textures/block/banner/banner_white.png +0 -0
  285. amulet_core-2.0a8/src/amulet/resource_pack/java/java_vanilla_fix/assets/minecraft/textures/block/banner/banner_yellow.png +0 -0
  286. amulet_core-2.0a8/src/amulet/resource_pack/java/java_vanilla_fix/assets/minecraft/textures/block/barrier.png +0 -0
  287. amulet_core-2.0a8/src/amulet/resource_pack/java/java_vanilla_fix/assets/minecraft/textures/block/end_portal.png +0 -0
  288. amulet_core-2.0a8/src/amulet/resource_pack/java/java_vanilla_fix/assets/minecraft/textures/block/grass.png +0 -0
  289. amulet_core-2.0a8/src/amulet/resource_pack/java/java_vanilla_fix/assets/minecraft/textures/block/lava.png +0 -0
  290. amulet_core-2.0a8/src/amulet/resource_pack/java/java_vanilla_fix/assets/minecraft/textures/block/structure_void.png +0 -0
  291. amulet_core-2.0a8/src/amulet/resource_pack/java/java_vanilla_fix/assets/minecraft/textures/block/water.png +0 -0
  292. amulet_core-2.0a8/src/amulet/resource_pack/java/java_vanilla_fix/pack.png +0 -0
  293. amulet_core-2.0a8/src/amulet/resource_pack/java/resource_pack.py +0 -44
  294. amulet_core-2.0a8/src/amulet/resource_pack/java/resource_pack_manager.py +0 -563
  295. amulet_core-2.0a8/src/amulet/resource_pack/unknown_resource_pack.py +0 -10
  296. amulet_core-2.0a8/src/amulet/selection/__init__.py +0 -2
  297. amulet_core-2.0a8/src/amulet/selection/abstract_selection.py +0 -342
  298. amulet_core-2.0a8/src/amulet/selection/box.py +0 -852
  299. amulet_core-2.0a8/src/amulet/selection/group.py +0 -481
  300. amulet_core-2.0a8/src/amulet/utils/__init__.pyi +0 -23
  301. amulet_core-2.0a8/src/amulet/utils/_init_utils.py.cpp +0 -11
  302. amulet_core-2.0a8/src/amulet/utils/call_spec/__init__.py +0 -24
  303. amulet_core-2.0a8/src/amulet/utils/call_spec/_call_spec.py +0 -257
  304. amulet_core-2.0a8/src/amulet/utils/cast.py +0 -10
  305. amulet_core-2.0a8/src/amulet/utils/comment_json.py +0 -188
  306. amulet_core-2.0a8/src/amulet/utils/format_utils.py +0 -41
  307. amulet_core-2.0a8/src/amulet/utils/generator.py +0 -18
  308. amulet_core-2.0a8/src/amulet/utils/matrix.py +0 -243
  309. amulet_core-2.0a8/src/amulet/utils/numpy.hpp +0 -36
  310. amulet_core-2.0a8/src/amulet/utils/numpy.py.cpp +0 -51
  311. amulet_core-2.0a8/src/amulet/utils/numpy.pyi +0 -11
  312. amulet_core-2.0a8/src/amulet/utils/numpy_helpers.py +0 -19
  313. amulet_core-2.0a8/src/amulet/utils/shareable_lock.py +0 -335
  314. amulet_core-2.0a8/src/amulet/utils/signal/__init__.py +0 -10
  315. amulet_core-2.0a8/src/amulet/utils/signal/_signal.py +0 -228
  316. amulet_core-2.0a8/src/amulet/utils/task_manager.py +0 -235
  317. amulet_core-2.0a8/src/amulet/utils/typed_property.py +0 -111
  318. amulet_core-2.0a8/src/amulet/utils/weakref.py +0 -70
  319. amulet_core-2.0a8/src/amulet/utils/world_utils.py +0 -102
  320. amulet_core-2.0a8/src/amulet/version.cpp +0 -136
  321. amulet_core-2.0a8/src/amulet/version.hpp +0 -142
  322. amulet_core-2.0a8/src/amulet/version.py.cpp +0 -281
  323. amulet_core-2.0a8/src/amulet_core.egg-info/SOURCES.txt +0 -276
  324. amulet_core-2.0a8/src/amulet_core.egg-info/entry_points.txt +0 -2
  325. amulet_core-2.0a8/src/amulet_core.egg-info/requires.txt +0 -21
  326. {amulet_core-2.0a8 → amulet_core-2.0.1a0}/README.md +0 -0
  327. {amulet_core-2.0a8/src/amulet → amulet_core-2.0.1a0/src/amulet/core}/__pyinstaller/__init__.py +0 -0
  328. {amulet_core-2.0a8/src/amulet → amulet_core-2.0.1a0/src/amulet/core}/py.typed +0 -0
  329. {amulet_core-2.0a8 → amulet_core-2.0.1a0}/src/amulet_core.egg-info/dependency_links.txt +0 -0
  330. {amulet_core-2.0a8 → amulet_core-2.0.1a0}/src/amulet_core.egg-info/top_level.txt +0 -0
@@ -0,0 +1,111 @@
1
+ cmake_minimum_required(VERSION 3.13)
2
+
3
+ project(amulet_core LANGUAGES CXX)
4
+
5
+ # Set C++20
6
+ set(CMAKE_CXX_STANDARD 20)
7
+ set(CMAKE_CXX_STANDARD_REQUIRED ON)
8
+ set(CMAKE_CXX_EXTENSIONS OFF)
9
+
10
+ # Set platform variables
11
+ if (WIN32)
12
+ # set windows 7 as the minimum version
13
+ add_definitions(-D_WIN32_WINNT=0x0601)
14
+ elseif(APPLE)
15
+ set(CMAKE_OSX_DEPLOYMENT_TARGET "10.15")
16
+ else()
17
+ set(CMAKE_POSITION_INDEPENDENT_CODE ON)
18
+ endif()
19
+
20
+ if (MSVC)
21
+ add_definitions("/MP")
22
+ endif()
23
+
24
+ include(FetchContent)
25
+
26
+ # Add zlib
27
+ set(ZLIB_BUILD_EXAMPLES OFF)
28
+ FetchContent_Declare(
29
+ zlib
30
+ GIT_REPOSITORY https://github.com/madler/zlib.git
31
+ GIT_TAG 51b7f2abdade71cd9bb0e7a373ef2610ec6f9daf
32
+ )
33
+ FetchContent_MakeAvailable(zlib)
34
+ set(ZLIB_ROOT ${zlib_SOURCE_DIR})
35
+ set(ZLIB_USE_STATIC_LIBS ON)
36
+ set(ZLIB_LIBRARY ${INSTALL_LIB_DIR})
37
+ find_package(ZLIB REQUIRED)
38
+ target_compile_definitions(zlibstatic PUBLIC ZLIB_CONST)
39
+
40
+ # Add lz4
41
+ FetchContent_Declare(
42
+ lz4
43
+ GIT_REPOSITORY https://github.com/lz4/lz4.git
44
+ GIT_TAG ebb370ca83af193212df4dcbadcc5d87bc0de2f0
45
+ )
46
+ FetchContent_MakeAvailable(lz4)
47
+ set(LZ4_BUILD_CLI OFF)
48
+ add_subdirectory(${lz4_SOURCE_DIR}/build/cmake)
49
+
50
+ # Add pybind11
51
+ find_package(pybind11 CONFIG REQUIRED)
52
+
53
+ # Add Amulet libraries
54
+ find_package(amulet_pybind11_extensions CONFIG REQUIRED)
55
+ find_package(amulet_io CONFIG REQUIRED)
56
+ find_package(amulet_nbt CONFIG REQUIRED)
57
+
58
+ # Find C++ files
59
+ file(REAL_PATH src SOURCE_PATH)
60
+ file(GLOB_RECURSE EXTENSION_SOURCES LIST_DIRECTORIES false ${SOURCE_PATH}/amulet/*.py.cpp)
61
+ file(GLOB_RECURSE EXTENSION_HEADERS LIST_DIRECTORIES false ${SOURCE_PATH}/amulet/*.py.hpp)
62
+ file(GLOB_RECURSE SOURCES LIST_DIRECTORIES false ${SOURCE_PATH}/amulet/*.cpp)
63
+ file(GLOB_RECURSE HEADERS LIST_DIRECTORIES false ${SOURCE_PATH}/amulet/*.hpp)
64
+ list(REMOVE_ITEM SOURCES ${EXTENSION_SOURCES})
65
+ list(REMOVE_ITEM HEADERS ${EXTENSION_HEADERS})
66
+
67
+ # Add implementation
68
+ add_library(amulet_core SHARED)
69
+ target_link_libraries( amulet_core PRIVATE zlibstatic )
70
+ target_link_libraries( amulet_core PRIVATE lz4_static )
71
+ target_link_libraries( amulet_core PRIVATE amulet_io )
72
+ target_link_libraries( amulet_core PRIVATE amulet_nbt )
73
+ target_compile_definitions(amulet_core PRIVATE ExportAmuletCore)
74
+ target_include_directories(amulet_core PUBLIC ${SOURCE_PATH})
75
+ target_sources(amulet_core PRIVATE ${SOURCES} ${HEADERS})
76
+ foreach(FILE ${SOURCES} ${HEADERS})
77
+ file(RELATIVE_PATH REL_PATH ${SOURCE_PATH} ${FILE})
78
+ get_filename_component(GROUP ${REL_PATH} DIRECTORY)
79
+ string(REPLACE "/" "\\" GROUP ${GROUP})
80
+ source_group(${GROUP} FILES ${FILE})
81
+ endforeach()
82
+
83
+ # Add python extension
84
+ pybind11_add_module(_amulet_core)
85
+ target_link_libraries( _amulet_core PRIVATE amulet_pybind11_extensions )
86
+ target_link_libraries( _amulet_core PRIVATE amulet_io )
87
+ target_link_libraries( _amulet_core PRIVATE amulet_nbt )
88
+ target_link_libraries( _amulet_core PRIVATE amulet_core )
89
+ target_compile_definitions(_amulet_core PRIVATE PYBIND11_DETAILED_ERROR_MESSAGES)
90
+ target_compile_definitions(_amulet_core PRIVATE PYBIND11_VERSION="${pybind11_VERSION}")
91
+ target_compile_definitions(_amulet_core PRIVATE COMPILER_ID="${CMAKE_CXX_COMPILER_ID}")
92
+ target_compile_definitions(_amulet_core PRIVATE COMPILER_VERSION="${CMAKE_CXX_COMPILER_VERSION}")
93
+ target_sources(_amulet_core PRIVATE ${EXTENSION_SOURCES} ${EXTENSION_HEADERS})
94
+ foreach(FILE ${EXTENSION_SOURCES} ${EXTENSION_HEADERS})
95
+ file(RELATIVE_PATH REL_PATH ${SOURCE_PATH} ${FILE})
96
+ get_filename_component(GROUP ${REL_PATH} DIRECTORY)
97
+ string(REPLACE "/" "\\" GROUP ${GROUP})
98
+ source_group(${GROUP} FILES ${FILE})
99
+ endforeach()
100
+
101
+ if(NOT DEFINED AMULET_CORE_EXT_DIR)
102
+ set(AMULET_CORE_EXT_DIR ${amulet_core_DIR})
103
+ endif()
104
+
105
+ # Install
106
+ install(TARGETS amulet_core DESTINATION ${amulet_core_DIR})
107
+ install(TARGETS _amulet_core DESTINATION ${AMULET_CORE_EXT_DIR})
108
+
109
+ if (DEFINED BUILD_AMULET_CORE_TESTS)
110
+ add_subdirectory(tests)
111
+ endif()
@@ -0,0 +1,8 @@
1
+ include build_requires.py
2
+ include requirements.py
3
+
4
+ recursive-include src/amulet *.cpp *.hpp *Config.cmake
5
+
6
+ include CMakeLists.txt
7
+
8
+ prune tests
@@ -1,34 +1,39 @@
1
- Metadata-Version: 2.1
1
+ Metadata-Version: 2.4
2
2
  Name: amulet-core
3
- Version: 2.0a8
3
+ Version: 2.0.1a0
4
4
  Summary: A Python library for reading/writing Minecraft's various save formats.
5
- Home-page: https://www.amuletmc.com
6
- Author: James Clare, Ben Gothard et al.
7
- Author-email: amuleteditor@gmail.com
8
- Platform: any
5
+ Author: James Clare, Ben Gothard
6
+ Project-URL: Homepage, https://www.amuletmc.com
7
+ Project-URL: Repository, https://github.com/Amulet-Team/Amulet-Core
8
+ Project-URL: Issues, https://github.com/Amulet-Team/Amulet-Core/issues
9
9
  Classifier: Programming Language :: Python :: 3
10
10
  Classifier: Operating System :: OS Independent
11
11
  Requires-Python: >=3.11
12
12
  Description-Content-Type: text/markdown
13
+ Requires-Dist: amulet-compiler-target==1.0
13
14
  Requires-Dist: numpy~=2.0
14
- Requires-Dist: amulet-nbt~=4.0a6
15
- Requires-Dist: portalocker~=2.4
16
- Requires-Dist: amulet-leveldb~=1.0b0
17
- Requires-Dist: platformdirs~=3.1
18
- Requires-Dist: amulet-runtime-final~=1.1
19
- Requires-Dist: pillow~=10.0
20
- Requires-Dist: lz4~=4.3
15
+ Requires-Dist: amulet-compiler-version==3.0.0
16
+ Requires-Dist: amulet-io~=1.0
17
+ Requires-Dist: amulet-nbt~=4.0.0.0a24
21
18
  Provides-Extra: docs
22
19
  Requires-Dist: Sphinx>=1.7.4; extra == "docs"
23
20
  Requires-Dist: sphinx-autodoc-typehints>=1.3.0; extra == "docs"
24
21
  Requires-Dist: sphinx_rtd_theme>=0.3.1; extra == "docs"
25
22
  Provides-Extra: dev
23
+ Requires-Dist: setuptools>=42; extra == "dev"
24
+ Requires-Dist: versioneer; extra == "dev"
25
+ Requires-Dist: packaging; extra == "dev"
26
+ Requires-Dist: wheel; extra == "dev"
27
+ Requires-Dist: pybind11[global]==2.13.6; extra == "dev"
28
+ Requires-Dist: amulet_pybind11_extensions~=1.0; extra == "dev"
29
+ Requires-Dist: pybind11_stubgen>=2.5.4; extra == "dev"
26
30
  Requires-Dist: black>=22.3; extra == "dev"
27
- Requires-Dist: pre_commit>=1.11.1; extra == "dev"
28
- Requires-Dist: mypy; extra == "dev"
29
- Requires-Dist: types-pyinstaller; extra == "dev"
30
31
  Requires-Dist: isort; extra == "dev"
31
32
  Requires-Dist: autoflake; extra == "dev"
33
+ Requires-Dist: mypy; extra == "dev"
34
+ Requires-Dist: types-pyinstaller; extra == "dev"
35
+ Requires-Dist: amulet-test-utils~=1.1; extra == "dev"
36
+ Dynamic: requires-dist
32
37
 
33
38
  # Amulet Core
34
39
 
@@ -0,0 +1,24 @@
1
+ from typing import Union, Mapping
2
+ import requirements
3
+
4
+ from setuptools import build_meta
5
+ from setuptools.build_meta import *
6
+
7
+
8
+ def get_requires_for_build_wheel(
9
+ config_settings: Union[Mapping[str, Union[str, list[str], None]], None] = None,
10
+ ) -> list[str]:
11
+ return [
12
+ *build_meta.get_requires_for_build_wheel(config_settings),
13
+ "wheel",
14
+ *requirements.get_build_dependencies(),
15
+ ]
16
+
17
+
18
+ def get_requires_for_build_editable(
19
+ config_settings: Union[Mapping[str, Union[str, list[str], None]], None] = None,
20
+ ) -> list[str]:
21
+ return [
22
+ *build_meta.get_requires_for_build_editable(config_settings),
23
+ *requirements.get_build_dependencies(),
24
+ ]
@@ -0,0 +1,77 @@
1
+ [build-system]
2
+ requires = [
3
+ "setuptools>=42",
4
+ "versioneer",
5
+ "packaging",
6
+ "amulet-compiler-version@git+https://github.com/Amulet-Team/Amulet-Compiler-Version.git@3.0"
7
+ ]
8
+ build-backend = "build_requires"
9
+ backend-path = [""]
10
+
11
+ [project]
12
+ name = "amulet-core"
13
+ authors = [
14
+ {name = "James Clare"},
15
+ {name = "Ben Gothard"},
16
+ ]
17
+ description = "A Python library for reading/writing Minecraft's various save formats."
18
+ dynamic = ["version", "readme", "dependencies"]
19
+ requires-python = ">=3.11"
20
+ classifiers = [
21
+ "Programming Language :: Python :: 3",
22
+ "Operating System :: OS Independent",
23
+ ]
24
+
25
+ [project.optional-dependencies]
26
+ docs = [
27
+ "Sphinx>=1.7.4",
28
+ "sphinx-autodoc-typehints>=1.3.0",
29
+ "sphinx_rtd_theme>=0.3.1",
30
+ ]
31
+ dev = [
32
+ "setuptools>=42",
33
+ "versioneer",
34
+ "packaging",
35
+ "wheel",
36
+ "pybind11[global]==2.13.6",
37
+ "amulet_pybind11_extensions~=1.0",
38
+ "pybind11_stubgen>=2.5.4",
39
+ "black>=22.3",
40
+ "isort",
41
+ "autoflake",
42
+ "mypy",
43
+ "types-pyinstaller",
44
+ "amulet-test-utils~=1.1",
45
+ ]
46
+
47
+ [project.urls]
48
+ Homepage = "https://www.amuletmc.com"
49
+ Repository = "https://github.com/Amulet-Team/Amulet-Core"
50
+ Issues = "https://github.com/Amulet-Team/Amulet-Core/issues"
51
+
52
+ [tool.setuptools]
53
+ include-package-data = false
54
+
55
+ [tool.setuptools.package-data]
56
+ "*" = [
57
+ "*Config.cmake",
58
+ "**/*.hpp",
59
+ "**/*.dll",
60
+ "**/*.so",
61
+ "**/*.dylib",
62
+ "**/*.lib",
63
+ ]
64
+
65
+ [tool.setuptools.dynamic]
66
+ readme = {file = ["README.md"], content-type = "text/markdown"}
67
+
68
+ [project.entry-points.pyinstaller40]
69
+ hook-dirs = "amulet.core.__pyinstaller:get_hook_dirs"
70
+
71
+ [tool.versioneer]
72
+ VCS = "git"
73
+ style = "pep440"
74
+ versionfile_source = "src/amulet/core/_version.py"
75
+ versionfile_build = "amulet/core/_version.py"
76
+ tag_prefix = ""
77
+ parentdir_prefix = "amulet-core-"
@@ -0,0 +1,70 @@
1
+ import os
2
+ import amulet_compiler_version
3
+ from packaging.version import Version
4
+
5
+ AMULET_COMPILER_TARGET_REQUIREMENT = "==1.0"
6
+ AMULET_COMPILER_VERSION_REQUIREMENT = "==3.0.0"
7
+
8
+ PYBIND11_REQUIREMENT = "==2.13.6"
9
+ AMULET_PYBIND11_EXTENSIONS_REQUIREMENT = "~=1.0"
10
+
11
+ AMULET_IO_REQUIREMENT = "~=1.0"
12
+ # AMULET_NBT_REQUIREMENT = "~=4.0"
13
+ AMULET_NBT_REQUIREMENT = "~=4.0.0.0a24"
14
+ NUMPY_REQUIREMENT = "~=2.0"
15
+
16
+
17
+ def get_specifier_set(version_str: str, compiler_suffix_: str = "") -> str:
18
+ """
19
+ version_str: The PEP 440 version number of the library.
20
+ compiler_suffix_: Only specified if it is a compiled library and the compiler is being frozen.
21
+ """
22
+ version = Version(version_str)
23
+ if version.epoch != 0 or version.is_devrelease or version.is_postrelease:
24
+ raise RuntimeError(f"Unsupported version format. {version_str}")
25
+
26
+ major, minor, patch, fix, *_ = version.release + (0, 0, 0, 0)
27
+
28
+ return f"~={major}.{minor}.{patch}.{fix}{compiler_suffix_}{''.join(map(str, version.pre or ()))}"
29
+
30
+
31
+ if os.environ.get("AMULET_FREEZE_COMPILER", None):
32
+ AMULET_COMPILER_VERSION_REQUIREMENT = f"=={amulet_compiler_version.__version__}"
33
+
34
+ compiler_suffix = f".{'.'.join(amulet_compiler_version.__version__.split('.')[3:])}"
35
+
36
+ try:
37
+ import amulet.io
38
+ except ImportError:
39
+ pass
40
+ else:
41
+ AMULET_IO_REQUIREMENT = get_specifier_set(amulet.io.__version__)
42
+
43
+ try:
44
+ import amulet.nbt
45
+ except ImportError:
46
+ pass
47
+ else:
48
+ AMULET_NBT_REQUIREMENT = get_specifier_set(
49
+ amulet.nbt.__version__, compiler_suffix
50
+ )
51
+
52
+
53
+ def get_build_dependencies() -> list:
54
+ return [
55
+ f"pybind11{PYBIND11_REQUIREMENT}",
56
+ f"amulet_pybind11_extensions{AMULET_PYBIND11_EXTENSIONS_REQUIREMENT}",
57
+ f"amulet_nbt{AMULET_NBT_REQUIREMENT}",
58
+ f"amulet_io{AMULET_IO_REQUIREMENT}",
59
+ f"amulet-compiler-version{AMULET_COMPILER_VERSION_REQUIREMENT}",
60
+ ]
61
+
62
+
63
+ def get_runtime_dependencies() -> list[str]:
64
+ return [
65
+ f"amulet-compiler-target{AMULET_COMPILER_TARGET_REQUIREMENT}",
66
+ f"numpy{NUMPY_REQUIREMENT}",
67
+ f"amulet-compiler-version{AMULET_COMPILER_VERSION_REQUIREMENT}",
68
+ f"amulet-io{AMULET_IO_REQUIREMENT}",
69
+ f"amulet-nbt{AMULET_NBT_REQUIREMENT}",
70
+ ]
@@ -0,0 +1,4 @@
1
+ [egg_info]
2
+ tag_build =
3
+ tag_date = 0
4
+
@@ -0,0 +1,108 @@
1
+ import os
2
+ import subprocess
3
+ import sys
4
+ from pathlib import Path
5
+
6
+ from setuptools import setup, Extension, Command
7
+ from setuptools.command.build_ext import build_ext
8
+
9
+ from packaging.version import Version
10
+
11
+ import versioneer
12
+
13
+ import requirements
14
+ import amulet_compiler_version
15
+
16
+
17
+ def fix_path(path: str) -> str:
18
+ return os.path.realpath(path).replace(os.sep, "/")
19
+
20
+
21
+ dependencies = requirements.get_runtime_dependencies()
22
+
23
+ cmdclass: dict[str, type[Command]] = versioneer.get_cmdclass()
24
+
25
+
26
+ class CMakeBuild(cmdclass.get("build_ext", build_ext)):
27
+ def build_extension(self, ext):
28
+ import pybind11
29
+ import amulet.pybind11_extensions
30
+ import amulet.io
31
+ import amulet.nbt
32
+
33
+ ext_dir = (
34
+ (Path.cwd() / self.get_ext_fullpath("")).parent.resolve()
35
+ / "amulet"
36
+ / "core"
37
+ )
38
+ core_src_dir = (
39
+ Path.cwd() / "src" / "amulet" / "core" if self.editable_mode else ext_dir
40
+ )
41
+
42
+ platform_args = []
43
+ if sys.platform == "win32":
44
+ platform_args.extend(["-G", "Visual Studio 17 2022"])
45
+ if sys.maxsize > 2**32:
46
+ platform_args.extend(["-A", "x64"])
47
+ else:
48
+ platform_args.extend(["-A", "Win32"])
49
+ platform_args.extend(["-T", "v143"])
50
+
51
+ if subprocess.run(
52
+ [
53
+ "cmake",
54
+ *platform_args,
55
+ f"-DPYTHON_EXECUTABLE={sys.executable}",
56
+ f"-Dpybind11_DIR={pybind11.get_cmake_dir().replace(os.sep, '/')}",
57
+ f"-Damulet_pybind11_extensions_DIR={fix_path(amulet.pybind11_extensions.__path__[0])}",
58
+ f"-Damulet_io_DIR={fix_path(amulet.io.__path__[0])}",
59
+ f"-Damulet_nbt_DIR={fix_path(amulet.nbt.__path__[0])}",
60
+ f"-Damulet_core_DIR={fix_path(core_src_dir)}",
61
+ f"-DAMULET_CORE_EXT_DIR={fix_path(ext_dir)}",
62
+ f"-DCMAKE_INSTALL_PREFIX=install",
63
+ "-B",
64
+ "build",
65
+ ]
66
+ ).returncode:
67
+ raise RuntimeError("Error configuring amulet_core")
68
+ if subprocess.run(
69
+ ["cmake", "--build", "build", "--config", "Release"]
70
+ ).returncode:
71
+ raise RuntimeError("Error installing amulet_core")
72
+ if subprocess.run(
73
+ ["cmake", "--install", "build", "--config", "Release"]
74
+ ).returncode:
75
+ raise RuntimeError("Error installing amulet_core")
76
+
77
+
78
+ cmdclass["build_ext"] = CMakeBuild
79
+
80
+
81
+ def _get_version() -> str:
82
+ version_str: str = versioneer.get_version()
83
+
84
+ if os.environ.get("AMULET_FREEZE_COMPILER", None):
85
+ # Add the compiler version to the library version so that pip sees it as a distinct version.
86
+ compiler_version_str = ".".join(
87
+ amulet_compiler_version.__version__.split(".")[3:]
88
+ )
89
+ if compiler_version_str:
90
+ version = Version(version_str)
91
+ if version.epoch != 0 or version.is_devrelease or version.is_postrelease:
92
+ raise RuntimeError(f"Unsupported version format. {version_str}")
93
+ major, minor, patch, fix, *_ = version.release + (0, 0, 0, 0)
94
+ pre = "".join(map(str, version.pre)) if version.is_prerelease else ""
95
+ local = f"+{version.local}" if version.local else ""
96
+ version_str = (
97
+ f"{major}.{minor}.{patch}.{fix}.{compiler_version_str}{pre}{local}"
98
+ )
99
+
100
+ return version_str
101
+
102
+
103
+ setup(
104
+ version=_get_version(),
105
+ cmdclass=cmdclass,
106
+ ext_modules=[Extension("amulet.core._amulet_core", [])],
107
+ install_requires=dependencies,
108
+ )
@@ -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,40 @@
1
+ #include <pybind11/pybind11.h>
2
+
3
+ #include <amulet/pybind11_extensions/compatibility.hpp>
4
+ #include <amulet/pybind11_extensions/py_module.hpp>
5
+
6
+ namespace py = pybind11;
7
+ namespace pyext = Amulet::pybind11_extensions;
8
+
9
+ void init_version(py::module);
10
+ void init_selection(py::module);
11
+ void init_block(py::module);
12
+ void init_block_entity(py::module);
13
+ void init_entity(py::module);
14
+ void init_biome(py::module);
15
+ void init_palette(py::module);
16
+ void init_chunk(py::module);
17
+
18
+ void init_module(py::module m)
19
+ {
20
+ pyext::init_compiler_config(m);
21
+ pyext::check_compatibility(py::module::import("amulet.nbt"), m);
22
+
23
+ // Submodules
24
+ init_version(m);
25
+ init_selection(m);
26
+ init_block(m);
27
+ init_block_entity(m);
28
+ init_entity(m);
29
+ init_biome(m);
30
+ init_palette(m);
31
+ init_chunk(m);
32
+ }
33
+
34
+ PYBIND11_MODULE(_amulet_core, m)
35
+ {
36
+ py::options options;
37
+ options.disable_function_signatures();
38
+ m.def("init", &init_module, py::doc("init(arg0: types.ModuleType) -> None"));
39
+ options.enable_function_signatures();
40
+ }
@@ -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-10-27T10:30:17+0000",
11
+ "date": "2025-05-28T10:06:43+0100",
12
12
  "dirty": false,
13
13
  "error": null,
14
- "full-revisionid": "7844bec50b93c8711ae703840b1a0e43b8283df6",
15
- "version": "2.0a8"
14
+ "full-revisionid": "25debe9d8c82b3c964e68035a723bed4a6f2e2e4",
15
+ "version": "2.0.1a0"
16
16
  }
17
17
  ''' # END VERSION_JSON
18
18
 
@@ -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,41 @@
1
+ #include <functional>
2
+ #include <map>
3
+ #include <stdexcept>
4
+ #include <string>
5
+ #include <type_traits>
6
+ #include <variant>
7
+
8
+ #include <amulet/core/dll.hpp>
9
+ #include <amulet/nbt/nbt_encoding/binary.hpp>
10
+ #include <amulet/nbt/nbt_encoding/string.hpp>
11
+
12
+ #include "biome.hpp"
13
+
14
+ namespace Amulet {
15
+
16
+ void Biome::serialise(BinaryWriter& writer) const
17
+ {
18
+ writer.write_numeric<std::uint8_t>(1);
19
+ writer.write_size_and_bytes(get_platform());
20
+ get_version().serialise(writer);
21
+ writer.write_size_and_bytes(_namespace);
22
+ writer.write_size_and_bytes(_base_name);
23
+ }
24
+
25
+ Biome Biome::deserialise(BinaryReader& reader)
26
+ {
27
+ auto version_number = reader.read_numeric<std::uint8_t>();
28
+ switch (version_number) {
29
+ case 1: {
30
+ std::string platform { reader.read_size_and_bytes() };
31
+ VersionNumber version = VersionNumber::deserialise(reader);
32
+ std::string namespace_ { reader.read_size_and_bytes() };
33
+ std::string base_name { reader.read_size_and_bytes() };
34
+ return { platform, version, namespace_, base_name };
35
+ }
36
+ default:
37
+ throw std::invalid_argument("Unsupported version " + std::to_string(version_number));
38
+ }
39
+ }
40
+
41
+ }