nucleation 0.10.21 → 0.10.23

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 (314) hide show
  1. package/BlockPos.mjs +1 -0
  2. package/Dimensions.mjs +1 -0
  3. package/FieldRange.mjs +1 -0
  4. package/ItemScale.mjs +1 -0
  5. package/MeshBounds.mjs +1 -0
  6. package/MeshProgress.mjs +1 -0
  7. package/README.md +12 -0
  8. package/RegionBounds.mjs +1 -0
  9. package/Schematic.d.mts +32 -0
  10. package/Schematic.d.ts +32 -0
  11. package/Schematic.mjs +100 -0
  12. package/SdfBounds.mjs +1 -0
  13. package/SdfNormal.mjs +1 -0
  14. package/TextureInfo.mjs +1 -0
  15. package/diplomat-runtime.mjs +19 -14
  16. package/nucleation.wasm +0 -0
  17. package/package.json +7 -2
  18. package/renderer/AnimationEffect.d.mts +44 -0
  19. package/renderer/AnimationEffect.d.ts +44 -0
  20. package/renderer/AnimationEffect.mjs +204 -0
  21. package/renderer/Autostack.d.mts +43 -0
  22. package/renderer/Autostack.d.ts +43 -0
  23. package/renderer/Autostack.mjs +134 -0
  24. package/renderer/BlockPos.d.mts +28 -0
  25. package/renderer/BlockPos.d.ts +28 -0
  26. package/renderer/BlockPos.mjs +130 -0
  27. package/renderer/BlockState.d.mts +39 -0
  28. package/renderer/BlockState.d.ts +39 -0
  29. package/renderer/BlockState.mjs +134 -0
  30. package/renderer/Blocks.d.mts +91 -0
  31. package/renderer/Blocks.d.ts +91 -0
  32. package/renderer/Blocks.mjs +308 -0
  33. package/renderer/Brush.d.mts +99 -0
  34. package/renderer/Brush.d.ts +99 -0
  35. package/renderer/Brush.mjs +335 -0
  36. package/renderer/BuildAnimation.d.mts +179 -0
  37. package/renderer/BuildAnimation.d.ts +179 -0
  38. package/renderer/BuildAnimation.mjs +1148 -0
  39. package/renderer/BuildingTool.d.mts +46 -0
  40. package/renderer/BuildingTool.d.ts +46 -0
  41. package/renderer/BuildingTool.mjs +121 -0
  42. package/renderer/CellExecutor.d.mts +51 -0
  43. package/renderer/CellExecutor.d.ts +51 -0
  44. package/renderer/CellExecutor.mjs +171 -0
  45. package/renderer/CellularSdfConfig.d.mts +22 -0
  46. package/renderer/CellularSdfConfig.d.ts +22 -0
  47. package/renderer/CellularSdfConfig.mjs +69 -0
  48. package/renderer/ChunkMeshResult.d.mts +75 -0
  49. package/renderer/ChunkMeshResult.d.ts +75 -0
  50. package/renderer/ChunkMeshResult.mjs +253 -0
  51. package/renderer/CircuitBuilder.d.mts +118 -0
  52. package/renderer/CircuitBuilder.d.ts +118 -0
  53. package/renderer/CircuitBuilder.mjs +516 -0
  54. package/renderer/Curve3D.d.mts +27 -0
  55. package/renderer/Curve3D.d.ts +27 -0
  56. package/renderer/Curve3D.mjs +101 -0
  57. package/renderer/DefinitionRegion.d.mts +274 -0
  58. package/renderer/DefinitionRegion.d.ts +274 -0
  59. package/renderer/DefinitionRegion.mjs +973 -0
  60. package/renderer/Design.d.mts +348 -0
  61. package/renderer/Design.d.ts +348 -0
  62. package/renderer/Design.mjs +1334 -0
  63. package/renderer/Diff.d.mts +88 -0
  64. package/renderer/Diff.d.ts +88 -0
  65. package/renderer/Diff.mjs +316 -0
  66. package/renderer/Dimensions.d.mts +28 -0
  67. package/renderer/Dimensions.d.ts +28 -0
  68. package/renderer/Dimensions.mjs +130 -0
  69. package/renderer/DistanceField.d.mts +39 -0
  70. package/renderer/DistanceField.d.ts +39 -0
  71. package/renderer/DistanceField.mjs +114 -0
  72. package/renderer/ExecutionMode.d.mts +42 -0
  73. package/renderer/ExecutionMode.d.ts +42 -0
  74. package/renderer/ExecutionMode.mjs +127 -0
  75. package/renderer/Field3.d.mts +40 -0
  76. package/renderer/Field3.d.ts +40 -0
  77. package/renderer/Field3.mjs +160 -0
  78. package/renderer/FieldProgram.d.mts +40 -0
  79. package/renderer/FieldProgram.d.ts +40 -0
  80. package/renderer/FieldProgram.mjs +167 -0
  81. package/renderer/FieldProgramBinaryOp.d.mts +42 -0
  82. package/renderer/FieldProgramBinaryOp.d.ts +42 -0
  83. package/renderer/FieldProgramBinaryOp.mjs +118 -0
  84. package/renderer/FieldProgramBuilder.d.mts +104 -0
  85. package/renderer/FieldProgramBuilder.d.ts +104 -0
  86. package/renderer/FieldProgramBuilder.mjs +486 -0
  87. package/renderer/FieldProgramDistanceKind.d.mts +26 -0
  88. package/renderer/FieldProgramDistanceKind.d.ts +26 -0
  89. package/renderer/FieldProgramDistanceKind.mjs +78 -0
  90. package/renderer/FieldProgramUnaryOp.d.mts +34 -0
  91. package/renderer/FieldProgramUnaryOp.d.ts +34 -0
  92. package/renderer/FieldProgramUnaryOp.mjs +102 -0
  93. package/renderer/FieldProgramValueType.d.mts +25 -0
  94. package/renderer/FieldProgramValueType.d.ts +25 -0
  95. package/renderer/FieldProgramValueType.mjs +75 -0
  96. package/renderer/FieldRange.d.mts +15 -0
  97. package/renderer/FieldRange.d.ts +15 -0
  98. package/renderer/FieldRange.mjs +109 -0
  99. package/renderer/Fingerprint.d.mts +44 -0
  100. package/renderer/Fingerprint.d.ts +44 -0
  101. package/renderer/Fingerprint.mjs +197 -0
  102. package/renderer/GeneratedChunk.d.mts +35 -0
  103. package/renderer/GeneratedChunk.d.ts +35 -0
  104. package/renderer/GeneratedChunk.mjs +178 -0
  105. package/renderer/GeneratedChunkCoverage.d.mts +25 -0
  106. package/renderer/GeneratedChunkCoverage.d.ts +25 -0
  107. package/renderer/GeneratedChunkCoverage.mjs +75 -0
  108. package/renderer/GeneratedChunkOverlayMode.d.mts +24 -0
  109. package/renderer/GeneratedChunkOverlayMode.d.ts +24 -0
  110. package/renderer/GeneratedChunkOverlayMode.mjs +72 -0
  111. package/renderer/GeneratedWorldStream.d.mts +28 -0
  112. package/renderer/GeneratedWorldStream.d.ts +28 -0
  113. package/renderer/GeneratedWorldStream.mjs +86 -0
  114. package/renderer/Geo.d.mts +41 -0
  115. package/renderer/Geo.d.ts +41 -0
  116. package/renderer/Geo.mjs +121 -0
  117. package/renderer/Hdl.d.mts +56 -0
  118. package/renderer/Hdl.d.ts +56 -0
  119. package/renderer/Hdl.mjs +163 -0
  120. package/renderer/InterpolationSpace.d.mts +25 -0
  121. package/renderer/InterpolationSpace.d.ts +25 -0
  122. package/renderer/InterpolationSpace.mjs +73 -0
  123. package/renderer/IoLayout.d.mts +26 -0
  124. package/renderer/IoLayout.d.ts +26 -0
  125. package/renderer/IoLayout.mjs +81 -0
  126. package/renderer/IoLayoutBuilder.d.mts +73 -0
  127. package/renderer/IoLayoutBuilder.d.ts +73 -0
  128. package/renderer/IoLayoutBuilder.mjs +315 -0
  129. package/renderer/IoType.d.mts +41 -0
  130. package/renderer/IoType.d.ts +41 -0
  131. package/renderer/IoType.mjs +125 -0
  132. package/renderer/ItemModelConfig.d.mts +65 -0
  133. package/renderer/ItemModelConfig.d.ts +65 -0
  134. package/renderer/ItemModelConfig.mjs +223 -0
  135. package/renderer/ItemModelPackBuilder.d.mts +32 -0
  136. package/renderer/ItemModelPackBuilder.d.ts +32 -0
  137. package/renderer/ItemModelPackBuilder.mjs +104 -0
  138. package/renderer/ItemModelResult.d.mts +72 -0
  139. package/renderer/ItemModelResult.d.ts +72 -0
  140. package/renderer/ItemModelResult.mjs +268 -0
  141. package/renderer/ItemScale.d.mts +31 -0
  142. package/renderer/ItemScale.d.ts +31 -0
  143. package/renderer/ItemScale.mjs +133 -0
  144. package/renderer/LayoutFunction.d.mts +52 -0
  145. package/renderer/LayoutFunction.d.ts +52 -0
  146. package/renderer/LayoutFunction.mjs +159 -0
  147. package/renderer/MchprsWorld.d.mts +131 -0
  148. package/renderer/MchprsWorld.d.ts +131 -0
  149. package/renderer/MchprsWorld.mjs +423 -0
  150. package/renderer/MeshBounds.d.mts +40 -0
  151. package/renderer/MeshBounds.d.ts +40 -0
  152. package/renderer/MeshBounds.mjs +181 -0
  153. package/renderer/MeshConfig.d.mts +101 -0
  154. package/renderer/MeshConfig.d.ts +101 -0
  155. package/renderer/MeshConfig.mjs +306 -0
  156. package/renderer/MeshJob.d.mts +44 -0
  157. package/renderer/MeshJob.d.ts +44 -0
  158. package/renderer/MeshJob.mjs +116 -0
  159. package/renderer/MeshPhase.d.mts +38 -0
  160. package/renderer/MeshPhase.d.ts +38 -0
  161. package/renderer/MeshPhase.mjs +90 -0
  162. package/renderer/MeshProgress.d.mts +32 -0
  163. package/renderer/MeshProgress.d.ts +32 -0
  164. package/renderer/MeshProgress.mjs +134 -0
  165. package/renderer/MeshResult.d.mts +76 -0
  166. package/renderer/MeshResult.d.ts +76 -0
  167. package/renderer/MeshResult.mjs +269 -0
  168. package/renderer/MultiMeshResult.d.mts +50 -0
  169. package/renderer/MultiMeshResult.d.ts +50 -0
  170. package/renderer/MultiMeshResult.mjs +166 -0
  171. package/renderer/Nbt.d.mts +50 -0
  172. package/renderer/Nbt.d.ts +50 -0
  173. package/renderer/Nbt.mjs +161 -0
  174. package/renderer/NucleationError.d.mts +53 -0
  175. package/renderer/NucleationError.d.ts +53 -0
  176. package/renderer/NucleationError.mjs +136 -0
  177. package/renderer/OutputCondition.d.mts +45 -0
  178. package/renderer/OutputCondition.d.ts +45 -0
  179. package/renderer/OutputCondition.mjs +129 -0
  180. package/renderer/Palette.d.mts +157 -0
  181. package/renderer/Palette.d.ts +157 -0
  182. package/renderer/Palette.mjs +487 -0
  183. package/renderer/PaletteBuilder.d.mts +119 -0
  184. package/renderer/PaletteBuilder.d.ts +119 -0
  185. package/renderer/PaletteBuilder.mjs +457 -0
  186. package/renderer/README.md +67 -0
  187. package/renderer/RawMeshExport.d.mts +74 -0
  188. package/renderer/RawMeshExport.d.ts +74 -0
  189. package/renderer/RawMeshExport.mjs +243 -0
  190. package/renderer/RedstoneGraph.d.mts +58 -0
  191. package/renderer/RedstoneGraph.d.ts +58 -0
  192. package/renderer/RedstoneGraph.mjs +242 -0
  193. package/renderer/RegionBounds.d.mts +41 -0
  194. package/renderer/RegionBounds.d.ts +41 -0
  195. package/renderer/RegionBounds.mjs +182 -0
  196. package/renderer/RenderConfig.d.mts +101 -0
  197. package/renderer/RenderConfig.d.ts +101 -0
  198. package/renderer/RenderConfig.mjs +271 -0
  199. package/renderer/Renderer.d.mts +51 -0
  200. package/renderer/Renderer.d.ts +51 -0
  201. package/renderer/Renderer.mjs +219 -0
  202. package/renderer/ResourcePack.d.mts +105 -0
  203. package/renderer/ResourcePack.d.ts +105 -0
  204. package/renderer/ResourcePack.mjs +447 -0
  205. package/renderer/ResourcePackList.d.mts +32 -0
  206. package/renderer/ResourcePackList.d.ts +32 -0
  207. package/renderer/ResourcePackList.mjs +96 -0
  208. package/renderer/Routing.d.mts +66 -0
  209. package/renderer/Routing.d.ts +66 -0
  210. package/renderer/Routing.mjs +220 -0
  211. package/renderer/Schematic.d.mts +977 -0
  212. package/renderer/Schematic.d.ts +977 -0
  213. package/renderer/Schematic.mjs +3820 -0
  214. package/renderer/SchematicBuilder.d.mts +103 -0
  215. package/renderer/SchematicBuilder.d.ts +103 -0
  216. package/renderer/SchematicBuilder.mjs +401 -0
  217. package/renderer/SchematicRegions.d.mts +93 -0
  218. package/renderer/SchematicRegions.d.ts +93 -0
  219. package/renderer/SchematicRegions.mjs +411 -0
  220. package/renderer/SchematicSplitResult.d.mts +26 -0
  221. package/renderer/SchematicSplitResult.d.ts +26 -0
  222. package/renderer/SchematicSplitResult.mjs +84 -0
  223. package/renderer/Scripting.d.mts +40 -0
  224. package/renderer/Scripting.d.ts +40 -0
  225. package/renderer/Scripting.mjs +138 -0
  226. package/renderer/Sdf.d.mts +234 -0
  227. package/renderer/Sdf.d.ts +234 -0
  228. package/renderer/Sdf.mjs +1234 -0
  229. package/renderer/SdfAxis.d.mts +25 -0
  230. package/renderer/SdfAxis.d.ts +25 -0
  231. package/renderer/SdfAxis.mjs +75 -0
  232. package/renderer/SdfBounds.d.mts +19 -0
  233. package/renderer/SdfBounds.d.ts +19 -0
  234. package/renderer/SdfBounds.mjs +161 -0
  235. package/renderer/SdfCellMode.d.mts +26 -0
  236. package/renderer/SdfCellMode.d.ts +26 -0
  237. package/renderer/SdfCellMode.mjs +78 -0
  238. package/renderer/SdfNormal.d.mts +16 -0
  239. package/renderer/SdfNormal.d.ts +16 -0
  240. package/renderer/SdfNormal.mjs +122 -0
  241. package/renderer/Shape.d.mts +143 -0
  242. package/renderer/Shape.d.ts +143 -0
  243. package/renderer/Shape.mjs +458 -0
  244. package/renderer/SortStrategy.d.mts +86 -0
  245. package/renderer/SortStrategy.d.ts +86 -0
  246. package/renderer/SortStrategy.mjs +272 -0
  247. package/renderer/Store.d.mts +83 -0
  248. package/renderer/Store.d.ts +83 -0
  249. package/renderer/Store.mjs +369 -0
  250. package/renderer/StoreIo.d.mts +71 -0
  251. package/renderer/StoreIo.d.ts +71 -0
  252. package/renderer/StoreIo.mjs +292 -0
  253. package/renderer/TextureAtlas.d.mts +40 -0
  254. package/renderer/TextureAtlas.d.ts +40 -0
  255. package/renderer/TextureAtlas.mjs +122 -0
  256. package/renderer/TextureInfo.d.mts +34 -0
  257. package/renderer/TextureInfo.d.ts +34 -0
  258. package/renderer/TextureInfo.mjs +149 -0
  259. package/renderer/TickSettleMode.d.mts +34 -0
  260. package/renderer/TickSettleMode.d.ts +34 -0
  261. package/renderer/TickSettleMode.mjs +84 -0
  262. package/renderer/TickSimulation.d.mts +572 -0
  263. package/renderer/TickSimulation.d.ts +572 -0
  264. package/renderer/TickSimulation.mjs +1299 -0
  265. package/renderer/TypedCircuitExecutor.d.mts +101 -0
  266. package/renderer/TypedCircuitExecutor.d.ts +101 -0
  267. package/renderer/TypedCircuitExecutor.mjs +378 -0
  268. package/renderer/Value.d.mts +73 -0
  269. package/renderer/Value.d.ts +73 -0
  270. package/renderer/Value.mjs +275 -0
  271. package/renderer/VideoConfig.d.mts +15 -0
  272. package/renderer/VideoConfig.d.ts +15 -0
  273. package/renderer/VideoConfig.mjs +44 -0
  274. package/renderer/VoxelModel.d.mts +34 -0
  275. package/renderer/VoxelModel.d.ts +34 -0
  276. package/renderer/VoxelModel.mjs +113 -0
  277. package/renderer/Voxelizer.d.mts +80 -0
  278. package/renderer/Voxelizer.d.ts +80 -0
  279. package/renderer/Voxelizer.mjs +261 -0
  280. package/renderer/WorldChunkView.d.mts +75 -0
  281. package/renderer/WorldChunkView.d.ts +75 -0
  282. package/renderer/WorldChunkView.mjs +224 -0
  283. package/renderer/WorldGenerator.d.mts +75 -0
  284. package/renderer/WorldGenerator.d.ts +75 -0
  285. package/renderer/WorldGenerator.mjs +255 -0
  286. package/renderer/WorldSink.d.mts +50 -0
  287. package/renderer/WorldSink.d.ts +50 -0
  288. package/renderer/WorldSink.mjs +177 -0
  289. package/renderer/WorldStream.d.mts +45 -0
  290. package/renderer/WorldStream.d.ts +45 -0
  291. package/renderer/WorldStream.mjs +184 -0
  292. package/renderer/WsPartitionHints.d.mts +29 -0
  293. package/renderer/WsPartitionHints.d.ts +29 -0
  294. package/renderer/WsPartitionHints.mjs +102 -0
  295. package/renderer/WsProfile.d.mts +46 -0
  296. package/renderer/WsProfile.d.ts +46 -0
  297. package/renderer/WsProfile.mjs +152 -0
  298. package/renderer/WsRunResult.d.mts +83 -0
  299. package/renderer/WsRunResult.d.ts +83 -0
  300. package/renderer/WsRunResult.mjs +326 -0
  301. package/renderer/WsSegmentJob.d.mts +28 -0
  302. package/renderer/WsSegmentJob.d.ts +28 -0
  303. package/renderer/WsSegmentJob.mjs +81 -0
  304. package/renderer/diplomat-runtime.d.mts +15 -0
  305. package/renderer/diplomat-runtime.d.ts +15 -0
  306. package/renderer/diplomat-runtime.mjs +779 -0
  307. package/renderer/diplomat-wasm.mjs +52 -0
  308. package/renderer/diplomat.config.mjs +5 -0
  309. package/renderer/index.d.mts +193 -0
  310. package/renderer/index.d.ts +193 -0
  311. package/renderer/index.mjs +196 -0
  312. package/renderer/nucleation.wasm +0 -0
  313. package/renderer/veneer/design.d.ts +167 -0
  314. package/renderer/veneer/design.mjs +480 -0
@@ -0,0 +1,487 @@
1
+ // generated by diplomat-tool
2
+ import { NucleationError } from "./NucleationError.mjs"
3
+ import wasm from "./diplomat-wasm.mjs";
4
+ import * as diplomatRuntime from "./diplomat-runtime.mjs";
5
+
6
+ const Palette_box_destroy_registry = new FinalizationRegistry((ptr) => {
7
+ wasm.Palette_destroy(ptr);
8
+ });
9
+
10
+ /**
11
+ * A set of colored blocks that color/gradient brushes snap their computed
12
+ * colors to (nearest neighbor in Oklab space). Wraps an Arc'd
13
+ * {@link crate::building::BlockPalette}; sharing one palette across many
14
+ * brushes is cheap.
15
+ */
16
+ export class Palette {
17
+ // Internal ptr reference:
18
+ #ptr = null;
19
+
20
+ // Lifetimes are only to keep dependencies alive.
21
+ // Since JS won't garbage collect until there are no incoming edges.
22
+ #selfEdge = [];
23
+
24
+ #internalConstructor(symbol, ptr, selfEdge) {
25
+ if (symbol !== diplomatRuntime.internalConstructor) {
26
+ console.error("Palette is an Opaque type. You cannot call its constructor.");
27
+ return;
28
+ }
29
+ this.#ptr = ptr;
30
+ this.#selfEdge = selfEdge;
31
+
32
+ // Are we being borrowed? If not, we can register.
33
+ if (this.#selfEdge.length === 0) {
34
+ Palette_box_destroy_registry.register(this, this.#ptr);
35
+ }
36
+
37
+ return this;
38
+ }
39
+ /** @internal */
40
+ get ffiValue() {
41
+ return this.#ptr;
42
+ }
43
+
44
+
45
+ /**
46
+ * Opaque building blocks and full glass blocks, for material-aware imports.
47
+ */
48
+ static materials() {
49
+
50
+ const result = wasm.Palette_materials();
51
+
52
+ try {
53
+ return new Palette(diplomatRuntime.internalConstructor, result, []);
54
+ }
55
+
56
+ finally {
57
+ diplomatRuntime.FUNCTION_PARAM_ALLOC.clean();
58
+ }
59
+ }
60
+
61
+ /**
62
+ * Keep only opaque blocks (`false`) or full glass blocks (`true`).
63
+ * Includes/excludes remain respected. Returns an empty palette when
64
+ * no suitable block exists; check `len()` before matching colours.
65
+ */
66
+ forMaterial(translucent) {
67
+
68
+ const result = wasm.Palette_for_material(this.ffiValue, translucent);
69
+
70
+ try {
71
+ return new Palette(diplomatRuntime.internalConstructor, result, []);
72
+ }
73
+
74
+ finally {
75
+ diplomatRuntime.FUNCTION_PARAM_ALLOC.clean();
76
+ }
77
+ }
78
+
79
+ /**
80
+ * Every block blockpedia knows a color for (the default palette
81
+ * brushes use when none is set).
82
+ */
83
+ static all() {
84
+
85
+ const result = wasm.Palette_all();
86
+
87
+ try {
88
+ return new Palette(diplomatRuntime.internalConstructor, result, []);
89
+ }
90
+
91
+ finally {
92
+ diplomatRuntime.FUNCTION_PARAM_ALLOC.clean();
93
+ }
94
+ }
95
+
96
+ /**
97
+ * Only solid blocks: no transparency, gravity, tile entities, or
98
+ * support requirements.
99
+ */
100
+ static solid() {
101
+
102
+ const result = wasm.Palette_solid();
103
+
104
+ try {
105
+ return new Palette(diplomatRuntime.internalConstructor, result, []);
106
+ }
107
+
108
+ finally {
109
+ diplomatRuntime.FUNCTION_PARAM_ALLOC.clean();
110
+ }
111
+ }
112
+
113
+ /**
114
+ * Conservative structural set (full building blocks).
115
+ */
116
+ static structural() {
117
+
118
+ const result = wasm.Palette_structural();
119
+
120
+ try {
121
+ return new Palette(diplomatRuntime.internalConstructor, result, []);
122
+ }
123
+
124
+ finally {
125
+ diplomatRuntime.FUNCTION_PARAM_ALLOC.clean();
126
+ }
127
+ }
128
+
129
+ /**
130
+ * Decorative set: allows stairs/slabs but no tile entities.
131
+ */
132
+ static decorative() {
133
+
134
+ const result = wasm.Palette_decorative();
135
+
136
+ try {
137
+ return new Palette(diplomatRuntime.internalConstructor, result, []);
138
+ }
139
+
140
+ finally {
141
+ diplomatRuntime.FUNCTION_PARAM_ALLOC.clean();
142
+ }
143
+ }
144
+
145
+ /**
146
+ * The 16 concrete colors (excludes concrete powder).
147
+ */
148
+ static concrete() {
149
+
150
+ const result = wasm.Palette_concrete();
151
+
152
+ try {
153
+ return new Palette(diplomatRuntime.internalConstructor, result, []);
154
+ }
155
+
156
+ finally {
157
+ diplomatRuntime.FUNCTION_PARAM_ALLOC.clean();
158
+ }
159
+ }
160
+
161
+ /**
162
+ * The 16 wool colors.
163
+ */
164
+ static wool() {
165
+
166
+ const result = wasm.Palette_wool();
167
+
168
+ try {
169
+ return new Palette(diplomatRuntime.internalConstructor, result, []);
170
+ }
171
+
172
+ finally {
173
+ diplomatRuntime.FUNCTION_PARAM_ALLOC.clean();
174
+ }
175
+ }
176
+
177
+ /**
178
+ * Terracotta colors (excludes glazed variants).
179
+ */
180
+ static terracotta() {
181
+
182
+ const result = wasm.Palette_terracotta();
183
+
184
+ try {
185
+ return new Palette(diplomatRuntime.internalConstructor, result, []);
186
+ }
187
+
188
+ finally {
189
+ diplomatRuntime.FUNCTION_PARAM_ALLOC.clean();
190
+ }
191
+ }
192
+
193
+ /**
194
+ * Genuinely gray blocks: opaque full cubes whose measured color
195
+ * is near-neutral (low Oklab chroma) — judged from color data,
196
+ * not names.
197
+ */
198
+ static grayscale() {
199
+
200
+ const result = wasm.Palette_grayscale();
201
+
202
+ try {
203
+ return new Palette(diplomatRuntime.internalConstructor, result, []);
204
+ }
205
+
206
+ finally {
207
+ diplomatRuntime.FUNCTION_PARAM_ALLOC.clean();
208
+ }
209
+ }
210
+
211
+ /**
212
+ * The planks family — a natural light→dark wood ramp.
213
+ */
214
+ static wood() {
215
+
216
+ const result = wasm.Palette_wood();
217
+
218
+ try {
219
+ return new Palette(diplomatRuntime.internalConstructor, result, []);
220
+ }
221
+
222
+ finally {
223
+ diplomatRuntime.FUNCTION_PARAM_ALLOC.clean();
224
+ }
225
+ }
226
+
227
+ /**
228
+ * A copy of this palette with ordered dithering enabled: brushes
229
+ * snapping through it alternate between the two nearest blocks per
230
+ * voxel (4x4 Bayer threshold, deterministic in position), which
231
+ * reads as intermediate shades at a distance — the classic map-art
232
+ * trick. Ramp and list queries are unaffected.
233
+ */
234
+ dithered() {
235
+
236
+ const result = wasm.Palette_dithered(this.ffiValue);
237
+
238
+ try {
239
+ return new Palette(diplomatRuntime.internalConstructor, result, []);
240
+ }
241
+
242
+ finally {
243
+ diplomatRuntime.FUNCTION_PARAM_ALLOC.clean();
244
+ }
245
+ }
246
+
247
+ /**
248
+ * A copy of this palette ordered by perceptual lightness (Oklab L,
249
+ * dark → light). Combined with `block_ids_json`, gives a
250
+ * ready-to-index ramp: `ids[i]` for intensity `i / (len - 1)`.
251
+ */
252
+ sortedByLightness() {
253
+
254
+ const result = wasm.Palette_sorted_by_lightness(this.ffiValue);
255
+
256
+ try {
257
+ return new Palette(diplomatRuntime.internalConstructor, result, []);
258
+ }
259
+
260
+ finally {
261
+ diplomatRuntime.FUNCTION_PARAM_ALLOC.clean();
262
+ }
263
+ }
264
+
265
+ /**
266
+ * JSON array of exactly `steps` DISTINCT block ids forming the
267
+ * smoothest ramp this palette can make from (`r1`,`g1`,`b1`) to
268
+ * (`r2`,`g2`,`b2`): targets are evenly spaced along the Oklab line
269
+ * and blocks are chosen by a minimum-cost monotonic matching, so
270
+ * off-hue blocks are penalized and no block repeats. Errors with
271
+ * `InvalidArgument` when the palette has fewer than `steps` blocks,
272
+ * `steps` is 0, or start equals end.
273
+ */
274
+ rampIdsJson(r1, g1, b1, r2, g2, b2, steps) {
275
+ const diplomatReceive = new diplomatRuntime.DiplomatReceiveBuf(wasm, 5, 4, true);
276
+
277
+ const write = new diplomatRuntime.DiplomatWriteBuf(wasm);
278
+
279
+
280
+ const result = wasm.Palette_ramp_ids_json(diplomatReceive.buffer, this.ffiValue, r1, g1, b1, r2, g2, b2, steps, write.buffer);
281
+
282
+ try {
283
+ if (!diplomatReceive.resultFlag) {
284
+ const cause = new NucleationError(diplomatRuntime.internalConstructor, diplomatRuntime.enumDiscriminant(wasm, diplomatReceive.buffer));
285
+ throw new globalThis.Error('NucleationError.' + cause.value, { cause });
286
+ }
287
+ return write.readString8();
288
+ }
289
+
290
+ finally {
291
+ diplomatRuntime.FUNCTION_PARAM_ALLOC.clean();
292
+ diplomatReceive.free();
293
+ write.free();
294
+ }
295
+ }
296
+
297
+ /**
298
+ * JSON array of exactly `steps` block ids sampling the color
299
+ * gradient from (`r1`,`g1`,`b1`) to (`r2`,`g2`,`b2`) in Oklab
300
+ * space, each step snapped to this palette's closest block. Built
301
+ * for value→block lookups (heatmaps, fractals): index the returned
302
+ * list by `intensity * (steps - 1)`. Entries may repeat on coarse
303
+ * palettes; errors with `NotFound` on an empty palette.
304
+ */
305
+ gradientIdsJson(r1, g1, b1, r2, g2, b2, steps) {
306
+ const diplomatReceive = new diplomatRuntime.DiplomatReceiveBuf(wasm, 5, 4, true);
307
+
308
+ const write = new diplomatRuntime.DiplomatWriteBuf(wasm);
309
+
310
+
311
+ const result = wasm.Palette_gradient_ids_json(diplomatReceive.buffer, this.ffiValue, r1, g1, b1, r2, g2, b2, steps, write.buffer);
312
+
313
+ try {
314
+ if (!diplomatReceive.resultFlag) {
315
+ const cause = new NucleationError(diplomatRuntime.internalConstructor, diplomatRuntime.enumDiscriminant(wasm, diplomatReceive.buffer));
316
+ throw new globalThis.Error('NucleationError.' + cause.value, { cause });
317
+ }
318
+ return write.readString8();
319
+ }
320
+
321
+ finally {
322
+ diplomatRuntime.FUNCTION_PARAM_ALLOC.clean();
323
+ diplomatReceive.free();
324
+ write.free();
325
+ }
326
+ }
327
+
328
+ /**
329
+ * JSON array of exactly `steps` block ids sampling an Oklab gradient
330
+ * whose endpoints are the measured texture colors of `start_block`
331
+ * and `end_block`. Errors with `NotFound` when either id is unknown
332
+ * or has no measured color, or when this palette is empty.
333
+ */
334
+ gradientIdsBetweenBlocksJson(startBlock, endBlock, steps) {
335
+ let functionCleanupArena = new diplomatRuntime.CleanupArena();
336
+
337
+ const startBlockSlice = functionCleanupArena.alloc(diplomatRuntime.DiplomatBuf.sliceWrapper(wasm, diplomatRuntime.DiplomatBuf.str8(wasm, startBlock)));
338
+ const endBlockSlice = functionCleanupArena.alloc(diplomatRuntime.DiplomatBuf.sliceWrapper(wasm, diplomatRuntime.DiplomatBuf.str8(wasm, endBlock)));
339
+ const diplomatReceive = new diplomatRuntime.DiplomatReceiveBuf(wasm, 5, 4, true);
340
+
341
+ const write = new diplomatRuntime.DiplomatWriteBuf(wasm);
342
+
343
+
344
+ const result = wasm.Palette_gradient_ids_between_blocks_json(diplomatReceive.buffer, this.ffiValue, startBlockSlice.ptr, endBlockSlice.ptr, steps, write.buffer);
345
+
346
+ try {
347
+ if (!diplomatReceive.resultFlag) {
348
+ const cause = new NucleationError(diplomatRuntime.internalConstructor, diplomatRuntime.enumDiscriminant(wasm, diplomatReceive.buffer));
349
+ throw new globalThis.Error('NucleationError.' + cause.value, { cause });
350
+ }
351
+ return write.readString8();
352
+ }
353
+
354
+ finally {
355
+ diplomatRuntime.FUNCTION_PARAM_ALLOC.clean();
356
+ functionCleanupArena.free();
357
+
358
+ diplomatReceive.free();
359
+ write.free();
360
+ }
361
+ }
362
+
363
+ /**
364
+ * Custom palette from a JSON array of block ids, e.g.
365
+ * `["minecraft:stone", "minecraft:oak_planks"]`. Ids blockpedia has
366
+ * no color for are silently skipped — check `len` afterwards.
367
+ */
368
+ static fromBlockIds(idsJson) {
369
+ let functionCleanupArena = new diplomatRuntime.CleanupArena();
370
+
371
+ const idsJsonSlice = functionCleanupArena.alloc(diplomatRuntime.DiplomatBuf.sliceWrapper(wasm, diplomatRuntime.DiplomatBuf.str8(wasm, idsJson)));
372
+ const diplomatReceive = new diplomatRuntime.DiplomatReceiveBuf(wasm, 5, 4, true);
373
+
374
+
375
+ const result = wasm.Palette_from_block_ids(diplomatReceive.buffer, idsJsonSlice.ptr);
376
+
377
+ try {
378
+ if (!diplomatReceive.resultFlag) {
379
+ const cause = new NucleationError(diplomatRuntime.internalConstructor, diplomatRuntime.enumDiscriminant(wasm, diplomatReceive.buffer));
380
+ throw new globalThis.Error('NucleationError.' + cause.value, { cause });
381
+ }
382
+ return new Palette(diplomatRuntime.internalConstructor, diplomatRuntime.ptrRead(wasm, diplomatReceive.buffer), []);
383
+ }
384
+
385
+ finally {
386
+ diplomatRuntime.FUNCTION_PARAM_ALLOC.clean();
387
+ functionCleanupArena.free();
388
+
389
+ diplomatReceive.free();
390
+ }
391
+ }
392
+
393
+ /**
394
+ * Number of blocks in the palette.
395
+ */
396
+ len() {
397
+
398
+ const result = wasm.Palette_len(this.ffiValue);
399
+
400
+ try {
401
+ return result;
402
+ }
403
+
404
+ finally {
405
+ diplomatRuntime.FUNCTION_PARAM_ALLOC.clean();
406
+ }
407
+ }
408
+
409
+ /**
410
+ * The palette's block ids as a JSON array string.
411
+ */
412
+ blockIdsJson() {
413
+ const write = new diplomatRuntime.DiplomatWriteBuf(wasm);
414
+
415
+ wasm.Palette_block_ids_json(this.ffiValue, write.buffer);
416
+
417
+ try {
418
+ return write.readString8();
419
+ }
420
+
421
+ finally {
422
+ diplomatRuntime.FUNCTION_PARAM_ALLOC.clean();
423
+ write.free();
424
+ }
425
+ }
426
+
427
+ /**
428
+ * Position-aware dithered snap: the block for the given RGB at
429
+ * voxel (x, y, z), alternating between the two nearest palette
430
+ * blocks per position (4x4 Bayer) — the per-pixel entry point for
431
+ * pixel art and image mapping. Deterministic. Errors with
432
+ * `NotFound` on an empty palette.
433
+ */
434
+ closestBlockDithered(r, g, b, x, y, z) {
435
+ const diplomatReceive = new diplomatRuntime.DiplomatReceiveBuf(wasm, 5, 4, true);
436
+
437
+ const write = new diplomatRuntime.DiplomatWriteBuf(wasm);
438
+
439
+
440
+ const result = wasm.Palette_closest_block_dithered(diplomatReceive.buffer, this.ffiValue, r, g, b, x, y, z, write.buffer);
441
+
442
+ try {
443
+ if (!diplomatReceive.resultFlag) {
444
+ const cause = new NucleationError(diplomatRuntime.internalConstructor, diplomatRuntime.enumDiscriminant(wasm, diplomatReceive.buffer));
445
+ throw new globalThis.Error('NucleationError.' + cause.value, { cause });
446
+ }
447
+ return write.readString8();
448
+ }
449
+
450
+ finally {
451
+ diplomatRuntime.FUNCTION_PARAM_ALLOC.clean();
452
+ diplomatReceive.free();
453
+ write.free();
454
+ }
455
+ }
456
+
457
+ /**
458
+ * The palette block whose color is closest (Oklab distance) to the
459
+ * given RGB. Errors with `NotFound` on an empty palette.
460
+ */
461
+ closestBlock(r, g, b) {
462
+ const diplomatReceive = new diplomatRuntime.DiplomatReceiveBuf(wasm, 5, 4, true);
463
+
464
+ const write = new diplomatRuntime.DiplomatWriteBuf(wasm);
465
+
466
+
467
+ const result = wasm.Palette_closest_block(diplomatReceive.buffer, this.ffiValue, r, g, b, write.buffer);
468
+
469
+ try {
470
+ if (!diplomatReceive.resultFlag) {
471
+ const cause = new NucleationError(diplomatRuntime.internalConstructor, diplomatRuntime.enumDiscriminant(wasm, diplomatReceive.buffer));
472
+ throw new globalThis.Error('NucleationError.' + cause.value, { cause });
473
+ }
474
+ return write.readString8();
475
+ }
476
+
477
+ finally {
478
+ diplomatRuntime.FUNCTION_PARAM_ALLOC.clean();
479
+ diplomatReceive.free();
480
+ write.free();
481
+ }
482
+ }
483
+
484
+ constructor(symbol, ptr, selfEdge) {
485
+ return this.#internalConstructor(...arguments)
486
+ }
487
+ }
@@ -0,0 +1,119 @@
1
+ // generated by diplomat-tool
2
+ import type { NucleationError } from "./NucleationError.mjs"
3
+ import type { Palette } from "./Palette.mjs"
4
+ import type { pointer, codepoint } from "./diplomat-runtime.d.ts";
5
+
6
+
7
+
8
+ /**
9
+ * Filter-driven palette construction (wraps
10
+ * {@link crate::building::PaletteBuilder}, which fronts blockpedia's
11
+ * `BlockFilter`). Call flag methods, then `build` — the builder is
12
+ * consumed; further calls error with `AlreadyConsumed`.
13
+ */
14
+ export class PaletteBuilder {
15
+ /** @internal */
16
+ get ffiValue(): pointer;
17
+ /** @internal */
18
+ constructor();
19
+
20
+
21
+ /**
22
+ * A builder matching every colored block (no filters yet).
23
+ */
24
+ static create(): PaletteBuilder;
25
+
26
+ /**
27
+ * Exclude gravity-affected blocks (sand, gravel, ...).
28
+ */
29
+ excludeFalling(): void;
30
+
31
+ /**
32
+ * Exclude blocks with block entities (chests, furnaces, ...).
33
+ */
34
+ excludeTileEntities(): void;
35
+
36
+ /**
37
+ * Keep only full cube blocks (no stairs, slabs, fences, ...).
38
+ * Metadata-driven: uses the official model geometry extracted from
39
+ * the vanilla jars, not block-name guessing.
40
+ */
41
+ fullBlocksOnly(): void;
42
+
43
+ /**
44
+ * Exclude blocks that need supporting blocks (torches, rails, ...).
45
+ */
46
+ excludeNeedsSupport(): void;
47
+
48
+ /**
49
+ * Exclude transparent/translucent blocks (glass, leaves, ...).
50
+ * Metadata-driven: uses the per-block transparency flag from the
51
+ * block-data pipeline, not block-name guessing.
52
+ */
53
+ excludeTransparent(): void;
54
+
55
+ /**
56
+ * Exclude light-emitting blocks (glowstone, lanterns, ...).
57
+ */
58
+ excludeLightSources(): void;
59
+
60
+ /**
61
+ * Keep only blocks obtainable in survival.
62
+ */
63
+ survivalOnly(): void;
64
+
65
+ /**
66
+ * Exclude blocks whose id contains `keyword`.
67
+ */
68
+ excludeKeyword(keyword: string): void;
69
+
70
+ /**
71
+ * Keep only blocks whose id contains `keyword` (repeatable; matches
72
+ * any of the included keywords).
73
+ */
74
+ includeKeyword(keyword: string): void;
75
+
76
+ /**
77
+ * Require the vanilla block tag `t` (`minecraft:wool` or short
78
+ * `wool`, nested paths like `mineable/pickaxe` too). Repeatable —
79
+ * a block must carry ALL required tags (AND semantics).
80
+ */
81
+ tag(t: string): void;
82
+
83
+ /**
84
+ * Exclude blocks carrying the vanilla block tag `t` (any listed
85
+ * tag disqualifies). Repeatable.
86
+ */
87
+ excludeTag(t: string): void;
88
+
89
+ /**
90
+ * Keep only blocks of the official definition kind `k`
91
+ * (`minecraft:stair` or short `stair`; plain full blocks are
92
+ * `minecraft:block`). Repeatable — a block matching ANY listed
93
+ * kind passes (OR semantics).
94
+ */
95
+ kind(k: string): void;
96
+
97
+ /**
98
+ * Keep only blocks whose measured Oklab lightness L is within
99
+ * `[min, max]` (0.0 = black, 1.0 = white).
100
+ */
101
+ lightnessBetween(min: number, max: number): void;
102
+
103
+ /**
104
+ * Keep only near-neutral blocks: measured Oklab chroma at most
105
+ * `max` (the grayscale preset uses 0.022).
106
+ */
107
+ chromaBelow(max: number): void;
108
+
109
+ /**
110
+ * Keep only blocks whose measured color is within `max_distance`
111
+ * (Oklab; ~0.05 = same family, ~0.15 = generous) of the RGB color.
112
+ */
113
+ colorNear(r: number, g: number, b: number, maxDistance: number): void;
114
+
115
+ /**
116
+ * Build the palette; consumes the builder.
117
+ */
118
+ build(): Palette;
119
+ }