I am making an SG based plugin. When the code gets to the part where the chests refill, they don't refill. Idk what i am doing wrong as this worked at one point. This is the code: Code: state = State.INGAME; int radius = 200; Location loc = new Location(Bukkit.getServer().getWorld("purge"), 257, 78, 256); World world = Bukkit.getServer().getWorld("purge"); for (int x = -radius; x < radius; x++) { for (int y = -radius; y < radius; y++) { for (int z = -radius; z < radius; z++) { Block block = world.getBlockAt(loc.getBlockX(), loc.getBlockY(), loc.getBlockZ()); if (block.getType() == Material.CHEST) { BlockState blockState = block.getState(); Chest chest = (Chest) blockState; Random r = new Random(); int numItems = r.nextInt(6) + 1; Location loc1 = new Location(Bukkit.getServer().getWorld("purge"), 255, 76, 258); Location loc2 = new Location(Bukkit.getServer().getWorld("purge"), 254, 76, 256); Location loc3 = new Location(Bukkit.getServer().getWorld("purge"), 255, 76, 254); Location loc4 = new Location(Bukkit.getServer().getWorld("purge"), 257, 76, 253); Location loc5 = new Location(Bukkit.getServer().getWorld("purge"), 255, 76, 258); Location loc6 = new Location(Bukkit.getServer().getWorld("purge"), 255, 76, 258); Location loc7 = new Location(Bukkit.getServer().getWorld("purge"), 255, 76, 258); Location loc8 = new Location(Bukkit.getServer().getWorld("purge"), 255, 76, 258); Random random = new Random(); int chance = random.nextInt(100) + 1; for (int i = 0; i < numItems; i++) { if (chance <= 25) { Material[] itemsTier2c = new Material[]{Material.IRON_BOOTS, Material.IRON_HELMET, Material.IRON_CHESTPLATE, Material.IRON_LEGGINGS}; Material material = itemsTier2c[r.nextInt(itemsTier2c.length)]; ItemStack item = new ItemStack(material, 1); int index; do { index = r.nextInt(chest.getInventory().getSize()); } while (chest.getInventory().getItem(index) != null); chest.getInventory().setItem(index, item); } if (chance <= 10) { Material[] itemsTier2c = new Material[]{Material.DIAMOND, Material.GOLDEN_APPLE}; Material material = itemsTier2c[r.nextInt(itemsTier2c.length)]; ItemStack item = new ItemStack(material, 1); int index; do { index = r.nextInt(chest.getInventory().getSize()); } while (chest.getInventory().getItem(index) != null); chest.getInventory().setItem(index, item); } if (chance <= 40) { Material[] itemsTier2c = new Material[]{Material.GOLD_HELMET, Material.GOLD_CHESTPLATE, Material.GOLD_LEGGINGS, Material.GOLD_BOOTS, Material.CHAINMAIL_BOOTS, Material.CHAINMAIL_CHESTPLATE, Material.CHAINMAIL_LEGGINGS, Material.CHAINMAIL_HELMET, Material.FLINT_AND_STEEL}; Material material = itemsTier2c[r.nextInt(itemsTier2c.length)]; ItemStack item = new ItemStack(material, 1); int index; do { index = r.nextInt(chest.getInventory().getSize()); } while (chest.getInventory().getItem(index) != null); chest.getInventory().setItem(index, item); } if (chance <= 50) { Material[] itemsTier2c = new Material[]{Material.STONE_SWORD}; Material material = itemsTier2c[r.nextInt(itemsTier2c.length)]; ItemStack item = new ItemStack(material, 1); int index; do { index = r.nextInt(chest.getInventory().getSize()); } while (chest.getInventory().getItem(index) != null); chest.getInventory().setItem(index, item); } if (chance <= 30) { Material[] itemsTier2c = new Material[]{Material.EXP_BOTTLE}; Material material = itemsTier2c[r.nextInt(itemsTier2c.length)]; ItemStack item = new ItemStack(material, 1); int index; do { index = r.nextInt(chest.getInventory().getSize()); } while (chest.getInventory().getItem(index) != null); chest.getInventory().setItem(index, item); } if (chance <= 100) { Material[] itemsTier2c = new Material[]{Material.STICK}; Material material = itemsTier2c[r.nextInt(itemsTier2c.length)]; ItemStack item = new ItemStack(material, 1); int index; do { index = r.nextInt(chest.getInventory().getSize()); } while (chest.getInventory().getItem(index) != null); chest.getInventory().setItem(index, item); } if (chance <= 100) { Material[] itemsTier1c = new Material[]{Material.STICK}; Material material = itemsTier1c[r.nextInt(itemsTier1c.length)]; ItemStack item = new ItemStack(material, 1); int index; do { index = r.nextInt(chest.getInventory().getSize()); } while (chest.getInventory().getItem(index) != null); chest.getInventory().setItem(index, item); } if (chance <= 25) { Material[] itemsTier1c = new Material[]{Material.STONE_SWORD}; Material material = itemsTier1c[r.nextInt(itemsTier1c.length)]; ItemStack item = new ItemStack(material, 1); int index; do { index = r.nextInt(chest.getInventory().getSize()); } while (chest.getInventory().getItem(index) != null); chest.getInventory().setItem(index, item); } if (chance <= 60) { Material[] itemsTier1c = new Material[]{Material.LEATHER_LEGGINGS, Material.LEATHER_HELMET, Material.LEATHER_CHESTPLATE, Material.LEATHER_BOOTS, Material.MUSHROOM_SOUP}; Material[] itemsTier1clots = new Material[]{Material.FEATHER, Material.ARROW}; Material material = itemsTier1c[r.nextInt(itemsTier1c.length)]; Material materiallots = itemsTier1clots[r.nextInt(itemsTier1clots.length)]; ItemStack item = new ItemStack(material, 1); ItemStack itemlots = new ItemStack(materiallots, 1); int index; do { index = r.nextInt(chest.getInventory().getSize()); } while (chest.getInventory().getItem(index) != null); chest.getInventory().setItem(index, item); chest.getInventory().setItem(index, itemlots); } if (chance <= 70) { Material[] itemsTier1c = new Material[]{Material.COOKED_FISH, Material.RAW_BEEF, Material.COOKED_BEEF, Material.GRILLED_PORK, Material.PORK, Material.COOKED_CHICKEN, Material.APPLE, Material.RAW_CHICKEN, Material.RAW_FISH,}; Material material = itemsTier1c[r.nextInt(itemsTier1c.length)]; ItemStack item = new ItemStack(material, 2); int index; do { index = r.nextInt(chest.getInventory().getSize()); } while (chest.getInventory().getItem(index) != null); chest.getInventory().setItem(index, item); } } } Does anyone know what i am doing wrong? As in theory it should be working ;-;
chest.update(); might work instead of actually refilling the chests try storing the Inventorys in a HashMap<Location,Inventory> as soon as a chest is clicked.