diff --git a/api/src/main/java/com/ruinscraft/panilla/api/config/PTranslations.java b/api/src/main/java/com/ruinscraft/panilla/api/config/PTranslations.java index 117b534..80e8d28 100644 --- a/api/src/main/java/com/ruinscraft/panilla/api/config/PTranslations.java +++ b/api/src/main/java/com/ruinscraft/panilla/api/config/PTranslations.java @@ -41,8 +41,7 @@ public class PTranslations { if (unformatted == null) { return "unknown translation: " + key; } - String formatted = String.format(translations.get(key), replacements); - return formatted; + return String.format(unformatted, (Object[]) replacements); } } diff --git a/build.gradle.kts b/build.gradle.kts index 207635b..5a8eec5 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -1,7 +1,21 @@ +import org.gradle.api.artifacts.component.ModuleComponentSelector + plugins { id("eclipse") } +val hasBootstrapRepo = System.getProperty("SELF_MAVEN_LOCAL_REPO") + ?.takeIf { it.isNotBlank() } + ?.let { custom -> + val resolvedPath = if (custom.startsWith("~")) { + custom.replaceFirst("^~".toRegex(), System.getProperty("user.home")) + } else { + custom + } + file(resolvedPath).isDirectory + } + ?: false + allprojects { group = "com.ruinscraft" version = "1.9.0" @@ -14,10 +28,25 @@ subprojects { sourceCompatibility = JavaVersion.VERSION_1_8 targetCompatibility = JavaVersion.VERSION_1_8 } + + if (!hasBootstrapRepo) { + configurations.configureEach { + resolutionStrategy.dependencySubstitution { + all { + val requestedModule = requested as? ModuleComponentSelector ?: return@all + if (requestedModule.group == "org.spigotmc" && requestedModule.module == "spigot") { + useTarget( + "org.bukkit:craftbukkit:${requestedModule.version}", + "TrueOG Bootstrap is unavailable, so fall back to mirrored CraftBukkit artifacts for server internals." + ) + } + } + } + } + } } tasks.register("clean") { delete(layout.buildDirectory) delete("target") } - diff --git a/settings.gradle.kts b/settings.gradle.kts index a145bf4..6cea771 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -1,25 +1,55 @@ +val homeMavenRepo = uri("file://${System.getProperty("user.home")}/.m2/repository") +val configuredLocalRepo = System.getProperty("SELF_MAVEN_LOCAL_REPO") + ?.takeIf { it.isNotBlank() } + ?.let { custom -> + val resolvedPath = if (custom.startsWith("~")) { + custom.replaceFirst("^~".toRegex(), System.getProperty("user.home")) + } else { + custom + } + file(resolvedPath).takeIf { it.isDirectory } + } + +fun orgSpigotContentFilter(repository: org.gradle.api.artifacts.repositories.MavenArtifactRepository) { + repository.content { + includeGroup("org.spigotmc") + includeGroup("org.bukkit") + } +} + dependencyResolutionManagement { repositoriesMode.set(RepositoriesMode.PREFER_SETTINGS) repositories { - maven { url = uri("file://${System.getProperty("user.home")}/.m2/repository") } - System.getProperty("SELF_MAVEN_LOCAL_REPO")?.let { custom -> - val dir = file( - if (custom.startsWith("~")) { - custom.replaceFirst("^~".toRegex(), System.getProperty("user.home")) - } else { - custom - } - ) - if (dir.isDirectory) { - println("Using SELF_MAVEN_LOCAL_REPO at: $custom") - maven { url = uri("file://${dir.absolutePath}") } - } else { - logger.error("TrueOG Bootstrap not found, defaulting to ~/.m2 for mavenLocal()") - mavenLocal() + maven { + name = "UserLocalMaven" + url = homeMavenRepo + } + + configuredLocalRepo?.let { dir -> + println("Using SELF_MAVEN_LOCAL_REPO at: ${dir.absolutePath}") + maven { + name = "SelfLocalMaven" + url = uri(dir) } - } ?: logger.error("TrueOG Bootstrap not found, defaulting to ~/.m2 for mavenLocal()") + } ?: run { + println("TrueOG Bootstrap not found; using public Spigot mirrors alongside ~/.m2 for dependencies.") + mavenLocal() + } + mavenCentral() maven { url = uri("https://mvn.lumine.io/repository/maven-public/") } + maven("https://hub.spigotmc.org/nexus/content/repositories/snapshots/") { + name = "SpigotSnapshots" + orgSpigotContentFilter(this) + } + maven("https://repo.loohpjames.com/repository/") { + name = "LoohpMirror" + orgSpigotContentFilter(this) + } + maven("https://maven.elmakers.com/repository/") { + name = "ElMakersMirror" + orgSpigotContentFilter(this) + } } }