Void'e kim düşürdü?

eklenti

Kızıltaş Madencisi
En iyi cevaplar
0
Sıfırlamak farklı şey, HashMap'ten oyuncuyu çıkarmak farklı şey. Yazdığın haliyle sorunu var, her 1 dakika ile ilgili bir şey demedim bende. Yazmaya çalıştığın şeyin yukarıda doğrusunu yazdım.
sıfırlamak derken bende zaten oyuncu çıkarma anlamında kullanmıştım :)
 

Centeglassered

Kızıltaş Madencisi
En iyi cevaplar
0
Bunu yapmanın sadece "Bukkit" kütüphanesiyle bir yolu yok, evet yok. Bunun için ne bir olay dinleyicisi ne başka bir şey var, fakat verdiğin linkte de gördüğün gibi yapma yöntemleri var ve bunun en basit modeli "Map" objesini kullanarak yapılabilir. Aşağıda istediğine bir örnek koyuyorum o şekilde yapabilirsin. Aman unutma sınıfı dinletmeyi, bu arada "Scheduler Programming" ile istersen bir süre sonra da listeden çıkarabilirsin oyuncuyu. Bu haliyle biri sana vurduktan 1 saat sonra düşersen bile o öldürmüş sayılıyor ve kendin düşersen dahil, iyi forumlar.
PHP:
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.entity.EntityDamageByEntityEvent;
import org.bukkit.event.entity.EntityDamageEvent;
import org.bukkit.event.entity.PlayerDeathEvent;

import java.util.HashMap;

public class PlayerFallVoid implements Listener {

    HashMap<Player, Player> lastDamages = new HashMap<Player, Player>();

    @EventHandler
    public void onEntityDamageByEntity(EntityDamageByEntityEvent event) {
        if (event.getEntity() instanceof Player && event.getDamager() instanceof Player) {
            lastDamages.put((Player) event.getEntity(), (Player) event.getDamager());
        }
    }

    @EventHandler
    public void onPlayerDeath(PlayerDeathEvent event) {
        if (lastDamages.containsKey(event.getEntity()) && event.getEntity().getLastDamageCause().getCause() == EntityDamageEvent.DamageCause.VOID) {
            event.setDeathMessage(String.format("%s isimli oyuncu %s tarafından boşluğa düşürüldü!", event.getEntity().getName(), lastDamages.get(event.getEntity())));

            lastDamages.remove(event.getEntity());
        }
    }

}
Süreyi de saklayabilirsin. Long olarak böylece eğer geçen süre fazlaysa (25 saniye gibi) adam kedi düştü dersin.
 
Üst