コウクマ

スポンサーリンク

フォーラムへの返信

3件の投稿を表示中 - 1 - 3件目 (全3件中)
  • 投稿者
    投稿
  • 返信先: ScriptAPI相談所#172198
    コウクマ
    参加者

    EntityTameableComponentのtamedToPlayerIdのidが自分かどうかを見ればできると思います

        const tameable = entity.getComponent(EntityComponentTypes.Tameable) as EntityTameableComponent;
        if (tameable.tamedToPlayerId === player.id) {
    
        }
    

    jsonでは無理かと思います。
    world.afterEvents.dataDrivenEntityTriggerで「minecraft:convert_to_drowned」(ドラウンドの例)など返信時のeventを拾って
    TameableやnameTagなどを返信後に付けなおせば出来ると思います

    コウクマ
    参加者

    https://learn.microsoft.com/ja-jp/minecraft/creator/documents/blockbench?view=minecraft-bedrock-stable
    初めてならPCでBlockbenchを入れて、blockプラグインを入れるのがいいですね。
    モデルだけでなく、ビヘイビアも自動生成してくれます。

    返信先: 爆発について#164953
    コウクマ
    参加者

    スクリプトAPIを使えばできますね。
    world.afterEvents.projectileHitBlockとworld.afterEvents.projectileHitEntityから
    こんな感じで爆発を発生させつつ、別で自分以外にダメージを与える。

    async function explosion(projectile:Entity, source:Entity, dimension:Dimension, location:Vector3) {
        if (projectile.typeId === "minecraft:snowball") { // 爆発を発生させたいアイテムなら(json側では爆発させない)
            const option = {
                allowUnderwater: false, // 対中でも爆発するか
                breaksBlocks: true, // ブロックを破壊するか
                causesFire: false, // 爆発で火が付くか
                source: source // 爆発を発生させたのは誰か
            } as ExplosionOptions;
            // イベントが発生した場所で、範囲2ブロック分爆発を発生させる
            const bom = dimension.createExplosion(location, 2, option);
            if (bom) { // 爆発が発生した場合
                source.addTag(source.id); // 爆発物を投げたモブを除外させるためにタグをセット
                // 条件を付けて爆発した範囲のモブを取る
                dimension.getEntities({
                    location: location, // 発生源の位置
             excludeFamilies: ["player"], // すべてのプレイヤーを除外したいならこれを入れる
                    excludeTypes: ["item"], // ドロップアイテムを除外
                    maxDistance: 2, // 発生源から2ブロックの範囲
                    excludeTags: [source.id] // 投げたモブ自身につけたタグを除外
                // 範囲内にいる条件に一致したモブの数だけ実行
                }).forEach(entity => {
                    // モブが水中にいる場合は影響を無くす(判定はなくてもOK)
                    if (!entity.isInWater) {
                        // モブに爆発ダメージを与える
                        entity.applyDamage(2, {
                            cause: EntityDamageCause.entityExplosion,
                            damagingEntity: source
                        });
                    }
                });
                source.removeTag(source.id); // タグを外す
            }
        }
    }
    
3件の投稿を表示中 - 1 - 3件目 (全3件中)
スポンサーリンク
クラフターズコロニー -マイクラの配布サイト-