@Override public void giveExp(int xp) { PlayerExpChangeEvent event = EventFactory.getInstance() .callEvent(new PlayerExpChangeEvent(this, xp)); xp = event.getAmount(); totalExperience += xp; // gradually award levels based on xp points float value = 1.0f / getExpToLevel(); for (int i = 0; i < xp; ++i) { exp += value; if (exp >= 1) { exp -= 1; setLevel(level + 1); value = 1.0f / getExpToLevel(level); } } sendExperience(); }