First off this is not going to work in your block class
TileEntitySolarGenerator tileEntitySolarGenerator = new TileEntitySolarGenerator();
instead use world.getTileEntity(pos)
Next pass in a World and BlockPos variable into updateFromPlaced() and updateFromNeighbor()
I don't know how man!
"like for items and blocks."
I feel like bashing my head as hard as I can into this keyboard atm.
register(new ResourceLocation(modid, name), EntitySphere.class, "sphere");
Your receiveEnergy is where the energy gets changed.
I thought it might be and did try but that didnt change anything so i thought it must be another way of doing it
There are two other methods I forgot to say getUpdateTag, and handleUpdateTag. Those were recently brought to my attention.
All file names should be lowercase. If you are using 1.11 they have to be in 1.10.2 they do not, but since it is being enforced in 1.11 best to start doing it now. The file it is looking for is ingotcopper not ingotCopper.