Repository navigation
Pier 26.51.1
Built for BDS 1.26.51 and LeviLamina 26.51.5. A release is built against the one BDS its
number names, so 26.40.3 stays the build for BDS 1.26.40 and does not run on 1.26.51.
None of the engine changes reaches the ABI: PIER_ABI_VERSION stays at 2 and a mod built
against 26.40.3 keeps working without a rebuild. One behaviour does change for mods: an
ability or permission level written before the player has finished joining is now
refused, see below.
Added
- Literal subcommands in
register_command_ex. A parameter of kindtext, with the
word in itstextfield, declares a literal: a node in the command tree, which is what
/scoreboard objectives addis made of, and the only form the client narrows as the
player types. Anenumparameter lists its values but is not a tree node, so the
client had nothing to filter on, and the spec had no way to ask for a literal. The
handler receives the word under the parameter's name like any other argument, so
dispatch does not depend on an overload index that moves when an overload is inserted
above it. Two overloads that differ only by a literal digest differently, so a reload
cannot rebind one onto the other. In pier-rs this isOverloadBuilder::text(name, literal). A host before 26.51.1 rejects the kind as unknown and does not register the
command.
Changed
- Ability and permission-level writes wait until the player has finished joining.
PIER_PACT_SET_ABILITYandPIER_PACT_SET_PERMISSION_LEVELreturn false, with a
warning in the log, untilPlayer::isPlayerInitialized. Written earlier, the change
reaches a client that has not built its ability layers yet: server and client then
disagree, and the player can be left unable to build or attack until they rejoin. The
write is refused rather than queued, so a caller that tried too early finds out at the
call instead of seeing the change land at an unrelated moment. Simulated players have
no client and are exempt. A mod that sets abilities while a player joins has to make
the write once the player has fully joined. PIER_SRV_PROTOCOL_VERSIONknows 1.26.51, which speaks 2193, read from the
startup banner of a 1.26.51 server like the 1.26.40 row before it.- Custom dimension registration passes the whole definition.
DimensionManager::_registerCustomDimensionWithDimensionDefinitionGroupis gone in
26.51. Its replacement,_registerDimensionWithDimensionDefinitionGroup, takes a
completeDimensionDefinition, so the height and the generator go in at registration
instead of being corrected afterwards. The definition carries the 1.26.50
minecraft:dimension_heightshape,mMinYandmHeightRange, in place of a minimum
and a maximum. The top of a dimension ismMinY + mHeightRange, and the
dimension-data trace prints it that way. MobEffectInstancehas its two-argument constructor back. 26.51 exports
MobEffectInstance(id, duration)again and declares the default constructor without
defining it. Adding an effect builds the instance through that constructor and assigns
the amplifier and the visibility; every other field is what the engine's constructor
sets rather than value-initialized.Common::getGameVersionStringis gone on the server.PIER_SRV_BDS_VERSIONreads
Common::StringConstants::mGameVersionStringinstead, built once through
Common::_buildStringConstants.GameMode::useItemOntakes aHandSlot, and thePlayerUseItemOnEventhook
passes it through unchanged. The event payload is unchanged.VoidGeneratortakes the default biome as a constructor argument. A void
dimension passes the biome its spec names, or plains when that one is missing, as
before.ChunkStatelostNeighborAwareUpgradeNeededandNeighborAwareUpgrading, and
the chunk trace no longer names them.- The Rust binding moves to pier-rs 2.1.0 / pier-sys-rs 26.51.1.