sapdon 2.0.2 → 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 +4 -1
  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
@@ -1,236 +1,252 @@
1
- export class ItemComponent {
2
- static setBlockPlacer(block,replace_block_item, use_on){
3
- return new Map().set("minecraft:block_placer",{
4
- block:block,
5
- replace_block_item: replace_block_item,
6
- use_on:use_on
7
- })
8
- }
9
- /**
10
- *
11
- * @param {Array} custom_components
12
- * @returns
13
- */
14
- static setCustomComponents(custom_components){
15
- return new Map().set("minecraft:custom_components",[...custom_components])
16
- }
17
- /**
18
- * 设置物品的可投掷组件。
19
- * @param {Boolean} doSwingAnimation - 是否使用挥动动画。
20
- * @param {Number} launchPowerScale - 投掷力量的缩放比例。
21
- * @param {Number} maxDrawDuration - 最大蓄力时间。
22
- * @param {Number} maxLaunchPower - 最大投掷力量。
23
- * @param {Number} minDrawDuration - 最小蓄力时间。
24
- * @param {Boolean} scalePowerByDrawDuration - 投掷力量是否随蓄力时间增加。
25
- * @returns {Map} - 新的组件集合。
26
- */
27
- static setThrowable(
28
- doSwingAnimation = false,
29
- launchPowerScale = 1.0,
30
- maxDrawDuration = 0.0,
31
- maxLaunchPower = 1.0,
32
- minDrawDuration = 0.0,
33
- scalePowerByDrawDuration = false
34
- ) {
35
- return new Map().set("minecraft:throwable", {
36
- do_swing_animation: doSwingAnimation,
37
- launch_power_scale: launchPowerScale,
38
- max_draw_duration: maxDrawDuration,
39
- max_launch_power: maxLaunchPower,
40
- min_draw_duration: minDrawDuration,
41
- scale_power_by_draw_duration: scalePowerByDrawDuration,
42
- });
43
- }
44
- /**
45
- * 设置物品的显示名称。
46
- * @param {String} displayName - 显示名称或本地化键。
47
- * @returns {Map} - 新的组件集合。
48
- */
49
- static setDisplayName(displayName) {
50
- if (typeof displayName !== "string") {
51
- throw new Error('显示名称必须是字符串类型');
52
- }
53
- return new Map().set("minecraft:display_name", { value: displayName });
54
- }
55
-
56
- /**
57
- * 设置物品的食物组件。
58
- * @param {Boolean} canAlwaysEat - 是否随时可以食用。
59
- * @param {Number} nutrition - 营养值。
60
- * @param {Number} saturationModifier - 饱和度修正值。
61
- * @param {String} [usingConvertsTo] - 食用后转换的目标物品。
62
- * @returns {Map} - 新的组件集合。
63
- */
64
- static setFoodComponent(canAlwaysEat, nutrition, saturationModifier, usingConvertsTo) {
65
- return new Map().set("minecraft:food", {
66
- can_always_eat: canAlwaysEat,
67
- nutrition: nutrition || 0,
68
- saturation_modifier: saturationModifier || 0.6,
69
- using_converts_to: usingConvertsTo || undefined,
70
- });
71
- }
72
-
73
- /**
74
- * 设置物品的燃料组件。
75
- * @param {Number} duration - 燃料燃烧的持续时间(秒),最小值为 0.05。
76
- * @returns {Map} - 新的组件集合。
77
- */
78
- static setFuel(duration) {
79
- if (typeof duration !== "number" || duration < 0.05) {
80
- throw new Error('燃料持续时间必须是一个大于或等于 0.05 的数字');
81
- }
82
- return new Map().set("minecraft:fuel", { duration });
83
- }
84
-
85
- /**
86
- * 设置物品的附魔光效组件。
87
- * @param {Boolean} hasGlint - 是否显示附魔光效。
88
- * @returns {Map} - 新的组件集合。
89
- */
90
- static setGlint(hasGlint) {
91
- if (typeof hasGlint !== "boolean") {
92
- throw new Error('附魔光效值必须是布尔类型');
93
- }
94
- return new Map().set("minecraft:glint", hasGlint);
95
- }
96
-
97
- /**
98
- * 设置物品的手持渲染方式组件。
99
- * @param {Boolean} isHandEquipped - 是否像工具一样渲染。
100
- * @returns {Map} - 新的组件集合。
101
- */
102
- static setHandEquipped(isHandEquipped) {
103
- if (typeof isHandEquipped !== "boolean") {
104
- throw new Error('手持渲染方式值必须是布尔类型');
105
- }
106
- return new Map().set("minecraft:hand_equipped", isHandEquipped);
107
- }
108
-
109
- /**
110
- * 设置物品的图标组件。
111
- * @param {String} texture - 图标纹理名称。
112
- * @returns {Map} - 新的组件集合。
113
- */
114
- static setIcon(texture) {
115
- if (typeof texture !== "string") {
116
- throw new Error('图标纹理必须是字符串类型');
117
- }
118
- return new Map().set("minecraft:icon", texture);
119
- }
120
-
121
- /**
122
- * 设置物品的最大堆叠数量组件。
123
- * @param {Number} maxStackSize - 最大堆叠数量,默认值为 64。
124
- * @returns {Map} - 新的组件集合。
125
- */
126
- static setMaxStackSize(maxStackSize = 64) {
127
- if (typeof maxStackSize !== "number" || maxStackSize <= 0 || !Number.isInteger(maxStackSize)) {
128
- throw new Error('最大堆叠数量必须是正整数');
129
- }
130
- return new Map().set("minecraft:max_stack_size", maxStackSize);
131
- }
132
-
133
- /**
134
- * 设置物品的投射物组件。
135
- * @param {Number} [minimumCriticalPower] - 投射物需要蓄力多久才能造成暴击。
136
- * @param {String} [projectileEntity] - 作为投射物发射的实体名称。
137
- * @returns {Map} - 新的组件集合。
138
- */
139
- static setProjectile(minimumCriticalPower, projectileEntity) {
140
- const projectileComponent = {};
141
-
142
- if (minimumCriticalPower !== undefined) {
143
- if (typeof minimumCriticalPower !== "number" || minimumCriticalPower < 0) {
144
- throw new Error('minimumCriticalPower 必须是非负数');
145
- }
146
- projectileComponent.minimum_critical_power = minimumCriticalPower;
147
- }
148
-
149
- if (projectileEntity !== undefined) {
150
- if (typeof projectileEntity !== "string") {
151
- throw new Error('projectileEntity 必须是字符串类型');
152
- }
153
- projectileComponent.projectile_entity = projectileEntity;
154
- }
155
-
156
- return new Map().set("minecraft:projectile", projectileComponent);
157
- }
158
-
159
- /**
160
- * 设置物品的使用修饰组件。
161
- * @param {Number} [movementModifier] - 使用物品时玩家移动速度的缩放值。
162
- * @param {Number} [useDuration] - 物品使用所需的时间(秒)。
163
- * @returns {Map} - 新的组件集合。
164
- */
165
- static setUseModifiers(movementModifier, useDuration) {
166
- const useModifiersComponent = {};
167
-
168
- if (movementModifier !== undefined) {
169
- if (typeof movementModifier !== "number") {
170
- throw new Error('movementModifier 必须是数字类型');
171
- }
172
- useModifiersComponent.movement_modifier = movementModifier;
173
- }
174
-
175
- if (useDuration !== undefined) {
176
- if (typeof useDuration !== "number" || useDuration < 0) {
177
- throw new Error('useDuration 必须是非负数');
178
- }
179
- useModifiersComponent.use_duration = useDuration;
180
- }
181
-
182
- return new Map().set("minecraft:use_modifiers", useModifiersComponent);
183
- }
184
-
185
- /**
186
- * 设置物品的可穿戴组件。
187
- * @param {Number} [protection=0] - 物品提供的保护值。
188
- * @param {String} [slot] - 物品可以穿戴的槽位(如 "head"、"chest" 等)。
189
- * @returns {Map} - 新的组件集合。
190
- */
191
- static setWearable(protection = 0, slot) {
192
- const wearableComponent = { protection };
193
-
194
- if (slot !== undefined) {
195
- if (typeof slot !== "string") {
196
- throw new Error('slot 必须是字符串类型');
197
- }
198
- wearableComponent.slot = slot;
199
- }
200
-
201
- return new Map().set("minecraft:wearable", wearableComponent);
202
- }
203
- /**
204
- * 设置物品的使用动画组件。
205
- * @param {String} animation - 物品使用时的动画类型(如 "eat"、"drink" 等)。
206
- * @returns {Map} - 新的组件集合。
207
- * @throws {Error} - 如果 animation 不是字符串类型。
208
- */
209
- static setUseAnimation(animation) {
210
- // 检查 animation 是否为字符串
211
- if (typeof animation !== "string") {
212
- throw new Error('animation 必须是字符串类型');
213
- }
214
-
215
- // 返回包含动画设置的 Map 对象
216
- return new Map().set("minecraft:use_animation", animation);
217
- }
218
-
219
- /**
220
- * 将多个组件集合合并为一个。
221
- * @param {...Map} componentMaps - 多个组件集合。
222
- * @returns {Map} - 合并后的组件集合。
223
- */
224
- static combineComponents(...componentMaps) {
225
- return new Map(componentMaps.flatMap(map => [...map]));
226
- }
227
-
228
- /**
229
- * 获取当前组件的 JSON 表示。
230
- * @param {Map} components - 组件集合。
231
- * @returns {Object} - 组件的 JSON 对象。
232
- */
233
- static toJSON(components) {
234
- return Object.fromEntries(components);
235
- }
1
+ export class ItemComponent {
2
+ /**
3
+ * 物品的耐久度组件
4
+ * @param {number} max_durability 最大耐久
5
+ * @param {number} damage_chance_min 损坏最小几率
6
+ * @param {number} damage_chance_max 损坏最大几率
7
+ * @returns {ItemComponent}
8
+ */
9
+ static setDurability(max_durability,damage_chance_min = 0, damage_chance_max = 100){
10
+ return new Map().set("minecraft:durability", {
11
+ "damage_chance": {
12
+ "min": damage_chance_min,
13
+ "max": damage_chance_max
14
+ },
15
+ "max_durability": max_durability
16
+ })
17
+ }
18
+ static setBlockPlacer(block,replace_block_item, use_on){
19
+ return new Map().set("minecraft:block_placer",{
20
+ block:block,
21
+ replace_block_item: replace_block_item,
22
+ use_on:use_on
23
+ })
24
+ }
25
+ /**
26
+ *
27
+ * @param {Array} custom_components
28
+ * @returns
29
+ */
30
+ static setCustomComponents(custom_components){
31
+ return new Map().set("minecraft:custom_components",[...custom_components])
32
+ }
33
+ /**
34
+ * 设置物品的可投掷组件。
35
+ * @param {Boolean} doSwingAnimation - 是否使用挥动动画。
36
+ * @param {Number} launchPowerScale - 投掷力量的缩放比例。
37
+ * @param {Number} maxDrawDuration - 最大蓄力时间。
38
+ * @param {Number} maxLaunchPower - 最大投掷力量。
39
+ * @param {Number} minDrawDuration - 最小蓄力时间。
40
+ * @param {Boolean} scalePowerByDrawDuration - 投掷力量是否随蓄力时间增加。
41
+ * @returns {Map} - 新的组件集合。
42
+ */
43
+ static setThrowable(
44
+ doSwingAnimation = false,
45
+ launchPowerScale = 1.0,
46
+ maxDrawDuration = 0.0,
47
+ maxLaunchPower = 1.0,
48
+ minDrawDuration = 0.0,
49
+ scalePowerByDrawDuration = false
50
+ ) {
51
+ return new Map().set("minecraft:throwable", {
52
+ do_swing_animation: doSwingAnimation,
53
+ launch_power_scale: launchPowerScale,
54
+ max_draw_duration: maxDrawDuration,
55
+ max_launch_power: maxLaunchPower,
56
+ min_draw_duration: minDrawDuration,
57
+ scale_power_by_draw_duration: scalePowerByDrawDuration,
58
+ });
59
+ }
60
+ /**
61
+ * 设置物品的显示名称。
62
+ * @param {String} displayName - 显示名称或本地化键。
63
+ * @returns {Map} - 新的组件集合。
64
+ */
65
+ static setDisplayName(displayName) {
66
+ if (typeof displayName !== "string") {
67
+ throw new Error('显示名称必须是字符串类型');
68
+ }
69
+ return new Map().set("minecraft:display_name", { value: displayName });
70
+ }
71
+
72
+ /**
73
+ * 设置物品的食物组件。
74
+ * @param {Boolean} canAlwaysEat - 是否随时可以食用。
75
+ * @param {Number} nutrition - 营养值。
76
+ * @param {Number} saturationModifier - 饱和度修正值。
77
+ * @param {String} [usingConvertsTo] - 食用后转换的目标物品。
78
+ * @returns {Map} - 新的组件集合。
79
+ */
80
+ static setFoodComponent(canAlwaysEat, nutrition, saturationModifier, usingConvertsTo) {
81
+ return new Map().set("minecraft:food", {
82
+ can_always_eat: canAlwaysEat,
83
+ nutrition: nutrition || 0,
84
+ saturation_modifier: saturationModifier || 0.6,
85
+ using_converts_to: usingConvertsTo || undefined,
86
+ });
87
+ }
88
+
89
+ /**
90
+ * 设置物品的燃料组件。
91
+ * @param {Number} duration - 燃料燃烧的持续时间(秒),最小值为 0.05。
92
+ * @returns {Map} - 新的组件集合。
93
+ */
94
+ static setFuel(duration) {
95
+ if (typeof duration !== "number" || duration < 0.05) {
96
+ throw new Error('燃料持续时间必须是一个大于或等于 0.05 的数字');
97
+ }
98
+ return new Map().set("minecraft:fuel", { duration });
99
+ }
100
+
101
+ /**
102
+ * 设置物品的附魔光效组件。
103
+ * @param {Boolean} hasGlint - 是否显示附魔光效。
104
+ * @returns {Map} - 新的组件集合。
105
+ */
106
+ static setGlint(hasGlint) {
107
+ if (typeof hasGlint !== "boolean") {
108
+ throw new Error('附魔光效值必须是布尔类型');
109
+ }
110
+ return new Map().set("minecraft:glint", hasGlint);
111
+ }
112
+
113
+ /**
114
+ * 设置物品的手持渲染方式组件。
115
+ * @param {Boolean} isHandEquipped - 是否像工具一样渲染。
116
+ * @returns {Map} - 新的组件集合。
117
+ */
118
+ static setHandEquipped(isHandEquipped) {
119
+ if (typeof isHandEquipped !== "boolean") {
120
+ throw new Error('手持渲染方式值必须是布尔类型');
121
+ }
122
+ return new Map().set("minecraft:hand_equipped", isHandEquipped);
123
+ }
124
+
125
+ /**
126
+ * 设置物品的图标组件。
127
+ * @param {String} texture - 图标纹理名称。
128
+ * @returns {Map} - 新的组件集合。
129
+ */
130
+ static setIcon(texture) {
131
+ if (typeof texture !== "string") {
132
+ throw new Error('图标纹理必须是字符串类型');
133
+ }
134
+ return new Map().set("minecraft:icon", texture);
135
+ }
136
+
137
+ /**
138
+ * 设置物品的最大堆叠数量组件。
139
+ * @param {Number} maxStackSize - 最大堆叠数量,默认值为 64。
140
+ * @returns {Map} - 新的组件集合。
141
+ */
142
+ static setMaxStackSize(maxStackSize = 64) {
143
+ if (typeof maxStackSize !== "number" || maxStackSize <= 0 || !Number.isInteger(maxStackSize)) {
144
+ throw new Error('最大堆叠数量必须是正整数');
145
+ }
146
+ return new Map().set("minecraft:max_stack_size", maxStackSize);
147
+ }
148
+
149
+ /**
150
+ * 设置物品的投射物组件。
151
+ * @param {Number} [minimumCriticalPower] - 投射物需要蓄力多久才能造成暴击。
152
+ * @param {String} [projectileEntity] - 作为投射物发射的实体名称。
153
+ * @returns {Map} - 新的组件集合。
154
+ */
155
+ static setProjectile(minimumCriticalPower, projectileEntity) {
156
+ const projectileComponent = {};
157
+
158
+ if (minimumCriticalPower !== undefined) {
159
+ if (typeof minimumCriticalPower !== "number" || minimumCriticalPower < 0) {
160
+ throw new Error('minimumCriticalPower 必须是非负数');
161
+ }
162
+ projectileComponent.minimum_critical_power = minimumCriticalPower;
163
+ }
164
+
165
+ if (projectileEntity !== undefined) {
166
+ if (typeof projectileEntity !== "string") {
167
+ throw new Error('projectileEntity 必须是字符串类型');
168
+ }
169
+ projectileComponent.projectile_entity = projectileEntity;
170
+ }
171
+
172
+ return new Map().set("minecraft:projectile", projectileComponent);
173
+ }
174
+
175
+ /**
176
+ * 设置物品的使用修饰组件。
177
+ * @param {Number} [movementModifier] - 使用物品时玩家移动速度的缩放值。
178
+ * @param {Number} [useDuration] - 物品使用所需的时间(秒)。
179
+ * @returns {Map} - 新的组件集合。
180
+ */
181
+ static setUseModifiers(movementModifier, useDuration) {
182
+ const useModifiersComponent = {};
183
+
184
+ if (movementModifier !== undefined) {
185
+ if (typeof movementModifier !== "number") {
186
+ throw new Error('movementModifier 必须是数字类型');
187
+ }
188
+ useModifiersComponent.movement_modifier = movementModifier;
189
+ }
190
+
191
+ if (useDuration !== undefined) {
192
+ if (typeof useDuration !== "number" || useDuration < 0) {
193
+ throw new Error('useDuration 必须是非负数');
194
+ }
195
+ useModifiersComponent.use_duration = useDuration;
196
+ }
197
+
198
+ return new Map().set("minecraft:use_modifiers", useModifiersComponent);
199
+ }
200
+
201
+ /**
202
+ * 设置物品的可穿戴组件。
203
+ * @param {Number} [protection=0] - 物品提供的保护值。
204
+ * @param {String} [slot] - 物品可以穿戴的槽位(如 "head"、"chest" 等)。
205
+ * @returns {Map} - 新的组件集合。
206
+ */
207
+ static setWearable(protection = 0, slot) {
208
+ const wearableComponent = { protection };
209
+
210
+ if (slot !== undefined) {
211
+ if (typeof slot !== "string") {
212
+ throw new Error('slot 必须是字符串类型');
213
+ }
214
+ wearableComponent.slot = slot;
215
+ }
216
+
217
+ return new Map().set("minecraft:wearable", wearableComponent);
218
+ }
219
+ /**
220
+ * 设置物品的使用动画组件。
221
+ * @param {String} animation - 物品使用时的动画类型(如 "eat"、"drink" 等)。
222
+ * @returns {Map} - 新的组件集合。
223
+ * @throws {Error} - 如果 animation 不是字符串类型。
224
+ */
225
+ static setUseAnimation(animation) {
226
+ // 检查 animation 是否为字符串
227
+ if (typeof animation !== "string") {
228
+ throw new Error('animation 必须是字符串类型');
229
+ }
230
+
231
+ // 返回包含动画设置的 Map 对象
232
+ return new Map().set("minecraft:use_animation", animation);
233
+ }
234
+
235
+ /**
236
+ * 将多个组件集合合并为一个。
237
+ * @param {...Map} componentMaps - 多个组件集合。
238
+ * @returns {Map} - 合并后的组件集合。
239
+ */
240
+ static combineComponents(...componentMaps) {
241
+ return new Map(componentMaps.flatMap(map => [...map]));
242
+ }
243
+
244
+ /**
245
+ * 获取当前组件的 JSON 表示。
246
+ * @param {Map} components - 组件集合。
247
+ * @returns {Object} - 组件的 JSON 对象。
248
+ */
249
+ static toJSON(components) {
250
+ return Object.fromEntries(components);
251
+ }
236
252
  }