* Implement direct server joining for 1.6.2 through 1.19.4 * Implement direct server joining for versions before 1.6.2 * Ignore methods with a $ in them * Run intl:extract * Improve code of MinecraftTransformer * Support showing last played time for profiles before 1.7 * Reorganize QuickPlayVersion a bit to prepare for singleplayer * Only inject quick play checking in versions where it's needed * Optimize agent some and fix error on NeoForge * Remove some code for quickplay singleplayer support before 1.20, as we can't reasonably support that with an agent * Invert the default hasServerQuickPlaySupport return value * Remove Play Anyway button * Fix "Server couldn't be contacted" on singleplayer worlds * Fix "Jump back in" section not working
66 lines
1.9 KiB
Rust
66 lines
1.9 KiB
Rust
use std::ffi::OsString;
|
|
use std::path::PathBuf;
|
|
use std::process::{Command, exit};
|
|
use std::{env, fs};
|
|
|
|
fn main() {
|
|
println!("cargo::rerun-if-changed=.env");
|
|
println!("cargo::rerun-if-changed=java/gradle");
|
|
println!("cargo::rerun-if-changed=java/src");
|
|
println!("cargo::rerun-if-changed=java/build.gradle.kts");
|
|
println!("cargo::rerun-if-changed=java/settings.gradle.kts");
|
|
println!("cargo::rerun-if-changed=java/gradle.properties");
|
|
|
|
set_env();
|
|
build_java_jars();
|
|
}
|
|
|
|
fn set_env() {
|
|
for (var_name, var_value) in
|
|
dotenvy::dotenv_iter().into_iter().flatten().flatten()
|
|
{
|
|
if var_name == "DATABASE_URL" {
|
|
// The sqlx database URL is a build-time detail that should not be exposed to the crate
|
|
continue;
|
|
}
|
|
|
|
println!("cargo::rustc-env={var_name}={var_value}");
|
|
}
|
|
}
|
|
|
|
fn build_java_jars() {
|
|
let out_dir =
|
|
dunce::canonicalize(PathBuf::from(env::var_os("OUT_DIR").unwrap()))
|
|
.unwrap();
|
|
|
|
println!(
|
|
"cargo::rustc-env=JAVA_JARS_DIR={}",
|
|
out_dir.join("java/libs").display()
|
|
);
|
|
|
|
let gradle_path = fs::canonicalize(
|
|
#[cfg(target_os = "windows")]
|
|
"java\\gradlew.bat",
|
|
#[cfg(not(target_os = "windows"))]
|
|
"java/gradlew",
|
|
)
|
|
.unwrap();
|
|
|
|
let mut build_dir_str = OsString::from("-Dorg.gradle.project.buildDir=");
|
|
build_dir_str.push(out_dir.join("java"));
|
|
let exit_status = Command::new(gradle_path)
|
|
.arg(build_dir_str)
|
|
.arg("build")
|
|
.arg("--no-daemon")
|
|
.arg("--console=rich")
|
|
.arg("--info")
|
|
.current_dir(dunce::canonicalize("java").unwrap())
|
|
.status()
|
|
.expect("Failed to wait on Gradle build");
|
|
|
|
if !exit_status.success() {
|
|
println!("cargo::error=Gradle build failed with {exit_status}");
|
|
exit(exit_status.code().unwrap_or(1));
|
|
}
|
|
}
|