Add alchemy unit test coverage and tidy alchemy internals
Covers the Catalysis brew speed curve, Concoctions tier plumbing, potion stage math, brew and ingredient validation, finishBrewing, the disable-time brew flush, and the vanilla-brew race handler.
Cleanup while in the area: clearer calculateBrewSpeed, removal of a duplicated base-potion-type check and an always-false brew guard, stale debug comment removal, and final locals. (commit: e53f74c)
Fix potion matching failing when custom effect order differs
Custom effects were compared by list index, so two potions carrying identical effects in a different order were treated as different potions and the brew silently failed. Effects are now matched by type, amplifier, and duration regardless of order. (commit: 406422a)
Fix brewing stand ingredient transfers using the wrong stack limit
Shift-right-click transfers checked the source stack against the max stack size instead of the ingredient slot, so a full source stack was wrongly refused while a full ingredient slot happily grew past the stack limit. Room is now judged by the destination stack, using the component-aware ItemStack#getMaxStackSize. (commit: 71bad6a)
Covers the Skill Shot damage math and its max bonus cap, the arrow tracker and its periodic invalid-entity cleanup, ability gates, the distance XP multiplier (including the 50-block cap and cross-world guards), and both Daze branches: the Paper lookAt path and the Spigot scheduled-teleport path with its stale-world guard.
Minor cleanup: final locals and a line wrap in the Archery helpers. (commit: d3d5281)
Covers the Trick Shot ricochet end to end: crossbow and permission gates, the bounce budget from the subskill rank, the head-on rejection window (first bounce only), the reflected arrow spawn with its copied combat state, tipped-arrow potion state, infinite-arrow pickup denial, and the hit routing that feeds it. Also covers the Powered Shot damage math and its activation gate.
Minor cleanup: final locals and a corrected comment on the ricochet angle check. (commit: 9f0afd6)
Covers Momentum end to end: the lazy speed effect type resolution and its fail-fast when the registry lacks it, attack-strength-scaled activation odds with the full-strength clamp, the guard that never downgrades a stronger or longer existing swiftness buff, permission gating, and the buff application itself. Also covers the Momentum duration curve and the Spear Mastery bonus damage math.
The tests bootstrap Bukkit Registry and PotionEffectType with mocks minted during their own static initialization, which makes registry-backed effect types mockable off-server.
Minor cleanup: final locals and a clarified odds comment. (commit: a3f6e55)
Covers the static Taming helpers (damage prevention gate, Thick Fur, Shock Proof, Holy Hound healing clamps, summon failure messages), taming XP with its cancellable event, Fast Food Service healing, Gore and Sharpened Claws damage math, Pummel knockback and its notifications, Environmentally Aware rescue teleports, Beast Lore messages including horse stats and the llama exclusion, the Call of the Wild summon flow (cost, cap, throttle, permission and item gates, wolf setup and tracking), and the tracked summon lifecycle. (commit: c9ac140)
Fix Holy Hound gating on the wrong subskill unlock
Holy Hound checked Environmentally Aware's unlock level, so wolves were healed by magic and poison from Taming level 10 instead of the level 35 the skill guides advertise. It now gates on its own rank. (commit: c72abd1)
Covers miningBlockCheck end to end (XP, permission and config gates, silk touch handling, Super Breaker durability and triple drops, Mother Lode with its double-drop fallback), the remote detonation gate and flow (cooldown warning, instant TNT priming, denied fake breaks), blast mining drop processing (yield rolls, bonus drop tiers, debris rolls, illegal drops), the blast modifiers and drop multiplier tiers, the Demolitions Expertise and Bigger Bombs unlock scans, and the PVP blast damage cap and owner damage reduction.
Extracts the registry bootstrap proven in the spears tests into a shared TestRegistryBootstrap that mints per-type registry mocks, so Enchantment and PotionEffectType are both safely mockable off-server regardless of suite order.
Minor cleanup: corrected five copy-pasted javadocs on the blast modifier getters. (commit: a95ebfb)
Covers the ability gates (readied sword, living-attacker counter gate, active super ability), the Rupture flow (refresh instead of re-roll, blocking defenders, bleed task scheduling and defender notification), Stab damage scaling, Counter Attack reflection with its notifications, and Serrated Strikes AoE damage reduction. (commit: ff43517)
Covers the ability gates including the armored/naked target split between Armor Impact and Greater Impact, Axe Mastery scaling, the Critical Hit PVP path with its notifications, Impact armor durability damage and its no-equipment guard, the Greater Impact knockback and bonus damage payout, and the armor detection helper. Also adds save/restore hygiene for the Axes static modifiers the existing tests mutated. (commit: 41d1dad)
Covers the ability gates (armed-player disarm targets, empty-fist arrow deflect, active Berserk, readied fists), all six Block Cracker brick conversions with the config and activation gates, the full Disarm flow (protected drops, Iron Grip saves, cancelled events), Arrow Deflect, and the Steel Arm damage curve including the rank 18 breakpoint and the custom override. (commit: 1b44bb5)
Covers block XP, the Giga Drill Breaker double XP check with tool durability and its tripled treasure rolls, treasure drop-level gating, treasure XP payouts, archaeology experience orb rolls and their rank scaling, and the archaeology permission gate. (commit: d5390b6)
Covers the Cripple flow end to end: the lazy slowness effect type resolution and its fail-fast, the do-not-stack guard against already slowed targets, attack-strength-scaled odds, permission gating, the player/mob tier split for slow duration and strength, and the effect application with its notification. Crush damage was already covered. (commit: adc1a10)
Covers the Fuel Efficiency multiplier tiers with the spent-fuel and Short.MAX_VALUE clamps, smelt XP payouts, and the Second Smelt flow: the winning roll adding an ingot, the nearly-full result slot guard, and the per-item double drop config gate. The vanilla XP multiplier was already covered. (commit: 2c917cb)
Covers the anvil placement hint firing exactly once, every handleRepair guard rail (unbreakable, custom model data, permission, skill level, full durability, missing material, stacked items), the Repair Mastery bonus and Super Repair double with its notification, and the Arcane Forging outcomes: rank-zero loss, kept enchants, stripped enchants, and downgrades. Confirmation windows and the arcane forging enchant cap were already covered. (commit: 646f831)
Covers the Scrap Collector yield limits, the enchant bypass perk guaranteeing full extraction, the anvil placement hint firing once, the handleSalvage guard rails (unbreakable, skill level, too damaged), the successful salvage flow with its material payout and hand emptying, and the arcane salvage split between lost enchants and full book extraction. Confirmation windows and the enchant cap were already covered. (commit: c5554a5)
Covers the ability gates (Green Thumb seed requirements, Shroom Thumb needing both mushroom types, Hylian Luck, readied hoe), Farmer's Diet delegation, the sweet berry bush harvest with its delayed age verification and cancelled-harvest guard, plant maturity rules including the berry bush age-two rule and the untrustworthy ageables, bonus drop marking (Green Terra and Verdant Bounty triples versus plain doubles), and the natural/player-placed double drop split. Green Thumb consumption and multi-block XP were already covered. (commit: cc392fa)
Add woodcutting gate and Clean Cuts unit test coverage
Covers the Leaf Blower and Tree Feller gates (axe requirement, unlock, active ability) and the Clean Cuts triple drop paths: the metadata marking on single-block breaks and the direct double spawn under Tree Feller. Double drops, XP, the Tree Feller threshold, Knock on Wood orbs, and durability were already covered. (commit: 580bc40)
Add acrobatics gate and throttle unit test coverage
Covers the Dodge gate (blocking players, PVE trigger config, the lightning config, the unlock), the roll XP throttle with its lengthening cooldown under exploit prevention, and the fall location memory. Roll damage, thresholds, graceful roll probability, and the per-mob dodge XP cap were already covered. (commit: d0214f1)
Widen statistical tolerance in probability expectation tests
At 20 million samples the old 0.035 percentage point tolerance sat around 3 sigma, so the parameterized static-chance cases would flake on an unlucky roll every few hundred runs. 0.05 keeps roughly 4.5 sigma of headroom while still catching any real probability regression. (commit: c25b48e)
Covers the enchantment-backed fishing paths: the cast wiring that reads the rod Lure level and hands it to Master Angler, the deferred Master Angler task scheduled one tick after the cast, Luck of the Sea scaling of the treasure roll (main hand, off hand, unenchanted, and unknown hand), and the Magic Hunter roll including candidate filtering, the conflict rule, non-enchantable drops, and the locked gate. These were previously untestable off-server because Enchantment resolves through the registry; the registry bootstrap added for the spears coverage unblocks them. (commit: 0bf608a)