Releases: EndstoneMC/endstone
Releases · EndstoneMC/endstone
v0.11.2
Added
- Added support for BDS version 1.26.3.1.
- Added
BlockExplodeEventfor non-actor explosions (e.g., bed in the Nether, respawn anchor in the Overworld). - Added
Player.send_map()method for sending full map data to players, enabling custom map renderers to push updates
on demand (e.g., animated maps via the scheduler).
Fixed
- Fixed a crash caused by vulnerabilities introduced in Mojang's RakNet modifications (MCPE-228407).
- Fixed missing exports for
BlockFormEvent,BlockFromToEvent, andBlockGrowEventevents.
Full Changelog: v0.11.1...v0.11.2
v0.11.1
Added
- Added support for BDS version 1.26.1.1.
- Added
ListTag.to_list()andCompoundTag.to_dict()methods (Python) that recursively convert NBT tag trees to
native Python data structures (listanddict). - Exported
attribute,effect,nbt, andpotionsubmodules from the top-levelendstonePython package. - Added explicit standard library
#includedirectives across all public C++ API headers for self-contained
compilation.
Fixed
- Fixed
PlayerMoveEventandPlayerJumpEventnot firing. - Fixed
WeatherChangeEventandThunderChangeEventnot firing. - Fixed
ServerListPingEventnot firing. - Fixed
Enchantmentobjects being unhashable, preventing their use as dictionary keys and in sets. - Fixed a duplicate keyword argument error when loading Python plugins that define a
nameclass attribute. - Fixed several issues that caused the Map API to not work correctly in some occasions. Maps now behave consistently
across different platforms.
Changed
- BREAKING:
ServerListPingEvent.remote_hostandServerListPingEvent.remote_portproperties have been replaced by
a singleServerListPingEvent.addressproperty that returns aSocketAddress.
Full Changelog: v0.11.0...v0.11.1
v0.11.0
Added
- Added support for BDS 1.26.0.
- NBT API: Plugins can now read, create, and manipulate NBT data directly. All 11 standard tag types are supported (
ByteTagthroughCompoundTag), with full Python bindings.CompoundTagworks like a dictionary andListTaglike
a list. Tags can be printed in SNBT format for debugging. - ItemStack NBT access: Read and write NBT data on items using
ItemStack.nbt(Python) /ItemStack::getNbt()and
ItemStack::setNbt()(C++). Useful for inspecting or modifying item data directly. - Enchantment API: All 33 vanilla enchantments are available as named constants. Plugins can check max level,
conflicts between enchantments, and whether an enchantment can be applied to a given item. Accessible via the new
Registry system. - Map API: Plugins can now create and customise in-game maps. Draw pixels and images on the map canvas, add map
cursors (24 types including Player, Mansion, Monument, and TrialChambers), control scale and center position, and
listen forMapInitializeEventwhen a new map is created. - New events:
BlockFromToEvent: fires on liquid flow teleportation. Cancellable.PlayerPortalEvent: fires when a player enters a portal, with access to source and destination locations.
Cancellable.PlayerDimensionChangeEvent: fires when a player moves between dimensions (Overworld, Nether, The End).
- New ItemMeta types:
BookMeta: read and write signed book title, author, generation, and pages.WritableBookMeta: manage book-and-quill pages.CrossbowMeta: inspect and modify loaded crossbow projectiles.
- Command system: Commands can now accept entity type arguments with tab completion via the new
entity_type
parameter type. - Dimension API:
Dimension.spawn_actor()creates an entity at a given location.Dimension.drop_item()drops an
item on the ground as a collectible entity. - Mob API:
Mob.max_healthis now writable, allowing plugins to change a mob's maximum health. - Interactive console: New console experience with persistent command history across server restarts. Enabled by
default on Windows, disabled on Linux. Use--interactive/--no-interactiveCLI flags to override, or set the
ENDSTONE_USE_INTERACTIVE_CONSOLEenvironment variable. - Crash reports: Server crashes now automatically save a report to
crash_reports/with cleaned-up stack traces for
easier debugging. endstone.asynciomodule: Run async code from plugins using a background event loop. Callsubmit(coro)to
schedule a coroutine and get aFutureback, without blocking the server thread.- Registry system: A unified way to look up game objects (e.g., enchantments) by their identifier. Supports lookup,
existence checks, and iteration. - BossBar: Added
CREATE_FOGflag to control whether a boss bar creates fog effects for players. - Logging: Rotated log files are now gzip-compressed to save disk space.
endstone.metricsmodule: Built-in bStats integration for plugin analytics. Create a
Metricsinstance with your plugin and service ID to start reporting. Includes 8 chart types:SimplePie,
AdvancedPie,DrilldownPie,SingleLineChart,MultiLineChart,SimpleBarChart,AdvancedBarChart, and
CustomChart. Data is submitted asynchronously viaendstone.asyncio.ItemStack.translation_keyproperty for getting an item's localisation key.- Added support for Python 3.14.
Changed
- BREAKING:
NamespacedKeyhas been replaced byIdentifier<T>, a type-safe template that parses"namespace:key"
strings and defaults to the"minecraft"namespace. C++ plugins must update all references. In Python, identifiers
are simply strings. - BREAKING:
Result<T>has been removed. API methods now return values directly and throw exceptions on invalid
input viaPreconditionschecks. These exceptions signal programming errors (e.g., passing invalid arguments).
Affected areas include health, distance calculations, boss bar progress, colour construction, and scoreboard
operations. Python plugins are unaffected. - BREAKING: Dimension argument reordered and made optional in several APIs. Call sites may need updating.
- Health methods (
get_health,set_health,get_max_health,set_max_health) moved fromActortoMob, since
only mobs have health. PlayerDeathEventnow extendsActorDeathEventinstead ofPlayerEvent.- Default config file renamed from
endstone.tomltoendstone.default.toml. - Enchantment APIs now use typed
EnchantmentIdconstants instead of raw strings. - Dropped Python 3.9 support (end-of-life). Minimum version is now Python 3.10.
- Crash stack traces now filter out noise (CRT/runtime frames) and show demangled symbol names.
- Suppressed verbose BDS content logs and database auto-compaction messages to reduce log clutter.
Fixed
- Fixed log files not reopening properly after rotation, which could cause logs to be written to stale files.
- Fixed Python interpreter not being found reliably in multi-Python environments.
- Fixed a crash on server shutdown caused by C++ destructors running after the Python interpreter was already torn down.
- Fixed plugin loading failing in environments where
pipis not available (such asuv), sincepipis used at
runtime to install plugins from file.
Full Changelog: v0.10.18...v0.11.0
v0.10.18
Full Changelog: v0.10.17...v0.10.18
v0.10.17
Fixed
- Resolved several crashes.
Changed
- Verbose content logs are now suppressed.
Full Changelog: v0.10.16...v0.10.17
v0.10.16
v0.10.15
v0.10.14
Added
- Enable packet rate limiting by default to prevent packet flooding.
- Enable RakNet's connection frequency limiting.
Fixed
- Patched a vulnerability that allows malicious clients to continue sending packets after the connection is closed.
Full Changelog: v0.10.13...v0.10.14
v0.10.13
v0.10.12
Added
- Added support for BDS version 1.21.123.2.
Fixed
- Resolved a memory leak caused by chunks not unloading properly.
- Patched a vulnerability where a crafted
LoginPacketwith an excessively long certificate chain could crash the server. - Patched a vulnerability where a malformed
InventoryTransactionPacketcould freeze the server. - Fixed a crash related to custom dimensions (LeviStone).
- IP bans are now checked before the server processes player login.
Full Changelog: v0.10.11...v0.10.12