Handle single player as a special case and use the
default, un-colorized skin. This should also make
it easier for people to change the SP skin without
having to interact with the colorization system.
- This was never known to be used.
- Player meta is only available for online players, so
this would prevent looking up skins for offline
players.
- This API arguably needs more overhauling to work
with offline player properly though (e.g. pass
player name instead of player object).
Colorize player clothes based on a hash of player
name. This should make it easier to distinguish
players from each other even when you can't see
their names, by remembering clothing colors.
Unfortunately there's no good way currently to
prevent some ugly color combinations, which may
risk incentivizing players to mess with their name
until they get a combination they like, creating a
bunch of junk accounts. Making colors never
clash (i.e. always matching or complementary
hues) would reduce the variation in colorations,
causing more player color collisions.
Finding a way to ensure colors are "pretty" but
still having enough variation to give each player
name a unique color scheme would be ideal. Also
there's room for more variations, e.g. adding some
stripes, patterns, emblems, etc. that can be
colorized separately, ideally something visible
from every angle.
Just realized that this breaks certain custom skins,
like WintersKnight's prosthetic arm. The
performance improvement from culling a handful of
polygons is really nothing compared to the loss of
unique use of transparency in texture art.
This effectively "debounces" the controls for
waving and mining anims, so players who
are just doing quick punches like for pummel
will still animate visibly for other players
instead of just a "flickering" of the action.
Suggested by oilboi to make the swimming eye
height match the model anim. There is a bit of
jank switching between swimming and standing
height, but it doesn't seem to be too bad, and it
makes players have to actually break the
surface to breathe, and makes swimming a little
less bizarre in 3rd person view.
- Nerf effect by 50% to be less disruptive
- Effect can be avoided by not being in a
swimming position (matching model anim)
- Refactor swimming check into API
- Special checking and handling for linkdead
players, for whom client knockback
wouldn't work anyway.
This should more reliably minimize network traffic
incurred by excess property setting.
We could probably standardize a few more things,
like set attach, anim, yaw, pos...
This allows overriding the data to use the same
logic but a different model, overriding the function
to use the same data but different logic, or both.
Mods can now override all player visuals, including
animations, model, scale, etc. Full functionality
via overriding API methods. Simpler overrides for
skin and mesh by setting player meta attrs.
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.