Welcome to the Hangar Open Beta. Please report any issue you encounter on GitHub!
Avatar for Kriscra

Paper ve Folia için modern servis köprüsü, Pub/Sub mesajlaşması ve ekosistem motoru.

Report Relay?

⚡ Relay

Relay Logo

Endüstri Standardı Reaktif Servis Kaydı, Eklentiler Arası İletişim (Pub/Sub) ve Ekosistem Çatısı
Modern Paper, Purpur ve Çok Çekirdekli Folia Sunucuları İçin Yeni Nesil Altyapı Motoru.

Version Paper Java 21 JitPack License


🌟 Relay Nedir?

Relay, modern Minecraft sunucularında (Paper, Purpur ve özellikle çok iş parçacıklı Folia) eklentiler arası entegrasyonu ve sunucu servislerini endüstri standartlarına taşıyan açık kaynaklı bir altyapı motorudur.

Eski Bukkit mimarisindeki senkron ve ana iş parçacığını (Main Thread) donduran çağrılar yerine; %100 Non-Blocking asenkron mimari, mikroservis tipi Pub/Sub mesajlaşması, Folia bölgesel iş parçacığı güvenliği (Region-Safe) ve otomatik bellek temizliği (Zero-Leak) sunar.


🚀 Dahili Servisler (Features at a Glance)

Relay, bir sunucunun ve eklentilerin ihtiyaç duyduğu 8 temel alt sistemi tek bir çatı altında eksiksiz sunar:

Modül / Servis Açıklama Öne Çıkan Özellikler
ServiceRegistry Reaktif servis keşfi ve kayıt defteri HIGHEST ➔ FALLBACK öncelik basamakları, yüklenme sırasından bağımsız onServiceReady Promise mimarisi.
RelayMessenger Bağımsız Pub/Sub ve RPC iletişim veri yolu Eklentiler birbirinin .jar dosyasına bağımlı olmadan kanallara abone olabilir veya asenkron istek-cevap (request) yapabilir.
EconomyService Çoklu para birimi ve finans motoru IEEE 754 kayan noktalı sayı hatalarını önleyen BigDecimal aritmetiği, sınırsız para birimi, atomik transferler.
CooldownService Evrensel bekleme süresi yöneticisi Yetenek, büyü ve komutlar için thread-safe bekleme süreleri, ActionBar dolum yüzdesi (getProgress()), otomatik TTL tahliyesi.
SharedDataService Tip güvenli paylaşımlı veri havuzu DataKey<T> ile veri doğrulama, süreli geçici veriler (setTemporary), reaktif canlı gözlemciler (observe).
PermissionService Asenkron yetki ve rütbe kontrolü TPS düşüşlerini engelleyen asenkron yetki sorgulama, LuckPerms/Vault uyumluluğu, ön ek ve rütbe ağırlığı.
PartyService Takım ve dost ateşi yöneticisi Combat anında thread dondurmayan sıfır-bellek tahsisli isFriendlySync kontrolleri, zindan grupları.
MetricsService Performans telemetrisi & lag alarmı Nanosaniye hassasiyetinde süre ölçümü, P50/P95/P99 yüzdelikleri, TPS düşüşlerinde otomatik LagSpikeEvent alarmı.
HologramService Display Entity tabanlı hologram motoru Minecraft 1.20+ TextDisplay native mimarisi, sıfır ArmorStand lag, Folia region-safe spawnAsync, MiniMessage ve gölge.
MenuService Folia güvenli sanal sandık GUI motoru Üst envanter tıklamalarını ve sürüklemelerini kilitleyen anti-dupe koruması, 150ms anti-macro debounce, sayfalama (pagination).

🛡️ Folia Multi-Threading & Zero-Leak Mimarisi

Relay, çok çekirdekli Minecraft sunucu yazılımı Folia için sıfırdan tasarlanmıştır:

  • Region-Safe Scheduling: Hologram ve menü işlemleri, hedef koordinatın veya oyuncunun ait olduğu bağımsız iş parçacığına otomatik iletilir.
  • Lock-Free Veri Yapıları: Tüm dahili önbellekler ConcurrentHashMap, CopyOnWrite ve atomik sayaçlar ile donatılmıştır; kilitlenme (deadlock) yaşanmaz.
  • Zero-Leak Yaşam Döngüsü: Bir eklenti kapandığında veya sunucu yeniden yüklendiğinde, o eklentiye ait tüm dinleyiciler, hologramlar, menüler ve bekleme süreleri sunucudan otomatik tahliye edilir (setPersistent(false)).

📦 Geliştiriciler İçin Projeye Ekleme (Dependency)

Eklenti geliştiricileri yalnızca 40 KB'lık hafif, harici kütüphane içermeyen relay-api modülünü çeker:

Gradle (Kotlin DSL)

repositories {
    mavenCentral()
    maven("https://jitpack.io")
}

dependencies {
    compileOnly("com.github.Kriscra.Relay:relay-api:v1.3.0")
}

Maven (pom.xml)

<repositories>
    <repository>
        <id>jitpack.io</id>
        <url>https://jitpack.io</url>
    </repository>
</repositories>

<dependencies>
    <dependency>
        <groupId>com.github.Kriscra.Relay</groupId>
        <artifactId>relay-api</artifactId>
        <version>v1.3.0</version>
        <scope>provided</scope>
    </dependency>
</dependencies>

🛠️ Hızlı Kod Örnekleri

1. Reaktif Servis Keşfi (onServiceReady)

Yüklenme sırasını dert etmeyin. İlgili eklenti sizden sonra yüklense bile servis kaydedildiği anda geri çağrılır:

RelayAPI.getServiceRegistry().onServiceReady(EconomyService.class, economy -> {
    getLogger().info("Ekonomi sistemi bağlandı! Para birimi: " + economy.getDefaultCurrency().displayName());
});

2. Eklentiler Arası Mesajlaşma (Pub/Sub)

Kendi aralarında doğrudan .jar bağımlılığı olmadan eklentilerin haberleşmesini sağlayın:

// Yayıncı Eklenti:
RelayAPI.getMessenger().publish("clan:levelup", new ClanLevelPayload("Akıncılar", 10), this);

// Dinleyici Eklenti:
RelayAPI.getMessenger().subscribe("clan:levelup", ClanLevelPayload.class, this, ctx -> {
    getLogger().info(ctx.getPayload().clanName() + " seviye atladı!");
});

3. TextDisplay Hologram Oluşturma (Folia Region-Safe)

Hologram hologram = RelayAPI.getHolograms().createBuilder(plugin, location)
        .appendLine("<gradient:#4facfe:#00f2fe><bold>✦ RELAY NETWORK ✦</bold></gradient>")
        .appendLine("<gray>Folia & Paper Uyumlu</gray>")
        .setBillboard(Billboard.CENTER)
        .setTextShadow(true)
        .build();

hologram.spawnAsync();

4. Folia Uyumlu Sandık Menüsü (Anti-Dupe & Debounce)

Menu menu = RelayAPI.getMenus().createBuilder(plugin)
        .titleMiniMessage("<green>Işınlanma Menüsü</green>")
        .pattern(
            "#########",
            "#   W   #",
            "#########"
        )
        .bindKey('#', MenuButton.of(new ItemStack(Material.BLACK_STAINED_GLASS_PANE)))
        .bindKey('W', MenuButton.builder()
                .item(new ItemStack(Material.COMPASS))
                .sound(Sound.ENTITY_ENDERMAN_TELEPORT)
                .debounce(250L) // 250ms makro koruması
                .onClick(ctx -> ctx.getPlayer().teleport(spawnLocation))
                .build())
        .build();

menu.open(player);

⚙️ Yönetici Komutları

Sunucudaki aktif servisleri, telemetriyi ve oturumları anlık izleyin:

Komut Açıklama
/relay status Aktif servis, konu, hologram, menü ve çalışma ortamı bilgilerini gösterir.
/relay services Sunucuda kayıtlı tüm servisleri ve öncelik derecelerini listeler.
/relay topics Aktif Pub/Sub iletişim kanallarını ve dinleyici sayılarını listeler.
/relay metrics Ortalama işlem sürelerini, P95 gecikmelerini ve sayaçları gösterir.
/relay metrics reset Tüm telemetri ve performans sayaçlarını sıfırlar.
/relay holograms Aktif TextDisplay hologramlarını ve konumlarını listeler.
/relay menus Aktif sanal menü oturumlarını ve görüntüleyen oyuncu sayılarını listeler.

Yetki: relay.admin (Varsayılan: OP)


🔗 Bağlantılar & Kaynaklar

Information

Category
Developer Tools
Published
September 27, 2026
License
MIT
0Downloads
0Stars
Supports Folia

Pinned Versions

Members

1