0.14 ➝ 0.15
Paper migration
Nova has migrated to Paper. This includes significant changes to the build environment, so check out the
Nova-Addon-Template on GitHub for an up-to-date example.
This also means that you'll no longer need to run BuildTools.
It's also no longer possible to reload the server, even if you're in dev mode with -DNovaDev
, but this didn't work
properly before anyway.
Init annotation
The @Init
annotation now requires a stage
parameter. More info
Configs
Nova now uses a fork of SpongePowered/Configurate, configReloadable
has been deprecated and nova items- and blocks now properly have a config associated with them.
val A: Long by configReloadble { NovaConfig[Items.EXAMPLE_ITEM].getLong("some.value") }
val B: Long by configReloadable { NovaConfig["namespace:name"].getLong("some.value") }
val A: Long by Items.EXAMPLE_ITEM.config.entry<Long>("some", "value")
val B: Long by Configs["namespace:name"].entry<Long>("some", "value")
ItemBehavior
ItemBehavior
is now an interface.- The same
ItemBehavior
instance can now be used for multipleNovaItem
s. - The
modifyItemBuilder
function has been deprecated in favor of a newgetDefaultCompound
function. - Many default item behaviors such as
Damageable
are now also interfaces. This allows you to (for example) implement your own damaging logic (such as using energy). - All item behavior
*Options
classes (such asFoodOptions
,ToolOptions
, etc.) have been removed as the properties have been moved to the new item behavior interfaces. NovaItem#getBehavior
now asserts non-null by default. AddedNovaItem#getBehaviorOrNull
for nullable access.ItemBehavior#handleInteract
now acceptsWrappedPlayerInteractEvent
instead ofPlayerInteractEvent
. This wrapping class has an additional parameter calledactionPerformed
, which is used to signal whether a custom action has been run. Additionally,handleInteract
is now always called, even if an action (such as a tile-entity gui being opened) has already been performed.
Utility functions
ItemBehavior-related utility function such as those in DamageableUtils
have been moved to the companion object of
their respective ItemBehavior
.
Packet Event Listeners
Packet Event listeners now need a PacketListener
interface. More Info
Advancements
The advancement dsl builder has been removed. You can still register advancements via AdvancementLoader
, but you'll
need to use Mojang's internal advancement builders. The built-in utility functions for creating advancements about
obtaining Nova items (obtainNovaItemAdvancement
, obtainNovaItemsAdvancement
) are still available.