Releases: EndstoneMC/endstone
v0.5.6
This is a minor update that adds support for the latest version of Minecraft - The Garden Awakens!!
Game version: v1.21.50
Added
- Added support for Minecraft v1.21.50 (The Garden Awakens).
- Added
Inventory::getItem
andInventory::setItem
methods to manipulate a player's inventory. - Added
Inventory::getContents
method to retrieve all items in an inventory. - Added
/ban
and/unban
commands to add or remove players from the deny list. - Added
/banlist [ips|players]
command to list all banned players and/or IPs. - Added
PluginManager::loadPlugin
to allow third-party plugin loaders to load plugins from single files instead of
directories. #98
Fixed
- Fixed an issue where
block_palette.nbt
was 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.zip
or.mcpack
format placed underresource_packs
.
v0.5.5
This is a minor update that adds support for the latest version of Minecraft - Bundles of Bravery!!
Game version: v1.21.40/41
Added
- Added support for Minecraft v1.21.40/41 (Bundles of Bravery).
- CommandSender will now be downcast to the correct derived type on the Python side.
- Added the
Objective::isDisplayed
method to check if an objective is being displayed in any of the scoreboard slots. - Added
Server::getOnlineMode
to check if the server is running with authentication enabled. - Added
Actor::getScoreboardTags
to get the list of tags added to the actor. - Added
Actor::addScoreboardTag
andActor::removeScoreboardTag
to modify the actor's tags. - Added support for loading zipped resource packs. You can now put
.zip
and.mcpack
resource packs under
theresource_packs
folder, and they will be loaded automatically when the server starts. - Added support for encrypted resource packs. You can put the keys in the
.zip.key
or.mcpack.key
format next to the
resource packs. - Added the
ScriptMessageEvent
, which will get called when a script message is sent using the/scriptevent
command. - Added
Server::getLanguage
to translate a message into a specific locale. - Added
Actor::getHealth
,Actor::setHealth
, andActor::getMaxHealth
for getting and setting actor health. - Added
CommandSenderWrapper
to capture the output of command execution for any command sender. - Added
Player::spawnParticle
to 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::Result
to 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).
New Contributors
- @Loudbooks made their first contribution in #68
Full Changelog: v0.5.4.1...v0.5.5
v0.5.4.1
This is a hotfix release that resolves a crash that could occur.
Game version: v1.21.30
Fixed
- Fixed a crash that could occur when the player uses emotes.
Full Changelog: v0.5.4...v0.5.4.1
v0.5.4
This is a minor update that adds the support for the latest version of Minecraft
Game version: v1.21.30
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::performCommand
now 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::dispatchCommand
to execute
execute as {player_name} run {command}
.
Fixed
Actor::isOnGround
,Actor::isInWater
, andActor::isInLava
now 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.
New Contributors
- @thatgurkangurk made their first contribution in #50
- @CoolLoong made their first contribution in #58
Full Changelog: v0.5.3...v0.5.4
v0.5.3
This is a minor update that fixes a few crashes.
Game version: v1.21.23
Added
- Added support for Minecraft v1.21.23.
- Introduced the
BlockData
class, 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
BlockState
class, representing a snapshot of a block at a specific point in time. PlayerJoinEvent
andPlayerQuitEvent
now include getter and setter methods for customizing join/quit messages.- Integrated bStats metrics.
Changed
- BREAKING CHANGE: Renamed
Server::getNewScoreboard
toServer::createScoreboard
for consistency with other
methods likecreateBossbar
andcreateBlockData
. - Lifted the restriction on the
/reload
command 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::setExpProgress
now 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::getType
on an item fromPlayerInteractEvent
when the player interacts
with a block with bare hands. PlayerInteractEvent::hasItem
now correctly returnsfalse
if the player has no item in hand when interacting.
Full Changelog: v0.5.2...v0.5.3
v0.5.2
This is a minor update introducing the new Boss Bar API and more events.
Game version: v1.21.22
Added
- Support for Minecraft v1.21.22.
- Boss bar API.
Block::getRelative
to get a block relative to a block face.BlockBreakEvent
triggered when a player breaks a block.BlockPlaceEvent
triggered when a player places a block against another block.PlayerInteractEvent
triggered when a player right-clicks a block.PlayerInteractActorEvent
triggered 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.
New Contributors
Full Changelog: v0.5.1...v0.5.2
v0.5.1
This is an exciting update to support Minecraft v1.21.20 in the absence of PDB file.
Game version: v1.21.20
Added
- Support for Minecraft v1.21.20.
Player::getScoreboard
andPlayer::setScoreboard
methods 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::teleport
method to teleport an actor to a given location or actor.- The server can now be gracefully shut down when
Ctrl
+C
is pressed. /status
command to show the uptime and performance of the server.- Basic network API to allow plugins to send custom packets. Currently, only
SpawnParticleEffectPacket
is supported. /reload
command to reload plugins in addition to addons.Player::sendToast
method to send a toast message to players.- Furnace-related item data to DevTools by @smartcmd.
Changed
Player::isOp
andPlayer::setOp
methods 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::getLevels
has been replaced byServer::getLevel
. - BREAKING CHANGE:
Player::getDeviceId
now 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_submit
callback 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.
New Contributors
Full Changelog: v0.5.0...v0.5.1
v0.5.0
This is a major update to support Minecraft v1.21.3 with the new scoreboard and form API.
Game version: v1.21.3
Added
- Support for Minecraft v1.21.3.
Actor::getId
function to get an actor's unique id, persisting between server runs.Actor::isDead
function to check if an actor is marked for removal post-death.ActorTeleport
event that triggers when an entity teleports (e.g., Enderman, Wolf).Mob::isGliding
function to check if a living entity is gliding.Player::sendTitle
andPlayer::resetTitle
functions for sending and resetting an on-screen title.Player::transfer
function to transfer a player to another server.Player::getXuid
to get the Xbox User ID (XUID) of the player.- Python: package metadata can now be used as a fallback for plugin metadata.
- Python:
isinstance
function can now be used to check if aCommandSender
is aPlayer
orConsoleCommandSender
. - Experimental Scoreboard API.
- Experimental Form API.
Changed
Player
class now inherits from theMob
class instead ofActor
class.- 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.ping
property now returns anint
instead ofdatetime.timedelta
.
Fixed
- Fixed an issue where
Server::setMaxPlayers
would crash due to a change in the internal struct in BDS. - Fixed an issue that python executable cannot be located when running in a virtual environment.
v0.4.10
This is an update to support Minecraft v1.21.2 with a few bug fixes and minor enhancements.
Game version: v1.21.2
Added
- Support for Minecraft v1.21.2.
Player::getSkin
method 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.
v0.4.9
We are excited to introduce the new DevTools, which provides an easy and friendly way to dump data from BDS!
Game version: v1.21.1
Added
- Support for Minecraft v1.21.1.
ActorDeathEvent
andPlayerDeathEvent
triggers when an actor or a player dies.Player::giveExp
andPlayer::giveExpLevels
functionality for adding experience points/levels added.Player::getAllowFlight
andPlayer::setAllowFlight
to check or grant the ability for players not in creative mode
to fly.Player::setFlying
to toggle a player's flying status.- An overload of
sendMessage
to allow the sending of translatable messages with parameters that will be localized on the
client side. Player::getExpProgress
andPlayer::setExpProgress
to get or set a player's progress towards the next level.Player::getExpLevel
andPlayer::setExpLevel
to get or set a player's current experience level.Player::getTotalExp
to get the total amount of experiences a player has collected.Player::getLocale
to get the player's current locale.Player::getDeviceId
andPlayer::getDeviceOS
to get information related to the 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/devtools
in the console.
Changed
Permissible.op
property in the python binding is renamed toPermissible.is_op
.- Crash dumps will now print system and version info in addition to stack traces.
Fixed
- Suppressed warning message about empty UDP packets from the output.
Full Changelog: v0.4.8...v0.4.9