ref:fab2b8451d64870e2bf708466d41a554614806c9

Add security, performance, UX improvements

Security (D→A): - AlacrittyConfig with configurable player allowlist, ops override, server enable toggle, shell whitelist, max terminals per player - Permission check in TerminalBlock.use() with denial message - Client class isolation via callback pattern (fixes server crash) Performance (C+→A-): - Rust renderer outputs ABGR format matching NativeImage directly - Java upload reads 4 bytes as int instead of per-byte with swizzle - ~4x fewer ByteBuffer operations per frame Correctness (B+→A): - Replace String::from_utf8().unwrap() with infallible char::from() UX (B-→B+): - Ctrl+V clipboard paste in both focus and overlay screens - Terminal dimensions (80x24) shown in HUD bar - getCols()/getRows() accessors on TerminalBlockEntity Completeness: - Crafting recipe (iron + glass + redstone) - Cross-platform build script + Cross.toml for Linux targets - ClientHelper for server-safe client class references Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
SHA: fab2b8451d64870e2bf708466d41a554614806c9
Author: Cole Christensen <cole.christensen@macmillan.com>
Date: 2026-03-20 06:10
Parents: 5927b3a
15 files changed +419 -57
Type
build_natives.sh +50 −0
@@ -1,0 +1,50 @@
#!/usr/bin/env bash
set -euo pipefail
# Build native libraries for all supported platforms.
# Requires: cargo, cross (cargo install cross)
# macOS targets build natively, Linux targets use cross (Docker).
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
RUST_DIR="$SCRIPT_DIR/rust"
NATIVES_DIR="$SCRIPT_DIR/common/src/main/resources/natives"
cd "$RUST_DIR"
echo "=== Building native libraries ==="
# macOS aarch64 (native on Apple Silicon)
echo "[1/4] macOS aarch64..."
cargo build --release --target aarch64-apple-darwin
mkdir -p "$NATIVES_DIR/macos-aarch64"
cp target/aarch64-apple-darwin/release/libalacritty_minecraft.dylib "$NATIVES_DIR/macos-aarch64/"
# macOS x86_64 (cross-compile on Apple Silicon)
echo "[2/4] macOS x86_64..."
cargo build --release --target x86_64-apple-darwin
mkdir -p "$NATIVES_DIR/macos-x86_64"
cp target/x86_64-apple-darwin/release/libalacritty_minecraft.dylib "$NATIVES_DIR/macos-x86_64/"
# Linux x86_64 (via cross/Docker)
echo "[3/4] Linux x86_64..."
if command -v cross &>/dev/null; then
cross build --release --target x86_64-unknown-linux-gnu
mkdir -p "$NATIVES_DIR/linux-x86_64"
cp target/x86_64-unknown-linux-gnu/release/libalacritty_minecraft.so "$NATIVES_DIR/linux-x86_64/"
else
echo " SKIP: 'cross' not installed (cargo install cross)"
fi
# Linux aarch64 (via cross/Docker)
echo "[4/4] Linux aarch64..."
if command -v cross &>/dev/null; then
cross build --release --target aarch64-unknown-linux-gnu
mkdir -p "$NATIVES_DIR/linux-aarch64"
cp target/aarch64-unknown-linux-gnu/release/libalacritty_minecraft.so "$NATIVES_DIR/linux-aarch64/"
else
echo " SKIP: 'cross' not installed (cargo install cross)"
fi
echo ""
echo "=== Results ==="
find "$NATIVES_DIR" -type f -exec ls -lh {} \;