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$DamageIterator=CL_00000109
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/command/server/CommandAchievement=CL_00000113
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/GuiButtonLink=CL_00000673
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/GuiOptionsRowList=CL_00000677
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/HttpUtil=CL_00001485
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/crash/CrashReportCategory$Entry=CL_00001489
net/minecraft/util/IntHashMap=CL_00001490

View File

@ -53,7 +53,7 @@ import cpw.mods.fml.relauncher.FMLRelaunchLog;
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
{
public String name = "";
@ -124,20 +124,20 @@ public class AccessTransformer implements IClassTransformer
return true;
}
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);
}
Modifier m = new Modifier();
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;
}
else
{
String nameReference = descriptor.get(1);
String nameReference = parts.get(2);
int parenIdx = nameReference.indexOf('(');
if (parenIdx>0)
{
@ -149,7 +149,9 @@ public class AccessTransformer implements IClassTransformer
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;
}
});
@ -163,15 +165,15 @@ public class AccessTransformer implements IClassTransformer
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();
ClassReader classReader = new ClassReader(bytes);
classReader.accept(classNode, 0);
Collection<Modifier> mods = modifiers.get(name);
Collection<Modifier> mods = modifiers.get(transformedName);
for (Modifier m : mods)
{
if (m.modifyClassVisibility)

View File

@ -20,11 +20,12 @@ public class FMLDeobfTweaker implements ITweaker {
@Override
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"))
{
classLoader.registerTransformer("cpw.mods.fml.common.asm.transformers.DeobfuscationTransformer");
}
classLoader.registerTransformer("cpw.mods.fml.common.asm.transformers.AccessTransformer");
try
{
FMLRelaunchLog.fine("Validating minecraft");

View File

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

View File

@ -1,34 +1,34 @@
#Main FML Access Transformer configuration file
# 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
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.field_75625_b #nameToClassMap
public net.minecraft.entity.EntityList.field_75626_c #classToNameMap
public net.minecraft.entity.EntityList.field_75623_d #idToClassMap
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 field_75625_b #nameToClassMap
public net.minecraft.entity.EntityList field_75626_c #classToNameMap
public net.minecraft.entity.EntityList field_75623_d #idToClassMap
## RenderEngine
##public bba.h #FD:RenderEngine/field_78367_h #textureList # -- MISSING MAPPING # -- MISSING MAPPING
##public bge.g #FD:RenderEngine/field_78366_k #texturePack # -- MISSING MAPPING
## 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
#public bfr.* #FD:RenderBlocks/*
#public bfr.*() #MD:RenderBlocks/*
##RenderPlayer
##public-f bht.h #FD:RenderPlayer/field_77110_j #armorlist # -- MISSING MAPPING
##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
##public bp.b #FD:StringTranslate/field_74815_b # -- MISSING MAPPING
##public bp.e #FD:StringTranslate/field_74813_d # -- MISSING MAPPING
## 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
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_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
## WeightedRandomItem
public net.minecraft.util.WeightedRandom$Item.field_76292_a #probability
public net.minecraft.util.WeightedRandom$Item field_76292_a #probability
## ItemStack
##public+f tv.c #FD:ItemStack/field_77993_c #itemId
## 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.g #FD:NetLoginHandler/field_72543_h #userName
## EntityPlayerMP getNextWindowId
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 func_71117_bO()V
public net.minecraft.entity.player.EntityPlayerMP field_71139_cq
## EntityAITaskEntry
#public pu #CL:EntityAITaskEntry
## EntityAITasks
@ -65,17 +65,17 @@ public net.minecraft.entity.player.EntityPlayerMP.field_71139_cq
## StructureStart
#public aiv.a #FD:StructureStart/field_75075_a
## 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_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_70960_bC
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 field_70958_bB
public net.minecraft.entity.passive.EntityVillager field_70960_bC
## GuiButtonMerchant
#public axx #CL:GuiButtonMerchant
# Minecraft
#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_148748_b # internal index list
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.ObjectIntIdentityMap field_148749_a # internal map
protected net.minecraft.util.ObjectIntIdentityMap field_148748_b # internal index list
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