HTLevelSystem

HTLevelSystem

Extensible leveling system for developers and server owners.

20.0 загрузок
Обновлён 6 дней назад

Описание

Система HTLevels

API уровня/опыта для плагинов сервера Hytale. Хранит плеер XP в выбранном вами SQLite/Postgres/MySQL и предоставляет гибкую кривую выравнивания плюс события, к которым могут подключаться другие плагины.

Особенности

  • Постоянный игрок XP с серверами баз данных: SQLite (по умолчанию), PostgreSQL, MySQL.
  • Настраиваемая кривая выравнивания: квадратическая, линейная или экспоненциальная.
  • Факультативная крышка максимального уровня (зажимы XP однажды достигнуты).
  • Пользовательские события: изменение опыта / выигрыш / убыток, уровень вверх / вниз.
  • Простая общественность API, чтобы другие плагины могли читать или изменять XP.

установка

  1. Бросьте встроенный JAR на сервер плагины папка. 2) Запустить сервер один раз; htlevel.conf Они будут генерироваться внутри папки данных плагина. 3) Редактировать htlevel.conf Выберите DB backend и XP кривую, затем перезапустите.

Конфигурация ()htlevel.conf)

# База данных: sqlite | postgres | mysql
backend=sqlite

# SQLite
sqlite.file=users.sql

# PostreSQL
Postgres.host=localhost
Postgres.port=5432
Postgres.database=hytale
Postgres.user=hytale
Postgres.password=change_me
Postgres.ssl = ложный

#MySQL
mysql.host=localhost
mysql.port=3306
mysql.database=hytale
mysql.user=hytale
mysql.password=change_me
mysql.useSSL = ложный

#XP / Выравнивание
xp.algorithm=quadratic #quadratic | линейный | экспоненциальный
xp.maxУровень = 100 # <=0 без ограничения

# Квадратный: xp = базовый уровень * L + шаг * L^2
xp.quadratic.basePerLevel=100
xp.quadratic.step=25

# Линейный: xp = basePerLevel * L
xp.linear.basePerLevel=150

# Экспоненциальная кумулятивная база * (множитель^L - 1)/(множитель) - 1)
xp.exponential.base=100
xp.exponential.multiplier=1.15 

Разработчик API (примеры)

// Доступ к сервису
HTLevelSystem plugin = (HTLevelSystem) pluginManager.getPlugin («HTLevelSystem»);
ExperienceService xp = plugin.getExperienceService();

Дать XP
xp.addExperience (player.getUuid(), 50);

// Установить абсолютный XP
xp.setExperience (player.getUuid(), 1200);

// Читать текущий снимок
ExperienceSnapshot snap = xp.getOrCreate(player.getUuid());
Уровень int = snap.level();
Длинная сумма Xp = snap.experience();

Решить XP, требуемый для уровня
xpFor20 = xp.experienceForLevel(20); 

Прослушивание XP событий

getEventRegistry(.registerGlobal)(LevelUpEvent.class, event ->)
getLogger(.info)("Player" + event.getPlayerId() + "достиг уровня" + event.getNewLevel())
);

getEventRegistry(.registerGlobal(ExperienceLossEvent.class, event ->)
getLogger(.info)("Player" + event.getPlayerId() + "Lost" + Math.abs(event.getDelta()) + "XP")
); 

Административные команды

Все команды требуют разрешения htlevel.admin.

Корень: htxp (заблуждения: уровень, /htlvl)

  • /htxp get <playerName> - показать XP, уровень и максимальный уровень кэпа.
  • /htxp setxp <playerName> <mount> - установить абсолютный XP.
  • /htxp givexp <playerName> <mount> Добавить XP.
  • /htxp takexp <playerName> <mount> - удалить XP (полы при 0; относится к кепке максимального уровня).
  • /htxp setlvl <playerName> <level> - непосредственно установленный уровень (авторегулировки XP).
  • /htxp givelvl <playerName> <levels> — добавить уровни (honors max-level cap).
  • /htxp takelvl <playerName> <levels> Удалить уровни (полы при 0).

Команды выполняются асинхронно и всегда соблюдают настроенную кривую XP и xp.max Уровень Кэп.

Заметки

  • Если xp.max Уровень XP зажат до максимального уровня; игроки не могут пройти мимо него.
  • Когда шина событий недоступна, XP все еще обновляется, но события пропускаются.
Показать оригинальное описание (English)

HTLevelSystem

Level/experience API for Hytale server plugins. Stores player XP in your choice of SQLite/Postgres/MySQL and exposes a flexible leveling curve plus events that other plugins can hook into.

Features

  • Persistent player XP with database backends: SQLite (default), PostgreSQL, MySQL.
  • Configurable leveling curve: quadratic, linear, or exponential.
  • Optional max-level cap (clamps XP once reached).
  • Custom events: experience change/gain/loss, level up/down.
  • Simple public API so other plugins can read or modify XP.

Installation

  1. Drop the built JAR into your server's plugins folder. 2) Start the server once; htlevel.conf will be generated inside the plugin data folder. 3) Edit htlevel.conf to choose DB backend and XP curve, then restart.

Configuration (htlevel.conf)

# Database backend: sqlite | postgres | mysql
backend=sqlite

# SQLite
sqlite.file=users.sql

# PostgreSQL
postgres.host=localhost
postgres.port=5432
postgres.database=hytale
postgres.user=hytale
postgres.password=change_me
postgres.ssl=false

# MySQL
mysql.host=localhost
mysql.port=3306
mysql.database=hytale
mysql.user=hytale
mysql.password=change_me
mysql.useSSL=false

# XP / Leveling
xp.algorithm=quadratic     # quadratic | linear | exponential
xp.maxLevel=100            # <=0 for no cap

# Quadratic: xp = basePerLevel * L + step * L^2
xp.quadratic.basePerLevel=100
xp.quadratic.step=25

# Linear: xp = basePerLevel * L
xp.linear.basePerLevel=150

# Exponential cumulative: base * (multiplier^L - 1)/(multiplier - 1)
xp.exponential.base=100
xp.exponential.multiplier=1.15

Developer API (examples)

// Access the service
HTLevelSystem plugin = (HTLevelSystem) pluginManager.getPlugin("HTLevelSystem");
ExperienceService xp = plugin.getExperienceService();

// Give XP
xp.addExperience(player.getUuid(), 50);

// Set absolute XP
xp.setExperience(player.getUuid(), 1200);

// Read current snapshot
ExperienceSnapshot snap = xp.getOrCreate(player.getUuid());
int level = snap.level();
long totalXp = snap.experience();

// Resolve XP required for a level
long xpFor20 = xp.experienceForLevel(20);

Listening to XP events

getEventRegistry().registerGlobal(LevelUpEvent.class, event ->
    getLogger().info("Player " + event.getPlayerId() + " reached level " + event.getNewLevel())
);

getEventRegistry().registerGlobal(ExperienceLossEvent.class, event ->
    getLogger().info("Player " + event.getPlayerId() + " lost " + Math.abs(event.getDelta()) + " XP")
);

Admin commands

All commands require permission htlevel.admin.

Root: /htxp (aliases: /htlevel, /htlvl)

  • /htxp get <playerName> — show XP, level, and max-level cap status.
  • /htxp setxp <playerName> <amount> — set absolute XP.
  • /htxp givexp <playerName> <amount> — add XP.
  • /htxp takexp <playerName> <amount> — remove XP (floors at 0; respects max-level cap).
  • /htxp setlvl <playerName> <level> — set level directly (XP auto-adjusts).
  • /htxp givelvl <playerName> <levels> — add levels (honors max-level cap).
  • /htxp takelvl <playerName> <levels> — remove levels (floors at 0).

Commands execute asynchronously and always respect the configured XP curve and xp.maxLevel cap.

Notes

  • If xp.maxLevel is set, XP is clamped to the max-level requirement; players cannot progress past it.
  • When the event bus is unavailable, XP still updates but events are skipped.

Последние версии

HTLevelSystem-1.0.0.jar

Early Access 27.01.2026 54.8 КБ
Скачать