### ✨ Версия 1.2.0 (Текущая)
- ✅ Полная система множественных валют - неограниченное количество валют
- ✅ Система прав доступа - детальная настройка прав для каждой команды
- ✅ PlaceholderAPI интеграция - placeholders для всех валют
- ✅ Цветовая поддержка HEX - полная поддержка цветов (#RRGGBB)
- ✅ Система сообщений - настраиваемые сообщения для каждой валюты
- ✅ Автосохранение данных - YAML система хранения
- ✅ Команды администратора:
-
/currency give - выдача валюты игроку-
/currency take - изъятие валюты-
/currency set - установка баланса-
/currency reset - сброс баланса-
/currency giveall - выдача всем игрокам-
/currency reload - перезагрузка конфигурации- ✅ Команды игрока:
-
/currency me - просмотр своего баланса-
/currency look - просмотр баланса другого игрока-
/currency pay - передача валюты-
/currency lead - топ игроков- ✅ Система конвертации:
-
/currency convert - конвертация из других плагинов-
/currency export - экспорт данных-
/currency import - импорт данных-
/currency importlegacy - импорт старого формата- ✅ Дополнительные команды:
-
/currency broadcast - оповещение о балансе- Автодополнение команд
- Автодополнение имен игроков
### 🔧 Версия 1.0.0 (Базовая)
- ✅ Создание базовой структуры плагина
- ✅ Основная система валют
- ✅ Базовые команды баланса
---
## 🎯 Основные возможности
### 1️⃣ Система множественных валют
Плагин поддерживает неограниченное количество валют. Каждая валюта настраивается независимо:
- Уникальный ID
- Отображаемое имя с поддержкой цветов
- Своя команда
- Свой placeholder
- Стартовый баланс
- Индивидуальные права доступа
- Настраиваемые сообщения
### 2️⃣ Система команд
Каждая валюта получает свою команду. Например, для валюты
coins с командой coins:-
/coins me - просмотр баланса-
/coins give <игрок> <сумма> - выдача валюты-
/coins take <игрок> <сумма> - изъятие валюты-
/coins pay <игрок> <сумма> - передача валюты-
/coins set <игрок> <сумма> - установка баланса- И многие другие...
### 3️⃣ Система прав доступа
Каждая валюта имеет детальную систему прав:
-
currency.{id}.view - просмотр баланса-
currency.{id}.give - выдача валюты (админ)-
currency.{id}.take - изъятие валюты (админ)-
currency.{id}.pay - передача валюты между игроками-
currency.{id}.set - установка баланса (админ)-
currency.{id}.reset - сброс баланса (админ)-
currency.{id}.broadcast - оповещение о балансе (админ)-
currency.{id}.giveall - выдача всем игрокам (админ)-
currency.{id}.lead - просмотр топа игроков-
currency.{id}.reload - перезагрузка конфигурации (админ)-
currency.{id}.convert - конвертация данных (админ)-
currency.{id}.export - экспорт данных (админ)-
currency.{id}.import - импорт данных (админ)-
currency.{id}.importlegacy - импорт старого формата (админ)### 4️⃣ PlaceholderAPI интеграция
Для каждой валюты доступны placeholders:
-
%currency_{placeholder}% - баланс игрока- Например:
%currency_coins%, %currency_gems%### 5️⃣ Система хранения данных
- Формат: YAML файлы
- Папка:
plugins/CurrencyPlugin/playerdata/- Имя файла:
<UUID игрока>.yml- Автосохранение: при каждом изменении
- Автозагрузка: при входе игрока
---
## 📖 Подробное описание команд
### 👤 Команды для игроков
####
/currency meОписание: Просмотр своего баланса
Право:
currency.{id}.view Пример:
/coins me Вывод: Отображает текущий баланс игрока
####
/currency look <игрок>Описание: Просмотр баланса другого игрока
Право:
currency.{id}.view Пример:
/coins look Steve Вывод: Отображает баланс указанного игрока
####
/currency pay <игрок> <сумма>Описание: Передача валюты другому игроку
Право:
currency.{id}.pay Пример:
/coins pay Alex 100 Условия:
- Сумма должна быть положительной
- У отправителя должно быть достаточно средств
- Нельзя передать самому себе
####
/currency lead [страница]Описание: Просмотр топа игроков по балансу
Право:
currency.{id}.lead Пример:
/coins lead 1 Вывод: Показывает топ-10 игроков по балансу (с пагинацией)
---
### 👨💼 Команды для администраторов
####
/currency give <игрок> <сумма>Описание: Выдача валюты игроку
Право:
currency.{id}.give Пример:
/coins give Steve 1000 Эффект: Добавляет указанную сумму к балансу игрока
####
/currency take <игрок> <сумма>Описание: Изъятие валюты у игрока
Право:
currency.{id}.take Пример:
/coins take Steve 500 Эффект: Уменьшает баланс игрока на указанную сумму
####
/currency set <игрок> <сумма>Описание: Установка баланса игрока
Право:
currency.{id}.set Пример:
/coins set Steve 10000 Эффект: Устанавливает точное значение баланса
####
/currency reset <игрок>Описание: Сброс баланса к начальному значению
Право:
currency.{id}.reset Пример:
/coins reset Steve Эффект: Устанавливает баланс равным
starting-balance из конфига####
/currency giveall <сумма>Описание: Выдача валюты всем онлайн игрокам
Право:
currency.{id}.giveall Пример:
/coins giveall 100 Эффект: Добавляет указанную сумму всем игрокам на сервере
####
/currency broadcast <игрок>Описание: Оповещение всех игроков о балансе
Право:
currency.{id}.broadcast Пример:
/coins broadcast Steve Эффект: Отправляет всем игрокам сообщение с балансом указанного игрока
####
/currency reloadОписание: Перезагрузка конфигурации плагина
Право:
currency.{id}.reload Пример:
/coins reload Эффект: Перезагружает
config.yml и все валюты---
### 🔄 Команды конвертации и миграции
####
/currency convert <источник> <валюта>Описание: Конвертация данных из другого плагина
Право:
currency.{id}.convert Пример:
/coins convert EssentialsX coins Поддержка: Конвертация из различных экономических плагинов
####
/currency export <валюта> <файл>Описание: Экспорт данных валюты в файл
Право:
currency.{id}.export Пример:
/coins export coins backup.yml Эффект: Создает резервную копию данных
####
/currency import <валюта> <файл>Описание: Импорт данных валюты из файла
Право:
currency.{id}.import Пример:
/coins import coins backup.yml Эффект: Загружает данные из резервной копии
####
/currency importlegacy <валюта> <файл>Описание: Импорт данных старого формата
Право:
currency.{id}.importlegacy Пример:
/coins importlegacy coins old_data.yml Эффект: Конвертирует и загружает данные старого формата
---
## ⚙️ Полная настройка конфигурации
### Структура config.yml
yaml
currencies:
# ID валюты (уникальный идентификатор)
coins:
# Отображаемое имя (поддерживает HEX цвета)
display-name: "#FFD700Монеты"
# Команда для управления валютой
command: "coins"
# Placeholder для PlaceholderAPI
placeholder: "coins"
# Стартовый баланс для новых игроков
starting-balance: 100.0
# Настройка прав доступа
permissions:
view: "currency.coins.view"
give: "currency.coins.give"
take: "currency.coins.take"
pay: "currency.coins.pay"
set: "currency.coins.set"
reset: "currency.coins.reset"
broadcast: "currency.coins.broadcast"
giveall: "currency.coins.giveall"
lead: "currency.coins.lead"
reload: "currency.coins.reload"
convert: "currency.coins.convert"
export: "currency.coins.export"
import: "currency.coins.import"
importlegacy: "currency.coins.importlegacy"
# Настраиваемые сообщения
messages:
balance: "&aВаш баланс: &6{amount} &eМонет"
balance-other: "&aБаланс игрока &6{player}&a: &6{amount} &eМонет"
give-success: "&aВы выдали &6{amount} &eМонет игроку &6{player}"
take-success: "&aВы изъяли &6{amount} &eМонет у игрока &6{player}"
pay-success: "&aВы передали &6{amount} &eМонет игроку &6{player}"
pay-received: "&aВы получили &6{amount} &eМонет от игрока &6{player}"
set-success: "&aВы установили баланс игрока &6{player} &aна &6{amount} &eМонет"
reset-success: "&aВы сбросили баланс игрока &6{player}"
giveall-success: "&aВы выдали &6{amount} &eМонет всем игрокам (&6{count} &aигроков)"
broadcast-message: "&6{player} &aимеет &6{amount} &eМонет"
reload-success: "&aКонфигурация успешно перезагружена!"
insufficient-funds: "&cНедостаточно средств! Ваш баланс: &6{balance}"
player-not-found: "&cИгрок не найден!"
invalid-amount: "&cНеверная сумма!"
no-permission: "&cУ вас нет прав для использования этой команды!"
# Пример второй валюты
gems:
display-name: "#00FFFFКристаллы"
command: "gems"
placeholder: "gems"
starting-balance: 0.0
permissions:
view: "currency.gems.view"
give: "currency.gems.give"
take: "currency.gems.take"
pay: "currency.gems.pay"
set: "currency.gems.set"
reset: "currency.gems.reset"
broadcast: "currency.gems.broadcast"
giveall: "currency.gems.giveall"
lead: "currency.gems.lead"
reload: "currency.gems.reload"
convert: "currency.gems.convert"
export: "currency.gems.export"
import: "currency.gems.import"
importlegacy: "currency.gems.importlegacy"
messages:
balance: "&bВаш баланс: &3{amount} &bКристаллов"
balance-other: "&bБаланс игрока &3{player}&b: &3{amount} &bКристаллов"
give-success: "&bВы выдали &3{amount} &bКристаллов игроку &3{player}"
take-success: "&bВы изъяли &3{amount} &bКристаллов у игрока &3{player}"
pay-success: "&bВы передали &3{amount} &bКристаллов игроку &3{player}"
pay-received: "&bВы получили &3{amount} &bКристаллов от игрока &3{player}"
set-success: "&bВы установили баланс игрока &3{player} &bна &3{amount} &bКристаллов"
reset-success: "&bВы сбросили баланс игрока &3{player}"
giveall-success: "&bВы выдали &3{amount} &bКристаллов всем игрокам (&3{count} &bигроков)"
broadcast-message: "&3{player} &bимеет &3{amount} &bКристаллов"
reload-success: "&bКонфигурация успешно перезагружена!"
insufficient-funds: "&cНедостаточно средств! Ваш баланс: &3{balance}"
player-not-found: "&cИгрок не найден!"
invalid-amount: "&cНеверная сумма!"
no-permission: "&cУ вас нет прав для использования этой команды!"---
## 🎨 Цветовая система
### Поддерживаемые форматы:
1. Minecraft коды цветов:
&a, &c, &e и т.д.2. HEX цвета:
#RRGGBB (например: #FFD700, #00FFFF)3. Комбинация:
&#FFD700Текст &aдругой текст### Примеры:
-
#FFD700Золотой текст - золотой цвет-
#00FFFFГолубой текст - голубой цвет-
&cКрасный текст - красный цвет-
&a&lЗеленый жирный - зеленый жирный текст---
## 🔌 PlaceholderAPI
### Использование placeholders:
После настройки валюты с placeholder "coins", вы можете использовать:
-
%currency_coins% - в любом плагине, поддерживающем PlaceholderAPI- Примеры использования:
- Скорборды (DeluxeScoreboard, FeatherBoard)
- Таблички (AnimatedTAB)
- Чат (EssentialsChat, ChatControl)
- Табы (TAB)
---
## 📂 Система хранения данных
### Структура файла игрока:
yaml
# plugins/CurrencyPlugin/playerdata/<UUID>.yml
coins: 1500.0
gems: 250.0
points: 3000.0### Автоматическое управление:
- Создание: При первом входе игрока
- Сохранение: При каждом изменении баланса
- Загрузка: При входе игрока на сервер
---
## 🛠️ Установка и настройка
### Шаг 1: Установка
1. Скачайте
Currency-1.2.0.jar из папки target/2. Поместите файл в папку
plugins/ вашего сервера3. Перезапустите сервер
### Шаг 2: Настройка
1. Откройте
plugins/CurrencyPlugin/config.yml2. Настройте валюты по вашему желанию
3. Выполните команду
/coins reload (или перезапустите сервер)### Шаг 3: Настройка прав
Используйте плагин управления правами (LuckPerms, PermissionsEx):
/lp group admin permission set currency.coins.*
/lp group default permission set currency.coins.view
/lp group default permission set currency.coins.pay---
## 🔧 Технические детали
### Зависимости:
- Spigot API: 1.20.1
- PlaceholderAPI: 2.11.6 (опционально)
- Java: 17+
- Maven: Для сборки
### Структура проекта:
CurrencyPlugin/
├── src/main/java/com/currencyplugin/
│ ├── CurrencyPlugin.java # Главный класс
│ ├── commands/
│ │ └── CurrencyCommand.java # Обработчик команд
│ ├── managers/
│ │ ├── Currency.java # Модель валюты
│ │ ├── CurrencyManager.java # Менеджер валют
│ │ └── DataManager.java # Менеджер данных
│ ├── placeholders/
│ │ └── CurrencyPlaceholder.java # Интеграция PlaceholderAPI
│ └── utils/
│ └── ColorUtils.java # Утилиты для цветов
└── src/main/resources/
├── config.yml # Конфигурация
└── plugin.yml # Описание плагина### Производительность:
- Кэширование: Данные игроков кэшируются в памяти
- Асинхронность: Сохранение данных не блокирует сервер
- Оптимизация: Минимальная нагрузка на диск
---
## 📝 Примеры использования
### Создание валютной системы для RPG сервера:
yaml
currencies:
# Основная валюта
gold:
display-name: "#FFD700Золото"
command: "gold"
placeholder: "gold"
starting-balance: 1000.0
# Премиум валюта
diamonds:
display-name: "#00FFFFАлмазы"
command: "diamonds"
placeholder: "diamonds"
starting-balance: 0.0
# Очки опыта
exp:
display-name: "#00FF00Опыт"
command: "exp"
placeholder: "exp"
starting-balance: 0.0### Настройка магазина:
С помощью других плагинов (например, ChestShop или QuickShop) можно использовать эти валюты для создания магазинов.
---
## ❓ Частые вопросы
### Как добавить новую валюту?
1. Откройте
config.yml2. Добавьте новую секцию под
currencies:3. Выполните
/reload или перезапустите сервер### Как изменить стартовый баланс?
1. Измените параметр
starting-balance в конфиге2. Для существующих игроков используйте
/currency set### Можно ли использовать без PlaceholderAPI?
Да, плагин работает без PlaceholderAPI, но placeholders не будут доступны.
### Как сделать резервную копию?
Скопируйте папку
plugins/CurrencyPlugin/playerdata/ или используйте команду /currency export---
## 🐛 Поддержка и баги
При обнаружении багов или проблем:
1. Проверьте логи сервера
2. Убедитесь, что конфигурация корректна
3. Проверьте версию Java и Spigot
---
## 📊 Статистика плагина
- Версия: 1.2.0
- Язык: Java 17
- API: Spigot 1.20.1
- Команд: 14
- Прав: 13 на валюту
- Placeholders: Неограниченно
- Валют: Неограниченно
- Github: github.com/animesao/Currency
---
## 🎉 Заключение
CurrencyPlugin - это мощный и гибкий плагин для создания множественных валютных систем на вашем сервере. С поддержкой неограниченного количества валют, детальной системой прав и PlaceholderAPI интеграцией, он идеально подходит для любого типа серверов.
Основные преимущества:
- ✅ Неограниченное количество валют
- ✅ Полная настройка сообщений и цветов
- ✅ Детальная система прав
- ✅ PlaceholderAPI интеграция
- ✅ Простая конфигурация
- ✅ Высокая производительность
- ✅ Полная поддержка HEX цветов
- ✅ Система конвертации и миграции
Удачи в настройке вашего сервера! 🚀