This is useful when we want to perform an
action on a commonly-occuring node (like
sand or item stacks) with a requirement of
a neighbor of a less common node type (like
igniters). Checking for B with A nearby can
be a lot faster than A with B nearby if B is
less common, so fewer neighbor checks
actually need to happen.
This was already done "manually" for the
flammable/igniter interaction, but now this is
a general API for all ABMs, that allows the
inversion to be done nearly transparently
with just a flag in the definition, and so the
ABM rules can be written more simply, with
the inversion handled elsewhere.
TODO: Rewrite current manual-inversions,
including the ones for flammable/igniter and
lava/stone hardening/softening.
This prevents a problem where players
can drop items into other players'
protected areas but cannot dig them.
Other solutions to prevent players from
placing items into protected areas in the
first place may be possible, and may still
be explored, but are not foolproof and so
this acts as a fallback at least.
A low-level player teleportation must be explicitly
declared nodecorian via a keepinv property on
the position, or the player must be exempted via
the keepinv priv, to be allowed to teleport without
leaving the inventory behind.
This means that naive mods like /home commands
will now work correctly and teleport only the
player, and not items.
Use grid-aligned pixel locaiton for calculating
opacity so each star pixel position has only one
opacity level associated with it, rather than the
multiple that can currently occupy that opacity
range.
Use grid-aligned pixel locaiton for calculating
opacity so each star pixel position has only one
opacity level associated with it, rather than the
multiple that can currently occupy that opacity
range.
Apparently (e.g. on Kimapr's servers) it's possible
to dig "undiggable" nodes under extreme lag.
Theory:
- Place something like cobble next to water source
- Dig with infused mattock through all stages
The client will predict a cobble->loose cobble
transition, then let you dig the loose cobble, and
then send the "dig" command to the server, but
on the server side the cobble instead was dug
directly, and then water flowed in to fill the space
where the client thought the loose cobble would
be, so the client digs the water, and you get
flowing water in your inventory.
For one thing, it's a bit overpowered when you go
right from infused still digging lode ore as loose
cobble, right to boosted-infused digging it as raw
ore.
For another, uncobbled lux stone is purposefully
labeled as just plain stone to force the player to
pay attention to light cues, but this would make
inventory management problematic once smooth
lux stone has been collected with boosted tools.
The realism theory is that item stacks are "looser"
and more easily pushed out of the way. The
gameplay theory is that it's getting annoying
having machines like log or charcoal choppers
getting blocked by items under the falling nodes.
This is also hopefully part of falling-node stack
order reform, to fix that nodes sometimes fall
through each other.
This way, at the time the announcement is made,
the player has already been kicked, and any mods
that check the player list based on this (i.e.
szutil_nowonline) will show the correct list.
Visinv ents sometimes don't appear in MT
5.4+. I haven't fully investigated the
reason yet, but it could be because the
mapblocks aren't "active" yet when the
LBM is being called and trying to create the
ents, so if the creation fails, try queueing
a retry and see if we catch it later.
The original idea was to have items that are thrown and land into a
stack node smoothly "slide" into place instead of disappearing
momentarily and then reappearing in their final spot, to create a sort
of visual continuity.
However, it turns out that making this actually work is almost
certainly going to be way more complex and fragile than it's worth,
and visinvs have faced new challenges since then anyway, so it's
probably about time to kill this project officially.
- This branch has gone nowhere for a long time.
- Most players agreed they didn't like the new look.
- It would take away texture pack authors' ability to redefine the
shape of the eggcorn as they can now.
- The existing "flat item extrude mesh" look fits well enough with
the other artwork in the game that it's not needed.
This was an interesting experiment and so will be preserved in the
project history, but isn't going anywhere so doesn't deserve its own
branch head.
Apparently on top of dungeons regenerating
over top of themselves, caves can also carve
into dungeons, and this may cause issues
with dungeon loot, where the loot nodes are
removed (but w/o the destructor) so that
floating fake visinv entities are sometimes
left floating in place.
Instead, give the engine time to finish
initializing dungeons, and then use only the
ABM (sigh, it's always only ABMs that are
actually eventually reliable after all) to do
delayed initialization.
This kind of sucks if the player starts out in
a dungeon in a new map, but the old "fast"
methods weren't fast enough to prevent a
flash of uninitialized dungeon anyway, so we
just have to hope that the dungeons will get
initialized while on the map horizon before
the player gets close enough for it to matter.
Get rid of the different dungeon cobble now
to mitigate this, also since we no longer
need it to debug uninitialized dungeons.
This interferes with dungeon mobility, and
especially when shelves are placed on
stairs this makes it less believable that
someone could have once lived here and
left it this way.