ServerPlugin HashMap mit Integer und ItemStack in eine Config abspeichern und wieder aufrufen.

Dieses Thema im Forum "Programmierung" wurde erstellt von gasjul, 26. Oktober 2015.

  1. gasjul
    Offline

    gasjul

    Registriert seit:
    27. September 2012
    Beiträge:
    21
    Hallo,
    ich habe gerade für ein noch geheimes Projekt einen /addkit Command gemacht. Jetzt sollen alle Inventory Contents in eine HashMap gespeichert werden. Diese sind mit dem Integer nummeriert.
    So weit so gut. Das klappt auch alles. Nur beim abspeichern und laden der HashMap in die Config scheitere ich.

    HashMap:
    public HashMap<Integer, ItemStack[]> items = new HashMap<Integer, ItemStack[]>();


    Kann mit jemand einen Code zum abspeichern und laden senden oder einen Ansatz geben ?

    Danke im Vorraus

    MFG
     
    #1
  2. GPSforLEGENDS
    Offline

    GPSforLEGENDS

    Registriert seit:
    21. März 2014
    Beiträge:
    295
    Ort:
    Bürostuhl
    Minecraft:
    GPSforLEGENDS
  3. letsz0ck3r
    Offline

    letsz0ck3r

    Registriert seit:
    14. Februar 2014
    Beiträge:
    4
    Minecraft:
    Heddo
    Code (Text):
    1.  
    2.   public HashMap<Integer, ItemStack[]> items = new HashMap<Integer, ItemStack[]>();
    3.  
    4.    private void loadHashMap() {
    5.      getLogger().info("Start loading kits...");
    6.      for (String id : getConfig().getConfigurationSection("kit").getKeys(false)) {
    7.        List<ItemStack> itemStacks = new ArrayList<ItemStack>();
    8.        for (String i : getConfig().getConfigurationSection("kit." + id).getKeys(false)) {
    9.  
    10.          itemStacks.add(getConfig().getItemStack("kit." + id + "." + i));
    11.        }
    12.        items.put(Integer.valueOf(id), itemStacks.toArray(new ItemStack[itemStacks.size()]));
    13.      }
    14.      getLogger().info("Kits loaded.");
    15.    }
    16.  
    17.    private void saveHashMap() {
    18.      getLogger().info("Start saving kits...");
    19.      int i = 0;
    20.      getConfig().set("kit", null);
    21.      for (Entry<Integer, ItemStack[]> entry : items.entrySet()) {
    22.        for (int j = 0; j < entry.getValue().length; j++) {
    23.            getConfig().set("kit." + i + "." + j, entry.getValue()[j]);
    24.        }
    25.        i++;
    26.      }
    27.      saveConfig();
    28.      getLogger().info("Kits saved.");
    29.    }
    30.  
    So könnte dann die config.yml aus
    Code (Text):
    1.  
    2.  
    3. kit:
    4.   '0':
    5.     '0':
    6.       ==: org.bukkit.inventory.ItemStack
    7.       type: ACACIA_DOOR
    8.   '1':
    9.     '0':
    10.       ==: org.bukkit.inventory.ItemStack
    11.       type: ANVIL
    12.   '2':
    13.     '0':
    14.       ==: org.bukkit.inventory.ItemStack
    15.       type: APPLE
    16.       damage: 1
    17.  
    18.  
     
    #3