Aller au contenu principal

API Développeur

zAuctionHouse fournit une API complète pour les développeurs souhaitant s'intégrer au système d'enchères.

Architecture

zAuctionHouse est construit avec une architecture modulaire :

zAuctionHouse/
├── API # Interfaces et classes abstraites
├── Core # Implémentation
└── Hooks # Intégrations tierces

Cette séparation vous permet de dépendre uniquement du module API, gardant votre plugin léger.

Configuration Maven

Ajoutez le repository JitPack :

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

Ajoutez la dépendance :

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

Configuration Gradle

Ajoutez le repository JitPack :

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

Ajoutez la dépendance :

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

Obtenir l'API

Accédez à l'API via le gestionnaire de services Bukkit :

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() {
// Obtenir l'API zAuctionHouse
RegisteredServiceProvider<AuctionPlugin> provider =
Bukkit.getServicesManager().getRegistration(AuctionPlugin.class);

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

this.auctionPlugin = provider.getProvider();
getLogger().info("Connecté avec succès à zAuctionHouse !");
}

public AuctionPlugin getAuctionPlugin() {
return auctionPlugin;
}
}

Interfaces Principales

AuctionPlugin

Le point d'entrée principal de l'API :

public interface AuctionPlugin {

// Obtenir le gestionnaire d'enchères
AuctionManager getAuctionManager();

// Obtenir le gestionnaire d'économie
EconomyManager getEconomyManager();

// Obtenir le gestionnaire de catégories
CategoryManager getCategoryManager();

// Obtenir le gestionnaire de configuration
ConfigurationManager getConfigurationManager();

// Obtenir le service de vente
AuctionSellService getSellService();

// Obtenir le service d'achat
AuctionPurchaseService getPurchaseService();

// Obtenir le service de suppression
AuctionRemoveService getRemoveService();

// Obtenir le service d'expiration
AuctionExpireService getExpireService();
}

AuctionManager

Opérations principales des enchères :

public interface AuctionManager {

// Obtenir tous les objets en vente
List<AuctionItem> getListedItems();

// Obtenir les objets par joueur
List<AuctionItem> getListedItems(UUID playerUuid);

// Obtenir les objets par catégorie
List<AuctionItem> getListedItems(Category category);

// Obtenir les objets expirés d'un joueur
List<AuctionItem> getExpiredItems(UUID playerUuid);

// Obtenir les objets achetés à récupérer
List<AuctionItem> getPurchasedItems(UUID playerUuid);

// Obtenir un objet par ID
Optional<AuctionItem> getItem(UUID itemId);

// Rechercher des objets
List<AuctionItem> search(String query);

// Obtenir le nombre d'objets en vente d'un joueur
int getListingCount(UUID playerUuid);

// Obtenir la limite de mise en vente d'un joueur
int getListingLimit(Player player);
}

Exemples Rapides

Lister Tous les Objets

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

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

Obtenir les Statistiques d'un Joueur

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(
"En vente: %d, Expirés: %d, À récupérer: %d",
listed, expired, toClaim
));

Vendre un Objet par Programmation

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

// Obtenir l'économie Vault
AuctionEconomy economy = economyManager.getEconomy("vault")
.orElseThrow(() -> new IllegalStateException("Vault non trouvé"));

// Vendre l'objet dans la main du joueur
ItemStack itemStack = player.getInventory().getItemInMainHand();
long price = 1000;

sellService.sell(player, itemStack, price, economy)
.thenAccept(result -> {
if (result.isSuccess()) {
player.sendMessage("Objet mis en vente avec succès !");
} else {
player.sendMessage("Échec : " + result.getMessage());
}
});

Opérations Asynchrones

Toutes les opérations API qui interagissent avec la base de données retournent des CompletableFuture :

// Exemple d'opération asynchrone
auctionPlugin.getSellService()
.sell(player, item, price, economy)
.thenAccept(result -> {
// Gérer le résultat sur le thread principal si nécessaire
Bukkit.getScheduler().runTask(plugin, () -> {
player.sendMessage(result.getMessage());
});
})
.exceptionally(throwable -> {
getLogger().severe("Erreur lors de la vente : " + throwable.getMessage());
return null;
});

JavaDoc

La documentation complète de l'API est disponible sur : javadocs.groupez.dev/zauctionhouse

Prochaines Étapes

  • Services - Découvrir l'architecture basée sur les services
  • Événements - Écouter les événements d'enchères
  • Objets - Travailler avec les interfaces Item et AuctionItem
  • Économie Personnalisée - Créer des implémentations d'économie personnalisées
Copyright © 2026 GroupeZ|Build #loading...|-