如标题描述的那样,我自定义了一个物品,然后想通过玩家通过点击背包菜单,判断背包内有有没有这个物品。
物品为
public static ItemStack dzbh() {
ItemStack i;
i = new ItemStack(Material.PAPER);
ItemMeta id = i.getItemMeta();
id.setDisplayName("§3§2§1§6§l锻造保护符");
ArrayList lore = new ArrayList();
lore.add("§e用法:§a打开背包,将保护符放入背包");
lore.add("§e作用:§a对装备附加锻造保护效果");
lore.add("§e说明:");
lore.add("§7 -§a保护装备锻造失败丢失锋利");
lore.add("§7 -§c一个保护符可抵消一次锻造失败.");
lore.add("§7 -§a保护符放入背包即可");
id.setLore(lore);
id.addEnchant(Enchantment.OXYGEN, 1, true);
i.setItemMeta(id);
return i;
}
物品为
public static ItemStack dzbh() {
ItemStack i;
i = new ItemStack(Material.PAPER);
ItemMeta id = i.getItemMeta();
id.setDisplayName("§3§2§1§6§l锻造保护符");
ArrayList lore = new ArrayList();
lore.add("§e用法:§a打开背包,将保护符放入背包");
lore.add("§e作用:§a对装备附加锻造保护效果");
lore.add("§e说明:");
lore.add("§7-§a保护装备锻造失败丢失锋利");
lore.add("§7-§c一个保护符可抵消一次锻造失败.");
lore.add("§7-§a保护符放入背包即可");
id.setLore(lore);
id.addEnchant(Enchantment.OXYGEN, 1, true);
i.setItemMeta(id);
return i;
}
物品为
public static ItemStack dzbh() {
ItemStack i;
i = new ItemStack(Material.PAPER);
ItemMeta id = i.getItemMeta();
id.setDisplayName("§3§2§1§6§l锻造保护符");
ArrayList lore = new ArrayList();
lore.add("§e用法:§a打开背包,将保护符放入背包");
lore.add("§e作用:§a对装备附加锻造保护效果");
lore.add("§e说明:");
lore.add("§7 -§a保护装备锻造失败丢失锋利");
lore.add("§7 -§c一个保护符可抵消一次锻造失败.");
lore.add("§7 -§a保护符放入背包即可");
id.setLore(lore);
id.addEnchant(Enchantment.OXYGEN, 1, true);
i.setItemMeta(id);
return i;
}
2021.12 数据,可能有更多内容
如标题描述的那样,我自定义了一个物品,然后想通过玩家通过点击背包菜单,判断背包内有有没有这个物品。物品为
public static ItemStack dzbh() {
ItemStack i;
i = new ItemStack(Material.PAPER);
ItemMeta id = i.getItemMeta();
id.setDisplayName("§3§2§1§6§l锻造保护符");
ArrayList lore = new ArrayList();
lore.add("§e用法:§a打开背包,将保护符放入背包");
lore.add("§e作用:§a对装备附加锻造保护效果");
lore.add("§e说明:");
lore.add("§7-§a保护装备锻造失败丢失锋利");
lore.add("§7-§c一个保护符可抵消一次锻造失败.");
lore.add("§7-§a保护符放入背包即可");
id.setLore(lore);
id.addEnchant(Enchantment.OXYGEN, 1, true);
i.setItemMeta(id);
return i;
}
- for(int i=0; i<玩家背包.size; i++){
- if(玩家背包.getItem(i) == dzbh()){
- Do sth
- break;
- }
- }
我直接提供思路吧,在InventoryClickEvent事件中
判定点击某个格子后
遍历玩家的背包boolean hasItem = false;
Inventory inv = player.getInventory();
for (int i = 0;i < 40;i++) {
ItemStack item = inv.getItem(i);
接下来判定顺序:是否为null->是否有ItemMeta->是否有DisplayName->DisplayName是否包含你隐藏的特殊字符
若判断为true,那hasItem = true;break;
}
接着
if (hasItem) {
有该物品怎么怎么样
} else {
没有怎么怎么样
}
2楼判断方式误导:
判断请使用equals而非==,==为比较内存地址
3楼判断方式并不需要那么复杂,因为是判断整个物品而不是物品名称或lore的关键词
只需要equals或者contains即可:
ItermStakc item=dzhb();
方式1:
player.getInventory().contains(item);
方式2:
ItemStack invItem=player.getInventory().getItem(slot);
if(invItem!=null && invItem.equals(item)){
...
}
如果物品可叠加,equals会判断失败,应该使用:
invItem.isSimilar(item);
判断请使用equals而非==,==为比较内存地址
3楼判断方式并不需要那么复杂,因为是判断整个物品而不是物品名称或lore的关键词
只需要equals或者contains即可:
ItermStakc item=dzhb();
方式1:
player.getInventory().contains(item);
方式2:
ItemStack invItem=player.getInventory().getItem(slot);
if(invItem!=null && invItem.equals(item)){
...
}
如果物品可叠加,equals会判断失败,应该使用:
invItem.isSimilar(item);
这个是淬炼插件么?