Let me start by saying I know very little about coding in Java. Queue groaning sounds here as everyone thinks to themselves, "Easy for this guy to give us an idea when he has no clue about how to code it!" Here's the thing, though; this is something I could ALMOST code myself right now, and I really mean ALMOST, even with my meager Java skills. What I do NOT know is how taxing this would be on the Minecraft engine (more on that later; I suspect it is a non-issue, honestly). At any rate, this is my concept of an entirely reworked oxygen system that I think might be simpler in the end (from a player's perspective, certainly, and likely from a coding standpoint, too!).
First, let me establish the block functionality that would be needed to be implemented (nothing too complex):
- The oxygen distributor block needs to simply spawn GC breathable air blocks in any block 0 (vanilla "air", i.e. the stuff that kills you in GC dimensions) immediately adjacent to it. This system would entirely eliminate the oxygen sealer block. Perhaps set a threshold of some kind that says it needs to have x amount of oxygen being fed to it by a collector before it'll kick out breathable air block.
- The existing GC breathable air block is made to spread in the same way that grass spreads to dirt, but in this case, breathable air spreads to vanilla air (block 0). It also needs to, on creation, check for open sky above it. If sky is seen, it instead becomes the next block on this list ("Vacuum" block)
- And here is the key to it all: A new GC block that works in all ways like block 0 does in GC dimensions except that it spreads to breathable air at a very fast rate (much faster than breathable air block would spread to block 0). It would also need to have a decay functionality that causes it to decay after a medium-ish rate to block 0 (x number of seconds go by and it becomes block 0). For the sake of this description, I'll call it Vacuum block.
Now imagine this system in action...
We build a sealed room on the moon and get a distributor running in there. It pumps out air that spreads throughout the room and after a bit of time, the entire room is filled with oxygen (breathable air block will spread to replace block 0, remember, in this reworked system).
Now let's walk over to one of the outer walls and break it open. The air starts spreading out onto the surface. But wait, sky is overhead! The Vacuum block rushes in, obliterating the breathable air. The room has decompressed.
After a bit of time (that amount of time being based on how quickly the Vacuum block were made to decay to block 0), and our distributor would start working again (once the vacuum around it has decayed to block 0, breathable air would begin spreading again).
You would end up with a room that, unless sealed, would keep burping out all it's air. It's not quite the smooth continuous loss an unsealed room would create in a "real" setting, but the effect would be close, especially if the spreading chances are fairly high for the breathable air and vacuum (vacuum always being higher so it can overwhelm the distributor and clear the room of an atmosphere).
This has the HUGE advantage of being able to easily fill an entire structure with breathable air. One distributor could do it, but more of them dumping more oxygen into the system would be faster (more breathable air "seed" locations), which makes sense. It also eliminates the competing systems that exist now (sealers versus distributors).
The problem, as I said, comes in how taxing the breathable air spread would be on the engine. Grass never seems to cause me any noticeable lag at all when spreading, so I suspect that as long as the spread chance isn't too insanely high (too many blocks changing too rapidly), it would have minimal impact on performance.
As I said, this is ALMOST something I could pull off coding myself (I'd need to learn a bit about Forge first) and I really think it would work GREAT.
I would LOVE to hear what you guys think of this.
First, let me establish the block functionality that would be needed to be implemented (nothing too complex):
- The oxygen distributor block needs to simply spawn GC breathable air blocks in any block 0 (vanilla "air", i.e. the stuff that kills you in GC dimensions) immediately adjacent to it. This system would entirely eliminate the oxygen sealer block. Perhaps set a threshold of some kind that says it needs to have x amount of oxygen being fed to it by a collector before it'll kick out breathable air block.
- The existing GC breathable air block is made to spread in the same way that grass spreads to dirt, but in this case, breathable air spreads to vanilla air (block 0). It also needs to, on creation, check for open sky above it. If sky is seen, it instead becomes the next block on this list ("Vacuum" block)
- And here is the key to it all: A new GC block that works in all ways like block 0 does in GC dimensions except that it spreads to breathable air at a very fast rate (much faster than breathable air block would spread to block 0). It would also need to have a decay functionality that causes it to decay after a medium-ish rate to block 0 (x number of seconds go by and it becomes block 0). For the sake of this description, I'll call it Vacuum block.
Now imagine this system in action...
We build a sealed room on the moon and get a distributor running in there. It pumps out air that spreads throughout the room and after a bit of time, the entire room is filled with oxygen (breathable air block will spread to replace block 0, remember, in this reworked system).
Now let's walk over to one of the outer walls and break it open. The air starts spreading out onto the surface. But wait, sky is overhead! The Vacuum block rushes in, obliterating the breathable air. The room has decompressed.
After a bit of time (that amount of time being based on how quickly the Vacuum block were made to decay to block 0), and our distributor would start working again (once the vacuum around it has decayed to block 0, breathable air would begin spreading again).
You would end up with a room that, unless sealed, would keep burping out all it's air. It's not quite the smooth continuous loss an unsealed room would create in a "real" setting, but the effect would be close, especially if the spreading chances are fairly high for the breathable air and vacuum (vacuum always being higher so it can overwhelm the distributor and clear the room of an atmosphere).
This has the HUGE advantage of being able to easily fill an entire structure with breathable air. One distributor could do it, but more of them dumping more oxygen into the system would be faster (more breathable air "seed" locations), which makes sense. It also eliminates the competing systems that exist now (sealers versus distributors).
The problem, as I said, comes in how taxing the breathable air spread would be on the engine. Grass never seems to cause me any noticeable lag at all when spreading, so I suspect that as long as the spread chance isn't too insanely high (too many blocks changing too rapidly), it would have minimal impact on performance.
As I said, this is ALMOST something I could pull off coding myself (I'd need to learn a bit about Forge first) and I really think it would work GREAT.
I would LOVE to hear what you guys think of this.