mirror of
https://github.com/zaaarf/lillero-mapper.git
synced 2024-11-22 04:44:48 +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 {
|
dependencies {
|
||||||
implementation 'ftbsc:lll:0.5.0'
|
implementation 'ftbsc:lll:0.5.1'
|
||||||
implementation 'com.google.auto.service:auto-service-annotations:1.1.0'
|
implementation 'com.google.auto.service:auto-service-annotations:1.1.0'
|
||||||
annotationProcessor 'com.google.auto.service:auto-service:1.1.0'
|
annotationProcessor 'com.google.auto.service:auto-service:1.1.0'
|
||||||
}
|
}
|
||||||
|
|
|
@ -36,7 +36,7 @@ public class MapperProvider {
|
||||||
*/
|
*/
|
||||||
private void loadMappers() {
|
private void loadMappers() {
|
||||||
this.loadedMappers = new HashSet<>();
|
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);
|
this.loadedMappers.add(mapper);
|
||||||
if(this.loadedMappers.isEmpty())
|
if(this.loadedMappers.isEmpty())
|
||||||
throw new RuntimeException("Something went wrong: no mapper types were loaded successfully!");
|
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,
|
return new BufferedReader(new InputStreamReader(
|
||||||
StandardCharsets.UTF_8)).lines().collect(Collectors.toList());
|
targetStream,
|
||||||
|
StandardCharsets.UTF_8)
|
||||||
|
).lines().collect(Collectors.toList());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -87,7 +87,7 @@ public class ClassData {
|
||||||
*/
|
*/
|
||||||
public ClassData generateReverseMappings(Mapper mapper) {
|
public ClassData generateReverseMappings(Mapper mapper) {
|
||||||
ClassData reverse = new ClassData(this.nameMapped, this.name);
|
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)));
|
MappingUtils.mapMethodDescriptor(signature.descriptor, mapper, false)));
|
||||||
this.fields.forEach((name, data) -> reverse.addField(data.nameMapped, name, data.descriptor));
|
this.fields.forEach((name, data) -> reverse.addField(data.nameMapped, name, data.descriptor));
|
||||||
return reverse;
|
return reverse;
|
||||||
|
|
|
@ -18,7 +18,7 @@ public class MethodSignature {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Constructs a new {@link MethodSignature}. The parameters should be
|
* 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 name the method name
|
||||||
* @param descriptor the method descriptor
|
* @param descriptor the method descriptor
|
||||||
*/
|
*/
|
||||||
|
@ -37,7 +37,7 @@ public class MethodSignature {
|
||||||
if(this == o) return true;
|
if(this == o) return true;
|
||||||
if(o == null || getClass() != o.getClass()) return false;
|
if(o == null || getClass() != o.getClass()) return false;
|
||||||
MethodSignature signature = (MethodSignature) o;
|
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
|
@Override
|
||||||
public int hashCode() {
|
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[] split = tokens[1].split("/");
|
||||||
String memberName = split[split.length - 1];
|
String memberName = split[split.length - 1];
|
||||||
String parent = tokens[1].substring(0, tokens[1].length() - split[split.length - 1].length() - 1);
|
String parent = tokens[1].substring(0, tokens[1].length() - split[split.length - 1].length() - 1);
|
||||||
int obfPosition = field ? 2 : 3;
|
int mappedPosition = field ? 2 : 3;
|
||||||
split = tokens[obfPosition].split("/");
|
split = tokens[mappedPosition].split("/");
|
||||||
String memberNameObf = split[split.length - 1];
|
String memberNameMapped = split[split.length - 1];
|
||||||
String parentObf = tokens[obfPosition].substring(0, tokens[obfPosition].length() - split[split.length - 1].length() - 1);
|
String parentMapped = tokens[mappedPosition].substring(0, tokens[mappedPosition].length() - split[split.length - 1].length() - 1);
|
||||||
this.registerMember(mapper, invertedMapper, parent, parentObf, memberName, memberNameObf,
|
this.registerMember(mapper, invertedMapper, parent, parentMapped, memberName, memberNameMapped,
|
||||||
field ? null : tokens[2], field ? null : tokens[4]);
|
field ? null : tokens[2], field ? null : tokens[4]);
|
||||||
return true;
|
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 mapper the {@link Mapper} with normal mappings
|
||||||
* @param invertedMapper the {@link Mapper} with inverted mappings
|
* @param invertedMapper the {@link Mapper} with inverted mappings
|
||||||
* @param name the name
|
* @param name the name
|
||||||
|
@ -118,12 +118,10 @@ public class SRGMapper implements IMappingFormat {
|
||||||
this.registerClass(mapper, invertedMapper, parent, parentMapped);
|
this.registerClass(mapper, invertedMapper, parent, parentMapped);
|
||||||
ClassData data = mapper.getClassData(parent);
|
ClassData data = mapper.getClassData(parent);
|
||||||
ClassData dataReverse = invertedMapper.getClassData(data.nameMapped);
|
ClassData dataReverse = invertedMapper.getClassData(data.nameMapped);
|
||||||
if(descriptor == null || descriptorMapped == null) {
|
if(descriptor == null || descriptorMapped == null) { // field
|
||||||
//field
|
|
||||||
data.addField(name, nameMapped);
|
data.addField(name, nameMapped);
|
||||||
dataReverse.addField(nameMapped, name);
|
dataReverse.addField(nameMapped, name);
|
||||||
} else {
|
} else { // method
|
||||||
//method
|
|
||||||
data.addMethod(name, nameMapped, descriptor);
|
data.addMethod(name, nameMapped, descriptor);
|
||||||
dataReverse.addMethod(nameMapped, name, descriptorMapped);
|
dataReverse.addMethod(nameMapped, name, descriptorMapped);
|
||||||
}
|
}
|
||||||
|
|
|
@ -28,41 +28,46 @@ public class TinyV2Mapper implements IMappingFormat {
|
||||||
for(int i = 1; i < lines.size(); i++) {
|
for(int i = 1; i < lines.size(); i++) {
|
||||||
String currentLine = lines.get(i);
|
String currentLine = lines.get(i);
|
||||||
String[] tokens = currentLine.trim().split("\t");
|
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) {
|
switch(tabCount) {
|
||||||
case 0: //classes
|
case 0: // classes
|
||||||
if(tokens.length == 3) {
|
if(tokens.length == 3) {
|
||||||
if(tokens[0].charAt(0) == 'c') {
|
if(tokens[0].charAt(0) == 'c') {
|
||||||
result.getRawMappings().put(tokens[1], new ClassData(tokens[1], tokens[2]));
|
result.getRawMappings().put(tokens[1], new ClassData(tokens[1], tokens[2]));
|
||||||
currentClass = tokens[1];
|
currentClass = tokens[1];
|
||||||
} else if(!ignoreErrors)
|
} 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;
|
continue;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 1: //class members
|
case 1: // class members
|
||||||
if(currentClass.isEmpty()) {
|
if(currentClass.isEmpty()) {
|
||||||
if(ignoreErrors) continue;
|
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)) {
|
switch(tokens[0].charAt(0)) {
|
||||||
case 'm': //methods
|
case 'm': // methods
|
||||||
if(tokens.length == 4)
|
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;
|
continue;
|
||||||
case 'f': //fields
|
case 'f': // fields
|
||||||
if(tokens.length == 4)
|
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;
|
continue;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 2: //parameters, our mappers don't really support those
|
case 2: // parameters, our mappers don't really support those
|
||||||
break;
|
continue;
|
||||||
}
|
default:
|
||||||
|
if(tokens[0].charAt(0) == 'c')
|
||||||
|
continue; // skip comments
|
||||||
if(!ignoreErrors)
|
if(!ignoreErrors)
|
||||||
throw new MalformedMappingsException(i, "wrong number of tab-separated tokens");
|
throw new MalformedMappingsException(i + 1, "wrong number of tab-separated tokens");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue