我需要知道当他们从另一个插件运行命令时是否有办法清除玩家库存。我以为你可以使用PlayerCommandPreprocessEvent,但我自己无法得到它。我想帮助解决一下我的问题。谢谢:))
答案 0 :(得分:2)
你正确的轨道 - 为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()
调用。
过去,实际上清除玩家的库存是微不足道的,并且可以在单行中完成。