ScriptAPI サンプルコード備忘録(23/11/10)

スポンサーリンク

はじめに

マインクラフト:ver 1.20.41
minecraft/server : 1.7.0-beta

投稿者は素人です。間違えることがあります。
これのシリーズです。
さば2号のgametest(scriptAPI)備忘録 (23/11/01更新)【不定期更新】
https://minecraft-mcworld.com/26465/

サンプルコード

チャット系

/* カスタムコマンド */
/*
 !kill - 自身をキル
 !tp @[name:string] - 指定したプレイヤーにテレポート
*/
world.beforeEvents.chatSend.subscribe(event => {
    const player = event.sender;
    const commands = event.message.split(" ");
    event.cancel = true;
    switch (commands[0]) {
        case "!kill":
            system.run(() => {

                player.kill();

            });
            break;
        case "!tp":
            system.run(() => {
                let targetName,target;

                if (commands[1]) {
                    targetName = commands[1].replace("@", "");
                    target = world.getPlayers({ name: targetName })[0];
              } else {
                    target = player;
                }

                if (target) {
                    player.teleport(target.location,{facingLocation:target.location});
                    player.sendMessage(`${target.name} にテレポートしました`);
                } else {
                    player.sendMessage(`§c"${targetName}" というプレイヤーは見つかりませんでした`);
                }
            });
            break;
        default:
            event.cancel = false;
    }
});
/* 人狼専用チャット */
/*
!jinrou - 人狼チャットの切り替え
*/
world.beforeEvents.chatSend.subscribe(ev => {
const player = ev.sender;
const commands = ev.message.split(" ");
if(commands[0] === "!jinrou") {
ev.cancel = true;
if(player.hasTag("jinrou")) {
system.run(() => {
if(player.hasTag("jinrou_chat")) {
player.removeTag("jinrou_chat");
player.sendMessage("通常チャット に切り替えました");
} else {
player.addTag("jinrou_chat");
player.sendMessage("§c人狼チャット§f に切り替えました");
}
});
} else {
player.sendMessage("§c人狼チャット は使えません");
}
} else if(player.hasTag("jinrou_chat")) {
ev.cancel = true;
world.getPlayers({tags:["jinrou"]}).forEach(jinrou => {
jinrou.sendMessage(`<§cWOLF ${player.name}§f> ${ev.message}`); // => <WOLF Steve> こんにちは
});
}
});

インベントリ系

/* イベントリの内容をチェストにコピーする */

const player = world.getPlayers()[0];
const checkPlayer = world.getPlayers({tags:["check"]})[0];

let hotBarItems = [];
let upItems = [];
const container = checkPlayer.getComponent("inventory").container;

for (let i = 0; i < container.size; i++) {
const item = container.getItem(i);
if(i <= 8) {
hotBarItems.push(item);
} else {
upItems.push(item);
}
}
const hotBarChest = world.getDimension("overworld").getBlock({x:player.location.x,y:player.location.y+2,z:player.location.z});
const upChest = world.getDimension("overworld").getBlock({x:player.location.x,y:player.location.y+3,z:player.location.z});

hotBarChest.setType("minecraft:chest");
upChest.setType("minecraft:chest");

hotBarItems.forEach((item,index) => {
if(item) {
hotBarChest.getComponent("inventory").container.setItem(index,item);
}
});
upItems.forEach((item,index) => {
if(item) {
upChest.getComponent("inventory").container.setItem(index,item);
}
});
※投稿記事に含まれるファイルやリンクにより発生した被害についてクラフターズコロニーは責任を取りません
投稿通報

コメント

コメント通報