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.
Each release is associated with a specific API version,
and any changes to API will have a prefix (API)
.
Unless otherwise specified, any version comparison below is the comparison of server version, not API version.
- (API) Introduced
AllayAPI#isDevBuild
to let plugin know if the current server is a dev build. - (API) Introduced
BlockCustomTags#WATER
andBlockCustomTags#LAVA
to allow checking if a block is water or lava easier. This is because there are two types of water (minecraft:water
andminecraft:flowing_water
) and lava (minecraft:lava
andminecraft:flowing_lava
) in vanilla. - (API) Introduced
Dimension#getLiquid
,Dimension#setLiquid
andDimension#removeLiquid
methods to help plugin operate liquid easier. - (API) Introduced
Dimension#addLevelSoundEvent(Vector3ic pos, SoundEvent soundEvent, int extraData)
andDimension#addLevelSoundEvent(Vector3fc pos, SoundEvent soundEvent, int extraData)
. - (API) Added
EntityTrampleFarmlandEvent
. EntityTrampleFarmlandEvent is called when a farmland is trampled by an entity. - (API) Added
BlockGrowEvent
which will be called when crops grow. - (API) Added two overloads
LightService#getInternalLight(Vector3ic)
andLightService#getSkyLight(Vector3ic)
, they have the same functionality asLightService#getXXXLight(int, int, int)
. - (API) Implemented beacon block, and several related interfaces are added to api module.
- (API)
BlockContainer#getBlockPos
andBlockContainer#setBlockPos
now return/requirePosition3ic
instead ofVector3ic
, this enables us to get the dimension information of aBlockContainer
. - Implemented trapdoor except redstone feature (Redstone feature requires the implementation of redstone system).
- Implemented sponge and wet sponge.
- Implemented farmland and hoe.
- Implemented most of the crops, including wheat, potato, carrot, beetroot, melon and pumpkin.
- Introduced sentry to capture exception and upload them to sentry server automatically, which helps us to track and fix bug more efficiently. Sentry is only enabled in non-dev version.
- Server version will also be uploaded to bStats now.
- Introduced
Extension#afterServerStarted
method which will be called after the server is started.
- (API) Removed
BlockFace#toStairDirectionValue
, this method shouldn't exist in api module. - (API)
BlockTags
,BlockCustomTags
,ItemTags
andItemCustomTags
are now annotated with@MinecraftVersionSensitive
as these tags may change between different versions. - (API) The second parameter of
BlockBaseComponent#onEntityFallOn
now acceptsBlockStateWithPos
instead ofBlockState
. - (API)
EntityBaseComponent#getBlockStateStandingOn
now returnBlockStateWithPos
instead ofBlockState
. - (API) Removed
BlockFace#horizontalIndex
which is useless. - (API) Removed
ScoreboardService#ServerEventListener
as it is not supposed to be touched by plugin. - Removed useless class
PackageClassLoaderUtils
, dependencyorg.reflections.reflections
is also removed. - Added
-dev
suffix to api version in development build. - Changed
ContainerActionProcessorHolder
to a final class instead of an interface, because this abstraction is meaningless.
- (API)
BlockHangingSignBehavior
now extendsBlockEntityHolderComponent<BlockEntityHangingSign>
which was forgotten to be added. - Fixed the bug that interacting with door doesn't have any sound.
- Waxing copper-made block using honeycomb won't call
BlockFadeEvent
now. - Fixed the bug that player can still open enchant table even if he is sneaking.
0.1.2 (API 0.3.0) - 2024-12-31
- (API) Added an extra argument to
Dimension#breakBlock
method to control if the block breaking particle should be played. - (API) Added
LiquidHardenEvent#setHardenedBlockState
method to allow changing the hardened block state. - (API) Introduced
MathUtils#normalizeIfNotZero
method to normalize a vector only if it is not zero, this method prevents NaN caused byVector3fc#normalize
method. - (API) Introduced
EntityBaseComponent#computeLiquidMotion
method to control whether an entity has liquid motion. - (API) Introduced
EntityDamageComponent#hasDrowningDamage
method to control whether an entity has drowning damage. - Added liquid motion for water and lava. Now entity will be moved by liquid flow if it is in the liquid.
- Pos sent by the client will only be handled when the pos is changed, as
PlayerAuthInputPacket
is sent every tick but the player may not move every tick.
- (API) Removed
BlockFace#getBlockFaceByStairDirectionValue
method, some fields inVoxelShapes
are also private for better maintainability now. - (API) Remove
fat-aabb-margin
andstepping-offset
fields from server settings as these properties shouldn't be touched by users. - Introduced tag name constants for where a large number of NBT saving and reading are involved. This improved the maintainability of the project.
- Introduced better names for some of the fields in
PlayerAuthInputPacketProcessor
, this improved the readability of the code.
- (API) Corrected the return type of
Dimension#breakBlock(Vector3ic, ItemStack, Entity)
fromvoid
toboolean
. Some overloads for this method are also added. - (API) Fixed incorrect bit operations in
BlockLiquidBaseComponent#getLiquidBlockState
andBlockLiquidBaseComponent#getLiquidBlockState#getDepth
, although it seems that they do not cause any issues. - Block breaking particle won't be sent if block is broken by flowing liquid.
- Water placed in nether dimension will disappear immediately now.
Pos
,Motion
andRotation
in entity nbt are now saved as list tag instead of compound tag to match vanilla. This also fixed the bug that entities being spawned in incorrect position when placing structure using/structure
command. Please note that this change is not backward compatible and will break the old world and player data.- Fixed several NaNs caused by
Vector3fc#normalize
methods in the physics engine, and now setting the motion/location of an entity to a vector which contains NaN will result in an exception. - EntityItem now won't have drowning damage when it is in water, this bug causes entity item died after a period of time in water.
ServerboundLoadingScreenPacket
won't spam warnings in the console when switching dimension now.- Fixed the bug that sometimes there may be
NaN
values inPlayerAuthInputPacket
, this bug is also confirmed in df-mc (issue#425).
0.1.1 (API 0.2.0) - 2024-12-29
- (API) Added
TextFormat#MATERIAL_RESIN
. - (API) Entity#teleport method now accepts an extra
Reason
argument. - (API) Added structure API by @harry-xi.
- (API) Added a number of new methods to
BlockLiquidBaseComponent
. - (API) Added
LiquidFlowEvent
,LiquidDecayEvent
andLiquidHardenEvent
. - (API) Added
BlockBehavior#afterPlaced
andBlockBehavior#afterReplaced
that are correspond toBlockBehavior#onPlace
andBlockBehavior#onReplace
. - (API) Added
BlockStateData#liquidReactionOnTouch
, there are also a number of new methods inBlockStateData
. - Added
/structure
command to manage structures. - Implemented liquid features including water, lava and related features.
- (API)
GameRules
is changed to an interface. - Breaking block related warnings are now moved to debug channel.
- Improved code readability for I18n module.
- NBT library is now updated to 3.0.10.
/gametest
command is now only available in dev build.- Removed the
dimension
field inBlockBreakEvent
, which is duplicated withblockStateWithPos#dimension
. - Removed unused
cn.powernukkitx:libdeflate-java
library, related classes are also removed.
- (API) Fixed exception when setting item count or meta to zero.
- (API)
VoxelShapes#buildLiquidShape
now works correctly. - (API) Correct
BlockStateData#canContainLiquid
toBlockStateData#canContainLiquidSource
. - Passing non-positive amount or negative meta arguments to
/give
command now will result in a syntax error. - Entity#teleport method now will reset fall distance correctly.
- Fixed visual flashes when eating chorus fruits.
- Fixed incorrect comparison of
Position3x#dimension
. - Fixed a number of falling block related bugs.
- Fixed incorrectly drops when destroying the upper part of a door in creation mode.
0.1.0 (API 0.1.0) - 2024-12-22
Hello Allay! This is the first release of Allay.