Files
Barış Keser 080c22913b feat: Folia destegi (BUYUK GUNCELLEME v1.4.0) + Folia CI testleri
Folia (bolgesel-thread) sunucu destegi eklendi. Folia'da BukkitRunnable ve
Bukkit.getScheduler() calismaz; tum zamanlanmis gorevler yeni Sched uyumluluk
katmanina tasindi (reflection tabanli, 1.8.8'den Folia'ya kadar tek JAR).

Sched.java — Folia/Bukkit zamanlayici koprusu:
- globalTimer/globalLater  -> GlobalRegionScheduler (bossbar, border, oyun dongusu)
- regionTimer/regionLater  -> RegionScheduler @ konum (lav doldurma, partikul, firework)
- entityTimer/entityLater  -> EntityScheduler (dusen TNT, oyuncu gamemode)
- asyncTimer/async         -> AsyncScheduler (guncelleme kontrolu)
- teleport                 -> teleportAsync (Folia'da senkron teleport yasak)
Folia yoksa hepsi BukkitRunnable'a duser. Hicbir Folia sinifina derleme
zamaninda baglanilmaz (tamami reflection) — JAR her sunucuda yuklenir.

Migrasyon:
- AutoUpdater: async scheduler
- BuyukTnt/ChunkYiyici: dusen TNT -> entity scheduler
- FloorIsLava: LavaGame artik BukkitRunnable degil (Sched.globalTimer + Task handle);
  lav doldurma/partikul -> region scheduler; tum teleport'lar -> Sched.teleport;
  join/world-degisim/lobby -> entity scheduler

plugin.yml: folia-supported: true, version 1.4.0
CI: Folia 1.20.6/1.21.1/1.21.4 test job'u (release needs'e eklendi);
    Node20->Node24 deprecation env fix
Modrinth: folia loader zaten mevcut
2026-06-06 19:20:57 +03:00

61 lines
2.0 KiB
Kotlin
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
plugins {
id("java")
}
group = "tr.com"
version = "1.4.0"
repositories {
mavenCentral()
maven("https://repo.papermc.io/repository/maven-public/")
}
dependencies {
// Paper API 1.16.5 (compile-time) — Java 8 uyumlu son Paper API sürümü.
// Modern (1.17+) API'lere kod zaten reflection ile eriştiğinden, bu sürüm
// doğrudan çağrılan tüm sembolleri (Component, TNTPrimeEvent, Damageable…) karşılar
// ve üretilen JAR'ın 1.8.8 (Java 8) sunucularda da yüklenmesini sağlar.
compileOnly("com.destroystokyo.paper:paper-api:1.16.5-R0.1-SNAPSHOT")
// Adventure kütüphanesi: 1.12.2-1.15 Paper/Spigot sunucularda bundled gelmez.
// Bu bağımlılıklar fatJar göreviyle JAR'a gömülür; Paper 1.16+ sunucularda
// plugin classloader önceliği sayesinde Paper'ın kendi Adventure'ı kullanılır.
implementation("net.kyori:adventure-api:4.14.0")
implementation("net.kyori:adventure-text-serializer-legacy:4.14.0")
implementation("net.kyori:adventure-text-serializer-gson:4.14.0")
}
java {
// Derleyici JDK 17, ancak bytecode hedefi Java 8'dir.
// Böylece üretilen JAR, 1.8.8 (Java 8) sunucularından 1.21+ (Java 21)
// sunucularına kadar her yerde yüklenebilir.
toolchain.languageVersion.set(JavaLanguageVersion.of(17))
}
tasks.withType<JavaCompile> {
options.release.set(8)
options.encoding = "UTF-8"
}
// Tüm bağımlılıkları içeren tek JAR üret (fat/uber jar)
tasks.register<Jar>("fatJar") {
archiveClassifier.set("")
duplicatesStrategy = DuplicatesStrategy.EXCLUDE
manifest.from(tasks.jar.get().manifest)
from(sourceSets.main.get().output)
// implementation kapsamındaki bağımlılıkları (Adventure) ekle
from({
configurations.runtimeClasspath.get()
.filter { it.name.endsWith(".jar") }
.map { zipTree(it) }
})
// META-INF imzalarını çıkar (çakışma önlemi)
exclude("META-INF/*.SF", "META-INF/*.DSA", "META-INF/*.RSA")
}
tasks.build {
dependsOn(tasks["fatJar"])
}