Fast Block Place Mod 1.8.9 Apr 2026

@Override public String getModContainerClass() { return null; }

private byte[] patchPlayerControllerMP(byte[] classBytes) { ClassReader cr = new ClassReader(classBytes); ClassWriter cw = new ClassWriter(cr, ClassWriter.COMPUTE_MAXS); ClassVisitor cv = new ClassVisitor(Opcodes.ASM4, cw) { @Override public MethodVisitor visitMethod(int access, String name, String desc, String signature, String[] exceptions) { MethodVisitor mv = super.visitMethod(access, name, desc, signature, exceptions); if (name.equals("clickBlock") && desc.equals("(Lnet/minecraft/util/BlockPos;Lnet/minecraft/util/EnumFacing;)Z")) { LOGGER.info("Found clickBlock method – removing block hit delay"); return new PatchClickBlock(mv); } return mv; } }; cr.accept(cv, 0); return cw.toByteArray(); }

@IFMLLoadingPlugin.MCVersion("1.8.9") public class Plugin implements IFMLLoadingPlugin { @Override public String[] getASMTransformerClass() { return new String[]{"com.example.fastblockplace.Transformer"}; } fast block place mod 1.8.9

private static class PatchClickBlock extends MethodVisitor { public PatchClickBlock(MethodVisitor mv) { super(Opcodes.ASM4, mv); }

dependencies { compile 'org.ow2.asm:asm-debug-all:5.0.3' } Create src/main/resources/META-INF/fastblockplace_at.cfg : ClassWriter cw = new ClassWriter(cr

jar { manifest { attributes( 'FMLCorePlugin': 'com.example.fastblockplace.Plugin', 'FMLCorePluginContainsFMLMod': 'true', 'FMLAT': 'fastblockplace_at.cfg' ) } }

minecraft { version = "1.8.9-11.15.1.2318-1.8.9" runDir = "run" mappings = "stable_20" } ClassVisitor cv = new ClassVisitor(Opcodes.ASM4

package com.example.fastblockplace; import net.minecraft.launchwrapper.IClassTransformer; import org.objectweb.asm.*;

private static final Logger LOGGER = Logger.getLogger("FastBlockPlace");

public class Transformer implements IClassTransformer {

@Override public void injectData(Map<String, Object> data) {}