amulet-core 2.0a7__cp312-cp312-win_amd64.whl → 2.0.1a2.post250529084747__cp312-cp312-win_amd64.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of amulet-core might be problematic. Click here for more details.

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.cp312-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.post250529084747.dist-info}/METADATA +25 -20
  40. amulet_core-2.0.1a2.post250529084747.dist-info/RECORD +45 -0
  41. {amulet_core-2.0a7.dist-info → amulet_core-2.0.1a2.post250529084747.dist-info}/WHEEL +1 -1
  42. amulet_core-2.0.1a2.post250529084747.dist-info/entry_points.txt +2 -0
  43. amulet/__init__.cp312-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.post250529084747.dist-info}/top_level.txt +0 -0
@@ -1,22 +0,0 @@
1
- from amulet.block import Block
2
- from amulet.resource_pack.bedrock.blockshapes.partial_block import (
3
- PartialBlock,
4
- )
5
-
6
-
7
- class PortalFrame(PartialBlock):
8
- @property
9
- def blockshape(self) -> str:
10
- return "portal_frame"
11
-
12
- def bounds(
13
- self, block: Block
14
- ) -> tuple[tuple[float, float], tuple[float, float], tuple[float, float]]:
15
- return (0, 1), (0, 13 / 16), (0, 1)
16
-
17
- @property
18
- def do_not_cull(self) -> tuple[bool, bool, bool, bool, bool, bool]:
19
- return False, True, False, False, False, False
20
-
21
-
22
- BlockShape = PortalFrame()
@@ -1,29 +0,0 @@
1
- from amulet.block import Block
2
- from amulet.resource_pack.bedrock.blockshapes.partial_block import (
3
- PartialBlock,
4
- )
5
- import amulet_nbt
6
-
7
-
8
- class PressurePlate(PartialBlock):
9
- def is_valid(self, block: Block) -> bool:
10
- return isinstance(block.properties.get("redstone_signal"), amulet_nbt.TAG_Int)
11
-
12
- @property
13
- def blockshape(self) -> str:
14
- return "pressure_plate"
15
-
16
- def bounds(
17
- self, block: Block
18
- ) -> tuple[tuple[float, float], tuple[float, float], tuple[float, float]]:
19
- if block.properties["redstone_signal"].py_data >= 1:
20
- return (1 / 16, 15 / 16), (0, 1 / 32), (1 / 16, 15 / 16)
21
- else:
22
- return (1 / 16, 15 / 16), (0, 1 / 16), (1 / 16, 15 / 16)
23
-
24
- @property
25
- def do_not_cull(self) -> tuple[bool, bool, bool, bool, bool, bool]:
26
- return False, True, True, True, True, True
27
-
28
-
29
- BlockShape = PressurePlate()
@@ -1,36 +0,0 @@
1
- from amulet.block import Block
2
- from amulet.resource_pack.bedrock.blockshapes.cube import Cube
3
- from amulet.mesh.block import BlockMesh
4
- import amulet_nbt
5
-
6
-
7
- class Pumpkin(Cube):
8
- def is_valid(self, block: Block) -> bool:
9
- return isinstance(block.properties.get("direction"), amulet_nbt.TAG_Int)
10
-
11
- @property
12
- def blockshape(self) -> str:
13
- return "pumpkin"
14
-
15
- def texture_index(self, block: Block, aux_value: int) -> int:
16
- return 2
17
-
18
- def get_block_model(
19
- self,
20
- block: Block,
21
- down: str,
22
- up: str,
23
- north: str,
24
- east: str,
25
- south: str,
26
- west: str,
27
- transparency: tuple[bool, bool, bool, bool, bool, bool],
28
- ) -> BlockMesh:
29
- return (
30
- super()
31
- .get_block_model(block, down, up, north, east, south, west, transparency)
32
- .rotate(0, block.properties["direction"].py_data)
33
- )
34
-
35
-
36
- BlockShape = Pumpkin()
@@ -1,14 +0,0 @@
1
- from amulet.block import Block
2
- from amulet.resource_pack.bedrock.blockshapes.pumpkin import Pumpkin
3
-
4
-
5
- class PumpkinCarved(Pumpkin):
6
- @property
7
- def blockshape(self) -> str:
8
- return "pumpkin_carved"
9
-
10
- def texture_index(self, block: Block, aux_value: int) -> int:
11
- return 0
12
-
13
-
14
- BlockShape = PumpkinCarved()
@@ -1,14 +0,0 @@
1
- from amulet.block import Block
2
- from amulet.resource_pack.bedrock.blockshapes.pumpkin import Pumpkin
3
-
4
-
5
- class PumpkinLit(Pumpkin):
6
- @property
7
- def blockshape(self) -> str:
8
- return "pumpkin_lit"
9
-
10
- def texture_index(self, block: Block, aux_value: int) -> int:
11
- return 1
12
-
13
-
14
- BlockShape = PumpkinLit()
@@ -1,14 +0,0 @@
1
- from amulet.resource_pack.bedrock.blockshapes.flat import Flat
2
-
3
-
4
- class RedDust(Flat):
5
- @property
6
- def blockshape(self) -> str:
7
- return "red_dust"
8
-
9
- @property
10
- def tint(self) -> tuple[float, float, float]:
11
- return 1, 0, 0
12
-
13
-
14
- BlockShape = RedDust()
@@ -1,53 +0,0 @@
1
- from typing import Any
2
- from amulet.block import Block
3
- from amulet.resource_pack.bedrock.blockshapes.partial_block import (
4
- PartialBlock,
5
- )
6
- from amulet.mesh.block import BlockMesh
7
- import amulet_nbt
8
-
9
-
10
- class Repeater(PartialBlock):
11
- def is_valid(self, block: Block) -> bool:
12
- return isinstance(block.properties.get("direction"), amulet_nbt.TAG_Int)
13
-
14
- @property
15
- def blockshape(self) -> str:
16
- return "repeater"
17
-
18
- def texture_index(self, block: Block, aux_value: int) -> int:
19
- if block.base_name == "powered_repeater":
20
- return 1
21
- else:
22
- return 0
23
-
24
- def bounds(
25
- self, block: Block
26
- ) -> tuple[tuple[float, float], tuple[float, float], tuple[float, float]]:
27
- return (0, 1), (0, 2 / 16), (0, 1)
28
-
29
- @property
30
- def do_not_cull(self) -> tuple[bool, bool, bool, bool, bool, bool]:
31
- return False, True, False, False, False, False
32
-
33
- def get_block_model(
34
- self,
35
- block: Block,
36
- down: str,
37
- up: str,
38
- north: str,
39
- east: str,
40
- south: str,
41
- west: str,
42
- transparency: tuple[bool, bool, bool, bool, bool, bool],
43
- *args: Any,
44
- **kwargs: Any
45
- ) -> BlockMesh:
46
- return (
47
- super()
48
- .get_block_model(block, down, up, north, east, south, west, transparency)
49
- .rotate(0, block.properties["direction"].py_data)
50
- )
51
-
52
-
53
- BlockShape = Repeater()
@@ -1,33 +0,0 @@
1
- from amulet.block import Block
2
- from amulet.resource_pack.bedrock.blockshapes.partial_block import (
3
- PartialBlock,
4
- )
5
- import amulet_nbt
6
-
7
-
8
- class Slab(PartialBlock):
9
- def is_valid(self, block: Block) -> bool:
10
- return isinstance(block.properties.get("top_slot_bit"), amulet_nbt.TAG_Byte)
11
-
12
- @property
13
- def blockshape(self) -> str:
14
- return "slab"
15
-
16
- def texture_index(self, block: Block, aux_value: int) -> int:
17
- """The texture index to use within the list for the given Block"""
18
- return aux_value % 8
19
-
20
- def bounds(
21
- self, block: Block
22
- ) -> tuple[tuple[float, float], tuple[float, float], tuple[float, float]]:
23
- if block.properties["top_slot_bit"].py_data:
24
- return (0, 1), (1 / 2, 1), (0, 1)
25
- else:
26
- return (0, 1), (0, 1 / 2), (0, 1)
27
-
28
- @property
29
- def do_not_cull(self) -> tuple[bool, bool, bool, bool, bool, bool]:
30
- return False, True, False, False, False, False
31
-
32
-
33
- BlockShape = Slab()
@@ -1,15 +0,0 @@
1
- from amulet.block import Block
2
- from amulet.resource_pack.bedrock.blockshapes.cube import Cube
3
-
4
-
5
- class SlabDouble(Cube):
6
- @property
7
- def blockshape(self) -> str:
8
- return "slab_double"
9
-
10
- def texture_index(self, block: Block, aux_value: int) -> int:
11
- """The texture index to use within the list for the given Block"""
12
- return aux_value % 8
13
-
14
-
15
- BlockShape = SlabDouble()
@@ -1,41 +0,0 @@
1
- from amulet.block import Block
2
- from amulet.mesh.block import BlockMesh
3
- from amulet.resource_pack.bedrock.blockshapes.cube import Cube
4
- import amulet_nbt
5
-
6
-
7
- class Tree(Cube):
8
- def is_valid(self, block: Block) -> bool:
9
- return isinstance(block.properties.get("pillar_axis"), amulet_nbt.TAG_String)
10
-
11
- @property
12
- def blockshape(self) -> str:
13
- return "tree"
14
-
15
- def texture_index(self, block: Block, aux_value: int) -> int:
16
- return aux_value % 4
17
-
18
- def get_block_model(
19
- self,
20
- block: Block,
21
- down: str,
22
- up: str,
23
- north: str,
24
- east: str,
25
- south: str,
26
- west: str,
27
- transparency: tuple[bool, bool, bool, bool, bool, bool],
28
- ) -> BlockMesh:
29
- axis: str = block.properties["pillar_axis"].py_data
30
-
31
- model = super().get_block_model(
32
- block, down, up, north, east, south, west, transparency
33
- )
34
- if axis == "x":
35
- return model.rotate(1, 1)
36
- elif axis == "z":
37
- return model.rotate(1, 2)
38
- return model
39
-
40
-
41
- BlockShape = Tree()
@@ -1,15 +0,0 @@
1
- from amulet.block import Block
2
- from amulet.resource_pack.bedrock.blockshapes.cube import Cube
3
-
4
-
5
- class TurtleEgg(Cube):
6
- @property
7
- def blockshape(self) -> str:
8
- return "turtle_egg"
9
-
10
- def texture_index(self, block: Block, aux_value: int) -> int:
11
- """The texture index to use within the list for the given Block"""
12
- return (aux_value // 4) % 3
13
-
14
-
15
- BlockShape = TurtleEgg()
@@ -1,52 +0,0 @@
1
- from amulet.block import Block
2
- from amulet.resource_pack.bedrock.blockshapes.flat_wall import (
3
- FlatWall,
4
- )
5
- from amulet.mesh.block import BlockMesh
6
- import amulet_nbt
7
-
8
-
9
- class Vine(FlatWall):
10
- def is_valid(self, block: Block) -> bool:
11
- return isinstance(
12
- block.properties.get("vine_direction_bits"), amulet_nbt.TAG_Int
13
- )
14
-
15
- @property
16
- def blockshape(self) -> str:
17
- return "vine"
18
-
19
- @property
20
- def tint(self) -> tuple[float, float, float]:
21
- return 0, 1, 0
22
-
23
- def get_block_model(
24
- self,
25
- block: Block,
26
- down: str,
27
- up: str,
28
- north: str,
29
- east: str,
30
- south: str,
31
- west: str,
32
- transparency: tuple[bool, bool, bool, bool, bool, bool],
33
- modify_uv: bool = True,
34
- ) -> BlockMesh:
35
- models = []
36
- data: int = block.properties["vine_direction_bits"].py_data
37
- if data:
38
- model = super().get_block_model(
39
- block, down, up, north, east, south, west, transparency
40
- )
41
- if data & 1:
42
- models.append(model.rotate(0, 2))
43
- if data & 2:
44
- models.append(model.rotate(0, 3))
45
- if data & 4:
46
- models.append(model.rotate(0, 0))
47
- if data & 8:
48
- models.append(model.rotate(0, 1))
49
- return BlockMesh.merge(models)
50
-
51
-
52
- BlockShape = Vine()
@@ -1,22 +0,0 @@
1
- from amulet.block import Block
2
- from amulet.resource_pack.bedrock.blockshapes.partial_block import (
3
- PartialBlock,
4
- )
5
-
6
-
7
- class Wall(PartialBlock):
8
- @property
9
- def blockshape(self) -> str:
10
- return "wall"
11
-
12
- def bounds(
13
- self, block: Block
14
- ) -> tuple[tuple[float, float], tuple[float, float], tuple[float, float]]:
15
- return (4 / 16, 12 / 16), (0, 1), (4 / 16, 12 / 16)
16
-
17
- @property
18
- def do_not_cull(self) -> tuple[bool, bool, bool, bool, bool, bool]:
19
- return False, False, True, True, True, True
20
-
21
-
22
- BlockShape = Wall()
@@ -1,38 +0,0 @@
1
- from amulet.block import Block
2
- from amulet.mesh.block.block_mesh import BlockMesh, Transparency
3
- from amulet.mesh.block.cube import get_unit_cube
4
- from amulet.resource_pack.bedrock.blockshapes.cube import Cube
5
-
6
-
7
- class Water(Cube):
8
- @property
9
- def blockshape(self) -> str:
10
- return "water"
11
-
12
- def get_block_model(
13
- self,
14
- block: Block,
15
- down: str,
16
- up: str,
17
- north: str,
18
- east: str,
19
- south: str,
20
- west: str,
21
- transparency: tuple[bool, bool, bool, bool, bool, bool],
22
- ) -> BlockMesh:
23
- return get_unit_cube(
24
- down,
25
- down,
26
- down,
27
- down,
28
- down,
29
- down,
30
- (
31
- Transparency.FullTranslucent
32
- if transparency[0]
33
- else Transparency.FullOpaque
34
- ),
35
- )
36
-
37
-
38
- BlockShape = Water()
@@ -1,147 +0,0 @@
1
- import os
2
-
3
- # import shutil
4
- # import zipfile
5
- # import json
6
- # from urllib.request import urlopen
7
- # import io
8
- from typing import Generator, Optional, TypeVar, Any
9
- import logging
10
-
11
- from amulet.resource_pack import BedrockResourcePack
12
-
13
- T = TypeVar("T")
14
-
15
- log = logging.getLogger(__name__)
16
-
17
-
18
- def generator_unpacker(gen: Generator[Any, Any, T]) -> T:
19
- try:
20
- while True:
21
- next(gen)
22
- except StopIteration as e:
23
- return e.value # type: ignore
24
-
25
-
26
- def get_latest() -> BedrockResourcePack:
27
- return generator_unpacker(get_latest_iter())
28
-
29
-
30
- def get_latest_iter() -> Generator[float, None, BedrockResourcePack]:
31
- vanilla_rp_path = os.path.join(
32
- os.environ["CACHE_DIR"], "resource_packs", "bedrock", "vanilla"
33
- )
34
- yield 0
35
- # new_version = launcher_manifest["latest"]["release"]
36
- # if new_version is None:
37
- # if os.path.isdir(vanilla_rp_path):
38
- # log.error(
39
- # "Could not download the launcher manifest. The resource pack seems to be present so using that."
40
- # )
41
- # else:
42
- # log.error(
43
- # "Could not download the launcher manifest. The resource pack is not present, blocks may not be rendered correctly."
44
- # )
45
- # else:
46
- # if os.path.isdir(vanilla_rp_path):
47
- # if os.path.isfile(os.path.join(vanilla_rp_path, "version")):
48
- # with open(os.path.join(vanilla_rp_path, "version")) as f:
49
- # old_version = f.read()
50
- # if old_version != new_version:
51
- # yield from _remove_and_download_iter(vanilla_rp_path, new_version)
52
- # else:
53
- # yield from _remove_and_download_iter(vanilla_rp_path, new_version)
54
- # else:
55
- # yield from _remove_and_download_iter(vanilla_rp_path, new_version)
56
- return BedrockResourcePack(vanilla_rp_path)
57
-
58
-
59
- _bedrock_vanilla_fix: Optional[BedrockResourcePack] = None
60
- _bedrock_vanilla_latest: Optional[BedrockResourcePack] = None
61
-
62
-
63
- def get_bedrock_vanilla_fix() -> BedrockResourcePack:
64
- global _bedrock_vanilla_fix
65
- if _bedrock_vanilla_fix is None:
66
- _bedrock_vanilla_fix = BedrockResourcePack(
67
- os.path.join(os.path.dirname(__file__), "bedrock_vanilla_fix")
68
- )
69
- return _bedrock_vanilla_fix
70
-
71
-
72
- def get_bedrock_vanilla_latest() -> BedrockResourcePack:
73
- global _bedrock_vanilla_latest
74
- if _bedrock_vanilla_latest is None:
75
- _bedrock_vanilla_latest = get_latest()
76
- return _bedrock_vanilla_latest
77
-
78
-
79
- def get_bedrock_vanilla_latest_iter() -> Generator[float, None, BedrockResourcePack]:
80
- global _bedrock_vanilla_latest
81
- if _bedrock_vanilla_latest is None:
82
- _bedrock_vanilla_latest = yield from get_latest_iter()
83
- return _bedrock_vanilla_latest
84
-
85
-
86
- # def _remove_and_download(path, version):
87
- # for _ in _remove_and_download_iter(path, version):
88
- # pass
89
-
90
-
91
- # def _remove_and_download_iter(path, version) -> Generator[float, None, None]:
92
- # if os.path.isdir(path):
93
- # shutil.rmtree(path, ignore_errors=True)
94
- # exists = yield from download_resources_iter(path, version)
95
- # if exists:
96
- # with open(os.path.join(path, "version"), "w") as f:
97
- # f.write(version)
98
-
99
-
100
- # def download_resources(path, version) -> bool:
101
- # return generator_unpacker(download_resources_iter(path, version))
102
-
103
-
104
- # def download_resources_iter(
105
- # path, version, chunk_size=4096
106
- # ) -> Generator[float, None, bool]:
107
- # log.info(f"Downloading Bedrock resource pack for version {version}")
108
- # version_url = next(
109
- # (v["url"] for v in launcher_manifest["versions"] if v["id"] == version), None
110
- # )
111
- # if version_url is None:
112
- # log.error(f"Could not find Bedrock resource pack for version {version}.")
113
- # return False
114
- #
115
- # try:
116
- # version_manifest = json.load(urlopen(version_url))
117
- # version_client_url = version_manifest["downloads"]["client"]["url"]
118
- #
119
- # response = urlopen(version_client_url)
120
- # data = []
121
- # data_size = int(response.headers["content-length"].strip())
122
- # index = 0
123
- # chunk = b"hello"
124
- # while chunk:
125
- # chunk = response.read(chunk_size)
126
- # data.append(chunk)
127
- # index += 1
128
- # yield min(1.0, (index * chunk_size) / (data_size * 2))
129
- #
130
- # client = zipfile.ZipFile(io.BytesIO(b"".join(data)))
131
- # paths = [fpath for fpath in client.namelist() if fpath.startswith("assets/")]
132
- # path_count = len(paths)
133
- # for path_index, fpath in enumerate(paths):
134
- # if not path_index % 30:
135
- # yield path_index / (path_count * 2) + 0.5
136
- # client.extract(fpath, path)
137
- # client.extract("pack.mcmeta", path)
138
- # client.extract("pack.png", path)
139
- #
140
- # except:
141
- # log.error(
142
- # f"Failed to download and extract the Bedrock resource pack for version {version}. Make sure you have a connection to the internet.",
143
- # exc_info=True,
144
- # )
145
- # return False
146
- # log.info(f"Finished downloading Bedrock resource pack for version {version}")
147
- # return True
@@ -1,40 +0,0 @@
1
- import os
2
- import json
3
-
4
- from amulet.resource_pack.abc import BaseResourcePack
5
- from amulet.utils import comment_json
6
-
7
-
8
- class BedrockResourcePack(BaseResourcePack):
9
- """A class to hold the bare-bones information about the resource pack.
10
- Holds the pack format, description and if the pack is valid.
11
- This information can be used in a viewer to display the packs to the user."""
12
-
13
- def __init__(self, resource_pack_path: str):
14
- super().__init__(resource_pack_path)
15
- meta_path = os.path.join(resource_pack_path, "manifest.json")
16
- if os.path.isfile(meta_path):
17
- try:
18
- with open(meta_path) as f:
19
- pack_mcmeta = comment_json.load(f)
20
- except json.JSONDecodeError:
21
- pass
22
- else:
23
- if isinstance(pack_mcmeta, dict):
24
- header = pack_mcmeta.get("header", None)
25
- if isinstance(header, dict):
26
- description = header.get("description", None)
27
- if isinstance(description, str):
28
- self._pack_description = description
29
- self._valid_pack = True
30
-
31
- pack_icon_path = os.path.join(resource_pack_path, "pack_icon.png")
32
- if os.path.isfile(pack_icon_path):
33
- self._pack_icon = pack_icon_path
34
-
35
- @staticmethod
36
- def is_valid(pack_path: str) -> bool:
37
- return os.path.isfile(os.path.join(pack_path, "manifest.json"))
38
-
39
- def __repr__(self) -> str:
40
- return f"BedrockResourcePack({self._root_dir})"