
FancyNpcs – Minecraft Java Edition 1.19.4–1.21.x
Zależności: Platforma: Paper / Folia (Spigot i inne przestarzałe forki Bukkit nie są obsługiwane) Wersja Java: Java 21+ (najnowsze…
Zależności: Platforma: Paper / Folia (Spigot i inne przestarzałe forki Bukkit nie są obsługiwane) Wersja Java: Java 21+ (najnowsze kompilacje wymagają Java 25) Wersja Minecraft: 1.19.4 – 1.21.x Dodatkowe biblioteki: Pla
Zależności:
Platforma: Paper / Folia (Spigot i inne przestarzałe forki Bukkit nie są obsługiwane)
Wersja Java: Java 21+ (najnowsze kompilacje wymagają Java 25)
Wersja Minecraft: 1.19.4 – 1.21.x
Dodatkowe biblioteki: PlaceholdersAPI (zalecane do integracji zmiennych z interfejsem akcji)
Tworzenie interaktywnych postaci niezależnych (NPC) na serwerach Minecraft tradycyjnie wiąże się ze znacznymi kosztami sprzętowymi. Przestarzałe rozwiązania rejestrują NPC jako pełnoprawne encje serwerowe (Entity), co zmusza rdzeń do przetwarzania ich sztucznej inteligencji, kolizji fizycznych, wyznaczania ścieżek oraz ładowania chunków. Prowadzi to do krytycznego spadku wskaźnika TPS (Ticks Per Second) wraz ze wzrostem liczby postaci. Plugin FancyNpcs oferuje alternatywną, pakietową metodę renderowania wirtualnych postaci, która pozwala utrzymać setki interaktywnych figur bez żadnego wpływu na wydajność wątku serwerowego.
Architektura pakietowa i zgodność z Folią
Główną cechą techniczną FancyNpcs jest to, że tworzone postacie istnieją wyłącznie w pamięci pluginu oraz po stronie podłączonych klientów. Serwer nie dodaje ich do bazy danych świata i nie przetwarza ich w ogólnym cyklu aktualizacji encji.
Gdy gracz zbliża się do zadanych współrzędnych, plugin przechwytuje ruch sieciowy i wysyła klientowi pakiety ClientboundAddPlayerPacket (dla modeli ludzkich) lub ClientboundAddEntityPacket (dla innych istot). Dalsze zachowanie, ekwipunek i status wyświetlania są aktualizowane za pomocą pakietów ClientboundSetEntityDataPacket (metadane) oraz ClientboundSetEquipmentPacket (wyposażenie). Dla serwera te postacie nie istnieją — są „wirtualnymi projekcjami” dla użytkowników końcowych.
Takie podejście czyni FancyNpcs idealnym wyborem dla wielowątkowych serwerów opartych na Folia. Ponieważ Folia dzieli świat na osobne regiony, z których każdy działa we własnym wątku, tradycyjne pluginy NPC często powodują zakleszczenia (deadlocki) i błędy krytyczne z powodu prób interakcji między wątkami różnych regionów. FancyNpcs przetwarza dane asynchronicznie i wysyła pakiety graczom bezpośrednio, całkowicie unikając konfliktów z harmonogramem zadań Folii.
Możliwości dostosowywania wyglądu
Plugin obsługuje szeroki zakres typów encji oraz efektów wizualnych. Gracze mogą tworzyć NPC w postaci dowolnych mobów z podstawowej wersji gry (Player, Cow, Zombie, Skeleton, Villager, Pig itd.) i precyzyjnie dostosowywać ich wygląd.
Zarządzanie skinami (dla modeli ludzkich)
Dla postaci typu player dostępnych jest kilka źródeł wczytywania tekstur:
@mirror: skin NPC dynamicznie kopiuje skin tego gracza, który właśnie na niego patrzy.Nazwa lub UUID konta licencyjnego: plugin automatycznie wysyła zapytanie do serwerów sesji Mojang, aby wczytać odpowiednią teksturę.
Bezpośredni odnośnik do zasobu sieciowego (URL): możliwość wczytania dowolnego zewnętrznego pliku .png z serwera WWW.
Pliki lokalne: obrazy umieszczone wcześniej w folderze /plugins/FancyNpcs/skins/.
Flaga
--slim: aktywuje użycie modelu wąskich ramion (styl Alex) dla skinów wczytanych z odnośników.
Efekty wizualne i atrybuty
Świecenie (Glowing): dodaje kolorowy kontur wokół postaci. Kolor jest powiązany z kolorami drużyn z podstawowej wersji gry (Team Colors).
Wyposażenie (Equipment): postaciom można dać dowolne przedmioty do lewej lub prawej ręki, a także założyć hełm, napierśnik, nagolenniki i buty.
Pozy (Poses): obsługiwane są określone stany wyświetlania, takie jak siedzenie, leżenie (imitacja snu w łóżku), pływanie i czołganie się.
Rozmiar (Scale): w nowszych wersjach pluginu zaimplementowano obsługę skalowania encji (zmiana fizycznego rozmiaru modelu).
System poleceń i składnia
Zarządzanie postaciami odbywa się wyłącznie za pomocą poleceń na czacie w grze lub w konsoli serwera. Poniższa tabela zawiera opis podstawowej składni:
Polecenie | Opis i parametry | Przykład użycia |
| Tworzenie nowej postaci |
|
| Usuwanie istniejącej postaci |
|
| Zmiana skina (nazwa, url lub @mirror) |
|
| Zakłada na NPC przedmiot, który trzyma gracz |
|
| Włącza kolorowe świecenie wokół modelu |
|
| Sprawia, że postać obraca głowę w stronę graczy |
|
| Ustawia określone pozy lub warianty mobów |
|
Do globalnego administrowania pluginem służą polecenia platformy:
/fancynpcs reload— przeładowuje konfiguracje systemowe./fancynpcs save— wymusza zapis bieżącego stanu wszystkich NPC na dysku w pliku bazy danych.
System interaktywnych akcji (Actions)
FancyNpcs zawiera wbudowany skryptowy mechanizm akcji, który aktywuje się podczas interakcji gracza z postacią. Akcje można konfigurować dla różnych typów kliknięć (LEFT_CLICK, RIGHT_CLICK, ANY_CLICK).
Plugin oferuje następujące typy akcji do wykonania:
message: wysłanie wiadomości do gracza. Obsługuje MiniMessage (kolory Hex) oraz zmienne PlaceholdersAPI.player_command: wykonanie polecenia w imieniu gracza.player_command_as_op: wykonanie polecenia w imieniu gracza z tymczasowym nadaniem uprawnień operatora (do aktywacji poleceń, których zwykły gracz nie może użyć).console_command: wykonanie polecenia przez konsolę serwera. Zmienna {player} jest automatycznie zastępowana nazwą gracza.send_to_server: natychmiastowe przeniesienie gracza na inny serwer w sieci BungeeCord lub Velocity.wait: tworzy pauzę między akcjami (opóźnienie w tikach serwera).block_until_done: zapobiega ponownym kliknięciom w NPC do czasu zakończenia bieżącego scenariusza akcji.execute_random_action: losowy wybór jednej z następujących akcji z listy.
Przykład utworzenia złożonego interaktywnego scenariusza dla NPC o imieniu Bob:
Dodanie wiadomości powitalnej:
/npc action Bob RIGHT_CLICK add message <yellow>Witamy na naszym serwerze, %player_name%!</yellow>Dodanie pauzy 40 tików (2 sekundy):
/npc action Bob RIGHT_CLICK add wait 40Teleportacja gracza na spawn za pomocą konsoli:
/npc action Bob RIGHT_CLICK add console_command teleport {player} 0 100 0
Dzięki możliwości dodawania kilku kolejnych kroków oraz regulowania kolejki za pomocą add_before, add_after oraz move_up/move_down administratorzy mogą budować pełnoprawne drzewa dialogowe lub złożone mechaniki przejść między serwerami lobby bez instalowania dodatkowych pluginów w rodzaju Denizen czy MyCommand.
Struktura plików konfiguracyjnych
Wszystkie dane są przechowywane w katalogu plugins/FancyNpcs/. Działanie pluginu opiera się na dwóch plikach:
1. config.yml
Ten plik definiuje globalne zachowanie pluginu i zawiera następujące ustawienia:
turn_to_player_distance(domyślnie 5): promień w blokach, w obrębie którego postać obraca głowę w stronę graczy. Obniżenie tego parametru optymalizuje przesyłanie pakietów sieciowych w obciążonych strefach.visibility_distance(domyślnie 20): odległość w blokach, na jaką do klienta wysyłane są pakiety pojawienia się NPC. Zmniejszenie pomaga ukryć postacie za ścianami lub mgłą renderowania, aby zaoszczędzić FPS graczy.enable_autosave: automatyczny okresowy zapis zmian na dysku.
2. npcs.yml
W tym pliku plugin przechowuje bazę danych utworzonych NPC. Każda postać jest opisana osobnym blokiem danych:
YAML
Bob: id: 104 type: PLAYER world: world x: 10.5 y: 64.0 z: -25.5 yaw: 90.0 pitch: 0.0 glowing: false turn_to_player: true skin: value: "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUv..." signature: "d3G8h...==" actions: RIGHT_CLICK: - type: MESSAGE value: "<green>Witamy serdecznie!</green>" |
Ostrzeżenie: Ręczna edycja pliku npcs.yml jest stanowczo niezalecana ze względu na ryzyko uszkodzenia składni lub nieprawidłowego określenia współrzędnych. Wszelkie zmiany konfiguracji NPC należy wprowadzać wyłącznie za pomocą poleceń w grze, a następnie utrwalać je za pomocą /fancynpcs save.
Podsumowanie
Plugin FancyNpcs to nowoczesne i wydajne rozwiązanie do tworzenia dekoracyjnych i interaktywnych postaci na serwerach Minecraft Java Edition. Eliminuje główny problem starszych narzędzi — zużycie czasu procesora serwera na obsługę encji.
Główne ograniczenie pluginu to całkowity brak sztucznej inteligencji. Ponieważ postacie są wirtualnymi projekcjami po stronie klienta, nie mogą samodzielnie poruszać się po świecie, wchodzić w interakcje z blokami ani atakować innych mobów.
W porównaniu z klasycznym pluginem Citizens, który obsługuje złożone mechaniki poruszania się (nawigacja po punktach trasy) oraz integrację z systemami walki (mod Sentinel), FancyNpcs ustępuje pod względem elastyczności sztucznej inteligencji. Jednak Citizens tworzy kolosalne obciążenie głównego wątku serwera i jest praktycznie nieprzydatny do użytku na Folia. FancyNpcs oferuje idealną alternatywę dla serwerów lobby, hubów Velocity i dużych projektów SMP, gdzie od postaci wymaga się jedynie statycznej obecności, dobrego wyglądu i szybkiego wykonywania poleceń po kliknięciu.
Instalacja
Typowa instalacja zajmuje około 5 minut. Procedura jest taka sama; różni się tylko loader i odpowiedni build.
- 1Stop your Minecraft server.
- 2Drop the plugin .jar into the server /plugins folder.
- 3Start the server once so the plugin generates its config files.
- 4Edit /plugins/<name>/config.yml as needed, then run /reload confirm or restart.











