Fix AT, Fix exc. Almost works now!

This commit is contained in:
Christian 2013-12-12 01:38:34 -05:00
parent 1322e3407b
commit 7956c2f659
5 changed files with 39 additions and 37 deletions

View File

@ -109,7 +109,7 @@ net/minecraft/enchantment/EnchantmentHelper=CL_00000107
#net/minecraft/enchantment/EnchantmentHelper$1=CL_00000108 #net/minecraft/enchantment/EnchantmentHelper$1=CL_00000108
net/minecraft/enchantment/EnchantmentHelper$DamageIterator=CL_00000109 net/minecraft/enchantment/EnchantmentHelper$DamageIterator=CL_00000109
net/minecraft/enchantment/EnchantmentHelper$HurtIterator=CL_00000110 net/minecraft/enchantment/EnchantmentHelper$HurtIterator=CL_00000110
net/minecraft/enchantment/EnchantmentHelper$IModifier=CL_00000111 #net/minecraft/enchantment/EnchantmentHelper$IModifier=CL_00000111
net/minecraft/enchantment/EnchantmentHelper$ModifierLiving=CL_00000112 net/minecraft/enchantment/EnchantmentHelper$ModifierLiving=CL_00000112
net/minecraft/command/server/CommandAchievement=CL_00000113 net/minecraft/command/server/CommandAchievement=CL_00000113
net/minecraft/enchantment/EnchantmentHelper$ModifierDamage=CL_00000114 net/minecraft/enchantment/EnchantmentHelper$ModifierDamage=CL_00000114
@ -673,7 +673,7 @@ net/minecraft/client/gui/GuiLabel=CL_00000671
net/minecraft/client/gui/GuiButtonLanguage=CL_00000672 net/minecraft/client/gui/GuiButtonLanguage=CL_00000672
net/minecraft/client/gui/GuiButtonLink=CL_00000673 net/minecraft/client/gui/GuiButtonLink=CL_00000673
net/minecraft/client/gui/GuiListExtended=CL_00000674 net/minecraft/client/gui/GuiListExtended=CL_00000674
net/minecraft/client/gui/GuiListExtended$IGuiListEntry=CL_00000675 #net/minecraft/client/gui/GuiListExtended$IGuiListEntry=CL_00000675
net/minecraft/client/gui/GuiOptionButton=CL_00000676 net/minecraft/client/gui/GuiOptionButton=CL_00000676
net/minecraft/client/gui/GuiOptionsRowList=CL_00000677 net/minecraft/client/gui/GuiOptionsRowList=CL_00000677
net/minecraft/client/gui/GuiOptionsRowList$Row=CL_00000678 net/minecraft/client/gui/GuiOptionsRowList$Row=CL_00000678
@ -1486,7 +1486,7 @@ net/minecraft/util/CryptManager=CL_00001483
net/minecraft/util/JsonUtils=CL_00001484 net/minecraft/util/JsonUtils=CL_00001484
net/minecraft/util/HttpUtil=CL_00001485 net/minecraft/util/HttpUtil=CL_00001485
net/minecraft/util/HttpUtil$1=CL_00001486 net/minecraft/util/HttpUtil$1=CL_00001486
net/minecraft/util/HttpUtil$DownloadListener=CL_00001487 #net/minecraft/util/HttpUtil$DownloadListener=CL_00001487
net/minecraft/server/management/LowerStringMap=CL_00001488 net/minecraft/server/management/LowerStringMap=CL_00001488
net/minecraft/crash/CrashReportCategory$Entry=CL_00001489 net/minecraft/crash/CrashReportCategory$Entry=CL_00001489
net/minecraft/util/IntHashMap=CL_00001490 net/minecraft/util/IntHashMap=CL_00001490

View File

@ -53,7 +53,7 @@ import cpw.mods.fml.relauncher.FMLRelaunchLog;
public class AccessTransformer implements IClassTransformer public class AccessTransformer implements IClassTransformer
{ {
private static final boolean DEBUG = false; private static final boolean DEBUG = Boolean.parseBoolean(System.getProperty("fml.debugAccessTransformer", "false"));
private class Modifier private class Modifier
{ {
public String name = ""; public String name = "";
@ -124,20 +124,20 @@ public class AccessTransformer implements IClassTransformer
return true; return true;
} }
List<String> parts = Lists.newArrayList(Splitter.on(" ").trimResults().split(line)); List<String> parts = Lists.newArrayList(Splitter.on(" ").trimResults().split(line));
if (parts.size()>2) if (parts.size()>3)
{ {
throw new RuntimeException("Invalid config file line "+ input); throw new RuntimeException("Invalid config file line "+ input);
} }
Modifier m = new Modifier(); Modifier m = new Modifier();
m.setTargetAccess(parts.get(0)); m.setTargetAccess(parts.get(0));
List<String> descriptor = Lists.newArrayList(Splitter.on(".").trimResults().split(parts.get(1)));
if (descriptor.size() == 1) if (parts.size() == 2)
{ {
m.modifyClassVisibility = true; m.modifyClassVisibility = true;
} }
else else
{ {
String nameReference = descriptor.get(1); String nameReference = parts.get(2);
int parenIdx = nameReference.indexOf('('); int parenIdx = nameReference.indexOf('(');
if (parenIdx>0) if (parenIdx>0)
{ {
@ -149,7 +149,9 @@ public class AccessTransformer implements IClassTransformer
m.name = nameReference; m.name = nameReference;
} }
} }
modifiers.put(descriptor.get(0).replace('/', '.'), m); String className = parts.get(1).replace('/', '.');
modifiers.put(className, m);
if (DEBUG) System.out.printf("AT RULE: %s %s %s (type %s)\n", toBinary(m.targetAccess), m.name, m.desc, className);
return true; return true;
} }
}); });
@ -163,15 +165,15 @@ public class AccessTransformer implements IClassTransformer
if (DEBUG) if (DEBUG)
{ {
FMLRelaunchLog.fine("Considering all methods and fields on %s (%s)\n", name, transformedName); FMLRelaunchLog.fine("Considering all methods and fields on %s (%s)\n", transformedName, name);
} }
if (!modifiers.containsKey(name)) { return bytes; } if (!modifiers.containsKey(transformedName)) { return bytes; }
ClassNode classNode = new ClassNode(); ClassNode classNode = new ClassNode();
ClassReader classReader = new ClassReader(bytes); ClassReader classReader = new ClassReader(bytes);
classReader.accept(classNode, 0); classReader.accept(classNode, 0);
Collection<Modifier> mods = modifiers.get(name); Collection<Modifier> mods = modifiers.get(transformedName);
for (Modifier m : mods) for (Modifier m : mods)
{ {
if (m.modifyClassVisibility) if (m.modifyClassVisibility)

View File

@ -20,11 +20,12 @@ public class FMLDeobfTweaker implements ITweaker {
@Override @Override
public void injectIntoClassLoader(LaunchClassLoader classLoader) public void injectIntoClassLoader(LaunchClassLoader classLoader)
{ {
// Deobfuscation transformer, always last // Deobfuscation transformer, always last, and the access transformer tweaker as well
if (!(Boolean)Launch.blackboard.get("fml.deobfuscatedEnvironment")) if (!(Boolean)Launch.blackboard.get("fml.deobfuscatedEnvironment"))
{ {
classLoader.registerTransformer("cpw.mods.fml.common.asm.transformers.DeobfuscationTransformer"); classLoader.registerTransformer("cpw.mods.fml.common.asm.transformers.DeobfuscationTransformer");
} }
classLoader.registerTransformer("cpw.mods.fml.common.asm.transformers.AccessTransformer");
try try
{ {
FMLRelaunchLog.fine("Validating minecraft"); FMLRelaunchLog.fine("Validating minecraft");

View File

@ -20,7 +20,6 @@ public class FMLCorePlugin implements IFMLLoadingPlugin
public String[] getASMTransformerClass() public String[] getASMTransformerClass()
{ {
return new String[] { return new String[] {
"cpw.mods.fml.common.asm.transformers.AccessTransformer",
"cpw.mods.fml.common.asm.transformers.MarkerTransformer", "cpw.mods.fml.common.asm.transformers.MarkerTransformer",
"cpw.mods.fml.common.asm.transformers.SideTransformer", "cpw.mods.fml.common.asm.transformers.SideTransformer",
}; };

View File

@ -1,34 +1,34 @@
#Main FML Access Transformer configuration file #Main FML Access Transformer configuration file
# TileEntity addMapping # TileEntity addMapping
public net.minecraft.tileentity.TileEntity.func_145826_a(Ljava/lang/Class;Ljava/lang/String;)V public net.minecraft.tileentity.TileEntity func_145826_a(Ljava/lang/Class;Ljava/lang/String;)V
# EntityList addMappings # EntityList addMappings
public net.minecraft.entity.EntityList.func_75618_a(Ljava/lang/Class;Ljava/lang/String;I)V public net.minecraft.entity.EntityList func_75618_a(Ljava/lang/Class;Ljava/lang/String;I)V
public net.minecraft.entity.EntityList.func_75614_a(Ljava/lang/Class;Ljava/lang/String;III)V public net.minecraft.entity.EntityList func_75614_a(Ljava/lang/Class;Ljava/lang/String;III)V
public net.minecraft.entity.EntityList.field_75625_b #nameToClassMap public net.minecraft.entity.EntityList field_75625_b #nameToClassMap
public net.minecraft.entity.EntityList.field_75626_c #classToNameMap public net.minecraft.entity.EntityList field_75626_c #classToNameMap
public net.minecraft.entity.EntityList.field_75623_d #idToClassMap public net.minecraft.entity.EntityList field_75623_d #idToClassMap
## RenderEngine ## RenderEngine
##public bba.h #FD:RenderEngine/field_78367_h #textureList # -- MISSING MAPPING # -- MISSING MAPPING ##public bba.h #FD:RenderEngine/field_78367_h #textureList # -- MISSING MAPPING # -- MISSING MAPPING
##public bge.g #FD:RenderEngine/field_78366_k #texturePack # -- MISSING MAPPING ##public bge.g #FD:RenderEngine/field_78366_k #texturePack # -- MISSING MAPPING
## RenderManager ## RenderManager
public net.minecraft.client.renderer.entity.RenderManager/field_78729_o #renderers public net.minecraft.client.renderer.entity.RenderManager field_78729_o #renderers
## RenderBlocks - everything ## RenderBlocks - everything
#public bfr.* #FD:RenderBlocks/* #public bfr.* #FD:RenderBlocks/*
#public bfr.*() #MD:RenderBlocks/* #public bfr.*() #MD:RenderBlocks/*
##RenderPlayer ##RenderPlayer
##public-f bht.h #FD:RenderPlayer/field_77110_j #armorlist # -- MISSING MAPPING ##public-f bht.h #FD:RenderPlayer/field_77110_j #armorlist # -- MISSING MAPPING
##RenderBiped ##RenderBiped
public-f net.minecraft.client.renderer.entity.RenderBiped.field_82424_k #armorlist public-f net.minecraft.client.renderer.entity.RenderBiped field_82424_k #armorlist
##StringTranslate ##StringTranslate
##public bp.b #FD:StringTranslate/field_74815_b # -- MISSING MAPPING ##public bp.b #FD:StringTranslate/field_74815_b # -- MISSING MAPPING
##public bp.e #FD:StringTranslate/field_74813_d # -- MISSING MAPPING ##public bp.e #FD:StringTranslate/field_74813_d # -- MISSING MAPPING
## TileEntityRendererDispatcher ## TileEntityRendererDispatcher
public net.minecraft.client.renderer.tileentity.TileEntityRendererDispatcher.field_147559_m public net.minecraft.client.renderer.tileentity.TileEntityRendererDispatcher field_147559_m
## CraftingManager - make the add recipe methods public ## CraftingManager - make the add recipe methods public
public net.minecraft.item.crafting.CraftingManager.func_92103_a(Lnet.minecraft.item.ItemStack;[Ljava/lang/Object;)Lnet.minecraft.item.crafting.ShapedRecipes; public net.minecraft.item.crafting.CraftingManager func_92103_a(Lnet.minecraft.item.ItemStack;[Ljava/lang/Object;)Lnet.minecraft.item.crafting.ShapedRecipes;
public net.minecraft.item.crafting.CraftingManager.func_77596_b(Lnet.minecraft.item.ItemStack;[Ljava/lang/Object;)V public net.minecraft.item.crafting.CraftingManager func_77596_b(Lnet.minecraft.item.ItemStack;[Ljava/lang/Object;)V
## WeightedRandomItem ## WeightedRandomItem
public net.minecraft.util.WeightedRandom$Item.field_76292_a #probability public net.minecraft.util.WeightedRandom$Item field_76292_a #probability
## ItemStack ## ItemStack
##public+f tv.c #FD:ItemStack/field_77993_c #itemId ##public+f tv.c #FD:ItemStack/field_77993_c #itemId
## StatBase ## StatBase
@ -37,8 +37,8 @@ public net.minecraft.util.WeightedRandom$Item.field_76292_a #probability
#public jy.a(Ljy;Z)Z #MD:NetLoginHandler/func_72531_a #'complete connection' #public jy.a(Ljy;Z)Z #MD:NetLoginHandler/func_72531_a #'complete connection'
#public jy.g #FD:NetLoginHandler/field_72543_h #userName #public jy.g #FD:NetLoginHandler/field_72543_h #userName
## EntityPlayerMP getNextWindowId ## EntityPlayerMP getNextWindowId
public net.minecraft.entity.player.EntityPlayerMP.func_71117_bO()V public net.minecraft.entity.player.EntityPlayerMP func_71117_bO()V
public net.minecraft.entity.player.EntityPlayerMP.field_71139_cq public net.minecraft.entity.player.EntityPlayerMP field_71139_cq
## EntityAITaskEntry ## EntityAITaskEntry
#public pu #CL:EntityAITaskEntry #public pu #CL:EntityAITaskEntry
## EntityAITasks ## EntityAITasks
@ -65,17 +65,17 @@ public net.minecraft.entity.player.EntityPlayerMP.field_71139_cq
## StructureStart ## StructureStart
#public aiv.a #FD:StructureStart/field_75075_a #public aiv.a #FD:StructureStart/field_75075_a
## EntityVillager - minmax lists ## EntityVillager - minmax lists
public net.minecraft.entity.passive.EntityVillager.func_146091_a(Lnet/minecraft/village/MerchantRecipeList;Lnet/minecraft/item/Item;Ljava/util/Random;F)V # buy public net.minecraft.entity.passive.EntityVillager func_146091_a(Lnet/minecraft/village/MerchantRecipeList;Lnet/minecraft/item/Item;Ljava/util/Random;F)V # buy
public net.minecraft.entity.passive.EntityVillager.func_146089_b(Lnet/minecraft/village/MerchantRecipeList;Lnet/minecraft/item/Item;Ljava/util/Random;F)V # sell public net.minecraft.entity.passive.EntityVillager func_146089_b(Lnet/minecraft/village/MerchantRecipeList;Lnet/minecraft/item/Item;Ljava/util/Random;F)V # sell
public net.minecraft.entity.passive.EntityVillager.field_70958_bB public net.minecraft.entity.passive.EntityVillager field_70958_bB
public net.minecraft.entity.passive.EntityVillager.field_70960_bC public net.minecraft.entity.passive.EntityVillager field_70960_bC
## GuiButtonMerchant ## GuiButtonMerchant
#public axx #CL:GuiButtonMerchant #public axx #CL:GuiButtonMerchant
# Minecraft # Minecraft
#public atv.D #FD:Minecraft/field_71425_J #running #public atv.D #FD:Minecraft/field_71425_J #running
public net.minecraft.client.Minecraft.field_71446_o # textureManager public net.minecraft.client.Minecraft field_71446_o # textureManager
protected net.minecraft.util.ObjectIntIdentityMap.field_148749_a # internal map protected net.minecraft.util.ObjectIntIdentityMap field_148749_a # internal map
protected net.minecraft.util.ObjectIntIdentityMap.field_148748_b # internal index list protected net.minecraft.util.ObjectIntIdentityMap field_148748_b # internal index list
protected-f net.minecraft.util.RegistryNamespaced.field_148759_a # identitymap protected-f net.minecraft.util.RegistryNamespaced field_148759_a # identitymap
protected net.minecraft.util.RegistryNamespaced.func_148755_c(Ljava/lang/String;)Ljava/lang/String; # prefix if necessary protected net.minecraft.util.RegistryNamespaced func_148755_c(Ljava/lang/String;)Ljava/lang/String; # prefix if necessary