Перейти к содержимому
Mineforgian

LekLai

A simple mod that aim to make skill and class similar to some mmorpg game, core engine

Загрузки
241
Подписчики
1
Обновлён
5 июля 2026 г.
Лицензия
All-Rights-Reserved

Опубликован 3 октября 2025 г.

Leklai

⚠️ Note: Development Hiatus

The project is currently on a temporary hiatus.

I'm currently busy rewriting the animation system and working on a major overhaul of the EXP progression system. in version (3.0.0)

Current Changes

  • EXP is currently only obtainable from dungeons.
  • Overworld mobs no longer grant EXP.
  • This change was made to make balancing easier during development.

Future Work

The EXP system and related mechanics need a complete redesign and stabilization before further development continues.

Since I currently don't have enough time to actively work on this project, development will be paused for a while.


A barebone RPG framework mod for Minecraft Fabric 1.21.1 1.21.11 26.1 that rips out vanilla damage and rebuilds it from scratch. Ragnarok Online meets Black Desert — stat allocation, class evolution, skill chaining, and a full elemental damage pipeline. No fluff, just systems.

This is a mod release. Only the Novice class and Basic Skill are implemented. Everything else is scaffolding, stuff are create via datapacks and the API.


This mod is the successor to Dominatus: Refinement, Crital, and Penomior.

After many rewrites — mainly due to Minecraft updates and mapping change — I’ve finally found the direction what I want this project to become. That’s why this mod now exists in its current form.

Elements of the original Penomior stats system still exist, but they’ve been tweak to balance the class system. The old refinement mechanic have been removed and replaced with a system focused on classes and skills instead.

This mod are aim to be as barebone lib as possible — with less implementation, mostly API for my other mod to build on, so I can focus on classes mod, skill, or items.

but some content can view on gallery upload in that focus on version some are outdate


PlateauLib (Internal lib) and Cardinal Components API are bundled — no separate install needed. since I'm currently maintain one mod I don't think it need to separate plateaulib since it just simple attributes registry stuff and the ui rework from the penomior.

Ченджлог

2.1.0-26.1Релиз26.1, 26.1.1, 26.1.2 · 25 апреля 2026 г.

2.1.0

Removal Content

  • Nutrition System — it not fit into skill,class mechanic so I seprate into own mod instead of mixing with this mod.
  • Excretion System — same as nutrition system it not fit into skill,class mechanic so I seprate into own mod instead of mixing with this mod.
  • Temporature Support — same reason moving into Nutrition.

New

  • Skill Spamable Support — the skill implement are now can chain into it self when recovery window are exist and it'll start at first 0 tick of the animation not at windup timing.
  • Directional Skill skill are now support for directional movement
  • Class Weapon — each class now have their own weapon set that can equip in it good benefit of it item are not consume weight similar to offhand and it for stylish mostly of all :) NOTE: Animation are not all done finish yet just a few and it data driven.

Fix

  • Holding Animation nolonger freeze when fail cast or got cancel.
  • Patch the good old bug skill casting cooldown that can continue when pause the game,it now display what the server timing it is.

Internal Changes

  • PostProcess are now remove completely and using PlateauLib PostProcess instead.
  • glow.json -> point_light.json rename thing relate into light instead of glow
2.0.0-26.1Альфа26.1, 26.1.1, 26.1.2 · 18 апреля 2026 г.

2.0.0

NOTE: Please read this before download due to I separate temperature (Temporature mod) mechanic out of this mod and PlateauLib are using all my project across, So I decide to not include PlateauLib into the mod so it gonna reduce dupe dependency and the size of mod.

TLDr; you need plateaulib to work with I wait it for approve on modrinth : 18/apr/26

UPDATE: the plateaulib

New

  • Minecraft 26.1 port — Core/client systems were ported to 26.1.
  • PlateauLib integration — Dropped TextParticle, switched to PlateauLib TextParticle instead.
  • ClassTweaker migration — Changed from accesswidener to ClassTweaker.
  • Customizable sit animations — Due to BendyLib not being ported to 26.1 yet, sit animations are now customizable for variant sit styles.
  • TPS camera update — Camera now works in third-person with updated position following.
  • Temporature Support — add on of mod Temporature.
  • New Sit Animation/Custom Sit Animation — since bendablecube are not port yet animation are need to redo

Nutrition System v2.0 — Two-Track Energy & Hydration

  • Two-track energy system — Energy split into two distinct tracks:
    • Glycogen (burst energy): burned directly per vanilla exhaustion event (sprint, jump, attack, mine, swim). Instant per-action cost, no accumulator.
    • Body Fat (passive energy): drained slowly by basal metabolism while moving. Standing still costs almost nothing (like vanilla hunger).
    • When glycogen is empty, active exertion falls back to body fat at reduced efficiency (configurable fatFallbackRate, default 30%).
  • Two-track hydration — Same pattern as energy:
    • Basal drain: small passive loss from activity state.
    • Active drain: water lost per vanilla exhaustion event (mlPerExhaustionPoint, default 0.8 ml).
  • Overweight drain penalty — Gear weight now affects both energy and hydration drain. Each weight tier adds +8% drain. Tier 5 = +40% more calories and water burned.
  • Glycogen depletion blocks sprinting — No glycogen = can't sprint (DehydrationSprintMixin).
  • Energy overflow → faster bowel — Energy exceeding max accelerates bowel pressure buildup.
  • Water purity redesign — 6-grade purity system with per-bottle randomization (±1 jitter). Cleaned up FoodNutritionDataEntry with new waterFromSource() factory.
  • Maximum Food Eat — now Maximum food can eat in stomach is 32 from 16

Custom Status Effects

  • 12 new status effects replacing generic vanilla effects (Nausea, Mining Fatigue, Slowness, Weakness). All no-particle with proper names: NOTE: image are not have drawn yet.

    Effect Condition Modifiers
    Hungry Energy 10–30% -10% speed
    Starving Energy < 10% -20% speed, -15% attack speed
    Famished Energy 0% -40% speed, -30% attack speed, -25% attack damage
    Glycogen Depleted Glycogen 0 -10% attack speed
    Overfed Energy > max (indicator — bowel fills faster)
    Thirsty Hydration 20–40% -5% speed
    Dehydrated Hydration < 20% -15% speed, -10% attack speed
    Nutrient Excess Over upper limit (replaces vanilla Nausea)
    Nutrient Deficiency Critically low (replaces vanilla Mining Fatigue)
    Bladder Urge Bladder > 85% (replaces vanilla Nausea)
    Bowel Urge Bowel pressure high -20% mining efficiency
    Soiled Excretion accident -15% speed, -10% attack speed
  • State-change-only application — Effects only apply/remove on state transitions, not every tick.

  • Milk clear prevention — New config disableMilkClearEffects (default: true) prevents milk from wiping nutrition/excretion effects.

NutritionTab UI

  • Energy section rewrite — Glycogen and Body Fat bars show color-coded status (Full/Adequate/Low/Critical/DEPLETED) with detailed tooltips.
  • Metabolic state indicator — Shows [STARVING], [No Glycogen], or [Overfed].

Custom Sit Animation Support

  • Variant sit styles — New SitAnimationStyle enum currently It still hardcode but future I'm plan to make other do their own animation set, currently player can choose between "essentails" and "classic". and other player will see they animation.

Qols

  • Nutrition Tabs — now has its own dedicated keybinding that opens the Nutrition Tab directly to that tab. Default: G

Fixes

  • Mixin plugin wiring — Added/fixed missing mixin plugin setup required by the new pipeline.
  • Vanilla food bar restored — Food bar now shows correctly when nutrition system is disabled.
  • Water purity bottle randomization — Each bottle now gets independent contamination chance.

Config Changes

Field Default Notes
kcalPerExhaustionPoint 20.0 Glycogen burned per vanilla exhaustion point
fatFallbackRate 0.3 Fat burn efficiency when glycogen empty
overweightDrainPerTier 0.08 Extra energy/hydration drain per weight tier
mlPerExhaustionPoint 0.8 Water lost per exhaustion point
disableMilkClearEffects true Prevent milk from clearing nutrition effects
exhaustionDecayRate removed No longer needed
10 purity config fields removed Replaced by 6-grade system

Changes (Internal)

  • ActivityLevel rework — Enum values now represent basal metabolic rates only. Active energy cost handled per-event via ExhaustionHookMixin.
  • Removed accumulatedExhaustion — Exhaustion converts to glycogen/hydration burn instantly.
  • Dead translation cleanup — Removed 28+ dead lang keys for placeholder vitamins/minerals and old purity config.
  • Network sync optimization — Nutrition packets use float quantization, unsigned shorts for nutrients, bitfield for zones (~62% size reduction).
  • Tick optimization — Effect zone checks reduced from every 1s to every 5s. Config cached per tick.
  • Dropped dead stomach stretch mechanic — Removed old stomach capacity growth system.
  • Branch cleanup pass — Additional cleanup on top of the 26.1 migration branch.
  • Payload rename pass — Renamed network payloads for consistency.
  • getKcalPerSecond → are now removed, getEnergyDrainPerSecond() — Replaced with new method that accounts for both glycogen and fat drain based on current energy state.
  • Tabs Identifier — Each screen tab now passing tab IDs: player_info, skill_learning, skill_binding, party, nutrition so it now more easy to implement just call id from screen instead Example:javaclient.setScreen(new LeklaiScreen(LeklaiScreen.TAB_NUTRITION)); .
  • Drop bending animation — Removed bending animation from sitting animation due to bendylib are not port yet.
  • Code drop — Removed dead code and unused imports related to removed features and old systems. and drop some CleanUpEffect, TextParticle it now using pleatue lib
  • Dependency — Now require CCA, and PlateauLib as manual nolonger include in mod
1.2.0-1.21.11Релиз1.21.11 · 3 апреля 2026 г.

1.2.0

New

  • Nutrition System v1.0 — First full release of the Nutrition + Excretion gameplay loop.

Metabolism

Metabolism you can hover to see detailed macro and nutrition values

  • Food Stats (new tooltip info)
    • Food now shows calories, volume, digestion time, nutrients, and absorption quality.
    • Most modded edible items still work using fallback nutrition values.
    • Can add more with datapack.

Food Data

  • 3 Digestion Phases

DIGEST

  • Stomach: breaks food down and reduces stomach volume; no nutrient absorption here.

  • Small Intestine: main nutrient absorption phase.

  • Colon: absorbs the remainder and contributes to bowel pressure.

  • How nutrients are split

    • Small intestine gets all protein/sugar/starch, most vitamins/minerals, and most fat.
    • Colon gets fiber, sodium, and the remaining nutrient fractions.
    • Water is currently split 80% small intestine / 20% colon.
  • Overeating can kill you

    • Going above stomach capacity causes nausea.
    • Exceeding 120% of stomach capacity triggers fatal stomach rupture damage.
  • Raw vs Cooked Food

    • Raw food is generally set to digest slower and absorb less than cooked food.
    • Raw entries may also have higher contamination risk.
  • raw food

  • cooked food

  • duration- Energy System (replaces vanilla food bar)

    • Total energy comes from glycogen and body fat.
    • Activity drains glycogen first.
    • If glycogen runs out, your body starts burning fat.
    • If total energy reaches zero, starvation damage begins.
  • Hydration and Bladder

    • Hydration drains based on activity level.
    • Kidney processing moves fluid into the bladder over time.
    • Water intake can refill hydration, and overflow can fill bladder.
    • At zero hydration, thirst damage begins.
  • Excretion System

    • Urine urge starts at a bladder fullness threshold.
    • Ignoring it long enough can trigger forced release.
    • Bowel pressure rises when solid food reaches colon phase.
    • Ignoring bowel urge can trigger forced bowel release.
  • Server Config Support (leklai_server.json5)

    • Capacity/survival: baseStomachCapacity, starvationDamage, starvationDamageInterval
    • Macro pools: maxGlycogen, maxBodyFat, maxHydration, maxBladder
    • Drain rates: baseMetabolismRate, baseHydrationDrain, baseNutrientDrain, exhaustionDecayRate
    • Digestion timing: siAbsorptionMultiplier, colonAbsorptionMultiplier
    • Excretion tuning: bladderUrgeThreshold, forcedReleaseDelayTicks, bowelUrgeThreshold, bowelForcedDelayTicks, dirtyEffectDuration
    • Water/food quality: enableWaterPurity, enableContamination

Bug Fixes

  • Fluid conflict behavior — Changed conflict handling from prevent to settled to avoid still-water conflicts.
  • Skill keyframe timing regression — Fixed server-side skip fallback overriding client skip values, which could trigger CAST_CLEANUP before keyframes completed.
  • Lifeskill tab empty-state — Lifeskill tab now cleanly shows no entries when no lifeskills are found.

Changes (Internal)

  • Minecraft 26.1 preparation — Internal compatibility prep and follow-up refactors for the 26.1 update path.
  • Core config combat behavior — In combat mode, sprint/sneak switching is no longer auto-toggled.
  • Skill engine cleanup
    • Restored proper calculateDuration() behavior for KeyframeInstructable path.
    • Removed scheduled_actions from SkillAnimData (plugin no longer exports them).
    • Removed debug infrastructure (DEBUG flag, debug reports, ImGui debug accessors).
    • Removed unused ActiveCast convenience constructors.
    • Cleaned dead JSON action rendering code in SkillPhaseDebugHud.
  • General cleanup pass — Codebase cleanup and internal API follow-up changes.
1.1.2-1.21.11Релиз1.21.11 · 24 марта 2026 г.

1.1.2

Changes (Internal)

  • ImGui dev-only — Removed ImGui from the shipping jar (~7MB size reduction). ImGui dependencies are now compile-only for development builds. Mixins are conditionally skipped in production via LeklaiMixinPlugin.
  • YACL 3.8.1 → 3.8.2 — Updated YACL dependency. descriptionKey renamed to description in the new API.
  • Light Engine Tweaker — due to now nolonger using shadowmap it nolonger need to tweaking stuff anymore goodbye slider :)
  • Jar Size from 9,173 KB -> 1,879 KB
1.1.1-1.21.11Бета1.21.11 · 24 марта 2026 г.

1.1.1

New

  • Skill Protection Policy System — Declarative SkillProtectionPolicy replaces manual SkillUtil.Status.setSuperArmor() / setIFrame() calls. Define IFRAME, SUPER_ARMOR, FORWARD_GUARD windows per skill phase via builder API. Engine auto-applies/removes flags on phase transitions, chain-out, interrupt, and death. onSkillEnd() manual cleanup is now deprecated for protection flags.
  • Super Armor Damage Reduction (per class) — New super_armor_reduction field in PlayerClass datapack. When super armor is active, incoming damage is reduced by class percentage (e.g. Swordsman 55%, Mage 35%). Applied after the full damage pipeline, purely multiplicative.
  • Skill Animation Data RegistrySkillAnimDataRegistry scans all mod JARs for PlayerAnimLib .json files and parses "skill" blocks into SkillAnimData records. Provides shared animation defaults (timings, skip windup, scheduled actions) with Java override priority.
  • Custom Animation Fade Duration — Each skill can now override getAnimationFadeInTicks() for per-skill fade-in control (default 4 ticks, 0 for instant swap).
1.1.0-1.21.11Бета1.21.11 · 23 марта 2026 г.

1.1.0

New

  • Lifeskill System API — Core lifeskill data framework for registering player lifeskills via datapacks. Includes its own UI tab with EXP sources grid, ability list, bonus drop display (with loot table support), and progress timeline. Supports expSourceTags (TagKey&lt;Block&gt;) for block tag-based EXP sources alongside custom per-block overrides. Loot tables and tag contents are resolved server-side and synced to client via component auto-sync.

  • Enchantment Element Conversion — Weapon enchantments now modify elemental damage ratios. Blends based on enchantment level (e.g. Fire Aspect 1 = 50% fire, Fire Aspect 2 = 100% fire). Tooltip updates in real-time to reflect enchantment-modified elements.

    Enchantment Element Lv1 Lv2 Lv3 Lv4 Lv5
    Fire Aspect Fire 50% 100%
    Flame Fire 100%
    Channeling Electric 100%
    Smite Holy 20% 40% 60% 80% 100%
    Bane of Arthropods Poison 20% 40% 60% 80% 100%
  • Burning Projectile → Fire Element — Projectiles that are on fire (lava, fire blocks, etc.) now deal fire elemental damage instead of neutral.

  • ImGui Intregate — Added ImGui for in-game debug UI. Access via right shift Currently just the light engine properties for easy reference during development.

Bug Fixes

  • Class evolution failing intermittentlycanEvolveFrom() compared PlayerClass instances by object reference (==), which broke after datapack reloads rebuilt the registry with new objects. Now compares by Identifier so evolution works reliably regardless of registry rebuilds.
  • Stale HUD EXP after class evolutionexperienceToNextLevel was not recalculated when evolving to a new class, causing the EXP bar to display the previous class's threshold (e.g. 340 instead of 60). Now properly calls updateNextLvl() after resetting level.
  • Lifeskill component holding stale data — Skills removed from datapacks were kept in player NBT indefinitely. Component now prunes skills, resolved drops, and resolved EXP sources that no longer exist in the registry during initialize/read/write.
  • PlayerInfo Damage reduction are incorrectly display — Due to a long time ago I accident remove bracket and it fuck up the math so good, Now it show correctly.
  • Trident Riptile — now can damage on target if enable collision feature

Changes (Internal)

  • Light Engine — Now tick-based (time-driven with freeze support) with better performance on cast shadow object
  • Debug skill — Now tick-based (time-driven with freeze support) with better memory management; checks before adding data to prevent leaks when debug skill is disabled.
  • Animation — Smoother fade at end of animations.
  • Item Elemental — Simplified item element data, most items now use pure NEUTRAL:
  • Life Skill — add block tag support for exp sources, clean up component data and UI layout, rare edge case of plantbase stuff for UI render
  • Damage System — DamageModifier.get(LivingEntity attacker, LivingEntity target, DamageSource source, float amount, boolean isCrit); since it nolonger usage in system anymore
  • UI: — some edge case on item like bows, crossbow that have no mainhand modifiers, allow it spam!!!!, Screen are now can double click, Player can click without waiting. since i remove consume out of it.
  • Trident Riptile — now it can damage nearby entity if it in the hitbox of the trident when collision is enabled, instead of only damaging on one target. Why not?
  • Class Rebalance — the class health pool and stats are now replace to vanilla health pool and stats, since i want to make it more simple and less confusing for new player, and also make it more balance for all class, since now the class only have different skill and playstyle, not much different health pool and stats. - for now... :)
Item Element
Golden Sword Neutral
Golden Spear Neutral
Golden Axe Neutral
Netherite Axe Neutral
Mace Neutral
Trident Neutral (combat: Melee)

Light Engine Tweak

exam usage (this not include in game)

  • exam Screenshot-2026-03-19-144542.png

  • exam Screenshot-2026-03-19-144849.png

  • exam Screenshot-2026-03-19-145521.png

  • Performance optimize Screenshot-2026-03-19-145621.png

1.0.2-1.21.11Релиз1.21.11 · 10 марта 2026 г.

1.0.2

Bug Fixes

  • Sword trail bleeding to other entities — Sword trail sample points were shared across all entities via a global static, causing mobs and other players holding items to render trails meant for the local player. Trail entity ID is now stored per render state, so each entity's trail is fully isolated.

[Asset/Animation not include]

  • Before : issue
  • After : fix

New

  • Skill Binding UI/UX improvements — Mouse icon glyphs (LMB/RMB) replace text labels in instructions. Unbindable skills are visually dimmed with no hover response. Slot numbers removed from empty slots. Icon padding refined for cleaner fit.
1.0.1-1.21.11Бета1.21.11 · 10 марта 2026 г.

1.0.1

Bug Fixes

  • GlowFlash framerate-dependent timing — Glow flash effects were running too fast at high FPS and too slow at low FPS. Now uses delta-time correctly for consistent visual behavior regardless of framerate.
  • Skill aiming improvement — Skills now target the entity's position directly instead of requiring the player to aim at the ground. Also works correctly when the target is airborne/flying.
  • Server config crash — Environment damage config options were causing servers to become unplayable. Server-only config is now properly separated.
  • Party persists after disconnect — Party HUD and data no longer carry over when disconnecting from a server and joining singleplayer or a different server. All client-side party state is properly cleared on disconnect.
  • Party health display - Player Health number are drifting position. This has been fixed and should now be properly aligned with the health bar.

Changes (API)

  • getActionAnimation() and getHoldAnimation() now require a LivingEntity parameter for context-aware animation support (e.g. different animation sets per entity or situation).
  • change version number format from x.y.z to x.y.z-a.b.c.

New

  • SkillCastContext in keyframe instructionsonKeyframeInstruction now receives SkillCastContext, enabling richer skill behavior driven by animation keyframes.
  • Unified tab navigation — Player Info, Skill Learning, Skill Binding, and Party screens are now accessible via a single tabbed interface. No more closing and reopening from the hotbar overlay.
  • Client cooldown sync on rejoin — Skill cooldowns are now cleared on disconnect and re-synced from the server when joining back. No more stale cooldowns carrying over between worlds, and no way to exploit disconnecting to skip cooldowns.
  • Party HUD scale config — Added a configurable scale option for the party HUD panel (0.5x–2.0x) under UI & Visual settings.

layout change, colour theme

layout change skill learning skill keybinding

Комментарии

Загружаем…