Skip to content

Sunucunda modlar ​

Önizleme

Blockheads Server geliştirme sürümlerinde Lua ve WASM (Rust) modlarını çalıştırır; henüz bir sürümde yok. İstemci parçası olan modlar için oyuncuların mod yükleyicisi olmalı (PC Sürümü ya da Patcher'lı Android).

Modları aç ​

Modlar, sunucunun veri klasöründeki mods klasöründen yüklenir:

KurulumMod klasörü
Masaüstü / komut satırı<veri klasörü>/mods (veri klasörü BLOCKHEADS_DATA_DIR; yoksa ev klasöründeki GNUstep/Library/ApplicationSupport/TheBlockheads)
Dockerbirimin içinde /data/mods
Her yerdeBLOCKHEADS_MODS_DIR değişkenini başka bir klasöre ayarla

Mod klasörü yoksa (ya da boşsa) sunucu tam olarak vanilla gibi davranır: aynı baytlar, kayıtlar ve çıktı.

Mod kur ​

  1. .bhmod dosyasını Modlar sayfasından indir (ya da yazarından al). Açılmış bir mod klasörü de (içinde mod.toml olan) çalışır.
  2. Mod klasörüne koy.
  3. İzinlerini mods.toml içinde ver (aşağıda).
  4. Sunucuyu yeniden başlat. Günlükte loaded 1 mod(s): … ya da bir modun neden yüklenmediği görünür.

Server uygulamasında mod klasörün için bir Modlar ekranı da var (geliştirme sürümleri).

mods.toml ​

mods.toml mod klasöründe durur. Her mod id'si için bir bölüm vardır:

toml
[hello-lua]
grant = ["players:chat"]

[noisy-mod]
enabled = false   # kurulu kalır, hiç yüklenmez

İzin gerektirmeyen bir mod için bölüm gerekmez. Vermediğin bir izni isteyen mod yüklenmez; ona bağlı modlar da atlanır.

İzinler ​

İzinModun yapabilecekleri
players:chatherkese sohbet mesajı göndermek
players:kick, players:banoyuncuları atmak veya yasaklamak
players:teleport, players:inventory, players:healthoyuncuları taşımak, envanter veya canı değiştirmek
world:read, world:writedünyayı okumak veya değiştirmek (world:write world:read'i de kapsar)
net-http:<host>o siteye bağlanmak
channelsdiğer modlara ve istemcilere mesaj göndermek
nativekorumalı alanın dışında yerel kod çalıştırmak (kırmızı uyarı, elle incelenir)

Geri kalan her şey izin gerektirmez: olaylar, kendi komutları, zamanlayıcılar, kendi depolaması, tek bir oyuncuya sohbet ve bağlı olduğu modların servisleri. Modun herkese açık listedeki sayfası ne istediğini gösterir.

Süre ve bellek sınırları ​

Modlar sunucunun ana iş parçacığında çalışır, bu yüzden her birinin süresi ve belleği sınırlıdır:

  • Bir moda yapılan her çağrı en fazla 25 ms sürebilir (5 ms'den sonra günlüğe uyarı yazılır).
  • Tüm modlar birlikte dünya adımı başına 20 ms alır; fazlası için zamanlayıcılar sonraki adımı bekler.
  • Her mod 32 MiB bellek alır.

Bir hata, zaman aşımı ya da belleğin bitmesi bir arızadır. 60 sn içinde 3 arıza, modu bir sonraki yeniden başlatmaya kadar kapatır; günlük disabled: 3 faults within 60 s der ve hatayı belirtir. Modun yazarına bildir.

Çalışan modları yönet ​

Yöneticiler sunucuyu yeniden başlatmadan modları listeleyebilir, yeniden yükleyebilir ve sürelerini görebilir: /mods, /mods reload [id], /mods timings. Sıcak yenileme ve süreler sayfasına bak.

Depolama ​

Her mod kendi verisini dünya başına saves/<world>/mods/storage içinde tutar, dünyadan ayrı. Silersen modların verisi sıfırlanır, dünyaya dokunulmaz. Dünyayla birlikte yedekle.

Java modları (JVM) ​

Java veya Kotlin ile yazılmış modlar sunucunun içindeki bir Java sanal makinesinde çalışır. Bir JVM korumalı alana alınamaz; bu yüzden varsayılan olarak kapalıdır ve modun native izni olmalıdır:

  1. Makineye Java 8 veya daha yenisini kur (ya da sunucuya bir tane göster).
  2. Sunucu uygulamasında Ayarlar > Java modları anahtarını aç (ya da sunucuyu BLOCKHEADS_JVM=1 ile başlat; BLOCKHEADS_JAVA_HOME Java klasörünü seçer). Uygulama Java desteğiyle derlenmiş olmalıdır, değilse anahtarın altında söyler.
  3. mods.toml içinde moda native ver. Kırmızı uyarı modun üzerinde kalır.

Bunu yalnızca güvendiğin modlar için aç. Süre sınırı Java kodundaki sıkı bir döngüyü kesemez, yalnızca bekleyen bir çağrıyı keser.

Vanilla oyuncular ​

  • Yalnızca sunucu modları: herkes normal oyunla katılabilir.
  • İstemcide zorunlu modlar önizleme: mod yükleyicisi olmayan oyuncular geri çevrilir (oyunları istemcinin çok eski olduğunu söyler). Modun sayfası bunları client-required olarak işaretler.

Resmî olmayan topluluk projesi. Majic Jungle Software veya Noodlecake ile bağlantısı yoktur. Oyun dosyası içermez.