Updates and more
Dieser Commit ist enthalten in:
Ursprung
f10d4c17d6
Commit
c5164f2bd3
21
astro-i18n.config.ts
Normale Datei
21
astro-i18n.config.ts
Normale Datei
@ -0,0 +1,21 @@
|
||||
import { defineAstroI18nConfig } from "astro-i18n"
|
||||
|
||||
export default defineAstroI18nConfig({
|
||||
primaryLocale: "en", // default app locale
|
||||
secondaryLocales: ["de"], // other supported locales
|
||||
fallbackLocale: "en", // fallback locale (on missing translation)
|
||||
trailingSlash: "never", // "never" or "always"
|
||||
run: "server", //"client+server" or "server"
|
||||
showPrimaryLocale: false, // "/en/about" vs "/about"
|
||||
translationLoadingRules: [], // per page group loading
|
||||
translationDirectory: {
|
||||
i18n: "i18n",
|
||||
}, // translation directory names
|
||||
translations: {}, // { [translation_group1]: { [locale1]: {}, ... } }
|
||||
routes: {
|
||||
de: {
|
||||
about: "ueber-uns",
|
||||
join: "jetzt-spielen"
|
||||
}
|
||||
}, // { [secondary_locale1]: { about: "about-translated", ... } }
|
||||
})
|
@ -1,19 +1,14 @@
|
||||
import i18n from "astro-i18n"
|
||||
import { defineConfig, sharpImageService } from 'astro/config';
|
||||
import svelte from "@astrojs/svelte";
|
||||
import tailwind from "@astrojs/tailwind";
|
||||
|
||||
import prefetch from "@astrojs/prefetch";
|
||||
|
||||
// https://astro.build/config
|
||||
export default defineConfig({
|
||||
output: "static",
|
||||
image: {
|
||||
service: sharpImageService(),
|
||||
},
|
||||
integrations: [i18n(), svelte(), tailwind(), prefetch({
|
||||
selector: "a"
|
||||
})],
|
||||
integrations: [svelte(), tailwind()],
|
||||
vite: {
|
||||
|
||||
}
|
||||
|
@ -1,12 +0,0 @@
|
||||
// @ts-ignore
|
||||
import { defineAstroI18nConfig } from "astro-i18n"
|
||||
|
||||
export default defineAstroI18nConfig({
|
||||
defaultLangCode: "en",
|
||||
supportedLangCodes: [],
|
||||
showDefaultLangCode: false,
|
||||
translations: {
|
||||
"en": "src/locales/en.json",
|
||||
},
|
||||
routeTranslations: {},
|
||||
})
|
38
package.json
38
package.json
@ -8,38 +8,38 @@
|
||||
"build": "astro build",
|
||||
"preview": "astro preview",
|
||||
"astro": "astro",
|
||||
"i18n:install": "astro-i18n install",
|
||||
"i18n:sync": "astro-i18n sync",
|
||||
"i18n:extract:keys": "astro-i18n extract:keys"
|
||||
"i18n:extract": "astro-i18n extract",
|
||||
"i18n:generate:pages": "astro-i18n generate:pages --purge",
|
||||
"i18n:generate:types": "astro-i18n generate:types",
|
||||
"i18n:sync": "npm run i18n:generate:pages && npm run i18n:generate:types"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@astrojs/prefetch": "^0.4.0",
|
||||
"@astrojs/svelte": "^4.0.2",
|
||||
"@astrojs/tailwind": "^5.0.0",
|
||||
"@astrojs/prefetch": "^0.4.1",
|
||||
"@astrojs/svelte": "^4.0.3",
|
||||
"@astrojs/tailwind": "^5.0.2",
|
||||
"@astropub/icons": "^0.2.0",
|
||||
"@types/crypto-js": "^4.1.2",
|
||||
"@types/node": "^20.6.3",
|
||||
"astro-i18n": "^1.8.1",
|
||||
"cssnano": "^6.0.1",
|
||||
"esbuild": "^0.19.4",
|
||||
"postcss-nesting": "^12.0.1",
|
||||
"sass": "^1.68.0",
|
||||
"svelte": "^4.0.0",
|
||||
"tailwind-merge": "^1.13.2",
|
||||
"tailwindcss": "^3.3.2"
|
||||
"sass": "^1.69.3",
|
||||
"svelte": "^4.2.1",
|
||||
"tailwind-merge": "^1.14.0",
|
||||
"tailwindcss": "^3.3.3"
|
||||
},
|
||||
"dependencies": {
|
||||
"@codemirror/lang-markdown": "^6.2.2",
|
||||
"@ddietr/codemirror-themes": "^1.4.2",
|
||||
"astro": "^3.1.1",
|
||||
"astro": "^3.3.0",
|
||||
"astro-i18n": "^2.0.4",
|
||||
"color": "^4.2.3",
|
||||
"flowbite": "^1.7.0",
|
||||
"flowbite-svelte": "^0.39.2",
|
||||
"flowbite-svelte-icons": "^0.2.5",
|
||||
"flowbite": "^1.8.1",
|
||||
"flowbite-svelte": "^0.44.18",
|
||||
"flowbite-svelte-icons": "^0.4.4",
|
||||
"moment": "^2.29.4",
|
||||
"sharp": "^0.32.6",
|
||||
"svelte-awesome": "^3.2.0",
|
||||
"svelte-awesome": "^3.2.1",
|
||||
"svelte-codemirror-editor": "^1.1.0",
|
||||
"svelte-spa-router": "^3.3.0",
|
||||
"zod": "^3.21.4"
|
||||
"zod": "^3.22.4"
|
||||
}
|
||||
}
|
||||
|
@ -11,7 +11,7 @@
|
||||
|
||||
function selectItem(item: {name: string, value: string}) {
|
||||
selected = item.value
|
||||
searchValue = item.name
|
||||
searchValue = ""
|
||||
open = false
|
||||
}
|
||||
</script>
|
||||
|
@ -24,6 +24,7 @@ $: console.log(availableBranches)
|
||||
async function createBranch() {
|
||||
const name = prompt("Branch name:")
|
||||
if (name) {
|
||||
selected = null
|
||||
await $pageRepo.createBranch(name)
|
||||
let inter = setInterval(() => {
|
||||
branches.reload()
|
||||
@ -36,9 +37,9 @@ async function createBranch() {
|
||||
}
|
||||
}
|
||||
|
||||
async function deleteBranch() {
|
||||
async function deleteBranch(con: boolean = false) {
|
||||
if (selectedBranch !== "master") {
|
||||
let conf = confirm("Are you sure you want to delete this branch?")
|
||||
let conf = con || confirm("Are you sure you want to delete this branch?")
|
||||
if(conf) {
|
||||
await $pageRepo.deleteBranch(selectedBranch)
|
||||
let inter = setInterval(() => {
|
||||
@ -59,10 +60,19 @@ async function createFile() {
|
||||
let name = prompt("File name:", "pages/en/[Name]")
|
||||
if (name) {
|
||||
await $pageRepo.createFile(`${name}.md`, selectedBranch)
|
||||
reload()
|
||||
}
|
||||
}
|
||||
|
||||
function reload() {
|
||||
const w = selectedBranch
|
||||
selectedBranch = "###!"
|
||||
selectedBranch = w
|
||||
}
|
||||
}
|
||||
|
||||
async function mergeBranch() {
|
||||
await $pageRepo.merge(selectedBranch, `Go live of ${selectedBranch}`)
|
||||
await deleteBranch(true)
|
||||
}
|
||||
|
||||
</script>
|
||||
@ -84,9 +94,15 @@ async function createFile() {
|
||||
<div class="border-b border-b-gray-600 pb-2 flex justify-between">
|
||||
<TypeAheadSearch items={availableBranches} bind:selected={selectedBranch} bind:searchValue />
|
||||
<div>
|
||||
{#if selectedBranch !== "master"}
|
||||
<Button on:click={mergeBranch}>Merge Branch</Button>
|
||||
{:else}
|
||||
<Button on:click={createBranch}>Create Branch</Button>
|
||||
{/if}
|
||||
<Button on:click={createFile} color="alternative">Create File</Button>
|
||||
{#if selectedBranch !== "master"}
|
||||
<Button on:click={deleteBranch} color="ghost">Delete Branch</Button>
|
||||
{/if}
|
||||
</div>
|
||||
</div>
|
||||
{@const pagesMap = mapToMap(pages)}
|
||||
@ -111,7 +127,7 @@ async function createFile() {
|
||||
</Card>
|
||||
<Card class="!max-w-full" style="grid-column: 2/4">
|
||||
{#if selected}
|
||||
<Editor pageId={selected} branch={selectedBranch} />
|
||||
<Editor pageId={selected} branch={selectedBranch} on:reload={reload} />
|
||||
{/if}
|
||||
</Card>
|
||||
</div>
|
||||
|
@ -7,10 +7,14 @@
|
||||
import type {Page} from "../../types/page.ts";
|
||||
import {materialDark} from '@ddietr/codemirror-themes/material-dark.js'
|
||||
import {EditOutline} from "flowbite-svelte-icons";
|
||||
import {createEventDispatcher} from "svelte";
|
||||
|
||||
export let pageId: number;
|
||||
export let branch: string;
|
||||
$: pageFuture = $pageRepo.getPage(pageId).then(getPage);
|
||||
|
||||
let dispatcher = createEventDispatcher();
|
||||
|
||||
$: pageFuture = $pageRepo.getPage(pageId, branch).then(getPage);
|
||||
let pageContent = "";
|
||||
let page: Page | null = null;
|
||||
|
||||
@ -21,11 +25,17 @@
|
||||
}
|
||||
|
||||
function savePage() {
|
||||
let message = window.prompt("Commit message:")
|
||||
let message = window.prompt("Commit message:", "Update " + page!.name)
|
||||
if (message) {
|
||||
$pageRepo.updatePage(pageId, pageContent, page!.sha, message)
|
||||
} else {
|
||||
alert("Commit message is required")
|
||||
$pageRepo.updatePage(pageId, pageContent, page!.sha, message, branch)
|
||||
}
|
||||
}
|
||||
|
||||
async function deletePage() {
|
||||
let message = window.prompt("Commit message:", "Delete " + page!.name)
|
||||
if (message) {
|
||||
await $pageRepo.deletePage(pageId, message, page!.sha, branch)
|
||||
dispatcher("reload")
|
||||
}
|
||||
}
|
||||
</script>
|
||||
@ -37,6 +47,9 @@
|
||||
<div>
|
||||
<Toolbar class="!bg-gray-900">
|
||||
<ToolbarGroup slot="end">
|
||||
<ToolbarButton on:click={deletePage}>
|
||||
Delete
|
||||
</ToolbarButton>
|
||||
<ToolbarButton color="primary" on:click={savePage}>
|
||||
Save
|
||||
</ToolbarButton>
|
||||
|
@ -45,4 +45,12 @@ export class PageRepo {
|
||||
public async createFile(path: string, branch: string = "master"): Promise<void> {
|
||||
await fetchWithToken(this.token, `/page?branch=${branch}`, {method: "POST", body: JSON.stringify({path})})
|
||||
}
|
||||
|
||||
public async merge(branch: string, message: string): Promise<void> {
|
||||
await fetchWithToken(this.token, `/page/branch/merge`, {method: "POST", body: JSON.stringify({branch, message})})
|
||||
}
|
||||
|
||||
public async deletePage(id: number, message: string, sha: string, branch: string = "master"): Promise<void> {
|
||||
await fetchWithToken(this.token, `/page/${id}?branch=${branch}`, {method: "DELETE", body: JSON.stringify({message, sha})})
|
||||
}
|
||||
}
|
@ -6,6 +6,7 @@ export const pages = defineCollection({
|
||||
schema: z.object({
|
||||
title: z.string().min(1).max(80),
|
||||
description: z.string().min(1).max(120),
|
||||
image: z.string().optional()
|
||||
})
|
||||
})
|
||||
|
||||
|
29
src/content/pages/de/about.md
Normale Datei
29
src/content/pages/de/about.md
Normale Datei
@ -0,0 +1,29 @@
|
||||
---
|
||||
title: Über uns
|
||||
description: Über SteamWar
|
||||
slug: ueber-uns
|
||||
---
|
||||
|
||||
|
||||
# Sicherheit
|
||||
|
||||
Wir legen Wert auf Sicherheit.
|
||||
|
||||
Deshalb hat niemand außer dir und denen, denen du die Rechte dazu gebt, ingame Zugriff auf deine Schematics und deine Bauwelt. Nur AdmiralSeekrank, YoyoNow, Chaoscaot und Lixfel haben (außerhalb von Minecraft) aus administrativen Gründen Zugriff darauf.
|
||||
|
||||
<hr>
|
||||
|
||||
# Stabilität
|
||||
|
||||
Unsere Server sollen laggfrei und stabil laufen.
|
||||
|
||||
Deswegen läuft jede Arena und jede Bauwelt auf einem eigenen Server. Damit bleibt deine Bauwelt so stabil und laggfrei wie möglich, solange du sie nicht selbst zum Absturz bringst :).
|
||||
|
||||
<hr>
|
||||
|
||||
# Komfort
|
||||
|
||||
Unser Bauserver bietet einmalige Funktionen, welche dir beim Entwickeln deiner Technik hilfreich sein werden.
|
||||
AirShips
|
||||
|
||||
Um eine Mitte zwischen den Spielmodi WarShip und WarGear zu finden, haben wir den Spielmodus AirShips entwickelt! Mit einem möglichst einfachen Regelwerk versuchen wir dabei, ein maximal spannendes und interessantes Spielerlebnis zu gestalten.
|
29
src/content/pages/de/join.md
Normale Datei
29
src/content/pages/de/join.md
Normale Datei
@ -0,0 +1,29 @@
|
||||
---
|
||||
title: Join Now!
|
||||
description: How to join SteamWar.de
|
||||
slug: jetzt-spielen
|
||||
---
|
||||
|
||||
|
||||
# Minecraft Java Edition
|
||||
|
||||
1. Klicke in Minecraft auf »Mehrspieler«
|
||||
2. Klicke auf »Server hinzufügen«
|
||||
3. Gib unter »Serveradresse« »**steamwar.de**« ein
|
||||
4. Drücke auf »Fertig«
|
||||
5. Doppelklicke auf den Server. Viel Spaß!
|
||||
|
||||
Hinweis: Wir empfehlen derzeit die Minecraft-Version **1.20.1** (du kannst aber auch gerne eine andere Version verwenden)
|
||||
|
||||
# Minecraft Bedrock Edition
|
||||
|
||||
Serveradresse: `steamwar.de`
|
||||
Port: `19132`
|
||||
|
||||
Möchtest du mit der Bedrock Edition den gleichen Nutzernamen, Bauwelt und Schematics deines Java-Accounts nutzen, musst du die hier beschriebenen Anweisungen durchführen: https://wiki.geysermc.org/floodgate/linking/
|
||||
|
||||
Möchtest du mit einer Konsolenfassung von Minecraft (wo keine freie Serverwahl möglich ist) auf SteamWar spielen musst du die folgenden Zusatzschritte durchführen: https://wiki.geysermc.org/geyser/using-geyser-with-consoles/
|
||||
|
||||
# Discord
|
||||
|
||||
Der Link zu unserem Discord Server ist https://discord.gg/J6fENfz6Zf oder Steamwar.de/discord
|
106
src/content/pages/de/verhaltensrichtlienien.md
Normale Datei
106
src/content/pages/de/verhaltensrichtlienien.md
Normale Datei
@ -0,0 +1,106 @@
|
||||
---
|
||||
title: Verhaltensrichtlinien
|
||||
description: Verhaltensrichtlinien von SteamWar.de
|
||||
slug: verhaltensrichtlinien
|
||||
---
|
||||
|
||||
# Allgemeines Verhalten
|
||||
|
||||
Es ist uns wichtig, dass sich unsere Spieler in einer freundlichen Umgebung befinden und sich wohlfühlen. Um dies zu gewährleisten, ist folgendes auf unserem Server nicht gestattet
|
||||
|
||||
1. Belästigungen jeglicher Art sind verboten. Dazu gehört z.B. Spam in jeglicher Form, Mobbing, Beleidigungen, Trolling, Hassrede, sexuelle Belästigung, Drohungen, öffentliche Demütigung oder Entwürdigung, Extremismus und Diskriminierung. Dazu gehören unter anderem Text, Audio und visuelle Inhalte (Team-)Namen und Kürzel, sowie Bauwerke
|
||||
2. Nicht jugendfreie Inhalte
|
||||
3. Unsportliches Verhalten gegenüber Neulingen, vor allem die Ausnutzung ihrer Unwissenheit
|
||||
4. Die Veröffentlichung oder Verbreitung privater Informationen anderer Spieler
|
||||
|
||||
# Chatverhalten
|
||||
|
||||
Das Benutzen von unsichtbaren Unicode-Zeichen sowie das Verwenden von Zeichen, die über die normale Chat-Größe hinausgehen, ist verboten!
|
||||
Chatinhalte müssen auf Deutsch oder Englisch verfasst werden
|
||||
|
||||
# Fairness
|
||||
|
||||
Um ein Faires miteinander zu ermöglichen, muss folgendes beachtet werden
|
||||
|
||||
1. Es ist verboten, unfaire Vorteile zu schaffen, die über Performance und Zooms hinausgehen. Darunter zählen Modifikationen des Spiels, Autoclicker und tools welche die Clickmenge künstlich erhöhen, Makros, Skripte oder anderweitige Applikationen, die das Spielgeschehen beeinflussen.
|
||||
2. Das Umgehen, oder der Versuch des Umgehens, von Systemen, die die Sicherheit oder Fairness gewährleisten sollen, ist strengstens untersagt.
|
||||
1. Das Verbreiten von Informationen oder Tools, die das Umgehen solcher Systeme ermöglichen, ist ebenfalls untersagt
|
||||
3. Es ist verboten, Modifikationen zu benutzen, mit denen es möglich ist, die Anordnung von Blöcken zu speichern oder diese anzeigen zu lassen. Darunter fallen u.a. Modifikationen wie World Downloader, Litematica und die Replay Mod. Letztere darf nur von Usern mit YouTube-Rang oder Mitgliedern des Serverteams, beginnend ab dem Supporter Rang, benutzt werden.
|
||||
1. Das Privileg, durch besondere Berechtigungen bestimmte Modifikationen nutzen zu können, darf nicht missbraucht werden.
|
||||
4. Es ist verboten, über Wege, die nicht durch die Unachtsamkeit eines Spielers ermöglicht wurden, den Aufbau von Redstone-Schaltungen, Winkeln und Prinzipien sowie ganzen Kanonen und Schildtechniken zu kopieren oder durch das unerlaubte Erlangen von Informationen selbst umzusetzen. Dies gilt als Techklau und wird hart bestraft.
|
||||
1. Es ist verboten, geklaute Tech oder Informationen über diese selbst zu benutzen, egal ob sie selbst geklaut wurden, durch Weitergabe oder ähnliche Methoden erlangt wurden. Dazu zählt auch der Download oder das Kopieren von Tech.
|
||||
5. Es ist strengstens verboten, Informationen zu verbreiten, die durch Regelverstöße erlangt wurden, unabhängig davon, wann diese stattgefunden haben. Fälle vor der Einführung dieser Regel werden entsprechend vermerkt. (Einführung der Regel erfolgte am 26. April 2023)
|
||||
6. Mitglieder des eigenen Teams dürfen nicht willentlich behindert werden, solange es nicht anderweitig vom Spielmodus oder Event gefordert wird.
|
||||
7. Der Missbrauch von Features, die Entities, welche du normalerweise nicht sehen könntest, sichtbar machen, ist verboten. Dazu zählen unter anderem Features, die Chunks neu laden, wie F3+A oder Shader reloads.
|
||||
|
||||
# Serverintegrität
|
||||
|
||||
Um die Serversicherheit und die Zukunft unserer Community gewährleisten zu können, müssen folgende Richtlinien beachtet werden
|
||||
|
||||
1. Angriffe gegen den Server, das Benutzen von Proxyservern, Virtual Private Networks und IP-Changern, um dem Server zu schaden, sind in jeglicher Form untersagt.
|
||||
2. Das Umgehen jeglicher vom Serverteam erteilten Bestrafungen ist verboten.
|
||||
3. Es ist verboten, Spiel- und/oder Pluginfehler auszunutzen.
|
||||
1. Es ist verboten, Informationen über Pluginfehler zu verbreiten, wenn diese zu unfairen Vorteilen führen. Diese müssen zwangsläufig dem Serverteam gemeldet werden.
|
||||
4. Verhalten, welches die Integrität der Community in einem unverhältnismäßigen Maß beeinträchtigt, kann sanktioniert werden
|
||||
5. Teams, welche einen unverhältnismäßig negativen Effekt auf den Server, die Community und dessen Zukunft haben, können nach Verwarnung aufgelöst werden.
|
||||
1. Sollten von denselben Mitgliedern weiter Teams erstellt werden, welche unter diesen Paragraph fallen, können weitere Strafen folgen.
|
||||
|
||||
# Verhalten gegenüber dem Serverteam
|
||||
|
||||
1. Entscheidungen des Serverteams stehen nicht zur Diskussion.
|
||||
2. Anweisungen von Teammitgliedern sind zu befolgen, und bei Verweigerung wird bestraft!
|
||||
3. Das Erfragen von Rechten wie z.B. „Supporter“ oder „Moderator“ ist untersagt.
|
||||
4. Das Anlügen des Serverteams kann Strafen entweder verlängern oder zu einer neuen Bestrafung führen, selbst wenn der Grund der Befragung zu keiner Bestrafung geführt hätte. Dies trifft lediglich zu, wenn es bei der Befragung um einen möglichen Regelbruch geht.
|
||||
5. Das mehrfache Einsenden einer oder mehrerer Schematics, ohne die bemängelten Eigenschaften zu beheben, ist zu vermeiden.
|
||||
6. Das Verwenden von Nametags vor und nach dem Namen (z.B.: [Moderator], (Admin), {Developer} oder |Sup|) ist strengstens verboten.
|
||||
7. Angriffe gegen ein Serverteam Mitglied werden als Angriff gegen das gesamte Serverteam gewertet
|
||||
8. Griefing auf der Buildercloud ist verboten.
|
||||
9. Es ist verboten, das Serverteam zu täuschen oder dies zu versuchen. Dies betrifft insbesondere den Prüfvorgang.
|
||||
|
||||
# Werbung
|
||||
|
||||
1. Werbung in jeglicher Form muss vor Veröffentlichung durch die Serverleitung genehmigt werden. Ausgenommen sind hier Spieler mit dem YouTube-Rang, welche jederzeit für ihre eigenen Inhalte werben dürfen, solange diese den Server einbeziehen und das Werben in Maßen geschieht.
|
||||
2. Inhalte, die als Werbung gewertet werden könnten, dürfen außerhalb von Paragraph 6.1 nur auf ausdrücklichen Wunsch eines Spielers für diesen veröffentlicht werden. Diese Ausnahme darf nicht missbraucht werden.
|
||||
|
||||
# Richtlinien im Bezug auf Regelbrüche
|
||||
|
||||
Folgende Richtlinien befassen sich mit dem Verhalten um jegliche Regelbrüche
|
||||
|
||||
1. Spieler zu Regelbrüchen zu verleiten wird bestraft
|
||||
2. Das Nicht-Melden oder Distanzieren von einem Verstoß, der die Fairness oder Serverintegrität beeinträchtigt, wird als Mitwisserschaft betrachtet und somit auch als Regelbruch geahndet. Jeder Spieler ist dazu aufgefordert, verdächtiges Verhalten oder Verstöße gegen die Regeln umgehend dem Serverteam zu melden, um eine faire und integre Spielumgebung zu gewährleisten.
|
||||
|
||||
# Handel
|
||||
|
||||
1. Jeglicher Handel, egal ob mit echter oder virtueller Ware, ist verboten und wird dementsprechend bestraft.
|
||||
2. Bauten, die auf oder mithilfe von SteamWar.de entstanden sind, dürfen nicht verkauft werden. Das bezieht sich auch auf Handel außerhalb von SteamWar.
|
||||
|
||||
# Teamserver Integration
|
||||
|
||||
1. Die Verhaltensrichtlinien gelten auch für Team-Server, die über die Team-Server-Integration mit dem SteamWar-Netzwerk verbunden sind, sofern mehr Spieler als die des verbundenen Teams und wenige weitere ausgewählte Personen auf dem Team-Server zugelassen sind. Ausgenommen hiervon sind Paragraph 4.3.1, da Vorfälle dieser Art dem Serverbetreiber gemeldet werden müssen. Es sei denn es geht um SteamWar, sowie Paragraph 3.1.
|
||||
2. Das Hinzufügen von Regeln, welche unsere Verhaltensrichtlinien erweitern ist erlaubt, solange diese nicht unsere Verhaltensrichtlinien verletzen.
|
||||
3. Diese Regel greift nur, solange entsprechende Spieler auch über SteamWar.de auf den Team-Server gelangt sind
|
||||
|
||||
# Events
|
||||
|
||||
1. Kampfmaschinen, die von SteamWar in limitierter Form verteilt wurden, dürfen nicht erneut eingesendet werden. Sollte dies dennoch geschehen, wird die Schematic abgelehnt. Bei wiederholtem Einsenden greift Paragraph 5.5.
|
||||
|
||||
Die Ausnutzung von Lücken in diesen Richtlinien und anderweitige Versuche diese zu umgehen, werden ebenso als Regelverstoß geahndet.
|
||||
Mögliche strafen sind:
|
||||
|
||||
* No Dev: Es ist dir nicht mehr möglich, dem Dev Server beizutreten.
|
||||
* No Fight: Es ist dir nicht mehr möglich, an Kämpfen teilzunehmen.
|
||||
* No Schem Receiving: Es ist anderen unmöglich, dich auf ihre Schematics hinzuzufügen oder diese auf deinem Bau zu verwenden. Außerdem kannst du keine Schematics von anderen Spielern kopieren oder Schematics hochladen.
|
||||
* No Schem Sharing: Du kannst niemandem mehr erlauben, deine Schematics zu verwenden. Zudem kann niemand auf deinem Bau eine Schematic erstellen. Du kannst auch keine Schematics herunterladen.
|
||||
* No Schem Submitting: Du kannst keine Schematics mehr einreichen.
|
||||
* No Teamserver: Du kannst deinen Teamserver nicht mehr mit SteamWar verknüpfen.
|
||||
* No Event: Dein Team kann nicht mehr an Events teilnehmen.
|
||||
* Note: Es wird eine Notiz zu deinem Account hinzugefügt.
|
||||
* Ban: Du kannst nicht mehr auf dem Server spielen.
|
||||
* Mute: Du kannst nicht mehr im Chat schreiben.
|
||||
|
||||
Alle genannten Strafen können entweder temporär oder permanent sein.
|
||||
|
||||
Das Serverteam behält sich das Recht vor, diese Richtlinien jederzeit zu ändern oder zu ergänzen
|
||||
Unwissenheit schützt nicht vor Strafe!
|
||||
|
||||
Letztes update: `08.10.2023`
|
@ -3,5 +3,3 @@ title: About Us
|
||||
description: About SteamWar
|
||||
slug: about
|
||||
---
|
||||
|
||||
# About
|
106
src/content/pages/en/coc.md
Normale Datei
106
src/content/pages/en/coc.md
Normale Datei
@ -0,0 +1,106 @@
|
||||
---
|
||||
title: Code of Conduct
|
||||
description: Code of Conduct of SteamWar.de
|
||||
slug: code-of-conduct
|
||||
---
|
||||
|
||||
|
||||
# General behavior
|
||||
|
||||
It is crucial to us, that our players find themselves in a friendly environment
|
||||
|
||||
1. Harassment of all types is forbidden. This includes spam of any type, bullying, insults, trolling, hate speech, sexual harassment, threats, public humiliation or degradation, extremism, and discrimination. All of this applies to, among others, text, audio, and visual content, (team-) names and abbreviations as well as builds
|
||||
2. Adult content
|
||||
3. Unsportsmanlike behavior toward newcomers, especially taking advantage of their lack of knowledge
|
||||
4. The publication or distribution of private information of other players
|
||||
|
||||
# Chat behavior
|
||||
|
||||
1. Using invisible Unicode characters as well as characters larger than the normal chat size is prohibited
|
||||
2. You may only write or talk in English or German
|
||||
|
||||
# Fairness
|
||||
|
||||
In order to enable fairness, the following must be noted
|
||||
|
||||
1. It is forbidden to create unfair advantages that go beyond performance and zooms. This includes game modifications, auto clickers, and tools that artificially increase the amount of clicks, macros, scripts, or other applications that influence the gameplay.
|
||||
2. Circumventing, or attempting to circumvent, systems designed to ensure safety or fairness is strictly prohibited.
|
||||
1. The distribution of information or tools that enable the circumvention of such systems is also prohibited
|
||||
3. It is forbidden to use modifications that make it possible to save the arrangement of blocks or display them. This includes, among others, modifications such as World Downloader, Litematica, and the Replay Mod. The latter may only be used by users with YouTube rank, or members of the server team starting at Supporters.
|
||||
1. The right to use certain modifications through special permissions must not be abused.
|
||||
4. It is forbidden to copy the construction of redstone circuits, TNT arrangements, and technological principles, as well as entire cannons and shield techniques via ways not made possible by a player’s carelessness, or to implement them yourself by obtaining information without permission. This is considered tech theft and will be severely punished.
|
||||
1. It is forbidden to use stolen tech or information about it yourself, whether it was stolen yourself or obtained through sharing or other methods. This includes downloading or copying tech.
|
||||
5. It is strictly forbidden to publish information obtained through rule violations, regardless of when they occurred. Cases prior to the introduction of this rule will be noted accordingly. (This rule was introduced on April 26, 2023).
|
||||
6. Members of one’s team may not be willfully interfered with in an excessive way unless otherwise required by the game mode or event.
|
||||
7. The abuse of functionalities that grant visibility of entities normally hidden from view is strictly prohibited. This encompasses, but is not limited to, actions such as chunk reloading using hotkeys like F3+A or initiating shader reloads.
|
||||
|
||||
# Server integrity
|
||||
|
||||
To be able to guarantee server security and our communities future, the following guidelines must be followed
|
||||
|
||||
1. Attacks against the server, using proxy servers, virtual private networks and IP changers to harm the server are prohibited in any form.
|
||||
2. Bypassing any punishments given by the server team is prohibited.
|
||||
3. It is forbidden to exploit game and/or plugin bugs.
|
||||
1. It is forbidden to spread information about plugin errors if they lead to unfair advantages. These must be reported to the server team.
|
||||
4. Behavior which disproportionately impairs the communities integrity may be subject to sanctions.
|
||||
5. Teams which disproportionately affect the server, the community and it’s future, can be disbanded after being warned.
|
||||
1. If members of such a team continue to create similar teams, further penalties may follow
|
||||
|
||||
# Behavior toward the server team
|
||||
|
||||
1. Decisions made by the server team are not open for discussion.
|
||||
2. Instructions from team members must be followed, refusal will be punished
|
||||
3. Asking for rights like „supporter“ or „moderator“ is prohibited.
|
||||
4. Lying to the server team can either extend penalties or lead to a new penalty, even if the reason for the questioning had not led to a penalty. This only applies if the questioning is about a possible rule violation.
|
||||
5. Multiple submissions of one or more schematics without correcting the offending features should be avoided.
|
||||
6. Using nametags before and after the name (e.g..: [Moderator], (Admin), {Developer} or |Sup|) is strictly prohibited.
|
||||
7. Attacks against a server team member are considered an attack against the entire server team
|
||||
8. Griefing on the builder cloud is prohibited.
|
||||
9. It is forbidden to deceive or try to deceive the server team. This applies in particular to the schematic verification process.
|
||||
|
||||
# Advertisements
|
||||
|
||||
1. Advertising in any form must be approved by the server management before publication. Exceptions to this are players with the YouTube rank, who may advertise their own content at any time as long as it involves the server and the advertising is done in moderation.
|
||||
2. Outside of paragraph 6.1, content that could be considered advertising may only be published as a response to a player asking for a link or a name. This may not be abused
|
||||
|
||||
# Guidelines in relation to rule-breaking
|
||||
|
||||
The following guidelines deal with the behavior around any rule breaks
|
||||
|
||||
1. Encouraging players to break the rules will be punished
|
||||
2. Failure to report or distance yourself from a violation that affects fairness or server integrity will be considered complicity and is therefore also punishable as a rule violation. Every player is encouraged to report any suspicious behavior or rule violations to the server team immediately to ensure a fair and safe gaming environment.
|
||||
|
||||
# Trade
|
||||
|
||||
1. Any trade, whether with real or virtual goods, is prohibited and punished accordingly.
|
||||
2. You may not trade goods that were created on or with SteamWar.de. This includes Trading outside SteamWar
|
||||
|
||||
# Teamserver Integration
|
||||
|
||||
1. The behavioral guidelines also apply to team servers connected to the SteamWar network via the team server integration, provided that more players than those of the connected team and few other selected people are allowed on the team server. Exceptions to this are paragraph 4.3.1, as incidents of this nature must be reported to the according server operator unless it is about SteamWar, as well as paragraph 3.1.
|
||||
2. Adding rules that expand our behavioral guidelines is allowed as long as they do not violate our code of conduct.
|
||||
3. This rule only applies as long as the corresponding players have also entered the team server via SteamWar.de
|
||||
|
||||
# Events
|
||||
|
||||
1. Schematics that have been distributed by SteamWar in limited form may not be resubmitted. If this happens nevertheless, the schematic will be rejected. In case of repeated submissions, paragraph 5.5 applies.
|
||||
|
||||
**The exploitation of loopholes in these guidelines and otherwise attempting to circumvent them will also be penalized as a rule violation.**
|
||||
|
||||
## Possible penalties are:
|
||||
* No Dev: It is no longer possible for you to join the dev server.
|
||||
* No Fight: It is no longer possible for you to participate in fights.
|
||||
* No Schem Receiving: It is impossible for others to add you to their schematics or use them on your build server. Also, you cannot copy schematics from other players or upload schematics.
|
||||
* No Schem Sharing: You can no longer allow anyone to use your schematics. Also, no one can create a schematic on your build server. You also can’t download schematics.
|
||||
* No Schem Submitting: You can no longer submit schematics.
|
||||
* No Team Server: You can no longer link your team server to SteamWar.
|
||||
* No Event: Your team can no longer participate in events.
|
||||
* Note: A note will be added to your account.
|
||||
* Ban: You can no longer play on the server.
|
||||
* Mute: You can no longer write in the chat.
|
||||
|
||||
All the penalties above can be either temporary or permanent.
|
||||
|
||||
The server team reserves the right to change or amend these guidelines at any time. Unawareness does not protect from punishment!
|
||||
|
||||
Last update: `2023.10.08`
|
13
src/content/pages/en/imprint.md
Normale Datei
13
src/content/pages/en/imprint.md
Normale Datei
@ -0,0 +1,13 @@
|
||||
---
|
||||
title: Imprint
|
||||
description: Imprint of SteamWar.de according to § 5 TMG
|
||||
slug: imprint
|
||||
---
|
||||
|
||||
```
|
||||
Christian Mandt
|
||||
Euskirchener Str. 8
|
||||
53913 Swisttal
|
||||
Germany
|
||||
E-Mail: chrissi.mandt@gmail.com
|
||||
```
|
@ -1,7 +0,0 @@
|
||||
---
|
||||
title: Join Now!
|
||||
description: How to join SteamWar.de
|
||||
slug: join
|
||||
---
|
||||
|
||||
Save2!
|
205
src/env.d.ts
vendored
205
src/env.d.ts
vendored
@ -2,3 +2,208 @@
|
||||
/// <reference types="astro/client" />
|
||||
|
||||
/// <reference path="../.astro-i18n/generated.d.ts" />
|
||||
|
||||
/// <reference path="..\.astro-i18n\generated.d.ts" />
|
||||
|
||||
|
||||
// ###> astro-i18n/type-generation ###
|
||||
type PrimaryLocale = "en"
|
||||
type SecondaryLocale = "de"
|
||||
type Locale = PrimaryLocale | SecondaryLocale
|
||||
type RouteParameters = {"/blog":undefined;"/":undefined;"/[...slug]":{"slug":unknown;};"/admin":undefined;}
|
||||
type Route = keyof RouteParameters
|
||||
type TranslationVariables = {"home.page":object|undefined;"home.title.first":object|undefined;"home.title.second":object|undefined;"home.subtitle.1":object|undefined;"home.subtitle.2":object|undefined;"home.subtitle.3":object|undefined;"home.join":object|undefined;"home.benefits.historic.title":object|undefined;"home.benefits.historic.description.1":object|undefined;"home.benefits.historic.description.2":object|undefined;"home.benefits.server.title":object|undefined;"home.benefits.server.description":object|undefined;"home.benefits.events.title":object|undefined;"home.benefits.events.description.1":object|undefined;"home.benefits.events.description.2":object|undefined;"home.prefix.Dev":object|undefined;"home.prefix.Mod":object|undefined;}
|
||||
type Translation = keyof TranslationVariables
|
||||
type Environment = "none"|"node"|"browser"
|
||||
declare module "astro-i18n" {
|
||||
type GetStaticPathsProps = {paginate:Function;rss:Function}
|
||||
type GetStaticPathsItem = {params:Record<string,number|string|undefined>;props?:Record<string,unknown>}
|
||||
type DeepStringRecord = {[key: string]:string|DeepStringRecord}
|
||||
type TranslationDirectory = {i18n?:string;pages?: string}
|
||||
export type Translations = {[group: string]:{[locale: string]: DeepStringRecord}}
|
||||
export type TranslationFormatters = {[formatterName: string]:(value:unknown,...args:unknown[])=>unknown}
|
||||
export type TranslationLoadingRules = {groups:string[];routes: string[]}[]
|
||||
export type SegmentTranslations = {[secondaryLocale: string]:{[segment: string]:string}}
|
||||
export interface AstroI18nConfig {primaryLocale:string;secondaryLocales:string[];fallbackLocale:string;showPrimaryLocale:boolean;trailingSlash:"always"|"never";run:"server"|"client+server";translations:Translations;translationLoadingRules:TranslationLoadingRules;translationDirectory:TranslationDirectory;routes:SegmentTranslations;}
|
||||
/** Typed astro-i18n config definition. */
|
||||
export function defineAstroI18nConfig(config: Partial<AstroI18nConfig>): Partial<AstroI18nConfig>
|
||||
/** The `astro-i18n` middleware. */
|
||||
export function useAstroI18n(
|
||||
config?: Partial<AstroI18nConfig> | string,
|
||||
formatters?: TranslationFormatters,
|
||||
): (...args: any[]) => any
|
||||
/** Workaround function to make astroI18n work inside getStaticPaths. This is because Astro's getStaticPaths runs before everything which doesn't allows astroI18n to update its state automatically. */
|
||||
function createGetStaticPaths(
|
||||
callback: (
|
||||
props: GetStaticPathsProps,
|
||||
) => GetStaticPathsItem[] | Promise<GetStaticPathsItem[]>,
|
||||
): (props: GetStaticPathsProps & {
|
||||
astroI18n?: {
|
||||
locale: string;
|
||||
};
|
||||
}) => Promise<GetStaticPathsItem[]>
|
||||
/**
|
||||
* @param key The translation key, for example `"my.nested.translation.key"`.
|
||||
* @param properties An object containing your interpolation variables and/or your variants, for example `{ variant: 3, interpolation: "text" }`.
|
||||
* @param options `route`: Overrides the current route, you will be able to access that route's translations. `locale`: Overrides the current locale, this allows you to control which language you want to translate to. `fallbackLocale`: Overrides the fallback locale.
|
||||
*/
|
||||
export function t<T extends Translation>(
|
||||
key: T | string & {},
|
||||
...args: undefined extends TranslationVariables[T]
|
||||
? [
|
||||
properties?: keyof TranslationVariables extends T
|
||||
? Record<string, unknown>
|
||||
: TranslationVariables[T],
|
||||
options?: {
|
||||
route?: Route | string & {}
|
||||
locale?: Locale | string & {}
|
||||
fallbackLocale?: Locale | string & {}
|
||||
}
|
||||
]
|
||||
: [
|
||||
properties: TranslationVariables[T],
|
||||
options?: {
|
||||
route?: Route | string & {}
|
||||
locale?: Locale | string & {}
|
||||
fallbackLocale?: Locale | string & {}
|
||||
}
|
||||
]
|
||||
): string
|
||||
/**
|
||||
* @param route A route in any of the configured languages, for example `"/en/my/english/route/[param]"`.
|
||||
* @param parameters An object containing your route parameters, for example `{ slug: "my-blog-post-slug" }`.
|
||||
* @param options `targetLocale`: Overrides the target locale. `routeLocale`: Overrides the given route locale, this is useful if astro-i18n cannot figure out the route's locale. `showPrimaryLocale`: Overrides the showPrimaryLocale parameter. `query`: Adds these query parameters at the end of the translated route.
|
||||
*/
|
||||
export function l<T extends Route>(
|
||||
route: T | string & {},
|
||||
...args: T extends keyof RouteParameters
|
||||
? undefined extends RouteParameters[T]
|
||||
? [
|
||||
parameters?: Record<string, string>,
|
||||
options?: {
|
||||
targetLocale?: string,
|
||||
routeLocale?: string,
|
||||
showPrimaryLocale?: string,
|
||||
query?: Record<string, unknown>
|
||||
}
|
||||
]
|
||||
: [
|
||||
parameters: RouteParameters[T],
|
||||
options?: {
|
||||
targetLocale?: string,
|
||||
routeLocale?: string,
|
||||
showPrimaryLocale?: string,
|
||||
query?: Record<string, unknown>
|
||||
}
|
||||
]
|
||||
: [
|
||||
parameters?: Record<string, string>,
|
||||
options?: {
|
||||
targetLocale?: string,
|
||||
routeLocale?: string,
|
||||
showPrimaryLocale?: string,
|
||||
query?: Record<string, unknown>
|
||||
}
|
||||
]
|
||||
): string
|
||||
class AstroI18n {
|
||||
/** The detected runtime environment. */
|
||||
environment: Environment
|
||||
/** The current page route. */
|
||||
route: string
|
||||
/** All page routes. For example: `["/", "/about", "/posts/[slug]"]` */
|
||||
pages: string[]
|
||||
/** The equivalent page for the current route. For example if route is equal to `"/posts/my-cool-cat"` this could return `"/posts/[slug]"`. */
|
||||
page: string
|
||||
/** The current page locale. */
|
||||
locale: Locale
|
||||
/** All configured locales. */
|
||||
locales: Locale[]
|
||||
/** The default/primary locale. */
|
||||
primaryLocale: PrimaryLocale
|
||||
/** Locales other than the default/primary one. */
|
||||
secondaryLocales: SecondaryLocale[]
|
||||
/** The fallback locale, when a translation is missing in a locale the fallback locale will be used to find a replacement. */
|
||||
fallbackLocale: Locale
|
||||
/** True when astro-i18n is initialized. */
|
||||
isInitialized: boolean
|
||||
/**
|
||||
* @param key The translation key, for example `"my.nested.translation.key"`.
|
||||
* @param properties An object containing your interpolation variables and/or your variants, for example `{ variant: 3, interpolation: "text" }`.
|
||||
* @param options `route`: Overrides the current route, you will be able to access that route's translations. `locale`: Overrides the current locale, this allows you to control which language you want to translate to. `fallbackLocale`: Overrides the fallback locale.
|
||||
*/
|
||||
t<T extends Translation>(
|
||||
key: T | string & {},
|
||||
...args: undefined extends TranslationVariables[T]
|
||||
? [
|
||||
properties?: keyof TranslationVariables extends T
|
||||
? Record<string, unknown>
|
||||
: TranslationVariables[T],
|
||||
options?: {
|
||||
route?: Route | string & {}
|
||||
locale?: Locale | string & {}
|
||||
fallbackLocale?: Locale | string & {}
|
||||
}
|
||||
]
|
||||
: [
|
||||
properties: TranslationVariables[T],
|
||||
options?: {
|
||||
route?: Route | string & {}
|
||||
locale?: Locale | string & {}
|
||||
fallbackLocale?: Locale | string & {}
|
||||
}
|
||||
]
|
||||
): string
|
||||
/**
|
||||
* @param route A route in any of the configured languages, for example `"/en/my/english/route/[param]"`.
|
||||
* @param parameters An object containing your route parameters, for example `{ slug: "my-blog-post-slug" }`.
|
||||
* @param options `targetLocale`: Overrides the target locale. `routeLocale`: Overrides the given route locale, this is useful if astro-i18n cannot figure out the route's locale. `showPrimaryLocale`: Overrides the showPrimaryLocale parameter. `query`: Adds these query parameters at the end of the translated route.
|
||||
*/
|
||||
l<T extends Route>(
|
||||
route: T | string & {},
|
||||
...args: T extends keyof RouteParameters
|
||||
? undefined extends RouteParameters[T]
|
||||
? [
|
||||
parameters?: Record<string, string>,
|
||||
options?: {
|
||||
targetLocale?: string,
|
||||
routeLocale?: string,
|
||||
showPrimaryLocale?: string,
|
||||
query?: Record<string, unknown>
|
||||
}
|
||||
]
|
||||
: [
|
||||
parameters: RouteParameters[T],
|
||||
options?: {
|
||||
targetLocale?: string,
|
||||
routeLocale?: string,
|
||||
showPrimaryLocale?: string,
|
||||
query?: Record<string, unknown>
|
||||
}
|
||||
]
|
||||
: [
|
||||
parameters?: Record<string, string>,
|
||||
options?: {
|
||||
targetLocale?: string,
|
||||
routeLocale?: string,
|
||||
showPrimaryLocale?: string,
|
||||
query?: Record<string, unknown>
|
||||
}
|
||||
]
|
||||
): string
|
||||
/** Adds new translations at runtime. */
|
||||
addTranslations(translations: Translations): this
|
||||
/** Adds new translation formatters at runtime. */
|
||||
addFormatters(translationFormatters: TranslationFormatters): this
|
||||
/** Adds new translation loading rules at runtime. */
|
||||
addTranslationLoadingRules(translationLoadingRules: TranslationLoadingRules): this
|
||||
/** Adds new route segment translations at runtime. */
|
||||
addRoutes(routes: SegmentTranslations): this
|
||||
/** Tries to parse one of the configured locales out of the given route. If no configured locale is found it will return `null`. */
|
||||
extractRouteLocale(route: string): string|null
|
||||
/** Initializes astro-i18n on the server-side. */
|
||||
initialize(config?: Partial<AstroI18nConfig> | string, formatters?: TranslationFormatters = {}): Promise<void>
|
||||
}
|
||||
export const astroI18n: AstroI18n
|
||||
}
|
||||
// ###< astro-i18n/type-generation ###
|
||||
|
66
src/i18n/common/de.json
Normale Datei
66
src/i18n/common/de.json
Normale Datei
@ -0,0 +1,66 @@
|
||||
{
|
||||
"home": {
|
||||
"page": "SteamWar - Startseite",
|
||||
"subtitle": {
|
||||
"1": "Spieler Online: ",
|
||||
"2": "WarGears, AirShips, WarShips"
|
||||
},
|
||||
"join": "Jetzt Spielen",
|
||||
"benefits": {
|
||||
"historic": {
|
||||
"title": "Historische Spielmodi",
|
||||
"description": {
|
||||
"1": "Kämpfe mit Deinen alten WarGears und WarShips!",
|
||||
"2": "von 1.7 WarGears bis 1.12 WarShips kannst du deine alte Technik wiederverwenden!"
|
||||
}
|
||||
},
|
||||
"server": {
|
||||
"title": "Eigene Bauserver",
|
||||
"description": "Um beste Performance zu gewährleisten verfügt jeder Spieler einen eigenen Bauserver, welcher unabhängig von anderen Bauservern arbeitet."
|
||||
},
|
||||
"events": {
|
||||
"title": "Regelmäßige Events",
|
||||
"description": {
|
||||
"1": "Teste dein Können mit deinem Team bei regelmäßig stattfindenden Events.",
|
||||
"2": "Unser eigenes Eventsystem ist vielseitig verwendbar und ermöglicht einzigartige Kämpfe!"
|
||||
}
|
||||
}
|
||||
},
|
||||
"prefix": {
|
||||
"Admin": "Administrator",
|
||||
"Dev": "Developer",
|
||||
"Mod": "Moderator",
|
||||
"Sup": "Supporter",
|
||||
"Arch": "Architekt"
|
||||
}
|
||||
},
|
||||
"navbar": {
|
||||
"links": {
|
||||
"home": {
|
||||
"title": "Start",
|
||||
"about": "Über Uns",
|
||||
"downloads": "Downloads",
|
||||
"faq": "FAQ"
|
||||
},
|
||||
"announcements": "Ankünigungen",
|
||||
"rules": {
|
||||
"title": "Regeln",
|
||||
"gamemode": "Spielmodi",
|
||||
"wg": "WarGear",
|
||||
"mwg": "MiniWarGear",
|
||||
"ws": "WarShip",
|
||||
"as": "AirShip",
|
||||
"rotating": "Rotating",
|
||||
"megawg": "MegaWarGear",
|
||||
"micro": "MicroWarGear",
|
||||
"sf": "StreetFight",
|
||||
"general": "General",
|
||||
"coc": "Verhaltensrichtlinien"
|
||||
},
|
||||
"help": {
|
||||
"title": "Hilfe",
|
||||
"docs": "Dokumentation"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -1,4 +1,38 @@
|
||||
{
|
||||
"navbar": {
|
||||
"title": "SteamWar",
|
||||
"logo": {
|
||||
"alt": "SteamWar Logo"
|
||||
},
|
||||
"links": {
|
||||
"home": {
|
||||
"title": "Home",
|
||||
"about": "About",
|
||||
"downloads": "Downloads",
|
||||
"faq": "FAQ"
|
||||
},
|
||||
"announcements": "Announcements",
|
||||
"rules": {
|
||||
"title": "Rules",
|
||||
"gamemode": "Gamemodes",
|
||||
"wg": "WarGear",
|
||||
"mwg": "MiniWarGear",
|
||||
"ws": "WarShip",
|
||||
"as": "AirShip",
|
||||
"rotating": "Rotating",
|
||||
"megawg": "MegaWarGear",
|
||||
"micro": "MicroWarGear",
|
||||
"sf": "StreetFight",
|
||||
"general": "General",
|
||||
"coc": "Code of Conduct"
|
||||
},
|
||||
"help": {
|
||||
"title": "Help",
|
||||
"center": "Helpcenter",
|
||||
"docs": "Docs"
|
||||
}
|
||||
}
|
||||
},
|
||||
"home": {
|
||||
"page": "SteamWar - Home",
|
||||
"title": {
|
||||
@ -30,35 +64,13 @@
|
||||
"2": "Our own event system is very flexible and allows us to create unique turnaments."
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"navbar": {
|
||||
"title": "SteamWar",
|
||||
"logo": {
|
||||
"alt": "SteamWar Logo"
|
||||
},
|
||||
"links": {
|
||||
"home": {
|
||||
"title": "Home",
|
||||
"about": "About",
|
||||
"downloads": "Downloads",
|
||||
"faq": "FAQ"
|
||||
},
|
||||
"announcements": "Announcements",
|
||||
"rules": {
|
||||
"title": "Rules",
|
||||
"gamemode": "Gamemodes",
|
||||
"wg": "WarGear",
|
||||
"mwg": "MiniWarGear",
|
||||
"ws": "WarShip",
|
||||
"as": "AirShip",
|
||||
"rotating": "Rotating",
|
||||
"megawg": "MegaWarGear",
|
||||
"micro": "MicroWarGear",
|
||||
"sf": "StreetFight",
|
||||
"general": "General",
|
||||
"coc": "Code of Conduct"
|
||||
}
|
||||
"prefix": {
|
||||
"Admin": "Admin",
|
||||
"Dev": "Developer",
|
||||
"Mod": "Moderator",
|
||||
"Sup": "Supporter",
|
||||
"Arch": "Builder"
|
||||
}
|
||||
}
|
||||
}
|
BIN
src/images/2023-10-08_20.43.43.png
Normale Datei
BIN
src/images/2023-10-08_20.43.43.png
Normale Datei
Binäre Datei nicht angezeigt.
Nachher Breite: | Höhe: | Größe: 6.7 MiB |
@ -1,14 +1,14 @@
|
||||
---
|
||||
|
||||
import {astroI18n} from "astro-i18n";
|
||||
import icon from '../images/logo.png';
|
||||
import {getImage} from "astro:assets";
|
||||
import {astroI18n} from "astro-i18n";
|
||||
const { title, description } = Astro.props.frontmatter || Astro.props;
|
||||
|
||||
const iconImage = await getImage({src: icon, height: 32, width: 32, format: 'png', quality: 100});
|
||||
---
|
||||
|
||||
<html lang={astroI18n.langCode} class="dark">
|
||||
<html lang={astroI18n.locale} class="dark">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport"
|
||||
|
@ -1,10 +1,10 @@
|
||||
---
|
||||
import { Image } from "astro:assets";
|
||||
import Basic from "./Basic.astro";
|
||||
import { Image } from 'astro:assets';
|
||||
import '../styles/button.css';
|
||||
import localLogo from "../images/logo.png"
|
||||
import {YoutubeSolid, DiscordSolid} from "flowbite-svelte-icons"
|
||||
import {l, t} from "astro-i18n";
|
||||
import {YoutubeSolid} from "flowbite-svelte-icons"
|
||||
|
||||
const { title } = Astro.props;
|
||||
---
|
||||
@ -51,21 +51,18 @@ const { title } = Astro.props;
|
||||
<a class="btn btn-gray">{t("navbar.links.rules.micro")}</a>
|
||||
<a class="btn btn-gray">{t("navbar.links.rules.sf")}</a>
|
||||
<h2 class="px-2 text-gray-300">{t("navbar.links.rules.general")}</h2>
|
||||
<a class="btn btn-gray">{t("navbar.links.rules.coc")}</a>
|
||||
<a class="btn btn-gray" href={l("/code-of-conduct")}>{t("navbar.links.rules.coc")}</a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="btn-dropdown my-1">
|
||||
<a class="btn btn-gray" rel="prefetch">
|
||||
<span class="btn__text">Help</span>
|
||||
<span class="btn__text">{t("navbar.links.help.title")}</span>
|
||||
</a>
|
||||
<div>
|
||||
<a class="btn btn-gray">Helpcenter</a>
|
||||
<a class="btn btn-gray">Docs</a>
|
||||
<a class="btn btn-gray">{t("navbar.links.help.center")}</a>
|
||||
<a class="btn btn-gray">{t("navbar.links.help.docs")}</a>
|
||||
</div>
|
||||
</div>
|
||||
<a class="btn my-1">
|
||||
<span class="btn__text">Login</span>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</nav-bar>
|
||||
@ -108,11 +105,12 @@ const { title } = Astro.props;
|
||||
<a href={l("/")}>Stats</a>
|
||||
<a href={l("/")}>Code of conduct</a>
|
||||
<a href={l("/")}>Privacy Policy</a>
|
||||
<a href={l("/")}>Imprint</a>
|
||||
<a href={l("/imprint")}>Imprint</a>
|
||||
</div>
|
||||
<div class="footer-card">
|
||||
<h1>Social Media</h1>
|
||||
<a class="flex" href="/"><YoutubeSolid class="mr-2" /> YouTube</a>
|
||||
<a class="flex" href="/"><DiscordSolid class="mr-2" /> Discord</a>
|
||||
</div>
|
||||
</div>
|
||||
<span class="text-sm text-white text-center">© SteamWar.de - {new Date().getFullYear()}</span>
|
||||
|
@ -1,3 +0,0 @@
|
||||
{
|
||||
|
||||
}
|
6
src/middleware.ts
Normale Datei
6
src/middleware.ts
Normale Datei
@ -0,0 +1,6 @@
|
||||
import { sequence } from "astro/middleware"
|
||||
import { useAstroI18n } from "astro-i18n"
|
||||
|
||||
const astroI18n = useAstroI18n()
|
||||
|
||||
export const onRequest = sequence(astroI18n)
|
@ -1,12 +1,12 @@
|
||||
---
|
||||
import { getCollection } from 'astro:content'
|
||||
import {astroI18n} from "astro-i18n";
|
||||
import NavbarLayout from "../layouts/NavbarLayout.astro";
|
||||
import {astroI18n, createGetStaticPaths} from "astro-i18n";
|
||||
|
||||
export async function getStaticPaths() {
|
||||
export const getStaticPaths = async () => {
|
||||
let posts = await getCollection("pages");
|
||||
|
||||
return posts.filter(value => value.id.split("/")[0] === astroI18n.langCode).map((page) => ({
|
||||
return posts.filter(value => value.id.split("/")[0] === astroI18n.locale).map((page) => ({
|
||||
props: { page }, params: { slug: page.slug }
|
||||
}) )
|
||||
}
|
||||
@ -19,7 +19,6 @@ const { Content } = await page.render();
|
||||
<NavbarLayout title={page.data.title}>
|
||||
<article>
|
||||
<h1 class="text-left">{page.data.title}</h1>
|
||||
<p class="text-left border-b-2 border-neutral-800">{page.data.description}</p>
|
||||
<Content />
|
||||
</article>
|
||||
</NavbarLayout>
|
||||
@ -30,15 +29,22 @@ const { Content } = await page.render();
|
||||
@apply mx-auto bg-gray-100 px-4 py-8 rounded-b-md shadow-md pt-40 sm:pt-28 md:pt-14
|
||||
dark:text-white dark:bg-neutral-900;
|
||||
|
||||
p {
|
||||
@apply my-4 leading-7;
|
||||
}
|
||||
|
||||
h1 {
|
||||
@apply text-4xl font-bold mt-4 text-center;
|
||||
}
|
||||
|
||||
h2 {
|
||||
@apply text-3xl font-bold mt-4;
|
||||
}
|
||||
|
||||
h3 {
|
||||
@apply text-2xl font-bold mt-4;
|
||||
}
|
||||
|
||||
h4 {
|
||||
@apply text-xl font-bold mt-4;
|
||||
}
|
||||
@ -47,8 +53,20 @@ const { Content } = await page.render();
|
||||
@apply text-blue-500 hover:text-blue-700;
|
||||
}
|
||||
|
||||
ol>li, ul>li {
|
||||
@apply ml-4;
|
||||
}
|
||||
|
||||
ol {
|
||||
@apply list-decimal;
|
||||
}
|
||||
|
||||
ul {
|
||||
@apply list-disc;
|
||||
}
|
||||
|
||||
pre.astro-code {
|
||||
@apply w-fit p-4 rounded-md border-2 border-gray-600;
|
||||
@apply w-fit p-4 rounded-md border-2 border-gray-600 my-4;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
|
@ -1,8 +0,0 @@
|
||||
---
|
||||
|
||||
import NavbarLayout from "../layouts/NavbarLayout.astro";
|
||||
---
|
||||
|
||||
<NavbarLayout title="About Us">
|
||||
|
||||
</NavbarLayout>
|
@ -2,12 +2,39 @@
|
||||
import NavbarLayout from "../layouts/NavbarLayout.astro";
|
||||
|
||||
import { Image } from "astro:assets";
|
||||
import localBau from "../images/bau.jpg";
|
||||
import {l, t} from "astro-i18n";
|
||||
import localBau from "../images/2023-10-08_20.43.43.png";
|
||||
import {CaretRight, Archive, Rocket, Bell} from "@astropub/icons"
|
||||
import {astroI18n, l, t} from "astro-i18n";
|
||||
|
||||
const teamMember = await fetch("http://localhost:1337/data/team").then(value => value.json())
|
||||
|
||||
function groupByGroup(array) {
|
||||
const groups = new Map<string, any>();
|
||||
|
||||
for (let user of array) {
|
||||
if (groups.has(user.prefix)) {
|
||||
groups.get(user.prefix).push(user)
|
||||
} else {
|
||||
groups.set(user.prefix, [user])
|
||||
}
|
||||
}
|
||||
|
||||
return groups
|
||||
}
|
||||
|
||||
const groupedTeamMember = groupByGroup(teamMember)
|
||||
|
||||
function mapMap<T, K, J>(i: Map<T, K>, fn: (key: T, value: K) => J): J[] {
|
||||
const arr = []
|
||||
for (let [key, value] of i) {
|
||||
arr.push(fn(key, value))
|
||||
}
|
||||
return arr
|
||||
}
|
||||
|
||||
---
|
||||
|
||||
<NavbarLayout title={t("home.page")}>
|
||||
<NavbarLayout title={t("home.page")} description="SteamWar.de Homepage">
|
||||
<div class="w-screen h-screen relative mb-4">
|
||||
<Image src={localBau} alt="Bau" width="1920" height="1080" class="w-screen object-cover rounded-b-2xl shadow-2xl dark:brightness-75" style="height: calc(100vh + 1rem)" draggable="false" />
|
||||
<drop-in class="absolute top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2 flex flex-col items-center">
|
||||
@ -80,7 +107,7 @@ import {CaretRight, Archive, Rocket, Bell} from "@astropub/icons"
|
||||
</script>
|
||||
</drop-in>
|
||||
</div>
|
||||
<section class="w-screen flex flex-col items-center justify-center">
|
||||
<section class="w-screen flex flex-col items-center justify-center shadow-2xl rounded-b-2xl pb-8">
|
||||
<div class="py-10 flex flex-col lg:flex-row">
|
||||
<div class="card">
|
||||
<Archive heigth="64" width="64" />
|
||||
@ -102,8 +129,24 @@ import {CaretRight, Archive, Rocket, Bell} from "@astropub/icons"
|
||||
</div>
|
||||
<a class="btn px-8 flex" href={l("/about")}>Read More <CaretRight width="24" heigth="24" /></a>
|
||||
</section>
|
||||
<section>
|
||||
|
||||
<section class="w-screen py-12">
|
||||
{mapMap(groupedTeamMember, (key, value) => (
|
||||
<div class="flex items-center flex-col">
|
||||
<h2 class="dark:text-white text-4xl font-bold">{t("home.prefix." + key)}</h2>
|
||||
<div class="flex my-4 md:flex-row flex-col flex-wrap justify-center">
|
||||
{value.map(v => (
|
||||
<div class="bg-zinc-50 border-gray-100 py-24 px-12 border-2 m-2 transition duration-300 ease-in-out rounded-xl shadow-lg
|
||||
hover:scale-105 hover:shadow-2xl
|
||||
dark:bg-neutral-900 dark:border-gray-800 dark:text-white">
|
||||
<figure>
|
||||
<figcaption class="text-center mb-4 text-2xl">{v.name}</figcaption>
|
||||
<Image src={`https://visage.surgeplay.com/bust/150/${v.uuid}`} class="transition duration-300 ease-in-out hover:scale-110 hover:drop-shadow-2xl" alt={v.name + "s bust"} width="150" height="150" />
|
||||
</figure>
|
||||
</div>
|
||||
))}
|
||||
</div>
|
||||
</div>
|
||||
))}
|
||||
</section>
|
||||
</NavbarLayout>
|
||||
|
||||
@ -130,5 +173,8 @@ import {CaretRight, Archive, Rocket, Bell} from "@astropub/icons"
|
||||
>p {
|
||||
@apply mt-4;
|
||||
}
|
||||
>svg {
|
||||
@apply transition-transform duration-300 ease-in-out hover:scale-110 hover:drop-shadow-2xl
|
||||
}
|
||||
}
|
||||
</style>
|
||||
|
@ -1,6 +1,6 @@
|
||||
.btn {
|
||||
@apply bg-yellow-400 font-bold py-2 px-4 rounded cursor-pointer select-none mx-2 text-black;
|
||||
@apply hover:bg-yellow-300 hover:text-black;
|
||||
@apply hover:bg-yellow-300 hover:text-black hover:shadow-2xl hover:scale-105;
|
||||
transition: all 0.5s cubic-bezier(.2,3,.67,.6),
|
||||
background-color .1s ease-in-out,
|
||||
outline-width .1s ease-in-out,
|
||||
|
Laden…
In neuem Issue referenzieren
Einen Benutzer sperren