ÇOK ACİLL YARDIM !!! [PLUGİN ECLİPSE]

xXfuckjea23Xx

YASAKLANDI
Mesajlar
93
En iyi cevaplar
0
Beğeniler
14
Puanları
0
Sevgili Cemaat ;
Bir Plugin yazıyorum /xpgive yazınca oyun size 1 elmas karşılığında 2 level veriyor. Fakat tahmin edeceğiniz üzere hata tam burada.
her şey iyi güzel fakat oyuncu envanterinde elmas yokken /xpgive yazsa bile 2 level alıyor :D çok sinir bozucu bir şey bakın aşağıya kodu veriyorum.
Lütfen Yardım Edin !!!
Kod:
package me.Xp;


import java.util.logging.Logger;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.Material;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.configuration.file.FileConfiguration;
import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack;
import org.bukkit.plugin.java.JavaPlugin;

public class Main extends JavaPlugin {
   
    FileConfiguration config = getConfig();
   
    public final Logger logger = Logger.getLogger("Minecraft");
   
    public boolean onCommand(CommandSender kodYazan, Command cmd, String kod, String[] args) {
        if(kod.equalsIgnoreCase("XpGive")) {
            Player oyuncu = (Player) kodYazan;
            oyuncu.giveExpLevels(2);
            oyuncu.sendMessage(ChatColor.WHITE + "[" + ChatColor.GREEN + ChatColor.BOLD + "XpGive" + ChatColor.WHITE + "] " + ChatColor.GOLD + ChatColor.BOLD + "Hesabından 2 Level Karşılığında 1 Diamond Silindi." );
            oyuncu.getInventory().removeItem(new ItemStack(Material.DIAMOND, 1, (short) 1));
        }       
        return false;
    }
   
    public void onEnable() {
        Bukkit.getServer().getConsoleSender().sendMessage(ChatColor.WHITE + "[" + ChatColor.GREEN + ChatColor.BOLD + "XpGive" + ChatColor.WHITE + "] " + ChatColor.AQUA + ChatColor.ITALIC + "Plugin Aktif." );
        config.options().copyDefaults(true);
        saveConfig();
    }
    public void onDisable() {
        Bukkit.getServer().getConsoleSender().sendMessage(ChatColor.WHITE + "[" + ChatColor.GREEN + ChatColor.BOLD + "XpGive" + ChatColor.WHITE + "] " + ChatColor.AQUA + ChatColor.ITALIC + "Plugin DeAktif." );
        saveConfig();
    }
   
   


}

Kod Şuanki Haliyle Düzgün Buyrun Buradanda Pluginin Bug'lu Versiyonunu İndirebilirsiniz :D adf ly/1K59xP [REKLAM EKLEDİM :D] (araya nokta koy :D)
 


CoffeeBeat

Zindev
Mesajlar
501
En iyi cevaplar
0
Beğeniler
958
Puanları
1,320
Hmm KONTROL etmeyi denedin mi acaba ?

Metod;
Kod:
    public static int alMatMiktar(Material mat,Player p){
        int a = 0;
        for(ItemStack ds : p.getInventory().getContents()){
            if(ds.getType().equals(mat)){
                a+= ds.getAmount();
            }
        }
        return a;
    }

Düzetlmen gereken bölüm;
Kod:
        if(alMatMiktar(Material.DIAMOND, oyuncu) >= 1){
            oyuncu.giveExpLevels(2);
            oyuncu.sendMessage(ChatColor.WHITE + "[" + ChatColor.GREEN + ChatColor.BOLD + "XpGive" + ChatColor.WHITE + "] " + ChatColor.GOLD + ChatColor.BOLD + "Hesabından 2 Level Karşılığında 1 Diamond Silindi." );
            oyuncu.getInventory().removeItem(new ItemStack(Material.DIAMOND, 1, (short) 1));
        }
 

GodofMilker

Nether Yerlisi
Mesajlar
2,196
En iyi cevaplar
0
Beğeniler
2,562
Puanları
6,790
Hmm KONTROL etmeyi denedin mi acaba ?

Metod;
Kod:
    public static int alMatMiktar(Material mat,Player p){
        int a = 0;
        for(ItemStack ds : p.getInventory().getContents()){
            if(ds.getType().equals(mat)){
                a+= ds.getAmount();
            }
        }
        return a;
    }

Düzetlmen gereken bölüm;
Kod:
        if(alMatMiktar(Material.DIAMOND, oyuncu) >= 1){
            oyuncu.giveExpLevels(2);
            oyuncu.sendMessage(ChatColor.WHITE + "[" + ChatColor.GREEN + ChatColor.BOLD + "XpGive" + ChatColor.WHITE + "] " + ChatColor.GOLD + ChatColor.BOLD + "Hesabından 2 Level Karşılığında 1 Diamond Silindi." );
            oyuncu.getInventory().removeItem(new ItemStack(Material.DIAMOND, 1, (short) 1));
        }
Direk oyuncu.getInventory.contains(new ItemStack(Material.DIAMOND, 1)) işe yaramıyor mu ? ._.
 

KRHN

Yazılımcı Beyefendi
Mesajlar
3,378
En iyi cevaplar
0
Beğeniler
2,748
Puanları
0
Hmm KONTROL etmeyi denedin mi acaba ?

Metod;
Kod:
    public static int alMatMiktar(Material mat,Player p){
        int a = 0;
        for(ItemStack ds : p.getInventory().getContents()){
            if(ds.getType().equals(mat)){
                a+= ds.getAmount();
            }
        }
        return a;
    }

Düzetlmen gereken bölüm;
Kod:
        if(alMatMiktar(Material.DIAMOND, oyuncu) >= 1){
            oyuncu.giveExpLevels(2);
            oyuncu.sendMessage(ChatColor.WHITE + "[" + ChatColor.GREEN + ChatColor.BOLD + "XpGive" + ChatColor.WHITE + "] " + ChatColor.GOLD + ChatColor.BOLD + "Hesabından 2 Level Karşılığında 1 Diamond Silindi." );
            oyuncu.getInventory().removeItem(new ItemStack(Material.DIAMOND, 1, (short) 1));
        }
Slotları tek tek kontrol etmekten ziyade sadece contains ile hepsine birden bakmak çok daha mantıklı olacaktır.
 

CoffeeBeat

Zindev
Mesajlar
501
En iyi cevaplar
0
Beğeniler
958
Puanları
1,320
Slotları tek tek kontrol etmekten ziyade sadece contains ile hepsine birden bakmak çok daha mantıklı olacaktır.
Contains boolean veriyor,benim verdiğim method verilen materyalin envanterdeki toplam miktarını veriyor.
[DOUBLEPOST=1435775473,1435775428][/DOUBLEPOST]
Direk oyuncu.getInventory.contains(new ItemStack(Material.DIAMOND, 1)) işe yaramıyor mu ? ._.
Bu seferde değeri 1'den yüksek olan ItemStack elmaslar kalıyor.
[DOUBLEPOST=1435775517][/DOUBLEPOST]
Yani Ne Yapmam Gerekiyo :D[DOUBLEPOST=1435758544,1435754954][/DOUBLEPOST]@CoffeeBeat Kardeşim senin verdiğin kodda


burda /xpgivekodu yok yani oyuncunun yazdığını plugin anlayamıyo bak benimkide böyle



YANİ ORDA OLMUYO :D BİDAHA BAKIVERSEN
Daha temel java bilgin yok burada yardım istiyorsun,bizde saf gibi ediyoruz.
 

KRHN

Yazılımcı Beyefendi
Mesajlar
3,378
En iyi cevaplar
0
Beğeniler
2,748
Puanları
0
Contains boolean veriyor,benim verdiğim method verilen materyalin envanterdeki toplam miktarını veriyor.[DOUBLEPOST=1435775473,1435775428][/DOUBLEPOST]
Bu seferde değeri 1'den yüksek olan ItemStack elmaslar kalıyor.
Contains boolean veriyor da istediğin miktarda parametre girebiliyorsun containse.
 

GodofMilker

Nether Yerlisi
Mesajlar
2,196
En iyi cevaplar
0
Beğeniler
2,562
Puanları
6,790
Contains boolean veriyor,benim verdiğim method verilen materyalin envanterdeki toplam miktarını veriyor.[DOUBLEPOST=1435775473,1435775428][/DOUBLEPOST]
Bu seferde değeri 1'den yüksek olan ItemStack elmaslar kalıyor.[DOUBLEPOST=1435775517][/DOUBLEPOST]
Daha temel java bilgin yok burada yardım istiyorsun,bizde saf gibi ediyoruz.
Contains'de 64 üstü değer girdiğimde de çalışıyordu, veya senin dediğini anlamadım ._.
 

CoffeeBeat

Zindev
Mesajlar
501
En iyi cevaplar
0
Beğeniler
958
Puanları
1,320
Contains boolean veriyor da istediğin miktarda parametre girebiliyorsun containse.
Tamamda ben contains kullanmayı çok sevmiyorum,
-Ilk sebebi null pointer verme şansı var.
-Ikinci sebebi alınan miktar ile matematiksel hesap yapamıyorsun.
-Üçüncü sebebi tek sorgulanılabilir ek işlem 'bundan fazlaysa'
-Dördüncü sebebi contains metodunu override edip üzerine ek bir şeyler yazamıyorsun ki chestmenu yazarken ciddi anlamda gerekiyor.
-Beşinci sebebi containsin kendiside döngü ile çalışıyor.

Bukkit'in envanter metodlarının bir çoğu çökmüş durumda,yenileri eklenecek o yüzden 1.9'a kadar kendi metodlarını kullanmak daha mantıklı.
 

KRHN

Yazılımcı Beyefendi
Mesajlar
3,378
En iyi cevaplar
0
Beğeniler
2,748
Puanları
0
Tamamda ben contains kullanmayı çok sevmiyorum,
-Ilk sebebi null pointer verme şansı var.
-Ikinci sebebi alınan miktar ile matematiksel hesap yapamıyorsun.
-Üçüncü sebebi tek sorgulanılabilir ek işlem 'bundan fazlaysa'
-Dördüncü sebebi contains metodunu override edip üzerine ek bir şeyler yazamıyorsun ki chestmenu yazarken ciddi anlamda gerekiyor.
-Beşinci sebebi containsin kendiside döngü ile çalışıyor.

Bukkit'in envanter metodlarının bir çoğu çökmüş durumda,yenileri eklenecek o yüzden 1.9'a kadar kendi metodlarını kullanmak daha mantıklı.
Yaptığını yapıyor sonuç olarak, tabi seçim senin. Ama bir yazılımcı her zaman pratik ve kolay yolu kullanır eğer mevcutsa, hem okunabilirlik, hem düzenlilik hem işlev ve algoritma açısından.
 

CoffeeBeat

Zindev
Mesajlar
501
En iyi cevaplar
0
Beğeniler
958
Puanları
1,320
Yaptığını yapıyor sonuç olarak, tabi seçim senin. Ama bir yazılımcı her zaman pratik ve kolay yolu kullanır eğer mevcutsa, hem okunabilirlik, hem düzenlilik hem işlev ve algoritma açısından.
Zaten bu metodların kütüphanesini yazmıştım bir kaç ay öncesinden,metodu direk yapıştırdım.
[DOUBLEPOST=1435776319,1435776137][/DOUBLEPOST]
Contains'de 64 üstü değer girdiğimde de çalışıyordu, veya senin dediğini anlamadım ._.
containsAtLeast() kullanırsan dediğin şeyi yapabilirsin.
Fakat diğer hesapları yapamazsın,örnek olarak,bir oyuncu öldüğünde toplam elmas sayısını yarıya düşürmek istersen containsin booleanı ile bölme yaparken iyi şanslar :D
 

GodofMilker

Nether Yerlisi
Mesajlar
2,196
En iyi cevaplar
0
Beğeniler
2,562
Puanları
6,790
Zaten bu metodların kütüphanesini yazmıştım bir kaç ay öncesinden,metodu direk yapıştırdım.[DOUBLEPOST=1435776319,1435776137][/DOUBLEPOST]
containsAtLeast() kullanırsan dediğin şeyi yapabilirsin.
Fakat diğer hesapları yapamazsın,örnek olarak,bir oyuncu öldüğünde toplam elmas sayısını yarıya düşürmek istersen containsin booleanı ile bölme yaparken iyi şanslar :D
Aslında burası için atmıştı yorumu*
Contains'in öyle şeylere yaramayacağını bilecek kadar java bilgisi var :(
 

xXfuckjea23Xx

YASAKLANDI
Mesajlar
93
En iyi cevaplar
0
Beğeniler
14
Puanları
0
abi yardım mı edeceksiniz 3. dünya savaşını mı çıkaracaksınız :olgun:
 

Üst