package coloredlightscore.src.asm.transformer;
import coloredlightscore.src.asm.transformer.core.HelperMethodTransformer;
import coloredlightscore.src.asm.transformer.core.NameMapper;
import org.objectweb.asm.tree.ClassNode;
import org.objectweb.asm.tree.MethodNode;
public class TransformWorld extends HelperMethodTransformer {
// These methods will be replaced by statics in CLWorldHelper
String methodsToReplace[] = {
"getBlockLightValue_do (IIIZ)I",
"getLightBrightnessForSkyBlocks (IIII)I",
"getLightBrightness (III)F",
"computeLightValue (IIILnet/minecraft/world/EnumSkyBlock;)I",
"updateLightByType (Lnet/minecraft/world/EnumSkyBlock;III)Z"
};
public TransformWorld() {
// Inform HelperMethodTransformer which class we are interested in
super("net.minecraft.world.World");
}
@Override
protected Class<?> getHelperClass() {
return coloredlightscore.src.helper.CLWorldHelper.class;
}
@Override
protected boolean transforms(ClassNode classNode, MethodNode methodNode) {
//return true; // Update any reference to lightUpdateBlockList
for (String name : methodsToReplace) {
if (NameMapper.getInstance().isMethod(methodNode, super.className, name))
return true;
}
return false;
}
@Override
protected boolean transform(ClassNode classNode, MethodNode methodNode) {
for (String name : methodsToReplace) {
if (NameMapper.getInstance().isMethod(methodNode, super.className, name)) {
return redefineMethod(classNode, methodNode, name);
}
}
return false;
}
}