Son kullanma tarihi geçmiş, bayatlamış bir tarayıcı kullanıyorsanız. Mercedes kullanmak yerine tosbaya binmek gibi... Websiteleri düzgün görüntüleyemiyorsanız eh, bi zahmet tarayıcınızı güncelleyiniz. Modern Web standartlarını karşılayan bir tarayıcı alternatifine göz atın.
TanıtımSDTSpawner | Artık sunucunuzda mükemmel spawner plugini olsun! | 1.7-1.13.2 | GUI | Hologramlar | TÜRK YAPIMI!
Birileri spawner mı kodlamış hemen yorum yapmalıyım :D. çok fazla incelemeden çat pat bir şeyler söylemem gerek.
1- Mesaj sistemini set üzerine yapmaktan ziyade direk dosyadan çekebilir ve daha kullanışlı bir dil apisi yapabilir ya da spigottakileri kullanabilirsin.
2- Ayrıca xmaterial muhabbetine girmene pek gerek yoktu. En azından şu aşamada. Gereksiz kod kullanmaktan öteye gitmemiş olursun.
3- GUI muhabbetine gelirsek olayı çok aşırı uzatmışsın. Daha düzgün olabilirdi.
1- Direk dosyadan çekmek derken nasıl oluyor?
2- XMaterial yapmamın sebebi 1.13'de SPAWNER felan isimler farklı olduğu için hata çıkarıyordu bende birleştirdim ve 1.13'e destek sağladım.
3- GUI'yi yapmamın sebebi daha kullanışlı ve hızlı olmasını istediğim için, bide daha düzgün derken anlamadım :)
1- Direk dosyadan çekmek derken nasıl oluyor?
2- XMaterial yapmamın sebebi 1.13'de SPAWNER felan isimler farklı olduğu için hata çıkarıyordu bende birleştirdim ve 1.13'e destek sağladım.
3- GUI'yi yapmamın sebebi daha kullanışlı ve hızlı olmasını istediğim için, bide daha düzgün derken anlamadım :)
GUI kontrollerini yaparken çok mantıksız olmuş yani kontrolleri birleştirebilirsin. Yine yani aynı kontrolü her materyal için yapmayabilirsin. XMaterial ı da zaten birkaç yerde kullandığın için bütün class ı atmanın manası yok.
GUI kontrollerini yaparken çok mantıksız olmuş yani kontrolleri birleştirebilirsin. Yine yani aynı kontrolü her materyal için yapmayabilirsin. XMaterial ı da zaten birkaç yerde kullandığın için bütün class ı atmanın manası yok.
kaynak kodlarına bakıyorum da, gerçekten kötü kodlanmış, oop tan yana hiç bişi yok düm düz skript yazar gibi eklenti yazmışsın gibi duruyor, geliştirmen gerekiyor kendini oop alanında.
kaynak kodlarına bakıyorum da, gerçekten kötü kodlanmış, oop tan yana hiç bişi yok düm düz skript yazar gibi eklenti yazmışsın gibi duruyor, geliştirmen gerekiyor kendini oop alanında.
ilk olarak başlamak gerekirse main classının ismi niye main ve niye küçük harfle başlıyor bunu java'dan nasibini almamış acemi developerlar yapar hemen düzelt, SDTSpawner yapabilirisin. o kadar da önemli değil diye düşünüyorsan gerçekten gülücem bu lafına.
SedatTR/SDTSpawner
buna değinmek istiyorum, bu nedir? niye böyle bi zahmete girip kodunun leş gibi görünmesine sebebiyet veriyorsun? peki bunu düzeltmek için tavsiyen nedir diye sorarsan basit. plugin.getResource() methodunu kullanmasını öncelikle öğrenmen gerek, zaten olan bir dosyayı ve içinde olan verileri tek tek girmenin mantığı nedir? bir an önce file configuration ve mantığını öğrenmen gerekiyor utsukushihito/utsutil
bunu incele, kotlin olsa da anlaşılır java ile neredeyse aynı, resource methodunun nasıl kullanılacağını anlayabilirsin ve bu kod karmaşasından kurtulup kodunu 200-300 satır kısaltırsın.
SedatTR/SDTSpawner
burası kısmen normal gibi görünse de kod tekrarı olduğu için buna dikkat etmeli ve bundan kaçınmalısın, önerdiğim yöntem şu:
Kod:
public void registerListeners(Listener... listeners) {
Arrays.stream(listeners).forEach(listener -> Bukkit.getPluginManager().registerListeners(this,listener))
}
registerListeners(new Listener1(), new Listener2(), new Listener3) gibi kullanabilirsin
SedatTR/SDTSpawner
bu zahmet niye? sub command diye bir şey var niye bunu kullanmayın her arg için ayrı komut oluşturuyorsun? güzel bi command framework kullanabilirsin bunun gibi zorluklardan kurtulabilirsin. örnek frameworkü yine kendimden veriyim utsukushihito/utsutil
gerçekten gelişmek istiyorsan inceleyip kendine özgü framework ler yazabilirsin bunun gibi. main classınımız bu şekildeydi.
SedatTR/SDTSpawner
buna gelicek olursak, bu kadar if else olmadan da bunun aynı işlevini yarısı kadar yazılabilirdi, kodlarda ne yazıyor bakmadım ancak 4 kere aynı şeyi yazdığını görüyorum, if else lerin içinde if else onun içinde başka if else, burda sana önerim şu, SonarList adlı plugini indir kur ide'ne, o sana algoritmanda nerede hatan olduğunu kodlarını nasıl daha kısa hale getirebilirsin bunu göstericektir çok kullanışlı bir program ve zamanla ona bile ihtiyacın olmadan daha akıcı okunabilir kısa kodlar yazabiliceksin.
SedatTR/SDTSpawner
ya bu class a bakınca hani hakaret gibi gelicek ama kusasım geliyor gerçekten. bunun neresinden tutsan elinde kalır, üflesen gui sistemi patlıycak gibi duruyor, yani o kadar hard coded olmuş ki anlatamam. peki ne öneriyorum, öncelikle gui yi bukkit-api si ile yapmayı bırak ve kendine ya framework yaz ya da black adlı inventory frameworkü kullan ya da benim geliştirdiğim ve buglarını çözdüğüm black forkunu kullanabilirsin linkleri burada utsukushihito/utsutil personinblack/black
SedatTR/SDTSpawner bu class ta yapılacak en iyi şey, kodları okunabilir hale getirip dışardan bakan insanın daha iyi anlayabilir hale getirmektir, if koymuşsun tab koymamışsın kodlar birbirine yapışık duruyor ve hiç bişi anlaşılmıyor. SedatTR/SDTSpawner
aynı şey bunun içinde geçerli biraz emek ver diyorum sadece, ufak kodlama takıntıları edinmen gerekiyor, en basiti hizza konusunda. SedatTR/SDTSpawner
buda aynı SedatTR/SDTSpawner
ya bunlar ne nyie böyle bişi yazıyorsun sürekli anlaşmış değilim, main class ta bi config oluştur onu kullan her yerde niye her seferinde file file config load bilmem ne kullanıp habire config açıyorsun biraz oop mantığını kavra dediğimde bundan bahsediyordum, skript değil java yazıyorsun veriler class larda saklanabilir.
SedatTR/SDTSpawner
null kullanımını bırakman gerekiyor, 'null' kelimesini kullandığın an eklentinin patlama şansı o kadar artıyor, null dediğimiz şey java da hatta oop dillerinin hiç birinde var olmaması gereken şeylerdir, peki ne yapmalıyız? Why NULL is Bad?
bu makalede null un niye kötü olduğunu ve altarnetifi olan 'null object' in nasıl kullanıldığını anlatıyor, merak etme null object aslında null değil empty dir yani ismine aldanma.
SedatTR/SDTSpawner
mesela bu class yazdığın diğer class'lar arasında kötünün en iyisi muhtemelen, biraz geliştirebilirsen bu class'ta kendini, kendi stilini bulup ona göre tüm class'larını ona göre düzenleyebilirsin.
evet bu kadardı, son olarak şunu söylemek istiyorum, bu eleştiridir, seni kötülediğim falan yok, kötü kod yazıyorsun o ayrı ama en azından bir şeyler yazıyor ve çabalıyorsun bu senin için bir artı, bu sebebten yazacağın diğer eklentilerde başarılar diliyorum, umarım hepsini okur hepsinden ders çıkarır ve iyi bir developer olma yolunda ilerlersin. umarım spigot-bukkit developer değil has java developer olursun, forumda ki spigotta ve ya her hangi bir mc eklenti/modunun yazıldığı forumlarının genel sorunu budur. yüzde vericke olursan benim gördüğüm eklentilerin %90 ı sitelerde bu şekilde ve kimsenin java yı önemsediği yok, herkes spigot ve java da int string öğrenip koda girişiyor, öncelikle sana tavsiym güzel bir kurs bulup java'da OOP mantığını kavraman, ancak şöyle bir şeyde var ki kursların hiç biri yeterli düzeyde değil, onlardan öğrendiklerinle yine aynı şeyleri yazıcaksın ki benim de korkum bu çünkü bunun bu sefer doğru olduğuna inanıcaksın, peki ne tavsiye edersin dersen, yukarıda 'yegor256' adlı kişinin bloğunu takip etmeni öneririm, tüm makalelerini okuyum kendine dersler çıkartabilirsin, oop adlı kategorisinin altında 10larca makalesinden her birini özenle okuyup kendini geliştirebilirsin, design pattern ler kullanabilirsin, onunda makalesi mevcut, hangisini kullanmalısın hangisini kullanmamalısın hepsinin yazılı olduğu bir makalesi de var Design Patterns and Anti-Patterns, Love and Hate
bu makale, design pattern leride iyice kavrayabilirsen kendine has framework ler yaratabilirsin.
ilk olarak başlamak gerekirse main classının ismi niye main ve niye küçük harfle başlıyor bunu java'dan nasibini almamış acemi developerlar yapar hemen düzelt, SDTSpawner yapabilirisin. o kadar da önemli değil diye düşünüyorsan gerçekten gülücem bu lafına.
SedatTR/SDTSpawner
buna değinmek istiyorum, bu nedir? niye böyle bi zahmete girip kodunun leş gibi görünmesine sebebiyet veriyorsun? peki bunu düzeltmek için tavsiyen nedir diye sorarsan basit. plugin.getResource() methodunu kullanmasını öncelikle öğrenmen gerek, zaten olan bir dosyayı ve içinde olan verileri tek tek girmenin mantığı nedir? bir an önce file configuration ve mantığını öğrenmen gerekiyor utsukushihito/utsutil
bunu incele, kotlin olsa da anlaşılır java ile neredeyse aynı, resource methodunun nasıl kullanılacağını anlayabilirsin ve bu kod karmaşasından kurtulup kodunu 200-300 satır kısaltırsın.
SedatTR/SDTSpawner
burası kısmen normal gibi görünse de kod tekrarı olduğu için buna dikkat etmeli ve bundan kaçınmalısın, önerdiğim yöntem şu:
Kod:
public void registerListeners(Listener... listeners) {
Arrays.stream(listeners).forEach(listener -> Bukkit.getPluginManager().registerListeners(this,listener))
}
registerListeners(new Listener1(), new Listener2(), new Listener3) gibi kullanabilirsin
SedatTR/SDTSpawner
bu zahmet niye? sub command diye bir şey var niye bunu kullanmayın her arg için ayrı komut oluşturuyorsun? güzel bi command framework kullanabilirsin bunun gibi zorluklardan kurtulabilirsin. örnek frameworkü yine kendimden veriyim utsukushihito/utsutil
gerçekten gelişmek istiyorsan inceleyip kendine özgü framework ler yazabilirsin bunun gibi. main classınımız bu şekildeydi.
SedatTR/SDTSpawner
buna gelicek olursak, bu kadar if else olmadan da bunun aynı işlevini yarısı kadar yazılabilirdi, kodlarda ne yazıyor bakmadım ancak 4 kere aynı şeyi yazdığını görüyorum, if else lerin içinde if else onun içinde başka if else, burda sana önerim şu, SonarList adlı plugini indir kur ide'ne, o sana algoritmanda nerede hatan olduğunu kodlarını nasıl daha kısa hale getirebilirsin bunu göstericektir çok kullanışlı bir program ve zamanla ona bile ihtiyacın olmadan daha akıcı okunabilir kısa kodlar yazabiliceksin.
SedatTR/SDTSpawner
ya bu class a bakınca hani hakaret gibi gelicek ama kusasım geliyor gerçekten. bunun neresinden tutsan elinde kalır, üflesen gui sistemi patlıycak gibi duruyor, yani o kadar hard coded olmuş ki anlatamam. peki ne öneriyorum, öncelikle gui yi bukkit-api si ile yapmayı bırak ve kendine ya framework yaz ya da black adlı inventory frameworkü kullan ya da benim geliştirdiğim ve buglarını çözdüğüm black forkunu kullanabilirsin linkleri burada utsukushihito/utsutil personinblack/black
SedatTR/SDTSpawner bu class ta yapılacak en iyi şey, kodları okunabilir hale getirip dışardan bakan insanın daha iyi anlayabilir hale getirmektir, if koymuşsun tab koymamışsın kodlar birbirine yapışık duruyor ve hiç bişi anlaşılmıyor. SedatTR/SDTSpawner
aynı şey bunun içinde geçerli biraz emek ver diyorum sadece, ufak kodlama takıntıları edinmen gerekiyor, en basiti hizza konusunda. SedatTR/SDTSpawner
buda aynı SedatTR/SDTSpawner
ya bunlar ne nyie böyle bişi yazıyorsun sürekli anlaşmış değilim, main class ta bi config oluştur onu kullan her yerde niye her seferinde file file config load bilmem ne kullanıp habire config açıyorsun biraz oop mantığını kavra dediğimde bundan bahsediyordum, skript değil java yazıyorsun veriler class larda saklanabilir.
SedatTR/SDTSpawner
null kullanımını bırakman gerekiyor, 'null' kelimesini kullandığın an eklentinin patlama şansı o kadar artıyor, null dediğimiz şey java da hatta oop dillerinin hiç birinde var olmaması gereken şeylerdir, peki ne yapmalıyız? Why NULL is Bad?
bu makalede null un niye kötü olduğunu ve altarnetifi olan 'null object' in nasıl kullanıldığını anlatıyor, merak etme null object aslında null değil empty dir yani ismine aldanma.
SedatTR/SDTSpawner
mesela bu class yazdığın diğer class'lar arasında kötünün en iyisi muhtemelen, biraz geliştirebilirsen bu class'ta kendini, kendi stilini bulup ona göre tüm class'larını ona göre düzenleyebilirsin.
evet bu kadardı, son olarak şunu söylemek istiyorum, bu eleştiridir, seni kötülediğim falan yok, kötü kod yazıyorsun o ayrı ama en azından bir şeyler yazıyor ve çabalıyorsun bu senin için bir artı, bu sebebten yazacağın diğer eklentilerde başarılar diliyorum, umarım hepsini okur hepsinden ders çıkarır ve iyi bir developer olma yolunda ilerlersin. umarım spigot-bukkit developer değil has java developer olursun, forumda ki spigotta ve ya her hangi bir mc eklenti/modunun yazıldığı forumlarının genel sorunu budur. yüzde vericke olursan benim gördüğüm eklentilerin %90 ı sitelerde bu şekilde ve kimsenin java yı önemsediği yok, herkes spigot ve java da int string öğrenip koda girişiyor, öncelikle sana tavsiym güzel bir kurs bulup java'da OOP mantığını kavraman, ancak şöyle bir şeyde var ki kursların hiç biri yeterli düzeyde değil, onlardan öğrendiklerinle yine aynı şeyleri yazıcaksın ki benim de korkum bu çünkü bunun bu sefer doğru olduğuna inanıcaksın, peki ne tavsiye edersin dersen, yukarıda 'yegor256' adlı kişinin bloğunu takip etmeni öneririm, tüm makalelerini okuyum kendine dersler çıkartabilirsin, oop adlı kategorisinin altında 10larca makalesinden her birini özenle okuyup kendini geliştirebilirsin, design pattern ler kullanabilirsin, onunda makalesi mevcut, hangisini kullanmalısın hangisini kullanmamalısın hepsinin yazılı olduğu bir makalesi de var Design Patterns and Anti-Patterns, Love and Hate
bu makale, design pattern leride iyice kavrayabilirsen kendine has framework ler yaratabilirsin.
GitHub'a eklediğim SDTSpawner kodları eski, şuan o messages sistemini kullanmıyorum ve dediklerinin hepsini düzeltmeye çalışıp daha iyi kodlamaya çalışacağım. Senin sayende eksiklerimi öğrendim, bunun için ayrıca teşekkürler.
GitHub'a eklediğim SDTSpawner kodları eski, şuan o messages sistemini kullanmıyorum ve dediklerinin hepsini düzeltmeye çalışıp daha iyi kodlamaya çalışacağım. Senin sayende eksiklerimi öğrendim, bunun için ayrıca teşekkürler.