CraftBukkit 1.8.8 - 是否可以让客户自己发送消息?

时间:2016-10-21 09:08:37

标签: minecraft bukkit

我想制作一个反黑客插件,它应该让客户端写“.msg Test”。所以它会打印“测试”而没有hackclient“.msg测试”(ikr,不是所有黑客都有,但有很多)。

为此,客户必须自己编写消息。可以通过向播放器发送消息并让客户端在单击文本时发送此“.msg”消息来实现此目的。

但是如果没有玩家的互动,有没有办法做到这一点?

2 个答案:

答案 0 :(得分:2)

这可能是我的朋友

人们倾向于错过方法的有用性

myPlayer.chat();

该方法强制播放器将某些内容放入聊天中,并且由于聊天和命令都通过相同的流,您只需通过添加前缀“/”

将聊天消息更改为命令即可
myPlayer.chat("/msg test");

强制玩家使用参数'test'运行命令'msg'。

答案 1 :(得分:1)

不幸的是,这不可能通过bukkit-api实现。您可以做的最接近的事情是使用 Server#dispatchCommand ,但只有在服务器端注册时它才会执行命令。 https://hub.spigotmc.org/javadocs/spigot/org/bukkit/Server.html#dispatchCommand(org.bukkit.command.CommandSender,%20java.lang.String)

但是,如果您想要使用NMS(net.minecraft.server)代码,那么

CommandBlockListenerAbstract.executeCommand(ICommandListener sender, org.bukkit.command.CommandSender bSender, String command)

应该可以工作,因为这是我看到1.8.8 spigot-server中命令符号的实现(TileEntitySign.java line:181)。