mirror of
https://github.com/barkeser2002/BarisKeserTools-MC.git
synced 2026-09-25 00:59:53 +03:00
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
61 lines
2.0 KiB
Kotlin
61 lines
2.0 KiB
Kotlin
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"])
|
||
}
|