15.1 玩家&实体事件,信息获取及操作
一、信息获取
以下内容会返回玩家/实体的信息
| 格式 | 功能 | 返回值类型 |
|---|---|---|
| inventory | 返回玩家的库存(仅适用于玩家) | InventoryJS[1] |
| block | 返回涉及到的方块 | BlockContainerJS |
| selectedSlot | 返回当前玩家选中的格子(仅适用于玩家) | 整形 |
| mouseItem | 返回当前玩家鼠标选取的物品(仅适用于玩家) | ItemStackJS[2] |
| creativeMode | 返回当前玩家是否为创造模式(仅适用于玩家) | 布尔值 |
| spectator | 返回当前玩家是否为观察者模式(仅适用于玩家) | 布尔值 |
| stats | 返回玩家统计数据(仅适用于玩家) | PlayerStatsJS[3] |
| foodLevel | 返回玩家饱食度等级(仅适用于玩家) | 整形 |
| xp | 返回玩家经验值(仅适用于玩家) | 整形 |
| xplevel | 返回玩家经验等级(仅适用于玩家) | 整形 |
| miningBlock | 返回玩家是否正在破坏方块(仅适用于玩家) | 布尔值 |
| airSupply | 返回玩家当前氧气供应值(仅适用于玩家) | 整形 |
| maxAirSupply | 返回玩家最大氧气供应值(仅适用于玩家) | 整形 |
| stages | 返回玩家游戏阶段(仅适用于玩家) | Stages[4] |
| name | 返回玩家名称 | Text |
| displayName | 返回玩家显示名称 | Text |
| alive | 返回游戏中玩家是否存活 | 布尔值 |
| living | 返回是否处于活跃状态 | 布尔值 |
| crouching | 返回玩家/实体是否正在潜行 | 布尔值 |
| sprinting | 返回玩家/实体是否正在疾跑 | 布尔值 |
| swimming | 返回玩家/实体是否正在游泳 | 布尔值 |
| glowing | 返回玩家/实体是否正在发光 | 布尔值 |
| invisible | 返回玩家/实体是否隐形 | 布尔值 |
| invulnerable | 返回玩家/实体是否不受伤害 | 布尔值 |
| onGround | 返回玩家/实体是否站在地上 | 布尔值 |
| fallDistance | 返回玩家/实体目前掉落距离(落地后该值归0) | 浮点型 |
| noClip | 返回玩家/实体是否没有碰撞箱(观察者模式下该值为true) | 布尔值 |
| x y z | 返回玩家/实体的x/y/z坐标 | 浮点型 |
| yaw pitch | 返回玩家/实体的偏航角/俯仰角 | 浮点型 |
| motionX motionY motionZ | 返回玩家/实体动量 | 浮点型 |
| ticksExisted | 返回玩家/实体存在的游戏刻数 | 整形 |
| world | 返回WorldJS | WorldJS[5] |
| ridingEntity | 返回玩家/实体正在骑的实体 | EntityJS |
| teamId | 返回玩家/实体当前所在队伍名称 | 字符串 |
| customName | 返回玩家/实体自定义名称 | Text |
| hasCustomName | 返回玩家/实体是否有自定义名称 | 布尔值 |
| customNameAlwaysVisible | 返回玩家/实体自定义名称是否总是可见 | 布尔值 |
| eyeHeight | 返回玩家/实体视线高度 | 浮点型 |
| fullNBT | 返回玩家/实体NBT | CompoundTag |
| inWater | 返回玩家/实体是否在水里 | 布尔值 |
| underWater | 返回玩家/实体是否在水下 | 布尔值 |
| child | 返回玩家/实体是否为幼年个体 | 布尔值 |
| potionEffects | 返回玩家/实体具有的效果 | EntityPotionEffectsJS[6] |
| lastDamageSource | 返回玩家/实体最后收到的伤害来源 | DamageSourceJS[7] |
| health | 返回玩家/实体的血量 | 浮点型 |
| maxHealth | 返回玩家/实体的最大血量 | 浮点型 |
| lastAttackedEntity | 返回最后攻击的实体 | LivingEntityJS |
| idleTime | 返回玩家/实体无动作时间 | 整形 |
| attackingEntity | 返回玩家/实体攻击对象 | LivingEntityJS |
| mainHandItem | 返回玩家/实体主手物品 | ItemStackJS |
| offHandItem | 返回玩家/实体副手物品 | ItemStackJS |
| headArmorItem | 返回玩家/实体头盔物品 | ItemStackJS |
| chestArmorItem | 返回玩家/实体胸甲物品 | ItemStackJS |
| legsArmorItem | 返回玩家/实体腿甲物品 | ItemStackJS |
| feetArmorItem | 返回玩家/实体鞋子物品 | ItemStackJS |
| movementSpeed | 返回玩家/实体移动速度 | 浮点型 |
| reachDistance | 返回玩家/实体攻击距离 | 浮点型 |
| onFire | 返回玩家/实体着火状态(支持通过a = b方式修改) | 整形 |
| statusMessage | 返回玩家状态栏消息(支持通过a = b方式修改) | Text[8] |
| horizontalFacing | 返回玩家水平方向 | Direction[9] |
| facing | 返回玩家方向 | Direction[9] |
[1]、[2]、[3]、[6]、[7]、[8]见后文
[4]见11.4 KubeJs内置游戏阶段 (类似于GameStage)
[5]见6 自定义世界生成
[9]返回值可为DOWN, UP, NORTH, SOUTH, WEST, EAST
二、函数
| 格式 | 功能 | 返回值 |
|---|---|---|
| sendInventoryUpdate()(仅适用于玩家) | 向客户端(?)发送背包数据更新 | void |
| give(ItemStackJS 物品) (仅适用于玩家) | 给予玩家物品 | void |
| giveInHand(ItemStackJS 物品)(仅适用于玩家) | 给予玩家物品(快捷栏而不是背包) | void |
| sendData(字符串 频道, 数据)(仅适用于玩家) | 发送网络包(详见后文) | void |
| addFood(整形 食物水平, 浮点型 饱和度)(仅适用于玩家) | 为玩家添加饥饿值 | void |
| addExhaustion(浮点型 饥饿等级)(仅适用于玩家) | 为玩家添加饥饿等级 | void |
| addXP(整形 经验值)(仅适用于玩家) | 为玩家添加经验值 | void |
| addXPLevels(整形 经验等级)(仅适用于玩家) | 为玩家添加经验等级 | void |
| paint(CompoundTag 渲染器)(仅适用于玩家) | 调用Painter API(详见后文) | void |
| boostElytraFlight()(仅适用于玩家) | 加速玩家鞘翅飞行(类似于烟花) | void |
| closeInventory()(仅适用于玩家) | 关闭玩家背包 | void |
| addItemCooldown(Item 物品, 整形 冷却tick)(仅适用于玩家) | 添加物品冷却 | voi |
| runCommand(字符串 命令内容) | 执行命令[10] | int |
| runCommandSilent(字符串 命令内容) | 静默执行命令[10] | int |
| setMotion(浮点型 x, 浮点型 y, 浮点型 z) | 设置实体动量 | void |
| setRotation(浮点型 偏航角,浮点型 俯仰角) | 设置玩家旋转角度 | void |
| setPosition(浮点型 x, 浮点型 y, 浮点型 z) | 设置玩家坐标 | void |
| setPositionAndRotation(浮点型 x, 浮点型 y, 浮点型 z, 浮点型 偏航角,浮点型 俯仰角) | 上边两个函数的合并 | void |
| addMotion(浮点型 x, 浮点型 y, 浮点型 z) | 添加实体动量 | void |
| kill() | 我给你毙了 | void |
| startRiding(EntityJS 实体, 布尔值 是否强制) | 使玩家骑某个实体 | boolean |
| removePassengers() | 移除当前实体乘客 | void |
| dismountRidingEntity() | 取消当前实体骑乘状态 | void |
| isPassenger(EntityJS 实体) | 返回实体是否为骑乘状态 | 布尔值 |
| isOnSameTeam(EntityJS 实体) | 返回是否与某实体为同一队 | 布尔值 |
| isOnScoreboardTeam(字符串 队伍名称) | 返回是否在计分板队伍上 | 布尔值 |
| extinguish() | 灭火 | void |
| playSound(SoundEvent 音乐名, 浮点型 音量, 浮点型 角度) | 播放声音 | void |
| playSound(SoundEvent 音乐名) | 同上 | void |
| spawn() | 立即重生 | void |
| attack(字符串 来源, 浮点型 血量) | 使对象受伤 | void |
| attack(浮点型 血量) | 同上 | void |
| rayTrace(浮点型 距离) | rayTraceEvent(详见后文) | RayTraceResultJS |
| getDistanceSq(浮点型 x, 浮点型 y, 浮点型 z) | 返回与坐标之间距离的平方[11] | 浮点型 |
| getDistanceSq(BlockPos 坐标) | 返回与坐标之间距离的平方[11] | 浮点型 |
| getDistance(浮点型 x, 浮点型 y, 浮点型 z) | 返回与坐标之间距离[11] | 浮点型 |
| getDistance(BlockPos 坐标) | 返回与坐标之间距离[11] | 浮点型 |
| heal(浮点型 血量) | 为对象添加血量 | void |
| swingArm(InteractionHand 手) | 晃动手臂[12] | void |
| getEquipment(EquipmentSlot 栏位) | 返回指定栏位的装备[13] | ItemStackJS |
| setEquipment(EquipmentSlot 栏位, ItemStackJS 物品) | 设置指定栏位的装备[13] | void |
| getHeldItem(InteractionHand 手) | 返回指定手的物品[12] | ItemStackJS |
| setHeldItem(InteractionHand 手, ItemStackJS 手) | 设置指定手的物品[12] | void |
| damageEquipment(EquipmentSlot 栏位, 整形 扣除耐久值) | 损坏物品[13] | void |
| damageEquipment(EquipmentSlot 栏位, 整形 扣除耐久值, Consumer onBroken) | 损坏物品[13] | void |
| damageEquipment(EquipmentSlot 栏位) | 损坏物品[13] | void |
| damageHeldItem(InteractionHand 手, 整形 扣除耐久值) | 损坏物品[13] | void |
| damageHeldItem(InteractionHand 手, 整形 扣除耐久值, Consumer onBroken) | 损坏物品[13] | void |
| damageHeldItem() | 损坏物品 | void |
| isHoldingInAnyHand(内容) | 指定内容是否拿在手中 | boolean |
| canEntityBeSeen(EntityJS 实体) | 是否能看到指定实体 | boolean |
| rayTrace(整形 距离) | rayTraceEvent(详见后文) | RayTraceResultJS |
| mergeFullNBT(字符串 NBT) | 将给定的NBT与原实体的合并[14] | void |
[10]:该函数与ServerJS下的同名方法有两点不同 ① 此处执行命令需要加斜杠( / ),而后者不用 ② 此处执行命令会以玩家的权限执行,而前者为服务器控制台权限。另外成功执行命令时该函数返回1,失败返回0
[11]:getDistance与getDistanceSq的区别见下:

[12]:InteractionHand 接受值为 MAIN_HAND或OFF_HAND
[13]:EquipmentSlot 接受值为 MAINHAND、OFFHAND、HEAD、CHEST、LEGS、FEET
[14]:相同的会被新值覆盖
注1:实体与玩家的操作方法大体相同(也就是适用于玩家的很多函数同时适用于实体)
注2:实际上PlayerJS继承于LivingEntityJS,而后者又继承于EntityJS。