【統合版アドオン】part-3.5│クラスからインスタンスを生成する

スポンサーリンク

今回はちょい解説なので緩くいきます。

「まずScriptAPIについて知らない」、という方はこちらの、「【統合版アドオン】part-1│究極の機能、ScriptAPIを徹底解説!」で基本的な使い方を解説しているので、見ていない方は見てください。ここでは、リンクの記事の内容を理解していることを前提にしているので、記事を見た後に来るのを推奨します。

~今回の説明に使用させて頂いたサイト~
https://jaylydev.github.io/scriptapi-docs/#documentation

突然ですが、プレイヤーにアイテムを渡す処理をScriptAPIでやりたいなって時、あると思うんですよ。
今回は、giveで渡すとアイテムを操作できないので、プレイヤーのインベントリから直接渡します。
そんな時、どうやって新たなアイテムを定義するのかっていう話です。

そんな時は、constructorという機能を使います。
この機能は特定のクラスにある、クラスからインスタンスを生成する機能です。
無いクラスもあります。

そのクラスでのconstructorの使い方は、こんな感じで書いてあります。(今回はItemStackのconstructor)

%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88-2024-03-27-141213.png

見ての通り前にnewがあるfunctionみたいな感じで、引数があります。
今回の例で行くと、第一引数にアイテムのIDかItemTypeが入り、第二引数にアイテムの個数が入ります。
ちなみに自分が困ったことがあるので説明すると、ItemTypeはItemTypesクラスのgetというメゾットの返り値です。

これらの機能を使うには、生成に使うクラスをインポートする必要があります。

例:

import { ItemStack } from "@minecraft/server";

サンプルコード

チャットに.appleと入力したら説明欄にプレイヤーの名前が入ったリンゴを渡す

import { world, system, ItemStack, ItemTypes } from "@minecraft/server";

world.beforeEvents.chatSend.subscribe(ev => {
ev.cancel = true;
system.run(() => {
if (ev.message === ".apple") {
const apple = new ItemStack(ItemTypes.get("minecraft:apple"), 1);
apple.setLore([ev.sender.name]);
ev.sender.getComponent("minecraft:inventory").container.addItem(apple);
}
});
});

最後に

ここまで読んでくださりありがとうございました!役に立ったと思ってもらえたら嬉しいです。

なにか質問があるときはこちらのディスコードから受け付けています。初心者も大歓迎!答えられない時は答えられないですがそこまで高度でなければおそらく。

それでは良いアドオンライフを!

※投稿記事に含まれるファイルやリンクにより発生した被害についてクラフターズコロニーは責任を取りません
投稿通報

コメント

コメント通報