Bukkit:当来自另一个插件的另一个命令是 运行 时清除 inv

Bukkit: Making an inv clear when another command from another plugin was run

我需要知道是否有一种方法可以在 运行 来自另一个插件的命令时清除玩家库存。我想你可以使用 PlayerCommandPreprocessEvent 但我自己没能得到它。我需要一些帮助来解决我的问题。谢谢:)

你在正确的轨道上 - 为 PlayerCommandPreprocessEvent 创建一个侦听器,检查命令是你想要的,然后清除玩家的库存:

public class PlayerCommandPreprocessListener implements Listener {
    @EventHandler
    public void onPlayerCommandPreprocess(PlayerCommandPreprocessEvent event) {
        if (event.getMessage().toLowerCase().startsWith("/otherplugincommand")) {
            event.getPlayer().getInventory().clear();
        }
    }
}

请记住在比较之前规范化大小写(在消息上调用 toUpperCase()toLowerCase()),因为 Bukkit 的命令处理不区分大小写。

使用 startsWith() 而不是 equals() 会忽略任何后续参数 - 如果您需要检查参数是否完全匹配,请使用 equals() 调用。

除此之外,实际上清理玩家的库存是微不足道的,并且可以在一行中完成。