Hints themselves have not been tided up
much, but this makes the project of fixing the
hints for each mod a little more manageable
and breaks up the hard-to-navigate single
monolithic hints file in the old guide mod.
The old guide mod has now been completely
retired. Hints are now a full-fledged API-layer
standard feature.
Useful for more complex transformations like assembling
animations or tiling.
Use in a couple places to try it out, esp. the new living
sponge animation.
By restricting the recipes we check based
on the name of the central object being
checked, we can do many fewer craft
checks per item and avoid expensive
checks.
Register a "rootmatch" property for all
recipes that represents a broader, quicker
test for recipe eligibility. False positives are
allowed but false negatives are not.
Since most recipes are eligible, we can
use this to build an index for fast lookups
of subsets of recipes to run and skip most
of the other ones.
This should cause maps that have the same
seeds to have much more similar results
than before, e.g. sponge deposits will be in
the same places determined by seed and not
random each regeneration of the map.
- Mapgen shared now provides an RNG which
will be deterministic when feasible, for
repeatable mapgen results.
- Make existing rng-using mapgen hooks use
the new deterministic RNG.
- Mapgen shared hooks are also run in
deterministic order too.
- Tidy up mapgen_shared API a little more.
Apparently we can't trust node meta to return
the same data to us that we just pushed in for
a few seconds, so check an in-memory cache
first and only use the meta for newly loaded
areas.
Don't reuse damage_per_second for damage on punch and radiant
damage. This allows these to be defined separately, i.e. no longer
assuming that all damage is from "heat" and can radiate. This
allows for things like thorny plants that hurt if you touch them
or stand in them but not if you stand near them.
Thanks to WintersKnight94 for reporting this.
- Lenses no longer produce light from sun at all;
artificial light is always needed.
- Grass and trees survive, don't do dual-time check.
- Breeze sounds work in twilight.
- Sponge drying only requires twilight, now also can
happen under artificial light.
- Peat to grass happens under twilight.
- No day/night cycle, no sun/moon.
- Get rid of clouds too.
- Skybox is now 100% texture-packable.
- Natural light diminishes with depth.
Night-time no longer disrupts gameplay topside, but
skylights are no longer useful to an infinite depth and
artificial light is necessary for all deep mining.
- Register def tables instead of bare funcs.
- Add labels for mod logic use.
- Automatically skip for singlenode mapgens,
e.g. for the skyblock modpack.
Treat all API mods as a "layer", and use the new
nc_api_all registration to indicate that a mod depends
on the NC API (which ALL NC mods assume they do).
This means that each non-API mod does not need to
worry about which API mods it really needs and which
it does not, nor will they need to be updated for any
internal API restructures.
This is a game, not a modpack, so all mods will be
loaded anyway, and we only care about order. That
means that we don't really need to worry about
having excess dependencies because any mod we
don't actually need will be needed by something that's
loaded anyway. If somebody wants to reuse a
component elsewhere, they're likely to need to do
some work to untangle it anyway, because of the
amount that NodeCore mechanics interact and
interdepend.
This created a ton of dependency inversions, which
necessitated moving a number of API functions up into
higher layers, and restructuring dependency lists for
a number of mods.
BOLO: non-deterministic load errors due to missed
dependencies.
Sponges die more easily when in itemstack form,
for transport. Make them a bit less likely to die
from air exposure when in node form, to reduce
the number dying from temporary air bubbles after
neighoring sponges have been harvested.
This should reduce the chance that sponges are
killed by a transient, like the absence of water caused
by digging sand out from under one. It's still a bit
risky though.
Sponges grow way too slow for the new cultivation
mechanics. Extremely slow growth is no longer
necessary to prevent colony explosion due to the
introduction in gen2 of total colony size inhibition.
- Sponge mod now depends on optics/glass.
- Living sponges die to wet sponges rapidly in air.
- Living sponges are preserved by water, or a
water-tight container.
- Glass tanks with a watertight lid preserve sponges.
- Glass tanks inside a packed tote preserve sponges.
- Sponges have about a 2 second half-life in air.
The net effect is that capturing living sponges is no
longer a frustrating, probabilistic exercise, but now
transporting them involves significant technological and
problem-solving work.
AISM's now tick against stacks, including in piles, shelves,
and player inventories, (hopefully) efficiently compared to
the old way with separate ABMs. Item entity support is also
possible, but not necessary yet.
This started out as a bugfix for being able to put a torch inside a
shelf, which didn't make much sense gameplay-wise. It ended up
going quite a bit further.
- Aggregate now gets wet in stack form. Swimming with dry
concrete now has consequences.
- Lux reactions, radiation, and infusion should now behave more
consistently.
- Sponges can now wet or dry in stack form, including inside
containers.
- Torch ignition, quenching, and extinguishing is now more
consistent regardless of context, and torches are now more
dangerous, and can ignite things in more contexts.
Reinstate sponges spawning as mature colonies, and match mapgen
colonies to expected end-state of natural regrowth. This should
make it harder to distinguish an "old growth" area where players
have been hanging around a long time from pristine sponges.
- Inhibit sponge colony growth beyond a maximum size. Players
will have to prune colonies (or, smarter yet, split them) to
grow more sponges.
- Allow sponge colony transplantation. Sponges near the "core"
of a colony (i.e. surrounded by more sponges) are more viable
and more able to survive the player's crude harvesting.
- Collapse all nodecore "core" mods in the /mods listing, so it's
easier to find the actual add-on mods.
- Parameterize in-game branding to make renaming derivatives just
a little easier.
Bash gravel down into ash to produce dry aggregate.
Dampen the aggregate to produce wet aggregate. The ash chemically
reacts with gravel to produce a cement.
Let the wet aggregate dry and it will cure into smooth-stone.
It will tend to flow and wander if left uncontained though.
Water is now squeezed out, can be reabsorbed, BUT might disappear
before being reabsorbed anyway. The original sponge can be
removed, though, and the water will just disappear on its own
after the timeout.