ArceniaDuel
Bu eklenti, 1.21 ve üzeri sürümlerdeki Spigot ve Paper sunucuları için Java 21 altyapısıyla geliştirilmiş 2.0.0 sürümünde bir sistemdir. Sunucu performansını ve işlevselliğini artırmak amacıyla tasarlanmış olup güncel Minecraft sürümleriyle tam uyumlu çalışmaktadır. Kurulum için belirtilen Java ve platform gereksinimlerinin karşılanması yeterlidir.
Ozellikler
Temel Duello Sistemi
- 1v1 Duello -- Duello istegi, kabul/red, geri sayim, sure siniri, spawn korumasi
- Cok Arena Destegi -- Birden fazla arena olusturma, otomatik musait arena atama
- Kural Ozellestirme -- Envanter dusurme, basamak/orumcek agi engeli, yemek engeli, insa izni -- GUI ile secim
- Ganimet Sandigi -- Kaybeden oyuncunun esyalarini kazanana ozel sandik olarak sunma
- Beraberlik / Terk Sistemi -- Karsilikli beraberlik teklifi ve onaylamali forfeit mekanigi
- Izleyici Modu -- Aktif duellolari izleme, otomatik cikis, konum geri yukleme
- Komut Engelleme -- Duello sirasinda spawn, tp, home gibi komutlari engelleme
- AFK Koruma -- Duello teleportlari AFK pluginleri tarafindan geri alinamaz
Arena Koruma Sistemi
- Blok Korumasi -- Arena icinde blok kirma/koyma/patlama/yanma engelleme
- Sinir Kontrolu -- Aktif duello sirasinda arena disina cikma engeli (X/Y/Z ekseni)
- Ender Pearl / Chorus Fruit Korumasi -- Arena disinsa ender pearl ve chorus fruit ile kacisin engellenmesi
- Container Korumasi -- Arena icindeki sandik/firin/workbench erisimini engelleme
- Sivi Korumasi -- Su/lav yayilmasini ve kova ile dokmeyi engelleme
- Piston Korumasi -- Piston ile blok itme/cekme engelleme
- Entity Korumasi -- Zirh standi, item frame, tablo kirma/manipulasyon engeli
- Mob Spawn Engelleme -- Arena icinde dogal mob dogmasini engelleme
- Ates Yayilma Korumasi -- Ates, mantar, sarmasik yayilmasini engelleme
- Aclik Kontrolu -- Duello sirasinda aclik dondurma (opsiyonel)
- Bypass Izni --
arceniaduel.bypass.arenaprotectionile tum korumalardan muafiyet - Config Toggle -- Her koruma ayri ayri config'den acilip kapatilabilir
ELO / Rating Sistemi
- ELO Puanlama -- Kazanma orani yerine beceri bazli siralama (varsayilan K=32)
- Dinamik Hesaplama -- Guclu rakibi yenmek daha fazla puan kazandirir
- PlaceholderAPI Destegi --
%duel_elo%ile scoreboard, tab, hologram entegrasyonu
Kuyruk / Eslestirme Sistemi
- Otomatik Eslestirme --
/duel queueile kuyruga gir, ELO toleransina gore otomatik es bul - Genisleyen Tolerans -- Bekleme suresi arttikca ELO toleransi otomatik genisler
- Asenkron Yukleme -- ELO verileri ana thread'i bloklamadan arka planda yuklenir
Takim Duellolari (2v2, 3v3)
- Parti Sistemi -- Parti olusturma, davet, kabul, lider/uye yonetimi
- Takim Duellosu -- Parti liderleri arasi takim duellosu istegi gonderme
- Takim Olum Mekanigi -- Olen oyuncu izleyici moduna gecer, takim elene kadar mac devam eder
Turnuva Sistemi
- Tek Eleme Bracket -- 4-32 oyunculu turnuva, bye destegiyle otomatik bracket olusturma
- Kayit Donemi -- Admin turnuva olusturur, oyuncular kayit suresinde katilir
- Otomatik Ilerleme -- Mac bitisinde bracket otomatik ilerler, no-show otomatik elenir
- Bracket Goruntuleme --
/turnuva bracketile guncel bracket durumu (GUI)
Citizens NPC Entegrasyonu
- 4 NPC Tipi --
QUEUE(kuyruga gir/cik),STATS(istatistik GUI),TOURNAMENT(turnuva katilim/bracket),DUEL(duello meydan oku) - Akilli NPC Davranisi -- Turnuva NPC'si tek acik turnuvaya otomatik katilar, birden fazlaysa listeler, zaten katilmissa bracket gosterir
- SQLite Kalicilik -- NPC verileri veritabaninda saklanir, sunucu yeniden baslatmada korunur
Istatistik ve GUI
- Istatistik Takibi -- Galibiyet, maglubiyet, ELO, seri, en hizli oldurme, favori arena/rakip
- Istatistik GUI -- Detayli istatistik goruntulemesi envanter GUI'si ile
- Duello Gecmisi GUI -- Gecmis duellolari GUI uzerinden goruntuleyebilme
- Duello Meydan Oku GUI -- Online oyuncularin kafalarini gosteren, ELO ve W/L bilgisiyle zenginlestirilmis GUI
- Turnuva Bracket GUI -- Turnuva bracket durumunu GUI uzerinden goruntuleme
- Siralama Tablosu -- Kazanma orani veya ELO'ya gore ilk 10 oyuncu siralamasi
Altyapi
- SQLite Veritabani -- Istatistikler, gecmis, arena verileri, ban ve NPC kayitlari
- Arena Sifirlama -- Blok degisiklik takibi, asenkron sifirlama, parcacik efektleri
- Admin Paneli -- GUI tabanli yonetim: ban, force-end, istatistik sifirlama, NPC yonetimi
- Discord Webhook -- Duello baslangic/bitis bildirimleri, haftalik siralama gonderimi
- PlaceholderAPI -- 25+ placeholder ile scoreboard, tab, hologram entegrasyonu
Gereksinimler
| Gereksinim | Minimum Versiyon |
|---|---|
| Java | 21+ |
| Spigot / Paper | 1.21+ |
Opsiyonel Bagimliliklar
| Eklenti | Amac |
|---|---|
| PlaceholderAPI | 25+ placeholder destegi |
| Citizens | NPC entegrasyonu (kuyruk, istatistik, turnuva, duello NPC'leri) |
Kurulum
- Projeyi derleyin (
mvn clean package) veya hazir JAR dosyasini indirin - JAR dosyasini sunucunuzun
plugins/klasorune kopyalayin - (Opsiyonel) Citizens eklentisini yukleyin -- NPC ozellikleri icin gereklidir
- Sunucuyu baslatin --
plugins/ArceniaDuel/config.ymlotomatik olusturulur - Arena olusturun:
/duelarena wand-> koseleri secin (sol tik / sag tik)/duelarena create <isim>/duelarena setspawn1 <isim>ve/duelarena setspawn2 <isim>
- Arena durumunu kontrol edin:
/duelarena status <isim>-- tek arena kontrol/duelarena status all-- tum arenalarin durumu
- Duellolar artik aktiftir
Komutlar
Oyuncu Komutlari -- Duello
| Komut | Takma Ad | Izin | Aciklama |
|---|---|---|---|
/duel <oyuncu> |
-- | arceniaduel.duel |
Oyuncuya duello istegi gonder |
/duel accept |
-- | arceniaduel.duel |
Gelen duello istegini kabul et |
/duel decline |
-- | arceniaduel.duel |
Gelen duello istegini reddet |
/duel sandik |
/duel chest |
arceniaduel.duel |
Ganimet sandigini ac |
/duel ayril |
-- | arceniaduel.duel |
Duellodan ayril (forfeit) |
/duel queue |
-- | arceniaduel.queue |
Eslestirme kuyruguna gir |
/duel leave |
-- | arceniaduel.queue |
Kuyruktan ayril |
/duel team <oyuncu> |
-- | arceniaduel.teamduel |
Takim duellosu istegi gonder (parti lideri) |
/duel team accept |
-- | arceniaduel.teamduel |
Takim duellosu istegini kabul et |
/duel team decline |
-- | arceniaduel.teamduel |
Takim duellosu istegini reddet |
Oyuncu Komutlari -- Beraberlik / Izleme / Istatistik
| Komut | Takma Ad | Izin | Aciklama |
|---|---|---|---|
/berabere |
-- | arceniaduel.draw |
Beraberlik teklifi gonder |
/berabere kabul |
accept |
arceniaduel.draw |
Beraberlik teklifini kabul et |
/berabere reddet |
decline, red |
arceniaduel.draw |
Beraberlik teklifini reddet |
/duellist |
-- | arceniaduel.list |
Aktif duellolari listele |
/stats [oyuncu] |
-- | arceniaduel.stats |
Istatistikleri goruntule (GUI) |
/duelrank |
-- | arceniaduel.rank |
Ilk 10 siralama tablosu |
/duelhistory [oyuncu] |
-- | arceniaduel.history |
Son 50 duello gecmisi |
/spectate <oyuncu> |
/spec, /izle |
arceniaduel.spectate |
Duelloyu izle |
Oyuncu Komutlari -- Parti
| Komut | Turkce Alias | Izin | Aciklama |
|---|---|---|---|
/party create |
olustur |
arceniaduel.party |
Yeni parti olustur |
/party invite <oyuncu> |
davet |
arceniaduel.party |
Oyuncuyu partiye davet et |
/party accept |
kabul |
arceniaduel.party |
Parti davetini kabul et |
/party leave |
ayril |
arceniaduel.party |
Partiden ayril |
/party disband |
dagit |
arceniaduel.party |
Partiyi dagit (lider) |
/party list |
liste |
arceniaduel.party |
Parti uyelerini listele |
/party kick <oyuncu> |
at |
arceniaduel.party |
Oyuncuyu partiden at (lider) |
Oyuncu Komutlari -- Turnuva
| Komut | Turkce Alias | Izin | Aciklama |
|---|---|---|---|
/turnuva join <isim> |
katil |
arceniaduel.tournament |
Turnuvaya katil |
/turnuva leave |
ayril |
arceniaduel.tournament |
Turnuvadan ayril |
/turnuva info [isim] |
bilgi |
arceniaduel.tournament |
Turnuva bilgisi/durum |
/turnuva list |
liste |
arceniaduel.tournament |
Aktif turnuvalari listele |
/turnuva bracket [isim] |
-- | arceniaduel.tournament |
Bracket GUI'sini ac |
Yonetim Komutlari
| Komut | Izin | Aciklama |
|---|---|---|
/dueladmin |
arceniaduel.admin |
Admin paneli GUI'sini ac |
/dueladmin reload |
arceniaduel.admin.reload |
Konfigurasyonu yeniden yukle |
/dueladmin npc create <tip> [isim] |
arceniaduel.admin.npc |
NPC olustur (QUEUE/STATS/TOURNAMENT/DUEL) |
/dueladmin npc remove [id] |
arceniaduel.admin.npc |
NPC sil (ID veya yakindaki) |
/dueladmin npc list |
arceniaduel.admin.npc |
Tum NPC'leri listele |
/turnuva create <isim> <maks> |
olustur |
arceniaduel.tournament.admin |
/turnuva start <isim> |
baslat |
arceniaduel.tournament.admin |
/turnuva cancel <isim> |
iptal |
arceniaduel.tournament.admin |
Arena Yonetimi Komutlari
| Komut | Izin | Aciklama |
|---|---|---|
/duelarena create <isim> |
arceniaduel.admin.arena |
Yeni arena olustur |
/duelarena wand |
arceniaduel.admin.arena |
Secim cubugunu al |
/duelarena pos1 |
arceniaduel.admin.arena |
Sinir pozisyon 1'i ayarla |
/duelarena pos2 |
arceniaduel.admin.arena |
Sinir pozisyon 2'yi ayarla |
/duelarena setspawn1 <arena> |
arceniaduel.admin.arena |
1. oyuncu dogma noktasi |
/duelarena setspawn2 <arena> |
arceniaduel.admin.arena |
2. oyuncu dogma noktasi |
/duelarena save <arena> |
arceniaduel.admin.arena |
Arenayi kaydet |
/duelarena delete <arena> |
arceniaduel.admin.arena |
Arenayi sil |
/duelarena status <arena|all> |
arceniaduel.admin.arena |
Arena durum bilgisi (eksikleri gosterir) |
/duelarena enable <arena> |
arceniaduel.admin.arena |
Arenayi aktif et |
/duelarena disable <arena> |
arceniaduel.admin.arena |
Arenayi devre disi birak |
/duelarena list |
arceniaduel.admin.arena |
Tum arenalari listele |
/duelarena reset <arena> |
arceniaduel.admin.arena |
Arena bloklarini sifirla |
/duelarena resetall |
arceniaduel.admin.arena |
Tum arenalari sifirla |
Arena Status Komutu
/duelarena status <arena> komutu arenanin kurulum durumunu detayli gosterir:
----------------------------------------
Arena Durumu: Arena1
Spawn 1: ✓ Ayarlandi
Spawn 2: ✗ Ayarlanmadi
Sinirlar (XZ): ✓ X[50,200] Z[50,200]
Sinirlar (Y): ✓ Y[60,80]
Dunya: ✓ world
Durum: ✓ Aktif
Kullanim: Bos
✗ Arena kurulumu tamamlanmadi!
----------------------------------------
/duelarena status all komutu tum arenalarin durumunu tek seferde gosterir.
Izinler
Oyuncu Izinleri
| Izin | Varsayilan | Aciklama |
|---|---|---|
arceniaduel.duel |
true |
Duello istegi gonderme ve yonetme |
arceniaduel.list |
true |
Aktif duellolari listeleme |
arceniaduel.draw |
true |
Beraberlik teklifi gonderme/kabul etme |
arceniaduel.history |
true |
Duello gecmisini goruntuleme |
arceniaduel.stats |
true |
Istatistikleri goruntuleme |
arceniaduel.rank |
true |
Siralama tablosunu goruntuleme |
arceniaduel.spectate |
true |
Duello izleme |
arceniaduel.queue |
true |
Kuyruk/eslestirme sistemi kullanma |
arceniaduel.party |
true |
Parti olusturma ve yonetme |
arceniaduel.teamduel |
true |
Takim duellosu yapma |
arceniaduel.tournament |
true |
Turnuvaya katilma |
Yonetim Izinleri
| Izin | Varsayilan | Aciklama |
|---|---|---|
arceniaduel.admin |
op |
Admin paneli erisimi |
arceniaduel.admin.reload |
op |
Konfigurasyon yeniden yukleme |
arceniaduel.admin.arena |
op |
Arena kurulum ve yonetimi |
arceniaduel.admin.npc |
op |
NPC olusturma ve yonetme |
arceniaduel.tournament.admin |
op |
Turnuva olusturma/baslatma/iptal |
arceniaduel.bypass.commandblock |
op |
Duello sirasi komut engelini bypass etme |
arceniaduel.bypass.arenaprotection |
op |
Arena koruma sistemini bypass etme |
Yapilandirma (config.yml)
Duello Ayarlari
duel:
duration: 600 # Duello suresi (saniye)
countdown: 3 # Baslangic geri sayimi
spawn-protection: 3 # Spawn korumasi suresi (saniye)
cooldown: 0 # Ayni oyuncuyla tekrar duello bekleme suresi
request-expire: 60 # Istek gecerlilik suresi (saniye)
draw-request-expire: 30 # Beraberlik teklifi gecerlilik suresi
forfeit-confirm-seconds: 10 # Terk onay penceresi suresi
winner-stay-seconds: 120 # Kazananin arenada kalma suresi
max-spectators: 20 # Duello basina maksimum izleyici
no-inventory-respawn-delay: 5 # Envanter dusurme kapaliysa yeniden dogma gecikmesi
blocked-commands: # Duello sirasinda engellenen komutlar
- "spawn"
- "home"
- "sethome"
- "tp"
- "tpa"
- "tpahere"
- "tpaccept"
- "warp"
- "back"
- "fly"
- "gamemode"
Varsayilan Kural Ayarlari
default-rules:
inventory-drop: true # Olunce esyalar dussun mu?
slab-disabled: false # Basamak koyma engellensin mi?
cobweb-disabled: false # Orumcek agi koyma engellensin mi?
food-disabled: false # Yemek yeme engellensin mi?
build-enabled: true # Blok koyma ve kirma acik mi?
Arena Koruma Ayarlari
protection:
container-protection: true # Arena icindeki sandik/firin erisimini engelle
liquid-protection: true # Su/lav yayilmasini engelle
piston-protection: true # Piston ile blok itme/cekme engelle
entity-protection: true # Zirh standi, item frame, tablo korumasi
mob-spawn-prevention: true # Arena icinde mob dogmasini engelle
fire-spread-protection: true # Ates yayilmasini engelle
bucket-protection: true # Kova ile su/lav dokmeyi engelle
hunger-freeze: false # Duello sirasinda aclik dondurma (false=normal)
boundary-enforcement: true # Duello sirasinda sinir kontrolu
Not: Her koruma bagimsiz olarak acilip kapatilabilir.
arceniaduel.bypass.arenaprotectioniznine sahip oyuncular tum korumalardan muaf tutulur.
ELO / Rating Ayarlari
elo:
enabled: true # ELO sistemi acik/kapali
starting-elo: 1000 # Yeni oyuncularin baslangic ELO puani
k-factor: 32 # ELO degisim hizi (yuksek = daha volatil)
ELO nasil calisir: Guclu bir rakibi (yuksek ELO) yendiginde daha fazla puan kazanirsin, zayif bir rakibe (dusuk ELO) kaybettiginde daha fazla puan kaybedersin. K-factor degeri degisim hizini kontrol eder.
Kuyruk / Eslestirme Ayarlari
queue:
enabled: true # Kuyruk sistemi acik/kapali
matchmaking-interval: 40 # Eslestirme kontrol araligi (tick, 40 = 2 saniye)
initial-elo-tolerance: 100 # Baslangic ELO toleransi
tolerance-expansion: 50 # Her periyotta genisleme miktari
tolerance-expansion-interval: 30 # Genisleme periyodu (saniye)
max-tolerance: 500 # Maksimum ELO toleransi
Genisleyen tolerans: Oyuncu kuyruga girdiginde, ilk 30 saniye +-100 ELO araliginda es aranir. Bulunamazsa tolerans her 30 saniyede 50 artarak +-500'e kadar genisler.
Takim Duellosu Ayarlari
team-duel:
enabled: true # Takim duellosu acik/kapali
max-party-size: 3 # Maksimum parti boyutu (2 = sadece 2v2, 3 = 2v2 ve 3v3)
countdown: 5 # Takim duellosu geri sayimi
duration: 900 # Takim duellosu suresi (saniye)
Turnuva Ayarlari
tournament:
enabled: true # Turnuva sistemi acik/kapali
min-participants: 4 # Minimum katilimci sayisi
max-participants: 32 # Maksimum katilimci sayisi
registration-time: 300 # Kayit suresi (saniye)
match-start-delay: 10 # Maclar arasi bekleme (saniye)
no-show-timeout: 60 # Gelmezse diskalifiye suresi (saniye)
Arena Sifirlama Ayarlari
arena-reset:
reset-speed: 20 # Tick basina sifirlanacak blok sayisi
async-reset: true # Asenkron sifirlama (lag onleme)
show-reset-progress: true # Parcacik efektleri
clear-dropped-items: true # Yerdeki esyalari temizle
clear-entities: true # Oklari vb. temizle
Discord Webhook Ayarlari
discord:
enabled: false
webhook-url: "https://discord.com/api/webhooks/WEBHOOK_ID/WEBHOOK_TOKEN"
send-duel-start: true
send-duel-end: true
send-weekly-leaderboard: true
leaderboard-day: "SUNDAY"
embed-color-start: "#3498db"
embed-color-win: "#2ecc71"
embed-color-loss: "#e74c3c"
Mesajlar
Config dosyasinda 150+ ozellestirilebilir Turkce mesaj bulunur:
- Duello istek/kabul/red, beraberlik, terk mesajlari
- ELO degisim bildirimleri
- Kuyruk durumu mesajlari
- Parti davet/katilim/ayrilis mesajlari
- Takim duellosu bilgilendirmeleri
- Turnuva kayit/baslangic/bitis mesajlari
- NPC olusturma/silme mesajlari
- Arena yonetimi bildirimleri
&renk kodu destegi
Duello Akisi
Oyuncu A: /duel OyuncuB
|
v
Kural secim GUI'si acilir (DuelRulesGUI)
- Envanter Dusurme, Basamak, Orumcek Agi, Yemek, Insa kurallarini sec
- "Onayla" butonuna tikla
|
v
Oyuncu B'ye duello istegi gonderilir
- Chat'te [KABUL ET] / [REDDET] butonlari (tiklanabilir)
- Arena adi ve kurallar gosterilir
- 60 saniye gecerlilik suresi
|
v
Oyuncu B: /duel accept veya [KABUL ET] tiklar
|
v
Musait arena otomatik atanir
Her iki oyuncu spawn noktalarina isinlanir
(AFK koruma metadata ile harici teleportlar engellenir)
|
v
[GERI SAYIM: 3... 2... 1...]
- Spawn korumasi aktif (3 saniye)
|
v
[AKTIF DUELLO]
- Sure siniri: 600 saniye (ayarlanabilir)
- Blok degisiklikleri takip ediliyor
- Komutlar engelli (spawn, tp, home vb.)
- Arena sinir kontrolu aktif (yurume, ender pearl, chorus fruit)
- Arena korumalari aktif (container, sivi, piston, entity, mob)
- /berabere ile beraberlik teklif edilebilir
- /duel ayril ile terk edilebilir
|
v
Duello sonucu:
|
+-- Oyuncu olur -> Kazanan/kaybeden belirlenir
| - ELO guncellenir
| - Envanter dusurme aciksa: Kazanan arenada kalir (120sn)
| - Ganimet sandigi olusturulur
|
+-- Sure dolar -> Yuksek canli oyuncu kazanir (esitse berabere)
|
+-- Beraberlik kabul edilir -> Her iki oyuncu icin berabere kaydedilir
|
+-- Oyuncu ayrilir/cikar -> Diger oyuncu kazanir
|
v
Istatistikler + ELO guncellenir (SQLite)
Arena sifirlanir (asenkron)
Discord webhook gonderilir (aktifse)
Turnuva maciysa bracket ilerletilir
Izleyiciler cikarilir
Kullanim Senaryolari
Senaryo 1: Kuyruk ile Otomatik Eslesme
/duel queue # Kuyruga gir
-> ELO toleransi dahilinde rakip aranir
-> Eslesme bulunursa otomatik duello baslar
-> Bulunamazsa tolerans zamanla genisler
/duel leave # Kuyruktan cik (istemezsen)
Senaryo 2: 2v2 Takim Duellosu
# Takim 1
/party create # Lider parti olusturur
/party invite OyuncuB # Takim arkadasini davet et
-> OyuncuB: /party accept # Davet kabul edilir
# Takim 2 de ayni sekilde parti olusturur
# Duello baslat
/duel team <KarsiLider> # Liderden lidere istek
-> Karsi Lider: /duel team accept # Kabul et
-> 2v2 duello baslar!
Senaryo 3: Turnuva Duzenleme
# Admin turnuva olusturur
/turnuva create yaz-kupasi 16 # 16 oyunculu turnuva
# Oyuncular katilir
/turnuva join yaz-kupasi
# Admin baslatir (min 4 oyuncu gerekir)
/turnuva start yaz-kupasi
-> Bracket otomatik olusturulur
-> Maclar sirayla baslar
-> Kazanan bir sonraki tura ilerler
-> Sampiyon belirlenir!
# Bracket durumu (GUI)
/turnuva bracket yaz-kupasi
Senaryo 4: NPC ile Etkilesim (Citizens Gerekir)
# Admin NPC olusturur
/dueladmin npc create QUEUE # Kuyruga giris NPC'si
/dueladmin npc create STATS # Istatistik GUI NPC'si
/dueladmin npc create DUEL # Duello meydan oku NPC'si
/dueladmin npc create TOURNAMENT # Turnuva NPC'si
# Oyuncu NPC'ye sag tiklar -> Ilgili aksiyon tetiklenir
# QUEUE: Kuyruga gir/cik (toggle)
# STATS: Istatistik GUI acilir
# TOURNAMENT: Acik turnuvaya otomatik katilim veya bracket goruntulemesi
# DUEL: Duello meydan oku GUI'si acilir
Senaryo 5: Arena Durum Kontrolu
# Tek arena kontrol
/duelarena status Arena1
-> Spawn 1/2, sinirlar, dunya, durum bilgisi gosterilir
-> Eksik ayarlar ✗ ile isaretlenir
# Tum arenalari toplu kontrol
/duelarena status all
-> Her arena icin ayri ayri durum raporu gosterilir
Kural Sistemi
Duello baslangicinda GUI uzerinden 5 kural ozellestirebilir:
| Kural | Varsayilan | Aciklama |
|---|---|---|
| Envanter Dusurme | Acik | Olen oyuncunun esyalari yere duser |
| Basamak Engeli | Kapali | Basamak (slab) koymak engellenir |
| Orumcek Agi Engeli | Kapali | Orumcek agi koymak engellenir |
| Yemek Engeli | Kapali | Yemek yemek engellenir |
| Insa Izni | Acik | Blok koyma ve kirma izni |
Kurallar GUI'de renkli ikonlarla gosterilir ve tiklayarak degistirilir. Kabul eden oyuncu kurallari chat'te gorur.
Istatistik Sistemi
Takip Edilen Metrikler
| Metrik | Aciklama |
|---|---|
| Toplam Duello | Oynanan toplam duello sayisi |
| Galibiyet / Maglubiyet | Kazanilan ve kaybedilen duello sayilari |
| Kazanma Orani | Yuzdelik kazanma orani |
| ELO Puani | Beceri bazli siralama puani |
| ELO Siralamasi | Sunucudaki ELO sirasi |
| Mevcut Seri | Aktif galibiyet veya maglubiyet serisi |
| En Uzun Seri | Tum zamanlarin en uzun galibiyet serisi |
| Toplam Sure | Duellolarda gecirilen toplam sure |
| En Hizli Oldurme | En kisa surede kazanilan duello |
| Favori Arena | En cok duello yapilan arena |
| Favori Rakip | En cok karsilasilan oyuncu |
| Son Sonuc | Son duellonun sonucu ve rakibi |
| Arena Bazli Istatistik | Arena basina galibiyet/maglubiyet |
| Rakip Bazli Istatistik | Rakip basina kafa kafaya kayit |
PlaceholderAPI Entegrasyonu
Identifier: duel
Durum Placeholder'lari
| Placeholder | Aciklama |
|---|---|
%duel_in_duel% |
Oyuncu duelloda mi (true/false) |
%duel_spectating% |
Oyuncu izliyor mu (true/false) |
%duel_in_queue% |
Oyuncu kuyrukta mi (true/false) |
%duel_queue_size% |
Kuyruk boyutu |
Istatistik Placeholder'lari
| Placeholder | Aciklama |
|---|---|
%duel_wins% |
Galibiyet sayisi |
%duel_losses% |
Maglubiyet sayisi |
%duel_total_duels% |
Toplam duello sayisi |
%duel_winrate% |
Kazanma orani (% ile) |
%duel_winrate_decimal% |
Kazanma orani (sayi) |
%duel_elo% |
ELO puani |
%duel_current_streak% |
Mevcut seri sayisi |
%duel_current_streak_type% |
Mevcut seri turu (galibiyet/maglubiyet) |
%duel_longest_streak% |
En uzun galibiyet serisi |
%duel_avg_time% |
Ortalama duello suresi |
%duel_fastest_kill% |
En hizli oldurme suresi |
%duel_total_playtime% |
Toplam duello suresi |
%duel_favorite_arena% |
Favori arena |
%duel_favorite_opponent% |
Favori rakip |
%duel_last_opponent% |
Son rakip |
%duel_last_result% |
Son sonuc |
%duel_rank% |
Siralama pozisyonu |
Dinamik Placeholder'lar
| Placeholder | Aciklama |
|---|---|
%duel_arena_wins:<arena>% |
Belirli arenadaki galibiyet |
%duel_arena_losses:<arena>% |
Belirli arenadaki maglubiyet |
%duel_vs_wins:<oyuncu>% |
Belirli rakibe karsi galibiyet |
%duel_vs_losses:<oyuncu>% |
Belirli rakibe karsi maglubiyet |
Ganimet Sandigi Sistemi
- Envanter dusurme acik olan duellolarda kaybeden oyuncunun esyalari yakalanir
- Kazanan oyuncu icin ozel bir sandik olusturulur
/duel sandikkomutuyla acilir- Birden fazla bekleyen sandik destekler (kuyruk sistemi)
- Tum esyalar alindiginda sandik temizlenir
- Sandik envanterinde bekleyen sandik sayisi gosterilir
Izleyici Sistemi
/spectate <oyuncu>veya/izle <oyuncu>ile aktif duelloyu izleme- Duello basina maksimum 20 izleyici (ayarlanabilir)
- Izleyiciler arena merkezine isinlanir
- Hasar alamaz, etkilesim yapamaz, esya toplayamaz
- Duello bittiginde otomatik cikarilir ve eski konumuna geri gonderilir
Veritabani
SQLite Tablolari
| Tablo | Amac |
|---|---|
player_stats |
Oyuncu istatistikleri (galibiyet, maglubiyet, ELO, seri, sure vb.) |
duel_history |
Duello gecmisi (oyuncu basina son 50 kayit) |
arena_stats |
Arena bazli performans (arena basina galibiyet/maglubiyet) |
opponent_stats |
Rakip bazli kafa kafaya kayitlar |
banned_players |
Duellodan men edilen oyuncular |
arenas |
Arena konfigurasyonu (koordinatlar, sinirlar, spawn noktasi, Y ekseni) |
duel_npcs |
Citizens NPC kayitlari (ID, tip, isim) |
GUI Arayuzleri
| GUI | Aciklama |
|---|---|
| DuelRulesGUI | Kural secim ekrani -- renkli ikonlarla kurallari ac/kapat, onayla |
| DuelRequestGUI | Duello istegi goruntuleme -- kabul/red butonlari |
| DuelChallengeGUI | NPC ile duello meydan oku -- online oyuncularin ELO ve W/L bilgisiyle kafalari |
| StatsGUI | Istatistik goruntuleme -- detayli oyuncu istatistikleri envanter GUI'si |
| HistoryGUI | Duello gecmisi goruntuleme -- son duellolar envanter GUI'si |
| TournamentGUI | Turnuva bracket goruntuleme -- bracket durumu GUI'si |
| AdminPanelGUI | Yonetim paneli -- ban, unban, force-end, istatistik sifirlama |
| DuelLootChestHolder | Ganimet sandigi -- kaybeden oyuncunun esyalarini goruntuleme |
Sikca Sorulan Sorular (SSS)
S: ELO sistemi nasil calisir? ELO, satranc dunyasindan uyarlanmis bir beceri puanlama sistemidir. Her oyuncu 1000 puanla baslar. Guclu rakipleri yenmek daha fazla puan kazandirir, zayif rakiplere kaybetmek daha fazla puan kaybettirir. K-factor (varsayilan 32) ile degisim hizini ayarlayabilirsiniz.
S: Kuyrukta ne kadar beklerim? Eslesme suresi sunucudaki aktif oyuncu sayisina ve ELO dagilimina baglidir. Baslangicta +-100 ELO araliginda rakip aranir. Her 30 saniyede tolerans 50 puan genisler, boylece uzun sure bekleyen oyuncular da eslesir (maks +-500).
S: Citizens eklentisi zorunlu mu? Hayir. Citizens opsiyonel bir bagimliliktir. Yuklu degilse NPC ozellikleri otomatik devre disi kalir, diger tum ozellikler normal calisir.
S: Turnuva sirasinda sunucu kapanirsa ne olur? Aktif turnuvalar bellekte tutulur, sunucu kapanirsa kaybolur. Turnuva sirasinda sunucuyu yeniden baslatmaktan kacinin.
S: Parti boyutu siniri nedir?
Config'de team-duel.max-party-size ile ayarlanir (varsayilan 3). Bu deger 2 yapilirsa sadece 2v2, 3 yapilirsa 2v2 ve 3v3 duellolar yapilabilir.
S: AFK koruma nasil calisir? Plugin, duello icin teleport yaparken oyuncuya ozel bir metadata ekler. Bu metadata sayesinde AFK pluginleri (EssentialsX AFK, CMI vb.) oyuncuyu geri isinlayamaz. Sadece harici plugin teleportlari engellenir; ender pearl ve chorus fruit arena siniri icerisinde normal calisir, sinir disina cikis engellenir.
S: Arenalarda kac oyuncu olabilir? Her arena ayni anda yalnizca bir duello barindirir (1v1 veya takim). Birden fazla arena olusturarak es zamanli duello sayisini artirabilirsiniz.
S: Arena korumasi nasil calisir?
Arena icerisinde blok kirma/koyma, sandik acma, su/lav dokme, piston kullanma, zirh standi/item frame kirma ve mob dogmasi varsayilan olarak engellenir. Her koruma config'den ayri ayri kapatilabilir. arceniaduel.bypass.arenaprotection izni ile tum korumalar bypass edilebilir.
S: Arena sinir kontrolu nedir? Aktif duello sirasinda oyuncular arena disina cikamaz. Yurume, ender pearl ve chorus fruit ile arena sinirlarini asmaya calismak engellenir. Sinirlar X, Y ve Z eksenlerinde kontrol edilir. Y siniri ayarlanmamis eski arenalar icin Y kontrolu otomatik atlanir.
Proje Yapisi
ArceniaDuel/
+-- pom.xml
+-- README.md
+-- src/
+-- main/
+-- java/com/arcenia/duel/
| +-- ArceniaDuel.java # Ana plugin sinifi
| +-- commands/
| | +-- AdminCommand.java # /dueladmin (NPC dahil)
| | +-- ArenaSetupCommand.java # /duelarena (status dahil)
| | +-- BerabereCommand.java # /berabere
| | +-- DuelCommand.java # /duel (queue, team dahil)
| | +-- DuelHistoryCommand.java # /duelhistory
| | +-- DuelListCommand.java # /duellist
| | +-- DuelRankCommand.java # /duelrank
| | +-- PartyCommand.java # /party
| | +-- SpectateCommand.java # /spectate
| | +-- StatsCommand.java # /stats
| | +-- TournamentCommand.java # /turnuva
| +-- gui/
| | +-- AdminPanelGUI.java # Yonetim paneli
| | +-- DuelChallengeGUI.java # NPC duello meydan oku
| | +-- DuelLootChestHolder.java # Ganimet sandigi
| | +-- DuelRequestGUI.java # Istek GUI'si
| | +-- DuelRulesGUI.java # Kural secim GUI'si
| | +-- HistoryGUI.java # Duello gecmisi GUI'si
| | +-- StatsGUI.java # Istatistik GUI'si
| | +-- TournamentGUI.java # Turnuva bracket GUI'si
| +-- hooks/
| | +-- PlaceholderAPIHook.java # PlaceholderAPI entegrasyonu
| +-- listeners/ # 13 olay dinleyicisi
| | +-- ArenaProtectionListener.java # Kapsamli arena korumasi
| | +-- BlockChangeListener.java
| | +-- DuelCommandBlockListener.java
| | +-- DuelListener.java
| | +-- DuelLootChestListener.java
| | +-- DuelTeleportListener.java # AFK + ender pearl korumasi
| | +-- InventoryClickListener.java
| | +-- NPCInteractListener.java # Citizens NPC etkilesimi
| | +-- PlayerDeathListener.java
| | +-- PlayerInteractListener.java
| | +-- PlayerMoveListener.java # Sinir kontrolu
| | +-- PlayerQuitListener.java
| | +-- WandInteractListener.java
| +-- managers/
| | +-- ArenaManager.java # Arena musaitlik ve secimi
| | +-- ArenaResetManager.java # Blok geri yukleme
| | +-- ArenaSetupManager.java # Arena kurulum oturumu
| | +-- BlockTrackingManager.java # Blok degisiklik takibi
| | +-- ConfigManager.java # Konfigurasyon yukleme
| | +-- CooldownManager.java # Bekleme suresi yonetimi
| | +-- DatabaseManager.java # SQLite islemleri
| | +-- DiscordWebhookManager.java # Discord bildirimleri
| | +-- DuelLootChestManager.java # Ganimet sandigi yonetimi
| | +-- DuelManager.java # Duello yasam dongusu
| | +-- NPCManager.java # Citizens NPC yonetimi
| | +-- PartyManager.java # Parti yonetimi
| | +-- PostDuelArenaManager.java # Duello sonrasi arena yonetimi
| | +-- QueueManager.java # Kuyruk/eslestirme sistemi
| | +-- StatsManager.java # Istatistik yonetimi
| | +-- TeamDuelManager.java # Takim duellosu yonetimi
| | +-- TournamentManager.java # Turnuva yonetimi
| +-- models/
| | +-- Arena.java # Arena veri modeli (Y ekseni dahil)
| | +-- Duel.java # Duello durumu modeli
| | +-- DuelHistory.java # Gecmis kayit modeli
| | +-- DuelNPC.java # NPC veri modeli
| | +-- DuelRequest.java # Istek modeli
| | +-- DuelRules.java # Kural modeli
| | +-- Party.java # Parti modeli
| | +-- PlayerStats.java # Istatistik modeli
| | +-- QueueEntry.java # Kuyruk girdisi modeli
| | +-- TeamDuel.java # Takim duellosu modeli
| | +-- Tournament.java # Turnuva modeli
| +-- utils/
| +-- MessageUtil.java # Mesaj formatlama
+-- resources/
+-- plugin.yml # Plugin metadata
+-- config.yml # Varsayilan yapilandirma
Geliştirici API'si
ArceniaDuel, geliştiricilerin eklentinin temel özelliklerine erişebilmesi ve kendi sistemlerine entegre edebilmesi için genişletilebilir bir API yapısı sunar. Eklentinin sunduğu etkinlikleri (event) dinleyerek duello başlangıçlarını, bitişlerini ve oyuncu istatistiklerini takip edebilirsiniz.
API Kullanımı:
- Etkinlikler:
DuelStartEvent,DuelEndEventveDuelJoinEventsınıflarını kullanarak duello süreçlerini kendi eklentilerinizle senkronize edebilirsiniz. - PlaceholderAPI:
arceniaduel_elo,arceniaduel_winsvearceniaduel_lossesgibi placeholder'lar ile oyuncu verilerini skor tablolarında veya sohbet formatlarında kolayca sergileyebilirsiniz. - Entegrasyon: Citizens NPC API desteği sayesinde, özel NPC'ler üzerinden duello kuyruğuna giriş ve istatistik görüntüleme işlemlerini tetikleyebilirsiniz.
Daha detaylı teknik dokümantasyon ve örnek kod blokları için projenin GitHub üzerindeki Javadocs klasörünü inceleyebilirsiniz.
Sorun Giderme (Troubleshooting)
Sorun Giderme (Troubleshooting)
- Java Sürümü: Eklentinin çalışması için sunucunuzda Java 21 veya üzeri yüklü olduğundan emin olun.
- Sunucu Sürümü: ArceniaDuel yalnızca Spigot/Paper 1.21+ sürümlerini destekler. Eski sürümlerde eklenti hata verebilir.
- Arena Sorunları: Blok kırma veya komut engelleme çalışmıyorsa, arena sınırlarının doğru tanımlandığından ve
Bypassyetkisine sahip olmadığınızdan emin olun. - Komut Engelleme: Duello sırasında
/spawnveya/tpgibi komutlar engellenmiyorsa, eklentinin diğer komut yönetim eklentileriyle çakışıp çakışmadığını kontrol edin. - Bağımlılıklar: PlaceholderAPI veya Citizens NPC entegrasyonu ile ilgili sorun yaşıyorsanız, ilgili eklentilerin güncel olduğundan ve sunucuda yüklü olduğundan emin olun.
- Hatalı Davranışlar: Sorun devam ederse, konsoldaki hata kayıtlarını (stack trace) inceleyin ve eklentinin en güncel sürümünü kullandığınızdan emin olun.