From 8c017a335b789d03df6c84a47eb56748ef446e66 Mon Sep 17 00:00:00 2001 From: balugaq <129668183+balugaq@users.noreply.github.com> Date: Thu, 30 Jul 2026 19:09:15 +0800 Subject: [PATCH] update wiki --- .../learn-to-write-addons-information.md | 2 +- pages/file/context-options.md | 2 + pages/file/super_multi_block_machines.md | 30 ++-- .../super_multi_block_machines.md | 139 +++++++++++++++++- 4 files changed, 154 insertions(+), 19 deletions(-) diff --git a/pages/addon/learn-to-write-addons-information.md b/pages/addon/learn-to-write-addons-information.md index e062e9c..ae7a720 100644 --- a/pages/addon/learn-to-write-addons-information.md +++ b/pages/addon/learn-to-write-addons-information.md @@ -14,7 +14,7 @@ version: "1.0" description: "RSC示例附属" authors: ["mmmjjkx"] repo: "SlimefunReloadingProject/rsc-example" -idPattern: EXAMPLE_%0 +idPattern: EXAMPLE_%0 # 此配置可能会导致附属加载失败,谨慎使用 loadStartTexts: - "====" - "Example附属 开始加载" diff --git a/pages/file/context-options.md b/pages/file/context-options.md index 68e9a21..654f35f 100644 --- a/pages/file/context-options.md +++ b/pages/file/context-options.md @@ -22,6 +22,7 @@ OBJECT_FOR_REGISTER_2: - "version >= 1.18.1" - "itemexist EXAMPLE_ITEM" unfinished: false + logitech_stackable: true ``` | 内容 | 描述 | @@ -32,6 +33,7 @@ OBJECT_FOR_REGISTER_2: | register.warn | 当不满足内容注册条件时发出警告。 | | register.conditions | 详见**关于 conditions**。 | | register.unfinished | 设置当前内容是否未完成,如果内容未完成会直接跳过加载。 | +| register.logitech_stackable | 设置机器是否能在逻辑工艺-堆叠机器/生成器中被堆叠 | ## 关于 id_alias diff --git a/pages/file/super_multi_block_machines.md b/pages/file/super_multi_block_machines.md index 0c55a52..64ff218 100644 --- a/pages/file/super_multi_block_machines.md +++ b/pages/file/super_multi_block_machines.md @@ -36,6 +36,11 @@ RSC_EXAMPLE_SUPER_MULTIBLOCK_MACHINE: output: [24, 25] displayProjectiles: true + checkFormed: true + openMenuWhenClickedParts: true + noMenuWhenNotFormed: true + allowSwitchDisplayLayer: true + defaultNotice: true structure: - @@ -54,7 +59,7 @@ RSC_EXAMPLE_SUPER_MULTIBLOCK_MACHINE: mapping: o: material_type: slimefun - material: RSC_EXAMPLE_SUPER_MULTIBLOCK_MACHINE + material: RSC_EXAMPLE_SUPER_MULTIBLOCK_MACHINE # 引用自身 core: true a1: @@ -103,11 +108,16 @@ RSC_EXAMPLE_SUPER_MULTIBLOCK_MACHINE: | script | 物品引用的脚本,设置物品对应的脚本文件,双引号内填脚本对应的文件名称。 | | | \*input | 物品输入的对应槽位。
**请不要在菜单中为这些槽位设置物品!** | | | \*output | 物品输出的对应槽位。
**请不要在菜单中为这些槽位设置物品!** | | -| displayProjectiles | 是否显示投射物效果。 | | +| displayProjectiles | 是否显示方块投影。默认 `true` | | +| checkFormed | 机器tick是否需要检测是否搭建完成。默认 `true` | | +| openMenuWhenClickedParts | 点击机器部件时是否同样打开核心菜单。默认 `true` | | +| noMenuWhenNotFormed | 结构未形成时是否禁止打开菜单。默认 `true` | | +| allowSwitchDisplayLayer | 是否允许切换方块投影显示层。默认 `true` | | +| defaultNotice | 是否显示默认提示信息。默认 `true` | | | \*structure | 多方块机器的3D结构布局,每一层为一个列表,每一行用字符串表示,每个字符代表一个方块位置。其中,若干个 "_" 组成的字符串表示空位 | | | \*mapping | 结构中字符到方块的映射,定义每个字符代表的方块类型。 | | | mapping.#.material_type | 方块材质类型,支持`mc`(原版物品)、`slimefun`(粘液物品)、`custom`(脚本检测)。 | | -| mapping.#.material | 方块显示材质/方块显示数据。 | | +| mapping.#.material | 方块显示材质/投影显示数据。 | | | mapping.#.core | 是否为核心方块,标记为`true`的方块是机器的核心,放置该方块后检测结构。 | | | recipes.#.seconds | 合成所需时间,最大为 2147483647。 **实际合成时间(单位:粘液刻):(秒数×2) / 机器运行速度** | | | recipes.#.input | 合成所需的输入物品。 | | @@ -127,9 +137,9 @@ RSC_EXAMPLE_SUPER_MULTIBLOCK_MACHINE: 1. **分层结构**:每一个外层列表项代表一层,从上到下排列 2. **每行表示**:每层中的每个字符串代表一行 -3. **字符映射**:字符串中的每个字符(或字符组合)对应`mapping`中定义的方块类型 -4. **空格分隔**:每个字符或字符组合之间用空格分隔,如`"a1 b1 c1"`表示一行有三个方块,分别对应`a1`、`b1`、`c1` -5. **空位置**:使用`__`表示空位置,不放置任何方块 +3. **字符映射**:每行中以空格分隔的每个字符串对应`mapping`中定义的方块类型 +4. **空格分隔**:每个方块表示之间用空格分隔,如`"a1 b1 c1"`表示一行有三个方块,分别对应`a1`、`b1`、`c1` +5. **空位置**:使用若干个`_`表示空位置,不放置任何方块 ### 映射配置说明 @@ -137,10 +147,10 @@ RSC_EXAMPLE_SUPER_MULTIBLOCK_MACHINE: 1. **核心方块**:必须有且仅有一个方块标记为`core: true`,这个方块是机器的核心,玩家放置该方块后会自动检测周围结构是否匹配 2. **材质类型**: - - `mc`:使用Minecraft原版方块,材质名使用方块ID(如`IRON_BLOCK`)或完整路径(如`minecraft:iron_block`) - - `slimefun`:使用粘液科技物品,材质名使用粘液科技物品ID - - `custom`:使用自定义物品,材质名使用完整的物品路径(如`minecraft:stone`),适用于需要指定具体方块状态的情况 -3. **方块状态**:可以使用方块状态,如`minecraft:furnace[lit=true]`,适用于`mc`和`custom`材质类型 + - `mc`:使用原版方块 + - `slimefun`:使用粘液科技方块 + - `custom`:使用自定义脚本检测 +3. **投影显示数据**:可以使用方块数据 (如`minecraft:furnace[lit=true]`) 或 方块ID (`iron_block`), 适用于`mc`和`custom`材质类型 ### 工作原理 diff --git a/pages/scripts-basic/super_multi_block_machines.md b/pages/scripts-basic/super_multi_block_machines.md index 6c5185a..45f5bc4 100644 --- a/pages/scripts-basic/super_multi_block_machines.md +++ b/pages/scripts-basic/super_multi_block_machines.md @@ -7,13 +7,21 @@ 超大多方块机器脚本支持以下函数: * `onTick(block, machine, ctx)` - 每粘液刻触发 -* `onFormed(machine)` - 结构形成时触发 -* `onUnformed(machine)` - 结构破坏时触发 +* `onFormed(partLocation, machine)` - 多方块结构形成时触发 +* `onUnformed(partLocation, machine)` - 多方块结构破坏时触发 +* `onDestroy(machine)` - 多方块结构破坏或核心破坏时触发 * `onInteract(event, machine)` - 玩家交互时触发 * `isOfPart(location, multiblock)` - 检查位置是否为多方块的一部分 -* `cannotStartSuperMultiBlock(location, machine)` - 阻止机器启动 +* `cannotStartSuperMultiBlock(location, machine)` - 多方块无法开始搭建时触发 +* `onClickedPartBlock(event, machine)` - 点击部件方块时触发 +* `onClickedPartBlockNotFormed(event, machine)` - 多方块结构未形成时,点击部件方块触发 +* `autoSwitchedDisplayLayer(layer, machine)` - 自动切换显示层时触发 +* `switchDisplayLayer(layerIndex, machine)` - 手动切换显示层时触发 +* `formedLayer(layer, machine)` - 一层搭建完成时触发 其中: +* `ctx` = TickContext +* `event` = PlayerInteractEvent * `machine` = [CustomSuperMultiBlockMachine](https://github.com/balugaq/RykenSlimeCustomizer/blob/main/src/main/java/org/lins/mmmjjkx/rykenslimefuncustomizer/objects/customs/machine/CustomSuperMultiBlockMachine.java) * `multiblock` = [SuperMultiBlock](https://github.com/balugaq/RykenSlimeCustomizer/blob/main/src/main/java/org/lins/mmmjjkx/rykenslimefuncustomizer/super_multiblock/SuperMultiBlock.java) @@ -37,16 +45,16 @@ function onTick(block, machine, ctx) { |--|---|--| |block|[Block](https://jd.papermc.io/paper/26.2/org/bukkit/block/Block.html)|多方块机器的核心方块| |machine|[CustomSuperMultiBlockMachine](https://github.com/balugaq/RykenSlimeCustomizer/blob/main/src/main/java/org/lins/mmmjjkx/rykenslimefuncustomizer/objects/customs/machine/CustomSuperMultiBlockMachine.java)|超大多方块机器的实例| -|ctx|[TickContext](https://github.com/balugaq/RykenSlimeCustomizer/blob/main/src/main/java/org/lins/mmmjjkx/rykenslimefuncustomizer/objects/customs/machine/CustomSuperMultiBlockMachine.java#L103)|脚本上下文,用于控制默认调用| +|ctx|[TickContext](https://github.com/balugaq/RykenSlimeCustomizer/blob/main/src/main/java/org/lins/mmmjjkx/rykenslimefuncustomizer/objects/customs/machine/TickContext)|脚本上下文,用于控制默认调用| ## onFormed -当超大多方块结构形成后触发。 +当超大多方块结构搭建完成时触发。 ### 方法体 ```js -function onFormed(machine) { +function onFormed(partLocation, machine) { } ``` @@ -55,16 +63,36 @@ function onFormed(machine) { |字段|类型|描述| |--|---|--| +|partLocation|[Location](https://jd.papermc.io/paper/26.2/org/bukkit/Location.html)|部件位置| |machine|[CustomSuperMultiBlockMachine](https://github.com/balugaq/RykenSlimeCustomizer/blob/main/src/main/java/org/lins/mmmjjkx/rykenslimefuncustomizer/objects/customs/machine/CustomSuperMultiBlockMachine.java)|超大多方块机器的实例| ## onUnformed -当超大多方块结构被破坏后触发。 +当超大多方块结构被破坏时触发 ### 方法体 ```js -function onUnformed(machine) { +function onUnformed(partLocation, machine) { + +} +``` + +### 入参 + +|字段|类型|描述| +|--|---|--| +|partLocation|[Location](https://jd.papermc.io/paper/26.2/org/bukkit/Location.html)|部件位置| +|machine|[CustomSuperMultiBlockMachine](https://github.com/balugaq/RykenSlimeCustomizer/blob/main/src/main/java/org/lins/mmmjjkx/rykenslimefuncustomizer/objects/customs/machine/CustomSuperMultiBlockMachine.java)|超大多方块机器的实例| + +## onDestroy + +当超大多方块结构破坏或核心破坏时触发 + +### 方法体 + +```js +function onDestroy(machine) { } ``` @@ -137,3 +165,98 @@ function cannotStartSuperMultiBlock(location, machine) { |--|---|--| |location|[Location](https://jd.papermc.io/paper/26.2/org/bukkit/Location.html)|多方块机器核心的位置| |machine|[CustomSuperMultiBlockMachine](https://github.com/balugaq/RykenSlimeCustomizer/blob/main/src/main/java/org/lins/mmmjjkx/rykenslimefuncustomizer/objects/customs/machine/CustomSuperMultiBlockMachine.java)|超大多方块机器的实例| + +## onClickedPartBlock + +当玩家点击部件方块时触发。 + +### 方法体 + +```js +function onClickedPartBlock(event, machine) { + +} +``` + +### 入参 + +|字段|类型|描述| +|--|---|--| +|event|[PlayerInteractEvent](https://jd.papermc.io/paper/26.2/org/bukkit/event/player/PlayerInteractEvent.html)|玩家交互事件| +|machine|[CustomSuperMultiBlockMachine](https://github.com/balugaq/RykenSlimeCustomizer/blob/main/src/main/java/org/lins/mmmjjkx/rykenslimefuncustomizer/objects/customs/machine/CustomSuperMultiBlockMachine.java)|超大多方块机器的实例| + +## onClickedPartBlockNotFormed + +当玩家点击未形成的部件方块,且多方块结构未搭建完成,且 `noMenuWhenNotFormed = true` 时触发。 + +### 方法体 + +```js +function onClickedPartBlockNotFormed(event, machine) { + +} +``` + +### 入参 + +|字段|类型|描述| +|--|---|--| +|event|[PlayerInteractEvent](https://jd.papermc.io/paper/26.2/org/bukkit/event/player/PlayerInteractEvent.html)|玩家交互事件| +|machine|[CustomSuperMultiBlockMachine](https://github.com/balugaq/RykenSlimeCustomizer/blob/main/src/main/java/org/lins/mmmjjkx/rykenslimefuncustomizer/objects/customs/machine/CustomSuperMultiBlockMachine.java)|超大多方块机器的实例| + +## autoSwitchedDisplayLayer + +当 RSC 自动调用切换显示层时触发。 + +### 方法体 + +```js +function autoSwitchedDisplayLayer(layer, machine) { + +} +``` + +### 入参 + +|字段|类型|描述| +|--|---|--| +|layer|int|指定的层的y| +|machine|[CustomSuperMultiBlockMachine](https://github.com/balugaq/RykenSlimeCustomizer/blob/main/src/main/java/org/lins/mmmjjkx/rykenslimefuncustomizer/objects/customs/machine/CustomSuperMultiBlockMachine.java)|超大多方块机器的实例| + +## switchDisplayLayer + +当玩家手动切换显示层时触发。 + +### 方法体 + +```js +function switchDisplayLayer(layerIndex, machine) { + +} +``` + +### 入参 + +|字段|类型|描述| +|--|---|--| +|layerIndex|int|切换的层的索引,其中 `-999` 表示显示全部投影| +|machine|[CustomSuperMultiBlockMachine](https://github.com/balugaq/RykenSlimeCustomizer/blob/main/src/main/java/org/lins/mmmjjkx/rykenslimefuncustomizer/objects/customs/machine/CustomSuperMultiBlockMachine.java)|超大多方块机器的实例| + +## formedLayer + +当某一层完全搭建完成时触发。 + +### 方法体 + +```js +function formedLayer(layer, machine) { + +} +``` + +### 入参 + +|字段|类型|描述| +|--|---|--| +|layer|int|搭建完成的层的y| +|machine|[CustomSuperMultiBlockMachine](https://github.com/balugaq/RykenSlimeCustomizer/blob/main/src/main/java/org/lins/mmmjjkx/rykenslimefuncustomizer/objects/customs/machine/CustomSuperMultiBlockMachine.java)|超大多方块机器的实例| \ No newline at end of file