Check when player gets to whole number of XP

Discussion in 'Plugin Development' started by plisov, Jul 26, 2017.

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

    plisov

    I'm trying to create a leveling system and I need to check when a player gets to level 1, 2, 3 etc. How would I do so?

    Code:
    package me.plisov.ventureland.leveling;
    
    import java.util.Random;
    
    import org.bukkit.entity.Player;
    import org.bukkit.event.Listener;
    import org.bukkit.event.entity.EntityDeathEvent;
    
    public class Leveling implements Listener {
    
        public static void giveExp(EntityDeathEvent event) {
    
            event.setDroppedExp(0);
    
            Player player = (Player) event.getEntity().getKiller();
    
            if (player instanceof Player) {
    
                Random random = new Random();
                int exp = random.nextInt(10);
    
                player.giveExp(exp);
    
            }
           
            if(player.getLevel() > 0) {
                player.sendMessage("Working");
            }
           
        }
    }
    
     
  2. There's this event: PlayerLevelChangeEvent you could try that
     
  3. Offline

    Zombie_Striker

    @plisov
    Events need the @EventHandler tag and should not be static.

    As BlackWing posted, listen to PlayerLevelChangeEvent if you need to detect if a player received or lost XP.
     
  4. Offline

    plisov

    Im not using it as an event. Im calling it in another class in an EntityDeathEvent that doesnt have static and has the @EventHandler tag
     
  5. Offline

    Machine Maker

    @plisov
    player.getLevel() returns an integer of the level of the player while
    player.getExp() returns a float between 0 and 1, 0 being no progress towards the next level and 1 being the next level.
     
Thread Status:
Not open for further replies.

Share This Page