はじめに
マインクラフト: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);
}
});
コメント