Chest Help

Discussion in 'Plugin Development' started by dlange, Mar 6, 2015.

Thread Status:
Not open for further replies.
  1. Offline

    dlange

    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 ;-;
     
  2. Offline

    Cycryl

    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.
     
Thread Status:
Not open for further replies.

Share This Page