• Forum vBulletin altyapısından Xenforo altyapısına geçirildi, bu sebeple eski şifreleriniz ile foruma giriş yapamayacaksınız, parolamı unuttum adımından mailiniz ile şifre sıfırlayarak giriş yapabilirsiniz.

    Üyeliklerinde geçerli bir mail adresi olmadığı için sıfırlama yapamayacak kullanıcılar forum kullanıcı adlarını ve yeni şifrelerini yazarak info@maxigame.org adresine şifre sıfırlamak istediklerine dair bir mail göndersinler şifrelerini sıfırlayıp mail adreslerini güncelleyeceğiz. Şifreniz sıfırlandıktan sonra foruma giriş yapıp tekrar istediğiniz gibi değiştirebilirsiniz.

MineCraft Mod Nasıl Yazılır ? Bölüm 3

  • Konuyu başlatan Konuyu başlatan IMLEGEND
  • Başlangıç tarihi Başlangıç tarihi

IMLEGEND

Aileden
Aktiflik
K.Tarihi
23 Nis 2009
Mesajlar
9,353
Puanı
152
Konum
Damn Of Hell
maxigamebanner1.png

maxayrac3.jpg

Standart Mod Dosyalarını Oluşturma

Mod yazmaya başlamamız için gereken standart mod dosyalarımız var. Bunları şöyle sıralayabiliriz;

  • Ana Mod Sınıfı: Modumuzun oyuna dahil olmasını ve oluşturduğumuz blok, eşya vesairenin oyuna eklenmesini sağlar ve düzenler.
  • Kaynaklar Sınıfı: Modumuzun İsmi, Sürümü gibi kaynakları barındıracak olan sınıf.
  • Proxy Sınıfları: Modumuzun oyunda görüntü oluşturmasını kontrol edecek olan sınıf.
  • Ana Mod Paketi: Geçen bölümde size paketlerden bahsedeceğimi söylemiştim. Paketler sınıfların gruplandırılmasıdır. Aynı paket içerisindeki sınıflar birbirine bağlanır. Aralarındaki çağırma ve tanımlamalara import istemezler. Ayrıca Eğer siz belirtmezseniz sınıf, metot ve değişkenlerin erişim seviyesi paketi arasında olur. Bunlara Java ile ilgili bölümlerde değineceğim.
En son örnek mod paketini silmiştik. Şimdi kendi paketimizi oluşturalım. Minecraft’ın altındaki src/main/java klasörüne sağ tıklayın ve New’in üzerine gelin. Sağda açılan bağlam menüsünden Package’a tıklayın. Açılan pencerede Name kısmına paket adını yazacaksınız. Paket adları için programcılar arasında belirli bir imla vardır. Paket adında buna uyulması zorunlu değildir ama uyulursa başka insanların işi kolaylaşır. Mesela Minecraft’daki ve Forge’daki büyün paketlerin ismi bu kurala göre düzenlenmiştir.

Bu nedenle hangi sınıfı çağıracağımızı kolaylıkla anlarız. İmla şöyle;

  1. Her harf küçük olarak yazılacak.
  2. Türkçe karakter kullanılmayacak. (Üzgünüm...)
  3. Eğer bir İnternet siteniz varsa onun uzantısıyla başlayacak. Örnek; “com”.
  4. Eğer bir İnternet siteniz yoksa “me” kelimesi ile başlayacak. Örnek; “me”
  5. İkinci kelime siteniz varsa onun adı ile devam edecek. Örnek; “com.mineturk”.
  6. Eğer siteniz yoksa ikinci kelime adınız veya takma adınız veya soyadınız ile devam edecek. Örnek; “me.centeglassered”.
  7. Üçüncü kelime modunuzun ismi olmalı. Örnek; “me.centeglassered.mineturk”.
  8. Dördüncü kelime ise o paketin ne ile alakalı olduğunu yazar. Eğer küçük bir modsa 3 kelimeli bir paketin içine tüm dosyaları koyarsınız. Örnek; “me.centeglassered.mineturk.anadosyalar”.
  9. Eğer o paketin içindeki dosyalar fazlaysa beşinci bir kelime ile aynı amaçlı dosyalar birleştirilebilir. Örnek; “me.centeglassered.mineturk.anadosyalar.proxy”.
Birde paketler için Java’nın zorunlu kıldığı birkaç imla var. Bunlar kesinlikle uygulanmalıdır. Yoksa hata verir;

  1. Kelimeler “.” ile ayrılacak.
  2. Rakamlar kullanılmayacak.
  3. “/, |, *, ;, :” gibi özel karakterler kullanılmayacak.
Paket oluşturma penceresinde fazla bir şey yok. Paket isminin ilk üç kelimesini belirttiğim gibi doldurun. Dördüncü kelime olarak “anadosyalar”ı ekleyin. (x.y.z.anadosyalar şeklinde, x, y ve z’yi siz belirleyeceksiniz) Sonra da Finish’e basın.

Sonra oluşturduğunuz pakete sağ tıklayın ve New’e gelin. Bu sefer Class’ı seçin. Gelen pencerenin yukarılarına doğru Package kısmı var. Oranın “x.y.z.anadosyalar” olduğuna emin olun. Sınıf isminde de programcılar arasında olan veya Java’nın zorunlu kıldığı imlalar var. Bunları birleştirerek şöyle özetlerim;

  1. Boşluk karakteri kullanılmayacak.
  2. Rakam ile başlamayacak fakat rakam kullanılabilir.
  3. Birden çok kelime varsa kelimeler büyük harfle başlayacak ve bitişik yazılacak. Örnek; “AnaModSınıfı”.
  4. “/, |, *, ;, :” gibi özel karakterler kullanılmayacak.
  5. Türkçe karakterler kullanılmayacak. (Hala üzgünüm...)
  6. “_” karakteri kullanılabilir. Genel kullanımı şöyledir; “SamanBlogu_1”, “SamanBlogu_2”, “SamanBlogu_3”³...
Şimdi Name kısmına modunuzun adını yazın. Yani paketinizin 3. kelimesi... Ben “Mineturk” yazacağım. sonra Finish’e basın.

Az önce bir sınıf oluşturdunuz. Sınıflar kodları, metotları, değişkenleri... tutan yapılardır. Aslında bir iskelet gibidirler. Sınıflardan nesneler oluşturulur ve bu nesneler erişim düzeyine göre static eki almayan her şeyi kullanabilir. İlerleyen kısımlarda dalacağız. Şimdilik sabredin. Mikrofon bekliyorum. Sınıfımızın içini şu şekilde doldurmalıyız. (x.y.z yerine kendi paketinizin ilk üç kelimesini yazmalısınız) Kopyala ”â€œ Yapıştır serbest; (<BuSınıfınAdınıYazın> kısmına sınıfa verdiğiniz adı yazın)

Kod:
package x.y.z.anadosyalar;

import x.y.z.anadosyalar.proxy.ServerProxy;
import x.y.z.kutuphane.MetinKaynagi;
import cpw.mods.fml.common.Mod;
import cpw.mods.fml.common.Mod.EventHandler;
import cpw.mods.fml.common.SidedProxy;
import cpw.mods.fml.common.event.FMLInitializationEvent;
import cpw.mods.fml.common.event.FMLPostInitializationEvent;
import cpw.mods.fml.common.event.FMLPreInitializationEvent;
 @[B][URL="https://www.maxigamerz.com/member.php?u=71851"]mod[/URL][/B](modid = MetinKaynagi.MODID, version = MetinKaynagi.VERSION, name = MetinKaynagi.NAME)
public class <BuSınıfınAdınıYazın> {
 
 @[B][URL="https://www.maxigamerz.com/member.php?u=197113"]Side[/URL][/B]dProxy(clientSide = MetinKaynagi.CLIENTSIDE, serverSide = MetinKaynagi.SERVERSIDE)
 public static ServerProxy proxy;

 @[B][URL="https://www.maxigamerz.com/member.php?u=141549"]Eventhandler[/URL][/B]
 public static void onYukleme(FMLPreInitializationEvent e) {
 
 // CREATIVE TABS
 
 // ITEMS
 
 // BLOCKS
 
 // WORLD
 
 // RECIPES
 }
 
 @[B][URL="https://www.maxigamerz.com/member.php?u=141549"]Eventhandler[/URL][/B]
 public static void yukleme(FMLInitializationEvent e) {
 
 // PROXY
 
 proxy.registerRendererInfo();
 
 // TILE ENTITY
 
 // GUI
 
 // PACAGE REGISTERING
 }
 
 @[B][URL="https://www.maxigamerz.com/member.php?u=141549"]Eventhandler[/URL][/B]
 public static void postInit(FMLPostInitializationEvent e) {
 
 } 
}

Şimdilik hata verebilir. Çünkü orada kullandığımız bütün sınıfları oluşturmadık. Daha yoklar. Şimdi paketinizin üstüne sağ tıklayın ve New’den Package’ı seçin. Bu sefer paketin üstüne sağ tıklayarak yeni paket oluşturduğunuz için Pakage yazan yerde zaten “x.y.z.anadosyalar” yazıyordur. Yazmıyorsa siz yazın. Sonuna da “.proxy”i ekleyin. Yani paketinizin adı “x.y.z.anadosyalar.proxy” olmalı. Bu paketin içine de bir sınıf oluşturun ve adı “ServerProxy” olsun. (artık paket ve sınıf oluşturmayı adım adım anlatmayacağım) Bu sınıfın içine şunları yazın;

Kod:
package x.y.z.anadosyalar.proxy;

public class ServerProxy {

 public void registerRendererInfo() {
 
 }
}
Sonra da “x.y.z.anadosyalar.proxy” paketinin içine “ClientProxy” isimli yeni bir sınıf oluşturun. Onun içi de şöyle olmalı;
Kod:
package me.centeglassered.mineturk.anadosyalar.proxy;

public class ClientProxy extends ServerProxy {

 public void registerRendererInfo() {
 
 }
}

Bunları yazdıktan sonra “Ctrl” tuşu ile “S” tuşuna aynı anda basın ve kaydedin. “public void registerRendererInfo() {” satırının soluna doğru o hizada gidin. Yukarı doğru bakan yeşil bir ok görüyorsanız doğru yazmışsınız demektir. Eğer görmüyorsanız kontrol edin.

Daha sonra yeni bir paket oluşturalım. Adı da “x.y.z.kutuphane” olsun. Bu pakete kaynak sınıflarımız gelecek. İlk kaynak sınıfımızı oluşturalım. Adını “MetinKaynagi” olarak ayarlayın. İçine de şunları yazın; (x yerine paketinizin ilk kelimesini, y yerine paketinizin ikinci kelimesini, z yerine de paketinizin üçüncü kelimesini yazın)

Kod:
package x.y.z.kutuphane;

public class MetinKaynagi {

 public static final String MODID = "z";
 public static final String NAME = "Modun Adı";
 public static final String VERSION = "Modun Sürümü";
 public static final String CLIENTSIDE = "x.y.z.anadosyalar.proxy.ClientProxy";
 public static final String SERVERSIDE = "x.y.z.anadosyalar.proxy.ServerProxy";
}
Java’da String denen bir sınıf vardır. Ve bu sınıfın nesneleri tırnak işaretleri içine yazılan değeri alır. Biz buna metin deriz. Örnek; “Cem”, “Adıyaman”, “Evet, Türkçe karakterleri alabiliyor!”...
Sonra sınıflarımızı kaydedelim. (“Ctrl” ve “S” tuşuna aynı anda basın. Bir daha söylemeyeceğim işimi uzatıyor.) Ve oyunu başlatalım. Başlatmayı 2. bölümde göstermiştim. Çalışmıyorsa yazdığınız kodları elden geçirin. Mods butonuna basın ve oradan kendi modunuzu arayın. Bulduğunuzda onun üzerine tıklayın ve “Modunuzun gösterilen bilgileri doğru mu?” diye kontrol edin. Zaten yalnızca sürüm ve isim ayarladık. Fazla bir şey görünmeyecek. Ama artık yeni şeyler eklemeye hazırsınız. Ana dosyanız tamam. Blok Oluşturma adlı yazımdaki yönergeler ile bloklar oluşturabilirsiniz.

Mod Bilgilerini Düzenleme (Ayrıntılı)

“src/main/java” klasörünün altında “src/main/resources” isimli başka bir klasör olmalı. Onu açın. İçinde “mcmod.info” bir dosya var. Bu dosyayı tutun ve kod yazdığınız alana sürükleyin. Bir metin belirmelidir. Orayı şöyle ayarlayın;
Kod:
[
{
 "modid": "z",
 "name": "Modunuzun İsmi",
 "description": "Modunuzun Açıklaması: Türkçe Karakter Kabulümüzdür",
 "version": "Sürüm",
 "mcversion": "1.7.10",
 "url": "Buraya varsa modunuzun yükleme adresini falan filan yazın aslında yazmanıza da gerek yokta...",
 "updateUrl": "",
 "authorList": [">p|q<"],
 "credits": ">p|q< tarafından yazılmıştır. Çalmayınız... :D",
 "logoFile": "",
 "screenshots": [],
 "dependencies": []
}
]

Tabii z kısmına paketinizin 3. kelimesini yazacaksınız. Burada yazdığınız bilgiler ile MetinKaynagi.java sınıfında yazdığınız bilgiler aynı olmalıdır. Artık oyuna girdiğinizde ve Mods kısmından modunuzun bilgilerine baktığınızda mcmod.info dosyasındaki bilgilerin yer aldığını göreceksiniz. Eğer görünmüyorsa bir yanlışınız vardır. mcmod.info dosyasına tekrar ayar çekin.

- Bölüm 1: https://www.maxigamerz.com/f1478/minecraft-mod-nasil-yazilir-bolum-1-a-241769/

- Bölüm 2:
https://www.maxigamerz.com/f1478/minecraft-mod-nasil-yazilir-bolum-2-a-241770/

- Bölüm 3: https://www.maxigamerz.com/f1478/minecraft-mod-nasil-yazilir-bolum-3-a-241771/

- Bölüm 4:
https://www.maxigamerz.com/f1478/minecraft-mod-nasil-yazilir-bolum-4-a-241772/

Alıntıdır.
 
Son düzenleme:
Geri
Üst