Skip to main content

Developer API

zAuctionHouse provides a comprehensive API for developers to integrate with the auction system.

Architecture

zAuctionHouse is built with a modular architecture:

zAuctionHouse/
├── API # Interfaces and abstract classes
├── Core # Implementation
└── Hooks # Third-party integrations

This separation allows you to depend only on the API module, keeping your plugin lightweight.

Maven Setup

Add the JitPack repository:

<repositories>
<repository>
<id>jitpack.io</id>
<url>https://jitpack.io</url>
</repository>
</repositories>

Add the dependency:

<dependencies>
<dependency>
<groupId>com.github.Maxlego08</groupId>
<artifactId>zAuctionHouse-API</artifactId>
<version>4.0.0</version>
<scope>provided</scope>
</dependency>
</dependencies>

Gradle Setup

Add the JitPack repository:

repositories {
maven { url 'https://jitpack.io' }
}

Add the dependency:

dependencies {
compileOnly 'com.github.Maxlego08:zAuctionHouse-API:4.0.0'
}

Getting the API

Access the API via Bukkit's service manager:

import fr.maxlego08.zauctionhouse.api.AuctionPlugin;
import fr.maxlego08.zauctionhouse.api.AuctionManager;
import org.bukkit.Bukkit;
import org.bukkit.plugin.RegisteredServiceProvider;
import org.bukkit.plugin.java.JavaPlugin;

public class MyPlugin extends JavaPlugin {

private AuctionPlugin auctionPlugin;

@Override
public void onEnable() {
// Get the zAuctionHouse API
RegisteredServiceProvider<AuctionPlugin> provider =
Bukkit.getServicesManager().getRegistration(AuctionPlugin.class);

if (provider == null) {
getLogger().severe("zAuctionHouse not found!");
getServer().getPluginManager().disablePlugin(this);
return;
}

this.auctionPlugin = provider.getProvider();
getLogger().info("Successfully hooked into zAuctionHouse!");
}

public AuctionPlugin getAuctionPlugin() {
return auctionPlugin;
}
}

Main Interfaces

AuctionPlugin

The main entry point to the API:

public interface AuctionPlugin {

// Get the auction manager
AuctionManager getAuctionManager();

// Get the economy manager
EconomyManager getEconomyManager();

// Get the category manager
CategoryManager getCategoryManager();

// Get the configuration manager
ConfigurationManager getConfigurationManager();

// Get sell service
AuctionSellService getSellService();

// Get purchase service
AuctionPurchaseService getPurchaseService();

// Get remove service
AuctionRemoveService getRemoveService();

// Get expire service
AuctionExpireService getExpireService();
}

AuctionManager

Core auction operations:

public interface AuctionManager {

// Get all listed items
List<AuctionItem> getListedItems();

// Get items by player
List<AuctionItem> getListedItems(UUID playerUuid);

// Get items by category
List<AuctionItem> getListedItems(Category category);

// Get expired items for a player
List<AuctionItem> getExpiredItems(UUID playerUuid);

// Get purchased items to claim
List<AuctionItem> getPurchasedItems(UUID playerUuid);

// Get item by ID
Optional<AuctionItem> getItem(UUID itemId);

// Search items
List<AuctionItem> search(String query);

// Get player's listing count
int getListingCount(UUID playerUuid);

// Get player's listing limit
int getListingLimit(Player player);
}

Quick Examples

List All Items

AuctionManager manager = auctionPlugin.getAuctionManager();
List<AuctionItem> items = manager.getListedItems();

for (AuctionItem item : items) {
getLogger().info(String.format(
"Item: %s, Price: %d, Seller: %s",
item.getItemStack().getType(),
item.getPrice(),
item.getSellerName()
));
}

Get Player Statistics

UUID playerUuid = player.getUniqueId();
AuctionManager manager = auctionPlugin.getAuctionManager();

int listed = manager.getListingCount(playerUuid);
int expired = manager.getExpiredItems(playerUuid).size();
int toClaim = manager.getPurchasedItems(playerUuid).size();

player.sendMessage(String.format(
"Listed: %d, Expired: %d, To Claim: %d",
listed, expired, toClaim
));

Sell an Item Programmatically

AuctionSellService sellService = auctionPlugin.getSellService();
EconomyManager economyManager = auctionPlugin.getEconomyManager();

// Get the Vault economy
AuctionEconomy economy = economyManager.getEconomy("vault")
.orElseThrow(() -> new IllegalStateException("Vault not found"));

// Sell the item in player's hand
ItemStack itemStack = player.getInventory().getItemInMainHand();
long price = 1000;

sellService.sell(player, itemStack, price, economy)
.thenAccept(result -> {
if (result.isSuccess()) {
player.sendMessage("Item listed successfully!");
} else {
player.sendMessage("Failed: " + result.getMessage());
}
});

Asynchronous Operations

All API operations that interact with the database return CompletableFuture:

// Async operation example
auctionPlugin.getSellService()
.sell(player, item, price, economy)
.thenAccept(result -> {
// Handle result on main thread if needed
Bukkit.getScheduler().runTask(plugin, () -> {
player.sendMessage(result.getMessage());
});
})
.exceptionally(throwable -> {
getLogger().severe("Error selling item: " + throwable.getMessage());
return null;
});

JavaDoc

Full API documentation is available at: javadocs.groupez.dev/zauctionhouse

Next Steps

  • Services - Learn about the service-based architecture
  • Events - Listen to auction events
  • Items - Work with Item and AuctionItem interfaces
  • Custom Economy - Create custom economy implementations
Copyright © 2026 GroupeZ|Build #loading...|-