Compare commits
29 Commits
add-tutori
...
341e629aaf
| Author | SHA1 | Date | |
|---|---|---|---|
| 341e629aaf | |||
| 694ded4c61 | |||
| a75b5b7c09 | |||
| 9146f65455 | |||
| 254807efa6 | |||
| 36931aabb1 | |||
| 628599f019 | |||
| 0a6c61bd88 | |||
| 8bbad8b3cc | |||
| 5af6176889 | |||
| 9250dd5088 | |||
| 276e19409d | |||
| 11fa9fa126 | |||
| 17ec6023a9 | |||
| 3c7c899868 | |||
| 9cb161e470 | |||
| 7fc7c2a6eb | |||
| 2fce94d46b | |||
| 6356c9911a | |||
| 2402896fd5 | |||
| 2940304492 | |||
| 4c0a237b27 | |||
| 77b8b41afb | |||
| 163d049829 | |||
| a321b12680 | |||
| feba5a5b4a | |||
| faaf5f1852 | |||
| 18997e1384 | |||
| fdc7bb93dd |
@ -5,7 +5,6 @@ import configureI18n from "./astro-i18n.adapter";
|
||||
import sitemap from "@astrojs/sitemap";
|
||||
|
||||
import robotsTxt from "astro-robots-txt";
|
||||
import {resolve} from "node:url";
|
||||
import path from "node:path";
|
||||
import mdx from "@astrojs/mdx";
|
||||
import pagefind from "astro-pagefind";
|
||||
|
||||
11
package.json
11
package.json
@ -14,11 +14,11 @@
|
||||
"i18n:sync": "pnpm run i18n:generate:pages && pnpm run i18n:generate:types",
|
||||
"clean:dist": "rm -rf dist",
|
||||
"clean:node_modules": "rm -rf node_modules",
|
||||
"ci": "pnpm run clean:dist && pnpm install && pnpm run i18n:sync && pnpm run build"
|
||||
"ci": "pnpm install && pnpm run i18n:sync && pnpm run build"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@astrojs/svelte": "^6.0.2",
|
||||
"@astrojs/tailwind": "^5.1.2",
|
||||
"@astrojs/svelte": "^7.0.4",
|
||||
"@astrojs/tailwind": "^5.1.5",
|
||||
"@astropub/icons": "^0.2.0",
|
||||
"@types/color": "^4.2.0",
|
||||
"@types/node": "^22.9.3",
|
||||
@ -41,11 +41,12 @@
|
||||
"typescript": "^5.7.2"
|
||||
},
|
||||
"dependencies": {
|
||||
"@astrojs/mdx": "^3.1.9",
|
||||
"@astrojs/mdx": "^4.0.7",
|
||||
"@astrojs/sitemap": "^3.2.1",
|
||||
"@codemirror/commands": "^6.8.0",
|
||||
"@codemirror/lang-json": "^6.0.1",
|
||||
"@ddietr/codemirror-themes": "^1.4.4",
|
||||
"astro": "^4.16.14",
|
||||
"astro": "^5.1.8",
|
||||
"astro-i18n": "^2.2.4",
|
||||
"astro-pagefind": "^1.6.0",
|
||||
"astro-robots-txt": "^1.0.0",
|
||||
|
||||
1192
pnpm-lock.yaml
generated
1192
pnpm-lock.yaml
generated
File diff suppressed because it is too large
Load Diff
@ -75,9 +75,7 @@
|
||||
|
||||
<style lang="postcss">
|
||||
input {
|
||||
@apply border-2 rounded-md p-2 shadow-2xl w-80
|
||||
dark:bg-neutral-800
|
||||
focus:outline-none focus:ring-2 focus:ring-neutral-500 focus:border-transparent;
|
||||
@apply border-2 rounded-md p-2 shadow-2xl w-80 dark:bg-neutral-800 focus:outline-none focus:ring-2 focus:ring-neutral-500 focus:border-transparent text-black;
|
||||
}
|
||||
|
||||
label {
|
||||
|
||||
@ -168,11 +168,11 @@
|
||||
</div>
|
||||
<div>
|
||||
{#if selectedBranch !== "master"}
|
||||
<Button onclick={createFile} color="alternative" disabled={!selectedPath}>Create File
|
||||
<Button onclick={() => createFile()} color="alternative" disabled={!selectedPath}>Create File
|
||||
</Button>
|
||||
<Button onclick={() => deleteBranch(false)} color="none">Delete Branch</Button>
|
||||
{:else}
|
||||
<Button onclick={createBranch}>Create Branch</Button>
|
||||
<Button onclick={() => createBranch()}>Create Branch</Button>
|
||||
{/if}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@ -31,7 +31,7 @@
|
||||
let request = getRequest();
|
||||
|
||||
function getRequest() {
|
||||
return $statsRepo.getUserStats(user.id)
|
||||
return $statsRepo.getUserStats(user.uuid)
|
||||
}
|
||||
</script>
|
||||
|
||||
@ -46,5 +46,4 @@
|
||||
{#if user.perms.includes("CHECK")}
|
||||
<p>{t("dashboard.stats.checked", {checked: data.acceptedSchematics})}</p>
|
||||
{/if}
|
||||
{:catch error}
|
||||
{/await}
|
||||
@ -50,19 +50,20 @@
|
||||
// @ts-ignore
|
||||
let b64 = btoa(String.fromCharCode.apply(null, new Uint8Array(content)));
|
||||
|
||||
await $schemRepo.uploadSchematic(name, b64);
|
||||
let response = await $schemRepo.uploadSchematic(name, b64);
|
||||
|
||||
open = false;
|
||||
uploadFile = null;
|
||||
value = "";
|
||||
dispatch("reset")
|
||||
}
|
||||
|
||||
let uploadFile: FileList | null = $state(null);
|
||||
let value = $state("");
|
||||
</script>
|
||||
|
||||
<SWModal title={t("dashboard.schematic.title")} bind:open>
|
||||
<form>
|
||||
<input type="file" bind:files={uploadFile} />
|
||||
<input type="file" bind:files={uploadFile} bind:value />
|
||||
</form>
|
||||
{#snippet footer()}
|
||||
|
||||
|
||||
@ -56,7 +56,7 @@
|
||||
</div>
|
||||
<div>
|
||||
<h1 class="text-4xl font-bold">{t("dashboard.title", {name: user.name})}</h1>
|
||||
<p>{t("dashboard.rank", {rank: t("home.prefix." + user.prefix)})}</p>
|
||||
<p>{t("dashboard.rank", {rank: t("home.prefix." + (user.prefix || "User"))})}</p>
|
||||
<Statistics {user} />
|
||||
</div>
|
||||
</div>
|
||||
@ -22,7 +22,7 @@
|
||||
import { GLTFLoader } from "three/addons/loaders/GLTFLoader.js";
|
||||
import { OrbitControls } from "three/addons/controls/OrbitControls.js";
|
||||
import {onDestroy, onMount} from "svelte";
|
||||
import { CollectionEntry } from "astro:content";
|
||||
import type { CollectionEntry } from "astro:content";
|
||||
|
||||
interface Props {
|
||||
pub: CollectionEntry<"publics">;
|
||||
|
||||
@ -20,6 +20,7 @@
|
||||
import {fetchWithToken, tokenStore} from "./repo.ts";
|
||||
import {type Schematic, SchematicSchema} from "@type/schem.ts";
|
||||
import {derived} from "svelte/store";
|
||||
import {ResponseErrorSchema} from "@type/data.ts";
|
||||
|
||||
export class SchematicRepo {
|
||||
constructor(private token: string) {
|
||||
@ -40,7 +41,7 @@ export class SchematicRepo {
|
||||
name,
|
||||
content,
|
||||
}),
|
||||
});
|
||||
}).then(value => value.json()).then(SchematicSchema.or(ResponseErrorSchema).parse);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -50,3 +50,10 @@ export const ServerSchema = z.object({
|
||||
});
|
||||
|
||||
export type Server = z.infer<typeof ServerSchema>;
|
||||
|
||||
export const ResponseErrorSchema = z.object({
|
||||
error: z.string(),
|
||||
code: z.string(),
|
||||
});
|
||||
|
||||
export type ResponseError = z.infer<typeof ResponseErrorSchema>;
|
||||
|
||||
22
src/content/announcements/de/eventplan-2025.md
Normal file
22
src/content/announcements/de/eventplan-2025.md
Normal file
@ -0,0 +1,22 @@
|
||||
---
|
||||
title: Eventplan 2025
|
||||
key: eventplan-2025
|
||||
description: Der Eventplan für das Jahr 2025.
|
||||
created: 2025-01-20
|
||||
tags:
|
||||
- event
|
||||
image: ../../../images/jAHRESPLAN-gro-5.png
|
||||
---
|
||||
|
||||
2025 wird ein Jahr voller spannender Events. Hier findet ihr eine Übersicht über die geplanten Events.
|
||||
|
||||
Highlights sind:
|
||||
- **WargearSeason 2025**
|
||||
- **SteamWar Arcade**
|
||||
- **WarGear mit SFA**
|
||||
- **MiniWarGear Liga**
|
||||
- **SpaceShip**
|
||||
|
||||
aber auch viele mehr.
|
||||
|
||||
Es wird auch kleinere Events geben, die nicht angekündigt sind.
|
||||
@ -2,8 +2,9 @@
|
||||
"name": "AdvancedScripts",
|
||||
"description": "Ein Fabric-Mod, der für den BauServer von SteamWar Hotkeys für das ScriptSystem hinzufügt. Hierzu werden die einzelnen Zeichen an den Server gesendet und vom Server verarbeitet.",
|
||||
"url": {
|
||||
"1.20.1": "https://steamwar.de/AdvancedScriptsV3",
|
||||
"1.19": "https://steamwar.de/AdvancedScripts"
|
||||
"1.21.4": "https://git.steamwar.de/SteamWar/AdvancedScripts/releases/download/2.2.0/AdvancedScripts-2.2.0.jar",
|
||||
"1.20.6": "https://git.steamwar.de/SteamWar/AdvancedScripts/releases/download/2.1.0/AdvancedScripts-2.1.0.jar",
|
||||
"1.19.3": "https://git.steamwar.de/SteamWar/AdvancedScripts/releases/download/2.0.0/AdvancedScripts-2.0.0.jar"
|
||||
},
|
||||
"sourceUrl": "https://steamwar.de/devlabs/SteamWar/AdvancedScripts"
|
||||
"sourceUrl": "https://git.steamwar.de/SteamWar/AdvancedScripts"
|
||||
}
|
||||
@ -1,6 +0,0 @@
|
||||
{
|
||||
"name": "FabricModSender",
|
||||
"description": "Ein Fabric-Mod, der SteamWar beim Serverjoin die von dir installierten Mods sendet und es uns damit ermöglicht, sie auf schädliche Mods zu überprüfen. Eine Installation dieses Mods ermöglicht dir das Joinen von Arenen mit Fabric auf SteamWar.",
|
||||
"url": "https://steamwar.de/FabricModSender",
|
||||
"sourceUrl": "https://steamwar.de/devlabs/SteamWar/FabricModSender"
|
||||
}
|
||||
@ -2,8 +2,7 @@
|
||||
"name": "SteamWarTeamserver",
|
||||
"description": "Dieses Plugin ermöglicht die einfache Einbindung deines Servers in SteamWar. Wie du deinen (Team-)Server über SteamWar erreichbar machen kannst findest du hier.",
|
||||
"url": {
|
||||
"Info": "/teamserverintegration",
|
||||
"Download": "https://steamwar.de/SteamWarTeamserver"
|
||||
"Info": "/teamserverintegration"
|
||||
},
|
||||
"sourceUrl": "https://steamwar.de/devlabs/SteamWar/SteamWarBungeeTeamserver"
|
||||
"sourceUrl": "https://git.steamwar.de/SteamWar/SteamWarBungeeTeamserver"
|
||||
}
|
||||
@ -26,6 +26,7 @@ Schuss zu verhindern.
|
||||
|
||||
## Kanonen
|
||||
|
||||
Jedes MicroWargear muss über mindestens eine funktionstüchtige Kanone verfügen.
|
||||
Eine Kanone ist eine durchgehende Redstonekonstruktion, welche in der Lage ist,
|
||||
den Gegner durch gezündetes TNT zu beschädigen. Eine TNT-Kanone ist der einzige Ort in einem Micro an dem Wasser verbaut werden darf, wenn es die Kanone nicht verlässt und /oder im intakten Zustand Wasserschilde bildet. Außerdem darf sich die Kanone nicht gezielt selbst beschädigen. Eine TNT-Kanone darf maximal 8 Projektile pro Schuss abfeuern.
|
||||
Zusätzlich ist eine Hauptkanone mit 12 Projektilen erlaubt.
|
||||
|
||||
@ -41,7 +41,9 @@
|
||||
"Dev": "Developer",
|
||||
"Mod": "Moderator",
|
||||
"Sup": "Supporter",
|
||||
"Arch": "Architekt"
|
||||
"Arch": "Architekt",
|
||||
"User": "Spieler",
|
||||
"YT": "YouTuber"
|
||||
}
|
||||
},
|
||||
"status": {
|
||||
@ -240,5 +242,9 @@
|
||||
},
|
||||
"ranking": {
|
||||
"heading": "{# mode #} Rangliste"
|
||||
},
|
||||
"404": {
|
||||
"title": "404 - Seite nicht gefunden",
|
||||
"description": "Seite nicht gefunden"
|
||||
}
|
||||
}
|
||||
|
||||
@ -62,7 +62,9 @@
|
||||
"Dev": "Developer",
|
||||
"Mod": "Moderator",
|
||||
"Sup": "Supporter",
|
||||
"Arch": "Builder"
|
||||
"Arch": "Builder",
|
||||
"User": "User",
|
||||
"YT": "YouTuber"
|
||||
}
|
||||
},
|
||||
"footer": {
|
||||
@ -180,5 +182,9 @@
|
||||
},
|
||||
"stats": {
|
||||
"title": "Fight Statistics"
|
||||
},
|
||||
"404": {
|
||||
"title": "404 - Page not found",
|
||||
"description": "Page not found"
|
||||
}
|
||||
}
|
||||
|
||||
BIN
src/images/jAHRESPLAN-gro-4.png
Normal file
BIN
src/images/jAHRESPLAN-gro-4.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 1.1 MiB |
BIN
src/images/jAHRESPLAN-gro-5.png
Normal file
BIN
src/images/jAHRESPLAN-gro-5.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 1.1 MiB |
@ -3,9 +3,8 @@ import icon from "../images/logo.png";
|
||||
import {getImage} from "astro:assets";
|
||||
import {astroI18n} from "astro-i18n";
|
||||
import {SEO} from "astro-seo";
|
||||
import {ViewTransitions} from "astro:transitions";
|
||||
import {ClientRouter} from "astro:transitions";
|
||||
const {title, description, clientSideRouter = true} = Astro.props.frontmatter || Astro.props;
|
||||
|
||||
import "../../public/fonts/roboto/roboto.css";
|
||||
|
||||
const iconImage = await getImage({src: icon, height: 32, width: 32, format: "png", quality: 100});
|
||||
@ -40,7 +39,7 @@ if (localStorage["theme-mode"] === "light" || (!("theme-mode" in localStorage) &
|
||||
|
||||
<slot name="head"/>
|
||||
|
||||
{clientSideRouter && <ViewTransitions/>}
|
||||
{clientSideRouter && <ClientRouter/>}
|
||||
</head>
|
||||
<body class="dark:bg-zinc-800">
|
||||
<slot/>
|
||||
|
||||
@ -10,7 +10,7 @@ const {title, description} = Astro.props;
|
||||
<div class="h-screen w-screen fixed -z-10">
|
||||
<BackgroundImage />
|
||||
</div>
|
||||
<div class="mx-auto bg-gray-100 p-8 rounded-b-md shadow-md pt-40 sm:pt-28 md:pt-14 relative
|
||||
<div class="mx-auto bg-gray-100 p-8 rounded-b-md shadow-md pt-14 relative
|
||||
dark:text-white dark:bg-neutral-900" style="width: min(100%, 75em);">
|
||||
<slot/>
|
||||
</div>
|
||||
|
||||
39
src/pages/not-found.astro
Normal file
39
src/pages/not-found.astro
Normal file
@ -0,0 +1,39 @@
|
||||
---
|
||||
import PageLayout from "../layouts/PageLayout.astro";
|
||||
import {t} from "astro-i18n";
|
||||
---
|
||||
|
||||
<PageLayout title={t("404.title")}>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 800 400">
|
||||
<!-- 404 Text - heller für besseren Kontrast -->
|
||||
<text x="400" y="150" font-family="Arial Black" font-size="120" fill="#ffffff" text-anchor="middle">404</text>
|
||||
|
||||
<!-- Trauriger Roboter - hellere Farben für besseren Kontrast -->
|
||||
<!-- Körper -->
|
||||
<rect x="350" y="200" width="100" height="120" rx="10" fill="#888888"/>
|
||||
|
||||
<!-- Kopf -->
|
||||
<rect x="365" y="160" width="70" height="60" rx="5" fill="#888888"/>
|
||||
|
||||
<!-- Augen -->
|
||||
<circle cx="385" cy="185" r="8" fill="#ff6b6b"/>
|
||||
<circle cx="415" cy="185" r="8" fill="#ff6b6b"/>
|
||||
|
||||
<!-- Antenne -->
|
||||
<line x1="400" y1="160" x2="400" y2="140" stroke="#888888" stroke-width="4"/>
|
||||
<circle cx="400" cy="135" r="5" fill="#888888"/>
|
||||
|
||||
<!-- Arme -->
|
||||
<rect x="320" y="220" width="30" height="10" rx="5" fill="#888888"/>
|
||||
<rect x="450" y="220" width="30" height="10" rx="5" fill="#888888"/>
|
||||
|
||||
<!-- Text unter dem Roboter - heller für besseren Kontrast -->
|
||||
<text x="400" y="360" font-family="Arial" font-size="24" fill="#ffffff" text-anchor="middle">{t("404.description")}</text>
|
||||
|
||||
<!-- Dekorative Elemente - heller für besseren Kontrast -->
|
||||
<circle cx="250" cy="100" r="5" fill="#bbbbbb"/>
|
||||
<circle cx="550" cy="150" r="5" fill="#bbbbbb"/>
|
||||
<circle cx="200" cy="300" r="5" fill="#bbbbbb"/>
|
||||
<circle cx="600" cy="250" r="5" fill="#bbbbbb"/>
|
||||
</svg>
|
||||
</PageLayout>
|
||||
@ -1,7 +1,11 @@
|
||||
build:
|
||||
- "echo 'PUBLIC_API_SERVER=https://dev.steamwar.de/api' > .env"
|
||||
- "pnpm run ci"
|
||||
- "printenv"
|
||||
- "echo 'PUBLIC_API_SERVER=https://api.steamwar.de' > .env"
|
||||
- "pnpm install"
|
||||
- "./node_modules/.bin/astro-i18n generate:pages --purge"
|
||||
- "./node_modules/.bin/astro-i18n generate:types"
|
||||
- "./node_modules/.bin/astro build"
|
||||
|
||||
release:
|
||||
- "rm -r /var/www/dev/*"
|
||||
- "mv dist/* /var/www/dev"
|
||||
- "rm -r /var/www/html/*"
|
||||
- "mv dist/* /var/www/html"
|
||||
@ -9,7 +9,6 @@ module.exports = {
|
||||
theme: {
|
||||
extend: {
|
||||
colors: {
|
||||
// flowbite-svelte
|
||||
primary: { 50: '#FFF5F2', 100: '#FFF1EE', 200: '#FFE4DE', 300: '#FFD5CC', 400: '#FFBCAD', 500: '#FE795D', 600: '#EF562F', 700: '#EB4F27', 800: '#CC4522', 900: '#A5371B'},
|
||||
}
|
||||
},
|
||||
|
||||
Reference in New Issue
Block a user