hashmap kaydetme

şifrenisöyle

Kızıltaş Madencisi
En iyi cevaplar
0
kaydedeceğim hashmap şu:

public static HashMap<String, ArrayList<ItemStack>> gerekenler = new HashMap<String, ArrayList<ItemStack>>();

ve bunun içine şunu kaydedicem:

PHP:
Gerekenler:
  aa2:
  - ==: org.bukkit.inventory.ItemStack
    type: STONE
    meta:
      ==: ItemMeta
      meta-type: UNSPECIFIC
      display-name: §ahaha stone
  - ==: org.bukkit.inventory.ItemStack
    type: STONE
    meta:
      ==: ItemMeta
      meta-type: UNSPECIFIC
      display-name: §ahaha stone
  - ==: org.bukkit.inventory.ItemStack
    type: STONE
    meta:
      ==: ItemMeta
      meta-type: UNSPECIFIC
      display-name: §ahaha stone

bunu şöyle kaydetmeliyim:

gerekenler hashmapına önce for döngüsü ile Gerekenler. + s şeklinde olmalı yan s de getConfigurationSection.getKeys(false) dan geliyor aa1 gibi o kısımları veriyor bu object kısmı olucak sonrasında values kısmınada arraylist şeklinde sıralı eşyaları ekliycem bunu nasıl kaydedebilirim

@Schaffer79 @hk_7 @Krumb069 @Dantero @hacii_ @Centeglassered
 

Centeglassered

Kızıltaş Madencisi
En iyi cevaplar
0
Eğer serialization yapabildiysen bunu da yapabilirsin diye düşünüyorum. :)
Bir Map oluştur.
Gerekenler'deki her şeyi dön ve bunları okuyup Map'a ekle.
 

şifrenisöyle

Kızıltaş Madencisi
En iyi cevaplar
0
ben bi save/load sistemi yapıyorumda bu save işe yarıyor yani kaydedebiliyorum istediğim gibi ama load konusunda sıkıntı var tam anlamadım ne demek istediğini Map<ItemStack> dan mı bahsediyorsun
 

DonduranAtes

Zombi Katili
En iyi cevaplar
0
Gson kullanabilirsin, Gson class ı String haline çevirip, String ten de geri class haline çevirmeni sağlar, oyundaki her item de bir ItemStack ın kopya class ı olduğuna göre;

Önce class ın en üstüne biryere gson instance oluştur,
Kod:
public static Gson gson = new Gson();

itemi String e çevirmek;
Kod:
ItemStack is = p.getItemInHand();
String json = gson.toJson(is);
json değişkeni itemin string halini verir bunu config e yada istediğin yere kaydedebilirsin.

String i iteme çevirmek
Kod:
ItemStack item = gson.fromJson(Buraya configteki json u yaz, ItemStack.class);
Oluşan çıktıyı istediğin gibi kullanabilirsin, kolay gelsin.
 

Admicos

Nether Yerlisi
En iyi cevaplar
1
Gson kullanabilirsin, Gson class ı String haline çevirip, String ten de geri class haline çevirmeni sağlar, oyundaki her item de bir ItemStack ın kopya class ı olduğuna göre;

Önce class ın en üstüne biryere gson instance oluştur,
Kod:
public static Gson gson = new Gson();

itemi String e çevirmek;
Kod:
ItemStack is = p.getItemInHand();
String json = gson.toJson(is);
json değişkeni itemin string halini verir bunu config e yada istediğin yere kaydedebilirsin.

String i iteme çevirmek
Kod:
ItemStack item = gson.fromJson(Buraya configteki json u yaz, ItemStack.class);
Oluşan çıktıyı istediğin gibi kullanabilirsin, kolay gelsin.
JSON kullanacaksan tavsiyem ayrı ayrı dosyalara kaydetmen. Config.yml YAML olduğundan içindeki JSONu okuyamayabilir. Ama denemedim emin değilim.
 

şifrenisöyle

Kızıltaş Madencisi
En iyi cevaplar
0
abi ben onu istemiyorum ki şu config teki sıralı yani - li olan itemstack ları tek tek forlayıp
public static HashMap<String, ArrayList<ItemStack>> gerekenler = new HashMap<String, ArrayList<ItemStack>>();
bunun içine kaydetmek istiyorum yani string kısmına şu aa2 gelicek yani onuda for yapıcak sonrada arraylist<ıtemstack> şeklindede - li olan ıtem ları koyucak json vs. bilmiyorum hiç
 

DonduranAtes

Zombi Katili
En iyi cevaplar
0
abi ben onu istemiyorum ki şu config teki sıralı yani - li olan itemstack ları tek tek forlayıp
public static HashMap<String, ArrayList<ItemStack>> gerekenler = new HashMap<String, ArrayList<ItemStack>>();
bunun içine kaydetmek istiyorum yani string kısmına şu aa2 gelicek yani onuda for yapıcak sonrada arraylist<ıtemstack> şeklindede - li olan ıtem ları koyucak json vs. bilmiyorum hiç

İşte o yüzden json dan bahsettim, çok karıştırmışsın sistemi. item leri direk ItemStack şeklinde kaydedeceğine json a dönüştürüp string şeklinde kaydetsen tek satırda kaydolmuş olur.
 

şifrenisöyle

Kızıltaş Madencisi
En iyi cevaplar
0
la yok yanlış anladım olay kaydetmek değil olay load yapmak ;(((( şuana kadar cevabı bulmama gerekiyordu kendimden şüphe etmeye başladım normalde konuyu açtıktan 5 dk sonra kendi kendime bulurum ama niye böyle oldu bu sefer anlamadım
 

Nobody01

YASAKLANDI
En iyi cevaplar
0
O gördüğün şey Bukkit'in ItemStack objesini kendisinin Serialize etmesi ile oluşmuştur. Peki ben nasıl böyle kaydederim dersen direk ItemStack'i Config'e kaydedebilirsin, HashMap'ler ile alakalı bir şey değil. Aynı şekilde Config'den kaydettiğin dizinden çekebilirsin. Eğer amaç bir HashMap'ı kaydetmekse Foreach kullanıp hepsini kaydedip daha sonra getConfigurationSection methodu ile gelen dizinleri aynı şekilde Foreach edip HashMap'e kaydedebilirsin.

PHP:
getConfig().set("aa2", new ItemStack(Material.STICK, 1))
 
Üst