如题,有没有什么函数能代替Minecraft.getInstance.player.chat("String")的?
这个函数的引源带有"client"字样,人如其名,其只能在客户端使用。经测试其不能在服务端上使用,否则会有”无效的玩家数据“错误。
所以,我需要一个能在服务端使用的函数,其和Minecraft.getInstance.player.chat("String")一样都可以模拟OP发送聊天消息和使用命令。
顺便问一句,Minecraft.getInstance.player.sendMessage("String", UUID)有没有其替代函数呢?
版本:Minecraft 1.18.2, Forge 2.x
这个函数的引源带有"client"字样,人如其名,其只能在客户端使用。经测试其不能在服务端上使用,否则会有”无效的玩家数据“错误。
所以,我需要一个能在服务端使用的函数,其和Minecraft.getInstance.player.chat("String")一样都可以模拟OP发送聊天消息和使用命令。
顺便问一句,Minecraft.getInstance.player.sendMessage("String", UUID)有没有其替代函数呢?
版本:Minecraft 1.18.2, Forge 2.x
- server.getPlayerList().broadcastMessage(new TranslatableComponent("chat.type.text", player.getDisplayName(), "awa"), ChatType.CHAT, player.getUUID());
- server.getCommands().performCommand(player.createCommandSourceStack().withPermission(4), "/say awa");
- Minecraft.getInstance.player.displayClientMessage(new TextComponent("就算是sendMessage也不是String而是Component", false))
在Minecraft Forge 2.x中,你可以使用以下方法来模拟OP发送聊天消息和使用命令,这个方法可以在服务端使用:
在你的mod类中,获取当前服务器的MinecraftServer实例:
复制代码
获取服务器上的命令管理器(CommandManager)实例:
复制代码
创建一个命令发送者(CommandSource)实例,模拟OP权限:
复制代码
这里的权限等级2表示OP权限
使用命令发送者(sender)执行聊天消息或命令:
复制代码
这样就可以在服务端使用类似Minecraft.getInstance().player.chat("String")的功能来模拟OP发送聊天消息和使用命令。
关于sendMessage的替代函数,用这个方法来发送消息给指定的玩家(包括UUID):
复制代码
这里的uuid是玩家的UUID,将其替换为特定玩家的UUID,以向该玩家发送消息。
在你的mod类中,获取当前服务器的MinecraftServer实例:
- MinecraftServer server = ServerLifecycleHooks.getCurrentServer();
获取服务器上的命令管理器(CommandManager)实例:
- CommandManager commandManager = server.getCommandManager();
创建一个命令发送者(CommandSource)实例,模拟OP权限:
- CommandSource sender = server.getCommandSource().withPermissionLevel(2);
这里的权限等级2表示OP权限
使用命令发送者(sender)执行聊天消息或命令:
- commandManager.handleCommand(sender, "say Hello, world!");
这样就可以在服务端使用类似Minecraft.getInstance().player.chat("String")的功能来模拟OP发送聊天消息和使用命令。
关于sendMessage的替代函数,用这个方法来发送消息给指定的玩家(包括UUID):
- ServerPlayerEntity player = server.getPlayerManager().getPlayer(uuid);
- if (player != null) {
- player.sendMessage(new LiteralText("Hello, world!"), MessageType.CHAT);
- }
这里的uuid是玩家的UUID,将其替换为特定玩家的UUID,以向该玩家发送消息。