OMG This events .

Discussion in 'Plugin Development' started by Plugers11, Nov 16, 2014.

Thread Status:
Not open for further replies.
  1. Offline

    Plugers11

    Code

    Code:
    @EventHandler
        public void onDeath(PlayerDeathEvent e){
            if(e.getEntity().getKiller() != null && e.getEntity() instanceof Player && e.getEntity().getKiller() instanceof Witch){
                Player death = (Player) e.getEntity();
                PacketPlayInClientCommand ppicc = new PacketPlayInClientCommand(EnumClientCommand.PERFORM_RESPAWN);
                ((CraftPlayer)death).getHandle().playerConnection.a(ppicc);
                Apollon.g().players.remove(death.getName());
                Apollon.g().players.put(death.getName(), new PlayerData("Czarodziej", new Date()));
                SkinChanger.removeSkin(death);
                SkinChanger.changeSkin(death, czarodziejSkin);
                TagChanger.changeTag(death, death.getName());
                Commands.addPotionsCzarodziej(death);
            }
           
            if(e.getEntity().getKiller() != null){
                if(e.getEntity().getKiller() instanceof Player){
                    Bukkit.broadcastMessage("KUPA GRACZ");
                    Player killer = (Player) e.getEntity().getKiller();
                    Player death = (Player) e.getEntity();
                    PacketPlayInClientCommand ppicc = new PacketPlayInClientCommand(EnumClientCommand.PERFORM_RESPAWN);
                    ((CraftPlayer)death).getHandle().playerConnection.a(ppicc);
                    boolean cK = Apollon.g().players.containsKey(killer.getName());
                    if(cK){
                        String rasaK = Apollon.g().players.get(killer.getName()).getRasa();
                            Apollon.g().players.remove(death.getName());
                            Apollon.g().players.put(death.getName(), new PlayerData(rasaK, null));
                        if(rasaK.equalsIgnoreCase("Wilkolak")){
                            SkinChanger.removeSkin(death);
                            SkinChanger.changeSkin(death, wilkolakSkin);
                            TagChanger.changeTag(death, death.getName());
                        }else if(rasaK.equalsIgnoreCase("Gracz")){
                           
                        }else if(rasaK.equalsIgnoreCase("Wampir")){
                            SkinChanger.removeSkin(death);
                            SkinChanger.changeSkin(death, wampirSkin);
                            TagChanger.changeTag(death, death.getName());
                        }else if(rasaK.equalsIgnoreCase("Czarodziej")){
                            SkinChanger.removeSkin(death);
                            SkinChanger.changeSkin(death, czarodziejSkin);
                            TagChanger.changeTag(death, death.getName());
                            Commands.addPotionsCzarodziej(death);
                        }
                    }
                }
            }
        }
    

    Errors : 0

    Working only with Player
     
  2. Offline

    Fhbgsdhkfbl

    Plugers11
    What are you trying to exactly do?
     
  3. Offline

    teej107

    Yep! That's code!

    My best answer is this. Seeing as you have this.....
    Code:
    if(e.getEntity().getKiller() != null){
                if(e.getEntity().getKiller() instanceof Player)
    I can assume that you don't know that getKiller() only returns a Player or null. Does that answer your concern?
     
  4. Offline

    FerusGrim

    All of your checks to ensure that the killer is an instanceof a Player are pointless. LivingEntity#getKiller is always a Player object.

    EDIT: Ninja'd by teej107

    Assuming you're attempting to get the killer if they're not a Player.

    1) Listen to EntityDamageByEntityEvent.
    2) Check if EntityDamageByEntityEvent#getEntity#getHealth is less-than-or-equal-to 0.
    3) If the above check is true, the killer is EntityDamageByEntityEvent#getDamager.

    Note, I say 'less-than-or-equal-to 0' because I can't recall if health can go into negatives if the damage is higher than existing health.

    EDIT: Though, I suppose 'less-than 1' would also suffice.

    EDIT by Moderator: merged posts, please use the edit button instead of double posting.
     
    Last edited by a moderator: Jun 13, 2016
  5. Offline

    Plugers11

    FerusGrim
    Hmm
    Never mind but
    How u want to check health from damageevent ?
    I can use InteractEntityEvent but not damage
     
  6. Offline

    567legodude

    You could try something like this:
    Code:java
    1. @EventHandler
    2. public void onDamage(EntityDamageByEntityEvent e) {
    3. Damageable damaged = e.getEntity();
    4. Damageable damager = e.getDamager();
    5.  
    6. double damagedHealth = damaged.getHealth();
    7. double damagerHealth = damager.getHealth();
    8. }
     
  7. Health has been doubles for a while now, less than 1 doesn't suffice ;)
     
    FerusGrim likes this.
Thread Status:
Not open for further replies.

Share This Page