Releases: EndstoneMC/endstone
v0.7.0
This is an update that adds support for the latest version of Minecraft - Spring to Life
Game version: v1.21.70
Added
- Added support for Minecraft v1.21.70.
- Introduced the
Service
API, 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
ItemMeta
API, 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:
DataPacketReceiveEvent
andDataPacketSendEvent
have been renamed toPacketReceiveEvent
and
PacketSendEvent
, respectively. Both events now provide a packet ID and payload instead of adata
field. - BREAKING CHANGE:
Player::sendPacket
now requires a packet ID and payload as arguments instead of aPacket
- Add tint type for block to DevTools by @smartcmd in #161
Full Changelog: v0.6.2...v0.7.0
v0.6.2
This release addresses various bugs and crashes and improves stability.
Game version: v1.21.62
Added
- Added support for Minecraft v1.21.62.
- Added
DataPacketReceiveEvent
andDataPacketSendEvent
to allow viewing/intercepting low-level packet payloads. - Added
Actor::remove
to remove an actor from its associated dimension. - Dump item components & creative group by @smartcmd in #137
- Python API: Added
Dimension.get_highest_block_at
to get the top non-air block at a given coordinate.
Fixed
- Usages are now displayed correctly as percentages in
/status
command output. - Boss bars are now displayed correctly.
- Death messages are no longer sent when the
SHOW_DEATH_MESSAGES
game rule is set to false. - Command feedback is now suppressed when the
SEND_COMMAND_FEEDBACK
game rule is set to false. PlayerJoinEvent
is now triggered after the client is fully initialized.- Crash reporting now works properly on Linux.
Full Changelog: v0.6.1...v0.6.2
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