nucleation 0.1.140__tar.gz → 0.1.142__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.
Files changed (475) hide show
  1. {nucleation-0.1.140 → nucleation-0.1.142}/Cargo.lock +28 -3
  2. {nucleation-0.1.140 → nucleation-0.1.142}/Cargo.toml +2 -2
  3. {nucleation-0.1.140 → nucleation-0.1.142}/PKG-INFO +1 -1
  4. {nucleation-0.1.140 → nucleation-0.1.142}/pyproject.toml +1 -1
  5. nucleation-0.1.142/release-artifacts/libnucleation-macos-arm64.dylib +0 -0
  6. nucleation-0.1.142/release-artifacts/libnucleation-macos-x64.dylib +0 -0
  7. {nucleation-0.1.140 → nucleation-0.1.142}/release-artifacts/libnucleation.rlib +0 -0
  8. nucleation-0.1.142/release-artifacts/nucleation_bg.wasm +0 -0
  9. {nucleation-0.1.140 → nucleation-0.1.142}/release-artifacts/package.json +1 -1
  10. nucleation-0.1.142/simple_cube.litematic +0 -0
  11. {nucleation-0.1.140 → nucleation-0.1.142}/src/formats/litematic.rs +3 -3
  12. {nucleation-0.1.140 → nucleation-0.1.142}/src/formats/mcstructure.rs +127 -44
  13. {nucleation-0.1.140 → nucleation-0.1.142}/src/formats/schematic.rs +1 -1
  14. {nucleation-0.1.140 → nucleation-0.1.142}/src/region.rs +4 -4
  15. {nucleation-0.1.140 → nucleation-0.1.142}/src/universal_schematic.rs +178 -0
  16. nucleation-0.1.142/test_schematic.schem +0 -0
  17. nucleation-0.1.142/tests/bedrock_conversion_tests.rs +118 -0
  18. {nucleation-0.1.140 → nucleation-0.1.142}/tests/integration_tests.rs +3 -4
  19. {nucleation-0.1.140 → nucleation-0.1.142}/tests/mcstructure_tests.rs +3 -2
  20. nucleation-0.1.142/tests/samples/auto_register.mcstructure +0 -0
  21. nucleation-0.1.142/tests/samples/auto_register.schem +0 -0
  22. nucleation-0.1.142/tests/samples/flip-flop.mcstructure +0 -0
  23. {nucleation-0.1.140 → nucleation-0.1.142}/tests/test_region_expansion_bugs.rs +1 -1
  24. nucleation-0.1.140/release-artifacts/libnucleation-macos-arm64.dylib +0 -0
  25. nucleation-0.1.140/release-artifacts/libnucleation-macos-x64.dylib +0 -0
  26. nucleation-0.1.140/release-artifacts/nucleation_bg.wasm +0 -0
  27. nucleation-0.1.140/simple_cube.litematic +0 -0
  28. nucleation-0.1.140/test_schematic.schem +0 -0
  29. {nucleation-0.1.140 → nucleation-0.1.142}/.DS_Store +0 -0
  30. {nucleation-0.1.140 → nucleation-0.1.142}/.cargo/config.toml +0 -0
  31. {nucleation-0.1.140 → nucleation-0.1.142}/.github/workflows/ci.yml +0 -0
  32. {nucleation-0.1.140 → nucleation-0.1.142}/.gitignore +0 -0
  33. {nucleation-0.1.140 → nucleation-0.1.142}/.idea/.gitignore +0 -0
  34. {nucleation-0.1.140 → nucleation-0.1.142}/.idea/minecraft_schematic_utils.iml +0 -0
  35. {nucleation-0.1.140 → nucleation-0.1.142}/.idea/misc.xml +0 -0
  36. {nucleation-0.1.140 → nucleation-0.1.142}/.idea/modules.xml +0 -0
  37. {nucleation-0.1.140 → nucleation-0.1.142}/.idea/vcs.xml +0 -0
  38. {nucleation-0.1.140 → nucleation-0.1.142}/4bit_adder.litematic +0 -0
  39. {nucleation-0.1.140 → nucleation-0.1.142}/Dockerfile +0 -0
  40. {nucleation-0.1.140 → nucleation-0.1.142}/LICENSE +0 -0
  41. {nucleation-0.1.140 → nucleation-0.1.142}/README.md +0 -0
  42. {nucleation-0.1.140 → nucleation-0.1.142}/WARP.md +0 -0
  43. {nucleation-0.1.140 → nucleation-0.1.142}/benches/performance_test.rs +0 -0
  44. {nucleation-0.1.140 → nucleation-0.1.142}/benches/schematic_bench.rs +0 -0
  45. {nucleation-0.1.140 → nucleation-0.1.142}/build-ffi.sh +0 -0
  46. {nucleation-0.1.140 → nucleation-0.1.142}/build-wasm.sh +0 -0
  47. {nucleation-0.1.140 → nucleation-0.1.142}/docs/README.md +0 -0
  48. {nucleation-0.1.140 → nucleation-0.1.142}/docs/building/README.md +0 -0
  49. {nucleation-0.1.140 → nucleation-0.1.142}/docs/insign-io-integration.md +0 -0
  50. {nucleation-0.1.140 → nucleation-0.1.142}/docs/javascript/README.md +0 -0
  51. {nucleation-0.1.140 → nucleation-0.1.142}/docs/python/README.md +0 -0
  52. {nucleation-0.1.140 → nucleation-0.1.142}/docs/rust/README.md +0 -0
  53. {nucleation-0.1.140 → nucleation-0.1.142}/docs/shared/guide/circuit-api.md +0 -0
  54. {nucleation-0.1.140 → nucleation-0.1.142}/docs/shared/guide/definition-region.md +0 -0
  55. {nucleation-0.1.140 → nucleation-0.1.142}/docs/shared/guide/schematic-builder.md +0 -0
  56. {nucleation-0.1.140 → nucleation-0.1.142}/docs/shared/guide/typed-executor.md +0 -0
  57. {nucleation-0.1.140 → nucleation-0.1.142}/docs/shared/unicode-palette.md +0 -0
  58. {nucleation-0.1.140 → nucleation-0.1.142}/examples/bracket_notation.rs +0 -0
  59. {nucleation-0.1.140 → nucleation-0.1.142}/examples/build_adder.rs +0 -0
  60. {nucleation-0.1.140 → nucleation-0.1.142}/examples/build_test_adder.rs +0 -0
  61. {nucleation-0.1.140 → nucleation-0.1.142}/examples/building_benchmark.rs +0 -0
  62. {nucleation-0.1.140 → nucleation-0.1.142}/examples/check_adder_dims.rs +0 -0
  63. {nucleation-0.1.140 → nucleation-0.1.142}/examples/connect4_battle_setup.rs +0 -0
  64. {nucleation-0.1.140 → nucleation-0.1.142}/examples/create_simple_litematic.rs +0 -0
  65. {nucleation-0.1.140 → nucleation-0.1.142}/examples/custom_io_signals.rs +0 -0
  66. {nucleation-0.1.140 → nucleation-0.1.142}/examples/ffi.md +0 -0
  67. {nucleation-0.1.140 → nucleation-0.1.142}/examples/generate_gradient_samples.rs +0 -0
  68. {nucleation-0.1.140 → nucleation-0.1.142}/examples/generate_nice_gradients.rs +0 -0
  69. {nucleation-0.1.140 → nucleation-0.1.142}/examples/generate_solid_color_tests.rs +0 -0
  70. {nucleation-0.1.140 → nucleation-0.1.142}/examples/inspect_blockpedia.rs +0 -0
  71. {nucleation-0.1.140 → nucleation-0.1.142}/examples/python.md +0 -0
  72. {nucleation-0.1.140 → nucleation-0.1.142}/examples/python_benchmark.py +0 -0
  73. {nucleation-0.1.140 → nucleation-0.1.142}/examples/python_simulation.py +0 -0
  74. {nucleation-0.1.140 → nucleation-0.1.142}/examples/rust.md +0 -0
  75. {nucleation-0.1.140 → nucleation-0.1.142}/examples/rust_fluent_api.rs +0 -0
  76. {nucleation-0.1.140 → nucleation-0.1.142}/examples/test_asymmetric_cubes.rs +0 -0
  77. {nucleation-0.1.140 → nucleation-0.1.142}/examples/test_checkerboard.rs +0 -0
  78. {nucleation-0.1.140 → nucleation-0.1.142}/examples/test_unicode_circuit.rs +0 -0
  79. {nucleation-0.1.140 → nucleation-0.1.142}/examples/universal_schematic_overhead.rs +0 -0
  80. {nucleation-0.1.140 → nucleation-0.1.142}/examples/wasm.md +0 -0
  81. {nucleation-0.1.140 → nucleation-0.1.142}/helf_adder.litematic +0 -0
  82. {nucleation-0.1.140 → nucleation-0.1.142}/insign.d.ts +0 -0
  83. {nucleation-0.1.140 → nucleation-0.1.142}/nucleation-stubs.php +0 -0
  84. {nucleation-0.1.140 → nucleation-0.1.142}/nucleation.pyi +0 -0
  85. {nucleation-0.1.140 → nucleation-0.1.142}/output/.DS_Store +0 -0
  86. {nucleation-0.1.140 → nucleation-0.1.142}/output/full_adder.litematic +0 -0
  87. {nucleation-0.1.140 → nucleation-0.1.142}/pre-push.sh +0 -0
  88. {nucleation-0.1.140 → nucleation-0.1.142}/py.typed +0 -0
  89. {nucleation-0.1.140 → nucleation-0.1.142}/release-artifacts/LICENSE +0 -0
  90. {nucleation-0.1.140 → nucleation-0.1.142}/release-artifacts/README.md +0 -0
  91. {nucleation-0.1.140 → nucleation-0.1.142}/release-artifacts/libnucleation.d +0 -0
  92. {nucleation-0.1.140 → nucleation-0.1.142}/release-artifacts/nucleation-cdn-loader.js +0 -0
  93. {nucleation-0.1.140 → nucleation-0.1.142}/release-artifacts/nucleation-original.js +0 -0
  94. {nucleation-0.1.140 → nucleation-0.1.142}/release-artifacts/nucleation.d.ts +16 -16
  95. {nucleation-0.1.140 → nucleation-0.1.142}/release-artifacts/nucleation.js +0 -0
  96. {nucleation-0.1.140 → nucleation-0.1.142}/release-artifacts/nucleation_bg.wasm.d.ts +16 -16
  97. {nucleation-0.1.140 → nucleation-0.1.142}/schematic_builder/generated/d_latch.litematic +0 -0
  98. {nucleation-0.1.140 → nucleation-0.1.142}/schematic_builder/generated/xor.schem +0 -0
  99. {nucleation-0.1.140 → nucleation-0.1.142}/schematic_builder/templates/comparator_subtract_bug1.txt +0 -0
  100. {nucleation-0.1.140 → nucleation-0.1.142}/schematic_builder/templates/comparator_subtract_bug2.txt +0 -0
  101. {nucleation-0.1.140 → nucleation-0.1.142}/schematic_builder/templates/comparator_subtract_simple.txt +0 -0
  102. {nucleation-0.1.140 → nucleation-0.1.142}/schematic_builder/templates/comparator_subtract_with_signs.txt +0 -0
  103. {nucleation-0.1.140 → nucleation-0.1.142}/schematic_builder/templates/d_latch.txt +0 -0
  104. {nucleation-0.1.140 → nucleation-0.1.142}/schematic_builder/templates/failing_case.txt +0 -0
  105. {nucleation-0.1.140 → nucleation-0.1.142}/schematic_builder/templates/full_adder.txt +0 -0
  106. {nucleation-0.1.140 → nucleation-0.1.142}/schematic_builder/templates/xor.txt +0 -0
  107. {nucleation-0.1.140 → nucleation-0.1.142}/scripts/update-stubs.sh +0 -0
  108. {nucleation-0.1.140 → nucleation-0.1.142}/src/bin/schematic-builder.rs +0 -0
  109. {nucleation-0.1.140 → nucleation-0.1.142}/src/block_entity/generic.rs +0 -0
  110. {nucleation-0.1.140 → nucleation-0.1.142}/src/block_entity/mod.rs +0 -0
  111. {nucleation-0.1.140 → nucleation-0.1.142}/src/block_position.rs +0 -0
  112. {nucleation-0.1.140 → nucleation-0.1.142}/src/block_state.rs +0 -0
  113. {nucleation-0.1.140 → nucleation-0.1.142}/src/bounding_box.rs +0 -0
  114. {nucleation-0.1.140 → nucleation-0.1.142}/src/building/brushes.rs +0 -0
  115. {nucleation-0.1.140 → nucleation-0.1.142}/src/building/enums.rs +0 -0
  116. {nucleation-0.1.140 → nucleation-0.1.142}/src/building/mod.rs +0 -0
  117. {nucleation-0.1.140 → nucleation-0.1.142}/src/building/shapes.rs +0 -0
  118. {nucleation-0.1.140 → nucleation-0.1.142}/src/chunk.rs +0 -0
  119. {nucleation-0.1.140 → nucleation-0.1.142}/src/definition_region.rs +0 -0
  120. {nucleation-0.1.140 → nucleation-0.1.142}/src/entity.rs +0 -0
  121. {nucleation-0.1.140 → nucleation-0.1.142}/src/ffi.rs +0 -0
  122. {nucleation-0.1.140 → nucleation-0.1.142}/src/formats/manager.rs +0 -0
  123. {nucleation-0.1.140 → nucleation-0.1.142}/src/formats/mod.rs +0 -0
  124. {nucleation-0.1.140 → nucleation-0.1.142}/src/formats/sponge_schematic_v3.md +0 -0
  125. {nucleation-0.1.140 → nucleation-0.1.142}/src/insign.rs +0 -0
  126. {nucleation-0.1.140 → nucleation-0.1.142}/src/item/mod.rs +0 -0
  127. {nucleation-0.1.140 → nucleation-0.1.142}/src/item/stack.rs +0 -0
  128. {nucleation-0.1.140 → nucleation-0.1.142}/src/lib.rs +0 -0
  129. {nucleation-0.1.140 → nucleation-0.1.142}/src/metadata.rs +0 -0
  130. {nucleation-0.1.140 → nucleation-0.1.142}/src/nbt/mod.rs +0 -0
  131. {nucleation-0.1.140 → nucleation-0.1.142}/src/php.rs +0 -0
  132. {nucleation-0.1.140 → nucleation-0.1.142}/src/print_utils.rs +0 -0
  133. {nucleation-0.1.140 → nucleation-0.1.142}/src/python/building.rs +0 -0
  134. {nucleation-0.1.140 → nucleation-0.1.142}/src/python/circuit_builder.rs +0 -0
  135. {nucleation-0.1.140 → nucleation-0.1.142}/src/python/definition_region.rs +0 -0
  136. {nucleation-0.1.140 → nucleation-0.1.142}/src/python/mod.rs +0 -0
  137. {nucleation-0.1.140 → nucleation-0.1.142}/src/python/schematic.rs +0 -0
  138. {nucleation-0.1.140 → nucleation-0.1.142}/src/python/schematic_builder.rs +0 -0
  139. {nucleation-0.1.140 → nucleation-0.1.142}/src/python/simulation.rs +0 -0
  140. {nucleation-0.1.140 → nucleation-0.1.142}/src/python/typed_executor.rs +0 -0
  141. {nucleation-0.1.140 → nucleation-0.1.142}/src/schematic_builder/palettes.rs +0 -0
  142. {nucleation-0.1.140 → nucleation-0.1.142}/src/schematic_builder.rs +0 -0
  143. {nucleation-0.1.140 → nucleation-0.1.142}/src/simulation/circuit_builder.rs +0 -0
  144. {nucleation-0.1.140 → nucleation-0.1.142}/src/simulation/mchprs_world.rs +0 -0
  145. {nucleation-0.1.140 → nucleation-0.1.142}/src/simulation/mod.rs +0 -0
  146. {nucleation-0.1.140 → nucleation-0.1.142}/src/simulation/tests.rs +0 -0
  147. {nucleation-0.1.140 → nucleation-0.1.142}/src/simulation/truth_table.rs +0 -0
  148. {nucleation-0.1.140 → nucleation-0.1.142}/src/simulation/typed_executor/executor.rs +0 -0
  149. {nucleation-0.1.140 → nucleation-0.1.142}/src/simulation/typed_executor/insign_io.rs +0 -0
  150. {nucleation-0.1.140 → nucleation-0.1.142}/src/simulation/typed_executor/integration_tests.rs +0 -0
  151. {nucleation-0.1.140 → nucleation-0.1.142}/src/simulation/typed_executor/io_layout_builder.rs +0 -0
  152. {nucleation-0.1.140 → nucleation-0.1.142}/src/simulation/typed_executor/io_mapping.rs +0 -0
  153. {nucleation-0.1.140 → nucleation-0.1.142}/src/simulation/typed_executor/io_type.rs +0 -0
  154. {nucleation-0.1.140 → nucleation-0.1.142}/src/simulation/typed_executor/layout_function.rs +0 -0
  155. {nucleation-0.1.140 → nucleation-0.1.142}/src/simulation/typed_executor/mod.rs +0 -0
  156. {nucleation-0.1.140 → nucleation-0.1.142}/src/simulation/typed_executor/sort_strategy.rs +0 -0
  157. {nucleation-0.1.140 → nucleation-0.1.142}/src/simulation/typed_executor/tests.rs +0 -0
  158. {nucleation-0.1.140 → nucleation-0.1.142}/src/simulation/typed_executor/value.rs +0 -0
  159. {nucleation-0.1.140 → nucleation-0.1.142}/src/transforms.rs +0 -0
  160. {nucleation-0.1.140 → nucleation-0.1.142}/src/utils/block_string.rs +0 -0
  161. {nucleation-0.1.140 → nucleation-0.1.142}/src/utils/container_spec.rs +0 -0
  162. {nucleation-0.1.140 → nucleation-0.1.142}/src/utils/enhanced_nbt_parser.rs +0 -0
  163. {nucleation-0.1.140 → nucleation-0.1.142}/src/utils/mod.rs +0 -0
  164. {nucleation-0.1.140 → nucleation-0.1.142}/src/wasm/building.rs +0 -0
  165. {nucleation-0.1.140 → nucleation-0.1.142}/src/wasm/circuit_builder.rs +0 -0
  166. {nucleation-0.1.140 → nucleation-0.1.142}/src/wasm/definition_region.rs +0 -0
  167. {nucleation-0.1.140 → nucleation-0.1.142}/src/wasm/mod.rs +0 -0
  168. {nucleation-0.1.140 → nucleation-0.1.142}/src/wasm/palettes.rs +0 -0
  169. {nucleation-0.1.140 → nucleation-0.1.142}/src/wasm/schematic.rs +0 -0
  170. {nucleation-0.1.140 → nucleation-0.1.142}/src/wasm/schematic_builder.rs +0 -0
  171. {nucleation-0.1.140 → nucleation-0.1.142}/src/wasm/simulation.rs +0 -0
  172. {nucleation-0.1.140 → nucleation-0.1.142}/src/wasm/typed_executor.rs +0 -0
  173. {nucleation-0.1.140 → nucleation-0.1.142}/test-wasm.sh +0 -0
  174. {nucleation-0.1.140 → nucleation-0.1.142}/test_adder.litematic +0 -0
  175. {nucleation-0.1.140 → nucleation-0.1.142}/test_circuit.txt +0 -0
  176. {nucleation-0.1.140 → nucleation-0.1.142}/test_cli_output.litematic +0 -0
  177. {nucleation-0.1.140 → nucleation-0.1.142}/test_count_format.schem +0 -0
  178. {nucleation-0.1.140 → nucleation-0.1.142}/test_enhanced.schem +0 -0
  179. {nucleation-0.1.140 → nucleation-0.1.142}/test_fixed.schem +0 -0
  180. {nucleation-0.1.140 → nucleation-0.1.142}/tests/.DS_Store +0 -0
  181. {nucleation-0.1.140 → nucleation-0.1.142}/tests/barrel_nbt_test.rs +0 -0
  182. {nucleation-0.1.140 → nucleation-0.1.142}/tests/building_tests.rs +0 -0
  183. {nucleation-0.1.140 → nucleation-0.1.142}/tests/connect4_test.js +0 -0
  184. {nucleation-0.1.140 → nucleation-0.1.142}/tests/debug_flip.rs +0 -0
  185. {nucleation-0.1.140 → nucleation-0.1.142}/tests/definition_regions_test.rs +0 -0
  186. {nucleation-0.1.140 → nucleation-0.1.142}/tests/executor_config_test.js +0 -0
  187. {nucleation-0.1.140 → nucleation-0.1.142}/tests/mchprs_state_test.rs +0 -0
  188. {nucleation-0.1.140 → nucleation-0.1.142}/tests/nbt_parsing_test.rs +0 -0
  189. {nucleation-0.1.140 → nucleation-0.1.142}/tests/node_fluent_api_test.mjs +0 -0
  190. {nucleation-0.1.140 → nucleation-0.1.142}/tests/node_simple_circuit_test.js +0 -0
  191. {nucleation-0.1.140 → nucleation-0.1.142}/tests/node_simple_circuit_test.mjs +0 -0
  192. {nucleation-0.1.140 → nucleation-0.1.142}/tests/node_wasm_test.js +0 -0
  193. {nucleation-0.1.140 → nucleation-0.1.142}/tests/package.json +0 -0
  194. {nucleation-0.1.140 → nucleation-0.1.142}/tests/php-stubs-test.php +0 -0
  195. {nucleation-0.1.140 → nucleation-0.1.142}/tests/property_transformation_demo.rs +0 -0
  196. {nucleation-0.1.140 → nucleation-0.1.142}/tests/python_simple_circuit_test.py +0 -0
  197. {nucleation-0.1.140 → nucleation-0.1.142}/tests/python_test.py +0 -0
  198. {nucleation-0.1.140 → nucleation-0.1.142}/tests/registry_tests.rs +0 -0
  199. {nucleation-0.1.140 → nucleation-0.1.142}/tests/reproduce_bug.rs +0 -0
  200. {nucleation-0.1.140 → nucleation-0.1.142}/tests/rust_fluent_api_test.rs +0 -0
  201. {nucleation-0.1.140 → nucleation-0.1.142}/tests/samples/16-bit_divider.mcstructure +0 -0
  202. {nucleation-0.1.140 → nucleation-0.1.142}/tests/samples/1x1.litematic +0 -0
  203. {nucleation-0.1.140 → nucleation-0.1.142}/tests/samples/3x2x3.litematic +0 -0
  204. {nucleation-0.1.140 → nucleation-0.1.142}/tests/samples/3x3.litematic +0 -0
  205. {nucleation-0.1.140 → nucleation-0.1.142}/tests/samples/4x2x4.litematic +0 -0
  206. {nucleation-0.1.140 → nucleation-0.1.142}/tests/samples/4x4x4+1.litematic +0 -0
  207. {nucleation-0.1.140 → nucleation-0.1.142}/tests/samples/8-bit_alu.mcstructure +0 -0
  208. {nucleation-0.1.140 → nucleation-0.1.142}/tests/samples/Evaluator.schem +0 -0
  209. {nucleation-0.1.140 → nucleation-0.1.142}/tests/samples/all_items.litematic +0 -0
  210. {nucleation-0.1.140 → nucleation-0.1.142}/tests/samples/and.schem +0 -0
  211. {nucleation-0.1.140 → nucleation-0.1.142}/tests/samples/brewer.litematic +0 -0
  212. {nucleation-0.1.140 → nucleation-0.1.142}/tests/samples/c4_ai_last_played.schem +0 -0
  213. {nucleation-0.1.140 → nucleation-0.1.142}/tests/samples/c4_ai_left_most.schem +0 -0
  214. {nucleation-0.1.140 → nucleation-0.1.142}/tests/samples/cutecounter.schem +0 -0
  215. {nucleation-0.1.140 → nucleation-0.1.142}/tests/samples/door_plot.litematic +0 -0
  216. {nucleation-0.1.140 → nucleation-0.1.142}/tests/samples/file.litematic.l +0 -0
  217. {nucleation-0.1.140 → nucleation-0.1.142}/tests/samples/gol.litematic +0 -0
  218. {nucleation-0.1.140 → nucleation-0.1.142}/tests/samples/large_schematic.schem +0 -0
  219. {nucleation-0.1.140 → nucleation-0.1.142}/tests/samples/linear_plotter.litematic +0 -0
  220. {nucleation-0.1.140 → nucleation-0.1.142}/tests/samples/litematic-rose-farm.litematic +0 -0
  221. {nucleation-0.1.140 → nucleation-0.1.142}/tests/samples/new_chest_test.schem +0 -0
  222. {nucleation-0.1.140 → nucleation-0.1.142}/tests/samples/quarry.litematic +0 -0
  223. {nucleation-0.1.140 → nucleation-0.1.142}/tests/samples/sample.litematic +0 -0
  224. {nucleation-0.1.140 → nucleation-0.1.142}/tests/samples/sample.schem +0 -0
  225. {nucleation-0.1.140 → nucleation-0.1.142}/tests/samples/spinny.litematic +0 -0
  226. {nucleation-0.1.140 → nucleation-0.1.142}/tests/samples/ss-sorter.litematic +0 -0
  227. {nucleation-0.1.140 → nucleation-0.1.142}/tests/samples/storage_thingy.litematic +0 -0
  228. {nucleation-0.1.140 → nucleation-0.1.142}/tests/samples/test_coordinate_thingy.litematic +0 -0
  229. {nucleation-0.1.140 → nucleation-0.1.142}/tests/samples/test_cube.schem +0 -0
  230. {nucleation-0.1.140 → nucleation-0.1.142}/tests/samples/trencher.litematic +0 -0
  231. {nucleation-0.1.140 → nucleation-0.1.142}/tests/samples/wool_palette.litematic +0 -0
  232. {nucleation-0.1.140 → nucleation-0.1.142}/tests/simple_wasm_test.rs +0 -0
  233. {nucleation-0.1.140 → nucleation-0.1.142}/tests/test_barrel_hopper_simulation.rs +0 -0
  234. {nucleation-0.1.140 → nucleation-0.1.142}/tests/test_chunk_bounds_bug.rs +0 -0
  235. {nucleation-0.1.140 → nucleation-0.1.142}/tests/test_comparator_diagonal_bug.rs +0 -0
  236. {nucleation-0.1.140 → nucleation-0.1.142}/tests/test_comparator_subtract_bug.rs +0 -0
  237. {nucleation-0.1.140 → nucleation-0.1.142}/tests/test_comparator_subtract_executor.rs +0 -0
  238. {nucleation-0.1.140 → nucleation-0.1.142}/tests/test_custom_io_adjacent_bug.rs +0 -0
  239. {nucleation-0.1.140 → nucleation-0.1.142}/tests/test_custom_io_no_power_bug.rs +0 -0
  240. {nucleation-0.1.140 → nucleation-0.1.142}/tests/test_intermediate_wire_sync.rs +0 -0
  241. {nucleation-0.1.140 → nucleation-0.1.142}/tests/test_long_wire.rs +0 -0
  242. {nucleation-0.1.140 → nucleation-0.1.142}/tests/test_nibble_signal_strength.rs +0 -0
  243. {nucleation-0.1.140 → nucleation-0.1.142}/tests/test_repeater_chain_sync.rs +0 -0
  244. {nucleation-0.1.140 → nucleation-0.1.142}/tests/test_repeater_custom_io_bug.rs +0 -0
  245. {nucleation-0.1.140 → nucleation-0.1.142}/tests/test_simulation_with_tight_bounds.rs +0 -0
  246. {nucleation-0.1.140 → nucleation-0.1.142}/tests/test_two_inputs_exact_topology.rs +0 -0
  247. {nucleation-0.1.140 → nucleation-0.1.142}/tests/test_two_inputs_no_output_bug.rs +0 -0
  248. {nucleation-0.1.140 → nucleation-0.1.142}/tests/test_typed_executor_sync_output_bug.rs +0 -0
  249. {nucleation-0.1.140 → nucleation-0.1.142}/tests/transformation_tests.rs +0 -0
  250. {nucleation-0.1.140 → nucleation-0.1.142}/tests/wasm_node_tests.rs +0 -0
  251. {nucleation-0.1.140 → nucleation-0.1.142}/tests/wasm_tests.rs +0 -0
  252. {nucleation-0.1.140 → nucleation-0.1.142}/wasm-test/bun.lockb +0 -0
  253. {nucleation-0.1.140 → nucleation-0.1.142}/wasm-test/index.html +0 -0
  254. {nucleation-0.1.140 → nucleation-0.1.142}/wasm-test/index.js +0 -0
  255. {nucleation-0.1.140 → nucleation-0.1.142}/wasm-test/minecraft_schematic_utils.js +0 -0
  256. {nucleation-0.1.140 → nucleation-0.1.142}/wasm-test/minecraft_schematic_utils_bg.wasm +0 -0
  257. {nucleation-0.1.140 → nucleation-0.1.142}/wasm-test/node_modules/@types/node/LICENSE +0 -0
  258. {nucleation-0.1.140 → nucleation-0.1.142}/wasm-test/node_modules/@types/node/README.md +0 -0
  259. {nucleation-0.1.140 → nucleation-0.1.142}/wasm-test/node_modules/@types/node/assert/strict.d.ts +0 -0
  260. {nucleation-0.1.140 → nucleation-0.1.142}/wasm-test/node_modules/@types/node/assert.d.ts +0 -0
  261. {nucleation-0.1.140 → nucleation-0.1.142}/wasm-test/node_modules/@types/node/async_hooks.d.ts +0 -0
  262. {nucleation-0.1.140 → nucleation-0.1.142}/wasm-test/node_modules/@types/node/buffer.d.ts +0 -0
  263. {nucleation-0.1.140 → nucleation-0.1.142}/wasm-test/node_modules/@types/node/child_process.d.ts +0 -0
  264. {nucleation-0.1.140 → nucleation-0.1.142}/wasm-test/node_modules/@types/node/cluster.d.ts +0 -0
  265. {nucleation-0.1.140 → nucleation-0.1.142}/wasm-test/node_modules/@types/node/console.d.ts +0 -0
  266. {nucleation-0.1.140 → nucleation-0.1.142}/wasm-test/node_modules/@types/node/constants.d.ts +0 -0
  267. {nucleation-0.1.140 → nucleation-0.1.142}/wasm-test/node_modules/@types/node/crypto.d.ts +0 -0
  268. {nucleation-0.1.140 → nucleation-0.1.142}/wasm-test/node_modules/@types/node/dgram.d.ts +0 -0
  269. {nucleation-0.1.140 → nucleation-0.1.142}/wasm-test/node_modules/@types/node/diagnostics_channel.d.ts +0 -0
  270. {nucleation-0.1.140 → nucleation-0.1.142}/wasm-test/node_modules/@types/node/dns/promises.d.ts +0 -0
  271. {nucleation-0.1.140 → nucleation-0.1.142}/wasm-test/node_modules/@types/node/dns.d.ts +0 -0
  272. {nucleation-0.1.140 → nucleation-0.1.142}/wasm-test/node_modules/@types/node/dom-events.d.ts +0 -0
  273. {nucleation-0.1.140 → nucleation-0.1.142}/wasm-test/node_modules/@types/node/domain.d.ts +0 -0
  274. {nucleation-0.1.140 → nucleation-0.1.142}/wasm-test/node_modules/@types/node/events.d.ts +0 -0
  275. {nucleation-0.1.140 → nucleation-0.1.142}/wasm-test/node_modules/@types/node/fs/promises.d.ts +0 -0
  276. {nucleation-0.1.140 → nucleation-0.1.142}/wasm-test/node_modules/@types/node/fs.d.ts +0 -0
  277. {nucleation-0.1.140 → nucleation-0.1.142}/wasm-test/node_modules/@types/node/globals.d.ts +0 -0
  278. {nucleation-0.1.140 → nucleation-0.1.142}/wasm-test/node_modules/@types/node/globals.global.d.ts +0 -0
  279. {nucleation-0.1.140 → nucleation-0.1.142}/wasm-test/node_modules/@types/node/http.d.ts +0 -0
  280. {nucleation-0.1.140 → nucleation-0.1.142}/wasm-test/node_modules/@types/node/http2.d.ts +0 -0
  281. {nucleation-0.1.140 → nucleation-0.1.142}/wasm-test/node_modules/@types/node/https.d.ts +0 -0
  282. {nucleation-0.1.140 → nucleation-0.1.142}/wasm-test/node_modules/@types/node/index.d.ts +0 -0
  283. {nucleation-0.1.140 → nucleation-0.1.142}/wasm-test/node_modules/@types/node/inspector.d.ts +0 -0
  284. {nucleation-0.1.140 → nucleation-0.1.142}/wasm-test/node_modules/@types/node/module.d.ts +0 -0
  285. {nucleation-0.1.140 → nucleation-0.1.142}/wasm-test/node_modules/@types/node/net.d.ts +0 -0
  286. {nucleation-0.1.140 → nucleation-0.1.142}/wasm-test/node_modules/@types/node/os.d.ts +0 -0
  287. {nucleation-0.1.140 → nucleation-0.1.142}/wasm-test/node_modules/@types/node/package.json +0 -0
  288. {nucleation-0.1.140 → nucleation-0.1.142}/wasm-test/node_modules/@types/node/path.d.ts +0 -0
  289. {nucleation-0.1.140 → nucleation-0.1.142}/wasm-test/node_modules/@types/node/perf_hooks.d.ts +0 -0
  290. {nucleation-0.1.140 → nucleation-0.1.142}/wasm-test/node_modules/@types/node/process.d.ts +0 -0
  291. {nucleation-0.1.140 → nucleation-0.1.142}/wasm-test/node_modules/@types/node/punycode.d.ts +0 -0
  292. {nucleation-0.1.140 → nucleation-0.1.142}/wasm-test/node_modules/@types/node/querystring.d.ts +0 -0
  293. {nucleation-0.1.140 → nucleation-0.1.142}/wasm-test/node_modules/@types/node/readline/promises.d.ts +0 -0
  294. {nucleation-0.1.140 → nucleation-0.1.142}/wasm-test/node_modules/@types/node/readline.d.ts +0 -0
  295. {nucleation-0.1.140 → nucleation-0.1.142}/wasm-test/node_modules/@types/node/repl.d.ts +0 -0
  296. {nucleation-0.1.140 → nucleation-0.1.142}/wasm-test/node_modules/@types/node/sea.d.ts +0 -0
  297. {nucleation-0.1.140 → nucleation-0.1.142}/wasm-test/node_modules/@types/node/stream/consumers.d.ts +0 -0
  298. {nucleation-0.1.140 → nucleation-0.1.142}/wasm-test/node_modules/@types/node/stream/promises.d.ts +0 -0
  299. {nucleation-0.1.140 → nucleation-0.1.142}/wasm-test/node_modules/@types/node/stream/web.d.ts +0 -0
  300. {nucleation-0.1.140 → nucleation-0.1.142}/wasm-test/node_modules/@types/node/stream.d.ts +0 -0
  301. {nucleation-0.1.140 → nucleation-0.1.142}/wasm-test/node_modules/@types/node/string_decoder.d.ts +0 -0
  302. {nucleation-0.1.140 → nucleation-0.1.142}/wasm-test/node_modules/@types/node/test.d.ts +0 -0
  303. {nucleation-0.1.140 → nucleation-0.1.142}/wasm-test/node_modules/@types/node/timers/promises.d.ts +0 -0
  304. {nucleation-0.1.140 → nucleation-0.1.142}/wasm-test/node_modules/@types/node/timers.d.ts +0 -0
  305. {nucleation-0.1.140 → nucleation-0.1.142}/wasm-test/node_modules/@types/node/tls.d.ts +0 -0
  306. {nucleation-0.1.140 → nucleation-0.1.142}/wasm-test/node_modules/@types/node/trace_events.d.ts +0 -0
  307. {nucleation-0.1.140 → nucleation-0.1.142}/wasm-test/node_modules/@types/node/tty.d.ts +0 -0
  308. {nucleation-0.1.140 → nucleation-0.1.142}/wasm-test/node_modules/@types/node/url.d.ts +0 -0
  309. {nucleation-0.1.140 → nucleation-0.1.142}/wasm-test/node_modules/@types/node/util.d.ts +0 -0
  310. {nucleation-0.1.140 → nucleation-0.1.142}/wasm-test/node_modules/@types/node/v8.d.ts +0 -0
  311. {nucleation-0.1.140 → nucleation-0.1.142}/wasm-test/node_modules/@types/node/vm.d.ts +0 -0
  312. {nucleation-0.1.140 → nucleation-0.1.142}/wasm-test/node_modules/@types/node/wasi.d.ts +0 -0
  313. {nucleation-0.1.140 → nucleation-0.1.142}/wasm-test/node_modules/@types/node/worker_threads.d.ts +0 -0
  314. {nucleation-0.1.140 → nucleation-0.1.142}/wasm-test/node_modules/@types/node/zlib.d.ts +0 -0
  315. {nucleation-0.1.140 → nucleation-0.1.142}/wasm-test/node_modules/@types/ws/LICENSE +0 -0
  316. {nucleation-0.1.140 → nucleation-0.1.142}/wasm-test/node_modules/@types/ws/README.md +0 -0
  317. {nucleation-0.1.140 → nucleation-0.1.142}/wasm-test/node_modules/@types/ws/index.d.mts +0 -0
  318. {nucleation-0.1.140 → nucleation-0.1.142}/wasm-test/node_modules/@types/ws/index.d.ts +0 -0
  319. {nucleation-0.1.140 → nucleation-0.1.142}/wasm-test/node_modules/@types/ws/node_modules/@types/node/LICENSE +0 -0
  320. {nucleation-0.1.140 → nucleation-0.1.142}/wasm-test/node_modules/@types/ws/node_modules/@types/node/README.md +0 -0
  321. {nucleation-0.1.140 → nucleation-0.1.142}/wasm-test/node_modules/@types/ws/node_modules/@types/node/assert/strict.d.ts +0 -0
  322. {nucleation-0.1.140 → nucleation-0.1.142}/wasm-test/node_modules/@types/ws/node_modules/@types/node/assert.d.ts +0 -0
  323. {nucleation-0.1.140 → nucleation-0.1.142}/wasm-test/node_modules/@types/ws/node_modules/@types/node/async_hooks.d.ts +0 -0
  324. {nucleation-0.1.140 → nucleation-0.1.142}/wasm-test/node_modules/@types/ws/node_modules/@types/node/buffer.d.ts +0 -0
  325. {nucleation-0.1.140 → nucleation-0.1.142}/wasm-test/node_modules/@types/ws/node_modules/@types/node/child_process.d.ts +0 -0
  326. {nucleation-0.1.140 → nucleation-0.1.142}/wasm-test/node_modules/@types/ws/node_modules/@types/node/cluster.d.ts +0 -0
  327. {nucleation-0.1.140 → nucleation-0.1.142}/wasm-test/node_modules/@types/ws/node_modules/@types/node/console.d.ts +0 -0
  328. {nucleation-0.1.140 → nucleation-0.1.142}/wasm-test/node_modules/@types/ws/node_modules/@types/node/constants.d.ts +0 -0
  329. {nucleation-0.1.140 → nucleation-0.1.142}/wasm-test/node_modules/@types/ws/node_modules/@types/node/crypto.d.ts +0 -0
  330. {nucleation-0.1.140 → nucleation-0.1.142}/wasm-test/node_modules/@types/ws/node_modules/@types/node/dgram.d.ts +0 -0
  331. {nucleation-0.1.140 → nucleation-0.1.142}/wasm-test/node_modules/@types/ws/node_modules/@types/node/diagnostics_channel.d.ts +0 -0
  332. {nucleation-0.1.140 → nucleation-0.1.142}/wasm-test/node_modules/@types/ws/node_modules/@types/node/dns/promises.d.ts +0 -0
  333. {nucleation-0.1.140 → nucleation-0.1.142}/wasm-test/node_modules/@types/ws/node_modules/@types/node/dns.d.ts +0 -0
  334. {nucleation-0.1.140 → nucleation-0.1.142}/wasm-test/node_modules/@types/ws/node_modules/@types/node/dom-events.d.ts +0 -0
  335. {nucleation-0.1.140 → nucleation-0.1.142}/wasm-test/node_modules/@types/ws/node_modules/@types/node/domain.d.ts +0 -0
  336. {nucleation-0.1.140 → nucleation-0.1.142}/wasm-test/node_modules/@types/ws/node_modules/@types/node/events.d.ts +0 -0
  337. {nucleation-0.1.140 → nucleation-0.1.142}/wasm-test/node_modules/@types/ws/node_modules/@types/node/fs/promises.d.ts +0 -0
  338. {nucleation-0.1.140 → nucleation-0.1.142}/wasm-test/node_modules/@types/ws/node_modules/@types/node/fs.d.ts +0 -0
  339. {nucleation-0.1.140 → nucleation-0.1.142}/wasm-test/node_modules/@types/ws/node_modules/@types/node/globals.d.ts +0 -0
  340. {nucleation-0.1.140 → nucleation-0.1.142}/wasm-test/node_modules/@types/ws/node_modules/@types/node/globals.global.d.ts +0 -0
  341. {nucleation-0.1.140 → nucleation-0.1.142}/wasm-test/node_modules/@types/ws/node_modules/@types/node/http.d.ts +0 -0
  342. {nucleation-0.1.140 → nucleation-0.1.142}/wasm-test/node_modules/@types/ws/node_modules/@types/node/http2.d.ts +0 -0
  343. {nucleation-0.1.140 → nucleation-0.1.142}/wasm-test/node_modules/@types/ws/node_modules/@types/node/https.d.ts +0 -0
  344. {nucleation-0.1.140 → nucleation-0.1.142}/wasm-test/node_modules/@types/ws/node_modules/@types/node/index.d.ts +0 -0
  345. {nucleation-0.1.140 → nucleation-0.1.142}/wasm-test/node_modules/@types/ws/node_modules/@types/node/inspector.d.ts +0 -0
  346. {nucleation-0.1.140 → nucleation-0.1.142}/wasm-test/node_modules/@types/ws/node_modules/@types/node/module.d.ts +0 -0
  347. {nucleation-0.1.140 → nucleation-0.1.142}/wasm-test/node_modules/@types/ws/node_modules/@types/node/net.d.ts +0 -0
  348. {nucleation-0.1.140 → nucleation-0.1.142}/wasm-test/node_modules/@types/ws/node_modules/@types/node/node_modules/undici-types/LICENSE +0 -0
  349. {nucleation-0.1.140 → nucleation-0.1.142}/wasm-test/node_modules/@types/ws/node_modules/@types/node/node_modules/undici-types/README.md +0 -0
  350. {nucleation-0.1.140 → nucleation-0.1.142}/wasm-test/node_modules/@types/ws/node_modules/@types/node/node_modules/undici-types/agent.d.ts +0 -0
  351. {nucleation-0.1.140 → nucleation-0.1.142}/wasm-test/node_modules/@types/ws/node_modules/@types/node/node_modules/undici-types/api.d.ts +0 -0
  352. {nucleation-0.1.140 → nucleation-0.1.142}/wasm-test/node_modules/@types/ws/node_modules/@types/node/node_modules/undici-types/balanced-pool.d.ts +0 -0
  353. {nucleation-0.1.140 → nucleation-0.1.142}/wasm-test/node_modules/@types/ws/node_modules/@types/node/node_modules/undici-types/cache.d.ts +0 -0
  354. {nucleation-0.1.140 → nucleation-0.1.142}/wasm-test/node_modules/@types/ws/node_modules/@types/node/node_modules/undici-types/client.d.ts +0 -0
  355. {nucleation-0.1.140 → nucleation-0.1.142}/wasm-test/node_modules/@types/ws/node_modules/@types/node/node_modules/undici-types/connector.d.ts +0 -0
  356. {nucleation-0.1.140 → nucleation-0.1.142}/wasm-test/node_modules/@types/ws/node_modules/@types/node/node_modules/undici-types/content-type.d.ts +0 -0
  357. {nucleation-0.1.140 → nucleation-0.1.142}/wasm-test/node_modules/@types/ws/node_modules/@types/node/node_modules/undici-types/cookies.d.ts +0 -0
  358. {nucleation-0.1.140 → nucleation-0.1.142}/wasm-test/node_modules/@types/ws/node_modules/@types/node/node_modules/undici-types/diagnostics-channel.d.ts +0 -0
  359. {nucleation-0.1.140 → nucleation-0.1.142}/wasm-test/node_modules/@types/ws/node_modules/@types/node/node_modules/undici-types/dispatcher.d.ts +0 -0
  360. {nucleation-0.1.140 → nucleation-0.1.142}/wasm-test/node_modules/@types/ws/node_modules/@types/node/node_modules/undici-types/env-http-proxy-agent.d.ts +0 -0
  361. {nucleation-0.1.140 → nucleation-0.1.142}/wasm-test/node_modules/@types/ws/node_modules/@types/node/node_modules/undici-types/errors.d.ts +0 -0
  362. {nucleation-0.1.140 → nucleation-0.1.142}/wasm-test/node_modules/@types/ws/node_modules/@types/node/node_modules/undici-types/eventsource.d.ts +0 -0
  363. {nucleation-0.1.140 → nucleation-0.1.142}/wasm-test/node_modules/@types/ws/node_modules/@types/node/node_modules/undici-types/fetch.d.ts +0 -0
  364. {nucleation-0.1.140 → nucleation-0.1.142}/wasm-test/node_modules/@types/ws/node_modules/@types/node/node_modules/undici-types/file.d.ts +0 -0
  365. {nucleation-0.1.140 → nucleation-0.1.142}/wasm-test/node_modules/@types/ws/node_modules/@types/node/node_modules/undici-types/filereader.d.ts +0 -0
  366. {nucleation-0.1.140 → nucleation-0.1.142}/wasm-test/node_modules/@types/ws/node_modules/@types/node/node_modules/undici-types/formdata.d.ts +0 -0
  367. {nucleation-0.1.140 → nucleation-0.1.142}/wasm-test/node_modules/@types/ws/node_modules/@types/node/node_modules/undici-types/global-dispatcher.d.ts +0 -0
  368. {nucleation-0.1.140 → nucleation-0.1.142}/wasm-test/node_modules/@types/ws/node_modules/@types/node/node_modules/undici-types/global-origin.d.ts +0 -0
  369. {nucleation-0.1.140 → nucleation-0.1.142}/wasm-test/node_modules/@types/ws/node_modules/@types/node/node_modules/undici-types/handlers.d.ts +0 -0
  370. {nucleation-0.1.140 → nucleation-0.1.142}/wasm-test/node_modules/@types/ws/node_modules/@types/node/node_modules/undici-types/header.d.ts +0 -0
  371. {nucleation-0.1.140 → nucleation-0.1.142}/wasm-test/node_modules/@types/ws/node_modules/@types/node/node_modules/undici-types/index.d.ts +0 -0
  372. {nucleation-0.1.140 → nucleation-0.1.142}/wasm-test/node_modules/@types/ws/node_modules/@types/node/node_modules/undici-types/interceptors.d.ts +0 -0
  373. {nucleation-0.1.140 → nucleation-0.1.142}/wasm-test/node_modules/@types/ws/node_modules/@types/node/node_modules/undici-types/mock-agent.d.ts +0 -0
  374. {nucleation-0.1.140 → nucleation-0.1.142}/wasm-test/node_modules/@types/ws/node_modules/@types/node/node_modules/undici-types/mock-client.d.ts +0 -0
  375. {nucleation-0.1.140 → nucleation-0.1.142}/wasm-test/node_modules/@types/ws/node_modules/@types/node/node_modules/undici-types/mock-errors.d.ts +0 -0
  376. {nucleation-0.1.140 → nucleation-0.1.142}/wasm-test/node_modules/@types/ws/node_modules/@types/node/node_modules/undici-types/mock-interceptor.d.ts +0 -0
  377. {nucleation-0.1.140 → nucleation-0.1.142}/wasm-test/node_modules/@types/ws/node_modules/@types/node/node_modules/undici-types/mock-pool.d.ts +0 -0
  378. {nucleation-0.1.140 → nucleation-0.1.142}/wasm-test/node_modules/@types/ws/node_modules/@types/node/node_modules/undici-types/package.json +0 -0
  379. {nucleation-0.1.140 → nucleation-0.1.142}/wasm-test/node_modules/@types/ws/node_modules/@types/node/node_modules/undici-types/patch.d.ts +0 -0
  380. {nucleation-0.1.140 → nucleation-0.1.142}/wasm-test/node_modules/@types/ws/node_modules/@types/node/node_modules/undici-types/pool-stats.d.ts +0 -0
  381. {nucleation-0.1.140 → nucleation-0.1.142}/wasm-test/node_modules/@types/ws/node_modules/@types/node/node_modules/undici-types/pool.d.ts +0 -0
  382. {nucleation-0.1.140 → nucleation-0.1.142}/wasm-test/node_modules/@types/ws/node_modules/@types/node/node_modules/undici-types/proxy-agent.d.ts +0 -0
  383. {nucleation-0.1.140 → nucleation-0.1.142}/wasm-test/node_modules/@types/ws/node_modules/@types/node/node_modules/undici-types/readable.d.ts +0 -0
  384. {nucleation-0.1.140 → nucleation-0.1.142}/wasm-test/node_modules/@types/ws/node_modules/@types/node/node_modules/undici-types/retry-agent.d.ts +0 -0
  385. {nucleation-0.1.140 → nucleation-0.1.142}/wasm-test/node_modules/@types/ws/node_modules/@types/node/node_modules/undici-types/retry-handler.d.ts +0 -0
  386. {nucleation-0.1.140 → nucleation-0.1.142}/wasm-test/node_modules/@types/ws/node_modules/@types/node/node_modules/undici-types/util.d.ts +0 -0
  387. {nucleation-0.1.140 → nucleation-0.1.142}/wasm-test/node_modules/@types/ws/node_modules/@types/node/node_modules/undici-types/webidl.d.ts +0 -0
  388. {nucleation-0.1.140 → nucleation-0.1.142}/wasm-test/node_modules/@types/ws/node_modules/@types/node/node_modules/undici-types/websocket.d.ts +0 -0
  389. {nucleation-0.1.140 → nucleation-0.1.142}/wasm-test/node_modules/@types/ws/node_modules/@types/node/os.d.ts +0 -0
  390. {nucleation-0.1.140 → nucleation-0.1.142}/wasm-test/node_modules/@types/ws/node_modules/@types/node/package.json +0 -0
  391. {nucleation-0.1.140 → nucleation-0.1.142}/wasm-test/node_modules/@types/ws/node_modules/@types/node/path.d.ts +0 -0
  392. {nucleation-0.1.140 → nucleation-0.1.142}/wasm-test/node_modules/@types/ws/node_modules/@types/node/perf_hooks.d.ts +0 -0
  393. {nucleation-0.1.140 → nucleation-0.1.142}/wasm-test/node_modules/@types/ws/node_modules/@types/node/process.d.ts +0 -0
  394. {nucleation-0.1.140 → nucleation-0.1.142}/wasm-test/node_modules/@types/ws/node_modules/@types/node/punycode.d.ts +0 -0
  395. {nucleation-0.1.140 → nucleation-0.1.142}/wasm-test/node_modules/@types/ws/node_modules/@types/node/querystring.d.ts +0 -0
  396. {nucleation-0.1.140 → nucleation-0.1.142}/wasm-test/node_modules/@types/ws/node_modules/@types/node/readline/promises.d.ts +0 -0
  397. {nucleation-0.1.140 → nucleation-0.1.142}/wasm-test/node_modules/@types/ws/node_modules/@types/node/readline.d.ts +0 -0
  398. {nucleation-0.1.140 → nucleation-0.1.142}/wasm-test/node_modules/@types/ws/node_modules/@types/node/repl.d.ts +0 -0
  399. {nucleation-0.1.140 → nucleation-0.1.142}/wasm-test/node_modules/@types/ws/node_modules/@types/node/sea.d.ts +0 -0
  400. {nucleation-0.1.140 → nucleation-0.1.142}/wasm-test/node_modules/@types/ws/node_modules/@types/node/sqlite.d.ts +0 -0
  401. {nucleation-0.1.140 → nucleation-0.1.142}/wasm-test/node_modules/@types/ws/node_modules/@types/node/stream/consumers.d.ts +0 -0
  402. {nucleation-0.1.140 → nucleation-0.1.142}/wasm-test/node_modules/@types/ws/node_modules/@types/node/stream/promises.d.ts +0 -0
  403. {nucleation-0.1.140 → nucleation-0.1.142}/wasm-test/node_modules/@types/ws/node_modules/@types/node/stream/web.d.ts +0 -0
  404. {nucleation-0.1.140 → nucleation-0.1.142}/wasm-test/node_modules/@types/ws/node_modules/@types/node/stream.d.ts +0 -0
  405. {nucleation-0.1.140 → nucleation-0.1.142}/wasm-test/node_modules/@types/ws/node_modules/@types/node/string_decoder.d.ts +0 -0
  406. {nucleation-0.1.140 → nucleation-0.1.142}/wasm-test/node_modules/@types/ws/node_modules/@types/node/test.d.ts +0 -0
  407. {nucleation-0.1.140 → nucleation-0.1.142}/wasm-test/node_modules/@types/ws/node_modules/@types/node/timers/promises.d.ts +0 -0
  408. {nucleation-0.1.140 → nucleation-0.1.142}/wasm-test/node_modules/@types/ws/node_modules/@types/node/timers.d.ts +0 -0
  409. {nucleation-0.1.140 → nucleation-0.1.142}/wasm-test/node_modules/@types/ws/node_modules/@types/node/tls.d.ts +0 -0
  410. {nucleation-0.1.140 → nucleation-0.1.142}/wasm-test/node_modules/@types/ws/node_modules/@types/node/trace_events.d.ts +0 -0
  411. {nucleation-0.1.140 → nucleation-0.1.142}/wasm-test/node_modules/@types/ws/node_modules/@types/node/tty.d.ts +0 -0
  412. {nucleation-0.1.140 → nucleation-0.1.142}/wasm-test/node_modules/@types/ws/node_modules/@types/node/url.d.ts +0 -0
  413. {nucleation-0.1.140 → nucleation-0.1.142}/wasm-test/node_modules/@types/ws/node_modules/@types/node/util.d.ts +0 -0
  414. {nucleation-0.1.140 → nucleation-0.1.142}/wasm-test/node_modules/@types/ws/node_modules/@types/node/v8.d.ts +0 -0
  415. {nucleation-0.1.140 → nucleation-0.1.142}/wasm-test/node_modules/@types/ws/node_modules/@types/node/vm.d.ts +0 -0
  416. {nucleation-0.1.140 → nucleation-0.1.142}/wasm-test/node_modules/@types/ws/node_modules/@types/node/wasi.d.ts +0 -0
  417. {nucleation-0.1.140 → nucleation-0.1.142}/wasm-test/node_modules/@types/ws/node_modules/@types/node/worker_threads.d.ts +0 -0
  418. {nucleation-0.1.140 → nucleation-0.1.142}/wasm-test/node_modules/@types/ws/node_modules/@types/node/zlib.d.ts +0 -0
  419. {nucleation-0.1.140 → nucleation-0.1.142}/wasm-test/node_modules/@types/ws/package.json +0 -0
  420. {nucleation-0.1.140 → nucleation-0.1.142}/wasm-test/node_modules/bun-types/README.md +0 -0
  421. {nucleation-0.1.140 → nucleation-0.1.142}/wasm-test/node_modules/bun-types/bun.d.ts +0 -0
  422. {nucleation-0.1.140 → nucleation-0.1.142}/wasm-test/node_modules/bun-types/deprecated.d.ts +0 -0
  423. {nucleation-0.1.140 → nucleation-0.1.142}/wasm-test/node_modules/bun-types/fetch.d.ts +0 -0
  424. {nucleation-0.1.140 → nucleation-0.1.142}/wasm-test/node_modules/bun-types/ffi.d.ts +0 -0
  425. {nucleation-0.1.140 → nucleation-0.1.142}/wasm-test/node_modules/bun-types/globals.d.ts +0 -0
  426. {nucleation-0.1.140 → nucleation-0.1.142}/wasm-test/node_modules/bun-types/html-rewriter.d.ts +0 -0
  427. {nucleation-0.1.140 → nucleation-0.1.142}/wasm-test/node_modules/bun-types/index.d.ts +0 -0
  428. {nucleation-0.1.140 → nucleation-0.1.142}/wasm-test/node_modules/bun-types/jsc.d.ts +0 -0
  429. {nucleation-0.1.140 → nucleation-0.1.142}/wasm-test/node_modules/bun-types/overrides.d.ts +0 -0
  430. {nucleation-0.1.140 → nucleation-0.1.142}/wasm-test/node_modules/bun-types/package.json +0 -0
  431. {nucleation-0.1.140 → nucleation-0.1.142}/wasm-test/node_modules/bun-types/sqlite.d.ts +0 -0
  432. {nucleation-0.1.140 → nucleation-0.1.142}/wasm-test/node_modules/bun-types/test.d.ts +0 -0
  433. {nucleation-0.1.140 → nucleation-0.1.142}/wasm-test/node_modules/bun-types/wasm.d.ts +0 -0
  434. {nucleation-0.1.140 → nucleation-0.1.142}/wasm-test/node_modules/undici-types/README.md +0 -0
  435. {nucleation-0.1.140 → nucleation-0.1.142}/wasm-test/node_modules/undici-types/agent.d.ts +0 -0
  436. {nucleation-0.1.140 → nucleation-0.1.142}/wasm-test/node_modules/undici-types/api.d.ts +0 -0
  437. {nucleation-0.1.140 → nucleation-0.1.142}/wasm-test/node_modules/undici-types/balanced-pool.d.ts +0 -0
  438. {nucleation-0.1.140 → nucleation-0.1.142}/wasm-test/node_modules/undici-types/cache.d.ts +0 -0
  439. {nucleation-0.1.140 → nucleation-0.1.142}/wasm-test/node_modules/undici-types/client.d.ts +0 -0
  440. {nucleation-0.1.140 → nucleation-0.1.142}/wasm-test/node_modules/undici-types/connector.d.ts +0 -0
  441. {nucleation-0.1.140 → nucleation-0.1.142}/wasm-test/node_modules/undici-types/content-type.d.ts +0 -0
  442. {nucleation-0.1.140 → nucleation-0.1.142}/wasm-test/node_modules/undici-types/cookies.d.ts +0 -0
  443. {nucleation-0.1.140 → nucleation-0.1.142}/wasm-test/node_modules/undici-types/diagnostics-channel.d.ts +0 -0
  444. {nucleation-0.1.140 → nucleation-0.1.142}/wasm-test/node_modules/undici-types/dispatcher.d.ts +0 -0
  445. {nucleation-0.1.140 → nucleation-0.1.142}/wasm-test/node_modules/undici-types/errors.d.ts +0 -0
  446. {nucleation-0.1.140 → nucleation-0.1.142}/wasm-test/node_modules/undici-types/fetch.d.ts +0 -0
  447. {nucleation-0.1.140 → nucleation-0.1.142}/wasm-test/node_modules/undici-types/file.d.ts +0 -0
  448. {nucleation-0.1.140 → nucleation-0.1.142}/wasm-test/node_modules/undici-types/filereader.d.ts +0 -0
  449. {nucleation-0.1.140 → nucleation-0.1.142}/wasm-test/node_modules/undici-types/formdata.d.ts +0 -0
  450. {nucleation-0.1.140 → nucleation-0.1.142}/wasm-test/node_modules/undici-types/global-dispatcher.d.ts +0 -0
  451. {nucleation-0.1.140 → nucleation-0.1.142}/wasm-test/node_modules/undici-types/global-origin.d.ts +0 -0
  452. {nucleation-0.1.140 → nucleation-0.1.142}/wasm-test/node_modules/undici-types/handlers.d.ts +0 -0
  453. {nucleation-0.1.140 → nucleation-0.1.142}/wasm-test/node_modules/undici-types/header.d.ts +0 -0
  454. {nucleation-0.1.140 → nucleation-0.1.142}/wasm-test/node_modules/undici-types/index.d.ts +0 -0
  455. {nucleation-0.1.140 → nucleation-0.1.142}/wasm-test/node_modules/undici-types/interceptors.d.ts +0 -0
  456. {nucleation-0.1.140 → nucleation-0.1.142}/wasm-test/node_modules/undici-types/mock-agent.d.ts +0 -0
  457. {nucleation-0.1.140 → nucleation-0.1.142}/wasm-test/node_modules/undici-types/mock-client.d.ts +0 -0
  458. {nucleation-0.1.140 → nucleation-0.1.142}/wasm-test/node_modules/undici-types/mock-errors.d.ts +0 -0
  459. {nucleation-0.1.140 → nucleation-0.1.142}/wasm-test/node_modules/undici-types/mock-interceptor.d.ts +0 -0
  460. {nucleation-0.1.140 → nucleation-0.1.142}/wasm-test/node_modules/undici-types/mock-pool.d.ts +0 -0
  461. {nucleation-0.1.140 → nucleation-0.1.142}/wasm-test/node_modules/undici-types/package.json +0 -0
  462. {nucleation-0.1.140 → nucleation-0.1.142}/wasm-test/node_modules/undici-types/patch.d.ts +0 -0
  463. {nucleation-0.1.140 → nucleation-0.1.142}/wasm-test/node_modules/undici-types/pool-stats.d.ts +0 -0
  464. {nucleation-0.1.140 → nucleation-0.1.142}/wasm-test/node_modules/undici-types/pool.d.ts +0 -0
  465. {nucleation-0.1.140 → nucleation-0.1.142}/wasm-test/node_modules/undici-types/proxy-agent.d.ts +0 -0
  466. {nucleation-0.1.140 → nucleation-0.1.142}/wasm-test/node_modules/undici-types/readable.d.ts +0 -0
  467. {nucleation-0.1.140 → nucleation-0.1.142}/wasm-test/node_modules/undici-types/webidl.d.ts +0 -0
  468. {nucleation-0.1.140 → nucleation-0.1.142}/wasm-test/node_modules/undici-types/websocket.d.ts +0 -0
  469. {nucleation-0.1.140 → nucleation-0.1.142}/wasm-test/nucleation-web.js +0 -0
  470. {nucleation-0.1.140 → nucleation-0.1.142}/wasm-test/nucleation-web_bg.wasm +0 -0
  471. {nucleation-0.1.140 → nucleation-0.1.142}/wasm-test/nucleation.js +0 -0
  472. {nucleation-0.1.140 → nucleation-0.1.142}/wasm-test/nucleation_bg.js +0 -0
  473. {nucleation-0.1.140 → nucleation-0.1.142}/wasm-test/nucleation_bg.wasm +0 -0
  474. {nucleation-0.1.140 → nucleation-0.1.142}/wasm-test/package.json +0 -0
  475. {nucleation-0.1.140 → nucleation-0.1.142}/wasm-test/server.js +0 -0
@@ -234,12 +234,14 @@ dependencies = [
234
234
 
235
235
  [[package]]
236
236
  name = "blockpedia"
237
- version = "0.1.6"
237
+ version = "0.1.8"
238
238
  source = "registry+https://github.com/rust-lang/crates.io-index"
239
- checksum = "9df0036f61590846453a0ed67c3df0b9f57ccb1184b8d91a1995a2e2cc9eaf74"
239
+ checksum = "616422e09c183aa4dca9b226ac5a12766df2bb69f7a570ea3a9785e3a8d35ba1"
240
240
  dependencies = [
241
241
  "anyhow",
242
242
  "console_error_panic_hook",
243
+ "fastnbt",
244
+ "flate2",
243
245
  "image",
244
246
  "js-sys",
245
247
  "palette",
@@ -247,6 +249,7 @@ dependencies = [
247
249
  "phf_codegen",
248
250
  "serde",
249
251
  "serde-wasm-bindgen 0.6.5",
252
+ "serde_bytes",
250
253
  "serde_json",
251
254
  "thiserror 1.0.69",
252
255
  "tokio",
@@ -953,6 +956,18 @@ version = "1.0.0"
953
956
  source = "registry+https://github.com/rust-lang/crates.io-index"
954
957
  checksum = "dd2e7510819d6fbf51a5545c8f922716ecfb14df168a3242f7d33e0239efe6a1"
955
958
 
959
+ [[package]]
960
+ name = "fastnbt"
961
+ version = "2.6.0"
962
+ source = "registry+https://github.com/rust-lang/crates.io-index"
963
+ checksum = "29e3bb1f9ba8b6dbb35d89b415216041c2cad0c3e0b329db85ef5d4fc9e80cd6"
964
+ dependencies = [
965
+ "byteorder",
966
+ "cesu8",
967
+ "serde",
968
+ "serde_bytes",
969
+ ]
970
+
956
971
  [[package]]
957
972
  name = "fastrand"
958
973
  version = "2.3.0"
@@ -1845,7 +1860,7 @@ dependencies = [
1845
1860
 
1846
1861
  [[package]]
1847
1862
  name = "nucleation"
1848
- version = "0.1.140"
1863
+ version = "0.1.142"
1849
1864
  dependencies = [
1850
1865
  "base64",
1851
1866
  "blockpedia",
@@ -2757,6 +2772,16 @@ dependencies = [
2757
2772
  "wasm-bindgen",
2758
2773
  ]
2759
2774
 
2775
+ [[package]]
2776
+ name = "serde_bytes"
2777
+ version = "0.11.19"
2778
+ source = "registry+https://github.com/rust-lang/crates.io-index"
2779
+ checksum = "a5d440709e79d88e51ac01c4b72fc6cb7314017bb7da9eeff678aa94c10e3ea8"
2780
+ dependencies = [
2781
+ "serde",
2782
+ "serde_core",
2783
+ ]
2784
+
2760
2785
  [[package]]
2761
2786
  name = "serde_core"
2762
2787
  version = "1.0.228"
@@ -1,6 +1,6 @@
1
1
  [package]
2
2
  name = "nucleation"
3
- version = "0.1.140"
3
+ version = "0.1.142"
4
4
  edition = "2021"
5
5
  description = "A high-performance Minecraft schematic parser and utility library"
6
6
  authors = ["Nano nano@schem.at"]
@@ -44,7 +44,7 @@ flate2 = "1.1.2"
44
44
  log = "0.4.22"
45
45
  console = "0.15.8"
46
46
  insign = "0.1.1"
47
- blockpedia = { version = "0.1.6", default-features = false, features = ["wasm"] }
47
+ blockpedia = { version = "0.1.8", default-features = false, features = ["wasm"] }
48
48
 
49
49
  tracing-subscriber = { version = "0.3", features = ["env-filter"] }
50
50
  hematite-nbt = "*"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: nucleation
3
- Version: 0.1.140
3
+ Version: 0.1.142
4
4
  Classifier: Development Status :: 4 - Beta
5
5
  Classifier: Intended Audience :: Developers
6
6
  Classifier: License :: OSI Approved :: GNU Affero General Public License v3
@@ -4,7 +4,7 @@ build-backend = "maturin"
4
4
 
5
5
  [project]
6
6
  name = "nucleation"
7
- version = "0.1.140"
7
+ version = "0.1.142"
8
8
  description = "A high-performance Minecraft schematic parser and utility library"
9
9
  authors = [{ name = "Nano", email = "nano@schem.at" }]
10
10
  license = { text = "AGPL-3.0-only" }
@@ -5,7 +5,7 @@
5
5
  "Nano nano@schem.at"
6
6
  ],
7
7
  "description": "A high-performance Minecraft schematic parser and utility library",
8
- "version": "0.1.140",
8
+ "version": "0.1.142",
9
9
  "license": "AGPL-3.0-only",
10
10
  "repository": {
11
11
  "type": "git",
Binary file
@@ -446,7 +446,7 @@ mod tests {
446
446
  let mut region = Region::new("TestRegion".to_string(), (0, 0, 0), (2, 2, 2));
447
447
 
448
448
  let stone = BlockState::new("minecraft:stone".to_string());
449
- let air = BlockState::new("minecraft:air".to_string());
449
+ let _air = BlockState::new("minecraft:air".to_string());
450
450
 
451
451
  region.set_block(0, 0, 0, &stone.clone());
452
452
  region.set_block(1, 1, 1, &stone.clone());
@@ -577,7 +577,7 @@ mod tests {
577
577
  .expect("Failed to write to file");
578
578
 
579
579
  // Read the .litematic file back
580
- let loaded_litematic_data =
580
+ let _loaded_litematic_data =
581
581
  std::fs::read("simple_cube.litematic").expect("Failed to read file");
582
582
 
583
583
  // Clean up the generated file
@@ -592,7 +592,7 @@ mod tests {
592
592
  let mut region = Region::new("TestRegion".to_string(), (0, 0, 0), (2, 2, 2));
593
593
 
594
594
  let stone = BlockState::new("minecraft:stone".to_string());
595
- let air = BlockState::new("minecraft:air".to_string());
595
+ let _air = BlockState::new("minecraft:air".to_string());
596
596
 
597
597
  region.set_block(0, 0, 0, &stone.clone());
598
598
  region.set_block(1, 1, 1, &stone.clone());
@@ -7,6 +7,7 @@ use crate::region::Region;
7
7
  use crate::universal_schematic::UniversalSchematic;
8
8
  use crate::BlockState;
9
9
  use blockpedia;
10
+ use blockpedia::block_entity::{BlockEntityTranslator, NbtValue as BpNbtValue};
10
11
  use std::collections::HashMap;
11
12
  use std::io::Cursor;
12
13
 
@@ -120,10 +121,12 @@ pub fn from_mcstructure(data: &[u8]) -> Result<UniversalSchematic, Box<dyn std::
120
121
  for (key, val) in states.iter() {
121
122
  let val_str = match val {
122
123
  NbtValue::Byte(b) => {
123
- if *b != 0 {
124
+ if *b == 1 {
124
125
  "true".to_string()
125
- } else {
126
+ } else if *b == 0 {
126
127
  "false".to_string()
128
+ } else {
129
+ b.to_string()
127
130
  }
128
131
  }
129
132
  NbtValue::Int(i) => i.to_string(),
@@ -150,55 +153,73 @@ pub fn from_mcstructure(data: &[u8]) -> Result<UniversalSchematic, Box<dyn std::
150
153
  }
151
154
  }
152
155
 
153
- // Parse Block Indices
156
+ // Construct Region
157
+ let mut region = Region::new("Main".to_string(), (0, 0, 0), (width, height, length));
158
+
159
+ // Parse Block Indices (Multi-layer support)
154
160
  let block_indices_list = match structure.get("block_indices") {
155
161
  Some(NbtValue::List(l)) => l,
156
162
  _ => return Err("Missing block_indices".into()),
157
163
  };
158
- let mut indices_iter = block_indices_list.iter();
159
- let primary_layer = indices_iter.next().ok_or("Missing primary layer")?;
160
-
161
- let indices: Vec<i32> = match primary_layer {
162
- NbtValue::List(list) => list
163
- .iter()
164
- .filter_map(|t| {
165
- if let NbtValue::Int(i) = t {
166
- Some(*i)
167
- } else {
168
- None
169
- }
170
- })
171
- .collect(),
172
- _ => return Err("Primary layer is not a list".into()),
173
- };
174
-
175
- // Construct Region
176
- let mut region = Region::new("Main".to_string(), (0, 0, 0), (width, height, length));
177
-
178
- // Set blocks
179
- // Indices are ZYX order: X outer, Y middle, Z inner
180
- // index = SZ*SY*X + SZ*Y + Z
181
-
182
- for (i, &palette_idx) in indices.iter().enumerate() {
183
- if palette_idx < 0 {
184
- continue;
185
- } // -1 is void/air-skip
186
-
187
- let i = i as i32;
188
- let sz = length;
189
- let sy = height;
190
164
 
191
- if sz == 0 || sy == 0 {
192
- continue;
193
- }
165
+ for layer in block_indices_list {
166
+ let indices: Vec<i32> = match layer {
167
+ NbtValue::List(list) => list
168
+ .iter()
169
+ .filter_map(|t| {
170
+ if let NbtValue::Int(i) = t {
171
+ Some(*i)
172
+ } else {
173
+ None
174
+ }
175
+ })
176
+ .collect(),
177
+ _ => continue,
178
+ };
179
+
180
+ // Set blocks
181
+ // Indices are ZYX order: X outer, Y middle, Z inner
182
+ // index = SZ*SY*X + SZ*Y + Z
183
+ for (i, &palette_idx) in indices.iter().enumerate() {
184
+ if palette_idx < 0 {
185
+ continue;
186
+ } // -1 is void/air-skip
187
+
188
+ let i = i as i32;
189
+ let sz = length;
190
+ let sy = height;
191
+
192
+ if sz == 0 || sy == 0 {
193
+ continue;
194
+ }
194
195
 
195
- let x = i / sz / sy;
196
- let y = (i / sz) % sy;
197
- let z = i % sz;
196
+ let x = i / sz / sy;
197
+ let y = (i / sz) % sy;
198
+ let z = i % sz;
199
+
200
+ if palette_idx < palette.len() as i32 {
201
+ let block = palette[palette_idx as usize].clone();
202
+
203
+ // Simple merge logic:
204
+ // If the block is water/lava and we already have a block here,
205
+ // try to set waterlogged=true instead of overwriting.
206
+ if (block.name == "minecraft:water" || block.name == "minecraft:flowing_water")
207
+ && region.get_block(x, y, z).is_some()
208
+ {
209
+ if let Some(existing_block) = region.get_block(x, y, z) {
210
+ if existing_block.name != "minecraft:air" {
211
+ let mut updated_block = existing_block.clone();
212
+ updated_block
213
+ .properties
214
+ .insert("waterlogged".to_string(), "true".to_string());
215
+ region.set_block(x, y, z, &updated_block);
216
+ continue;
217
+ }
218
+ }
219
+ }
198
220
 
199
- if palette_idx < palette.len() as i32 {
200
- let block = palette[palette_idx as usize].clone();
201
- region.set_block(x, y, z, &block);
221
+ region.set_block(x, y, z, &block);
222
+ }
202
223
  }
203
224
  }
204
225
 
@@ -226,6 +247,18 @@ pub fn from_mcstructure(data: &[u8]) -> Result<UniversalSchematic, Box<dyn std::
226
247
  be_nbt.insert("y".to_string(), NbtValue::Int(y));
227
248
  be_nbt.insert("z".to_string(), NbtValue::Int(z));
228
249
 
250
+ // Translate NBT using Blockpedia
251
+ let bp_nbt = to_bp_nbt(&NbtValue::Compound(be_nbt.clone()));
252
+ if let BpNbtValue::Compound(bp_map) = bp_nbt {
253
+ let translated_bp_map =
254
+ BlockEntityTranslator::translate_bedrock_to_java(&bp_map);
255
+ if let NbtValue::Compound(translated_map) =
256
+ from_bp_nbt(&BpNbtValue::Compound(translated_bp_map))
257
+ {
258
+ be_nbt = translated_map;
259
+ }
260
+ }
261
+
229
262
  // Extract ID and Pos for BlockEntity constructor
230
263
  let id = be_nbt
231
264
  .get("id")
@@ -268,6 +301,10 @@ pub fn from_mcstructure(data: &[u8]) -> Result<UniversalSchematic, Box<dyn std::
268
301
 
269
302
  let mut schematic = UniversalSchematic::new("Unnamed".to_string());
270
303
  schematic.add_region(region);
304
+
305
+ // Post-fix redstone connectivity
306
+ schematic.fix_redstone_connectivity();
307
+
271
308
  Ok(schematic)
272
309
  }
273
310
 
@@ -433,3 +470,49 @@ pub fn to_mcstructure(
433
470
 
434
471
  Ok(cursor.into_inner())
435
472
  }
473
+
474
+ fn to_bp_nbt(val: &NbtValue) -> BpNbtValue {
475
+ match val {
476
+ NbtValue::Byte(v) => BpNbtValue::Byte(*v),
477
+ NbtValue::Short(v) => BpNbtValue::Short(*v),
478
+ NbtValue::Int(v) => BpNbtValue::Int(*v),
479
+ NbtValue::Long(v) => BpNbtValue::Long(*v),
480
+ NbtValue::Float(v) => BpNbtValue::Float(*v),
481
+ NbtValue::Double(v) => BpNbtValue::Double(*v),
482
+ NbtValue::String(v) => BpNbtValue::String(v.clone()),
483
+ NbtValue::ByteArray(v) => BpNbtValue::ByteArray(v.clone()),
484
+ NbtValue::IntArray(v) => BpNbtValue::IntArray(v.clone()),
485
+ NbtValue::LongArray(v) => BpNbtValue::LongArray(v.clone()),
486
+ NbtValue::List(v) => BpNbtValue::List(v.iter().map(to_bp_nbt).collect()),
487
+ NbtValue::Compound(v) => {
488
+ let mut map = HashMap::new();
489
+ for (k, val) in v.iter() {
490
+ map.insert(k.clone(), to_bp_nbt(val));
491
+ }
492
+ BpNbtValue::Compound(map)
493
+ }
494
+ }
495
+ }
496
+
497
+ fn from_bp_nbt(val: &BpNbtValue) -> NbtValue {
498
+ match val {
499
+ BpNbtValue::Byte(v) => NbtValue::Byte(*v),
500
+ BpNbtValue::Short(v) => NbtValue::Short(*v),
501
+ BpNbtValue::Int(v) => NbtValue::Int(*v),
502
+ BpNbtValue::Long(v) => NbtValue::Long(*v),
503
+ BpNbtValue::Float(v) => NbtValue::Float(*v),
504
+ BpNbtValue::Double(v) => NbtValue::Double(*v),
505
+ BpNbtValue::String(v) => NbtValue::String(v.clone()),
506
+ BpNbtValue::ByteArray(v) => NbtValue::ByteArray(v.clone()),
507
+ BpNbtValue::IntArray(v) => NbtValue::IntArray(v.clone()),
508
+ BpNbtValue::LongArray(v) => NbtValue::LongArray(v.clone()),
509
+ BpNbtValue::List(v) => NbtValue::List(v.iter().map(from_bp_nbt).collect()),
510
+ BpNbtValue::Compound(v) => {
511
+ let mut map = NbtMap::new();
512
+ for (k, val) in v {
513
+ map.insert(k.clone(), from_bp_nbt(val));
514
+ }
515
+ NbtValue::Compound(map)
516
+ }
517
+ }
518
+ }
@@ -896,7 +896,7 @@ mod tests {
896
896
  let schem_data =
897
897
  fs::read(schem_path).expect(format!("Failed to read {}", input_path_str).as_str());
898
898
 
899
- let mut schematic = from_schematic(&schem_data).expect("Failed to parse schematic");
899
+ let schematic = from_schematic(&schem_data).expect("Failed to parse schematic");
900
900
  assert_eq!(schematic.metadata.name, Some("Unnamed".to_string()));
901
901
  }
902
902
 
@@ -1282,7 +1282,7 @@ mod tests {
1282
1282
  for i in 1..=16 {
1283
1283
  palette.push(BlockState::new(format!("minecraft:wool{}", i)));
1284
1284
  }
1285
- let mut region = Region {
1285
+ let region = Region {
1286
1286
  name: "Test".to_string(),
1287
1287
  position: (0, 0, 0),
1288
1288
  size: (16, 1, 1),
@@ -1715,7 +1715,7 @@ mod tests {
1715
1715
  fn test_coords_to_index() {
1716
1716
  let mut region = Region::new("Test".to_string(), (0, 0, 0), (2, 2, 2));
1717
1717
 
1718
- let mut volume1 = region.volume();
1718
+ let volume1 = region.volume();
1719
1719
  for i in 0..8 {
1720
1720
  let coords = region.index_to_coords(i);
1721
1721
  let index = region.coords_to_index(coords.0, coords.1, coords.2);
@@ -1725,7 +1725,7 @@ mod tests {
1725
1725
 
1726
1726
  let region2 = Region::new("Test".to_string(), (0, 0, 0), (-2, -2, -2));
1727
1727
 
1728
- let mut volume2 = region2.volume();
1728
+ let volume2 = region2.volume();
1729
1729
  for i in 0..8 {
1730
1730
  let coords = region2.index_to_coords(i);
1731
1731
  let index = region2.coords_to_index(coords.0, coords.1, coords.2);
@@ -1735,7 +1735,7 @@ mod tests {
1735
1735
 
1736
1736
  region.merge(&region2);
1737
1737
 
1738
- let mut volume3 = region.volume();
1738
+ let volume3 = region.volume();
1739
1739
  for i in 0..27 {
1740
1740
  let coords = region.index_to_coords(i);
1741
1741
  let index = region.coords_to_index(coords.0, coords.1, coords.2);
@@ -567,6 +567,150 @@ impl UniversalSchematic {
567
567
  }
568
568
  }
569
569
 
570
+ pub fn fix_redstone_connectivity(&mut self) {
571
+ let regions: Vec<String> = self.get_all_regions().keys().cloned().collect();
572
+ for region_name in regions {
573
+ self.fix_redstone_connectivity_for_region(&region_name);
574
+ }
575
+ }
576
+
577
+ pub fn fix_redstone_connectivity_for_region(&mut self, region_name: &str) {
578
+ let (min, max) = {
579
+ let region = match self.get_region(region_name) {
580
+ Some(r) => r,
581
+ None => return,
582
+ };
583
+ let (width, height, length) = region.size;
584
+ let (pos_x, pos_y, pos_z) = region.position;
585
+ (
586
+ (pos_x, pos_y, pos_z),
587
+ (pos_x + width, pos_y + height, pos_z + length),
588
+ )
589
+ };
590
+
591
+ for y in min.1..max.1 {
592
+ for x in min.0..max.0 {
593
+ for z in min.2..max.2 {
594
+ let block = match self.get_block_from_region(region_name, x, y, z) {
595
+ Some(b) if b.name == "minecraft:redstone_wire" => b.clone(),
596
+ _ => continue,
597
+ };
598
+
599
+ let mut new_block = block.clone();
600
+ let directions = [
601
+ ("north", 0, -1),
602
+ ("south", 0, 1),
603
+ ("east", 1, 0),
604
+ ("west", -1, 0),
605
+ ];
606
+
607
+ let mut connection_states = Vec::new();
608
+ let mut connected_count = 0;
609
+
610
+ for (dir, dx, dz) in directions {
611
+ let side_val = if self.should_connect_redstone(region_name, x, y, z, dx, dz)
612
+ {
613
+ "side"
614
+ } else if self.should_connect_redstone_up(region_name, x, y, z, dx, dz) {
615
+ "up"
616
+ } else {
617
+ "none"
618
+ };
619
+
620
+ if side_val != "none" {
621
+ connected_count += 1;
622
+ }
623
+ connection_states.push((dir, side_val.to_string()));
624
+ }
625
+
626
+ // Fix single connection issue: if only 1 connected, opposite becomes side
627
+ if connected_count == 1 {
628
+ // Find the connected one
629
+ if let Some(idx) =
630
+ connection_states.iter().position(|(_, val)| val != "none")
631
+ {
632
+ // 0=north, 1=south, 2=east, 3=west
633
+ // Opposites: 0<->1, 2<->3
634
+ let opposite_idx = match idx {
635
+ 0 => 1,
636
+ 1 => 0,
637
+ 2 => 3,
638
+ 3 => 2,
639
+ _ => unreachable!(),
640
+ };
641
+
642
+ // Force opposite to be "side"
643
+ connection_states[opposite_idx].1 = "side".to_string();
644
+ }
645
+ }
646
+
647
+ for (dir, val) in connection_states {
648
+ new_block.properties.insert(dir.to_string(), val);
649
+ }
650
+
651
+ self.set_block_in_region(region_name, x, y, z, &new_block);
652
+ }
653
+ }
654
+ }
655
+ }
656
+
657
+ fn should_connect_redstone(
658
+ &self,
659
+ region_name: &str,
660
+ x: i32,
661
+ y: i32,
662
+ z: i32,
663
+ dx: i32,
664
+ dz: i32,
665
+ ) -> bool {
666
+ // Same level
667
+ if let Some(neighbor) = self.get_block_from_region(region_name, x + dx, y, z + dz) {
668
+ if is_redstone_connectable(neighbor) {
669
+ return true;
670
+ }
671
+ }
672
+ // One level down
673
+ if let Some(neighbor_down) = self.get_block_from_region(region_name, x + dx, y - 1, z + dz)
674
+ {
675
+ if neighbor_down.name == "minecraft:redstone_wire" {
676
+ // Only if the block above neighbor_down is air or non-opaque
677
+ if let Some(above_neighbor_down) =
678
+ self.get_block_from_region(region_name, x + dx, y, z + dz)
679
+ {
680
+ if !is_opaque(above_neighbor_down) {
681
+ return true;
682
+ }
683
+ }
684
+ }
685
+ }
686
+ false
687
+ }
688
+
689
+ fn should_connect_redstone_up(
690
+ &self,
691
+ region_name: &str,
692
+ x: i32,
693
+ y: i32,
694
+ z: i32,
695
+ dx: i32,
696
+ dz: i32,
697
+ ) -> bool {
698
+ // One level up
699
+ // Only if the block above the current wire is not opaque
700
+ if let Some(above_current) = self.get_block_from_region(region_name, x, y + 1, z) {
701
+ if is_opaque(above_current) {
702
+ return false;
703
+ }
704
+ }
705
+
706
+ if let Some(neighbor_up) = self.get_block_from_region(region_name, x + dx, y + 1, z + dz) {
707
+ if neighbor_up.name == "minecraft:redstone_wire" {
708
+ return true;
709
+ }
710
+ }
711
+ false
712
+ }
713
+
570
714
  pub fn get_merged_region(&self) -> Region {
571
715
  let mut merged_region = self.default_region.clone();
572
716
 
@@ -1958,6 +2102,40 @@ impl UniversalSchematic {
1958
2102
  }
1959
2103
  }
1960
2104
 
2105
+ pub fn is_redstone_connectable(block: &BlockState) -> bool {
2106
+ let name = block.name.as_str();
2107
+ name == "minecraft:redstone_wire"
2108
+ || name == "minecraft:repeater"
2109
+ || name == "minecraft:comparator"
2110
+ || name == "minecraft:observer"
2111
+ || name == "minecraft:target"
2112
+ }
2113
+
2114
+ pub fn is_opaque(block: &BlockState) -> bool {
2115
+ let name = block.name.as_str();
2116
+ // Simplified opaque check - most common non-opaque blocks
2117
+ !(name == "minecraft:air"
2118
+ || name == "minecraft:cave_air"
2119
+ || name == "minecraft:void_air"
2120
+ || name.contains("glass")
2121
+ || name.contains("slab")
2122
+ || name.contains("stairs")
2123
+ || name.contains("fence")
2124
+ || name.contains("wall")
2125
+ || name.contains("iron_bars")
2126
+ || name.contains("door")
2127
+ || name.contains("trapdoor")
2128
+ || name.contains("torch")
2129
+ || name.contains("button")
2130
+ || name.contains("pressure_plate")
2131
+ || name.contains("sign")
2132
+ || name == "minecraft:redstone_wire"
2133
+ || name == "minecraft:repeater"
2134
+ || name == "minecraft:comparator"
2135
+ || name == "minecraft:lever"
2136
+ || name == "minecraft:hopper")
2137
+ }
2138
+
1961
2139
  #[cfg(test)]
1962
2140
  mod tests {
1963
2141
  use super::*;
Binary file