/// <summary>
        /// Gets the current operation of the machine.
        /// Adapted from https://github.com/Digus/StardewValleyMods/blob/master/PFMAutomate/Automate/CustomProducerMachine.cs
        /// </summary>
        /// <returns></returns>
        public MachineState GetState()
        {
            if (Machine.heldObject.Value != null && Machine.minutesUntilReady <= 0 && Machine.readyForHarvest.Value)
            {
                return(MachineState.Done);
            }

            MassProductionMachineDefinition mpm;
            ProducerConfig producerConfig = GetCurrentConfig(out mpm);

            if (producerConfig != null)
            {
                if (!producerConfig.CheckWeatherCondition() || !producerConfig.CheckSeasonCondition() || !producerConfig.CheckLocationCondition(Location) ||
                    !producerConfig.CheckCurrentTimeCondition())
                {
                    return(MachineState.Disabled);
                }
                if (producerConfig.NoInputStartMode != null)
                {
                    //A no input machine is considered processing even while empty.
                    return(MachineState.Processing);
                }
            }
            else if (StaticValues.SUPPORTED_VANILLA_MACHINES.ContainsKey(Machine.name) &&
                     StaticValues.SUPPORTED_VANILLA_MACHINES[Machine.name] == InputRequirement.NoInputsOnly)
            {
                //A no input machine is considered processing even while empty.
                return(MachineState.Processing);
            }

            if (Machine.heldObject.Value == null)
            {
                return(MachineState.Empty);
            }

            return(MachineState.Processing);
        }