
Simple combat
A lightweight, high-performance combat tagging and anti-relog plugin with multi-language BossBar, asynchronous processing.
Оцените первым
21
0
Список изменений
Simple Combat v1.3 — Changelog
Console Banner Redesign
- Switched the ASCII banner font to standard FIGlet (6 lines height) with consistent spacing and alignment across all console environments.
- Reformatted the status block with single-space indentation to match the clean layout structure.
- Simplified the platform status line to output only the detected server software name (e.g., Paper, Purpur, Folia, Spigot).
- Removed the redundant pre-banner language initialization message to maintain a clean startup log.
Memory & Allocation Optimizations
- Implemented a pre-cached array (
FAST_TIME) for integer strings 0 through 120 inLanguageManager, completely eliminating heap allocations fromInteger.toString()during the per-second combat countdown ticker. - Optimized placeholder replacement in
getBossBarTitle: substring lookup viaindexOfnow prevents redundant string copies when{opponent}is not present in the configured message template. - Added a fast path to
ActionBarDisplayAdapter.escapeJsonthat bypasses string replacement operations when no escape characters (\or") exist.
Event Handling & Performance
- Optimized
PlayerTeleportEvent: added early exit via!combatManager.isInCombat(player)before evaluating teleport cause strings or querying player permissions, significantly reducing server overhead on high-population servers. - Added early exit in
EntityDamageByEntityEventwhen the victim is already dead or has zero health. - Converted
AreaEffectCloud.getSource()dynamic reflection tojava.lang.invoke.MethodHandlefor direct JIT invocation without reflection overhead.
State Management & Bug Fixes
- Resolved BossBar persistence:
CombatManager.removeAll()now explicitly detaches and removes active BossBars from all online players during configuration reload or plugin disable. - Added player membership verification in
BossBarDisplayAdapter.show(bar.getPlayers().contains(player)) to prevent BossBar desynchronization across world transitions or respawns. - Prevented redundant packet dispatch in
BossBarDisplayAdapter.update: the BossBar title is only updated when the formatted string has actually changed. - Added an overloaded
CombatManager.tagCombat(Player, Player, int)method to prevent double session initialization during manual/simplecombat tagexecution.
Файлы
SimpleCombat-1.3.jar(57.95 KiB)
ОсновнойМетаданные
Канал релиза
Release
Номер версии
1.3
Загрузчики
BukkitFoliaPaperPurpurSpigot
Версии игры
1.13–26.3
Загрузок
1
Дата публикации
25.10.2026
