sapdon 2.0.1 → 2.1.0

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 (283) hide show
  1. package/LICENSE +1 -1
  2. package/doc/BlockAPI.md +145 -0
  3. package/doc/api.md +1 -1
  4. package/doc/hello_sapdon/a9aad643f5609da73404d1f7f35fd5d0.png +0 -0
  5. package/doc/hello_sapdon/sapdon/344/275/277/347/224/250/346/225/231/347/250/213.md +159 -0
  6. package/examples/guidebook/build.config +33 -0
  7. package/examples/guidebook/dev/guidebook_BP/items/sapdon_test_guidebook.json +19 -0
  8. package/examples/{masterball/dev/masterball_BP/masterball_BP_1_20_20 → guidebook/dev/guidebook_BP}/manifest.json +63 -59
  9. package/examples/guidebook/dev/guidebook_BP/scripts/custom_components/cropComponent.js +50 -0
  10. package/examples/guidebook/dev/guidebook_BP/scripts/custom_components/items/gui_book.js +37 -0
  11. package/examples/guidebook/dev/guidebook_BP/scripts/custom_components/registry.js +20 -0
  12. package/examples/guidebook/dev/guidebook_BP/scripts/index.js +3 -0
  13. package/examples/guidebook/dev/guidebook_RP/blocks.json +3 -0
  14. package/examples/guidebook/dev/guidebook_RP/manifest.json +44 -0
  15. package/examples/guidebook/dev/guidebook_RP/models/blocks/crop.geo.json +48 -0
  16. package/examples/{masterball/dev/masterball_RP/masterball_RP_1_20_20.zip → guidebook/dev/guidebook_RP/pack_icon.png} +0 -0
  17. package/examples/guidebook/dev/guidebook_RP/textures/blocks/test_log_oak.png +0 -0
  18. package/examples/guidebook/dev/guidebook_RP/textures/blocks/test_log_top.png +0 -0
  19. package/examples/guidebook/dev/guidebook_RP/textures/flipbook_textures.json +1 -0
  20. package/examples/guidebook/dev/guidebook_RP/textures/item_texture.json +9 -0
  21. package/examples/guidebook/dev/guidebook_RP/textures/items/masterball.png +0 -0
  22. package/examples/guidebook/dev/guidebook_RP/textures/terrain_texture.json +14 -0
  23. package/examples/guidebook/dev/guidebook_RP/ui/_ui_defs.json +6 -0
  24. package/examples/guidebook/dev/guidebook_RP/ui/guidebook.json +581 -0
  25. package/examples/guidebook/dev/guidebook_RP/ui/server_form.json +91 -0
  26. package/examples/guidebook/main.mjs +66 -0
  27. package/examples/guidebook/mod.info +7 -0
  28. package/examples/{masterball/dev/masterball_BP/masterball_BP_1_20_20.zip → guidebook/pack_icon.png} +0 -0
  29. package/examples/guidebook/res/models/blocks/crop.geo.json +48 -0
  30. package/examples/guidebook/res/textures/blocks/test_log_oak.png +0 -0
  31. package/examples/guidebook/res/textures/blocks/test_log_top.png +0 -0
  32. package/examples/guidebook/res/textures/items/masterball.png +0 -0
  33. package/examples/guidebook/scripts/custom_components/cropComponent.js +50 -0
  34. package/examples/guidebook/scripts/custom_components/items/gui_book.js +37 -0
  35. package/examples/guidebook/scripts/custom_components/registry.js +20 -0
  36. package/examples/guidebook/scripts/index.js +3 -0
  37. package/examples/hello_sapdon/build.config +29 -0
  38. package/examples/hello_sapdon/main.mjs +3 -0
  39. package/examples/hello_sapdon/mod.info +7 -0
  40. package/examples/hello_sapdon/pack_icon.png +0 -0
  41. package/examples/hello_sapdon/res/models/blocks/crop.geo.json +48 -0
  42. package/examples/hello_sapdon/res/textures/blocks/test_log_oak.png +0 -0
  43. package/examples/hello_sapdon/res/textures/blocks/test_log_top.png +0 -0
  44. package/examples/hello_sapdon/res/textures/items/masterball.png +0 -0
  45. package/examples/hello_sapdon/scripts/custom_components/cropComponent.js +50 -0
  46. package/examples/hello_sapdon/scripts/custom_components/items/gui_book.js +37 -0
  47. package/examples/hello_sapdon/scripts/custom_components/registry.js +25 -0
  48. package/examples/hello_sapdon/scripts/index.js +0 -0
  49. package/examples/masterball/build.config +1 -0
  50. package/examples/masterball/dev/masterball_1_20_30.mcaddon +0 -0
  51. package/examples/masterball/dev/masterball_BP/entities/sapdon_projectile_masterball.json +56 -55
  52. package/examples/masterball/dev/masterball_BP/manifest.json +59 -59
  53. package/examples/masterball/dev/masterball_BP/pack_icon.png +0 -0
  54. package/examples/masterball/dev/masterball_BP/recipes/masterball.json +25 -0
  55. package/examples/masterball/dev/masterball_BP_1_20_30.mcpack +0 -0
  56. package/examples/masterball/dev/masterball_RP/attachables/sapdon_caught_masterball.json +19 -0
  57. package/examples/masterball/dev/masterball_RP/manifest.json +43 -43
  58. package/examples/masterball/dev/masterball_RP/pack_icon.png +0 -0
  59. package/examples/masterball/dev/masterball_RP/textures/flipbook_textures.json +1 -0
  60. package/examples/masterball/dev/masterball_RP/ui/_ui_defs.json +3 -0
  61. package/examples/masterball/dev/masterball_RP_1_20_30.mcpack +0 -0
  62. package/examples/masterball/main.mjs +18 -1
  63. package/examples/masterball/pack_icon.png +0 -0
  64. package/examples/mob_chest/build.config +29 -0
  65. package/examples/mob_chest/dev/mob_chest_BP/blocks/mob_chest_chest.json +56 -0
  66. package/examples/mob_chest/dev/mob_chest_BP/entities/mob_chest_chest_entity.json +79 -0
  67. package/examples/mob_chest/dev/mob_chest_BP/manifest.json +64 -0
  68. package/examples/mob_chest/dev/mob_chest_BP/pack_icon.png +0 -0
  69. package/examples/mob_chest/dev/mob_chest_BP/scripts/custom_components/block/block_with_entity.js +46 -0
  70. package/examples/mob_chest/dev/mob_chest_BP/scripts/custom_components/block/cropComponent.js +50 -0
  71. package/examples/mob_chest/dev/mob_chest_BP/scripts/custom_components/items/gui_book.js +37 -0
  72. package/examples/mob_chest/dev/mob_chest_BP/scripts/custom_components/registry.js +25 -0
  73. package/examples/mob_chest/dev/mob_chest_BP/scripts/index.js +4 -0
  74. package/examples/mob_chest/dev/mob_chest_RP/animation_controllers/mob_chest.animation_controllers.json +30 -0
  75. package/examples/mob_chest/dev/mob_chest_RP/animations/animation_item.animation.json +34 -0
  76. package/examples/mob_chest/dev/mob_chest_RP/animations/large_item.animation.json +27 -0
  77. package/examples/mob_chest/dev/mob_chest_RP/animations/mob_chest.animation.json +64 -0
  78. package/examples/mob_chest/dev/mob_chest_RP/blocks.json +13 -0
  79. package/examples/mob_chest/dev/mob_chest_RP/entity/mob_chest_chest_entity.json +32 -0
  80. package/examples/mob_chest/dev/mob_chest_RP/manifest.json +44 -0
  81. package/examples/mob_chest/dev/mob_chest_RP/models/blocks/crop.geo.json +48 -0
  82. package/examples/mob_chest/dev/mob_chest_RP/models/blocks/cube.geo.json +35 -0
  83. package/examples/mob_chest/dev/mob_chest_RP/models/blocks/empty.geo.json +35 -0
  84. package/examples/mob_chest/dev/mob_chest_RP/models/entity/mob_chest.geo.json +98 -0
  85. package/examples/mob_chest/dev/mob_chest_RP/pack_icon.png +0 -0
  86. package/examples/mob_chest/dev/mob_chest_RP/textures/blocks/entity/double_normal.png +0 -0
  87. package/examples/mob_chest/dev/mob_chest_RP/textures/blocks/entity/none.png +0 -0
  88. package/examples/mob_chest/dev/mob_chest_RP/textures/blocks/entity/normal.png +0 -0
  89. package/examples/mob_chest/dev/mob_chest_RP/textures/blocks/test_log_oak.png +0 -0
  90. package/examples/mob_chest/dev/mob_chest_RP/textures/blocks/test_log_top.png +0 -0
  91. package/examples/mob_chest/dev/mob_chest_RP/textures/flipbook_textures.json +1 -0
  92. package/examples/mob_chest/dev/mob_chest_RP/textures/item_texture.json +9 -0
  93. package/examples/mob_chest/dev/mob_chest_RP/textures/items/masterball.png +0 -0
  94. package/examples/mob_chest/dev/mob_chest_RP/textures/terrain_texture.json +23 -0
  95. package/examples/mob_chest/dev/mob_chest_RP/ui/_ui_defs.json +3 -0
  96. package/examples/mob_chest/main.mjs +31 -0
  97. package/examples/mob_chest/mod.info +7 -0
  98. package/examples/mob_chest/pack_icon.png +0 -0
  99. package/examples/mob_chest/res/animation_controllers/mob_chest.animation_controllers.json +30 -0
  100. package/examples/mob_chest/res/animations/animation_item.animation.json +34 -0
  101. package/examples/mob_chest/res/animations/large_item.animation.json +27 -0
  102. package/examples/mob_chest/res/animations/mob_chest.animation.json +64 -0
  103. package/examples/mob_chest/res/models/blocks/crop.geo.json +48 -0
  104. package/examples/mob_chest/res/models/blocks/cube.geo.json +35 -0
  105. package/examples/mob_chest/res/models/blocks/empty.geo.json +35 -0
  106. package/examples/mob_chest/res/models/entity/mob_chest.geo.json +98 -0
  107. package/examples/mob_chest/res/textures/blocks/entity/double_normal.png +0 -0
  108. package/examples/mob_chest/res/textures/blocks/entity/none.png +0 -0
  109. package/examples/mob_chest/res/textures/blocks/entity/normal.png +0 -0
  110. package/examples/mob_chest/res/textures/blocks/test_log_oak.png +0 -0
  111. package/examples/mob_chest/res/textures/blocks/test_log_top.png +0 -0
  112. package/examples/mob_chest/res/textures/items/masterball.png +0 -0
  113. package/examples/mob_chest/resource/cube.bbmodel +1 -0
  114. package/examples/mob_chest/resource/flipbook_item.bbmodel +1 -0
  115. package/examples/mob_chest/resource/flipbook_item.geo.bbmodel +1 -0
  116. package/examples/mob_chest/resource/flipbook_item.geo.json +3124 -0
  117. package/examples/mob_chest/resource/mob_chest.bbmodel +1 -0
  118. package/examples/mob_chest/scripts/custom_components/block/block_with_entity.js +46 -0
  119. package/examples/mob_chest/scripts/custom_components/block/cropComponent.js +50 -0
  120. package/examples/mob_chest/scripts/custom_components/items/gui_book.js +37 -0
  121. package/examples/mob_chest/scripts/custom_components/registry.js +25 -0
  122. package/examples/mob_chest/scripts/index.js +4 -0
  123. package/examples/test/build.config +29 -0
  124. package/examples/test/dev/test_BP/blocks/sapdon_ore_cinnabar.json +15 -15
  125. package/examples/test/dev/test_BP/blocks/sapdon_test_block.json +15 -15
  126. package/examples/test/dev/test_BP/blocks/sapdon_test_crop.json +191 -191
  127. package/examples/test/dev/test_BP/blocks/sapdon_wire.json +102 -102
  128. package/examples/test/dev/test_BP/entities/sapdon_test_projectile.json +56 -55
  129. package/examples/test/dev/test_BP/feature_rules/ore_cinnabar_orefeatre_rule.json +52 -52
  130. package/examples/test/dev/test_BP/feature_rules/overworld_underground_titanite_ore_feature.json +52 -52
  131. package/examples/test/dev/test_BP/features/ore_cinnabar_ore_feature.json +16 -16
  132. package/examples/test/dev/test_BP/features/titanite_ore_feature.json +22 -22
  133. package/examples/test/dev/test_BP/items/sapdon_chest.json +22 -22
  134. package/examples/test/dev/test_BP/items/sapdon_test_book.json +19 -0
  135. package/examples/test/dev/test_BP/items/sapdon_test_food.json +25 -25
  136. package/examples/test/dev/test_BP/items/sapdon_test_item.json +30 -30
  137. package/examples/test/dev/test_BP/manifest.json +63 -59
  138. package/examples/test/dev/test_BP/recipes/sapdon_test_furnace.json +12 -12
  139. package/examples/test/dev/test_BP/scripts/custom_components/cropComponent.js +1 -10
  140. package/examples/test/dev/test_BP/scripts/custom_components/items/gui_book.js +37 -0
  141. package/examples/test/dev/test_BP/scripts/custom_components/registry.js +20 -0
  142. package/examples/test/dev/test_BP/scripts/index.js +4 -3
  143. package/examples/test/dev/test_RP/attachables/sapdon_chest.json +24 -24
  144. package/examples/test/dev/test_RP/blocks.json +42 -42
  145. package/examples/test/dev/test_RP/entity/sapdon_test_projectile.json +27 -27
  146. package/examples/test/dev/test_RP/manifest.json +43 -43
  147. package/examples/test/dev/test_RP/models/blocks/arcane_workbench.geo.json +105 -105
  148. package/examples/test/dev/test_RP/models/blocks/jar_normal.geo.json +46 -46
  149. package/examples/test/dev/test_RP/models/blocks/jar_normal_0.geo.json +58 -58
  150. package/examples/test/dev/test_RP/models/blocks/jar_normal_1.geo.json +58 -58
  151. package/examples/test/dev/test_RP/models/blocks/jar_normal_2.geo.json +58 -58
  152. package/examples/test/dev/test_RP/models/blocks/jar_normal_3.geo.json +58 -58
  153. package/examples/test/dev/test_RP/models/blocks/wire.geo.json +153 -153
  154. package/examples/test/dev/test_RP/textures/item_texture.json +788 -788
  155. package/examples/test/dev/test_RP/textures/items/seals/seal_breaker.png.mcmeta +5 -5
  156. package/examples/test/dev/test_RP/textures/items/seals/seal_butcher.png.mcmeta +5 -5
  157. package/examples/test/dev/test_RP/textures/items/seals/seal_empty.png.mcmeta +5 -5
  158. package/examples/test/dev/test_RP/textures/items/seals/seal_empty_advanced.png.mcmeta +5 -5
  159. package/examples/test/dev/test_RP/textures/items/seals/seal_fill.png.mcmeta +5 -5
  160. package/examples/test/dev/test_RP/textures/items/seals/seal_fill_advanced.png.mcmeta +5 -5
  161. package/examples/test/dev/test_RP/textures/items/seals/seal_guard.png.mcmeta +5 -5
  162. package/examples/test/dev/test_RP/textures/items/seals/seal_guard_advanced.png.mcmeta +5 -5
  163. package/examples/test/dev/test_RP/textures/items/seals/seal_harvest.png.mcmeta +5 -5
  164. package/examples/test/dev/test_RP/textures/items/seals/seal_lumber.png.mcmeta +5 -5
  165. package/examples/test/dev/test_RP/textures/items/seals/seal_pickup.png.mcmeta +5 -5
  166. package/examples/test/dev/test_RP/textures/items/seals/seal_pickup_advanced.png.mcmeta +5 -5
  167. package/examples/test/dev/test_RP/textures/items/seals/seal_provider.png.mcmeta +5 -5
  168. package/examples/test/dev/test_RP/textures/items/seals/seal_use.png.mcmeta +5 -5
  169. package/examples/test/dev/test_RP/textures/items/wand/cap_thaumium.png.mcmeta +11 -11
  170. package/examples/test/dev/test_RP/textures/items/wand/cap_void.png.mcmeta +11 -11
  171. package/examples/test/dev/test_RP/textures/items/wand/focus_pech.png.mcmeta +2 -2
  172. package/examples/test/dev/test_RP/textures/items/wand/focus_portablehole.png.mcmeta +2 -2
  173. package/examples/test/dev/test_RP/textures/items/wand/focus_primal.png.mcmeta +2 -2
  174. package/examples/test/dev/test_RP/textures/items/wand/focus_shard.png.mcmeta +2 -2
  175. package/examples/test/dev/test_RP/textures/items/wand/focus_warding.png.mcmeta +2 -2
  176. package/examples/test/dev/test_RP/textures/items/wand/rod_primal_mat.png.mcmeta +44 -44
  177. package/examples/test/dev/test_RP/textures/terrain_texture.json +136 -136
  178. package/examples/test/dev/test_RP/ui/_ui_defs.json +6 -0
  179. package/examples/test/dev/test_RP/ui/guidebook.json +446 -0
  180. package/examples/test/dev/test_RP/ui/server_form.json +91 -0
  181. package/examples/test/main.mjs +46 -1
  182. package/examples/test/res/models/blocks/arcane_workbench.geo.json +105 -105
  183. package/examples/test/res/models/blocks/jar_normal.geo.json +46 -46
  184. package/examples/test/res/models/blocks/jar_normal_0.geo.json +58 -58
  185. package/examples/test/res/models/blocks/jar_normal_1.geo.json +58 -58
  186. package/examples/test/res/models/blocks/jar_normal_2.geo.json +58 -58
  187. package/examples/test/res/models/blocks/jar_normal_3.geo.json +58 -58
  188. package/examples/test/res/models/blocks/wire.geo.json +153 -153
  189. package/examples/test/res/textures/items/seals/seal_breaker.png.mcmeta +5 -5
  190. package/examples/test/res/textures/items/seals/seal_butcher.png.mcmeta +5 -5
  191. package/examples/test/res/textures/items/seals/seal_empty.png.mcmeta +5 -5
  192. package/examples/test/res/textures/items/seals/seal_empty_advanced.png.mcmeta +5 -5
  193. package/examples/test/res/textures/items/seals/seal_fill.png.mcmeta +5 -5
  194. package/examples/test/res/textures/items/seals/seal_fill_advanced.png.mcmeta +5 -5
  195. package/examples/test/res/textures/items/seals/seal_guard.png.mcmeta +5 -5
  196. package/examples/test/res/textures/items/seals/seal_guard_advanced.png.mcmeta +5 -5
  197. package/examples/test/res/textures/items/seals/seal_harvest.png.mcmeta +5 -5
  198. package/examples/test/res/textures/items/seals/seal_lumber.png.mcmeta +5 -5
  199. package/examples/test/res/textures/items/seals/seal_pickup.png.mcmeta +5 -5
  200. package/examples/test/res/textures/items/seals/seal_pickup_advanced.png.mcmeta +5 -5
  201. package/examples/test/res/textures/items/seals/seal_provider.png.mcmeta +5 -5
  202. package/examples/test/res/textures/items/seals/seal_use.png.mcmeta +5 -5
  203. package/examples/test/res/textures/items/wand/cap_thaumium.png.mcmeta +11 -11
  204. package/examples/test/res/textures/items/wand/cap_void.png.mcmeta +11 -11
  205. package/examples/test/res/textures/items/wand/focus_pech.png.mcmeta +2 -2
  206. package/examples/test/res/textures/items/wand/focus_portablehole.png.mcmeta +2 -2
  207. package/examples/test/res/textures/items/wand/focus_primal.png.mcmeta +2 -2
  208. package/examples/test/res/textures/items/wand/focus_shard.png.mcmeta +2 -2
  209. package/examples/test/res/textures/items/wand/focus_warding.png.mcmeta +2 -2
  210. package/examples/test/res/textures/items/wand/rod_primal_mat.png.mcmeta +44 -44
  211. package/examples/test/scripts/custom_components/cropComponent.js +1 -10
  212. package/examples/test/scripts/custom_components/items/gui_book.js +37 -0
  213. package/examples/test/scripts/custom_components/registry.js +20 -0
  214. package/examples/test/scripts/index.js +4 -3
  215. package/log.md +8 -0
  216. package/package.json +2 -2
  217. package/src/cli/build.js +210 -210
  218. package/src/cli/load.js +116 -112
  219. package/src/cli/tools/textureSet.js +114 -114
  220. package/src/cli/utils.js +82 -82
  221. package/src/core/addon/controllers/animation_controller.js +80 -0
  222. package/src/core/addon/entity/entity.js +52 -51
  223. package/src/core/block/GeometryBlock.js +8 -0
  224. package/src/core/block/OreBlock.js +1 -0
  225. package/src/core/block/TileBlock.js +117 -0
  226. package/src/core/block/block.js +106 -106
  227. package/src/core/block/blockComponent.js +557 -557
  228. package/src/core/block/cropBlock.js +1 -1
  229. package/src/core/entity/BasicEntity.js +195 -166
  230. package/src/core/entity/bundles/BasicBundle.js +51 -0
  231. package/src/core/factory/BlockFactory.js +166 -158
  232. package/src/core/factory/EntityFactory.js +82 -82
  233. package/src/core/factory/ItemFactory.js +120 -95
  234. package/src/core/factory/RecipeFactory.js +46 -46
  235. package/src/core/index.js +2 -1
  236. package/src/core/item/Item.js +96 -96
  237. package/src/core/item/ItemComponents.js +251 -235
  238. package/src/core/item/armor.js +117 -89
  239. package/src/core/item/attachable.js +33 -33
  240. package/src/core/item/food.js +61 -61
  241. package/src/core/registry.js +16 -16
  242. package/src/core/ui/Properties/{Grid.js → GridProp.js} +2 -2
  243. package/src/core/ui/Properties/Sound.js +72 -0
  244. package/src/core/ui/elements/Button.js +111 -0
  245. package/src/core/ui/elements/CollectionPanel.js +61 -0
  246. package/src/core/ui/elements/Grid.js +24 -0
  247. package/src/core/ui/elements/Image.js +4 -0
  248. package/src/core/ui/elements/Label.js +10 -2
  249. package/src/core/ui/elements/Panel.js +7 -0
  250. package/src/core/ui/elements/ScrollingPanel.js +68 -0
  251. package/src/core/ui/elements/StackPanel.js +40 -0
  252. package/src/core/ui/elements/UIElement.js +43 -2
  253. package/src/core/ui/registry/UISystemRegistry.js +35 -0
  254. package/src/core/ui/systems/UISystem.js +9 -5
  255. package/src/core/ui/systems/guidebook.js +299 -0
  256. package/src/core/ui/systems/server_form.js +94 -83
  257. package/src/templates/test_sapdon/build.config +28 -28
  258. package/src/templates/test_sapdon/res/animations/animation_item.animation.json +34 -0
  259. package/src/templates/test_sapdon/res/animations/large_item.animation.json +27 -0
  260. package/src/templates/test_sapdon/res/models/entity/animation/animation_item.geo.json +26 -0
  261. package/src/templates/test_sapdon/res/models/entity/animation/large_item.geo.json +28 -0
  262. package/src/templates/test_sapdon/res/textures/blocks/none.png +0 -0
  263. package/src/templates/test_sapdon/scripts/custom_components/cropComponent.js +50 -0
  264. package/src/templates/test_sapdon/scripts/custom_components/items/gui_book.js +37 -0
  265. package/src/templates/test_sapdon/scripts/custom_components/registry.js +25 -0
  266. package/examples/masterball/dev/masterball[1.20.20+].mcaddon.zip +0 -0
  267. package/examples/masterball/dev/masterball_BP/masterball_BP_1_20_20/entities/sapdon_projectile_masterball.json +0 -56
  268. package/examples/masterball/dev/masterball_BP/masterball_BP_1_20_20/items/sapdon_caught_masterball.json +0 -32
  269. package/examples/masterball/dev/masterball_BP/masterball_BP_1_20_20/items/sapdon_uncaught_masterball.json +0 -31
  270. package/examples/masterball/dev/masterball_BP/masterball_BP_1_20_20/scripts/index.js +0 -159
  271. package/examples/test/dev/test_BP/biomes/test_biome.json +0 -48
  272. package/examples/test/dev/test_BP/blocks/sapdon_block.json +0 -111
  273. package/examples/test/dev/test_BP/entities/sapdon_body.json +0 -118
  274. package/examples/test/dev/test_BP/entities/sapdon_test_entity_ctrl1.json +0 -55
  275. package/examples/test/dev/test_BP/entities/sapdon_test_entity_ctrl2.json +0 -61
  276. package/examples/test/dev/test_BP/entities/sapdon_test_entity_header.json +0 -408
  277. package/examples/test/dev/test_RP/entity/sapdon_body.json +0 -44
  278. package/examples/test/dev/test_RP/entity/sapdon_test_entity_ctrl1.json +0 -38
  279. package/examples/test/dev/test_RP/entity/sapdon_test_entity_ctrl2.json +0 -38
  280. package/examples/test/dev/test_RP/entity/sapdon_test_entity_header.json +0 -44
  281. package/src/cli/build.config +0 -4
  282. package/src/core/ui/registry/ServerUISystem.js +0 -19
  283. /package/examples/{masterball/dev/masterball_BP/masterball_BP_1_20_20 → guidebook/dev/guidebook_BP}/pack_icon.png +0 -0
package/LICENSE CHANGED
@@ -1,6 +1,6 @@
1
1
  MIT License
2
2
 
3
- Copyright (c) 2025 junjun260
3
+ Copyright (c) 2025 Meteage
4
4
 
5
5
  Permission is hereby granted, free of charge, to any person obtaining a copy
6
6
  of this software and associated documentation files (the "Software"), to deal
@@ -0,0 +1,145 @@
1
+ # 方块工厂类 (BlockAPI) API 文档
2
+
3
+ ## 类描述
4
+
5
+ `BlockAPI` 是一个工厂函数集合,用于创建和管理多种类型的游戏方块,并自动注册到游戏系统中。支持基础方块、旋转方块、几何方块、矿物方块和作物方块的创建。
6
+
7
+ ---
8
+
9
+ ## BlockAPI 工厂函数
10
+
11
+ ### `createBasicBlock(identifier, category, textures_arr, options = {})`
12
+
13
+ 创建基础方块。
14
+
15
+ #### 参数
16
+
17
+ - `identifier` (string): 方块的唯一标识符,格式为"命名空间:名称" (例:"my_mod:stone_block")。
18
+ - `category` (string): 在创造模式物品栏的分类,可选值: "construction", "nature", "equipment", "items", and "none"。
19
+ - `textures_arr` (string[]): 6面纹理数组,顺序为 [上, 下, 东, 西, 南, 北]
20
+ - `options` (Object): 可选参数,默认为空。
21
+ - `group` (string): 分组名称,默认 "construction"。
22
+ - `hide_in_command` (boolean): 是否在命令中隐藏,默认 `false`。
23
+
24
+ #### 返回值
25
+
26
+ - `BasicBlock`: 基础方块实例
27
+
28
+ ---
29
+
30
+ ### `createBlock(identifier, category, variantDatas, options = {})`
31
+
32
+ 创建含变体状态的标准方块。
33
+
34
+ #### 参数
35
+
36
+ - `identifier` (string): 方块的唯一标识符。
37
+ - `category` (string): 在创造模式物品栏的分类,可选值: "construction", "nature", "equipment", "items", and "none"
38
+ - `variantDatas` (Array): 变体数据数组,每个元素包含:
39
+ - `stateTag` (number): 状态标签 0-15 最大15
40
+ - `textures` (string[]): 对应状态的6面,纹理顺序为 [上, 下, 东, 西, 南, 北]
41
+ - `options` (Object): 可选参数,默认为空。
42
+ - `options.group` (string): 分组,默认为 "construction"。
43
+ - `options.hide_in_command` (boolean): 是否在命令中隐藏,默认为 false。
44
+ - `ambient_occlusion` (boolean): 环境光遮蔽,默认 `false`
45
+ - `face_dimming` (boolean): 面亮度衰减,默认 `false`
46
+ - `render_method` (string): 渲染模式,可选 "opaque"/"blend"/"alpha_test"
47
+
48
+ #### 返回值
49
+
50
+ - `Block`: 标准方块实例
51
+
52
+ ---
53
+
54
+ ### `createRotatableBlock(identifier, category, textures_arr, options = {})`
55
+
56
+ 创建支持多方向旋转的方块。
57
+
58
+ #### 参数
59
+
60
+ - `identifier` (string): 矿物方块的唯一标识符。
61
+ - `category` (string): 在创造模式物品栏的分类,可选值:"construction", "nature", "equipment", "items", and "none"
62
+ - `textures_arr` (string[]): 6面纹理数组,顺序为 [上, 下, 东, 西, 南, 北]。
63
+ - `options` (Object): 可选参数,默认为空。
64
+ - `options.group` (string): 分组,默认为 "construction"。
65
+ - `options.hide_in_command` (boolean): 是否在命令中隐藏,默认为 false。
66
+ - `options.rotationType` (string): 旋转类型,默认为 "cardinal"。
67
+ - `options.yRotationOffset` (number): 初始旋转偏移量,默认为 180。
68
+
69
+ #### 返回值
70
+
71
+ - `RotatableBlock`: 旋转方块实例
72
+
73
+ ---
74
+
75
+ ### `createGeometryBlock(identifier, category, geometry, material_instances, options = {})`
76
+
77
+ 创建自定义几何模型方块。
78
+
79
+ #### 参数
80
+
81
+ - `identifier` (string): 方块的唯一标识符。
82
+ - `category` (string): 在创造模式物品栏的分类,可选值:"construction", "nature", "equipment","items" and "none"。
83
+ - `geometry` (string): 几何模型标识符 (例:"geometry.custom_model")。
84
+ - `material_instances` (Object): 材质实例配置。
85
+ - 撰写文档者不晓得具体内容应该填啥
86
+ - `options` (Object): 可选参数,默认为空。
87
+ - `options.group` (string): 分组,默认为 "construction"。
88
+ - `options.hide_in_command` (boolean): 是否在命令中隐藏,默认为 false。
89
+
90
+ #### 返回值
91
+
92
+ - `GeometryBlock`: 自定义几何模型方块实例
93
+
94
+ ---
95
+
96
+ ### `createOreBlock(identifier, category, textures_arr, options = {})`
97
+
98
+ 创建矿物生成方块。
99
+
100
+ #### 参数
101
+
102
+ - `identifier` (string): 矿物方块的唯一标识符。
103
+ - `category` (string): 在创造模式物品栏的分类,可选值:"construction", "nature", "equipment", "items" and "none"。
104
+ - `textures_arr` (string[]): 6面纹理数组,顺序为 [上, 下, 东, 西, 南, 北]。
105
+ - `options` (Object): 可选参数,默认为空。
106
+ - `options.group` (string): 分组,默认为 "construction"。
107
+ - `options.hide_in_command` (boolean): 是否在命令中隐藏,默认为 false。
108
+
109
+ #### 返回值
110
+
111
+ - `OreBlock`: 矿物方块实例
112
+
113
+ ---
114
+
115
+ ### `createCropBlock(identifier, category, variantDatas, options = {})`
116
+
117
+ 创建农作物方块。
118
+
119
+ #### 参数
120
+
121
+ - `identifier` (string): 作物方块的唯一标识符。
122
+ - `category` (string): 在创造模式物品栏的分类,可选值:"construction", "nature", "equipment", "items" and "none"。
123
+ - `variantDatas` (Array): 变体数据数组,每个元素包含:
124
+ - `stateTag` (number): 状态标签 0-15 最大15
125
+ - `textures` (string[]): 对应状态的6面纹理
126
+ - `options` (Object): 可选参数,默认为空。
127
+ - `options.group` (string): 分组,默认为 "construction"。
128
+ - `options.hide_in_command` (boolean): 是否在命令中隐藏,默认为 false。
129
+ - `options.ambient_occlusion` (boolean): 是否应用环境光遮蔽,默认为 false。
130
+ - `options.face_dimming` (boolean): 是否根据面的方向进行亮度调整,默认为 false。
131
+ - `options.render_method` (string): 渲染方法,默认为 "alpha_test"。
132
+
133
+ #### 返回值
134
+
135
+ - `CropBlock`: 作物方块实例
136
+
137
+ ---
138
+
139
+ ## 版本兼容性
140
+
141
+ | 功能 | 最低版本 | 依赖组件 |
142
+ |------|---------|---------|
143
+ | 几何方块 | 1.16.20 | minecraft:geometry |
144
+ | 矿脉生成 | 1.18.30 | ore_feature |
145
+ | 动态碰撞箱 | 1.17.10 | permutation |
package/doc/api.md CHANGED
@@ -10,7 +10,7 @@
10
10
  创建一个新的物品实例。
11
11
 
12
12
  #### 参数
13
- - `identifier` (string): 物品的唯一标识符。
13
+ - `identifier` (string): 物品的唯一标识符。由命名空间与名字组成,例如"hello_sapdon:my_item"
14
14
  - `category` (string): 物品所属的菜单栏分类,可选值包括:"construction", "nature", "equipment", "items", 和 "none"。
15
15
  - `texture` (string): 物品的纹理。
16
16
  - `options` (Object): 可选参数配置对象。默认为空对象。
@@ -0,0 +1,159 @@
1
+ # Sapdon 使用指南
2
+
3
+ ## 1. Sapdon 介绍
4
+
5
+ Sapdon 是一个基于 JavaScript 开发的 Minecraft 基岩版通用工具箱。它提供了大量的接口,帮助开发者简化传统开发 Addon 的过程,提高开发效率,并减少直接编辑 JSON 文件时可能出现的错误和麻烦。
6
+
7
+ ## 2. 准备工作
8
+
9
+ 在开始使用 Sapdon 之前,您需要准备以下工具和环境:
10
+
11
+ ### 软件要求
12
+ - **Visual Studio Code (VSCode)**:用于编写和编辑代码。
13
+ - **Node.js**:确保已安装 Node.js,因为 Sapdon 是基于 Node.js 开发的。
14
+
15
+ ### 安装 Node.js
16
+ 1. 访问 [Node.js 官网](https://nodejs.org/) 下载并安装适合您操作系统的版本。
17
+ 2. 安装完成后,打开终端或命令提示符,输入以下命令以验证安装是否成功:
18
+ ```bash
19
+ node -v
20
+ npm -v
21
+ ```
22
+ 如果显示了版本号,说明安装成功。
23
+
24
+ ### 创建 Node.js 项目
25
+ 1. 在您的工作目录中,新建一个文件夹作为项目根目录。
26
+ 2. 打开终端,进入该文件夹,并初始化一个新的 Node.js 项目:
27
+ ```bash
28
+ npm init -y
29
+ ```
30
+ 3. 安装 Sapdon 作为项目依赖:
31
+ ```bash
32
+ npm install sapdon
33
+ ```
34
+
35
+ ## 3. 新建一个 Sapdon 项目
36
+
37
+ ### 创建命令
38
+ 使用以下命令创建一个新的 Sapdon 项目:
39
+ ```bash
40
+ npm run create <project-name>
41
+ ```
42
+ 其中 `<project-name>` 是您的项目名称。
43
+
44
+ ### 示例:创建名为 `hello_sapdon` 的项目
45
+ 1. 在 VSCode 的终端中输入以下命令:
46
+ ```bash
47
+ npm run create hello_sapdon
48
+ ```
49
+ 2. 终端将交互式地询问一些项目信息,如下所示:
50
+ ```
51
+ ✔ Project Name: hello_sapdon
52
+ ✔ Project Description: A new sapdon project
53
+ ✔ Author Name: Sapdon
54
+ ✔ Project Version: 1.0.0
55
+ ✔ Minimum Engine Version: 1.19.50
56
+ ```
57
+ 如果您希望采用默认值,只需按下回车键即可。
58
+
59
+ ### 参数解释
60
+ - **Project Name**:项目名称,即模组名称。
61
+ - **Project Description**:项目描述,将在 Minecraft 包中显示。
62
+ - **Author Name**:模组作者的名字。
63
+ - **Minimum Engine Version**:最低支持的 Minecraft 版本。如果 Minecraft 版本低于此版本,模组将不会工作。
64
+
65
+ ### 项目结构
66
+ 创建完成后,您的工作目录下将生成一个名为 `hello_sapdon` 的文件夹。展开该文件夹,您将看到以下结构:
67
+ ```
68
+ hello_sapdon/
69
+ ├── res/ # 资源文件夹,存放贴图、模型、实体动画等资源文件
70
+ ├── scripts/ # 脚本文件夹,存放 SAPI 文件,这些文件将在游戏中执行
71
+ ├── build.config # 构建配置文件
72
+ ├── main.mjs # 模组内容注册脚本,使用 Sapdon 提供的接口编写模组内容
73
+ ├── mod.info # 模组信息文件
74
+ └── pack_icon.png # 模组的图标
75
+ ```
76
+
77
+ ### `build.config` 文件解析
78
+ ```json
79
+ {
80
+ "defaultConfig": {
81
+ "buildMode": "development",
82
+ "buildEntry": "main.mjs",
83
+ "scriptEntry": "scripts/index.js",
84
+ "buildDir": "dev/",
85
+ "dependencies": [
86
+ {
87
+ "module_name": "@minecraft/server",
88
+ "version": "1.8.0"
89
+ }
90
+ ]
91
+ },
92
+ "libraries": [
93
+ {
94
+ "path": "lib/"
95
+ }
96
+ ],
97
+ "resources": [
98
+ {
99
+ "path": "res/"
100
+ }
101
+ ],
102
+ "scripts": [
103
+ {
104
+ "path": "scripts/"
105
+ }
106
+ ]
107
+ }
108
+ ```
109
+ - **buildMode**:构建模式。设置为 `"development"` 时,构建程序将根据 `main.mjs` 中的内容构建 Addon 包,并将输出到 `buildDir` 指定的文件夹中;设置为 `"debug"` 时,仅将 `dev` 文件夹的内容输出到指定路径。
110
+ - **buildEntry**:构建入口文件的路径,即您编写模组内容的文件。
111
+ - **scriptEntry**:脚本入口文件的路径。
112
+ - **buildDir**:构建输出文件夹的路径,构建好的 Addon 包将输出到此文件夹。
113
+ - **dependencies**:依赖的模块。在此示例中,我们依赖了 Minecraft 官方的 `@minecraft/server` 模块,用于 SAPI。
114
+
115
+ ## 4. 编写模组内容
116
+
117
+ ### 创建一个基础物品
118
+ 1. 打开 `main.mjs` 文件。
119
+ 2. 写入以下内容以创建一个基础物品:
120
+ ```javascript
121
+ import { ItemAPI } from "../src/core";
122
+
123
+ ItemAPI.createItem("hello_sapdon:my_item", "items", "masterball");
124
+ ```
125
+ 这段代码将创建一个名为 `my_item` 的物品,其命名空间为 `hello_sapdon`,类型为 `items`,并使用 `masterball` 作为图标。
126
+
127
+ ## 5. 执行构建命令
128
+
129
+ ### 构建 Addon 包
130
+ 1. 在终端中输入以下命令以构建 `hello_sapdon` 项目:
131
+ ```bash
132
+ npm run build hello_sapdon
133
+ ```
134
+ 2. 构建完成后,您将在 `hello_sapdon` 文件夹下看到一个 `dev` 文件夹,其中包含构建好的 Addon 包。
135
+
136
+ ## 6. 下一步
137
+
138
+ 现在,您已经成功创建并构建了一个简单的 Sapdon 项目。接下来,您可以继续探索 Sapdon 提供的其他功能,如创建方块、实体、配方和 UI 等。通过 Sapdon 的强大接口,您可以更高效地开发 Minecraft 基岩版模组。
139
+
140
+ ## 7. 常见问题
141
+
142
+ ### Q: 如何修改模组的最低支持版本?
143
+ A: 在 `mod.info` 文件中,您可以找到 `min_engine_version` 字段,修改该字段的值即可调整模组的最低支持版本。
144
+
145
+ ### Q: 如何添加更多依赖?
146
+ A: 在 `build.config` 文件的 `dependencies` 数组中,您可以添加更多依赖模块。例如:
147
+ ```json
148
+ {
149
+ "module_name": "@minecraft/server-ui",
150
+ "version": "1.0.0"
151
+ }
152
+ ```
153
+
154
+ ### Q: 构建时出现错误怎么办?
155
+ A: 请检查 `main.mjs` 文件中的代码是否正确,并确保所有依赖模块已正确安装。如果问题仍然存在,请参考 Sapdon 的官方文档或社区支持。
156
+
157
+ ---
158
+
159
+ 通过本指南,您已经掌握了 Sapdon 的基本使用方法。祝您在 Minecraft 模组开发中取得成功!
@@ -0,0 +1,33 @@
1
+ {
2
+ "defaultConfig": {
3
+ "buildMode":"development",
4
+ "buildEntry": "main.mjs",
5
+ "scriptEntry": "scripts/index.js",
6
+ "buildDir": "dev/",
7
+ "dependencies": [
8
+ {
9
+ "module_name": "@minecraft/server-ui",
10
+ "version": "1.3.0"
11
+ },
12
+ {
13
+ "module_name": "@minecraft/server",
14
+ "version": "1.17.0"
15
+ }
16
+ ]
17
+ },
18
+ "libraries": [
19
+ {
20
+ "path": "lib/"
21
+ }
22
+ ],
23
+ "resources": [
24
+ {
25
+ "path": "res/"
26
+ }
27
+ ],
28
+ "scripts": [
29
+ {
30
+ "path": "scripts/"
31
+ }
32
+ ]
33
+ }
@@ -0,0 +1,19 @@
1
+ {
2
+ "format_version": "1.21.40",
3
+ "minecraft:item": {
4
+ "description": {
5
+ "identifier": "sapdon:test_guidebook",
6
+ "menu_category": {
7
+ "category": "items",
8
+ "is_hidden_in_commands": false
9
+ }
10
+ },
11
+ "components": {
12
+ "minecraft:icon": "masterball",
13
+ "minecraft:max_stack_size": 64,
14
+ "minecraft:custom_components": [
15
+ "sapdon:custom_guidebook"
16
+ ]
17
+ }
18
+ }
19
+ }
@@ -1,60 +1,64 @@
1
- {
2
- "format_version": 2,
3
- "header": {
4
- "name": "examples/masterball_BP",
5
- "description": "神奇的大师球",
6
- "version": [
7
- 1,
8
- 0,
9
- 0
10
- ],
11
- "uuid": "1fb20a92-2e4a-4eac-aaf5-bbb2a8559501",
12
- "min_engine_version": [
13
- 1,
14
- 20,
15
- 20
16
- ]
17
- },
18
- "modules": [
19
- {
20
- "description": "行为模块",
21
- "type": "data",
22
- "uuid": "36f6e998-997f-4212-9708-2b5806306eb9",
23
- "version": [
24
- 1,
25
- 0,
26
- 0
27
- ]
28
- },
29
- {
30
- "description": "脚本模块",
31
- "type": "script",
32
- "uuid": "f5593d7d-ef12-4690-b4aa-1905870e8ceb",
33
- "version": [
34
- 1,
35
- 0,
36
- 0
37
- ],
38
- "entry": "scripts/index.js"
39
- }
40
- ],
41
- "dependencies": [
42
- {
43
- "module_name": "@minecraft/server",
44
- "version": "1.8.0"
45
- }
46
- ],
47
- "metadata": {
48
- "authors": [
49
- "@sapdon"
50
- ],
51
- "license": "MIT",
52
- "generated_with": {
53
- "sapdon": [
54
- "1.0.0"
55
- ]
56
- },
57
- "product_type": "addon",
58
- "url": "https://github.com/junjun260/sapdon"
59
- }
1
+ {
2
+ "format_version": 2,
3
+ "header": {
4
+ "name": "guidebook_BP",
5
+ "description": "通用指导手册",
6
+ "version": [
7
+ 1,
8
+ 0,
9
+ 0
10
+ ],
11
+ "uuid": "be2cf27b-ed81-4ded-92a9-e04db9965eff",
12
+ "min_engine_version": [
13
+ 1,
14
+ 19,
15
+ 50
16
+ ]
17
+ },
18
+ "modules": [
19
+ {
20
+ "description": "行为模块",
21
+ "type": "data",
22
+ "uuid": "d6839719-7bb7-41cd-9e5d-a2bf0324e622",
23
+ "version": [
24
+ 1,
25
+ 0,
26
+ 0
27
+ ]
28
+ },
29
+ {
30
+ "description": "脚本模块",
31
+ "type": "script",
32
+ "uuid": "7e80e5f7-f53f-4631-b270-3b4a721dc320",
33
+ "version": [
34
+ 1,
35
+ 0,
36
+ 0
37
+ ],
38
+ "entry": "scripts/index.js"
39
+ }
40
+ ],
41
+ "dependencies": [
42
+ {
43
+ "module_name": "@minecraft/server-ui",
44
+ "version": "1.3.0"
45
+ },
46
+ {
47
+ "module_name": "@minecraft/server",
48
+ "version": "1.17.0"
49
+ }
50
+ ],
51
+ "metadata": {
52
+ "authors": [
53
+ "@sapdon"
54
+ ],
55
+ "license": "MIT",
56
+ "generated_with": {
57
+ "sapdon": [
58
+ "1.0.0"
59
+ ]
60
+ },
61
+ "product_type": "addon",
62
+ "url": "https://github.com/junjun260/sapdon"
63
+ }
60
64
  }
@@ -0,0 +1,50 @@
1
+ import { EquipmentSlot, GameMode, world } from "@minecraft/server";
2
+
3
+ /**
4
+ * @param {number} min The minimum integer
5
+ * @param {number} max The maximum integer
6
+ * @returns {number} A random integer between the `min` and `max` parameters (inclusive)
7
+ */
8
+ const randomInt = (min, max) => Math.floor(Math.random() * (max - min + 1)) + min;
9
+
10
+ const maxGrowth = 3;
11
+
12
+ /** @type {import("@minecraft/server").BlockCustomComponent} */
13
+ export const CustomCropGrowthBlockComponent = {
14
+ onRandomTick({ block }) {
15
+ const growthChance = 1 / 3;
16
+ if (Math.random() > growthChance) return;
17
+
18
+ const growth = block.permutation.getState("sapdon:block_variant_tag");
19
+ block.setPermutation(block.permutation.withState("sapdon:block_variant_tag", growth + 1));
20
+ },
21
+ onPlayerInteract({ block, dimension, player }) {
22
+ if (!player) return;
23
+
24
+ const equippable = player.getComponent("minecraft:equippable");
25
+ if (!equippable) return;
26
+
27
+ const mainhand = equippable.getEquipmentSlot(EquipmentSlot.Mainhand);
28
+ if (!mainhand.hasItem() || mainhand.typeId !== "minecraft:bone_meal") return;
29
+
30
+ if (player.getGameMode() === GameMode.creative) {
31
+ // Grow crop fully
32
+ block.setPermutation(block.permutation.withState("sapdon:block_variant_tag", maxGrowth));
33
+ } else {
34
+ let growth = block.permutation.getState("sapdon:block_variant_tag");
35
+
36
+ // Add random amount of growth
37
+ growth += randomInt(1, maxGrowth - growth);
38
+ block.setPermutation(block.permutation.withState("sapdon:block_variant_tag", growth));
39
+
40
+ // Decrement stack
41
+ if (mainhand.amount > 1) mainhand.amount--;
42
+ else mainhand.setItem(undefined);
43
+ }
44
+
45
+ // Play effects
46
+ const effectLocation = block.center();
47
+ dimension.playSound("item.bone_meal.use", effectLocation);
48
+ dimension.spawnParticle("minecraft:crop_growth_emitter", effectLocation);
49
+ },
50
+ };
@@ -0,0 +1,37 @@
1
+ import { world } from "@minecraft/server";
2
+ import { ActionFormData} from "@minecraft/server-ui";
3
+
4
+ const item_ui_list ={
5
+ "sapdon:test_guidebook":"guidebook"
6
+ };
7
+
8
+ var page_index = 0;
9
+ /** @type {import("@minecraft/server").ItemCustomComponent} */
10
+ export const GuiBookItemComponent = {
11
+ onUse({itemStack,source}){
12
+ if(source.typeId != "minecraft:player") return
13
+ showGuidebook(source,item_ui_list[itemStack.typeId])
14
+ }
15
+ }
16
+
17
+ function showGuidebook(target,ui){
18
+ const form = new ActionFormData()
19
+ .title(ui)
20
+ .body("page_index"+ page_index)
21
+ .button("test1")
22
+ .button("test2")
23
+
24
+ form.show(target).then((response) => {
25
+ if (response.selection === 0) {
26
+ page_index--;
27
+ world.sendMessage("上一页")
28
+ showGuidebook(target,ui)
29
+
30
+ }
31
+ else if (response.selection === 1) {
32
+ page_index++;
33
+ world.sendMessage("下一页")
34
+ showGuidebook(target,ui)
35
+ }
36
+ });
37
+ }
@@ -0,0 +1,20 @@
1
+
2
+ import { CustomCropGrowthBlockComponent } from "./cropComponent.js";
3
+ import { GuiBookItemComponent } from "./items/gui_book.js";
4
+ import { world } from "@minecraft/server";
5
+
6
+ export const registerCustomItemComponent = ()=>{
7
+ world.beforeEvents.worldInitialize.subscribe(({ itemComponentRegistry }) => {
8
+ itemComponentRegistry.registerCustomComponent("sapdon:custom_guidebook",GuiBookItemComponent);
9
+ });
10
+ }
11
+
12
+ export const registerCustomBlockComponent = ()=>{
13
+ world.beforeEvents.worldInitialize.subscribe(({ blockComponentRegistry }) => {
14
+ blockComponentRegistry.registerCustomComponent(
15
+ "sapdon:crop_growth",
16
+ CustomCropGrowthBlockComponent
17
+ );
18
+ });
19
+ }
20
+
@@ -0,0 +1,3 @@
1
+ import { registerCustomItemComponent } from "./custom_components/registry.js";
2
+
3
+ registerCustomItemComponent();
@@ -0,0 +1,3 @@
1
+ {
2
+ "format_version": "1.20.20"
3
+ }
@@ -0,0 +1,44 @@
1
+ {
2
+ "format_version": 2,
3
+ "header": {
4
+ "name": "guidebook_RP",
5
+ "description": "通用指导手册",
6
+ "version": [
7
+ 1,
8
+ 0,
9
+ 0
10
+ ],
11
+ "uuid": "eb2cf275-03c8-4fc5-95dc-a369e4dcc2e5",
12
+ "min_engine_version": [
13
+ 1,
14
+ 19,
15
+ 50
16
+ ]
17
+ },
18
+ "modules": [
19
+ {
20
+ "description": "资源模块",
21
+ "type": "resources",
22
+ "uuid": "1f769715-49a4-440b-a33d-08dedb861460",
23
+ "version": [
24
+ 1,
25
+ 0,
26
+ 0
27
+ ]
28
+ }
29
+ ],
30
+ "dependencies": [],
31
+ "metadata": {
32
+ "authors": [
33
+ "@sapdon"
34
+ ],
35
+ "license": "MIT",
36
+ "generated_with": {
37
+ "sapdon": [
38
+ "1.0.0"
39
+ ]
40
+ },
41
+ "product_type": "addon",
42
+ "url": "https://github.com/junjun260/sapdon"
43
+ }
44
+ }