/// /** * ### 🎈 实体对象 * * 在脚本引擎中,使用「实体对象」来操作和获取某一个实体的相关信息。 * * 该类**没有构造函数**,请使用下面的方法获取该类对象 * * - 从监听事件中获取 * - {@linkcode mc.getAllEntities()} * - {@linkcode mc.spawnMob()} * - {@linkcode mc.cloneMob()} * - 从其他API中获取 * * **注意**:不要**长期保存**一个实体对象\ * 当实体对象对应的实体被销毁时,对应的实体对象将同时释放。\ * 因此,如果有长期操作某个实体的需要,请通过上述途径获取实时的实体对象 * * @see [🎈 实体对象 API](https://docs.litebds.com/zh-Hans/#/LLSEPluginDevelopment/GameAPI/Entity) */ declare class Entity { /** 实体名称 */ readonly name: string; /** 实体标准类型名 */ readonly type: string; /** 实体的游戏内id */ readonly id: number; /** 实体所在坐标 */ readonly pos: FloatPos; /** 实体所在的方块坐标 */ readonly blockPos: IntPos; /** 实体腿部所在坐标 */ readonly feetPos: FloatPos; /** 实体最大生命值 */ readonly maxHealth: number; /** 实体当前生命值 */ readonly health: number; /** 实体是否能飞行 */ readonly canFly: boolean; /** 实体是否能被冻结 */ readonly canFreeze: boolean; /** 实体是否能看到天空 */ readonly canSeeDaylight: boolean; /** 实体是否能拾取物品 */ readonly canPickupItems: boolean; /** 实体是否悬空 */ readonly inAir: boolean; /** 实体是否在水中 */ readonly inWater: boolean; /** 实体是否在岩浆中 */ readonly inLava: boolean; /** 实体是否在雨中 */ readonly inRain: boolean; /** 实体是否在雪中 */ readonly inSnow: boolean; /** 实体是否在墙上 */ readonly inWall: boolean; /** 实体是否在水中或雨中 */ readonly inWaterOrRain: boolean; /** 实体是否在世界中 */ readonly inWorld: boolean; /** 实体当前速度 */ readonly speed: number; /** 实体当前朝向 */ readonly direction: DirectionAngle; /** 实体唯一标识符 */ readonly uniqueId: string; /** 实体是否不可见 */ readonly isInvisible: boolean; /** 实体是否在门户内 */ readonly isInsidePortal: boolean; /** 实体是否信任 */ readonly isTrusting: boolean; /** 实体是否接触到伤害方块 */ readonly isTouchingDamageBlock: boolean; /** 实体是否着火 */ readonly isOnFire: boolean; /** 实体是否在地面 */ readonly isOnGround: boolean; /** 实体是否在热块上 */ readonly isOnHotBlock: boolean; /** 实体是否在交易 */ readonly isTrading: boolean; /** 实体是否正在骑行 */ readonly isRiding: boolean; /** 实体是否在跳舞 */ readonly isDancing: boolean; /** 实体是否在睡觉 */ readonly isSleeping: boolean; /** 实体是否生气 */ readonly isAngry: boolean; /** 实体是否为幼体 */ readonly isBaby: boolean; /** 实体是否移动 */ readonly isMoving: boolean; readonly posDelta: FloatPos; /** * ### 传送实体至指定位置 * * @param pos 目标位置坐标 * @param rot 传送后实体的朝向,若缺省则与传送前朝向相同 * * @returns 是否成功传送 */ teleport(pos: IntPos | FloatPos, rot?: DirectionAngle): boolean; /** * ### 传送实体至指定位置 * * @param x x坐标 * @param y y坐标 * @param z z坐标 * @param dimId 维度Id * @param rot 传送后实体的朝向,若缺省则与传送前朝向相同 * * @returns 是否成功传送 */ teleport( x: number, y: number, z: number, dimId: 0 | 1 | 2 | 3, rot?: DirectionAngle ): boolean; /** * ### 杀死指定实体 * * @returns 是否执行成功 */ kill(): boolean; /** * ### 对实体造成伤害 * * 此处造成的伤害为真实伤害,无法被盔甲等保护装备减免 * * @param damage 对实体造成的伤害数值 * @param type 伤害类型(见{@linkcode ActorDamageCause}) * * @returns 是否造成伤害 */ hurt(damage: number, type?: number): boolean; /** * ### 治愈实体 * * @param health 要回复的生命值 * * @returns 是否成功回复 */ // 正式版未实装 // heal(health: number): boolean; /** * ### 使指定实体着火 * * @param time 着火时长,单位秒 * * @returns 是否成功着火 */ setOnFire(time: number): boolean; /** * ### 设置实体体积 * * @param scale 新的实体体积 * * @returns 实体是否成功缩放 */ // 正式版未实装 // setScale(scale: number): boolean; /** * ### 获取实体到指定坐标的距离 * * @param pos 目标位置 * * @returns 到坐标的距离(方块) */ // 正式版未实装 // distanceToPos(pos: IntPos | FloatPos): number; /** * ### 判断一个实体对象是不是玩家 * * @returns 当前实体对象是不是玩家 */ isPlayer(): boolean; /** * ### 将实体对象转换玩家对象 * * 如果当前实体对象指向的是一个玩家,可以使用此函数将实体对象转换为玩家对象,以使用更多的玩家相关 API\ * 如果此实体对象指向的不是某个玩家,或者转换失败,则返回 `null` * * @returns 转换成的玩家对象,失败返回`null` */ toPlayer(): Player | null; /** * ### 判断一个实体对象是不是掉落物实体 * * @returns 当前实体对象是不是掉落物实体 */ isItemEntity(): boolean; /** * ### 获取掉落物实体中的物品对象 * * 如果当前实体对象是一个掉落物实体,可以使用此函数获取掉落物实体中的物品对象,以使用更多的物品相关 API\ * 如果此实体对象不是掉落物实体,或者获取失败,则返回 `null` * * @returns 获取到的物品对象,失败返回`null` */ toItem(): Item | null; /** * ### 获取实体当前站立所在的方块 * * @returns 当前站立在的方块对象 */ getBlockStandingOn(): Block; /** * ### 获取生物盔甲栏的容器对象 * * @returns 此实体盔甲栏对应的容器对象 */ getArmor(): Container; /** * ### 判断生物是否拥有容器(盔甲栏除外) * * 如羊驼身上的箱子等,他们各自拥有一个属于自己的容器对象 * * @returns 这个生物实体是否拥有容器 */ hasContainer(): boolean; /** * ### 获取生物所拥有的容器对象(盔甲栏除外) * * @returns 这个生物实体所拥有的容器对象 */ getContainer(): Container; /** * ### 刷新生物物品栏、盔甲栏 * * 在修改生物物品之后,为了促使客户端生效,需要刷新生物所有的物品 * * @returns 是否成功刷新 */ refreshItems(): boolean; /** * ### 为实体增加一个Tag * * @param tag 要增加的tag字符串 * * @returns 是否添加成功 */ addTag(tag: string): boolean; /** * ### 为为实体移除一个Tag * * @param tag 要移除的tag字符串 * * @returns 是否移除成功 */ removeTag(tag: string): boolean; /** * ### 检查实体是否拥有某个Tag * * @param tag 要检查的tag字符串 * * @returns 是否拥有这个Tag */ hasTag(tag: string): boolean; /** * ### 返回实体拥有的所有Tag列表 * * @returns 实体所有的 tag 字符串列表 */ getAllTags(): Array; /** * ### 获取实体对应的NBT对象 * * @returns 实体的NBT对象 */ getNbt(): NbtCompound; /** * ### 写入实体对应的NBT对象 * * @param nbt NBT对象 * * @returns 是否成功写入 */ setNbt(nbt: NbtCompound): boolean; /** * @deprecated * @alias {@linkcode getNbt()} */ getTag(): NbtCompound; /** * @deprecated * @alias {@linkcode setNbt()} */ setTag(nbt: NbtCompound): boolean | null; /** * ### 获取视线方向实体 * * @param maxDistance 查找最大距离 * * @returns 视线方向实体,如果获取失败,返回 `null` */ getEntityFromViewVector(maxDistance?: number): Entity | null; /** * ### 获取视线方向方块 * * @param includeLiquid 是否包含液态方块 * @param solidOnly 是否仅允许 `Solid` 类型的方块 * @param maxDistance 查找最大距离 * @param fullOnly 是否仅允许完整方块 * * @returns 视线方向方块,如果获取失败,返回 `null` */ getBlockFromViewVector( includeLiquid?: boolean, solidOnly?: boolean, maxDistance?: number, fullOnly?: boolean ): Block | null; /** * ### 快速执行Molang表达式 * * 关于Molang的详细使用方法,请参考 [MOLANG文档 bedrock.dev](https://bedrock.dev/zh/docs/stable/Molang) * * @param str Molang表达式 * * @returns 表达式执行结果 */ quickEvalMolangScript(str: string): number; asPointer(): NativePointer | null; /** * ### 缩放实体 * * @param scale 新的玩家实体 (整数) * * @returns 是否缩放成功 */ setScale(scale: number): boolean; /** * ### 熄灭实体 * * @returns 是否熄灭成功 */ stopFire(): boolean; /** * @deprecated * ### 获取实体到坐标的距离 * * @param pos 目标位置 * * @returns 到坐标的距离(方块) * */ distanceToPos(pos: Entity | Player | IntPos | FloatPos): number; /** * * ### 获取实体到坐标的距离 * * @param pos 目标位置 * * @returns 到坐标的距离(方块) * */ distanceToSqr(pos: Entity | Player | IntPos | FloatPos): number; /** * * ### 获取实体到坐标的距离 * * @param pos 目标位置 * * @returns 到坐标的距离(方块) * */ distanceTo(pos: Entity | Player | IntPos | FloatPos): number; /** 设置生命值 */ setHealth(health: number): boolean; /** 设置生命值上限 */ setMaxHealth(health: number): boolean; /** * 设置伤害吸收属性 * @param value 新的值 * @returns 是否成功 */ setAbsorption(value: number): boolean; /** * 设置攻击伤害属性 * @param value 新的值 * @returns 是否成功 */ setAttackDamage(value: number): boolean; /** * 最大攻击伤害属性 * @param value 新的值 * @returns 是否成功 */ setMaxAttackDamage(value: number): boolean; /** * 设置跟随范围 * @param value 新的值 * @returns 是否成功 */ setFollowRange(value: number): boolean; /** * 设置击退抵抗属性 * @param value 新的值 * @returns 是否成功 */ setKnockbackResistance(value: 0 | 1): boolean; /** * 设置幸运属性 * @param value 新的值 * @returns 是否成功 */ setLuck(value: number): boolean; /** * 设置移动速度属性 * @param value 新的值 * @returns 是否成功 */ setMovementSpeed(value: number): boolean; /** * 置水下移动速度属性 * @param value 新的值 * @returns 是否成功 */ setUnderwaterMovementSpeed(value: number): boolean; /** * 设置岩浆上移动速度属性 * @param value 新的值 * @returns 是否成功 */ setLavaMovementSpeed(value: number): boolean; /** * 使指定实体刷新消失 * @returns 是否成功执行 */ despawn(): boolean; /** * 移除指定实体 * @returns 是否成功执行 */ remove(): boolean; setPosDelta(arg1: FloatPos): boolean; setPosDelta(arg1: number, arg2: number, arg3: number): boolean; /** * 获取实体全部药水效果 * @returns 实体所有的药水效果id */ getAllEffects(): number[]; /** * 为实体添加一个药水效果 * @param id 药水效果的id * @param tick 持续时间 * @param level 等级 * @param showParticles 是否显示粒子 * @returns 是否成功 */ addEffect( id: number, tick: number, level: number, showParticles: boolean ): boolean; /** * 为实体移除一个药水效果 * @param id 药水效果的id * @returns 是否成功 */ removeEffect(id: number): boolean; } declare class LLSE_Entity extends Entity {}