package carpetextra.mixins;

import carpetextra.CarpetExtraSettings;
import carpetextra.utils.WoodDelayMultipliers;
import net.minecraft.block.AbstractButtonBlock;
import net.minecraft.block.BlockState;
import net.minecraft.util.math.BlockPos;
import net.minecraft.world.World;
import net.minecraft.world.WorldView;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Redirect;

@Mixin(AbstractButtonBlock.class)
public class AbstractButtonBlock_variableWoodMixin
{
    @Redirect(method = "method_21845", at = @At(
            value = "INVOKE",
            target = "Lnet/minecraft/block/AbstractButtonBlock;getTickRate(Lnet/minecraft/world/WorldView;)I"
    ))
    private int getCustomTickRate(AbstractButtonBlock abstractButtonBlock, WorldView viewableWorld_1,
                                  BlockState blockState_1, World world_1, BlockPos blockPos_1)
    {
        if (!CarpetExtraSettings.variableWoodDelays)
        {
            return abstractButtonBlock.getTickRate(viewableWorld_1);
        }
        return WoodDelayMultipliers.getForDelay(blockState_1.getBlock(), abstractButtonBlock.getTickRate(viewableWorld_1));
    }
}