From 4855447b2963e9de526c7a2dd7413b0314a7afdd Mon Sep 17 00:00:00 2001 From: Oier Bravo Urtasun Date: Thu, 11 Jun 2026 09:59:07 +0200 Subject: [PATCH] feat(branding): use Ulicraft goat logo in header, ServerCard, and server icon - landing header + footer brand: swap the Creeper pixel-art for the ulicraft-logo-mini.svg goat mark. - ServerCard fallback icon: same logo (real SLP favicon still overrides on a successful ping). - minecraft: set ICON=/extras/server-icon.png + OVERRIDE_ICON so the in-game server-list entry and the SLP favicon use the goat logo. PNG ships in ./runtime (mounted /extras). Co-Authored-By: Claude Opus 4.8 (1M context) --- docker-compose.yml | 5 +++ landing/public/ulicraft-logo-mini.svg | 52 ++++++++++++++++++++++++ landing/src/components/ServerCard.astro | 7 ++-- landing/src/pages/[...lang].astro | 5 +-- landing/src/styles/main.css | 1 + runtime/server-icon.png | Bin 0 -> 53443 bytes 6 files changed, 63 insertions(+), 7 deletions(-) create mode 100644 landing/public/ulicraft-logo-mini.svg create mode 100644 runtime/server-icon.png diff --git a/docker-compose.yml b/docker-compose.yml index a142df0..59a740e 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -67,6 +67,11 @@ services: DIFFICULTY: "normal" MODE: "survival" MOTD: "Uli LAN party" + # Server-list icon (auto-scaled to 64x64). PNG lives in ./runtime (mounted + # /extras); OVERRIDE_ICON re-applies it on every boot. Also surfaces in the + # landing ServerCard via the SLP favicon. + ICON: "/extras/server-icon.png" + OVERRIDE_ICON: "TRUE" MAX_PLAYERS: "10" VIEW_DISTANCE: "10" SIMULATION_DISTANCE: "8" diff --git a/landing/public/ulicraft-logo-mini.svg b/landing/public/ulicraft-logo-mini.svg new file mode 100644 index 0000000..602b79d --- /dev/null +++ b/landing/public/ulicraft-logo-mini.svg @@ -0,0 +1,52 @@ + + + + + + + + + + diff --git a/landing/src/components/ServerCard.astro b/landing/src/components/ServerCard.astro index cda7f5b..6053c82 100644 --- a/landing/src/components/ServerCard.astro +++ b/landing/src/components/ServerCard.astro @@ -11,7 +11,6 @@ // Live labels are passed as data-* so copy stays translatable from the page // (defaults are English). Heads use /headiso. Promo/placeholder players with // the all-zero UUID are filtered out. -import Creeper from "./Creeper.astro"; import { site } from "../data/site"; interface Props { @@ -47,9 +46,9 @@ const { status, avatarUrl, avatarMode } = site; >
- + - +
@@ -102,7 +101,7 @@ const { status, avatarUrl, avatarMode } = site; box-shadow: inset 2px 2px 0 var(--bevel-lo), inset -2px -2px 0 var(--bevel-hi); } .sc-favicon { width: 64px; height: 64px; image-rendering: pixelated; } - .sc-creeper :global(.creeper) { width: 48px; height: 48px; } + .sc-creeper img { width: 56px; height: 56px; } .sc-meta { flex: 1; min-width: 0; } .sc-row1 { display: flex; align-items: baseline; gap: 12px; } diff --git a/landing/src/pages/[...lang].astro b/landing/src/pages/[...lang].astro index 637ef95..b8e034f 100644 --- a/landing/src/pages/[...lang].astro +++ b/landing/src/pages/[...lang].astro @@ -1,7 +1,6 @@ --- import { site, HEAD_FONTS } from "../data/site"; import { ui, LANGS, LANG_LABEL, LANG_PATH, LANG_REGISTER_PATH, LANG_ACCOUNT_PATH, type Lang } from "../i18n/ui"; -import Creeper from "../components/Creeper.astro"; import PixelIcon from "../components/PixelIcon.astro"; import ServerCard from "../components/ServerCard.astro"; import PlayerRoster from "../components/PlayerRoster.astro"; @@ -66,7 +65,7 @@ const dustBits = Array.from({ length: 16 }, (_, i) => {