⚙️ Quick and easy creation and modification of ItemStack for Paper
- Item Builder: Create complex ItemStacks.
- Adventure API Support: Full support for modern
Componenttext. - Enchantment Groups: Manage sets of enchantments easily.
- Item Editor: Modify existing items as easily as creating new ones.
- Zero Dependencies: No extra plugins or libraries required — only Paper API.
- Java 21+: Itemer is built on Java 21 to utilize modern JVM features.
- Paper 1.21+: Optimized specifically for the latest Paper versions.
These are just recommendations. They should work on lower server versions, but not everything will. You've been warned.
<repositories>
<repository>
<id>jitpack.io</id>
<url>https://jitpack.io</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>com.github.BoxedThings</groupId>
<artifactId>Itemer</artifactId>
<!-- Replace VERSION with the latest release tag -->
<version>VERSION</version>
<scope>compile</scope>
</dependency>
</dependencies>repositories {
maven { url 'https://jitpack.io' }
}
dependencies {
// Replace VERSION with the latest release tag
implementation 'com.github.BoxedThings:Itemer:VERSION'
}ItemStack sword = Item.builder(Material.DIAMOND_SWORD)
.name(Component.text("Excalibur", NamedTextColor.GOLD))
.lore("Legendary blade", "Sharpness X")
.enchants(EnchantmentGroup.create().add(Enchantment.SHARPNESS, 10))
.unbreakable(true)
.build();ItemStack item = new ItemStack(Material.NETHERITE_SWORD);
ItemStack sword = Item.editor(item)
.name(Component.text("Titan Sword", NamedTextColor.GOLD))
.enchants(new EnchantmentGroup().add(Enchantment.SHARPNESS, 3))
.flags(ItemFlag.HIDE_ENCHANTS)
.toItem();If you need to access specific Meta types (like SkullMeta, LeatherArmorMeta, or BookMeta), use the modifyMeta method. It allows you to keep the builder chain while accessing low-level Bukkit features.
ItemStack playerHead = Item.builder(Material.PLAYER_HEAD)
.name(Component.text("User's Head", NamedTextColor.YELLOW))
.modifyMeta(meta -> {
if (meta instanceof SkullMeta skullMeta) {
skullMeta.setOwningPlayer(somePlayer);
}
})
.build();Contributions, issues, and feature requests are welcome! Feel free to check the issues page. More details...