Minecraft Bedrock sunucusuna addon eklemek, dosyayı klasöre atıp geçmekle bitmez: paketi doğru dizine çıkarmanız ve ardından dünyanın içindeki iki JSON dosyasına paketin kimliğini elle yazmanız gerekir. Bedrock Dedicated Server (BDS), Java Edition’daki gibi bir eklenti (plugin) sistemi kullanmaz; yaptığınız her değişiklik behavior pack (davranış paketi) ve resource pack (kaynak paketi) üzerinden yürür.
Bu rehberde bir addon dosyasını sıfırdan alıp sunucuda çalışır hâle getirene kadar geçen bütün adımları göreceksiniz: arşivi açma, klasör yapısını doğru kurma, manifest.json içindeki UUID’yi bulma, world_behavior_packs.json dosyasını düzenleme ve paket yüklenmediğinde logdan hatayı okuma. Adımlar hem Windows hem Linux üzerindeki BDS kurulumları için geçerlidir; sunucunun kendisini henüz kurmadıysanız önce Windows’ta Bedrock Dedicated Server kurulumu ya da Ubuntu’da Bedrock Dedicated Server kurulumu sayfasını tamamlayın.
Behavior Pack ve Resource Pack Arasındaki Fark#
Bedrock tarafında "addon" dediğimiz şey aslında bu iki paket türünün biri ya da ikisidir. Hangisinin nereye gittiğini bilmezseniz kurulumun tamamı boşa gider, o yüzden önce bunu netleştirelim.
| Özellik | Behavior Pack (BP) | Resource Pack (RP) |
|---|---|---|
| Ne değiştirir | Oyun mantığı: yaratık davranışı, loot tablosu, craft tarifi, script | Görünüm ve ses: doku, model, animasyon, arayüz, müzik |
| Nerede çalışır | Yalnızca sunucuda | Oyuncunun cihazında |
| Sunucudaki klasörü | behavior_packs/ | resource_packs/ |
| Dünya kaydı | world_behavior_packs.json | world_resource_packs.json |
| Oyuncu indirir mi | Hayır | Evet, bağlanırken otomatik iner |
| Sunucu CPU’suna etkisi | Var (özellikle script içerenlerde) | Yok denecek kadar az |
Çoğu addon iki paketi birlikte dağıtır. Örneğin yeni bir yaratık ekleyen bir addonda yaratığın yapay zekâsı ve can değeri behavior pack’te, modeli ve dokusu resource pack’tedir. İkisinden biri eksik yüklenirse yaratık ya görünmez olur ya da hiç oluşmaz.
Sunucu Klasör Yapısını Tanıyın#
BDS kurulumunuz açıldığında karşınıza çıkan yapı şudur. Yolları Windows’ta C:\bedrock-server\, Linux’ta /opt/bedrock-server/ olarak düşünün:
bedrock-server/
├── bedrock_server (Linux) / bedrock_server.exe (Windows)
├── server.properties
├── allowlist.json
├── permissions.json
├── behavior_packs/ <-- BP klasörleri buraya
├── resource_packs/ <-- RP klasörleri buraya
├── development_behavior_packs/
├── development_resource_packs/
└── worlds/
└── Bedrock level/ <-- server.properties içindeki level-name
├── level.dat
├── db/
├── world_behavior_packs.json <-- BP kaydı
└── world_resource_packs.json <-- RP kaydı
Dikkat edilecek nokta: paketi kök dizindeki behavior_packs/ klasörüne koymak yüklemek anlamına gelmez, sadece "kütüphaneye eklemek" demektir. Paket ancak dünyanın kendi JSON dosyasında adı geçtiğinde etkinleşir. Bu iki adımlı yapı, aynı sunucuda birden fazla dünya tutup her dünyaya farklı addon seti vermenizi sağlar.
development_behavior_packs klasörü geliştirme içindir; buradaki paketler dünya her yüklendiğinde yeniden okunur, bu yüzden addon yazarken pratiktir ama yayında olan bir sunucuda kullanılmaz.
Addon Dosyasını Açma: .mcaddon ve .mcpack#
İnternetten indirdiğiniz addon büyük ihtimalle .mcaddon veya .mcpack uzantılıdır. İkisi de standart ZIP arşividir; sadece uzantısı farklıdır çünkü telefonda ya da masaüstünde çift tıklandığında Minecraft istemcisinin açması istenir. Sunucuda böyle bir otomatik açma yoktur.
- .mcpack — tek bir paket içerir. Açtığınızda doğrudan
manifest.jsonve yanındaki klasörleri görürsünüz. - .mcaddon — birden fazla paketi bir arada taşır. Açtığınızda içinden iki klasör (BP ve RP) ya da iki ayrı
.mcpackdosyası çıkabilir. İkinci durumda o.mcpackdosyalarını da ayrıca açmanız gerekir. - .zip — bazı yazarlar arşivi doğrudan zip olarak dağıtır; farkı yoktur.
Windows tarafında arşivi PowerShell ile açmak en hızlısıdır:
Rename-Item "C:\indirilenler\ornek-addon.mcaddon" "ornek-addon.zip"
Expand-Archive -Path "C:\indirilenler\ornek-addon.zip" -DestinationPath "C:\indirilenler\ornek-addon"
Get-ChildItem -Recurse -Filter manifest.json "C:\indirilenler\ornek-addon"
Linux tarafında unzip aynı işi görür; uzantıyı değiştirmeye bile gerek yoktur:
mkdir -p /tmp/ornek-addon
unzip ~/ornek-addon.mcaddon -d /tmp/ornek-addon
find /tmp/ornek-addon -name manifest.json
Son satırdaki arama önemli: manifest.json dosyalarının nerede olduğunu görürseniz paket klasörlerinin gerçek sınırını anlarsınız. Kopyalayacağınız klasör, manifest.json dosyasının bulunduğu klasördür — bir üstü değil.
manifest.json dışında .exe, .apk veya .bat uzantılı dosya görürseniz kullanmayın.Paketleri Sunucuya Yükleme (Adım Adım)#
-
Sunucuyu düzgün kapatın ve yedek alın#
Konsola
stopyazın ve işlemin tamamen kapanmasını bekleyin. Sunucu çalışırken dünya dosyalarına dokunmakdb/klasöründeki LevelDB veritabanını bozabilir. Kapattıktan sonraworlds/klasörünün bir kopyasını alın; yöntem için sunucu yedekleme rehberine bakabilirsiniz.cd /opt/bedrock-server tar -czf ~/dunya-yedek-$(date +%F).tar.gz worlds/ -
Behavior pack klasörünü kopyalayın#
Açtığınız arşivde içinde
entities,loot_tables,scriptsgibi klasörler bulunan paket behavior pack’tir. Klasörün tamamını sunucudakibehavior_packs/içine taşıyın. Klasör adında Türkçe karakter ve boşluk kullanmayın.cp -r /tmp/ornek-addon/OrnekAddon_BP /opt/bedrock-server/behavior_packs/ -
Resource pack klasörünü kopyalayın#
İçinde
textures,models,soundsklasörleri olan paket resource pack’tir; o daresource_packs/altına gider.cp -r /tmp/ornek-addon/OrnekAddon_RP /opt/bedrock-server/resource_packs/ -
manifest.json dosyalarından UUID’leri alın#
Her paketin
manifest.jsondosyasını açın veheaderbloğundakiuuidileversiondeğerlerini bir kenara not edin. Bu iki değeri birazdan JSON kaydına yazacaksınız. -
Dünya JSON dosyalarını düzenleyin#
worlds/<dünya adı>/klasöründekiworld_behavior_packs.jsonveworld_resource_packs.jsondosyalarına kayıtları ekleyin. Dosyalar yoksa elle oluşturun. -
Sunucuyu başlatın ve logu izleyin#
Sunucu açılırken konsolda paket adlarının geçtiğini görmelisiniz. Görmüyorsanız paket yüklenmemiştir; bir sonraki bölümlerdeki kontrol listesine geçin.
world_behavior_packs.json Nasıl Yazılır?#
Bu dosya bir JSON dizisidir ve her paket için tek bir nesne içerir. Sadece iki alan zorunludur: pack_id ve version.
[
{
"pack_id": "9c1c3b5a-1b2d-4e5f-8a90-1234567890ab",
"version": [1, 0, 0]
},
{
"pack_id": "d41f2a08-77c6-4b19-b0e2-55aa9911cc00",
"version": [2, 1, 4]
}
]
world_resource_packs.json dosyası da tamamen aynı biçimdedir; tek farkı resource pack’lerin UUID’lerini içermesidir. Değerleri şu manifest örneğinden nasıl aldığınıza dikkat edin:
{
"format_version": 2,
"header": {
"name": "Ornek Addon BP",
"description": "Ozel yaratik ve tarif paketi",
"uuid": "9c1c3b5a-1b2d-4e5f-8a90-1234567890ab",
"version": [1, 0, 0],
"min_engine_version": [1, 21, 0]
},
"modules": [
{
"type": "data",
"uuid": "3f0d9e77-2b44-4a11-9c33-abcdef123456",
"version": [1, 0, 0]
}
]
}
JSON’a yazılacak olan header bloğundaki UUID’dir, modules içindeki değil. Bu ikisinin karıştırılması, addon kurulumunda en sık görülen hatadır. Aynı şekilde version dizisi manifest’tekiyle birebir eşleşmelidir: manifest’te [2, 1, 4] yazıyorsa JSON’a [2, 1, 0] yazamazsınız.
Deneysel Özellikler ve level.dat Meselesi#
Bazı addonlar Script API’nin beta modüllerini, özel blok bileşenlerini veya henüz kararlı hâle gelmemiş oyun özelliklerini kullanır. Bu addonların çalışabilmesi için dünyada ilgili deneysel özelliğin (experiment) açık olması gerekir.
Burada takılan çok kullanıcı oluyor, çünkü deneysel ayarlar server.properties içinde bir satır değildir — dünyanın level.dat dosyasında saklanır. Yani sunucu tarafından açıp kapatamazsınız. Yapılacak iş şudur:
-
Dünyayı oyun istemcisinde oluşturun#
Telefon, konsol veya Windows sürümünde yeni dünya oluştururken "Oyun Ayarları" bölümünde ilgili deneysel anahtarları (örneğin Beta APIs) açın ve dünyaya girip çıkın.
-
Dünyayı dışa aktarın#
Dünya listesinde kalem simgesine dokunup "Dünyayı Dışa Aktar" seçeneğiyle
.mcworlddosyasını alın. -
Sunucuya yükleyin#
.mcworldyine bir ZIP arşividir. Açın ve içindekileriworlds/<dünya adı>/klasörüne kopyalayın, ardındanserver.propertiesiçindekilevel-namedeğerini o klasör adıyla eşleyin.
level-name=OzelDunya
texturepack-required=true
content-log-file-enabled=true
server-port=19132
server-portv6=19133
texturepack-required=true yaptığınızda oyuncular resource pack’i indirmeden sunucuya giremez; kendi dokularınızın herkeste görünmesini istiyorsanız bu satır işinize yarar. content-log-file-enabled=true ise addon hatalarının ayrı bir günlüğe yazılmasını sağlar, sorun giderirken çok işe yarayacak.
Addon Yüklenmediğinde Ne Yapmalı?#
Paket yüklenmediğinde sunucu genelde çökmez, sadece hiçbir şey olmaz. Bu yüzden hatayı bulmak logdan geçer. Sunucu açılışında paketlerin adı geçmiyorsa aşağıdaki tabloya bakın.
| Belirti | Olası neden | Çözüm |
|---|---|---|
| Paket logda hiç görünmüyor | UUID JSON’a yanlış yazılmış veya kayıt hiç eklenmemiş | manifest’teki header.uuid ile JSON’daki pack_id değerini karşılaştırın |
| Paket görünüyor ama içerik çalışmıyor | version dizisi manifest ile uyuşmuyor | Üç sayıyı da manifest’teki hâliyle yazın |
| ContentLog’da "manifest not found" | Klasör fazladan bir katman içinde | manifest.json, pack klasörünün ilk seviyesinde olmalı |
| "pack requires a newer version" | min_engine_version sunucudan yeni | Sunucuyu güncelleyin veya addonun eski sürümünü kullanın |
| Oyuncu bağlanırken indirme takılıyor | Resource pack çok büyük ya da bozuk | Paketi yeniden indirin, boyutu 100 MB altında tutmaya çalışın |
| Yaratık var ama görünmüyor | Resource pack yüklenmemiş | world_resource_packs.json kaydını kontrol edin |
ContentLog dosyasını açtığınızda paketin adının geçtiği satırları aramak en hızlı yöntemdir:
grep -i "OrnekAddon" /opt/bedrock-server/logs/ContentLog*.txt
tail -n 100 /opt/bedrock-server/logs/ContentLog*.txt
Windows’ta aynı işi Notepad++ ile açıp arama yaparak veya PowerShell’de Select-String ile yapabilirsiniz. Loglardan hata okuma alışkanlığı kazanmak, Bedrock kadar Java tarafında da işinize yarar; genel yaklaşım için Minecraft sunucu logları nasıl okunur sayfasına göz atın.
worlds/ klasörünün tam yedeğini alın.Birden Fazla Addon Kullanırken Sıralama#
JSON dizisindeki sıra rastgele değildir. Aynı dosyayı değiştiren iki paket varsa, listede üstte olan kazanır. Yani bir addonun diğerini ezmesini istiyorsanız onu dizinin başına koyun.
Pratikte şu kuralları uygulamak çakışmayı büyük ölçüde önler:
- Aynı yaratığa dokunan iki addon kurmayın; biri diğerinin davranış dosyasını tamamen geçersiz kılar.
- Bir addon başka bir pakete bağımlıysa manifest’in
dependenciesbloğunda belirtilir; bağımlı paketi de mutlaka yükleyin. - Yeni paketleri önce ayrı bir test dünyasında deneyin. Test dünyası açmak için
server.propertiesiçindekilevel-namedeğerini geçici olarak değiştirmeniz yeterlidir. - Her eklemeden sonra sunucuyu tek seferde tek paketle başlatın; beş paketi birden ekleyip hangisinin bozduğunu aramak zaman kaybıdır.
İndirmeniz Gerekenler#
-
Bedrock Dedicated ServerResmîİndir
-
7-Zip (arşiv açma)İndir
-
Notepad++ (JSON düzenleme)İndir
-
WinSCP (sunucuya dosya aktarma)İndir
Bağlantılar resmî kaynaklara gider. Üçüncü taraf sitelerden sunucu paketi indirmeyin.
Addonlu Bedrock Sunucusu İçin Donanım#
Script çalıştıran behavior pack’ler ana tick döngüsünün üzerine ek yük bindirir. Minecraft’ın dünya döngüsü tek çekirdekte işlediği için burada belirleyici olan çekirdek sayısı değil saat hızıdır. Batihost tarafında bu iş için AMD Ryzen 9 7900X / 7950X tabanlı makineler kullanılır; alt sınır Ryzen 9 3900X’tir.
| Senaryo | RAM | İşlemci | Disk |
|---|---|---|---|
| 2-10 oyuncu, birkaç hafif addon | 8 GB | Ryzen 9 7900X | NVMe SSD 50 GB |
| 10-30 oyuncu, script’li addon seti | 10-12 GB | Ryzen 9 7900X | NVMe SSD 100 GB |
| 30-60 oyuncu, çok dünyalı yapı | 16 GB | Ryzen 9 7950X | NVMe SSD 100 GB+ |
| 60+ oyuncu veya büyük addon paketi | 32 GB | Ryzen 9 7950X | NVMe SSD 200 GB+ |
Disk tarafında NVMe SSD tercih edilmesinin sebebi, Bedrock’un LevelDB veritabanına sürekli küçük yazma yapmasıdır; gecikmeli bir disk doğrudan chunk yükleme takılmalarına dönüşür. Hazır kurulu bir ortam istiyorsanız Minecraft PE / Bedrock sunucu paketleri ya da tam kontrol için VDS paketleri üzerinden ilerleyebilirsiniz.
Bedrock Addon mu, Java Eklentisi mi?#
Addon sistemi esnektir ama Java Edition’daki plugin ekosisteminin yerini tutmaz. Ekonomi, arazi koruma, gelişmiş yetkilendirme gibi sistemler Bedrock’ta hazır olarak yoktur; her birini addon içinde script yazarak kendiniz kurmanız gerekir.
Hem telefondan hem bilgisayardan oyuncu almak, aynı zamanda LuckPerms, WorldGuard gibi olgun eklentileri kullanmak istiyorsanız daha yaygın çözüm Paper sunucusu üzerine Geyser ve Floodgate kurmaktır. Bu yapıda Bedrock oyuncuları Java sunucusuna sorunsuz bağlanır, siz de eklenti tarafında serbest kalırsınız. İki sürüm arasındaki temel farkları Java Edition mı Bedrock Edition mı sayfasında karşılaştırdık.
Oyuncularınızın sunucuya nasıl bağlanacağını anlatmak için Bedrock sunucusuna nasıl girilir sayfasını paylaşabilirsiniz; addon yüklü sunucularda oyuncunun ilk girişte resource pack indirmesi gerektiğini de belirtin.
Özetle#
Bedrock sunucusuna addon eklemek iki aşamalıdır: paketi doğru klasöre çıkarmak ve dünyanın JSON kaydına UUID’yi yazmak. İkinci adım atlandığında paket sunucuda durur ama hiç çalışmaz — kurulumların büyük çoğunluğu tam burada takılır.
Kontrol listesi olarak aklınızda kalsın: sunucuyu stop ile kapatın, yedek alın, arşivi açıp manifest.json’un bulunduğu klasörü kopyalayın, header.uuid ve header.version değerlerini JSON’a birebir yazın, content-log-file-enabled=true yapıp sunucuyu başlatın ve logda paketin adını arayın. Bu sırayı takip ettiğinizde çalışmayan addon neredeyse hiç kalmaz.