Quick Nav


Back To Top

Overview

Satisforestry recreates the beautiful and memorable Pink Forest (usually called "Red Bamboo Fields" in official maps and discussions) at the center of the Satisfactory map. Unlike in that game, where the entire map was hand crafted, here it is a proper procedurally generated biome, with seed-based randomization and ability to generate infinitely.

I went to great lengths to reproduce as many of the defining characteristics of the biome as I could, from the foliage - large and small - to the terrain shaping to the kinds of creatures you find in the biome. The dominant feature is of course the giant pink trees - these rise from the plateau to scrape the world height limit, and make the biome visible from an extremely large distance. Under the canopy of giant trees are smaller, thinner pink trees, as well as scatted patches of red bamboo. Running through the biome is a web of sandy paths, sometimes crossing or becoming small streams.

These streams ultimately run off the edge of the biome, forming giant waterfalls. Also found scattered around the biome are outcrops of dark stone, poison "holey" rocks, and paleberries.

Additionally, some of the more valuable finds in the biome are guarded by mobs, and these mobs are not passive, even in full daylight, and often also include ones which are not normally found elsewhere. However, these "guard mobs" are generally confined to a small area and once cleared, will never respawn.

Note that several of the biome features are dependent upon finding a biome edge, and as such you will not see all of them in a single-biome world like a MystCraft age with pages for just this biome.

Biome Regions

Just like the Satisfactory version, the Pink Birch Forest is split into three subzones; the main one, by far the most common, is the standard pink forest, with wide sandy paths and a mix of all foliage (except for the "Red Jungle" short and wide tree variant, with hanging vines). Within that you will find regions of a more swampy area, with terraced ponds, reproducing the similar area on the eastern edge of the SF biome. Finally, you will also find dense stands of red bamboo with comparatively few trees (including occasional Red Jungle trees), with narrow winding paths and numerous small cliffs, which replicate the area at the northwest of the SF biome.
All three biome zones in one picture.

Some red jungle trees.

Climate

The pink forest is designated with a unique climatic model - its ambient temperature is marked as between cool and cold - marginally above the freezing point of water - but the biome will receive snow instead of rain, and said snow will accumulate. However, aside from a window around Christmas time, when all the mods have the seasonal effects in place, this snow will melt again as soon as it is both daylight and sunny.

Creatures

Spiders And Stingers

In the day, the Pink Forest will seem mostly the same as most other biomes, with one prominent exception: Spiders can spawn at any light level in this biome. This actually makes the biome somewhat safer during the day, as spiders are (usually) nonaggressive in daylight, and their spawns on the surface reduce available slots for mobs underground or in other dark locations. However, come nightfall, those spiders will turn aggressive, and will be joined by another variant, based on the green Elite Stinger from Satisfactory. Bright green and with fluorescent yellow highlights - and trailing more of the same - these share the stinger's ability to leap large distances, emit clouds of poison, and deal serious damage. Compared to vanilla spiders, they are somewhat larger, have nearly double the health, and are not passivated by light. Should you not only survive but manage to defeat one, they will drop notably better resources than a vanilla spider.

Spitters

Spitters are a special kind of mob, unique not only to the forest but to guarding valuables and chokepoints. Spitters are fast-moving quadrupedal creatures with a ranged fireball attack, and can detect the player from a significant distance. Spitters usually occur in packs, making them even more dangerous, as dodging all of them simultaneously becomes nearly impossible.
A few spitters hiding in red bamboo, guarding a yellow slug. Very much resembles my first 60 seconds in satisfactory.

A pack of spitters guarding a purple slug.

Ow.

Near especially high-value items, spitters can exist in larger, more aggressive "Alpha" forms, which boast not only markedly more health and better senses, but also special far more dangerous attacks that are both more damaging and much harder to avoid.
Dodge this.

A tamed green alpha, courtesy of CritterPet.

Giant Flying Manta

However, not all the creatures in the biome are dangerous. Each region of pink forest will have a giant flying manta circling around it; aside from occasionally making noises, it can be ridden to receive a tour of the surrounding area.


Lizard Doggo

Finally, and probably most popular, a few locations in the biome are marked as "Lizard Doggo Spawn Points", which will generate wild lizard doggo mobs. These will flee the player - unless holding paleberries, of course - and can be tamed. In addition to just being cute, tame doggos can occasionally find random items for the player - much the same as their SF counterparts.
A lizard doggo and the paleberry plant used to tame him.

A sitting doggo.


The doggo's potential finds, and under what conditions, are fully configurable; See below for details.

Power Slugs

Scattered around the forest are large glowing slugs filled with strange energy. Based on the Satisfactory power slugs, these can be found at or near the ground level, in caves, on tree trunks, and high in the canopy. Most of the time, these will be difficult to access, either because of their height or obscurity, or because the surrounding area is guarded by creatures or poison gas. More difficult or dangerous areas tend to contain better types of slugs, with the rarest purple being rarely found without significant investigation or serious danger.

Scattered power slugs.

A heavily guarded purple slug.

Once obtained, power slugs can be used as speed-type upgrades in most machines, including the SF Resource Node Extractor, as well as those from IC2, EnderIO, and Thermal Expansion, with better tiers of slugs counting as either higher tiers or larger quantities of upgrades.

Crash Sites and Alternate Recipes

Each forest will contain a handful of small structures. These are "crash sites", which, like their Satisfactory counterparts, can be used to unlock alternate recipes. Each crash site will contain and be able to unlock one recipe, and may require items, power (in RF, EU, or RotaryCraft shaft power), to do so. What the requirements are, in both presence, type, and amount, depends on the recipe.
Several crash sites.

Alternate recipes are recipes or crafting processes that are not normally available, and will not be able to be used if attempted without having been unlocked. Generally, these are literal alternate recipes for items or resources which have default recipes, but with more efficient resource usage - at cost of increased complexity or higher-tier ingredients - or an easier ability to automate. However, two resources can only be unlocked via alternate recipes. One is Compacted Coal, made from coal (dust if available) and sulfur, burns for several times as long as regular coal in both furnaces and as fuel for compatible engines. The other alternate-recipe-only resource is Turbofuel, available only if a "fuel" fluid exists. Turbofuel is made from compacted coal and fuel, and gives the same power per tick as fuel but lasts 2.5x as long per bucket. Note that since Satisforestry lacks machinery, this alternate recipe is not craftable unless you have another mod that adds a compatible craft for it (as RotaryCraft does, for example).
Compacted Coal.

The Turbofuel recipe when RotaryCraft is installed, using its Fuel Enhancer.

Additional alternate recipes are fully configurable, specified using the mod's configuration system. See below for details.

Buried Secrets

Like the pink forest in Satisfactory, there is a large tunnel system running under the biome, one which contains a "resource node", which can provide an inexhaustible - though not high-throughput - supply of whatever resource it is configured to. Just as with their Satisfactory counterparts, these resource nodes can occur in varying purity levels - Impure, Normal, and Pure - which influence both their yield and potentially what items they may provide. Of course, this is a moot point if you cannot find the node and put it to use, something that may not be quite so trivial...

Resource Node Extractor

The resource node in the cave cannot be harvested via the usual means. While manual mining will (slowly) extract small quantities of resources, not all the possible yields - in type or quantity - can be obtained that way. To do this, a multiblock miner structure is required, and will require power, either RF, EU, or RotaryCraft shaft power depending on the type of controller block. All types have three upgrade slots, allowing for 150%, 200%, and 250% operational speed (at much greater power cost) respectively, with appropriate overclocker/speed upgrade items. Power slugs also function as upgrades, with green, yellow, and purple counting as one, two, and three upgrades respectively.

The GUI for the RotaryCraft version, with various upgrade configurations.

Resource node behavior and yield is fully configurable; See below for details.

Fracking

Just as the resource node and its extractor is analogous to the resource nodes and miners from Satisfactory, the fracking node is analogous to that game's fluid resource wells, and has a corresponding extraction multiblock. Like with the ones it is based upon, the main fracking node will spawn several satellite nodes which are the actual fluid extraction points, and which will become active if and only if the central main node has been pressurized by this multiblock.


The fracking node is configurable in the same way as the solid resource node. See below for details.

Soundtrack

Satisforestry can load the Satisfactory soundtrack from disk to play in the biome, in place of the default MC soundtrack. To do this, create a folder somewhere on your system and specify this location in the Satisfactory OST Folder config setting. In that folder, create five subfolders: "all", "day", "morning", "night", and "evening". Place the various tracks into one or more of the folders to categorize them, and the mod will select from them at the appropriate times of day. The ogg filetype is the only supported by default, but with the Not Enough Codecs mod, you can also use MP3 and .flac audio formats (though the latter will require a 1.7.10 backport of newer versions, available here).

Configurability

Satisforestry makes extensive use of the LuaBlock system to define prototypes to dictate many behaviors. It ships with default configs, but these were not intended for serious play; they are not likely to be well-balanced or thematically appropriate, and were simply created to both provide the ability to use the mod as downloaded and to provide example definitions. These files are found in Reika/Satisforestry_Files in the config folder.

This folder has six files: example, ores, resources, fluids, doggo, and recipes. The first of these simply includes a sample value of each kind of prototypes (consisting of the combined content of the default values for the other three files), and is not meant to be edited. The other five files define the types and amounts of ores that will spawn within the biome and where they may spawn, what the resource and fracking nodes produce and how they produce it, the random items lizard doggos can find and under what conditions, and the alternate recipes that Satisforestry will add.

Ore Configuration

An ore prototype defines one kind of ore, including what block(s) it generates with, and in which locations it can generate and with what amounts in each. Aside from type, only two tags are required. The first is the ore block definition, using either a single string value for block or a list of strings for blocks, for defining ore entries with a single or multiple ore blocks respectively. The second tag, spawnLocations, defines which of the predetermined locations where ore clusters may appear can select this ore entry and what modifiers to apply on the generation of this ore in this location. This tag is a list of tables, each of which defines three child values:
Definition KeyDescriptionDefault ValueMin ValueMax Value
maxSizeMaximum cluster size (layers deep - not block count) (Optional)414
sizeScaleOverall size multiplier (Optional)1.00.0Any
spawnWeightWeighted Random spawn weight100Any

Resource Node Configuration

Node Definitions

The resource node prototype defines one "resource template" used for the resource nodes in the cave systems. Each node will be permanently assigned a single template of the available types at random - using standard weighted random behavior - upon generation; these templates dictate primarily what items that will produce and under what conditions, plus some additional parameters.
Definition KeyDescriptionDefault ValueMin ValueMax Value
displayNameResource type display name
renderColorNode render color0xffffff
spawnWeightWeighted Random spawn weight100Any
speedFactorProduction speed factor (Optional)1>0Any
effectsAmbient AoE effects around the node (Optional)
outputItemsThe yieldable items (weighted random)
keyItem definition
minimumPurityMinimum node purity level to spawn this item
weightWeighted Random spawn weight100Any
minCountMin yield (item count) per harvest cycle11maxCount
maxCountMax yield (item count) per harvest cycle1minCount64
peacefulScaleYield Multiplier on Peaceful Mode (Optional)101
manualAmountModifierYield Multiplier for manual mining (Optional)101
manualWeightModifierWeight Multiplier for manual mining (Optional)101
weightModifiersWeight modifiers by purity level (Optional):
IMPUREWeight scale for impure (worst) level10Any
NORMALWeight scale for normal level10Any
PUREWeight scale for pure (best) level10Any
amountModifiersYield modifiers by purity level (Optional):
IMPUREAmount scale for impure (worst) level10Any
NORMALAmount scale for normal level10Any
PUREAmount scale for pure (best) level10Any
purityLevelsPurity level distribution (weighted random)
IMPURESpawn weight for impure (worst) level100Any
NORMALSpawn weight for normal level100Any
PURESpawn weight for pure (best) level100Any

Fracking Node Configuration

Node Definitions

The fluid node prototype defines one "resource template" used for the fluid fracking nodes. Each node will be permanently assigned a single template of the available types at random - using standard weighted random behavior - upon generation; these templates dictate primarily what fluid it will produce in what quantities, plus some additional parameters.
Definition KeyDescriptionDefault ValueMin ValueMax Value
renderColorNode render color0xffffff
spawnWeightWeighted Random spawn weight100Any
glowAtNightWhether to glow in the darkfalse
effectsAmbient AoE effects around the node (Optional)
outputFluidsThe fluid output parameters
keyFluid name
minAmountMin yield (mB) per harvest cycle11maxAmount
maxAmountMax yield (mB) per harvest cycle1minAmountAny
roundingWhat multiple to round randomized production values to (Optional)10011000
peacefulScaleYield Multiplier on Peaceful Mode (Optional)101
amountModifiersYield modifiers by purity level (Optional):
IMPUREAmount scale for impure (worst) level10Any
NORMALAmount scale for normal level10Any
PUREAmount scale for pure (best) level10Any
purityLevelsPurity level distribution (weighted random)
IMPURESpawn weight for impure (worst) level100Any
NORMALSpawn weight for normal level100Any
PURESpawn weight for pure (best) level100Any
maxSubnodesExtraction point count limit818
inputFluidsThe required input fluid (Optional)
keyFluid name
amountRequired amount (mB) per harvest cycle111000


Effects

"Effects" are ambient AoE effects that will apply to players who approach the node, akin to the radiation effect emanating from Satisfactory uranium nodes. A number of predefined effect types are available, but you can also choose to invoke arbitrary mod functions (eg the one that triggers a ChromatiCraft pylon discharge at a player), or reference an effect defined in code and added via the Satisforestry API. This is chosen with the value of the effectType parameter, which then controls what other parameters are necessary.
Effect KeyDescriptionRequired parametersParameter descriptions
damageSimple direct damage
amountDamage dealt per cycle
rateTicks between cycles
potionApply potion effect
potionIDPotion effect ID
levelEffect level
reflectiveReflective invocation of any MC/mod java method
classQualified class name containing method
methodMethod name
argsMethod arguments (see below)
instanceOwner instance
customAPI-added code effect
effectNameRegistered effect name (see below)


Reflective Effects

Reflective invocation effects require a specification of the arguments the method requires, as well as (unless the method is static) the instance object on which to call it. Method arguments are specified as a list of method argument IDs, while the instance - if any - is a single value. The available options for arguments are:
Argument Type ID KeyDescription
int(VALUE)An integer literal (VALUE)
float(VALUE)A float literal (VALUE)
boolean(VALUE)A boolean literal (VALUE)
string(VALUE)A string literal (VALUE)
playerThe nearby player entity
worldThe world the player and node are in
xThe player's X position (rounded to the nearest block)
yThe player's Y position (rounded to the nearest block)
zThe player's Z position (rounded to the nearest block)
tileThe node tile entity


Custom Effects

Custom effects are defined in Java code by another mod, and registered via the SF API. To define a custom effect, create an object implementing the NodeEffectCallback interface, and register it with registerCustomNodeEffect(String name, NodeEffectCallback eff) in the API's resourceNodeHandler access point. The method apply(TileEntity node, EntityPlayer ep) is called every tick for every player near the node with this effect, and you can perform any arbitrary effect you desire.

Lizard Doggo Configuration

Doggo Definitions

Lizard doggo prototypes define what items tamed Lizard Doggos can find, including conditional requirements for that specific item type. There is only one top-level key, findableItems, which is a list of subblocks, each corresponding to a given findable item, defining the appropriate values:
Definition KeyDescriptionDefault ValueMin ValueMax Value
keyItem Definition
nbtNBT tag definition (Optional)
minCountMinimum item count per fetch cycle11maxCount
maxCountMaximum item count per fetch cycle1minCount64
weightWeighted Random spawn weight100Any
weightFactorsConditionally-applied multipliers to weight (Optional)
checkCondition identifier
valueValue to check condition against
factorMultiplier if check succeeds0.0Any
limitsRequirements to allow this item to be found (Optional)
checkCondition identifier
valueValue to check condition against


Conditions

Weight factors and limitations both use a condition/check system, where each entry is defined as checking some property about the game state, such as the time of day or the doggo's health. These are compared against a provided value - the actual comparison depends on the condition being queried - yielding a true/false result which determines whether the weight factor is applied or the limitation is satisfied. In the case of the latter, all limitations must be satisfied to allow that item to be found by a lizard doggo. The available checks are as follows:
Check ID KeyDescription
is_nightIs it currently nighttime?
biome_idIs the doggo is currently in this biome ID?
healthIs the doggo health at least this amount (fraction out of 1)?
min_yIs the doggo at or above this Y level?
max_yIs the doggo at or below this Y level?
is_peacefulIs the difficulty on "Peaceful" mode?
has_skyCan the doggo see the sky right now?

Alternate Recipe Configuration

Recipe Definitions

Each prototype defines one alternate recipe. The information in this prototype dictates the recipe itself, its spawn weight, and its unlock requirements. Do note that this specific definition type makes significant use of the way LuaBlock defines items, and so it is strongly recommended you read the documentation page for that system.
Definition KeyDescriptionDefault ValueMin ValueMax Value
displayNameDisplay name to use instead of the output item name (Optional)
spawnWeightWeighted Random spawn weight100Any
recipeRecipe definition
outputRecipe definition
itemOutput item type (and possibly count)
nbtNBT tags to put on the output (Optional)
shapedWhether to used a shaped or shapeless recipe
input_topThe top row of the crafting grid. Use null for empty.
input_middleThe middle row of the crafting grid. Use null for empty.
input_bottomThe bottom row of the crafting grid. Use null for empty.
requiredPowerRequired power input to unlock a crash site with this recipe (Optional)
formatPower typeOptions: RF, EU, ROTARYCRAFT
amountRequired per-tick power flow rate0Any
timeHow long to require sustaining this power amount0Any
timeUnitWhat unit the above value is in. (Optional)SECONDOptions: TICK, SECOND, MINUTE, HOUR, DAY
requiredItemRequired items to unlock a crash site with this recipe (Optional)
itemRequired item type and count
nbtNBT tags to require on the input (Optional)

Delayed Giant Pink Tree Generation

The "delayed giant pink tree generation" option allows you to delay giant pink tree generation until after chunks are finished generating, in an effort to reduce cascading chunkgen.

This may not be a 1:1 replacement for normal generation, and so should only be enabled as a last resort, when the biome deocration is failing. This situation can be identified as the log file containing many instances like the following:
SATISFORESTRY ERROR: STATE STACK IS TOO LARGE [250] TO SAFELY CONTINUE, ABORTING Reika.Satisforestry.Biome.DecoratorPinkForest@64f3da52 DECORATION IN CHUNK 1600, -5088
SATISFORESTRY ERROR: STATE STACK IS TOO LARGE [250] TO SAFELY CONTINUE, ABORTING Reika.Satisforestry.Biome.DecoratorPinkForest@64f3da52 DECORATION IN CHUNK 1600, -5072
SATISFORESTRY ERROR: STATE STACK IS TOO LARGE [250] TO SAFELY CONTINUE, ABORTING Reika.Satisforestry.Biome.DecoratorPinkForest@64f3da52 DECORATION IN CHUNK 1568, -5056
SATISFORESTRY ERROR: STATE STACK IS TOO LARGE [250] TO SAFELY CONTINUE, ABORTING Reika.Satisforestry.Biome.DecoratorPinkForest@64f3da52 DECORATION IN CHUNK 1600, -5056
SATISFORESTRY ERROR: STATE STACK IS TOO LARGE [250] TO SAFELY CONTINUE, ABORTING Reika.Satisforestry.Biome.DecoratorPinkForest@64f3da52 DECORATION IN CHUNK 1584, -5056
SATISFORESTRY ERROR: STATE STACK IS TOO LARGE [250] TO SAFELY CONTINUE, ABORTING Reika.Satisforestry.Biome.DecoratorPinkForest@64f3da52 DECORATION IN CHUNK 1536, -5008

Additionally, this often results in generation being missing from the biome.

This tends to only happen in worst-case scenarios, ie packs with huge amounts of cascading worldgen or "Large Biomes" worlds (especially if multiple spilling-heavy biomes happen to be adjacent to one another, such as a Luminous Cliffs being bordered by pink forests on either side).
An example world where some increase to the limit was necessary, comprised of exactly the worst-case described above.

Before enabling this option, you should first try to increase the state stack limit. To do this, add a new JVM argument -DragonAPI_DecoratorStackLimit=N, where N is the new limit (the default value is 250). Note that this may cause StackOverflowError crashes during worldgen, but this can be avoided by adding an additional JVM argument -Xss=A to allocate more stack memory, where A is the amount of memory allocated to each thread's stack (using the same format as -Xmx arguments, eg -Xss=4M will allocate 4MB). Be careful not to set that allocation too large; this limit is per-thread and from the native (ie non-heap) pool and so can quickly and dramatically increase the JVM's RAM usage, often to the point of exhausting system resources or causing the game to lock up. A few MB is a good guideline as a safe limit, but you should experiment to see how much is strictly necessary for your use case.

Configuration Settings

This mod contains several config options to modify values and behaviors - such as for balance or server safety concerns, or simply personal taste - to your preferences. Note that several settings may have bounds imposed on their values, either logically or explicitly; these can usually be seen in the actual settings files or ingame. These are listed in order found in the source code, which is generally the order in which they were added; They may be present in a different order ingame or in the configuration files.
The settings for the mod, when installed, can be found in the 'config/Reika' subfolder of the MC instance.

Pink Forest Biome ID

Type: int
Current Default Value:
144

Cave Mob Spawn Multiplier

Type: int
Current Default Value:
1

Apply Poison Shader In All Biomes

Type: boolean
Current Default Value:
false

Use Alternate Poison Shader

Type: boolean
Current Default Value:
false

Satisfactory OST Folder

Type: String
Current Default Value:

Biome Border Ore Cluster Rate

Type: float
Current Default Value:
1F

Make Green Power Slugs Blue

Type: boolean
Current Default Value:
false
In Update 5, Satisfactory changed green power slugs to blue. Enable this to also apply that change.

Paleberry Butterfly Fertilization Requires Pink Birch Pollen

Type: boolean
Current Default Value:
false
Whether the ability of the Paleberry Sucker butterfly to fertilize paleberries depends on having a pink birch tree in range.

Delayed Giant Pink Tree Generation

Type: boolean
Current Default Value:
false
Whether to engage delayed pink tree gen as described above.

Compacted Coal Unlock Required Item (Empty for None)

Type: String
Current Default Value:
minecraft:coal*64

Compacted Coal Unlock Required Power (power type;amount pertick;ticks to maintain)

Type: String
Current Default Value:
RF;300;600

Turbofuel Unlock Required Item (Empty for None)

Type: String
Current Default Value:

Turbofuel Unlock Required Power (power type;amount pertick;ticks to maintain)

Type: String
Current Default Value:
RF;2400;600

Lizard Doggo Ore Yield Type

Type: String
Current Default Value:
ore
This option allows you to choose what kind of item ('ore' for ore blocks, 'dust' for the dust form of the resource, 'products' for whatever the usual smelted result is, 'cluster' for ThaumCraft native clusters) doggos will find when told to find X kind of ore. If the type chosen has no mapping for the ore in question (eg native clusters without TC installed), the ore block will be used as a fallback.

Machinery RF Cost Tier

Type: int
Current Default Value:
3
1-4, with 1 being the cheapest RF costs, suitable for packs where the most powerful generators are 60-100RF/t, 2 being for packs with generator caps around 2500RF/t, and 3 being for packs with caps around 30000RF/t per generator, and 4 for packs with anything capable of significantly exceeding that. Does not affect EU or RC versions of the machines, and will subtract 10% efficiency for each "step down" from 50% at max cost.

Source Code

The source code for Satisforestry can be found here:GitHub

Downloads

Via CurseForge