Arkadaşlık Sistemi - Eklenti Halinde!

MegaCrafter

Obsidyen Madencisi
Mesajlar
1,419
En iyi cevaplar
0
Beğeniler
1,542
Puanları
3,070
Merhaba. Geçen hafta @Breakthrough bir skript konusu açtı. Arkadaşlık Sistemi Skripti yapmış. Ben de bayadır eklenti olarak böyle bir sistemi yapmayı istiyordum, ama hiç zamanım olmamıştı. Artık her hafta sonu yeteri kadar vaktim oluyor. Bu yüzden hazır o arkadaşın skriptini görmüşken ben de alternatif olarak eklenti halini yapayım dedim. Bu durumu zaten yapmaya başlamadan önce kendisine özel mesaj yoluyla da söylemiştim.

İlk başta o konuya bir link vereyim de skript olarak kullanmak isteyenler 2 saat aramasın.
https://forum.gamer.com.tr/konu/ark...r-duezeltildi-ark-duyuru-eklendi-v0-5.378951/

Eklenti hali skript haliyle tamamen aynı değil. Bazı farklılıklar var. Gönderilen mesajlar, GUI menülerinin düzen biçimleri gibi şeyler farklı olabilir. Ama mantık olarak çoğunlukla aynı. O konudaki gibi "hatasız, bugsuz" gibi şeyler yazamam, çünkü tamamen denemedim. Daha doğrusu arkadaşım olmadığı için deneyemedim (:ciddi:). Eğer denerseniz ve herhangi bir hata bulursanız bana söyleyin, en kısa zamanda düzeltmeye çalışırım.

Eklentinin ana komudu /ark komududur. Neler kullanabileceğinizi görmek için sadece /ark yazabilirsiniz. Alias olarak /fr /friend /dost /arkadaş komutlarını da kullanabilirsiniz. Ama mesajlarda sadece /ark olarak geçecektir.

Fazla bir şey anlatmama gerek yok aslında. Direk olarak skript halinde gördüğüm komut ve sistemleri eklemeye çalıştım. Bildiğim 3 farkı söyleyeyim: Eklenti halinde /ark duyuru komutu yok, arkadaş sınırı yok ve oyuncu çevrimdışı iken gönderilen arkadaşlık isteklerini gösteren bir şey yok. O çevrimdışı iken olan olayları oyuncu geri girdiğinde göstermek benim fikrimdi ama bu hafta sonu bitmeden yetişebilmesi için onu eklemedim. Gelecek hafta sonu /ark duyuru komutu ile o gösterme olayını ekleyebilirim.

Fazla bekletmeden indirme linkini vereyim: İNDİR (Dosya.host)
Dosya.host açılmıyorsa diye alternatif bir link de vereyim: İNDİR (Dosya.tc)
Her ne kadar eklentilerde virustotal verilmesini biraz saçma bulsam da yine de kural kuraldır: VİRUSTOTAL
 


Son düzenleme:

Breakthrough

Obsidyen Madencisi
Mesajlar
1,332
En iyi cevaplar
0
Beğeniler
1,098
Puanları
2,930
Hemen indirip deniyorum :)

Edit: Başka bir siteye yükleyebilir misin? dosya.host açılmıyor bende.
 

Breakthrough

Obsidyen Madencisi
Mesajlar
1,332
En iyi cevaplar
0
Beğeniler
1,098
Puanları
2,930
Konuya ekledim alternatif linki. O da açılmazsa başka nereye yükleyebilirim bilmiyorum.
Tamamdır, indirdim.
15 dakikaya dönerim, bir sorun bulursam iletirim.

/ark komutunda sadece 'Komutların üstüne tıklayarak komutların kullanımını görebilirsiniz çıktısını alıyorum.
1.12 PaperSpigot, tek eklenti bu sistem.
Ve şöyle bir hata var:
Kod:
[22:08:40 WARN]: java.io.IOException: Sistem belirtilen yolu bulamıyor
[22:08:40 WARN]:        at java.io.WinNTFileSystem.createFileExclusively(Native Method)
[22:08:40 WARN]:        at java.io.File.createNewFile(Unknown Source)
[22:08:40 WARN]:        at com.megacrafter.friendsystem.Core.onEnable(Core.java:43)
[22:08:40 WARN]:        at org.bukkit.plugin.java.JavaPlugin.setEnabled(JavaPlugin.java:264)
[22:08:40 WARN]:        at org.bukkit.plugin.java.JavaPluginLoader.enablePlugin(JavaPluginLoader.java:316)
[22:08:40 WARN]:        at org.bukkit.plugin.SimplePluginManager.enablePlugin(SimplePluginManager.java:404)
[22:08:40 WARN]:        at org.bukkit.craftbukkit.v1_12_R1.CraftServer.enablePlugin(CraftServer.java:376)
[22:08:40 WARN]:        at org.bukkit.craftbukkit.v1_12_R1.CraftServer.enablePlugins(CraftServer.java:325)
[22:08:40 WARN]:        at net.minecraft.server.v1_12_R1.MinecraftServer.t(MinecraftServer.java:441)
[22:08:40 WARN]:        at net.minecraft.server.v1_12_R1.MinecraftServer.l(MinecraftServer.java:402)
[22:08:40 WARN]:        at net.minecraft.server.v1_12_R1.MinecraftServer.a(MinecraftServer.java:340)
[22:08:40 WARN]:        at net.minecraft.server.v1_12_R1.DedicatedServer.init(DedicatedServer.java:290)
[22:08:40 WARN]:        at net.minecraft.server.v1_12_R1.MinecraftServer.run(MinecraftServer.java:615)
[22:08:40 WARN]:        at java.lang.Thread.run(Unknown Source)
[22:08:40 WARN]: java.io.IOException: Sistem belirtilen yolu bulamıyor
[22:08:40 WARN]:        at java.io.WinNTFileSystem.createFileExclusively(Native Method)
[22:08:40 WARN]:        at java.io.File.createNewFile(Unknown Source)
[22:08:40 WARN]:        at com.megacrafter.friendsystem.Core.onEnable(Core.java:54)
[22:08:40 WARN]:        at org.bukkit.plugin.java.JavaPlugin.setEnabled(JavaPlugin.java:264)
[22:08:40 WARN]:        at org.bukkit.plugin.java.JavaPluginLoader.enablePlugin(JavaPluginLoader.java:316)
[22:08:40 WARN]:        at org.bukkit.plugin.SimplePluginManager.enablePlugin(SimplePluginManager.java:404)
[22:08:40 WARN]:        at org.bukkit.craftbukkit.v1_12_R1.CraftServer.enablePlugin(CraftServer.java:376)
[22:08:40 WARN]:        at org.bukkit.craftbukkit.v1_12_R1.CraftServer.enablePlugins(CraftServer.java:325)
[22:08:40 WARN]:        at net.minecraft.server.v1_12_R1.MinecraftServer.t(MinecraftServer.java:441)
[22:08:40 WARN]:        at net.minecraft.server.v1_12_R1.MinecraftServer.l(MinecraftServer.java:402)
[22:08:40 WARN]:        at net.minecraft.server.v1_12_R1.MinecraftServer.a(MinecraftServer.java:340)
[22:08:40 WARN]:        at net.minecraft.server.v1_12_R1.DedicatedServer.init(DedicatedServer.java:290)
[22:08:40 WARN]:        at net.minecraft.server.v1_12_R1.MinecraftServer.run(MinecraftServer.java:615)
[22:08:40 WARN]:        at java.lang.Thread.run(Unknown Source)
Sanırım klasörü oluşturmadan bulmaya çalışıyor.
 

MegaCrafter

Obsidyen Madencisi
Mesajlar
1,419
En iyi cevaplar
0
Beğeniler
1,542
Puanları
3,070
Tamamdır, indirdim.
15 dakikaya dönerim, bir sorun bulursam iletirim.

/ark komutunda sadece 'Komutların üstüne tıklayarak komutların kullanımını görebilirsiniz çıktısını alıyorum.
1.12 PaperSpigot, tek eklenti bu sistem.
Ve şöyle bir hata var:
Kod:
[22:08:40 WARN]: java.io.IOException: Sistem belirtilen yolu bulamıyor
[22:08:40 WARN]:        at java.io.WinNTFileSystem.createFileExclusively(Native Method)
[22:08:40 WARN]:        at java.io.File.createNewFile(Unknown Source)
[22:08:40 WARN]:        at com.megacrafter.friendsystem.Core.onEnable(Core.java:43)
[22:08:40 WARN]:        at org.bukkit.plugin.java.JavaPlugin.setEnabled(JavaPlugin.java:264)
[22:08:40 WARN]:        at org.bukkit.plugin.java.JavaPluginLoader.enablePlugin(JavaPluginLoader.java:316)
[22:08:40 WARN]:        at org.bukkit.plugin.SimplePluginManager.enablePlugin(SimplePluginManager.java:404)
[22:08:40 WARN]:        at org.bukkit.craftbukkit.v1_12_R1.CraftServer.enablePlugin(CraftServer.java:376)
[22:08:40 WARN]:        at org.bukkit.craftbukkit.v1_12_R1.CraftServer.enablePlugins(CraftServer.java:325)
[22:08:40 WARN]:        at net.minecraft.server.v1_12_R1.MinecraftServer.t(MinecraftServer.java:441)
[22:08:40 WARN]:        at net.minecraft.server.v1_12_R1.MinecraftServer.l(MinecraftServer.java:402)
[22:08:40 WARN]:        at net.minecraft.server.v1_12_R1.MinecraftServer.a(MinecraftServer.java:340)
[22:08:40 WARN]:        at net.minecraft.server.v1_12_R1.DedicatedServer.init(DedicatedServer.java:290)
[22:08:40 WARN]:        at net.minecraft.server.v1_12_R1.MinecraftServer.run(MinecraftServer.java:615)
[22:08:40 WARN]:        at java.lang.Thread.run(Unknown Source)
[22:08:40 WARN]: java.io.IOException: Sistem belirtilen yolu bulamıyor
[22:08:40 WARN]:        at java.io.WinNTFileSystem.createFileExclusively(Native Method)
[22:08:40 WARN]:        at java.io.File.createNewFile(Unknown Source)
[22:08:40 WARN]:        at com.megacrafter.friendsystem.Core.onEnable(Core.java:54)
[22:08:40 WARN]:        at org.bukkit.plugin.java.JavaPlugin.setEnabled(JavaPlugin.java:264)
[22:08:40 WARN]:        at org.bukkit.plugin.java.JavaPluginLoader.enablePlugin(JavaPluginLoader.java:316)
[22:08:40 WARN]:        at org.bukkit.plugin.SimplePluginManager.enablePlugin(SimplePluginManager.java:404)
[22:08:40 WARN]:        at org.bukkit.craftbukkit.v1_12_R1.CraftServer.enablePlugin(CraftServer.java:376)
[22:08:40 WARN]:        at org.bukkit.craftbukkit.v1_12_R1.CraftServer.enablePlugins(CraftServer.java:325)
[22:08:40 WARN]:        at net.minecraft.server.v1_12_R1.MinecraftServer.t(MinecraftServer.java:441)
[22:08:40 WARN]:        at net.minecraft.server.v1_12_R1.MinecraftServer.l(MinecraftServer.java:402)
[22:08:40 WARN]:        at net.minecraft.server.v1_12_R1.MinecraftServer.a(MinecraftServer.java:340)
[22:08:40 WARN]:        at net.minecraft.server.v1_12_R1.DedicatedServer.init(DedicatedServer.java:290)
[22:08:40 WARN]:        at net.minecraft.server.v1_12_R1.MinecraftServer.run(MinecraftServer.java:615)
[22:08:40 WARN]:        at java.lang.Thread.run(Unknown Source)
Sanırım klasörü oluşturmadan bulmaya çalışıyor.
Aslında o hata ben denerken de çıkmıştı. (Bu arada eklenti 1.8 versiyonu için yapıldı ama çok büyük sıkıntılar çıkaracağını sanmıyorum.) Gerçekten o hatanın tam olarak sebebini anlayamadım. O hata .yml dosyalarının oluşturulduğu satırda ortaya çıkıyor ve kararsız bir şey. Bazen çıkıyor bazen çıkmıyor. Ve o yolu bulamaması için bir sebep de yok. Dikkat ettiysen o hatadan 1-2 satır önce yml dosyalarının oluşturulacağı yeri yazdırmış olmam lazım. Yani öyle bir yer var ama nedense yine de hata veriyor.

Edit: Tekrar deneyince fark ettim ki normal açınca o hatayı veriyor, ancak reload atınca sorunsuz şekilde dosyaları oluşturuyor. (Pluginin ismiyle alakalı bir problem değil.)
 

Breakthrough

Obsidyen Madencisi
Mesajlar
1,332
En iyi cevaplar
0
Beğeniler
1,098
Puanları
2,930
Yarin birde 1.8 ile denerim.
Bu arada dosyayi hic olusturmuyor bende.

Lenovo K6 Note cihazımdan Tapatalk kullanılarak gönderildi
 

MegaCrafter

Obsidyen Madencisi
Mesajlar
1,419
En iyi cevaplar
0
Beğeniler
1,542
Puanları
3,070
Galiba sorunu çözdüm. Normalde hiç yapmadığımda da çalışıyordu ama yml dosyalarını oluşturmadan önce data klasörünü oluşturunca bende sorun çözüldü. Konuya hemen koyuyorum.
 

SH4D

Ağaç Yumruklayıcı
Mesajlar
35
En iyi cevaplar
0
Beğeniler
88
Puanları
90
Ruh hali
Güzel bir çalışma olmuş, oldukça profesyonel olarak çalışıyorsunuz :)
 

Pledix

Kızıltaş Madencisi
Mesajlar
675
En iyi cevaplar
0
Beğeniler
332
Puanları
560
Bende inşallah bir gün böyle plugin yazabilirim :)
Profesyonel bir çalışma olmuş.
Hangi sürümleri destekliyor?
 

BalonTR

Biz ayıya dayı demeyiz, Köprüyü yıkarız.
Forum Yöneticisi
Mesajlar
1,130
En iyi cevaplar
162
Beğeniler
526
Puanları
4,570
Ruh hali
mükemmel bir çalışma ellerinize sağlık kesin olarak kullanıyorum. "Minecraft" dalı üzerinde böle kodlamacıları görmek çok hoşuma gidiyor bir plugini indirip, kurup sonra Türkçeleştirmek zaman kaybından kurtuluyoruz :)

Bende inşallah bir gün böyle plugin yazabilirim :)
Profesyonel bir çalışma olmuş.
Hangi sürümleri destekliyor?
1.8 versiyonu için kodlandığını belirtmiş.
 

MegaCrafter

Obsidyen Madencisi
Mesajlar
1,419
En iyi cevaplar
0
Beğeniler
1,542
Puanları
3,070
Bende inşallah bir gün böyle plugin yazabilirim :)
Profesyonel bir çalışma olmuş.
Hangi sürümleri destekliyor?
Yukarıdaki yorumda da söylediğim gibi eklenti 1.8 spigot kullanılarak yazıldı ama versiyona özel herhangi bir şey yazdığımı hatırlamıyorum. Yani 1.12'ye kadar çalışabilmesi lazım.
 

BurakCG

Demir Madencisi
Mesajlar
266
En iyi cevaplar
0
Beğeniler
31
Puanları
280
Keşke Fotoğraf Koysaydın bi kaç tane
 

Whoisthatinblack

Taş Madencisi
Mesajlar
70
En iyi cevaplar
0
Beğeniler
85
Puanları
280
@MegaCrafter kaynak koduna ufaktan göz attım sorun olmaz umarım.
  • OOP çok çok zayıf, nesne namına bir şey yok.
  • Ne kadar String varsa hepsi hard kodlanmış enum içerisinde saklayıp lang.yml gibi bir dosya yardımıyla düzenlenebilmesini sağlayabilirdin.
  • Sürekli tekrarladığın uzun işlemlerde metod kullanmamışsın bu da aynı şeyi tekrar tekrar yazmana ve kodu gereksiz yere uzatmana sebep olmuş.
  • Static sözcüğünü çok yanlış şekillerde kullanmışsın. Static abuse'un dibine vurmuşsun.
 

MegaCrafter

Obsidyen Madencisi
Mesajlar
1,419
En iyi cevaplar
0
Beğeniler
1,542
Puanları
3,070
@MegaCrafter kaynak koduna ufaktan göz attım sorun olmaz umarım.
  • OOP çok çok zayıf, nesne namına bir şey yok.
  • Ne kadar String varsa hepsi hard kodlanmış enum içerisinde saklayıp lang.yml gibi bir dosya yardımıyla düzenlenebilmesini sağlayabilirdin.
  • Sürekli tekrarladığın uzun işlemlerde metod kullanmamışsın bu da aynı şeyi tekrar tekrar yazmana ve kodu gereksiz yere uzatmana sebep olmuş.
  • Static sözcüğünü çok yanlış şekillerde kullanmışsın. Static abuse'un dibine vurmuşsun.
OOP'un gerekeceği bir şey olsaydı eklerdim. Friend gibi sınıfları her ne kadar açmak istediysem de yapmam gereken şeylere göre sadece boş yere sınıf açmış olurdum.

O String olayına hayatımda hiç dikkat etmedim. Gerek olduğunu hiçbir zaman da düşünmedim aslında. Ben oyuncunun bilmesi gereken şeyi mesaj olarak kendim söylüyorum zaten. Hem de Türkçe mesajlarla. Genelde o lang.yml olayını İngilizce mesajlar yazdığım eklentilerde kullanıyorum.

Sürekli tekrarladığım uzun bir işlem pek hatırlamıyorum. Sadece şu envanter açtırma yerlerinde biraz olabilir ama dediğim gibi bunun bu hafta sonuna yetişmesi gerekiyordu ve o kodları biraz aceleyle yazdım. O an aklıma tam olarak bir metod şekli gelmemişti, ben de uğraşmak istemedim.

Static sözcüğü sadece 3 yerde kullanıldı zaten. Core içindeki create metodlarında (ki bunlarda static kullanmanın herhangi bir yanlışlığını göremiyorum.), yine Core içindeki yml değişkenleri ve FriendCommandExecutor içindeki hashmap'ler.

Yml olayları için JavaPlugin'in kendini kullanmayı fazla sevmiyorum. Her seferinde Core'u bir constructor olarak eklemek zorunda bırakıyor beni. O yüzden config.yml dosyası bile olsa static bir FileConfiguration içinde olması beni kod açısından çok rahatlatıyor. Aynı şey o hashmap'ler için de geçerli. Onları static yapmasaydım yine Core içine alıp diğer 2 sınıfta constructor ile bağlamam gerekecekti.

Biliyorum, bazı programcılar static sözcüğünden nefret ediyor. Bunun sebebini hayatım boyunca hiç anlayamadım. Ben static sözcüğünü nesneye bağlı olması gerekmeyen her şey için kullanırım ve şu ana kadar bunun bir kötülüğünü de görmedim. Hatta daha da iyi oluyor benim için. Her yere tek bir instance götürmektense değişkeni static yapıp bütün o olaylardan kurtulmuş oluyorum. (Bir arkadaşım sırf static sözcüğünden nefret ediliyor diye 10 satırda yapılabilecek bir şeyi 1000 satıra kadar uzatmıştı. O günden beri static sözcüğüne olan nefreti kimseden dinlemiyorum.)
 

Üst