Changelog¶
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog and this project adheres to Semantic Versioning.
0.10.7 - 2025-10-14¶
Added¶
- Added support for BDS version 1.21.113.1.
Fixed¶
- Resolve a crash when joining a server using a grayscale skin with an alpha channel.
- Resolve an issue where item stacks containing blocks could not be given to players.
0.10.6 - 2025-10-02¶
Added¶
- Added support for BDS version 1.21.111.1.
0.10.5 - 2025-09-26¶
Added¶
- Added support for BDS version 1.21.102.1.
- Added
Level::getSeedto retrieve the seed of the current level. - Added the
/seedcommand to display the current level's seed. - Added
PlayerChatEvent::getFormatandPlayerChatEvent::setFormatto customize the message format.
Fixed¶
- Fixed a crash that could occur when a sub-client joined.
- Ensured
Inventory::setItemproperly updates the client. - Item data is now handled correctly during
ItemStackconstruction. ItemStack::setCountnow correctly updates the item count instead of clearing the entire stack.PlayerChatEvent::setMessagenow correctly displays the updated message to the client.
Changed¶
- If a command usage includes a parameter of type
message, it must be the final parameter. No additional parameters are allowed after it. - On Windows, if the automatic loopback exemption fails, a warning will be shown, but the server will no longer stop running.
0.10.4 - 2025-08-10¶
Fixed¶
- Death messages are now correctly displayed on the death screen.
- Resolved a crash that could occur after payload updates in
PacketReceiveEvent. - Resolved a crash when running
/reloadafter updating native plugins.
0.10.3 - 2025-08-06¶
Added¶
- Added support for BDS version 1.21.100.7
0.10.2 - 2025-08-05¶
Added¶
- Added support for game version 1.21.100
Fixed¶
- Fixed an issue where knockback is still applied when
ActorDamageEventis cancelled
0.10.1 - 2025-07-31¶
Fixed¶
- Fixed a crash that occurred when parsing a command with an empty message argument.
- Resolve an issue where an actor could be damaged again in their invulnerability window if the damage value from a
prior
ActorDamageEventhad been lowered.
0.10.0 - 2025-07-30¶
Added¶
- Added support for BDS version 1.21.95.1.
- Added ability to register commands as console-only by setting
consolein thedefaultfield. - Added
ItemStack::getDataandItemStack::setDatamethods for accessing item data values. - Added
LeavesDecayEventby @killcerr in #209 - Added
BlockCookEventby @killcerr in #212 - Added
PlayerItemHeldEventby @killcerr in #213 - Added
PlayerInteractEvent::Actionenum for distinguishing interaction types. - Added
BlockPistonExtendEventandBlockPistonRetractEventfor piston-related events. - Added
PlayerBedEnterEventandPlayerBedLeaveEventfor player sleeping events by @dreamguxiang in #196 - Added
Server::getProtocolVersionto retrieve the supported network protocol version. - Added
PlayerEmoteEvent::setMutedto suppress server broadcasts for player emotes. - Added
PlayerSkinChangeEvent, triggered when a player changes their in-game skin. - Added
Player::getEnderChestto get a player's Ender Chest inventory. - Added
Itementity for dropped items. - Added a new configuration option
commands.logtoendstone.tomlto control whether the server logs when a player executes a command.
Changed¶
PlayerInteractEventnow triggers on right- and left-clicks with both air and blocks.PlayerEmoteEventis now cancellable; cancelling prevents broadcasting to other players.- Player bans and IP bans are now checked before the server sends resource packs to clients.
PlayerPickupItemEvent::getItem()now returns anItementity instead of anItemStack.- BREAKING CHANGE (Python API):
Buttonclass has been moved from theActionFormclass to theendstone.formmodule. - BREAKING CHANGE (Python API):
PlayerJoinEvent,PlayerQuitEventandPlayerDeathEventnow useTranslatablefor messages by default. - Changed VENV_DIR to "$HOME/.virtualenvs/endstone" in
autoinstall.shandstart.shto avoid polluting users' home directory by @GyanPrakash2483 in #226
Fixed¶
PlayerKickEventno longer triggers whenPlayerLoginEventis cancelled.- Input (
stdin) can now be passed down from a parent process when Endstone is running as a subprocess. ActorDamageEventnow respects the invulnerable time after hurt and will be triggered by damage from a potion.- Fixed an error that could occur with
ActionFormwhen a button'sonClickis not set. - Use the correct colour for average TPS in
/statuscommand output by @MisledWater79 in #232 - Fixed a bug where the selector argument got cut short when parsing commands.
- Fixed
Server.nameproperty in Python API by @cenk in #220
0.9.4 - 2025-07-14¶
Added¶
- Added support for BDS version 1.21.94.2.
0.9.3 - 2025-07-04¶
Added¶
- Added support for BDS version 1.21.93.1.
0.9.2 - 2025-06-30¶
Added¶
- Added support for BDS version 1.21.92.1.
- Added
ChunkLoadEventandChunkUnloadEvent, which are called during chunk loading and unloading. - Added
PlayerPickupItemEvent, which is called when a player is about to pick up an item from the ground.
Fixed¶
Chunk::getZ()now returns the correct value.- Fixed a crash when accessing a registry entry multiple times.
Changed¶
ActorRemoveEventis no longer triggered ifActorSpawnEventis cancelled.PlayerTeleportEventis no longer triggered ifPlayerMoveEventorPlayerJumpEventis cancelled.
0.9.1 - 2025-06-19¶
Added¶
- Added support for BDS version 1.21.91.1.
Fixed¶
ItemType::getTranslationKeynow returns the correct translation key.
0.9.0 - 2025-06-17¶
Added¶
- Added support for BDS version 1.21.90.28 (preview).
- Added
PlayerConsumeItemEvent, triggered when a player consumes an item (e.g., food, milk bucket). - Added
PlayerMoveEvent, triggered when a player moves. - Added
PlayerJumpEvent, triggered when a player jumps. - Added the
ItemTypeAPI to retrieve inherent attributes of a known item type, such as max durability. - Added
Server::getPortandServer::getPortV6to retrieve server ports. - Expanded the
InventoryAPI with additional methods.
Changed¶
- BREAKING CHANGE: Renamed various fields in the
Skinclass:Skin::getSkinImage->Skin::getImageSkin::getSkinId->Skin::getId
- BREAKING CHANGE:
ItemStack::getTypenow returnsItemTypeinstead ofstd::string. You can still compare anItemTypewith a string. - BREAKING CHANGE:
PacketSendEventandPacketReceiveEventnow fire for both pre-login and post-login packets. Ensure null safety when accessing the player object, as it may benullduring pre-login.
0.8.2 - 2025-06-07¶
Added¶
- Added support for BDS version 1.21.84.1
Fixed¶
- Fixed an issue when parsing arguments in custom commands (#190)
- Ensure only certain server files are overwritten during update (#185)
0.8.1 - 2025-05-20¶
Added¶
- Added support for BDS version 1.21.82.1
Fixed¶
- Resolve compatibility issues with custom commands registered via the beta Script API (
init.customCommandRegistry.registerCommand). - Resolve a compatibility issue with LegacyScriptEngine when used in LeviStone, a downstream project.
- Fix #150 by allowing explicit permission grants for non-OP players to execute OP commands.
ActorDamageEventwill no longer fire if thedamage_sensordetermines that no damage should be dealt.BlockBreakEventwill no longer fire when a player uses an item that's not supposed to break blocks in Creative mode.
0.8.0 - 2025-05-11¶
Added¶
- Added support for BDS version 1.21.80.3
- Introduced a new Registry API for accessing the built-in definitions (e.g., all available enchantments via
Server::getEnchantmentRegistry) - Added ability to edit item enchantments via the
ItemMetaAPI - Added ability to get and set an item's repair cost and mark it as unbreakable via the
ItemMetaAPI
Fixed¶
- C++ plugins can now register event handlers for
PlayerDeathEvent
Changed¶
- Simplified
endstone::Resultfor improved error handling
0.7.3 – 2025-05-06¶
Added¶
- Added support for Minecraft v1.21.80.
- Added divider and header for
ActionForm.
Fixed¶
- Ensure SetLocalPlayerAsInitializedPacket is handled only once when a player joins (#171).
- Death message is now correctly localised on the client side.
- Python interpreter now launches correctly in multiprocessing scenarios.
0.7.2 – 2025-03-29¶
Added¶
- Added support for BDS version 1.21.71.01.
- Added
getDamageandsetDamagetoItemMetafor handling item durability. - Added
getRuntimeIdtoBlockDatato retrieve the runtime ID of a block permutation (also known as the network hash ID).
Fixed¶
- Fixed an issue where outgoing packet statistics were not written to
packet-statistics.txt.
0.7.1 - 2025-03-27¶
Added¶
- Added support for BDS version 1.21.70.04.
- Added new
setPayloadmethod inPacketSendEventandPacketReceiveEventfor editing packet contents. - Introduced a configuration file,
endstone.toml, for Endstone configurations.
Fixed¶
- Resolved a crash caused by sending packets within the
PacketSendEventhandler.
Changed¶
- Updated the behavior of server pack enforcement to match vanilla BDS: clients are not allowed to use custom packs when
texturepack-requiredis set totrueinserver.properties. This behavior can be overridden by settingallow-client-packsinendstone.toml.
0.7.0 - 2025-03-25¶
Added¶
- Added support for Minecraft v1.21.70.
- Introduced the
ServiceAPI, enabling plugins to register services that can be utilized by other plugins. - Implemented dependency resolution for the plugin manager.
- Anonymous enums are now supported in command registration. For example, instead of writing
/home (add|remove)<action: HomeAction>, you can now simply write/home <add|remove>. - Inventory API: Added a basic
ItemMetaAPI, allowing you to get and set the display name and lore of an item. - Inventory API: Introduced various methods to get and set items in armor slots as well as main/off-hand slots.
- Inventory API: Added methods to get and set the selected hotbar slot.
Fixed¶
- Fixed a crash caused by a conflict with the event system of the scripting API.
Changed¶
- BREAKING CHANGE:
DataPacketReceiveEventandDataPacketSendEventhave been renamed toPacketReceiveEventand
PacketSendEvent, respectively. Both events now provide a packet ID and payload instead of adatafield. - BREAKING CHANGE:
Player::sendPacketnow requires a packet ID and payload as arguments instead of aPacketobject.
0.6.2 - 2025-03-09¶
Added¶
- Added support for Minecraft v1.21.62.
- Added
DataPacketReceiveEventandDataPacketSendEventto allow viewing/intercepting low-level packet payloads. - Added
Actor::removeto remove an actor from its associated dimension. - Python API: Added
Dimension.get_highest_block_atto get the top non-air block at a given coordinate.
Fixed¶
- Usages are now displayed correctly as percentages in
/statuscommand output. - Boss bars are now displayed correctly.
- Death messages are no longer sent when the
SHOW_DEATH_MESSAGESgame rule is set to false. - Command feedback is now suppressed when the
SEND_COMMAND_FEEDBACKgame rule is set to false. PlayerJoinEventis now triggered after the client is fully initialized.- Crash reporting now works properly on Linux.
0.6.1 - 2025-02-20¶
Fixed¶
- Resolved a crash caused by
ProxiedCommandSender
0.6.0 – 2025-02-19¶
Added¶
- Added support for Minecraft v1.21.60.
- Added more liquid-related data to the DevTools by @smartcmd in #113.
- Added Sentry for crash reporting.
- Added
Player::playSound,Player::stopSound, andPlayer::stopAllSoundsfor client-side sound playing. - Added
Player::isSneakingandPlayer::setSneakingto toggle the sneaking mode of a player. - Added
Player::isSprintingandPlayer::setSprintingto toggle the sprinting mode of a player. - Added
PlayerGameModeChangeEvent, triggered when a player's game mode changes. This event is cancellable. - Added
PlayerEmoteEvent, triggered when a player sends an emote. - Added
PlayerRespawnEvent, triggered when a player respawns after death. - Added
ActorDamageEvent, triggered when a living entity receives damage. You can cancel this event to stop the damage from being effective. - Added
ActorExplodeEvent, triggered when a mob (e.g. Creeper) explodes. You can cancel this event to stop the explosion. - Added more statistics to the
/statuscommand (e.g., memory usage, chunk status, etc.). - Added damage source to
ActorDeathEventandPlayerDeathEventto retrieve information about the damager. - Added a basic chunk API.
- Added block collision data to the DevTools by @smartcmd in #132.
Fixed¶
- Fixed the logic of finding the Python executable associated with the current interpreter by @killcerr in #114.
- Fixed the logic for parsing the
messagecommand parameter type.
Changed¶
- Python API: Events that are cancellable now inherit from
Cancellable. You can check if an event is cancellable by usingisinstance(event, Cancellable). Dimension::getBlockAtnow returns a pointer to aBlockdirectly instead of aResultwrapper, making the interface more concise. If the requested block is in an unloaded or unpopulated chunk, it returns an empty block.
0.5.7.1 - 2024-12-24¶
Fixed¶
- Fixed an issue where the
event.is_cancelledproperty in the Python binding was not writable. - Prevented player command execution from being printed to the console if the
PlayerCommandEventwas already cancelled by plugins.
0.5.7 - 2024-12-23¶
Added¶
- Added getter and setter for name tags and score tags in the
Actorclass. - Added the
Actor::getTypefunction to retrieve actor types (e.g.,minecraft:pig). - Added
isNameTagAlwaysVisibleandsetNameTagAlwaysVisiblemethods to theActorclass to control the visibility of name tags. - Implemented
/ban-ipand/unban-ipcommands. - Added
Server::getIpBanListfor managing IP bans. - Added setters for fields in
ServerListPingEventby @theaddonn. - Added a new color code (
§v).
Fixed¶
- Prevented a crash caused by killing a player in a form callback, which invalidated the player object.
- Fixed an issue where the player inventory was not updated after calling
clear. - Fixed loading of encrypted resource packs.
- Ensured the correct plugin loader is selected when loading from a file by third-party plugin loaders by @engsr6982.
- Ensured players with matching IP addresses are immediately kicked upon banning.
Changed¶
- Renamed
Server::getPlayerBanListtoServer::getBanList. - Removed deprecated material from DevTools by @smartcmd.
0.5.6 - 2024-12-06¶
Added¶
- Added support for Minecraft v1.21.50 (The Garden Awakens).
- Added
Inventory::getItemandInventory::setItemmethods to manipulate a player's inventory. - Added
Inventory::getContentsmethod to retrieve all items in an inventory. - Added
/banand/unbancommands to add or remove players from the deny list. - Added
/banlist [ips|players]command to list all banned players and/or IPs. - Added
PluginManager::loadPluginto allow third-party plugin loaders to load plugins from single files instead of directories. #98
Fixed¶
- Fixed an issue where
block_palette.nbtwas dumped twice in the DevTools.
Changed¶
- Added support for loading a mixture of folder packs listed in
world_resource_packs.json(the conventional method) and zipped packs in.zipor.mcpackformat placed underresource_packs.
0.5.5 - 2024-10-26¶
Added¶
- Added support for Minecraft v1.21.40 (Bundles of Bravery).
- CommandSender will now be downcast to the correct derived type on the Python side.
- Added the
Objective::isDisplayedmethod to check if an objective is being displayed in any of the scoreboard slots. - Added
Server::getOnlineModeto check if the server is running with authentication enabled. - Added
Actor::getScoreboardTagsto get the list of tags added to the actor. - Added
Actor::addScoreboardTagandActor::removeScoreboardTagto modify the actor's tags. - Added support for loading zipped resource packs. You can now put
.zipand.mcpackresource packs under theresource_packsfolder, and they will be loaded automatically when the server starts. - Added support for encrypted resource packs. You can put the keys in the
.zip.keyor.mcpack.keyformat next to the resource packs. - Added the
ScriptMessageEvent, which will get called when a script message is sent using the/scripteventcommand. - Added
Server::getLanguageto translate a message into a specific locale. - Added
Actor::getHealth,Actor::setHealth, andActor::getMaxHealthfor getting and setting actor health. - Added
CommandSenderWrapperto capture the output of command execution for any command sender. - Added
Player::spawnParticleto send a particle effect that is only visible to the player.
Changed¶
- Error messages from DevTools, when OpenGL is not available, are now suppressed.
- The return type of several methods has been changed to
endstone::Resultto include error messages, which will automatically throw exceptions with the same messages on the Python side.
Fixed¶
- Fixed a crash that occurred while handling server ping requests (#60).
0.5.4.1 - 2023-09-19¶
Fixed¶
- Fixed a crash that could occur when the player uses emotes.
0.5.4 - 2024-09-19¶
Added¶
- Added support for Minecraft v1.21.30.
- Added support for Python 3.13.
- Added biome data to the DevTools by @CoolLoong.
Changed¶
- BREAKING CHANGE:
Player::performCommandnow executes the command as a Player to resolve #53. This means the command execution will now depend on the player's permissions as operator permissions are no longer granted. If you still want to have the player perform a command with elevated permissions, consider usingServer::dispatchCommandto executeexecute as {player_name} run {command}.
Fixed¶
Actor::isOnGround,Actor::isInWater, andActor::isInLavanow return the correct values.- Fixed a typo in the documentation by @thatgurkangurk.
- Fixed the command parser logic for chained commands.
- Fixed a server crash when spawning a simulated player due to the absence of an invalid network identifier.
0.5.3 - 2024-09-12¶
Added¶
- Added support for Minecraft v1.21.23.
- Introduced the
BlockDataclass, which encapsulates both the block type and a specific state from all possible block states. - Block types and block states can now be used as command arguments.
- Added
PlayerKnockbackEvent, triggered when a player receives knockback. Developers can modify the knockback that the player will receive. - Added
PlayerKickEvent, triggered when a player is kicked from the server, allowing for customization of kick messages. - Introduced the
BlockStateclass, representing a snapshot of a block at a specific point in time. PlayerJoinEventandPlayerQuitEventnow include getter and setter methods for customizing join/quit messages.- Integrated bStats metrics.
Changed¶
- BREAKING CHANGE: Renamed
Server::getNewScoreboardtoServer::createScoreboardfor consistency with other methods likecreateBossbarandcreateBlockData. - Lifted the restriction on the
/reloadcommand for console use. It can now be executed in-game.
Fixed¶
- Enforced the use of libc++ for C++ plugins on Linux to resolve symbol errors.
Player::setExpProgressnow correctly sets experience progress without precision loss.- Fixed an issue where death messages were being sent to players twice.
- Resolved a crash when calling
ItemStack::getTypeon an item fromPlayerInteractEventwhen the player interacts with a block with bare hands. PlayerInteractEvent::hasItemnow correctly returnsfalseif the player has no item in hand when interacting.
0.5.2 - 2024-08-30¶
Added¶
- Support for Minecraft v1.21.22.
- Boss bar API.
Block::getRelativeto get a block relative to a block face.BlockBreakEventtriggered when a player breaks a block.BlockPlaceEventtriggered when a player places a block against another block.PlayerInteractEventtriggered when a player right-clicks a block.PlayerInteractActorEventtriggered when a player interacts with an actor.- An auto installer script for installing Endstone on Linux (thanks to @legitbox).
Changed¶
- Check chunk states before getting the block in
Dimension::getBlockAt.
Fixed¶
- #38 - Plugins can now be properly loaded inside a virtual environment on Linux.
0.5.1 - 2024-08-24¶
Added¶
- Support for Minecraft v1.21.20.
Player::getScoreboardandPlayer::setScoreboardmethods to allow each player to have their own scoreboard ( separate from the main shared scoreboard).PlayerTeleportEvent, which is called when a player is teleported from one location to another.Actor::teleportmethod to teleport an actor to a given location or actor.- The server can now be gracefully shut down when
Ctrl+Cis pressed. /statuscommand to show the uptime and performance of the server.- Basic network API to allow plugins to send custom packets. Currently, only
SpawnParticleEffectPacketis supported. /reloadcommand to reload plugins in addition to addons.Player::sendToastmethod to send a toast message to players.- Furnace-related item data to DevTools by @smartcmd.
Changed¶
Player::isOpandPlayer::setOpmethods are now consistent with the similar methods in the scripting API.- The fix for the warning message about empty packets is now redundant and has been removed.
- BREAKING CHANGE:
Server::getLevelshas been replaced byServer::getLevel. - BREAKING CHANGE:
Player::getDeviceIdnow returns a string object instead of a UUID object, as it is not guaranteed to be a UUID on all platforms.
Fixed¶
- #29 - Commands will no longer be sent to a player who doesn't have
- #32 - Creating an action form without an
on_submitcallback will no longer crashes the server - Plugin config files are now always read and written in UTF-8 encoding.
- Added a missing parameter to
ActionForm::addButton. - Action forms without any buttons can now be displayed correctly on the client side.
- The Python executable can now be located in multiple possible locations on Linux.
0.5.0 - 2024-07-29¶
Added¶
- Support for Minecraft v1.21.3.
Actor::getIdfunction to get an actor's unique id, persisting between server runs.Actor::isDeadfunction to check if an actor is marked for removal post-death.ActorTeleportevent that triggers when an entity teleports (e.g., Enderman, Wolf).Mob::isGlidingfunction to check if a living entity is gliding.Player::sendTitleandPlayer::resetTitlefunctions for sending and resetting an on-screen title.Player::transferfunction to transfer a player to another server.Player::getXuidto get the Xbox User ID (XUID) of the player.- Python: package metadata can now be used as a fallback for plugin metadata.
- Python:
isinstancefunction can now be used to check if aCommandSenderis aPlayerorConsoleCommandSender. - Experimental Scoreboard API.
- Experimental Form API.
Changed¶
Playerclass now inherits from theMobclass instead ofActorclass.- BREAKING CHANGE: Plugin names should only contain lowercase letters, numbers, and underscores. Use the prefix property to display a different name for the plugin logger.
- BREAKING CHANGE: The
player.pingproperty now returns anintinstead ofdatetime.timedelta.
Fixed¶
- Fixed issue where
Server::setMaxPlayerswould crash due to a change in the internal struct in BDS. - Fixed issue that python executable cannot be located when running in a virtual environment.
0.4.10 - 2024-07-10¶
Added¶
- Support for Minecraft v1.21.2.
Player::getSkinmethod to retrieve the current skin of a player.- Support for recipes with output items possessing NBT (Named Binary Tag) tags. These tags are now also included in the dumped data.
Fixed¶
- Issue with shaped recipes. Recipes that have item tags as input (instead of item names) can now be dumped correctly.
0.4.9 - 2024-07-05¶
Added¶
- Support for Minecraft v1.21.1.
ActorDeathEventandPlayerDeathEventtriggers when an actor or a player dies.Player::giveExpandPlayer::giveExpLevelsfunctionality for adding experience points/levels added.Player::getAllowFlightandPlayer::setAllowFlightto check or grant the ability for players not in creative mode to fly.Player::setFlyingto toggle a player's flying status.- An overload of
sendMessageto allow sending of translatable messages with parameters that will be localized on the client side. Player::getExpProgressandPlayer::setExpProgressto get or set a player's progress towards the next level.Player::getExpLevelandPlayer::setExpLevelto get or set a player's current experience level.Player::getTotalExpto get the total amount of experiences a player has collected.Player::getLocaleto get the player's current locale.Player::getDeviceIdandPlayer::getDeviceOSto get information related to player's device.- A DevTools to help community projects get necessary data from BDS (currently only available on Windows). To open the
DevTools, use command
/devtoolsin the console.
Changed¶
Permissible.opproperty in the python binding is renamed toPermissible.is_op.- Crash dumps will now print system and version info in addition to stacktraces.
Fixed¶
- Suppressed warning message about empty UDP packets from the output.
0.4.8.1 - 2024-06-15¶
Added¶
- Support Minecraft v1.21 (Tricky Trials)
Fixed¶
Player::getPingnow returns correct value instead of -1 on Linux.Player::isFlyingnow works correctly in all conditions.- Calling python binding of
Server::getPlayerwith uuid no longer crashes. - Fixed a regression in vanilla command permissions.
- Permission attachment now works as expected.
0.4.7 - 2024-06-13¶
Added¶
Player::performCommandallows a player to execute a given command. During the command execution, the player is temporarily granted the operator permission.Level::getDimensionandLevel::getDimensionsfor getting dimensions within a specific level.Actor::getDimensionfor getting the dimension that an actor resides in.Player::getGameModeandPlayer::setGameModefor getting and setting a player's game mode.- Plugin configuration for Python plugins.
- Added more struct info by @Duckos-Mods in #11.
- World seed will no longer be sent to the client when
client-side-chunk-generation-enabledis disabled inserver.properties. - Command permissions are now checked before its parsing.
Server::dispatchCommandallows one to dispatch a command on the server.Server::getMaxPlayersandServer::setMaxPlayersfor getting and setting the maximum amount of players allowed to be logged in.Server::getPlayernow also accepts a string argument to get a player by name instead of UUID.
Changed¶
- Changed logging level look-up from using a hashmap to using a switch by @Duckos-Mods in #12
- Endstone no longer requires the presence of debug symbols at runtime.
Fixed¶
Actor::getVelocitynow returns the correct velocity when the actor rides a vehicle.- Python plugin loader now works correctly with Python 3.9.
0.4.6 - 2024-05-15¶
Fixed¶
- Improved the detection of Python executable.
0.4.5 - 2024-05-14¶
Added¶
- Bootstrap now protects specific files from overwriting during update.
- Python plugin loader now loads all
*.whlplugins under theplguinsfolder and their dependencies during server start up.
Fixed¶
- Scheduler now works on Linux.
0.4.3 - 2024-05-13¶
Added¶
Server::getOnlinePlayersfor getting all online players.Player::kickfor kicking a specific player with a custom message.Player::getPingfor getting the average latency of a connected player.Actor::getLocationandActor::getVelocityfor getting the location and velocity of an actor respectively.Actor::getLevelfor getting theLevelthat an actor resides in.
Changed¶
Levelis no longer created for eachDimensionin a Minecraft world. Instead, oneLevelnow manages multipleDimensions.Player::getAddressnow returns aSocketAddressinstead ofstd::string.Player::getPortwas removed, useSocketAddress::getPortinstead.- Executable
endstonenow accepts--server-folderinstead of--install-folder, and--no-confirminstead of--install. - Endstone server will now ask the user whether to update the Bedrock Dedicated Server if an older version is found.
0.4.2 - 2024-04-30¶
Added¶
Level::getDimensionfor getting the dimension of a specific level.Player::getAddressandPlayer::getPortfor getting the socket address and port of a specific player, respectively.- Logs are now written to
logs/latest.logwith rotations. - Basic scheduler implementation, currently supporting only synchronized task execution.
PlayerLoginEventis called when a player attempts to log in.
Changed¶
- Support for Minecraft v1.20.81 (Bedrock)
Fixed¶
- Server no longer crashes when the weather is changed on Linux.
0.4.1 - 2024-04-24¶
This release focuses on supporting game version v1.20.80, which adds several new features.
Additionally, we add a few useful functions to Player and Server.
Added¶
- Commands executed by players are now logged to the console.
- Message of
/saycommand will be logged to the console. PlayerCommandEventis called when a player attempts to execute a command.Server::broadcastMessagefor broadcasting messages to all players.BroadcastMessageEventis called when a message is broadcast by the server.
Changed¶
- Support for Minecraft v1.20.80 - Armored Paws (Bedrock)
Fixed¶
- Player permissions are recalculated when the op status is changed.
- Incorrect UUID for Players corrected.
0.4.0 - 2024-04-20¶
In this release, we added an event system and several basic interfaces for game objects like Level, Actor
and Player.
Added¶
- Event system that allows plugins to listen for specific events.
ServerLoadEventis called when a server is started up.Plugin::registerEventHandlerfor registering an event handler in C++ plugins.- Decorator
@event_handlerfor registering an event handler in Python plugins. PluginEnableEventandPluginDisableEventare called when a plugin is enabled or disabled.ServerPingListEventcan be listened to for customizing how the server appears in the client list.ServerCommandEventis called when the server executes a command.WeatherChangeEventandThunderChangeEventare called when the weather or thunder status changes in a level.- Basic interface
endstone::Levelfor a level/world. - Basic interface
endstone::Actorfor entities/actors. - Basic interface
endstone::Playerfor players. Server::getPlayerfor getting a player instance by UUID.Player::sendPopupandPlayer::sendTipfor sending popup and tip messages.- Stack traces are now printed to the console when an unrecoverable error occurs.
PlayerJoinEventandPlayerQuitEventare called when a player joins and leaves the server.ActorSpawnEventis called when an actor is spawned in the level.ActorRemoveEventis called when an actor is removed from the level.PlayerChatEventis called when a player sends a message.
Changed¶
- Singletons are now managed using
entt::locator. - Macro
ENDSTONE_PLUGINis improved to simplify the definition of plugin metadata. ColorFormatandGameModehave been moved fromendstone.utiltoendstonein the Python package.- Wheels are now built and released with
RelWithDebInfoconfiguration to enable stack trace printing. - Support for Minecraft v1.20.73 (Bedrock)
Fixed¶
- Server no longer crashes when
/listdcommand is executed.
0.3.0 - 2024-03-21¶
This is the second release of Endstone with a focus on the permission system and improving the plugin loading mechanisms.
Added¶
- Basic permission systems.
- Enforced Plugin API version checks for C++ and Python plugins to ensure ABI/API compatibility.
- Commands are now defined within the plugin metadata which will be automatically registered when the associated plugin is enabled.
- PluginDescription properties are extended to support
website,load_order,depend,soft_depend,load_before, andprovides.
Changed¶
- Improved
ENDSTONE_PLUGINmacro to further simplify the definition of plugin metadata. - Plugin names and websites are now displayed when using
/version [plugin: PluginName]. - Support for Minecraft v1.20.72 (Bedrock)
Fixed¶
- C++ plugin loader now respects the
prefixproperty of a plugin.
0.2.0 - 2024-03-19¶
Hello World! This is the first release of Endstone.
Added¶
- Basic plugin loader for C++ and Python plugins.
- Basic command system that allows plugins to register custom commands.