试图让getView(). gettitle()工作



我最初只使用getTitle(),但后来发现你也需要使用getView()。所以我试了,但我还是不能让它工作。

供参考这是错误:Cannot resolve method 'getView' in 'Inventory'

我试着改变InventoryView()getInventory(),但仍然是相同的错误,但Cannot resolve method 'InventoryView' in 'Chest'错误,所以这意味着我不能从块获得库存视图?

@EventHandler
public void onInteract(PlayerInteractEvent e) {
Action a = e.getAction();
Player p = e.getPlayer();
ItemStack hand = e.getItem();
Block clicked = e.getClickedBlock();
if (a != Action.PHYSICAL) {
assert clicked != null;
if(clicked.getType() == Material.CHEST){
hand.getType();
Chest chest = (Chest) clicked.getState();
Inventory inv = chest.getInventory();
if(inv.getView().getTitle().equalsIgnoreCase("Test")) {
p.sendMessage("Event triggered");
e.setCancelled(true);
}

}
}
}

在搜索了大约100个网站后,我找到了一个有效的解决方案,我不知道这是否是最好的解决方案,但对我来说很好。

我将整个事件改为使用InventoryOpenEvent而不是PlayerInteractEvent

下面是完整的代码:

@EventHandler
public void onInventoryOpen(InventoryOpenEvent e) {
Player player = (Player) e.getPlayer();
if (e.getView().getTitle().equals("Test")) {
e.setCancelled(true);
player.sendMessage("Succesfull");
}
}

下面是代码:

@EventHandler
public void onInventoryOpen(InventoryOpenEvent e) {
if (e.getView().getTitle().equals("Test")) {
e.setCancelled(true);
}
}

最新更新