[ÇÖZÜLDÜ] Log Error

MegaCrafter

Obsidyen Madencisi
Mesajlar
1,419
En iyi cevaplar
0
Beğeniler
1,542
Puanları
3,070
Kod:
if(!oyuncu.getItemInHand().getItemMeta().getDisplayName().equalsIgnoreCase("clothesline"))
Burada NullPointerException veriyor. Galiba oyuncunun elindeki item ile alakalı. Bu satırı:
Kod:
if(oyuncu.getItemInHand() != null && !oyuncu.getItemInHand().getItemMeta().getDisplayName().equalsIgnoreCase("clothesline"))
bu şekilde değiştirirsen sanırım sorun çözülür.
 

YgtGamingTR

Elmas Madencisi
Mesajlar
804
En iyi cevaplar
0
Beğeniler
482
Puanları
0
Kod:
if(!oyuncu.getItemInHand().getItemMeta().getDisplayName().equalsIgnoreCase("clothesline"))
Burada NullPointerException veriyor. Galiba oyuncunun elindeki item ile alakalı. Bu satırı:
Kod:
if(oyuncu.getItemInHand() != null && !oyuncu.getItemInHand().getItemMeta().getDisplayName().equalsIgnoreCase("clothesline"))
bu şekilde değiştirirsen sanırım sorun çözülür.
saol saatlerdir nası isim vereceğimi arıyordum deneyeceğim

Kod:
if(!oyuncu.getItemInHand().getItemMeta().getDisplayName().equalsIgnoreCase("clothesline"))
Burada NullPointerException veriyor. Galiba oyuncunun elindeki item ile alakalı. Bu satırı:
Kod:
if(oyuncu.getItemInHand() != null && !oyuncu.getItemInHand().getItemMeta().getDisplayName().equalsIgnoreCase("clothesline"))
bu şekilde değiştirirsen sanırım sorun çözülür.
hocam peki adama nasıl hasar verdirticem hasar vermiyorda
 

Personinblack

YASAKLANDI
Mesajlar
1,876
En iyi cevaplar
0
Beğeniler
1,237
Puanları
90
Kod:
if(!oyuncu.getItemInHand().getItemMeta().getDisplayName().equalsIgnoreCase("clothesline"))
Burada NullPointerException veriyor. Galiba oyuncunun elindeki item ile alakalı. Bu satırı:
Kod:
if(oyuncu.getItemInHand() != null && !oyuncu.getItemInHand().getItemMeta().getDisplayName().equalsIgnoreCase("clothesline"))
bu şekilde değiştirirsen sanırım sorun çözülür.
Birincisi direk çözümü söylemek yerine benim yaptığım gibi nasıl çözebileceğine dair yardımcı olsan çok daha etkili olur. İkincisi hala NPE verebilir. Eşyanın ItemMeta'sı var mı diye kontrol etmiyorsun. ItemMeta'nın DisplayName'i var mı diye de kontrol etmiyorsun.
 

YgtGamingTR

Elmas Madencisi
Mesajlar
804
En iyi cevaplar
0
Beğeniler
482
Puanları
0
Birincisi direk çözümü söylemek yerine benim yaptığım gibi nasıl çözebileceğine dair yardımcı olsan çok daha etkili olur. İkincisi hala NPE verebilir. Eşyanın ItemMeta'sı var mı diye kontrol etmiyorsun. ItemMeta'nın DisplayName'i var mı diye de kontrol etmiyorsun.
senin yaptığında fark ettim zaten 25. line da olduğunu sonra araştırdım nasıl itemin adını kontrol edebilirim diye arkadaş atmış saolsun sayende birkaç şey daha öğrendim teşekkürler @Personinblack ve moba hasar vermeyide buldum player ınterract eventini playerınterractentityevent olarak değiştirdim artık hasarda veriyor
 

MegaCrafter

Obsidyen Madencisi
Mesajlar
1,419
En iyi cevaplar
0
Beğeniler
1,542
Puanları
3,070
Birincisi direk çözümü söylemek yerine benim yaptığım gibi nasıl çözebileceğine dair yardımcı olsan çok daha etkili olur. İkincisi hala NPE verebilir. Eşyanın ItemMeta'sı var mı diye kontrol etmiyorsun. ItemMeta'nın DisplayName'i var mı diye de kontrol etmiyorsun.
Ama senin verdiğin link tamamen ingilizce ve yardım edeceksem de Türkçe bir kaynak bulamayacak kadar üşengecim :/ Ayrıca benim bildiğim kadarıyla bir ItemStack'in her zaman ItemMeta'sı ve ismi vardır. O yüzden onları kontrol etmem. Sorun çıkarsaydı onlara da bakardık :)
 

YgtGamingTR

Elmas Madencisi
Mesajlar
804
En iyi cevaplar
0
Beğeniler
482
Puanları
0
Ama senin verdiğin link tamamen ingilizce ve yardım edeceksem de Türkçe bir kaynak bulamayacak kadar üşengecim :/ Ayrıca benim bildiğim kadarıyla bir ItemStack'in her zaman ItemMeta'sı ve ismi vardır. O yüzden onları kontrol etmem. Sorun çıkarsaydı onlara da bakardık :)
yok az bir şey anladım onun attığından hatta bayağı bir yardımdcı oldu sadece isimi kontrol etmeyi bulamamıştım
 

Personinblack

YASAKLANDI
Mesajlar
1,876
En iyi cevaplar
0
Beğeniler
1,237
Puanları
90
Ama senin verdiğin link tamamen ingilizce ve yardım edeceksem de Türkçe bir kaynak bulamayacak kadar üşengecim :/ Ayrıca benim bildiğim kadarıyla bir ItemStack'in her zaman ItemMeta'sı ve ismi vardır. O yüzden onları kontrol etmem. Sorun çıkarsaydı onlara da bakardık :)
Eğer her zaman olsaydı Bukkit neden oraya "hasItemMeta" ve "hasDisplayName" booleanlarını koysun? Yardımın üşengeçliği olmaz edeceksen düzgün yardım edersin. Copy paste yapmayı öğretmek yardım etmek sayılmıyor. Anlamadığını söyleseydi linkte anlatılanları çevirebilirdim.
 

YgtGamingTR

Elmas Madencisi
Mesajlar
804
En iyi cevaplar
0
Beğeniler
482
Puanları
0
Eğer her zaman olsaydı Bukkit neden oraya "hasItemMeta" ve "hasDisplayName" booleanlarını koysun? Yardımın üşengeçliği olmaz edeceksen düzgün yardım edersin. Copy paste yapmayı öğretmek yardım etmek sayılmıyor. Anlamadığını söyleseydi linkte anlatılanları çevirebilirdim.
saol şimdide sayende HasDisplayName yi öğrendim bu benim aradığım şey sanırım :)

Eğer her zaman olsaydı Bukkit neden oraya "hasItemMeta" ve "hasDisplayName" booleanlarını koysun? Yardımın üşengeçliği olmaz edeceksen düzgün yardım edersin. Copy paste yapmayı öğretmek yardım etmek sayılmıyor. Anlamadığını söyleseydi linkte anlatılanları çevirebilirdim.
hocam hasarı kullanana veriyor ben sağ tıkladığı entity e versin istiyorum nasıl yapacağım ve 2 tıklayışta çalışıyor
Kod:
package me.pl;

import java.util.HashMap;

import org.bukkit.Location;
import org.bukkit.entity.Damageable;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerInteractEntityEvent;
import org.bukkit.plugin.java.JavaPlugin;
import org.bukkit.util.Vector;

public class ilk extends JavaPlugin implements Listener{
        public void onEnable(){
            getServer().getPluginManager().registerEvents(this,this);
    }
        private HashMap<Player, Long> cooldown = new HashMap<Player, Long>();
       
        @EventHandler
        public void clothesline(PlayerInteractEntityEvent event) {
            Player oyuncu = event.getPlayer();
           
            if(oyuncu.hasPermission("clothesline"))
            {
                if(oyuncu.getItemInHand() != null && !oyuncu.getItemInHand().getItemMeta().getDisplayName().equalsIgnoreCase("clothesline"))
                    return; // elindeki item clothesline değilse iptal et
                if(!cooldown.containsKey(oyuncu))
                {
                    cooldown.put(oyuncu, System.currentTimeMillis());
                }
                else if(cooldown.get(oyuncu) + 10000L > System.currentTimeMillis()) // 10,000 ms = 1sn
                {
                    oyuncu.sendMessage("§4biraz beklemelisin"); //mesaj
                    return;
                }
                else
                {
                    cooldown.remove(oyuncu); // 10 saniye geçmiş böylece silebiliriz
                }
                Damageable pd = (Damageable) oyuncu;
                oyuncu.setHealth(pd.getHealth() - 1); // 1 Kalp vuruyor
                Location pLoc = oyuncu.getLocation();
                Vector vec = oyuncu.getLocation().getDirection();
                double x = vec.getX() * 2.D;
                double z = vec.getZ() * 2.D;
                Location nLoc = new Location(pLoc.getWorld(), pLoc.getX() + x, pLoc.getY(), pLoc.getZ() + z);
                oyuncu.teleport(nLoc); // 2 blok ötesindeki koordinata ışınlıyor [bakış açısına ayarladım]
                event.setCancelled(true);
            }
        }
}
 

Personinblack

YASAKLANDI
Mesajlar
1,876
En iyi cevaplar
0
Beğeniler
1,237
Puanları
90
saol şimdide sayende HasDisplayName yi öğrendim bu benim aradığım şey sanırım :)


hocam hasarı kullanana veriyor ben sağ tıkladığı entity e versin istiyorum nasıl yapacağım ve 2 tıklayışta çalışıyor
Kod:
package me.pl;

import java.util.HashMap;

import org.bukkit.Location;
import org.bukkit.entity.Damageable;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerInteractEntityEvent;
import org.bukkit.plugin.java.JavaPlugin;
import org.bukkit.util.Vector;

public class ilk extends JavaPlugin implements Listener{
        public void onEnable(){
            getServer().getPluginManager().registerEvents(this,this);
    }
        private HashMap<Player, Long> cooldown = new HashMap<Player, Long>();
      
        @EventHandler
        public void clothesline(PlayerInteractEntityEvent event) {
            Player oyuncu = event.getPlayer();
          
            if(oyuncu.hasPermission("clothesline"))
            {
                if(oyuncu.getItemInHand() != null && !oyuncu.getItemInHand().getItemMeta().getDisplayName().equalsIgnoreCase("clothesline"))
                    return; // elindeki item clothesline değilse iptal et
                if(!cooldown.containsKey(oyuncu))
                {
                    cooldown.put(oyuncu, System.currentTimeMillis());
                }
                else if(cooldown.get(oyuncu) + 10000L > System.currentTimeMillis()) // 10,000 ms = 1sn
                {
                    oyuncu.sendMessage("§4biraz beklemelisin"); //mesaj
                    return;
                }
                else
                {
                    cooldown.remove(oyuncu); // 10 saniye geçmiş böylece silebiliriz
                }
                Damageable pd = (Damageable) oyuncu;
                oyuncu.setHealth(pd.getHealth() - 1); // 1 Kalp vuruyor
                Location pLoc = oyuncu.getLocation();
                Vector vec = oyuncu.getLocation().getDirection();
                double x = vec.getX() * 2.D;
                double z = vec.getZ() * 2.D;
                Location nLoc = new Location(pLoc.getWorld(), pLoc.getX() + x, pLoc.getY(), pLoc.getZ() + z);
                oyuncu.teleport(nLoc); // 2 blok ötesindeki koordinata ışınlıyor [bakış açısına ayarladım]
                event.setCancelled(true);
            }
        }
}
e.getRightClicked() metodunu kullanarak sağ tıklanan entity'i alman gerekiyor. Ayrıca sağ tıklanan entitynin lokasyonunuda almak istersen PlayerInteractAtEntity eventını kullanabilirsin.
 

YgtGamingTR

Elmas Madencisi
Mesajlar
804
En iyi cevaplar
0
Beğeniler
482
Puanları
0
Sormak yerine test edebilirsin.
test ettim ve hata vermedi. fakat
Kod:
kurban.setHealth(pd.getHealth() - 1); // 1 Kalp vuruyor
hata veriyor bu yüzden kodu alttakiyle değiştirdim ve denemeden önce doğrumu diye sana sormak istiyorum
Kod:
  ((Damageable) kurban).setHealth(pd.getHealth() - 1); // 1 Kalp vuruyor
 

Personinblack

YASAKLANDI
Mesajlar
1,876
En iyi cevaplar
0
Beğeniler
1,237
Puanları
90

Üst