Improve launcher injection and hook reliability

Find Fabric through the render thread's class loader and make bytecode transformations safer for launcher-provided class definitions. Improve hook reporting, process-picker refresh behavior, and self-destruct cleanup; document Dawn and Lunar 1.21.11 setup.
This commit is contained in:
bbldrizzy committed 2026-11-03 11:40:43 +00:00
1 parent 38ff6d387c
commit 036b24f2ae
12 files changed
+186 -48

No files matched your search

+11 -6
View File
@@ -221,14 +221,12 @@ fn pick_process() -> Option<u32> {
let mut selected = 0usize;
let mut processes = platform::java_processes();
let mut last_refresh = Instant::now();
draw(&processes, selected);
loop {
if selected >= processes.len() {
selected = processes.len().saturating_sub(1);
}
draw(&processes, selected);
let deadline = Instant::now() + Duration::from_millis(50);
while Instant::now() < deadline {
if let Some(key) = platform::poll_key() {
let previous = selected;
match key {
platform::Key::Up => selected = selected.saturating_sub(1),
platform::Key::Down => selected = (selected + 1).min(processes.len().saturating_sub(1)),
@@ -239,12 +237,19 @@ fn pick_process() -> Option<u32> {
}
platform::Key::Escape => return None,
}
draw(&processes, selected);
if selected != previous {
draw(&processes, selected);
}
}
std::thread::sleep(Duration::from_millis(10));
}
if last_refresh.elapsed() >= Duration::from_millis(750) {
processes = platform::java_processes();
let refreshed = platform::java_processes();
if refreshed != processes {
processes = refreshed;
selected = selected.min(processes.len().saturating_sub(1));
draw(&processes, selected);
}
last_refresh = Instant::now();
}
}
@@ -3,6 +3,7 @@
use std::path::PathBuf;
/// A running Minecraft JVM shown in the picker.
#[derive(PartialEq)]
pub struct JavaProcess {
pub pid: u32,
pub title: String,