ArMines
Paper 1.21+ için gelişmiş maden sıfırlama (mine reset) plugini. Prison sunucularda kullanılmak üzere tasarlandı. Geliştirici: ArceniaDev API: Paper 1.21.4
Temel Özellikler
Mine Oluşturma & Yönetim
- Wand (Golden Pickaxe) ile pos1/pos2 seçimi → mine oluşturma
- GUI tabanlı tam editör (54-slot, siyah cam kenar, gri cam dolgu)
- Mine listesi, rename, display name, silme, açma/kapama
- Config reload sıcak yenileme
- Otomatik Config Güncelleyici: Plugin güncellendiğinde yeni eklenen config/messages key'leri otomatik eklenir, mevcut kullanıcı ayarlarına dokunulmaz
Sıfırlama (Reset) Sistemi
- Süre bazlı: Her X saniyede otomatik reset
- Yüzde bazlı: %X kazıldığında otomatik reset
- Minimum oyuncu: Sunucuda yetersiz oyuncu varsa reset ertelenir
- Async chunk-bazlı: Bloklar async hesaplanır, chunk chunk sync yerleştirilir
- Oyuncu güvenliği: Reset öncesi mine içindeki oyuncular spawn'a ışınlanır
Mine Şekilleri
- CUBOID: Standart dikdörtgen prizma (varsayılan)
- CYLINDER: XZ düzleminde daire, Y ekseninde tam yükseklik
- SPHERE: 3D küre
Wand ile seçilen bounding box (pos1/pos2) içinden şekle göre blok filtresi yapılır. MineShape.isInShape() hem reset hem region kontrolünde kullanılır.
Oyuncu Efektleri
- Mine bazlı potion efektleri (Haste, Speed, Night Vision vb.)
- Efekt listesi boşsa → hiçbir efekt uygulanmaz (varsayılan)
- Mine içindeyken her saniye yenilenir, çıkınca biter
- GUI'den ekleme/silme/seviye değiştirme
- YAML'da
effects: ["HASTE:1", "SPEED:0"]formatında saklanır
Lucky Block Sistemi
- Blok kırıldığında konfigüre edilebilir şansla komutlar çalıştırılır ve/veya eşyalar oyuncuya verilir
chance: 0veyacommands + items her ikisi boş→ tamamen devre dışı (varsayılan)- Komut desteği: Placeholder olarak
{player},{mine},{block}kullanılır - Eşya desteği: GUI'de "Eşya Ekle" butonuna tıklayarak ana eldeki eşya Lucky Block havuzuna eklenir. Enchant, lore, miktar vb. korunur
- Eşyalar önce oyuncunun envanterine verilir; envanter doluysa yere düşürülür
- GUI'den şans ayarlama, komut ekleme/silme, eşya ekleme/silme ve tümünü temizleme
- YAML formatı:
lucky-block:
chance: 0.5
commands:
- "give {player} diamond 1"
- "say {player} şanslı blok buldu!"
items:
- ==: org.bukkit.inventory.ItemStack
v: 3700
type: DIAMOND_SWORD
meta:
display-name: '&bLucky Kılıç'
Maden Gruplama Sistemi
- Birden fazla madeni tek bir grup altında toplama
- Toplu placeholder:
%armines_group_<tip>_<grup>%ile grubun toplam/kalan bloklarını, yüzdesini ve süresini gösterir - Süre eşleştirmesi: Bir gruba sadece aynı sıfırlama süresine sahip madenler eklenebilir
- Komut (
/armines group) veya GUI ile yönetim - Her grup ayrı bir
.ymldosyasında saklanır
GUI Tabanlı Arama / Filtreleme
- Mine listesinde ve gruba maden ekleme menüsünde "Arama Yap" butonu
- Chat'e yazılan anahtar kelime ile mine ID veya Display Name'de aranır (büyük/küçük harf duyarsız)
- Filtreyi temizlemek için arama butonuna tekrar tıklanır
Bildirim Sistemleri
- ActionBar: Mine içindeki oyunculara kalan süre gösterimi
- BossBar: Mine içindeki oyunculara progress bar (süre bazlı)
- Hologram: FancyHolograms ile mine üzerinde bilgi paneli
- Chat: Reset broadcast mesajı (boş bırakılırsa gönderilmez)
Komutlar
| Komut | Yetki | Açıklama |
|---|---|---|
/armines wand |
armines.admin | Seçim değneğini al |
/armines create <isim> |
armines.admin | Seçili alandan mine oluştur |
/armines delete <isim> |
armines.admin | Mine sil |
/armines edit <isim> |
armines.edit | GUI editörünü aç |
/armines reset <isim> |
armines.admin | Zorla resetle |
/armines shape <isim> <şekil> |
armines.admin | Şekil değiştir (CUBOID/CYLINDER/SPHERE) |
/armines rename <eski> <yeni> |
armines.admin | İsim değiştir |
/armines displayname <isim> <ad> |
armines.admin | Görünen adı değiştir |
/armines hologram <isim> |
armines.admin | Hologram konumunu ayarla |
/armines setspawn <isim> |
armines.admin | Spawn noktasını ayarla |
/armines info <isim> |
armines.view | Mine bilgisini göster |
/armines list |
armines.view | Mine listesi (GUI) |
/armines gui |
armines.admin | Yönetim paneli |
/armines tp <isim> |
armines.tp | Madene ışınlan |
/armines reload |
armines.admin | Config yenile |
/armines bulk |
armines.admin | Toplu İşlem (Bulk) GUI'si |
/armines group |
armines.admin | Grup yönetim GUI'si |
/armines group create <isim> |
armines.admin | Yeni grup oluştur |
/armines group delete <isim> |
armines.admin | Grubu sil |
/armines group add <grup> <maden> |
armines.admin | Gruba maden ekle |
/armines group remove <grup> <maden> |
armines.admin | Gruptan maden çıkar |
/armines group list |
armines.admin | Tüm grupları listele |
/armines group info <isim> |
armines.admin | Grup detayını göster |
GUI Sistemi
Tüm GUI'ler 54-slot. Siyah cam kenar (border), gri cam dolgu (filler) ile tutarlı dizayn.
| GUI | Açıldığı yer | İçerik |
|---|---|---|
| Mine Listesi | /armines gui veya /armines list |
Tüm madenler, sayfalama, arama, tıkla düzenle |
| Mine Editörü | Listeden tıkla veya /armines edit |
Süre, yüzde, şekil, isim, hologram, spawn, efektler, lucky block, durum, test reset |
| Blok Editörü | Editörden "Blok Editörü" | Blok listesi, yüzde düzenle, sil, alt envanterden yeni ekle |
| Efekt Editörü | Editörden "Oyuncu Efektleri" | Efekt listesi, seviye değiştir, sil, chat'ten yeni ekle |
| Lucky Block Editörü | Editörden "Lucky Block" | Şans ayarla, komut ekle/sil, eşya ekle/sil, tümünü temizle |
| Grup Listesi | /armines group |
Tüm gruplar, oluşturma, silme, düzenleme |
| Grup Editörü | Grup listesinden tıkla | Üye listesi, maden çıkarma, maden ekleme ekranına geçiş |
| Gruba Maden Ekle | Grup editöründen "Maden Ekle" | Uyumlu madenler yeşil, uyumsuz kırmızı cam; arama; çoklu seçim |
| Toplu İşlem (Seçim) | /armines bulk |
Tüm madenleri listeleme, çoklu seçim (yeşil cam), arama, tümünü seç/temizle |
| Toplu İşlem (Menü) | Seçim ekranından "İşlem Seç" | Şans, Süre, Yüzde, Şekil, Efekt, Durum, Reset ve Lucky Block işlemlerini seçili madenlere toplu uygulama |
Chat input sistemi: Bazı değerler (süre, yüzde, efekt ismi, komut, grup ismi, arama) GUI kapatılıp chat'ten alınır. iptal veya cancel yazarak iptal edilir. ChatColor eklentisinin renk kodları otomatik temizlenir.
PlaceholderAPI
Mine Placeholderları
Format: %armines_<tip>_<mine_ismi>%
| Placeholder | Çıktı |
|---|---|
%armines_time_<mine>% |
Kalan süre (MM:SS) |
%armines_percent_<mine>% |
Kalan blok yüzdesi |
%armines_remaining_<mine>% |
Kalan blok sayısı |
%armines_total_<mine>% |
Toplam blok sayısı |
%armines_status_<mine>% |
Aktif / Devre Dışı |
%armines_displayname_<mine>% |
Görünen ad |
%armines_resettime_<mine>% |
Reset süresi (MM:SS) |
%armines_active_<mine>% |
true / false |
%armines_shape_<mine>% |
Küp / Silindir / Küre |
Grup Placeholderları
Format: %armines_group_<tip>_<grup_ismi>%
| Placeholder | Çıktı |
|---|---|
%armines_group_total_<grup>% |
Grubun toplam blok sayısı |
%armines_group_remaining_<grup>% |
Kalan blok sayısı (toplam) |
%armines_group_percent_<grup>% |
Kalan blok yüzdesi (toplam) |
%armines_group_resettime_<grup>% |
Sıfırlama süresi (MM:SS) |
Hologram Placeholder'ları
messages.yml → hologram-lines içinde kullanılır:
| Placeholder | Açıklama |
|---|---|
{display_name} |
Görünen ad |
{name} |
Mine ID |
{status} |
Active / Disabled |
{time} |
Kalan süre (MM:SS) |
{percent} |
Kalan blok % |
{current} |
Kalan blok sayısı |
{total} |
Toplam blok sayısı |
Renk Kodları
&a,&c,&lvb. standart Minecraft renk kodları&#RRGGBBhex renk desteği (örn:&#FF5733)- MessageUtils.java'da
color()ile ChatColor'a,parse()ile Adventure Component'e çevrilir
Mine YAML Örnek
Dosya: plugins/ARMines/mines/vipmine.yml
name: vipmine
display-name: "&a&lVIP Mine"
shape: CYLINDER
pos1: {==: org.bukkit.Location, world: world, x: 100.0, y: 60.0, z: 100.0}
pos2: {==: org.bukkit.Location, world: world, x: 120.0, y: 50.0, z: 120.0}
hologram-location: {==: org.bukkit.Location, world: world, x: 110.0, y: 65.0, z: 110.0}
spawn-location: null
reset-time: 300
reset-percentage: 40
min-players-online: 0
active: true
blocks:
- "STONE:60.0"
- "COAL_ORE:20.0"
- "IRON_ORE:15.0"
- "DIAMOND_ORE:5.0"
effects:
- "HASTE:1"
- "SPEED:0"
lucky-block:
chance: 0.5
commands:
- "give {player} diamond 1"
- "say {player} şanslı blok buldu!"
items:
- ==: org.bukkit.inventory.ItemStack
v: 3700
type: DIAMOND_SWORD
Akış Diyagramı
Sunucu başlar → ARMines.onEnable()
→ Config yüklenir (ConfigUpdater ile eksik key'ler senkronize edilir)
→ MessageManager başlar (messages.yml)
→ WandManager, MineStorage, MineManager, HologramManager, GuiManager, BossBarManager başlar
→ MineGroupManager başlar (groups/ dizininden)
→ Listener'lar kayıt edilir
→ MineManager.loadAll() → YAML dosyalarından mine'lar yüklenir
→ PlaceholderAPI hook (varsa)
→ Timer task başlar (her 20 tick = 1 saniye):
→ Her mine için reset kontrolü (süre + yüzde + min oyuncu)
→ Her oyuncu için mine içi kontrol → ActionBar + Efekt uygulama
Blok kırılır → MineListener.onBlockBreak()
→ remainingBlocks--
→ Lucky Block şans kontrolü → komut çalıştırma + eşya verme
Reset tetiklenir → MineManager.resetMine()
→ Oyuncular ışınlanır (safety)
→ Async: bloklar hesaplanır (şekle göre filtre + ağırlıklı random)
→ Sync: chunk chunk bloklar yerleştirilir
→ Post: lastResetTime güncellenir, broadcast