CustomItemsHook
Klon zapisanego ItemStack i opcjonalna przebudowa Nexo/Oraxen tylko gdy item to AIR.
Na podstawie kodu GrzybcioRynek 1.0.3 i web 0.1.0.
CustomItemsHook owija NexoHook i OraxenHook. Oba hooki są opcjonalne (softdepend). Plugin działa bez packów.
Publiczne metody
| Metoda | Źródło |
|---|---|
getNexoId(ItemStack) | NexoHook.getNexoId |
getOraxenId(ItemStack) | OraxenHook.getOraxenId |
recreateItem(MarketListing) | recreateItem(listing.getItem(), nexoId, oraxenId) |
recreateItem(ItemStack, nexoId, oraxenId) | klon + ewentualny rebuild |
recreateItem — reguła AIR
originalItem == null→null.stored = originalItem.clone()— zachowuje enchanty, PDC, display name.- Rebuild z ID packa tylko gdy
stored.getType().isAir():- najpierw Nexo (
nexoId+nexoHook.isEnabled()→getNexoItem); - potem Oraxen (
oraxenHook.recreateItem).
- najpierw Nexo (
- W przeciwnym razie zwraca klon.
Zmiana ID w packu nie przebudowuje zdrowego stacka. Problem pojawia się dopiero gdy zapisany item jest AIR i ID nie istnieje już w API packa.
NexoHook — refleksja
Klasa: com.nexomc.nexo.api.NexoItems.
| Metoda Nexo | Użycie |
|---|---|
idFromItem(ItemStack) | odczyt ID przy wystawianiu |
itemFromId(String) + build() | odtworzenie gdy AIR |
Plugin Nexo niezaładowany → hook wyłączony (cisza). Plugin jest, API nie wstaje:
Nexo znaleziono, ale nie udało się załadować API: <msg>Sukces: Wykryto Nexo! Włączono wsparcie dla niestandardowych przedmiotów.
getNexoId / getNexoItem łapią wyjątki i zwracają null. recreateItem w samym NexoHook ustawia amount z oryginału — CustomItemsHook woła tę ścieżkę tylko przy AIR przez getNexoItem (bez kopiowania amount w tej gałęzi).
OraxenHook — refleksja
Klasa: io.th0rgal.oraxen.api.OraxenItems.
| Metoda Oraxen | Użycie |
|---|---|
getIdByItem(ItemStack) | ID przy wystawianiu |
exists(String) | czy ID żyje |
getItemById(String) + build() | odtworzenie |
Oraxen znaleziono, ale nie udało się załadować API: <msg>
Wykryto Oraxen! Włączono wsparcie dla niestandardowych przedmiotów.recreateItem w Oraxen: brak hooka/ID → klon oryginału; nieudany build → klon; sukces → nowy stack z amount oryginału.
Gdzie jest wołane
- wystawianie: zapis
nexoId/oraxenIdnaMarketListing; - zakup, usunięcie, wygaśnięcie, refund reclaim:
recreateItem; - wyszukiwanie:
ItemSearchUtilporównuje też te ID.
ID są w listings.yml i w serializacji transakcji (nexoId, oraxenId).