Fast Block Place Mod 1.8.9 〈CERTIFIED × WORKFLOW〉
public class Transformer implements IClassTransformer {
@Override public byte[] transform(String name, String transformedName, byte[] basicClass) { if (basicClass == null) return null; if (transformedName.equals("net.minecraft.client.multiplayer.PlayerControllerMP")) { LOGGER.info("Patching PlayerControllerMP for fast block place"); return patchPlayerControllerMP(basicClass); } return basicClass; }
@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
@Mod(modid = FastBlockPlaceMod.MODID, version = FastBlockPlaceMod.VERSION, clientSideOnly = true) public class FastBlockPlaceMod { public static final String MODID = "fastblockplace"; public static final String VERSION = "1.0"; public static Logger logger;
@Override public void visitVarInsn(int opcode, int var) { // Remove the line: this.blockHitDelay = 4; if (opcode == Opcodes.BIPUSH && var == 4) { // Skip the bipush 4 super.visitInsn(Opcodes.POP); // Remove the push LOGGER.info("Patched: removed blockHitDelay = 4"); return; } super.visitVarInsn(opcode, var); } } return basicClass
private static final Logger LOGGER = Logger.getLogger("FastBlockPlace");
package com.example.fastblockplace; import net.minecraft.launchwrapper.IClassTransformer; import org.objectweb.asm.*; } @Mod(modid = FastBlockPlaceMod.MODID
@Mod.EventHandler public void init(FMLInitializationEvent event) { logger.info("FastBlockPlace Mod enabled – block placing delay removed"); } } This patches net.minecraft.client.multiplayer.PlayerControllerMP method clickBlock to remove the 4 tick cooldown ( blockHitDelay ).
@Override public String getSetupClass() { return null; }
@Override public String getModContainerClass() { return null; }