When using custom items, players will need a resource pack containing all important texture data. Find out more about resource packs on wiki.bedrock.dev
Custom items
On PNX, you can create your own items. Make sure your resource pack contains all data like the textures.
Register a custom item
It is recommended to register your item while your plugin is loaded, but not enabled yet. You can register your item using
//Imports
import cn.nukkit.registry.RegisterException;
import cn.nukkit.registry.Registries;
//Later on, in your onLoad()
try {
Registries.ITEM.registerCustomItem(this, MySword.class);
} catch (RegisterException e) {
throw new RuntimeException(e);
}
Defining your item
This is the minimum setup for your custom item. You can extend it as you wish.
Weapon Example:
import cn.nukkit.item.Item;
import cn.nukkit.item.ItemDiamondSword;
import cn.nukkit.item.customitem.CustomItem;
import cn.nukkit.item.customitem.CustomItemDefinition;
import cn.nukkit.item.customitem.data.CreativeCategory;
import cn.nukkit.item.customitem.data.CreativeGroup;
import cn.nukkit.item.utils.ItemEnchantSlot;
public class MySword extends Item implements CustomItem {
public MySword() {
super("powernukkitx:test_sword");
}
@Override
public CustomItemDefinition getDefinition() {
return CustomItemDefinition
.simpleBuilder(this)
.creativeCategory(CreativeCategory.EQUIPMENT)
.creativeGroup(CreativeGroup.SWORD)
.texture("test_sword")
.name("Sword")
.allowOffHand(false)
.handEquipped(true)
.glint(true)
.damage(30)
.enchantable(ItemEnchantSlot.SWORD, 20)
.durability(1000, 5, 30)
.build();
}
@Override
public int getTier() {
return ItemDiamondSword.TIER_DIAMOND;
}
}
Tool Example:
import cn.nukkit.item.Item;
import cn.nukkit.item.ItemDiamondSword;
import cn.nukkit.item.customitem.CustomItem;
import cn.nukkit.item.customitem.CustomItemDefinition;
import cn.nukkit.item.customitem.data.CreativeCategory;
import cn.nukkit.item.customitem.data.CreativeGroup;
import cn.nukkit.item.utils.DiggerEntry;
import cn.nukkit.item.utils.ItemEnchantSlot;
public class MyTool extends Item implements CustomItem {
public MyTool() {
super("powernukkitx:test_tool");
}
@Override
public CustomItemDefinition getDefinition() {
return CustomItemDefinition
.simpleBuilder(this)
.creativeCategory(CreativeCategory.EQUIPMENT)
.creativeGroup(CreativeGroup.PICKAXE)
.texture("test_tool")
.name("My Tool")
.allowOffHand(false)
.handEquipped(true)
.glint(true)
.enchantable(ItemEnchantSlot.PICKAXE, 20)
.durability(1000, 5, 30)
.digger(
DiggerEntry.block("minecraft:coal_ore", 2),
DiggerEntry.create().speed(6).addAllWooden(),
DiggerEntry.create().speed(5).addTags("'my_custom_tag'")
)
.build();
}
@Override
public int getTier() {
return ItemDiamondPickaxe.TIER_DIAMOND;
}
}
Simple Item Example:
import cn.nukkit.item.Item;
import cn.nukkit.item.customitem.CustomItem;
import cn.nukkit.item.customitem.CustomItemDefinition;
import cn.nukkit.item.customitem.data.CreativeCategory;
public class MyItem extends Item implements CustomItem {
public MyItem() {
super("powernukkitx:test_item");
}
@Override
public CustomItemDefinition getDefinition() {
return CustomItemDefinition
.simpleBuilder(this)
.creativeCategory(CreativeCategory.ITEMS)
.texture("test_item")
.name("My Item")
.allowOffHand(false)
.handEquipped(true)
.glint(true)
.build();
}
}
Need help?
If you need help, check out our Example plugin or join our discord server and ask for help.