GrzybcioRynek

CustomItemsHook

Klon zapisanego ItemStack i opcjonalna przebudowa Nexo/Oraxen tylko gdy item to AIR.

Kompatybilne z: GrzybcioRynek 1.0.3Minecraft 26.2Web 0.1.0

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

  1. originalItem == nullnull.
  2. stored = originalItem.clone() — zachowuje enchanty, PDC, display name.
  3. Rebuild z ID packa tylko gdy stored.getType().isAir():
    • najpierw Nexo (nexoId + nexoHook.isEnabled()getNexoItem);
    • potem Oraxen (oraxenHook.recreateItem).
  4. W przeciwnym razie zwraca klon.
Warning

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 NexoUż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:

text
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 OraxenUżycie
getIdByItem(ItemStack)ID przy wystawianiu
exists(String)czy ID żyje
getItemById(String) + build()odtworzenie
text
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 / oraxenId na MarketListing;
  • zakup, usunięcie, wygaśnięcie, refund reclaim: recreateItem;
  • wyszukiwanie: ItemSearchUtil porównuje też te ID.

ID są w listings.yml i w serializacji transakcji (nexoId, oraxenId).