正如標題所說,我有一個插件可以檢測臟話。它現在所做的是向玩家發送訊息。但我也希望它執行游戲中或其他插件中已有的命令。我不知道該怎么做。這是怎么做的?這是我當前的代碼:
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!");
}
}
}
}
任何幫助將不勝感激。謝謝!
uj5u.com熱心網友回復:
您可以以玩家身份執行命令:
event.getPlayer().performCommand("mycommand");
但是,如果玩家沒有足夠的權限,則不會。
要將命令作為控制臺運行,請使用以下命令:
Bukkit.dispatchCommand(Bukkit.getConsoleSender(), "mycommand");
此外,你不需要/在命令的開頭,因為它只是說它是一個命令并且它可以在玩家之間改變。
警告:您應該同步運行這些代碼。如果您是異步的(特別是從AsyncEvent),您應該使用以下代碼:
Bukkit.getScheduler().runTask(plugin, () -> {
// my code
player.performCommand("kill");
});
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/344092.html
