
FancyNpcs – Minecraft Java Edition 1.19.4–1.21.x
Afhængigheder: Platform: Paper / Folia (Spigot og andre forældede Bukkit-forks understøttes ikke) Java-version: Java 21+ (Java 25 kræves…
Afhængigheder: Platform: Paper / Folia (Spigot og andre forældede Bukkit-forks understøttes ikke) Java-version: Java 21+ (Java 25 kræves til de nyeste builds) Minecraft-version: 1.19.4 – 1.21.x Yderligere biblioteker: P
Afhængigheder:
Platform: Paper / Folia (Spigot og andre forældede Bukkit-forks understøttes ikke)
Java-version: Java 21+ (Java 25 kræves til de nyeste builds)
Minecraft-version: 1.19.4 – 1.21.x
Yderligere biblioteker: PlaceholdersAPI (anbefales til integration af variabler i handlingsgrænsefladen)
Oprettelse af interaktive ikke-spillerkarakterer (NPC'er) på Minecraft-servere har traditionelt været forbundet med betydelige hardwareomkostninger. Forældede løsninger registrerer NPC'er som fuldgyldige serverentiteter (Entity), hvilket tvinger kernen til at behandle deres kunstige intelligens, fysiske kollisioner, pathfinding og chunk-indlæsning. Dette fører til et kritisk fald i TPS-værdien (Ticks Per Second), efterhånden som antallet af karakterer vokser. Plugin'et FancyNpcs tilbyder en alternativ, pakkebaseret metode til at rendere virtuelle karakterer, hvilket gør det muligt at have hundredvis af interaktive figurer uden nogen indvirkning på servertrådens ydeevne.
Pakkearkitektur og Folia-kompatibilitet
Den vigtigste tekniske egenskab ved FancyNpcs er, at de karakterer, det opretter, kun eksisterer i plugin'ets hukommelse og på de tilsluttede klienters side. Serveren tilføjer dem ikke til verdensdatabasen og behandler dem ikke i den generelle opdateringscyklus for entiteter.
Når en spiller nærmer sig de angivne koordinater, opfanger plugin'et netværkstrafikken og sender klienten ClientboundAddPlayerPacket-pakker (til menneskemodeller) eller ClientboundAddEntityPacket (til andre væsner). Efterfølgende opførsel, udstyr og visningsstatus opdateres ved hjælp af pakkerne ClientboundSetEntityDataPacket (metadata) og ClientboundSetEquipmentPacket (udstyr). For serveren eksisterer disse karakterer ikke — de er "virtuelle projektioner" for slutbrugerne.
Denne tilgang gør FancyNpcs til et ideelt valg til flertrådede servere baseret på Folia. Da Folia opdeler verden i separate regioner, der hver kører i sin egen tråd, forårsager traditionelle NPC-plugins ofte deadlocks og kritiske fejl på grund af forsøg på interaktion mellem tråde fra forskellige regioner. FancyNpcs behandler data asynkront og sender pakker direkte til spillere, hvilket fuldstændig undgår konflikter med Folias opgaveplanlægger.
Muligheder for tilpasning af udseende
Plugin'et understøtter en bred vifte af entitetstyper og visuelle effekter. Spillere kan oprette NPC'er i form af alle vanilla-mobs (Player, Cow, Zombie, Skeleton, Villager, Pig osv.) og finjustere deres udseende.
Skin-styring (til menneskemodeller)
For karakterer af typen player er der flere kilder til indlæsning af teksturer:
@mirror: NPC'ens skin kopierer dynamisk skinnet fra den spiller, der i øjeblikket ser på den.Navn eller UUID på en licenseret konto: plugin'et sender automatisk en anmodning til Mojangs sessionsservere for at indlæse den tilsvarende tekstur.
Direkte link til en webressource (URL): mulighed for at indlæse enhver tredjeparts .png-fil fra en webserver.
Lokale filer: billeder, der på forhånd er placeret i mappen /plugins/FancyNpcs/skins/.
Flaget
--slim: aktiverer brugen af den slanke armmodel (Alex-stil) til skins, der er indlæst via links.
Visuelle effekter og attributter
Glød (Glowing): tilføjer en farvet kontur omkring karakteren. Farven er knyttet til vanilla-holdfarver (Team Colors).
Udstyr (Equipment): karakterer kan udstyres med ethvert objekt i venstre eller højre hånd samt iføres en hjelm, brystplade, benbeklædning og støvler.
Stillinger (Poses): der understøttes specifikke visningstilstande, såsom at sidde, ligge ned (efterligning af at sove i en seng), svømme og kravle.
Størrelse (Scale): i nyere versioner af plugin'et er der implementeret understøttelse af skalering af entiteter (ændring af modellens fysiske størrelse).
Kommandosystem og syntaks
Karakterer styres udelukkende ved hjælp af kommandoer i spillets chat eller serverkonsollen. Tabellen nedenfor indeholder en beskrivelse af den grundlæggende syntaks:
Kommando | Beskrivelse og parametre | Anvendelseseksempel |
| Oprettelse af en ny karakter |
|
| Fjernelse af en eksisterende karakter |
|
| Ændring af skin (navn, url eller @mirror) |
|
| Udstyrer NPC'en med det objekt, spilleren holder |
|
| Aktiverer en farvet glød omkring modellen |
|
| Får karakteren til at dreje hovedet mod spillere |
|
| Indstiller specifikke stillinger eller mob-varianter |
|
Til global administration af plugin'et bruges platformskommandoer:
/fancynpcs reload— genindlæser systemkonfigurationerne./fancynpcs save— gemmer tvunget den aktuelle tilstand af alle NPC'er på disken i databasefilen.
System til interaktive handlinger (Actions)
FancyNpcs indeholder en indbygget script-mekanisme til handlinger, der aktiveres, når en spiller interagerer med en karakter. Handlinger kan konfigureres til forskellige kliktyper (LEFT_CLICK, RIGHT_CLICK, ANY_CLICK).
Plugin'et tilbyder følgende typer handlinger til udførelse:
message: afsendelse af en besked til spilleren. Understøtter MiniMessage (Hex-farver) og PlaceholdersAPI-variabler.player_command: udførelse af en kommando på vegne af spilleren.player_command_as_op: udførelse af en kommando på vegne af spilleren med midlertidig tildeling af operatorrettigheder (til aktivering af kommandoer, som en almindelig spiller ikke kan bruge).console_command: udførelse af en kommando af serverkonsollen. Variablen {player} erstattes automatisk med spillerens navn.send_to_server: øjeblikkelig overførsel af spilleren til en anden server i BungeeCord- eller Velocity-netværket.wait: opretter en pause mellem handlinger (forsinkelse i serverticks).block_until_done: forhindrer gentagne klik på NPC'en, indtil det aktuelle handlingsforløb er afsluttet.execute_random_action: tilfældigt valg af én af de følgende handlinger på listen.
Eksempel på oprettelse af et komplekst interaktivt scenarie for en NPC ved navn Bob:
Tilføjelse af en velkomstbesked:
/npc action Bob RIGHT_CLICK add message <yellow>Velkommen til vores server, %player_name%!</yellow>Tilføjelse af en pause på 40 ticks (2 sekunder):
/npc action Bob RIGHT_CLICK add wait 40Teleportering af spilleren til spawn via konsollen:
/npc action Bob RIGHT_CLICK add console_command teleport {player} 0 100 0
Takket være muligheden for at tilføje flere sekventielle trin og justere køen ved hjælp af add_before, add_after og move_up/move_down kan administratorer opbygge fuldgyldige dialogtræer eller komplekse mekanikker til overgange mellem lobby-servere uden at installere yderligere plugins som Denizen eller MyCommand.
Struktur af konfigurationsfiler
Alle data gemmes i mappen plugins/FancyNpcs/. Plugin'ets drift er baseret på to filer:
1. config.yml
Denne fil definerer plugin'ets globale opførsel og indeholder følgende indstillinger:
turn_to_player_distance(standard 5): radius i blokke, inden for hvilken karakteren drejer hovedet mod spillere. Sænkning af denne parameter optimerer overførslen af netværkspakker i belastede zoner.visibility_distance(standard 20): afstanden i blokke, hvor NPC-spawn-pakker sendes til klienten. Reduktion hjælper med at skjule karakterer bag vægge eller render-tåge for at spare spillernes FPS.enable_autosave: automatisk periodisk skrivning af ændringer til disken.
2. npcs.yml
I denne fil gemmer plugin'et databasen over oprettede NPC'er. Hver karakter beskrives med en separat datablok:
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>Velkommen!</green>" |
Advarsel: Manuel redigering af filen npcs.yml frarådes på det kraftigste på grund af risikoen for at ødelægge syntaksen eller definere koordinaterne forkert. Enhver ændring af NPC-konfigurationen bør udelukkende foretages via kommandoer i spillet og derefter fastlåses ved hjælp af /fancynpcs save.
Konklusion
Plugin'et FancyNpcs er en moderne og effektiv løsning til oprettelse af dekorative og interaktive karakterer på Minecraft Java Edition-servere. Det eliminerer hovedproblemet ved ældre værktøjer — forbruget af serverens CPU-tid på betjening af entiteter.
Plugin'ets vigtigste begrænsning er den fuldstændige mangel på kunstig intelligens. Da karaktererne er virtuelle projektioner på klientsiden, kan de ikke selv bevæge sig rundt i verden, interagere med blokke eller angribe andre mobs.
Sammenlignet med det klassiske plugin Citizens, der understøtter komplekse bevægelsesmekanikker (waypoint-navigation) og integration med kampsystemer (Sentinel-modden), kommer FancyNpcs til kort i fleksibiliteten af kunstig intelligens. Citizens skaber dog en kolossal belastning på serverens hovedtråd og er praktisk talt uegnet til brug på Folia. FancyNpcs tilbyder et ideelt alternativ til lobby-servere, Velocity-hubs og store SMP-projekter, hvor karaktererne kun kræves at have en statisk tilstedeværelse, et godt udseende og hurtig udførelse af kommandoer ved klik.
Installation
En typisk installation tager omkring 5 minutter. Forløbet er det samme; kun Loader og den matchende build er forskellige.
- 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.








