From ecec8570afcafaf1a98b7b625db6aea007e548ea Mon Sep 17 00:00:00 2001 From: Frost-ZX Date: Sun, 13 Nov 2022 19:23:39 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=94=AF=E6=8C=81=E5=88=9B=E5=BB=BA?= =?UTF-8?q?=E6=97=8B=E8=BD=AC=E6=96=B9=E5=9D=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 2 ++ kubejs/probe/user/constants.d.ts | 12 +++++++ kubejs/startup_scripts/_main_.js | 48 ++++++++++++++++++++++++++++ kubejs/startup_scripts/wheat_plus.js | 17 +++++++++- 4 files changed, 78 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 4d83a1f..5bb9449 100644 --- a/README.md +++ b/README.md @@ -26,6 +26,8 @@ - [BlockBuilder.java](https://github.com/KubeJS-Mods/KubeJS/blob/1.18/main/common/src/main/java/dev/latvian/mods/kubejs/block/BlockBuilder.java) - [BasicBlockJS.java](https://github.com/KubeJS-Mods/KubeJS/blob/1.18/main/common/src/main/java/dev/latvian/mods/kubejs/block/custom/BasicBlockJS.java) - [WoodenButtonBlockBuilder.java](https://github.com/KubeJS-Mods/KubeJS/blob/1.18/main/common/src/main/java/dev/latvian/mods/kubejs/block/custom/WoodenButtonBlockBuilder.java) +- [Cardinally Orientable Blocks and Shuffle Asset Generation](https://github.com/KubeJS-Mods/KubeJS/pull/459) +- [Basic BlockState Support and Misc Delegate Methods](https://github.com/KubeJS-Mods/KubeJS/pull/464) ### 颜色列表 diff --git a/kubejs/probe/user/constants.d.ts b/kubejs/probe/user/constants.d.ts index 225a849..7e45dcd 100644 --- a/kubejs/probe/user/constants.d.ts +++ b/kubejs/probe/user/constants.d.ts @@ -62,6 +62,18 @@ declare const global: { */ setBlockProps(block: B_Builder, opts: SetBlockPropsOpts): boolean; + /** + * @desc 设置方块水平旋转属性 + * @param block 方块 + * @param type 旋转类型 + * @param model 模型路径 + */ + setHorizontalFacing( + block: B_Builder, + type: 'revert' | 'same', + model: string + ): boolean; + /** * @desc 写入 JSON 文件 * @param path 文件路径,相对于 `.minecraft` diff --git a/kubejs/startup_scripts/_main_.js b/kubejs/startup_scripts/_main_.js index 672d20d..4de095f 100644 --- a/kubejs/startup_scripts/_main_.js +++ b/kubejs/startup_scripts/_main_.js @@ -62,6 +62,54 @@ global.setBlockProps = function (block, opts) { }; +global.setHorizontalFacing = function (block, type, model) { + + const prop = BlockProperties.HORIZONTAL_FACING; + + // 设置模型旋转 + block.blockstateJson = { + 'variants': { + 'facing=north': { model: model, y: 0 }, + 'facing=east': { model: model, y: 90 }, + 'facing=south': { model: model, y: 180 }, + 'facing=west': { model: model, y: 270 } + } + }; + + // 添加属性 + block.property(prop); + + // 处理默认状态 + block.defaultState((ev) => { + ev.set(prop, 'north'); + }); + + // 处理放置状态 + switch (type) { + // 与玩家朝向相反 + case 'revert': + block.placementState((ev) => { + const d = ev.getHorizontalDirection().getOpposite().toString(); + ev.set(prop, d); + }); + break; + // 与玩家朝向相同 + case 'same': + block.placementState((ev) => { + const d = ev.getHorizontalDirection().toString(); + ev.set(prop, d); + }); + break; + // 其它 + default: + console.error(`${LOG_PREFIX} 设置旋转属性失败:参数“type”错误`); + return false; + } + + return true; + +}; + global.writeJSON = function (path, data) { JsonIO.write(path, data); }; diff --git a/kubejs/startup_scripts/wheat_plus.js b/kubejs/startup_scripts/wheat_plus.js index 03d4e01..7202880 100644 --- a/kubejs/startup_scripts/wheat_plus.js +++ b/kubejs/startup_scripts/wheat_plus.js @@ -2,6 +2,7 @@ const defaults = global.defaults; const setBlockProps = global.setBlockProps; +const setHorizontalFacing = global.setHorizontalFacing; const COLORS = global.COLORS; const JSON_ASSETS = global.JSON_ASSETS; @@ -454,18 +455,21 @@ onEvent('block.registry', (event) => { box: [5, 0, 5, 11, 16, 11, true], label: '隔离桩', model: 'common/isolation_pile_a', + orientable: false, }, { name: 'statue_player_alex', box: [4, 0, 6, 12, 31, 10, true], label: '模型(Alex)', model: 'statue/player_alex', + orientable: true, }, { name: 'statue_player_steve', box: [4, 0, 6, 12, 31, 10, true], label: '模型(Steve)', model: 'statue/player_steve', + orientable: true, }, ]; @@ -473,6 +477,7 @@ onEvent('block.registry', (event) => { const id = `${MOD_ID}:${config.name}`; const block = event.create(id, 'basic'); + const model = `${P_BLOCK}/${config.model}`; setBlockProps(block, { boxConfig: config.box, @@ -480,10 +485,14 @@ onEvent('block.registry', (event) => { displayName: config.label, isSolid: false, material: 'stone', - modelPath: `${P_BLOCK}/${config.model}`, + modelPath: model, renderType: 'cutout', }); + if (config.orientable) { + setHorizontalFacing(block, 'revert', model); + } + }); console.info(`${LOG_PREFIX} 注册方块 - 其它 - 完成`); @@ -495,3 +504,9 @@ onEvent('block.registry', (event) => { // console.info(`${LOG_PREFIX} 注册物品 - 开始`); // console.info(`${LOG_PREFIX} 注册物品 - 完成`); // }); + +// 注册声音 +// onEvent('sound.registry', (event) => { +// console.info(`${LOG_PREFIX} 注册声音 - 开始`); +// console.info(`${LOG_PREFIX} 注册声音 - 完成`); +// });