Eventy pluginu
ListingCreatedEvent, ListingRemovedEvent i TransactionCompletedEvent — nieanulowalne Bukkit eventy.
Na podstawie kodu GrzybcioRynek 1.0.3 i web 0.1.0.
Trzy eventy w com.example.marketplace.api.event. Dziedziczą org.bukkit.event.Event — nie Cancellable. Nie da się zablokować wystawienia / zakupu listenerem.
Wszystkie są wołane przez Bukkit.getPluginManager().callEvent z głównego wątku (ścieżka MarketManager).
ListingCreatedEvent
Po udanym StorageManager.createListing i komunikacie sukcesu. AlertService.checkListing jest w tym samym try.
public MarketListing getListing();Wyjątek w listenerze: Błąd po utworzeniu oferty (event/alert): <msg> — oferta zostaje.
ListingRemovedEvent
public MarketListing getListing();
public String getReason();reason | Źródło |
|---|---|
"removed" | właściciel usunął (/market remove albo GUI) |
"admin-removed" | admin usunął (/market admin remove albo removeListing bez właściciela) |
"force-expire" | /market admin forceexpire |
Naturalne wygaśnięcie (timer 30 min) nie emituje tego eventu — idzie przez expiry outbox.
TransactionCompletedEvent
Tylko po committed == true (stan COMPLETED, TX zapisany).
public MarketTransaction getTransaction();Wyjątek: Błąd TransactionCompletedEvent: <msg> — zakup już doszedł.
Nie ma eventu przy FAILED / ROLLED_BACK / refundzie.
Przykład
@EventHandler
public void onSold(TransactionCompletedEvent event) {
MarketTransaction tx = event.getTransaction();
getLogger().info("TX " + tx.getId() + " price=" + tx.getPrice());
}Pełniejszy opis pól TX: Java API i MarketManager.