<freeStyleBuild _class='hudson.model.FreeStyleBuild'><action _class='hudson.model.CauseAction'><cause _class='hudson.triggers.SCMTrigger$SCMTriggerCause'><shortDescription>Started by an SCM change</shortDescription></cause></action><action></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><refsremotesoriginmaster _class='hudson.plugins.git.util.Build'><buildNumber>342</buildNumber><marked><SHA1>0bf608a425587c65384f6532f3df94c1c84b84d6</SHA1><branch><SHA1>0bf608a425587c65384f6532f3df94c1c84b84d6</SHA1><name>refs/remotes/origin/master</name></branch></marked><revision><SHA1>0bf608a425587c65384f6532f3df94c1c84b84d6</SHA1><branch><SHA1>0bf608a425587c65384f6532f3df94c1c84b84d6</SHA1><name>refs/remotes/origin/master</name></branch></revision></refsremotesoriginmaster></buildsByBranchName><lastBuiltRevision><SHA1>0bf608a425587c65384f6532f3df94c1c84b84d6</SHA1><branch><SHA1>0bf608a425587c65384f6532f3df94c1c84b84d6</SHA1><name>refs/remotes/origin/master</name></branch></lastBuiltRevision><remoteUrl>https://github.com/mcMMO-Dev/mcMMO.git</remoteUrl><scmName></scmName></action><action></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><building>false</building><displayName>#342</displayName><duration>241420</duration><estimatedDuration>135282</estimatedDuration><fullDisplayName>mcMMO #342</fullDisplayName><id>342</id><inProgress>false</inProgress><keepLog>false</keepLog><number>342</number><queueId>215</queueId><result>FAILURE</result><timestamp>1783740849710</timestamp><url>https://popicraft.net/jenkins/job/mcMMO/342/</url><builtOn>Builder</builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/main/java/com/gmail/nossr50/datatypes/skills/alchemy/AlchemyPotion.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/skills/alchemy/AlchemyManager.java</affectedPath><affectedPath>src/test/java/com/gmail/nossr50/skills/alchemy/AlchemyTest.java</affectedPath><affectedPath>src/test/java/com/gmail/nossr50/skills/alchemy/AlchemyPotionBrewerTest.java</affectedPath><affectedPath>src/test/java/com/gmail/nossr50/datatypes/skills/alchemy/PotionStageTest.java</affectedPath><affectedPath>src/test/java/com/gmail/nossr50/skills/alchemy/AlchemyManagerTest.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/skills/alchemy/AlchemyPotionBrewer.java</affectedPath><affectedPath>src/test/java/com/gmail/nossr50/listeners/InventoryListenerBrewTest.java</affectedPath><commitId>e53f74c2751dbcb5d0ecd5bf958088e35e18649d</commitId><timestamp>1783732629000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>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.
</comment><date>2026-07-10 18:17:09 -0700</date><id>e53f74c2751dbcb5d0ecd5bf958088e35e18649d</id><msg>Add alchemy unit test coverage and tidy alchemy internals</msg><path><editType>add</editType><file>src/test/java/com/gmail/nossr50/listeners/InventoryListenerBrewTest.java</file></path><path><editType>add</editType><file>src/test/java/com/gmail/nossr50/skills/alchemy/AlchemyPotionBrewerTest.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/skills/alchemy/AlchemyManager.java</file></path><path><editType>add</editType><file>src/test/java/com/gmail/nossr50/datatypes/skills/alchemy/PotionStageTest.java</file></path><path><editType>add</editType><file>src/test/java/com/gmail/nossr50/skills/alchemy/AlchemyManagerTest.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/datatypes/skills/alchemy/AlchemyPotion.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/skills/alchemy/AlchemyPotionBrewer.java</file></path><path><editType>add</editType><file>src/test/java/com/gmail/nossr50/skills/alchemy/AlchemyTest.java</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>Changelog.txt</affectedPath><affectedPath>src/test/java/com/gmail/nossr50/datatypes/skills/alchemy/AlchemyPotionTest.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/datatypes/skills/alchemy/AlchemyPotion.java</affectedPath><commitId>406422a554449d4456e7a8dbd7062827b58267db</commitId><timestamp>1783732674000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>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.
</comment><date>2026-07-10 18:17:54 -0700</date><id>406422a554449d4456e7a8dbd7062827b58267db</id><msg>Fix potion matching failing when custom effect order differs</msg><path><editType>edit</editType><file>Changelog.txt</file></path><path><editType>add</editType><file>src/test/java/com/gmail/nossr50/datatypes/skills/alchemy/AlchemyPotionTest.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/datatypes/skills/alchemy/AlchemyPotion.java</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/main/java/com/gmail/nossr50/skills/alchemy/AlchemyPotionBrewer.java</affectedPath><affectedPath>Changelog.txt</affectedPath><affectedPath>src/test/java/com/gmail/nossr50/skills/alchemy/AlchemyPotionBrewerTransferTest.java</affectedPath><commitId>71bad6a743390854fe28bf636b9329756810e76e</commitId><timestamp>1783732719000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>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.
</comment><date>2026-07-10 18:18:39 -0700</date><id>71bad6a743390854fe28bf636b9329756810e76e</id><msg>Fix brewing stand ingredient transfers using the wrong stack limit</msg><path><editType>edit</editType><file>Changelog.txt</file></path><path><editType>add</editType><file>src/test/java/com/gmail/nossr50/skills/alchemy/AlchemyPotionBrewerTransferTest.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/skills/alchemy/AlchemyPotionBrewer.java</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/test/java/com/gmail/nossr50/skills/archery/ArcheryManagerTest.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/skills/archery/Archery.java</affectedPath><affectedPath>src/test/java/com/gmail/nossr50/skills/archery/ArcheryTest.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/skills/archery/ArcheryManager.java</affectedPath><commitId>d3d52819267ca965f96d969a996306123da3fe4c</commitId><timestamp>1783733366000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>Add archery unit test coverage

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.
</comment><date>2026-07-10 18:29:26 -0700</date><id>d3d52819267ca965f96d969a996306123da3fe4c</id><msg>Add archery unit test coverage</msg><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/skills/archery/ArcheryManager.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/skills/archery/Archery.java</file></path><path><editType>add</editType><file>src/test/java/com/gmail/nossr50/skills/archery/ArcheryManagerTest.java</file></path><path><editType>add</editType><file>src/test/java/com/gmail/nossr50/skills/archery/ArcheryTest.java</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/main/java/com/gmail/nossr50/skills/crossbows/CrossbowsManager.java</affectedPath><affectedPath>src/test/java/com/gmail/nossr50/skills/crossbows/CrossbowsTest.java</affectedPath><affectedPath>src/test/java/com/gmail/nossr50/skills/crossbows/CrossbowsManagerTest.java</affectedPath><commitId>9f0afd6151e38136e52adba9b1a21315107f2665</commitId><timestamp>1783733664000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>Add crossbows unit test coverage

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.
</comment><date>2026-07-10 18:34:24 -0700</date><id>9f0afd6151e38136e52adba9b1a21315107f2665</id><msg>Add crossbows unit test coverage</msg><path><editType>add</editType><file>src/test/java/com/gmail/nossr50/skills/crossbows/CrossbowsManagerTest.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/skills/crossbows/CrossbowsManager.java</file></path><path><editType>add</editType><file>src/test/java/com/gmail/nossr50/skills/crossbows/CrossbowsTest.java</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/main/java/com/gmail/nossr50/skills/spears/SpearsManager.java</affectedPath><affectedPath>src/test/java/com/gmail/nossr50/skills/spears/SpearsManagerTest.java</affectedPath><commitId>a3f6e55adaf5dae01d21ad19a931c7a761314922</commitId><timestamp>1783734232000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>Add spears unit test coverage

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.
</comment><date>2026-07-10 18:43:52 -0700</date><id>a3f6e55adaf5dae01d21ad19a931c7a761314922</id><msg>Add spears unit test coverage</msg><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/skills/spears/SpearsManager.java</file></path><path><editType>add</editType><file>src/test/java/com/gmail/nossr50/skills/spears/SpearsManagerTest.java</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/test/java/com/gmail/nossr50/skills/taming/TrackedTamingEntityTest.java</affectedPath><affectedPath>src/test/java/com/gmail/nossr50/skills/taming/TamingManagerTest.java</affectedPath><affectedPath>src/test/java/com/gmail/nossr50/skills/taming/TamingTest.java</affectedPath><commitId>c9ac1407f2e5898ff47370a5a2e66aaf35c2287c</commitId><timestamp>1783735043000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>Add taming unit test coverage

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.
</comment><date>2026-07-10 18:57:23 -0700</date><id>c9ac1407f2e5898ff47370a5a2e66aaf35c2287c</id><msg>Add taming unit test coverage</msg><path><editType>add</editType><file>src/test/java/com/gmail/nossr50/skills/taming/TrackedTamingEntityTest.java</file></path><path><editType>edit</editType><file>src/test/java/com/gmail/nossr50/skills/taming/TamingManagerTest.java</file></path><path><editType>add</editType><file>src/test/java/com/gmail/nossr50/skills/taming/TamingTest.java</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/test/java/com/gmail/nossr50/skills/taming/TamingManagerTest.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/skills/taming/TamingManager.java</affectedPath><affectedPath>Changelog.txt</affectedPath><commitId>c72abd1a0c70dca848c592475c2be3098892ec6f</commitId><timestamp>1783735110000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>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.
</comment><date>2026-07-10 18:58:30 -0700</date><id>c72abd1a0c70dca848c592475c2be3098892ec6f</id><msg>Fix Holy Hound gating on the wrong subskill unlock</msg><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/skills/taming/TamingManager.java</file></path><path><editType>edit</editType><file>Changelog.txt</file></path><path><editType>edit</editType><file>src/test/java/com/gmail/nossr50/skills/taming/TamingManagerTest.java</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/test/java/com/gmail/nossr50/skills/spears/SpearsManagerTest.java</affectedPath><affectedPath>src/test/java/com/gmail/nossr50/TestRegistryBootstrap.java</affectedPath><affectedPath>src/test/java/com/gmail/nossr50/skills/mining/BlastMiningTest.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/skills/mining/MiningManager.java</affectedPath><affectedPath>src/test/java/com/gmail/nossr50/skills/mining/MiningManagerTest.java</affectedPath><commitId>a95ebfb2f1b52efaf9fee84387a8e2d892ed9704</commitId><timestamp>1783735679000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>Add mining unit test coverage

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.
</comment><date>2026-07-10 19:07:59 -0700</date><id>a95ebfb2f1b52efaf9fee84387a8e2d892ed9704</id><msg>Add mining unit test coverage</msg><path><editType>edit</editType><file>src/test/java/com/gmail/nossr50/skills/mining/MiningManagerTest.java</file></path><path><editType>add</editType><file>src/test/java/com/gmail/nossr50/TestRegistryBootstrap.java</file></path><path><editType>edit</editType><file>src/test/java/com/gmail/nossr50/skills/mining/BlastMiningTest.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/skills/mining/MiningManager.java</file></path><path><editType>edit</editType><file>src/test/java/com/gmail/nossr50/skills/spears/SpearsManagerTest.java</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/test/java/com/gmail/nossr50/skills/swords/SwordsManagerTest.java</affectedPath><commitId>ff435173ce4390d5b0da368f2f1a8da86498efed</commitId><timestamp>1783735885000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>Add swords unit test coverage

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.
</comment><date>2026-07-10 19:11:25 -0700</date><id>ff435173ce4390d5b0da368f2f1a8da86498efed</id><msg>Add swords unit test coverage</msg><path><editType>edit</editType><file>src/test/java/com/gmail/nossr50/skills/swords/SwordsManagerTest.java</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/test/java/com/gmail/nossr50/skills/axes/AxesManagerTest.java</affectedPath><commitId>41d1dadccc4e3898bc12f860155ac426e6d33a2a</commitId><timestamp>1783736097000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>Add axes unit test coverage

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.
</comment><date>2026-07-10 19:14:57 -0700</date><id>41d1dadccc4e3898bc12f860155ac426e6d33a2a</id><msg>Add axes unit test coverage</msg><path><editType>edit</editType><file>src/test/java/com/gmail/nossr50/skills/axes/AxesManagerTest.java</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/test/java/com/gmail/nossr50/skills/unarmed/UnarmedManagerTest.java</affectedPath><commitId>1b44bb55a8f302c746d24d97eb65ceb997cce2f8</commitId><timestamp>1783736330000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>Add unarmed unit test coverage

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.
</comment><date>2026-07-10 19:18:50 -0700</date><id>1b44bb55a8f302c746d24d97eb65ceb997cce2f8</id><msg>Add unarmed unit test coverage</msg><path><editType>edit</editType><file>src/test/java/com/gmail/nossr50/skills/unarmed/UnarmedManagerTest.java</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/test/java/com/gmail/nossr50/skills/excavation/ExcavationTest.java</affectedPath><commitId>d5390b64300d5e7128421104dc4ea5d837182fc8</commitId><timestamp>1783736514000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>Add excavation unit test coverage

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.
</comment><date>2026-07-10 19:21:54 -0700</date><id>d5390b64300d5e7128421104dc4ea5d837182fc8</id><msg>Add excavation unit test coverage</msg><path><editType>edit</editType><file>src/test/java/com/gmail/nossr50/skills/excavation/ExcavationTest.java</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/test/java/com/gmail/nossr50/skills/maces/MacesTest.java</affectedPath><commitId>adc1a10327e52ea696dfbbc6b3c30bba0c8a04d4</commitId><timestamp>1783736683000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>Add maces unit test coverage

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.
</comment><date>2026-07-10 19:24:43 -0700</date><id>adc1a10327e52ea696dfbbc6b3c30bba0c8a04d4</id><msg>Add maces unit test coverage</msg><path><editType>edit</editType><file>src/test/java/com/gmail/nossr50/skills/maces/MacesTest.java</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/test/java/com/gmail/nossr50/skills/smelting/SmeltingManagerTest.java</affectedPath><commitId>2c917cb4a7e5b63da8850d95684918a31be05f0f</commitId><timestamp>1783736851000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>Add smelting unit test coverage

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.
</comment><date>2026-07-10 19:27:31 -0700</date><id>2c917cb4a7e5b63da8850d95684918a31be05f0f</id><msg>Add smelting unit test coverage</msg><path><editType>edit</editType><file>src/test/java/com/gmail/nossr50/skills/smelting/SmeltingManagerTest.java</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/test/java/com/gmail/nossr50/skills/repair/RepairManagerTest.java</affectedPath><commitId>646f831b364c6aa71ea79f6aeddbd6f5bb6516fe</commitId><timestamp>1783737207000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>Add repair unit test coverage

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.
</comment><date>2026-07-10 19:33:27 -0700</date><id>646f831b364c6aa71ea79f6aeddbd6f5bb6516fe</id><msg>Add repair unit test coverage</msg><path><editType>edit</editType><file>src/test/java/com/gmail/nossr50/skills/repair/RepairManagerTest.java</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/test/java/com/gmail/nossr50/skills/salvage/SalvageManagerTest.java</affectedPath><commitId>c5554a5b313f65b3334f9b230c77bfd4f9cbf0a1</commitId><timestamp>1783737453000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>Add salvage unit test coverage

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.
</comment><date>2026-07-10 19:37:33 -0700</date><id>c5554a5b313f65b3334f9b230c77bfd4f9cbf0a1</id><msg>Add salvage unit test coverage</msg><path><editType>edit</editType><file>src/test/java/com/gmail/nossr50/skills/salvage/SalvageManagerTest.java</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/test/java/com/gmail/nossr50/skills/herbalism/HerbalismManagerAbilitiesTest.java</affectedPath><commitId>cc392fa051990f62afce5cc64511b44b0ae81149</commitId><timestamp>1783737974000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>Add herbalism ability unit test coverage

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.
</comment><date>2026-07-10 19:46:14 -0700</date><id>cc392fa051990f62afce5cc64511b44b0ae81149</id><msg>Add herbalism ability unit test coverage</msg><path><editType>add</editType><file>src/test/java/com/gmail/nossr50/skills/herbalism/HerbalismManagerAbilitiesTest.java</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/test/java/com/gmail/nossr50/skills/woodcutting/WoodcuttingTest.java</affectedPath><commitId>580bc40b7a392478dab1921cb1959485a9b4eb4b</commitId><timestamp>1783738202000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>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.
</comment><date>2026-07-10 19:50:02 -0700</date><id>580bc40b7a392478dab1921cb1959485a9b4eb4b</id><msg>Add woodcutting gate and Clean Cuts unit test coverage</msg><path><editType>edit</editType><file>src/test/java/com/gmail/nossr50/skills/woodcutting/WoodcuttingTest.java</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/test/java/com/gmail/nossr50/skills/acrobatics/AcrobaticsTest.java</affectedPath><commitId>d0214f1dc3beb69a9c6509e4bfd6e3e981c940e0</commitId><timestamp>1783738410000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>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.
</comment><date>2026-07-10 19:53:30 -0700</date><id>d0214f1dc3beb69a9c6509e4bfd6e3e981c940e0</id><msg>Add acrobatics gate and throttle unit test coverage</msg><path><editType>edit</editType><file>src/test/java/com/gmail/nossr50/skills/acrobatics/AcrobaticsTest.java</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/test/java/com/gmail/nossr50/util/random/ProbabilityTestUtils.java</affectedPath><commitId>c25b48e7812f718cdaba7da7801c9a442efb3e29</commitId><timestamp>1783739022000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>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.
</comment><date>2026-07-10 20:03:42 -0700</date><id>c25b48e7812f718cdaba7da7801c9a442efb3e29</id><msg>Widen statistical tolerance in probability expectation tests</msg><path><editType>edit</editType><file>src/test/java/com/gmail/nossr50/util/random/ProbabilityTestUtils.java</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/test/java/com/gmail/nossr50/skills/fishing/FishingManagerProcessFishingTest.java</affectedPath><affectedPath>src/test/java/com/gmail/nossr50/skills/fishing/FishingManagerMasterAnglerTest.java</affectedPath><affectedPath>src/test/java/com/gmail/nossr50/listeners/PlayerListenerFishingTest.java</affectedPath><commitId>0bf608a425587c65384f6532f3df94c1c84b84d6</commitId><timestamp>1783739847000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>Add fishing enchantment unit test coverage

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.
</comment><date>2026-07-10 20:17:27 -0700</date><id>0bf608a425587c65384f6532f3df94c1c84b84d6</id><msg>Add fishing enchantment unit test coverage</msg><path><editType>edit</editType><file>src/test/java/com/gmail/nossr50/skills/fishing/FishingManagerMasterAnglerTest.java</file></path><path><editType>edit</editType><file>src/test/java/com/gmail/nossr50/listeners/PlayerListenerFishingTest.java</file></path><path><editType>edit</editType><file>src/test/java/com/gmail/nossr50/skills/fishing/FishingManagerProcessFishingTest.java</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></culprit></freeStyleBuild>