Package dev.itsharshxd.zentrix.api.item
Interface ItemService
public interface ItemService
Service for managing custom items within Zentrix.
This service allows registration, querying, and retrieval of custom items. It supports vanilla items, custom items, and external items from plugins like ItemsAdder and Nexo.
Example Usage
ItemService itemService = ZentrixAPI.get().getItemService();
// Register a custom item
ItemBuilder compass = new ItemBuilder()
.id("tracking-compass")
.material(Material.COMPASS)
.displayName("&#FFD700&l Tracking Compass")
.lore("", "&#AAAAAA Right-click to track", "&#AAAAAA the nearest player!")
.enchant(Enchantment.UNBREAKING, 1)
.flag(ItemFlag.HIDE_ENCHANTS)
.glow(true)
.slot(4)
.addonId(getAddonId());
itemService.registerItem(compass);
// Retrieve and use the item
itemService.getItem("tracking-compass").ifPresent(item -> {
player.getInventory().addItem(item);
});
// Identify items for custom behavior
itemService.identifyItem(heldItem).ifPresent(itemId -> {
if (itemId.equals("tracking-compass")) {
// Custom tracking logic
}
});
- Since:
- 1.1.0
-
Method Summary
Modifier and TypeMethodDescriptiondefault @NotNull ItemBuilderCreates a new ItemBuilder instance.@NotNull Collection<ZentrixItem> Gets all registered item definitions.@NotNull Optional<org.bukkit.inventory.ItemStack> Gets an ItemStack for a registered item.@NotNull Optional<ZentrixItem> getItemDefinition(@NotNull String itemId) Gets the item definition for a registered item.@NotNull Collection<String> Gets all item IDs.@NotNull org.bukkit.inventory.ItemStackgetItemOrDefault(@NotNull String itemId, @NotNull org.bukkit.Material fallback) Gets an ItemStack for a registered item, or a fallback material.@NotNull Collection<ZentrixItem> getItemsByAddon(@NotNull String addonId) Gets all items registered by a specific addon.intgetItemSlot(@NotNull String itemId) Gets the configured slot for an item.identifyItem(@NotNull org.bukkit.inventory.ItemStack itemStack) Identifies what registered item an ItemStack represents.booleanisItemEnabled(@NotNull String itemId) Checks if an item is enabled.booleanitemExists(@NotNull String itemId) Checks if an item exists with the given ID.booleanmatchesItem(@NotNull org.bukkit.inventory.ItemStack itemStack, @NotNull String itemId) Checks if an ItemStack matches a registered item.booleanregisterItem(@NotNull ItemBuilder builder) Registers a custom item from a builder.@NotNull CompletableFuture<Boolean> registerItemAsync(@NotNull ItemBuilder builder) Registers a custom item asynchronously with persistence.intregisterItems(@NotNull Collection<ItemBuilder> builders) Registers multiple items at once.@NotNull Optional<org.bukkit.inventory.ItemStack> resolveItem(@NotNull String itemIdentifier) Resolves an item from any supported identifier format.@NotNull org.bukkit.inventory.ItemStackresolveItemOrDefault(@NotNull String itemIdentifier, @NotNull org.bukkit.Material fallback) Resolves an item from any supported identifier format, with fallback.booleanunregisterItem(@NotNull String itemId) Unregisters an item by ID.booleanupdateItem(@NotNull ItemBuilder builder) Updates an existing item with new configuration.
-
Method Details
-
registerItem
Registers a custom item from a builder.This method performs in-memory registration only.
- Parameters:
builder- The item builder with configuration- Returns:
trueif registration was successful- Throws:
IllegalArgumentException- if the builder is invalid
-
registerItemAsync
@NotNull @NotNull CompletableFuture<Boolean> registerItemAsync(@NotNull @NotNull ItemBuilder builder) Registers a custom item asynchronously with persistence.The item is registered and saved to the items.yml configuration file.
- Parameters:
builder- The item builder with configuration- Returns:
- A future that completes with
trueif successful - Throws:
IllegalArgumentException- if the builder is invalid
-
registerItems
Registers multiple items at once.This method performs in-memory registration only.
- Parameters:
builders- Collection of item builders- Returns:
- The number of successfully registered items
-
unregisterItem
Unregisters an item by ID.This method performs in-memory removal only.
- Parameters:
itemId- The ID of the item to unregister- Returns:
trueif the item was found and removed
-
updateItem
Updates an existing item with new configuration.The item must already exist.
- Parameters:
builder- The item builder with updated configuration- Returns:
trueif the item was found and updated
-
getItem
Gets an ItemStack for a registered item.The returned ItemStack is a clone and safe to modify.
- Parameters:
itemId- The item ID- Returns:
- Optional containing the ItemStack, or empty if not found
-
getItemOrDefault
@NotNull @NotNull org.bukkit.inventory.ItemStack getItemOrDefault(@NotNull @NotNull String itemId, @NotNull @NotNull org.bukkit.Material fallback) Gets an ItemStack for a registered item, or a fallback material.The returned ItemStack is a clone and safe to modify.
- Parameters:
itemId- The item IDfallback- The fallback material if item not found- Returns:
- The ItemStack (never null)
-
resolveItem
@NotNull @NotNull Optional<org.bukkit.inventory.ItemStack> resolveItem(@NotNull @NotNull String itemIdentifier) Resolves an item from any supported identifier format.Supported formats:
- "custom:item_id" - Custom Zentrix items
- "itemsadder:namespace:id" - ItemsAdder items
- "nexo:id" - Nexo items
- "MATERIAL_NAME" - Vanilla materials
- Parameters:
itemIdentifier- The item identifier- Returns:
- Optional containing the resolved ItemStack, or empty if not found
-
resolveItemOrDefault
@NotNull @NotNull org.bukkit.inventory.ItemStack resolveItemOrDefault(@NotNull @NotNull String itemIdentifier, @NotNull @NotNull org.bukkit.Material fallback) Resolves an item from any supported identifier format, with fallback.- Parameters:
itemIdentifier- The item identifierfallback- The fallback material if resolution fails- Returns:
- The ItemStack (never null)
-
getItemDefinition
Gets the item definition for a registered item.- Parameters:
itemId- The item ID- Returns:
- Optional containing the item definition, or empty if not found
-
getAllItems
Gets all registered item definitions.- Returns:
- An unmodifiable collection of all items (never null, may be empty)
-
getItemsByAddon
Gets all items registered by a specific addon.- Parameters:
addonId- The addon identifier- Returns:
- Collection of items registered by the addon (never null, may be empty)
-
itemExists
Checks if an item exists with the given ID.- Parameters:
itemId- The item ID to check- Returns:
trueif the item exists
-
getItemIds
Gets all item IDs.- Returns:
- Collection of item IDs (never null, may be empty)
-
matchesItem
boolean matchesItem(@NotNull @NotNull org.bukkit.inventory.ItemStack itemStack, @NotNull @NotNull String itemId) Checks if an ItemStack matches a registered item.- Parameters:
itemStack- The ItemStack to checkitemId- The item ID to match against- Returns:
trueif the ItemStack matches the item definition
-
identifyItem
@NotNull @NotNull Optional<String> identifyItem(@NotNull @NotNull org.bukkit.inventory.ItemStack itemStack) Identifies what registered item an ItemStack represents.Useful for implementing custom item behavior in event handlers.
- Parameters:
itemStack- The ItemStack to identify- Returns:
- Optional containing the item ID, or empty if not a registered item
-
getItemSlot
Gets the configured slot for an item.- Parameters:
itemId- The item ID- Returns:
- The slot index, or -1 if not configured or item not found
-
isItemEnabled
Checks if an item is enabled.- Parameters:
itemId- The item ID- Returns:
trueif the item exists and is enabled
-
createItemBuilder
Creates a new ItemBuilder instance.- Returns:
- A new ItemBuilder
-