use of com.winthier.skills.Reward in project Skills by StarTux.
the class BukkitCommandSkills method checkItem.
void checkItem(Player player) {
ItemStack item = player.getItemInHand();
final String prefix = BukkitUtil.format("&r[&2Creeper Overlord&r] ");
if (item == null || item.getType() == Material.AIR) {
BukkitUtil.msg(player, prefix + "&cThere is no item in your hand");
return;
}
Reward reward = ((BukkitSkillSacrifice) getSkills().skillByType(BukkitSkillType.SACRIFICE)).fullRewardForItem(item);
double money = (double) reward.getMoney() * (double) item.getAmount();
BukkitUtil.msg(player, prefix + "Sacrificing the %d item%s in your hand will grant you &a%s&r.", item.getAmount(), item.getAmount() == 1 ? "" : "s", BukkitSkillsPlugin.getInstance().getEconomy().format(money));
}
use of com.winthier.skills.Reward in project Skills by StarTux.
the class BukkitSkillHarvest method onBlockFromTo.
@EventHandler(ignoreCancelled = true, priority = EventPriority.MONITOR)
public void onBlockFromTo(BlockFromToEvent event) {
// In addition to block breaks, the Harvest Skill also
// rewards crops broken by water.
Block source = event.getBlock();
if (source.getType() != Material.WATER && source.getType() != Material.STATIONARY_WATER)
return;
Block block = event.getToBlock();
Reward reward = rewardForBlockNamed(block, "water");
if (reward == null)
return;
Player player = getNearestPlayer(block.getLocation(), RADIUS);
if (player == null)
return;
if (!allowPlayer(player))
return;
giveReward(player, reward);
}
use of com.winthier.skills.Reward in project Skills by StarTux.
the class BukkitSkillSacrifice method rewardsForItem.
List<Reward> rewardsForItem(ItemStack item) {
List<Reward> result = new ArrayList<>();
if (item == null)
return result;
addReward(result, rewardForItem(item));
for (Map.Entry<Enchantment, Integer> entry : item.getEnchantments().entrySet()) {
addReward(result, rewardForEnchantment(entry.getKey(), entry.getValue()));
}
if (item.hasItemMeta()) {
ItemMeta meta = item.getItemMeta();
if (meta instanceof EnchantmentStorageMeta) {
for (Map.Entry<Enchantment, Integer> entry : ((EnchantmentStorageMeta) meta).getStoredEnchants().entrySet()) {
addReward(result, rewardForEnchantment(entry.getKey(), entry.getValue()));
}
}
if (meta instanceof SpawnEggMeta) {
SpawnEggMeta spawnEggMeta = (SpawnEggMeta) meta;
if (spawnEggMeta.getSpawnedType() != null) {
addReward(result, rewardForEntityType(spawnEggMeta.getSpawnedType()));
}
}
}
return result;
}
use of com.winthier.skills.Reward 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));
}
use of com.winthier.skills.Reward in project Skills by StarTux.
the class BukkitSkillEat method onPlayerItemConsume.
@EventHandler(ignoreCancelled = true, priority = EventPriority.MONITOR)
public void onPlayerItemConsume(PlayerItemConsumeEvent event) {
if (!allowPlayer(event.getPlayer()))
return;
Player player = event.getPlayer();
if (player.hasPotionEffect(PotionEffectType.HUNGER))
return;
Reward reward = rewardForItem(event.getItem());
if (reward == null)
return;
final int foodLevel = player.getFoodLevel();
final float saturation = player.getSaturation();
new BukkitRunnable() {
@Override
public void run() {
onDidEat(player, reward, foodLevel, saturation);
}
}.runTask(getPlugin());
}
Aggregations