What Block Change Events Should I Listen Into To Do What I Need?

object SitCommand : TabExecutor {

    const val COMMAND = "sit"

    override fun onCommand(sender: CommandSender, command: Command, label: String, args: Array<out String>): Boolean {

        if (sender !is Player) {

            sender.sendMessage(COMMAND.onlyPlayersCanUseCommand())

            return true

        }

        playerToArmorStand[sender.uniqueId]?.let {

            sender.sendMessage("${ChatColor.DARK_RED}You're already sitting.")

            return true

        }

        if (sender.isFlying) {

            sender.sendMessage("${ChatColor.DARK_RED}You can't sit down while flying.")

            return true

        }

        if (sender.isSneaking) {

            sender.sendMessage("${ChatColor.DARK_RED}You can't sit down while sneaking.")

            return true

        }

        if (sender.isInWaterOrBubbleColumn) {

            sender.sendMessage("${ChatColor.DARK_RED}You can't sit down while in water.")

            return true

        }

        if (sender.isInLava) {

            sender.sendMessage("${ChatColor.DARK_RED}You can't sit down while in lava.")

            return true

        }

        if(!sender.location.subtract(0.0, 0.1, 0.0).block.type.isSolid) {

            sender.sendMessage("${ChatColor.DARK_RED}You must be on the ground to sit down.")

            return true

        }

        if (sender.location.add(0.0, 0.5, 0.0).block.type.isOccluding || sender.eyeLocation.block.type.isOccluding) {

            sender.sendMessage("${ChatColor.DARK_RED}You can't sit while inside of a block.")

            return true

        }

        ArmorStandMethods.playerSitOnFloor(sender)

        return true

    }

    override fun onTabComplete(sender: CommandSender, command: Command, alias: String, args: Array<out String>): MutableList<String> {

        return Collections.emptyList()

    }

}

I’m using this code for a /sit command to allow the player to sit down and I have a huge number of checks but the thing is those checks are only checked when executing the command meaning if someone dumped lava on something who was sitting it wouldn’t automatically make them stand up. So my question is: Is there an event for all block changes in general I can use?