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()
调用。
除此之外,实际上清理玩家的库存是微不足道的,并且可以在一行中完成。
我需要知道是否有一种方法可以在 运行 来自另一个插件的命令时清除玩家库存。我想你可以使用 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()
调用。
除此之外,实际上清理玩家的库存是微不足道的,并且可以在一行中完成。