Open AbrarSyed opened 10 years ago
? But you said SS works
Yes, it works when it shouldn't. Causing people to have issues using their AT at runtime when it works at dev.
Basically, the issue is an inconsistency in behavior; there is no good reason for a file to work in the development environment when it fails to do so at runtime. This leads to needless hours - or in my case, WEEKS - spent searching for other bugs.
Our code is basically just a copy pasta from FML, so this must be something that was fixed in FML. Should be as trivial as checking there are 3 parts to the AT.
OR
FML should be more permissive like we are since its a correctable error :p
Don't care. You might have been a copy some years ago, you're probably not now @md-5. The period was removed. No, I'm not gonna add it back, it's a pain enough as it is handling parsing that file.
Note: As far as I can remember FML has never supported a . there. We have always used the space to split the different segments as it makes it really easy to determine if the modifier is targeting a class {no spaces} field {one space} or method {two spaces}
SS is more permissive in the format, it should not be.
@AbrarSyed can I please have some more sample ATs using method descriptors too. Not sure where they are in the FML repos
Here are some (in the incorrect dot format).
protected net.minecraft.client.gui.inventory.GuiContainer.func_146977_a(Lnet/minecraft/inventory/Slot;)V #drawSlotInventory
public net.minecraft.client.audio.SoundEventAccessor.
taken from the forge AT, these lines work in both dev and runtime.
fields
public net.minecraft.world.gen.structure.StructureMineshaftPieces field_78818_a
public net.minecraft.world.gen.structure.ComponentScatteredFeaturePieces$DesertPyramid field_74941_i
public net.minecraft.world.gen.structure.ComponentScatteredFeaturePieces$JunglePyramid field_74943_l
public net.minecraft.world.gen.structure.ComponentScatteredFeaturePieces$JunglePyramid field_74944_m
methods
public net.minecraft.item.Item func_77656_e(I)Lnet.minecraft.item.Item; #setMaxDamage
public-f net.minecraft.item.Item func_77650_f(Lnet.minecraft.item.ItemStack;)Lnet.minecraft.util.IIcon; #getIcon is Final for unknown reason
public net.minecraft.item.Item func_77627_a(Z)Lnet.minecraft.item.Item; #setHasSubtypes
public net.minecraft.item.Item func_77631_c(Ljava.lang.String;)Lnet.minecraft.item.Item; #setPotionEffect
public net.minecraft.item.Item func_111206_d(Ljava.lang.String;)Lnet.minecraft.item.Item; #setTextureName
This works with the AT loader in SS, but does not work in FML at runtime.
protected net.minecraft.entity.monster.EntityCreeper.field_70833_d #timeSinceIgnited
This is what FML loads, and this is how its supposed to be.
protected net.minecraft.entity.monster.EntityCreeper field_70833_d #timeSinceIgnited
The only difference is that the period between the className and the field/method name has been changed to a space.