From 81767097df4a119489ae8cbd9c5d8265f54daf7b Mon Sep 17 00:00:00 2001 From: jeff Date: Fri, 29 Aug 2014 01:18:10 -0400 Subject: started on mapping converter tool so we can update to newer Minecraft jars --- src/cuchaz/enigma/convert/ClassMapper.java | 73 ++++++++++++++++++++++++++++++ 1 file changed, 73 insertions(+) create mode 100644 src/cuchaz/enigma/convert/ClassMapper.java (limited to 'src/cuchaz/enigma/convert/ClassMapper.java') diff --git a/src/cuchaz/enigma/convert/ClassMapper.java b/src/cuchaz/enigma/convert/ClassMapper.java new file mode 100644 index 0000000..a0d5a3f --- /dev/null +++ b/src/cuchaz/enigma/convert/ClassMapper.java @@ -0,0 +1,73 @@ +/******************************************************************************* + * Copyright (c) 2014 Jeff Martin. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the GNU Public License v3.0 + * which accompanies this distribution, and is available at + * http://www.gnu.org/licenses/gpl.html + * + * Contributors: + * Jeff Martin - initial API and implementation + ******************************************************************************/ +package cuchaz.enigma.convert; + +import java.io.File; +import java.io.IOException; +import java.util.jar.JarFile; + +import javassist.CtClass; + +import com.google.common.collect.HashMultiset; +import com.google.common.collect.Multiset; + +import cuchaz.enigma.analysis.JarClassIterator; + +public class ClassMapper +{ + public static void main( String[] args ) + throws IOException + { + // TEMP + JarFile fromJar = new JarFile( new File( "input/1.8-pre1.jar" ) ); + JarFile toJar = new JarFile( new File( "input/1.8-pre2.jar" ) ); + + new ClassMapper( fromJar, toJar ); + } + + public ClassMapper( JarFile a, JarFile b ) + { + int numAClasses = JarClassIterator.getClassEntries( a ).size(); + int numBClasses = JarClassIterator.getClassEntries( b ).size(); + + // TEMP + System.out.println( "A classes: " + numAClasses ); + System.out.println( "B classes: " + numBClasses ); + + // compute the a classes + Multiset aclasses = HashMultiset.create(); + for( CtClass c : JarClassIterator.classes( a ) ) + { + ClassIdentity aclass = new ClassIdentity( c ); + aclasses.add( aclass ); + } + + int numMatches = 0; + + // match the b classes to the a classes + for( CtClass c : JarClassIterator.classes( b ) ) + { + ClassIdentity bclass = new ClassIdentity( c ); + if( aclasses.contains( bclass ) ) + { + numMatches++; + } + + // TEMP + //System.out.println( bclass ); + } + + // TEMP + System.out.println( String.format( "Class matches: %d/%d (missing %d)", + numMatches, aclasses.size(), aclasses.size() - numMatches + ) ); + } +} -- cgit v1.2.3