Плагин Магазин SoulBuyer [1.4.0]

SoulBuyer
Краткое описание:
Забудьте про унылых скупщиков. SoulBuyer — скупщик, который заменит их всех.
156
2 038
  • Лайк 0
Реакции:8 пользователей

Предыдущие версии [17]

Другие версии

Последние обновления

1.4.0

Добавлена метрика. Добавлено автоопределение языка игрока

1.3.21

✦ SoulBuyer 1.3.21 • Плейсхолдеры продаж за всё время: %soulbuyer_sold_alltime_money%...

1.3.20

Теперь в переводах добавлены плейсхолдеры: Сколько средств недостаточно для обмена в обеих...
Смотреть еще...
Для версий
  1. 1.21.✘
  2. 26.✘
Java
  1. Java 21
  2. Java 22
  3. Java 23
  4. Java 25
21

Описание плагина SoulBuyer:​

SoulBuyer — это не ещё один плагин на скупщика «лишь бы содрать с покупателей что-то». Это продвинутая система скупщика ресурсов для Paper 1.21+: живое GUI, динамический рынок, ротация ассортимента, автопродажа с тремя режимами, интеграция с PlayerPoints (отдельный донатный скупщик или выплата целиком в поинты), прогрессия игрока и несколько режимов хранения — от YAML на одном сервере до MySQL + Redis в сети.

Здесь нет механики «положи предмет в слот и жди». Игрок открывает меню и сразу видит сетку скупаемых ресурсов с актуальными ценами, очками и рыночным коэффициентом. ЛКМ по предмету — продажа всего такого ресурса из инвентаря; ПКМ — выбор количества в отдельном подменю. Есть фильтры по категориям, сортировки, пагинация и кнопка «продать всё».

Чем больше на сервере продают один ресурс — тем ниже его рыночный коэффициент (с настраиваемым минимумом и постепенным восстановлением). За продажи начисляются очки прогрессии и опыт категорий (руды, мобы, растения, блоки, прочее). Выплата идет через Vault или PlayerPoints (в зависимости от настроек донатного скупщика).

Автопродажа — отдельный донат-плюс: игрок сам выбирает, когда сдавать ресурсы — при подборе, при открытии меню скупщика или прямо из сундука при его открытии. Настраиваются категории, уведомления и минимальная цена.

Ассортимент не застаивается: по таймеру меняется набор скупаемых предметов, сбрасываются рыночные коэффициенты, а игроки получают оповещение в чат. Внизу меню доступна живая панель статистики: сколько осталось до обновления, что продано сегодня и сколько ресурсов сейчас находится в ротации.

Скриншотосы SoulBuyer:​

1223344556677889910101111

Особенности плагина SoulBuyer:​

  • Из коробки — ~380 предметов, GUI, ротация, рынок и lang (ru/en) с первого запуска; без ручной возни с конфигами
  • Всё настраивается — цены, каталог, слоты GUI, права, лимиты рынка, ротация, автопродажа, economy; тексты в lang/, цифры в config.yml / items.yml
  • GUI вместо команд — продажа, фильтры, сортировки, количество, автопродажа; команды только как алиасы
  • Живой рынок — цена падает от массовых сдач, decay возвращает к норме; игрок видит коэффициент в lore
  • Ротация ассортимента — по таймеру новый набор из пула; оповещение в чат; открытые меню обновляются на месте
  • Донатный скупщик — Vault + PlayerPoints: два меню (/buyer и /donbuyer) или один скупщик целиком на поинты; два флага в config
  • Автопродажа — донат-плюс: подбор / меню / сундук; категории, мин. цена, уведомления; при dual — выбор, куда платить (монеты или поинты)
  • Прогрессия — очки, XP категорий, VIP-множители через LuckPerms; мотивация фармить, не только лутать
  • Живая статистика — таймер до ротации, «продано сегодня», размер ассортимента прямо в меню (+ PlaceholderAPI)
  • Анимация категорий — иконки фильтров крутят реальные предметы из текущей ротации
  • Оптимизация — весь I/O БД асинхронно; main thread не блокируется; HikariCP; Redis только когда нужна сеть
  • Хранение на выбор — flat / sqlite / mysql + Redis для нескольких Paper-серверов с общим рынком
  • Безопасные продажи — secure storage на транзакцию; при ошибке или выходе предметы возвращаются
  • API для других плагинов — SoulBuyerApi: открыть меню, котировки, рынок, прогресс, автопродажа

GUI скупщика​

ЗонаЧто делает
Верхний рядФильтры категорий + блок «Ваш прогресс» (очки, множитель)
Сетка 21 слотИконки скупаемых предметов: цена, очки, рынок, количество в инвентаре. ЛКМ — продать всё, ПКМ — подменю количества
Стрелки ← →Пагинация (на 4-м ряду, по бокам от сетки)
Нижний рядСортировки, «продать всё», автопродажа, панель «До обновления»
Категории«Все» — иконка Vault (хранилище); остальные — живая анимация: иконка меняется и показывает реальный предмет из текущего ассортимента категории
Сортировки (активная подсвечивается свечением): дороже / дешевле / больше очков / по названию.

Автопродажа (изумруд в нижнем ряду): ЛКМ — экран настроек, ПКМ — вкл/выкл. Подробности — в разделе Автопродажа.

Тексты и цвета — в lang/ru.yml, lang/en.yml. Hex-цвета, градиентный заголовок, lore у категорий и предметов настраиваются без пересборки JAR.

Автопродажа​

Отдельная механика для доната (soulbuyer.autosell, по умолчанию OP). Игрок настраивает поведение сам — настройки сохраняются per-player (YAML или MySQL).

Когда продавать​

Один из трёх режимов (переключается кнопкой в меню настроек):

РежимИконкаКогда срабатывает
При подбореВоронкаПредмет попал в инвентарь с земли или с рыбалки
При открытии менюИзумрудОткрыт GUI скупщика — продаёт всё подходящее из инвентаря игрока
При открытии сундукаСундукОткрыт контейнер — продаёт всё подходящее из слотов сундука. Инвентарь игрока не трогается
Работает с сундуком, бочкой, шалкером, эндер-сундуком, воронкой, раздатчиком, выбрасывателем, вагонеткой-сундуком. Учитываются включённые категории и мин. цена игрока.

Что ещё настраивается​

ОпцияСмысл
Вкл/выклМастер-переключатель (центр меню или ПКМ по изумруду в скупщике)
КатегорииРуды, мобы, растения, блоки, прочее — клик вкл/выкл автопродажу для категории
УведомленияAction bar / чат / выкл
Мин. ценаНе продавать предметы дешевле порога (с учётом рынка и множителей)
Куда продаватьТолько при dual buyer: обычный скупщик (Vault) или донатный (PlayerPoints). Клик по слитку в центре 4-го ряда
На слоте с книгой — краткая справка для игрока. Если в инвентаре нечего продавать, лишних сообщений в чат нет.

В обоих меню скупщика (обычном и /donbuyer) кнопка автопродажи показывает текущий режим выплаты; настройка — в том же экране автопродажи, куда игрок зашёл из любого меню.

Зачем это серверу​

  • Донат-плюс без pay-to-win: те же цены и рынок, меньше рутины.
  • Сортировка базы: режим «сундук» — открыл хранилище, скупаемый мусор внутри сразу продался, нужное осталось в сундуке.
  • АФК-фарм: режим «подбор» — подобрал ресурс, он уже продан.
  • Казуал-игроки: режим «меню» — зашёл в /buyer, всё лишнее сдалось само.
В config.yml → секция autosell: вкл/выкл фичи на сервере, дефолты для новых игроков, шаги мин. цены, задержка после подбора.

PlayerPoints и донатный скупщик​

SoulBuyer не привязан только к Vault. Если на сервере стоит PlayerPoints, плагин умеет платить за сдачу ресурсов донатными поинтами — без костылей, отдельными командами и с тем же рынком, ротацией и прогрессией.

Один каталог items.yml, одни цены и коэффициенты — меняется только валюта выплаты (монеты сервера или PlayerPoints).

Три режима (секция economy в config.yml)​

player-points-enableddonate-buyer-enabledЧто видит игрок
falseКлассика: /buyer → выплата в Vault
truefalseОдин скупщик: /buyer → всё в PlayerPoints (Vault не нужен)
truetrueДва скупщика: обычный за монеты + донатный за поинты
economy:
player-points-enabled: false # включить PlayerPoints
donate-buyer-enabled: false # true = второе меню только за поинты

Два скупщика — зачем это круто​

На донат-серверах часто нужно разделить экономику: фарм → монеты, донатный контент → поинты. SoulBuyer закрывает оба сценария одним JAR:

МенюКомандаВыплатаКому
Обычный/buyer, /sell, /soulbuyerVault (монеты)Все с soulbuyer.use
Донатный/donbuyer, /dbuyer, /ppbuyerPlayerPointsС soulbuyer.donate
  • Тот же ассортимент и живой рынок — цена падает от массовых продаж в обоих меню.
  • Очки прогрессии и XP категорий начисляются как обычно (это не валюта, а мета-прогресс SoulBuyer).
  • Отдельный заголовок и lore у донатного меню — игрок сразу видит, что платят поинтами.
  • Автопродажа следует выбору игрока в настройках: при dual-режиме — Vault или PlayerPoints; если включён только PlayerPoints — всегда в поинты.

Fresh install​

Дефолты в Java: PlayerPoints выключен, работает только Vault — как раньше. Включение — две строки в config.yml, перезапуск сервера. Команды /donbuyer и алиасы уже в plugin.yml; если донатный режим выключен, /donbuyer ответит, что фича недоступна.

Зависимости​

ПлагинКогда нужен
Vault + экономикаДефолт; обязателен при dual-режиме и классическом режиме
PlayerPointsplayer-points-enabled: true
Оба — softdepend в plugin.yml: плагин стартует, ждёт нужную экономику и только потом открывает GUI.

Динамический рынок​

  • Каждый ресурс имеет базовую цену и коэффициент рынка (старт 1.0).
  • Массовые продажи снижают коэффициент до настроенного минимума.
  • Decay постепенно возвращает цену к 1.0, если ресурс перестают сдавать.
  • В режиме mysql + сеть коэффициенты синхронизируются через Redis pub/sub.
Игрок видит множитель рынка прямо в lore предмета в GUI.

Ротация ассортимента​

Полный каталог (~380 ванильных ресурсов в items.yml) — это пул. В скупщике одновременно активен случайный поднабор (по умолчанию 48 предметов, минимум из каждой категории).

ПараметрДефолтСмысл
catalog-rotation.enabledtrueРотация вкл/выкл
interval-seconds3600Интервал смены (1 час)
active-item-count48Сколько предметов в меню
reset-market-on-rotationtrueСброс коэффициентов рынка при смене
notify.enabledtrueСообщение в чат при обновлении
Состояние ротации хранится в data/rotation.yml. Открытые меню обновляются без закрытия.

Панель статистики (центр низа)​

Вместо «Страница 1/3» — часы с живым таймером (обновление каждую секунду):
  • До обновления — оставшееся время до ротации
  • Сегодня продано — монеты, очки, позиций
  • В ассортименте — сколько ресурсов сейчас в ротации
Плейсхолдеры для lore в lang:

ПлейсхолдерОписание
{rotation_left}Таймер до ротации или «отключена» / «скоро»
{sold_today_money}Монет за сегодня
{sold_today_points}Очков за сегодня
{sold_today_stacks}Позиций продано
{active_items}Предметов в текущем ассортименте

Прогрессия​

  • Очки за каждую продажу (из base-points предмета × множители).
  • XP категорий — растёт от продаж в соответствующей категории.
  • Permission-множители — VIP, Premium и др. (берётся максимальный из выданных).
  • Бонус доминирующей категории — доп. доход от уровня XP главной категории.

Защита и надёжность​

  • Secure storage на время транзакции — предметы не теряются при лаге или ошибке.
  • При выходе / сбое — возврат непроданного в инвентарь.
  • Продажи пишутся в лог (sales.log или таблица soulbuyer_sales) — основа для статистики «сегодня продано».
  • Весь I/O с БД — асинхронно, main thread не блокируется.

Хранение данных​

РежимКогда использовать
flatОдин сервер, YAML + лог продаж (дефолт)
sqliteОдин сервер, файл data/data.db
mysqlСеть серверов, общая БД + Redis для рынка
Прогресс игрока, коэффициенты рынка, ротация, лог продаж — всё переживает рестарт.

Команды плагина SoulBuyer:​

Основная: /soulbuyer. Алиасы открытия меню (настраиваются): /buyer, /sell, /sb, /rbuyer, /bs.
Донатный скупщик (только при economy.donate-buyer-enabled: true): /donbuyer. Алиасы: /dbuyer, /ppbuyer, /donatesell.

КомандаДействие
/soulbuyerОткрыть GUI скупщика (Vault или PlayerPoints — по режиму economy)
/buyer, /sell, …То же (алиасы)
/donbuyer, /dbuyer, …Донатное меню — выплата в PlayerPoints (dual-режим)
/soulbuyer admin reloadПерезагрузить config, gui, lang
Алиасы наследуют подкоманды: /buyer admin reload = /soulbuyer admin reload.

Права плагина SoulBuyer:​

НодаДоступ
soulbuyer.useGUI и продажа (обычный скупщик)
soulbuyer.donateДонатное меню /donbuyer (PlayerPoints, dual-режим)
soulbuyer.admin/soulbuyer admin reload
soulbuyer.autosellАвтопродажа (донат, OP по умолчанию)
soulbuyer.multiplier.vipМножитель ×1.1 (дефолт)
soulbuyer.multiplier.premiumМножитель ×1.25 (дефолт)
При нескольких multiplier-нодах берётся максимальный множитель.

Плэйсхолдеры плагина SoulBuyer:​

softdepend — если PAPI на сервере, регистрируется expansion soulbuyer.

ПлейсхолдерОписание
%soulbuyer_rotation_left%Таймер до ротации (текст)
%soulbuyer_rotation_seconds%Секунд до ротации (число)
%soulbuyer_sold_today_money%Монет продано сегодня
%soulbuyer_sold_today_points%Очков за сегодня
%soulbuyer_sold_today_stacks%Позиций продано сегодня
%soulbuyer_active_items%Предметов в текущем ассортименте
Плейсхолдеры PAPI можно вставлять в строки lang/*.yml — они подставятся при отрисовке GUI.

Конфигурация​

ФайлСодержимое
config.ymlХранение, рынок, ротация, прогрессия, права, анимация иконок категорий
items.ymlКаталог: id, material, категория, base-price, base-points
gui/general.yml, gui/buyer.yml, gui/quantity.yml, gui/autosell.ymlСлоты, материалы кнопок, action-типы
lang/ru.yml, lang/en.ymlЗаголовки, lore, сообщения, hex-цвета
data/rotation.ymlТекущая ротация и время следующей смены
data/market.ymlКоэффициенты рынка (режим flat)
data/players/Прогресс игроков (режим flat)
Дефолты заданы в Java — после первого запуска всё работает из коробки: ~380 предметов, ротация, GUI, каталог, статистика.

Установка плагина SoulBuyer:​

Требования​

КомпонентОбязательность
Paper 1.21+да
Java 21да
Vault + экономикада по умолчанию; не нужен, если только PlayerPoints (player-points-enabled: true, donate-buyer-enabled: false)
PlayerPointsопционально; нужен при player-points-enabled: true
MySQL + Redisтолько storage-type: mysql в сети
PlaceholderAPIопционально
  1. Скачайте плагин.
  2. Выключите сервер
  3. Переместите файл .jar в папку /plugins/ вашего сервера.
  4. Запустите сервер.
  5. Готово.

Публичное API​

Для других плагинов — интерфейс SoulBuyerApi, регистрируется в Bukkit ServicesManager.

Java:
import bm.b0b0b0.soulBuyer.api.SoulBuyerApi;
import bm.b0b0b0.soulBuyer.api.SoulBuyerApiProvider;
import org.bukkit.Bukkit;

SoulBuyerApi api = SoulBuyerApiProvider.get();
// или: Bukkit.getServicesManager().load(SoulBuyerApi.class)

if (api.isReady()) {
    api.openBuyerMenu(player);
    double points = api.cachedPoints(player);
    double multiplier = api.cachedMultiplier(player);
    api.quoteItem(player, "diamond").ifPresent(quote -> { /* unitPrice, unitPoints */ });
    api.fetchProgress(player.getUniqueId()).thenAccept(progress -> { /* async */ });
}

МетодНазначение
isReady()Плагин загружен и готов
openBuyerMenu(Player)Открыть GUI скупщика
quoteItem / quoteStackЦена и очки за единицу с учётом рынка и множителей
marketCoefficient(itemId)Текущий коэффициент рынка
cachedPoints / cachedMultiplier / cachedCategoryXpДанные из кэша (после продаж или fetchProgress)
fetchProgress(UUID)Async загрузка прогресса из хранилища
isSellable / isInActiveCatalogПредмет в пуле / в текущей ротации
isAutosellFeatureEnabled / canUseAutosell / isAutosellEnabledАвтопродажа
plugin.yml другого плагина: depend: [ SoulBuyer ] или softdepend.

Публичное API​

Интерфейс SoulBuyerApi регистрируется в Bukkit ServicesManager. Другой плагин подключается через depend или softdepend: [SoulBuyer].

Подключение​

Java:
import bm.b0b0b0.soulBuyer.api.SoulBuyerApi;
import bm.b0b0b0.soulBuyer.api.SoulBuyerApiProvider;
import bm.b0b0b0.soulBuyer.api.SoulBuyerSellDelivery;
import bm.b0b0b0.soulBuyer.api.SoulBuyerSellReturnPolicy;
import org.bukkit.Bukkit;

SoulBuyerApi api = SoulBuyerApiProvider.get();
// или: Bukkit.getServicesManager().load(SoulBuyerApi.class)

if (!api.isReady()) {
    return;
}

SoulBuyerApiProvider.get() всегда возвращает объект: если SoulBuyer ещё не готов — stub с isReady() == false и no-op методами.

Справочник методов​

МетодВозвратОписание
isReady()booleanПлагин загружен, каталог и экономика готовы
openBuyerMenu(Player)Открыть стандартное GUI скупщика
quoteItem(Player, itemId)Optional<ItemUnitQuote>Цена и очки за 1 шт. с учётом рынка, множителей и кол-ва в инвентаре
quoteStack(Player, ItemStack)Optional<ItemUnitQuote>То же по предмету в руке / слоте
marketCoefficient(itemId)doubleТекущий коэффициент рынка (1.0 = база)
cachedPoints(Player)doubleОчки прогрессии из кэша
cachedMultiplier(Player)doubleИтоговый личный множитель (permission × категория + бустеры)
cachedCategoryXp(Player, categoryId)doubleXP категории из кэша
fetchProgress(UUID)CompletableFuture<PlayerProgress>Async загрузка прогресса из хранилища; обновляет кэш
isSellable(itemId)booleanПредмет есть в пуле items.yml
isInActiveCatalog(itemId)booleanПредмет в текущей ротации ассортимента
activeCatalogSize()intСколько предметов сейчас в ротации
categoryId(itemId)Optional<String>Категория из items.yml (ores, mobs, plants, blocks, misc, …)
categoryId(ItemStack)Optional<String>Категория по material + custom model data
isAutosellFeatureEnabled()booleanАвтопродажа включена на сервере
canUseAutosell(Player)booleanУ игрока право на автопродажу
isAutosellEnabled(Player)booleanМастер-переключатель автопродажи у игрока (не детали категорий/предметов)
isSaleInProgress(Player)booleanИдёт транзакция продажи (secure storage занят)
sellAll(Player)booleanПродать всё скупаемое из инвентаря
sellAll(Player, Runnable)booleanТо же + callback по завершении
sellAll(Player, SoulBuyerSellDelivery, Runnable)booleanПродажа с выбором канала уведомления
sellItem(Player, itemId)booleanПродать весь item-id из инвентаря
sellItem(Player, itemId, Runnable)booleanТо же + callback
sellItemAmount(Player, itemId, amount, Runnable)booleanПродать указанное количество из инвентаря
sellStacks(Player, stacks)booleanПродать переданные стеки (см. ниже)
sellStacks(Player, stacks, Runnable)booleanТо же + callback
sellStacks(Player, stacks, returnPolicy, delivery, Runnable)booleanПолный контроль политики возврата и уведомлений
Методы продажи возвращают false, если API не готов, игрок null, список пуст или уже идёт другая продажа. true — транзакция принята; результат смотри в callback и сообщениях игроку.

Модели​

ItemUnitQuote — unitPrice, unitPoints, marketCoefficient, playerMultiplier, inventoryAmount.

PlayerProgress — playerId, points, categoryXp (map categoryId → XP).

Продажа из инвентаря​

sellAll, sellItem, sellItemAmount работают как кнопки в GUI SoulBuyer: забирают предметы из инвентаря игрока, применяют лимиты, бустеры, рынок, прогрессию, выплату (Vault / PlayerPoints по конфигу). При ошибке непроданное возвращается в инвентарь.
Java:
if (api.isSaleInProgress(player)) {
    return;
}
api.sellAll(player, SoulBuyerSellDelivery.ACTION_BAR, () -> {
    // main thread, после завершения транзакции
    player.sendMessage("Готово!");
});

Продажа из своего GUI — sellStacks​

Для кастомного меню с кнопкой «Продать всё»:

  1. Собери List<ItemStack> из слотов своего GUI.
  2. Отфильтруй по категории через categoryId, если нужно.
  3. Убери стеки из GUI до вызова (при CALLER_OWNS_ITEMS).
  4. Вызови sellStacks.
SoulBuyer сам считает цену, лимиты, бустеры, очки, XP категорий и платит игроку. Несколько стеков в одном вызове — одна транзакция.
Java:
List<ItemStack> toSell = new ArrayList<>();
for (ItemStack stack : guiSlots) {
    if (stack == null || stack.isEmpty()) {
        continue;
    }
    api.categoryId(stack).filter("ores"::equals).ifPresent(category -> toSell.add(stack.clone()));
}
if (toSell.isEmpty() || api.isSaleInProgress(player)) {
    return;
}

// убрать toSell из своего GUI до вызова
boolean started = api.sellStacks(
        player,
        toSell,
        SoulBuyerSellReturnPolicy.CALLER_OWNS_ITEMS,
        SoulBuyerSellDelivery.SILENT,
        () -> refreshMyGui(player)
);
if (!started) {
    // вернуть предметы в GUI вручную
}
SoulBuyerSellReturnPolicyПоведение при отмене / ошибке
RETURN_TO_PLAYERДефолт. Непроданное возвращается в инвентарь игрока
CALLER_OWNS_ITEMSSoulBuyer не трогает предметы — откат GUI делает ваш плагин
SoulBuyerSellDeliveryУведомление игроку
CHATСообщение в чат (дефолт)
ACTION_BARAction bar
SILENTБез сообщений SoulBuyer
Часть стеков может не продаться из‑за дневного лимита — лишнее вернётся игроку (или останется у caller при CALLER_OWNS_ITEMS).

Категории — categoryId​

Категория берётся из поля category в items.yml для каждого item-id. Типичные значения: ores, mobs, plants, blocks, misc. Свои id допустимы — главное, чтобы совпадали с фильтрами в GUI и автопродаже.
Код:
api.categoryId("raw_iron");           // Optional["ores"]
api.categoryId(player.getInventory().getItemInMainHand()); // по material + CMD
api.isSellable("raw_iron");          // true, если id в пуле
api.isInActiveCatalog("raw_iron");   // true, если сейчас в ротации

Кэш прогресса​

cachedPoints / cachedMultiplier / cachedCategoryXp читают память. После join данные подгружаются async; для точных значений до открытия меню вызови fetchProgress(uuid).join() или дождись callback.

fetchProgress безопасен с async-потока; мутация Bukkit API из его callback — только через runTask.

Автопродажа и API: выбор категорий и отдельных item-id настраивается только через GUI SoulBuyer (gui/autosell.yml). Методов toggleAutosellItem / getDisabledItems в SoulBuyerApi нет — для кастомных меню используй sellStacks и свою фильтрацию по categoryId / isInActiveCatalog.

Зависимость в plugin.yml​

Код:
softdepend: [SoulBuyer]

или depend: [SoulBuyer], если ваш плагин не работает без скупщика.

Автор

bobobo

Еще ресурсы от bobobo

Upgradeable Spawners
Upgradeable Spawners
Улучшения спавнера, лимиты, стакование сущностей, мясник, магазин сущностей
Executable Items PREMIUM
Executable Items PREMIUM
Кастомные предметы ✨ Поддержка Custom Craft ✅ Более 30 различных триггеров ⭐ Бесконечные возможности
⭐ ExecutableEvents ⭐ PREMIUM
⭐ ExecutableEvents ⭐ PREMIUM
Инструмент, позволяющий настраивать события, происходящие на вашем сервере.
ExecutableCrafting Premium
ExecutableCrafting Premium
Кастомный крафт — ультимативная система кастомных рецептов для серверов Minecraft!
Executable Blocks ⭐ PREMIUM
Executable Blocks ⭐ PREMIUM
Кастомные блоки, кастомные триггеры, создавайте эпические блоки! Поддерживает ItemsAdder, Oraxen!
Executable Levers
Executable Levers
Размещайте масштабируемые рычаги и настраивайте их триггеры
SCore
SCore
Библиотека для плагинов от Ssomar
⚡ X PRIVATE MINES ⚡ [1.13 - 26.X] ⭐#1 MINES PLUGIN ⭐Lag-Free & Feature-Packed ⭐
⚡ X PRIVATE MINES ⚡ [1.13 - 26.X] ⭐#1 MINES PLUGIN ⭐Lag-Free & Feature-Packed ⭐
Масштаб. Оптимизация. Функции. — Полный контроль над приватными шахтами.
GWarpPro
GWarpPro
✨ Создавайте продвинутые варпы, дома и спавны с помощью многочисленных функций телепортации ✨
GPet ⭐ Modern & Advanced Pet Plugin - [1.20 - 26.2] ✨
GPet ⭐ Modern & Advanced Pet Plugin - [1.20 - 26.2] ✨
✨ Заведи себе милых маленьких питомцев! ✨
ВерхНиз