---

## ⚙️ Требования

| Компонент | Версия |
|-----------|--------|
| Minecraft | 1.20+ |
| Сервер | Spigot/Paper |
| Java | 17+ |
| Maven | 3.6+ (для сборки) |
| PlaceholderAPI | 2.11.5+ (опционально) |

---

## 🎮 Команды

### Основная команда: /sub (или /subscription)

| Команда | Описание | Права |
|---------|----------|-------|
| /sub | Открыть GUI меню | subscription.use |
| /sub give <игрок> <дни> | Выдать подписку | subscription.admin.give |
| /sub give <игрок> forever | Выдать бессрочную подписку | subscription.admin.give |
| /sub take <игрок> | Снять подписку | subscription.admin.take |
| /sub info [игрок] | Проверить статус | subscription.use |
| /sub reload | Перезагрузить конфиг | subscription.admin.reload |

### 📝 Примеры команд

bash
# Выдать подписку на 30 дней
/sub give Steve 30

# Выдать бессрочную подписку
/sub give Notch forever

# Снять подписку
/sub take Steve

# Проверить свою подписку
/sub info

# Проверить подписку другого игрока
/sub info Steve

# Перезагрузить плагин
/sub reload


---

## 🔐 Права доступа

### Основные права

yaml
permissions:
subscription.use:
description: Использование основных команд
default: true

subscription.admin:
description: Доступ ко всем админ командам
default: op

subscription.benefits:
description: Использование возможностей подписки
default: false


### Детальные права

| Право | Описание | По умолчанию |
|-------|----------|--------------|
| subscription.use | Основные команды | ✅ Все |
| subscription.admin | Все админ команды | ⭕ OP |
| subscription.admin.give | Выдача подписок | ⭕ OP |
| subscription.admin.take | Снятие подписок | ⭕ OP |
| subscription.admin.reload | Перезагрузка | ⭕ OP |
| subscription.benefits | Возможности подписки | ❌ Нет |

### 🔧 Настройка с LuckPerms

bash
# Выдать права вручную
lp user Steve permission set subscription.benefits true

# Создать VIP группу
lp creategroup vip
lp group vip permission set subscription.benefits true
lp user Steve parent add vip

# Автоматическая выдача через config.yml
settings:
commands-on-give:
- "lp user %player% permission set subscription.benefits true"
commands-on-take:
- "lp user %player% permission unset subscription.benefits"


---

## 🎨 GUI Меню

### 📊 Главное меню (54 слота)

┌─────────────────────────────────────────────────┐
│ □ □ □ □ ⓘ □ □ □ □ │
│ □ □ □ │
│ │
│ 💎 📦 📖 ⚙️ │
│ (Награда) (Инфо) (Стат) (Настр) │
│ │
│ □ □ ❌ □ │
│ □ □ □ □ □ □ □ □ □ □ │
└─────────────────────────────────────────────────┘


#### Элементы меню

| Слот | Предмет | Функция |
|------|---------|---------|
| 4 | 📄 PAPER | Информация о подписке |
| 20 | 📦 CHEST | Ежедневная награда |
| 22 | 💎 DIAMOND | Возможности подписки |
| 24 | 📖 BOOK | Статистика |
| 49 | ❌ BARRIER | Закрыть меню |

### ⚙️ Меню возможностей (27 слотов)

┌─────────────────────────────────────┐
│ □ □ □ □ □ □ □ □ □ │
│ □ │
│ 🔱 👁️ 📦 │
│ (Тотем) (Зрение) (Инвент) │
│ │
│ □ ⬅️ □ │
│ □ □ □ □ □ □ □ □ □ │
└─────────────────────────────────────┘


#### Возможности

| Слот | Предмет | Функция |
|------|---------|---------|
| 11 | 🔱 TOTEM | Авто-тотем |
| 13 | 👁️ ENDER_EYE | Ночное зрение |
| 15 | 📦 CHEST | Сохранение инвентаря |
| 22 | ⬅️ ARROW | Назад |

---

## ✨ Возможности подписки

### 1️⃣ Авто-тотем

Описание: Автоматически перемещает тотем бессмертия в оффхенд при получении смертельного урона.

Принцип работы:
1. Игрок получает урон, который должен убить
2. Плагин ищет тотем в инвентаре
3. Автоматически перемещает в оффхенд
4. Тотем срабатывает и спасает игрока

Конфигурация:
yaml
subscription:
features:
auto-totem:
enabled: true
name: "&6&lАвто-тотем"
icon: TOTEM_OF_UNDYING
slot: 11


### 2️⃣ Ночное зрение

Описание: Постоянный эффект ночного зрения для комфортной игры.

Принцип работы:
- Эффект применяется при входе на сервер
- Автоматически обновляется каждые 20 секунд
- Можно включить/выключить через GUI

Конфигурация:
yaml
subscription:
features:
night-vision:
enabled: true
name: "&b&lНочное зрение"
icon: ENDER_EYE
slot: 13


### 3️⃣ Сохранение инвентаря

Описание: Инвентарь и опыт сохраняются при смерти.

Что сохраняется:
- ✅ Весь инвентарь
- ✅ Броня и предметы в руках
- ✅ Уровень опыта
- ✅ Прогресс до следующего уровня

Конфигурация:
yaml
subscription:
features:
keep-inventory:
enabled: true
name: "&d&lСохранение инвентаря"
icon: CHEST
slot: 15


---

## 🎁 Ежедневные награды

### Базовая настройка

yaml
daily-rewards:
enabled: true
rewards:
- "give {player} diamond 5"
- "give {player} emerald 3"
- "eco give {player} 1000"


### Особые награды за дни

yaml
daily-rewards:
custom-rewards:
day1:
- "give {player} diamond 1"
- "title {player} title {\"text\":\"Добро пожаловать!\",\"color\":\"gold\"}"

day7:
- "give {player} diamond 10"
- "broadcast &6{player} &eполучил недельную награду!"

day30:
- "give {player} diamond 64"
- "give {player} netherite_ingot 10"


### 📊 Система кулдауна

- ⏰ Кулдаун: 24 часа
- 🎯 Получение: Клик по предмету в GUI (слот 20)
- 📈 Статистика: Автоматический подсчет полученных наград

---

## 🔧 Конфигурация

### 🎨 HEX цвета

yaml
settings:
symbol: "&#FF6B6B⚡"
prefix-1: "&#FFD93D[Подписка] &#FF6B6B"

gui:
main:
info:
name: "&#FF6B6B⚡ &#FFD93DВаша подписка"
lore:
- "&#FFFFFF━━━━━━━━━━━━━━━━━━━"
- "&#FFD93DСтатус: {status}"
- "&#FFFFFF━━━━━━━━━━━━━━━━━━━"


### 🖼️ Кастомные скины (Mojang Base64)

yaml
gui:
main:
info:
material: PLAYER_HEAD
skull-texture: "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUv..."
glow: true
custom-model-data: 12345


Где взять текстуры:
1. [minecraft-heads.com](https://minecraft-heads.com/)
2. Найти нужный скин
3. Скопировать Value
4. Вставить в skull-texture

### ⚡ Автоматические команды

yaml
settings:
commands-on-give:
# LuckPerms
- "lp user %player% permission set subscription.benefits true"
- "lp user %player% parent add vip"

# Предметы
- "give %player% diamond 10"

# Оповещения
- "broadcast &6%player% &fполучил VIP!"
- "title %player% title {\"text\":\"VIP Активирован!\",\"color\":\"gold\"}"

commands-on-take:
- "lp user %player% permission unset subscription.benefits"
- "broadcast &c%player% потерял VIP"


### 📝 Сообщения

yaml
messages:
prefix: "&a[Подписка] &r"

give-duration: "&fВыдана подписка &6%player% &fна &a%duration%дн"
take: "&fСнята подписка с &6%player%"

reward-claimed: "&aВы получили ежедневную награду!"
reward-cooldown: "&eСледующая награда через: &a{time}"

feature-enabled: "&aВозможность &e{feature} &aвключена!"
feature-disabled: "&cВозможность &e{feature} &cвыключена!"


---

## 🔌 PlaceholderAPI

### 📋 Список плейсхолдеров

#### Основная информация

| Плейсхолдер | Описание | Пример |
|-------------|----------|--------|
| %subscription_status% | Статус подписки | Активна / Неактивна |
| %subscription_active% | Булево значение | true / false |
| %subscription_days% | Оставшиеся дни | 15 |
| %subscription_hours% | Оставшиеся часы | 360 |
| %subscription_time% | Форматированное время | 15д 3ч 20м |

#### Даты

| Плейсхолдер | Описание | Пример |
|-------------|----------|--------|
| %subscription_start_date% | Дата начала | 01.12.2024 |
| %subscription_end_date% | Дата окончания | 31.12.2024 |
| %subscription_total_days% | Всего дней | 30 |

#### Статистика

| Плейсхолдер | Описание | Пример |
|-------------|----------|--------|
| %subscription_rewards% | Получено наград | 25 |
| %subscription_totems% | Использовано тотемов | 5 |

#### Возможности

| Плейсхолдер | Описание | Пример |
|-------------|----------|--------|
| %subscription_auto_totem% | Статус авто-тотема | Включен |
| %subscription_night_vision% | Статус ночного зрения | Включено |
| %subscription_keep_inventory% | Статус сохранения | Включено |

### 🎯 Примеры использования

#### TAB плагин
yaml
groups:
vip:
tabname: '&6[VIP %subscription_days%д] &f%player_name%'
tagprefix: '&6⚡ '


#### DeluxeChat
yaml
formats:
vip:
format: '&6[VIP] &7{username} &8[%subscription_time%]&f: {message}'


#### FeatherBoard
yaml
scoreboard:
lines:
- '&6━━━━━━━━━━━━━━━━━'
- '&e⚡ Подписка'
- '&7Статус: %subscription_status%'
- '&7Осталось: &f%subscription_time%'
- '&7Наград: &a%subscription_rewards%'
- '&6━━━━━━━━━━━━━━━━━'


---

## 💾 Хранение данных

### 📂 Структура файлов

plugins/SubscriptionPlugin/
├── config.yml # Основная конфигурация
└── playerdata/ # Данные игроков
├── uuid1.yml
├── uuid2.yml
└── ...


### 📄 Формат данных игрока

yaml
subscription:
start: 1734567890000 # Timestamp начала
end: 1737246290000 # Timestamp окончания

daily-reward:
last: 1734481490000 # Последняя награда

statistics:
rewards-claimed: 15 # Получено наград
totems-used: 3 # Использовано тотемов

features:
auto-totem: true # Авто-тотем
night-vision: true # Ночное зрение
keep-inventory: true # Сохранение инвентаря


### 💾 Автосохранение

- ✅ При выходе игрока
- ✅ При выключении сервера
- ✅ При изменении данных
- ✅ При получении наград

---

## 📝 Примеры использования

### Пример 1: VIP подписка на месяц

bash
# 1. Выдать подписку
/sub give Steve 30

# 2. Автоматически выполнятся команды:
# - Выдача прав LuckPerms
# - Оповещение сервера
# - Выдача приветственных предметов

# 3. Игрок получает:
# ✅ Доступ к GUI меню
# ✅ Авто-тотем
# ✅ Ночное зрение
# ✅ Сохранение инвентаря
# ✅ Ежедневные награды


### Пример 2: Интеграция с LuckPerms

yaml
settings:
commands-on-give:
- "lp user %player% permission set subscription.benefits true"
- "lp user %player% parent add vip"
- "lp user %player% meta addprefix 100 '&6[VIP] '"

commands-on-take:
- "lp user %player% permission unset subscription.benefits"
- "lp user %player% parent remove vip"
- "lp user %player% meta removeprefix 100"


### Пример 3: Система наград

yaml
daily-rewards:
enabled: true

rewards:
- "give {player} diamond 5"
- "eco give {player} 1000"

custom-rewards:
day1:
- "give {player} diamond 1"
- "broadcast &6{player} &eначал использовать подписку!"

day7:
- "give {player} diamond 10"
- "give {player} emerald 5"
- "broadcast &6{player} &eполучил недельную награду!"

day14:
- "give {player} diamond 20"
- "eco give {player} 5000"

day30:
- "give {player} diamond 64"
- "give {player} netherite_ingot 10"
- "broadcast &6{player} &eполучил месячную награду!"


### ❌ GUI меню не открывается

Проверьте:
- ✅ Права: subscription.use
- ✅ Корректность config.yml
- ✅ Логи сервера

Решение:
bash
/lp user <игрок> permission set subscription.use true
/sub reload


### ❌ Авто-тотем не работает

Проверьте:
- ✅ Права: subscription.benefits
- ✅ Функция включена в конфиге
- ✅ Функция включена в GUI
- ✅ Тотем в инвентаре

Решение:
yaml
subscription:
features:
auto-totem:
enabled: true


### ❌ PlaceholderAPI не работает

Проверьте:
- ✅ PlaceholderAPI установлен
- ✅ В логах: "PlaceholderAPI hooked successfully!"
- ✅ Правильный формат: %subscription_status%

Решение:
bash
# Установить PlaceholderAPI
# Перезапустить сервер