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");
});
欣然回答: 提前致谢
我第一次尝试做一个新的命令,并遵循这个教程,虽然有点旧,但我相信它仍然有效。完成后,我试着运行我的mod,一切正常,但我的命令不存在。这是我的密码: 和我实际的类: 它正在调用一个实体,这是我自己创建的,只是一个爆炸威力增加的火球。
当我的插件(portlet、钩子或主题)在Liferay中可用时,我想尽快运行一些代码。 在,,或。
不久前我开始学习Java,我对这门语言有了很好的理解(我大约读了一半赫伯特·谢尔登斯Java一本初学者指南)。 我真的很想在forge中编写一个MineCraft mod。所以我用这个视频设置了环境https://www.youtube.com/watch?v=tD6MsMWIH-4 现在我有两个问题。一个有点离题,但我真的不知道还有什么地方可以问,我很感谢你的帮助。如果你不想回答离题的问题,请至
我对编写java很陌生,我做了一些教程,这些教程很棒,但我不知道为什么它不能在游戏中工作。我已经尝试了一切,比如改变它,看看这么多不同的论坛。事件有两个类(Join and Leave Event)和main类。我已经确保检查导入它们和错误,没有让我从我所看到的地方。如果有人能帮上忙,那将是一种福气。 代码:-主类: yml:
我在下面的代码中的处获得了一个concurrentModificationException。我怎样才能避免这种情况呢? 这是stacktrace的顶部