我想制作一个反黑客插件,它应该让客户端写“.msg Test”。所以它会打印“测试”而没有hackclient“.msg测试”(ikr,不是所有黑客都有,但有很多)。
为此,客户必须自己编写消息。可以通过向播放器发送消息并让客户端在单击文本时发送此“.msg”消息来实现此目的。
但是如果没有玩家的互动,有没有办法做到这一点?
答案 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)。