我有一个检测脏话的 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");
});
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");
});