allow null player in anvil; generalize ItemFrameActions