0.16 ➝ 0.17
Minecraft version
Updated to Minecraft 1.21.1
Asset index files removed
Nova no longer interprets asset index files such as materials.json
.
Instead, everything is registered in code now.
This goes hand in hand with the new model builder system, which you can read more about here.
Registry Element Builders
All registry element builders are now in DSL-style:
Items
Data components
With Minecraft 1.20.5, data components have been introduced. You can now also specify these in ItemBehaviors
.
More info
Enchantments
Since enchantment categories were dropped by Vanilla, Nova has also removed enchantment categories.
This means there are some changes to how the Enchantable
behavior is configured.
More info
Additionally, the Enchantment
Nova class and all related utility functions have been removed, as it they are no longer needed.
Nova Compound
Item Categories
Addons can no longer define item categories. Instead, one category per addon is created by default.
Server admins can still customize item categories in configs/nova/item_categories.yml
.
The novaCompound
of ItemStacks
now needs to be written back to the ItemStack
after modification.
Block(states) / Tile-Entities
Nova blocks have been drastically changed. Block states now work similarly to Minecraft's block states.
See Blocks for more information.
Tile-entities have undergone major refactoring, many function for retrieving data have been renamed or (re)moved.
The functions that were kept in TileEntity
are now prefixed with stored...
instead of get...
. Region-related
functions have been moved to the Region
companion object. Side-config related functions have been removed.
See Tile Entities for more information.
BlockManager and TileEntityManager removed
BlockManager
was removed.
To place or break blocks, use BlockUtils#placeBlock
and BlockUtils#breakBlock
.
To retrieve the block state at a certain position, you can use the extension property novaBlockState
on org.bukkit.Block
.
TileEntityManager
was removed.
To get the tile-entity at a certain position, use WorldDataManager#getTileEntity
.
Multi-block / Linked block states removed
The multi-block system via linked block states has been removed from Nova, as it was conceptually incompatible with
the new block states. Instead, you can easily replicate the functionality via a custom block behavior that
places/destroys additional blocks in BlockBehavior#handlePlace
and BlockBehavior#handleBreak
.
Block Behaviors
A lot of block logic, such as breaking, sounds, drops, etc. has been moved into separate block behaviors. See Block Behaviors for more information.
Contexts
The existing block contexts have been replaced with a more flexible Context system.
Tile-Entity instantiation
Tile-entities are now instantiated off-main, possibly before Nova initialization is completed, and in possibly
unloaded chunks.
More info
Tile-Entity async tick
The handleAsyncTick
function has been removed. Instead, you can use the tile-entities coroutineSupervisor
to launch coroutines for async tasks.
Tile-Entity networks
The tile-entity network system has been completely rewritten and now also has a documentation page.
Upgrade system moved to Simple-Upgrades
The upgrade system has been completely moved to simple upgrades and is no longer a part of Nova. You can still use it, but it will no longer be documented or referenced in the Nova docs.
Providers
There were also some changes to Providers
. You now need to call get()
instead of .value
to access the value.
Additionally, Providers
are now lazy, meaning they only load or update their value when they are accessed.
Initialization dispatcher
It is now possible to specify whether initialization tasks should be run SYNC
or ASYNC
, independently of the stage.
The previously existing stages POST_WORLD_ASYNC
and POST_PACK_ASYNC
have been removed.
More info
General refactoring
Apart from huge changes to blocks, tile-entities, etc. some packages have been moved as well.
Most notable changes:
xyz.xenondevs.nova.tileentity
toxyz.xenondevs.nova.world.block.tileentity
xyz.xenondevs.nova.item
toxyz.xenondevs.nova.world.item
xyz.xenondevs.nova.player
toxyz.xenondevs.nova.world.player
xyz.xenondevs.nova.data.configs
toxyz.xenondevs.nova.configs
xyz.xenondevs.nova.data.serialization
toxyz.xenondevs.nova.serialization
xyz.xenondevs.nova.data.recipe
toxyz.xenondevs.nova.recipe
xyz.xenondevs.nova.data.resources
toxyz.xenondevs.nova.resources
NMS-Utilities
The NMS-Utilities library has been merged into Nova.
Advancement utilities removed from docs
The few utility functions Nova still provides for interacting with nms advancement classes have been consciously removed from the docs. Please use a third-party advancement library instead.