【ScriptAPI】UIの表示でエラーが出たときの対処法【マイクラ統合版】

はじめに

ScriptAPIでUIを表示できるのは周知のとおりですが、時としてこのようなエラーメッセージが表示されることがあります。

Native function [ActionFormData::] does not have required privileges

本記事では、このエラーに対する対処法を提示します。

UI表示方法

そもそもですが、UIの表示方法に関してはこちらが詳しいです。この記事をご覧になることで、オリジナルのUIを持ったアドオンを制作することが可能になります。

対処法

uiを表示する関数を呼び出す過程で、berforeEventsを使っていませんか?beforeEventsではなく、afterEventsを用いることで問題は解決します。以下は、有効(エラーの出ない)なAPIScriptの例です。

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

//ここにスクリプトを記述

function show_form(player){
    const form = new ui.ActionFormData();
    form.title("Test GUI");
    form.button("Test Button");
    form.button("Test Button 2");
    form.show(player).then((response) => {
        switch(response.selection){
            case 0:
                player.sendMessage("You clicked Test Button!");
                break;
            case 1:
                player.sendMessage("You clicked Test Button 2!");
                break;
            default:
                player.sendMessage("You clicked an unknown button!");
                break;
        }
    }).catch(error =>
        player.sendMessage("An error occurred: " + error.message)
    );
}

server.world.afterEvents.itemUse.subscribe(ev => {
    if (ev.itemStack.typeId == "minecraft:stick"){
        let player = ev.source;
        show_form(player);
    }
});

これを保存し、アドオンを有効化後マインクラフトを起動することで、棒を使うとUIが表示されるようになります。是非、お試しください。

次の動画のサムネイルです。

今回解説したスクリプトを使って、友人・コミュニティー内で24時間いつでも遊べるマルチサーバーを構築したい場合は、VPS(レンタルサーバー)の導入が近道です。

私の開発・検証環境では「シンVPS」を使用しています。

シンVPS コントロールパネル画像

以前は自宅PCでホストしていましたが、PCの電源を切り忘れるストレスや、電気代を考慮して移行しました。シンVPSを選んだ決め手は、圧倒的なコストパフォーマンスです。

  • 月額の安さ 4GBプランでも月額1,200円程度(長期契約なら1,000円以下)と維持費が安く済みます。
  • 高速な読み込み 全プランでNVMe SSDを採用しており、ワールドの読み込みや重いコマンド処理でもラグを感じにくいです。
※最低利用期間が3ヶ月からという縛りはありますが、サーバーを長期で安定運用するならむしろ割安になります。

以下のリンクから申し込むと初回利用料金が10%OFFになります。
(1ヶ月以上の契約対象。「安くて速い」サーバーを探している方はぜひ試してみてください)

シンVPS 公式サイトを見てみる
(10%OFF適用)
マルチサーバーの立て方はこちら
black smartphone displaying error
最新情報をチェックしよう!