API¶
Repository & Dependencies¶
repositories {
maven("https://repo.nexomc.com/releases")
}
dependencies {
compileOnly("com.nexomc:nexo:<version>") //Nexo 1.X -> 1.X.0
}
JavaDocs¶
Nexo has JavaDocs published at https://jd.nexomc.com. These will be updated whenever changes to the API are made, which is not too often.
Custom Items¶
Nexo has its own ItemBuilder class which handles building its custom items.
The NexoItems-class contains most of the methods you would need to handle items.
ItemBuilder itemBuilder = NexoItems.itemFromId(itemID);
ItemStack itemStack = itemBuilder.build();
String itemId = NexoItems.idFromItem(itemStack);
Info
Nexo loads items in an async task, thus getting them in your plugins onEnable will likely fail
You can listen for the NexoItemsLoadedEvent to be sure the items are registered
Modifying how Nexo updates a NexoItem¶
Nexo will update any NexoItem on several actions to ensure its data is up-to-date.
If your plugin should override any property on the Item which Nexo resets, follow the steps below.
You need to register an UpdateCallback which lets you run logic on any item Nexo updates.
This should be registered during NexoItemsLoadedEvent as shown below;
@EventHandler
fun NexoItemsLoadedEvent.onLoaded() {
NexoItems.registerUpdateCallback(Key.key("namespace:key"), object : UpdateCallback {
override fun preUpdate(itemStack: ItemStack): ItemStack? {
// return null to skip updating
return null
}
override fun postUpdate(itemId: String, itemStack: ItemStack, preUpdateItemStack: ItemStack): ItemStack {
// Apply changes after Nexo finishes updating the item
return itemStack
}
})
}
@EventHandler
public void onItemsLoaded(NexoItemsLoadedEvent event) {
NexoItems.registerUpdateCallback(
Key.key("namespace", "key"), new UpdateCallback() {
@Override
public ItemStack preUpdate(ItemStack itemStack) {
// return null to skip updating
return null;
}
@Override
public ItemStack postUpdate(String itemId, ItemStack itemStack, ItemStack preUpdateItemStack) {
// Apply changes after Nexo finishes updating the item
return itemStack;
}
}
);
}
Custom Blocks¶
The NexoBlocks-class contains all the methods available for placing, removing and checking for custom blocks in Nexo.
Furniture¶
The NexoFurniture-class contains all the methods available for placing, removing and checking for furniture in Nexo. In addition to this you can return the FurnitureMechanic of the Furniture to get specific properties of it if needed.
Custom Mechanics¶
Nexo allows you to add your own mechanics to the plugin, new ones or extending existing ones
An example repository can be found here, with examples for both Java and Kotlin
You can register your mechanic in your onEnable or wherever you want.
This will register it when Nexo registers its own Mechanics, and parse them for items
Mechanics consist of a Mechanic class with properties and methods.
MechanicFactory consists of parsing method for global Mechanic properties & linking item -> mechanic
NexoMechanicsRegisteredEvent - Called when Nexo loads/reloads Mechanics
NexoItemsLoadedEvent - Called when Nexo finishes loading/reloading NexoItems
Custom PackServer¶
If you want a PackServer type that Nexo does not provide, you can make an addon that registers one. Make a class that extends NexoPackServer and override the methods you need.
To register this with Nexo, you simply call PackServerRegistry.register(type, packServer)