Most PIC16 and PIC18 devices have very similar I2C peripheral hardware.
this include PIC16F1454 and PIC18F47Q10, both with MSSP peripheral module.
Some PIC microcontrollers have 1 MSSP module, while other have 2 of those.
When there is more than 1 hardware module in the device, then module index is in function and file names,
thus the difference between 'i2c_master.h' and 'i2c1_master.h'.
I2CSIMPLE in Foundation Services is Master code. I think it will Not help you with Slave code.
From PIC10 / PIC12 / PIC16 / PIC18 MCUs Device Library v1.78 there have been a big rewrite of I2C code going on,
among other to be more indepent of Foundation Services.
I do not know what the state is with MCC core v5.0.2
While MCC may be good for setting up Pins and PPS, I2C driver code have always been shaky.
Here is a thread which discuss many of the same problems:https://www.microchip.com/forums/FindPost/1125901
at the end of the thread, message #26 there is a hint for how to get a Slave code example.