@SubscribeEvent public void onPickupXp(PlayerPickupXpEvent event) { // try mainhand first, then offhand List<ItemStack> tools = Lists.newArrayList(event.getEntityPlayer().getHeldItemMainhand(), event.getEntityPlayer().getHeldItemOffhand()); EntityXPOrb entityXPOrb = event.getOrb(); for(ItemStack itemStack : tools) { if(!itemStack.isEmpty() && isMendingMossModified(itemStack)) { int stored = storeXp(entityXPOrb.xpValue, itemStack); entityXPOrb.xpValue -= stored; } } }
@SubscribeEvent(priority = EventPriority.LOW) public static void onExperiencePickup(PlayerPickupXpEvent event) { EntityPlayer player = event.getEntityPlayer(); if (LivingArmour.hasFullSet(player)) { ItemStack chestStack = player.getItemStackFromSlot(EntityEquipmentSlot.CHEST); LivingArmour armour = ItemLivingArmour.getLivingArmour(chestStack); if (armour != null) { LivingArmourUpgrade upgrade = ItemLivingArmour.getUpgrade(BloodMagic.MODID + ".upgrade.experienced", chestStack); if (upgrade instanceof LivingArmourUpgradeExperience) { double modifier = ((LivingArmourUpgradeExperience) upgrade).getExperienceModifier(); double exp = event.getOrb().xpValue * (1 + modifier); event.getOrb().xpValue = (int) Math.floor(exp) + (Math.random() < exp % 1 ? 1 : 0); } StatTrackerExperience.incrementCounter(armour, event.getOrb().xpValue); } } } }
@SubscribeEvent(priority = EventPriority.LOWEST) public static void onExperiencePickup(PlayerPickupXpEvent event) { EntityPlayer player = event.getEntityPlayer(); ItemStack itemstack = EnchantmentHelper.getEnchantedItem(Enchantments.MENDING, player); if (!itemstack.isEmpty() && itemstack.isItemDamaged()) { int i = Math.min(xpToDurability(event.getOrb().xpValue), itemstack.getItemDamage()); event.getOrb().xpValue -= durabilityToXp(i); itemstack.setItemDamage(itemstack.getItemDamage() - i); } if (!player.getEntityWorld().isRemote) { for (ItemStack stack : player.inventory.mainInventory) { if (stack.getItem() instanceof ItemExperienceBook) { ItemExperienceBook.addExperience(stack, event.getOrb().xpValue); event.getOrb().xpValue = 0; break; } } } }
public static boolean onXPPickup(PlayerPickupXpEvent event, ItemStack stack) { EntityXPOrb orb = event.getOrb(); int toAdd = Math.min(getSpace(stack), orb.xpValue); if (toAdd > 0) { stack.setAnimationsToGo(5); EntityPlayer player = event.getEntityPlayer(); player.world.playSound(null, player.getPosition(), SoundEvents.ENTITY_EXPERIENCE_ORB_PICKUP, SoundCategory.PLAYERS, 0.1F, (MathHelper.RANDOM.nextFloat() - MathHelper.RANDOM.nextFloat()) * 0.35F + 0.9F); ItemTomeExperience.modifyExperience(stack, toAdd); orb.xpValue -= toAdd; if (orb.xpValue <= 0) { orb.setDead(); } } return orb.isDead; }