Compare commits

..

2 Commits

Author SHA1 Message Date
c38d538f93 Update story description and enhance sidebar styles
- Revised the story section description to reflect the server's narrative.
- Removed placeholder text and added a prompt for content creation.
- Improved sidebar link styles for better visibility and interaction.
- Added hover effects and styles for sections with sub-items in the table of contents.
- Introduced new styles for alcohol and contact link cards for consistent design.
- Enhanced map call-to-action button with new styles and hover effects.
2026-04-21 12:44:22 +03:00
e32e0fb972 Refactor code structure for improved readability and maintainability 2026-04-21 12:24:26 +03:00
19 changed files with 2083 additions and 2527 deletions

View File

@@ -1 +0,0 @@
^C

View File

@@ -1,5 +0,0 @@
> server-wiki@0.0.1 dev
> astro dev --host 0.0.0.0 --port 4321
[vite] connected.

View File

@@ -1,6 +1,33 @@
# Dependencies and build output
node_modules node_modules
dist
.astro .astro
dist
# VCS metadata
.git .git
.gitignore .gitignore
# Local Codex/dev artifacts
.codex*
.codex/
.tmp*
*.tmp
# Logs
*.log
npm-debug.log* npm-debug.log*
yarn-debug.log*
yarn-error.log*
pnpm-debug.log*
# OS/editor files
.DS_Store
Thumbs.db
.vscode
.idea
*.swp
*.swo
# Local caches
tmp
.cache

22
.gitignore vendored
View File

@@ -1,4 +1,26 @@
node_modules/ node_modules/
.astro/ .astro/
dist/ dist/
# Local Codex/dev artifacts
.codex*
.codex/
.tmp*
*.tmp
# Logs
*.log
npm-debug.log*
yarn-debug.log*
yarn-error.log*
pnpm-debug.log*
# OS files
.DS_Store .DS_Store
Thumbs.db
# Editor / local workspace junk
.vscode/
.idea/
*.swp
*.swo

File diff suppressed because one or more lines are too long

View File

@@ -59,19 +59,16 @@ export default defineConfig({
{ {
label: 'Игровые системы', label: 'Игровые системы',
items: [ items: [
{ label: 'Гайды', link: '/guides/' }, { label: 'Общее', link: '/general/' },
{ label: 'Механики', link: '/mechanics/' }, { label: 'Города', link: '/cities/' },
{ label: 'Профессии / классы / расы', link: '/professions/' },
{ label: 'Экономика', link: '/economy/' },
{ label: 'Предметы и ресурсы', link: '/items-resources/' },
{ label: 'Команды', link: '/commands/' },
{ {
label: 'Алкоголь', label: 'Алкоголь',
items: [ items: [
{ label: 'Варка алкоголя', link: '/alcohol-brewing/' }, { label: 'Как варить', link: '/alcohol-brewing/' },
{ label: 'Рецепты напитков', link: '/alcohol-recipes/' } { label: 'Рецепты напитков', link: '/alcohol-recipes/' }
] ]
} },
{ label: 'EasyArmorStands', link: '/easyarmorstands/' }
] ]
}, },
{ {

View File

@@ -93,6 +93,34 @@ const topLinks = [
</button> </button>
<script> <script>
const enhanceSidebarGroupLinks = () => {
const targets = [{ label: 'Алкоголь', href: '/alcohol/' }];
const labelNodes = document.querySelectorAll('.sidebar-content details > summary .group-label .large');
labelNodes.forEach((labelNode) => {
if (!(labelNode instanceof HTMLElement)) return;
const text = labelNode.textContent?.trim();
const target = targets.find((item) => item.label === text);
if (!target) return;
if (labelNode.querySelector('a[data-sidebar-group-link]')) return;
const link = document.createElement('a');
link.href = target.href;
link.className = 'sidebar-group-link';
link.dataset.sidebarGroupLink = 'true';
link.textContent = target.label;
link.addEventListener('click', (event) => {
event.preventDefault();
event.stopPropagation();
window.location.href = target.href;
});
labelNode.replaceChildren(link);
});
};
const setReadProgress = () => { const setReadProgress = () => {
const progressEl = document.querySelector('[data-read-progress]'); const progressEl = document.querySelector('[data-read-progress]');
const backToTopBtn = document.querySelector('[data-back-to-top]'); const backToTopBtn = document.querySelector('[data-back-to-top]');
@@ -135,6 +163,7 @@ const topLinks = [
}); });
}); });
enhanceSidebarGroupLinks();
setReadProgress(); setReadProgress();
window.addEventListener('scroll', setReadProgress, { passive: true }); window.addEventListener('scroll', setReadProgress, { passive: true });
window.addEventListener('resize', setReadProgress); window.addEventListener('resize', setReadProgress);
@@ -146,7 +175,10 @@ const topLinks = [
bindReadProgress(); bindReadProgress();
} }
document.addEventListener('astro:page-load', setReadProgress); document.addEventListener('astro:page-load', () => {
enhanceSidebarGroupLinks();
setReadProgress();
});
</script> </script>
<style> <style>

View File

@@ -0,0 +1,19 @@
---
title: "Алкоголь"
description: "Переход к подразделам алкогольной системы."
---
## Подразделы
Выберите нужный раздел:
<div class="lore-grid alcohol-nav-grid">
<a class="lore-card alcohol-nav-card" href="/alcohol-brewing/">
<h3>Как варить</h3>
<p>Ферментация, бочки, качество напитков, алкогольность и эффекты.</p>
</a>
<a class="lore-card alcohol-nav-card" href="/alcohol-recipes/">
<h3>Рецепты напитков</h3>
<p>Полный список рецептов, ингредиентов и параметров приготовления.</p>
</a>
</div>

View File

@@ -1,14 +1,17 @@
--- ---
title: "Все IP" title: "Все IP"
description: "Черновик страницы с адресами сервера." description: "Адреса и порты сервера PARABOX для Java и Bedrock."
--- ---
## Все IP ## 🎮 Основное
Это временная страница-заглушка. ### Java `1.21.11`
- Основной IP: `example-1` - Основной: `mc.rpcm.su`
- Резервный IP: `example-2` - AnyCast-прокси: `mine.rpcm.su`
- Тестовый IP: `example-3`
Замените эти значения на реальные адреса сервера. ### Bedrock `26.2`
- Основной: `mc.rpcm.su`
- Запаска: `213.152.43.52`
- Порт: `25875`

View File

@@ -0,0 +1,40 @@
---
title: "Города"
description: "Раздел для представления городов и проектов игроков."
---
## 🏠 Города и проекты игроков
На **PARABOX** вы можете создать свой город у нас на проекте, собрать жителей и развивать свою территорию.
<div class="lore-grid">
<article class="lore-card city-feature-card">
<p><strong class="city-highlight">Представить свой город.</strong> Расскажите о своём проекте и покажите, чем он уникален.</p>
</article>
<article class="lore-card city-feature-card">
<p><strong class="city-highlight">Искать жителей.</strong> Находите игроков, которые хотят вступить в ваш город.</p>
</article>
<article class="lore-card city-feature-card">
<p><strong class="city-highlight">Показывать постройки.</strong> Делитесь скриншотами и прогрессом развития территории.</p>
</article>
<article class="lore-card city-feature-card">
<p><strong class="city-highlight">Организовывать совместные проекты.</strong> Договаривайтесь о союзах, ивентах и общих инициативах.</p>
</article>
</div>
## 📌 Если создаёте пост о городе
```text
Название города:
Координаты:
Мэр / управляющий орган:
Описание:
Набор жителей: да / нет
Правила города:
```
Это поможет другим игрокам быстрее к вам присоединиться.
:::tip
Чем понятнее и полнее пост, тем быстрее игроки смогут найти и выбрать ваш город.
:::

View File

@@ -1,19 +1,24 @@
--- ---
title: "Контакты / ссылки" title: "Контакты и ссылки"
description: "Каналы связи, соцсети, поддержка и полезные внешние ресурсы." description: "Официальные контакты сервера и связь с администрацией."
--- ---
## Официальные ссылки ## Официальные ссылки
- Discord: `https://discord.gg/example` <div class="lore-grid">
- GitHub wiki: `https://github.com/your-org/parabox` <a class="lore-card contact-link-card" href="https://discord.gg/V5gD2a3HpQ" target="_blank" rel="noopener noreferrer">
- Почта поддержки: `support@example.com` <h3>Discord сервера</h3>
<p>Официальный Discord проекта.</p>
## Когда писать в поддержку </a>
<a class="lore-card contact-link-card" href="https://t.me/verdise" target="_blank" rel="noopener noreferrer">
1. Потеря предметов из-за серверного сбоя. <h3>Владелец проекта</h3>
2. Баги квестов и непроходимые этапы. <p>Связь в Telegram.</p>
3. Вопросы по платежам и привилегиям. </a>
<a class="lore-card contact-link-card" href="https://t.me/s1s2s3sf" target="_blank" rel="noopener noreferrer">
<h3>Администратор проекта</h3>
<p>Связь в Telegram.</p>
</a>
</div>
## Шаблон тикета ## Шаблон тикета
@@ -26,8 +31,5 @@ description: "Каналы связи, соцсети, поддержка и п
<div class="see-also"> <div class="see-also">
<p>Смотри также</p> <p>Смотри также</p>
<a href="/faq/">FAQ</a> · <a href="/team/">Команда проекта</a> <a href="/faq/">FAQ</a> · <a href="/getting-started/">Начало игры</a>
</div> </div>

View File

@@ -0,0 +1,156 @@
---
title: "EasyArmorStands — как пользоваться"
description: "Пошаговая инструкция по редактированию стоек, display-объектов и текста через EasyArmorStands."
---
## 1. Получить инструмент
Выполните команду:
`/eas give`
Возьмите выданный предмет в руку — это инструмент редактирования.
## 2. Выбрать объект
Наведитесь на нужный объект:
- стойка для брони
- текст
- block/item display
Нажмите ПКМ.
После этого появятся линии и точки — это режим редактирования.
## 3. Выбрать часть (для стойки)
Вы увидите:
- белые линии — части тела
- жёлтую точку — центр
Кликните по нужной части:
- хотите двигать руку — кликните по руке
- хотите двигать всё — кликните по центру
## 4. Двигать объект
После выбора части:
- двигайте мышкой / смотрите в сторону
- объект будет двигаться
Управление:
- `ПКМ` — подтвердить
- `ЛКМ` — отменить
## 5. Поворот
Выберите инструмент `Rotate` (через меню или переключение).
- двигайте камерой
- объект будет вращаться
Управление:
- `ПКМ` — сохранить
- `ЛКМ` — отменить
## 6. Масштаб (увеличение/уменьшение)
Для display-объектов (блок, предмет, текст):
- откройте меню (`F`)
- найдите `scale`
- увеличьте или уменьшите размер
## 7. Открыть меню
Нажмите `F`.
В меню можно:
- выбрать инструмент (`Move` / `Rotate`)
- менять размер
- включать настройки
- надевать броню
## 8. Как поставить блок (Block Display)
Используйте один из способов:
- `Shift + ЛКМ` по блоку
- `/eas block`
После этого можно:
- двигать блок
- вращать
- масштабировать
## 9. Как поставить предмет (Item Display)
- откройте меню (`F`)
- вставьте предмет в слот
Предмет появится как display-объект.
Дальше можно:
- двигать
- вращать
- увеличивать
## 10. Как сделать текст
Выполните:
`/eas text`
Появится текстовый объект. Далее можно:
- двигать его
- менять размер
- редактировать текст
Чтобы текст всегда смотрел на игрока:
- в меню установите `billboard = center`
- используйте `/eas reset`
## 11. Работа с группой
- зажмите `Shift + ПКМ` по объектам
- выберите несколько объектов
После этого `ПКМ` редактирует всё сразу.
## 12. Отмена действий
- `/eas undo`
- `/eas redo`
## 13. Быстрые действия
- `/eas clone` — копировать
- `/eas align` — выровнять по центру блока
## Простой алгоритм
1. `/eas give`
2. ПКМ по объекту
3. Выберите часть
4. Подвигайте мышкой
5. ПКМ для подтверждения
Это базовый рабочий цикл.
## Самое главное
- всё делается мышкой
- `ПКМ` = подтвердить
- `ЛКМ` = отменить
- `F` = меню

View File

@@ -1,40 +1,16 @@
--- ---
title: "FAQ" title: "FAQ"
description: "Ответы на частые вопросы игроков о запуске, прогрессе и аккаунте." description: "Частый вопрос по регистрации на сервере."
--- ---
## Основные вопросы ## Основной вопрос
<details> <details>
<summary>Как попасть на сервер?</summary> <summary>Как зарегистрироваться на сервере?</summary>
Добавь адрес сервера в клиент Minecraft Java Edition и пройди короткое интро на спавне. При первом запуске зарегистрируйтесь командой <code>/reg вашпароль повторпароля</code>. При следующем входе используйте <code>/l вашпароль</code>.
</details> </details>
<details>
<summary>Можно ли играть одному?</summary>
Да. Большая часть контента доступна соло, но рейды и разломы удобнее проходить группой.
</details>
<details>
<summary>Что делать, если потерял вещи?</summary>
Проверь лог смертей и открой тикет в Discord с точным временем события.
</details>
## Технические вопросы
### Минимальные рекомендации
- 8 ГБ RAM на ПК
- Java 21+
- Стабильный интернет
:::tip
Перед обращением в поддержку приложи скриншот ошибки и список модов.
:::
<div class="see-also"> <div class="see-also">
<p>Смотри также</p> <p>Смотри также</p>
<a href="/getting-started/">Начало игры</a> · <a href="/contacts/">Контакты / ссылки</a> <a href="/getting-started/">Начало игры</a>
</div> </div>

View File

@@ -0,0 +1,18 @@
---
title: "Общее"
description: "Общая информация и веб-карта сервера PARABOX."
---
## Общее
На сервере доступна интерактивная веб-карта, где можно смотреть мир в реальном времени:
- города и постройки игроков;
- дороги и основные локации;
- общий масштаб мира и ориентиры для навигации.
<div class="map-cta-wrap">
<a class="map-cta-button" href="https://map.rpcm.su/#world:0:0:0:1500:0:0:0:0:perspective" target="_blank" rel="noopener noreferrer">
Открыть веб-карту сервера
</a>
</div>

View File

@@ -1,12 +1,22 @@
--- ---
title: "Начало игры" title: "Начало игры"
description: "Черновик раздела. Здесь будет ваш текст о старте." description: "Как подать заявку на сервер PARABOX и что указать в анкете."
--- ---
## Начало игры ## ✏️ Захотелось к нам?
Это временный текст-заглушка для раздела про старт игрока. Чтобы попасть на сервер, необходимо отправить запрос через нашего бота.
После одобрения вы получите доступ и окунётесь в удивительные миры **PARABOX**.
В первые минуты герой просыпается у древнего маяка, получает рюкзак с картой и слышит голос хранителя, который шепчет о пути через туманные равнины. <div class="see-also">
<p>Подача заявки через бота</p>
<a href="https://t.me/RPCM_MINE_BOT" target="_blank" rel="noopener noreferrer"><strong>@RPCM_MINE_BOT</strong></a>
</div>
Когда будете готовы, замените этот текст на свой подробный гайд. ## Форма анкеты
Чтобы вступить к нам, просим заполнить небольшую анкету в боте:
1. Как к вам обращаться? Укажите ваш псевдоним или имя.
2. Ваш никнейм, который будет привязан к серверу.
3. От какого проекта вы? Если не от проекта, укажите, от кого вы узнали о сервере.

View File

@@ -1,8 +1,8 @@
--- ---
title: "ParaBox" title: "Project PARABOX"
description: "Черновик главной страницы. Текст будет заполнен позже." description: "Единый сервер РПКМ: города проектов, экономика, выживание и взаимодействие между игроками."
hero: hero:
tagline: Временный текст для главной страницы tagline: Единый мир для проектов РПКМ и игроков
actions: actions:
- text: Начать игру - text: Начать игру
link: /getting-started/ link: /getting-started/
@@ -13,15 +13,35 @@ hero:
variant: minimal variant: minimal
--- ---
## Главная ## Project PARABOX
Это временный блок с тестовым содержимым. Здесь позже появится вступление о сервере, его атмосфере и ключевых особенностях. Мы запускаем единый сервер, где каждый проект РПКМ может создать свой собственный город, а игроки могут наслаждаться выживанием, экономикой и взаимодействием между городами.
:::note ## Что вас ждёт
Текст-заглушка. После финального наполнения этот раздел можно полностью переписать.
- Система городов. Если у вас есть проект в РПКМ, вы можете создать свой город, собрать жителей и развивать собственную территорию.
- Экономика и торговля между игроками.
- Общий мир для всех проектов ЛРПКМ.
- Ивенты и активности.
- Классическое выживание с социальным взаимодействием.
- И просто весёлое времяпровождение.
:::tip
Project PARABOX объединяет проекты и игроков в одном живом мире, где каждый может выбрать свой формат игры: развитие города, торговлю, выживание или участие в событиях.
::: :::
## Черновой абзац ## ❓ Основные особенности
Пыль поднимается над каменными дорогами, на горизонте мерцают порталы, а старые башни хранят забытые руны. Здесь начинается история, которую вы позже заполните своими правилами, лором и целями. - Система городов.
- Экономика / торговля.
- Ивенты и активности.
## 🚀 Как начать играть
1. Подайте заявку.
2. Зайдите на сервер по IP.
3. Прочитайте правила в соответствующем разделе.
4. Зарегистрируйтесь или войдите в систему.
5. Найдите город или создайте свой.
## ✨ Добро пожаловать и приятной игры!

File diff suppressed because it is too large Load Diff

View File

@@ -1,12 +1,8 @@
--- ---
title: "Сюжет" title: "Сюжет"
description: "Черновик сюжета. Заполните своим лором." description: "Раздел сюжета сервера."
--- ---
## Сюжет ## Сюжет
Это временный блок, чтобы раздел уже был в меню. СЕРЕЖА РЕСПЕШИ МНЕ СЮЖЕТИК И ВЧЕ ЧТО С НИМ СВЯЗАНО
Над архипелагом горят три луны, по ночам реки светятся серебром, а у подножия черной цитадели начинают исчезать целые караваны.
Позже вы сможете полностью заменить этот текст на основной сюжет сервера.

View File

@@ -226,6 +226,21 @@ starlight-menu-button button:hover {
background: color-mix(in srgb, var(--sl-color-accent-low) 32%, transparent); background: color-mix(in srgb, var(--sl-color-accent-low) 32%, transparent);
} }
.sidebar-content .sidebar-group-link {
display: inline-block;
padding: 0;
border: 0;
border-radius: 0;
color: inherit;
text-decoration: none;
background: transparent;
}
.sidebar-content .sidebar-group-link:hover {
text-decoration: none;
background: transparent;
}
.sidebar-content :is(a[aria-current='page'], a[aria-current='page']:hover) { .sidebar-content :is(a[aria-current='page'], a[aria-current='page']:hover) {
background: color-mix(in srgb, var(--sl-color-gray-6) 62%, transparent); background: color-mix(in srgb, var(--sl-color-gray-6) 62%, transparent);
color: var(--sl-color-white); color: var(--sl-color-white);
@@ -415,6 +430,28 @@ starlight-toc a {
transition: background 180ms ease, color 180ms ease, transform 180ms ease; transition: background 180ms ease, color 180ms ease, transform 180ms ease;
} }
/* Разделы, внутри которых есть подпункты, выделяем сильнее. */
starlight-toc li:has(> ul) > a,
mobile-starlight-toc li:has(> ul) > a {
font-weight: 700;
border: 1px solid color-mix(in srgb, var(--sl-color-accent) 22%, transparent);
background: linear-gradient(
90deg,
color-mix(in srgb, var(--wiki-purple-2) 20%, transparent),
color-mix(in srgb, var(--wiki-blue-2) 12%, transparent)
);
}
starlight-toc li:has(> ul) > a:hover,
mobile-starlight-toc li:has(> ul) > a:hover {
border-color: color-mix(in srgb, var(--sl-color-accent) 44%, transparent);
background: linear-gradient(
90deg,
color-mix(in srgb, var(--wiki-purple-2) 30%, transparent),
color-mix(in srgb, var(--wiki-blue-2) 18%, transparent)
);
}
starlight-toc a::before { starlight-toc a::before {
content: ''; content: '';
position: absolute; position: absolute;
@@ -585,6 +622,44 @@ starlight-theme-select .caret {
margin-bottom: 0.45rem; margin-bottom: 0.45rem;
} }
.alcohol-nav-card {
display: block;
color: inherit;
text-decoration: none;
}
.alcohol-nav-card:hover {
text-decoration: none;
}
.alcohol-nav-card p {
margin-bottom: 0;
}
.contact-link-card {
display: block;
color: inherit;
text-decoration: none;
}
.contact-link-card:hover {
text-decoration: none;
}
.contact-link-card p {
margin-bottom: 0;
}
.city-feature-card p {
margin-bottom: 0;
}
.city-highlight {
font-size: inherit;
font-weight: 700;
line-height: inherit;
}
.command-block { .command-block {
border: 1px solid color-mix(in srgb, var(--sl-color-hairline) 88%, transparent); border: 1px solid color-mix(in srgb, var(--sl-color-hairline) 88%, transparent);
border-radius: 0.16rem; border-radius: 0.16rem;
@@ -615,6 +690,46 @@ starlight-theme-select .caret {
font-weight: 700; font-weight: 700;
} }
.map-cta-wrap {
margin-top: 1rem;
}
.map-cta-button {
display: inline-flex;
align-items: center;
justify-content: center;
min-height: 2.6rem;
padding: 0.64rem 1.15rem;
border-radius: 0.2rem;
border: 1px solid color-mix(in srgb, var(--sl-color-accent) 55%, transparent);
background: linear-gradient(
140deg,
color-mix(in srgb, var(--wiki-purple-2) 72%, #1b2434),
color-mix(in srgb, var(--wiki-blue-2) 78%, #1b2434)
);
color: #f5f9ff;
text-decoration: none;
font-family: 'Sora', sans-serif;
font-weight: 600;
letter-spacing: 0.01em;
box-shadow:
0 8px 18px color-mix(in srgb, var(--sl-color-accent) 25%, transparent),
0 0 0 1px color-mix(in srgb, var(--sl-color-accent) 18%, transparent);
transition: transform 170ms ease, border-color 170ms ease, box-shadow 170ms ease, filter 170ms ease;
}
.map-cta-button:hover {
color: #ffffff;
text-decoration: none;
transform: translateY(-1px);
border-color: color-mix(in srgb, var(--sl-color-accent) 70%, transparent);
box-shadow:
0 12px 22px color-mix(in srgb, var(--sl-color-accent) 32%, transparent),
0 0 0 1px color-mix(in srgb, var(--sl-color-accent) 24%, transparent),
0 0 16px color-mix(in srgb, var(--sl-color-accent) 24%, transparent);
filter: saturate(1.06);
}
@media (min-width: 50rem) { @media (min-width: 50rem) {
.hero { .hero {
grid-template-columns: 1fr; grid-template-columns: 1fr;