Releases: EndstoneMC/endstone
v0.5.7.1
This is a hotfix release that resolves various issues.
Game version: v1.21.50
Fixed
- Fixed an issue where the
event.is_cancelled
property in the Python binding was not writable. - Prevented player command execution from being printed to the console if the
PlayerCommandEvent
was already cancelled
by plugins.
Full Changelog: v0.5.7...v0.5.7.1
v0.5.7
This is a minor update that fixes various issues and adds new functionalities.
Game version: v1.21.50
Added
- Added getter and setter for name tags and score tags in the
Actor
class. - Added the
Actor::getType
function to retrieve actor types (e.g.,minecraft:pig
). - Added
isNameTagAlwaysVisible
andsetNameTagAlwaysVisible
methods to theActor
class to control the visibility of
name tags. - Implemented
/ban-ip
and/unban-ip
commands. - Added
Server::getIpBanList
for managing IP bans. - Added setters for fields in
ServerListPingEvent
by @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::getPlayerBanList
toServer::getBanList
. - Removed deprecated material from DevTools by @smartcmd.
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.