はじめに
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が表示されるようになります。是非、お試しください。
次の動画のサムネイルです。