Files
CatServer/patches/net/minecraft/enchantment/EnchantmentHelper.java.patch
2020-05-06 05:37:07 +08:00

58 lines
2.5 KiB
Diff

--- ../src-base/minecraft/net/minecraft/enchantment/EnchantmentHelper.java
+++ ../src-work/minecraft/net/minecraft/enchantment/EnchantmentHelper.java
@@ -140,6 +140,7 @@
ENCHANTMENT_MODIFIER_DAMAGE.damageModifier = 0;
ENCHANTMENT_MODIFIER_DAMAGE.source = source;
applyEnchantmentModifierArray(ENCHANTMENT_MODIFIER_DAMAGE, stacks);
+ ENCHANTMENT_MODIFIER_DAMAGE.source = null; //Forge Fix memory leaks: https://bugs.mojang.com/browse/MC-128547
return ENCHANTMENT_MODIFIER_DAMAGE.damageModifier;
}
@@ -171,6 +172,9 @@
{
applyEnchantmentModifier(ENCHANTMENT_ITERATOR_HURT, p_151384_0_.getHeldItemMainhand());
}
+
+ ENCHANTMENT_ITERATOR_HURT.attacker = null; //Forge Fix memory leaks: https://bugs.mojang.com/browse/MC-128547
+ ENCHANTMENT_ITERATOR_HURT.user = null;
}
public static void applyArthropodEnchantments(EntityLivingBase p_151385_0_, Entity p_151385_1_)
@@ -187,6 +191,9 @@
{
applyEnchantmentModifier(ENCHANTMENT_ITERATOR_DAMAGE, p_151385_0_.getHeldItemMainhand());
}
+
+ ENCHANTMENT_ITERATOR_DAMAGE.target = null; //Forge Fix memory leaks: https://bugs.mojang.com/browse/MC-128547
+ ENCHANTMENT_ITERATOR_DAMAGE.user = null;
}
public static int getMaxEnchantmentLevel(Enchantment p_185284_0_, EntityLivingBase p_185284_1_)
@@ -302,7 +309,7 @@
public static int calcItemStackEnchantability(Random rand, int enchantNum, int power, ItemStack stack)
{
Item item = stack.getItem();
- int i = item.getItemEnchantability();
+ int i = item.getItemEnchantability(stack);
if (i <= 0)
{
@@ -357,7 +364,7 @@
{
List<EnchantmentData> list = Lists.<EnchantmentData>newArrayList();
Item item = itemStackIn.getItem();
- int i = item.getItemEnchantability();
+ int i = item.getItemEnchantability(itemStackIn);
if (i <= 0)
{
@@ -413,7 +420,7 @@
for (Enchantment enchantment : Enchantment.REGISTRY)
{
- if ((!enchantment.isTreasureEnchantment() || allowTreasure) && (enchantment.type.canEnchantItem(item) || flag))
+ if ((!enchantment.isTreasureEnchantment() || allowTreasure) && (enchantment.canApplyAtEnchantingTable(p_185291_1_) || (flag && enchantment.isAllowedOnBooks())))
{
for (int i = enchantment.getMaxLevel(); i > enchantment.getMinLevel() - 1; --i)
{