From what I'm reading, I don't think setPosition(0) works in absolute mode. You should instead getPulseWidthPosition() when you hit the limit switch and return to that absolute position.
If you want to use setPosition you could instead use the magnetic encoder in quadrature mode.
The whole point of absolute mode is that you don't have to calibrate on boot-up.
Also, if you're using the CTRE magnetic encoder, you should select the feedback device with one of the following options.
Code:
shooterFlap.setFeedbackDevice(FeedbackDevice.CTREMagEncoder_Absolute);
or
Code:
shooterFlap.setFeedbackDevice(FeedbackDevice.CTREMagEncoder_Quadrature);