注目キーワード

【新鮮】「一撃の剣」を追加するアドオンを配布&解説【マイクラ統合版】

ダウンロードはこちら

https://lemon-slime.com/resources/一撃の剣.zip

上記のリンクをクリックし、zipファイルを解凍してください。中にあるmcaddonファイルを開けばアドオンをインストールできます。※1.21.20~対応済み

解説

長くマインクラフトを遊んでいると、普通のプレイに飽きてくることがあります。もっとスリリングな冒険がしたいですよね?

ということで、「一撃の剣」を追加するアドオンを作成しました。この一撃の剣を装備すると体力が強制的に1になり、どんな攻撃でも受ければ即ゲームオーバーになりますが、その代わりにどんなモブでも一撃で倒すことができます。まさに「諸刃の剣」ですね。本ページではこのアドオンの導入方法・使い方について解説します。

ちなみに、この剣には元ネタがあります。結構有名なゲームですのでご存じの方も多いと思います。

アドオンの使用方法

上記のリンクをクリック&解凍し、中にあるmcaddonファイルを開くことでアドオンのインストールが完了します。ゲームをロードする際、アドオンを導入し、実験的な機能の「ベータAPI」をオンにすることでアドオンが正常に動作します。

本アドオンを導入すると、前述の機能を持つ「一撃の剣」がゲーム内に追加されます。是非、ご活用ください。

クラフトレシピ

一撃の剣はクリエイティブインベントリかgiveコマンドの使用により入手できますが、それとは別にサバイバルで遊ぶ用のクラフトレシピが存在します。それが以下です。

ご覧の通り、木の棒4つで完成します。かなりシンプルですね。

なぜ攻撃力が1なのか?

本家「一撃の剣」はフィールドから持ち出すとその効果は消えて攻撃力が1になりますので、そのオマージュです。本アドオンにおける攻撃力の値は実質的に意味をなしていない(killコマンドで処理しているため。詳細は後述。)ので、この点はあまり気にすることではないでしょう。

制作方法(技術的)

ゲーム内に新規アイテムを追加する方法についてはこちらの記事で解説しております。

それに加えて、本アドオンではAPIスクリプトを使用しております。具体的には、「剣を持っている間は常に体力を1にする」部分と「この剣を持って敵を攻撃すると必ず倒される」部分の2か所についてjavascriptというプログラミング言語を用いて処理しています。

後学のためにその部分のコードについて公開します(上のzipファイルを開けば分かることでもありますが)。

import * as server from '@minecraft/server';

server.world.afterEvents.entityHurt.subscribe(ev => {
    let damage_player = ev.damageSource.damagingEntity;
    if (damage_player != undefined && damage_player.getComponent("minecraft:inventory").container.getItem(damage_player.selectedSlotIndex) != undefined) {
        let item_name = damage_player.getComponent("minecraft:inventory").container.getItem(damage_player.selectedSlotIndex).typeId;
        if (item_name == "lemon_q0v0p:one_blow_sword") {
            ev.hurtEntity.runCommandAsync("kill @s");
        }
    }
});

server.system.runInterval(ev => {
    for (const player of server.world.getAllPlayers()){
        if (player.getComponent("minecraft:inventory").container.getItem(player.selectedSlotIndex) != undefined){
            if (player.getComponent("minecraft:inventory").container.getItem(player.selectedSlotIndex).typeId == "lemon_q0v0p:one_blow_sword"){
                let health_value = player.getComponent(server.EntityComponentTypes.Health).currentValue;
                if (health_value >= 2){
                    player.applyDamage(health_value - 1)
                }
            };
        }
    }
}
);

APIスクリプトの詳細についてはこちらの記事で少し解説しております。

本アドオン使用上の注意点

本アドオンの使用は自由ですが、アドオンの無断転載はお止めください。本アドオンを拡散する場合は、本ページのURLを明記して頂きますようお願い申し上げます。

また、本アドオンに関して不具合やご意見などありましたら、遠慮なくコメントをお願いします。

最新情報をチェックしよう!