ArceniaDeger

Bu proje,

schedule
01

Açıklama

ArceniaWorth, Minecraft sunucuları için geliştirilmiş bir eşya değer ve satış sistemi eklentisidir. Oyuncular ellerindeki eşyaların değerlerini sorgulayabilir, eşyalarını tek tek veya toplu olarak satabilir ve grafiksel arayüz (GUI) üzerinden satış işlemlerini gerçekleştirebilir. Yöneticiler ise oyun içinden eşya fiyatlarını belirleyebilir. Eklenti, Folia uyumlu olarak tasarlanmıştır ve ProtocolLib sayesinde eşyaların değerlerini istemci tarafında lore (açıklama) satırı olarak gösterir.


02

Özellikler

  • Eşya Değer Sorgulama: Oyuncular ellerindeki eşyanın birim fiyatını /worth komutuyla öğrenebilir.
  • Tekil Satış: /sell hand komutuyla eldeki eşya anında satılır ve kazanç Vault ekonomisine eklenir.
  • Toplu Satış: /sell all komutuyla envanterdeki (slot 0-35) satılabilir tüm eşyalar tek seferde satılır.
  • GUI ile Satış: /sell gui (veya sadece /sell) komutuyla açılan grafiksel menüden "Hepsini Sat" butonuna tıklanarak toplu satış yapılabilir.
  • Fiyat Belirleme: Yöneticiler /setworth <fiyat> komutuyla ellerindeki eşyanın türüne fiyat atayabilir; değişiklikler anında worth.yml dosyasına kaydedilir.
  • İstemci Tarafı Lore Gösterimi: ProtocolLib entegrasyonu sayesinde eşyaların üzerine gelindiğinde birim fiyat ve toplam değer bilgisi otomatik olarak lore satırı olarak görünür. Bu bilgi yalnızca istemci tarafında gösterilir, sunucu tarafındaki gerçek eşya verisi değişmez.
  • Vault Ekonomi Entegrasyonu: Tüm para işlemleri Vault API üzerinden yapılır; EssentialsX Economy, CMI Economy gibi Vault destekli ekonomi eklentileriyle uyumludur.
  • Folia Desteği: Eklenti folia-supported: true olarak işaretlenmiştir ve Folia sunucularda çalışacak şekilde tasarlanmıştır.
  • Tamamen Yapılandırılabilir: Tüm mesajlar, GUI düzeni, lore formatı ve eşya fiyatları yapılandırma dosyalarından düzenlenebilir.
  • Anlık Yeniden Yükleme: /arceniaworth reload komutuyla tüm yapılandırma dosyaları sunucuyu yeniden başlatmadan yüklenebilir.
  • ConcurrentHashMap ile Thread-Safe Fiyat Yönetimi: Eşya fiyatları ConcurrentHashMap ile tutulur, çoklu thread ortamlarında güvenli çalışır.
  • Adventure API Renk Desteği: Paper'ın native Adventure API'si ve LegacyComponentSerializer kullanılarak & renk kodları desteklenir.

03

Gereksinimler

Bağımlılık Tür Açıklama
Paper / Folia 1.21+ Sunucu Minecraft sunucu yazılımı
Java 21 Çalışma Ortamı Derleme ve çalıştırma için gerekli
Vault Eklenti (soft-depend) Ekonomi API sağlayıcısı
ProtocolLib 5.3.0+ Eklenti (depend) Paket dinleyici; istemci tarafı lore gösterimi için zorunlu
Bir Vault ekonomi eklentisi Eklenti EssentialsX Economy, CMI Economy vb.

Not: Vault yüklü değilse eklenti otomatik olarak devre dışı kalır. ProtocolLib yüklü değilse eklenti çalışmaya devam eder ancak istemci tarafı lore özelliği devre dışı kalır.


04

Kurulum

  1. Projeyi derleyin veya hazır JAR dosyasını edinin (bkz. Derleme).
  2. Oluşan ArceniaWorth-1.0-SNAPSHOT.jar dosyasını sunucunuzun plugins/ klasörüne kopyalayın.
  3. Vault ve bir ekonomi eklentisinin (ör. EssentialsX) kurulu ve çalışır durumda olduğundan emin olun.
  4. ProtocolLib eklentisini plugins/ klasörüne ekleyin.
  5. Sunucuyu başlatın. Eklenti otomatik olarak plugins/ArceniaWorth/ klasörü altında config.yml ve worth.yml dosyalarını oluşturacaktır.
  6. worth.yml dosyasından eşya fiyatlarını, config.yml dosyasından mesajları ve GUI ayarlarını düzenleyebilirsiniz.
  7. Değişikliklerden sonra /arceniaworth reload komutuyla yapılandırmayı yeniden yükleyin.

05

Komutlar ve İzinler

Komutlar

Komut Açıklama Kullanım
/worth Elindeki eşyanın birim değerini gösterir. /worth
/sell hand Elindeki eşyayı satar. /sell hand
/sell all Envanterdeki satılabilir tüm eşyaları satar. /sell all
/sell gui Satış menüsünü (GUI) açar. /sell gui veya /sell
/setworth <fiyat> Elindeki eşyanın türüne fiyat belirler. /setworth 100.0
/arceniaworth Eklenti bilgisini gösterir. /arceniaworth
/arceniaworth reload Yapılandırma dosyalarını yeniden yükler. /arceniaworth reload

İzinler

İzin Açıklama Varsayılan
arceniaworth.admin /setworth ve /arceniaworth reload komutlarını kullanma yetkisi op

/worth, /sell komutları herhangi bir izin gerektirmez ve tüm oyuncular tarafından kullanılabilir.


06

Yapılandırma

Eklenti iki yapılandırma dosyası kullanır:

config.yml

# ArceniaWorth Yapılandırması

messages:
  prefix: "&e&lArceniaWorth &8» &7"
  no-permission: "&cBu komutu kullanmak için yetkiniz yok."
  must-be-player: "&cBu komut sadece oyuncular tarafından kullanılabilir."
  item-no-worth: "&cBu eşyanın belirlenmiş bir değeri yok."
  worth-check: "&e%item% &aeşyasının tanesi &6$%price% &adeğerinde."
  sell-success: "&e%amount%x %item% &aeşyasını &6$%total% &akarşılığında sattınız."
  nothing-to-sell: "&cSatılacak eşyanız yok."
  price-set: "&e%item% &aeşyasının değeri &6$%price% &aolarak ayarlandı."
  invalid-price: "&cGeçersiz fiyat girdiniz."
  reload-success: "&aYapılandırma başarıyla yenilendi."
  inventory-full: "&cEnvanteriniz dolu!"
  usage-sell: "&cKullanım: /sell <hand|all|gui>"
  usage-setworth: "&cKullanım: /setworth <fiyat>"
  hold-item: "&cLütfen elinize bir eşya alın."

lore:
  enabled: true               # İstemci tarafı lore gösterimini aç/kapa
  format:
    - ""
    - "&eDeğeri: &a$%total_worth%"
    - "&7(Tanesi: $%unit_price%)"

gui:
  title: "&8Satış Menüsü"
  size: 27
  fill-item: GRAY_STAINED_GLASS_PANE
  sell-all-slot: 13
  sell-all-item: EMERALD
  sell-all-name: "&a&lHEPSİNİ SAT"
  sell-all-lore:
    - "&7Envanterindeki satılabilir tüm"
    - "&7eşyaları satmak için tıkla."

Yapılandırma Açıklamaları

Bölüm Anahtar Açıklama
messages prefix Eklenti mesaj öneki
messages no-permission Yetkisiz komut kullanımı mesajı
messages must-be-player Konsoldan oyuncu komutu çalıştırılınca gösterilen mesaj
messages item-no-worth Değeri olmayan eşya sorgulandığında gösterilen mesaj
messages worth-check /worth komut çıktısı. Yer tutucular: %item%, %price%
messages sell-success Satış başarılı mesajı. Yer tutucular: %amount%, %item%, %total%
messages nothing-to-sell Satılacak eşya yokken gösterilen mesaj
messages price-set Fiyat ayarlama onay mesajı. Yer tutucular: %item%, %price%
messages invalid-price Geçersiz fiyat girişi mesajı
messages reload-success Yapılandırma yeniden yükleme onay mesajı
messages hold-item Elde eşya yokken gösterilen mesaj
lore enabled true / false - ProtocolLib ile istemci tarafı lore gösterimini açar/kapar
lore format Eşya açıklamasına eklenen satırlar. Yer tutucular: %total_worth%, %unit_price%
gui title Satış GUI başlığı
gui size GUI boyutu (satır sayisi x 9, varsayılan 27 = 3 satır)
gui fill-item Boş slotları dolduran materyal
gui sell-all-slot "Hepsini Sat" butonunun slot numarası
gui sell-all-item "Hepsini Sat" buton materyali
gui sell-all-name "Hepsini Sat" buton adı
gui sell-all-lore "Hepsini Sat" buton açıklama satırları

worth.yml

Eşya fiyatlarının tanımlandığı dosyadır. Her satır MATERYAL_ADI: fiyat formatındadır.

# Değerli Taşlar
DIAMOND: 100.0
EMERALD: 75.0
AMETHYST_SHARD: 15.0
LAPIS_LAZULI: 10.0

# Metaller
NETHERITE_INGOT: 500.0
GOLD_INGOT: 50.0
IRON_INGOT: 25.0
COPPER_INGOT: 5.0

# Bloklar
DIAMOND_BLOCK: 900.0
EMERALD_BLOCK: 675.0
GOLD_BLOCK: 450.0
IRON_BLOCK: 225.0

# Tarım Ürünleri
WHEAT: 2.0
CARROT: 3.0
POTATO: 3.0
# ... ve daha fazlası

Materyal adları Bukkit Material enum değerleriyle birebir eşleşmelidir. Tam liste: Spigot Material Javadoc

Yeni bir eşya eklemek için dosyayı düzenleyip /arceniaworth reload komutunu çalıştırabilir veya oyun içinde /setworth <fiyat> komutunu kullanabilirsiniz.


07

Nasıl Çalışır

Genel Akış

  1. Başlatma: Eklenti yüklendiğinde Vault ekonomi sağlayıcısını kaydeder, config.yml ve worth.yml dosyalarını okur, komutları ve olay dinleyicileri kaydeder. ProtocolLib mevcutsa paket dinleyicisi de aktif edilir.

  2. Fiyat Yönetimi (WorthManager): Eşya fiyatları worth.yml dosyasından yüklenerek bir ConcurrentHashMap<Material, Double> yapısında saklanır. Bu sayede çoklu thread erişiminde veri tutarlılığı sağlanır. Fiyat sorgulamaları materyal türüne göre yapılır.

  3. Değer Sorgulama (/worth): Oyuncunun ana elindeki eşyanın materyal türü WorthManager üzerinden sorgulanır ve birim fiyat mesaj olarak gösterilir.

  4. Satış İşlemi (/sell):

    • hand: Eldeki eşya kaldırılır, Economy.depositPlayer() ile para yatırılır. İşlem başarısız olursa eşya geri verilir.
    • all: Envanterin 0-35 slotları taranır, değeri olan eşyalar kaldırılır ve toplam tutar tek seferde yatırılır.
    • gui: 27 slotluk bir GUI açılır. Ortadaki zümrüt butona tıklandığında /sell all tetiklenir.
  5. İstemci Tarafı Lore (PacketManager): ProtocolLib ile SET_SLOT ve WINDOW_ITEMS paketleri dinlenir. Sunucudan istemciye gönderilen her eşya paketi yakalanır; eşyanın değeri varsa lore satırlarına fiyat bilgisi eklenir. Bu değişiklik yalnızca paket düzeyindedir, sunucudaki gerçek eşya verisi etkilenmez.

  6. Yapılandırma Yenileme (/arceniaworth reload): config.yml ve worth.yml dosyaları yeniden okunur; fiyat haritası güncellenir.

  7. Kapatma: Eklenti devre dışı kaldığında WorthManager.saveDocs() çağrılarak güncel fiyatlar worth.yml dosyasına yazılır.

Sınıf Diyagramı

ArceniaWorthPlugin (Ana sınıf)
├── WorthManager          - Fiyat yükleme, kaydetme, sorgulama
├── PacketManager         - ProtocolLib paket dinleyicisi (istemci tarafı lore)
├── WorthCommand          - /worth komutu
├── SellCommand           - /sell komutu (hand, all, gui)
│   └── SellGuiHolder     - GUI tanımlayıcı (InventoryHolder)
├── SetWorthCommand       - /setworth komutu
├── ArceniaWorthCommand   - /arceniaworth komutu (reload)
├── GuiListener           - GUI tıklama olayları dinleyicisi
└── ColorUtil             - Adventure API renk dönüştürücü yardımcı sınıf

auto_awesome Benzer Projeler