ArceniaVıpWorldGuard
Bu proje, Paper 1.21.8 ve üzeri sunucular için Java 21 tabanlı olarak geliştirilmiş 1.0.0-SNAPSHOT sürümüne sahip bir eklentidir. Sunucu altyapısı üzerinde çalışmak üzere optimize edilmiş olup güncel Minecraft sürümleriyle tam uyumluluk sağlar. Geliştirme aşamasındaki özellikleri ile sunucu yönetimine yönelik temel işlevler sunar.
Kısa Açıklama
ArceniaVipWorldGuard, Minecraft sunucularında WorldGuard bölgelerine LuckPerms grup tabanlı giriş kısıtlaması getiren bir Paper eklentisidir. Belirli WorldGuard bölgelerini "VIP bölge" olarak tanımlayarak yalnızca belirli LuckPerms gruplarına sahip oyuncuların bu bölgelere girebilmesini sağlar. Yetkisiz oyuncular bölgeye girmeye çalıştığında otomatik olarak engellenir ve özelleştirilebilir bir uyarı mesajı gösterilir.
Özellikler
- Grup Tabanlı Bölge Koruması: WorldGuard bölgelerini LuckPerms gruplarıyla ilişkilendirerek yalnızca yetkili oyuncuların girmesine izin verir.
- Çoklu Grup Desteği: Bir bölgeye birden fazla LuckPerms grubu atanabilir; oyuncu bu gruplardan herhangi birine sahipse giriş yapabilir.
- Dünya (World) Desteği: Her bölge, bulunduğu dünyaya göre ayrı ayrı yönetilir. Farklı dünyalardaki aynı isimli bölgeler bağımsız yapılandırılabilir.
- Tam Tab-Tamamlama: Tüm komutlar için akıllı tab-tamamlama desteği sunar (bölge isimleri, dünya isimleri, LuckPerms grupları).
- Seçim (Selection) Sistemi: Bir bölgeyi seçtikten sonra tekrar tekrar bölge adı yazmadan grup ekleme/çıkarma işlemleri yapılabilir.
- Bypass (Atlama) İzni:
arceniavipworldguard.bypassiznine sahip oyuncular veya OP oyuncular tüm VIP bölge kısıtlamalarını atlar. - Özelleştirilebilir Mesajlar: Giriş engelleme mesajı
config.ymlüzerinden&renk kodlarıyla birlikte değiştirilebilir. - Otomatik Kayıt: Yapılan tüm değişiklikler anında
config.ymldosyasına kaydedilir; sunucu yeniden başlatıldığında kaybolmaz. - WorldGuard Session Handler Entegrasyonu: Bölge giriş kontrolü, WorldGuard'ın kendi oturum yönetim sistemi (
SessionManager) üzerinden yapılır; bu sayede hem yürüyerek hem de ışınlanarak yapılan tüm giriş denemeleri yakalanır. - Konsol Desteği: Komutlar sunucu konsolundan da kullanılabilir (dünya adı parametresi belirtilmesi gerekir).
- Thread-Safe Mimari: Dahili kayıt defteri (
VipRegionRegistry)ConcurrentHashMapkullanarak eş zamanlı erişime karşı güvenlidir.
Gereksinimler
| Bağımlılık | Minimum Sürüm | Açıklama |
|---|---|---|
| Paper | 1.21.8+ | Sunucu yazılımı (Spigot desteklenmez) |
| WorldGuard | 7.0.16+ | Bölge yönetim eklentisi |
| LuckPerms | 5.5+ | İzin ve grup yönetim eklentisi |
| Java | 21+ | Çalışma ortamı |
Kurulum
- Sunucunuzda Paper 1.21.8+, WorldGuard ve LuckPerms eklentilerinin yüklü ve çalışır durumda olduğundan emin olun.
- Derlenen
arcenia-vip-worldguard-1.0.0-SNAPSHOT.jardosyasını sunucunuzunplugins/klasörüne kopyalayın. - Sunucuyu yeniden başlatın veya eklentiyi yükleyin.
- Eklenti ilk çalıştığında
plugins/ArceniaVipWorldGuard/config.ymldosyası otomatik olarak oluşturulacaktır. /vipbolgekomutuyla VIP bölgelerinizi yapılandırmaya başlayın.
Not: WorldGuard veya LuckPerms bulunamazsa eklenti otomatik olarak devre dışı bırakılır ve konsola hata mesajı yazılır.
Komutlar
Tüm komutlar /vipbolge ana komutu altında çalışır.
Bölge Komutları
| Komut | Açıklama | İzin |
|---|---|---|
/vipbolge ekle <region> [world] |
Bir WorldGuard bölgesini seçer (VIP bölge olarak işaretlemek için). sec takma adıyla da kullanılabilir. |
arceniavipworldguard.region.select |
/vipbolge bilgi [region] [world] |
Seçili veya belirtilen bölgenin VIP bilgilerini (tanımlı gruplar) gösterir. | arceniavipworldguard.region.info |
/vipbolge liste [world] |
Belirtilen dünyada (veya oyuncunun bulunduğu dünyada) tanımlı tüm VIP bölgeleri ve gruplarını listeler. | arceniavipworldguard.region.list |
/vipbolge sil [region] [world] |
Seçili veya belirtilen bölgenin tüm VIP grup tanımlarını siler ve seçimi kaldırır. | arceniavipworldguard.region.remove |
Grup Komutları
| Komut | Açıklama | İzin |
|---|---|---|
/vipbolge grup ekle <grup> |
Seçili bölgeye bir LuckPerms grubu ekler. | arceniavipworldguard.group.add |
/vipbolge grup ekle <region> <grup> [world] |
Belirtilen bölgeye doğrudan bir LuckPerms grubu ekler. | arceniavipworldguard.group.add |
/vipbolge grup sil <grup> |
Seçili bölgeden bir grubu kaldırır. | arceniavipworldguard.group.remove |
/vipbolge grup sil <region> <grup> [world] |
Belirtilen bölgeden bir grubu kaldırır. | arceniavipworldguard.group.remove |
/vipbolge grup liste [region] [world] |
Seçili veya belirtilen bölgenin gruplarını listeler. | arceniavipworldguard.group.list |
/vipbolge grup temizle [region] [world] |
Seçili veya belirtilen bölgenin tüm gruplarını temizler. | arceniavipworldguard.group.clear |
Diğer
| Komut | Açıklama | İzin |
|---|---|---|
/vipbolge yardim |
Tüm komutların kullanım bilgisini gösterir. | arceniavipworldguard.use |
İzinler
| İzin | Açıklama | Varsayılan |
|---|---|---|
arceniavipworldguard.admin |
Tüm VipBolge yönetim yetkilerini verir (aşağıdaki tüm izinleri kapsar). | OP |
arceniavipworldguard.use |
/vipbolge ana komutunu kullanma izni. |
false |
arceniavipworldguard.region.select |
VIP bölge seçme komutu (ekle/sec). |
false |
arceniavipworldguard.region.remove |
VIP bölge silme komutu (sil). |
false |
arceniavipworldguard.region.list |
VIP bölge listeleme komutu (liste). |
false |
arceniavipworldguard.region.info |
VIP bölge bilgi komutu (bilgi). |
false |
arceniavipworldguard.group.add |
VIP bölgeye grup ekleme. | false |
arceniavipworldguard.group.remove |
VIP bölgeden grup silme. | false |
arceniavipworldguard.group.list |
VIP bölge gruplarını listeleme. | false |
arceniavipworldguard.group.clear |
VIP bölge tüm gruplarını temizleme. | false |
arceniavipworldguard.bypass |
VIP bölge giriş kısıtlamalarını tamamen atlar. | false |
Not:
arceniavipworldguard.adminiznine sahip oyuncular otomatik olarak tüm alt izinlere sahip olur. Ayrıca OP oyuncular, kod düzeyinde giriş kontrolünde bypass yetkisine sahiptir.
Yapılandırma (config.yml)
Varsayılan config.yml dosyası:
messages:
no-entry: "&cBu alana girmek icin su gruplardan birine sahip olmalisin: &f{groups}"
vip-regions: []
Anahtar Açıklamaları
| Anahtar | Tür | Açıklama |
|---|---|---|
messages.no-entry |
String | Oyuncu VIP bölgeye giremediğinde gösterilecek mesaj. {groups} yer tutucusu, gerekli grup isimlerinin virgülle ayrılmış listesiyle değiştirilir. & ile Minecraft renk kodları desteklenir. |
vip-regions |
Liste | Tanımlı VIP bölgelerin listesi. Bu alan eklenti tarafından otomatik olarak yönetilir; komutlar üzerinden yapılan tüm değişiklikler buraya kaydedilir. Elle düzenleme gerekli değildir. |
vip-regions Yapısı (Komutlarla Otomatik Oluşturulur)
Komutlarla bölge ve grup eklendiğinde config.yml dosyası şu şekilde güncellenir:
vip-regions:
- world: "world"
region: "vip_zone"
groups:
- "vip"
- "mvp"
- world: "world_nether"
region: "nether_vip"
groups:
- "elite"
Her giriş şu alanları içerir:
| Alan | Açıklama |
|---|---|
world |
Bölgenin bulunduğu dünyanın adı. |
region |
WorldGuard bölgesinin kimliği (ID). |
groups |
Bu bölgeye giriş için gereken LuckPerms grup adlarının listesi. Oyuncunun listedeki gruplardan en az birine sahip olması yeterlidir. |
Nasıl Çalışır
1. Başlatma
Eklenti açıldığında şu adımları izler:
config.ymldosyasından kayıtlı VIP bölge tanımlarınıVipRegionRegistrysınıfına yükler.- WorldGuard eklentisinin varlığını doğrular; bulunamazsa eklentiyi devre dışı bırakır.
- LuckPerms servisini Bukkit
ServicesManagerüzerinden alır; bulunamazsa eklentiyi devre dışı bırakır. - WorldGuard'ın
SessionManagersistemine özelVipRegionEntryHandlerfabrikasını kaydeder. /vipbolgekomutunuVipBolgeCommandsınıfına bağlar (hem executor hem tab-completer olarak).
2. Giriş Kontrolü (VipRegionEntryHandler)
Bir oyuncu bir bölge sınırını her geçtiğinde (MOVE veya TELEPORT) şu kontrol zinciri çalışır:
- Girilen bölgelerin
VipRegionRegistryiçinde VIP bölge olarak tanımlı olup olmadığı kontrol edilir. - Tanımlı değilse giriş serbest bırakılır.
- Oyuncu OP ise veya
arceniavipworldguard.bypassiznine sahipse giriş serbest bırakılır. - Girilen tüm VIP bölgelerin gerektirdiği gruplar birleştirilir (birden fazla bölgeye aynı anda girilebilir).
- Oyuncunun LuckPerms birincil grubu ve miras alınan grupları (
getInheritedGroups) sorgulanır. - Oyuncunun gruplarından herhangi biri, gerekli gruplardan biriyle eşleşirse giriş izni verilir.
- Hiçbir eşleşme yoksa oyuncunun girişi engellenir ve
config.ymldosyasında tanımlımessages.no-entrymesajı gönderilir.
3. Bölge ve Grup Yönetimi (VipBolgeCommand)
/vipbolge komutuyla yöneticiler:
- Bir WorldGuard bölgesini seçebilir (
ekle/sec). - Seçili veya doğrudan belirtilen bölgeye LuckPerms grupları ekleyip çıkarabilir.
- Tanımlı VIP bölgeleri ve gruplarını listeleyebilir.
- Tüm değişiklikler anında bellekteki
VipRegionRegistrykayıt defterine veconfig.ymldosyasına yansıtılır.
4. Seçim Sistemi
Yöneticiler /vipbolge ekle <region> ile bir bölge seçtikten sonra, sadece /vipbolge grup ekle <grup> yazarak bölge adını tekrarlamadan işlem yapabilir. Seçimler oyuncu UUID'sine (veya konsol adına) göre bellekte tutulur ve sunucu oturumu boyunca geçerlidir.
5. Kapatma
Eklenti devre dışı bırakıldığında, kayıtlı VipRegionEntryHandler.Factory WorldGuard'ın SessionManager sisteminden temiz bir şekilde kaldırılır.
Kullanım Örneği
# 1. Bir WorldGuard bölgesini VIP bölge olarak seçin
/vipbolge ekle spawn_vip
# 2. Seçili bölgeye LuckPerms grupları ekleyin
/vipbolge grup ekle vip
/vipbolge grup ekle mvp
# 3. Bölge bilgisini kontrol edin
/vipbolge bilgi
# 4. Tüm VIP bölgeleri listeleyin
/vipbolge liste
# 5. Bir grubu bölgeden kaldırın
/vipbolge grup sil mvp
# 6. Farklı bir dünyada doğrudan bölge ve grup tanımlayın
/vipbolge grup ekle nether_zone elite world_nether