Skip to content

Commit

Permalink
Allow Reading of external fixes
Browse files Browse the repository at this point in the history
  • Loading branch information
hYdos committed Dec 4, 2021
1 parent fd2d785 commit b1db5d7
Show file tree
Hide file tree
Showing 3 changed files with 39 additions and 24 deletions.
29 changes: 24 additions & 5 deletions src/main/java/net/legacyfabric/mcpmatcher/McpAutoMatcher.java
Original file line number Diff line number Diff line change
Expand Up @@ -6,16 +6,19 @@
import org.cadixdev.lorenz.model.FieldMapping;
import org.cadixdev.lorenz.model.MethodMapping;

import java.io.BufferedReader;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.Optional;
import java.util.regex.Pattern;

public class McpAutoMatcher {

public static void main(String[] args) throws IOException {
if (args.length != 5) {
System.out.println("java -jar McpAutomatcher.jar <older-version-jar> <newer-version-jar> <older-version-joined.csrg> <newer-version-joined.csrg> <output.match>");
if (args.length != 6) {
System.out.println("java -jar McpAutomatcher.jar <older-version-jar> <newer-version-jar> <older-version-joined.csrg> <newer-version-joined.csrg> <fixes.properties> <output.match>");
System.out.println("(Dont use spaces in file names!)");
System.exit(69);
}
Expand All @@ -25,17 +28,29 @@ public static void main(String[] args) throws IOException {
MappingSet oldJoined = MappingUtils.readMappingsFile(args[2]);
MappingSet newJoined = MappingUtils.readMappingsFile(args[3]);

MappingSet mergedMcp = mergeMcp(oldJoined, newJoined);
try (BufferedReader reader = Files.newBufferedReader(Paths.get(args[4]))) {
while (reader.ready()) {
String[] property = reader.readLine().split("=");
if (!property[0].startsWith("#") && property.length == 2) {
MappingUtils.MCP_NAME_CHANGE_MAP.put(compilePattern(property[0]), property[1]);
}
}
}

MappingSet mergedMcp = mergeMappings(oldJoined, newJoined);

System.out.println("Fixing Signatures");
MappingSet mergedMcpFixed = MappingUtils.findAndCreateDescriptors(oldJar, mergedMcp);

System.out.println("Generating Match File");
MatcherFile matcherFile = new MatcherFile(mergedMcpFixed);
matcherFile.write(Paths.get(args[4]), oldJar, newJar);
matcherFile.write(Paths.get(args[5]), oldJar, newJar);
}

public static MappingSet mergeMcp(MappingSet left, MappingSet right) {
/**
* Merges the Obfuscated side of 2 mapping sets by using the Deobfuscated names as an intermediary.
*/
public static MappingSet mergeMappings(MappingSet left, MappingSet right) {
// We are comparing named against named, so we need to invert the mappings.
MappingSet reversedLeft = left.reverse();
MappingSet reversedRight = right.reverse();
Expand Down Expand Up @@ -68,4 +83,8 @@ public static MappingSet mergeMcp(MappingSet left, MappingSet right) {
});
return mergedMcp;
}

private static Pattern compilePattern(String pattern) {
return Pattern.compile(pattern);
}
}
20 changes: 1 addition & 19 deletions src/main/java/net/legacyfabric/mcpmatcher/util/MappingUtils.java
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@

public class MappingUtils {

private static final Map<Pattern, String> MCP_NAME_CHANGE_MAP = new HashMap<>();
public static final Map<Pattern, String> MCP_NAME_CHANGE_MAP = new HashMap<>();

public static MappingSet findAndCreateDescriptors(Path jarFile, MappingSet mappings) throws IOException {
SignatureVisitor visitor = new SignatureVisitor(mappings);
Expand Down Expand Up @@ -154,22 +154,4 @@ private static String getClassName(String fullName) {
String[] split = fullName.split("/");
return split[split.length - 1];
}

private static Pattern compilePattern(String pattern) {
return Pattern.compile(pattern);
}

static {
MCP_NAME_CHANGE_MAP.put(compilePattern("net/minecraft/util/EnumChatFormatting"), "net/minecraft/util/text/TextFormatting");
MCP_NAME_CHANGE_MAP.put(compilePattern("net/minecraft/world/ChunkCoordIntPair"), "net/minecraft/util/math/ChunkPos");
MCP_NAME_CHANGE_MAP.put(compilePattern("net/minecraft/server/management/ItemInWorldManager"), "net/minecraft/server/management/PlayerInteractionManager");
MCP_NAME_CHANGE_MAP.put(compilePattern("net/minecraft/world/biome/BiomeGenBase"), "net/minecraft/world/biome/Biome");
MCP_NAME_CHANGE_MAP.put(compilePattern("net/minecraft/world/biome/WorldChunkManager"), "net/minecraft/world/biome/BiomeProvider");
MCP_NAME_CHANGE_MAP.put(compilePattern("net/minecraft/util/EnumWorldBlockLayer"), "net/minecraft/util/BlockRenderLayer");
MCP_NAME_CHANGE_MAP.put(compilePattern("net/minecraft/entity/ai/EntityMinecartMobSpawner"), "net/minecraft/entity/item/EntityMinecartMobSpawner");
MCP_NAME_CHANGE_MAP.put(compilePattern("net/minecraft/entity/EntityMinecartCommandBlock"), "net/minecraft/entity/item/EntityMinecartCommandBlock");
MCP_NAME_CHANGE_MAP.put(compilePattern("net/minecraft/command/server/CommandBlockLogic"), "net/minecraft/tileentity/CommandBlockBaseLogic");
MCP_NAME_CHANGE_MAP.put(compilePattern("net/minecraft/world/biome/BiomeGen(.+)"), "net/minecraft/world/biome/Biome$1");
MCP_NAME_CHANGE_MAP.put(compilePattern("net/minecraft/network/([^/]+)/(client|server)/(C|S)[A-Z0-9]+Packet(.+)"), "net/minecraft/network/$1/$2/$3Packet$4");
}
}
14 changes: 14 additions & 0 deletions src/main/resources/fixes.properties
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
#General
net/minecraft/util/EnumChatFormatting=net/minecraft/util/text/TextFormatting
net/minecraft/world/ChunkCoordIntPair=net/minecraft/util/math/ChunkPos
net/minecraft/server/management/ItemInWorldManager=net/minecraft/server/management/PlayerInteractionManager
net/minecraft/entity/ai/EntityMinecartMobSpawner=net/minecraft/entity/item/EntityMinecartMobSpawner
net/minecraft/entity/EntityMinecartCommandBlock=net/minecraft/entity/item/EntityMinecartCommandBlock
net/minecraft/command/server/CommandBlockLogic=net/minecraft/tileentity/CommandBlockBaseLogic
net/minecraft/util/EnumWorldBlockLayer=net/minecraft/util/BlockRenderLayer
#Biomes
net/minecraft/world/biome/WorldChunkManager=net/minecraft/world/biome/BiomeProvider
net/minecraft/world/biome/BiomeGenBase=net/minecraft/world/biome/Biome
net/minecraft/world/biome/BiomeGen(.+)=net/minecraft/world/biome/Biome$1
#Packets
net/minecraft/network/([^/]+)/(client|server)/(C|S)[A-Z0-9]+Packet(.+)=net/minecraft/network/$1/$2/$3Packet$4

0 comments on commit b1db5d7

Please sign in to comment.