
FancyNpcs – Minecraft Java Edition 1.19.4–1.21.x
Riippuvuudet: Alusta: Paper / Folia (Spigot ja muut vanhentuneet Bukkit-haarat eivät ole tuettuja) Java-versio: Java 21+ (uusimmat…
Riippuvuudet: Alusta: Paper / Folia (Spigot ja muut vanhentuneet Bukkit-haarat eivät ole tuettuja) Java-versio: Java 21+ (uusimmat koonnokset vaativat Java 25:n) Minecraft-versio: 1.19.4 – 1.21.x Lisäkirjastot: Placehol
Riippuvuudet:
Alusta: Paper / Folia (Spigot ja muut vanhentuneet Bukkit-haarat eivät ole tuettuja)
Java-versio: Java 21+ (uusimmat koonnokset vaativat Java 25:n)
Minecraft-versio: 1.19.4 – 1.21.x
Lisäkirjastot: PlaceholdersAPI (suositellaan muuttujien integroimiseksi toimintojen käyttöliittymään)
Interaktiivisten ei-pelaajahahmojen (NPC) luomiseen Minecraft-palvelimilla on perinteisesti liittynyt huomattavia laitteistokustannuksia. Vanhentuneet ratkaisut rekisteröivät NPC:t täysimittaisiksi palvelinentiteeteiksi (Entity), mikä pakottaa ytimen käsittelemään niiden tekoälyä, fyysisiä törmäyksiä, reitinhakua ja chunkien lataamista. Tämä johtaa TPS-arvon (Ticks Per Second) kriittiseen laskuun hahmojen määrän kasvaessa. Lisäosa FancyNpcs tarjoaa vaihtoehtoisen, pakettipohjaisen menetelmän virtuaalisten hahmojen renderöintiin, mikä mahdollistaa satojen interaktiivisten hahmojen ylläpitämisen ilman minkäänlaista vaikutusta palvelinsäikeen suorituskykyyn.
Pakettiarkkitehtuuri ja Folia-yhteensopivuus
FancyNpcs:n pääasiallinen tekninen ominaisuus on, että sen luomat hahmot ovat olemassa yksinomaan lisäosan muistissa ja yhdistettyjen asiakasohjelmien puolella. Palvelin ei lisää niitä maailman tietokantaan eikä käsittele niitä entiteettien yleisessä päivityssyklissä.
Kun pelaaja lähestyy annettuja koordinaatteja, lisäosa sieppaa verkkoliikenteen ja lähettää asiakkaalle ClientboundAddPlayerPacket-paketteja (ihmismalleille) tai ClientboundAddEntityPacket-paketteja (muille olennoille). Hahmon jatkokäyttäytyminen, varusteet ja näyttötila päivitetään ClientboundSetEntityDataPacket- (metatiedot) ja ClientboundSetEquipmentPacket- (varustus) pakettien avulla. Palvelimen kannalta näitä hahmoja ei ole olemassa — ne ovat "virtuaalisia heijastuksia" loppukäyttäjille.
Tämä lähestymistapa tekee FancyNpcs:stä ihanteellisen valinnan Folia-pohjaisille monisäikeisille palvelimille. Koska Folia jakaa maailman erillisiin alueisiin, joista kukin toimii omassa säikeessään, perinteiset NPC-lisäosat aiheuttavat usein lukkiutumisia (deadlock) ja kriittisiä virheitä yrittäessään olla vuorovaikutuksessa eri alueiden säikeiden välillä. FancyNpcs käsittelee tietoja asynkronisesti ja lähettää paketit pelaajille suoraan, välttäen täysin ristiriidat Folian tehtäväajoittimen kanssa.
Ulkonäön mukauttamismahdollisuudet
Lisäosa tukee laajaa valikoimaa entiteettityyppejä ja visuaalisia tehosteita. Pelaajat voivat luoda NPC:itä minkä tahansa vanilla-mobin muodossa (Player, Cow, Zombie, Skeleton, Villager, Pig jne.) ja hienosäätää niiden ulkonäköä.
Skinien hallinta (ihmismalleille)
player-tyyppisille hahmoille on saatavilla useita lähteitä tekstuurien lataamiseen:
@mirror: NPC:n skini kopioi dynaamisesti sen pelaajan skinin, joka sitä parhaillaan katsoo.Lisensoidun tilin nimi tai UUID: lisäosa lähettää automaattisesti pyynnön Mojangin istuntopalvelimille vastaavan tekstuurin lataamiseksi.
Suora linkki verkkoresurssiin (URL): mahdollisuus ladata mikä tahansa kolmannen osapuolen .png-tiedosto verkkopalvelimelta.
Paikalliset tiedostot: kuvat, jotka on etukäteen sijoitettu kansioon /plugins/FancyNpcs/skins/.
Lippu
--slim: ottaa käyttöön kapean käsivarsimallin (Alex-tyyli) linkkien kautta ladatuille skineille.
Visuaaliset tehosteet ja attribuutit
Hehku (Glowing): lisää värillisen ääriviivan hahmon ympärille. Väri on sidottu vanilla-joukkuevärehin (Team Colors).
Varusteet (Equipment): hahmoille voidaan antaa mikä tahansa esine vasempaan tai oikeaan käteen, sekä pukea kypärä, rintapanssari, jalkasuojat ja saappaat.
Asennot (Poses): tuettuja ovat tietyt näyttötilat, kuten istuminen, makaaminen (sängyssä nukkumisen jäljittely), uiminen ja ryömiminen.
Koko (Scale): lisäosan uudemmissa versioissa on toteutettu tuki entiteettien skaalaamiselle (mallin fyysisen koon muuttaminen).
Komentojärjestelmä ja syntaksi
Hahmoja hallitaan yksinomaan komennoilla pelin chatissa tai palvelimen konsolissa. Alla oleva taulukko sisältää perussyntaksin kuvauksen:
Komento | Kuvaus ja parametrit | Käyttöesimerkki |
| Uuden hahmon luominen |
|
| Olemassa olevan hahmon poistaminen |
|
| Skinin vaihtaminen (nimi, url tai @mirror) |
|
| Pukee NPC:lle esineen, jota pelaaja pitää kädessään |
|
| Ottaa käyttöön värillisen hehkun mallin ympärillä |
|
| Saa hahmon kääntämään päänsä pelaajia kohti |
|
| Asettaa tietyt asennot tai mobien muunnelmat |
|
Lisäosan yleiseen hallintaan käytetään alustan komentoja:
/fancynpcs reload— lataa järjestelmäkokoonpanot uudelleen./fancynpcs save— kirjoittaa pakotetusti kaikkien NPC:iden nykyisen tilan levylle tietokantatiedostoon.
Interaktiivisten toimintojen järjestelmä (Actions)
FancyNpcs sisältää sisäänrakennetun skriptipohjaisen toimintomekanismin, joka aktivoituu, kun pelaaja on vuorovaikutuksessa hahmon kanssa. Toiminnot voidaan määrittää eri klikkaustyypeille (LEFT_CLICK, RIGHT_CLICK, ANY_CLICK).
Lisäosa tarjoaa seuraavat suoritettavat toimintotyypit:
message: viestin lähettäminen pelaajalle. Tukee MiniMessagea (Hex-värit) ja PlaceholdersAPI-muuttujia.player_command: komennon suorittaminen pelaajan nimissä.player_command_as_op: komennon suorittaminen pelaajan nimissä myöntämällä tilapäisesti operaattorin oikeudet (sellaisten komentojen aktivoimiseksi, joita tavallinen pelaaja ei voi käyttää).console_command: komennon suorittaminen palvelimen konsolin toimesta. Muuttuja {player} korvataan automaattisesti pelaajan nimellä.send_to_server: pelaajan välitön siirtäminen toiselle palvelimelle BungeeCord- tai Velocity-verkossa.wait: luo tauon toimintojen väliin (viive palvelimen tikkeinä).block_until_done: estää toistuvat klikkaukset NPC:hen, kunnes nykyinen toimintosarja on valmis.execute_random_action: satunnainen valinta yhdestä luettelon seuraavista toiminnoista.
Esimerkki monimutkaisen interaktiivisen skenaarion luomisesta Bob-nimiselle NPC:lle:
Tervetuloviestin lisääminen:
/npc action Bob RIGHT_CLICK add message <yellow>Tervetuloa palvelimellemme, %player_name%!</yellow>40 tikin (2 sekunnin) tauon lisääminen:
/npc action Bob RIGHT_CLICK add wait 40Pelaajan teleporttaaminen spawniin konsolin avulla:
/npc action Bob RIGHT_CLICK add console_command teleport {player} 0 100 0
Kiitos mahdollisuuden lisätä useita peräkkäisiä vaiheita ja säätää järjestystä komennoilla add_before, add_after ja move_up/move_down järjestelmänvalvojat voivat rakentaa täysimittaisia dialogipuita tai monimutkaisia siirtymämekaniikkoja aulapalvelimien välillä asentamatta ylimääräisiä lisäosia, kuten Denizen tai MyCommand.
Asetustiedostojen rakenne
Kaikki tiedot tallennetaan hakemistoon plugins/FancyNpcs/. Lisäosan toiminta perustuu kahteen tiedostoon:
1. config.yml
Tämä tiedosto määrittää lisäosan yleisen käyttäytymisen ja sisältää seuraavat asetukset:
turn_to_player_distance(oletus 5): säde lohkoina, jonka sisällä hahmo kääntää päänsä pelaajia kohti. Tämän parametrin alentaminen optimoi verkkopakettien lähettämisen kuormitetuilla alueilla.visibility_distance(oletus 20): etäisyys lohkoina, jolla NPC:n ilmestymispaketit lähetetään asiakkaalle. Sen pienentäminen auttaa piilottamaan hahmot seinien tai renderöintisumun taakse pelaajien FPS:n säästämiseksi.enable_autosave: muutosten automaattinen ajoittainen tallentaminen levylle.
2. npcs.yml
Tähän tiedostoon lisäosa tallentaa luotujen NPC:iden tietokannan. Jokainen hahmo kuvataan erillisellä tietolohkolla:
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>Tervetuloa!</green>" |
Varoitus: Tiedoston npcs.yml manuaalista muokkaamista ei suositella voimakkaasti syntaksin vaurioitumisen tai koordinaattien virheellisen määrittelyn riskin vuoksi. Kaikki muutokset NPC:n kokoonpanoon tulee tehdä yksinomaan pelin sisäisillä komennoilla ja sen jälkeen vahvistaa ne komennolla /fancynpcs save.
Yhteenveto
Lisäosa FancyNpcs on moderni ja suorituskykyinen ratkaisu koristeellisten ja interaktiivisten hahmojen luomiseen Minecraft Java Edition -palvelimilla. Se poistaa vanhempien työkalujen pääongelman — palvelimen suoritinajan kulumisen entiteettien ylläpitoon.
Lisäosan pääasiallinen rajoitus on tekoälyn täydellinen puuttuminen. Koska hahmot ovat virtuaalisia heijastuksia asiakkaan puolella, ne eivät voi liikkua itsenäisesti maailmassa, olla vuorovaikutuksessa lohkojen kanssa tai hyökätä muiden mobien kimppuun.
Verrattuna klassiseen Citizens-lisäosaan, joka tukee monimutkaisia liikkumismekaniikkoja (reittipisteiden navigointi) ja integraatiota taistelujärjestelmien kanssa (Sentinel-modi), FancyNpcs jää jälkeen tekoälyn joustavuudessa. Citizens kuitenkin aiheuttaa valtavan kuormituksen palvelimen pääsäikeelle ja on käytännössä soveltumaton käytettäväksi Folialla. FancyNpcs tarjoaa ihanteellisen vaihtoehdon aulapalvelimille, Velocity-keskittimille ja suurille SMP-projekteille, joissa hahmoilta vaaditaan vain staattista läsnäoloa, hyvää ulkonäköä ja nopeaa komentojen suorittamista klikkauksella.
Asennus
Tyypillinen asennus vie noin 5 minuuttia. Kulku on sama; vain Loader ja sopiva build vaihtuvat.
- 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.








