Skip to content

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.

old
val A: Long by configReloadble { NovaConfig[Items.EXAMPLE_ITEM].getLong("some.value") }
val B: Long by configReloadable { NovaConfig["namespace:name"].getLong("some.value") }
new
val A: Long by Items.EXAMPLE_ITEM.config.entry<Long>("some", "value")
val B: Long by Configs["namespace:name"].entry<Long>("some", "value")

More Info

ItemBehavior

  • ItemBehavior is now an interface.
  • The same ItemBehavior instance can now be used for multiple NovaItems.
  • The modifyItemBuilder function has been deprecated in favor of a new getDefaultCompound 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 as FoodOptions, 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. Added NovaItem#getBehaviorOrNull for nullable access.
  • ItemBehavior#handleInteract now accepts WrappedPlayerInteractEvent instead of PlayerInteractEvent. This wrapping class has an additional parameter called actionPerformed, 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.

More Info

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.