public virtual StackEvent Dropoff(IStack stack)
        {
            var dropoff = new StackEvent(World.Environment, TriggerPickup, CancelDrop)
            {
                Stack = stack, Size = stack.Size
            };

            DropoffQueue.AddLast(dropoff);
            TriggerDropoff();
            return(dropoff);
        }
        public virtual BlockEvent Dropoff(IBlock block)
        {
            var dropoff = new BlockEvent(World.Environment, TriggerPickup, CancelDrop)
            {
                Block = block
            };

            DropoffQueue.AddLast(dropoff);
            TriggerDropoff();
            return(dropoff);
        }