"SGCHESTS" generating a "new" Inventory everytime when i click

Discussion in 'Spigot Plugin Development' started by GoRoK, Jun 15, 2016.

  1. Code (Text):

    package openinventory.pack;

    import java.awt.List;
    import java.util.ArrayList;
    import java.util.HashMap;
    import java.util.HashSet;
    import java.util.Random;

    import org.bukkit.Bukkit;
    import org.bukkit.ChatColor;
    import org.bukkit.Location;
    import org.bukkit.Material;
    import org.bukkit.Sound;
    import org.bukkit.command.defaults.PlaySoundCommand;
    import org.bukkit.entity.Player;
    import org.bukkit.event.EventHandler;
    import org.bukkit.event.Listener;
    import org.bukkit.event.block.Action;
    import org.bukkit.event.inventory.InventoryType;
    import org.bukkit.event.player.PlayerInteractEvent;
    import org.bukkit.event.player.PlayerItemBreakEvent;
    import org.bukkit.inventory.Inventory;
    import org.bukkit.inventory.ItemStack;

    @SuppressWarnings({ "unused", "deprecation" })
    public class ClickListener implements Listener
    {
       
       
            @EventHandler
        public void blockChestInterract(PlayerInteractEvent event)
            {
               
               
           }
           
            public HashSet <Location> quest = new HashSet <Location >();
            public ArrayList<Material> items = new ArrayList <>();
            public ArrayList<ItemStack> itemslist = new ArrayList<ItemStack>();      
            public List itemlist = new List ();
           
           
           
           
            // Adding Items to Chest
       
           
            public ArrayList<ItemStack> getItemslist() {
                return itemslist;
                       
            }
           
           
            //
            @SuppressWarnings("static-access")
            @EventHandler
            public void onPlayerClick(PlayerInteractEvent e)
            {
                Inventory inv = Bukkit.createInventory(null, InventoryType.CHEST, ChatColor.AQUA + "             [SG]Chest");
                Random rnd = new Random();
                int n = rnd.nextInt(6);
               
               
               
               
               
               
                itemslist.add(new ItemStack(Material.GOLDEN_APPLE));
                itemslist.add(new ItemStack(Material.APPLE));
                itemslist.add(new ItemStack(Material.WOOD));
                itemslist.add(new ItemStack(Material.STONE));
                itemslist.add(new ItemStack(Material.BRICK));
                itemslist.add(new ItemStack(Material.DIRT));
                itemslist.add(new ItemStack(Material.ANVIL));
                itemslist.add(new ItemStack(Material.ARROW));
                itemslist.add(new ItemStack(Material.GOLDEN_APPLE));
                itemslist.add(new ItemStack(Material.APPLE));
                itemslist.add(new ItemStack(Material.WOOD));
                itemslist.add(new ItemStack(Material.STONE));
                itemslist.add(new ItemStack(Material.BRICK));
                itemslist.add(new ItemStack(Material.DIRT));
                itemslist.add(new ItemStack(Material.ANVIL));
                itemslist.add(new ItemStack(Material.ARROW));
                itemslist.add(new ItemStack(Material.GOLDEN_APPLE));
                itemslist.add(new ItemStack(Material.APPLE));
                itemslist.add(new ItemStack(Material.WOOD));
                itemslist.add(new ItemStack(Material.STONE));
                itemslist.add(new ItemStack(Material.BRICK));
                itemslist.add(new ItemStack(Material.DIRT));
                itemslist.add(new ItemStack(Material.ANVIL));
                itemslist.add(new ItemStack(Material.ARROW));
                itemslist.add(new ItemStack(Material.GOLDEN_APPLE));
                itemslist.add(new ItemStack(Material.APPLE));
                itemslist.add(new ItemStack(Material.WOOD));
                itemslist.add(new ItemStack(Material.STONE));
                itemslist.add(new ItemStack(Material.BRICK));
                itemslist.add(new ItemStack(Material.DIRT));
                itemslist.add(new ItemStack(Material.ANVIL));
                itemslist.add(new ItemStack(Material.ARROW));
                itemslist.add(new ItemStack(Material.GOLDEN_APPLE));
                itemslist.add(new ItemStack(Material.APPLE));
                itemslist.add(new ItemStack(Material.WOOD));
                itemslist.add(new ItemStack(Material.STONE));
                itemslist.add(new ItemStack(Material.BRICK));
                itemslist.add(new ItemStack(Material.DIRT));
                itemslist.add(new ItemStack(Material.ANVIL));
                itemslist.add(new ItemStack(Material.ARROW));
                itemslist.add(new ItemStack(Material.GOLDEN_APPLE));
                itemslist.add(new ItemStack(Material.APPLE));
                itemslist.add(new ItemStack(Material.WOOD));
                itemslist.add(new ItemStack(Material.STONE));
                itemslist.add(new ItemStack(Material.BRICK));
                itemslist.add(new ItemStack(Material.DIRT));
                itemslist.add(new ItemStack(Material.ANVIL));
                itemslist.add(new ItemStack(Material.ARROW));
                itemslist.add(new ItemStack(Material.GOLDEN_APPLE));
                itemslist.add(new ItemStack(Material.APPLE));
                itemslist.add(new ItemStack(Material.WOOD));
                itemslist.add(new ItemStack(Material.STONE));
                itemslist.add(new ItemStack(Material.BRICK));
                itemslist.add(new ItemStack(Material.DIRT,12));
                itemslist.add(new ItemStack(Material.ANVIL,2));
                itemslist.add(new ItemStack(Material.ARROW,52));
                itemslist.add(new ItemStack(Material.GOLDEN_APPLE,31));
                itemslist.add(new ItemStack(Material.APPLE,32));
                itemslist.add(new ItemStack(Material.WOOD,55));
                itemslist.add(new ItemStack(Material.STONE,51));
                itemslist.add(new ItemStack(Material.BRICK,26));
                itemslist.add(new ItemStack(Material.DIRT,53));
                itemslist.add(new ItemStack(Material.ANVIL,3));
                itemslist.add(new ItemStack(Material.ARROW,15));
               
             
               
                if(e.getClickedBlock().getType().equals(Material.ENDER_CHEST))
                {
                    Location locc = e.getClickedBlock().getLocation();
                    e.setCancelled(true);
                    if(quest.contains(locc))
                    {
                        Player p = (Player) e.getPlayer();
                        inv.getContents();
                        p.openInventory(inv);
                    }
                    else
                    {
                        quest.add(locc);
                while(n != 0)
                {
                   
                    Random rnd2 = new Random();
                     Random rnd3 = new Random();
                     int n3 = rnd3.nextInt(27);
                     int n2 = rnd2.nextInt(itemslist.size());
                     
                    n--;
               
                    inv.setItem(n3, (ItemStack)itemslist.get(n2));
                    inv.setItem(n3, (ItemStack)itemslist.get(n2));
                    inv.setItem(n3, (ItemStack)itemslist.get(n2));
                   
                    inv.setItem(n3, (ItemStack)itemslist.get(n2));
                    inv.setItem(n3, (ItemStack)itemslist.get(n2));
                    inv.setItem(n3, (ItemStack)itemslist.get(n2));
                    Player p = (Player) e.getPlayer();
                   
                    p.openInventory(inv);
                }
                    }
                   
                   
                   
                   
                   
                   
                   
                   
                   
                   
                   
                   
                   
                   
                   
               
                   
                   
                       
                       
                         
                         
                         
                         
                       
                       
                       
                       
                       
                        //
                       
                       
                       
                       
                       
                       
                       
                        //Insert above
                        //
                            if(e.getClickedBlock().getType().equals(Material.CHEST) || e.getClickedBlock().getType().equals(Material.TRAPPED_CHEST) )
                            {
                                e.setCancelled(true);
                            }
                           
                        //
                    }
                    }
               
               
               
               
           
            @EventHandler
        private void onBreakEvent(PlayerItemBreakEvent e)
            {
       
            }











    }

       
       

     
    So when i click the "enderchest" a inventory opens with random items, but when i close it and open it again the Inventory is empty. Why? Thanks you for help..
     
  2. I see your issue. Take a closer look at your if-statements where you check the location.

    Your issue is with this if-statement block:
    Code (Java):
    if (quest.contains(locc)) {
        Player p = (Player) e.getPlayer();
        inv.getContents();
        p.openInventory(inv);
       } else {
        quest.add(locc);
        while (n != 0) {

         Random rnd2 = new Random();
         Random rnd3 = new Random();
         int n3 = rnd3.nextInt(27);
         int n2 = rnd2.nextInt(itemslist.size());

         n--;

         inv.setItem(n3, (ItemStack) itemslist.get(n2));
         inv.setItem(n3, (ItemStack) itemslist.get(n2));
         inv.setItem(n3, (ItemStack) itemslist.get(n2));

         inv.setItem(n3, (ItemStack) itemslist.get(n2));
         inv.setItem(n3, (ItemStack) itemslist.get(n2));
         inv.setItem(n3, (ItemStack) itemslist.get(n2));
         Player p = (Player) e.getPlayer();

         p.openInventory(inv);
        }
       }
     
    #2 Hunky524, Jun 15, 2016
    Last edited: Jun 15, 2016
  3. I dont see the issue ^^
     
  4. You are only putting items in the inventory if that chest has never been in the quest locations before.

    That if-statement is completely pointless because you just add it to the list anyway.

    I'd also take a slow glance over your code because you have multiple redundant lines of code, that are taking up extra space, CPU time, or doing nothing at all. For example this line of code:
    Code (Java):
    inv.getContents();
    does nothing.
     
  5. How can i put the same Items in the Chest, that the guy saw, that opened the Chest before:
    Example:

    Player a openend Chest Items in there: apple 23, arrow 1
    Player b opened Chest Items in there : arrow 1, play a took the apples..

    When i put the Items in there again, they get randomly choosen again, if im not to dumb?

    Edit//

    Just tested it, when i put the same set Comamnd below everytime i open the Chest, others Items get in there...
     
  6. Once a player opens a chest and their items have been randomly chosen, use a HashMap to save the contents of the inventory they are looking at. Then whenever that player opens a chest again, get the inventory contents that are saved to their UUID in the HashMap.

    Also, make methods to do a lot of the stuff that takes up space, for example, make a method that puts the items into the inventory to clean up space and make everything easier to read.
     
  7. Found one, nvm!
     
    #7 GoRoK, Jun 15, 2016
    Last edited: Jun 15, 2016
  8. So i think i fucked up everything now ^^
    Code (Text):

    package openinventory.pack;

    import java.awt.List;
    import java.util.ArrayList;
    import java.util.HashMap;
    import java.util.HashSet;
    import java.util.Random;

    import org.bukkit.Bukkit;
    import org.bukkit.ChatColor;
    import org.bukkit.Location;
    import org.bukkit.Material;
    import org.bukkit.Sound;
    import org.bukkit.command.defaults.PlaySoundCommand;
    import org.bukkit.entity.Player;
    import org.bukkit.event.EventHandler;
    import org.bukkit.event.Listener;
    import org.bukkit.event.block.Action;
    import org.bukkit.event.inventory.InventoryOpenEvent;
    import org.bukkit.event.inventory.InventoryType;
    import org.bukkit.event.player.PlayerInteractEvent;
    import org.bukkit.event.player.PlayerItemBreakEvent;
    import org.bukkit.inventory.Inventory;
    import org.bukkit.inventory.ItemStack;

    @SuppressWarnings({ "unused", "deprecation" })
    public class ClickListener implements Listener
    {
        Inventory inv = Bukkit.createInventory(null, InventoryType.CHEST, ChatColor.AQUA + "             [SG]Chest");
        Random rnd = new Random();
        int n = rnd.nextInt(6);

       
           
        public void setItems()
            {
            itemslist.add(new ItemStack(Material.GOLDEN_APPLE));
            itemslist.add(new ItemStack(Material.APPLE));
            itemslist.add(new ItemStack(Material.WOOD));
            itemslist.add(new ItemStack(Material.STONE));
            itemslist.add(new ItemStack(Material.BRICK));
            itemslist.add(new ItemStack(Material.DIRT));
            itemslist.add(new ItemStack(Material.ANVIL));
            itemslist.add(new ItemStack(Material.ARROW));
            itemslist.add(new ItemStack(Material.GOLDEN_APPLE));
            itemslist.add(new ItemStack(Material.APPLE));
            itemslist.add(new ItemStack(Material.WOOD));
            itemslist.add(new ItemStack(Material.STONE));
            itemslist.add(new ItemStack(Material.BRICK));
            itemslist.add(new ItemStack(Material.DIRT));
            itemslist.add(new ItemStack(Material.ANVIL));
            itemslist.add(new ItemStack(Material.ARROW));
            itemslist.add(new ItemStack(Material.GOLDEN_APPLE));
            itemslist.add(new ItemStack(Material.APPLE));
            itemslist.add(new ItemStack(Material.WOOD));
            itemslist.add(new ItemStack(Material.STONE));
            itemslist.add(new ItemStack(Material.BRICK));
            itemslist.add(new ItemStack(Material.DIRT));
            itemslist.add(new ItemStack(Material.ANVIL));
            itemslist.add(new ItemStack(Material.ARROW));
            itemslist.add(new ItemStack(Material.GOLDEN_APPLE));
            itemslist.add(new ItemStack(Material.APPLE));
            itemslist.add(new ItemStack(Material.WOOD));
            itemslist.add(new ItemStack(Material.STONE));
            itemslist.add(new ItemStack(Material.BRICK));
            itemslist.add(new ItemStack(Material.DIRT));
            itemslist.add(new ItemStack(Material.ANVIL));
            itemslist.add(new ItemStack(Material.ARROW));
            itemslist.add(new ItemStack(Material.GOLDEN_APPLE));
            itemslist.add(new ItemStack(Material.APPLE));
            itemslist.add(new ItemStack(Material.WOOD));
            itemslist.add(new ItemStack(Material.STONE));
            itemslist.add(new ItemStack(Material.BRICK));
            itemslist.add(new ItemStack(Material.DIRT));
            itemslist.add(new ItemStack(Material.ANVIL));
            itemslist.add(new ItemStack(Material.ARROW));
            itemslist.add(new ItemStack(Material.GOLDEN_APPLE));
            itemslist.add(new ItemStack(Material.APPLE));
            itemslist.add(new ItemStack(Material.WOOD));
            itemslist.add(new ItemStack(Material.STONE));
            itemslist.add(new ItemStack(Material.BRICK));
            itemslist.add(new ItemStack(Material.DIRT));
            itemslist.add(new ItemStack(Material.ANVIL));
            itemslist.add(new ItemStack(Material.ARROW));
            itemslist.add(new ItemStack(Material.GOLDEN_APPLE));
            itemslist.add(new ItemStack(Material.APPLE));
            itemslist.add(new ItemStack(Material.WOOD));
            itemslist.add(new ItemStack(Material.STONE));
            itemslist.add(new ItemStack(Material.BRICK));
            itemslist.add(new ItemStack(Material.DIRT,12));
            itemslist.add(new ItemStack(Material.ANVIL,2));
            itemslist.add(new ItemStack(Material.ARROW,52));
            itemslist.add(new ItemStack(Material.GOLDEN_APPLE,31));
            itemslist.add(new ItemStack(Material.APPLE,32));
            itemslist.add(new ItemStack(Material.WOOD,55));
            itemslist.add(new ItemStack(Material.STONE,51));
            itemslist.add(new ItemStack(Material.BRICK,26));
            itemslist.add(new ItemStack(Material.DIRT,53));
            itemslist.add(new ItemStack(Material.ANVIL,3));
            itemslist.add(new ItemStack(Material.ARROW,15));
               
           }
           
            public HashSet <Location> quest = new HashSet <Location >();
            public HashMap<String, ItemStack[]> inventoryContents = new HashMap<String, ItemStack[]>();
            public ArrayList<Material> items = new ArrayList <>();
            public ArrayList<ItemStack> itemslist = new ArrayList<ItemStack>();      
            public List itemlist = new List ();
           
           
           
           
            // Adding Items to Chest
       
           
            public ArrayList<ItemStack> getItemslist() {
                return itemslist;
                       
            }
           
           
            //
            @EventHandler
            public void onPlayerClick(PlayerInteractEvent e)
            {
               
                setItems();
               
                inventoryContents.put(inv.getName(), inv.getContents());
               
               
               
               
               
               
             
               
                if(e.getClickedBlock().getType().equals(Material.ENDER_CHEST))
                {
                    Location locc = e.getClickedBlock().getLocation();
                    e.setCancelled(true);
                    if(inventoryContents.containsKey(inv))
                    {
                        Player p = (Player) e.getPlayer();
                        p.openInventory(inv);
                    }
                    else
                    {
                        Player p = (Player) e.getPlayer();
                        if(quest.contains(locc))
                        {
                            Random rnd2 = new Random();
                             Random rnd3 = new Random();
                             int n3 = rnd3.nextInt(27);
                             int n2 = rnd2.nextInt(itemslist.size());
                             
                            n--;
                       
                            inv.setItem(n3, (ItemStack)itemslist.get(n2));
                            inv.setItem(n3, (ItemStack)itemslist.get(n2));
                            inv.setItem(n3, (ItemStack)itemslist.get(n2));
                           
                            inv.setItem(n3, (ItemStack)itemslist.get(n2));
                            inv.setItem(n3, (ItemStack)itemslist.get(n2));
                            inv.setItem(n3, (ItemStack)itemslist.get(n2));
                           
                           
                           
                            p.openInventory(inv);
                        }  
                        else
                        {
                            quest.add(locc);
                            while(n != 0)
                            {
                               
                                Random rnd2 = new Random();
                                 Random rnd3 = new Random();
                                 int n3 = rnd3.nextInt(27);
                                 int n2 = rnd2.nextInt(itemslist.size());
                                 
                                n--;
                           
                                inv.setItem(n3, (ItemStack)itemslist.get(n2));
                                inv.setItem(n3, (ItemStack)itemslist.get(n2));
                                inv.setItem(n3, (ItemStack)itemslist.get(n2));
                               
                                inv.setItem(n3, (ItemStack)itemslist.get(n2));
                                inv.setItem(n3, (ItemStack)itemslist.get(n2));
                                inv.setItem(n3, (ItemStack)itemslist.get(n2));
                           
                               
                                p.openInventory(inv);
                        }
                    }
                    if(quest.contains(locc))
                    {
                       
                       
                    }
                    else
                    {
                   
                    }  
                   
                   
                   
                    }
                   
                   
                   
                   
                   
                   
                   
                   
                   
                   
                   
                   
                   
                   
                   
               
                   
                   
                       
                       
                         
                         
                         
                         
                       
                       
                       
                       
                       
                        //
                       
                       
                       
                       
                       
                       
                       
                        //Insert above
                        //
                            if(e.getClickedBlock().getType().equals(Material.CHEST) || e.getClickedBlock().getType().equals(Material.TRAPPED_CHEST) )
                            {
                                e.setCancelled(true);
                            }
                           
                        //
                    }
                    }
               
               
               
               
           
            @EventHandler
        private void onBreakEvent(PlayerItemBreakEvent e)
            {
       
            }











    }

       
       

     
    When i open a chest it stills adds items, but thats not the current problem. My problem is when i click another chest(another location) it fills the inventory completly with random items, and when i close it, it opens with new Items (full)... Dont know..
     

  9. Use a HashMap, which uses the player's UUID as the key and stores the chests inventory contents as the value. Then once they have opened a chest more than once, you can just load the items that you have saved to their UUID and then you're good to go.
     
  10. I don't a chest in SG should be connected to a player's UUID.
    The reason is because you are facing many people in that game.

    The location is the best way to do it so a new chest isn't
    generating each time a different player opens the chest.
     
  11. I thought he wanted to have each player with their own unique random chest items, but can open it from anywhere? Wouldn't using UUIDs with InventoryContents be better? Unless I'm misinterpreting what OP wanted.
     
  12. The OP's code generates new items inside the chest that a player
    opens. We would want to store the location of the chest opened into
    some sort of list, doesn't really matter what kind of list.

    Then we also would want to prevent the chest from being
    broken and placed elsewhere, or that would result in chests
    generating items at any new block they get placed on.
     

  13. I got that, but I think OP wanted the items to be different per player and per location. So maybe he'd have to do a double HashMap or something like it:
    Code (Java):
    public Map<Location, Map<Player, InventoryConents>> doubleHash = new HashMap<>();
     
  14. Oh wow, that's a interesting twist on things.
     
  15. Im using a HashMap with Location and Inventory now.. Doesnt really work like i wanted, still experimenting on it
     
  16. Im not really getting along with this..
    Code (Text):

    package openinventory.pack;

    import java.awt.List;
    import java.util.ArrayList;
    import java.util.HashMap;
    import java.util.HashSet;
    import java.util.Random;

    import org.bukkit.Bukkit;
    import org.bukkit.ChatColor;
    import org.bukkit.Location;
    import org.bukkit.Material;
    import org.bukkit.Sound;
    import org.bukkit.command.defaults.PlaySoundCommand;
    import org.bukkit.entity.Player;
    import org.bukkit.event.EventHandler;
    import org.bukkit.event.Listener;
    import org.bukkit.event.block.Action;
    import org.bukkit.event.inventory.InventoryOpenEvent;
    import org.bukkit.event.inventory.InventoryType;
    import org.bukkit.event.player.PlayerInteractEvent;
    import org.bukkit.event.player.PlayerItemBreakEvent;
    import org.bukkit.inventory.Inventory;
    import org.bukkit.inventory.ItemStack;

    @SuppressWarnings({ "unused", "deprecation" })
    public class ClickListener implements Listener
    {
       
        Inventory newInv = Bukkit.createInventory(null, InventoryType.CHEST, ChatColor.RED + "[" + ChatColor.AQUA + "SkyWars" + ChatColor.RED + "]" + ChatColor.GOLD + "CHEST");
       
        Inventory inv = Bukkit.createInventory(null, InventoryType.CHEST);
       
        Random rnd = new Random();
        int n = rnd.nextInt(6);

           
        public void setItems()
            {
            itemslist.add(new ItemStack(Material.GOLDEN_APPLE));
            itemslist.add(new ItemStack(Material.APPLE));
            itemslist.add(new ItemStack(Material.WOOD));
            itemslist.add(new ItemStack(Material.STONE));
            itemslist.add(new ItemStack(Material.BRICK));
            itemslist.add(new ItemStack(Material.DIRT));
            itemslist.add(new ItemStack(Material.ANVIL));
            itemslist.add(new ItemStack(Material.ARROW));
            itemslist.add(new ItemStack(Material.GOLDEN_APPLE));
            itemslist.add(new ItemStack(Material.APPLE));
            itemslist.add(new ItemStack(Material.WOOD));
            itemslist.add(new ItemStack(Material.STONE));
            itemslist.add(new ItemStack(Material.BRICK));
            itemslist.add(new ItemStack(Material.DIRT));
            itemslist.add(new ItemStack(Material.ANVIL));
            itemslist.add(new ItemStack(Material.ARROW));
            itemslist.add(new ItemStack(Material.GOLDEN_APPLE));
            itemslist.add(new ItemStack(Material.APPLE));
            itemslist.add(new ItemStack(Material.WOOD));
            itemslist.add(new ItemStack(Material.STONE));
            itemslist.add(new ItemStack(Material.BRICK));
            itemslist.add(new ItemStack(Material.DIRT));
            itemslist.add(new ItemStack(Material.ANVIL));
            itemslist.add(new ItemStack(Material.ARROW));
            itemslist.add(new ItemStack(Material.GOLDEN_APPLE));
            itemslist.add(new ItemStack(Material.APPLE));
            itemslist.add(new ItemStack(Material.WOOD));
            itemslist.add(new ItemStack(Material.STONE));
            itemslist.add(new ItemStack(Material.BRICK));
            itemslist.add(new ItemStack(Material.DIRT));
            itemslist.add(new ItemStack(Material.ANVIL));
            itemslist.add(new ItemStack(Material.ARROW));
            itemslist.add(new ItemStack(Material.GOLDEN_APPLE));
            itemslist.add(new ItemStack(Material.APPLE));
            itemslist.add(new ItemStack(Material.WOOD));
            itemslist.add(new ItemStack(Material.STONE));
            itemslist.add(new ItemStack(Material.BRICK));
            itemslist.add(new ItemStack(Material.DIRT));
            itemslist.add(new ItemStack(Material.ANVIL));
            itemslist.add(new ItemStack(Material.ARROW));
            itemslist.add(new ItemStack(Material.GOLDEN_APPLE));
            itemslist.add(new ItemStack(Material.APPLE));
            itemslist.add(new ItemStack(Material.WOOD));
            itemslist.add(new ItemStack(Material.STONE));
            itemslist.add(new ItemStack(Material.BRICK));
            itemslist.add(new ItemStack(Material.DIRT));
            itemslist.add(new ItemStack(Material.ANVIL));
            itemslist.add(new ItemStack(Material.ARROW));
            itemslist.add(new ItemStack(Material.GOLDEN_APPLE));
            itemslist.add(new ItemStack(Material.APPLE));
            itemslist.add(new ItemStack(Material.WOOD));
            itemslist.add(new ItemStack(Material.STONE));
            itemslist.add(new ItemStack(Material.BRICK));
            itemslist.add(new ItemStack(Material.DIRT,12));
            itemslist.add(new ItemStack(Material.ANVIL,2));
            itemslist.add(new ItemStack(Material.ARROW,52));
            itemslist.add(new ItemStack(Material.GOLDEN_APPLE,31));
            itemslist.add(new ItemStack(Material.APPLE,32));
            itemslist.add(new ItemStack(Material.WOOD,55));
            itemslist.add(new ItemStack(Material.STONE,51));
            itemslist.add(new ItemStack(Material.BRICK,26));
            itemslist.add(new ItemStack(Material.DIRT,53));
            itemslist.add(new ItemStack(Material.ANVIL,3));
            itemslist.add(new ItemStack(Material.ARROW,15));
               
           }
            public HashMap <Inventory, Location> openend = new HashMap <> ();
            public HashMap<String, ItemStack[]> inventoryContents = new HashMap<String, ItemStack[]>();
            public ArrayList<Material> items = new ArrayList <>();
            public ArrayList<ItemStack> itemslist = new ArrayList<ItemStack>();      
            public List itemlist = new List ();
           
           
           
           
            // Adding Items to Chest
       
           
            public ArrayList<ItemStack> getItemslist() {
                return itemslist;
                       
            }
           
           
            //
            @EventHandler
            public void onPlayerClick(PlayerInteractEvent e)
            {
               
               
               
               
               
               
               
               
             
                e.getAction();
                if(e.getAction() == Action.RIGHT_CLICK_BLOCK)
                {
                    if(e.getClickedBlock().getType().equals(Material.ENDER_CHEST))
                    {
                        e.setCancelled(true);
                        Location loc = e.getClickedBlock().getLocation();
                        Player p = e.getPlayer();
                        if(openend.containsKey(newInv) && openend.containsValue(loc))
                        {
                           
                            p.openInventory(newInv);
                           
                        }
                       
                       
                       
                   
                        else if (openend.containsKey(inv) && openend.containsValue(loc))
                        {
                            setItems();
                           
                            Random rnd2 = new Random();
                             Random rnd3 = new Random();
                             int n3 = rnd3.nextInt(27);
                             int n2 = rnd2.nextInt(itemslist.size());
                             
                            n--;
                       
                            newInv.setItem(n3, (ItemStack)itemslist.get(n2));
                            newInv.setItem(n3, (ItemStack)itemslist.get(n2));
                            newInv.setItem(n3, (ItemStack)itemslist.get(n2));
                           
                            newInv.setItem(n3, (ItemStack)itemslist.get(n2));
                            newInv.setItem(n3, (ItemStack)itemslist.get(n2));
                            newInv.setItem(n3, (ItemStack)itemslist.get(n2));
                           
                           
                           
                            p.openInventory(newInv);
                           
                           
                           
                           
                           
                            openend.put(newInv, loc);
                         
                       
                                return;
                        }
                        else
                        {
                            Inventory newInvv = Bukkit.createInventory(null,  InventoryType.CHEST, "Neue Kiste");
                            setItems();
                            if(openend.containsKey(newInvv) && openend.containsValue(loc))
                            {
                                p.openInventory(newInvv);
                            }
                            Random rnd2 = new Random();
                             Random rnd3 = new Random();
                             int n3 = rnd3.nextInt(27);
                             int n2 = rnd2.nextInt(itemslist.size());
                             
                            n--;
                       
                            newInvv.setItem(n3, (ItemStack)itemslist.get(n2));
                            newInvv.setItem(n3, (ItemStack)itemslist.get(n2));
                            newInvv.setItem(n3, (ItemStack)itemslist.get(n2));
                           
                            newInvv.setItem(n3, (ItemStack)itemslist.get(n2));
                            newInvv.setItem(n3, (ItemStack)itemslist.get(n2));
                            newInvv.setItem(n3, (ItemStack)itemslist.get(n2));
                           
                           
                           
                            p.openInventory(newInvv);
                           
                           
                           
                           
                           
                            openend.put(newInvv, loc);
                        }
                    }

                           
                            //Insert above
                            //
                                if(e.getClickedBlock().getType().equals(Material.CHEST) || e.getClickedBlock().getType().equals(Material.TRAPPED_CHEST) )
                                {
                                    e.setCancelled(true);
                                }
                                else
                                {
                                    return;
                                }
                               
                            //
                        }
                }
               
                   
               
               
               
               
           
            @EventHandler
        private void onBreakEvent(PlayerItemBreakEvent e)
            {
       
            }











    }

       
       

     
    When i open a Chest its called "Neue Kiste" as defined above, if i reopen it new Items (everytime just 1) is in there...
    Im not getting what iam doing wrong..