- Поддерживаемые версии
- 1.21
- 26.1
- 26.2
- 26.3
- 26.4
- Ядра и Прокси
- Spigot
- Paper
- Folia
- Минимальная версия Java
- 21
- Исходный код
- https://github.com/Rulhot/rAlchemist
Твои игроки кладут до 15 зелий в меню алхимика и получают одно со всеми эффектами. Ты задаёшь цену, шанс неудачи и лимиты.
Paper 1.21.4+ • Folia • Java 21
Paper 1.21.4+ • Folia • Java 21
Как это работает
- Игрок открывает меню командой /alchemist.
- Кладёт от 2 до 15 положительных зелий одного вида: обычные, взрывные или туманные.
- Видит готовое зелье, цену и шанс неудачи до оплаты.
- Нажимает «Скрестить зелья» и забирает результат.
Возможности
Скрещивание
- До 15 зелий в одном. Минимум задаёшь сам, по умолчанию 2.
- Предпросмотр: игрок видит зелье, цену и шанс неудачи до оплаты.
- Запрет одинаковых эффектов в одном зелье.
- Группы несовместимых эффектов, например сила и сопротивление.
- Повторное скрещивание готового зелья включается одной строкой.
- Своё название, описание и CustomModelData готового зелья.
Цена
- Формула: база, доплата за каждое зелье и доплата за каждый эффект. По умолчанию 3000 и 250 за эффект.
- Плата через Vault, BVault, CoinsEngine или PlayerPoints.
- Несколько валют за одно скрещивание, например монеты и донат-валюта.
- Скидка по праву ralchemist.discount.20 складывается со скидкой уровня.
- Если плата не списалась, зелья остаются у игрока.
Шанс неудачи
- Базовый шанс и 5% за каждый эффект, потолок 50%.
- Режим BURN: зелья сгорают.
- Режим SPOIL: игрок получает испорченное зелье.
- Эффекты испорченного зелья задаёшь сам. По умолчанию отравление на 15 секунд и тошнота на 10.
- Все значения 0: скрещивание без неудач.
Уровни алхимика
- 10 очков за каждое успешное скрещивание.
- 5 уровней по умолчанию, список меняешь в levels.yml.
- Уровень открывает слоты: 5 на первом, 15 на пятом.
- На 5 уровне скидка 20% и минус 25% к шансу неудачи.
- Закрытый слот показывает уровень, на котором он откроется.
- Очки и уровни ты выдаёшь командой /alchemist points.
Лимиты
- Пауза между скрещиваниями в секундах.
- Лимит скрещиваний в сутки.
- Свои значения для групп по праву ralchemist.limits.vip. При нескольких правах игрок получает лучшее.
- Права обхода паузы и лимита для персонала.
Меню и оформление
- Размер меню, слоты для зелий, слот результата и предпросмотра.
- Свои кнопки: материал, название, описание и действие.
- Готовое зелье ложится в слот меню или сразу в инвентарь.
- 11 цветов зелья в палитре, свой цвет командой /alchemist #FF8800 и сброс.
- MiniMessage во всех текстах: градиенты, тени, HEX.
- Звуки клика, успеха и неудачи.
Эссенции
Игрок накладывает эссенцию на зелье в наковальне за уровни опыта. Одна эссенция уходит на одно зелье. В верстаке, печи и варочной стойке эссенция не тратится.
| Эссенция | Что делает | Цена |
|---|---|---|
| Время | Продлевает эффекты до 5 минут | 1 уровень |
| Сила | Повышает уровень эффектов на 1, максимум II | 3 уровня |
| Скрытность | Убирает частицы зелья невидимости | 3 уровня |
| Тайна | Маскирует зелье под бутылёк воды и скрывает эффекты, пока игрок его не выпьет | 1 уровень |
| Вечность | Положительные эффекты держатся до смерти или молока | 30 уровней |
Материал, название, CustomModelData, цену и силу каждой эссенции ты меняешь в items.yml. Эссенции на скрещенных зельях включаются в mixing.yml.
YAML:
settings:
debug: false # подробные сообщения в консоль для поиска ошибок
metrics: true # анонимная статистика bStats
update-check: true # сообщение в консоль о новой версии плагина
command:
main: alchemist # название основной команды
aliases: [ alchemy ] # дополнительные названия команды
# Плата за скрещивание.
# Каждый блок "- provider" добавляет ещё одну валюту. Игрок платит все валюты сразу.
# Итог: (base + per-potion x зелья + per-effect x эффекты) минус скидка игрока.
price:
costs:
- provider: VAULT # плагин экономики: VAULT, BVAULT, COINSENGINE, PLAYERPOINTS
currency: money # COINSENGINE: ID валюты. BVAULT: название счёта. VAULT и PLAYERPOINTS это поле не читают
base: 3000 # базовая цена скрещивания
per-potion: 0 # доплата за каждое зелье в слотах
per-effect: 250 # доплата за каждый эффект в готовом зелье
# Звуки меню. Пустой key отключает звук.
sounds:
click: # клик по кнопке
key: "minecraft:ui.button.click" # ID звука
volume: 0.5 # громкость от 0.0 до 1.0
pitch: 1.0 # высота от 0.5 до 2.0
mix-success: # успешное скрещивание
key: "minecraft:block.brewing_stand.brew"
volume: 1.0
pitch: 1.0
mix-fail: # неудача или ошибка
key: "minecraft:block.note_block.bass"
volume: 1.0
pitch: 1.0
config-version: 2 # служебное поле, не меняй
YAML:
min-potions: 2 # минимум зелий для скрещивания
allow-crossed: false # true: скрещенное зелье участвует в новом скрещивании
allow-duplicates: false # true: разрешены зелья с одинаковым эффектом
combine-essences: false # true: эссенции работают на скрещенных зельях, а зелья с эссенцией идут в скрещивание
# Эффекты из одной группы не попадают в одно зелье.
# Названия как в команде /effect. В группе минимум два эффекта.
incompatible:
- [strength, resistance]
- [regeneration, instant_health]
# Шанс неудачи в процентах:
# base-chance + chance-per-effect x число эффектов, минус бонус уровня, не выше max-chance.
failure:
mode: SPOIL # BURN: зелья сгорают. SPOIL: игрок получает испорченное зелье из items.yml
base-chance: 0 # шанс неудачи без учёта эффектов
chance-per-effect: 5 # прибавка за каждый эффект
max-chance: 50 # потолок шанса
limits:
cooldown-seconds: 0 # пауза между скрещиваниями, 0 отключает паузу
daily-mixes: 0 # скрещиваний в сутки, 0 отключает лимит
# Свои лимиты по праву ralchemist.limits.<имя>.
# При нескольких правах игрок получает меньшую паузу и больший лимит.
groups:
vip: # право ralchemist.limits.vip
cooldown-seconds: 0
daily-mixes: 0
config-version: 1 # служебное поле, не меняй
YAML:
points-per-mix: 10 # очки за одно успешное скрещивание
# Список уровней. Номер уровня: ключ секции. Добавляй и удаляй уровни свободно.
list:
1:
points: 0 # очки для получения уровня
slots: 5 # открытые слоты под зелья
discount: 0 # скидка на скрещивание в процентах
fail-reduction: 0 # сколько процентов вычитается из шанса неудачи
2:
points: 50
slots: 8
discount: 5
fail-reduction: 5
3:
points: 150
slots: 10
discount: 10
fail-reduction: 10
4:
points: 400
slots: 12
discount: 15
fail-reduction: 15
5:
points: 1000
slots: 15
discount: 20
fail-reduction: 25
config-version: 1 # служебное поле, не меняй
YAML:
# Готовое зелье после скрещивания.
crossed-potion:
model-data: 0 # CustomModelData для ресурспака
name: "<white>Скрещенное зелье" # название, формат MiniMessage
lore: [] # описание под названием
# Зелье при неудаче в режиме SPOIL.
spoiled-potion:
model-data: 0
name: "<white>Испорченное зелье"
lore:
- ""
- " <#D7706C>▌ <white>Что-то пошло не так..."
- ""
effects: # формат: эффект:уровень:секунды
- poison:1:15
- nausea:1:10
# Эссенция времени.
essence:
material: AMETHYST_SHARD # предмет эссенции
glow: false # блеск зачарования
model-data: 0 # CustomModelData для ресурспака
duration-minutes: 5 # до скольких минут продлевает эффекты, максимум 1440
level-cost: 1 # цена в наковальне в уровнях опыта, от 1 до 39
name: "<white>Эссенция времени"
lore: # {minutes} подставляет duration-minutes
- ""
- " <#7FC4B8>Эссенция <white>- увеличивает время"
- " <white>эффектов любого зелья."
- ""
- " <#7FC4B8><u>▌</u> <white>Время эффектов: до <#7FC4B8>{minutes} мин."
- " <#7FC4B8>▌ <white>Скрещивание в наковальне."
- ""
# Эссенция силы.
power-essence:
material: BLAZE_POWDER
glow: true
model-data: 0
max-level: 2 # потолок уровня эффекта
ignored-effects: [night_vision, invisibility, fire_resistance, water_breathing, slow_falling, glowing] # эти эффекты не усиливаются
level-cost: 3
name: "<white>Эссенция силы"
lore: # {max} подставляет max-level
- ""
- " <#D9A26B>Эссенция <white>- усиливает эффекты"
- " <white>любого зелья на один уровень."
- ""
- " <#D9A26B><u>▌</u> <white>Максимальный уровень: <#D9A26B>{max}"
- " <#D9A26B>▌ <white>Скрещивание в наковальне."
- ""
# Эссенция скрытности: убирает частицы эффектов.
stealth-essence:
material: PHANTOM_MEMBRANE
glow: true
model-data: 0
required-effects: [invisibility] # зелья, на которые действует. Пустой список []: любые зелья
level-cost: 3
name: "<white>Эссенция скрытности"
lore:
- ""
- " <#8FB8DE>Эссенция <white>- полностью скрывает"
- " <white>частицы зелья невидимости."
- ""
- " <#8FB8DE>▌ <white>Скрещивание в наковальне."
- ""
# Эссенция тайны: маскирует зелье под бутылёк воды.
mystery-essence:
material: INK_SAC
glow: true
model-data: 0
level-cost: 1
name: "<white>Эссенция тайны"
lore:
- ""
- " <#9FA8DA>Эссенция <white>- скрывает эффекты зелья"
- " <white>в описании, пока его не выпьют."
- ""
- " <#9FA8DA>▌ <white>Скрещивание в наковальне."
- ""
# Эссенция вечности: положительные эффекты держатся до смерти или молока.
eternity-essence:
material: NETHER_STAR
glow: true
model-data: 0
level-cost: 30
name: "<white>Эссенция вечности"
lore:
- ""
- " <#FF6B35>Эссенция <white>- делает положительные"
- " <white>эффекты зелья бесконечными."
- ""
- " <#FF6B35><u>▌</u> <white>Эффект пропадёт после смерти или молока."
- " <#FF6B35>▌ <white>Скрещивание в наковальне."
- ""
config-version: 1 # служебное поле, не меняй
YAML:
# Все тексты в формате MiniMessage. {prefix} подставляет строку prefix, {command} название команды.
prefix: "<b><gradient:#FF6B35:#FF9A6C>rAlchemist</gradient></b> <dark_gray>»</dark_gray>"
no-permission: "..." # у игрока нет права
player-only: "..." # команду ввели из консоли
player-not-found: "..." # игрок не в сети. {player}: ник
unknown: "..." # неизвестная подкоманда
data-not-loaded: "..." # данные игрока ещё грузятся из базы
help: [] # строки справки /alchemist help
invalid-number: "..." # неверное число. {value}: ввод, {max}: максимум
give: # команда /alchemist give
usage: [] # подсказка по использованию
sender: "..." # сообщение администратору. {player}, {essence}, {amount}
target: "..." # сообщение получателю. {essence}, {amount}
unavailable: "..." # эссенция отключена в items.yml
points: # команда /alchemist points
usage: [] # подсказка по использованию
add-points: "..." # выданы очки. {amount}, {player}
add-levels: "..." # выданы уровни
take-points: "..." # очки забраны, отрицательное число в add
take-levels: "..." # уровни забраны
set-points: "..." # очки установлены
set-levels: "..." # уровень установлен
query-points: "..." # очки игрока
query-levels: "..." # уровень игрока
unknown-level: "..." # уровня нет в levels.yml. {level}
reload: # команда /alchemist reload
usage: "..."
done: "..." # конфиги перечитаны
economy-failed: "..." # новая экономика не подключилась, работает прежняя
mix: # сообщения меню алхимика
success: "..." # зелья скрещены. {price}: цена
burned: "..." # неудача в режиме BURN
spoiled: "..." # неудача в режиме SPOIL
too-few: "..." # мало зелий. {required}: минимум
not-potion: "..." # в слоте лежит не зелье
not-positive: "..." # в слоте отрицательное зелье или зелье без эффектов
already-crossed: "..." # скрещенное зелье при allow-crossed: false
essence-potion: "..." # зелье с эссенцией при combine-essences: false
different-types: "..." # смешаны обычные, взрывные и туманные зелья
duplicate-effect: "..." # одинаковый эффект. {effect}
incompatible: "..." # несовместимые эффекты. {first}, {second}
result-busy: "..." # в слоте результата лежит прошлое зелье
cooldown: "..." # пауза не прошла. {seconds}
daily-limit: "..." # суточный лимит исчерпан. {limit}
not-enough-money: "..." # не хватает средств. {price}
economy-error: "..." # плата не списалась, зелья остались у игрока
price: # как выглядит цена в меню и сообщениях. {amount}: сумма, {currency}: валюта
free: "<#8CC77E>бесплатно"
vault: "<#E6C15A>{amount} ⛃"
bvault: "<#E6C15A>{amount} ⛃"
coinsengine: "<#E6C15A>{amount} {currency}"
playerpoints: "<#8FB8DE>{amount} валюта."
level:
up: "..." # игрок получил новый уровень. {level}
max: "<gray>макс." # текст вместо порога очков на последнем уровне
never: "<gray>-" # текст для слота, который не открывает ни один уровень
limits:
unlimited: "<gray>без лимита" # текст {left} при выключенном лимите
color:
default: "<gray>по умолчанию" # название цвета, когда игрок его не выбирал
input: "..." # подсказка с командой /alchemist #RRGGBB
invalid: "..." # неверный формат цвета
config-version: 2 # служебное поле, не меняй
YAML:
storage: sqlite # где хранятся очки, уровни и цвет игроков: sqlite или mysql
# Читается только при storage: mysql
mysql:
host: localhost # адрес сервера базы
port: 3306 # порт
database: ralchemist # название базы
user: "root" # пользователь
password: "" # пароль
config-version: 1 # служебное поле, не меняй
- Зависимости
- Vault, BVault, CoinsEngine, PlayerPoints
- Команды и права
Команда Что делает Право /alchemist Открывает меню алхимика ralchemist.use /alchemist #RRGGBB Задаёт свой цвет зелья ralchemist.use /alchemist give <игрок> <тип> [количество] Выдаёт эссенцию: time, power, stealth, mystery, eternity ralchemist.admin /alchemist points add <игрок> <количество> [points|levels] Добавляет очки или уровни алхимика ralchemist.admin /alchemist points set <игрок> <количество> [points|levels] Устанавливает очки или уровень алхимика ralchemist.admin /alchemist points query <игрок> [points|levels] Показывает очки или уровень игрока ralchemist.admin /alchemist reload Перечитывает конфиги ralchemist.admin /alchemist help Показывает список команд ralchemist.admin
Алиас: /alchemy. Право ralchemist.use выдано всем игрокам, ralchemist.admin выдано операторам.
Право Что даёт ralchemist.bypass.cooldown Скрещивание без паузы ralchemist.bypass.limit Скрещивание без суточного лимита ralchemist.discount.<число> Скидка в процентах, складывается со скидкой уровня ralchemist.limits.<имя> Лимиты группы из mixing.yml