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

LifeMCServer

Nether Yerlisi
En iyi cevaplar
98
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
En iyi cevaplar
1
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
En iyi cevaplar
98

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
En iyi cevaplar
0
@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
En iyi cevaplar
98
@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