VyolmZ

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)

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;

@Mod(modid = MetinKaynagi.MODID, version = MetinKaynagi.VERSION, name = MetinKaynagi.NAME)
public class <BuSınıfınAdınıYazın> {
 
 @SidedProxy(clientSide = MetinKaynagi.CLIENTSIDE, serverSide = MetinKaynagi.SERVERSIDE)
 public static ServerProxy proxy;

 @EventHandler
 public static void onYukleme(FMLPreInitializationEvent e) {
 
 // CREATIVE TABS
 
 // ITEMS
 
 // BLOCKS
 
 // WORLD
 
 // RECIPES
 }
 
 @EventHandler
 public static void yukleme(FMLInitializationEvent e) {
 
 // PROXY
 
 proxy.registerRendererInfo();
 
 // TILE ENTITY
 
 // GUI
 
 // PACAGE REGISTERING
 }
 
 @EventHandler
 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;

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ı;

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)

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;

[
{
 "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.

 

Yazı bu kadar. Umarım yararlı olmuştur. Esen kalın…

 

 

Etiketler:
, , , , ,

Eklenme:
08 Şubat 2015

Bu yazı tarafından yazıldı.

Üç yıldır Minecraft oynuyor ve bir yıldır mod yazıyorum. Kızıl taş ve komut blokları hakkında da çok şey bilirim.

Twitter'dan Takip Et

  1. HitMan

    Gerçekten çok büyük emek sarf etmişsin en son kardeşime bir kod dili öğretmeye çalışmıştım sonra kendimi onu boğazlarken bulmuştum sinirden artık ne olduysa çok zordur bu işi öğretmek takdir ettim 😀

  2. Eser

    Ben Mod Yapmak İstiyorum Nasıl Mod Yüklenir Söylermisiniz Cevaplayarak Söyleyin 3 Yıldır Minecraft Oynuyorum Ama Mod Yapmayı Bilmiyorum Cevaplayarak Söylerseniz Mutlu Olurum 🙂

    • Centeglassered

      Modun türüne bağlıdır. İlk önce yükleyeceğiniz modun özelliklerini öğreneceksiniz nasıl bir yükleme yapmanız gerektiğini bilin.
      Eğer mod Minecraft Forge veya başka bir mod gerektiriyorsa ilk önce onları yüklemelisiniz.
      Minecraft Forge gerektiren modlarda Minecraft Forge yüklenir (onun yükleyicisi var biraz İngilizcen varsa havada karada yüklersin) daha sonra .minecraft klasörü altında oluşan mods klasörüne yükleyeceğin modu atarsın.
      Eğer Minecraft Forge’un yanında başka bir mod gerektiyorsa ikisini de mods klasörüne birlikte atarsın. (ilk önce gerektireni atmana gerek yok ama ikisi de aynı anda klasörde bulunmalı)
      Eğer Forge falan lazım değilse ama gerekli bir mod varsa modun dosyalarını .minecraft klasörünün içindeki versions klasörünün içindeki sürümlerden birini açar (mod hangi sürüm içinse) onun içine dosyaları atarsın.
      Eğer Forge lazım değilse fakat başka bir moda ihtiyaç duyuyorsa ikisinide verisonsdaki minecraft dosyalarının içine atarsın.

  3. Raven

    Ben her şeyi gösterdiğin gibi yaptım ama oyunu çalıştırdığımda mods ‘ta sadece forge modları gözüküyor.Yardım edebilirmisin???

  4. samed

    en son yüklü olan modu sildim ve dedinizki java dosyasına sağ tıklayın new’e basın ordan paket oluşturun dediniz o paket oluşturmayı bulamadım işte yardım ederseniz sevinirim

  5. NİCKSİZ

    Keşke videolu anlatsaydın

samed için cevap yaz