跳转至

区域效果云

区域效果云(即minecraft:area_effect_cloud实体)是基岩版中一类特殊实体,原版通过投掷滞留型药水产生,但通过结构文件和NBT编辑,可以将其用于地图制作中许多精妙的场景。

特点与用途

区域效果云具有以下独特特性:

  • 高性能:类似虚拟实体,与世界和其他实体没有碰撞,适合在玩家或实体附近大量放置
  • 完全静止:只能通过命令移动,适合需要精确定位的场合
  • 可施加状态效果:持续时间可精确到刻,可控制环境音效、屏幕提示、粒子等
  • 继承特性:运行时标识符设为minecraft:area_effect_cloud的实体会继承上述所有特性

放置区域效果云

区域效果云必须通过结构文件中的特定NBT数据来正确创建。

NBT编辑工具

推荐使用以下工具编辑结构文件:

NBT格式

以下是区域效果云实体根标签中的关键标签:

标签 类型 说明
Duration Integer 存在时间(刻),值为0时立即消失
DurationOnUse Integer 每次施加效果后存在时间的变化量
InitialRadius Float 创建时的半径;小于0.5时立即消失
RadiusChangeOnPickup Float 被玻璃瓶收集时半径的变化量(原版末影龙的呼吸云使用此功能)
RadiusOnUse Float 每次施加效果后半径的变化量
RadiusPerTick Float 每刻半径的变化量
ParticleColor Integer 粒子颜色(十进制整数)
ReapplicationDelay Integer 效果施加的间隔(刻)
mobEffects List 施加的状态效果列表

mobEffects标签下每个效果条目的参数:

标签 类型 说明
Id Byte 状态效果ID
Amplifier Byte 效果等级(0为一级)
Duration Integer 效果持续时间(刻)
DurationEasy Integer 简单难度下的持续时间(刻)
DurationNormal Integer 普通难度下的持续时间(刻)
DurationHard Integer 困难难度下的持续时间(刻)
Ambient Byte 粒子是否半透明
ShowParticles Byte 是否显示粒子
DisplayOnScreenTextureAnimation Byte 是否显示获得效果时的屏幕动画(如不祥之兆、图腾等)

预制结构文件

可以手动制作一个包含区域效果云的结构文件作为模板:最小半径为0.5格,存在时间为最大值(2^31 - 1刻,约29826小时),将此结构文件放置在BP/structures/wiki/area_effect_cloud.mcstructure,之后通过/structure load或脚本API放置即可。

使用区域效果云

放置后,区域效果云可以像其他标记实体一样使用。

注意事项

  • 云会发出minecraft:mobspell_lingering粒子效果。若不希望显示粒子,需通过资源包修改该粒子发射器
  • 区域效果云不向客户端更新位置信息,因此它在视觉上固定在最初生成的位置,但实际上可以用/tp移动

脚本API使用示例

通过脚本API动态放置并操作区域效果云:

BP/scripts/marker.js
import { world } from "@minecraft/server";

function spawnMarker(location) {
    const structureLocation = {
        x: Math.floor(location.x),
        y: Math.floor(location.y),
        z: Math.floor(location.z),
    };

    // 放置存储在BP/structures/wiki/area_effect_cloud.mcstructure的结构
    world.structureManager.place("wiki:area_effect_cloud", location.dimension, structureLocation);
}

监听实体加载

由于结构放置是异步的,如需在区域效果云生成后立即对其操作,可以监听world.afterEvents.entityLoad事件,在回调中通过标签或类型筛选到刚生成的实体进行处理。