Gametest(scriptingAPI)制作メモ – よく使うやつ

GameTest

別ファイルから関数読み込み

import {setA,setB,setC} from “./fileName.js”;

setA,setB,setCが読み込む関数
from “./fileName.js”;がファイルの名前になる

注意:存在しない関数を読み込むとエラーが発生する

dimensionの定義

const dimension = world.getDimension(‘overworld’);

ファイル上部で定義しておくと良い

メリット:ワールドから何かする時に役立つ

全プレイヤーの取得

    for (let player of dimension.getPlayers())

このコードの場合予めdimensionの定義が必要

サンプル

for (let player of dimension.getPlayers())
{
    player.sendMessage(“こんにちは”);
}

何が起こるか:全プレイヤーにこんにちはとチャットに表示する

■ 広告 ■

エンティティの名前の取得

player.name
player.nameTag

エンティティで.nameはあるか不明(できない場合プレイヤー限定)

.name:ゲーマータグ(初期の名前)を取得します

.nameTag:ネームタグを取得します

使い方

player.nameTag = `${player.name}様`

何が起こるか:プレイヤーのネームタグに様が付く

コマンド実行

前提:dimensionの指定プレイヤー等のエンティティの取得

player.runCommand(`say a`);
player.runCommandAsync(`say a`);

違い:同期実行か非同期実行か

制限:Asyncの方は1tickに実行可能な数に限りがあります

ノックバックを発生させる

前提:プレイヤー等のエンティティの取得

player.applyKnockback(0, 0, 0, 0.2)

詳細はこちら(丸投げ)

注意点:ノックバック耐性に依存するためノックバック耐性が100%だと意味が無い

タグの有無の確認

前提:プレイヤー等のエンティティの取得

player.hasTag(“tag”)

使い方

if(player.hasTag(“hoge”))return;

何が起こるか:プレイヤーがhogeというタグを持っていたら処理を終えます

■ 広告 ■

スニークしているか

前提:プレイヤー等のエンティティの取得

player.isSneaking

使い方

if(player.isSneaking)return;

何が起こるか:プレイヤーがスニークしていたら処理を終えます

アイテムの取得

前提:プレイヤーの取得

 let { container } = player.getComponent(‘minecraft:inventory’);
let Item = container.getItem(player.selectedSlot);

container.setItem(player.selectedSlot,Item);

プレイヤーのインベントリから指定した番号のコンテナのアイテムを取得できます
この場合手に持っているアイテムを取得できます。

全部のインベントリを取得する場合forで回す必要があります。

setItemはアイテムを登録する際に使用します
(今回の場合手持ちのアイテムを取得して取得した手持ちのアイテムを手持ちのアイテムに登録するというかなり無駄をしている謎コードになる)

アイテムの名前の取得,代入


前提:プレイヤーの取得
ItemにはgetItemで得たアイテムスタックが入っています
containerにはプレイヤーのコンテナが入っています

取得

let name = Item.nameTag;

注意:金床などで変更していないとエラー。つまりアイテム自体の名前を取る事はできません

代入

Item.nameTag = “伝説の剣”;
container.setItem(player.selectedSlot,Item);

注意:setItemを行わないと反映されません

アイテムの説明文(Lore)の取得

前提:
ItemにはgetItemで得たアイテムスタックが入っています
containerにはプレイヤーのコンテナが入っています

取得

let lore = Item.getLore();

代入

Item.setLore([“レア度:10″,”とても強い”]);
container.setItem(player.selectedSlot,Item);

注意:setItemを行わないと反映されません

■ 広告 ■

formの表示 (サーバーフォーム)

ActionFormData()

const f = new ActionFormData()
.title(“§dマップ移動”)
.body(“§f移動するエリアを選択して下さい”)
.button(`岩山`)
.button(`草原`,”テクスチャパスを書けばボタンの横にテクスチャ表示も可能”)
f.show(player).then(response =>
{
if(response.canceled)return;
switch(response.selection)省略
});

title:フォームの名前を決める

.body:本文。フォームの中に表示する文字を決める事ができる
.button:表示するボタンの設定、複数個可能

response.canceled:Xボタンを押した場合

押したボタンの取得:response.selectionに入っている

returnせずフォームを表示する関数を最後に表示するようにすれば無限に表示させることも可能

ModalFormData

const f= new ModalFormData()
f.title(“購入する数を選んで下さい§r”);
f.slider(`所持金${gold}G`, 0,64, 1, 0)
f.show(player).then(response =>
…省略

slider:スライダーを出す

slider(ラベル,最小値,最大値, 動く量, 初期値)

slider以外扱った事が無いので他の要素の解説はドキュメントに任せます

詳しくはこちら

ダイナミックプロパティ(DynamicProperty)のセット

前提:プレイヤー等の取得

player.setDynamicProperty(“propertyName”,1);

音を鳴らす playSound

前提:プレイヤーの取得

player.playSound(“sound”, {location:{x, y:y+0.5, z}, volume:1,pitch:1});

“sound”:サウンド名

volume:音量

pitch:ピッチ

利点:runCommandを使用しないためこっちの方が軽い(恐らく)

tellrawの代わり sendMessage

前提:プレイヤーの取得

player.sendMessage(“Hi”);

tellrawと同じようにメッセージを表示する

利点:runCommandを使用しないためこっちの方が軽い(恐らく)

コメント