--- a/net/minecraft/entity/item/ExperienceOrbEntity.java
+++ b/net/minecraft/entity/item/ExperienceOrbEntity.java
@@ -98,7 +98,8 @@
       this.func_213315_a(MoverType.SELF, this.func_213322_ci());
       float f = 0.98F;
       if (this.field_70122_E) {
-         f = this.field_70170_p.func_180495_p(new BlockPos(this.func_226277_ct_(), this.func_226278_cu_() - 1.0D, this.func_226281_cx_())).func_177230_c().func_208618_m() * 0.98F;
+         BlockPos pos =new BlockPos(this.func_226277_ct_(), this.func_226278_cu_() - 1.0D, this.func_226281_cx_());
+         f = this.field_70170_p.func_180495_p(pos).getSlipperiness(this.field_70170_p, pos, this) * 0.98F;
       }
 
       this.func_213317_d(this.func_213322_ci().func_216372_d((double)f, 0.98D, (double)f));
@@ -123,6 +124,7 @@
    }
 
    public boolean func_70097_a(DamageSource p_70097_1_, float p_70097_2_) {
+      if (this.field_70170_p.field_72995_K || this.field_70128_L) return false; //Forge: Fixes MC-53850
       if (this.func_180431_b(p_70097_1_)) {
          return false;
       } else {
@@ -151,13 +153,14 @@
    public void func_70100_b_(PlayerEntity p_70100_1_) {
       if (!this.field_70170_p.field_72995_K) {
          if (this.field_70532_c == 0 && p_70100_1_.field_71090_bL == 0) {
+            if (net.minecraftforge.common.MinecraftForge.EVENT_BUS.post(new net.minecraftforge.event.entity.player.PlayerXpEvent.PickupXp(p_70100_1_, this))) return;
             p_70100_1_.field_71090_bL = 2;
             p_70100_1_.func_71001_a(this, 1);
             Entry<EquipmentSlotType, ItemStack> entry = EnchantmentHelper.func_234844_a_(Enchantments.field_185296_A, p_70100_1_, ItemStack::func_77951_h);
             if (entry != null) {
                ItemStack itemstack = entry.getValue();
                if (!itemstack.func_190926_b() && itemstack.func_77951_h()) {
-                  int i = Math.min(this.func_184514_c(this.field_70530_e), itemstack.func_77952_i());
+                  int i = Math.min((int)(this.field_70530_e * itemstack.getXpRepairRatio()), itemstack.func_77952_i());
                   this.field_70530_e -= this.func_184515_b(i);
                   itemstack.func_196085_b(itemstack.func_77952_i() - i);
                }
