現在、ディスペンサーを利用するプラグインを作成しています。リスナー中に while ループがあり、ループが壊れる石炭がなくなるまで、ディスペンサーの在庫から 1 個の石炭を削除する必要があります。これは正常にループし、石炭の量を表すために使用される整数のカウントダウンを登録します。ただし、ディスペンサーの在庫は更新されません。何か助けていただければ幸いです。while ループに含まれるコードは次のとおりです。
Block temp;
int coal;
BlockState state = block.getState();
Inventory sourceInv = ((InventoryHolder) state).getInventory();
while (sourceInv.contains(Material.COAL))
{
state.update();
temp = drillSpenser.getBlock().getRelative(BlockFace.DOWN);
temp.breakNaturally();
int index = sourceInv.first(Material.COAL);
ItemStack stack = sourceInv.getItem(index);
coal = stack.getAmount();
System.out.println(coal);
if (coal == 0)
{
sourceInv.remove(Material.COAL);
break;
}
coal--;
ItemStack newItem = new ItemStack(Material.COAL, coal);
sourceInv.remove(Material.COAL);
sourceInv.addItem(newItem);
state.update();
block.getState().update();
}
}