Oyuna girişte verilen itemin ayarları / Java Yardım

Leqo

MineKnight MMORPG
Mesajlar
139
En iyi cevaplar
0
Beğeniler
115
Puanları
490
Ruh hali
Merhaba arkadaşlar ben oyuna ilk girişte bir oyuncuya verilen eşya tarzında bir şeyler yaptım.Eşyanın kıpırdamaması hakkında sorunum var ve karakter ölünce eşya envanterden düşüyor bunu nasıl halledebilirim.


KOD
Kod:
    // OYUNCULARA GİRİŞTE YAZILI KİTAP VERME
    @EventHandler
    public void join(PlayerJoinEvent event) {
        Player player = event.getPlayer();

        String nl = "\n";
        ItemStack book = new ItemStack(Material.WRITTEN_BOOK);

        BookMeta bookmeta = (BookMeta) book.getItemMeta();
        bookmeta.setAuthor("MineKnight");
        bookmeta.setTitle(ChatColor.GOLD + "MineKnight Test Server");
        
        ArrayList<String> pages = new ArrayList<String>();
        
        pages.add(ChatColor.GOLD + "MineKnight" + ChatColor.RED + " Beta" + nl + ChatColor.DARK_RED + "1) " + ChatColor.DARK_GRAY + "Sunucuda ozgurce gezebilirsiniz" + nl + ChatColor.DARK_RED + "2) " + ChatColor.DARK_GRAY + "MMORPG Server" + nl + ChatColor.DARK_GREEN + "Yenilikleri bu kitapcıktan" + nl + ChatColor.DARK_GREEN + "takip edebilirsiniz.");
        bookmeta.setPages(pages);
        
        book.setItemMeta(bookmeta);
        
        player.getInventory().setItem(0, book);
        
    }

2) Bir diğer sorun ise özel itemin yer değiştirmemesini nasıl tamamen halledicem.Benim yazdığım kodda sadece yazılı kitapların yer değiştirilmemesi oluyor.
Kod:
    // EŞYA YER DEĞİŞTİRME ENGELLEMEK ( ÖZEL İTEMLER HARİÇ )
    @EventHandler
    public void ClickEvent(InventoryClickEvent e) {
        ItemStack clicked = e.getCurrentItem();
            if (clicked.hasItemMeta()) {
                if (clicked.getType() == Material.WRITTEN_BOOK) {
                    e.setCancelled(true);
                    return;
            }
        }
        
    }
 


MegaCrafter

Obsidyen Madencisi
Mesajlar
1,419
En iyi cevaplar
0
Beğeniler
1,542
Puanları
3,070
İlk başta özel itemleri belirleyici bir şey yapman lazım. Mesela lore kısmına "Özel İtem" diye bir satır koyabilirsin.

Eşyanın yere düşmesi olayını onDeath eventi açıp e.setKeepInventory(true) metodunu kullanarak yapabilirsin. Eğer sadece özel itemlerin kalmasını istiyosan keep inventory'yi yaptıktan sonra bütün envanterdeki eşyaları loop'layıp özel item olmayanları drop'latabilirsin.

Yer değiştirmesini engellemek zaten özel itemi belirleyici bir şey koyduğunda hemen çözülecektir. Bir if koyup özel item mi değil mi kontrol edebilirsin bu sayede.
 

Leqo

MineKnight MMORPG
Mesajlar
139
En iyi cevaplar
0
Beğeniler
115
Puanları
490
Ruh hali
İlk başta özel itemleri belirleyici bir şey yapman lazım. Mesela lore kısmına "Özel İtem" diye bir satır koyabilirsin.

Eşyanın yere düşmesi olayını onDeath eventi açıp e.setKeepInventory(true) metodunu kullanarak yapabilirsin. Eğer sadece özel itemlerin kalmasını istiyosan keep inventory'yi yaptıktan sonra bütün envanterdeki eşyaları loop'layıp özel item olmayanları drop'latabilirsin.

Yer değiştirmesini engellemek zaten özel itemi belirleyici bir şey koyduğunda hemen çözülecektir. Bir if koyup özel item mi değil mi kontrol edebilirsin bu sayede.
Teşekkürler deneyeceğim.. :)
 

Üst