Releases: owengregson/Mental
Release list
Mental v2.12.0-beta
⌖ Paper 1.9.4 → 26.x
⌖ Folia
⌖ Java 8+
⌖ zero dependencies
- Damage indicators now appear for every hit, not just player-versus-player melee.
Hitting a mob shows its damage, a mob hitting someone shows theirs, and fall
damage, lava, fire and drowning all show a number too. Previously only one case
in the whole game drew an indicator: a player meleeing another player. - Ranged hits show damage numbers again. A bow, trident or snowball hit reports the
arrow as the attacker rather than the player who fired it, so every ranged hit
failed the old player-attacker check and drew nothing at all — even in PvP. Shots
are now credited to the shooter, who sees the number wherever they are standing. - You no longer see damage numbers for damage happening to YOU. Everyone near a
victim sees the number except the victim themself, so your own screen stays clear
in a fight while you still see everything you deal. - Mobs now show healing numbers too, on the same rule as damage. Heals are detected
by watching health rather than by listening for a heal event, so heals applied
directly by other plugins are caught the same way they already are for players. - Hit sounds stay combat-only, deliberately. Fall damage, lava, drowning and
freezing keep vanilla's own hurt sounds, so you can still hear WHY you are taking
damage rather than getting one combat chord for everything. - The low-health warning sound now plays on every damage cause, including
environmental. It is a warning about your health rather than about the blow, so
burning or drowning into the danger zone sounds the same alarm a hit does.
Full changelog — click to expand
- test(feedback): gate the environmental case on a stageable damage event (
723d4fc) - chore(release): 2.12.0-beta — feedback on every hit (
04fbd29) - test(feedback): pin the audience rule and the two new hit classes (
468dfa4) - feat(feedback): indicators on every hit, sounds still combat-only (
4b98fdf)
MENTAL by @owengregson
Mental v2.11.0-beta
⌖ Paper 1.9.4 → 26.x
⌖ Folia
⌖ Java 8+
⌖ zero dependencies
- Fixed: standing in lava, fire or a sweet-berry bush no longer spam-damages you.
This affected servers running the Combat Test 8c i-frame rule, which briefly
shrinks the invulnerability window so fast weapons re-hit sooner. That window is
a single field every damage source shares, and the hand-back meant to restore it
waited on the hurt counter — which a hazard re-arms every few ticks, so it never
fired and the shortened window stayed pinned for as long as you stood in the
hazard. The hand-back now keys off the hit that shrank the window, so a hazard
cannot defer it and the window always returns after its own duration. - The same fix covers the hit-timing override API added in 2.10.0-beta. It shares
the window mechanism and had inherited the same problem, so a plugin holding a
live override on a player standing in a hazard could pin that player's window
too. Both paths now restore through one guard. - Combat Test 8c i-frames now match 8c across the whole window. 8c makes the entire
invulnerability window difference-damage: a stronger re-hit deals only the
difference with no knockback, a same-or-weaker one deals nothing, and a fresh hit
lands only once the window fully elapses. Mental previously reproduced only the
first half, so a mid-window re-hit landed fresh — twice as permissive as 8c. - Shields block projectiles again on the 8c rule. Arrows and other projectiles are
absorbed in full inside 8c's 148° block cone (piercing arrows still get through)
instead of falling back to vanilla's wider cone, and a crouch-blocking player is
no longer left with no projectile protection at all. - Getting hit no longer drops what you were holding up. The 8c hit-interrupt now
cancels only eating and drinking, as 8c does — a raised shield, a drawn bow, a
spyglass or a charging trident all survive the hit that most needed them. - Bow accuracy under sustained fire follows 8c's real curve. Fatigue ramps smoothly
between 3 and 10 seconds of held draw rather than snapping between two values,
and a fresh full draw carries 8c's small baseline spread. - Mushroom stew, rabbit stew and beetroot soup eat in one second on the 8c rule,
matching 8c. Suspicious stew deliberately keeps its normal speed. - Two 8c settings that did nothing now work: the charged-attack miss recovery and
the charged reach bonus were both editable in the GUI but never read. Defaults
are unchanged, so only servers that retuned them will notice. - Known gap, unchanged this release: Mental's emulated crouch-block does not yet
reproduce 8c's small self-knock toward the attacker. A natively raised shield
already does. Composing that knock through the delivery core is genuine
combat-core work, deliberately left to its own round rather than shipped
half-applied.
Full changelog — click to expand
- chore(release): 2.11.0-beta — ct8c decompile-verified fixes; version, highlights (
389f17a) - test(ct8c): scope the full-window diff-damage opener to a stageable tier (
b7552d7) - feat(ct8c): make the whole i-frame window difference-damage (8c full window) (
2212a62) - fix(ct8c): stop the i-frame shrink leaking into environmental damage (
ece3a23) - docs(ct8c): reflect the decompile-verified fixes in the user doc (
f72463d) - fix(ct8c): honor the missRecoveryTicks and chargedReachBonus knobs (
993f391) - feat(ct8c): give the bowl stews the 20-tick eat duration (
891f3b2) - fix(ct8c): interrupt only eating/drinking on a hit, not any raised hand (
c0b047d) - feat(ct8c): block projectiles through the 148° shield cone, in full (
b289355) - fix(ct8c): replace the step-function bow fatigue with 8c's exact ramp (
5a3a048)
MENTAL by @owengregson
Mental v2.10.0-beta
⌖ Paper 1.9.4 → 26.x
⌖ Folia
⌖ Java 8+
⌖ zero dependencies
- New developer API — temporary hit-timing overrides. A companion plugin can now
ask Mental to briefly speed up how fast ONE attacker re-hits a victim, priced
inside Mental's own timing instead of fought around it. This is what makes
abilities like StarEnchants' Berry Overdrive ("your strikes land twice as fast
for a few seconds") behave correctly on a Mental server: the speed-up is scoped
to that one attacker — a third party still waits the normal window — it composes
with the CT8c i-frame profile, and it never writes the vanilla invulnerability
counter, so the old i-frame-write hacks, spawn-invulnerability traps and
third-party fairness guards are all gone. - The service is published on Bukkit's ServicesManager (the registration is the
capability a consumer probes) and ships with a live acceptance suite that runs
on every server in the matrix: registration, per-attacker isolation, the ct8c
min(attackDelay,10) × factorwindow composition, refresh-not-stack, and
victim-death cleanup — all hard-pinned.
Full changelog — click to expand
- chore(release): 2.10.0-beta — timing overrides; version, highlights, README, spec doc (
8f51dba) - test(timing): live acceptance suite for HitTimingOverrides (
a372d04) - feat(delivery): price the hurt window per (victim, attacker) at the per-hit write (
0e0994e) - feat(api): temporary hit-timing overrides (HitTimingOverrides, gen-3) (
046de44)
MENTAL by @owengregson
Mental v2.9.1-beta
⌖ Paper 1.9.4 → 26.x
⌖ Folia
⌖ Java 8+
⌖ zero dependencies
- The Cleaving enchant is now REAL on every modern server: the 2.9.0 registry
probe could never actually resolve, somental:cleavingsilently degraded to
level 0 everywhere. The injection chain is rebuilt and pinned against the
live 1.21.4 AND 26.x server jars — including the year-schemeIdentifier
rename, so 26.x gets the real enchant too — and the test gate now hard-fails
if the install ever stops landing. - CT8c critical hits are un-inverted: the shipped guard skipped the ×1.5 on
exactly the canonical non-sprint jump crit (only sprint crits applied). The
flat ×1.5 now lands on every CT8c crit posture, live-pinned in the gate. - CT8c i-frames no longer leak: the shaped hurt window (7–10 ticks melee, 0 for
projectiles) is a persistent entity field, and one hit used to leave it
shrunken forever — fire, cactus and drowning then re-applied every tick. The
vanilla window is now restored the moment the shaped window drains, and
disabling the feature restores every touched victim immediately. - The
/mentalhome is decluttered to five tiles: Combat Engine, Era Rules,
Sustain & Potions, Effects & Loot, and Server & Diagnostics — three over two,
flanked by just Combat Presets and Close. Each opens its category's sections,
so every family screen is exactly two clicks away and nothing is lost.
Full changelog — click to expand
- chore(release): 2.9.1-beta — highlights, version, README home blurb (
ef2bfb4) - fix(damage): un-invert the ct8c crit guard; restore the i-frame window (
d202607) - docs(config): align the combo-hold opt-in note with the signature bundle (
4d481bf) - feat(gui): five-tile home — categories over families, two flanking buttons (
c23336d) - fix(platform): land the Cleaving registry write — the probe could never resolve (
761dff6)
MENTAL by @owengregson
Mental v2.9.0-beta
⌖ Paper 1.9.4 → 26.x
⌖ Folia
⌖ Java 8+
⌖ zero dependencies
- Combat Test 8c is here: a faithful port of Mojang's experimental snapshot as
thirteen opt-in modules — reworked shields (148° arc), charged attacks,
per-weapon attack speeds, the split-vertical knockback, era i-frames, Cleaving
and more — plus a matchingct8cknockback profile. All OFF by default and
era-exact, decompiled from the real snapshot rather than the wiki. - Rules bundles apply a whole ruleset in one click:
ct8c,signatureand
vanillaship inbundles/(drop your own in too), from the new Combat
Presets screen or the API's RulesBundleAppliedEvent. - The /mental menu is redesigned end-to-end: every family gets its own colour
identity on woven glass chrome, and every screen speaks one click grammar —
left-click toggles, right-click configures, Q resets a knob to your file. - One preset gallery now holds both knockback profiles AND combat-effects
tunes — legacy/modern is a tab, every tile previews its exact values, and
one click applies server-wide. - Nearly every scalar knob is now editable in-game: hit registration, latency
compensation, the combo solver, fast pots, rods and projectiles, loadout
rules, indicators, death effects and drop protection — applied atomically,
no restart. - On 1.9.4–1.12.2 the menus finally render in full colour: stained-pane
backgrounds and ten previously-grey icons now resolve to their real
pre-flattening glyphs. - Under the hood: every CI workflow is now SHA-pinned with a runtime-only
dependency graph and a published security policy, and the build tooling is
refreshed (Shadow 9.6.0, JUnit 6.1.2).
Full changelog — click to expand
- ci(release): drive the release notes from the RELEASE-TEMPLATE tag template (
ec29bde) - chore(repo): remove the stray .superpowers/sdd session dump (
b148cff) - chore(repo): move non-essential files out of the root (
e7bc18c) - chore(repo): declutter the root into modules/ + project/ (
1f3a5c7) - fix: address adversarial-review findings on the 2.9.0-beta integration (
80fbcaf) - chore(release): 2.9.0-beta combined highlights + api-version coherence (
d6a367b) - docs(readme): reconcile the landing page to the shipped 2.9.0 (GUI suite + Combat Test 8c) (
bda79ef) - mold: integrate Combat Test 8c into the redesigned GUI (
bc85d2d) - fix(gui): review round — shadow-safe overlay routing, folia-safe caches, no-op stepper guard, one render read per repaint (
8b2647f) - docs(security): add the security policy Scorecard asks for (
19a39e7) - ci(security): submit a runtime-only dependency graph explicitly (
b5dbd01) - ci(security): pin every workflow action to a full commit SHA (
db6ab7b) - docs(release): 2.9.0-beta — customization suite (
950055b) - test(tester): headless render lockstep for the redesigned suite (
2d43ca3) - test(ct8c): anchor the shield strikes to the settled block posture, not a fixed tick (
0da37a0) - feat(gui): family/dashboard/system screens and the unified preset gallery on the new chrome (
514cd14) - test(ct8c): tick-pin the charged-attacks deny so matrix load cannot flip it (
854690f) - fix(projectiles): resolve the throw-gate cooldown item through the material seam (
72e3edf) - feat(gui): buttons v2, override seam, and descriptor-driven settings screens (
6f7892a) - docs(platform): javap-pin the 26.1.2 Cleaving degrade — honest year-scheme gap (
6fc937a) - fix(sustain): route the naturalRegeneration read through a presence-probed seam (
a16fe17) - feat(gui): design system — palette, chrome, pane pattern, layout (
0dc799c) - feat(platform): pane colour seam + legacy icon aliases (
7d82c3b) - test(config): archive the four shipped signature.yml revisions behind the effects upgrade hashes (
b27b3e3) - refactor(config): one superseded-bundle upgrade driver for both preset libraries (
ce54d4d) - test(preset): catalog resolution, preview pins, and kind metadata (
9eefad2) - test(tester): live CT8c + rules-bundle integration suites (
8618a9a) - feat(preset): unified preset catalog — one read surface for both preset kinds (
540deb7) - docs(plans): customization-suite design round — unified preset manager, GUI redesign, task partition (
3aab847) - ci(readme): publish the live chart from a data branch, treat assets as docs (
0c1d542) - docs: Combat Test 8c user guide — mechanics, bundles, and the honest gap list (
b06be9a) - docs(readme): client-focused landing page redesign (
68ea9c6) - feat(delivery): feed CT8c per-weapon reach + targeting inflation into hit validation (
f35fb8c) - feat(damage): wire the Cleaving handle into the CT8c shield unit (
d942c92) - style(knockback): justify-and-suppress the CT8c projectile onGround deprecation (
da803f8) - refactor(damage): gate the CT8c Strength/Weakness ±20% fold on ct8c-potions (
03ef57d) - feat(gui): Combat Presets screen off the dashboard (
74675c7) - feat(api): applyBundle write-back + RulesBundleAppliedEvent (
40635f2) - feat(config): rules bundles — the third preset mechanism (
2a49fa6) - docs(plan): pin exact bundle module maps and the Task INT contract (
9cac2b9) - style(damage): order CleavingUnit imports (java/me.vexmc/org.bukkit) (
94faf3c) - feat(damage): CT8c damage/crits/cleaving unit bodies (
602862b) - feat(knockback): CT8c projectiles unit — throw gate, momentum, fatigue, Loyalty (
c483947) - feat(sustain): CT8c consumables — 20-tick drinks, potion/snowball stacking (
cd61e38) - feat(damage): CT8c shields — 148° arc, 5-cap passthrough, axe disable (
4489668) - feat(loadout): CT8c melee reach (
864e36d) - feat(damage): CT8c i-frames unit (
976a277) - feat(platform): CleavingRegistrar registry seam + CleavingHandle (
76adaea) - feat(sustain): CT8c food/regen — 1.8 cadence, hunger drain, eat-interrupt (
379f555) - feat(cadence): CT8c sweep rules (
76073cf) - feat(knockback): CT8c projectile policy — pure fatigue/momentum/spread math (
0c7cf40) - feat(cadence): CT8c charged attacks (
da39e3b) - feat(damage): CT8c composition seam in DamageShaper (
fadcc06) - feat(sustain): CT8c potion values — Instant Health substitution + Strength/Weakness factors (
33bb136) - feat(cadence): CT8c weapon attack speeds (
4c8d934) - feat(core): CT8c skeleton feature units + config surface (
d8743ca) - feat(core): ct8c knockback profile (
d82b9ec) - feat(core): CT8c feature registry — 13 constants + weapon-speed/charged-attack settings (
4b2619f) - feat(kernel): CT8c split-vertical shape for the modern formula (
8c7b934) - feat(kernel): CT8c pure math tables (
0c7b8ad) - docs: CT8c implementation plan — wave/merge protocol and task contracts (
d74182f) - docs: Combat Test 8c import design spec (
12c5c0c) - docs(release): client-focused release notes, highlights mechanism, plugin descriptor refresh (
085a141) - chore(deps): Bump the gradle-minor-patch group across 1 directory with 3 updates (
1e4a5ec)
MENTAL by @owengregson
Mental v2.8.1
Runs on every Paper server 1.9.4 → 26.1.2 (plus Folia) — one jar, no other plugins needed, Java 8 or newer.
The stable update — recommended for everyone
This release promotes everything since v2.6.2 to stable. Updating from 2.6.2, here's what your server gains:
- Kill titles (optional): show the killer a configurable on-screen title, with name and PlaceholderAPI placeholders.
- Loot protection (optional): a slain player's drops are reserved for their killer — glowing gold, killer-only pickup until the protection expires.
- Redesigned in-game menus: Combat Effects gets a full hub with dedicated screens, and text options can be edited straight from chat.
- Sword blocking sounds right again with hit feedback on, and the crit indicator now scales with the target's max health so it means the same thing for every player.
- Plugin integrations: a new public API (generation 3) lets combat-adjacent plugins follow Mental's combos and query combat state cleanly —
mental-api-3.0.0.jarbelow is for their developers. With default settings this changes no gameplay. - Cleaner shutdowns: integrating plugins always see combos end properly on disable or module toggle.
Everything optional above ships off by default — Mental changes nothing you didn't ask for.
Install or update
- Download
Mental-2.8.1.jarbelow and drop it into your server'splugins/folder (replacing the old jar if you're updating — your config is kept). - Restart the server. That's it — the defaults are the classic combat, no setup required.
One jar, every version. Modern Java reads Mental's Java-17 build, older Java reads the Java-8 build packed in the same file — no flags, no per-version downloads, 1.14.4 included.
Published only after unit tests and live integration runs on real servers of every supported version passed.
Mental v2.8.0-beta
Runs on every Paper server 1.9.4 → 26.1.2 (plus Folia) — one jar, no other plugins needed, Java 8 or newer.
What's new for your server
- No gameplay changes with default settings — this release is about letting other plugins cooperate with Mental cleanly.
- Public API, generation 3. Plugins can now follow Mental's combos live (every hit of a developing chain), query combat state directly instead of guessing, and control knockback outcomes explicitly. If you run combat-adjacent plugins (custom enchants, abilities, anti-abuse), this is the release their integrations build on — the
mental-api-3.0.0.jarbelow is for their developers. - Cleaner shutdowns. Plugins listening to Mental's combo events now always see combos end properly when Mental is disabled or a combat module is toggled off mid-fight.
Install or update
- Download
Mental-2.8.0-beta.jarbelow and drop it into your server'splugins/folder (replacing the old jar if you're updating — your config is kept). - Restart the server. That's it — the defaults are the classic combat, no setup required.
One jar, every version. Modern Java reads Mental's Java-17 build, older Java reads the Java-8 build packed in the same file — no flags, no per-version downloads, 1.14.4 included.
Published only after unit tests and live integration runs on real servers of every supported version passed.
Mental v2.7.1-beta
Runs on every Paper server 1.9.4 → 26.1.2 (plus Folia) — one jar, no other plugins needed, Java 8 or newer.
What's new for your server
- Sword blocking sounds right again. With hit feedback on, a blocking victim's hurt sound was silenced even though the flinch showed — restored.
- The crit indicator now scales with the target. The critical flash triggers when a hit removes a share of the victim's max health (default 25%) instead of a fixed heart count, so it means the same thing for a full-health tank and a scrappy duelist.
Install or update
- Download
Mental-2.7.1-beta.jarbelow and drop it into your server'splugins/folder (replacing the old jar if you're updating — your config is kept). - Restart the server. That's it — the defaults are the classic combat, no setup required.
One jar, every version. Modern Java reads Mental's Java-17 build, older Java reads the Java-8 build packed in the same file — no flags, no per-version downloads, 1.14.4 included.
Published only after unit tests and live integration runs on real servers of every supported version passed.
Mental v2.7.0-beta
Runs on every Paper server 1.9.4 → 26.1.2 (plus Folia) — one jar, no other plugins needed, Java 8 or newer.
What's new for your server
- Kill titles. An optional death effect that shows the killer a configurable on-screen title (
{NAME},{KILLER}and PlaceholderAPI placeholders supported). - Loot protection (new, off by default): a slain player's drops are reserved for their killer — glowing gold, only the killer can pick them up until the protection expires.
- Redesigned in-game menus. Combat Effects gets its own hub with dedicated screens for hit effects, death effects, indicators, and loot — and text options can now be edited from chat.
Install or update
- Download
Mental-2.7.0-beta.jarbelow and drop it into your server'splugins/folder (replacing the old jar if you're updating — your config is kept). - Restart the server. That's it — the defaults are the classic combat, no setup required.
One jar, every version. Modern Java reads Mental's Java-17 build, older Java reads the Java-8 build packed in the same file — no flags, no per-version downloads, 1.14.4 included.
Published only after unit tests and live integration runs on real servers of every supported version passed.
Mental v2.6.2
Runs on every Paper server 1.9.4 → 26.1.2 (plus Folia) — one jar, no other plugins needed, Java 8 or newer.
What's new for your server
- Cleaner damage indicators. Rapid hits now roll into one indicator per damage window — the number bumps in place (shown in hearts) instead of stacking ghost duplicates over a target's head.
- No more phantom "crit" flashes on ordinary in-window hits.
- This release marks the 2.6 line stable — the recommended update for every server.
Install or update
- Download
Mental-2.6.2.jarbelow and drop it into your server'splugins/folder (replacing the old jar if you're updating — your config is kept). - Restart the server. That's it — the defaults are the classic combat, no setup required.
One jar, every version. Modern Java reads Mental's Java-17 build, older Java reads the Java-8 build packed in the same file — no flags, no per-version downloads, 1.14.4 included.
Published only after unit tests and live integration runs on real servers of every supported version passed.