Onaylı Tanıtım Minecraft Eklenti Birden fazla sürüm olması

YusufEmre456

Zombi Katili
Mesajlar
238
En iyi cevaplar
1
Beğeniler
25
Puanları
260
Ruh hali
Bir eklenti yazıcam birden fazla sürümü nasıl olucak?
 


LifeMCServer

Nether Yerlisi
Mesajlar
2,410
En iyi cevaplar
98
Beğeniler
2,461
Puanları
10,250
Ruh hali
Birden fazla sürümü nasıl olacak derken sanırım bir den fazla Minecraft / Bukkit sürümünü desteklemekten bahsediyorsun. NMS veya OBC / Reflection kullanmadığın sürece eklentin büyük ihtimal tüm sürümlerde çalışır.

Bukkit API dışında NMS vesaire kullanacaksanda yukarıda atılan abstraction taktiğini kullanabilirsin. Eğer onla uğraşamam diyorsan direk Reflection ile de yapabilirsin (daha performanssız olacaktır)
 

YusufEmre456

Zombi Katili
Mesajlar
238
En iyi cevaplar
1
Beğeniler
25
Puanları
260
Ruh hali
Birden fazla sürümü nasıl olacak derken sanırım bir den fazla Minecraft / Bukkit sürümünü desteklemekten bahsediyorsun. NMS veya OBC / Reflection kullanmadığın sürece eklentin büyük ihtimal tüm sürümlerde çalışır.

Bukkit API dışında NMS vesaire kullanacaksanda yukarıda atılan abstraction taktiğini kullanabilirsin. Eğer onla uğraşamam diyorsan direk Reflection ile de yapabilirsin (daha performanssız olacaktır)
1.8 - 1.9 gibi?
 

LifeMCServer

Nether Yerlisi
Mesajlar
2,410
En iyi cevaplar
98
Beğeniler
2,461
Puanları
10,250
Ruh hali

Projeyi 1.8.8 API'si ile build edersen üst sürümlerde de sorunsuz çalışacaktır. Çalışmayan yerler için özel kod yazarsın. Veya 1.9.4 API'si ile build edip 1.8.8 için özel kod yazarsın. Eğer eklentim sürekli MC sürümleri ile güncellenecek diyorsan son sürüm API kullan, diğer türlü 1.8.8 API'si yeterli olacaktır.
 

MegaCrafter

Obsidyen Madencisi
Mesajlar
1,419
En iyi cevaplar
0
Beğeniler
1,542
Puanları
3,070
@LifeMCServer çok güzel açıklamış ama ben bildiğim bir örnekle daha güzel göstermek istedim. Versiyonlara özel bir kod veya net.minecraft.server paketi içerisinden bir şey kullanmadıysan (Packet sınıfları, Craft'la başlayan sınıflar vs.) eklentin her versiyonda çalışır. Versiyonlara özel koddan kasıt da şu: Mesela 1.8-1.12 arası ve 1.13'ün boya eşyalarına yaklaşımı farklı. Yanlış hatırlamıyorsam 1.8-1.12 sürümlerinde her boya eşyasını INK_SACK materyaline data vererek elde ederken, 1.13'de her boya eşyasına ayrı materyal biçiminde erişmen gerekiyor. 1.8 ile boya eşyalarını kullanan bir eklenti yazarsan 1.13 için çalışmayacaktır bu durumda.
 

LifeMCServer

Nether Yerlisi
Mesajlar
2,410
En iyi cevaplar
98
Beğeniler
2,461
Puanları
10,250
Ruh hali
@LifeMCServer çok güzel açıklamış ama ben bildiğim bir örnekle daha güzel göstermek istedim. Versiyonlara özel bir kod veya net.minecraft.server paketi içerisinden bir şey kullanmadıysan (Packet sınıfları, Craft'la başlayan sınıflar vs.) eklentin her versiyonda çalışır. Versiyonlara özel koddan kasıt da şu: Mesela 1.8-1.12 arası ve 1.13'ün boya eşyalarına yaklaşımı farklı. Yanlış hatırlamıyorsam 1.8-1.12 sürümlerinde her boya eşyasını INK_SACK materyaline data vererek elde ederken, 1.13'de her boya eşyasına ayrı materyal biçiminde erişmen gerekiyor. 1.8 ile boya eşyalarını kullanan bir eklenti yazarsan 1.13 için çalışmayacaktır bu durumda.

1.8 ile boya eşyalarını kullanan bir eklenti yazarsan 1.13 için çalışmayacaktır bu durumda.

plugin.yml dosyasında api-version: 1.13 belirtilmediği sürece Spigot otomatik backwards compatibility uyguluyor diye biliyorum. bunun dışında dediklerin doğru, ben daha çok tekniksel olarak kısa kısa açıklamıştım, örneklendirmen daha iyi olmuş.

(bu backwards compatibility reflection veya class loading hack tarzı bir şey, tam olarak bakmadım incelemdim fakat mesela Material.LEGACY_ ile başlayan şeyler var 1.12'de ki varyasyonunu tespit edip legacy'i kullandırtıyor, api-version: 1.13 ise'de bir şey yapmıyor normal şekilde NoSuchFieldError veriyor kod)
 

Üst