Hello all,
I've checked out:
http://www.minecraftforge.net/forum/index.php/topic,21625.0.html
The block I need to replace is the water with my own forge finite fluid - I strongly dislike the minecraft water physics, and plan to make water appear on the ground when it rains, soak in to form aquifers and leak into all your caves from dirt/mud blocks, etc. It's going to break a ton of things we all so dearly love (like infinite water), but it'll be a whole lot more realistic.
I have the physics aspect working really well. It's not even laggy (gasp!).
Except when I replace all the water blocks on the prechunk initialization event bit, it sets all those water blocks to be updated. This isn't so bad - unless you are anywhere near large bodies of water such as the ocean. It then proceeds to go through every single block and calculate the new physics, which tell it to do nothing and stop looking for updates. This also can be a disaster if the block change triggers a sand/gravel fall, at which point the ocean will gradually fill in the caves 1/8 of a block at a time. One wouldn't be the end of the day, but many. Gross.
I'm looking for a way to update the blocks and not get the tick update called. That, or potentially a way to remove scheduled block updates (such as right after the block was changed!). That would actually be really useful in the scenario that you have a long delay, but then things change and you want to replace it with a short delay. Finally, another option is to intercept the chunk generation and blanket replace the water blocks with my own before it gets set to the world. I'm currently unfamiliar with Java reflection. I have not delved into world generation at all. Took me long enough to realize classes a==b was false when a and b had the same values... I'm still trying to wrap my head around the basics of Java, which I'm learning with this project (I do know c++ well).
I just tried updating the original water blocks as they are used. That was a *slight* disaster when it came to the interactions, trying to get enough converted to do the job, but not have it spread everywhere and clog the system. Ended up with a fair amount of cycling tick loops. I'll still fart around with that,but life would be much easier if I didn't have to deal with minecraft water physics/expectations destroying my own.
Thanks in advance for any help.