Minecraft Server için Mods - nasıl çalışır?


9

Minecraft sunucusu tek bir kavanoz olarak gelir. Modlar nasıl geliştirilir? Orijinal kavanozla nasıl etkileşime giriyorlar? Kaputun altında ne var?

Orada hangi teknolojiler var? Çoğunlukla C ++ / Python'lu biriyim, ama mods geliştirme hakkında bir şeyler öğrenmek istiyorum.

Yanıtlar:


11

JAR, sadece çeşitli sınıf dosyalarını ve kullanılan diğer meta verileri içeren bir ZIP dosyasıdır - tamamen standartlaştırılmış bir formattır.

ZIP dosyaları çıkarılabilir ve değişiklik için sınıf dosyaları gerektiği gibi düzenlenebilir. Değiştirilen dosyalar daha sonra arşive eklenir ve bu da sunucunun orijinal dosyalar yerine değiştirilmiş dosyaları kullanmasını sağlar.

Teknik olarak, Minecraft modları orijinal kodun gerçekten "hacklenmiş" versiyonlarıdır: gerçek ikili sınıf dosyaları, oyunun yeni şeyler hakkında bilgi vermesi için değiştirilmelidir; henüz resmi bir mod desteği yok (Notch, Beta sırasında üzerinde çalışacaklarını belirtmiş olsa da).

Elbette, modlar için aktif olarak tasarlarsanız, bu işleri yapmanın çok güzel bir yolu değildir. Bunun yerine, uygun durumlarda özel kodun çalıştırılmasına izin veren bir çeşit eklenti mimarisi tasarlarsınız. Tam olarak bu konuda nasıl yapacağınız, modlarınızın ne yapmasını istediğinize bağlıdır - örneğin, güvenlikle ilgili bir endişeniz varsa, muhtemelen mod arayüzünü bir tür komut dosyası kullanacak şekilde tasarlamak istersiniz, böylece modların yapmasını kısıtlayabilirsiniz kullanıcının bilgisayarına her türlü şey.


Bu tamamen doğru değil - McAdmin, örneğin, C #
BlueRaja - Danny Pflughoeft

@BlueRaja: MCAdmin benim görüşüme göre bir mod değil - özel, bağımsız bir sunucu. İstemcinin komutlarla yeni şeyler yapmasına izin verse de, iki şeyin farklı olduğunu düşünüyorum.
Michael Madsen

Ha? Hayır, kesinlikle bir moddu; Minecraft sunucusunun etrafına sarılmıştı. Minecraft sunucusunun çalışmasını gerektiriyordu, bu yüzden bağımsız değildi. Kaynağa kısaca baktım ve ağ mesajlarını ele geçirdi ve giriş / çıkış yollarında değiştirdi.
BlueRaja - Danny Pflughoeft

3
@BlueRaja: Ha - tek başına bir sunucu olduğuna yemin edebilirdi, ama sonra, aslında hiç kullanmadığımı itiraf ediyorum. Bu, özel bir durumdur, çünkü oynatıcı ile sunucu arasında proxy sunucusu olarak çalıştığı görülmektedir. Hala tam bir mod demezdim, ama bu sadece ben olabilirim.
Michael Madsen

6

Tek oyuncu modları, orijinal kodun saldırıya uğramış versiyonlarıdır. Çok oyunculu modlar şu anda farklı. Neredeyse hepsi, minecraft_server.jar'a (veya terim Java ülkesinde ne olursa olsun) bağlanan, ancak kendi işlev sınıflarını tanımlayan, temel işlevlerin bazılarını aşırı yükleyen ve kendi ana () işlevini çalıştıran hey0'ın sunucu sarmalayıcısını kullanır.

Hey0 bir mod API'sı sağlar . Görmek


1

Bilginiz için, Mojang yakın bir zamanda bir "Mod API" yayınlayacaktır (beta sırasında, yani Kasım 2011 civarında resmi sürümünden önce).

Aslında, Notch'un blogunda belirtildiği gibi tam kaynak kodu olacak

http://notch.tumblr.com/post/4955141617/the-plan-for-mods

ama şimdilik, kısmen gizlenmiş bir kodu görmek ve daha sonra kullanmak / hata ayıklamak için yeniden derlemek için kavanozları "koda etmek" zorundasınız.

Bunu yapmak için Minecraft Coder's Pack'i şiddetle tavsiye ederim http://mcp.ocean-labs.de/index.php/MCP_Releases

forumlarda da birkaç modlama öğreticisi var, bunun gibi: http://www.minecraftforum.net/topic/96862-creating-mods-modding-tutorials-21511/

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.