use of org.bukkit.event.enchantment.PrepareItemEnchantEvent in project Glowstone by GlowstoneMC.
the class EnchantmentManager method calculateNewEnchantsAndLevels.
private void calculateNewEnchantsAndLevels() {
random.setSeed(xpSeed);
int realBookshelfs = inventory.getBookshelfCount();
int countBookshelf = Math.min(15, realBookshelfs);
for (int i = 0; i < enchLevelCosts.length; i++) {
enchLevelCosts[i] = calculateLevelCost(i, countBookshelf);
enchId[i] = -1;
enchLevel[i] = -1;
}
ItemStack item = inventory.getItem();
List<LeveledEnchant> enchants = null;
for (int i = 0; i < enchLevelCosts.length; i++) {
if (enchLevelCosts[i] == 0)
continue;
enchants = calculateCurrentEnchants(item, i, enchLevelCosts[i]);
if (enchants != null && !enchants.isEmpty()) {
LeveledEnchant chosen = WeightedRandom.getRandom(random, enchants);
enchId[i] = chosen.getEnchantment().getId();
enchLevel[i] = chosen.getEnchantmentLevel();
}
}
EnchantmentOffer[] offers = null;
if (enchants != null) {
offers = new EnchantmentOffer[enchants.size()];
enchants.toArray(offers);
}
PrepareItemEnchantEvent event = new PrepareItemEnchantEvent(player, player.getOpenInventory(), inventory.getLocation().getBlock(), item, offers, realBookshelfs);
event.setCancelled(!canEnchant(item));
EventFactory.callEvent(event);
if (event.isCancelled()) {
for (int i = 0; i < enchLevelCosts.length; i++) enchLevelCosts[i] = 0;
}
update();
}
Aggregations