Orion_shadow
Orion_shadow 发表于 2020-6-20 15:53
我是个新手,,不过下面这个方法可以试试看

ICommand接口内有个方法叫做

我这个事1.12.2的,,

2534503188
编程新手,来学习下呀

洞穴夜莺
本帖最后由 洞穴夜莺 于 2020-6-25 21:44 编辑

首先由于你要发送消息给玩家,所以你的命令要改成只有玩家有权执行,对于服务器后台等杂七杂八的CommandSource直接告诉他没有权限
  1. .requires(src -> src.getEntity() instanceof ServerPlayerEntity)
复制代码

然后发送消息
  1. player.sendMessage(new LiteralText("Hello World"));
复制代码

  1. player.networkHandler.sendPacket(new PlaySoundS2CPacket(SoundEvents.UI_TOAST_CHALLENGE_COMPLETE, SoundCategory.AMBIENT,
  2.                         player.getX() + 0.5, player.getY() + 1.0, player.getZ() + 0.5,0.5f, 1.0f));
复制代码

其中0.5是音量,1.0是音调,这里直接发包而不是调用playSound是因为playSound会让该玩家附近的玩家也听到声音
综上所述
  1. CommandRegistry.INSTANCE.register(false, dispatcher -> {
  2.             dispatcher.register(CommandManager.literal("shoo").requires(src -> src.getEntity() instanceof ServerPlayerEntity).executes( ctx -> {
  3.                 ServerPlayerEntity player = ctx.getSource().getPlayer();
  4.                 player.sendMessage(new LiteralText("Hello World"));
  5.                 player.networkHandler.sendPacket(new PlaySoundS2CPacket(SoundEvents.UI_TOAST_CHALLENGE_COMPLETE, SoundCategory.AMBIENT,
  6.                         player.getX() + 0.5, player.getY() + 1.0, player.getZ() + 0.5,0.5f, 1.0f));
  7.                 return 1;
  8.             }));
  9.         });
复制代码


第一页 上一页