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返回WorldJSWorldJS[5]
ridingEntity返回玩家/实体正在骑的实体EntityJS
teamId返回玩家/实体当前所在队伍名称字符串
customName返回玩家/实体自定义名称Text
hasCustomName返回玩家/实体是否有自定义名称布尔值
customNameAlwaysVisible返回玩家/实体自定义名称是否总是可见布尔值
eyeHeight返回玩家/实体视线高度浮点型
fullNBT返回玩家/实体NBTCompoundTag
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