LogoArcartX Doc

ArcartXNetworkSender:网络发送器

底层网络发送API

ArcartXNetworkSender

  • 网络发送器提供了更底层的网络数据包发送能力,所有方法都是点对点发送给指定玩家。
  • 通过 ArcartXAPI.getNetworkSender() 获取。
  • 大多数场景下你应该优先使用 ArcartXPlayer 或其他高级API,仅在需要精细控制时使用本类。

自定义数据包

sendCustomPacket(player, id, args...)

  • 向玩家发送自定义数据包
  • 参数
    • player: Player — 目标玩家
    • id: String — 数据包ID
    • args: String... — 数据内容(可变参数)
  • 返回值:无
  • 调用示例
ArcartXAPI.getNetworkSender().sendCustomPacket(player, "my_plugin:sync", "data1", "data2");

服务端变量

sendServerVariable(player, variableName, value)

  • 向玩家客户端设置一个服务端变量,可在Aria脚本中读取
  • 参数
    • player: Player — 目标玩家
    • variableName: String — 变量名
    • value: Object — 变量值
  • 返回值:无
  • 调用示例
ArcartXAPI.getNetworkSender().sendServerVariable(player, "player_level", 10);

sendMultipleServerVariable(player, variables)

  • 批量设置服务端变量
  • 参数
    • player: Player — 目标玩家
    • variables: Map<String, Object> — 变量映射
  • 返回值:无
  • 调用示例
Map<String, Object> vars = new HashMap<>();
vars.put("hp", 100);
vars.put("mp", 50);
ArcartXAPI.getNetworkSender().sendMultipleServerVariable(player, vars);

removeServerVariable(player, variableName, startWith)

  • 移除玩家客户端的服务端变量
  • 参数
    • player: Player — 目标玩家
    • variableName: String — 变量名
    • startWith: boolean — 是否匹配以该名称开头的所有变量(默认false)
  • 返回值:无
  • 调用示例
ArcartXAPI.getNetworkSender().removeServerVariable(player, "player_", true);

伤害显示

sendDamageDisplay(player, configID, damage, location)

  • 在指定位置为玩家显示伤害数字
  • 参数
    • player: Player — 目标玩家
    • configID: String — 伤害显示配置ID
    • damage: double — 伤害数值
    • location: Location — 显示位置
  • 返回值:无
  • 调用示例
ArcartXAPI.getNetworkSender().sendDamageDisplay(player, "critical", 999.0, location);

sendDamageDisplay(player, configID, damage, target)

  • 在目标实体位置为玩家显示伤害数字
  • 参数
    • player: Player — 目标玩家
    • configID: String — 伤害显示配置ID
    • damage: double — 伤害数值
    • target: Entity — 目标实体
  • 返回值:无
  • 调用示例
ArcartXAPI.getNetworkSender().sendDamageDisplay(player, "default", 50.0, targetEntity);

图片资源

sendBase64Image(player, resourceID, base64)

  • 向玩家客户端发送Base64编码的图片资源
  • 参数
    • player: Player — 目标玩家
    • resourceID: String — 资源ID
    • base64: String — Base64编码的图片数据
  • 返回值:无
  • 调用示例
ArcartXAPI.getNetworkSender().sendBase64Image(player, "avatar", base64String);

音效控制

sendSoundPlay 存在多个重载版本,分别支持按坐标播放、绑定实体播放、绑定玩家自身播放,以及有名/无名两种形式。具名音效可以通过 sendStopSound 停止播放。

sendSoundPlay(player, name, path, x, y, z, soundCategory, distOrRoll, pitch, keepTime)

  • 在指定坐标播放具名音效
  • 参数
    • player: Player — 目标玩家
    • name: String — 音效名称(用于后续停止)
    • path: String — 音效资源路径
    • x: int — 播放坐标 X
    • y: int — 播放坐标 Y
    • z: int — 播放坐标 Z
    • soundCategory: String — 音效类别(默认 master
    • distOrRoll: int — 传播距离(默认16)
    • pitch: double — 音调(默认1.0)
    • keepTime: int — 持续时间(默认5000毫秒)
  • 返回值:无
  • 调用示例
ArcartXAPI.getNetworkSender().sendSoundPlay(player, "bell", "sounds/bell.ogg",
    100, 64, 200, "master", 16, 1.0, 5000);

sendSoundPlay(player, name, path, entity, soundCategory, distOrRoll, pitch, keepTime)

  • 绑定到指定实体播放具名音效
  • 参数
    • player: Player — 目标玩家
    • name: String — 音效名称(用于后续停止)
    • path: String — 音效资源路径
    • entity: Entity — 绑定的实体
    • soundCategory: String — 音效类别(默认 master
    • distOrRoll: int — 传播距离(默认16)
    • pitch: double — 音调(默认1.0)
    • keepTime: int — 持续时间(默认5000毫秒)
  • 返回值:无
  • 调用示例
ArcartXAPI.getNetworkSender().sendSoundPlay(player, "roar", "sounds/roar.ogg",
    targetEntity, "master", 16, 1.0, 5000);

sendSoundPlay(player, path, entity, soundCategory, distOrRoll, pitch, keepTime)

  • 绑定到指定实体播放无名音效
  • 参数
    • player: Player — 目标玩家
    • path: String — 音效资源路径
    • entity: Entity — 绑定的实体
    • soundCategory: String — 音效类别(默认 master
    • distOrRoll: int — 传播距离(默认16)
    • pitch: double — 音调(默认1.0)
    • keepTime: int — 持续时间(默认5000毫秒)
  • 返回值:无
  • 调用示例
ArcartXAPI.getNetworkSender().sendSoundPlay(player, "sounds/roar.ogg",
    targetEntity, "master", 16, 1.0, 5000);

sendSoundPlay(player, name, path, soundCategory, distOrRoll, pitch, keepTime)

  • 绑定到玩家自身播放具名音效
  • 参数
    • player: Player — 目标玩家
    • name: String — 音效名称(用于后续停止)
    • path: String — 音效资源路径
    • soundCategory: String — 音效类别(默认 master
    • distOrRoll: int — 传播距离(默认16)
    • pitch: double — 音调(默认1.0)
    • keepTime: int — 持续时间(默认5000毫秒)
  • 返回值:无
  • 调用示例
ArcartXAPI.getNetworkSender().sendSoundPlay(player, "bgm", "sounds/bgm.ogg",
    "music", 16, 1.0, 5000);

sendSoundPlay(player, path, soundCategory, distOrRoll, pitch, keepTime)

  • 绑定到玩家自身播放无名音效
  • 参数
    • player: Player — 目标玩家
    • path: String — 音效资源路径
    • soundCategory: String — 音效类别(默认 master
    • distOrRoll: int — 传播距离(默认16)
    • pitch: double — 音调(默认1.0)
    • keepTime: int — 持续时间(默认5000毫秒)
  • 返回值:无
  • 调用示例
ArcartXAPI.getNetworkSender().sendSoundPlay(player, "sounds/click.ogg",
    "master", 16, 1.0, 5000);

sendStopSound(player, name)

  • 停止播放指定名称的音效
  • 参数
    • player: Player — 目标玩家
    • name: String — 音效名称
  • 返回值:无
  • 调用示例
ArcartXAPI.getNetworkSender().sendStopSound(player, "bgm");

实体控制

sendSetEntityModel(player, entity, modelID, scale)

  • 为指定玩家设置某个实体的模型显示
  • 参数
    • player: Player — 目标玩家
    • entity: UUID — 实体UUID
    • modelID: String — 模型ID
    • scale: double — 缩放比例(默认1.0)
  • 返回值:无
  • 调用示例
ArcartXAPI.getNetworkSender().sendSetEntityModel(player, entityUUID, "custom_model", 1.5);

sendSetEntityAnimation(player, entity, animationName, speed, transitionTime, time)

  • 为指定玩家播放某个实体的动画
  • 参数
    • player: Player — 目标玩家
    • entity: UUID — 实体UUID
    • animationName: String — 动画名称
    • speed: double — 播放速度
    • transitionTime: int — 过渡时间(毫秒)
    • time: long — 持续时间(毫秒)
  • 返回值:无
  • 调用示例
ArcartXAPI.getNetworkSender().sendSetEntityAnimation(player, entityUUID, "attack", 1.0, 100, 2000L);

sendSetEntitySize(player, entity, width, height)

  • 为指定玩家设置某个实体的碰撞体积显示
  • 参数
    • player: Player — 目标玩家
    • entity: UUID — 实体UUID
    • width: double — 宽度
    • height: double — 高度
  • 返回值:无
  • 调用示例
ArcartXAPI.getNetworkSender().sendSetEntitySize(player, entityUUID, 1.0, 2.0);