[ÇÖZÜLDÜ]Kod envanterdeki tüm itemleri alıyor ?

Krumb069

Nether Yerlisi
En iyi cevaplar
1
Oyuncu belli bir isimdeki oka sağ tıklayınca okun envanterden bir tane eksilmesini yapmaya çalıştım ancak tek slotta birden fazla ok varsa oku kaldırmıyor tek ok varsa envanterdei tüm okları kaldırıyor kod bu nasıl çözebilirim:
Kod:
Projectile cirit = o.launchProjectile(Arrow.class);
                            ciritler.add(cirit);
                            Inventory oe = o.getInventory();
                            ItemStack kaldirilcakok = new ItemStack(Material.ARROW, 1);
                            ItemMeta kometa = kaldirilcakok.getItemMeta();
                            kometa.setDisplayName(ciriti);
                            kaldirilcakok.setItemMeta(kometa);
                            oe.remove(kaldirilcakok);
                            o.updateInventory();
@KRHN @IRFN @MegaCrafter @GodofMilker[DOUBLEPOST=1436602419,1436601265][/DOUBLEPOST]Tamam ilk sorunu çözdüm yeni kod bu ancak envanterde 1 item varsa hiç kaldırılmıyor
Kod:
Projectile cirit = o.launchProjectile(Arrow.class);
                            ciritler.add(cirit);                                      
                            int okmiktar = o.getItemInHand().getAmount();
                            int yenimiktar = okmiktar-1;
                            if (okmiktar > 1){
                            o.getItemInHand().setAmount(yenimiktar);
                            o.updateInventory();
                            }
                            else{
                                o.getItemInHand().setType(null);
                            }
 
Son düzenleme:

SnKaan

Elmas Madencisi
En iyi cevaplar
0
Sanırım sorunun burda
(okmiktar > 1)
Envanterdeki ok 1 ise:
envanterdekiok büyüktür 1 den olayı gerçekleşmiyor.
0'dan büyüktür olarak ayarlarsan olcaktır :)
(java bilmiyorum sadece dikkatimi çekti orası)
 

Krumb069

Nether Yerlisi
En iyi cevaplar
1
Sanırım sorunun burda
(okmiktar > 1)
Envanterdeki ok 1 ise:
envanterdekiok büyüktür 1 den olayı gerçekleşmiyor.
0'dan büyüktür olarak ayarlarsan olcaktır :)
(java bilmiyorum sadece dikkatimi çekti orası)
ok sayısı 1 den büyükse miktarını azaltıyor eğer 1 den büyük değilse direk itemi siliyor orada bir hata olduğunu sanmıyorum
 

blade20090999

Kızıltaş Madencisi
En iyi cevaplar
0
kardeş >= büyük eşittir kullan[DOUBLEPOST=1436608973,1436608933][/DOUBLEPOST]1'den büyük dersen tabikide 1 olunca işlem durur 1 'den büyük eşittir dersen 1 ve birden büyükse çalışır :)
Projectile cirit = o.launchProjectile(Arrow.class);
ciritler.add(cirit);
int okmiktar = o.getItemInHand().getAmount();
int yenimiktar = okmiktar-1;
if (okmiktar >= 1){
o.getItemInHand().setAmount(yenimiktar);
o.updateInventory();
}
else{
o.getItemInHand().setType(null);
}
Birde verdiği hatayı yazarmısın kosolda setType(null) 'da hata veriyor olabilir.
 
Son düzenleme:

blade20090999

Kızıltaş Madencisi
En iyi cevaplar
0
Sağlıklı oda itemi kendi tanıtmış yha problem çıkabilir belki.Bence kodunda null yapan kısım hata veriyordu. direk 0 lasa daha mantıklı >= koyup.Hata veriyo dedim işlem yapmıyordur hatada vermiyordu bazen öyle oluyor :)
 

Krumb069

Nether Yerlisi
En iyi cevaplar
1
Sağlıklı oda itemi kendi tanıtmış yha problem çıkabilir belki.Bence kodunda null yapan kısım hata veriyordu. direk 0 lasa daha mantıklı >= koyup.Hata veriyo dedim işlem yapmıyordur hatada vermiyordu bazen öyle oluyor :)
dedğini denedim olmadı.
bunu denedim bu da olmadı hep 1 cirit kalınca adam sınırsız atabiliyor eksilmiyor hiç
evet null hatalı diye attığın kodu ve Material.AIR yapmayı denedim olmadı konu güncel
 
Üst