我有一个检测脏话的 Minecraft 插件。当玩家诅咒时如何执行命令?

I have a minecraft plugin that detects swear words. How do I execute commands when the player curses?

Sa 正如标题所说,我有一个检测脏话的插件。它现在所做的是向玩家发送消息。但我也希望它执行游戏中已有的命令或来自另一个插件的命令。我不知道该怎么做。这是怎么做到的? 这是我当前的代码:

package



import com.beam.sweardetector.SwearDetector;
import org.bukkit.ChatColor;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.player.AsyncPlayerChatEvent;
import org.bukkit.event.player.PlayerJoinEvent;


public class EventsClass implements Listener {
    SwearDetector plugin = SwearDetector.getPlugin(SwearDetector.class);
   @EventHandler
    public void onPlayerJoinEvent(PlayerJoinEvent event) {
       Player player = event.getPlayer();
       player.sendMessage(ChatColor.GOLD + "This server is running AntiSwear v1.0 by BeamCRASH");
   }

   @EventHandler
    public void chatevent (AsyncPlayerChatEvent event) {
       for(String s: event.getMessage().split(" ")) {
           if(plugin.getConfig().getStringList("swears").contains(s)) {
               event.setCancelled(true);
               event.getPlayer().sendMessage(ChatColor.DARK_RED + "§lSwearing is not allowed on this server!");
           }
       }
   }
}

如有任何帮助,我们将不胜感激。 谢谢!

你可以作为玩家执行命令:

event.getPlayer().performCommand("mycommand");

但是,如果玩家没有足够的权限,则不会。

将运行命令作为控制台,使用这个:

Bukkit.dispatchCommand(Bukkit.getConsoleSender(), "mycommand");

此外,您不需要命令开头的/,因为它只是表示它是一个命令,可以在玩家之间改变。

警告:您应该 运行 同步这些代码。如果你是异步的(特别是来自 AsyncEvent),你应该使用这个代码:

Bukkit.getScheduler().runTask(plugin, () -> {
   // my code
   player.performCommand("kill");
});