Solved Items in an inventory change?

Discussion in 'Plugin Development' started by dlange, May 18, 2015.

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

    dlange

    How do i make items in an inventory change when opened, like stained glass changing colors every seconds etc. I tried InventoryOpenEvent, and setting the items in the inventory but it doesn't work.

    EDIT: Don't worry, i was just doing the runnable wrong xD
     
    Last edited: May 18, 2015
  2. Offline

    mine-care

    @dlange Post the solution you found for the world to see please :- )
    Also be sure not to start infinite repeating tasks in event bodies.
     
  3. Offline

    dlange

    @mine-care What do you suggest instead? That's what i did, but i agree it's not the best idea. I could have a method that's called from the event, would probs be the same thing, idk.

    This is what i did:
    Code:
        @EventHandler
        public void onInvOpen(final InventoryOpenEvent e) {
            if (e.getInventory().getName().equals(Inventories.duelInventory().getName())) {
                new BukkitRunnable() {
                    @Override
                    public void run() {
                        Inventory inv = e.getInventory();
                        byte b1;
                        ItemStack item = null;
                        if (inv.getItem(0).equals(new ItemStack(Material.STAINED_GLASS_PANE, 1, (byte) 8))) {
                            b1 = (byte) 14;
                            item = new ItemStack(Material.STAINED_GLASS_PANE, 1, b1);
                        } else {
                            b1 = (byte) 8;
                            item = new ItemStack(Material.STAINED_GLASS_PANE, 1, b1);
                        }
                        ItemMeta itemm = item.getItemMeta();
                        itemm.setDisplayName(" ");
                        item.setItemMeta(itemm);
    
                        for (int i = 0; i < 9; i++) {
                            inv.setItem(i - 1, item);
                        }
    
                        for (int i = 27; i < 36; i++) {
                            inv.setItem(i, item);
                        }
                    }
                }.runTaskTimer(Duel.getPlugin(), 5L, 5L);
            }
        }
     
Thread Status:
Not open for further replies.

Share This Page