Fast Block Place Mod 1.8.9 💯 Complete

Before installing:


package com.yourname.fastplace;

import net.minecraftforge.common.config.Configuration; import net.minecraftforge.fml.common.event.FMLPreInitializationEvent; import java.io.File;

public class Config public static boolean fastPlaceEnabled = true; public static boolean fastBreakEnabled = false;

public static void load(FMLPreInitializationEvent event) 
    File configFile = new File(event.getModConfigurationDirectory(), "fastplace.cfg");
    Configuration config = new Configuration(configFile);
    config.load();
fastPlaceEnabled = config.getBoolean("FastPlace", "general", true, "Remove right-click delay");
    fastBreakEnabled = config.getBoolean("FastBreak", "general", false, "Remove left-click delay");
config.save();

Update the tick handler to check Config.fastPlaceEnabled.


For a production mod, use Mixins (SpongePowered) to directly modify: fast block place mod 1.8.9

@Mixin(Minecraft.class)
public class MixinMinecraft 
    @Redirect(method = "runTick", at = @At(value = "FIELD", target = "Lnet/minecraft/client/Minecraft;rightClickDelayTimer:I"))
    public int onRightClickDelay(Minecraft mc, int value) 
        if (Config.fastPlaceEnabled) return 0;
        return value;

But Mixins require more setup and are not natively in Forge 1.8.9 (requires UniInjector or MixinBooter). The event-based method above is simpler.


package com.yourname.fastplace;

import net.minecraft.client.Minecraft; import net.minecraft.network.play.client.C08PacketPlayerBlockPlacement; import net.minecraft.util.BlockPos; import net.minecraft.util.EnumFacing; import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; import net.minecraftforge.fml.common.gameevent.TickEvent;

public class PacketPlaceManager

private boolean placing = false;
private int lastSlot = -1;
@SubscribeEvent
public void onTick(TickEvent.ClientTickEvent event)  mc.objectMouseOver == null) return;
// Check if right-click is held down
    if (mc.gameSettings.keyBindUseItem.isKeyDown()) 
        if (!placing) 
            placing = true;
            // Force delay to zero again
            mc.rightClickDelayTimer = 0;
// Send placement packet manually
        if (mc.objectMouseOver.typeOfHit == net.minecraft.util.MovingObjectPosition.MovingObjectType.BLOCK)  mc.playerController.isInCreativeMode()) 
                C08PacketPlayerBlockPlacement packet = new C08PacketPlayerBlockPlacement(pos, side, 
                    mc.thePlayer.getHeldItem(), 0.5f, 0.5f, 0.5f);
                mc.getNetHandler().addToSendQueue(packet);
// Also sync item stack
                if (lastSlot != mc.thePlayer.inventory.currentItem) 
                    lastSlot = mc.thePlayer.inventory.currentItem;
else 
        placing = false;

Register this instead of the simple tick handler for better server compatibility. Before installing: