
FancyNpcs – Minecraft Java Edition 1.19.4–1.21.x
Beroenden: Plattform: Paper / Folia (Spigot och andra föråldrade Bukkit-förgreningar stöds inte) Java-version: Java 21+ (för de senaste…
Beroenden: Plattform: Paper / Folia (Spigot och andra föråldrade Bukkit-förgreningar stöds inte) Java-version: Java 21+ (för de senaste byggena krävs Java 25) Minecraft-version: 1.19.4 – 1.21.x Ytterligare bibliotek: Pl
Beroenden:
Plattform: Paper / Folia (Spigot och andra föråldrade Bukkit-förgreningar stöds inte)
Java-version: Java 21+ (för de senaste byggena krävs Java 25)
Minecraft-version: 1.19.4 – 1.21.x
Ytterligare bibliotek: PlaceholdersAPI (rekommenderas för att integrera variabler i åtgärdsgränssnittet)
Att skapa interaktiva icke-spelarkaraktärer (NPC:er) på Minecraft-servrar har traditionellt medfört betydande hårdvarukostnader. Föråldrade lösningar registrerar NPC:er som fullvärdiga serverentiteter (Entity), vilket tvingar kärnan att bearbeta deras artificiella intelligens, fysiska kollisioner, pathfinding och chunkladdning. Detta leder till ett kritiskt fall i TPS-värdet (Ticks Per Second) när antalet karaktärer ökar. Insticksprogrammet FancyNpcs erbjuder en alternativ, paketbaserad metod för att rendera virtuella karaktärer, vilket gör det möjligt att behålla hundratals interaktiva figurer utan någon påverkan på servertrådens prestanda.
Paketarkitektur och Folia-kompatibilitet
Den huvudsakliga tekniska egenskapen hos FancyNpcs är att de karaktärer som det skapar enbart existerar i insticksprogrammets minne och på de anslutna klienternas sida. Servern lägger inte till dem i världsdatabasen och bearbetar dem inte i den allmänna uppdateringscykeln för entiteter.
När en spelare närmar sig de angivna koordinaterna avlyssnar insticksprogrammet nätverkstrafiken och skickar klienten paketen ClientboundAddPlayerPacket (för mänskliga modeller) eller ClientboundAddEntityPacket (för andra varelser). Det vidare beteendet, utrustningen och visningsstatusen uppdateras med hjälp av paketen ClientboundSetEntityDataPacket (metadata) och ClientboundSetEquipmentPacket (utrustning). För servern existerar dessa karaktärer inte — de är "virtuella projektioner" för slutanvändarna.
Detta tillvägagångssätt gör FancyNpcs till ett idealiskt val för flertrådade servrar baserade på Folia. Eftersom Folia delar upp världen i separata regioner som var och en körs i sin egen tråd, orsakar traditionella NPC-insticksprogram ofta dödlägen och kritiska fel på grund av försök till interaktion mellan trådar från olika regioner. FancyNpcs bearbetar data asynkront och skickar paket direkt till spelare, vilket helt undviker konflikter med Folias uppgiftsschemaläggare.
Möjligheter att anpassa utseendet
Insticksprogrammet stöder ett brett spektrum av entitetstyper och visuella effekter. Spelare kan skapa NPC:er i form av vilken vanilla-mobb som helst (Player, Cow, Zombie, Skeleton, Villager, Pig och så vidare) och finjustera deras utseende.
Skinhantering (för mänskliga modeller)
För karaktärer av typen player finns det flera källor för att ladda texturer:
@mirror: NPC:ns skin kopierar dynamiskt skinet hos den spelare som för tillfället tittar på den.Namn eller UUID för ett licensierat konto: insticksprogrammet skickar automatiskt en begäran till Mojangs sessionsservrar för att ladda motsvarande textur.
Direktlänk till en webbresurs (URL): möjligheten att ladda vilken tredjeparts .png-fil som helst från en webbserver.
Lokala filer: bilder som i förväg har placerats i mappen /plugins/FancyNpcs/skins/.
Flaggan
--slim: aktiverar användningen av den smala armmodellen (Alex-stil) för skins som laddats via länkar.
Visuella effekter och attribut
Glöd (Glowing): lägger till en färgad kontur runt karaktären. Färgen är kopplad till vanilla-lagfärgerna (Team Colors).
Utrustning (Equipment): karaktärer kan tilldelas vilka föremål som helst i vänster eller höger hand, samt utrustas med hjälm, bröstplåt, benskydd och stövlar.
Poser (Poses): specifika visningstillstånd stöds, såsom att sitta, ligga ner (efterlikna sömn i en säng), simma och krypa.
Storlek (Scale): i nyare versioner av insticksprogrammet har stöd för skalning av entiteter (ändring av modellens fysiska storlek) implementerats.
Kommandosystem och syntax
Karaktärer hanteras uteslutande med hjälp av kommandon i spelets chatt eller serverkonsolen. Tabellen nedan innehåller en beskrivning av den grundläggande syntaxen:
Kommando | Beskrivning och parametrar | Användningsexempel |
| Skapa en ny karaktär |
|
| Ta bort en befintlig karaktär |
|
| Ändra skin (namn, url eller @mirror) |
|
| Utrustar NPC:n med föremålet som spelaren håller i |
|
| Aktiverar en färgad glöd runt modellen |
|
| Får karaktären att vända huvudet mot spelare |
|
| Ställer in specifika poser eller mobb-varianter |
|
För global administration av insticksprogrammet används plattformskommandon:
/fancynpcs reload— laddar om systemkonfigurationerna./fancynpcs save— tvingar fram en skrivning av det aktuella tillståndet för alla NPC:er till disken i databasfilen.
System för interaktiva åtgärder (Actions)
FancyNpcs innehåller en inbyggd skriptmekanism för åtgärder som aktiveras när en spelare interagerar med en karaktär. Åtgärder kan konfigureras för olika klicktyper (LEFT_CLICK, RIGHT_CLICK, ANY_CLICK).
Insticksprogrammet erbjuder följande typer av åtgärder att utföra:
message: skicka ett meddelande till spelaren. Stöder MiniMessage (Hex-färger) och PlaceholdersAPI-variabler.player_command: utföra ett kommando för spelarens räkning.player_command_as_op: utföra ett kommando för spelarens räkning med tillfälligt tilldelade operatörsrättigheter (för att aktivera kommandon som en vanlig spelare inte kan använda).console_command: utföra ett kommando via serverkonsolen. Variabeln {player} ersätts automatiskt med spelarens namn.send_to_server: omedelbar förflyttning av spelaren till en annan server i BungeeCord- eller Velocity-nätverket.wait: skapar en paus mellan åtgärder (fördröjning i servertick).block_until_done: förhindrar upprepade klick på NPC:n tills den aktuella åtgärdssekvensen är slutförd.execute_random_action: slumpmässigt val av en av de följande åtgärderna i listan.
Exempel på att skapa ett komplext interaktivt scenario för en NPC vid namn Bob:
Lägga till ett välkomstmeddelande:
/npc action Bob RIGHT_CLICK add message <yellow>Välkommen till vår server, %player_name%!</yellow>Lägga till en paus på 40 tick (2 sekunder):
/npc action Bob RIGHT_CLICK add wait 40Teleportera spelaren till spawn via konsolen:
/npc action Bob RIGHT_CLICK add console_command teleport {player} 0 100 0
Tack vare möjligheten att lägga till flera på varandra följande steg och justera kön med hjälp av add_before, add_after och move_up/move_down kan administratörer bygga fullvärdiga dialogträd eller komplexa mekaniker för övergångar mellan lobbyservrar utan att installera ytterligare insticksprogram som Denizen eller MyCommand.
Konfigurationsfilernas struktur
All data lagras i katalogen plugins/FancyNpcs/. Insticksprogrammets funktion baseras på två filer:
1. config.yml
Denna fil definierar insticksprogrammets globala beteende och innehåller följande inställningar:
turn_to_player_distance(standard 5): radien i block inom vilken karaktären vänder huvudet mot spelare. Att sänka denna parameter optimerar överföringen av nätverkspaket i belastade zoner.visibility_distance(standard 20): avståndet i block på vilket NPC-uppdykningspaket skickas till klienten. Att minska det hjälper till att dölja karaktärer bakom väggar eller renderingsdimma för att spara spelarnas FPS.enable_autosave: automatisk periodisk skrivning av ändringar till disken.
2. npcs.yml
I denna fil lagrar insticksprogrammet databasen över skapade NPC:er. Varje karaktär beskrivs av ett separat datablock:
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>Välkommen!</green>" |
Varning: Att manuellt redigera filen npcs.yml avråds starkt på grund av risken att skada syntaxen eller felaktigt definiera koordinaterna. Alla ändringar av NPC-konfigurationen bör göras uteslutande via kommandon i spelet och sedan låsas fast med hjälp av /fancynpcs save.
Slutsats
Insticksprogrammet FancyNpcs är en modern och högpresterande lösning för att skapa dekorativa och interaktiva karaktärer på Minecraft Java Edition-servrar. Det eliminerar det huvudsakliga problemet med äldre verktyg — förbrukningen av serverns processortid för att hantera entiteter.
Insticksprogrammets huvudsakliga begränsning är den fullständiga avsaknaden av artificiell intelligens. Eftersom karaktärerna är virtuella projektioner på klientsidan kan de inte själva förflytta sig i världen, interagera med block eller attackera andra mobbar.
Jämfört med det klassiska insticksprogrammet Citizens, som stöder komplexa förflyttningsmekaniker (navigering via waypoints) och integration med stridssystem (Sentinel-modden), kommer FancyNpcs till korta vad gäller flexibiliteten hos den artificiella intelligensen. Citizens skapar dock en kolossal belastning på serverns huvudtråd och är praktiskt taget oanvändbart på Folia. FancyNpcs erbjuder ett idealiskt alternativ för lobbyservrar, Velocity-hubbar och stora SMP-projekt, där det enda som krävs av karaktärerna är en statisk närvaro, ett snyggt utseende och snabb utförande av kommandon vid klick.
Installation
En typisk installation tar ungefär 5 minuter. Flödet är detsamma; bara Loader och den matchande builden skiljer sig.
- 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.








