【統合版解説】カスタム剣 #2 普通の剣 に引き続き、v.1.21.2で使えるカスタム剣を作ります。
前回はカスタムコンポーネントを利用し、耐久値が正しく減る剣を作りました。
今回はさらにアイテムの使用時に、スピードエフェクトが付く剣を作ります。
ビヘイビアパック
custom_sword_BP/items/speed_sword.json
{
"format_version": "1.21.10",
"minecraft:item": {
"description": {
"identifier": "saba:speed_sword",
"menu_category": {
"category": "Equipment",
"group": "itemGroup.name.sword"
}
},
"components": {
"minecraft:display_name": {
"value": "スピードの剣"
},
"minecraft:icon": {
"textures": {
"default": "saba:speed_sword"
}
},
"minecraft:damage": {
"value": 12
},
"minecraft:durability": {
"max_durability": 1561
},
"minecraft:max_stack_size": {
"value": 1
},
"minecraft:hand_equipped": true,
"minecraft:enchantable": {
"slot": "sword",
"value": 10
},
"minecraft:can_destroy_in_creative": false,
"minecraft:digger": {
"use_efficiency": true,
"destroy_speeds": [
{
"block": "minecraft:web",
"speed": 15
},
{
"block": "minecraft:bamboo",
"speed": 10
}
]
},
"minecraft:interact_button": "スピードアップ", // 「スピードアップ」ボタンを追加する
"minecraft:cooldown": {
"category": "speed_sword",
"duration": 4 // 4秒のクールダウン
},
"minecraft:custom_components": [ // カスタムコンポーネント
"saba:sword_durability",
"saba:use_speed_up" // 使用時にスピードアップするコンポーネント
]
}
}
}
custom_sword_BP/scripts/main.js
import { world } from "@minecraft/server";
// itemDamageChance() , durabilityDamage() は #2 を参照
// カスタムコンポーネントの登録
world.beforeEvents.worldInitialize.subscribe(ev => {
// 剣の耐久値減少のアイテムコンポーネントの登録 #2
ev.itemComponentRegistry.registerCustomComponent("saba:sword_durability", {
// 採掘時の耐久値減少処理
onMineBlock: (ev) => { // 採掘したとき
durabilityDamage(ev.source, ev.itemStack, 2); // 耐久値を2減らす
},
// 攻撃時の耐久値減少処理
onBeforeDurabilityDamage: (ev) => { // 攻撃で耐久値が減少したとき
if (itemDamageChance(ev.itemStack)) {
ev.durabilityDamage = 1; // 減少値を1にする
} else {
ev.durabilityDamage = 0;
}
}
});
// スピードアップのカスタムコンポーネントを登録
ev.itemComponentRegistry.registerCustomComponent("saba:use_speed_up", {
onUse: (ev) => { // アイテムを使用したとき
const source = ev.source;
const itemStack = ev.itemStack;
// アイテムのクールダウンを開始する
itemStack.getComponent("cooldown").startCooldown(source);
// スピードエフェクト(強さ3,パーティクル有) を付与
source.addEffect("speed", 40, { amplifier: 3, showParticles: true });
// random.levelup(ピッチ2) を再生
source.playSound("random.levelup", { pitch: 2 });
// minecraft:sonic_explosion パーティクルを生成
source.dimension.spawnParticle("minecraft:sonic_explosion", source.location);
}
});
});
リソースパック
custom_sword_RP/textures/item_texture.json
{
"resource_pack_name": "custom_sword RP",
"texture_data": {
"saba:test_sword": { // #1 テストの剣
"textures": "textures/items/test_sword"
},
"saba:normal_sword": { // #2 普通の剣
"textures": "textures/items/normal_sword"
},
"saba:speed_sword": { // #3 スピードの剣
"textures": "textures/items/speed_sword"
}
}
}
custom_sword_RP/textures/items/speed_sword.png
動作確認
・アイテムを使うと、スピードエフェクトが付く
タップ操作では、インタラクトボタンが表示される
完成品
zip
https://mega.nz/file/lR5XyRaA#x3OXRhXJScC3qwbSlIhdDe-2OhlwznxdtFWf7p-cHnI
mcaddon
https://mega.nz/file/xVxBlTjS#BpKQcSUrx_rfDxpReT73mYgCYLr4MbpO8ikzNMoggPM
コメント