Çözüldü Minecraftda AİR Click Eventini Dinleme

Durum
Üzgünüz bu konu cevaplar için kapatılmıştır...

boran3q

Lapis Niye Mavi?
Katılım
31 Mayıs 2018
Mesajlar
880
Çözümler
1
Elmaslar
260
Puan
14.770
Konum
İzmir

Discord:

ikincielkralliklariseth

merhaba ben bir eklenti geliştiriyorum ve elimde X itemi ile havaya mesela vurdugumda herhangibi bir işlem olmuyor ve debug olarak deniyorum şuanda yani elimdeki item ile air yani havaya vurunca bir debug mesajı almak istiyorum sürüm 1.8 biraz araştırdım paketlere bakmamı söylediler ingiliz formlarında bakdım ama yapamadım anlayabilenler yardım ederse sevinirim
 
kodunuzu iletir misiniz

yani bu çalışmıyor mu ?

Java:
@EventHandler
    public void testEvent(PlayerInteractEvent e) {

        Action a = e.getAction();

        if (a == Action.LEFT_CLICK_AIR) {
            e.getPlayer().sendMessage("Merhaba ahbap?");
        }
    }

ayrıca listenerları register etmeniz gerekiyor, bazen gözden kaçabiliyor...


Java:
getServer().getPluginManager().registerEvents(new sinifAdinNedir(), plugin getter field);

diğer yararlı enumlar:

Java:
RIGHT_CLICK_AIR = havaya sağ tıklama
LEFT_CLICK_AIR = havaya sol tıklama
RIGHT_CLICK_BLOCK = bloğa sağ tıklama
LEFT_CLICK_BLOCK = bloğa sol tıklama
 
kodunuzu iletir misiniz

yani bu çalışmıyor mu ?

Java:
@EventHandler
    public void testEvent(PlayerInteractEvent e) {

        Action a = e.getAction();

        if (a == Action.LEFT_CLICK_AIR) {
            e.getPlayer().sendMessage("Merhaba ahbap?");
        }
    }

ayrıca listenerları register etmeniz gerekiyor, bazen gözden kaçabiliyor...


Java:
getServer().getPluginManager().registerEvents(new sinifAdinNedir(), plugin getter field);

diğer yararlı enumlar:

Java:
RIGHT_CLICK_AIR = havaya sağ tıklama
LEFT_CLICK_AIR = havaya sol tıklama
RIGHT_CLICK_BLOCK = bloğa sağ tıklama
LEFT_CLICK_BLOCK = bloğa sol tıklama
dediginiz gibi Leftclickair çalışmıyor onu yapsam bile bloğa tıklamadan listener tetiklenmiyor benim debug kodum bu
konsolda herhangibi bir hata vermiyor bloklara tıklayarak yaparsam algılıyor?


Java:
public class Guns implements Listener {
    private final JavaPlugin plugin;

    public Guns(JavaPlugin plugin) {
        this.plugin = plugin;
        Bukkit.getPluginManager().registerEvents(this, plugin);
    }

    @EventHandler
    public void onPlayerInteract(PlayerInteractEvent event) {
        Player player = event.getPlayer();
        Material item = player.getInventory().getItemInHand().getType();
        
        if (item == Material.SWORD_AK47) {
            if (event.getAction().toString().contains("LEFT_CLICK_AIR")) {
                player.sendMessage("§aDEBUG: Sol tıklama algılandı!");
            }
        }
    }
}
 
ma
dediginiz gibi Leftclickair çalışmıyor onu yapsam bile bloğa tıklamadan listener tetiklenmiyor benim debug kodum bu
konsolda herhangibi bir hata vermiyor bloklara tıklayarak yaparsam algılıyor?


Java:
public class Guns implements Listener {
    private final JavaPlugin plugin;

    public Guns(JavaPlugin plugin) {
        this.plugin = plugin;
        Bukkit.getPluginManager().registerEvents(this, plugin);
    }

    @EventHandler
    public void onPlayerInteract(PlayerInteractEvent event) {
        Player player = event.getPlayer();
        Material item = player.getInventory().getItemInHand().getType();
       
        if (item == Material.SWORD_AK47) {
            if (event.getAction().toString().contains("LEFT_CLICK_AIR")) {
                player.sendMessage("§aDEBUG: Sol tıklama algılandı!");
            }
        }
    }
}
material mevcut.
 
ma

material mevcut.
şimdi onu soracaktım o material neymiş diye xd
hmm, direk action tipini koşulsuz yazdırma işlemi yapar mısınız ? debug var, evet ama else {} durumunda bir debug yok. o yüzden else durumlarına debug ekleyip sorunu o şekilde bulmanız gerekiyor, koşul sağlandıktan sonra debug mesajı görünse ne yazar :D


şunu dener misiniz:

Java:
@EventHandler
    public void onPlayerInteract(PlayerInteractEvent event) {
        Player player = event.getPlayer();
        Material item = player.getInventory().getItemInHand().getType();
        
        if (item == Material.SWORD_AK47) {
            if (event.getAction().toString().contains("LEFT_CLICK_AIR")) {
                player.sendMessage("§aDEBUG: Sol tıklama algılandı!");
            } else {
                player.sendMessage("koşul geçersiz! " + event.getAction().toString());
                player.sendMessage("tip: " + event.getAction());
            }
        }
    }
 
şimdi onu soracaktım o material neymiş diye xd
hmm, direk action tipini koşulsuz yazdırma işlemi yapar mısınız ? debug var, evet ama else {} durumunda bir debug yok. o yüzden else durumlarına debug ekleyip sorunu o şekilde bulmanız gerekiyor, koşul sağlandıktan sonra debug mesajı görünse ne yazar :D


şunu dener misiniz:

Java:
@EventHandler
    public void onPlayerInteract(PlayerInteractEvent event) {
        Player player = event.getPlayer();
        Material item = player.getInventory().getItemInHand().getType();
       
        if (item == Material.SWORD_AK47) {
            if (event.getAction().toString().contains("LEFT_CLICK_AIR")) {
                player.sendMessage("§aDEBUG: Sol tıklama algılandı!");
            } else {
                player.sendMessage("koşul geçersiz! " + event.getAction().toString());
                player.sendMessage("tip: " + event.getAction());
            }
        }
    }
havaya tıklayamıyorum o yüzden havada bişey yok ama bloklara tıklayıncada tipde koşul geçersizde LEFT_CLİCK_BLOCK çıkıyor
 
havaya tıklayamıyorum o yüzden havada bişey yok ama bloklara tıklayıncada tipde koşul geçersizde LEFT_CLİCK_BLOCK çıkıyor
i büyük harf ile mi yazıldı yoksa sizin yazınızda mı sorun var. bunu bilmem gerek çünkü string'e çevirince I İ olabiliyor. bu durumda toString() yazısından sonra .replace("İ", "I") olarak eklemeniz lazım.

Kod:
e.getAction().toString().replace("İ", "I")

bunu filtrede belirtin
 
i büyük harf ile mi yazıldı yoksa sizin yazınızda mı sorun var. bunu bilmem gerek çünkü string'e çevirince I İ olabiliyor. bu durumda toString() yazısından sonra .replace("İ", "I") olarak eklemeniz lazım.

Kod:
e.getAction().toString().replace("İ", "I")

bunu filtrede belirtin
I harfi yazmıştı ben İ olarak yazmışım :x
 
I harfi yazmıştı ben İ olarak yazmışım :x
stringe çevirmeden kontrol etmeyi deneyin if (a == Action.LEFT_CLICK_AIR) {} ? bilmiyorum ben her zaman böyle yaparım bi'de 1.8 eklentilerime bakayım nasıl yapmışım diye :D

Kod:
    @EventHandler
    public void OnInteract(PlayerInteractEvent event) {

        Player player = event.getPlayer();
        Action action = event.getAction();
        if(action == Action.RIGHT_CLICK_AIR || action == Action.LEFT_CLICK_AIR) {
                player.sendMessage("tıklama tipi: " + action);
            } else {
                player.sendMessage("bilinmeyen tıklama tipi: " + action);
        }
    }
 
stringe çevirmeden kontrol etmeyi deneyin if (a == Action.LEFT_CLICK_AIR) {} ? bilmiyorum ben her zaman böyle yaparım bi'de 1.8 eklentilerime bakayım nasıl yapmışım diye :D


Kod:
    @EventHandler
    public void OnInteract(PlayerInteractEvent event) {

        Player player = event.getPlayer();
        Action action = event.getAction();
        if(action == Action.RIGHT_CLICK_AIR || action == Action.LEFT_CLICK_AIR)
            player.sendMessage("tıklama tipi: " + action);
        else:
            player.sendMessage("bilinmeyen tıklama tipi: " + action);
    }
hala olmadı debug mesajı aynı geliyor yani gene LEFT_CLICK_BLOCK
 
hala olmadı debug mesajı aynı geliyor yani gene LEFT_CLICK_BLOCK
eklemeyi gördüm ve denedim tekrardan hala olmadı elimde item bile yokken hala havaya vurmaya fln denedigimde saymıyor ama bir bloga vurdugumda LEFT_CLICK_BLOCK sayıyor
 
Merhaba if(e.getHand() != EquipmentSlot.HAND) return; tarzı bir kontrol ekleyip tekrar deneyin.
 
Durum
Üzgünüz bu konu cevaplar için kapatılmıştır...

Hala Discord sunucumuza katılmadın mı?

Büyük bir topluluğun parçası ol, etkinliklere katıl ve özel hediyeler kazanma şansı yakala!

Şimdi Katıl
Üst