Skip to content

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。

Contributors

Changelog