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,159 +0,0 @@
1
- import { ItemStack, world } from "@minecraft/server";
2
-
3
- // 存储抛掷物ID和实体ID的映射
4
- const entityReleseMap = new Map(); // 抛掷物ID -> 实体ID
5
- const projectileIdStack = []; // 存储抛掷物ID的栈
6
-
7
- // 监听物品使用事件
8
- world.afterEvents.itemUse.subscribe((afterItemUseEvent) => {
9
- // 检查是否是大师球
10
- if (afterItemUseEvent.itemStack.typeId !== "sapdon:caught_masterball") return;
11
-
12
- // 获取实体ID(从物品的Lore中提取)
13
- const entityId = afterItemUseEvent.itemStack.getLore()[2].substring(3);
14
- //world.sendMessage("已添加实体ID:" + entityId);
15
-
16
- // 获取最近生成的抛掷物ID
17
- const projectileId = projectileIdStack[projectileIdStack.length - 1];
18
- if (!projectileId) {
19
- //world.sendMessage("未找到抛掷物ID");
20
- return;
21
- }
22
-
23
- // 将抛掷物ID和实体ID关联起来
24
- entityReleseMap.set(projectileId, entityId);
25
- //world.sendMessage(`已关联抛掷物ID: ${projectileId} -> 实体ID: ${entityId}`);
26
- });
27
-
28
- // 监听实体生成事件
29
- world.afterEvents.entitySpawn.subscribe((afterEntitySpawnEvent) => {
30
- const entity = afterEntitySpawnEvent.entity;
31
-
32
- // 检查是否是大师球抛掷物
33
- if (entity.typeId !== "sapdon:projectile_masterball") return;
34
-
35
- // 记录抛掷物ID
36
- projectileIdStack.push(entity.id);
37
- //world.sendMessage("已添加抛掷物ID:" + entity.id);
38
- });
39
-
40
- // 监听抛掷物击中实体事件
41
- world.afterEvents.projectileHitEntity.subscribe((event) => {
42
- const source = event.source;
43
- const projectile = event.projectile;
44
- const hitedEntity = event.getEntityHit().entity;
45
-
46
- // 检查抛掷物和来源是否有效
47
- if (!source || !projectile) return;
48
- if (source.typeId !== "minecraft:player" || projectile.typeId !== "sapdon:projectile_masterball") return;
49
-
50
- const dimension = source.dimension;
51
- const dropLocation = hitedEntity.location;
52
-
53
- // 检查抛掷物ID是否有对应的实体ID
54
- const entityId = entityReleseMap.get(projectile.id);
55
-
56
- if (!entityId) {
57
- // 捕捉逻辑
58
- //world.sendMessage("捕捉");
59
- const entityRemoveLocation = {
60
- x: dropLocation.x,
61
- y: dropLocation.y + 100,
62
- z: dropLocation.z
63
- };
64
- hitedEntity.teleport(entityRemoveLocation, {});
65
-
66
- // 保存实体信息
67
- const entityData = {
68
- Id: hitedEntity.id,
69
- typeID: hitedEntity.typeId,
70
- name: hitedEntity.nameTag,
71
- heath: hitedEntity.getComponent("health").currentValue
72
- };
73
- const structureName = replaceNumbersWithLetters(`${-hitedEntity.id}`);
74
-
75
- // 保存实体结构
76
- try {
77
- dimension.runCommand(`structure save masterball_space_${structureName} ${entityRemoveLocation.x} ${entityRemoveLocation.y} ${entityRemoveLocation.z} ${entityRemoveLocation.x + 1} ${entityRemoveLocation.y + 1} ${entityRemoveLocation.z + 1} true memory false`);
78
- } catch (error) {
79
- //world.sendMessage(`保存结构失败: ${error}`);
80
- return;
81
- }
82
- hitedEntity.remove();
83
-
84
- // 生成捕捉后的大师球
85
- const masterball = new ItemStack("sapdon:caught_masterball", 1);
86
- masterball.nameTag = "大师球(" + entityData.typeID + ")";
87
- masterball.setLore([
88
- `name:${entityData.name}`,
89
- `typeID:${entityData.typeID}`,
90
- `Id:${entityData.Id}`,
91
- `Heath:${entityData.heath}`,
92
- `stackable:${masterball.isStackable}`
93
- ]);
94
- dimension.spawnItem(masterball, dropLocation);
95
- } else {
96
- // 释放逻辑
97
- //world.sendMessage("释放");
98
- const structureName = replaceNumbersWithLetters(`${-entityId}`);
99
-
100
- // 加载实体结构
101
- try {
102
- dimension.runCommand(`structure load masterball_space_${structureName} ${dropLocation.x} ${dropLocation.y} ${dropLocation.z} 0_degrees none true false false`);
103
- dimension.runCommand(`structure delete masterball_space_${structureName}`);
104
- } catch (error) {
105
- //world.sendMessage(`加载或删除结构失败: ${error}`);
106
- return;
107
- }
108
-
109
- // 生成空的大师球
110
- const masterball = new ItemStack("sapdon:uncaught_masterball", 1);
111
- dimension.spawnItem(masterball, dropLocation);
112
-
113
- // 删除映射关系
114
- entityReleseMap.delete(projectile.id);
115
- }
116
- });
117
-
118
- // 监听抛掷物击中方块事件
119
- world.afterEvents.projectileHitBlock.subscribe((afterprojectileHitBlockEvent) => {
120
- const source = afterprojectileHitBlockEvent.source;
121
- const dimension = afterprojectileHitBlockEvent.dimension;
122
- const projectile = afterprojectileHitBlockEvent.projectile;
123
- const dropLocation = afterprojectileHitBlockEvent.location;
124
-
125
- // 检查抛掷物和来源是否有效
126
- if (!source || !projectile) return;
127
- if (source.typeId !== "minecraft:player" || projectile.typeId !== "sapdon:projectile_masterball") return;
128
-
129
- // 检查抛掷物ID是否有对应的实体ID
130
- const entityId = entityReleseMap.get(projectile.id);
131
- if (entityId){
132
- // 释放逻辑
133
- const structureName = replaceNumbersWithLetters(`${-entityId}`);
134
-
135
- // 加载实体结构
136
- try {
137
- dimension.runCommand(`structure load masterball_space_${structureName} ${dropLocation.x} ${dropLocation.y} ${dropLocation.z} 0_degrees none true false false`);
138
- dimension.runCommand(`structure delete masterball_space_${structureName}`);
139
- } catch (error) {
140
- //world.sendMessage(`加载或删除结构失败: ${error}`);
141
- return;
142
- }
143
- }
144
- // 生成空的大师球
145
- const masterball = new ItemStack("sapdon:uncaught_masterball", 1);
146
- dimension.spawnItem(masterball, dropLocation);
147
-
148
- // 删除映射关系
149
- entityReleseMap.delete(projectile.id);
150
- });
151
-
152
- // 工具函数:将数字替换为字母
153
- function replaceNumbersWithLetters(str) {
154
- const numberToLetter = {
155
- '0': 'a', '1': 'b', '2': 'c', '3': 'd', '4': 'e',
156
- '5': 'f', '6': 'g', '7': 'h', '8': 'i', '9': 'j'
157
- };
158
- return str.replace(/[0-9]/g, match => numberToLetter[match]);
159
- }
@@ -1,48 +0,0 @@
1
- {
2
- "format_version": "1.13.0",
3
- "minecraft:biome": {
4
- "description": {
5
- "identifier": "test_biome"
6
- },
7
- "components": {
8
- "minecraft:climate": {
9
- "downfall": 0.7,
10
- "snow_accumulation": [
11
- 0.6,
12
- 0.9
13
- ],
14
- "temperature": 15
15
- },
16
- "minecraft:overworld_height": {
17
- "noise_params": [
18
- 0.6,
19
- 0.9
20
- ]
21
- },
22
- "minecraft:surface_parameters": {
23
- "sea_floor_depth": 7,
24
- "sea_floor_material": "minecraft:blue_ice",
25
- "foundation_material": "minecraft:cobblestone",
26
- "mid_material": "minecraft:minecraft:concrete",
27
- "top_material": "minecraft:glass",
28
- "sea_material": "minecraft:water"
29
- },
30
- "minecraft:overworld_generation_rules": {
31
- "generate_for_climates": [
32
- [
33
- "medium",
34
- 100
35
- ],
36
- [
37
- "warm",
38
- 100
39
- ],
40
- [
41
- "cold",
42
- 100
43
- ]
44
- ]
45
- }
46
- }
47
- }
48
- }
@@ -1,111 +0,0 @@
1
- {
2
- "format_version": "1.21.50",
3
- "minecraft:block": {
4
- "description": {
5
- "identifier": "sapdon:block",
6
- "traits": {},
7
- "states": {
8
- "sapdon:block_variant_tag": {
9
- "values": {
10
- "min": 0,
11
- "max": 3
12
- }
13
- }
14
- },
15
- "menu_category": {
16
- "category": "construction",
17
- "group": "construction",
18
- "is_hidden_in_commands": false
19
- }
20
- },
21
- "components": {
22
- "minecraft:geometry": {
23
- "identifier": "geometry.crop"
24
- }
25
- },
26
- "permutations": [
27
- {
28
- "condition": "q.block_state('sapdon:block_variant_tag') == 0",
29
- "components": {
30
- "minecraft:material_instances": {
31
- "*": {
32
- "texture": "garlic_stage_0",
33
- "ambient_occlusion": true,
34
- "face_dimming": true,
35
- "render_method": "alpha_test"
36
- },
37
- "up": {
38
- "texture": "garlic_stage_0",
39
- "ambient_occlusion": true,
40
- "face_dimming": true,
41
- "render_method": "alpha_test"
42
- },
43
- "down": {
44
- "texture": "garlic_stage_0",
45
- "ambient_occlusion": true,
46
- "face_dimming": true,
47
- "render_method": "alpha_test"
48
- },
49
- "north": {
50
- "texture": "garlic_stage_0",
51
- "ambient_occlusion": true,
52
- "face_dimming": true,
53
- "render_method": "alpha_test"
54
- },
55
- "south": {
56
- "texture": "garlic_stage_0",
57
- "ambient_occlusion": true,
58
- "face_dimming": true,
59
- "render_method": "alpha_test"
60
- },
61
- "east": {
62
- "texture": "garlic_stage_0",
63
- "ambient_occlusion": true,
64
- "face_dimming": true,
65
- "render_method": "alpha_test"
66
- }
67
- }
68
- }
69
- },
70
- {
71
- "condition": "q.block_state('sapdon:block_variant_tag') == 1",
72
- "components": {
73
- "minecraft:material_instances": {
74
- "*": {
75
- "texture": "garlic_stage_1",
76
- "ambient_occlusion": true,
77
- "face_dimming": true,
78
- "render_method": "alpha_test"
79
- }
80
- }
81
- }
82
- },
83
- {
84
- "condition": "q.block_state('sapdon:block_variant_tag') == 2",
85
- "components": {
86
- "minecraft:material_instances": {
87
- "*": {
88
- "texture": "garlic_stage_2",
89
- "ambient_occlusion": true,
90
- "face_dimming": true,
91
- "render_method": "alpha_test"
92
- }
93
- }
94
- }
95
- },
96
- {
97
- "condition": "q.block_state('sapdon:block_variant_tag') == 3",
98
- "components": {
99
- "minecraft:material_instances": {
100
- "*": {
101
- "texture": "garlic_stage_3",
102
- "ambient_occlusion": true,
103
- "face_dimming": true,
104
- "render_method": "alpha_test"
105
- }
106
- }
107
- }
108
- }
109
- ]
110
- }
111
- }
@@ -1,118 +0,0 @@
1
- {
2
- "format_version": "1.16.0",
3
- "minecraft:entity": {
4
- "description": {
5
- "identifier": "sapdon:body",
6
- "is_spawnable": true,
7
- "is_summonable": true,
8
- "runtime_identifier": "minecraft:pig"
9
- },
10
- "components": {
11
- "minecraft:health": {
12
- "max": 20,
13
- "value": 20
14
- },
15
- "minecraft:collision_box": {
16
- "width": 1,
17
- "height": 1
18
- },
19
- "minecraft:physics": {
20
- "has_collision": true,
21
- "has_gravity": true,
22
- "push_towards_closest_space": true
23
- },
24
- "minecraft:movement": {
25
- "value": 0.2
26
- },
27
- "minecraft:movement.basic": {
28
- "max_turn": 30
29
- },
30
- "minecraft:pushable": {
31
- "is_pushable": true,
32
- "is_pushable_by_piston": true
33
- },
34
- "minecraft:navigation.walk": {
35
- "avoid_damage_blocks": true,
36
- "avoid_portals": false,
37
- "avoid_sun": false,
38
- "avoid_water": true,
39
- "blocks_to_avoid": [],
40
- "can_breach": false,
41
- "can_break_doors": false,
42
- "can_jump": true,
43
- "can_open_doors": false,
44
- "can_open_iron_doors": false,
45
- "can_pass_doors": true,
46
- "can_path_from_air": false,
47
- "can_path_over_lava": false,
48
- "can_path_over_water": true,
49
- "can_sink": true,
50
- "can_swim": false,
51
- "can_walk": true,
52
- "can_walk_in_lava": false,
53
- "is_amphibious": false
54
- },
55
- "minecraft:type_family": {
56
- "family": [
57
- "test_entity_body"
58
- ]
59
- },
60
- "minecraft:behavior.follow_caravan": {
61
- "priority": 3,
62
- "speed_multiplier": 2.1,
63
- "entity_count": 10,
64
- "entity_types": {
65
- "filters": {
66
- "test": "is_family",
67
- "subject": "other",
68
- "value": "test_entity_body"
69
- }
70
- }
71
- },
72
- "minecraft:leashable": {
73
- "soft_distance": 4,
74
- "hard_distance": 6,
75
- "max_distance": 10,
76
- "can_be_stolen": false
77
- },
78
- "minecraft:rideable": {
79
- "controlling_seat": 0,
80
- "crouching_skip_interact": true,
81
- "family_types": [
82
- "test_entity_ctrl1",
83
- "test_entity_ctrl2"
84
- ],
85
- "interact_text": "Ride me",
86
- "pull_in_entities": true,
87
- "rider_can_interact": false,
88
- "seat_count": 2,
89
- "seats": [
90
- {
91
- "lock_rider_rotation": 181,
92
- "max_rider_count": 1,
93
- "min_rider_count": 0,
94
- "position": [
95
- 0,
96
- 0,
97
- 0
98
- ],
99
- "rotate_rider_by": 0
100
- },
101
- {
102
- "lock_rider_rotation": 181,
103
- "max_rider_count": 1,
104
- "min_rider_count": 0,
105
- "position": [
106
- 0,
107
- 0,
108
- 4
109
- ],
110
- "rotate_rider_by": 0
111
- }
112
- ]
113
- }
114
- },
115
- "component_groups": {},
116
- "events": {}
117
- }
118
- }
@@ -1,55 +0,0 @@
1
- {
2
- "format_version": "1.16.0",
3
- "minecraft:entity": {
4
- "description": {
5
- "identifier": "sapdon:test_entity_ctrl1",
6
- "is_spawnable": true,
7
- "is_summonable": true,
8
- "runtime_identifier": "minecraft:slime"
9
- },
10
- "components": {
11
- "minecraft:health": {
12
- "max": 20,
13
- "value": 20
14
- },
15
- "minecraft:collision_box": {
16
- "width": 1,
17
- "height": 1
18
- },
19
- "minecraft:physics": {
20
- "has_collision": true,
21
- "has_gravity": true,
22
- "push_towards_closest_space": true
23
- },
24
- "minecraft:movement": {
25
- "value": 0.2
26
- },
27
- "minecraft:movement.basic": {
28
- "max_turn": 30
29
- },
30
- "minecraft:pushable": {
31
- "is_pushable": true,
32
- "is_pushable_by_piston": true
33
- },
34
- "minecraft:type_family": {
35
- "family": [
36
- "test_entity_ctrl1"
37
- ]
38
- },
39
- "minecraft:spawn_entity": {
40
- "entities": [
41
- {
42
- "min_wait_time": 0,
43
- "max_wait_time": 0,
44
- "spawn_entity": "sapdon:test_entity_ctrl2",
45
- "single_use": true,
46
- "num_to_spawn": 1,
47
- "should_leash": true
48
- }
49
- ]
50
- }
51
- },
52
- "component_groups": {},
53
- "events": {}
54
- }
55
- }
@@ -1,61 +0,0 @@
1
- {
2
- "format_version": "1.16.0",
3
- "minecraft:entity": {
4
- "description": {
5
- "identifier": "sapdon:test_entity_ctrl2",
6
- "is_spawnable": true,
7
- "is_summonable": true,
8
- "runtime_identifier": "minecraft:slime"
9
- },
10
- "components": {
11
- "minecraft:health": {
12
- "max": 20,
13
- "value": 20
14
- },
15
- "minecraft:collision_box": {
16
- "width": 1,
17
- "height": 1
18
- },
19
- "minecraft:physics": {
20
- "has_collision": true,
21
- "has_gravity": true,
22
- "push_towards_closest_space": true
23
- },
24
- "minecraft:movement": {
25
- "value": 0.2
26
- },
27
- "minecraft:movement.basic": {
28
- "max_turn": 30
29
- },
30
- "minecraft:pushable": {
31
- "is_pushable": true,
32
- "is_pushable_by_piston": true
33
- },
34
- "minecraft:type_family": {
35
- "family": [
36
- "test_entity_ctrl2"
37
- ]
38
- },
39
- "minecraft:behavior.follow_caravan": {
40
- "priority": 3,
41
- "speed_multiplier": 2.1,
42
- "entity_count": 10,
43
- "entity_types": {
44
- "filters": {
45
- "test": "is_family",
46
- "subject": "other",
47
- "value": "test_entity_body"
48
- }
49
- }
50
- },
51
- "minecraft:leashable": {
52
- "soft_distance": 4,
53
- "hard_distance": 6,
54
- "max_distance": 10,
55
- "can_be_stolen": false
56
- }
57
- },
58
- "component_groups": {},
59
- "events": {}
60
- }
61
- }