aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/com/replaymod/gradle/remap/legacy/LegacyMappingsReader.java
blob: 502f7bae1bfd9f1def6a9f55aea452d95bed9b89 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
package com.replaymod.gradle.remap.legacy;

import org.cadixdev.lorenz.MappingSet;
import org.cadixdev.lorenz.io.MappingsReader;
import org.cadixdev.lorenz.model.ClassMapping;

import java.util.Map;

public class LegacyMappingsReader extends MappingsReader {
    private final Map<String, LegacyMapping> map;

    public LegacyMappingsReader(Map<String, LegacyMapping> map) {
        this.map = map;
    }

    @Override
    public MappingSet read() {
        return read(MappingSet.create(new LegacyMappingSetModelFactory()));
    }

    @Override
    public MappingSet read(MappingSet mappings) {
        if (!(mappings.getModelFactory() instanceof LegacyMappingSetModelFactory)) {
            throw new IllegalArgumentException("legacy mappings must use legacy model factory, use read() instead");
        }
        for (LegacyMapping legacyMapping : map.values()) {
            ClassMapping classMapping = mappings.getOrCreateClassMapping(legacyMapping.oldName)
                    .setDeobfuscatedName(legacyMapping.newName);
            for (Map.Entry<String, String> entry : legacyMapping.fields.entrySet()) {
                classMapping.getOrCreateFieldMapping(entry.getKey())
                        .setDeobfuscatedName(entry.getValue());
            }
            for (Map.Entry<String, String> entry : legacyMapping.methods.entrySet()) {
                classMapping.getOrCreateMethodMapping(entry.getKey(), "()V")
                        .setDeobfuscatedName(entry.getValue());
            }
        }
        return mappings;
    }

    @Override
    public void close() {
    }
}