mirror of
https://github.com/mcMMO-Dev/mcMMO.git
synced 2025-01-19 16:59:37 +01:00
Fixing a bug where repairing could leave items with the enchant effect but no enchantments.
This commit is contained in:
parent
e607e04af4
commit
0e853d44b7
@ -1,5 +1,6 @@
|
|||||||
package com.gmail.nossr50.skills.repair;
|
package com.gmail.nossr50.skills.repair;
|
||||||
|
|
||||||
|
import java.lang.reflect.Field;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Map.Entry;
|
import java.util.Map.Entry;
|
||||||
import java.util.Random;
|
import java.util.Random;
|
||||||
@ -108,6 +109,7 @@ public class Repair {
|
|||||||
is.removeEnchantment(x);
|
is.removeEnchantment(x);
|
||||||
}
|
}
|
||||||
player.sendMessage(LocaleLoader.getString("Repair.Arcane.Lost"));
|
player.sendMessage(LocaleLoader.getString("Repair.Arcane.Lost"));
|
||||||
|
clearEnchantTag(is, player);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -141,6 +143,7 @@ public class Repair {
|
|||||||
|
|
||||||
if (newEnchants.isEmpty()) {
|
if (newEnchants.isEmpty()) {
|
||||||
player.sendMessage(LocaleLoader.getString("Repair.Arcane.Fail"));
|
player.sendMessage(LocaleLoader.getString("Repair.Arcane.Fail"));
|
||||||
|
clearEnchantTag(is, player);
|
||||||
}
|
}
|
||||||
else if (downgraded || newEnchants.size() < enchants.size()) {
|
else if (downgraded || newEnchants.size() < enchants.size()) {
|
||||||
player.sendMessage(LocaleLoader.getString("Repair.Arcane.Downgrade"));
|
player.sendMessage(LocaleLoader.getString("Repair.Arcane.Downgrade"));
|
||||||
@ -150,6 +153,33 @@ public class Repair {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static void clearEnchantTag(ItemStack is, Player player) {
|
||||||
|
Object o;
|
||||||
|
Class c;
|
||||||
|
Field f;
|
||||||
|
|
||||||
|
o = is;
|
||||||
|
c = o.getClass();
|
||||||
|
|
||||||
|
try {
|
||||||
|
f = c.getDeclaredField("handle");
|
||||||
|
f.setAccessible(true);
|
||||||
|
o = f.get(o);
|
||||||
|
|
||||||
|
c = o.getClass();
|
||||||
|
f = c.getDeclaredField("tag");
|
||||||
|
o = f.get(o);
|
||||||
|
|
||||||
|
c = o.getClass();
|
||||||
|
f = c.getDeclaredField("map");
|
||||||
|
f.setAccessible(true);
|
||||||
|
Map tagMap = (Map) f.get(o);
|
||||||
|
|
||||||
|
tagMap.remove("ench");
|
||||||
|
}
|
||||||
|
catch(Exception e) {}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Gets chance of keeping enchantment during repair.
|
* Gets chance of keeping enchantment during repair.
|
||||||
*
|
*
|
||||||
|
Loading…
x
Reference in New Issue
Block a user