Hey guys, just wanted to give a bit of an update as well as say that I appreciate both of your help.
I spent the last couple of days messing with the LivingUpdateEvent to no avail. I was having issues making it so that the player would continue to levitate even if it was more than one block above the levitation block.
I saw DavidM's reply and I spent a few hours today messing around with tile entities and just generally trying to get familiar with what I may need and I got it to work! I have a quick question about tile entities and performance though. Since I started playing MC I have always heard that tile entities are lag machines after a certain point. Since my tile entity relies on "tick updates" (may not be proper term) should I be worried about performance? I plan to implement a block for each potion effect so I could see users potentially using many these blocks to make, say, healing rooms with a bunch of regen blocks, or long highways with speed blocks, etc.
I also have another question, I'm not sure If I should make a separate post for this but how would I go about stopping the effect once it reaches a non air block above? That way it won't work through ceilings in builds. Right now I'm using a for loop to check from one above the tile entities y position up until world height but that seems disastrous. Is there some kind of ray I could use to check if it hits a solid block? Sorry if these questions seem simple I'm still getting used to the forge api and minecrafts internals.
Also, thanks again to both of you. I now have a working block as well as knowing about forge events that may be useful later on.