@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true) public void onPrepareEnchant(final PrepareItemEnchantEvent event) { final ItemStack item = getItem(event.getItem(), event.getEnchanter()); final long seed = enchantSeeds.get(event.getEnchanter().getUniqueId()); offers.put(event.getEnchanter().getUniqueId(), new int[] { event.getOffers()[0].getCost(), 1, event.getOffers()[1].getCost(), 2, event.getOffers()[2].getCost(), 3 }); for (final EnchantmentOffer offer : event.getOffers()) { final EnchantResult result = mechanics.generateEnchantments( event.getEnchanter(), item, offer.getCost(), true, seed); result.getFirstVanillaEnchantment().ifPresent(enchant -> { offer.setEnchantment(enchant.getEnchantment()); offer.setEnchantmentLevel(result.getFirstVanillaLevel()); }); } }
@Nullable protected EnchantmentOffer[] get(Event e) { if (((PrepareItemEnchantEvent)e).getOffers() != null) { return ((PrepareItemEnchantEvent)e).getOffers(); } return null; }
@SuppressWarnings("unchecked") @Override public boolean init(Expression<?>[] e, int matchedPattern, Kleenean isDelayed, ParseResult parser) { offer = (Expression<EnchantmentOffer>) e[0]; return true; }
public Class<? extends EnchantmentOffer> getReturnType() { return EnchantmentOffer.class; }