- Etiketler
Detaylı Tanıtım İçin;
Genel Bakış
RandomItemChange (RIC), Spigot/Paper 1.21 sunucuları için geliştirilmiş, arena tabanlı bir mini-oyun eklentisidir. Oyuncular bir arenaya katılır ve belirli aralıklarla (varsayılan olarak her birkaç saniyede bir) tüm envanterleri rastgele bir eşya ile değiştirilir. Amaç, hayatta kalan son oyuncu (veya takım) olmaktır.
Öne Çıkan Özellikler
- Sınırsız sayıda, birbirinden bağımsız çoklu arena desteği
- WorldEdit ile görsel arena sınırı belirleme
- Blok bazlı arena "snapshot" alma ve maç sonunda haritayı otomatik eski haline getirme
- Matematiksel (world border kullanmayan) daralan sınır sistemi
- 1v1 düello modu
- İzleyici (spectator) sistemi ve GUI'ler
- PlaceholderAPI ve Discord webhook entegrasyonu
- Tam çok dilli alt yapı (TR/EN)
- Uzaktan lisans doğrulama
Oyun Mekaniği
Durum Akışı
Her arena kendi bağımsız oyun durumunda ilerler:
Bekleniyor — arenaya yeterli oyuncu katılana kadar bu aşamada kalınır. En az 2 oyuncuya ulaşıldığında otomatik olarak geri sayım aşamasına geçilir.
Başlıyor — lobby-countdown ayarından gelen süre boyunca geri sayım yapılır. Arena, tanımlı minimum oyuncu sayısına ulaşırsa geri sayım otomatik olarak kısaltılır ("arena doldu, süre kısaltıldı" bildirimiyle). Oyuncu sayısı tekrar 2'nin altına düşerse başlangıç iptal edilip bekleme aşamasına dönülür. Son saniyelerde hem sohbete mesaj hem de ekrana geri sayım başlığı gösterilir.
Oynanıyor — rastgele eşya dağıtımı, sınır daralması (etkinse) ve maç süresi takibi bu aşamada aktiftir.
Bitiyor — kazanan belirlenir, ödüller dağıtılır, harita otomatik olarak eski haline getirilir, oyuncular lobiye gönderilir.
Rastgele Eşya Sistemi
Eklenti başlarken, sunucudaki geçerli tüm eşyalardan (bloklar dahil) oluşan bir liste hazırlanır. config.yml içindeki kara listeye eklenen eşyalar bu listeden çıkarılır, böylece komut blokları, bariyer, bedrock gibi yönetimsel/hileli bloklar asla rastgele verilmez.
Her arenanın kendine ait bir sayacı vardır; bu sayaç dolduğunda hayatta kalan tüm oyunculara kara listede olmayan eşyalardan rastgele biri verilir ve süre yeniden başlar. Bu süre hem config.yml → duration anahtarından hem de yetkili bir komutla anlık olarak değiştirilebilir.
Eşya Göstergesi (BossBar)
Her arenanın ekranın üstünde, sıradaki eşya değişimine kalan süreyi gösteren kendine ait bir ilerleme çubuğu (boss bar) bulunur. Maça yeni katılan oyuncular ve izleyiciler otomatik olarak bu çubuğu görür; maç bittiğinde çubuk kaldırılır
Envanter Koruması
Oyuncu maça katıldığında mevcut envanteri, zırhı ve oyun modu güvenle yedeklenir. Maçtan ayrıldığında veya maç bittiğinde bu veriler geri yüklenir — böylece oyuncular kendi normal eşyalarını kaybetmez.
Ödül Komutları
Maç sonucuna göre (öldürme, 1./2./3. sıra, beraberlik) çalıştırılacak konsol komutları config.yml üzerinden tanımlanır ve %player% ile hedef oyuncuya işaret edilebilir. Boş bırakılan bir ödül alanı, o sıralama için hiçbir komut çalıştırmaz.
Not: Düello maçlarında ödül komutları ve istatistik güncellemeleri devre dışıdır — sadece normal arena maçlarının sonuçları sayılır.
Arena Yönetimi
Arena Verisi
Her arena; ismi, minimum oyuncu sayısı, sınır köşe noktaları (pos1/pos2), spawn noktaları listesi, azami maç süresi (dakika) ve o anki durumu ile tanımlanır. Elenen oyuncuların sırası da her maç boyunca ayrıca kayıt altına alınır — bu bilgi kazanan/sıralama tespiti için kullanılır.
Bir arenanın "minimum oyuncu" değeri iki amaca hizmet eder: hem maçın başlaması için gereken oyuncu sayısını hem de o arenaya eklenebilecek azami spawn noktası sayısını belirler.
WorldEdit ile Sınır Belirleme
Arena sınırları, sunucudaki WorldEdit seçim aracıyla (balta ile sol/sağ tıklama veya //pos1 //pos2) yapılan seçimden alınır. Yetkili bir oyuncu önce WorldEdit ile bir bölge seçer, ardından RIC komutlarıyla bu seçimi ilgili arenaya kaydeder. Kayıt işlemi otomatik olarak config dosyasına yazılır, ekstra bir kaydetme adımı gerekmez.
Arena Yönetim Komutları
Değerli ziyaretçimiz, içeriği görebilmek için
şimdi giriş yapın veya kayıt olun.
Genel Bakış
RandomItemChange (RIC), Spigot/Paper 1.21 sunucuları için geliştirilmiş, arena tabanlı bir mini-oyun eklentisidir. Oyuncular bir arenaya katılır ve belirli aralıklarla (varsayılan olarak her birkaç saniyede bir) tüm envanterleri rastgele bir eşya ile değiştirilir. Amaç, hayatta kalan son oyuncu (veya takım) olmaktır.
Öne Çıkan Özellikler
- Sınırsız sayıda, birbirinden bağımsız çoklu arena desteği
- WorldEdit ile görsel arena sınırı belirleme
- Blok bazlı arena "snapshot" alma ve maç sonunda haritayı otomatik eski haline getirme
- Matematiksel (world border kullanmayan) daralan sınır sistemi
- 1v1 düello modu
- İzleyici (spectator) sistemi ve GUI'ler
- PlaceholderAPI ve Discord webhook entegrasyonu
- Tam çok dilli alt yapı (TR/EN)
- Uzaktan lisans doğrulama
Oyun Mekaniği
Durum Akışı
Her arena kendi bağımsız oyun durumunda ilerler:
Bekleniyor — arenaya yeterli oyuncu katılana kadar bu aşamada kalınır. En az 2 oyuncuya ulaşıldığında otomatik olarak geri sayım aşamasına geçilir.
Başlıyor — lobby-countdown ayarından gelen süre boyunca geri sayım yapılır. Arena, tanımlı minimum oyuncu sayısına ulaşırsa geri sayım otomatik olarak kısaltılır ("arena doldu, süre kısaltıldı" bildirimiyle). Oyuncu sayısı tekrar 2'nin altına düşerse başlangıç iptal edilip bekleme aşamasına dönülür. Son saniyelerde hem sohbete mesaj hem de ekrana geri sayım başlığı gösterilir.
Oynanıyor — rastgele eşya dağıtımı, sınır daralması (etkinse) ve maç süresi takibi bu aşamada aktiftir.
Bitiyor — kazanan belirlenir, ödüller dağıtılır, harita otomatik olarak eski haline getirilir, oyuncular lobiye gönderilir.
Rastgele Eşya Sistemi
Eklenti başlarken, sunucudaki geçerli tüm eşyalardan (bloklar dahil) oluşan bir liste hazırlanır. config.yml içindeki kara listeye eklenen eşyalar bu listeden çıkarılır, böylece komut blokları, bariyer, bedrock gibi yönetimsel/hileli bloklar asla rastgele verilmez.
Her arenanın kendine ait bir sayacı vardır; bu sayaç dolduğunda hayatta kalan tüm oyunculara kara listede olmayan eşyalardan rastgele biri verilir ve süre yeniden başlar. Bu süre hem config.yml → duration anahtarından hem de yetkili bir komutla anlık olarak değiştirilebilir.
Eşya Göstergesi (BossBar)
Her arenanın ekranın üstünde, sıradaki eşya değişimine kalan süreyi gösteren kendine ait bir ilerleme çubuğu (boss bar) bulunur. Maça yeni katılan oyuncular ve izleyiciler otomatik olarak bu çubuğu görür; maç bittiğinde çubuk kaldırılır
Envanter Koruması
Oyuncu maça katıldığında mevcut envanteri, zırhı ve oyun modu güvenle yedeklenir. Maçtan ayrıldığında veya maç bittiğinde bu veriler geri yüklenir — böylece oyuncular kendi normal eşyalarını kaybetmez.
Ödül Komutları
Maç sonucuna göre (öldürme, 1./2./3. sıra, beraberlik) çalıştırılacak konsol komutları config.yml üzerinden tanımlanır ve %player% ile hedef oyuncuya işaret edilebilir. Boş bırakılan bir ödül alanı, o sıralama için hiçbir komut çalıştırmaz.
Not: Düello maçlarında ödül komutları ve istatistik güncellemeleri devre dışıdır — sadece normal arena maçlarının sonuçları sayılır.
Arena Yönetimi
Arena Verisi
Her arena; ismi, minimum oyuncu sayısı, sınır köşe noktaları (pos1/pos2), spawn noktaları listesi, azami maç süresi (dakika) ve o anki durumu ile tanımlanır. Elenen oyuncuların sırası da her maç boyunca ayrıca kayıt altına alınır — bu bilgi kazanan/sıralama tespiti için kullanılır.
Bir arenanın "minimum oyuncu" değeri iki amaca hizmet eder: hem maçın başlaması için gereken oyuncu sayısını hem de o arenaya eklenebilecek azami spawn noktası sayısını belirler.
WorldEdit ile Sınır Belirleme
Arena sınırları, sunucudaki WorldEdit seçim aracıyla (balta ile sol/sağ tıklama veya //pos1 //pos2) yapılan seçimden alınır. Yetkili bir oyuncu önce WorldEdit ile bir bölge seçer, ardından RIC komutlarıyla bu seçimi ilgili arenaya kaydeder. Kayıt işlemi otomatik olarak config dosyasına yazılır, ekstra bir kaydetme adımı gerekmez.
Arena Yönetim Komutları
Komut | Açıklama |
|---|---|
| /ric create <isim> <minOyuncu> <maxDakika> | Yeni arena oluşturur |
| /ric pos1 <isim> / /ric pos2 <isim> | WorldEdit seçimiyle arena sınırlarını belirler |
| /ric setplayerzone <isim> | Bulunduğunuz konumu arenaya spawn noktası olarak ekler (en fazla minimum oyuncu sayısı kadar) |
| /ric delete <isim> | Arenayı siler |
| /ric list | Tüm arenaları dünya, min. oyuncu, spawn sayısı ve süresiyle listeler |
| /ric setlobby | Ana bekleme lobisini belirler |
Tüm bu komutlar ric.admin izni gerektirir.
Spawn Noktası Sınırı
Bir arenaya, tanımlı minimum oyuncu sayısından fazla spawn noktası eklenemez; sınıra ulaşıldığında yetkiliye bilgilendirme mesajı gösterilir.
Otomatik Yükleme
Sunucu her açıldığında lobi konumu ve tüm kayıtlı arenalar config dosyasından otomatik olarak yüklenir; konsola kaç arenanın yüklendiği ve lobinin bulunup bulunmadığı bilgisi yazıl
Arena Koruması ve Sınır Sistemi
Harita Anlık Görüntüsü (Snapshot) ve Otomatik Restore
Maç başlamadan önce arena sınırları içindeki tüm bloklar kaydedilir. Maç bittiğinde bu bloklar otomatik olarak orijinal haline geri döndürülür — böylece maç sırasında yapılan yıkım veya inşa haritada kalıcı olmaz ve arenalar her maçtan önce baştaki temiz haliyle başlar.
Blok Kırma / Yerleştirme Koruması
Arena sınırları dışına inşa etmek ve sınır çizgisindeki bloklara dokunmak engellenir. Maç henüz başlamamışsa veya bitmişse bloklarla hiçbir etkileşime izin verilmez. Sıvı akışı arena sınırının dışına taşamaz. Patlamalar (TNT, yaratık vb.) arena içindeyken haritaya hiçbir blok hasarı vermez — patlama etkisi tamamen engellenir.
Yatay Sınır (Duvar Etkisi)
Oyuncular ve araçlar arenanın yatay sınırlarının dışına çıkamaz; sınıra ulaştıklarında görünmez bir duvara çarpmış gibi geri itilirler. Dikey harekete (zıplama, düşme) izin verilirken yatay kaçış engellenir.
Sınır Parçacık Görselleştirmesi
İsteyen oyuncular, arena sınırlarını mavi parçacıklarla üç boyutlu bir kutu şeklinde görsel olarak görüntüleyebilir. Bu görünürlük oyuncu bazında açılıp kapatılabilir bir tercihtir.
Daralan Sınır (Shrinking Border)
Gerçek Minecraft dünya sınırı kullanılmaz — çünkü bir dünyada birden fazla arena varsa, dünya sınırı hepsini aynı anda etkileyip arenaları birbirine karıştırır. Bunun yerine her arena kendi sabit kutusu içinde bağımsız ve matematiksel olarak daralan sanal bir sınıra sahiptir.
Bu sistem config.yml üzerinden şu şekilde ayarlanır:
- Etkin/pasif durumu
- Maçın yüzde kaçından sonra daralmanın başlayacağı
- Merkezde bırakılacak minimum güvenli yarıçap
- Sınır dışındaki oyuncuya verilecek saniyelik hasar miktarı
Sınır dışına çıkan oyuncuya ışınlanma uygulanmaz — sadece periyodik hasar ve uyarı mesajı gönderilir. Bu, sistemi hem hafif hem de dünya sınırı kısıtlarından bağımsız hale getirir.
Eleme ve Hasar Sistemi
Sadece Aynı Arenadaki Oyunculara Hasar
Hem yakın dövüş hem de menzilli (ok, ateş topu vb.) hasarlar kontrol edilir. Saldıran ve mağdur farklı arenalardaysa, ya da taraflardan biri izleyici (spectator) modundaysa hasar tamamen iptal edilir. Menzilli silahlarda gerçek atıcı (oku fırlatan oyuncu) doğru şekilde tespit edilir, sadece görünen varlık değil.
Ölüm Yerine Otomatik Eleme
Bir oyuncunun canı sıfıra düştüğünde veya boşluğa (void) düştüğünde, normal "ölüm" ekranı ve envanter kaybı yaşanmaz. Bunun yerine:
- Oyuncu otomatik olarak izleyici moduna alınır.
- Arenadaki güvenli bir noktaya (öncelikle tanımlı spawn noktalarından biri, yoksa arenanın üst orta noktası) ışınlanır.
- Eleme sırası kayıt altına alınır (kazanan/sıralama hesaplaması için).
- Elenmeyi bildiren bir başlık ve sohbet mesajı gösterilir.
- Normal maçlarda (düello hariç) mağlubiyet istatistiği ve "öldürme" ödül komutu tetiklenir.
Düello maçlarında istatistik ve ödül komutları tetiklenmez — sadece normal arena maçlarında sayılır.
Arenaya Ait Olmayan Oyuncuların Korunması
Bir oyuncu arenaya kayıtlı değilken (örneğin başka bir maçı izlerken) hasar almaya çalışırsa, hasar tamamen iptal edilir ve oyuncu güvenli bir noktaya geri gönderilir — böylece izleyiciler yanlışlıkla maça karışamaz.
Sunucudan Ayrılma Durumu
Oyuncu aktif bir maçın ortasında sunucudan ayrılırsa (bağlantı kopması dahil), bu otomatik olarak mağlubiyet sayılır — düello maçları hariç.
Düello Sistemi
Düello modülü, iki oyuncu arasında bire bir (1v1) özel maç kurulmasını sağlayan bağımsız bir sistemdir.
Davet Gönderme
/ric duel <oyuncu> komutuyla (Türkçe düello takma adı da desteklenir) hedef oyuncuya davet gönderilir. Argüman verilmeden komut çalıştırılırsa, eklenti oyuncudan sohbet üzerinden hedef ismini ister; bu bekleme sırasında yazılan bir sonraki sohbet mesajı oyun sohbetine gitmeden doğrudan hedef isim olarak değerlendirilir.
Doğrulamalar
Davet gönderilmeden önce sırasıyla kontrol edilir:
- Gönderen zaten bir arenada mı?
- Hedef çevrimiçi mi?
- Hedef kendisi mi (kendine davet gönderilemez)?
- Hedef zaten başka bir arenada mı (meşgul)?
- Gönderenin zaten bekleyen giden bir daveti var mı?
- Hedefe zaten başka biri davet göndermiş mi?
Tüm kontroller geçilirse, boşta ve hiç kullanılmayan uygun bir arena otomatik olarak düello için ayrılır.
Davet Zaman Aşımı
Davetler belirli bir süre içinde yanıtlanmazsa otomatik iptal olur ve her iki tarafa da bilgi mesajı gönderilir.
Kabul / Red
/ric duel kabul veya /ric duel red komutlarıyla (İngilizce karşılıkları da desteklenir) bekleyen davet yanıtlanır. Kabul edildiğinde her iki oyuncu da doğrudan ayrılan arenaya eklenir ve maç normal akışla başlar.
Bağlantı Kopması Yönetimi
Davet eden veya davet edilen oyuncu sunucudan ayrılırsa, bekleyen davet otomatik temizlenir, ayrılan arena serbest bırakılır ve karşı tarafa bilgilendirme mesajı gönderilir.
Düello Maçlarının Özel Davranışı
Bir arena düello için kullanılırken:
- İstatistik (galibiyet/mağlubiyet) güncellenmez.
- Ödül komutları çalışmaz.
- Discord webhook bildirimleri tetiklenmez.
- Arena; normal katılım komutları, hızlı katılım ve arena menüsünde görünmez/kullanılamaz olarak işaretlenir.
İzleyici (Spectator) Sistemi
Oyuncular, /ric watch komutuyla devam eden bir maçı izleyici modunda takip edebilir.
Komut Kullanımı
- /ric watch — argümansız kullanıldığında aktif maçları listeleyen bir menü açılır.
- /ric watch <oyuncu> — belirtilen oyuncuyu doğrudan izlemeye başlar.
İzleme Akışı
İzlemeye başlayan oyuncu için:
1) Envanteri ve zırhı temizlenir.
2) İzleyici (spectator) moduna alınır.
3) Hedef oyuncunun konumuna ışınlanır.
4) Tab listesi arena bilgisiyle güncellenir.
5) Kısa bir süre sonra Minecraft'ın yerleşik "hayalet takip" moduna geçirilir, böylece hedef oyuncu hareket ettikçe kamera otomatik onu takip eder.
Kısıtlamalar
- Zaten bir arenada olan (oyuncu veya izleyici olarak) kullanıcılar başka bir maçı izleyemez; önce mevcut maçtan ayrılması gerekir.
- İzlenecek oyuncunun bulunduğu arena aktif olarak oynanıyor durumda olmalıdır, aksi halde uygun bir hata mesajı gösterilir.
İzleyicilerin Oyuna Karışmaması
İzleyiciler oyuncu listesine dahil olmadığından hasar alamaz veya veremez, ancak sınır parçacıklarını (tercihen açıksa) görebilir ve eşya değişim göstergesine (boss bar) otomatik olarak eklenir. Maçtan ayrılınca bu gösterge de kaldırılır.
Arenadan Ayrılma
/ric leave komutu izleyici modundan da geçerlidir; oyuncu izleyici listesinden çıkarılır, envanteri sıfırlanır ve lobiye ışınlanır.
GUI Sistemleri
Arena GUI (/ric gui)
İzinli oyuncular, /ric gui komutuyla arenaları görsel bir envanter menüsünden seçip katılabilir.
Görsel tasarım:
- Menü kenarları dekoratif camlarla çerçevelenir.
- Düello için ayrılmış olanlar hariç, tüm arenalar menüde birer eşya olarak listelenir.
- Menünün altında bir "arenadan ayrıl" kısayolu bulunur.
Arena durumuna göre renk kodlaması:
Spawn Noktası Sınırı
Bir arenaya, tanımlı minimum oyuncu sayısından fazla spawn noktası eklenemez; sınıra ulaşıldığında yetkiliye bilgilendirme mesajı gösterilir.
Otomatik Yükleme
Sunucu her açıldığında lobi konumu ve tüm kayıtlı arenalar config dosyasından otomatik olarak yüklenir; konsola kaç arenanın yüklendiği ve lobinin bulunup bulunmadığı bilgisi yazıl
Arena Koruması ve Sınır Sistemi
Harita Anlık Görüntüsü (Snapshot) ve Otomatik Restore
Maç başlamadan önce arena sınırları içindeki tüm bloklar kaydedilir. Maç bittiğinde bu bloklar otomatik olarak orijinal haline geri döndürülür — böylece maç sırasında yapılan yıkım veya inşa haritada kalıcı olmaz ve arenalar her maçtan önce baştaki temiz haliyle başlar.
Blok Kırma / Yerleştirme Koruması
Arena sınırları dışına inşa etmek ve sınır çizgisindeki bloklara dokunmak engellenir. Maç henüz başlamamışsa veya bitmişse bloklarla hiçbir etkileşime izin verilmez. Sıvı akışı arena sınırının dışına taşamaz. Patlamalar (TNT, yaratık vb.) arena içindeyken haritaya hiçbir blok hasarı vermez — patlama etkisi tamamen engellenir.
Yatay Sınır (Duvar Etkisi)
Oyuncular ve araçlar arenanın yatay sınırlarının dışına çıkamaz; sınıra ulaştıklarında görünmez bir duvara çarpmış gibi geri itilirler. Dikey harekete (zıplama, düşme) izin verilirken yatay kaçış engellenir.
Sınır Parçacık Görselleştirmesi
İsteyen oyuncular, arena sınırlarını mavi parçacıklarla üç boyutlu bir kutu şeklinde görsel olarak görüntüleyebilir. Bu görünürlük oyuncu bazında açılıp kapatılabilir bir tercihtir.
Daralan Sınır (Shrinking Border)
Gerçek Minecraft dünya sınırı kullanılmaz — çünkü bir dünyada birden fazla arena varsa, dünya sınırı hepsini aynı anda etkileyip arenaları birbirine karıştırır. Bunun yerine her arena kendi sabit kutusu içinde bağımsız ve matematiksel olarak daralan sanal bir sınıra sahiptir.
Bu sistem config.yml üzerinden şu şekilde ayarlanır:
- Etkin/pasif durumu
- Maçın yüzde kaçından sonra daralmanın başlayacağı
- Merkezde bırakılacak minimum güvenli yarıçap
- Sınır dışındaki oyuncuya verilecek saniyelik hasar miktarı
Sınır dışına çıkan oyuncuya ışınlanma uygulanmaz — sadece periyodik hasar ve uyarı mesajı gönderilir. Bu, sistemi hem hafif hem de dünya sınırı kısıtlarından bağımsız hale getirir.
Eleme ve Hasar Sistemi
Sadece Aynı Arenadaki Oyunculara Hasar
Hem yakın dövüş hem de menzilli (ok, ateş topu vb.) hasarlar kontrol edilir. Saldıran ve mağdur farklı arenalardaysa, ya da taraflardan biri izleyici (spectator) modundaysa hasar tamamen iptal edilir. Menzilli silahlarda gerçek atıcı (oku fırlatan oyuncu) doğru şekilde tespit edilir, sadece görünen varlık değil.
Ölüm Yerine Otomatik Eleme
Bir oyuncunun canı sıfıra düştüğünde veya boşluğa (void) düştüğünde, normal "ölüm" ekranı ve envanter kaybı yaşanmaz. Bunun yerine:
- Oyuncu otomatik olarak izleyici moduna alınır.
- Arenadaki güvenli bir noktaya (öncelikle tanımlı spawn noktalarından biri, yoksa arenanın üst orta noktası) ışınlanır.
- Eleme sırası kayıt altına alınır (kazanan/sıralama hesaplaması için).
- Elenmeyi bildiren bir başlık ve sohbet mesajı gösterilir.
- Normal maçlarda (düello hariç) mağlubiyet istatistiği ve "öldürme" ödül komutu tetiklenir.
Düello maçlarında istatistik ve ödül komutları tetiklenmez — sadece normal arena maçlarında sayılır.
Arenaya Ait Olmayan Oyuncuların Korunması
Bir oyuncu arenaya kayıtlı değilken (örneğin başka bir maçı izlerken) hasar almaya çalışırsa, hasar tamamen iptal edilir ve oyuncu güvenli bir noktaya geri gönderilir — böylece izleyiciler yanlışlıkla maça karışamaz.
Sunucudan Ayrılma Durumu
Oyuncu aktif bir maçın ortasında sunucudan ayrılırsa (bağlantı kopması dahil), bu otomatik olarak mağlubiyet sayılır — düello maçları hariç.
Düello Sistemi
Düello modülü, iki oyuncu arasında bire bir (1v1) özel maç kurulmasını sağlayan bağımsız bir sistemdir.
Davet Gönderme
/ric duel <oyuncu> komutuyla (Türkçe düello takma adı da desteklenir) hedef oyuncuya davet gönderilir. Argüman verilmeden komut çalıştırılırsa, eklenti oyuncudan sohbet üzerinden hedef ismini ister; bu bekleme sırasında yazılan bir sonraki sohbet mesajı oyun sohbetine gitmeden doğrudan hedef isim olarak değerlendirilir.
Doğrulamalar
Davet gönderilmeden önce sırasıyla kontrol edilir:
- Gönderen zaten bir arenada mı?
- Hedef çevrimiçi mi?
- Hedef kendisi mi (kendine davet gönderilemez)?
- Hedef zaten başka bir arenada mı (meşgul)?
- Gönderenin zaten bekleyen giden bir daveti var mı?
- Hedefe zaten başka biri davet göndermiş mi?
Tüm kontroller geçilirse, boşta ve hiç kullanılmayan uygun bir arena otomatik olarak düello için ayrılır.
Davet Zaman Aşımı
Davetler belirli bir süre içinde yanıtlanmazsa otomatik iptal olur ve her iki tarafa da bilgi mesajı gönderilir.
Kabul / Red
/ric duel kabul veya /ric duel red komutlarıyla (İngilizce karşılıkları da desteklenir) bekleyen davet yanıtlanır. Kabul edildiğinde her iki oyuncu da doğrudan ayrılan arenaya eklenir ve maç normal akışla başlar.
Bağlantı Kopması Yönetimi
Davet eden veya davet edilen oyuncu sunucudan ayrılırsa, bekleyen davet otomatik temizlenir, ayrılan arena serbest bırakılır ve karşı tarafa bilgilendirme mesajı gönderilir.
Düello Maçlarının Özel Davranışı
Bir arena düello için kullanılırken:
- İstatistik (galibiyet/mağlubiyet) güncellenmez.
- Ödül komutları çalışmaz.
- Discord webhook bildirimleri tetiklenmez.
- Arena; normal katılım komutları, hızlı katılım ve arena menüsünde görünmez/kullanılamaz olarak işaretlenir.
İzleyici (Spectator) Sistemi
Oyuncular, /ric watch komutuyla devam eden bir maçı izleyici modunda takip edebilir.
Komut Kullanımı
- /ric watch — argümansız kullanıldığında aktif maçları listeleyen bir menü açılır.
- /ric watch <oyuncu> — belirtilen oyuncuyu doğrudan izlemeye başlar.
İzleme Akışı
İzlemeye başlayan oyuncu için:
1) Envanteri ve zırhı temizlenir.
2) İzleyici (spectator) moduna alınır.
3) Hedef oyuncunun konumuna ışınlanır.
4) Tab listesi arena bilgisiyle güncellenir.
5) Kısa bir süre sonra Minecraft'ın yerleşik "hayalet takip" moduna geçirilir, böylece hedef oyuncu hareket ettikçe kamera otomatik onu takip eder.
Kısıtlamalar
- Zaten bir arenada olan (oyuncu veya izleyici olarak) kullanıcılar başka bir maçı izleyemez; önce mevcut maçtan ayrılması gerekir.
- İzlenecek oyuncunun bulunduğu arena aktif olarak oynanıyor durumda olmalıdır, aksi halde uygun bir hata mesajı gösterilir.
İzleyicilerin Oyuna Karışmaması
İzleyiciler oyuncu listesine dahil olmadığından hasar alamaz veya veremez, ancak sınır parçacıklarını (tercihen açıksa) görebilir ve eşya değişim göstergesine (boss bar) otomatik olarak eklenir. Maçtan ayrılınca bu gösterge de kaldırılır.
Arenadan Ayrılma
/ric leave komutu izleyici modundan da geçerlidir; oyuncu izleyici listesinden çıkarılır, envanteri sıfırlanır ve lobiye ışınlanır.
GUI Sistemleri
Arena GUI (/ric gui)
İzinli oyuncular, /ric gui komutuyla arenaları görsel bir envanter menüsünden seçip katılabilir.
Görsel tasarım:
- Menü kenarları dekoratif camlarla çerçevelenir.
- Düello için ayrılmış olanlar hariç, tüm arenalar menüde birer eşya olarak listelenir.
- Menünün altında bir "arenadan ayrıl" kısayolu bulunur.
Arena durumuna göre renk kodlaması:
| Renk | Durum |
|---|---|
| Bekleniyor | |
| Başlıyor | |
| Oynanıyor |
Her arena eşyasının açıklamasında (lore) o arenanın durumu, mevcut/azami oyuncu sayısı ve katılım bilgisi gösterilir.
Tıklama davranışı:
- Bir arenaya tıklamak → katılma denemesi yapar (dolu, başlamış veya düello için ayrılmışsa reddedilir).
- Ayrıl eşyasına tıklamak → mevcut arenadan çıkış yapar.
- Menü tamamen salt-okunurdur; eşyalar alınamaz.
İzleyici GUI
Argümansız /ric watch komutuyla açılan, aktif olarak oynanan maçları listeleyen ayrı bir menüdür. Buradan bir arena seçildiğinde oyuncu doğrudan o maçın izleyicisi olarak eklenir ve izleyici moduna geçirilir (bkz. İzleyici Sistemi sayfası).
İstatistik, Scoreboard ve Tab List
Oyuncu İstatistikleri
Her oyuncunun kazanma, kaybetme ve oynadığı maç sayısı diskte kalıcı olarak saklanır. Bu veriler sunucu kapanırken otomatik kaydedilir ve PlaceholderAPI üzerinden dışarı açılabilir (bkz. PlaceholderAPI Entegrasyonu).
Sidebar Scoreboard
Maç sırasında her oyuncuya, dil dosyasında tanımlı satırlara göre dinamik olarak oluşturulan bir yan panel (sidebar) gösterilir. Bu panelde arena adı, kalan süre, oyuncu sayısı gibi bilgiler placeholder olarak kullanılabilir. Panel tamamen dil dosyasından özelleştirilebilir; aynı görünen satırların çakışmaması için görünmez bir teknikle satırlar otomatik olarak benzersizleştirilir.
Tab Liste Yönetimi
Arenadaki oyuncular ve izleyiciler için özel bir tab listesi görünümü oluşturulur:
- Arenaya ait olmayan tüm çevrimiçi oyuncular tab listesinden gizlenir; sadece arena/izleyici üyeleri görünür kalır.
- Header ve footer (üst/alt bilgi) dil dosyasından, arena adı, oyuncu sayısı ve kalan süre gibi placeholder'larla oluşturulur.
- Oyuncu arenadan ayrıldığında herkesin görünürlüğü ve header/footer bilgisi normale döndürülür.
Bu üç sistem birlikte, oyunculara maç sırasında "izole" bir görüntü sunar: sadece kendi arenalarındaki kişileri görürler, karışıklık önlenir.
PlaceholderAPI Entegrasyonu
RIC, sunucuda PlaceholderAPI yüklüyse otomatik olarak kendi placeholder genişletmesini kaydeder. Tüm placeholder'lar %ric_...% önekiyle kullanılır.
İstatistik Placeholder'ları (sıralama bazlı)
Tıklama davranışı:
- Bir arenaya tıklamak → katılma denemesi yapar (dolu, başlamış veya düello için ayrılmışsa reddedilir).
- Ayrıl eşyasına tıklamak → mevcut arenadan çıkış yapar.
- Menü tamamen salt-okunurdur; eşyalar alınamaz.
İzleyici GUI
Argümansız /ric watch komutuyla açılan, aktif olarak oynanan maçları listeleyen ayrı bir menüdür. Buradan bir arena seçildiğinde oyuncu doğrudan o maçın izleyicisi olarak eklenir ve izleyici moduna geçirilir (bkz. İzleyici Sistemi sayfası).
İstatistik, Scoreboard ve Tab List
Oyuncu İstatistikleri
Her oyuncunun kazanma, kaybetme ve oynadığı maç sayısı diskte kalıcı olarak saklanır. Bu veriler sunucu kapanırken otomatik kaydedilir ve PlaceholderAPI üzerinden dışarı açılabilir (bkz. PlaceholderAPI Entegrasyonu).
Sidebar Scoreboard
Maç sırasında her oyuncuya, dil dosyasında tanımlı satırlara göre dinamik olarak oluşturulan bir yan panel (sidebar) gösterilir. Bu panelde arena adı, kalan süre, oyuncu sayısı gibi bilgiler placeholder olarak kullanılabilir. Panel tamamen dil dosyasından özelleştirilebilir; aynı görünen satırların çakışmaması için görünmez bir teknikle satırlar otomatik olarak benzersizleştirilir.
Tab Liste Yönetimi
Arenadaki oyuncular ve izleyiciler için özel bir tab listesi görünümü oluşturulur:
- Arenaya ait olmayan tüm çevrimiçi oyuncular tab listesinden gizlenir; sadece arena/izleyici üyeleri görünür kalır.
- Header ve footer (üst/alt bilgi) dil dosyasından, arena adı, oyuncu sayısı ve kalan süre gibi placeholder'larla oluşturulur.
- Oyuncu arenadan ayrıldığında herkesin görünürlüğü ve header/footer bilgisi normale döndürülür.
Bu üç sistem birlikte, oyunculara maç sırasında "izole" bir görüntü sunar: sadece kendi arenalarındaki kişileri görürler, karışıklık önlenir.
PlaceholderAPI Entegrasyonu
RIC, sunucuda PlaceholderAPI yüklüyse otomatik olarak kendi placeholder genişletmesini kaydeder. Tüm placeholder'lar %ric_...% önekiyle kullanılır.
İstatistik Placeholder'ları (sıralama bazlı)
| Placeholder | Açıklama |
|---|---|
| %ric_wins_<n>% | n. sıradaki oyuncunun galibiyet sayısı |
| %ric_losses_<n>% | n. sıradaki oyuncunun mağlubiyet sayısı |
| %ric_played_<n>% | n. sıradaki oyuncunun oynadığı maç sayısı |
| %ric_wlr_<n>% | n. sıradaki oyuncunun galibiyet/mağlubiyet oranı |
Bu placeholder'lar, örneğin bir "en iyi oyuncular" hologramı veya skorbord/leaderboard tabelası oluşturmak için idealdir.
Arena Placeholder'ları
Arena Placeholder'ları
Placeholder | Açıklama |
|---|---|
| %ric_arena_players_<arena>% | Belirtilen arenadaki mevcut oyuncu sayısı |
| %ric_arena_max_<arena>% | Arenanın tanımlı azami oyuncu sayısı |
| %ric_arena_min_<arena>% | Arenanın maç başlaması için gereken minimum oyuncu sayısı |
| %ric_arena_spectators_<arena>% | Arenadaki izleyici sayısı |
Bu placeholder'lar sayesinde, örneğin lobide her arenanın anlık doluluk bilgisini gösteren tabelalar oluşturulabilir.
Veri Bulunamadığında
İlgili istatistik sistemi henüz hazır değilse veya belirtilen arena bulunamazsa, dil dosyasından okunan özel bir "veri yok" / "bilinmiyor" mesajı döner.
Discord Webhook Bildirimleri
RIC, maç olaylarını (örneğin galibiyet/mağlubiyet duyuruları) bir Discord kanalına embed mesaj olarak gönderebilir.
Yapılandırma
Özellik kapalıyken veya webhook adresi doldurulmamışken hiçbir istek gönderilmez, sadece konsola bilgilendirici bir uyarı yazılır.
Embed İçeriği
Discord'a gönderilen başlık ve açıklama metinleri sabit değildir; dil dosyasından okunur ve arena adı, oyuncu adı gibi placeholder'lar otomatik olarak yerine yazılır. Böylece bildirimler de tıpkı oyun içi mesajlar gibi tamamen özelleştirilebilir ve çevrilebilir.
Asenkron Gönderim
Webhook istekleri sunucu performansını etkilememesi için arka planda, ana oyun döngüsünden bağımsız olarak gönderilir.
Hata Yönetimi
Discord'a gönderim başarısız olursa (bağlantı hatası, geçersiz adres vb.) bu durum yalnızca konsola loglanır; sunucu veya oyun akışı bundan etkilenmez.
Düello Maçlarında Devre Dışı
Düello maçlarında webhook bildirimleri tetiklenmez — yalnızca normal arena maçlarının sonuçları Discord'a iletilir.
Dil ve Renk Sistemi
Çok Dilli Alt Yapı
RIC, sabit kodlanmış mesajlar yerine tamamen dosya tabanlı bir dil sistemi kullanır. Bu sayede tüm oyun içi metinler, sunucu sahibi tarafından tamamen özelleştirilebilir. Kutudan çıkma olarak Türkçe ve İngilizce dil dosyaları gelir; hangisinin kullanılacağı config.yml üzerinden seçilir
Eksik Anahtar Uyarı Sistemi
Dil dosyasında eksik bir mesaj varsa, oyunda boş metin göstermek yerine konsola uyarı yazılır — böylece eksik veya unutulmuş çeviriler kolayca fark edilir.
Renk Kodu Desteği
Dil dosyalarında hem klasik Minecraft renk kodları (&a, &c vb.) hem de modern hex renkler desteklenir — birkaç farklı yazım biçimiyle (köşeli parantezli, &# ile başlayan ve harf harf yazılan eski format). Bu, sunucu sahibinin dil dosyasında istediği rengi serbestçe kullanabilmesini sağlar; RGB renk desteği olan istemcilerde tam hex renk, olmayanlarda en yakın klasik renkle gösterim otomatik devreye girer.
Reload ile Anında Güncelleme
/ric reload komutu, config'i, dil dosyasını ve arena verilerini sunucuyu yeniden başlatmadan yeniden yükler — dil dosyasında yapılan değişiklikler anında etkili olur.
Komutlar ve İzinler
Oyuncu Komutları
Veri Bulunamadığında
İlgili istatistik sistemi henüz hazır değilse veya belirtilen arena bulunamazsa, dil dosyasından okunan özel bir "veri yok" / "bilinmiyor" mesajı döner.
Discord Webhook Bildirimleri
RIC, maç olaylarını (örneğin galibiyet/mağlubiyet duyuruları) bir Discord kanalına embed mesaj olarak gönderebilir.
Yapılandırma
Kod:
discord-webhook:
enabled: false
url: "PUT_YOUR_DISCORD_WEBHOOK_URL_HERE"
Özellik kapalıyken veya webhook adresi doldurulmamışken hiçbir istek gönderilmez, sadece konsola bilgilendirici bir uyarı yazılır.
Embed İçeriği
Discord'a gönderilen başlık ve açıklama metinleri sabit değildir; dil dosyasından okunur ve arena adı, oyuncu adı gibi placeholder'lar otomatik olarak yerine yazılır. Böylece bildirimler de tıpkı oyun içi mesajlar gibi tamamen özelleştirilebilir ve çevrilebilir.
Asenkron Gönderim
Webhook istekleri sunucu performansını etkilememesi için arka planda, ana oyun döngüsünden bağımsız olarak gönderilir.
Hata Yönetimi
Discord'a gönderim başarısız olursa (bağlantı hatası, geçersiz adres vb.) bu durum yalnızca konsola loglanır; sunucu veya oyun akışı bundan etkilenmez.
Düello Maçlarında Devre Dışı
Düello maçlarında webhook bildirimleri tetiklenmez — yalnızca normal arena maçlarının sonuçları Discord'a iletilir.
Dil ve Renk Sistemi
Çok Dilli Alt Yapı
RIC, sabit kodlanmış mesajlar yerine tamamen dosya tabanlı bir dil sistemi kullanır. Bu sayede tüm oyun içi metinler, sunucu sahibi tarafından tamamen özelleştirilebilir. Kutudan çıkma olarak Türkçe ve İngilizce dil dosyaları gelir; hangisinin kullanılacağı config.yml üzerinden seçilir
Kod:
lang-file: "lang_tr.yml"
Eksik Anahtar Uyarı Sistemi
Dil dosyasında eksik bir mesaj varsa, oyunda boş metin göstermek yerine konsola uyarı yazılır — böylece eksik veya unutulmuş çeviriler kolayca fark edilir.
Renk Kodu Desteği
Dil dosyalarında hem klasik Minecraft renk kodları (&a, &c vb.) hem de modern hex renkler desteklenir — birkaç farklı yazım biçimiyle (köşeli parantezli, &# ile başlayan ve harf harf yazılan eski format). Bu, sunucu sahibinin dil dosyasında istediği rengi serbestçe kullanabilmesini sağlar; RGB renk desteği olan istemcilerde tam hex renk, olmayanlarda en yakın klasik renkle gösterim otomatik devreye girer.
Reload ile Anında Güncelleme
/ric reload komutu, config'i, dil dosyasını ve arena verilerini sunucuyu yeniden başlatmadan yeniden yükler — dil dosyasında yapılan değişiklikler anında etkili olur.
Komutlar ve İzinler
Oyuncu Komutları
| Komut | Açıklama | İzin |
|---|---|---|
| /ric join <arena> | Belirli bir arenaya katılır | ric.use |
| /ric gui | Arena seçim menüsünü açar | ric.gui |
| /ric speed | En uygun arenaya otomatik katılır | ric.speed |
| /ric watch [oyuncu] | Maç izleme (menü veya doğrudan) | ric.use |
| /ric duel <oyuncu|kabul|red> | Düello daveti gönderir/yanıtlar | ric.use |
| /ric leave veya /leave | Aktif maçtan/izlemeden ayrılır | ric.use |
| /lobby veya /spawn | Ana lobiye ışınlanır | ric.use |
Yönetici Komutları
Komut | Açıklama | İzin |
|---|---|---|
| /ric create <isim> <minOyuncu> <maxDakika> | Yeni arena oluşturur | ric.admin |
| /ric pos1 <isim> / /ric pos2 <isim> | WorldEdit seçimiyle sınır belirler | ric.admin |
| /ric setplayerzone <isim> | Spawn noktası ekler | ric.admin |
| /ric delete <isim> | Arenayı siler | ric.admin |
| /ric list | Tüm arenaları listeler | ric.admin |
| /ric setlobby | Lobi konumunu belirler | ric.admin |
| /ric duration <saniye> | Eşya değişim süresini değiştirir | ric.duration |
| /ric reload | Config/dil/arena dosyalarını yeniler | ric.reload |
İzin Listesi
İzin | Varsayılan | Açıklama |
|---|---|---|
| ric.use | herkes | Temel komutlar (join, leave, lobby) |
| ric.admin | operatör | Arena kurma, silme, sınır belirleme |
| ric.duration | operatör | Eşya yenilenme süresini değiştirme |
| ric.reload | operatör | Eklenti dosyalarını yenileme |
| ric.speed | herkes | /ric speed kullanımı |
| ric.gui | herkes | Arena menüsünü açma |
Akıllı Tamamlama
Komut yazarken alt komutlar, arena isimleri, çevrimiçi oyuncu isimleri ve düello seçenekleri (kabul/red) bağlama duyarlı olarak otomatik önerilir.
Yardım Menüsü
/ric argümansız çalıştırıldığında, gönderenin sahip olduğu izinlere göre dinamik bir yardım menüsü gösterilir — yönetici izinleri olmayan oyunculara sadece kendilerine ait komutlar listelenir.
Yapılandırma Dosyası (config.yml)
Eklentinin tüm ana ayarları plugins/RandomItemChange/config.yml içinde tutulur.
Komut yazarken alt komutlar, arena isimleri, çevrimiçi oyuncu isimleri ve düello seçenekleri (kabul/red) bağlama duyarlı olarak otomatik önerilir.
Yardım Menüsü
/ric argümansız çalıştırıldığında, gönderenin sahip olduğu izinlere göre dinamik bir yardım menüsü gösterilir — yönetici izinleri olmayan oyunculara sadece kendilerine ait komutlar listelenir.
Yapılandırma Dosyası (config.yml)
Eklentinin tüm ana ayarları plugins/RandomItemChange/config.yml içinde tutulur.
Kod:
# Varsayılan eşya verme süresi (saniye cinsinden)
duration: 5
# Kullanılacak dil dosyası (Örn: lang_tr.yml, lang_en.yml)
lang-file: "lang_tr.yml"
# Mini-oyun Ödül Komutları — %player% ile hedeflenir
rewards:
kill-command: "say %player% was eliminated!"
win-command-1: "eco give %player% 500"
win-command-2: "eco give %player% 250"
win-command-3: "eco give %player% 100"
tie-command: "say The match ended in a draw!"
# Maç başlamadan önceki geri sayım süresi (saniye)
lobby-countdown: 10
# Rastgele olarak verilmesini istemediğiniz eşyalar
blacklisted-items:
- BEDROCK
- BARRIER
- LIGHT
- COMMAND_BLOCK
- CHAIN_COMMAND_BLOCK
- REPEATING_COMMAND_BLOCK
- COMMAND_BLOCK_MINECART
- STRUCTURE_BLOCK
- STRUCTURE_VOID
- JIGSAW
- DEBUG_STICK
- KNOWLEDGE_BOOK
- END_PORTAL_FRAME
- ENDER_DRAGON_SPAWN_EGG
- WITHER_SPAWN_EGG
# Discord Webhook Ayarları
discord-webhook:
enabled: false
url: "PUT_YOUR_DISCORD_WEBHOOK_URL_HERE"
# Daralan sınır ayarları
shrinking-border:
enabled: false
start-after-percent: 50
min-radius: 3
damage-per-second: 1.0
Anahtar Açıklamaları
Anahtar | Tip | Varsayılan | Açıklama |
|---|---|---|---|
| duration | sayı | 5 | Her eşya değişimi arasındaki saniye |
| lang-file | metin | lang_tr.yml | Kullanılacak dil dosyasının adı |
| rewards.* | metin | — | Maç sonu / eleme anı konsol komutları |
| lobby-countdown | sayı | 10 | Maç başlama geri sayımı (saniye) |
| blacklisted-items | liste | (yukarıdaki liste) | Rastgele verilmeyecek eşya isimleri |
| discord-webhook.enabled | evet/hayır | hayır | Discord bildirimlerini açar/kapatır |
| discord-webhook.url | metin | — | Discord webhook adresi |
| shrinking-border.enabled | evet/hayır | hayır | Daralan sınırı açar/kapatır |
| shrinking-border.start-after-percent | sayı | 50 | Maçın yüzde kaçından sonra daralma başlasın |
| shrinking-border.min-radius | sayı | 3 | Merkezde bırakılacak minimum güvenli yarıçap |
| shrinking-border.damage-per-second | sayı | 1.0 | Sınır dışı saniyelik hasar (0 = sadece görsel/uyarı) |
Önemli Notlar
Kara liste, yalnızca sunucunun tanıdığı geçerli eşya isimleriyle eşleşmelidir; tanınmayan bir isim yazılırsa konsola uyarı düşer ve o giriş yok sayılır.
Daralan sınır, gerçek bir Minecraft dünya sınırı kullanmaz; her arena kendi matematiksel kutusu içinde bağımsız daralır. Detaylar için Arena Koruması ve Sınır Sistemi sayfasına bakın.
Değişikliklerden sonra /ric reload komutuyla sunucuyu yeniden başlatmadan ayarları uygulayabilirsiniz.
Oyun İçinden Görseller
Plugin Paketi Olarak Satın Almak İsteseniz
Kara liste, yalnızca sunucunun tanıdığı geçerli eşya isimleriyle eşleşmelidir; tanınmayan bir isim yazılırsa konsola uyarı düşer ve o giriş yok sayılır.
Daralan sınır, gerçek bir Minecraft dünya sınırı kullanmaz; her arena kendi matematiksel kutusu içinde bağımsız daralır. Detaylar için Arena Koruması ve Sınır Sistemi sayfasına bakın.
Değişikliklerden sonra /ric reload komutuyla sunucuyu yeniden başlatmadan ayarları uygulayabilirsiniz.
Oyun İçinden Görseller
Plugin Paketi Olarak Satın Almak İsteseniz