## ⚙️ Требования
| Компонент | Версия |
|-----------|--------|
| 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. Скопировать
Value4. Вставить в
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
# Перезапустить сервер