pactminions-1.6.0.jar
Curse Maven Snippet
What's new
- New Features 1.1 Deeper L2Hostility integration With L2Hostility installed, a mob's level and its trait count both push the taming success rate down:
Higher mob level → harder to tame More traits on the mob → harder to tame The two stack, but along gentle curves — it never becomes "level 100 means hopeless" The HP threshold drops in step: higher-level mobs must be beaten down further before a pact can be formed.
Key design point: the floor is never zero. No matter the level or trait count, the final success rate never drops below 0.5%, and the HP threshold never below 5%. Both are configurable.
Without L2Hostility installed this feature is completely inert — none of its classes are loaded.
1.2 Right-click to install upgrade templates Holding a Modular Golems upgrade template and right-clicking your own minion installs it into the first free upgrade slot — no need to open the equipment panel. Matches the feel of the trait-adding wand.
Templates that do nothing for minions are blocked with a message Only one copy of each template may be installed A full message appears if no slot is free 1.3 Cooldown for the Pact Stone The Pact Stone (eye of ender icon) now has a 5 second cooldown, using vanilla item cooldown rendering (the sweep overlay in the hotbar).
It only triggers when something is actually consumed — failed pre-checks (no crystal, not beaten down enough) don't lock you out.
Cooldown length is configurable (contract_cooldown_ticks, 0 = disabled).
1.4 Blacklist for damage-immune mobs Mobs that are permanently immune to most damage are blacklisted from taming by default. First entry: Mowzie's Mobs' Ferrous Wroughtnaut (mowziesmobs:ferrous_wroughtnaut).
The criterion is can't be hurt — not has a lot of HP. Each candidate was verified by disassembling its damage-handling method, not by guessing from the name.
1.5 Logarithmic slider for the success floor The "success floor" slider in the config screen now uses a logarithmic scale, with 1% sitting exactly in the middle of the track.
This gives fine control in the low range while keeping the ability to raise it up to 100%. The value is also displayed as a percentage now (previously it showed a bare 0.005, which most players couldn't read as 0.5%).
1.6 Confirmation before dissolving a pact Dissolving a pact is irreversible — level, XP and all allocated points are reset, and equipment drops on the ground. Both entry points now require confirmation:
Sneak + right-click: the first click only warns; right-click the same minion again within 5 seconds to actually do it /pactminions dismiss: preview only; add confirm true to execute 2. Bug Fixes Critical: infinite duplication when installing upgrade templates Symptom: Right-clicking a minion with an upgrade template installed it, but the stack in your inventory never decreased — you could duplicate templates indefinitely.
Cause: The code operated on the copy returned by PlayerInteractEvent.getItemStack(). Decrementing the count on that copy is like taking the count off a photocopy.
Fix: Read the real held item straight from the player's inventory, and reorder to "write into the container first, then decrement the hand".
Critical: contained minions vanish after the owner dies Symptom: After dying and respawning, minions stored in the pouch appear for a split second and then disappear.
Cause: Forge does not carry capabilities over on death-respawn. PlayerList.respawn calls invalidateCaps at instruction 19, but only fires PlayerEvent.Clone at instruction 141 — 122 instructions of dead zone in between. Reading the old player's data inside Clone always returns null.
Fix: Move the snapshot earlier — to the moment of death (LivingDeathEvent, the first instruction of die()) — and write it back into the new entity on respawn.
One finding from that investigation is worth repeating: "don't kill the process" is not the trigger condition, it's the masking condition. A normal quit writes the empty pouch to disk; force-killing leaves the old data on disk.
Multiple click sounds in the config screen Symptom: Clicking one button made every button in the list area play a click, stacking into a much louder sound; clicking empty space also produced a click.
Cause: ScrollableList forwarded mouse-release to all child widgets without breaking. Vanilla's AbstractSliderButton.onRelease() plays a click sound internally — so one click "released" every slider in the list.
Fix: Track which child was actually pressed and notify only that one on release. Also fixed container widgets playing a sound when clicked directly (overrode clicked() to always return false).
Crash when toggling config from the main menu Symptom: Opening the config screen from the main menu (before entering a world) and clicking a toggle crashed the game.
Cause: The config is SERVER type; before entering a world that spec isn't loaded, so writing throws NullPointerException: Cannot set config value without assigned Config object present.
Fix: Catch it and show "enter a world first"; controls are also greyed out up front.
Raw translation keys shown in the config screen Several new config entries displayed as pactminions.config.tame_chance_floor — the language files were missing those keys. Both zh_cn and en_us now have them.
Equipment was unrecoverable after dissolving a pact Symptom: After dissolving a pact, the minion still wore your equipment and upgrade templates, but it was no longer yours — the gear was lost.
Fix: Equipment now drops on the ground when the pact is dissolved.
Leftover attribute bonuses after dissolving a pact Symptom: Equipment dropped, but the armour, toughness and attack bonuses stayed on the mob — a "wild" mob ended up stronger than its peers.
Cause: The five-attribute and equipment systems use different modifier identifiers; dissolving only cleared the five-attribute set.
Fix: Both dissolve paths now clear the equipment bonuses, and also clear the main-hand slot (otherwise the mob stands there holding a sword that already dropped).
3.Known Limitations Core verification for this version was done via bytecode data-flow analysis, pure-JVM structural probes, and in-game A/B comparison. Some features (notably the exact feel of the L2Hostility penalties) have not been extensively tuned in real gameplay — the numbers may need adjustment based on actual play. The config screen is read-only when not inside a world (intentional — this is a server-side config). /pactminions dismiss only affects minions within 64 blocks.
This mod has no additional files

