ArcartXPlayer:玩家管理对象
ArcartX玩家管理对象API
ArcartXPlayer
ArcartXPlayer继承自ArcartXEntity,是ArcartX对玩家的完整管理对象。- 通过
ArcartXAPI.getEntityManager().getPlayer(player)获取。 - 除了继承自
ArcartXEntity的所有方法外,还提供了大量玩家专属功能。 - 本类的方法分为两种发送模式:
- 点对点 — 仅向该玩家自身的客户端发送数据包(如相机、着色器、特效等)
- 广播 — 向所有能看到该玩家的客户端发送数据包(如模型、控制器、状态、额外模型、覆盖模型等)
模型管理、动画控制(setState / setController)、额外模型、覆盖模型等方法是广播模式,会同步给所有能看到该玩家的客户端。相机、着色器、天空盒、特效等方法是点对点模式,仅发送给该玩家自身。
模型管理
setModel(modelID, scale)
- 设置玩家模型,会触发
PlayerModelUpdateEvent事件,并向所有能看到该玩家的其他玩家广播模型变更
- 参数:
modelID: String — 模型IDscale: double — 模型缩放比例
- 返回值:无
- 调用示例
removeModel()
- 移除玩家模型,恢复默认外观
- 参数:无
- 返回值:无
- 调用示例
addExtraModel(locator, modelID)
- 为玩家添加额外模型,挂载在指定定位器上
- 参数:
locator: String — 定位器名称modelID: String — 模型ID
- 返回值:无
- 调用示例
removeExtraModel(locator)
- 移除玩家指定定位器上的额外模型
- 参数:
locator: String — 定位器名称 - 返回值:无
- 调用示例
clearExtraModels()
- 清除玩家所有额外模型
- 参数:无
- 返回值:无
- 调用示例
动画控制
playFirstPersonAnimationByTime(animation, speed, keepTime)
- 为玩家播放第一人称动画,按持续时间控制
- 参数:
animation: String — 动画名称speed: double — 播放速度keepTime: int — 持续时间(毫秒)
- 返回值:无
- 调用示例
playFirstPersonAnimationByCountOf(animation, speed, count)
- 为玩家播放第一人称动画,按播放次数控制
- 参数:
animation: String — 动画名称speed: double — 播放速度count: int — 播放次数
- 返回值:无
- 调用示例
setState(controller, state)
- 设置玩家动作控制器的状态
- 参数:
controller: String — 控制器名称state: String — 状态名称
- 返回值:无
- 调用示例
setState(controller, state, speed)
- 设置玩家动作控制器的状态,指定播放速度
- 参数:
controller: String — 控制器名称state: String — 状态名称speed: double — 播放速度
- 返回值:无
- 调用示例
setState(controller, state, speed, moveBreak)
- 设置玩家动作控制器的状态,指定播放速度和移动打断时间
- 参数:
controller: String — 控制器名称state: String — 状态名称speed: double — 播放速度moveBreak: long — 移动打断时间(毫秒),-1为不打断
- 返回值:无
- 调用示例
setController(controller)
- 为玩家设置动作控制器
- 参数:
controller: String — 控制器配置ID - 返回值:无
- 调用示例
相机控制
setThirdPerson(enable)
- 将玩家设置为第三人称视角
- 参数:
enable: boolean — true 设置为第三人称 false 设置为第一人称 - 返回值:无
- 调用示例
setViewLockMode(mode)
- 设置视角锁定模式
- 参数:
mode: int — 锁定模式(0-关闭,1-强制锁定第一人称,2-强制锁定第三人称) - 返回值:无
- 调用示例
setCameraFromPreset(id)
- 从预设配置设置玩家相机
- 参数:
id: String — 相机预设配置ID - 返回值:无
- 调用示例
setCameraLocation(offsetX, offsetY, offsetZ, freeView)
- 设置玩家相机的偏移位置
- 参数:
offsetX: double — X轴偏移offsetY: double — Y轴偏移offsetZ: double — Z轴偏移freeView: boolean — 是否允许自由视角
- 返回值:无
- 调用示例
startSceneCamera(sceneId)
- 开始播放场景相机
- 参数:
sceneId: String — 场景相机配置ID - 返回值:无
- 调用示例
stopSceneCamera()
- 停止场景相机播放
- 参数:无
- 返回值:无
- 调用示例
着色器与天空盒
enableShader(shader)
- 为玩家启用后处理着色器
- 参数:
shader: String — 着色器名称 - 返回值:无
- 调用示例
disableShader()
- 关闭玩家的着色器效果
- 参数:无
- 返回值:无
- 调用示例
setSkyTexture(texturePath, forceNoCloud)
- 为玩家设置自定义天空盒贴图
- 参数:
texturePath: String — 天空盒贴图资源路径forceNoCloud: boolean — 是否强制隐藏云层
- 返回值:无
- 调用示例
clearSkyTexture()
- 清除玩家的自定义天空盒,恢复默认天空
- 参数:无
- 返回值:无
- 调用示例
setClientTitle(text)
- 设置玩家客户端的标题文本
- 参数:
text: String — 标题文本 - 返回值:无
- 调用示例
特效
以下特效方法均为点对点发送,仅发送给该玩家自身的客户端。如果你需要让周围所有玩家都看到特效,请使用 ArcartXEffectManager 的范围广播方法。
spawnBedrockParticle(identifier, particleID, effectPosition)
- 在玩家客户端生成基岩粒子效果
- 参数:
identifier: String — 粒子标识符particleID: String — 粒子IDeffectPosition: EffectPosition — 特效位置
- 返回值:无
- 调用示例
与 ArcartXEffectManager.spawnBedrockParticle 的区别:
ArcartXPlayer.spawnBedrockParticle— 点对点,仅该玩家自身可见ArcartXEffectManager.Entity.spawnBedrockParticle— 范围广播,所有能看到该实体的玩家可见ArcartXEffectManager.World.spawnBedrockParticle— 范围广播,指定位置128格内所有玩家可见
选择哪个取决于你的需求:如果粒子只需要一个玩家看到,用Player版本;如果需要所有人看到(如技能特效),用EffectManager版本。
addWorldTexture(id, builder, effectPosition)
- 在玩家客户端添加世界贴图
- 参数:
id: String — 贴图唯一标识builder: WorldTextureBuilder — 贴图构建器effectPosition: EffectPosition — 特效位置
- 返回值:无
- 调用示例
与 ArcartXEffectManager.spawnWorldTextureEffect 的区别:
ArcartXPlayer.addWorldTexture— 点对点,仅该玩家自身可见ArcartXEffectManager.spawnWorldTextureEffect— 范围广播,周围所有玩家可见
removeWorldTexture(id)
- 移除玩家客户端的世界贴图
- 参数:
id: String — 贴图唯一标识 - 返回值:无
- 调用示例
playBlockAnimation(x, y, z, animation, speed, transitionTime, keepTime)
- 在玩家客户端播放方块动画
- 参数:
xyz: int — 方块坐标animation: String — 动画名称speed: double — 播放速度transitionTime: int — 过渡时间(毫秒)keepTime: long — 持续时间(毫秒)
- 返回值:无
- 调用示例
spawnHammerCrackEffect(x, y, z, radius, depth, in, keep, out, mode)
- 在玩家客户端生成锤击裂纹特效
- 参数:
xyz: int — 中心坐标radius: float — 裂纹半径depth: float — 裂纹深度in: int — 淡入时间(毫秒)keep: int — 保持时间(毫秒)out: int — 淡出时间(毫秒)mode: int — 裂纹模式
- 返回值:无
- 调用示例
伤害显示
addDamageDisplay(damageDisplayConfigId, x, y, z, damage)
- 在指定坐标为玩家显示伤害数字
- 参数:
damageDisplayConfigId: String — 伤害显示配置IDxyz: double — 显示坐标damage: double — 伤害数值
- 返回值:无
- 调用示例
addDamageDisplay(damageDisplayConfigId, target, damage)
- 在目标实体位置为玩家显示伤害数字
- 参数:
damageDisplayConfigId: String — 伤害显示配置IDtarget: Entity — 目标实体damage: double — 伤害数值
- 返回值:无
- 调用示例
与 ArcartXEntity.broadcastDamageDisplay 的区别:
ArcartXPlayer.addDamageDisplay— 点对点,仅该玩家自身可见ArcartXEntity.broadcastDamageDisplay— 范围广播,所有能看到该实体的玩家可见ArcartXEntity.sendDamageDisplayToPlayers— 指定列表,仅列表中的玩家可见
路标管理
addWayPoint(id, title, waypointConfigId, x, y, z)
- 为玩家添加一个路标
- 参数:
id: String — 路标唯一标识title: String — 路标显示标题waypointConfigId: String — 路标配置IDxyz: double — 路标坐标
- 返回值:无
- 调用示例
deleteWayPoint(id, regex)
- 删除玩家的路标
- 参数:
id: String — 路标标识regex: boolean — 是否使用正则匹配(默认false)
- 返回值:无
- 调用示例
clearWayPoint()
- 清除玩家的所有路标
- 参数:无
- 返回值:无
- 调用示例
额外槽位管理
setSlotItemStack(slotID, itemStack)
- 设置额外槽位的物品,同时更新数据库、客户端显示,并触发
PlayerExtraSlotUpdateEvent事件和更新脚本
- 参数:
slotID: String — 槽位IDitemStack: ItemStack — 物品
- 返回值:无
- 调用示例
setSlotItemStackOnlyClient(slotID, itemStack)
- 仅更新客户端显示的槽位物品,不写入数据库
- 参数:
slotID: String — 槽位IDitemStack: ItemStack — 物品
- 返回值:无
- 调用示例
removeSlotItemStackOnlyClient(slotID, startWith)
- 仅从客户端移除槽位物品显示
- 参数:
slotID: String — 槽位IDstartWith: boolean — 是否匹配以该ID开头的所有槽位
- 返回值:无
- 调用示例
getSlotItemStack(slotID)
- 获取额外槽位中的物品
- 参数:
slotID: String — 槽位ID - 返回值:
ItemStack?— 物品对象,可能为null - 调用示例
syncSlotCacheToClient()
- 将所有槽位缓存同步到客户端,通常在玩家重新连接时使用
- 参数:无
- 返回值:无
- 调用示例
物品冷却
setTagCooldown(tag, time)
- 设置物品冷却标签的冷却时间
- 参数:
tag: String — 冷却标签time: long — 冷却时间(毫秒)
- 返回值:无
- 调用示例
getTagCooldown(tag)
- 获取物品冷却标签的剩余冷却时间
- 参数:
tag: String — 冷却标签 - 返回值:long — 剩余冷却时间(毫秒),0表示已冷却完毕
- 调用示例
音效
playSoundForSelf(resourcePath, soundCategory, pitch, keepTime)
- 为玩家自身播放音效
- 参数:
resourcePath: String — 音效资源路径soundCategory: String — 音效类别pitch: float — 音调keepTime: int — 持续时间(毫秒)
- 返回值:无
- 调用示例
其他功能
sendCustomPacket(id, data...)
- 向玩家客户端发送自定义数据包
- 参数:
id: String — 数据包IDdata: String... — 数据内容(可变参数)
- 返回值:无
- 调用示例
parseShimmer(code)
- 在玩家客户端执行Shimmer脚本代码
- 参数:
code: String — Shimmer脚本代码 - 返回值:无
- 调用示例
sendChatCard(cardID, cardData)
- 向玩家发送聊天卡片消息
- 参数:
cardID: String — 卡片配置IDcardData: Map<String, String> — 卡片数据
- 返回值:无
- 调用示例
