Void Reservoirs is a small Forge 1.20.1/1.21.1 compatibility mod for packs using:
It restores Immersive Petroleum reservoir generation, Immersive Engineering mineral vein generation, and Immersive Petroleum Derrick/Well usability in void Overworlds.
Ex Deorum's void world generator skips normal biome decoration. That also prevents data-only worldgen systems from running, including Immersive Petroleum reservoirs and Immersive Engineering excavator mineral veins.
Void Reservoirs restores those specific systems without re-enabling normal terrain generation, ores, trees, structures, vegetation, or other biome clutter.
It also adds void-world compatibility for Immersive Petroleum Derricks. In normal worlds, Derricks expect bedrock below the drill column so they can create an Immersive Petroleum Well. In true void worlds, that bedrock does not exist, so Derricks can otherwise do nothing or show a blank GUI. Void Reservoirs can create the required Well block automatically.
In this mod, a void Overworld means the normal Minecraft Overworld dimension using a supported void-world chunk generator.
Currently, this targets Ex Deorum's void world generator.
The mod does not globally change Immersive Petroleum reservoir behavior in normal Overworld terrain.
After first launch, the server config is generated at:
saves/<world>/serverconfig/voidreservoirs-server.toml
Example config:
[voidReservoirs]
denseVoidReservoirs = true
oneReservoirPerChunk = true
reservoirSpacingChunks = 2
reservoirRadiusBlocks = 14
chunkReservoirMarginBlocks = 1
voidDerrickCreatesWell = true
voidDerrickWellY = -64
voidWellBreakable = true
voidWellDestroyProgress = 0.01
denseVoidReservoirsEnables the custom dense reservoir mask for void Overworlds.
denseVoidReservoirs = true
oneReservoirPerChunkMakes each generated void-Overworld chunk get one disconnected Immersive Petroleum reservoir island.
oneReservoirPerChunk = true
Reservoir fluid type is still chosen by Immersive Petroleum using the normal reservoir definition weights. KubeJS or datapack reservoir weights still apply.
reservoirSpacingChunksControls the spacing between dense reservoir islands when oneReservoirPerChunk is disabled.
reservoirSpacingChunks = 2
Examples:
2 = very dense, roughly every other chunk
3 = common
4 = moderate
8 = much farther apart
reservoirRadiusBlocksControls the approximate reservoir island radius in block columns when oneReservoirPerChunk is disabled.
reservoirRadiusBlocks = 14
The default is intentionally compact enough to keep neighboring dense reservoirs separated.
chunkReservoirMarginBlocksControls the empty border around each per-chunk reservoir island when oneReservoirPerChunk is enabled.
chunkReservoirMarginBlocks = 1
A margin prevents neighboring chunk reservoirs from touching and merging into one giant Immersive Petroleum reservoir island.
voidDerrickCreatesWellAllows Derricks in void Overworlds to create the required Immersive Petroleum Well block even when no natural bedrock exists below the drill column.
voidDerrickCreatesWell = true
voidDerrickWellYControls the Y-level where automatically created void-world Well blocks are placed.
voidDerrickWellY = -64
The default mimics vanilla Overworld bedrock height. For skyblock convenience, pack makers may want to raise this value so Derricks require fewer pipes, concrete, and water.
Examples:
-64 = vanilla-like bottom-world well
0 = shorter drill path
32 = much shorter skyblock-friendly drill path
voidWellBreakableMakes Immersive Petroleum Well blocks non-creative-breakable for cleanup.
voidWellBreakable = true
voidWellDestroyProgressControls how quickly the IP Well block can be mined when voidWellBreakable is enabled.
voidWellDestroyProgress = 0.01
This mod makes Immersive Petroleum reservoirs generate properly in void worlds.
If you also want to customize which fluids can appear, their weights, or their long-term capacity behavior, you can do that separately with KubeJS.
Example:
ServerEvents.recipes(event => {
function replaceReservoir(path, fluid, weight) {
const id = `immersivepetroleum:reservoirs/${path}`
event.remove({ id: id })
event.custom({
type: 'immersivepetroleum:reservoirs',
name: path,
fluid: fluid,
// Huge reservoir size.
fluidminimum: 2147483647,
fluidcapacity: 2147483647,
// Long-term regeneration after pressure is gone.
// Lower values make the reservoir effectively infinite, but slow over time.
fluidtrace: 3,
// Around half capacity.
// This lets pressure eventually end so Pumpjacks can take over.
equilibrium: 1073741823,
weight: weight,
dimensions: {
isBlacklist: true,
list: ['minecraft:the_end']
},
biomes: {
isBlacklist: false,
list: []
}
}).id(id)
}
replaceReservoir('oil', 'immersivepetroleum:crudeoil', 4)
replaceReservoir('aquifer', 'minecraft:water', 3)
replaceReservoir('lava', 'minecraft:lava', 3)
})
That example gives roughly:
oil ≈ 40%
aquifer ≈ 30%
lava ≈ 30%
The reservoir starts huge, then pressure eventually drops. After that, Pumpjacks can continue extracting at a slower long-term rate.
This mod affects newly generated chunks and newly generated Immersive Petroleum reservoir data.
Existing reservoir data is not rerolled automatically.
To force Immersive Petroleum to regenerate reservoir data, back up the world first, then delete:
world/data/ImmersivePetroleum-ReservoirRegions.dat
world/data/ImmersivePetroleum-ReservoirRegions/
Then restart the server and generate or revisit chunks.
Void Reservoirs is designed for void Overworld modpacks.
Reservoir generation and automatic Derrick Well creation are limited to detected void Overworlds.
Optional Immersive Petroleum Well block breakability is intended as a cleanup feature for void-world pack use.
This mod is intended for skyblock and void-world modpacks where: