はじめに
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」を使用しています。
以前は自宅PCでホストしていましたが、PCの電源を切り忘れるストレスや、電気代を考慮して移行しました。シンVPSを選んだ決め手は、圧倒的なコストパフォーマンスです。
- 月額の安さ 4GBプランでも月額1,200円程度(長期契約なら1,000円以下)と維持費が安く済みます。
- 高速な読み込み 全プランでNVMe SSDを採用しており、ワールドの読み込みや重いコマンド処理でもラグを感じにくいです。
以下のリンクから申し込むと初回利用料金が10%OFFになります。
(1ヶ月以上の契約対象。「安くて速い」サーバーを探している方はぜひ試してみてください)
(10%OFF適用) マルチサーバーの立て方はこちら