本文介紹了Bukkit從庫存中移除物品的處理方法,對大家解決問題具有一定的參考價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧!
問題描述
我正在嘗試檢查玩家的庫存中是否有物品,如果有,則刪除其中一個(gè)。這是我現(xiàn)在擁有的:
Material ammomat = parseMaterial(plugin.getConfig().getString("game.ammo_material"));
ItemStack ammo = new ItemStack(ammomat, 1);
if(p.getInventory().contains(ammomat, 1)){
p.getInventory().removeItem(ammo);
p.updateInventory();
}
它獲取他們是否擁有該項(xiàng)目,但不會刪除一個(gè)項(xiàng)目。
如何從玩家的庫存中刪除一件物品?
推薦答案
如果您只想刪除一件物品,您可以遍歷玩家清單中的物品,然后檢查材料是否與您想要的匹配。如果是,您可以從ItemStack中刪除一項(xiàng)
它可能如下所示:
for(int i = 0; i < p.getInventory().getSize(); i++){
//get the ItemStack at slot i
ItemStack itm = p.getInventory().getItem(i);
//make sure the item is not null, and check if it's material is "mat"
if(itm != null && itm.getType().equals(mat){
//get the new amount of the item
int amt = itm.getAmount() - 1;
//set the amount of the item to "amt"
itm.setAmount(amt);
//set the item in the player's inventory at slot i to "itm" if the amount
//is > 0, and to null if it is <= 0
p.getInventory().setItem(i, amt > 0 ? itm : null);
//update the player's inventory
p.updateInventory();
//we're done, break out of the for loop
break;
}
}
因此,您的代碼可能如下所示:
Material ammomat = parseMaterial(plugin.getConfig().getString("game.ammo_material"));
for(int i = 0; i < p.getInventory().getSize(); i++){
ItemStack itm = p.getInventory().getItem(i);
if(itm != null && itm.getType().equals(ammomat){
int amt = itm.getAmount() - 1;
itm.setAmount(amt);
p.getInventory().setItem(i, amt > 0 ? itm : null);
p.updateInventory();
break;
}
}
這篇關(guān)于Bukkit從庫存中移除物品的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,