From 6fab222d1ed478b48e389a8b859ea2a298257e57 Mon Sep 17 00:00:00 2001 From: Tamipes Date: Tue, 3 Feb 2026 21:03:20 +0100 Subject: [PATCH 1/2] feat: add dependency derivation to flake output, so it can be pinned If you write nix build .#deps ,then the result link gets added as a gc root so it doesn't get garbage collected. --- flake.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/flake.nix b/flake.nix index 4b8563e..b64872c 100644 --- a/flake.nix +++ b/flake.nix @@ -119,6 +119,7 @@ packages = { default = my-crate; + deps = cargoArtifacts; } // lib.optionalAttrs (!pkgs.stdenv.isDarwin) { my-crate-llvm-coverage = craneLibLLvmTools.cargoLlvmCov (commonArgs // { inherit cargoArtifacts; From 8a9ae9f7358e82d77523165df4047c2ee1ba9cb9 Mon Sep 17 00:00:00 2001 From: Tamipes Date: Tue, 3 Feb 2026 21:04:21 +0100 Subject: [PATCH 2/2] feat: add `Text component format` or `raw JSON text` disconnect messages --- src/main.rs | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/main.rs b/src/main.rs index d54c5c8..798ea01 100644 --- a/src/main.rs +++ b/src/main.rs @@ -20,6 +20,8 @@ mod opaque_error; mod packets; mod types; +static BYE_MESSAGE: &str = concat!("§dTami§r with §d<3§r §8(rev: ", env!("COMMIT_HASH"), ")§r"); + #[tokio::main] async fn main() { // ---- Tracing setup ---- @@ -160,7 +162,6 @@ async fn handle_status( let commit_hash: &'static str = env!("COMMIT_HASH"); let mut status_struct = StatusStructNew::create(); status_struct.version.protocol = handshake.protocol_version.get_int(); - let bye_message = format!(" - §dTami§r with §d<3§r §8(rev: {commit_hash})§r"); let server = match api .query_server( @@ -175,7 +176,7 @@ async fn handle_status( status_struct.players.max = 0; status_struct.players.online = 0; status_struct.description.text = format!( - "Could not find §kserver§r: §f§o{server_addr}§r\nMinecraft Ingress {bye_message}" + "Could not find §kserver§r: §f§o{server_addr}§r\nMinecraft Ingress - {BYE_MESSAGE}" ); mc_server::complete_status_request(client_stream, status_struct) @@ -219,12 +220,12 @@ async fn handle_status( status_struct.players.max = 1; status_struct.players.online = 1; status_struct.description.text = - format!("{motd}\n§2Starting!§r §b§oWait a bit§r§b ^^§r{bye_message}"); + format!("{motd}\n§2Starting!§r §b§oWait a bit§r§b ^^§r - {BYE_MESSAGE}"); } ServerDeploymentStatus::Offline => { status_struct.players.max = 1; status_struct.description.text = - format!("{motd}\n§4Offline§r §oJoin to start!§r{bye_message}"); + format!("{motd}\n§4Offline§r §oJoin to start!§r - {BYE_MESSAGE}"); } }; @@ -289,13 +290,13 @@ async fn handle_login( } } ServerDeploymentStatus::PodOk | ServerDeploymentStatus::Starting => { - mc_server::send_disconnect(client_stream, "Starting...§d<3§r").await?; + mc_server::send_disconnect(client_stream, format!("[\"\",{{\"text\":\"The server is still starting up...\n wait a bit more please ^^\n\n\"}},{{\"text\":\"{BYE_MESSAGE}\"}}]").as_str()).await?; } ServerDeploymentStatus::Offline => { server.start().await?; api.start_watch(server.clone(), Duration::from_secs(600)) .await?; - mc_server::send_disconnect(client_stream, "Okayy_starting_it...§d<3§r").await?; + mc_server::send_disconnect(client_stream, format!("[\"\",{{\"text\":\"Okayy, §2starting§r the server!\n\n\"}},{{\"text\":\"{BYE_MESSAGE}\"}}]").as_str()).await?; } } Ok(())