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.
- package/LICENSE +1 -1
- package/doc/BlockAPI.md +145 -0
- package/doc/api.md +1 -1
- package/doc/hello_sapdon/a9aad643f5609da73404d1f7f35fd5d0.png +0 -0
- package/doc/hello_sapdon/sapdon/344/275/277/347/224/250/346/225/231/347/250/213.md +159 -0
- package/examples/guidebook/build.config +33 -0
- package/examples/guidebook/dev/guidebook_BP/items/sapdon_test_guidebook.json +19 -0
- package/examples/{masterball/dev/masterball_BP/masterball_BP_1_20_20 → guidebook/dev/guidebook_BP}/manifest.json +63 -59
- package/examples/guidebook/dev/guidebook_BP/scripts/custom_components/cropComponent.js +50 -0
- package/examples/guidebook/dev/guidebook_BP/scripts/custom_components/items/gui_book.js +37 -0
- package/examples/guidebook/dev/guidebook_BP/scripts/custom_components/registry.js +20 -0
- package/examples/guidebook/dev/guidebook_BP/scripts/index.js +3 -0
- package/examples/guidebook/dev/guidebook_RP/blocks.json +3 -0
- package/examples/guidebook/dev/guidebook_RP/manifest.json +44 -0
- package/examples/guidebook/dev/guidebook_RP/models/blocks/crop.geo.json +48 -0
- package/examples/{masterball/dev/masterball_RP/masterball_RP_1_20_20.zip → guidebook/dev/guidebook_RP/pack_icon.png} +0 -0
- package/examples/guidebook/dev/guidebook_RP/textures/blocks/test_log_oak.png +0 -0
- package/examples/guidebook/dev/guidebook_RP/textures/blocks/test_log_top.png +0 -0
- package/examples/guidebook/dev/guidebook_RP/textures/flipbook_textures.json +1 -0
- package/examples/guidebook/dev/guidebook_RP/textures/item_texture.json +9 -0
- package/examples/guidebook/dev/guidebook_RP/textures/items/masterball.png +0 -0
- package/examples/guidebook/dev/guidebook_RP/textures/terrain_texture.json +14 -0
- package/examples/guidebook/dev/guidebook_RP/ui/_ui_defs.json +6 -0
- package/examples/guidebook/dev/guidebook_RP/ui/guidebook.json +581 -0
- package/examples/guidebook/dev/guidebook_RP/ui/server_form.json +91 -0
- package/examples/guidebook/main.mjs +66 -0
- package/examples/guidebook/mod.info +7 -0
- package/examples/{masterball/dev/masterball_BP/masterball_BP_1_20_20.zip → guidebook/pack_icon.png} +0 -0
- package/examples/guidebook/res/models/blocks/crop.geo.json +48 -0
- package/examples/guidebook/res/textures/blocks/test_log_oak.png +0 -0
- package/examples/guidebook/res/textures/blocks/test_log_top.png +0 -0
- package/examples/guidebook/res/textures/items/masterball.png +0 -0
- package/examples/guidebook/scripts/custom_components/cropComponent.js +50 -0
- package/examples/guidebook/scripts/custom_components/items/gui_book.js +37 -0
- package/examples/guidebook/scripts/custom_components/registry.js +20 -0
- package/examples/guidebook/scripts/index.js +3 -0
- package/examples/hello_sapdon/build.config +29 -0
- package/examples/hello_sapdon/main.mjs +3 -0
- package/examples/hello_sapdon/mod.info +7 -0
- package/examples/hello_sapdon/pack_icon.png +0 -0
- package/examples/hello_sapdon/res/models/blocks/crop.geo.json +48 -0
- package/examples/hello_sapdon/res/textures/blocks/test_log_oak.png +0 -0
- package/examples/hello_sapdon/res/textures/blocks/test_log_top.png +0 -0
- package/examples/hello_sapdon/res/textures/items/masterball.png +0 -0
- package/examples/hello_sapdon/scripts/custom_components/cropComponent.js +50 -0
- package/examples/hello_sapdon/scripts/custom_components/items/gui_book.js +37 -0
- package/examples/hello_sapdon/scripts/custom_components/registry.js +25 -0
- package/examples/hello_sapdon/scripts/index.js +0 -0
- package/examples/masterball/build.config +1 -0
- package/examples/masterball/dev/masterball_1_20_30.mcaddon +0 -0
- package/examples/masterball/dev/masterball_BP/entities/sapdon_projectile_masterball.json +56 -55
- package/examples/masterball/dev/masterball_BP/manifest.json +59 -59
- package/examples/masterball/dev/masterball_BP/pack_icon.png +0 -0
- package/examples/masterball/dev/masterball_BP/recipes/masterball.json +25 -0
- package/examples/masterball/dev/masterball_BP_1_20_30.mcpack +0 -0
- package/examples/masterball/dev/masterball_RP/attachables/sapdon_caught_masterball.json +19 -0
- package/examples/masterball/dev/masterball_RP/manifest.json +43 -43
- package/examples/masterball/dev/masterball_RP/pack_icon.png +0 -0
- package/examples/masterball/dev/masterball_RP/textures/flipbook_textures.json +1 -0
- package/examples/masterball/dev/masterball_RP/ui/_ui_defs.json +3 -0
- package/examples/masterball/dev/masterball_RP_1_20_30.mcpack +0 -0
- package/examples/masterball/main.mjs +18 -1
- package/examples/masterball/pack_icon.png +0 -0
- package/examples/mob_chest/build.config +29 -0
- package/examples/mob_chest/dev/mob_chest_BP/blocks/mob_chest_chest.json +56 -0
- package/examples/mob_chest/dev/mob_chest_BP/entities/mob_chest_chest_entity.json +79 -0
- package/examples/mob_chest/dev/mob_chest_BP/manifest.json +64 -0
- package/examples/mob_chest/dev/mob_chest_BP/pack_icon.png +0 -0
- package/examples/mob_chest/dev/mob_chest_BP/scripts/custom_components/block/block_with_entity.js +46 -0
- package/examples/mob_chest/dev/mob_chest_BP/scripts/custom_components/block/cropComponent.js +50 -0
- package/examples/mob_chest/dev/mob_chest_BP/scripts/custom_components/items/gui_book.js +37 -0
- package/examples/mob_chest/dev/mob_chest_BP/scripts/custom_components/registry.js +25 -0
- package/examples/mob_chest/dev/mob_chest_BP/scripts/index.js +4 -0
- package/examples/mob_chest/dev/mob_chest_RP/animation_controllers/mob_chest.animation_controllers.json +30 -0
- package/examples/mob_chest/dev/mob_chest_RP/animations/animation_item.animation.json +34 -0
- package/examples/mob_chest/dev/mob_chest_RP/animations/large_item.animation.json +27 -0
- package/examples/mob_chest/dev/mob_chest_RP/animations/mob_chest.animation.json +64 -0
- package/examples/mob_chest/dev/mob_chest_RP/blocks.json +13 -0
- package/examples/mob_chest/dev/mob_chest_RP/entity/mob_chest_chest_entity.json +32 -0
- package/examples/mob_chest/dev/mob_chest_RP/manifest.json +44 -0
- package/examples/mob_chest/dev/mob_chest_RP/models/blocks/crop.geo.json +48 -0
- package/examples/mob_chest/dev/mob_chest_RP/models/blocks/cube.geo.json +35 -0
- package/examples/mob_chest/dev/mob_chest_RP/models/blocks/empty.geo.json +35 -0
- package/examples/mob_chest/dev/mob_chest_RP/models/entity/mob_chest.geo.json +98 -0
- package/examples/mob_chest/dev/mob_chest_RP/pack_icon.png +0 -0
- package/examples/mob_chest/dev/mob_chest_RP/textures/blocks/entity/double_normal.png +0 -0
- package/examples/mob_chest/dev/mob_chest_RP/textures/blocks/entity/none.png +0 -0
- package/examples/mob_chest/dev/mob_chest_RP/textures/blocks/entity/normal.png +0 -0
- package/examples/mob_chest/dev/mob_chest_RP/textures/blocks/test_log_oak.png +0 -0
- package/examples/mob_chest/dev/mob_chest_RP/textures/blocks/test_log_top.png +0 -0
- package/examples/mob_chest/dev/mob_chest_RP/textures/flipbook_textures.json +1 -0
- package/examples/mob_chest/dev/mob_chest_RP/textures/item_texture.json +9 -0
- package/examples/mob_chest/dev/mob_chest_RP/textures/items/masterball.png +0 -0
- package/examples/mob_chest/dev/mob_chest_RP/textures/terrain_texture.json +23 -0
- package/examples/mob_chest/dev/mob_chest_RP/ui/_ui_defs.json +3 -0
- package/examples/mob_chest/main.mjs +31 -0
- package/examples/mob_chest/mod.info +7 -0
- package/examples/mob_chest/pack_icon.png +0 -0
- package/examples/mob_chest/res/animation_controllers/mob_chest.animation_controllers.json +30 -0
- package/examples/mob_chest/res/animations/animation_item.animation.json +34 -0
- package/examples/mob_chest/res/animations/large_item.animation.json +27 -0
- package/examples/mob_chest/res/animations/mob_chest.animation.json +64 -0
- package/examples/mob_chest/res/models/blocks/crop.geo.json +48 -0
- package/examples/mob_chest/res/models/blocks/cube.geo.json +35 -0
- package/examples/mob_chest/res/models/blocks/empty.geo.json +35 -0
- package/examples/mob_chest/res/models/entity/mob_chest.geo.json +98 -0
- package/examples/mob_chest/res/textures/blocks/entity/double_normal.png +0 -0
- package/examples/mob_chest/res/textures/blocks/entity/none.png +0 -0
- package/examples/mob_chest/res/textures/blocks/entity/normal.png +0 -0
- package/examples/mob_chest/res/textures/blocks/test_log_oak.png +0 -0
- package/examples/mob_chest/res/textures/blocks/test_log_top.png +0 -0
- package/examples/mob_chest/res/textures/items/masterball.png +0 -0
- package/examples/mob_chest/resource/cube.bbmodel +1 -0
- package/examples/mob_chest/resource/flipbook_item.bbmodel +1 -0
- package/examples/mob_chest/resource/flipbook_item.geo.bbmodel +1 -0
- package/examples/mob_chest/resource/flipbook_item.geo.json +3124 -0
- package/examples/mob_chest/resource/mob_chest.bbmodel +1 -0
- package/examples/mob_chest/scripts/custom_components/block/block_with_entity.js +46 -0
- package/examples/mob_chest/scripts/custom_components/block/cropComponent.js +50 -0
- package/examples/mob_chest/scripts/custom_components/items/gui_book.js +37 -0
- package/examples/mob_chest/scripts/custom_components/registry.js +25 -0
- package/examples/mob_chest/scripts/index.js +4 -0
- package/examples/test/build.config +29 -0
- package/examples/test/dev/test_BP/blocks/sapdon_ore_cinnabar.json +15 -15
- package/examples/test/dev/test_BP/blocks/sapdon_test_block.json +15 -15
- package/examples/test/dev/test_BP/blocks/sapdon_test_crop.json +191 -191
- package/examples/test/dev/test_BP/blocks/sapdon_wire.json +102 -102
- package/examples/test/dev/test_BP/entities/sapdon_test_projectile.json +56 -55
- package/examples/test/dev/test_BP/feature_rules/ore_cinnabar_orefeatre_rule.json +52 -52
- package/examples/test/dev/test_BP/feature_rules/overworld_underground_titanite_ore_feature.json +52 -52
- package/examples/test/dev/test_BP/features/ore_cinnabar_ore_feature.json +16 -16
- package/examples/test/dev/test_BP/features/titanite_ore_feature.json +22 -22
- package/examples/test/dev/test_BP/items/sapdon_chest.json +22 -22
- package/examples/test/dev/test_BP/items/sapdon_test_book.json +19 -0
- package/examples/test/dev/test_BP/items/sapdon_test_food.json +25 -25
- package/examples/test/dev/test_BP/items/sapdon_test_item.json +30 -30
- package/examples/test/dev/test_BP/manifest.json +63 -59
- package/examples/test/dev/test_BP/recipes/sapdon_test_furnace.json +12 -12
- package/examples/test/dev/test_BP/scripts/custom_components/cropComponent.js +1 -10
- package/examples/test/dev/test_BP/scripts/custom_components/items/gui_book.js +37 -0
- package/examples/test/dev/test_BP/scripts/custom_components/registry.js +20 -0
- package/examples/test/dev/test_BP/scripts/index.js +4 -3
- package/examples/test/dev/test_RP/attachables/sapdon_chest.json +24 -24
- package/examples/test/dev/test_RP/blocks.json +42 -42
- package/examples/test/dev/test_RP/entity/sapdon_test_projectile.json +27 -27
- package/examples/test/dev/test_RP/manifest.json +43 -43
- package/examples/test/dev/test_RP/models/blocks/arcane_workbench.geo.json +105 -105
- package/examples/test/dev/test_RP/models/blocks/jar_normal.geo.json +46 -46
- package/examples/test/dev/test_RP/models/blocks/jar_normal_0.geo.json +58 -58
- package/examples/test/dev/test_RP/models/blocks/jar_normal_1.geo.json +58 -58
- package/examples/test/dev/test_RP/models/blocks/jar_normal_2.geo.json +58 -58
- package/examples/test/dev/test_RP/models/blocks/jar_normal_3.geo.json +58 -58
- package/examples/test/dev/test_RP/models/blocks/wire.geo.json +153 -153
- package/examples/test/dev/test_RP/textures/item_texture.json +788 -788
- package/examples/test/dev/test_RP/textures/items/seals/seal_breaker.png.mcmeta +5 -5
- package/examples/test/dev/test_RP/textures/items/seals/seal_butcher.png.mcmeta +5 -5
- package/examples/test/dev/test_RP/textures/items/seals/seal_empty.png.mcmeta +5 -5
- package/examples/test/dev/test_RP/textures/items/seals/seal_empty_advanced.png.mcmeta +5 -5
- package/examples/test/dev/test_RP/textures/items/seals/seal_fill.png.mcmeta +5 -5
- package/examples/test/dev/test_RP/textures/items/seals/seal_fill_advanced.png.mcmeta +5 -5
- package/examples/test/dev/test_RP/textures/items/seals/seal_guard.png.mcmeta +5 -5
- package/examples/test/dev/test_RP/textures/items/seals/seal_guard_advanced.png.mcmeta +5 -5
- package/examples/test/dev/test_RP/textures/items/seals/seal_harvest.png.mcmeta +5 -5
- package/examples/test/dev/test_RP/textures/items/seals/seal_lumber.png.mcmeta +5 -5
- package/examples/test/dev/test_RP/textures/items/seals/seal_pickup.png.mcmeta +5 -5
- package/examples/test/dev/test_RP/textures/items/seals/seal_pickup_advanced.png.mcmeta +5 -5
- package/examples/test/dev/test_RP/textures/items/seals/seal_provider.png.mcmeta +5 -5
- package/examples/test/dev/test_RP/textures/items/seals/seal_use.png.mcmeta +5 -5
- package/examples/test/dev/test_RP/textures/items/wand/cap_thaumium.png.mcmeta +11 -11
- package/examples/test/dev/test_RP/textures/items/wand/cap_void.png.mcmeta +11 -11
- package/examples/test/dev/test_RP/textures/items/wand/focus_pech.png.mcmeta +2 -2
- package/examples/test/dev/test_RP/textures/items/wand/focus_portablehole.png.mcmeta +2 -2
- package/examples/test/dev/test_RP/textures/items/wand/focus_primal.png.mcmeta +2 -2
- package/examples/test/dev/test_RP/textures/items/wand/focus_shard.png.mcmeta +2 -2
- package/examples/test/dev/test_RP/textures/items/wand/focus_warding.png.mcmeta +2 -2
- package/examples/test/dev/test_RP/textures/items/wand/rod_primal_mat.png.mcmeta +44 -44
- package/examples/test/dev/test_RP/textures/terrain_texture.json +136 -136
- package/examples/test/dev/test_RP/ui/_ui_defs.json +6 -0
- package/examples/test/dev/test_RP/ui/guidebook.json +446 -0
- package/examples/test/dev/test_RP/ui/server_form.json +91 -0
- package/examples/test/main.mjs +46 -1
- package/examples/test/res/models/blocks/arcane_workbench.geo.json +105 -105
- package/examples/test/res/models/blocks/jar_normal.geo.json +46 -46
- package/examples/test/res/models/blocks/jar_normal_0.geo.json +58 -58
- package/examples/test/res/models/blocks/jar_normal_1.geo.json +58 -58
- package/examples/test/res/models/blocks/jar_normal_2.geo.json +58 -58
- package/examples/test/res/models/blocks/jar_normal_3.geo.json +58 -58
- package/examples/test/res/models/blocks/wire.geo.json +153 -153
- package/examples/test/res/textures/items/seals/seal_breaker.png.mcmeta +5 -5
- package/examples/test/res/textures/items/seals/seal_butcher.png.mcmeta +5 -5
- package/examples/test/res/textures/items/seals/seal_empty.png.mcmeta +5 -5
- package/examples/test/res/textures/items/seals/seal_empty_advanced.png.mcmeta +5 -5
- package/examples/test/res/textures/items/seals/seal_fill.png.mcmeta +5 -5
- package/examples/test/res/textures/items/seals/seal_fill_advanced.png.mcmeta +5 -5
- package/examples/test/res/textures/items/seals/seal_guard.png.mcmeta +5 -5
- package/examples/test/res/textures/items/seals/seal_guard_advanced.png.mcmeta +5 -5
- package/examples/test/res/textures/items/seals/seal_harvest.png.mcmeta +5 -5
- package/examples/test/res/textures/items/seals/seal_lumber.png.mcmeta +5 -5
- package/examples/test/res/textures/items/seals/seal_pickup.png.mcmeta +5 -5
- package/examples/test/res/textures/items/seals/seal_pickup_advanced.png.mcmeta +5 -5
- package/examples/test/res/textures/items/seals/seal_provider.png.mcmeta +5 -5
- package/examples/test/res/textures/items/seals/seal_use.png.mcmeta +5 -5
- package/examples/test/res/textures/items/wand/cap_thaumium.png.mcmeta +11 -11
- package/examples/test/res/textures/items/wand/cap_void.png.mcmeta +11 -11
- package/examples/test/res/textures/items/wand/focus_pech.png.mcmeta +2 -2
- package/examples/test/res/textures/items/wand/focus_portablehole.png.mcmeta +2 -2
- package/examples/test/res/textures/items/wand/focus_primal.png.mcmeta +2 -2
- package/examples/test/res/textures/items/wand/focus_shard.png.mcmeta +2 -2
- package/examples/test/res/textures/items/wand/focus_warding.png.mcmeta +2 -2
- package/examples/test/res/textures/items/wand/rod_primal_mat.png.mcmeta +44 -44
- package/examples/test/scripts/custom_components/cropComponent.js +1 -10
- package/examples/test/scripts/custom_components/items/gui_book.js +37 -0
- package/examples/test/scripts/custom_components/registry.js +20 -0
- package/examples/test/scripts/index.js +4 -3
- package/log.md +8 -0
- package/package.json +4 -1
- package/src/cli/build.js +210 -210
- package/src/cli/load.js +116 -112
- package/src/cli/tools/textureSet.js +114 -114
- package/src/cli/utils.js +82 -82
- package/src/core/addon/controllers/animation_controller.js +80 -0
- package/src/core/addon/entity/entity.js +52 -51
- package/src/core/block/GeometryBlock.js +8 -0
- package/src/core/block/OreBlock.js +1 -0
- package/src/core/block/TileBlock.js +117 -0
- package/src/core/block/block.js +106 -106
- package/src/core/block/blockComponent.js +557 -557
- package/src/core/block/cropBlock.js +1 -1
- package/src/core/entity/BasicEntity.js +195 -166
- package/src/core/entity/bundles/BasicBundle.js +51 -0
- package/src/core/factory/BlockFactory.js +166 -158
- package/src/core/factory/EntityFactory.js +82 -82
- package/src/core/factory/ItemFactory.js +120 -95
- package/src/core/factory/RecipeFactory.js +46 -46
- package/src/core/index.js +2 -1
- package/src/core/item/Item.js +96 -96
- package/src/core/item/ItemComponents.js +251 -235
- package/src/core/item/armor.js +117 -89
- package/src/core/item/attachable.js +33 -33
- package/src/core/item/food.js +61 -61
- package/src/core/registry.js +16 -16
- package/src/core/ui/Properties/{Grid.js → GridProp.js} +2 -2
- package/src/core/ui/Properties/Sound.js +72 -0
- package/src/core/ui/elements/Button.js +111 -0
- package/src/core/ui/elements/CollectionPanel.js +61 -0
- package/src/core/ui/elements/Grid.js +24 -0
- package/src/core/ui/elements/Image.js +4 -0
- package/src/core/ui/elements/Label.js +10 -2
- package/src/core/ui/elements/Panel.js +7 -0
- package/src/core/ui/elements/ScrollingPanel.js +68 -0
- package/src/core/ui/elements/StackPanel.js +40 -0
- package/src/core/ui/elements/UIElement.js +43 -2
- package/src/core/ui/registry/UISystemRegistry.js +35 -0
- package/src/core/ui/systems/UISystem.js +9 -5
- package/src/core/ui/systems/guidebook.js +299 -0
- package/src/core/ui/systems/server_form.js +94 -83
- package/src/templates/test_sapdon/build.config +28 -28
- package/src/templates/test_sapdon/res/animations/animation_item.animation.json +34 -0
- package/src/templates/test_sapdon/res/animations/large_item.animation.json +27 -0
- package/src/templates/test_sapdon/res/models/entity/animation/animation_item.geo.json +26 -0
- package/src/templates/test_sapdon/res/models/entity/animation/large_item.geo.json +28 -0
- package/src/templates/test_sapdon/res/textures/blocks/none.png +0 -0
- package/src/templates/test_sapdon/scripts/custom_components/cropComponent.js +50 -0
- package/src/templates/test_sapdon/scripts/custom_components/items/gui_book.js +37 -0
- package/src/templates/test_sapdon/scripts/custom_components/registry.js +25 -0
- package/examples/masterball/dev/masterball[1.20.20+].mcaddon.zip +0 -0
- package/examples/masterball/dev/masterball_BP/masterball_BP_1_20_20/entities/sapdon_projectile_masterball.json +0 -56
- package/examples/masterball/dev/masterball_BP/masterball_BP_1_20_20/items/sapdon_caught_masterball.json +0 -32
- package/examples/masterball/dev/masterball_BP/masterball_BP_1_20_20/items/sapdon_uncaught_masterball.json +0 -31
- package/examples/masterball/dev/masterball_BP/masterball_BP_1_20_20/scripts/index.js +0 -159
- package/examples/test/dev/test_BP/biomes/test_biome.json +0 -48
- package/examples/test/dev/test_BP/blocks/sapdon_block.json +0 -111
- package/examples/test/dev/test_BP/entities/sapdon_body.json +0 -118
- package/examples/test/dev/test_BP/entities/sapdon_test_entity_ctrl1.json +0 -55
- package/examples/test/dev/test_BP/entities/sapdon_test_entity_ctrl2.json +0 -61
- package/examples/test/dev/test_BP/entities/sapdon_test_entity_header.json +0 -408
- package/examples/test/dev/test_RP/entity/sapdon_body.json +0 -44
- package/examples/test/dev/test_RP/entity/sapdon_test_entity_ctrl1.json +0 -38
- package/examples/test/dev/test_RP/entity/sapdon_test_entity_ctrl2.json +0 -38
- package/examples/test/dev/test_RP/entity/sapdon_test_entity_header.json +0 -44
- package/src/cli/build.config +0 -4
- package/src/core/ui/registry/ServerUISystem.js +0 -19
- /package/examples/{masterball/dev/masterball_BP/masterball_BP_1_20_20 → guidebook/dev/guidebook_BP}/pack_icon.png +0 -0
package/LICENSE
CHANGED
package/doc/BlockAPI.md
ADDED
|
@@ -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): 可选参数配置对象。默认为空对象。
|
|
Binary file
|
|
@@ -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": "
|
|
5
|
-
"description": "
|
|
6
|
-
"version": [
|
|
7
|
-
1,
|
|
8
|
-
0,
|
|
9
|
-
0
|
|
10
|
-
],
|
|
11
|
-
"uuid": "
|
|
12
|
-
"min_engine_version": [
|
|
13
|
-
1,
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
]
|
|
17
|
-
},
|
|
18
|
-
"modules": [
|
|
19
|
-
{
|
|
20
|
-
"description": "行为模块",
|
|
21
|
-
"type": "data",
|
|
22
|
-
"uuid": "
|
|
23
|
-
"version": [
|
|
24
|
-
1,
|
|
25
|
-
0,
|
|
26
|
-
0
|
|
27
|
-
]
|
|
28
|
-
},
|
|
29
|
-
{
|
|
30
|
-
"description": "脚本模块",
|
|
31
|
-
"type": "script",
|
|
32
|
-
"uuid": "
|
|
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.
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
"
|
|
53
|
-
"sapdon"
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
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,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
|
+
}
|