REALISTIC FLUIDS OVERHAUL (aka Finite Fluids for Forge 1.7.10) A mod to make Minecraft very slightly less infinite.
THIS MOD IS VERY MUCH IN A WIP STATE. AN UNSUPPORTED RELEASE IS AVAILABLE FOR MC 1.7.10.
Overview
Minecraft is pretty near infinite in many ways. This also applies to fluids. This mod makes these fluids less infinite, and gives them more realistic behaviors. Each block of fluid can contain up to 1000 liters of water (265 gallons), and this is it. If you put a fluid in the air, it will fall down. If you put a fluid on the ground, it will make a puddle. If you make a hole in the bottom of the ocean, it will drain out into the void.
DEVELOPMENT STATUS
This mod is currently a work in progress. There is an early alpha/proof of concept build available for 1.7.10, but this is not supported. I am currently in the process of rewriting the entire mod from the ground up.
Features;
- All vanilla fluids and some mod fluids (such as BC Oil and Fuel)
- Fluid pressure
- Pistons and falling blocks can displace water
- Completely multithreaded
- A command for control over all settings
Currently working on: bug fixing and cleaning code.
SCREENSHOTS AND VIDEOS
Unfortunately I don't have any screenshots (yet. I've just never gotten around to it). However, a guy called PMunch did make a video from one of the earlier alpha/WIP builds, and while this version of the mod was by no means complete, it should give you a good idea of what the mod hopes to achieve.
DOWNLOADS
The mod is currently in a WIP/Proof of concept state. As such, there is no final build just yet.
However, I did build a .jar from the early codebase. This should be considered as an EARLY ALPHA BUILD, and should not be used in any important worlds without backing them up first (it can make permanent world changes that can't be undone).
PLEASE NOTE: This download is early alpha and mostly unsupported. It should kind f work in survival playthroughs, although there may be some issues with other mods.
The mod makes permanent changes to the world, and as such; you should always back up your saves. Furthermore, this is a rough proof of concept and comes with no guarantees of any kind. If it crashes, you are on your own.
Due to my absence for most of this year, Keybounce undertook maintenance of my repository, primarily working on adding compatibility with various other mods, fixing various bugs, and so on. His downloads section can be found here;
@Bijuu Unfortunately I don't think this sort of thing will make it into the vanilla since it is quite a drastic change and removes some of the more famous aspects of water in Minecraft.
On the other hand, I have a few ideas which will hopefully give water some new uses, while retaining many of its old uses (for example, use a pump to fill a tank, then emptying the tank to harvest crops).
@Lava, Sorry, your post didn't show up before :S
When I am done with getting the standard fluids working even better, and have some primitive uses for them (aka buckets that work properly), I will consider it beta-worthy. The biggest problem right now is basically that the bottom of the ocean is filled with holes, and while this doesn't exactly lag the game, it really isn't good when most of your river is at the bottom of a ravine.
Rollback Post to RevisionRollBack
I believe in the Invisible Pink Unicorn, bless her Invisible Pinkness.
UPDATE: It seems like I will be at beta sooner than I thought. The changes to update scheduling and equalizing went so freaking brilliantly... man... It left me speechless.
With the equalization tweaks, oceans can flatten out at incredible speeds, so fast, in fact, that the earlier problem of underwater caves might notactually matter at all (thanks to some changes to the scheduling system; distant chunks simply get updated less often than near ones, and do not get updated at all if the system is under too much load, meaning that the distant deep sea updates simply get skipped if they would cause lag).
Rollback Post to RevisionRollBack
I believe in the Invisible Pink Unicorn, bless her Invisible Pinkness.
Unfortunately they currently only look like whirlpools :'( That is to say, the current points directly to the center. I might look at making it spin, but the calculations will be rather on the extreme side and I don't know whether it will be feasible (since whirlpools are created by inertia [and some friction] as the planet spins, every block will need to conditionally check where it is in the world, calculate an inertia vector, check the vectors of the neighbors, etc. Maybe as a PoC plugin one day, but I doubt it will every be a part of the main package)).
On a different note, I'm looking into using a different threads to perform some of the calculations, long range equalization in particular. Will probably need to rewrite a lot of the back-end stuff, but w/e, experience says that it will imrpove performance significantly, and more importantly; make for a better playing experience as calculations won't delay the server thread.
On a very positive note, undersea cave flooding is mostly solved; I've reduced it enough that I am fairly happy with the end result. One more big milestone crossed off the list
Rollback Post to RevisionRollBack
I believe in the Invisible Pink Unicorn, bless her Invisible Pinkness.
I imagine getting the water working with buckets would also be a similar thing to getting it working with pipes yeah? Like some kind of "wrapper" or "converter"?
I imagine getting the water working with buckets would also be a similar thing to getting it working with pipes yeah? Like some kind of "wrapper" or "converter"?
[Mainly just posting so I can subscribe]
The way I'm planning it, ~my~ buckets and pipes will store a condensed amount of fluid (basically, I'm using 16'000 fluid levels per cell atm, but instead of storing up to 16'000 levels per pipe as a tile entity, I plan on storing 16 levels per pipe in the metadata of the block, where 1 metadata is equal to (maxFluid/16) fluid levels, noting that tile entities should be avoided wherever possible in general lol). I want to make my own pipes because other pipes won't let you spray the water out on the ground and stuff.
For pipe compatibility, I'm not really sure what I will do yet. I will have to look at how the pipes and pumps work in other mods before making a decision, but atm I think I will probably just end up making my own pump that can output fluids into regular pipes, as well as my own pipes which will be able to pump fluid into inventories.
For buckets, I will probably just hook the fill event or something and return a bucket with the damage value indicating the amount of contained water. If I'm really lucky, I might even be able to use the default item health indicator and everything
Update: Finished making everything thread-safe, working under the assumption that arrays are thread safe ~enough~ to not cause problems. Also finished threading the large-area equalization, and even put the equalizer in its own pretty little class and everything
Edit: New feature: Displacement (only from pistons and falling blocks, since anything more would just be a huge pain to deal with), also with extreme sledgehammer hacks;
@1.8 Mmm, it should make life a lot easier. So will +6months of computers getting better. Performance is a massive concern for me, and when you are dealing with hundreds of thousands of blocks at once, a tiny inefficiency in the wrong spot can really slow things down.
On a different note, the threading changes are stable. Now the mod attempts to use the server thread for general stuff, along with one thread for "rapid equalization", one thread for priority updates, and one thread for trivial/distant updates. Four threads of squid destroying power. Unfortunately this will not hugely benefit less monstrous systems (aka 5 year old single core Pentium laptops) running on "tiny" view distance (as a CPU has a finite number of clock cycles, more threads will only help to distribute load and jitter a little bit), but it will work significantly better if you have a few spare cores in your rig.
Rollback Post to RevisionRollBack
I believe in the Invisible Pink Unicorn, bless her Invisible Pinkness.
A mod to make Minecraft very slightly less infinite.
THIS MOD IS VERY MUCH IN A WIP STATE. AN UNSUPPORTED RELEASE IS AVAILABLE FOR MC 1.7.10.
Minecraft is pretty near infinite in many ways. This also applies to fluids. This mod makes these fluids less infinite, and gives them more realistic behaviors. Each block of fluid can contain up to 1000 liters of water (265 gallons), and this is it. If you put a fluid in the air, it will fall down. If you put a fluid on the ground, it will make a puddle. If you make a hole in the bottom of the ocean, it will drain out into the void.
This mod is currently a work in progress. There is an early alpha/proof of concept build available for 1.7.10, but this is not supported. I am currently in the process of rewriting the entire mod from the ground up.
Features;
- All vanilla fluids and some mod fluids (such as BC Oil and Fuel)
- Fluid pressure
- Pistons and falling blocks can displace water
- Completely multithreaded
- A command for control over all settings
Currently working on: bug fixing and cleaning code.
Unfortunately I don't have any screenshots (yet. I've just never gotten around to it). However, a guy called PMunch did make a video from one of the earlier alpha/WIP builds, and while this version of the mod was by no means complete, it should give you a good idea of what the mod hopes to achieve.
The mod is currently in a WIP/Proof of concept state. As such, there is no final build just yet.
However, I did build a .jar from the early codebase. This should be considered as an EARLY ALPHA BUILD, and should not be used in any important worlds without backing them up first (it can make permanent world changes that can't be undone).
PLEASE NOTE: This download is early alpha and mostly unsupported. It should kind f work in survival playthroughs, although there may be some issues with other mods.
The mod makes permanent changes to the world, and as such; you should always back up your saves. Furthermore, this is a rough proof of concept and comes with no guarantees of any kind. If it crashes, you are on your own.
I have read the above disclaimer and am ready to download it.
Due to my absence for most of this year, Keybounce undertook maintenance of my repository, primarily working on adding compatibility with various other mods, fixing various bugs, and so on. His downloads section can be found here;
https://bitbucket.org/keybounce/minecraft-finite-fluids/downloads/
This being said, his version is not necessarily stable or bug-free, and a similar disclaimer should also be applied (unless he says otherwise).
LICENSING AND SOURCE AND STUFFS
The mod and its source code are licensed under the GPLv3.
The source code for the older builds of this mod can be found here while the source code for the newer versions of this mod can be found here.
I believe in the Invisible Pink Unicorn, bless her Invisible Pinkness.
I still need to optimize, investigate some more equalization methods, optimize some more, tweak the terrain gen some more.
After that, I will start working on things like pumps and pipes, getting them working with inventories and mods.
Finally, I will work on other fluids, such as Buildcraft oil.
I believe in the Invisible Pink Unicorn, bless her Invisible Pinkness.
when your done with the liquid physics could you release it? because after that it will be just as good at finite liquid!
On the other hand, I have a few ideas which will hopefully give water some new uses, while retaining many of its old uses (for example, use a pump to fill a tank, then emptying the tank to harvest crops).
@Lava, Sorry, your post didn't show up before :S
When I am done with getting the standard fluids working even better, and have some primitive uses for them (aka buckets that work properly), I will consider it beta-worthy. The biggest problem right now is basically that the bottom of the ocean is filled with holes, and while this doesn't exactly lag the game, it really isn't good when most of your river is at the bottom of a ravine.
I believe in the Invisible Pink Unicorn, bless her Invisible Pinkness.
LETZ MAKE A HARBOR!
http://puu.sh/atiXi/142bf4c7e5.jpg
http://puu.sh/atj0i/0d9596e393.jpg
http://puu.sh/atjdj/75466f918e.jpg
Then drain the ocean!
http://puu.sh/atmxQ/bb11b2d98b.jpg
With the equalization tweaks, oceans can flatten out at incredible speeds, so fast, in fact, that the earlier problem of underwater caves might not actually matter at all (thanks to some changes to the scheduling system; distant chunks simply get updated less often than near ones, and do not get updated at all if the system is under too much load, meaning that the distant deep sea updates simply get skipped if they would cause lag).
I believe in the Invisible Pink Unicorn, bless her Invisible Pinkness.
On a different note, I'm looking into using a different threads to perform some of the calculations, long range equalization in particular. Will probably need to rewrite a lot of the back-end stuff, but w/e, experience says that it will imrpove performance significantly, and more importantly; make for a better playing experience as calculations won't delay the server thread.
On a very positive note, undersea cave flooding is mostly solved; I've reduced it enough that I am fairly happy with the end result. One more big milestone crossed off the list
I believe in the Invisible Pink Unicorn, bless her Invisible Pinkness.
[Mainly just posting so I can subscribe]
Be sure to quote my post if you want a reply.
lol @ Cameronazzi copy-pasting my sig into his
The way I'm planning it, ~my~ buckets and pipes will store a condensed amount of fluid (basically, I'm using 16'000 fluid levels per cell atm, but instead of storing up to 16'000 levels per pipe as a tile entity, I plan on storing 16 levels per pipe in the metadata of the block, where 1 metadata is equal to (maxFluid/16) fluid levels, noting that tile entities should be avoided wherever possible in general lol). I want to make my own pipes because other pipes won't let you spray the water out on the ground and stuff.
For pipe compatibility, I'm not really sure what I will do yet. I will have to look at how the pipes and pumps work in other mods before making a decision, but atm I think I will probably just end up making my own pump that can output fluids into regular pipes, as well as my own pipes which will be able to pump fluid into inventories.
For buckets, I will probably just hook the fill event or something and return a bucket with the damage value indicating the amount of contained water. If I'm really lucky, I might even be able to use the default item health indicator and everything
Update: Finished making everything thread-safe, working under the assumption that arrays are thread safe ~enough~ to not cause problems. Also finished threading the large-area equalization, and even put the equalizer in its own pretty little class and everything
Edit: New feature: Displacement (only from pistons and falling blocks, since anything more would just be a huge pain to deal with), also with extreme sledgehammer hacks;
But then;
http://puu.sh/avMzG/aa85510288.jpg
http://puu.sh/avMBC/aef6d182a4.jpg
I believe in the Invisible Pink Unicorn, bless her Invisible Pinkness.
Also, finished threading stuff. Still need to REALLY test it HARD, but it seems pretty sturdy and quite a lot faster as well.
Last but not least: Added a very simple current system, meaning that blocks below the surface can now move the player around.
We are getting quite close to a beta release
I believe in the Invisible Pink Unicorn, bless her Invisible Pinkness.
Nwo! Mwine! *hugs alpha tightly to chest*
@1.8 Mmm, it should make life a lot easier. So will +6months of computers getting better. Performance is a massive concern for me, and when you are dealing with hundreds of thousands of blocks at once, a tiny inefficiency in the wrong spot can really slow things down.
On a different note, the threading changes are stable. Now the mod attempts to use the server thread for general stuff, along with one thread for "rapid equalization", one thread for priority updates, and one thread for trivial/distant updates. Four threads of squid destroying power. Unfortunately this will not hugely benefit less monstrous systems (aka 5 year old single core Pentium laptops) running on "tiny" view distance (as a CPU has a finite number of clock cycles, more threads will only help to distribute load and jitter a little bit), but it will work significantly better if you have a few spare cores in your rig.
I believe in the Invisible Pink Unicorn, bless her Invisible Pinkness.
I love getting the chance to see these type of optimization mods put out, and putting them all together can create a mighty fine game