mirror of
https://github.com/zaaarf/lillero-mapper.git
synced 2024-11-21 20:34:49 +01:00
fix: solved various (glaring) mistakes, now it works!
This commit is contained in:
parent
c48450085b
commit
f712320610
6 changed files with 38 additions and 33 deletions
|
@ -24,7 +24,7 @@ repositories {
|
|||
}
|
||||
|
||||
dependencies {
|
||||
implementation 'ftbsc:lll:0.5.0'
|
||||
implementation 'ftbsc:lll:0.5.1'
|
||||
implementation 'com.google.auto.service:auto-service-annotations:1.1.0'
|
||||
annotationProcessor 'com.google.auto.service:auto-service:1.1.0'
|
||||
}
|
||||
|
|
|
@ -36,7 +36,7 @@ public class MapperProvider {
|
|||
*/
|
||||
private void loadMappers() {
|
||||
this.loadedMappers = new HashSet<>();
|
||||
for(IMappingFormat mapper: ServiceLoader.load(IMappingFormat.class))
|
||||
for(IMappingFormat mapper: ServiceLoader.load(IMappingFormat.class, this.getClass().getClassLoader()))
|
||||
this.loadedMappers.add(mapper);
|
||||
if(this.loadedMappers.isEmpty())
|
||||
throw new RuntimeException("Something went wrong: no mapper types were loaded successfully!");
|
||||
|
@ -79,7 +79,9 @@ public class MapperProvider {
|
|||
}
|
||||
}
|
||||
|
||||
return new BufferedReader(new InputStreamReader(targetStream,
|
||||
StandardCharsets.UTF_8)).lines().collect(Collectors.toList());
|
||||
return new BufferedReader(new InputStreamReader(
|
||||
targetStream,
|
||||
StandardCharsets.UTF_8)
|
||||
).lines().collect(Collectors.toList());
|
||||
}
|
||||
}
|
||||
|
|
|
@ -87,7 +87,7 @@ public class ClassData {
|
|||
*/
|
||||
public ClassData generateReverseMappings(Mapper mapper) {
|
||||
ClassData reverse = new ClassData(this.nameMapped, this.name);
|
||||
this.methods.forEach((signature, data) -> reverse.addMethod(nameMapped, signature.name,
|
||||
this.methods.forEach((signature, data) -> reverse.addMethod(data.nameMapped, signature.name,
|
||||
MappingUtils.mapMethodDescriptor(signature.descriptor, mapper, false)));
|
||||
this.fields.forEach((name, data) -> reverse.addField(data.nameMapped, name, data.descriptor));
|
||||
return reverse;
|
||||
|
|
|
@ -18,7 +18,7 @@ public class MethodSignature {
|
|||
|
||||
/**
|
||||
* Constructs a new {@link MethodSignature}. The parameters should be
|
||||
* either plain or obfuscated in the same way;
|
||||
* either plain or mapped in the same way;
|
||||
* @param name the method name
|
||||
* @param descriptor the method descriptor
|
||||
*/
|
||||
|
@ -37,7 +37,7 @@ public class MethodSignature {
|
|||
if(this == o) return true;
|
||||
if(o == null || getClass() != o.getClass()) return false;
|
||||
MethodSignature signature = (MethodSignature) o;
|
||||
return Objects.equals(name, signature.name) && Objects.equals(descriptor, signature.descriptor);
|
||||
return Objects.equals(this.name, signature.name) && Objects.equals(this.descriptor, signature.descriptor);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -46,6 +46,6 @@ public class MethodSignature {
|
|||
*/
|
||||
@Override
|
||||
public int hashCode() {
|
||||
return Objects.hash(name, descriptor);
|
||||
return Objects.hash(this.name, this.descriptor);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -78,17 +78,17 @@ public class SRGMapper implements IMappingFormat {
|
|||
String[] split = tokens[1].split("/");
|
||||
String memberName = split[split.length - 1];
|
||||
String parent = tokens[1].substring(0, tokens[1].length() - split[split.length - 1].length() - 1);
|
||||
int obfPosition = field ? 2 : 3;
|
||||
split = tokens[obfPosition].split("/");
|
||||
String memberNameObf = split[split.length - 1];
|
||||
String parentObf = tokens[obfPosition].substring(0, tokens[obfPosition].length() - split[split.length - 1].length() - 1);
|
||||
this.registerMember(mapper, invertedMapper, parent, parentObf, memberName, memberNameObf,
|
||||
int mappedPosition = field ? 2 : 3;
|
||||
split = tokens[mappedPosition].split("/");
|
||||
String memberNameMapped = split[split.length - 1];
|
||||
String parentMapped = tokens[mappedPosition].substring(0, tokens[mappedPosition].length() - split[split.length - 1].length() - 1);
|
||||
this.registerMember(mapper, invertedMapper, parent, parentMapped, memberName, memberNameMapped,
|
||||
field ? null : tokens[2], field ? null : tokens[4]);
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Registers a class in the mapper, if it isn't already.
|
||||
* Registers a class in the mapper, if it isn't already known.
|
||||
* @param mapper the {@link Mapper} with normal mappings
|
||||
* @param invertedMapper the {@link Mapper} with inverted mappings
|
||||
* @param name the name
|
||||
|
@ -118,12 +118,10 @@ public class SRGMapper implements IMappingFormat {
|
|||
this.registerClass(mapper, invertedMapper, parent, parentMapped);
|
||||
ClassData data = mapper.getClassData(parent);
|
||||
ClassData dataReverse = invertedMapper.getClassData(data.nameMapped);
|
||||
if(descriptor == null || descriptorMapped == null) {
|
||||
//field
|
||||
if(descriptor == null || descriptorMapped == null) { // field
|
||||
data.addField(name, nameMapped);
|
||||
dataReverse.addField(nameMapped, name);
|
||||
} else {
|
||||
//method
|
||||
} else { // method
|
||||
data.addMethod(name, nameMapped, descriptor);
|
||||
dataReverse.addMethod(nameMapped, name, descriptorMapped);
|
||||
}
|
||||
|
|
|
@ -28,41 +28,46 @@ public class TinyV2Mapper implements IMappingFormat {
|
|||
for(int i = 1; i < lines.size(); i++) {
|
||||
String currentLine = lines.get(i);
|
||||
String[] tokens = currentLine.trim().split("\t");
|
||||
int tabCount = currentLine.indexOf(tokens[0]); //get number of leading tabs
|
||||
int tabCount = currentLine.indexOf(tokens[0]); // get number of leading tabs
|
||||
switch(tabCount) {
|
||||
case 0: //classes
|
||||
case 0: // classes
|
||||
if(tokens.length == 3) {
|
||||
if(tokens[0].charAt(0) == 'c') {
|
||||
result.getRawMappings().put(tokens[1], new ClassData(tokens[1], tokens[2]));
|
||||
currentClass = tokens[1];
|
||||
} else if(!ignoreErrors)
|
||||
throw new MalformedMappingsException(i, "root-level element must be class");
|
||||
throw new MalformedMappingsException(i + 1, "root-level element must be class");
|
||||
continue;
|
||||
}
|
||||
break;
|
||||
case 1: //class members
|
||||
case 1: // class members
|
||||
if(currentClass.isEmpty()) {
|
||||
if(ignoreErrors) continue;
|
||||
else throw new MalformedMappingsException(i, "class member without parent class");
|
||||
else throw new MalformedMappingsException(i + 1, "class member without parent class");
|
||||
}
|
||||
switch(tokens[0].charAt(0)) {
|
||||
case 'm': //methods
|
||||
case 'm': // methods
|
||||
if(tokens.length == 4)
|
||||
break;
|
||||
result.getClassData(currentClass).addMethod(tokens[2], tokens[3], tokens[1]);
|
||||
result.getClassData(currentClass).addMethod(tokens[2], tokens[3], tokens[1]);
|
||||
else if(!ignoreErrors)
|
||||
throw new MalformedMappingsException(i + 1, "incomplete method member");
|
||||
continue;
|
||||
case 'f': //fields
|
||||
case 'f': // fields
|
||||
if(tokens.length == 4)
|
||||
break;
|
||||
result.getClassData(currentClass).addField(tokens[2], tokens[3], tokens[1]);
|
||||
result.getClassData(currentClass).addField(tokens[2], tokens[3], tokens[1]);
|
||||
else if(!ignoreErrors)
|
||||
throw new MalformedMappingsException(i + 1, "incomplete field member");
|
||||
continue;
|
||||
}
|
||||
break;
|
||||
case 2: //parameters, our mappers don't really support those
|
||||
break;
|
||||
case 2: // parameters, our mappers don't really support those
|
||||
continue;
|
||||
default:
|
||||
if(tokens[0].charAt(0) == 'c')
|
||||
continue; // skip comments
|
||||
if(!ignoreErrors)
|
||||
throw new MalformedMappingsException(i + 1, "wrong number of tab-separated tokens");
|
||||
}
|
||||
if(!ignoreErrors)
|
||||
throw new MalformedMappingsException(i, "wrong number of tab-separated tokens");
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue