Releases: EndstoneMC/endstone
v0.6.1
This is a hotfix that resolves a crash that could happen during command execution.
Game version: v1.21.60
Fixed
- Resolved a crash caused by
ProxiedCommandSender
Full Changelog: v0.6.0...v0.6.1
v0.6.0
Game version: v1.21.60
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::stopAllSounds
for client-side sound playing. - Added
Player::isSneaking
andPlayer::setSneaking
to toggle the sneaking mode of a player. - Added
Player::isSprinting
andPlayer::setSprinting
to 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
/status
command (e.g., memory usage, chunk status, etc.). - Added damage source to
ActorDeathEvent
andPlayerDeathEvent
to 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
message
command 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::getBlockAt
now returns a pointer to aBlock
directly instead of aResult
wrapper, making the
interface more concise. If the requested block is in an unloaded or unpopulated chunk, it returns an empty block.
New Contributors
- @killcerr made their first contribution in #114
- @droptablemustafa made their first contribution in #118
- @kaniteru made their first contribution in #124
Full Changelog: v0.5.7.1...v0.6.0
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