<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>363</buildNumber><marked><SHA1>6fcbefe87d7d7cd52c1b8c8d7cd0b72371148828</SHA1><branch><SHA1>6fcbefe87d7d7cd52c1b8c8d7cd0b72371148828</SHA1><name>refs/remotes/origin/master</name></branch></marked><revision><SHA1>6fcbefe87d7d7cd52c1b8c8d7cd0b72371148828</SHA1><branch><SHA1>6fcbefe87d7d7cd52c1b8c8d7cd0b72371148828</SHA1><name>refs/remotes/origin/master</name></branch></revision></refsremotesoriginmaster></buildsByBranchName><lastBuiltRevision><SHA1>6fcbefe87d7d7cd52c1b8c8d7cd0b72371148828</SHA1><branch><SHA1>6fcbefe87d7d7cd52c1b8c8d7cd0b72371148828</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/363/artifact</artifactsUrl><changesUrl>https://popicraft.net/jenkins/job/mcMMO/changes</changesUrl><displayUrl>https://popicraft.net/jenkins/job/mcMMO/363/</displayUrl><testsUrl>https://popicraft.net/jenkins/job/mcMMO/363/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>#363</displayName><duration>63091</duration><estimatedDuration>66807</estimatedDuration><fullDisplayName>mcMMO #363</fullDisplayName><id>363</id><inProgress>false</inProgress><keepLog>false</keepLog><number>363</number><queueId>310</queueId><result>SUCCESS</result><timestamp>1790129954437</timestamp><url>https://popicraft.net/jenkins/job/mcMMO/363/</url><builtOn>Builder</builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>Changelog.txt</affectedPath><affectedPath>src/main/resources/experience.yml</affectedPath><commitId>bd8ace31cc40fa38d11f838d4af0f402c5897a39</commitId><timestamp>1790125468000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>Lower the default Herbalism XP for Pale_Hanging_Moss to 1

Pale hanging moss paid 150 Herbalism XP per block. A dispenser of bone
meal on a clock grows it back without limit, so breaking it was a very
fast way to level Herbalism. It now pays 1, the same as glow lichen,
which is farmed the same way.

experience.yml only gains missing keys on startup, so existing servers
keep 150 until they change the value or regenerate the file.

Fixes #5325
</comment><date>2026-09-22 18:04:28 -0700</date><id>bd8ace31cc40fa38d11f838d4af0f402c5897a39</id><msg>Lower the default Herbalism XP for Pale_Hanging_Moss to 1</msg><path><editType>edit</editType><file>src/main/resources/experience.yml</file></path><path><editType>edit</editType><file>Changelog.txt</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>Changelog.txt</affectedPath><commitId>584fa0889fbb4e8b8df844e52482a3a8ceda03d8</commitId><timestamp>1790125590000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>simplified changelog
</comment><date>2026-09-22 18:06:30 -0700</date><id>584fa0889fbb4e8b8df844e52482a3a8ceda03d8</id><msg>simplified changelog</msg><path><editType>edit</editType><file>Changelog.txt</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/test/java/com/gmail/nossr50/database/FlatFileDatabaseManagerTest.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/database/FlatFileDatabaseManager.java</affectedPath><affectedPath>src/test/java/com/gmail/nossr50/runnables/player/PlayerProfileLoadingTaskTest.java</affectedPath><affectedPath>Changelog.txt</affectedPath><commitId>6fcbefe87d7d7cd52c1b8c8d7cd0b72371148828</commitId><timestamp>1790129552000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>Keep FlatFile players unloaded when their data cannot be read at login

When a player's profile did not load at login, the loading task asked the
database for a new user. On FlatFile, newUser(Player) always returned a loaded
profile at starting levels, and saveUser writes over any row with that
player's UUID. A users file that could not be read at that moment, or a row
whose cooldowns could not be parsed, therefore wiped the player's stored
progress on the first save.

newUser(Player) now reads mcmmo.users and only returns a loaded profile when
the file was read and has no row with the player's UUID. Otherwise the profile
stays unloaded and the login keeps retrying the load, the same way the SQL
database behaves when its insert fails.

newUser(String, UUID) no longer appends a second row for a UUID that is
already stored. The load queries skip a row that fails to parse and use the
next row with the same UUID, so a fresh duplicate would be loaded in place of
a damaged original and then saved over both.

A row that fails to parse is now logged once per player, naming them, instead
of the exception being swallowed. Rows that end before the newer XP columns
load with those columns at zero, as the startup health check pads them,
instead of failing to load.
</comment><date>2026-09-22 19:12:32 -0700</date><id>6fcbefe87d7d7cd52c1b8c8d7cd0b72371148828</id><msg>Keep FlatFile players unloaded when their data cannot be read at login</msg><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/database/FlatFileDatabaseManager.java</file></path><path><editType>add</editType><file>src/test/java/com/gmail/nossr50/runnables/player/PlayerProfileLoadingTaskTest.java</file></path><path><editType>edit</editType><file>src/test/java/com/gmail/nossr50/database/FlatFileDatabaseManagerTest.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>