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。