
FancyNpcs – Minecraft Java Edition 1.19.4–1.21.x
Bağımlılıklar: Platform: Paper / Folia (Spigot ve diğer eski Bukkit çatalları desteklenmez) Java sürümü: Java 21+ (en yeni derlemeler için…
Bağımlılıklar: Platform: Paper / Folia (Spigot ve diğer eski Bukkit çatalları desteklenmez) Java sürümü: Java 21+ (en yeni derlemeler için Java 25 gereklidir) Minecraft sürümü: 1.19.4 – 1.21.x Ek kütüphaneler: Placehold
Bağımlılıklar:
Platform: Paper / Folia (Spigot ve diğer eski Bukkit çatalları desteklenmez)
Java sürümü: Java 21+ (en yeni derlemeler için Java 25 gereklidir)
Minecraft sürümü: 1.19.4 – 1.21.x
Ek kütüphaneler: PlaceholdersAPI (değişkenlerin eylem arayüzüne entegrasyonu için önerilir)
Minecraft sunucularında etkileşimli oyuncu olmayan karakterler (NPC) oluşturmak geleneksel olarak önemli donanım maliyetleriyle birlikte gelir. Eski çözümler NPC'leri tam teşekküllü sunucu varlıkları (Entity) olarak kaydeder; bu da çekirdeği onların yapay zekâsını, fiziksel çarpışmalarını, yol bulmasını ve chunk yüklemesini işlemeye zorlar. Bu durum, karakter sayısı arttıkça TPS (Ticks Per Second) göstergesinde kritik bir düşüşe yol açar. FancyNpcs eklentisi, sanal karakterlerin işlenmesi için alternatif, paket tabanlı bir yöntem sunar ve bu sayede sunucu iş parçacığının performansını hiçbir şekilde etkilemeden yüzlerce etkileşimli figürün tutulmasına olanak tanır.
Paket mimarisi ve Folia uyumluluğu
FancyNpcs'in temel teknik özelliği, oluşturulan karakterlerin yalnızca eklentinin belleğinde ve bağlı istemcilerin tarafında var olmasıdır. Sunucu, onları dünya veritabanına eklemez ve genel varlık güncelleme döngüsünde işlemez.
Bir oyuncu belirlenen koordinatlara yaklaştığında, eklenti ağ trafiğini yakalar ve istemciye ClientboundAddPlayerPacket (insan modelleri için) veya ClientboundAddEntityPacket (diğer yaratıklar için) paketlerini gönderir. Sonraki davranış, ekipman ve görüntüleme durumu, ClientboundSetEntityDataPacket (meta veriler) ve ClientboundSetEquipmentPacket (ekipman) paketleri aracılığıyla güncellenir. Sunucu için bu karakterler mevcut değildir; bunlar son kullanıcılar için «sanal projeksiyonlardır».
Bu yaklaşım, FancyNpcs'i Folia tabanlı çok iş parçacıklı sunucular için ideal bir seçim hâline getirir. Folia dünyayı, her biri kendi iş parçacığında çalışan ayrı bölgelere böldüğünden, geleneksel NPC eklentileri farklı bölgelerin iş parçacıkları arasında etkileşim girişimleri nedeniyle sıklıkla kilitlenmelere ve kritik hatalara yol açar. FancyNpcs verileri eşzamansız olarak işler ve paketleri doğrudan oyunculara göndererek Folia'nın görev zamanlayıcısıyla yaşanan çatışmalardan tamamen kaçınır.
Görünüm özelleştirme olanakları
Eklenti, geniş bir varlık türü ve görsel efekt yelpazesini destekler. Oyuncular, herhangi bir vanilla mob (Player, Cow, Zombie, Skeleton, Villager, Pig vb.) biçiminde NPC oluşturabilir ve görünümlerini ince ayrıntısına kadar ayarlayabilir.
Skin yönetimi (insan modelleri için)
player türündeki karakterler için doku yüklemenin birkaç kaynağı mevcuttur:
@mirror: NPC'nin skin'i, o anda kendisine bakan oyuncunun skin'ini dinamik olarak kopyalar.Lisanslı bir hesabın adı veya UUID'si: eklenti, ilgili dokuyu yüklemek için Mojang oturum sunucularına otomatik olarak bir istek gönderir.
Bir web kaynağına doğrudan bağlantı (URL): bir web sunucusundan herhangi bir üçüncü taraf .png dosyasını yükleme olanağı.
Yerel dosyalar: önceden /plugins/FancyNpcs/skins/ klasörüne yerleştirilmiş görseller.
Bayrak
--slim: bağlantılarla yüklenen skin'ler için ince kol modelinin (Alex tarzı) kullanımını etkinleştirir.
Görsel efektler ve öznitelikler
Parlama (Glowing): karakterin çevresine renkli bir kontur ekler. Renk, vanilla takım renklerine (Team Colors) bağlanır.
Ekipman (Equipment): karakterlere sol veya sağ ele herhangi bir eşya verilebilir, ayrıca onlara miğfer, göğüslük, baldır zırhı ve bot giydirilebilir.
Pozlar (Poses): oturma, yatma (yatakta uyuma taklidi), yüzme ve sürünme gibi belirli görüntüleme durumları desteklenir.
Boyut (Scale): eklentinin yeni sürümlerinde varlıkların ölçeklendirilmesi (model fiziksel boyutunun değiştirilmesi) desteği uygulanmıştır.
Komut sistemi ve söz dizimi
Karakterlerin yönetimi yalnızca oyun sohbetinde veya sunucu konsolunda komutlarla gerçekleştirilir. Aşağıdaki tablo temel söz diziminin açıklamasını içerir:
Komut | Açıklama ve parametreler | Kullanım örneği |
| Yeni bir karakter oluşturma |
|
| Mevcut bir karakteri silme |
|
| Skin değiştirme (ad, url veya @mirror) |
|
| Oyuncunun elinde tuttuğu eşyayı NPC'ye giydirir |
|
| Modelin çevresinde renkli parlamayı etkinleştirir |
|
| Karakteri başını oyunculara doğru çevirmeye zorlar |
|
| Belirli pozları veya mob varyantlarını ayarlar |
|
Eklentinin genel yönetimi için platform komutları kullanılır:
/fancynpcs reload— sistem yapılandırmalarını yeniden yükler./fancynpcs save— tüm NPC'lerin mevcut durumunu zorla diske, veritabanı dosyasına yazar.
Etkileşimli eylemler sistemi (Actions)
FancyNpcs, oyuncunun karakterle etkileşime girmesi sırasında etkinleşen yerleşik bir eylem betik mekanizması içerir. Eylemler farklı tıklama türleri için yapılandırılabilir (LEFT_CLICK, RIGHT_CLICK, ANY_CLICK).
Eklenti, yürütülmek üzere aşağıdaki eylem türlerini sunar:
message: oyuncuya bir mesaj gönderme. MiniMessage (Hex renkleri) ve PlaceholdersAPI değişkenlerini destekler.player_command: oyuncu adına bir komut yürütme.player_command_as_op: oyuncu adına, geçici olarak operatör yetkileri verilerek bir komut yürütme (sıradan bir oyuncunun kullanamayacağı komutları etkinleştirmek için).console_command: sunucu konsolu tarafından bir komut yürütme. {player} değişkeni otomatik olarak oyuncunun adıyla değiştirilir.send_to_server: oyuncuyu BungeeCord veya Velocity ağındaki başka bir sunucuya anında aktarma.wait: eylemler arasında bir duraklama oluşturur (sunucu tick'leri cinsinden gecikme).block_until_done: mevcut eylem senaryosu tamamlanana kadar NPC'ye tekrar tekrar tıklanmasını engeller.execute_random_action: listedeki sonraki eylemlerden birinin rastgele seçimi.
Bob adlı bir NPC için karmaşık bir etkileşimli senaryo oluşturma örneği:
Bir karşılama mesajı ekleme:
/npc action Bob RIGHT_CLICK add message <yellow>Sunucumuza hoş geldin, %player_name%!</yellow>40 tick'lik (2 saniye) bir duraklama ekleme:
/npc action Bob RIGHT_CLICK add wait 40Konsol aracılığıyla oyuncuyu spawn'a ışınlama:
/npc action Bob RIGHT_CLICK add console_command teleport {player} 0 100 0
Birden çok ardışık adım ekleme ve sırayı add_before, add_after ve move_up/move_down ile ayarlama olanağı sayesinde yöneticiler, Denizen veya MyCommand gibi ek eklentiler kurmadan tam teşekküllü diyalog ağaçları veya lobi sunucuları arasında karmaşık geçiş mekanikleri oluşturabilir.
Yapılandırma dosyalarının yapısı
Tüm veriler plugins/FancyNpcs/ dizininde saklanır. Eklentinin çalışması iki dosyaya dayanır:
1. config.yml
Bu dosya, eklentinin genel davranışını tanımlar ve aşağıdaki ayarları içerir:
turn_to_player_distance(varsayılan 5): karakterin başını oyunculara doğru çevirdiği, blok cinsinden yarıçap. Bu parametrenin düşürülmesi, yoğun bölgelerde ağ paketlerinin iletimini optimize eder.visibility_distance(varsayılan 20): NPC görünme paketlerinin istemciye gönderildiği, blok cinsinden mesafe. Azaltılması, oyuncuların FPS'sini korumak için karakterleri duvarların veya işleme sisinin arkasına gizlemeye yardımcı olur.enable_autosave: değişikliklerin otomatik ve düzenli olarak diske kaydedilmesi.
2. npcs.yml
Bu dosyada eklenti, oluşturulan NPC'lerin veritabanını saklar. Her karakter ayrı bir veri bloğuyla tanımlanır:
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>Hoş geldin!</green>" |
Uyarı: npcs.yml dosyasının elle düzenlenmesi, söz diziminin bozulması veya koordinatların hatalı belirlenmesi riski nedeniyle kesinlikle önerilmez. NPC yapılandırmasında yapılacak her türlü değişiklik yalnızca oyun içi komutlar aracılığıyla yapılmalı ve ardından /fancynpcs save ile kaydedilmelidir.
Sonuç
FancyNpcs eklentisi, Minecraft Java Edition sunucularında dekoratif ve etkileşimli karakterler oluşturmak için modern ve verimli bir çözümdür. Eski araçların temel sorununu — varlıkların sürdürülmesi için sunucu işlemci süresinin tüketilmesini — ortadan kaldırır.
Eklentinin temel kısıtlaması, yapay zekânın tamamen bulunmamasıdır. Karakterler istemci tarafındaki sanal projeksiyonlar olduğundan, dünyada kendi başlarına hareket edemez, bloklarla etkileşime giremez veya diğer mob'lara saldıramazlar.
Karmaşık hareket mekaniklerini (yol noktalarıyla gezinme) ve savaş sistemleriyle (Sentinel modu) entegrasyonu destekleyen klasik Citizens eklentisiyle karşılaştırıldığında, FancyNpcs yapay zekânın esnekliği açısından geride kalır. Ancak Citizens, sunucunun ana iş parçacığına muazzam bir yük bindirir ve Folia üzerinde kullanım için pratikte uygun değildir. FancyNpcs; karakterlerden yalnızca statik bir varlık, güzel bir görünüm ve tıklandığında komutların hızlı yürütülmesinin beklendiği lobi sunucuları, Velocity hub'ları ve büyük SMP projeleri için ideal bir alternatif sunar.
Kurulum
Tipik bir kurulum yaklaşık 5 dakika sürer. Akış aynıdır; yalnızca loader ve uygun build değişir.
- 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.








