英文:
Cannot resolve method 'getTitle' in 'Inventory' when click event
问题
在点击套件GUI的事件中,我遇到了这个错误 "无法解决 'Inventory' 中的 'getTitle' 方法"。
// 点击套件GUI的事件
@EventHandler
public void onInventoryClick(InventoryClickEvent e) {
Player player = (Player) e.getWhoClicked();
Inventory inv = e.getInventory();
if (inv.getTitle().equals("Kit Creator")) {
e.setCancelled(true);
if (e.getCurrentItem() == null) {
return;
}
switch (e.getCurrentItem().getType()) {
case GREEN_WOOL:
createKit(player);
break;
case RED_WOOL:
deleteKit(player);
break;
case BLUE_WOOL:
useKit(player);
break;
default:
addItem(player, e.getCurrentItem());
break;
}
}
}
我非常感激任何愿意帮助我的人。
我找到了关于 .getView()
的信息,但我无法弄清如何在我的情况下使用它。
英文:
In my event for clicking on kit GUI I get this error "Cannot resolve method 'getTitle' in 'Inventory'".
// Event for clicking on kit GUI
@EventHandler
public void onInventoryClick(InventoryClickEvent e) {
Player player = (Player) e.getWhoClicked();
Inventory inv = e.getInventory();
if (inv.getTitle().equals("Kit Creator")) {
e.setCancelled(true);
if (e.getCurrentItem() == null) {
return;
}
switch (e.getCurrentItem().getType()) {
case GREEN_WOOL:
createKit(player);
break;
case RED_WOOL:
deleteKit(player);
break;
case BLUE_WOOL:
useKit(player);
break;
default:
addItem(player, e.getCurrentItem());
break;
}
}
}
I am very appreciative of anyone willing to help me.
I found information regarding .getView(), but I couldn't figure out how to use it in my case.
答案1
得分: 0
要获取标题,您应该使用 e.getView().getTitle()
。视图只是已打开的库存。
我建议您使用 InventoryHolder 来检查您的库存。
首先,您应该创建一个实现 Inventory Holder 接口的类,像这样:
public class MyHolder implements InventoryHolder {
@Override
public Inventory getInventory() {
return null;
}
}
在创建库存时,不要将 "null" 或玩家作为第一个参数(即持有者,像 new MyHolder()
)。
现在,您可以使用 e.getInventory().getHolder()
,然后检查持有者是否不为 null,且是否是 MyHolder
的实例。
最后,您可以将数据放入您的持有者中,因为您将检索到用于创建库存的确切对象。
英文:
To get the title, you should use e.getView().getTitle()
. The view is just the inventory opened.
I suggest you to use InventoryHolder to check for your inventory.
Firstly, you should create a class that implement Inventory Holder like that:
public class MyHolder implements InventoryHolder {
@Override
public Inventory getInventory() {
return null;
}
}
When creating the inventory, instead of putting "null" or the player as first argument (the holder, like new MyHolder()
).
Now, you can do e.getInventory().getHolder()
then check if the holder is not null and if instanceof MyHolder
.
Finally, You can put data into your holder as you will retrieve the exact same object used to create the inventory.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论