2015-05-14 05:38:03 +00:00
|
|
|
package kcauldron;
|
|
|
|
|
2015-06-27 09:32:21 +00:00
|
|
|
import static org.objectweb.asm.Opcodes.ALOAD;
|
|
|
|
import static org.objectweb.asm.Opcodes.ARETURN;
|
|
|
|
import static org.objectweb.asm.Opcodes.GETFIELD;
|
2015-06-14 12:50:18 +00:00
|
|
|
|
2015-05-28 10:26:48 +00:00
|
|
|
import org.apache.logging.log4j.Level;
|
|
|
|
import org.objectweb.asm.tree.FieldInsnNode;
|
|
|
|
import org.objectweb.asm.tree.InsnList;
|
|
|
|
import org.objectweb.asm.tree.InsnNode;
|
|
|
|
import org.objectweb.asm.tree.IntInsnNode;
|
2015-05-14 05:38:03 +00:00
|
|
|
|
2015-05-28 10:26:48 +00:00
|
|
|
import pw.prok.imagine.asm.ImagineASM;
|
|
|
|
import pw.prok.imagine.asm.Transformer;
|
|
|
|
import cpw.mods.fml.common.FMLLog;
|
2015-05-14 05:38:03 +00:00
|
|
|
|
2015-05-28 10:26:48 +00:00
|
|
|
@Transformer.RegisterTransformer
|
|
|
|
public class KCauldronClassTransformer implements Transformer {
|
2015-06-27 09:32:21 +00:00
|
|
|
@Override
|
|
|
|
public void transform(final ImagineASM asm) {
|
2015-06-27 12:47:27 +00:00
|
|
|
if (asm.is("climateControl.utils.ChunkGeneratorExtractor")) {
|
|
|
|
boolean undergroundBiomesInstalled = false;
|
|
|
|
try {
|
|
|
|
Class.forName("exterminatorJeff.undergroundBiomes.worldGen.ChunkProviderWrapper");
|
|
|
|
undergroundBiomesInstalled = true;
|
|
|
|
} catch (Exception ignored) {
|
|
|
|
}
|
|
|
|
if (!undergroundBiomesInstalled) {
|
|
|
|
FMLLog.log(Level.INFO, "KCauldron: Patching " + asm.getActualName() + " for compatibility with Climate Control");
|
|
|
|
extractFrom(asm, asm.method("extractFrom",
|
|
|
|
"(Lnet/minecraft/world/WorldServer;)Lnet/minecraft/world/chunk/IChunkProvider;").instructions());
|
|
|
|
}
|
|
|
|
}
|
2015-06-27 09:32:21 +00:00
|
|
|
}
|
2015-05-28 10:26:48 +00:00
|
|
|
|
2015-06-27 09:32:21 +00:00
|
|
|
public void extractFrom(ImagineASM asm, InsnList list) {
|
2015-06-27 12:47:27 +00:00
|
|
|
//Pair<String, String> fieldChunkProvider = asm.field("net/minecraft/world/World", "chunkProvider");
|
|
|
|
list.clear();
|
|
|
|
list.add(new IntInsnNode(ALOAD, 1));
|
|
|
|
list.add(new FieldInsnNode(GETFIELD, "ahb", "v", "Lapu;"));
|
|
|
|
list.add(new InsnNode(ARETURN));
|
2015-06-27 09:32:21 +00:00
|
|
|
}
|
2015-05-14 05:38:03 +00:00
|
|
|
}
|