summaryrefslogtreecommitdiff
path: root/src/main/java/cuchaz/enigma/mapping/MappingsRenamer.java
diff options
context:
space:
mode:
authorGravatar Thog2016-10-27 19:28:10 +0200
committerGravatar Thog2016-10-27 19:28:10 +0200
commit72bdd3caa5bc21e4830e764eaf804bd42cedf23e (patch)
treeecffb6d1b10a7f85216217020254af0781865edb /src/main/java/cuchaz/enigma/mapping/MappingsRenamer.java
parentRework saving system to improve saving time (Fix #35) (diff)
downloadenigma-fork-72bdd3caa5bc21e4830e764eaf804bd42cedf23e.tar.gz
enigma-fork-72bdd3caa5bc21e4830e764eaf804bd42cedf23e.tar.xz
enigma-fork-72bdd3caa5bc21e4830e764eaf804bd42cedf23e.zip
Rework setFieldName to only check name in the actual class mapping and mothers classes mappings (Fix #51)
Diffstat (limited to 'src/main/java/cuchaz/enigma/mapping/MappingsRenamer.java')
-rw-r--r--src/main/java/cuchaz/enigma/mapping/MappingsRenamer.java19
1 files changed, 17 insertions, 2 deletions
diff --git a/src/main/java/cuchaz/enigma/mapping/MappingsRenamer.java b/src/main/java/cuchaz/enigma/mapping/MappingsRenamer.java
index 5c299e3..4e812b1 100644
--- a/src/main/java/cuchaz/enigma/mapping/MappingsRenamer.java
+++ b/src/main/java/cuchaz/enigma/mapping/MappingsRenamer.java
@@ -90,8 +90,23 @@ public class MappingsRenamer {
90 public void setFieldName(FieldEntry obf, String deobfName) { 90 public void setFieldName(FieldEntry obf, String deobfName) {
91 deobfName = NameValidator.validateFieldName(deobfName); 91 deobfName = NameValidator.validateFieldName(deobfName);
92 FieldEntry targetEntry = new FieldEntry(obf.getClassEntry(), deobfName, obf.getType()); 92 FieldEntry targetEntry = new FieldEntry(obf.getClassEntry(), deobfName, obf.getType());
93 if (m_mappings.containsDeobfField(obf.getClassEntry(), deobfName, obf.getType()) || m_index.containsObfField(targetEntry)) { 93 ClassEntry definedClass = null;
94 throw new IllegalNameException(deobfName, "There is already a field with that name"); 94 if (m_mappings.containsDeobfField(obf.getClassEntry(), deobfName) || m_index.containsEntryWithSameName(targetEntry))
95 definedClass = obf.getClassEntry();
96 else {
97 for (ClassEntry ancestorEntry : this.m_index.getTranslationIndex().getAncestry(obf.getClassEntry())) {
98 if (m_mappings.containsDeobfField(ancestorEntry, deobfName) || m_index.containsEntryWithSameName(targetEntry.cloneToNewClass(ancestorEntry))) {
99 definedClass = ancestorEntry;
100 break;
101 }
102 }
103 }
104
105 if (definedClass != null) {
106 String className = m_mappings.getTranslator(TranslationDirection.Deobfuscating, m_index.getTranslationIndex()).translateClass(definedClass.getClassName());
107 if (className == null)
108 className = definedClass.getClassName();
109 throw new IllegalNameException(deobfName, "There is already a field with that name in " + className);
95 } 110 }
96 111
97 ClassMapping classMapping = getOrCreateClassMapping(obf.getClassEntry()); 112 ClassMapping classMapping = getOrCreateClassMapping(obf.getClassEntry());