Eklenti Paylaşımı BenthKese - Gelişmiş Seviyeli Towny Kese, Vadeli Faiz ve Ekonomi Yönetim Eklentisi

Durum
Üzgünüz bu konu cevaplar için kapatılmıştır...

captainevem

Odunlara Vur Vur Vur!
Katılım
29 Aralık 2022
Mesajlar
48
Elmaslar
26
Puan
4.020
Konum
İzmir
Minecraft
thswen

Discord:

bentahsin

Minecraft Sürümleri
1.13.X - 1.21.X
Merhaba MC-TR ailesi.

Bugün sizlere sunucularınızdaki ekonomiyi bir üst seviyeye taşımak amacıyla geliştirdiğim, tamamen açık kaynaklı ve ücretsiz olan BenthKese eklentisini tanıtmak istiyorum. Bu eklenti, oyunculara sadece eşyalarını paraya çevirme imkânı sunmakla kalmaz, aynı zamanda getirdiği seviyeli limit, vadeli faiz ve detaylı yönetim sistemleriyle ekonominize derinlik katar.

Eklenti Bilgileri



BenthKese Nedir?

BenthKese, oyuncuların envanterlerindeki değerli eşyaları (varsayılan olarak altın) sanal bir keseye yatırıp çekmelerini sağlayan modern bir Spigot eklentisidir. Kullanıcı dostu menüleri, güçlü yönetici araçları, şeffaf işlem geçmişi ve geniş PlaceHolderAPI desteği ile BenthKese, her türlü sunucu ekonomisi için mükemmel bir tamamlayıcıdır.

Ana_Menü.gif
Vade_Hesabı.gif
Hızlı_Yatır.gif
Paracek.gif
İşlem_Kaydı.gif



✨ Eklentinin Öne Çıkan Özellikleri

💎 Oyuncu Odaklı Özellikler

  • Modern Grafik Arayüz (GUI): /kese komutu ile açılan, tüm işlemlerin kolayca yapılabildiği interaktif ve şık bir ana menüye sahiptir.
  • Esnek Para Yatırma: Belirli bir miktar (/kese koy 64), eldeki tüm eşyalar (/kese koy el) veya envanterdeki tüm eşyalar (/kese koy envanter) tek komutla keseye yatırılabilir.
  • Akıllı Para Çekme: Para çekerken envanteriniz doluysa, eklenti alabileceğiniz maksimum miktarı verir ve sizi bu durum hakkında bilgilendirir.
  • İşlem Geçmişi: Oyuncular, arayüz üzerinden son 50 finansal işlemini şeffaf bir şekilde takip edebilir.
  • Güvenli İşlemler: Yüksek maliyetli işlemlerden önce bir onay menüsü sunarak yanlışlıkla yapılan tıklamaları engeller.
  • Anlık Geri Bildirim: Para transferi sonrasında oyunculara Action Bar üzerinden güncel limit durumları hakkında anlık bilgi verilir.
  • Dinamik Arayüz: Vadeli faiz menüsündeki hesapların kalan süresi, menü açıkken saniye saniye dinamik olarak güncellenir.

🏦 Gelişmiş Sistemler
  • Seviye Bazlı Limit Sistemi: limits.yml dosyasından tamamen ayarlanabilir limit seviyeleri oluşturun. Her seviyenin kendi adı, maliyeti, günlük gönderme ve alma limiti olabilir. Oyuncular, belirlediğiniz ücreti ödeyerek limitlerini oyun içinden yükseltebilirler.
  • Vadeli Faiz Sistemi: Oyuncular paralarını belirli bir süre (1d, 7d vb.) kilitleyerek, config.yml dosyasında tanımlanan oranlara göre faiz geliri elde edebilirler.
  • Dinamik Butonlar: Arayüzdeki butonlar, oyuncunun durumuna göre dinamik olarak değişir. Örneğin, bir oyuncunun limit yükseltmek için yeterli parası yoksa, buton kırmızıya döner ve nedenini açıklar.

⚙️ Yönetici ve Sunucu Özellikleri
  • Güçlü Yönetim Komutları (/keseadmin): Sunucuyu yeniden başlatmadan tüm yapılandırma dosyalarını yenileyin, oyuncuların bakiyelerini ve limit seviyelerini anında yönetin.
  • Esnek Veri Depolama: Sunucu ihtiyaçlarına göre YAML, SQLite (varsayılan) veya MySQL depolama türlerinden birini seçin.
  • Tamamen Özelleştirilebilir: messages.yml, limits.yml ve menus.yml dosyaları sayesinde eklentideki her metni ve tüm menülerin görünümünü sunucunuzun konseptine göre düzenleyebilirsiniz.



📦 Kurulum
  1. Eklentinin son sürümünü GitHub sayfasından indirin.
  2. Sunucunuzda Vault eklentisinin kurulu olduğundan emin olun.
  3. (İsteğe Bağlı) PlaceHolderAPI eklentisini kurun.
  4. İndirdiğiniz .jar dosyasını sunucunuzun plugins/ klasörüne atın.
  5. Sunucuyu başlatın. Eklenti, gerekli yapılandırma dosyalarını oluşturacaktır.
  6. Dosyaları kendi sunucunuza göre düzenleyin ve ayarları yenilemek için /bka reload komutunu kullanın.



🛠️ Komutlar ve Yetkiler

Oyuncu komutları ve yetkilerini görmek için tıklayın.

Komut
Açıklama
Yetki
/keseAna GUI menüsünü açar.benthkese.command.gui
/kese helpYardım menüsünü gösterir.benthkese.command.help
/kese koy [miktar|el|envanter]Keseye para/altın yatırır.benthkese.command.koy
/kese al [miktar]Keseden para/altın çeker.benthkese.command.al
/kese gonder <oyuncu> <miktar>Başka bir oyuncuya para gönderir.benthkese.command.gonder
/kese limitTüm limit seviyeleri hakkında bilgi verir.benthkese.command.limit.info
/kese limit gorKişisel limit seviyeleri hakkında bilgi verir.benthkese.command.limit.gor
/kese limit yukseltLimit seviyenizi yükseltir.benthkese.command.limit.yukselt
/kese faizVadeli Faiz Sistemi ana menüsünü açar.benthkese.command.faiz
/kese faiz koy <miktar> <süre>Yeni bir vadeli hesap oluşturur.benthkese command.faiz.koy
Tüm yönetici Komutları ve yetkilerini görmek için tıklayın.

Komut
Açıklama
Yetki
/bka reloadEklenti konfigürasyonlarını yeniden yükler.benthkese.admin.relaod
/bka limit set <oyuncu> <seviye>Bir oyuncunun limit seviyesini ayarlar.benthkese.admin.limit
/bka bakiye <ekle|cikar|ayarla>Bir oyuncunun bakiyesini yönetir.benthkese.admin.bakiye



📊 PlaceHolderAPI Desteği
Eklenti, PlaceHolderAPI için oldukça geniş bir destek sunmaktadır.

Aşağıdaki placeholder'ları PlaceHolderAPI destekleyen herhangi bir eklentide kullanabilirsiniz.

Kişisel Limit ve Bakiye

Placeholder
Açıklama
%benthkese_bakiye_formatted%Oyuncunun mevcut bakiyesini formatlı olarak (1.234 ⛁) gösterir.
%benthkese_bakiye_raw%Oyuncunun bakiyesini formatsız, ham sayı (1234.56) olarak verir.
%benthkese_limit_seviye_adi%Oyuncunun mevcut limit seviyesinin adını döndürür.
%benthkese_limit_seviye_id%Oyuncunun mevcut limit seviyesinin sayısal ID'sini döndürür.
%benthkese_limit_gonderme_kalan%Oyuncunun kalan günlük gönderme limitini döndürür.
%benthkese_limit_gonderme_kullanilan%Oyuncunun o gün kullandığı gönderme miktarını gösterir.
%benthkese_limit_gonderme_max%Oyuncunun maksimum günlük gönderme limitini gösterir.
%benthkese_limit_alma_kalan%Oyuncunun kalan günlük alma limitini döndürür.
%benthkese_limit_reset_suresi%Günlük limitlerin sıfırlanmasına kalan süreyi gösterir.
%benthkese_limit_sonraki_seviye_adi%Oyuncunun bir sonraki limit seviyesinin adını döndürür.
%benthkese_limit_sonraki_seviye_ucret%Bir sonraki seviyeye yükseltme maliyetini döndürür.
%benthkese_limit_sonraki_seviye_ilerleme%Oyuncunun bir sonraki seviyeye ne kadar yakın olduğunu yüzde olarak gösterir.
%benthkese_limit_yukseltebilir_mi%Oyuncunun seviye yükseltip yükseltemeyeceğini (Evet/Hayır) gösterir.

Vadeli Faiz Sistemi

Placeholder
Açıklama
%benthkese_faiz_hesap_sayisi%Oyuncunun aktif vadeli hesaplarının sayısını gösterir.
%benthkese_faiz_hesap_durum%Oyuncunun hesap durumunu mevcut / max formatında gösterir.
%benthkese_faiz_yatirim_toplam%Oyuncunun tüm vadeli hesaplarındaki toplam anapara miktarını gösterir.
%benthkese_faiz_sonraki_kazanc_miktar%Vadesi en yakın olan hesaptan ne kadar para kazanılacağını gösterir.
%benthkese_faiz_sonraki_kazanc_sure%Vadesi en yakın olan hesabın ne zaman dolacağını gösterir.

Kişisel İstatistikler

Placeholder
Açıklama
%benthkese_toplam_islem_sayisi%Oyuncunun yaptığı toplam işlem sayısını gösterir.
%benthkese_gonderilen_toplam_para%Oyuncunun bugüne kadar gönderdiği toplam para miktarını gösterir.
%benthkese_odenen_toplam_vergi%Oyuncunun bugüne kadar ödediği toplam vergi miktarını gösterir.
%benthkese_siralama_bakiye%Oyuncunun sunucudaki bakiye sıralamasını gösterir.
%benthkese_siralama_bakiye_hedef_kalan%Sıralamada bir üstündeki oyuncuyu geçmek için gereken para miktarını gösterir.

Sunucu Liderlik Tabloları (SQL gerekli)
Placeholder
Açıklama
%benthkese_top_bakiye_isim_<1-10>%Sunucudaki en zengin X. oyuncunun adını gösterir.
%benthkese_top_bakiye_deger_<1-10>%Sunucudaki en zengin X. oyuncunun bakiyesini gösterir.
%benthkese_top_seviye_isim_<1-10>%En yüksek limit seviyesine sahip X. oyuncunun adını gösterir.
%benthkese_top_seviye_deger_<1-10>%En yüksek limit seviyesine sahip X. oyuncunun seviye adını gösterir.

Sunucu Bilgileri

Placeholder
Açıklama
%benthkese_ekonomi_item_adi%Ekonomide kullanılan fiziksel eşyanın adını gösterir.
%benthkese_vergi_yatirma_oran_yuzde%Para yatırma vergisinin yüzde olarak değerini gösterir.
%benthkese_vergi_cekme_oran_yuzde%Para çekme vergisinin yüzde olarak değerini gösterir.
%benthkese_vergi_gonderme_oran_yuzde%Para gönderme vergisinin yüzde olarak değerini gösterir.



⚙️ Yapılandırma Dosyaları
Eklenti, config.yml, messages.yml, limits.yml ve menus.yml dosyaları sayesinde tamamen kişiselleştirilebilir bir yapı sunar. Özellikle `limits.yml` dosyası üzerinden kendi limit seviyelerinizi kolayca oluşturabilirsiniz.

Örnek config.yml yapısı:

YAML:
# BenthKese Ana Ayarlar

# Veri Depolama Ayarları
# Kullanılabilir tipler: YAML, SQLITE, MYSQL
storage:
  type: SQLITE # Varsayılan olarak SQLite kullansın
  mysql:
    host: "localhost"
    port: 3306
    database: "benthkese"
    username: "root"
    password: "password"

# Ekonomi için kullanılacak materyal.
# Bukkit materyal isimlerini kullanın: https://hub.spigotmc.org/javadocs/spigot/org/bukkit/Material.html
economy-item: GOLD_INGOT

# Vergi Sistemi Ayarları
# Bu bölümde, belirli işlemlere uygulanacak yüzde tabanlı vergileri ayarlayabilirsiniz.
# Örneğin, 0.05 değeri %5'lik bir vergiye karşılık gelir.
# Bir işlemi vergisiz yapmak için oranı 0.0 olarak ayarlayın.
taxes:
  deposit:
    enabled: true
    rate: 0.01 # %1 vergi. Oyuncu 100 altın yatırırsa, 99'u kesesine geçer.
  withdraw:
    enabled: true
    rate: 0.02 # %2 vergi. Oyuncu 100 para çekerse, 102 parası gider, eline 100 altın alır.
  send:
    enabled: true
    rate: 0.05 # %5 vergi. Oyuncu 100 gönderirse, hesabından 105 çekilir, karşıya 100 gider.

# ====================================================================
# Vadeli Faiz Sistemi Ayarları
# ====================================================================
interest:
  # Bu özelliği tamamen açar veya kapatır.
  enabled: true

  # Bir oyuncunun aynı anda sahip olabileceği maksimum aktif vadeli hesap sayısı.
  max-accounts-per-player: 5

  # Yatırılabilecek minimum ve maksimum para miktarı.
  min-deposit: 1000.0
  max-deposit: 1000000.0

  # Süreye göre artan faiz oranları.
  # "time" formatı: s (saniye), m (dakika), h (saat), d (gün). Örn: "7d", "12h", "30m".
  # Listedeki sıralama önemlidir. Eklenti, yatırılan süreye uyan İLK oranı kullanır.
  # Bu yüzden en kısa süreyi en üste yazın.
  # "rate" yüzde tabanlıdır. 0.10 = %10 faiz demektir.
  rates:
    - time: "1d" # 1 gün ve üzeri için
      rate: 0.05 # %5
    - time: "3d" # 3 gün ve üzeri için
      rate: 0.08 # %8
    - time: "7d" # 7 gün ve üzeri için
      rate: 0.12 # %12
    - time: "14d" # 14 gün ve üzeri için
      rate: 0.20 # %20
    - time: "30d" # 30 gün ve üzeri için
      rate: 0.35 # %35

Örnek messages.yml yapısı:

YAML:
# BenthKese Eklentisi Mesaj Dosyası
# Renk kodları için '&' kullanabilirsiniz.
# Değişkenler için {degisken_adi} formatını kullanabilirsiniz.

# ====================================================================
# 1. Genel Mesajlar
# Eklentinin genelinde kullanılan temel geri bildirimler.
# ====================================================================
no-permission: "&cBu komutu kullanmak için yetkiniz yok."
invalid-command-usage: "&cGeçersiz komut kullanımı. Yardım için /kese help yazın."
invalid-amount: "&cGeçersiz miktar. Lütfen pozitif bir sayı girin."
not-enough-items: "&cEnvanterinizde yeterli eşya bulunmuyor."
not-enough-money: "&cKesenizde yeterli para bulunmuyor."

# ====================================================================
# 2. Oyuncu Komut Mesajları
# Oyuncuların kullandığı ana komutlara ait metinler.
# ====================================================================
help-command:
  - "&e&m----------------------------------------------------"
  - "&6BenthKese Yardım Menüsü"
  - ""
  - "&e/kese koy <miktar|el|envanter> &7- Altınlarınızı keseye koyarsınız."
  - "&e/kese al <miktar> &7- Kesenizden altın çekersiniz."
  - "&e/kese gonder <oyuncu> <miktar> &7- Başka bir oyuncuya para gönderirsiniz."
  - "&e/kese limit &7- Limit bilgilerinizi görüntülersiniz."
  - "&e/kese faiz &7- Vadeli faiz sistemini açarsınız."
  - "&e/kese &7- Grafiksel menüyü açarsınız."
  - "&e&m----------------------------------------------------"

deposit-success: "&aBaşarıyla &e{miktar} &aadet &e{birim} &ayatırdın. &c(-{vergi} Vergi)&7. Kesene &e{net_miktar} ⛁ &ageçti."
withdraw-success: "&aBaşarıyla &e{miktar} &aadet &e{birim} &akeseden alındı. &c({vergi} Vergi)&7. Toplam maliyet: &e{toplam_maliyet} ⛁"

balance:
  self: "&eMevcut Bakiyen: &a{bakiye} ⛁"
  other: "&e{oyuncu} &aadlı oyuncunun bakiyesi: &e{bakiye} ⛁"

deposit:
  not-holding-economy-item: "&cElinde keseye koyulacak bir eşya tutmuyorsun."
  inventory-success: "&aEnvanterindeki &e{miktar} &aadet &e{birim} &abaşarıyla keseye eklendi."
  no-economy-item-in-inventory: "&cEnvanterinde keseye koyulacak hiç eşya bulunmuyor."

withdraw:
  inventory-full: "&cEnvanterin tamamen dolu! Hiç eşya alamazsın."
  partial-success: "&eEnvanterin dolduğu için istedigin &c{istenen} &eyerine &a{verilen} &eadet &e{birim} &everildi."

send-money:
  player-not-found: "&c'{oyuncu}' adlı oyuncu bulunamadı."
  cannot-send-to-self: "&cKendine para gönderemezsin."
  limit-exceeded: "&cGünlük gönderme limitini aştın! Bu işlemle limitini {asacak_miktar} kadar aşacaksın."
  receiver-limit-exceeded: "&c{oyuncu} adlı oyuncu günlük alma limitine ulaştı."
  success-sender: "&aBaşarıyla &e{oyuncu} &aadlı oyuncuya &e{miktar} ⛁ &agönderdin. &c(-{vergi} Vergi)&7. Toplam maliyet: &e{toplam_maliyet} ⛁"
  success-receiver: "&e{gonderen} &aadlı oyuncu sana &e{miktar} &apara gönderdi."

# ====================================================================
# 3. Limit Sistemi Mesajları
# /kese limit, gor, yükselt gibi komutların metinleri.
# ====================================================================
limit-info:
  header:
    - "&e&m----------------------------------------------------"
    - "                   &6BenthKese Limit Seviyeleri"
    - ""
  entry-format: "&eSeviye: {seviye_adi} &7| &eMaliyet: &c{maliyet} &7| &eGönderme/Alma: &a{gonderme_limiti}&7/&a{alma_limiti}"
  infinite-text: "Sınırsız"
  max-level-text: "&6Maksimum Seviye"
  footer:
    - ""
    - "&7Limitini yükseltmek için &e/kese yükselt &7komutunu kullan."
    - "&e&m----------------------------------------------------"

limit-status:
  resetted: "&aGünlük limitlerin sıfırlandı!"
  info:
    - "&e&m----------------------------------------------------"
    - "                   &6Limit Durumun"
    - ""
    - "&eMevcut Seviyen: {seviye_adi}"
    - "&eGünlük Gönderme: &c{gonderme_kullanilan} &7/ &a{gonderme_max}"
    - "&eGünlük Alma: &c{alma_kullanilan} &7/ &a{alma_max}"
    - ""
    - "&e&m----------------------------------------------------"

level-up:
  max-level-reached: "&cZaten en yüksek limit seviyesine ulaşmışsın."
  not-enough-money: "&cYetersiz bakiye! Seviye atlamak için &e{gereken} &cparaya ihtiyacın var. Mevcut bakiyen: &e{mevcut}"
  success: "&aTebrikler! Limit seviyen başarıyla {yeni_seviye} &aseviyesine yükseltildi."
  error: "&cSeviye yükseltilirken bir hata oluştu: {hata}"

# ====================================================================
# 4. Yönetici Komut Mesajları (Admin)
# /keseadmin veya /bka komutlarının metinleri.
# ====================================================================
admin:
  invalid-usage: "&cGeçersiz komut. Kullanım: /bka <reload|limit|bakiye>"
  reload:
    success: "&aBenthKese konfigürasyon dosyaları başarıyla yeniden yüklendi."
  bakiye:
    usage: "&cKullanım: /bka bakiye <ekle|cikar|ayarla> <oyuncu> <miktar>"
    ekle-success: "&a{oyuncu} &aadlı oyuncunun bakiyesine &e{miktar} &aeklendi."
    cikar-success: "&a{oyuncu} &aadlı oyuncunun bakiyesinden &e{miktar} &açıkarıldı."
    ayarla-success: "&a{oyuncu} &aadlı oyuncunun bakiyesi &e{miktar} &aolarak ayarlandı."
  limit:
    usage: "&cKullanım: /bka limit set <oyuncu> <seviye>"
    level-not-exist: "&c'{seviye}' geçerli bir seviye değil. Lütfen limits.yml dosyasını kontrol edin."
    set-success: "&a{oyuncu} &aadlı oyuncunun limit seviyesi &e{seviye} &aolarak ayarlandı."

# ====================================================================
# 7. Faiz Sistemi Mesajları
# ====================================================================
interest:
  help:
    - "&e&m----------------------------------------------------"
    - "&6BenthKese Faiz Sistemi Yardım"
    - ""
    - "&e/kese faiz &7- Faiz sistemi ana menüsünü açar."
    - "&e/kese faiz liste &7- Vadeli hesaplarını listeler."
    - "&e/kese faiz koy <miktar> <süre> &7- Yeni bir vadeli hesap açar."
    - "&e/kese faiz help &7- Bu yardım menüsünü gösterir."
    - "&e&m----------------------------------------------------"
  usage-koy: "&cKullanım: /kese faiz koy <miktar> <süre>"
  create-success: "&aBaşarıyla {sure} vade ile {miktar} ⛁ faize yatırdın. Vade sonu kazancın: {kazanc} ⛁."
  break-success: "&e{id} ID'li hesabını erken bozdun. Anaparan olan {miktar} ⛁ kesene iade edildi."
  claim-success: "&bTebrikler! {id} ID'li hesabından faiziyle birlikte toplam {toplam_miktar} ⛁ çektin!"
  error-disabled: "&cFaiz sistemi şu anda devre dışı."
  error-max-accounts: "&cMaksimum vadeli hesap sayısına ({max}) ulaştın."
  error-invalid-duration: "&cGeçersiz süre formatı! (Örn: 7d, 12h, 30m)"
  error-no-rate-found: "&cBu süre için geçerli bir faiz oranı bulunamadı."
  error-account-not-found: "&c{id} ID'li bir vadeli hesabın bulunamadı."
  error-amount-range: "&cYatırabileceğin miktar {min} ile {max} ⛁ arasında olmalıdır."

# ====================================================================
# 5. Grafiksel Arayüz (GUI) Mesajları
# Tüm menülerin metinleri burada toplanmıştır.
# ====================================================================
gui:
  general:
    back-button: "&c« Geri"
  confirmation:
    title: "&8İşlemi Onayla"
    confirm-button:
      name: "&a&lONAYLA"
      lore:
        - "&7Bu işlemi yapmak için tıkla."
    cancel-button:
      name: "&c&lİPTAL ET"
      lore:
        - "&7Önceki menüye dönmek için tıkla."
  anvil:
    player-not-found: "Oyuncu bulunamadı"
    cant-send-self: "Kendine gönderemezsin"
    invalid-amount: "Geçersiz miktar"
    not-a-number: "Sayı girmelisin"
    default-player-text: "Oyuncu Adı"
    default-amount-text: "Miktar"
  main-menu:
    title: "&8BenthKese Ana Menü"
    deposit:
      name: "&a&lPara Yatır"
      lore:
        - "&7Envanterindeki altınları"
        - "&7keseye yatırmak için tıkla."
        - ""
        - "&e» Tıkla ve işlem yap!"
    withdraw:
      name: "&b&lPara Çek"
      lore:
        - "&7Kesendeki parayı fiziksel"
        - "&7altına çevirmek için tıkla."
        - ""
        - "&e» Tıkla ve işlem yap!"
    send:
      name: "&d&lPara Gönder"
      lore:
        - "&7Başka bir oyuncuya"
        - "&7para göndermek için tıkla."
        - ""
        - "&e» Tıkla ve işlem yap!"
    limit:
      name: "&6&lLimit Bilgileri"
      lore:
        - "&7Günlük limitlerini ve seviyeni"
        - "&7görüntülemek için tıkla."
        - ""
        - "&e» Tıkla ve işlem yap!"
    interest:
      name: "&6&lVadeli Faiz"
      lore:
        - "&7Paranı belirli bir süre"
        - "&7kilitleyerek faiz kazan."
        - ""
        - "&e» Tıkla ve hesaplarını yönet!"
    balance:
      name: "&eMevcut Bakiyen: &a{bakiye} ⛁"
      lore:
        - "&7Bu sadece bir bilgi ekranıdır."
  deposit-menu:
    title: "&8Para Yatırma Menüsü"
    anvil-title: "&8Ne kadar yatıracaksın?"
    anvil:
      name: "&eMiktar Gir"
      lore:
        - "&7Yatırmak istediğin miktarı"
        - "&7kendin belirlemek için tıkla."
    hand:
      name: "&eElindekileri Yatır"
      lore:
        - "&7Elinde tuttuğun tüm altınları"
        - "&7keseye yatırmak için tıkla."
    inventory:
      name: "&eEnvanteri Yatır"
      lore:
        - "&7Envanterindeki tüm altınları"
        - "&7keseye yatırmak için tıkla."
    quick-deposit:
      name: "&aHızlı Yatır: &e{miktar}"
      lore:
        - "&7Envanterinden hızlıca"
        - "&e{miktar} &7altın yatır."
  withdraw-menu:
    title: "&8Para Çekme Menüsü"
    anvil-title: "&8Ne kadar çekeceksin?"
    anvil:
      name: "&eMiktar Gir"
      lore:
        - "&7Çekmek istediğin miktarı"
        - "&7kendin belirlemek için tıkla."
    quick-withdraw:
      name: "&aHızlı Çek: &e{miktar}"
      lore:
        - "&7Envanterine hızlıca"
        - "&e{miktar} &7altın çek."
  send-menu:
    player-title: "&8Kime para göndereceksin?"
    amount-title: "&8{oyuncu} > Gönderilecek Miktar"
  limit-menu:
    title: "&8Limit Bilgileri"
    status:
      name: "&6Mevcut Limit Durumun"
      lore:
        - "&7Seviyen: {seviye_adi}"
        - "&7"
        - "&7Günlük Gönderme Limiti:"
        - "&e- Kullanılan: &c{kullanilan}"
        - "&e- Kalan: &a{kalan}"
        - "&e- Maksimum: &6{max}"
    confirmation-item:
      name: "&6Seviye Yükseltme Onayı"
      lore:
        - "&7Mevcut Seviye: {mevcut_seviye}"
        - "&7Yeni Seviye: {yeni_seviye}"
        - ""
        - "&7Maliyet: &c{maliyet} ⛁"
        - ""
        - "&eBu işlemi onaylıyor musun?"
    upgrade:
      name: "&a&lSeviye Yükselt"
      lore:
        - "&7Bir sonraki seviyeye geç:"
        - "{yeni_seviye}"
        - ""
        - "&7Maliyet: &c{maliyet} ⛁"
        - ""
        - "&e» Yükseltmek için tıkla!"
    upgrade-fail:
      name: "&c&lSeviye Yükseltilemez"
      lore:
        - "&7Bir sonraki seviyeye geç:"
        - "{yeni_seviye}"
        - ""
        - "&c&lYETERSİZ BAKİYE!"
        - "&7Gereken: &c{maliyet} ⛁"
        - "&7Mevcut: &e{bakiye} ⛁"
    max-level:
      name: "&cEn Yüksek Seviye"
      lore:
        - "&7Zaten ulaşabileceğin en"
        - "&7yüksek limit seviyesindesin."
  interest-main:
    title: "&8Vadeli Faiz Sistemi"
    anvil-amount-title: "&8Yatırılacak Miktar"
    anvil-duration-title: "&8Vade Süresi (Örn: 7d, 12h)"
    list-accounts:
      name: "&a&lHesaplarımı Görüntüle"
      lore:
        - "&7Mevcut vadeli mevduat"
        - "&7hesaplarını görmek için tıkla."
    create-account:
      name: "&b&lYeni Hesap Oluştur"
      lore:
        - "&7Paranı belirli bir süre"
        - "&7faize yatırmak için tıkla."
  interest-list:
    title: "&8Vadeli Hesapların"
    item-active:
      name: "&eHesap ID: &6{id} &7(Aktif)"
      lore:
        - "&7Anapara: &a{anapara} ⛁"
        - ""
        - "&7Kalan Süre: &d{kalan_sure}"
        - ""
        - "&e» Detayları görmek için tıkla!"
    item-mature:
      name: "&bHesap ID: &3{id} &a&l(Çekilebilir!)"
      lore:
        - "&7Anapara: &a{anapara} ⛁"
        - "&7Vade Sonu Kazanç: &b{kazanc} ⛁"
        - ""
        - "&a» Paranı çekmek için tıkla!"
  interest-details:
    title: "&8Hesap Detayları &7(ID: {id})"
    info-item:
      name: "&6Hesap Bilgileri"
      lore:
        - "&eAnapara: &a{anapara} ⛁"
        - "&eFaiz Oranı: &a%{oran}"
        - "&eToplam Kazanç: &b{kazanc} ⛁"
        - ""
        - "&eBaşlangıç Tarihi: &7{baslangic}"
        - "&eVade Sonu Tarihi: &7{bitis}"
        - "&eKalan Süre: &d{kalan_sure}"
    claim-button:
      name: "&a&lParayı Çek"
      lore:
        - "&7Vadesi dolan hesabındaki"
        - "&7anapara ve faizi kesene"
        - "&7aktarmak için tıkla."
    break-button:
      name: "&c&lHesabı Boz"
      lore:
        - "&7Vadesi henüz dolmamış bu"
        - "&7hesabı bozacaksın. Sadece"
        - "&7anaparanı geri alırsın."
    break-confirmation-item:
      name: "&cHesap Bozma Onayı"
      lore:
        - "&7Hesap ID: &e{id}"
        - "&7Bu hesabı vadesi dolmadan"
        - "&7bozmak üzeresiniz."
        - ""
        - "&7Geri Alınacak Tutar: &a{anapara} ⛁"
        - "&c(Faiz kazancı iptal edilecek!)"
        - ""
        - "&eEmin misiniz?"
  history-menu:
    title: "&8İşlem Geçmişi"
    main-menu-button:
      name: "&e&lİşlem Geçmişi"
      lore:
        - "&7Son finansal hareketlerini"
        - "&7görüntülemek için tıkla."
    format:
      send: "&c- {miktar} ⛁ &7> &e{hedef}"
      receive: "&a+ {miktar} ⛁ &7< &e{gonderen}"
      deposit: "&a+ {miktar} &7adet &e{birim}"
      withdraw: "&c- {miktar} &7adet &e{birim}"
      level-up: "&c- {maliyet} ⛁ &7(Seviye: {seviye})"
      lore: "&7Tarih: &d{tarih}"

# ====================================================================
# 6. Placeholder API ve Diğer Metinler
# Diğer eklentilerle entegrasyon için kullanılan metinler.
# ====================================================================
general:
  yes: "&aEvet"
  no: "&cHayır"
  player-not-found: "&cOyuncu Bulunamadı"
  invalid-level: "&cGeçersiz Seviye"

# ====================================================================
# 7. Action Bar Mesajları
# Anlık bildirimler için kullanılan metinler.
# ====================================================================
actionbar-limit-status: "&eLimit: &a{kalan} &7/ &6{toplam}"

Örnek menus.yml yapısı:

YAML:
# BenthKese GUI Kişiselleştirme Motoru
# Bu dosya üzerinden tüm menülerin görünümünü, boyutunu ve içeriğini düzenleyebilirsiniz.
#
# GENEL NOTLAR:
#   size: Menünün boyutu. 9'un katları olmalıdır (9, 18, 27, 36, 45, 54).
#   slot: Item'ın konulacağı slot (0'dan başlar).
#   material: Bukkit materyal isimleri. Örn: GOLD_INGOT, DIAMOND_BLOCK.
#   custom-model-data: (İsteğe bağlı) Özel texture'lar için model verisi.
#   name: Item'ın görünen adı.
#   lore: Item'ın alt metinleri.
#
# Placeholder'ları {placeholder_adi} şeklinde kullanabilirsiniz.

main-menu:
  title: "&8BenthKese Ana Menü"
  size: 36
  items:
    # Arka planı dolduracak item.
    filler-item:
      material: "GRAY_STAINED_GLASS_PANE"
      name: " "
      # Hangi slotların doldurulacağını belirtin veya boş bırakarak tüm boşlukları doldurun.
      # slots: [0, 1, 2, 3, 5, 6, 7, 8]

    # Bakiye göstergesi
    balance-display:
      material: "EMERALD"
      slot: 4
      name: "&eMevcut Bakiye"
      lore:
        - "&7Bu, sanal kesendeki paradır."
        - "&6Toplam Varlık: &e{bakiye} ⛁"

    # Para Yatır Butonu
    deposit:
      material: "GOLD_INGOT"
      slot: 10
      name: "&a&lPara Yatır"
      lore:
        - "&7Envanterindeki altınları"
        - "&7keseye yatırmak için tıkla."
        - ""
        - "&e» Tıkla ve işlem yap!"

    # Para Çek Butonu
    withdraw:
      material: "DIAMOND"
      slot: 12
      name: "&b&lPara Çek"
      lore:
        - "&7Kesendeki parayı fiziksel"
        - "&7altına çevirmek için tıkla."
        - ""
        - "&e» Tıkla ve işlem yap!"

    # Para Gönder Butonu
    send:
      material: "ENDER_PEARL"
      slot: 14
      name: "&d&lPara Gönder"
      lore:
        - "&7Başka bir oyuncuya"
        - "&7para göndermek için tıkla."
        - ""
        - "&e» Tıkla ve işlem yap!"

    # Limit Bilgileri Butonu
    limit:
      material: "BEACON"
      slot: 16
      name: "&6&lLimit Bilgileri"
      lore:
        - "&7Günlük limitlerini ve seviyeni"
        - "&7görüntülemek için tıkla."
        - ""
        - "&e» Tıkla ve işlem yap!"

    # Faiz Sistemi Butonu
    interest:
      material: "KNOWLEDGE_BOOK"
      slot: 29
      name: "&6&lVadeli Faiz"
      lore:
        - "&7Paranı faize yatırarak"
        - "&7gelir elde et."
        - ""
        - "&e» Tıkla ve hesaplarını yönet!"

    # İşlem Geçmişi Butonu
    history:
      material: "WRITABLE_BOOK"
      slot: 33
      name: "&e&lİşlem Geçmişi"
      lore:
        - "&7Son finansal hareketlerini"
        - "&7görüntülemek için tıkla."


#---------------------------------------------------
# Para Yatırma Menüsü
#---------------------------------------------------
deposit-menu:
  title: "&8Para Yatırma Menüsü"
  size: 36
  items:
    filler-item:
      material: "GRAY_STAINED_GLASS_PANE"
      name: " "

    # Miktar Girme Butonu
    anvil-input:
      material: "ANVIL"
      slot: 11
      name: "&eMiktar Gir"
      lore:
        - "&7Yatırmak istediğin miktarı"
        - "&7kendin belirlemek için tıkla."

    # Eldekini Yatırma Butonu
    deposit-hand:
      material: "ARMOR_STAND"
      slot: 13
      name: "&eElindekileri Yatır"
      lore:
        - "&7Elinde tuttuğun tüm altınları"
        - "&7keseye yatırmak için tıkla."

    # Envanteri Yatırma Butonu
    deposit-inventory:
      material: "CHEST"
      slot: 15
      name: "&eEnvanteri Yatır"
      lore:
        - "&7Envanterindeki tüm altınları"
        - "&7keseye yatırmak için tıkla."

    # Hızlı Yatırma Butonları
    # Not: Bu butonlar için slot ve miktar kod içinde hard-coded kalabilir,
    # çünkü mantıkları doğrudan birbirine bağlıdır. Alternatif olarak,
    # quick-deposit-1, quick-deposit-2 gibi ayrı ayrı da tanımlanabilir.
    # Şimdilik metinlerini ve materyalini buradan alacağız.
    quick-deposit:
      material: "GOLD_NUGGET"
      name: "&aHızlı Yatır: &e{miktar}"
      lore:
        - "&7Envanterinden hızlıca"
        - "&e{miktar} &7altın yatır."

    # Geri Butonu
    back-button:
      material: "BARRIER"
      slot: 35
      name: "&c« Geri"
      lore: []


#---------------------------------------------------
# Para Çekme Menüsü
#---------------------------------------------------
withdraw-menu:
  title: "&8Para Çekme Menüsü"
  size: 27
  items:
    filler-item:
      material: "GRAY_STAINED_GLASS_PANE"
      name: " "

    # Miktar Girme Butonu
    anvil-input:
      material: "ANVIL"
      slot: 11
      name: "&eMiktar Gir"
      lore:
        - "&7Çekmek istediğin miktarı"
        - "&7kendin belirlemek için tıkla."

    # Hızlı Çekme Butonları
    quick-withdraw:
      material: "GOLD_INGOT" # Varsayılan olarak altın çekilir
      name: "&aHızlı Çek: &e{miktar}"
      lore:
        - "&7Envanterine hızlıca"
        - "&e{miktar} &7altın çek."

    # Geri Butonu
    back-button:
      material: "BARRIER"
      slot: 26
      name: "&c« Geri"
      lore: []


#---------------------------------------------------
# Para Gönderme Menüleri (AnvilGUI)
#---------------------------------------------------
send-menu:
  # Oyuncu seçme AnvilGUI'si için ayarlar
  player-input:
    title: "&8Kime para göndereceksin?"
    display-item: "NAME_TAG"

  # Miktar girme AnvilGUI'si için ayarlar
  amount-input:
    title: "&8{oyuncu} > Gönderilecek Miktar"
    display-item: "GOLD_INGOT"


#---------------------------------------------------
# Limit Bilgileri Menüsü
#---------------------------------------------------
limit-menu:
  title: "&8Limit Bilgileri"
  size: 27
  items:
    filler-item:
      material: "GRAY_STAINED_GLASS_PANE"
      name: " "

    # Mevcut Durum Paneli
    status-display:
      material: "BOOK"
      slot: 11
      name: "&6Mevcut Limit Durumun"
      lore:
        - "&7Seviyen: {seviye_adi}"
        - "&7"
        - "&7Günlük Gönderme Limiti:"
        - "&e- Kullanılan: &c{kullanilan}"
        - "&e- Kalan: &a{kalan}"
        - "&e- Maksimum: &6{max}"

    # Seviye Yükseltme Butonu (Başarılı)
    upgrade-success:
      material: "EMERALD"
      slot: 15
      name: "&a&lSeviye Yükselt"
      lore:
        - "&7Bir sonraki seviyeye geç:"
        - "{yeni_seviye}"
        - ""
        - "&7Maliyet: &c{maliyet} ⛁"
        - ""
        - "&e» Yükseltmek için tıkla!"

    # Seviye Yükseltme Butonu (Başarısız)
    upgrade-fail:
      material: "REDSTONE_BLOCK"
      slot: 15
      name: "&c&lSeviye Yükseltilemez"
      lore:
        - "&7Bir sonraki seviyeye geç:"
        - "{yeni_seviye}"
        - ""
        - "&c&lYETERSİZ BAKİYE!"
        - "&7Gereken: &c{maliyet} ⛁"
        - "&7Mevcut: &e{bakiye} ⛁"

    # Onay Menüsü İçin Bilgi Item'ı
    confirmation-item:
      material: "EMERALD" # Bu, upgrade-success ile aynı olabilir.
      name: "&6Seviye Yükseltme Onayı"
      lore:
        - "&7Yeni Seviye: {yeni_seviye}"
        - "&7Maliyet: &c{maliyet} ⛁"
        - ""
        - "&eBu işlemi onaylıyor musun?"

    # Maksimum Seviye Göstergesi
    max-level:
      material: "BARRIER"
      slot: 15
      name: "&cEn Yüksek Seviye"
      lore:
        - "&7Zaten ulaşabileceğin en"
        - "&7yüksek limit seviyesindesin."

    # Geri Butonu
    back-button:
      material: "BARRIER"
      slot: 26
      name: "&c« Geri"
      lore: []


#---------------------------------------------------
# Faiz Ana Menüsü
#---------------------------------------------------
interest-main-menu:
  title: "&8Vadeli Faiz Sistemi"
  size: 27
  items:
    filler-item:
      material: "GRAY_STAINED_GLASS_PANE"
      name: " "
    list-accounts:
      material: "BOOK"
      slot: 11
      name: "&a&lHesaplarımı Görüntüle"
      lore:
        - "&7Mevcut vadeli mevduat"
        - "&7hesaplarını görmek için tıkla."
    create-account:
      material: "EMERALD"
      slot: 15
      name: "&b&lYeni Hesap Oluştur"
      lore:
        - "&7Paranı belirli bir süre"
        - "&7faize yatırmak için tıkla."
    back-button:
      material: "BARRIER"
      slot: 26
      name: "&c« Geri"
      lore: []
  # Anvil GUI Ayarları
  anvil-amount:
    title: "&8Yatırılacak Miktar"
    display-item: "GOLD_INGOT"
  anvil-duration:
    title: "&8Vade Süresi (Örn: 7d, 12h)"
    display-item: "CLOCK"


#---------------------------------------------------
# Faiz Hesap Listesi Menüsü
#---------------------------------------------------
interest-list-menu:
  title: "&8Vadeli Hesapların ({sayfa}/{max_sayfa})"
  size: 27
  items:
    filler-item:
      material: "BLACK_STAINED_GLASS_PANE"
      name: " "

    # Vadesi gelmemiş hesapların item'ı
    item-active:
      material: "IRON_INGOT"
      name: "&eHesap ID: &6{id} &7(Aktif)"
      lore:
        - "&7Anapara: &a{anapara} ⛁"
        - "&7Faiz Oranı: &e%{oran}"
        - "&7Vade Sonu Tutar: &b{vade_sonu_tutar} ⛁"
        - ""
        - "&7Kalan Süre: &d{kalan_sure}"
        - ""
        - "&e» Detayları görmek için tıkla!"

    # Vadesi dolmuş hesapların item'ı
    item-mature:
      material: "GOLD_BLOCK"
      name: "&bHesap ID: &3{id} &a&l(Çekilebilir!)"
      lore:
        - "&7Anapara: &a{anapara} ⛁"
        - "&7Faiz Oranı: &e%{oran}"
        - "&7Vade Sonu Kazanç: &b{kazanc} ⛁"
        - ""
        - "&a» Paranı çekmek için tıkla!"

    # --- Navigasyon Butonları ---
    back-button:
      material: "BARRIER"
      slot: 22
      name: "&c« Geri Dön"
    previous-page:
      material: "ARROW"
      slot: 18
      name: "&e« Önceki Sayfa"
    next-page:
      material: "ARROW"
      slot: 26
      name: "&eSonraki Sayfa »"


#---------------------------------------------------
# Faiz Hesap Detayları Menüsü
#---------------------------------------------------
interest-details-menu:
  title: "&8Hesap Detayları &7(ID: {id})"
  size: 27
  items:
    filler-item:
      material: "CYAN_STAINED_GLASS_PANE"
      name: " "
    info-item:
      material: "PAPER"
      slot: 13
      name: "&6Hesap Bilgileri"
      lore:
        - "&eAnapara: &a{anapara} ⛁"
        - "&eFaiz Oranı: &a%{oran}"
        - "&eToplam Kazanç: &b{kazanc} ⛁"
        - ""
        - "&eBaşlangıç Tarihi: &7{baslangic}"
        - "&eVade Sonu Tarihi: &7{bitis}"
        - "&eKalan Süre: &d{kalan_sure}"
    # Vadesi dolmuşsa gösterilecek buton
    claim-button:
      material: "GOLD_BLOCK"
      slot: 11
      name: "&a&lParayı Çek"
      lore:
        - "&7Anapara ve faizi kesene"
        - "&7aktarmak için tıkla."
    # Vadesi dolmamışsa gösterilecek buton
    break-button:
      material: "REDSTONE_BLOCK"
      slot: 11
      name: "&c&lHesabı Boz"
      lore:
        - "&7Vadesi dolmamış hesabı"
        - "&7bozmak için tıkla."
    # Hesabı bozma onayı için
    break-confirmation-item:
      material: "REDSTONE_BLOCK"
      name: "&cHesap Bozma Onayı"
      lore:
        - "&7Hesap ID: &e{id}"
        - "&7Geri Alınacak Tutar: &a{anapara} ⛁"
        - "&c(Faiz kazancı iptal edilecek!)"
        - ""
        - "&eEmin misiniz?"
    back-button:
      material: "BARRIER"
      slot: 18
      name: "&c« Geri Dön"


#---------------------------------------------------
# Genel Onay Menüsü
#---------------------------------------------------
confirmation-menu:
  title: "&8İşlemi Onayla"
  size: 27
  items:
    filler-item:
      material: "BLACK_STAINED_GLASS_PANE"
      name: " "

    # Ortada gösterilecek bilgi item'ı için sadece slot numarası.
    # Bu item'ın kendisi kod içinde dinamik olarak oluşturulur.
    info-item-slot: 13

    # Onay Butonu
    confirm-button:
      material: "LIME_STAINED_GLASS_PANE"
      slot: 11
      name: "&a&lONAYLA"
      lore:
        - "&7Bu işlemi yapmak için tıkla."

    # İptal Butonu
    cancel-button:
      material: "RED_STAINED_GLASS_PANE"
      slot: 15
      name: "&c&lİPTAL ET"
      lore:
        - "&7Önceki menüye dönmek için tıkla."


#---------------------------------------------------
# İşlem Geçmişi Menüsü
#---------------------------------------------------
history-menu:
  title: "&8İşlem Geçmişi (Sayfa {sayfa}/{max_sayfa})"
  size: 54
  items:
    # Arka plan
    filler-item:
      material: "BLACK_STAINED_GLASS_PANE"
      name: " "

    # Geri butonu
    back-button:
      material: "BARRIER"
      slot: 49 # Ortadaki slot
      name: "&c« Ana Menüye Dön"

    # Önceki sayfa butonu
    previous-page:
      material: "ARROW"
      slot: 48
      name: "&e« Önceki Sayfa"
      lore:
        - "&7Sayfa {onceki_sayfa}'a git."

    # Sonraki sayfa butonu
    next-page:
      material: "ARROW"
      slot: 50
      name: "&eSonraki Sayfa »"
      lore:
        - "&7Sayfa {sonraki_sayfa}'e git."

    # Her bir işlem türü için item şablonu
    item-templates:
      SEND:
        material: "RED_WOOL"
        name: "&c» Para Gönderildi"
        lore:
          - "&7Miktar: &e{miktar} ⛁"
          - "&7Alıcı: &b{hedef}"
          - ""
          - "&8{tarih}"
      RECEIVE:
        material: "LIME_WOOL"
        name: "&a» Para Alındı"
        lore:
          - "&7Miktar: &e{miktar} ⛁"
          - "&7Gönderen: &b{gonderen}"
          - ""
          - "&8{tarih}"
      DEPOSIT:
        material: "GOLD_INGOT"
        name: "&a↑ Para Yatırıldı"
        lore:
          - "&7Miktar: &e{miktar} ⛁"
          - "&7Birim: &6{birim}"
          - ""
          - "&8{tarih}"
      WITHDRAW:
        material: "DIAMOND"
        name: "&b↓ Para Çekildi"
        lore:
          - "&7Miktar: &e{miktar} ⛁"
          - "&7Birim: &b{birim}"
          - ""
          - "&8{tarih}"
      LEVEL_UP:
        material: "BEACON"
        name: "&d★ Limit Seviyesi Yükseltildi"
        lore:
          - "&7Maliyet: &c{maliyet} ⛁"
          - "&7Yeni Seviye: &6{seviye}"
          - ""
          - "&8{tarih}"
      INTEREST_CLAIM:
        material: "GOLD_BLOCK"
        name: "&6+ Vadeli Kazanç Alındı"
        lore:
          - "&7Tutar: &a{miktar} ⛁"
          - "&7Hesap ID: &b{hesap_id}"
          - ""
          - "&8{tarih}"
      INTEREST_BREAK:
        material: "ORANGE_TERRACOTTA"
        name: "&e! Vadeli Hesap Bozma İadesi"
        lore:
          - "&7İade Anapara: &e{miktar} ⛁"
          - "&7Hesap ID: &b{hesap_id}"
          - ""
          - "&8{tarih}"
      UNKNOWN:
        material: "PAPER"
        name: "&7? Bilinmeyen İşlem"
        lore:
          - "&7Miktar: &e{miktar} ⛁"
          - "&7Açıklama: &f{aciklama}"
          - ""
          - "&8{tarih}"

Örnek limits.yml yapısı:

YAML:
limit-levels:
  1:
    name: "&7Başlangıç"
    cost: 1000.0
    send-limit: 5000.0
    receive-limit: 10000.0
  2:
    name: "&aTüccar"
    cost: 5000.0
    send-limit: 25000.0
    receive-limit: 50000.0
  3:
    name: "&dBaron"
    cost: 0.0
    send-limit: -1.0 # -1 sonsuz limit anlamına gelir
    receive-limit: -1.0




İndirme ve Destek

Bu proje MIT Lisansı altında tamamen açık kaynaklıdır. Eklentiyi aşağıdaki bağlantılardan indirebilir ve kaynak kodlarını inceleyebilirsiniz.


Bir hata bulursanız veya bir özellik önermek isterseniz, lütfen projenin GitHub
Değerli ziyaretçimiz, içeriği görebilmek için şimdi giriş yapın veya kayıt olun.
sayfasını kullanın.

Okuduğunuz için teşekkürler.
 
Son düzenleme:
Gerçekten yararlı ve güzel bir plugin gibi duruyor kendi sunucumda kullanmak isterim.
 
agam yapıyoo bu sporu biraz daha gelişse bu heryerde kullanılır.
 
Merhaba MC-TR ailesi.

Bugün sizlere sunucularınızdaki ekonomiyi bir üst seviyeye taşımak amacıyla geliştirdiğim, tamamen açık kaynaklı ve ücretsiz olan BenthKese eklentisini tanıtmak istiyorum. Bu eklenti, oyunculara sadece eşyalarını paraya çevirme imkânı sunmakla kalmaz, aynı zamanda getirdiği seviyeli limit, vadeli faiz ve detaylı yönetim sistemleriyle ekonominize derinlik katar.

Eklenti Bilgileri



BenthKese Nedir?

BenthKese, oyuncuların envanterlerindeki değerli eşyaları (varsayılan olarak altın) sanal bir keseye yatırıp çekmelerini sağlayan modern bir Spigot eklentisidir. Kullanıcı dostu menüleri, güçlü yönetici araçları, şeffaf işlem geçmişi ve geniş PlaceHolderAPI desteği ile BenthKese, her türlü sunucu ekonomisi için mükemmel bir tamamlayıcıdır.




✨ Eklentinin Öne Çıkan Özellikleri

💎 Oyuncu Odaklı Özellikler

  • Modern Grafik Arayüz (GUI): /kese komutu ile açılan, tüm işlemlerin kolayca yapılabildiği interaktif ve şık bir ana menüye sahiptir.
  • Esnek Para Yatırma: Belirli bir miktar (/kese koy 64), eldeki tüm eşyalar (/kese koy el) veya envanterdeki tüm eşyalar (/kese koy envanter) tek komutla keseye yatırılabilir.
  • Akıllı Para Çekme: Para çekerken envanteriniz doluysa, eklenti alabileceğiniz maksimum miktarı verir ve sizi bu durum hakkında bilgilendirir.
  • İşlem Geçmişi: Oyuncular, arayüz üzerinden son 50 finansal işlemini şeffaf bir şekilde takip edebilir.
  • Güvenli İşlemler: Yüksek maliyetli işlemlerden önce bir onay menüsü sunarak yanlışlıkla yapılan tıklamaları engeller.
  • Anlık Geri Bildirim: Para transferi sonrasında oyunculara Action Bar üzerinden güncel limit durumları hakkında anlık bilgi verilir.
  • Dinamik Arayüz: Vadeli faiz menüsündeki hesapların kalan süresi, menü açıkken saniye saniye dinamik olarak güncellenir.

🏦 Gelişmiş Sistemler
  • Seviye Bazlı Limit Sistemi: limits.yml dosyasından tamamen ayarlanabilir limit seviyeleri oluşturun. Her seviyenin kendi adı, maliyeti, günlük gönderme ve alma limiti olabilir. Oyuncular, belirlediğiniz ücreti ödeyerek limitlerini oyun içinden yükseltebilirler.
  • Vadeli Faiz Sistemi: Oyuncular paralarını belirli bir süre (1d, 7d vb.) kilitleyerek, config.yml dosyasında tanımlanan oranlara göre faiz geliri elde edebilirler.
  • Dinamik Butonlar: Arayüzdeki butonlar, oyuncunun durumuna göre dinamik olarak değişir. Örneğin, bir oyuncunun limit yükseltmek için yeterli parası yoksa, buton kırmızıya döner ve nedenini açıklar.

⚙️ Yönetici ve Sunucu Özellikleri
  • Güçlü Yönetim Komutları (/keseadmin): Sunucuyu yeniden başlatmadan tüm yapılandırma dosyalarını yenileyin, oyuncuların bakiyelerini ve limit seviyelerini anında yönetin.
  • Esnek Veri Depolama: Sunucu ihtiyaçlarına göre YAML, SQLite (varsayılan) veya MySQL depolama türlerinden birini seçin.
  • Tamamen Özelleştirilebilir: messages.yml, limits.yml ve menus.yml dosyaları sayesinde eklentideki her metni ve tüm menülerin görünümünü sunucunuzun konseptine göre düzenleyebilirsiniz.



📦 Kurulum
  1. Eklentinin son sürümünü GitHub sayfasından indirin.
  2. Sunucunuzda Vault eklentisinin kurulu olduğundan emin olun.
  3. (İsteğe Bağlı) PlaceHolderAPI eklentisini kurun.
  4. İndirdiğiniz .jar dosyasını sunucunuzun plugins/ klasörüne atın.
  5. Sunucuyu başlatın. Eklenti, gerekli yapılandırma dosyalarını oluşturacaktır.
  6. Dosyaları kendi sunucunuza göre düzenleyin ve ayarları yenilemek için /bka reload komutunu kullanın.



🛠️ Komutlar ve Yetkiler

Oyuncu komutları ve yetkilerini görmek için tıklayın.

Komut
Açıklama
Yetki
/keseAna GUI menüsünü açar.benthkese.command.gui
/kese helpYardım menüsünü gösterir.benthkese.command.help
/kese koy [miktar|el|envanter]Keseye para/altın yatırır.benthkese.command.koy
/kese al [miktar]Keseden para/altın çeker.benthkese.command.al
/kese gonder <oyuncu> <miktar>Başka bir oyuncuya para gönderir.benthkese.command.gonder
/kese limitTüm limit seviyeleri hakkında bilgi verir.benthkese.command.limit.info
/kese limit gorKişisel limit seviyeleri hakkında bilgi verir.benthkese.command.limit.gor
/kese limit yukseltLimit seviyenizi yükseltir.benthkese.command.limit.yukselt
/kese faizVadeli Faiz Sistemi ana menüsünü açar.benthkese.command.faiz
/kese faiz koy <miktar> <süre>Yeni bir vadeli hesap oluşturur.benthkese command.faiz.koy
Tüm yönetici Komutları ve yetkilerini görmek için tıklayın.

Komut
Açıklama
Yetki
/bka reloadEklenti konfigürasyonlarını yeniden yükler.benthkese.admin.relaod
/bka limit set <oyuncu> <seviye>Bir oyuncunun limit seviyesini ayarlar.benthkese.admin.limit
/bka bakiye <ekle|cikar|ayarla>Bir oyuncunun bakiyesini yönetir.benthkese.admin.bakiye



📊 PlaceHolderAPI Desteği
Eklenti, PlaceHolderAPI için oldukça geniş bir destek sunmaktadır.

Aşağıdaki placeholder'ları PlaceHolderAPI destekleyen herhangi bir eklentide kullanabilirsiniz.

Kişisel Limit ve Bakiye

Placeholder
Açıklama
%benthkese_bakiye_formatted%Oyuncunun mevcut bakiyesini formatlı olarak (1.234 ⛁) gösterir.
%benthkese_bakiye_raw%Oyuncunun bakiyesini formatsız, ham sayı (1234.56) olarak verir.
%benthkese_limit_seviye_adi%Oyuncunun mevcut limit seviyesinin adını döndürür.
%benthkese_limit_seviye_id%Oyuncunun mevcut limit seviyesinin sayısal ID'sini döndürür.
%benthkese_limit_gonderme_kalan%Oyuncunun kalan günlük gönderme limitini döndürür.
%benthkese_limit_gonderme_kullanilan%Oyuncunun o gün kullandığı gönderme miktarını gösterir.
%benthkese_limit_gonderme_max%Oyuncunun maksimum günlük gönderme limitini gösterir.
%benthkese_limit_alma_kalan%Oyuncunun kalan günlük alma limitini döndürür.
%benthkese_limit_reset_suresi%Günlük limitlerin sıfırlanmasına kalan süreyi gösterir.
%benthkese_limit_sonraki_seviye_adi%Oyuncunun bir sonraki limit seviyesinin adını döndürür.
%benthkese_limit_sonraki_seviye_ucret%Bir sonraki seviyeye yükseltme maliyetini döndürür.
%benthkese_limit_sonraki_seviye_ilerleme%Oyuncunun bir sonraki seviyeye ne kadar yakın olduğunu yüzde olarak gösterir.
%benthkese_limit_yukseltebilir_mi%Oyuncunun seviye yükseltip yükseltemeyeceğini (Evet/Hayır) gösterir.

Vadeli Faiz Sistemi

Placeholder
Açıklama
%benthkese_faiz_hesap_sayisi%Oyuncunun aktif vadeli hesaplarının sayısını gösterir.
%benthkese_faiz_hesap_durum%Oyuncunun hesap durumunu mevcut / max formatında gösterir.
%benthkese_faiz_yatirim_toplam%Oyuncunun tüm vadeli hesaplarındaki toplam anapara miktarını gösterir.
%benthkese_faiz_sonraki_kazanc_miktar%Vadesi en yakın olan hesaptan ne kadar para kazanılacağını gösterir.
%benthkese_faiz_sonraki_kazanc_sure%Vadesi en yakın olan hesabın ne zaman dolacağını gösterir.

Kişisel İstatistikler

Placeholder
Açıklama
%benthkese_toplam_islem_sayisi%Oyuncunun yaptığı toplam işlem sayısını gösterir.
%benthkese_gonderilen_toplam_para%Oyuncunun bugüne kadar gönderdiği toplam para miktarını gösterir.
%benthkese_odenen_toplam_vergi%Oyuncunun bugüne kadar ödediği toplam vergi miktarını gösterir.
%benthkese_siralama_bakiye%Oyuncunun sunucudaki bakiye sıralamasını gösterir.
%benthkese_siralama_bakiye_hedef_kalan%Sıralamada bir üstündeki oyuncuyu geçmek için gereken para miktarını gösterir.

Sunucu Liderlik Tabloları (SQL gerekli)
Placeholder
Açıklama
%benthkese_top_bakiye_isim_<1-10>%Sunucudaki en zengin X. oyuncunun adını gösterir.
%benthkese_top_bakiye_deger_<1-10>%Sunucudaki en zengin X. oyuncunun bakiyesini gösterir.
%benthkese_top_seviye_isim_<1-10>%En yüksek limit seviyesine sahip X. oyuncunun adını gösterir.
%benthkese_top_seviye_deger_<1-10>%En yüksek limit seviyesine sahip X. oyuncunun seviye adını gösterir.

Sunucu Bilgileri

Placeholder
Açıklama
%benthkese_ekonomi_item_adi%Ekonomide kullanılan fiziksel eşyanın adını gösterir.
%benthkese_vergi_yatirma_oran_yuzde%Para yatırma vergisinin yüzde olarak değerini gösterir.
%benthkese_vergi_cekme_oran_yuzde%Para çekme vergisinin yüzde olarak değerini gösterir.
%benthkese_vergi_gonderme_oran_yuzde%Para gönderme vergisinin yüzde olarak değerini gösterir.



⚙️ Yapılandırma Dosyaları
Eklenti, config.yml, messages.yml, limits.yml ve menus.yml dosyaları sayesinde tamamen kişiselleştirilebilir bir yapı sunar. Özellikle `limits.yml` dosyası üzerinden kendi limit seviyelerinizi kolayca oluşturabilirsiniz.

Örnek config.yml yapısı:

YAML:
# BenthKese Ana Ayarlar

# Veri Depolama Ayarları
# Kullanılabilir tipler: YAML, SQLITE, MYSQL
storage:
  type: SQLITE # Varsayılan olarak SQLite kullansın
  mysql:
    host: "localhost"
    port: 3306
    database: "benthkese"
    username: "root"
    password: "password"

# Ekonomi için kullanılacak materyal.
# Bukkit materyal isimlerini kullanın: https://hub.spigotmc.org/javadocs/spigot/org/bukkit/Material.html
economy-item: GOLD_INGOT

# Vergi Sistemi Ayarları
# Bu bölümde, belirli işlemlere uygulanacak yüzde tabanlı vergileri ayarlayabilirsiniz.
# Örneğin, 0.05 değeri %5'lik bir vergiye karşılık gelir.
# Bir işlemi vergisiz yapmak için oranı 0.0 olarak ayarlayın.
taxes:
  deposit:
    enabled: true
    rate: 0.01 # %1 vergi. Oyuncu 100 altın yatırırsa, 99'u kesesine geçer.
  withdraw:
    enabled: true
    rate: 0.02 # %2 vergi. Oyuncu 100 para çekerse, 102 parası gider, eline 100 altın alır.
  send:
    enabled: true
    rate: 0.05 # %5 vergi. Oyuncu 100 gönderirse, hesabından 105 çekilir, karşıya 100 gider.

# ====================================================================
# Vadeli Faiz Sistemi Ayarları
# ====================================================================
interest:
  # Bu özelliği tamamen açar veya kapatır.
  enabled: true

  # Bir oyuncunun aynı anda sahip olabileceği maksimum aktif vadeli hesap sayısı.
  max-accounts-per-player: 5

  # Yatırılabilecek minimum ve maksimum para miktarı.
  min-deposit: 1000.0
  max-deposit: 1000000.0

  # Süreye göre artan faiz oranları.
  # "time" formatı: s (saniye), m (dakika), h (saat), d (gün). Örn: "7d", "12h", "30m".
  # Listedeki sıralama önemlidir. Eklenti, yatırılan süreye uyan İLK oranı kullanır.
  # Bu yüzden en kısa süreyi en üste yazın.
  # "rate" yüzde tabanlıdır. 0.10 = %10 faiz demektir.
  rates:
    - time: "1d" # 1 gün ve üzeri için
      rate: 0.05 # %5
    - time: "3d" # 3 gün ve üzeri için
      rate: 0.08 # %8
    - time: "7d" # 7 gün ve üzeri için
      rate: 0.12 # %12
    - time: "14d" # 14 gün ve üzeri için
      rate: 0.20 # %20
    - time: "30d" # 30 gün ve üzeri için
      rate: 0.35 # %35

Örnek messages.yml yapısı:

YAML:
# BenthKese Eklentisi Mesaj Dosyası
# Renk kodları için '&' kullanabilirsiniz.
# Değişkenler için {degisken_adi} formatını kullanabilirsiniz.

# ====================================================================
# 1. Genel Mesajlar
# Eklentinin genelinde kullanılan temel geri bildirimler.
# ====================================================================
no-permission: "&cBu komutu kullanmak için yetkiniz yok."
invalid-command-usage: "&cGeçersiz komut kullanımı. Yardım için /kese help yazın."
invalid-amount: "&cGeçersiz miktar. Lütfen pozitif bir sayı girin."
not-enough-items: "&cEnvanterinizde yeterli eşya bulunmuyor."
not-enough-money: "&cKesenizde yeterli para bulunmuyor."

# ====================================================================
# 2. Oyuncu Komut Mesajları
# Oyuncuların kullandığı ana komutlara ait metinler.
# ====================================================================
help-command:
  - "&e&m----------------------------------------------------"
  - "&6BenthKese Yardım Menüsü"
  - ""
  - "&e/kese koy <miktar|el|envanter> &7- Altınlarınızı keseye koyarsınız."
  - "&e/kese al <miktar> &7- Kesenizden altın çekersiniz."
  - "&e/kese gonder <oyuncu> <miktar> &7- Başka bir oyuncuya para gönderirsiniz."
  - "&e/kese limit &7- Limit bilgilerinizi görüntülersiniz."
  - "&e/kese faiz &7- Vadeli faiz sistemini açarsınız."
  - "&e/kese &7- Grafiksel menüyü açarsınız."
  - "&e&m----------------------------------------------------"

deposit-success: "&aBaşarıyla &e{miktar} &aadet &e{birim} &ayatırdın. &c(-{vergi} Vergi)&7. Kesene &e{net_miktar} ⛁ &ageçti."
withdraw-success: "&aBaşarıyla &e{miktar} &aadet &e{birim} &akeseden alındı. &c({vergi} Vergi)&7. Toplam maliyet: &e{toplam_maliyet} ⛁"

balance:
  self: "&eMevcut Bakiyen: &a{bakiye} ⛁"
  other: "&e{oyuncu} &aadlı oyuncunun bakiyesi: &e{bakiye} ⛁"

deposit:
  not-holding-economy-item: "&cElinde keseye koyulacak bir eşya tutmuyorsun."
  inventory-success: "&aEnvanterindeki &e{miktar} &aadet &e{birim} &abaşarıyla keseye eklendi."
  no-economy-item-in-inventory: "&cEnvanterinde keseye koyulacak hiç eşya bulunmuyor."

withdraw:
  inventory-full: "&cEnvanterin tamamen dolu! Hiç eşya alamazsın."
  partial-success: "&eEnvanterin dolduğu için istedigin &c{istenen} &eyerine &a{verilen} &eadet &e{birim} &everildi."

send-money:
  player-not-found: "&c'{oyuncu}' adlı oyuncu bulunamadı."
  cannot-send-to-self: "&cKendine para gönderemezsin."
  limit-exceeded: "&cGünlük gönderme limitini aştın! Bu işlemle limitini {asacak_miktar} kadar aşacaksın."
  receiver-limit-exceeded: "&c{oyuncu} adlı oyuncu günlük alma limitine ulaştı."
  success-sender: "&aBaşarıyla &e{oyuncu} &aadlı oyuncuya &e{miktar} ⛁ &agönderdin. &c(-{vergi} Vergi)&7. Toplam maliyet: &e{toplam_maliyet} ⛁"
  success-receiver: "&e{gonderen} &aadlı oyuncu sana &e{miktar} &apara gönderdi."

# ====================================================================
# 3. Limit Sistemi Mesajları
# /kese limit, gor, yükselt gibi komutların metinleri.
# ====================================================================
limit-info:
  header:
    - "&e&m----------------------------------------------------"
    - "                   &6BenthKese Limit Seviyeleri"
    - ""
  entry-format: "&eSeviye: {seviye_adi} &7| &eMaliyet: &c{maliyet} &7| &eGönderme/Alma: &a{gonderme_limiti}&7/&a{alma_limiti}"
  infinite-text: "Sınırsız"
  max-level-text: "&6Maksimum Seviye"
  footer:
    - ""
    - "&7Limitini yükseltmek için &e/kese yükselt &7komutunu kullan."
    - "&e&m----------------------------------------------------"

limit-status:
  resetted: "&aGünlük limitlerin sıfırlandı!"
  info:
    - "&e&m----------------------------------------------------"
    - "                   &6Limit Durumun"
    - ""
    - "&eMevcut Seviyen: {seviye_adi}"
    - "&eGünlük Gönderme: &c{gonderme_kullanilan} &7/ &a{gonderme_max}"
    - "&eGünlük Alma: &c{alma_kullanilan} &7/ &a{alma_max}"
    - ""
    - "&e&m----------------------------------------------------"

level-up:
  max-level-reached: "&cZaten en yüksek limit seviyesine ulaşmışsın."
  not-enough-money: "&cYetersiz bakiye! Seviye atlamak için &e{gereken} &cparaya ihtiyacın var. Mevcut bakiyen: &e{mevcut}"
  success: "&aTebrikler! Limit seviyen başarıyla {yeni_seviye} &aseviyesine yükseltildi."
  error: "&cSeviye yükseltilirken bir hata oluştu: {hata}"

# ====================================================================
# 4. Yönetici Komut Mesajları (Admin)
# /keseadmin veya /bka komutlarının metinleri.
# ====================================================================
admin:
  invalid-usage: "&cGeçersiz komut. Kullanım: /bka <reload|limit|bakiye>"
  reload:
    success: "&aBenthKese konfigürasyon dosyaları başarıyla yeniden yüklendi."
  bakiye:
    usage: "&cKullanım: /bka bakiye <ekle|cikar|ayarla> <oyuncu> <miktar>"
    ekle-success: "&a{oyuncu} &aadlı oyuncunun bakiyesine &e{miktar} &aeklendi."
    cikar-success: "&a{oyuncu} &aadlı oyuncunun bakiyesinden &e{miktar} &açıkarıldı."
    ayarla-success: "&a{oyuncu} &aadlı oyuncunun bakiyesi &e{miktar} &aolarak ayarlandı."
  limit:
    usage: "&cKullanım: /bka limit set <oyuncu> <seviye>"
    level-not-exist: "&c'{seviye}' geçerli bir seviye değil. Lütfen limits.yml dosyasını kontrol edin."
    set-success: "&a{oyuncu} &aadlı oyuncunun limit seviyesi &e{seviye} &aolarak ayarlandı."

# ====================================================================
# 7. Faiz Sistemi Mesajları
# ====================================================================
interest:
  help:
    - "&e&m----------------------------------------------------"
    - "&6BenthKese Faiz Sistemi Yardım"
    - ""
    - "&e/kese faiz &7- Faiz sistemi ana menüsünü açar."
    - "&e/kese faiz liste &7- Vadeli hesaplarını listeler."
    - "&e/kese faiz koy <miktar> <süre> &7- Yeni bir vadeli hesap açar."
    - "&e/kese faiz help &7- Bu yardım menüsünü gösterir."
    - "&e&m----------------------------------------------------"
  usage-koy: "&cKullanım: /kese faiz koy <miktar> <süre>"
  create-success: "&aBaşarıyla {sure} vade ile {miktar} ⛁ faize yatırdın. Vade sonu kazancın: {kazanc} ⛁."
  break-success: "&e{id} ID'li hesabını erken bozdun. Anaparan olan {miktar} ⛁ kesene iade edildi."
  claim-success: "&bTebrikler! {id} ID'li hesabından faiziyle birlikte toplam {toplam_miktar} ⛁ çektin!"
  error-disabled: "&cFaiz sistemi şu anda devre dışı."
  error-max-accounts: "&cMaksimum vadeli hesap sayısına ({max}) ulaştın."
  error-invalid-duration: "&cGeçersiz süre formatı! (Örn: 7d, 12h, 30m)"
  error-no-rate-found: "&cBu süre için geçerli bir faiz oranı bulunamadı."
  error-account-not-found: "&c{id} ID'li bir vadeli hesabın bulunamadı."
  error-amount-range: "&cYatırabileceğin miktar {min} ile {max} ⛁ arasında olmalıdır."

# ====================================================================
# 5. Grafiksel Arayüz (GUI) Mesajları
# Tüm menülerin metinleri burada toplanmıştır.
# ====================================================================
gui:
  general:
    back-button: "&c« Geri"
  confirmation:
    title: "&8İşlemi Onayla"
    confirm-button:
      name: "&a&lONAYLA"
      lore:
        - "&7Bu işlemi yapmak için tıkla."
    cancel-button:
      name: "&c&lİPTAL ET"
      lore:
        - "&7Önceki menüye dönmek için tıkla."
  anvil:
    player-not-found: "Oyuncu bulunamadı"
    cant-send-self: "Kendine gönderemezsin"
    invalid-amount: "Geçersiz miktar"
    not-a-number: "Sayı girmelisin"
    default-player-text: "Oyuncu Adı"
    default-amount-text: "Miktar"
  main-menu:
    title: "&8BenthKese Ana Menü"
    deposit:
      name: "&a&lPara Yatır"
      lore:
        - "&7Envanterindeki altınları"
        - "&7keseye yatırmak için tıkla."
        - ""
        - "&e» Tıkla ve işlem yap!"
    withdraw:
      name: "&b&lPara Çek"
      lore:
        - "&7Kesendeki parayı fiziksel"
        - "&7altına çevirmek için tıkla."
        - ""
        - "&e» Tıkla ve işlem yap!"
    send:
      name: "&d&lPara Gönder"
      lore:
        - "&7Başka bir oyuncuya"
        - "&7para göndermek için tıkla."
        - ""
        - "&e» Tıkla ve işlem yap!"
    limit:
      name: "&6&lLimit Bilgileri"
      lore:
        - "&7Günlük limitlerini ve seviyeni"
        - "&7görüntülemek için tıkla."
        - ""
        - "&e» Tıkla ve işlem yap!"
    interest:
      name: "&6&lVadeli Faiz"
      lore:
        - "&7Paranı belirli bir süre"
        - "&7kilitleyerek faiz kazan."
        - ""
        - "&e» Tıkla ve hesaplarını yönet!"
    balance:
      name: "&eMevcut Bakiyen: &a{bakiye} ⛁"
      lore:
        - "&7Bu sadece bir bilgi ekranıdır."
  deposit-menu:
    title: "&8Para Yatırma Menüsü"
    anvil-title: "&8Ne kadar yatıracaksın?"
    anvil:
      name: "&eMiktar Gir"
      lore:
        - "&7Yatırmak istediğin miktarı"
        - "&7kendin belirlemek için tıkla."
    hand:
      name: "&eElindekileri Yatır"
      lore:
        - "&7Elinde tuttuğun tüm altınları"
        - "&7keseye yatırmak için tıkla."
    inventory:
      name: "&eEnvanteri Yatır"
      lore:
        - "&7Envanterindeki tüm altınları"
        - "&7keseye yatırmak için tıkla."
    quick-deposit:
      name: "&aHızlı Yatır: &e{miktar}"
      lore:
        - "&7Envanterinden hızlıca"
        - "&e{miktar} &7altın yatır."
  withdraw-menu:
    title: "&8Para Çekme Menüsü"
    anvil-title: "&8Ne kadar çekeceksin?"
    anvil:
      name: "&eMiktar Gir"
      lore:
        - "&7Çekmek istediğin miktarı"
        - "&7kendin belirlemek için tıkla."
    quick-withdraw:
      name: "&aHızlı Çek: &e{miktar}"
      lore:
        - "&7Envanterine hızlıca"
        - "&e{miktar} &7altın çek."
  send-menu:
    player-title: "&8Kime para göndereceksin?"
    amount-title: "&8{oyuncu} > Gönderilecek Miktar"
  limit-menu:
    title: "&8Limit Bilgileri"
    status:
      name: "&6Mevcut Limit Durumun"
      lore:
        - "&7Seviyen: {seviye_adi}"
        - "&7"
        - "&7Günlük Gönderme Limiti:"
        - "&e- Kullanılan: &c{kullanilan}"
        - "&e- Kalan: &a{kalan}"
        - "&e- Maksimum: &6{max}"
    confirmation-item:
      name: "&6Seviye Yükseltme Onayı"
      lore:
        - "&7Mevcut Seviye: {mevcut_seviye}"
        - "&7Yeni Seviye: {yeni_seviye}"
        - ""
        - "&7Maliyet: &c{maliyet} ⛁"
        - ""
        - "&eBu işlemi onaylıyor musun?"
    upgrade:
      name: "&a&lSeviye Yükselt"
      lore:
        - "&7Bir sonraki seviyeye geç:"
        - "{yeni_seviye}"
        - ""
        - "&7Maliyet: &c{maliyet} ⛁"
        - ""
        - "&e» Yükseltmek için tıkla!"
    upgrade-fail:
      name: "&c&lSeviye Yükseltilemez"
      lore:
        - "&7Bir sonraki seviyeye geç:"
        - "{yeni_seviye}"
        - ""
        - "&c&lYETERSİZ BAKİYE!"
        - "&7Gereken: &c{maliyet} ⛁"
        - "&7Mevcut: &e{bakiye} ⛁"
    max-level:
      name: "&cEn Yüksek Seviye"
      lore:
        - "&7Zaten ulaşabileceğin en"
        - "&7yüksek limit seviyesindesin."
  interest-main:
    title: "&8Vadeli Faiz Sistemi"
    anvil-amount-title: "&8Yatırılacak Miktar"
    anvil-duration-title: "&8Vade Süresi (Örn: 7d, 12h)"
    list-accounts:
      name: "&a&lHesaplarımı Görüntüle"
      lore:
        - "&7Mevcut vadeli mevduat"
        - "&7hesaplarını görmek için tıkla."
    create-account:
      name: "&b&lYeni Hesap Oluştur"
      lore:
        - "&7Paranı belirli bir süre"
        - "&7faize yatırmak için tıkla."
  interest-list:
    title: "&8Vadeli Hesapların"
    item-active:
      name: "&eHesap ID: &6{id} &7(Aktif)"
      lore:
        - "&7Anapara: &a{anapara} ⛁"
        - ""
        - "&7Kalan Süre: &d{kalan_sure}"
        - ""
        - "&e» Detayları görmek için tıkla!"
    item-mature:
      name: "&bHesap ID: &3{id} &a&l(Çekilebilir!)"
      lore:
        - "&7Anapara: &a{anapara} ⛁"
        - "&7Vade Sonu Kazanç: &b{kazanc} ⛁"
        - ""
        - "&a» Paranı çekmek için tıkla!"
  interest-details:
    title: "&8Hesap Detayları &7(ID: {id})"
    info-item:
      name: "&6Hesap Bilgileri"
      lore:
        - "&eAnapara: &a{anapara} ⛁"
        - "&eFaiz Oranı: &a%{oran}"
        - "&eToplam Kazanç: &b{kazanc} ⛁"
        - ""
        - "&eBaşlangıç Tarihi: &7{baslangic}"
        - "&eVade Sonu Tarihi: &7{bitis}"
        - "&eKalan Süre: &d{kalan_sure}"
    claim-button:
      name: "&a&lParayı Çek"
      lore:
        - "&7Vadesi dolan hesabındaki"
        - "&7anapara ve faizi kesene"
        - "&7aktarmak için tıkla."
    break-button:
      name: "&c&lHesabı Boz"
      lore:
        - "&7Vadesi henüz dolmamış bu"
        - "&7hesabı bozacaksın. Sadece"
        - "&7anaparanı geri alırsın."
    break-confirmation-item:
      name: "&cHesap Bozma Onayı"
      lore:
        - "&7Hesap ID: &e{id}"
        - "&7Bu hesabı vadesi dolmadan"
        - "&7bozmak üzeresiniz."
        - ""
        - "&7Geri Alınacak Tutar: &a{anapara} ⛁"
        - "&c(Faiz kazancı iptal edilecek!)"
        - ""
        - "&eEmin misiniz?"
  history-menu:
    title: "&8İşlem Geçmişi"
    main-menu-button:
      name: "&e&lİşlem Geçmişi"
      lore:
        - "&7Son finansal hareketlerini"
        - "&7görüntülemek için tıkla."
    format:
      send: "&c- {miktar} ⛁ &7> &e{hedef}"
      receive: "&a+ {miktar} ⛁ &7< &e{gonderen}"
      deposit: "&a+ {miktar} &7adet &e{birim}"
      withdraw: "&c- {miktar} &7adet &e{birim}"
      level-up: "&c- {maliyet} ⛁ &7(Seviye: {seviye})"
      lore: "&7Tarih: &d{tarih}"

# ====================================================================
# 6. Placeholder API ve Diğer Metinler
# Diğer eklentilerle entegrasyon için kullanılan metinler.
# ====================================================================
general:
  yes: "&aEvet"
  no: "&cHayır"
  player-not-found: "&cOyuncu Bulunamadı"
  invalid-level: "&cGeçersiz Seviye"

# ====================================================================
# 7. Action Bar Mesajları
# Anlık bildirimler için kullanılan metinler.
# ====================================================================
actionbar-limit-status: "&eLimit: &a{kalan} &7/ &6{toplam}"

Örnek menus.yml yapısı:

YAML:
# BenthKese GUI Kişiselleştirme Motoru
# Bu dosya üzerinden tüm menülerin görünümünü, boyutunu ve içeriğini düzenleyebilirsiniz.
#
# GENEL NOTLAR:
#   size: Menünün boyutu. 9'un katları olmalıdır (9, 18, 27, 36, 45, 54).
#   slot: Item'ın konulacağı slot (0'dan başlar).
#   material: Bukkit materyal isimleri. Örn: GOLD_INGOT, DIAMOND_BLOCK.
#   custom-model-data: (İsteğe bağlı) Özel texture'lar için model verisi.
#   name: Item'ın görünen adı.
#   lore: Item'ın alt metinleri.
#
# Placeholder'ları {placeholder_adi} şeklinde kullanabilirsiniz.

main-menu:
  title: "&8BenthKese Ana Menü"
  size: 36
  items:
    # Arka planı dolduracak item.
    filler-item:
      material: "GRAY_STAINED_GLASS_PANE"
      name: " "
      # Hangi slotların doldurulacağını belirtin veya boş bırakarak tüm boşlukları doldurun.
      # slots: [0, 1, 2, 3, 5, 6, 7, 8]

    # Bakiye göstergesi
    balance-display:
      material: "EMERALD"
      slot: 4
      name: "&eMevcut Bakiye"
      lore:
        - "&7Bu, sanal kesendeki paradır."
        - "&6Toplam Varlık: &e{bakiye} ⛁"

    # Para Yatır Butonu
    deposit:
      material: "GOLD_INGOT"
      slot: 10
      name: "&a&lPara Yatır"
      lore:
        - "&7Envanterindeki altınları"
        - "&7keseye yatırmak için tıkla."
        - ""
        - "&e» Tıkla ve işlem yap!"

    # Para Çek Butonu
    withdraw:
      material: "DIAMOND"
      slot: 12
      name: "&b&lPara Çek"
      lore:
        - "&7Kesendeki parayı fiziksel"
        - "&7altına çevirmek için tıkla."
        - ""
        - "&e» Tıkla ve işlem yap!"

    # Para Gönder Butonu
    send:
      material: "ENDER_PEARL"
      slot: 14
      name: "&d&lPara Gönder"
      lore:
        - "&7Başka bir oyuncuya"
        - "&7para göndermek için tıkla."
        - ""
        - "&e» Tıkla ve işlem yap!"

    # Limit Bilgileri Butonu
    limit:
      material: "BEACON"
      slot: 16
      name: "&6&lLimit Bilgileri"
      lore:
        - "&7Günlük limitlerini ve seviyeni"
        - "&7görüntülemek için tıkla."
        - ""
        - "&e» Tıkla ve işlem yap!"

    # Faiz Sistemi Butonu
    interest:
      material: "KNOWLEDGE_BOOK"
      slot: 29
      name: "&6&lVadeli Faiz"
      lore:
        - "&7Paranı faize yatırarak"
        - "&7gelir elde et."
        - ""
        - "&e» Tıkla ve hesaplarını yönet!"

    # İşlem Geçmişi Butonu
    history:
      material: "WRITABLE_BOOK"
      slot: 33
      name: "&e&lİşlem Geçmişi"
      lore:
        - "&7Son finansal hareketlerini"
        - "&7görüntülemek için tıkla."


#---------------------------------------------------
# Para Yatırma Menüsü
#---------------------------------------------------
deposit-menu:
  title: "&8Para Yatırma Menüsü"
  size: 36
  items:
    filler-item:
      material: "GRAY_STAINED_GLASS_PANE"
      name: " "

    # Miktar Girme Butonu
    anvil-input:
      material: "ANVIL"
      slot: 11
      name: "&eMiktar Gir"
      lore:
        - "&7Yatırmak istediğin miktarı"
        - "&7kendin belirlemek için tıkla."

    # Eldekini Yatırma Butonu
    deposit-hand:
      material: "ARMOR_STAND"
      slot: 13
      name: "&eElindekileri Yatır"
      lore:
        - "&7Elinde tuttuğun tüm altınları"
        - "&7keseye yatırmak için tıkla."

    # Envanteri Yatırma Butonu
    deposit-inventory:
      material: "CHEST"
      slot: 15
      name: "&eEnvanteri Yatır"
      lore:
        - "&7Envanterindeki tüm altınları"
        - "&7keseye yatırmak için tıkla."

    # Hızlı Yatırma Butonları
    # Not: Bu butonlar için slot ve miktar kod içinde hard-coded kalabilir,
    # çünkü mantıkları doğrudan birbirine bağlıdır. Alternatif olarak,
    # quick-deposit-1, quick-deposit-2 gibi ayrı ayrı da tanımlanabilir.
    # Şimdilik metinlerini ve materyalini buradan alacağız.
    quick-deposit:
      material: "GOLD_NUGGET"
      name: "&aHızlı Yatır: &e{miktar}"
      lore:
        - "&7Envanterinden hızlıca"
        - "&e{miktar} &7altın yatır."

    # Geri Butonu
    back-button:
      material: "BARRIER"
      slot: 35
      name: "&c« Geri"
      lore: []


#---------------------------------------------------
# Para Çekme Menüsü
#---------------------------------------------------
withdraw-menu:
  title: "&8Para Çekme Menüsü"
  size: 27
  items:
    filler-item:
      material: "GRAY_STAINED_GLASS_PANE"
      name: " "

    # Miktar Girme Butonu
    anvil-input:
      material: "ANVIL"
      slot: 11
      name: "&eMiktar Gir"
      lore:
        - "&7Çekmek istediğin miktarı"
        - "&7kendin belirlemek için tıkla."

    # Hızlı Çekme Butonları
    quick-withdraw:
      material: "GOLD_INGOT" # Varsayılan olarak altın çekilir
      name: "&aHızlı Çek: &e{miktar}"
      lore:
        - "&7Envanterine hızlıca"
        - "&e{miktar} &7altın çek."

    # Geri Butonu
    back-button:
      material: "BARRIER"
      slot: 26
      name: "&c« Geri"
      lore: []


#---------------------------------------------------
# Para Gönderme Menüleri (AnvilGUI)
#---------------------------------------------------
send-menu:
  # Oyuncu seçme AnvilGUI'si için ayarlar
  player-input:
    title: "&8Kime para göndereceksin?"
    display-item: "NAME_TAG"

  # Miktar girme AnvilGUI'si için ayarlar
  amount-input:
    title: "&8{oyuncu} > Gönderilecek Miktar"
    display-item: "GOLD_INGOT"


#---------------------------------------------------
# Limit Bilgileri Menüsü
#---------------------------------------------------
limit-menu:
  title: "&8Limit Bilgileri"
  size: 27
  items:
    filler-item:
      material: "GRAY_STAINED_GLASS_PANE"
      name: " "

    # Mevcut Durum Paneli
    status-display:
      material: "BOOK"
      slot: 11
      name: "&6Mevcut Limit Durumun"
      lore:
        - "&7Seviyen: {seviye_adi}"
        - "&7"
        - "&7Günlük Gönderme Limiti:"
        - "&e- Kullanılan: &c{kullanilan}"
        - "&e- Kalan: &a{kalan}"
        - "&e- Maksimum: &6{max}"

    # Seviye Yükseltme Butonu (Başarılı)
    upgrade-success:
      material: "EMERALD"
      slot: 15
      name: "&a&lSeviye Yükselt"
      lore:
        - "&7Bir sonraki seviyeye geç:"
        - "{yeni_seviye}"
        - ""
        - "&7Maliyet: &c{maliyet} ⛁"
        - ""
        - "&e» Yükseltmek için tıkla!"

    # Seviye Yükseltme Butonu (Başarısız)
    upgrade-fail:
      material: "REDSTONE_BLOCK"
      slot: 15
      name: "&c&lSeviye Yükseltilemez"
      lore:
        - "&7Bir sonraki seviyeye geç:"
        - "{yeni_seviye}"
        - ""
        - "&c&lYETERSİZ BAKİYE!"
        - "&7Gereken: &c{maliyet} ⛁"
        - "&7Mevcut: &e{bakiye} ⛁"

    # Onay Menüsü İçin Bilgi Item'ı
    confirmation-item:
      material: "EMERALD" # Bu, upgrade-success ile aynı olabilir.
      name: "&6Seviye Yükseltme Onayı"
      lore:
        - "&7Yeni Seviye: {yeni_seviye}"
        - "&7Maliyet: &c{maliyet} ⛁"
        - ""
        - "&eBu işlemi onaylıyor musun?"

    # Maksimum Seviye Göstergesi
    max-level:
      material: "BARRIER"
      slot: 15
      name: "&cEn Yüksek Seviye"
      lore:
        - "&7Zaten ulaşabileceğin en"
        - "&7yüksek limit seviyesindesin."

    # Geri Butonu
    back-button:
      material: "BARRIER"
      slot: 26
      name: "&c« Geri"
      lore: []


#---------------------------------------------------
# Faiz Ana Menüsü
#---------------------------------------------------
interest-main-menu:
  title: "&8Vadeli Faiz Sistemi"
  size: 27
  items:
    filler-item:
      material: "GRAY_STAINED_GLASS_PANE"
      name: " "
    list-accounts:
      material: "BOOK"
      slot: 11
      name: "&a&lHesaplarımı Görüntüle"
      lore:
        - "&7Mevcut vadeli mevduat"
        - "&7hesaplarını görmek için tıkla."
    create-account:
      material: "EMERALD"
      slot: 15
      name: "&b&lYeni Hesap Oluştur"
      lore:
        - "&7Paranı belirli bir süre"
        - "&7faize yatırmak için tıkla."
    back-button:
      material: "BARRIER"
      slot: 26
      name: "&c« Geri"
      lore: []
  # Anvil GUI Ayarları
  anvil-amount:
    title: "&8Yatırılacak Miktar"
    display-item: "GOLD_INGOT"
  anvil-duration:
    title: "&8Vade Süresi (Örn: 7d, 12h)"
    display-item: "CLOCK"


#---------------------------------------------------
# Faiz Hesap Listesi Menüsü
#---------------------------------------------------
interest-list-menu:
  title: "&8Vadeli Hesapların ({sayfa}/{max_sayfa})"
  size: 27
  items:
    filler-item:
      material: "BLACK_STAINED_GLASS_PANE"
      name: " "

    # Vadesi gelmemiş hesapların item'ı
    item-active:
      material: "IRON_INGOT"
      name: "&eHesap ID: &6{id} &7(Aktif)"
      lore:
        - "&7Anapara: &a{anapara} ⛁"
        - "&7Faiz Oranı: &e%{oran}"
        - "&7Vade Sonu Tutar: &b{vade_sonu_tutar} ⛁"
        - ""
        - "&7Kalan Süre: &d{kalan_sure}"
        - ""
        - "&e» Detayları görmek için tıkla!"

    # Vadesi dolmuş hesapların item'ı
    item-mature:
      material: "GOLD_BLOCK"
      name: "&bHesap ID: &3{id} &a&l(Çekilebilir!)"
      lore:
        - "&7Anapara: &a{anapara} ⛁"
        - "&7Faiz Oranı: &e%{oran}"
        - "&7Vade Sonu Kazanç: &b{kazanc} ⛁"
        - ""
        - "&a» Paranı çekmek için tıkla!"

    # --- Navigasyon Butonları ---
    back-button:
      material: "BARRIER"
      slot: 22
      name: "&c« Geri Dön"
    previous-page:
      material: "ARROW"
      slot: 18
      name: "&e« Önceki Sayfa"
    next-page:
      material: "ARROW"
      slot: 26
      name: "&eSonraki Sayfa »"


#---------------------------------------------------
# Faiz Hesap Detayları Menüsü
#---------------------------------------------------
interest-details-menu:
  title: "&8Hesap Detayları &7(ID: {id})"
  size: 27
  items:
    filler-item:
      material: "CYAN_STAINED_GLASS_PANE"
      name: " "
    info-item:
      material: "PAPER"
      slot: 13
      name: "&6Hesap Bilgileri"
      lore:
        - "&eAnapara: &a{anapara} ⛁"
        - "&eFaiz Oranı: &a%{oran}"
        - "&eToplam Kazanç: &b{kazanc} ⛁"
        - ""
        - "&eBaşlangıç Tarihi: &7{baslangic}"
        - "&eVade Sonu Tarihi: &7{bitis}"
        - "&eKalan Süre: &d{kalan_sure}"
    # Vadesi dolmuşsa gösterilecek buton
    claim-button:
      material: "GOLD_BLOCK"
      slot: 11
      name: "&a&lParayı Çek"
      lore:
        - "&7Anapara ve faizi kesene"
        - "&7aktarmak için tıkla."
    # Vadesi dolmamışsa gösterilecek buton
    break-button:
      material: "REDSTONE_BLOCK"
      slot: 11
      name: "&c&lHesabı Boz"
      lore:
        - "&7Vadesi dolmamış hesabı"
        - "&7bozmak için tıkla."
    # Hesabı bozma onayı için
    break-confirmation-item:
      material: "REDSTONE_BLOCK"
      name: "&cHesap Bozma Onayı"
      lore:
        - "&7Hesap ID: &e{id}"
        - "&7Geri Alınacak Tutar: &a{anapara} ⛁"
        - "&c(Faiz kazancı iptal edilecek!)"
        - ""
        - "&eEmin misiniz?"
    back-button:
      material: "BARRIER"
      slot: 18
      name: "&c« Geri Dön"


#---------------------------------------------------
# Genel Onay Menüsü
#---------------------------------------------------
confirmation-menu:
  title: "&8İşlemi Onayla"
  size: 27
  items:
    filler-item:
      material: "BLACK_STAINED_GLASS_PANE"
      name: " "

    # Ortada gösterilecek bilgi item'ı için sadece slot numarası.
    # Bu item'ın kendisi kod içinde dinamik olarak oluşturulur.
    info-item-slot: 13

    # Onay Butonu
    confirm-button:
      material: "LIME_STAINED_GLASS_PANE"
      slot: 11
      name: "&a&lONAYLA"
      lore:
        - "&7Bu işlemi yapmak için tıkla."

    # İptal Butonu
    cancel-button:
      material: "RED_STAINED_GLASS_PANE"
      slot: 15
      name: "&c&lİPTAL ET"
      lore:
        - "&7Önceki menüye dönmek için tıkla."


#---------------------------------------------------
# İşlem Geçmişi Menüsü
#---------------------------------------------------
history-menu:
  title: "&8İşlem Geçmişi (Sayfa {sayfa}/{max_sayfa})"
  size: 54
  items:
    # Arka plan
    filler-item:
      material: "BLACK_STAINED_GLASS_PANE"
      name: " "

    # Geri butonu
    back-button:
      material: "BARRIER"
      slot: 49 # Ortadaki slot
      name: "&c« Ana Menüye Dön"

    # Önceki sayfa butonu
    previous-page:
      material: "ARROW"
      slot: 48
      name: "&e« Önceki Sayfa"
      lore:
        - "&7Sayfa {onceki_sayfa}'a git."

    # Sonraki sayfa butonu
    next-page:
      material: "ARROW"
      slot: 50
      name: "&eSonraki Sayfa »"
      lore:
        - "&7Sayfa {sonraki_sayfa}'e git."

    # Her bir işlem türü için item şablonu
    item-templates:
      SEND:
        material: "RED_WOOL"
        name: "&c» Para Gönderildi"
        lore:
          - "&7Miktar: &e{miktar} ⛁"
          - "&7Alıcı: &b{hedef}"
          - ""
          - "&8{tarih}"
      RECEIVE:
        material: "LIME_WOOL"
        name: "&a» Para Alındı"
        lore:
          - "&7Miktar: &e{miktar} ⛁"
          - "&7Gönderen: &b{gonderen}"
          - ""
          - "&8{tarih}"
      DEPOSIT:
        material: "GOLD_INGOT"
        name: "&a↑ Para Yatırıldı"
        lore:
          - "&7Miktar: &e{miktar} ⛁"
          - "&7Birim: &6{birim}"
          - ""
          - "&8{tarih}"
      WITHDRAW:
        material: "DIAMOND"
        name: "&b↓ Para Çekildi"
        lore:
          - "&7Miktar: &e{miktar} ⛁"
          - "&7Birim: &b{birim}"
          - ""
          - "&8{tarih}"
      LEVEL_UP:
        material: "BEACON"
        name: "&d★ Limit Seviyesi Yükseltildi"
        lore:
          - "&7Maliyet: &c{maliyet} ⛁"
          - "&7Yeni Seviye: &6{seviye}"
          - ""
          - "&8{tarih}"
      INTEREST_CLAIM:
        material: "GOLD_BLOCK"
        name: "&6+ Vadeli Kazanç Alındı"
        lore:
          - "&7Tutar: &a{miktar} ⛁"
          - "&7Hesap ID: &b{hesap_id}"
          - ""
          - "&8{tarih}"
      INTEREST_BREAK:
        material: "ORANGE_TERRACOTTA"
        name: "&e! Vadeli Hesap Bozma İadesi"
        lore:
          - "&7İade Anapara: &e{miktar} ⛁"
          - "&7Hesap ID: &b{hesap_id}"
          - ""
          - "&8{tarih}"
      UNKNOWN:
        material: "PAPER"
        name: "&7? Bilinmeyen İşlem"
        lore:
          - "&7Miktar: &e{miktar} ⛁"
          - "&7Açıklama: &f{aciklama}"
          - ""
          - "&8{tarih}"

Örnek limits.yml yapısı:

YAML:
limit-levels:
  1:
    name: "&7Başlangıç"
    cost: 1000.0
    send-limit: 5000.0
    receive-limit: 10000.0
  2:
    name: "&aTüccar"
    cost: 5000.0
    send-limit: 25000.0
    receive-limit: 50000.0
  3:
    name: "&dBaron"
    cost: 0.0
    send-limit: -1.0 # -1 sonsuz limit anlamına gelir
    receive-limit: -1.0




İndirme ve Destek

Bu proje MIT Lisansı altında tamamen açık kaynaklıdır. Eklentiyi aşağıdaki bağlantılardan indirebilir ve kaynak kodlarını inceleyebilirsiniz.


Bir hata bulursanız veya bir özellik önermek isterseniz, lütfen projenin GitHub
Değerli ziyaretçimiz, içeriği görebilmek için şimdi giriş yapın veya kayıt olun.
sayfasını kullanın.

Okuduğunuz için teşekkürler.
tavsiyem daha az yapay zeka kullanman
 
tavsiyem daha az yapay zeka kullanman
Merhabalar,

En azından forumda, sunucu sahiplerinin işine yarayabilecek bir eklenti paylaşmış. Yapay zeka kullanılıp kullanılmaması çok da büyütülecek bir durum değil.

İyi forumlar dilerim.
 
Merhabalar,

En azından forumda, sunucu sahiplerinin işine yarayabilecek bir eklenti paylaşmış. Yapay zeka kullanılıp kullanılmaması çok da büyütülecek bir durum değil.

İyi forumlar dilerim.
5 tps sunucu keyfi için kullanmanızı tercih ederim
 
Towny sunucularının işine yarayabilicek bir plugin. elinize sağlık

Saygılarımla,
İyi Forumlar.
 
5 tps sunucu keyfi için kullanmanızı tercih ederim
Merhaba boran3q,

Projenin yapay zeka ile yapılmış olduğunu düşünmen büyük ihtimal koddaki yorum satırlarından kaynaklanıyor ve evet Python Langchain ile yaptığım bir AI Agent her Git Commit'imden sonra Commit'i inceleyip yanlış kod yazım pratiklerini, iyileştirmeleri uyguluyor ve kod pratiğini/anlaşılabilirliğini güçlendirmek için araya açıklamalı yorum satırları ekliyor.

Diğer konuya gelirsek:
Eklentimin neden 5 tps sunucu keyfi vermediğinin ve ne kadar optimize olduğu ile alakalı bir liste vereyim:
  • Tüm Veri Tabanı işlemleri Asenkron tasarlanmıştır:

    • Oyuncu verilerinin asenkron yüklenmesi ve kaydedilmesi: Bir oyuncu sunucuya girdiğinde asenkron olarak veri tabanından verileri getirilir veya Oyuncu ilk kez girmişse veya Veri'sinin değişeceği herhangi bir durum var ise veri tabanında asenkron şekilde veri güncellemesi yapılır.
    • Tüm yazma işlemlerinin asenkron olması: Vade Hesaplarının (Faiz sistemi yani), silme, işlem geçmişi kaydetme ve oyuncu adı veya bakiyesini güncelleme gibi tüm veritabanı yazma işlemleri asenkron olarak yapılır.
  • Veri Yönetimi ve Verimli Önbellekleme özellikleri:​

    • Oyuncu Veri Önbelleği (com.bentahsin.BenthKese.data.PlayerData):

      • Oyuncuların limit seviyesi, günlük gönderim veya alım miktarları gibi verileri, sunucuda online oldukları sürece ConcurrentHashMap üzerinde bellekte saklanır.
      • Komutlar veya PlaceholderAPI gibi sistemler bu verilere ihtiyaç duyduğunda, veritabanına gitmek yerine doğrudan bellekten çok hızlı bir şekilde okur.
      • Veri, yalnızca oyuncu sunucuya ilk girdiğinde veritabanından okunur ve sunucudan çıktığında bellekten temizlenir. Bu, I/O (Giriş/Çıkış) operasyonlarını minimuma indirir.
    • Leaderboard Sorguları İçin Özel Önbellek:
      • En zenginler veya en yüksek seviyeliler gibi liderlik tablolarını (/papi parse... top_bakiye_isim_1) her seferinde veritabanından sorgulamak çok maliyetlidir.
      • TopListPlaceholder sınıfı, bu listeyi 5 dakikada bir güncellenen kendi önbelleğinde tutar. Bu sayede, yüzlerce oyuncu aynı anda skorbordda bu bilgiyi görse bile veritabanına sadece 5 dakikada bir tek bir istek gider.
    • Veri Tabanı Bağlantı Havuzu

      • HikariCP Kullanımı:
        • Her veritabanı işlemi için yeni bir bağlantı kurmak yerine, hazırda bekleyen bir bağlantı havuzundan anında bir bağlantı alıp kullanır. İşlem bitince bağlantıyı havuza geri bırakır.
        • Bu, veritabanı bağlantısı kurma maliyetini ortadan kaldırarak işlemleri yüzlerce kat hızlandırır ve performansı önemli ölçüde artırır.
    • Placeholder API'nin Verimli Kullanılması

      • Placeholder'lar (örneğin %benthkese_limit_seviye_adi%) saniyede yüzlerce kez çağrılabilir.
        • BenthKeseExpansion sınıfındaki tüm placeholder'lar, doğrudan oyuncu veri önbelleğinden bilgi alır.
        • Bu sayede, skorbordlar veya diğer eklentiler BenthKese'den ne kadar sık veri isterse istesin, veritabanına hiçbir yük bindirilmez ve sunucu performansı etkilenmez.
    • Task Scheduling Kullanımı

      • Periyodik ve Asenkron Veri Senkronizasyonu: Eklenti, veritabanı kullanıldığında oyuncuların anlık bakiyelerini liderlik tabloları için periyodik olarak günceller.
        • BalanceSyncTask bu işi yapar ancak bunu çok verimli bir şekilde yönetir:
          1. Makul Aralıklarla Çalışır: Görev, her tick veya saniye yerine 5 dakikada bir (6000L tick) çalışır. Bu, gereksiz güncellemeleri önler.
          2. İş Yükünü Asenkron Yapar: Görevin kendisi ana iş parçacığında tetiklense de, yaptığı storageService.updatePlayerBalance çağrısı asenkron olduğu için veritabanı güncellemesi yine arka planda yapılır.
    • Asenkron YAML Depolama

      • Eklenti, veritabanı yerine YAML depolama ile kullanıldığında bile performansı düşünür.
        • Özellikle işlem geçmişini kaydetme gibi dosya yazma işlemleri, YamlStorageService içinde de asenkron olarak yapılır. Bu, veritabanı olmasa bile disk yazma işlemlerinin sunucuyu yavaşlatmasını engeller.

Kısacası eklentimi tamamen optimizasyonu düşünerek tasarladım. Birkaç yorum satırından yola çıkarak kodun yapay zeka ile yazıldığı ve kalitesinin düşük olduğunun düşünülmesi ise oldukça ironik. Çünkü evet, yapay zeka kullanıyorum ama AI Agent ile kod kalitesini daha da artırmak için.
 
Merhaba boran3q,

Projenin yapay zeka ile yapılmış olduğunu düşünmen büyük ihtimal koddaki yorum satırlarından kaynaklanıyor ve evet Python Langchain ile yaptığım bir AI Agent her Git Commit'imden sonra Commit'i inceleyip yanlış kod yazım pratiklerini, iyileştirmeleri uyguluyor ve kod pratiğini/anlaşılabilirliğini güçlendirmek için araya açıklamalı yorum satırları ekliyor.

Diğer konuya gelirsek:
Eklentimin neden 5 tps sunucu keyfi vermediğinin ve ne kadar optimize olduğu ile alakalı bir liste vereyim:
  • Tüm Veri Tabanı işlemleri Asenkron tasarlanmıştır:​

    • Oyuncu verilerinin asenkron yüklenmesi ve kaydedilmesi: Bir oyuncu sunucuya girdiğinde asenkron olarak veri tabanından verileri getirilir veya Oyuncu ilk kez girmişse veya Veri'sinin değişeceği herhangi bir durum var ise veri tabanında asenkron şekilde veri güncellemesi yapılır.
    • Tüm yazma işlemlerinin asenkron olması: Vade Hesaplarının (Faiz sistemi yani), silme, işlem geçmişi kaydetme ve oyuncu adı veya bakiyesini güncelleme gibi tüm veritabanı yazma işlemleri asenkron olarak yapılır.
  • Veri Yönetimi ve Verimli Önbellekleme özellikleri:​

    • Oyuncu Veri Önbelleği (com.bentahsin.BenthKese.data.PlayerData):

      • Oyuncuların limit seviyesi, günlük gönderim veya alım miktarları gibi verileri, sunucuda online oldukları sürece ConcurrentHashMap üzerinde bellekte saklanır.
      • Komutlar veya PlaceholderAPI gibi sistemler bu verilere ihtiyaç duyduğunda, veritabanına gitmek yerine doğrudan bellekten çok hızlı bir şekilde okur.
      • Veri, yalnızca oyuncu sunucuya ilk girdiğinde veritabanından okunur ve sunucudan çıktığında bellekten temizlenir. Bu, I/O (Giriş/Çıkış) operasyonlarını minimuma indirir.
    • Leaderboard Sorguları İçin Özel Önbellek:
      • En zenginler veya en yüksek seviyeliler gibi liderlik tablolarını (/papi parse... top_bakiye_isim_1) her seferinde veritabanından sorgulamak çok maliyetlidir.
      • TopListPlaceholder sınıfı, bu listeyi 5 dakikada bir güncellenen kendi önbelleğinde tutar. Bu sayede, yüzlerce oyuncu aynı anda skorbordda bu bilgiyi görse bile veritabanına sadece 5 dakikada bir tek bir istek gider.
    • Veri Tabanı Bağlantı Havuzu

      • HikariCP Kullanımı:
        • Her veritabanı işlemi için yeni bir bağlantı kurmak yerine, hazırda bekleyen bir bağlantı havuzundan anında bir bağlantı alıp kullanır. İşlem bitince bağlantıyı havuza geri bırakır.
        • Bu, veritabanı bağlantısı kurma maliyetini ortadan kaldırarak işlemleri yüzlerce kat hızlandırır ve performansı önemli ölçüde artırır.
    • Placeholder API'nin Verimli Kullanılması

      • Placeholder'lar (örneğin %benthkese_limit_seviye_adi%) saniyede yüzlerce kez çağrılabilir.
        • BenthKeseExpansion sınıfındaki tüm placeholder'lar, doğrudan oyuncu veri önbelleğinden bilgi alır.
        • Bu sayede, skorbordlar veya diğer eklentiler BenthKese'den ne kadar sık veri isterse istesin, veritabanına hiçbir yük bindirilmez ve sunucu performansı etkilenmez.
    • Task Scheduling Kullanımı

      • Periyodik ve Asenkron Veri Senkronizasyonu:Eklenti, veritabanı kullanıldığında oyuncuların anlık bakiyelerini liderlik tabloları için periyodik olarak günceller.
        • BalanceSyncTask bu işi yapar ancak bunu çok verimli bir şekilde yönetir:
          1. Makul Aralıklarla Çalışır: Görev, her tick veya saniye yerine 5 dakikada bir (6000L tick) çalışır. Bu, gereksiz güncellemeleri önler.
          2. İş Yükünü Asenkron Yapar: Görevin kendisi ana iş parçacığında tetiklense de, yaptığı storageService.updatePlayerBalance çağrısı asenkron olduğu için veritabanı güncellemesi yine arka planda yapılır.
    • Asenkron YAML Depolama

      • Eklenti, veritabanı yerine YAML depolama ile kullanıldığında bile performansı düşünür.
        • Özellikle işlem geçmişini kaydetme gibi dosya yazma işlemleri, YamlStorageService içinde de asenkron olarak yapılır. Bu, veritabanı olmasa bile disk yazma işlemlerinin sunucuyu yavaşlatmasını engeller.

Kısacası eklentimi tamamen optimizasyonu düşünerek tasarladım. Birkaç yorum satırından yola çıkarak kodun yapay zeka ile yazıldığı ve kalitesinin düşük olduğunun düşünülmesi ise oldukça ironik. Çünkü evet, yapay zeka kullanıyorum ama AI Agent ile kod kalitesini daha da artırmak için.
şu yazıları bile gptye yazdırman kadar değişik bişey yok bence;? neyse emek var eline sağlık diyecez yapcak bişey yok

1756808678740.webp
 
şu yazıları bile gptye yazdırman kadar değişik bişey yok bence;? neyse emek var eline sağlık diyecez yapcak bişey yok

Ekli dosyayı görüntüle 271688
Yazdığım mesajları AI Testine göndereceğine faydalı bir yorum yapsan daha makbule geçerdi. AI kullanmam senin kalitesiz eleştirilerine verecek vaktimin kısıtlı olmasından kaynaklanıyor. ;)
 
Durum
Üzgünüz bu konu cevaplar için kapatılmıştır...

Hala Discord sunucumuza katılmadın mı?

Büyük bir topluluğun parçası ol, etkinliklere katıl ve özel hediyeler kazanma şansı yakala!

Şimdi Katıl
Üst