マイクラの配布サイト › フォーラム › 技術相談(統合版) › scriptが詳しい方教えてください
- 投稿者投稿
睡眠
参加者現在私は巨大マップを作成しています。
配信者さんが夏に配信されるマイクラ肝試しに出てくるようなスタンプラリーを作成したいです。受付でスタンプカードを渡す。
スタンプカードを持った状態でクリックすると、スタンプカードにスタンプがおされる。
巡ったスタンプ場所が分かるように、スタンプ台の上にチェックが入るようにしたいです。
全箇所まわりきった場合、受付に話すとアイテムが貰える。
こんな感じのスタンプラリーを作成したいです。
全部で15箇所ほどで考えております。
scriptをメインに使用してできたらなと思っているのですが可能でしょうか?
また可能な場合どのような感じでやれば出来ますか?script初心者のため教えて頂きたいです。
コウクマ
参加者例えばですが、
受付モブを用意して、受付モブにチケットを渡す(チケットを持って右クリック)するとスタンプカードを受け取れるようにする
※playerInteractWithEntityを発生させるためにはモブに「minecraft:interact」コンポーネントを持たせる必要がありますworld.afterEvents.playerInteractWithEntity.subscribe(event => { // クリックしたモブが受付モブだったら if (event.target.typeId === "namespace:reception") { // チケットを持っていたら if (event.itemStack !== undefined && event.itemStack.typeId === "namespace:ticket") { // プレイヤーの右手にスタンプカードを持たせる const equippable = event.player.getComponent(EntityComponentTypes.Equippable) as EntityEquippableComponent; equippable.setEquipment(EquipmentSlot.Mainhand, new ItemStack("namespace:stamp_card", 1)); } } });スタンプカードは3Dモデルで用意して、render_controllersでスタンプの表示を制御する
プレイヤーにスタンプ1~15分のon,offを制御する用のプロパティを持たせる、デフォルトはoff"properties": { "namespace:stamp_1": { "type": "bool", "default": false, "client_sync": true }, ・・・スタンプ台ブロック1~15を作って、カスタムコンポーネントを持たせ、スタンプ台を右クリックしたら対応する番号のスタンプ表示プロパティをonにする
export class stampTable implements BlockCustomComponent { onPlayerInteract(event:BlockComponentPlayerInteractEvent, arg: CustomComponentParameters) { const player = event.player as Player; const equ = player.getComponent(EntityComponentTypes.Equippable) as EntityEquippableComponent; const itemStack = equ.getEquipment(EquipmentSlot.Mainhand) as ItemStack; if (itemStack !== undefined) { if (itemStack.typeId === "namespace:stamp_card") { // カスタムコンポーネントの番号のパラメータを持たせておく const stamp = arg.params; player.setProperty("namespace:stamp_" + stamp.num, true); } }ブロック側に特定のプレイヤーが押し済みかどうかを持たせるのは難しいので、
ブロックを右クリックしたときにプレイヤーのスタンプ表示プロパティのon,offを見て、MessageFormとか、player.sendMessageでメッセージを出すのがいいかと思います。
すべてスタンプが集まったら、最初のと同じように受付モブを右クリックしたときのイベントで、
スタンダードを持っていて、プレイヤーのスタンプ表示プロパティがすべてonになっている場合に、報酬アイテムを渡すようにするといいと思います。睡眠
参加者ありがとうございます!試してみます!
- 投稿者投稿


