ArInventoryRollback

Versiyon: 1.0.0-SNAPSHOT Platform: Paper 1.21.4+ Java: 21

schedule
01

Kısa Açıklama

ArInventoryRollback, Minecraft sunucuları için geliştirilmiş profesyonel bir envanter yedekleme ve geri yükleme pluginidir. Oyuncuların envanterlerini otomatik veya manuel olarak yedekler, artımlı (incremental) yedekleme ile disk alanından tasarruf sağlar ve zengin bir GUI arayüzü üzerinden tüm işlemleri kolayca yönetmenize olanak tanır. Ölüm, giriş, çıkış, dünya değişikliği, oyun modu değişikliği, ender sandık etkileşimi ve sandık açma/kapama gibi çok sayıda tetikleyici destekler. SQLite, MySQL ve YAML olmak üzere üç farklı depolama yöntemiyle çalışır.


02

Özellikler

Yedekleme

  • Otomatik yedekleme -- Ölüm, giriş, çıkış, dünya değişikliği, oyun modu değişikliği, ender sandık etkileşimi, sandık açma/kapama ve zamanlayıcı tetikleyicileriyle otomatik yedek oluşturma
  • Manuel yedekleme -- /iade save veya /backup komutuyla anlık yedek alma, opsiyonel etiketleme desteği
  • Toplu yedekleme -- /iade saveall ile sunucudaki tüm çevrimiçi oyuncuların envanterini tek seferde yedekleme
  • Artımlı (incremental) yedekleme -- Sadece değişen slotları kaydederek disk ve veritabanı tasarrufu sağlama
  • Değişiklik algılama -- Envanterde hiçbir değişiklik yoksa yedek almayı atlama (skip-unchanged)
  • Bekleme süresi (cooldown) -- Otomatik tetikleyiciler arasında yapılandırılabilir bekleme süresi

Geri Yükleme

  • Tam geri yükleme -- Envanter, zırh, yan el, ender sandık, XP, sağlık, açlık, tokluk ve iksir etkileri dahil tüm verileri geri yükleme
  • Kısmi geri yükleme -- Sadece zırh, hotbar, ana envanter, ender sandık, XP veya seçili slotlar gibi belirli kapsamlarda geri yükleme
  • Shulker kutusuna geri yükleme -- Yedekteki eşyaları oyuncunun elindeki shulker kutusuna aktarma
  • Geri alma (undo) -- Geri yükleme işlemini geri alabilme, yapılandırılabilir zincir uzunluğu
  • Toplu geri yükleme -- Belirli bir zaman damgasına göre birden fazla oyuncunun envanterini aynı anda geri yükleme
  • Çevrimdışı oyuncu desteği -- Çevrimdışı oyuncular için geri yükleme kaydı tutma, giriş yaptığında otomatik uygulama

Güvenlik

  • SHA-256 bütünlük kontrolü -- Her yedeğe hash atanarak veri bozulması algılama
  • Karantina sistemi -- Bozuk veya şüpheli yedekleri karantinaya alma, inceleme ve kalıcı silme
  • Denetim kaydı (audit log) -- Tüm işlemlerin kayıt altına alınması, veritabanına opsiyonel loglama
  • Yedek kilitleme -- Önemli yedekleri kilitleyerek yanlışlıkla silinmesini önleme

GUI Arayüzü

  • Ana menü -- Tüm işlemlere erişim sağlayan merkezi arayüz
  • Yedek kategorileri -- Tetikleyici tipine göre yedekleri filtreleme ve görüntüleme
  • Zaman çizelgesi (timeline) -- Yedekleri kronolojik sırayla görüntüleme
  • Isı haritası -- Envanter slotlarının değişim sıklığını görsel olarak gösterme
  • Karşılaştırma -- İki yedeği yan yana karşılaştırma, farkları vurgulama
  • Önizleme -- Geri yükleme öncesi sonucu önizleme
  • Arama ve filtreleme -- Eşya adına, tetikleyici tipine, tarihe ve etikete göre arama
  • Şablon yönetimi -- Envanter şablonları oluşturma, kaydetme ve uygulama
  • Dışa/İçe aktarma -- JSON ve YAML formatlarında yedek aktarma
  • Admin paneli -- Genel bakış, istatistik raporu, işlem geçmişi, karantina yönetimi, toplu restore, zamanlayıcı ayarları ve oyuncu seçici

Entegrasyonlar

  • Discord webhook -- Geri yükleme, silme, bozulma tespiti ve toplu geri yükleme olaylarını Discord kanalına bildirim olarak gönderme
  • Geliştirici API -- Dış pluginlerin yedekleme, geri yükleme, sorgulama ve karşılaştırma işlemlerini yapabilmesi için rate limit korumalı API
  • Bukkit Event sistemi -- BackupCreateEvent, BackupDeleteEvent, BackupRestoreEvent, BulkRestoreStartEvent, BulkRestoreCompleteEvent özel eventleri

Depolama

  • SQLite -- Varsayılan, tek dosya tabanlı hafif veritabanı
  • MySQL -- HikariCP bağlantı havuzu ile yüksek performanslı uzak veritabanı desteği
  • YAML -- Dosya tabanlı yedekleme (küçük sunucular için)
  • Veri taşıma -- Depolama türleri arasında toplu veri aktarımı

Diğer

  • Zamanlayıcı -- interval: 1h, daily: 00:00, weekly: monday 12:00 formatlarında otomatik periyodik yedekleme
  • Otomatik temizlik -- Belirli gün sayısından eski yedekleri otomatik silme
  • Etiketleme -- Yedeklere özel etiket/not ekleme
  • Çoklu dil desteği -- Tüm mesajlar messages.yml dosyasından özelleştirilebilir, HEX renk kodu desteği (&#RRGGBB)
  • Debug modu -- Detaylı log çıktısı ile sorun giderme

03

Gereksinimler

Gereksinim Minimum Versiyon
Java 21
Paper 1.21.4+
MySQL (opsiyonel) 5.7+ / MariaDB 10.2+

Not: Bu plugin Paper API'ye bağımlıdır. Spigot veya CraftBukkit üzerinde çalışmaz.


04

Kurulum

  1. Projeyi derleyin veya hazır .jar dosyasını edinin (bkz. Derleme bölümü).
  2. Oluşan ArInventoryRollback-1.0.0-SNAPSHOT.jar dosyasını sunucunuzun plugins/ klasörüne kopyalayın.
  3. Sunucuyu başlatın veya yeniden başlatın.
  4. plugins/ArInventoryRollback/config.yml dosyası otomatik olarak oluşturulacaktır.
  5. Yapılandırma dosyasını ihtiyaçlarınıza göre düzenleyin ve /iade reload komutuyla yeniden yükleyin.

05

Komutlar

Ana Komut: /iade

Komut Takma Ad Açıklama Yetki
/iade /envanter, /inv GUI ana menüsünü açar iade.use
/iade help yardim Yardım mesajını gösterir iade.use
/iade info bilgi Sistem istatistiklerini gösterir iade.use
/iade save [oyuncu] [etiket] kaydet Manuel yedek oluşturur iade.backup
/iade saveall [etiket] tumunukaydet Tüm çevrimiçi oyuncuları yedekler iade.admin.bulkrestore
/iade restore <oyuncu> yukle Oyuncunun son yedeğini geri yükler iade.restore.full
/iade undo [oyuncu] geral Son geri yüklemeyi geri alır iade.restore.full
/iade list [oyuncu] [sayfa] liste Yedekleri listeler iade.view
/iade clear <oyuncu> [onay] temizle Oyuncunun tüm yedeklerini siler iade.admin.others
/iade clearall [onay] tumunusil Tüm yedekleri siler iade.admin.migrate
/iade purge <gün> temizlik Belirtilen günden eski yedekleri siler iade.admin.others
/iade admin - Admin panelini açar (GUI) iade.admin.dashboard
/iade reload yenile Yapılandırmayı yeniden yükler iade.admin.reload
/iade <oyuncu> - Oyuncunun yedeklerini GUI'de açar iade.admin.others

Hızlı Yedekleme: /backup

Komut Açıklama Yetki
/backup [etiket] Hızlı manuel envanter yedeği alır iade.backup

06

İzinler

Genel İzinler

İzin Açıklama Varsayılan
iade.* Tüm iade yetkileri OP
iade.use /iade komutunu kullanma Herkes
iade.view Yedekleri görüntüleme Herkes
iade.compare Yedekleri karşılaştırma Herkes
iade.backup /backup ve /iade save komutlarını kullanma Herkes
iade.restore.partial Kısmi geri yükleme OP
iade.restore.full Tam geri yükleme OP
iade.export Yedek dışa aktarma OP
iade.import Yedek içe aktarma OP
iade.delete Yedek silme OP
iade.teleport Ölüm noktasına ışınlanma OP
iade.audit İşlem kayıtlarını görme OP

Admin İzinleri

İzin Açıklama Varsayılan
iade.admin.* Tüm admin yetkileri OP
iade.admin.dashboard Admin paneli erişimi OP
iade.admin.bulkrestore Toplu restore ve saveall yapma OP
iade.admin.others Başka oyuncuların yedeklerine erişim, clear, purge OP
iade.admin.quarantine Karantina yönetimi OP
iade.admin.lock Yedek kilitleme OP
iade.admin.scheduler Zamanlayıcı yönetimi OP
iade.admin.migrate Veri taşıma ve clearall OP
iade.admin.reload Config yeniden yükleme OP

07

Yapılandırma

Plugin ilk çalıştırıldığında plugins/ArInventoryRollback/config.yml dosyası oluşturulur. Yeni sürümlerde eklenen eksik ayarlar otomatik olarak varsayılan değerleriyle eklenir.

config.yml Açıklaması

# Debug modu - detaylı log mesajlarını konsola yazdırır.
debug: false

# Depolama ayarları
storage:
  # Depolama tipi: sqlite, mysql, yaml
  type: sqlite
  sqlite:
    file: data.db            # SQLite veritabanı dosya adı
  mysql:
    host: localhost           # MySQL sunucu adresi
    port: 3306                # MySQL portu
    database: arinventory     # Veritabanı adı
    username: root            # Kullanıcı adı
    password: ""              # Şifre
    pool-size: 10             # HikariCP bağlantı havuzu boyutu
  yaml:
    directory: backups        # YAML yedek klasörü

# Yedekleme ayarları
backup:
  triggers:
    death: true               # Ölüm anında yedek al
    login: true                # Giriş yapınca yedek al
    logout: true               # Çıkış yapınca yedek al
    world-change: true         # Dünya değişiminde yedek al
    gamemode-change: true      # Oyun modu değişiminde yedek al
    timer: true                # Zamanlayıcı ile periyodik yedek al
    ender-chest: true          # Ender sandık etkileşiminde yedek al
    chest-open: false          # Sandık açmada yedek al
    chest-close: false         # Sandık kapamada yedek al
  incremental: true            # Artımlı yedekleme (sadece değişen slotlar)
  skip-unchanged: true         # Değişiklik yoksa yedek almayı atla
  cooldown-seconds: 5          # Tetikleyiciler arası bekleme süresi (sn)

# Zamanlayıcı ayarları
scheduler:
  enabled: true
  # Desteklenen formatlar:
  # "interval: 1h"            - Her 1 saatte bir
  # "daily: 00:00"            - Her gün gece yarısı
  # "weekly: monday 12:00"    - Her Pazartesi öğle
  expression: "interval: 1h"

# Otomatik temizlik
auto-purge:
  enabled: true
  days: 30                     # Kaç günden eski yedekler silinsin

# Geri yükleme ayarları
restore:
  undo-max-chain: 5            # Maksimum geri alma zinciri uzunluğu
  allow-extra-shulkers: true   # Shulker kutusuna geri yükleme izni
  offline-restore: true        # Çevrimdışı oyunculara geri yükleme

# Güvenlik ayarları
security:
  log-to-database: false       # Denetim kayıtlarını veritabanına da yaz
  hash-algorithm: SHA-256      # Bütünlük kontrol algoritması

# Discord webhook ayarları
discord:
  enabled: false
  webhook-url: ""
  events:
    restore: true              # Geri yükleme bildirimi
    delete: true               # Silme bildirimi
    corruption: true           # Bozulma tespiti bildirimi
    bulk-restore: true         # Toplu geri yükleme bildirimi

# GUI ayarları
gui:
  items-per-page: 28           # Sayfa başına gösterilecek yedek sayısı
  animation-enabled: true      # GUI animasyonları (diff yanıp sönme vb.)

# Geliştirici API ayarları
api:
  rate-limit-per-minute: 10    # Dakika başına maks API çağrısı (oyuncu başına)

# Veri taşıma ayarları
migration:
  batch-size: 1000             # Toplu veri taşıma parti boyutu

messages.yml

Tüm plugin mesajları plugins/ArInventoryRollback/messages.yml dosyasından özelleştirilebilir. HEX renk kodları (&#RRGGBB) ve eski Minecraft renk kodları (&a, &c vb.) desteklenir. Placeholder'lar {değişken_adı} formatında kullanılır.


08

Nasıl Çalışır

Yedekleme Akışı

  1. Bir tetikleyici olayı gerçekleşir (ölüm, giriş, çıkış, zamanlayıcı vb.) veya oyuncu manuel yedek alır.
  2. Cooldown kontrolü yapılır -- aynı oyuncu için son yedekten bu yana yeterli süre geçip geçmediği kontrol edilir.
  3. IncrementalEngine, oyuncunun mevcut envanterini yakalar (ana envanter 36 slot, zırh 4 slot, yan el, ender sandık 27 slot, XP, sağlık, açlık, tokluk, iksir etkileri).
  4. Artımlı yedekleme aktifse, önceki yedekle karşılaştırılır ve sadece değişen slotlar kaydedilir. Değişmeyen slotlar null olarak işaretlenir.
  5. skip-unchanged aktifse ve hiçbir slot değişmemişse yedek oluşturma atlanır.
  6. SHA-256 hash hesaplanarak veri bütünlüğü sağlanır.
  7. Yedek, seçilen depolama sağlayıcısına (SQLite/MySQL/YAML) kaydedilir.
  8. Slot değişim sayaçları güncellenir (ısı haritası için).

Geri Yükleme Akışı

  1. Yedek ID'si ile depolama sağlayıcısından yedek verisi alınır.
  2. Artımlı zincir çözümlenir -- null olan slotlar önceki yedeklerden geriye doğru izlenerek doldurulur.
  3. Geri alma (undo) için oyuncunun mevcut envanterinin anlık görüntüsü kaydedilir.
  4. Seçilen kapsama (RestoreScope) göre veriler ana thread üzerinde oyuncuya uygulanır.
  5. Kapsam seçenekleri: tam, sadece zırh, sadece hotbar, ana envanter, ender sandık, sadece XP, zırh+hotbar, envanter+zırh, seçili slotlar.

Artımlı Yedekleme

Artımlı yedekleme, her yedekte sadece önceki yedeğe göre değişen slotları kaydeder. Bu, depolama alanını önemli ölçüde azaltır. Her yedek, önceki yedeğin ID'sini (previousBackupId) referans olarak tutar. Geri yükleme sırasında, zincir geriye doğru takip edilerek tüm slotlar birleştirilerek tam veri elde edilir.

Güvenlik Mekanizmaları

  • Bütünlük kontrolü: Her yedek kaydedilirken SHA-256 hash hesaplanır. Geri yükleme veya tarama sırasında hash doğrulanarak veri bozulması tespit edilir.
  • Karantina: Bütünlük kontrolünden geçemeyen yedekler otomatik olarak karantinaya alınır ve normal işlemlerden izole edilir.
  • Denetim kaydı: Tüm önemli işlemler (geri yükleme, silme, kilitleme vb.) kayıt altına alınır.
  • Yedek kilitleme: Kilitli yedekler silinemez ve otomatik temizlik tarafından atlanır.

auto_awesome Benzer Projeler