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

schedule
01

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: 0 veya commands + 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 .yml dosyası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)

02

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

03

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.


04

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)

05

Hologram Placeholder'ları

messages.ymlhologram-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ı

06

Renk Kodları

  • &a, &c, &l vb. standart Minecraft renk kodları
  • &#RRGGBB hex renk desteği (örn: &#FF5733)
  • MessageUtils.java'da color() ile ChatColor'a, parse() ile Adventure Component'e çevrilir

07

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

08

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

auto_awesome Benzer Projeler