Search in sources :

Example 1 with SkillsRewardEvent

use of com.winthier.skills.bukkit.event.SkillsRewardEvent in project Skills by StarTux.

the class BukkitSkill method giveReward.

final void giveReward(@NonNull Player player, Reward reward, double factor) {
    int level = getSkills().getScore().getSkillLevel(player.getUniqueId(), this);
    double bonusFactor = getSkillType() == BukkitSkillType.SACRIFICE ? 1.0 : 1.0 + (double) (level / 10) / 100.0;
    if (reward == null)
        return;
    double skillPoints = reward.getSkillPoints() * factor;
    double money = reward.getMoney() * factor * bonusFactor;
    double exp = reward.getExp() * factor;
    if (skillPoints < 0.01 && money < 0.01 && exp < 0.01)
        return;
    if (getSkills().hasDebugMode(player)) {
        BukkitReward br = BukkitReward.of(reward);
        BukkitUtil.msg(player, "[sk] &e%s &8%s &e%s %s&8:&e%s &8\"&e%s&8\" &6%.2f&8sp &6%.2f&8mo &6%.2f&8xp", getShorthand(), Strings.camelCase(br.key.getTarget().name()), Strings.camelCase(br.key.typeAsPrettyString()), br.key.typeAsString(), br.key.dataAsString(), br.key.nameAsString(), skillPoints, money, exp);
    }
    giveSkillPoints(player, skillPoints);
    giveMoney(player, money);
    giveExp(player, exp);
    Reward outcome = new CustomReward((float) skillPoints, (float) money, (float) exp);
    BukkitPlayer.of(player).onReward(player, this, outcome);
    getSkills().getScore().logReward(reward, player.getUniqueId(), outcome);
    Bukkit.getServer().getPluginManager().callEvent(new SkillsRewardEvent(player, this, outcome));
}
Also used : SkillsRewardEvent(com.winthier.skills.bukkit.event.SkillsRewardEvent) CustomReward(com.winthier.skills.CustomReward) CustomReward(com.winthier.skills.CustomReward) Reward(com.winthier.skills.Reward)

Aggregations

CustomReward (com.winthier.skills.CustomReward)1 Reward (com.winthier.skills.Reward)1 SkillsRewardEvent (com.winthier.skills.bukkit.event.SkillsRewardEvent)1