<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>333</buildNumber><marked><SHA1>3a711577530dc539787bfaf68770717b515018f1</SHA1><branch><SHA1>3a711577530dc539787bfaf68770717b515018f1</SHA1><name>refs/remotes/origin/master</name></branch></marked><revision><SHA1>3a711577530dc539787bfaf68770717b515018f1</SHA1><branch><SHA1>3a711577530dc539787bfaf68770717b515018f1</SHA1><name>refs/remotes/origin/master</name></branch></revision></refsremotesoriginmaster></buildsByBranchName><lastBuiltRevision><SHA1>3a711577530dc539787bfaf68770717b515018f1</SHA1><branch><SHA1>3a711577530dc539787bfaf68770717b515018f1</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'><artifactsUrl>https://popicraft.net/jenkins/job/mcMMO/333/artifact</artifactsUrl><changesUrl>https://popicraft.net/jenkins/job/mcMMO/changes</changesUrl><displayUrl>https://popicraft.net/jenkins/job/mcMMO/333/</displayUrl><testsUrl>https://popicraft.net/jenkins/job/mcMMO/333/testReport</testsUrl></action><artifact><displayPath>mcMMO.jar</displayPath><fileName>mcMMO.jar</fileName><relativePath>target/mcMMO.jar</relativePath></artifact><artifact><displayPath>original-mcMMO.jar</displayPath><fileName>original-mcMMO.jar</fileName><relativePath>target/original-mcMMO.jar</relativePath></artifact><building>false</building><displayName>#333</displayName><duration>102128</duration><estimatedDuration>135282</estimatedDuration><fullDisplayName>mcMMO #333</fullDisplayName><id>333</id><inProgress>false</inProgress><keepLog>false</keepLog><number>333</number><queueId>205</queueId><result>SUCCESS</result><timestamp>1783588748658</timestamp><url>https://popicraft.net/jenkins/job/mcMMO/333/</url><builtOn>Builder</builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/main/java/com/gmail/nossr50/mcMMO.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/runnables/skills/DelayedHerbalismXPCheckTask.java</affectedPath><affectedPath>src/test/java/com/gmail/nossr50/skills/herbalism/HerbalismMultiBlockPlantXpTest.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/runnables/skills/PlantCollapseXpTask.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/skills/herbalism/HerbalismManager.java</affectedPath><affectedPath>Changelog.txt</affectedPath><commitId>3a711577530dc539787bfaf68770717b515018f1</commitId><timestamp>1783588077000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>Verify multi-block plants actually break before paying Herbalism XP

Vanilla destroys the rest of a bamboo, sugar cane, kelp, cactus,
chorus, or hanging vine plant with scheduled block ticks on later
ticks, cascading one block per tick. XP for the whole plant was paid
during the BlockBreakEvent, so breaking a segment and instantly
replacing it collected XP for blocks that never broke.

The rest of the plant is now claimed by a per-tick verification task
that only pays XP for blocks that are verifiably gone (air, or water
for waterlogged plants) once the collapse window elapses. Positions
can only be claimed by one task at a time and claims are revoked when
a new break event takes over a position, so no block is paid twice.

This also revives XP for cactus and chorus columns: their traversal
was aborting immediately because the origin block pre-seeded the
visited set, so connected blocks never paid XP at all.

Fixes #5311
</comment><date>2026-07-09 02:07:57 -0700</date><id>3a711577530dc539787bfaf68770717b515018f1</id><msg>Verify multi-block plants actually break before paying Herbalism XP</msg><path><editType>add</editType><file>src/test/java/com/gmail/nossr50/skills/herbalism/HerbalismMultiBlockPlantXpTest.java</file></path><path><editType>add</editType><file>src/main/java/com/gmail/nossr50/runnables/skills/PlantCollapseXpTask.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/runnables/skills/DelayedHerbalismXPCheckTask.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/mcMMO.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/skills/herbalism/HerbalismManager.java</file></path><path><editType>edit</editType><file>Changelog.txt</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName><id>nossr50</id></culprit></freeStyleBuild>