<freeStyleProject _class='hudson.model.FreeStyleProject'><action></action><action></action><action></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.JobDisplayAction'><displayUrl>https://popicraft.net/jenkins/job/mcMMO/</displayUrl></action><action _class='com.cloudbees.plugins.credentials.ViewCredentialsAction'><stores></stores></action><description>This is not officially sanctioned by the mcmmo devs and is done by a third party. Please do not pester them with issues relating to downloading from this site.

This is by no means official so download at your own risk.

Apparently microsoft defender is falsely flagging some of my builds so check with something like virustotal.com if you trust them</description><displayName>mcMMO</displayName><fullDisplayName>mcMMO</fullDisplayName><fullName>mcMMO</fullName><name>mcMMO</name><url>https://popicraft.net/jenkins/job/mcMMO/</url><buildable>true</buildable><build _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>353</buildNumber><marked><SHA1>ad8444c2f394ee97c510acdfc7b23623885b071c</SHA1><branch><SHA1>ad8444c2f394ee97c510acdfc7b23623885b071c</SHA1><name>refs/remotes/origin/master</name></branch></marked><revision><SHA1>ad8444c2f394ee97c510acdfc7b23623885b071c</SHA1><branch><SHA1>ad8444c2f394ee97c510acdfc7b23623885b071c</SHA1><name>refs/remotes/origin/master</name></branch></revision></refsremotesoriginmaster></buildsByBranchName><lastBuiltRevision><SHA1>ad8444c2f394ee97c510acdfc7b23623885b071c</SHA1><branch><SHA1>ad8444c2f394ee97c510acdfc7b23623885b071c</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><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>#353</displayName><duration>61920</duration><estimatedDuration>66335</estimatedDuration><fullDisplayName>mcMMO #353</fullDisplayName><id>353</id><inProgress>false</inProgress><keepLog>false</keepLog><number>353</number><queueId>246</queueId><result>SUCCESS</result><timestamp>1785454432280</timestamp><url>https://popicraft.net/jenkins/job/mcMMO/353/</url><builtOn>Builder</builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>Changelog.txt</affectedPath><commitId>ad8444c2f394ee97c510acdfc7b23623885b071c</commitId><timestamp>1785453680000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>Update changelog
</comment><date>2026-07-30 16:21:20 -0700</date><id>ad8444c2f394ee97c510acdfc7b23623885b071c</id><msg>Update changelog</msg><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></culprit></build><build _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>352</buildNumber><marked><SHA1>68c5908341ed55f7ec89a28ec18026445aa9aa8c</SHA1><branch><SHA1>68c5908341ed55f7ec89a28ec18026445aa9aa8c</SHA1><name>refs/remotes/origin/master</name></branch></marked><revision><SHA1>68c5908341ed55f7ec89a28ec18026445aa9aa8c</SHA1><branch><SHA1>68c5908341ed55f7ec89a28ec18026445aa9aa8c</SHA1><name>refs/remotes/origin/master</name></branch></revision></refsremotesoriginmaster></buildsByBranchName><lastBuiltRevision><SHA1>68c5908341ed55f7ec89a28ec18026445aa9aa8c</SHA1><branch><SHA1>68c5908341ed55f7ec89a28ec18026445aa9aa8c</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><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>#352</displayName><duration>77970</duration><estimatedDuration>66335</estimatedDuration><fullDisplayName>mcMMO #352</fullDisplayName><id>352</id><inProgress>false</inProgress><keepLog>false</keepLog><number>352</number><queueId>245</queueId><result>SUCCESS</result><timestamp>1785453535144</timestamp><url>https://popicraft.net/jenkins/job/mcMMO/352/</url><builtOn>Builder</builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/main/java/com/gmail/nossr50/locale/LocaleLoader.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/util/skills/SkillTools.java</affectedPath><commitId>68c5908341ed55f7ec89a28ec18026445aa9aa8c</commitId><timestamp>1785453443000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/github</absoluteUrl><fullName>github</fullName></author><authorEmail>noreply@github.com</authorEmail><comment>Speed up locale color formatting and skill name matching (#5330)

addColors applied 44 regex replaceAll calls per localized string even though every pattern is a literal quote; plain String.replace does the same substitutions without compiling a pattern per call. matchSkill now caches successful name lookups keyed by lowercased input, invalidated via the locale generation counter, so repeated lookups skip the per-skill localized name scans.
</comment><date>2026-07-30 16:17:23 -0700</date><id>68c5908341ed55f7ec89a28ec18026445aa9aa8c</id><msg>Speed up locale color formatting and skill name matching (#5330)</msg><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/locale/LocaleLoader.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/util/skills/SkillTools.java</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://popicraft.net/jenkins/user/github</absoluteUrl><fullName>github</fullName></culprit></build><build _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>351</buildNumber><marked><SHA1>25d7c948813e79fa945f2db5f82b3c40b7dba26a</SHA1><branch><SHA1>25d7c948813e79fa945f2db5f82b3c40b7dba26a</SHA1><name>refs/remotes/origin/master</name></branch></marked><revision><SHA1>25d7c948813e79fa945f2db5f82b3c40b7dba26a</SHA1><branch><SHA1>25d7c948813e79fa945f2db5f82b3c40b7dba26a</SHA1><name>refs/remotes/origin/master</name></branch></revision></refsremotesoriginmaster></buildsByBranchName><lastBuiltRevision><SHA1>25d7c948813e79fa945f2db5f82b3c40b7dba26a</SHA1><branch><SHA1>25d7c948813e79fa945f2db5f82b3c40b7dba26a</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><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>#351</displayName><duration>59116</duration><estimatedDuration>66335</estimatedDuration><fullDisplayName>mcMMO #351</fullDisplayName><id>351</id><inProgress>false</inProgress><keepLog>false</keepLog><number>351</number><queueId>237</queueId><result>SUCCESS</result><timestamp>1784833454752</timestamp><url>https://popicraft.net/jenkins/job/mcMMO/351/</url><builtOn>Builder</builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/test/java/com/gmail/nossr50/commands/XprateCommandTest.java</affectedPath><commitId>5230292a803b7a4ca1e4ff1f13449ea3ae72bc9a</commitId><timestamp>1784832519000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>Add test coverage for denying per-skill xprate changes without permission
</comment><date>2026-07-23 11:48:39 -0700</date><id>5230292a803b7a4ca1e4ff1f13449ea3ae72bc9a</id><msg>Add test coverage for denying per-skill xprate changes without permission</msg><path><editType>edit</editType><file>src/test/java/com/gmail/nossr50/commands/XprateCommandTest.java</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/main/resources/persistent_data.yml</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/util/skills/CombatUtils.java</affectedPath><affectedPath>src/test/java/com/gmail/nossr50/util/skills/CombatUtilsTest.java</affectedPath><commitId>04bd480661854807e401c50c05d4b8349a67312e</commitId><timestamp>1784832519000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>Fix exploited endermen giving full combat XP
</comment><date>2026-07-23 11:48:39 -0700</date><id>04bd480661854807e401c50c05d4b8349a67312e</id><msg>Fix exploited endermen giving full combat XP</msg><path><editType>edit</editType><file>src/main/resources/persistent_data.yml</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/util/skills/CombatUtils.java</file></path><path><editType>edit</editType><file>src/test/java/com/gmail/nossr50/util/skills/CombatUtilsTest.java</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/test/java/com/gmail/nossr50/skills/acrobatics/AcrobaticsTest.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/datatypes/skills/subskills/acrobatics/Roll.java</affectedPath><commitId>7f9f7229a17b8b75a8989cf4a6fc4dd6dfdbd837</commitId><timestamp>1784832519000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>Fix Graceful Roll using the normal Roll damage threshold
</comment><date>2026-07-23 11:48:39 -0700</date><id>7f9f7229a17b8b75a8989cf4a6fc4dd6dfdbd837</id><msg>Fix Graceful Roll using the normal Roll damage threshold</msg><path><editType>edit</editType><file>src/test/java/com/gmail/nossr50/skills/acrobatics/AcrobaticsTest.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/datatypes/skills/subskills/acrobatics/Roll.java</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/main/java/com/gmail/nossr50/util/Permissions.java</affectedPath><commitId>e69de798cb3db15388b1cfa76acc9737927b2532</commitId><timestamp>1784832519000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>Fix Tridents and Maces Limit Break checking unregistered permission nodes
</comment><date>2026-07-23 11:48:39 -0700</date><id>e69de798cb3db15388b1cfa76acc9737927b2532</id><msg>Fix Tridents and Maces Limit Break checking unregistered permission nodes</msg><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/util/Permissions.java</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/main/java/com/gmail/nossr50/runnables/skills/RuptureTask.java</affectedPath><commitId>8e8f8cfc1bf6e9844de05be5f2fdfed41935e374</commitId><timestamp>1784832519000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>Fix Rupture never playing its bleed sound
</comment><date>2026-07-23 11:48:39 -0700</date><id>8e8f8cfc1bf6e9844de05be5f2fdfed41935e374</id><msg>Fix Rupture never playing its bleed sound</msg><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/runnables/skills/RuptureTask.java</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/main/java/com/gmail/nossr50/datatypes/player/McMMOPlayer.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/util/sounds/SoundManager.java</affectedPath><affectedPath>src/main/resources/sounds.yml</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/util/sounds/SoundType.java</affectedPath><commitId>bd6a04d2888ed96856432bce2e8cda0516b28535</commitId><timestamp>1784832519000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>Remove sound types that never played
</comment><date>2026-07-23 11:48:39 -0700</date><id>bd6a04d2888ed96856432bce2e8cda0516b28535</id><msg>Remove sound types that never played</msg><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/util/sounds/SoundManager.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/datatypes/player/McMMOPlayer.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/util/sounds/SoundType.java</file></path><path><editType>edit</editType><file>src/main/resources/sounds.yml</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/main/java/com/gmail/nossr50/config/skills/repair/RepairConfig.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/config/skills/salvage/SalvageConfig.java</affectedPath><affectedPath>src/main/resources/repair.vanilla.yml</affectedPath><commitId>ef8f57b56e10f8f0596d07237ee48449ca8d5c5c</commitId><timestamp>1784832519000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>Accept MaterialType in repair and salvage configs and update repair.vanilla.yml
</comment><date>2026-07-23 11:48:39 -0700</date><id>ef8f57b56e10f8f0596d07237ee48449ca8d5c5c</id><msg>Accept MaterialType in repair and salvage configs and update repair.vanilla.yml</msg><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/config/skills/salvage/SalvageConfig.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/config/skills/repair/RepairConfig.java</file></path><path><editType>edit</editType><file>src/main/resources/repair.vanilla.yml</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/main/java/com/gmail/nossr50/config/AdvancedConfig.java</affectedPath><affectedPath>src/main/resources/advanced.yml</affectedPath><commitId>2c957d59ba3911797773447cf3e3c1cff4158cc3</commitId><timestamp>1784832519000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>Remove dead Serrated Strikes and Rupture settings from advanced.yml
</comment><date>2026-07-23 11:48:39 -0700</date><id>2c957d59ba3911797773447cf3e3c1cff4158cc3</id><msg>Remove dead Serrated Strikes and Rupture settings from advanced.yml</msg><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/config/AdvancedConfig.java</file></path><path><editType>edit</editType><file>src/main/resources/advanced.yml</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/main/java/com/gmail/nossr50/config/AdvancedConfig.java</affectedPath><affectedPath>src/main/resources/advanced.yml</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/commands/skills/MiningCommand.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/skills/mining/MiningManager.java</affectedPath><commitId>900beb21c7a6e90e0402a13630c43666cb3dd5ba</commitId><timestamp>1784832520000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>Remove dead Blast Mining settings and deprecate their accessors
</comment><date>2026-07-23 11:48:40 -0700</date><id>900beb21c7a6e90e0402a13630c43666cb3dd5ba</id><msg>Remove dead Blast Mining settings and deprecate their accessors</msg><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/commands/skills/MiningCommand.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/config/AdvancedConfig.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/main/resources/advanced.yml</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/main/resources/hidden.yml</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/config/HiddenConfig.java</affectedPath><commitId>203613dc6ff38f59075cca0f8dbfafe17b97b964</commitId><timestamp>1784832520000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>Remove unused hidden.yml options
</comment><date>2026-07-23 11:48:40 -0700</date><id>203613dc6ff38f59075cca0f8dbfafe17b97b964</id><msg>Remove unused hidden.yml options</msg><path><editType>edit</editType><file>src/main/resources/hidden.yml</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/config/HiddenConfig.java</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/main/resources/skillranks.yml</affectedPath><commitId>ba323541bf1551e3be6eabcaee5976015fa21d3b</commitId><timestamp>1784832520000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>Remove inert Tree Feller ranks and the orphan Fishing Mastery block from skillranks.yml
</comment><date>2026-07-23 11:48:40 -0700</date><id>ba323541bf1551e3be6eabcaee5976015fa21d3b</id><msg>Remove inert Tree Feller ranks and the orphan Fishing Mastery block from skillranks.yml</msg><path><editType>edit</editType><file>src/main/resources/skillranks.yml</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/main/resources/persistent_data.yml</affectedPath><affectedPath>src/main/resources/experience.yml</affectedPath><commitId>4d45eedbff881ac5d7d5c6d3e28f097378b8f1bc</commitId><timestamp>1784832520000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>Add Player_Tamed XP multiplier to experience.yml
</comment><date>2026-07-23 11:48:40 -0700</date><id>4d45eedbff881ac5d7d5c6d3e28f097378b8f1bc</id><msg>Add Player_Tamed XP multiplier to experience.yml</msg><path><editType>edit</editType><file>src/main/resources/experience.yml</file></path><path><editType>edit</editType><file>src/main/resources/persistent_data.yml</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/main/java/com/gmail/nossr50/util/skills/ParticleEffectUtils.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/config/GeneralConfig.java</affectedPath><affectedPath>src/main/resources/config.yml</affectedPath><commitId>17fa9b6ca21815e1a47f6497e794d590045fdffc</commitId><timestamp>1784832520000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>Remove unused Particles settings from config.yml
</comment><date>2026-07-23 11:48:40 -0700</date><id>17fa9b6ca21815e1a47f6497e794d590045fdffc</id><msg>Remove unused Particles settings from config.yml</msg><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/config/GeneralConfig.java</file></path><path><editType>edit</editType><file>src/main/resources/config.yml</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/util/skills/ParticleEffectUtils.java</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/main/resources/locale/locale_zh_TW.properties</affectedPath><affectedPath>src/main/resources/locale/locale_pt_BR.properties</affectedPath><affectedPath>src/main/resources/locale/locale_ja_JP.properties</affectedPath><affectedPath>src/main/resources/locale/locale_fr.properties</affectedPath><affectedPath>src/main/resources/locale/locale_pl.properties</affectedPath><affectedPath>src/main/resources/locale/locale_en_US.properties</affectedPath><affectedPath>src/main/resources/locale/locale_hu_HU.properties</affectedPath><affectedPath>src/main/resources/locale/locale_es.properties</affectedPath><affectedPath>src/main/resources/locale/locale_it.properties</affectedPath><affectedPath>src/main/resources/locale/locale_de.properties</affectedPath><affectedPath>src/main/resources/locale/locale_ru.properties</affectedPath><affectedPath>src/main/resources/locale/locale_lt_LT.properties</affectedPath><affectedPath>src/main/resources/locale/locale_zh_CN.properties</affectedPath><affectedPath>src/main/resources/locale/locale_ko.properties</affectedPath><commitId>c9a608e188598797b8347a6c599b7d979fa809ff</commitId><timestamp>1784832520000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>Remove unused Fishing.Exhausting locale entry
</comment><date>2026-07-23 11:48:40 -0700</date><id>c9a608e188598797b8347a6c599b7d979fa809ff</id><msg>Remove unused Fishing.Exhausting locale entry</msg><path><editType>edit</editType><file>src/main/resources/locale/locale_de.properties</file></path><path><editType>edit</editType><file>src/main/resources/locale/locale_en_US.properties</file></path><path><editType>edit</editType><file>src/main/resources/locale/locale_zh_TW.properties</file></path><path><editType>edit</editType><file>src/main/resources/locale/locale_es.properties</file></path><path><editType>edit</editType><file>src/main/resources/locale/locale_zh_CN.properties</file></path><path><editType>edit</editType><file>src/main/resources/locale/locale_pl.properties</file></path><path><editType>edit</editType><file>src/main/resources/locale/locale_ru.properties</file></path><path><editType>edit</editType><file>src/main/resources/locale/locale_lt_LT.properties</file></path><path><editType>edit</editType><file>src/main/resources/locale/locale_fr.properties</file></path><path><editType>edit</editType><file>src/main/resources/locale/locale_ko.properties</file></path><path><editType>edit</editType><file>src/main/resources/locale/locale_pt_BR.properties</file></path><path><editType>edit</editType><file>src/main/resources/locale/locale_ja_JP.properties</file></path><path><editType>edit</editType><file>src/main/resources/locale/locale_it.properties</file></path><path><editType>edit</editType><file>src/main/resources/locale/locale_hu_HU.properties</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>Changelog.txt</affectedPath><commitId>8102f5ad41105a51c3f32407b1f5af89baa01bca</commitId><timestamp>1784832520000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>Update changelog
</comment><date>2026-07-23 11:48:40 -0700</date><id>8102f5ad41105a51c3f32407b1f5af89baa01bca</id><msg>Update changelog</msg><path><editType>edit</editType><file>Changelog.txt</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>Changelog.txt</affectedPath><commitId>7cf0584dd7ef70fe32e484a20667a70748bfeea3</commitId><timestamp>1784832520000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>Update changelog
</comment><date>2026-07-23 11:48:40 -0700</date><id>7cf0584dd7ef70fe32e484a20667a70748bfeea3</id><msg>Update changelog</msg><path><editType>edit</editType><file>Changelog.txt</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>Changelog.txt</affectedPath><commitId>25d7c948813e79fa945f2db5f82b3c40b7dba26a</commitId><timestamp>1784832529000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>Update changelog
</comment><date>2026-07-23 11:48:49 -0700</date><id>25d7c948813e79fa945f2db5f82b3c40b7dba26a</id><msg>Update changelog</msg><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></culprit></build><build _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>350</buildNumber><marked><SHA1>0e5ebe8b72631accda6e1c82633e67e4f455182b</SHA1><branch><SHA1>0e5ebe8b72631accda6e1c82633e67e4f455182b</SHA1><name>refs/remotes/origin/master</name></branch></marked><revision><SHA1>0e5ebe8b72631accda6e1c82633e67e4f455182b</SHA1><branch><SHA1>0e5ebe8b72631accda6e1c82633e67e4f455182b</SHA1><name>refs/remotes/origin/master</name></branch></revision></refsremotesoriginmaster></buildsByBranchName><lastBuiltRevision><SHA1>0e5ebe8b72631accda6e1c82633e67e4f455182b</SHA1><branch><SHA1>0e5ebe8b72631accda6e1c82633e67e4f455182b</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><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>#350</displayName><duration>75243</duration><estimatedDuration>66335</estimatedDuration><fullDisplayName>mcMMO #350</fullDisplayName><id>350</id><inProgress>false</inProgress><keepLog>false</keepLog><number>350</number><queueId>236</queueId><result>SUCCESS</result><timestamp>1784832554654</timestamp><url>https://popicraft.net/jenkins/job/mcMMO/350/</url><builtOn>Builder</builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><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/mcMMO.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/skills/taming/TamingManager.java</affectedPath><commitId>e4631c2d6d5156759f826fde2849e3556ccb960e</commitId><timestamp>1784832313000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/github</absoluteUrl><fullName>github</fullName></author><authorEmail>noreply@github.com</authorEmail><comment>Workaround possible race condition in TamingManager (#5327)

* Workaround possible race condition in TamingManager

* Fix tests
</comment><date>2026-07-23 11:45:13 -0700</date><id>e4631c2d6d5156759f826fde2849e3556ccb960e</id><msg>Workaround possible race condition in TamingManager (#5327)</msg><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/mcMMO.java</file></path><path><editType>edit</editType><file>src/test/java/com/gmail/nossr50/skills/taming/TamingManagerTest.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/skills/taming/TamingManager.java</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/main/java/com/gmail/nossr50/listeners/WorldListener.java</affectedPath><commitId>0e5ebe8b72631accda6e1c82633e67e4f455182b</commitId><timestamp>1784832515000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/github</absoluteUrl><fullName>github</fullName></author><authorEmail>noreply@github.com</authorEmail><comment>Fix possible structure grow CME (#5326)
</comment><date>2026-07-23 11:48:35 -0700</date><id>0e5ebe8b72631accda6e1c82633e67e4f455182b</id><msg>Fix possible structure grow CME (#5326)</msg><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/listeners/WorldListener.java</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://popicraft.net/jenkins/user/github</absoluteUrl><fullName>github</fullName></culprit></build><build _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>349</buildNumber><marked><SHA1>1ae0816c9b66a40305c4cf983f80cfbb986f0e9e</SHA1><branch><SHA1>1ae0816c9b66a40305c4cf983f80cfbb986f0e9e</SHA1><name>refs/remotes/origin/master</name></branch></marked><revision><SHA1>1ae0816c9b66a40305c4cf983f80cfbb986f0e9e</SHA1><branch><SHA1>1ae0816c9b66a40305c4cf983f80cfbb986f0e9e</SHA1><name>refs/remotes/origin/master</name></branch></revision></refsremotesoriginmaster></buildsByBranchName><lastBuiltRevision><SHA1>1ae0816c9b66a40305c4cf983f80cfbb986f0e9e</SHA1><branch><SHA1>1ae0816c9b66a40305c4cf983f80cfbb986f0e9e</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><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>#349</displayName><duration>61868</duration><estimatedDuration>66335</estimatedDuration><fullDisplayName>mcMMO #349</fullDisplayName><id>349</id><inProgress>false</inProgress><keepLog>false</keepLog><number>349</number><queueId>223</queueId><result>SUCCESS</result><timestamp>1783812851334</timestamp><url>https://popicraft.net/jenkins/job/mcMMO/349/</url><builtOn>Builder</builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>pom.xml</affectedPath><affectedPath>Changelog.txt</affectedPath><commitId>1ae0816c9b66a40305c4cf983f80cfbb986f0e9e</commitId><timestamp>1783812691000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>2.3.001 snapshot time
</comment><date>2026-07-11 16:31:31 -0700</date><id>1ae0816c9b66a40305c4cf983f80cfbb986f0e9e</id><msg>2.3.001 snapshot time</msg><path><editType>edit</editType><file>pom.xml</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></culprit></build><build _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>348</buildNumber><marked><SHA1>2b855372a2856f68630a4f36866f59de95539184</SHA1><branch><SHA1>2b855372a2856f68630a4f36866f59de95539184</SHA1><name>refs/remotes/origin/master</name></branch></marked><revision><SHA1>2b855372a2856f68630a4f36866f59de95539184</SHA1><branch><SHA1>2b855372a2856f68630a4f36866f59de95539184</SHA1><name>refs/remotes/origin/master</name></branch></revision></refsremotesoriginmaster></buildsByBranchName><lastBuiltRevision><SHA1>2b855372a2856f68630a4f36866f59de95539184</SHA1><branch><SHA1>2b855372a2856f68630a4f36866f59de95539184</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><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>#348</displayName><duration>60774</duration><estimatedDuration>66335</estimatedDuration><fullDisplayName>mcMMO #348</fullDisplayName><id>348</id><inProgress>false</inProgress><keepLog>false</keepLog><number>348</number><queueId>222</queueId><result>SUCCESS</result><timestamp>1783811951281</timestamp><url>https://popicraft.net/jenkins/job/mcMMO/348/</url><builtOn>Builder</builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>pom.xml</affectedPath><commitId>2b855372a2856f68630a4f36866f59de95539184</commitId><timestamp>1783811373000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>2.3.000
</comment><date>2026-07-11 16:09:33 -0700</date><id>2b855372a2856f68630a4f36866f59de95539184</id><msg>2.3.000</msg><path><editType>edit</editType><file>pom.xml</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></culprit></build><build _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>347</buildNumber><marked><SHA1>35ec12e447cea347d11c675f2ebe6b8cf5a147d6</SHA1><branch><SHA1>35ec12e447cea347d11c675f2ebe6b8cf5a147d6</SHA1><name>refs/remotes/origin/master</name></branch></marked><revision><SHA1>35ec12e447cea347d11c675f2ebe6b8cf5a147d6</SHA1><branch><SHA1>35ec12e447cea347d11c675f2ebe6b8cf5a147d6</SHA1><name>refs/remotes/origin/master</name></branch></revision></refsremotesoriginmaster></buildsByBranchName><lastBuiltRevision><SHA1>35ec12e447cea347d11c675f2ebe6b8cf5a147d6</SHA1><branch><SHA1>35ec12e447cea347d11c675f2ebe6b8cf5a147d6</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><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>#347</displayName><duration>61290</duration><estimatedDuration>66335</estimatedDuration><fullDisplayName>mcMMO #347</fullDisplayName><id>347</id><inProgress>false</inProgress><keepLog>false</keepLog><number>347</number><queueId>221</queueId><result>SUCCESS</result><timestamp>1783811051582</timestamp><url>https://popicraft.net/jenkins/job/mcMMO/347/</url><builtOn>Builder</builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/main/java/com/gmail/nossr50/util/player/NotificationManager.java</affectedPath><affectedPath>src/test/java/com/gmail/nossr50/util/sounds/SkillUnlockSoundThrottleTest.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/util/sounds/SkillUnlockSoundThrottle.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/runnables/skills/SkillUnlockNotificationTask.java</affectedPath><affectedPath>Changelog.txt</affectedPath><affectedPath>src/test/java/com/gmail/nossr50/runnables/skills/SkillUnlockNotificationTaskTest.java</affectedPath><commitId>f7bad80ff6f947e29ab6f655f21c654791904e09</commitId><timestamp>1783796885000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>Only play the unlock sound once for batched rank unlock notifications

Mass level changes like /mmoedit all queue dozens of staggered unlock
notifications, each of which played the unlock sound. A per player
quiet window anchored on the last notification now lets the first
sound through and keeps the rest of the stream silent; the messages
themselves are unchanged. External callers of the existing
NotificationManager method keep the always-play behavior through a
new overload.
</comment><date>2026-07-11 12:08:05 -0700</date><id>f7bad80ff6f947e29ab6f655f21c654791904e09</id><msg>Only play the unlock sound once for batched rank unlock notifications</msg><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/util/player/NotificationManager.java</file></path><path><editType>add</editType><file>src/main/java/com/gmail/nossr50/util/sounds/SkillUnlockSoundThrottle.java</file></path><path><editType>edit</editType><file>Changelog.txt</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/runnables/skills/SkillUnlockNotificationTask.java</file></path><path><editType>add</editType><file>src/test/java/com/gmail/nossr50/util/sounds/SkillUnlockSoundThrottleTest.java</file></path><path><editType>add</editType><file>src/test/java/com/gmail/nossr50/runnables/skills/SkillUnlockNotificationTaskTest.java</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/test/java/com/gmail/nossr50/util/skills/SkillUnlockNotificationPacerTest.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/util/skills/RankUtils.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/listeners/SelfListener.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/util/skills/SkillUnlockNotificationPacer.java</affectedPath><commitId>615e5c8cae633c6679b32650643eeda0ff60d907</commitId><timestamp>1783810306000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>Stream skill rank unlock notifications one at a time per player
</comment><date>2026-07-11 15:51:46 -0700</date><id>615e5c8cae633c6679b32650643eeda0ff60d907</id><msg>Stream skill rank unlock notifications one at a time per player</msg><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/util/skills/RankUtils.java</file></path><path><editType>add</editType><file>src/main/java/com/gmail/nossr50/util/skills/SkillUnlockNotificationPacer.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/listeners/SelfListener.java</file></path><path><editType>add</editType><file>src/test/java/com/gmail/nossr50/util/skills/SkillUnlockNotificationPacerTest.java</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/main/java/com/gmail/nossr50/listeners/AnvilInteraction.java</affectedPath><affectedPath>src/main/resources/locale/locale_en_US.properties</affectedPath><affectedPath>src/test/java/com/gmail/nossr50/listeners/PlayerListenerSalvageInteractTest.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/listeners/PlayerListener.java</affectedPath><affectedPath>src/test/java/com/gmail/nossr50/listeners/AnvilInteractionTest.java</affectedPath><commitId>6ac5834fb775f2f2928b290b0b87b8f81c841f5e</commitId><timestamp>1783810307000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>Tell players which Salvage requirements they are missing at the salvage anvil
</comment><date>2026-07-11 15:51:47 -0700</date><id>6ac5834fb775f2f2928b290b0b87b8f81c841f5e</id><msg>Tell players which Salvage requirements they are missing at the salvage anvil</msg><path><editType>edit</editType><file>src/test/java/com/gmail/nossr50/listeners/AnvilInteractionTest.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/listeners/AnvilInteraction.java</file></path><path><editType>edit</editType><file>src/main/resources/locale/locale_en_US.properties</file></path><path><editType>edit</editType><file>src/test/java/com/gmail/nossr50/listeners/PlayerListenerSalvageInteractTest.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/listeners/PlayerListener.java</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/main/java/com/gmail/nossr50/util/blockmeta/McMMORegionBackupStore.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/mcMMO.java</affectedPath><affectedPath>src/test/java/com/gmail/nossr50/util/blockmeta/McMMORegionBackupStoreTest.java</affectedPath><commitId>d305d5254a731a3fbecf01ae569a7a713486c3cc</commitId><timestamp>1783810331000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>Announce region backups before the per-world backup log lines
</comment><date>2026-07-11 15:52:11 -0700</date><id>d305d5254a731a3fbecf01ae569a7a713486c3cc</id><msg>Announce region backups before the per-world backup log lines</msg><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/util/blockmeta/McMMORegionBackupStore.java</file></path><path><editType>edit</editType><file>src/test/java/com/gmail/nossr50/util/blockmeta/McMMORegionBackupStoreTest.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/mcMMO.java</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/main/java/com/gmail/nossr50/commands/experience/ExperienceCommand.java</affectedPath><commitId>9cae4d9de7188ca1f715c8a9fe485d3352ea4751</commitId><timestamp>1783810331000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>Fix XP command tab completion suggesting skill names for the value argument
</comment><date>2026-07-11 15:52:11 -0700</date><id>9cae4d9de7188ca1f715c8a9fe485d3352ea4751</id><msg>Fix XP command tab completion suggesting skill names for the value argument</msg><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/commands/experience/ExperienceCommand.java</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/main/resources/level_up_commands.yml</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/commands/levelup/LevelUpCommand.java</affectedPath><affectedPath>src/test/java/com/gmail/nossr50/commands/levelup/LevelUpCommandTest.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/placeholders/PapiPlaceholders.java</affectedPath><commitId>610445ef99f33fcd958e5d7ee319c384f3d7dd47</commitId><timestamp>1783810331000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>Resolve PlaceholderAPI placeholders in level up commands
</comment><date>2026-07-11 15:52:11 -0700</date><id>610445ef99f33fcd958e5d7ee319c384f3d7dd47</id><msg>Resolve PlaceholderAPI placeholders in level up commands</msg><path><editType>edit</editType><file>src/main/resources/level_up_commands.yml</file></path><path><editType>add</editType><file>src/main/java/com/gmail/nossr50/placeholders/PapiPlaceholders.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/commands/levelup/LevelUpCommand.java</file></path><path><editType>edit</editType><file>src/test/java/com/gmail/nossr50/commands/levelup/LevelUpCommandTest.java</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/main/java/com/gmail/nossr50/commands/skills/SkillCommand.java</affectedPath><affectedPath>src/test/java/com/gmail/nossr50/listeners/PlayerListenerCommandAliasTest.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/util/commands/CommandRegistrationManager.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/commands/XprateCommand.java</affectedPath><affectedPath>src/test/java/com/gmail/nossr50/util/text/TextComponentFactoryTest.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/util/text/TextComponentFactory.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/listeners/PlayerListener.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/util/scoreboards/ScoreboardManager.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/commands/skills/SkillGuideCommand.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/commands/levelup/LevelUpCommand.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/util/skills/SkillTools.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/datatypes/skills/PrimarySkillType.java</affectedPath><commitId>b3e818f78a3dfa8fa6ecd0f120fad2cf4e0ca065</commitId><timestamp>1783810349000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>Show the capitalized Overhaul.Name skill names in player messages

SkillTools.getLocalizedSkillName now reads the Overhaul.Name locale
entries; the all-caps SkillName values move behind the new
SkillTools.getHeaderBannerSkillName, which stylized headers,
scoreboards, and skill command matching keep using.
</comment><date>2026-07-11 15:52:29 -0700</date><id>b3e818f78a3dfa8fa6ecd0f120fad2cf4e0ca065</id><msg>Show the capitalized Overhaul.Name skill names in player messages</msg><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/listeners/PlayerListener.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/util/commands/CommandRegistrationManager.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/util/scoreboards/ScoreboardManager.java</file></path><path><editType>edit</editType><file>src/test/java/com/gmail/nossr50/util/text/TextComponentFactoryTest.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/commands/skills/SkillCommand.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/commands/XprateCommand.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/commands/skills/SkillGuideCommand.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/datatypes/skills/PrimarySkillType.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/util/skills/SkillTools.java</file></path><path><editType>edit</editType><file>src/test/java/com/gmail/nossr50/listeners/PlayerListenerCommandAliasTest.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/commands/levelup/LevelUpCommand.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/util/text/TextComponentFactory.java</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/main/resources/locale/locale_cy.properties</affectedPath><affectedPath>src/main/resources/locale/locale_zh_TW.properties</affectedPath><affectedPath>src/main/resources/locale/locale_pt_BR.properties</affectedPath><affectedPath>src/main/resources/locale/locale_ja_JP.properties</affectedPath><affectedPath>src/main/resources/locale/locale_fr.properties</affectedPath><affectedPath>src/main/resources/locale/locale_cs_CZ.properties</affectedPath><affectedPath>src/main/resources/locale/locale_pl.properties</affectedPath><affectedPath>src/main/resources/locale/locale_en_US.properties</affectedPath><affectedPath>src/main/resources/locale/locale_hu_HU.properties</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/skills/herbalism/HerbalismManager.java</affectedPath><affectedPath>src/main/resources/locale/locale_es.properties</affectedPath><affectedPath>src/main/resources/locale/locale_fi.properties</affectedPath><affectedPath>src/main/resources/locale/locale_it.properties</affectedPath><affectedPath>src/main/resources/locale/locale_de.properties</affectedPath><affectedPath>src/main/resources/locale/locale_ru.properties</affectedPath><affectedPath>src/main/resources/locale/locale_lt_LT.properties</affectedPath><affectedPath>src/main/resources/locale/locale_zh_CN.properties</affectedPath><affectedPath>src/main/resources/locale/locale_ko.properties</affectedPath><affectedPath>src/main/resources/locale/locale_th_TH.properties</affectedPath><affectedPath>src/main/resources/locale/locale_sv.properties</affectedPath><affectedPath>src/main/resources/locale/locale_nl.properties</affectedPath><affectedPath>src/main/resources/locale/locale_da.properties</affectedPath><commitId>8fa961000e1093a19f6476fb20bc4f45997451b4</commitId><timestamp>1783810366000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>Remove the Hylian Luck message and dead locale entries from shipped locales
</comment><date>2026-07-11 15:52:46 -0700</date><id>8fa961000e1093a19f6476fb20bc4f45997451b4</id><msg>Remove the Hylian Luck message and dead locale entries from shipped locales</msg><path><editType>edit</editType><file>src/main/resources/locale/locale_sv.properties</file></path><path><editType>edit</editType><file>src/main/resources/locale/locale_th_TH.properties</file></path><path><editType>edit</editType><file>src/main/resources/locale/locale_pt_BR.properties</file></path><path><editType>edit</editType><file>src/main/resources/locale/locale_cs_CZ.properties</file></path><path><editType>edit</editType><file>src/main/resources/locale/locale_cy.properties</file></path><path><editType>edit</editType><file>src/main/resources/locale/locale_ru.properties</file></path><path><editType>edit</editType><file>src/main/resources/locale/locale_de.properties</file></path><path><editType>edit</editType><file>src/main/resources/locale/locale_pl.properties</file></path><path><editType>edit</editType><file>src/main/resources/locale/locale_zh_TW.properties</file></path><path><editType>edit</editType><file>src/main/resources/locale/locale_hu_HU.properties</file></path><path><editType>edit</editType><file>src/main/resources/locale/locale_lt_LT.properties</file></path><path><editType>edit</editType><file>src/main/resources/locale/locale_ko.properties</file></path><path><editType>edit</editType><file>src/main/resources/locale/locale_nl.properties</file></path><path><editType>edit</editType><file>src/main/resources/locale/locale_ja_JP.properties</file></path><path><editType>edit</editType><file>src/main/resources/locale/locale_zh_CN.properties</file></path><path><editType>edit</editType><file>src/main/resources/locale/locale_fr.properties</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/skills/herbalism/HerbalismManager.java</file></path><path><editType>edit</editType><file>src/main/resources/locale/locale_en_US.properties</file></path><path><editType>edit</editType><file>src/main/resources/locale/locale_da.properties</file></path><path><editType>edit</editType><file>src/main/resources/locale/locale_it.properties</file></path><path><editType>edit</editType><file>src/main/resources/locale/locale_es.properties</file></path><path><editType>edit</editType><file>src/main/resources/locale/locale_fi.properties</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/main/java/com/gmail/nossr50/placeholders/SkillNamePlaceholder.java</affectedPath><affectedPath>src/test/java/com/gmail/nossr50/placeholders/PapiExpansionRoutingTest.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/placeholders/PapiExpansion.java</affectedPath><commitId>0c8337ba930637cb88a27dc79aff592b4b3fe5d3</commitId><timestamp>1783810366000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>Add PlaceholderAPI placeholders for localized skill names
</comment><date>2026-07-11 15:52:46 -0700</date><id>0c8337ba930637cb88a27dc79aff592b4b3fe5d3</id><msg>Add PlaceholderAPI placeholders for localized skill names</msg><path><editType>add</editType><file>src/main/java/com/gmail/nossr50/placeholders/SkillNamePlaceholder.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/placeholders/PapiExpansion.java</file></path><path><editType>edit</editType><file>src/test/java/com/gmail/nossr50/placeholders/PapiExpansionRoutingTest.java</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>Changelog.txt</affectedPath><commitId>35ec12e447cea347d11c675f2ebe6b8cf5a147d6</commitId><timestamp>1783810366000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>Update changelog
</comment><date>2026-07-11 15:52:46 -0700</date><id>35ec12e447cea347d11c675f2ebe6b8cf5a147d6</id><msg>Update changelog</msg><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></culprit></build><build _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>346</buildNumber><marked><SHA1>0f931539b3c1d5b83c1ad85e45801b361818e438</SHA1><branch><SHA1>0f931539b3c1d5b83c1ad85e45801b361818e438</SHA1><name>refs/remotes/origin/master</name></branch></marked><revision><SHA1>0f931539b3c1d5b83c1ad85e45801b361818e438</SHA1><branch><SHA1>0f931539b3c1d5b83c1ad85e45801b361818e438</SHA1><name>refs/remotes/origin/master</name></branch></revision></refsremotesoriginmaster></buildsByBranchName><lastBuiltRevision><SHA1>0f931539b3c1d5b83c1ad85e45801b361818e438</SHA1><branch><SHA1>0f931539b3c1d5b83c1ad85e45801b361818e438</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><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>#346</displayName><duration>171120</duration><estimatedDuration>66335</estimatedDuration><fullDisplayName>mcMMO #346</fullDisplayName><id>346</id><inProgress>false</inProgress><keepLog>false</keepLog><number>346</number><queueId>220</queueId><result>SUCCESS</result><timestamp>1783756151338</timestamp><url>https://popicraft.net/jenkins/job/mcMMO/346/</url><builtOn>Builder</builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/main/java/com/gmail/nossr50/commands/levelup/RegistrationSource.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/commands/levelup/LevelUpCommandBuilder.java</affectedPath><affectedPath>src/test/java/com/gmail/nossr50/config/CommandOnLevelUpConfigTest.java</affectedPath><affectedPath>src/test/java/com/gmail/nossr50/util/TestPlayerMock.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/commands/levelup/LevelUpAction.java</affectedPath><affectedPath>src/main/resources/level_up_commands.yml</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/util/experience/FormulaManager.java</affectedPath><affectedPath>src/test/java/com/gmail/nossr50/commands/levelup/LevelUpConditionTest.java</affectedPath><affectedPath>Changelog.txt</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/commands/levelup/LevelUpHandler.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/config/experience/ExperienceConfig.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/mcMMO.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/commands/levelup/LevelUpCondition.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/listeners/SelfListener.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/commands/levelup/LevelUpCommandManager.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/config/CommandOnLevelUpConfig.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/commands/levelup/LevelUpCommand.java</affectedPath><affectedPath>src/test/java/com/gmail/nossr50/MMOTestEnvironment.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/util/skills/SkillTools.java</affectedPath><affectedPath>src/test/java/com/gmail/nossr50/commands/levelup/LevelUpCommandTest.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/api/LevelUpCommandAPI.java</affectedPath><commitId>0f931539b3c1d5b83c1ad85e45801b361818e438</commitId><timestamp>1783755610000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/github</absoluteUrl><fullName>github</fullName></author><authorEmail>noreply@github.com</authorEmail><comment>Add support for running commands when players level up (#4916)

Server owners can configure commands in the new level_up_commands.yml file with skill level or power level triggers, and other plugins can register commands or callbacks through LevelUpCommandAPI.
</comment><date>2026-07-11 00:40:10 -0700</date><id>0f931539b3c1d5b83c1ad85e45801b361818e438</id><msg>Add support for running commands when players level up (#4916)</msg><path><editType>add</editType><file>src/main/java/com/gmail/nossr50/commands/levelup/LevelUpCommand.java</file></path><path><editType>add</editType><file>src/main/java/com/gmail/nossr50/config/CommandOnLevelUpConfig.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/mcMMO.java</file></path><path><editType>edit</editType><file>src/test/java/com/gmail/nossr50/MMOTestEnvironment.java</file></path><path><editType>add</editType><file>src/test/java/com/gmail/nossr50/commands/levelup/LevelUpCommandTest.java</file></path><path><editType>add</editType><file>src/main/java/com/gmail/nossr50/api/LevelUpCommandAPI.java</file></path><path><editType>add</editType><file>src/test/java/com/gmail/nossr50/util/TestPlayerMock.java</file></path><path><editType>add</editType><file>src/main/java/com/gmail/nossr50/commands/levelup/LevelUpCommandManager.java</file></path><path><editType>edit</editType><file>Changelog.txt</file></path><path><editType>add</editType><file>src/main/java/com/gmail/nossr50/commands/levelup/LevelUpCondition.java</file></path><path><editType>add</editType><file>src/main/java/com/gmail/nossr50/commands/levelup/LevelUpHandler.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/listeners/SelfListener.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/util/experience/FormulaManager.java</file></path><path><editType>add</editType><file>src/main/java/com/gmail/nossr50/commands/levelup/LevelUpAction.java</file></path><path><editType>add</editType><file>src/main/java/com/gmail/nossr50/commands/levelup/RegistrationSource.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/util/skills/SkillTools.java</file></path><path><editType>add</editType><file>src/test/java/com/gmail/nossr50/commands/levelup/LevelUpConditionTest.java</file></path><path><editType>add</editType><file>src/main/java/com/gmail/nossr50/commands/levelup/LevelUpCommandBuilder.java</file></path><path><editType>add</editType><file>src/main/resources/level_up_commands.yml</file></path><path><editType>add</editType><file>src/test/java/com/gmail/nossr50/config/CommandOnLevelUpConfigTest.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/config/experience/ExperienceConfig.java</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://popicraft.net/jenkins/user/github</absoluteUrl><fullName>github</fullName></culprit></build><build _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>345</buildNumber><marked><SHA1>df4cdce38ca8641eb3add62c2ab973f9ad0e253a</SHA1><branch><SHA1>df4cdce38ca8641eb3add62c2ab973f9ad0e253a</SHA1><name>refs/remotes/origin/master</name></branch></marked><revision><SHA1>df4cdce38ca8641eb3add62c2ab973f9ad0e253a</SHA1><branch><SHA1>df4cdce38ca8641eb3add62c2ab973f9ad0e253a</SHA1><name>refs/remotes/origin/master</name></branch></revision></refsremotesoriginmaster></buildsByBranchName><lastBuiltRevision><SHA1>df4cdce38ca8641eb3add62c2ab973f9ad0e253a</SHA1><branch><SHA1>df4cdce38ca8641eb3add62c2ab973f9ad0e253a</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><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>#345</displayName><duration>170624</duration><estimatedDuration>66335</estimatedDuration><fullDisplayName>mcMMO #345</fullDisplayName><id>345</id><inProgress>false</inProgress><keepLog>false</keepLog><number>345</number><queueId>219</queueId><result>SUCCESS</result><timestamp>1783754351147</timestamp><url>https://popicraft.net/jenkins/job/mcMMO/345/</url><builtOn>Builder</builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/main/java/com/gmail/nossr50/listeners/BlockListener.java</affectedPath><affectedPath>src/test/java/com/gmail/nossr50/listeners/BlockListenerBonusDropsTest.java</affectedPath><affectedPath>Changelog.txt</affectedPath><commitId>5a1a61caa94dc9aa4446a955e0e8c904efc1e76a</commitId><timestamp>1783748147000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>Fix Herbalism double drops not working on beetroots

At BlockDropItemEvent time the broken block already reads as AIR, so
deciding the beetroot drop tolerance from the live block type never
matched BEETROOTS and the two legitimate beetroot drop materials
tripped the tile-entity dupe heuristic. Read the type from the event's
captured pre-break BlockState instead.
</comment><date>2026-07-10 22:35:47 -0700</date><id>5a1a61caa94dc9aa4446a955e0e8c904efc1e76a</id><msg>Fix Herbalism double drops not working on beetroots</msg><path><editType>edit</editType><file>Changelog.txt</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/listeners/BlockListener.java</file></path><path><editType>add</editType><file>src/test/java/com/gmail/nossr50/listeners/BlockListenerBonusDropsTest.java</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/test/java/com/gmail/nossr50/listeners/EntityListenerTest.java</affectedPath><affectedPath>Changelog.txt</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/listeners/EntityListener.java</affectedPath><commitId>808bc5577be1a2c70328742570c7c04c1d9e66c3</commitId><timestamp>1783748411000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>Fix error when a pet owned by a non-player deals damage

Tameable owners resolved in the damage handler are AnimalTamers and
not necessarily players; the unchecked OfflinePlayer cast crashed the
handler for plugin-provided owners. The tame handler fixed the same
bug class earlier; this brings the damage path in line.
</comment><date>2026-07-10 22:40:11 -0700</date><id>808bc5577be1a2c70328742570c7c04c1d9e66c3</id><msg>Fix error when a pet owned by a non-player deals damage</msg><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/listeners/EntityListener.java</file></path><path><editType>edit</editType><file>Changelog.txt</file></path><path><editType>edit</editType><file>src/test/java/com/gmail/nossr50/listeners/EntityListenerTest.java</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/main/java/com/gmail/nossr50/listeners/InventoryListener.java</affectedPath><affectedPath>Changelog.txt</affectedPath><affectedPath>src/test/java/com/gmail/nossr50/listeners/InventoryListenerClickTest.java</affectedPath><commitId>cc7442bbcc595472e468dbcaf2d6552609fe7302</commitId><timestamp>1783748598000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>Fix error when non-players click or drag in furnace and brewing inventories

InventoryClickEvent and InventoryDragEvent report the viewer as a
HumanEntity, and plugins can open container inventories for
human-shaped entities that are not players. The click and drag
handlers cast the viewer to Player unchecked and crashed on such
viewers; they now ignore non-player viewers.
</comment><date>2026-07-10 22:43:18 -0700</date><id>cc7442bbcc595472e468dbcaf2d6552609fe7302</id><msg>Fix error when non-players click or drag in furnace and brewing inventories</msg><path><editType>edit</editType><file>Changelog.txt</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/listeners/InventoryListener.java</file></path><path><editType>add</editType><file>src/test/java/com/gmail/nossr50/listeners/InventoryListenerClickTest.java</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/main/java/com/gmail/nossr50/listeners/PlayerListener.java</affectedPath><affectedPath>src/test/java/com/gmail/nossr50/listeners/PlayerListenerCommandAliasTest.java</affectedPath><affectedPath>Changelog.txt</affectedPath><commitId>7f3f5b41bc61ace7361929bbc338d45d725b8b60</commitId><timestamp>1783748841000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>Fix localized skill commands rewriting arguments that repeat the skill name

The alias rewrite replaced every occurrence of the alias text in the
command message, so arguments that repeated the alias (player names,
search terms) were rewritten along with the command token. Only the
leading command token is rewritten now.
</comment><date>2026-07-10 22:47:21 -0700</date><id>7f3f5b41bc61ace7361929bbc338d45d725b8b60</id><msg>Fix localized skill commands rewriting arguments that repeat the skill name</msg><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/listeners/PlayerListener.java</file></path><path><editType>edit</editType><file>Changelog.txt</file></path><path><editType>edit</editType><file>src/test/java/com/gmail/nossr50/listeners/PlayerListenerCommandAliasTest.java</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/main/java/com/gmail/nossr50/listeners/PlayerListener.java</affectedPath><affectedPath>src/test/java/com/gmail/nossr50/listeners/PlayerListenerFishingTest.java</affectedPath><affectedPath>Changelog.txt</affectedPath><commitId>4d2b088f4a4efe8316c2d7718378ede358d040e4</commitId><timestamp>1783748881000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>Fix error when a plugin-fired fish catch carries a non-item entity

CAUGHT_FISH normally carries an Item, but the event does not enforce
the caught entity's type; the HIGH-priority handler cast it unchecked
and crashed on plugin-fired events with other entity types.
</comment><date>2026-07-10 22:48:01 -0700</date><id>4d2b088f4a4efe8316c2d7718378ede358d040e4</id><msg>Fix error when a plugin-fired fish catch carries a non-item entity</msg><path><editType>edit</editType><file>Changelog.txt</file></path><path><editType>edit</editType><file>src/test/java/com/gmail/nossr50/listeners/PlayerListenerFishingTest.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/listeners/PlayerListener.java</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/test/java/com/gmail/nossr50/listeners/EntityListenerTest.java</affectedPath><affectedPath>Changelog.txt</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/listeners/EntityListener.java</affectedPath><commitId>81f5c55ca02d8c9d3c11bcf6b0f35bd5dea58672</commitId><timestamp>1783749004000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>Fix splash saturation potions losing particle and icon visibility

The saturation splash workaround re-added the effect with the short
PotionEffect constructor, which resets particle and icon visibility to
the defaults; custom potions brewed to hide their particles started
showing them after the splash.
</comment><date>2026-07-10 22:50:04 -0700</date><id>81f5c55ca02d8c9d3c11bcf6b0f35bd5dea58672</id><msg>Fix splash saturation potions losing particle and icon visibility</msg><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/listeners/EntityListener.java</file></path><path><editType>edit</editType><file>Changelog.txt</file></path><path><editType>edit</editType><file>src/test/java/com/gmail/nossr50/listeners/EntityListenerTest.java</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/main/java/com/gmail/nossr50/listeners/BlockListener.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/listeners/EntityListener.java</affectedPath><commitId>1cad900859c47d0f8c1522d60f642164dfcfabba</commitId><timestamp>1783749123000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>Clean up listener debug reporting and stale comments

Extract the duplicated PvP combat debug report in EntityListener into
a shared helper, correct the entity explode handler name, and fix two
comments that no longer matched the code (traveling-block cleanup
timer cadence, piston retract direction).
</comment><date>2026-07-10 22:52:03 -0700</date><id>1cad900859c47d0f8c1522d60f642164dfcfabba</id><msg>Clean up listener debug reporting and stale comments</msg><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/listeners/BlockListener.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/listeners/EntityListener.java</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/main/java/com/gmail/nossr50/listeners/InventoryListener.java</affectedPath><affectedPath>Changelog.txt</affectedPath><commitId>8fa27d38cc80ca3414915477dcd47e70d5416faf</commitId><timestamp>1783749192000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>Move buff-stripping inventory handlers off MONITOR priority

The inventory click and open handlers strip ability buffs from item
stacks, which mutates item state; the MONITOR contract forbids that.
They now run at HIGHEST like the other mutating handlers moved during
the listener priority cleanup.
</comment><date>2026-07-10 22:53:12 -0700</date><id>8fa27d38cc80ca3414915477dcd47e70d5416faf</id><msg>Move buff-stripping inventory handlers off MONITOR priority</msg><path><editType>edit</editType><file>Changelog.txt</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/listeners/InventoryListener.java</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/test/java/com/gmail/nossr50/listeners/WorldListenerTest.java</affectedPath><commitId>effda0dd6f8025bba8a67cb74fa74723385b090a</commitId><timestamp>1783749419000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>Add WorldListener coverage for growth eligibility and unload flushes
</comment><date>2026-07-10 22:56:59 -0700</date><id>effda0dd6f8025bba8a67cb74fa74723385b090a</id><msg>Add WorldListener coverage for growth eligibility and unload flushes</msg><path><editType>add</editType><file>src/test/java/com/gmail/nossr50/listeners/WorldListenerTest.java</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/main/java/com/gmail/nossr50/datatypes/player/PlayerProfile.java</affectedPath><affectedPath>Changelog.txt</affectedPath><affectedPath>src/test/java/com/gmail/nossr50/datatypes/player/PlayerProfileTest.java</affectedPath><commitId>7ea3d91ff368a556f0e05c85db46f3a81157ae70</commitId><timestamp>1783749968000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>Fix error when adding levels to a child skill through the API

Child skills have no level entry of their own, so the read-then-modify
in PlayerProfile#addLevels crashed on the missing entry before the
child guard in modifySkill could run. Added levels now split evenly
across the child's parent skills, matching how child skill XP and the
offline ExperienceAPI level variants already behave. The addlevels
command rejects child skills up front, so only API callers were
affected.
</comment><date>2026-07-10 23:06:08 -0700</date><id>7ea3d91ff368a556f0e05c85db46f3a81157ae70</id><msg>Fix error when adding levels to a child skill through the API</msg><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/datatypes/player/PlayerProfile.java</file></path><path><editType>edit</editType><file>Changelog.txt</file></path><path><editType>add</editType><file>src/test/java/com/gmail/nossr50/datatypes/player/PlayerProfileTest.java</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/main/java/com/gmail/nossr50/datatypes/player/PlayerProfile.java</affectedPath><affectedPath>Changelog.txt</affectedPath><affectedPath>src/test/java/com/gmail/nossr50/datatypes/player/PlayerProfileTest.java</affectedPath><commitId>e76d62cb5a8f78c7c4951f123cb936e03e561d4c</commitId><timestamp>1783750036000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>Fix error reading XP requirements for offline players with the cumulative curve

With 'Experience_Formula.Cumulative_Curve' enabled, PlayerProfile
resolved the power level through UserManager, which has no entry for
offline-loaded profiles (offline /inspect, ExperienceAPI offline
lookups) and crashed. The profile's own level sum now stands in when
no online player is found; permission-aware filtering is impossible
offline anyway. Also corrects the stale getLastLogin javadoc.
</comment><date>2026-07-10 23:07:16 -0700</date><id>e76d62cb5a8f78c7c4951f123cb936e03e561d4c</id><msg>Fix error reading XP requirements for offline players with the cumulative curve</msg><path><editType>edit</editType><file>src/test/java/com/gmail/nossr50/datatypes/player/PlayerProfileTest.java</file></path><path><editType>edit</editType><file>Changelog.txt</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/datatypes/player/PlayerProfile.java</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/main/java/com/gmail/nossr50/datatypes/player/McMMOPlayer.java</affectedPath><commitId>49ff833b9c475cbd3cd6d8ee6a77ac7cc278648c</commitId><timestamp>1783750154000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>Clean up McMMOPlayer XP gain and logout paths

Compute the modified XP once in beginUnsharedXpGain instead of running
the permission-heavy perk modifier twice per gain (which also sent the
XP perk debug report to debug-mode players twice), and reuse the local
player reference in logout instead of re-reading a field that is never
null.
</comment><date>2026-07-10 23:09:14 -0700</date><id>49ff833b9c475cbd3cd6d8ee6a77ac7cc278648c</id><msg>Clean up McMMOPlayer XP gain and logout paths</msg><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/datatypes/player/McMMOPlayer.java</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/test/java/com/gmail/nossr50/datatypes/player/PlayerProfileTest.java</affectedPath><commitId>cdc0f61d89a8338cae8bd7702a03123907a1e239</commitId><timestamp>1783750354000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>Add PlayerProfile coverage for save retries and child-skill data handling
</comment><date>2026-07-10 23:12:34 -0700</date><id>cdc0f61d89a8338cae8bd7702a03123907a1e239</id><msg>Add PlayerProfile coverage for save retries and child-skill data handling</msg><path><editType>edit</editType><file>src/test/java/com/gmail/nossr50/datatypes/player/PlayerProfileTest.java</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/main/java/com/gmail/nossr50/datatypes/player/PlayerProfile.java</affectedPath><affectedPath>Changelog.txt</affectedPath><affectedPath>src/test/java/com/gmail/nossr50/datatypes/player/PlayerProfileTest.java</affectedPath><commitId>43a5f944b494fa9f7809b7731ebdd665e53fca9b</commitId><timestamp>1783751158000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>Fix error when another plugin reads raw XP for a child skill

Child skills store no XP entry of their own, so the raw XP read
crashed on the missing entry. Zero is returned instead, matching
getSkillXpLevel. In-repo callers filter child skills first; only
plugins calling the profile API directly were affected.
</comment><date>2026-07-10 23:25:58 -0700</date><id>43a5f944b494fa9f7809b7731ebdd665e53fca9b</id><msg>Fix error when another plugin reads raw XP for a child skill</msg><path><editType>edit</editType><file>src/test/java/com/gmail/nossr50/datatypes/player/PlayerProfileTest.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/datatypes/player/PlayerProfile.java</file></path><path><editType>edit</editType><file>Changelog.txt</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/main/java/com/gmail/nossr50/datatypes/player/PlayerProfile.java</affectedPath><affectedPath>Changelog.txt</affectedPath><affectedPath>src/test/java/com/gmail/nossr50/datatypes/player/PlayerProfileTest.java</affectedPath><commitId>b249b4dfcb9b92074c71d06afc42042402bda0fa</commitId><timestamp>1783751213000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>Fix player data changes made during an in-flight save being lost

The dirty flag was overwritten unconditionally once the database
returned, so a change that landed while the async save was writing its
copy was marked clean and skipped by later saves until the next
unrelated change. The flag is now cleared before the copy is taken and
only restored on failure, so concurrent changes re-mark the profile
dirty and the next save picks them up. Answers the old TODO about
synchronizing the copy: value races during the copy self-heal through
the dirty flag, so no lock is needed.
</comment><date>2026-07-10 23:26:53 -0700</date><id>b249b4dfcb9b92074c71d06afc42042402bda0fa</id><msg>Fix player data changes made during an in-flight save being lost</msg><path><editType>edit</editType><file>Changelog.txt</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/datatypes/player/PlayerProfile.java</file></path><path><editType>edit</editType><file>src/test/java/com/gmail/nossr50/datatypes/player/PlayerProfileTest.java</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/main/java/com/gmail/nossr50/datatypes/player/PlayerProfile.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/datatypes/player/McMMOPlayer.java</affectedPath><affectedPath>Changelog.txt</affectedPath><commitId>ce2ae27ae198588b42ef5f42c5e9fd3b3d96fca4</commitId><timestamp>1783751249000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>Deprecate the misspelled PlayerProfile Chimaera Wing cooldown getter

getChimaerWingDATS is missing a letter; getChimaeraWingDATS replaces
it and the old name delegates until removal.
</comment><date>2026-07-10 23:27:29 -0700</date><id>ce2ae27ae198588b42ef5f42c5e9fd3b3d96fca4</id><msg>Deprecate the misspelled PlayerProfile Chimaera Wing cooldown getter</msg><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/datatypes/player/McMMOPlayer.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/datatypes/player/PlayerProfile.java</file></path><path><editType>edit</editType><file>Changelog.txt</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/test/java/com/gmail/nossr50/util/skills/SkillToolsTest.java</affectedPath><affectedPath>Changelog.txt</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/util/skills/SkillTools.java</affectedPath><commitId>2b85a6fc726b00f53c0814fa289cdb0707cba6ef</commitId><timestamp>1783752481000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>Stop console spam when other plugins check skill names through the API

Unmatched skill name lookups logged an 'Invalid mcMMO skill' warning on
every call, so plugins validating names through ExperienceAPI flooded the
console. The message is now debug output shown only with Verbose_Logging.
</comment><date>2026-07-10 23:48:01 -0700</date><id>2b85a6fc726b00f53c0814fa289cdb0707cba6ef</id><msg>Stop console spam when other plugins check skill names through the API</msg><path><editType>edit</editType><file>Changelog.txt</file></path><path><editType>edit</editType><file>src/test/java/com/gmail/nossr50/util/skills/SkillToolsTest.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/util/skills/SkillTools.java</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/main/java/com/gmail/nossr50/commands/experience/ExperienceCommand.java</affectedPath><affectedPath>Changelog.txt</affectedPath><affectedPath>src/test/java/com/gmail/nossr50/commands/experience/AddxpCommandTest.java</affectedPath><commitId>bb6a395fc67638db93cffa4b056270eaf7cbcda9</commitId><timestamp>1783753760000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>Make the -s flag on XP commands silence the sender confirmation too

/addxp, /addlevels, and /mmoedit echoed 'has been modified' back to the
sender even with -s, flooding the log for plugins that award XP by
dispatching these commands from console.
</comment><date>2026-07-11 00:09:20 -0700</date><id>bb6a395fc67638db93cffa4b056270eaf7cbcda9</id><msg>Make the -s flag on XP commands silence the sender confirmation too</msg><path><editType>add</editType><file>src/test/java/com/gmail/nossr50/commands/experience/AddxpCommandTest.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/commands/experience/ExperienceCommand.java</file></path><path><editType>edit</editType><file>Changelog.txt</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/test/java/com/gmail/nossr50/datatypes/player/McMMOPlayerAddXpAndLevelsTest.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/datatypes/player/McMMOPlayer.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/util/EventUtils.java</affectedPath><affectedPath>Changelog.txt</affectedPath><commitId>df4cdce38ca8641eb3add62c2ab973f9ad0e253a</commitId><timestamp>1783753789000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>Route McMMOPlayer addXp and addLevels through level up processing

Both wrote raw values into the profile, so plugins using them left
skills over their XP threshold with no level ups, events, or XP bar
updates. addXp now runs the normal XP gain path with the amount
unmodified, and addLevels fires the level change events like the
addlevels command. Internal callers that revert cancelled events or
apply vampirism gains keep raw writes via the profile.
</comment><date>2026-07-11 00:09:49 -0700</date><id>df4cdce38ca8641eb3add62c2ab973f9ad0e253a</id><msg>Route McMMOPlayer addXp and addLevels through level up processing</msg><path><editType>add</editType><file>src/test/java/com/gmail/nossr50/datatypes/player/McMMOPlayerAddXpAndLevelsTest.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/util/EventUtils.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/datatypes/player/McMMOPlayer.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></culprit></build><build _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>344</buildNumber><marked><SHA1>f6a6b90211746758c351c341db7c31f21e1bbcd7</SHA1><branch><SHA1>f6a6b90211746758c351c341db7c31f21e1bbcd7</SHA1><name>refs/remotes/origin/master</name></branch></marked><revision><SHA1>f6a6b90211746758c351c341db7c31f21e1bbcd7</SHA1><branch><SHA1>f6a6b90211746758c351c341db7c31f21e1bbcd7</SHA1><name>refs/remotes/origin/master</name></branch></revision></refsremotesoriginmaster></buildsByBranchName><lastBuiltRevision><SHA1>f6a6b90211746758c351c341db7c31f21e1bbcd7</SHA1><branch><SHA1>f6a6b90211746758c351c341db7c31f21e1bbcd7</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><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>#344</displayName><duration>64103</duration><estimatedDuration>66335</estimatedDuration><fullDisplayName>mcMMO #344</fullDisplayName><id>344</id><inProgress>false</inProgress><keepLog>false</keepLog><number>344</number><queueId>217</queueId><result>SUCCESS</result><timestamp>1783742649902</timestamp><url>https://popicraft.net/jenkins/job/mcMMO/344/</url><builtOn>Builder</builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/test/java/com/gmail/nossr50/TestRegistryBootstrap.java</affectedPath><commitId>d96637f38a29f099b77b2b4ba2da7a8ac681a066</commitId><timestamp>1783741958000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>Fail fast when the registry bootstrap lookup pipeline is broken

The CI-only registry failure surfaces as NoClassDefFoundError in
every test after the first bootstrap, far away from the actual
break. Verify the pipeline right after Registry initializes: check
that Registry.EFFECT resolved through the bootstrap answer and that
a lookup on it mints a non-null instance, and throw a descriptive
IllegalStateException at the exact broken link instead of letting a
registry-backed class initializer read null and poison its class
for the whole JVM.
</comment><date>2026-07-10 20:52:38 -0700</date><id>d96637f38a29f099b77b2b4ba2da7a8ac681a066</id><msg>Fail fast when the registry bootstrap lookup pipeline is broken</msg><path><editType>edit</editType><file>src/test/java/com/gmail/nossr50/TestRegistryBootstrap.java</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/test/java/com/gmail/nossr50/MMOTestEnvironment.java</affectedPath><affectedPath>src/test/java/com/gmail/nossr50/util/sounds/SoundManagerTest.java</affectedPath><commitId>f6a6b90211746758c351c341db7c31f21e1bbcd7</commitId><timestamp>1783742462000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>Fix test-order-dependent poisoning of Bukkit registry constants

SoundManagerTest answered Bukkit.getRegistry with bare Registry
mocks whose lookups return null. Whichever test first triggers
org.bukkit.Registry initialization welds its lookup results into
the Registry constants for the rest of the JVM, so when that test
ran before any TestRegistryBootstrap user (the CI runner listed the
util package before the skills package; Windows lists it after,
which is why this never reproduced locally), PotionEffectType read
a null lookup during its own initialization and 108 later tests
died with NoClassDefFoundError.

SoundManagerTest now serves registry lookups through
TestRegistryBootstrap, and MMOTestEnvironment bootstraps for every
harness test so no test ordering can initialize the registry
constants without the minting answer in place. Reproduced with
-Dsurefire.runOrder=reversealphabetical and verified green in both
orders on JDK 17 and JDK 25.
</comment><date>2026-07-10 21:01:02 -0700</date><id>f6a6b90211746758c351c341db7c31f21e1bbcd7</id><msg>Fix test-order-dependent poisoning of Bukkit registry constants</msg><path><editType>edit</editType><file>src/test/java/com/gmail/nossr50/MMOTestEnvironment.java</file></path><path><editType>edit</editType><file>src/test/java/com/gmail/nossr50/util/sounds/SoundManagerTest.java</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></culprit></build><build _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>343</buildNumber><marked><SHA1>0d7e08f00bfff4790a205caf1d14eb36286c24c8</SHA1><branch><SHA1>0d7e08f00bfff4790a205caf1d14eb36286c24c8</SHA1><name>refs/remotes/origin/master</name></branch></marked><revision><SHA1>0d7e08f00bfff4790a205caf1d14eb36286c24c8</SHA1><branch><SHA1>0d7e08f00bfff4790a205caf1d14eb36286c24c8</SHA1><name>refs/remotes/origin/master</name></branch></revision></refsremotesoriginmaster></buildsByBranchName><lastBuiltRevision><SHA1>0d7e08f00bfff4790a205caf1d14eb36286c24c8</SHA1><branch><SHA1>0d7e08f00bfff4790a205caf1d14eb36286c24c8</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>#343</displayName><duration>50574</duration><estimatedDuration>66335</estimatedDuration><fullDisplayName>mcMMO #343</fullDisplayName><id>343</id><inProgress>false</inProgress><keepLog>false</keepLog><number>343</number><queueId>216</queueId><result>FAILURE</result><timestamp>1783741749806</timestamp><url>https://popicraft.net/jenkins/job/mcMMO/343/</url><builtOn>Builder</builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/test/java/com/gmail/nossr50/TestRegistryBootstrap.java</affectedPath><commitId>0d7e08f00bfff4790a205caf1d14eb36286c24c8</commitId><timestamp>1783741267000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>Fix registry bootstrap stubbing failing under CI test ordering

The per-type registry mock minted its lookups through a when() stub
registered inside the Bukkit.getRegistry interception, which runs in
the middle of Registry class initialization. Mockito stubbing state
is thread-local and unreliable while an intercepted invocation is
being answered: on the CI runner the stub silently failed to bind,
lookups returned null, and PotionEffectType class init failed with
"No PotionEffectType found for minecraft:speed", poisoning the class
for the JVM and erroring 108 tests. Locally a different test order
made another class perform the first bootstrap, where the nested
stubbing happened to bind.

The minting now lives in the mock's default answer, baked in at
creation with no stubbing machinery involved, and also covers
getOrThrow for newer API versions. Explicit per-key when() stubs from
test bodies still override the default answer.
</comment><date>2026-07-10 20:41:07 -0700</date><id>0d7e08f00bfff4790a205caf1d14eb36286c24c8</id><msg>Fix registry bootstrap stubbing failing under CI test ordering</msg><path><editType>edit</editType><file>src/test/java/com/gmail/nossr50/TestRegistryBootstrap.java</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></culprit></build><build _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>66335</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/skills/alchemy/AlchemyManagerTest.java</affectedPath><affectedPath>src/test/java/com/gmail/nossr50/datatypes/skills/alchemy/PotionStageTest.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>edit</editType><file>src/main/java/com/gmail/nossr50/skills/alchemy/AlchemyManager.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/listeners/InventoryListenerBrewTest.java</file></path><path><editType>add</editType><file>src/test/java/com/gmail/nossr50/skills/alchemy/AlchemyPotionBrewerTest.java</file></path><path><editType>add</editType><file>src/test/java/com/gmail/nossr50/skills/alchemy/AlchemyManagerTest.java</file></path><path><editType>add</editType><file>src/test/java/com/gmail/nossr50/skills/alchemy/AlchemyTest.java</file></path><path><editType>add</editType><file>src/test/java/com/gmail/nossr50/datatypes/skills/alchemy/PotionStageTest.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/test/java/com/gmail/nossr50/datatypes/skills/alchemy/AlchemyPotionTest.java</affectedPath><affectedPath>Changelog.txt</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>add</editType><file>src/test/java/com/gmail/nossr50/datatypes/skills/alchemy/AlchemyPotionTest.java</file></path><path><editType>edit</editType><file>Changelog.txt</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>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/AlchemyPotionBrewerTransferTest.java</file></path><path><editType>edit</editType><file>Changelog.txt</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>add</editType><file>src/test/java/com/gmail/nossr50/skills/archery/ArcheryTest.java</file></path><path><editType>add</editType><file>src/test/java/com/gmail/nossr50/skills/archery/ArcheryManagerTest.java</file></path><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></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>add</editType><file>src/test/java/com/gmail/nossr50/skills/spears/SpearsManagerTest.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/skills/spears/SpearsManager.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/skills/mining/BlastMiningTest.java</affectedPath><affectedPath>src/test/java/com/gmail/nossr50/TestRegistryBootstrap.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>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>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/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/skills/fishing/FishingManagerProcessFishingTest.java</file></path><path><editType>edit</editType><file>src/test/java/com/gmail/nossr50/listeners/PlayerListenerFishingTest.java</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></culprit></build><build _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>341</buildNumber><marked><SHA1>c6292f4b0c1fef620ce55a60082a3d69080fd459</SHA1><branch><SHA1>c6292f4b0c1fef620ce55a60082a3d69080fd459</SHA1><name>refs/remotes/origin/master</name></branch></marked><revision><SHA1>c6292f4b0c1fef620ce55a60082a3d69080fd459</SHA1><branch><SHA1>c6292f4b0c1fef620ce55a60082a3d69080fd459</SHA1><name>refs/remotes/origin/master</name></branch></revision></refsremotesoriginmaster></buildsByBranchName><lastBuiltRevision><SHA1>c6292f4b0c1fef620ce55a60082a3d69080fd459</SHA1><branch><SHA1>c6292f4b0c1fef620ce55a60082a3d69080fd459</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><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>#341</displayName><duration>160667</duration><estimatedDuration>66335</estimatedDuration><fullDisplayName>mcMMO #341</fullDisplayName><id>341</id><inProgress>false</inProgress><keepLog>false</keepLog><number>341</number><queueId>214</queueId><result>SUCCESS</result><timestamp>1783730948677</timestamp><url>https://popicraft.net/jenkins/job/mcMMO/341/</url><builtOn>Builder</builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/test/java/com/gmail/nossr50/skills/fishing/FishingManagerAbilityGatesTest.java</affectedPath><affectedPath>src/test/java/com/gmail/nossr50/skills/fishing/FishingManagerMasterAnglerTest.java</affectedPath><affectedPath>src/test/java/com/gmail/nossr50/skills/fishing/FishingManagerShakeTest.java</affectedPath><affectedPath>src/test/java/com/gmail/nossr50/skills/fishing/FishingManagerProcessFishingTest.java</affectedPath><affectedPath>src/test/java/com/gmail/nossr50/skills/fishing/FishingTest.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/skills/fishing/FishingManager.java</affectedPath><affectedPath>src/test/java/com/gmail/nossr50/skills/fishing/FishingDropsTest.java</affectedPath><affectedPath>src/test/java/com/gmail/nossr50/listeners/PlayerListenerFishingTest.java</affectedPath><affectedPath>Changelog.txt</affectedPath><commitId>c6292f4b0c1fef620ce55a60082a3d69080fd459</commitId><timestamp>1783730108000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>Fix McMMOPlayerShakeEvent never being fired and expand fishing test coverage

The Shake ability constructed McMMOPlayerShakeEvent but never dispatched
it through the plugin manager, a gap dating back to 2013. Plugins
listening for the event never received it, and its cancel/setDrop API
had no effect. The event now fires before the drop is spawned, so
cancelling it suppresses the drop, damage, and XP, and drops replaced
through the event are the ones that spawn.

Also adds unit coverage across the fishing code: the overfishing
detection state machine and its bounding-box boundary, Master Angler
wait-time math and hook processing, the Shake drop pipeline including
sheep shearing and inventory stealing, the processFishing reward
pipeline, subskill eligibility gates, cumulative-chance drop selection,
and the listener wiring for treasure override, vanilla XP boost, Shake,
and Ice Fishing.
</comment><date>2026-07-10 17:35:08 -0700</date><id>c6292f4b0c1fef620ce55a60082a3d69080fd459</id><msg>Fix McMMOPlayerShakeEvent never being fired and expand fishing test coverage</msg><path><editType>add</editType><file>src/test/java/com/gmail/nossr50/listeners/PlayerListenerFishingTest.java</file></path><path><editType>add</editType><file>src/test/java/com/gmail/nossr50/skills/fishing/FishingManagerAbilityGatesTest.java</file></path><path><editType>edit</editType><file>Changelog.txt</file></path><path><editType>add</editType><file>src/test/java/com/gmail/nossr50/skills/fishing/FishingManagerProcessFishingTest.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/skills/fishing/FishingManager.java</file></path><path><editType>add</editType><file>src/test/java/com/gmail/nossr50/skills/fishing/FishingManagerShakeTest.java</file></path><path><editType>add</editType><file>src/test/java/com/gmail/nossr50/skills/fishing/FishingDropsTest.java</file></path><path><editType>add</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/skills/fishing/FishingTest.java</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></culprit></build><build _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>340</buildNumber><marked><SHA1>0edb5ad634a0c78298b290bcb4eda8d599994920</SHA1><branch><SHA1>0edb5ad634a0c78298b290bcb4eda8d599994920</SHA1><name>refs/remotes/origin/master</name></branch></marked><revision><SHA1>0edb5ad634a0c78298b290bcb4eda8d599994920</SHA1><branch><SHA1>0edb5ad634a0c78298b290bcb4eda8d599994920</SHA1><name>refs/remotes/origin/master</name></branch></revision></refsremotesoriginmaster></buildsByBranchName><lastBuiltRevision><SHA1>0edb5ad634a0c78298b290bcb4eda8d599994920</SHA1><branch><SHA1>0edb5ad634a0c78298b290bcb4eda8d599994920</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><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>#340</displayName><duration>155444</duration><estimatedDuration>66335</estimatedDuration><fullDisplayName>mcMMO #340</fullDisplayName><id>340</id><inProgress>false</inProgress><keepLog>false</keepLog><number>340</number><queueId>213</queueId><result>SUCCESS</result><timestamp>1783728251304</timestamp><url>https://popicraft.net/jenkins/job/mcMMO/340/</url><builtOn>Builder</builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/main/java/com/gmail/nossr50/skills/fishing/FishingManager.java</affectedPath><affectedPath>src/test/java/com/gmail/nossr50/listeners/PlayerListenerFishingExploitTest.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/listeners/PlayerListener.java</affectedPath><affectedPath>Changelog.txt</affectedPath><commitId>0edb5ad634a0c78298b290bcb4eda8d599994920</commitId><timestamp>1783727376000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>Keep denied spam-fishing catches from paying Fishing rewards

The exploit check split in #5313 gates rewards in the HIGHEST-priority
handler by re-reading the exploit verdicts, but only the overfishing
verdict could be re-read: isFishingTooOften() stamps the catch timestamp
on every call, so the reward gate could not call it again and spam
catches kept their skill XP, treasure rolls, and extra fish.

FishingManager now records the verdict of the most recent spam check,
exposed through wasFishingTooOften(), and the reward gate checks both
verdicts. Covered by a new listener test that dispatches PlayerFishEvents
through the real handler priority chain.
</comment><date>2026-07-10 16:49:36 -0700</date><id>0edb5ad634a0c78298b290bcb4eda8d599994920</id><msg>Keep denied spam-fishing catches from paying Fishing rewards</msg><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/skills/fishing/FishingManager.java</file></path><path><editType>add</editType><file>src/test/java/com/gmail/nossr50/listeners/PlayerListenerFishingExploitTest.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/listeners/PlayerListener.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></culprit></build><build _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>339</buildNumber><marked><SHA1>b8fc10045e6b4839f38aade026a5abfd328b8834</SHA1><branch><SHA1>b8fc10045e6b4839f38aade026a5abfd328b8834</SHA1><name>refs/remotes/origin/master</name></branch></marked><revision><SHA1>b8fc10045e6b4839f38aade026a5abfd328b8834</SHA1><branch><SHA1>b8fc10045e6b4839f38aade026a5abfd328b8834</SHA1><name>refs/remotes/origin/master</name></branch></revision></refsremotesoriginmaster></buildsByBranchName><lastBuiltRevision><SHA1>b8fc10045e6b4839f38aade026a5abfd328b8834</SHA1><branch><SHA1>b8fc10045e6b4839f38aade026a5abfd328b8834</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><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>#339</displayName><duration>58021</duration><estimatedDuration>66335</estimatedDuration><fullDisplayName>mcMMO #339</fullDisplayName><id>339</id><inProgress>false</inProgress><keepLog>false</keepLog><number>339</number><queueId>212</queueId><result>SUCCESS</result><timestamp>1783727351214</timestamp><url>https://popicraft.net/jenkins/job/mcMMO/339/</url><builtOn>Builder</builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/main/java/com/gmail/nossr50/listeners/PlayerListener.java</affectedPath><commitId>b8fc10045e6b4839f38aade026a5abfd328b8834</commitId><timestamp>1783726712000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/github</absoluteUrl><fullName>github</fullName></author><authorEmail>noreply@github.com</authorEmail><comment>Move fish exploit checks to the lowest priority (#5313)

* Move fish exploit checks to the lowest priority

* Check the config before permissions

* Move "fishing too often" to the lowest priority
</comment><date>2026-07-10 16:38:32 -0700</date><id>b8fc10045e6b4839f38aade026a5abfd328b8834</id><msg>Move fish exploit checks to the lowest priority (#5313)</msg><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/listeners/PlayerListener.java</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://popicraft.net/jenkins/user/github</absoluteUrl><fullName>github</fullName></culprit></build><build _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>338</buildNumber><marked><SHA1>e783eb942970736a7914a7fda7c8d78412dda763</SHA1><branch><SHA1>e783eb942970736a7914a7fda7c8d78412dda763</SHA1><name>refs/remotes/origin/master</name></branch></marked><revision><SHA1>e783eb942970736a7914a7fda7c8d78412dda763</SHA1><branch><SHA1>e783eb942970736a7914a7fda7c8d78412dda763</SHA1><name>refs/remotes/origin/master</name></branch></revision></refsremotesoriginmaster></buildsByBranchName><lastBuiltRevision><SHA1>e783eb942970736a7914a7fda7c8d78412dda763</SHA1><branch><SHA1>e783eb942970736a7914a7fda7c8d78412dda763</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><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>#338</displayName><duration>108807</duration><estimatedDuration>66335</estimatedDuration><fullDisplayName>mcMMO #338</fullDisplayName><id>338</id><inProgress>false</inProgress><keepLog>false</keepLog><number>338</number><queueId>210</queueId><result>SUCCESS</result><timestamp>1783643649486</timestamp><url>https://popicraft.net/jenkins/job/mcMMO/338/</url><builtOn>Builder</builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/main/java/com/gmail/nossr50/commands/admin/PlayerDebugCommand.java</affectedPath><commitId>133a5cf5c05f27d137f5f7d2170bcd74dfa2e9fe</commitId><timestamp>1783643423000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/github</absoluteUrl><fullName>github</fullName></author><authorEmail>noreply@github.com</authorEmail><comment>Fix NPE if debug command is used before profile load (#5314)
</comment><date>2026-07-09 17:30:23 -0700</date><id>133a5cf5c05f27d137f5f7d2170bcd74dfa2e9fe</id><msg>Fix NPE if debug command is used before profile load (#5314)</msg><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/commands/admin/PlayerDebugCommand.java</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>Changelog.txt</affectedPath><commitId>e783eb942970736a7914a7fda7c8d78412dda763</commitId><timestamp>1783643506000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>Update changelog
</comment><date>2026-07-09 17:31:46 -0700</date><id>e783eb942970736a7914a7fda7c8d78412dda763</id><msg>Update changelog</msg><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></culprit><culprit><absoluteUrl>https://popicraft.net/jenkins/user/github</absoluteUrl><fullName>github</fullName></culprit></build><build _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>337</buildNumber><marked><SHA1>980b6cbe9953b2c47da4df976a817d0ff8ac21dd</SHA1><branch><SHA1>980b6cbe9953b2c47da4df976a817d0ff8ac21dd</SHA1><name>refs/remotes/origin/master</name></branch></marked><revision><SHA1>980b6cbe9953b2c47da4df976a817d0ff8ac21dd</SHA1><branch><SHA1>980b6cbe9953b2c47da4df976a817d0ff8ac21dd</SHA1><name>refs/remotes/origin/master</name></branch></revision></refsremotesoriginmaster></buildsByBranchName><lastBuiltRevision><SHA1>980b6cbe9953b2c47da4df976a817d0ff8ac21dd</SHA1><branch><SHA1>980b6cbe9953b2c47da4df976a817d0ff8ac21dd</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><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>#337</displayName><duration>57327</duration><estimatedDuration>66335</estimatedDuration><fullDisplayName>mcMMO #337</fullDisplayName><id>337</id><inProgress>false</inProgress><keepLog>false</keepLog><number>337</number><queueId>209</queueId><result>SUCCESS</result><timestamp>1783636448740</timestamp><url>https://popicraft.net/jenkins/job/mcMMO/337/</url><builtOn>Builder</builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/main/java/com/gmail/nossr50/util/player/NotificationManager.java</affectedPath><affectedPath>src/test/java/com/gmail/nossr50/datatypes/player/McMMOPlayerPowerLevelCapTest.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/datatypes/player/McMMOPlayer.java</affectedPath><affectedPath>src/test/java/com/gmail/nossr50/util/skills/SkillToolsTest.java</affectedPath><affectedPath>src/main/resources/locale/locale_en_US.properties</affectedPath><affectedPath>Changelog.txt</affectedPath><affectedPath>src/test/java/com/gmail/nossr50/commands/XprateCommandTest.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/config/experience/ExperienceConfig.java</affectedPath><affectedPath>src/test/java/com/gmail/nossr50/config/experience/ExperienceConfigTest.java</affectedPath><affectedPath>src/test/java/com/gmail/nossr50/util/player/NotificationManagerTest.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/datatypes/notifications/SensitiveCommandType.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/util/commands/CommandRegistrationManager.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/mcMMO.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/commands/XprateCommand.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/listeners/SelfListener.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/listeners/PlayerListener.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/api/ExperienceAPI.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/util/skills/SkillTools.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/listeners/DiminishedReturns.java</affectedPath><commitId>980b6cbe9953b2c47da4df976a817d0ff8ac21dd</commitId><timestamp>1783636266000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>Overhaul /xprate with per-skill rates and cleaner announcements

Adds per-skill XP rates (/xprate mining 5.3) that resolve max-wins
against the global rate, an implicit event flag, rejection of rates
below the configured baseline, and /xprate show with per-rate
durations and tab completion hints.

Admin notifications now show the sender as a hoverable @name with
their UUID in the hover instead of appending the UUID to the name;
the console copy keeps name (uuid). Skill names in messages come from
the display-cased Overhaul.Name locale keys.

Also lowercases skill name tab completion across commands and fixes
the outdated-server warning to name Minecraft 1.20.5.
</comment><date>2026-07-09 15:31:06 -0700</date><id>980b6cbe9953b2c47da4df976a817d0ff8ac21dd</id><msg>Overhaul /xprate with per-skill rates and cleaner announcements</msg><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/listeners/SelfListener.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/config/experience/ExperienceConfig.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/util/skills/SkillTools.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/util/commands/CommandRegistrationManager.java</file></path><path><editType>edit</editType><file>src/test/java/com/gmail/nossr50/config/experience/ExperienceConfigTest.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/api/ExperienceAPI.java</file></path><path><editType>edit</editType><file>Changelog.txt</file></path><path><editType>edit</editType><file>src/test/java/com/gmail/nossr50/datatypes/player/McMMOPlayerPowerLevelCapTest.java</file></path><path><editType>edit</editType><file>src/test/java/com/gmail/nossr50/commands/XprateCommandTest.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/commands/XprateCommand.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/listeners/PlayerListener.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/listeners/DiminishedReturns.java</file></path><path><editType>edit</editType><file>src/test/java/com/gmail/nossr50/util/player/NotificationManagerTest.java</file></path><path><editType>edit</editType><file>src/main/resources/locale/locale_en_US.properties</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/datatypes/notifications/SensitiveCommandType.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/datatypes/player/McMMOPlayer.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/util/player/NotificationManager.java</file></path><path><editType>edit</editType><file>src/test/java/com/gmail/nossr50/util/skills/SkillToolsTest.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/mcMMO.java</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></culprit></build><build _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>336</buildNumber><marked><SHA1>dedfd2fdde7604ccba468d6380c74582284fb9ca</SHA1><branch><SHA1>dedfd2fdde7604ccba468d6380c74582284fb9ca</SHA1><name>refs/remotes/origin/master</name></branch></marked><revision><SHA1>dedfd2fdde7604ccba468d6380c74582284fb9ca</SHA1><branch><SHA1>dedfd2fdde7604ccba468d6380c74582284fb9ca</SHA1><name>refs/remotes/origin/master</name></branch></revision></refsremotesoriginmaster></buildsByBranchName><lastBuiltRevision><SHA1>dedfd2fdde7604ccba468d6380c74582284fb9ca</SHA1><branch><SHA1>dedfd2fdde7604ccba468d6380c74582284fb9ca</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><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>#336</displayName><duration>96751</duration><estimatedDuration>66335</estimatedDuration><fullDisplayName>mcMMO #336</fullDisplayName><id>336</id><inProgress>false</inProgress><keepLog>false</keepLog><number>336</number><queueId>208</queueId><result>SUCCESS</result><timestamp>1783622951116</timestamp><url>https://popicraft.net/jenkins/job/mcMMO/336/</url><builtOn>Builder</builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>Changelog.txt</affectedPath><commitId>dedfd2fdde7604ccba468d6380c74582284fb9ca</commitId><timestamp>1783622559000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>Trim the 2.3.000 changelog and lead with new features
</comment><date>2026-07-09 11:42:39 -0700</date><id>dedfd2fdde7604ccba468d6380c74582284fb9ca</id><msg>Trim the 2.3.000 changelog and lead with new features</msg><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></culprit></build><build _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>335</buildNumber><marked><SHA1>0dcf35b64ace92c17f9fe3e1e222dcaca30ca9cf</SHA1><branch><SHA1>0dcf35b64ace92c17f9fe3e1e222dcaca30ca9cf</SHA1><name>refs/remotes/origin/master</name></branch></marked><revision><SHA1>0dcf35b64ace92c17f9fe3e1e222dcaca30ca9cf</SHA1><branch><SHA1>0dcf35b64ace92c17f9fe3e1e222dcaca30ca9cf</SHA1><name>refs/remotes/origin/master</name></branch></revision></refsremotesoriginmaster></buildsByBranchName><lastBuiltRevision><SHA1>0dcf35b64ace92c17f9fe3e1e222dcaca30ca9cf</SHA1><branch><SHA1>0dcf35b64ace92c17f9fe3e1e222dcaca30ca9cf</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><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>#335</displayName><duration>89755</duration><estimatedDuration>66335</estimatedDuration><fullDisplayName>mcMMO #335</fullDisplayName><id>335</id><inProgress>false</inProgress><keepLog>false</keepLog><number>335</number><queueId>207</queueId><result>SUCCESS</result><timestamp>1783621157109</timestamp><url>https://popicraft.net/jenkins/job/mcMMO/335/</url><builtOn>Builder</builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/main/java/com/gmail/nossr50/placeholders/LeaderboardPlaceholderInputParser.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/database/FlatFileDatabaseManager.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/placeholders/PapiExpansion.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/placeholders/LeaderboardPlaceholderCache.java</affectedPath><affectedPath>src/test/java/com/gmail/nossr50/database/SharedSqlContainers.java</affectedPath><affectedPath>src/test/java/com/gmail/nossr50/placeholders/McTopPlaceholdersTest.java</affectedPath><affectedPath>src/test/java/com/gmail/nossr50/placeholders/LeaderboardPlaceholderInputParserTest.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/placeholders/SkillExpRemainingPlaceholder.java</affectedPath><affectedPath>src/test/java/com/gmail/nossr50/placeholders/LeaderboardPlaceholderSqlIntegrationTest.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/datatypes/database/LeaderboardSnapshot.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/placeholders/SkillXpRatePlaceholder.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/config/GeneralConfig.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/placeholders/SkillLevelPlaceholder.java</affectedPath><affectedPath>src/test/java/com/gmail/nossr50/placeholders/LeaderboardPlaceholderFlatFileIntegrationTest.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/placeholders/McTopPlaceholder.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/database/DatabaseManager.java</affectedPath><affectedPath>src/main/resources/config.yml</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/datatypes/database/UpgradeType.java</affectedPath><affectedPath>src/test/java/com/gmail/nossr50/database/FlatFileDatabaseManagerTest.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/placeholders/SkillExpPlaceholder.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/placeholders/SkillRankPlaceholder.java</affectedPath><affectedPath>src/test/java/com/gmail/nossr50/util/TestFileCleanup.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/placeholders/SkillExpNeededPlaceholder.java</affectedPath><affectedPath>Changelog.txt</affectedPath><affectedPath>src/test/java/com/gmail/nossr50/database/SQLDatabaseManagerTest.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/mcMMO.java</affectedPath><affectedPath>src/test/java/com/gmail/nossr50/placeholders/LeaderboardPlaceholderCacheTest.java</affectedPath><affectedPath>src/test/java/com/gmail/nossr50/placeholders/PapiExpansionRoutingTest.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/database/DatabaseManagerFactory.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/database/SQLDatabaseManager.java</affectedPath><commitId>0dcf35b64ace92c17f9fe3e1e222dcaca30ca9cf</commitId><timestamp>1783621038000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/github</absoluteUrl><fullName>github</fullName></author><authorEmail>noreply@github.com</authorEmail><comment>Add async PAPI leaderboard cache and placeholders (#5301)

Fixes #5171
Fixes #4800
Fixes #4291

Placeholders are served from an async snapshot cache refreshed in bulk
per backend interval; includes SQL per-skill leaderboard indexes with a
query rewrite, ghost-row filtering shared by /mctop and /mcrank,
FlatFile leaderboard generation-swap thread safety, a routing pin test
for the PAPI token seam, and placeholder token names built with
Locale.ENGLISH.
</comment><date>2026-07-09 11:17:18 -0700</date><id>0dcf35b64ace92c17f9fe3e1e222dcaca30ca9cf</id><msg>Add async PAPI leaderboard cache and placeholders (#5301)</msg><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/config/GeneralConfig.java</file></path><path><editType>add</editType><file>src/main/java/com/gmail/nossr50/placeholders/McTopPlaceholder.java</file></path><path><editType>add</editType><file>src/test/java/com/gmail/nossr50/database/SharedSqlContainers.java</file></path><path><editType>add</editType><file>src/test/java/com/gmail/nossr50/placeholders/McTopPlaceholdersTest.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/placeholders/SkillExpNeededPlaceholder.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/placeholders/SkillLevelPlaceholder.java</file></path><path><editType>add</editType><file>src/test/java/com/gmail/nossr50/placeholders/LeaderboardPlaceholderSqlIntegrationTest.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/database/DatabaseManager.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/placeholders/SkillExpPlaceholder.java</file></path><path><editType>edit</editType><file>src/main/resources/config.yml</file></path><path><editType>edit</editType><file>src/test/java/com/gmail/nossr50/database/FlatFileDatabaseManagerTest.java</file></path><path><editType>add</editType><file>src/main/java/com/gmail/nossr50/datatypes/database/LeaderboardSnapshot.java</file></path><path><editType>edit</editType><file>Changelog.txt</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/database/FlatFileDatabaseManager.java</file></path><path><editType>add</editType><file>src/main/java/com/gmail/nossr50/placeholders/LeaderboardPlaceholderInputParser.java</file></path><path><editType>add</editType><file>src/test/java/com/gmail/nossr50/placeholders/LeaderboardPlaceholderFlatFileIntegrationTest.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/placeholders/SkillXpRatePlaceholder.java</file></path><path><editType>add</editType><file>src/test/java/com/gmail/nossr50/placeholders/PapiExpansionRoutingTest.java</file></path><path><editType>add</editType><file>src/test/java/com/gmail/nossr50/placeholders/LeaderboardPlaceholderInputParserTest.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/placeholders/SkillRankPlaceholder.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/placeholders/SkillExpRemainingPlaceholder.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/mcMMO.java</file></path><path><editType>add</editType><file>src/main/java/com/gmail/nossr50/placeholders/LeaderboardPlaceholderCache.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/database/DatabaseManagerFactory.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/datatypes/database/UpgradeType.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/placeholders/PapiExpansion.java</file></path><path><editType>add</editType><file>src/test/java/com/gmail/nossr50/placeholders/LeaderboardPlaceholderCacheTest.java</file></path><path><editType>add</editType><file>src/test/java/com/gmail/nossr50/util/TestFileCleanup.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/database/SQLDatabaseManager.java</file></path><path><editType>edit</editType><file>src/test/java/com/gmail/nossr50/database/SQLDatabaseManagerTest.java</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://popicraft.net/jenkins/user/github</absoluteUrl><fullName>github</fullName></culprit></build><build _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>334</buildNumber><marked><SHA1>56ca96cd501b240bbdf2b50da59b48bfffc34100</SHA1><branch><SHA1>56ca96cd501b240bbdf2b50da59b48bfffc34100</SHA1><name>refs/remotes/origin/master</name></branch></marked><revision><SHA1>56ca96cd501b240bbdf2b50da59b48bfffc34100</SHA1><branch><SHA1>56ca96cd501b240bbdf2b50da59b48bfffc34100</SHA1><name>refs/remotes/origin/master</name></branch></revision></refsremotesoriginmaster></buildsByBranchName><lastBuiltRevision><SHA1>56ca96cd501b240bbdf2b50da59b48bfffc34100</SHA1><branch><SHA1>56ca96cd501b240bbdf2b50da59b48bfffc34100</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><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>#334</displayName><duration>106297</duration><estimatedDuration>66335</estimatedDuration><fullDisplayName>mcMMO #334</fullDisplayName><id>334</id><inProgress>false</inProgress><keepLog>false</keepLog><number>334</number><queueId>206</queueId><result>SUCCESS</result><timestamp>1783618450800</timestamp><url>https://popicraft.net/jenkins/job/mcMMO/334/</url><builtOn>Builder</builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/main/java/com/gmail/nossr50/listeners/PlayerListener.java</affectedPath><commitId>56ca96cd501b240bbdf2b50da59b48bfffc34100</commitId><timestamp>1783617201000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>Drop the interact-time bone meal placed-block reset

Right-clicking a crop with bone meal cleared its placed-block marker
during PlayerInteractEvent, before knowing whether the fertilize
actually happened. The listeners that watch real outcomes already
cover every legitimate case: crop stage growth fires BlockGrowEvent
(BlockListener#onBlockGrow) and propagule-to-tree growth fires
StructureGrowEvent (WorldListener#onStructureGrow), both of which
mark the affected blocks eligible again.

That left the interact-time reset only mattering when bone meal was
not consumed, which is exactly the shape of the free Herbalism XP
exploit reported in #5312; the nether wart block case was removed in
237890cf5, and any future non-fertilizable addition to the material
set would have reintroduced it. Removing the path entirely closes the
exploit class and resolves the old TODO questioning whether the code
was needed.
</comment><date>2026-07-09 10:13:21 -0700</date><id>56ca96cd501b240bbdf2b50da59b48bfffc34100</id><msg>Drop the interact-time bone meal placed-block reset</msg><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/listeners/PlayerListener.java</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></culprit></build><build _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'></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>66335</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/skills/herbalism/HerbalismManager.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/runnables/skills/PlantCollapseXpTask.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>edit</editType><file>Changelog.txt</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/skills/herbalism/HerbalismManager.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/mcMMO.java</file></path><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></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></culprit></build><build _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>332</buildNumber><marked><SHA1>be61c3627658e266144baf9024238d284eb42e82</SHA1><branch><SHA1>be61c3627658e266144baf9024238d284eb42e82</SHA1><name>refs/remotes/origin/master</name></branch></marked><revision><SHA1>be61c3627658e266144baf9024238d284eb42e82</SHA1><branch><SHA1>be61c3627658e266144baf9024238d284eb42e82</SHA1><name>refs/remotes/origin/master</name></branch></revision></refsremotesoriginmaster></buildsByBranchName><lastBuiltRevision><SHA1>be61c3627658e266144baf9024238d284eb42e82</SHA1><branch><SHA1>be61c3627658e266144baf9024238d284eb42e82</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><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>#332</displayName><duration>74376</duration><estimatedDuration>66335</estimatedDuration><fullDisplayName>mcMMO #332</fullDisplayName><id>332</id><inProgress>false</inProgress><keepLog>false</keepLog><number>332</number><queueId>204</queueId><result>SUCCESS</result><timestamp>1783583353019</timestamp><url>https://popicraft.net/jenkins/job/mcMMO/332/</url><builtOn>Builder</builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><kind>git</kind></changeSet></build><build _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>331</buildNumber><marked><SHA1>9b76ac274d13f7165fb0dff410ed7144a4a4be11</SHA1><branch><SHA1>9b76ac274d13f7165fb0dff410ed7144a4a4be11</SHA1><name>refs/remotes/origin/master</name></branch></marked><revision><SHA1>9b76ac274d13f7165fb0dff410ed7144a4a4be11</SHA1><branch><SHA1>9b76ac274d13f7165fb0dff410ed7144a4a4be11</SHA1><name>refs/remotes/origin/master</name></branch></revision></refsremotesoriginmaster></buildsByBranchName><lastBuiltRevision><SHA1>9b76ac274d13f7165fb0dff410ed7144a4a4be11</SHA1><branch><SHA1>9b76ac274d13f7165fb0dff410ed7144a4a4be11</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><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>#331</displayName><duration>84358</duration><estimatedDuration>66335</estimatedDuration><fullDisplayName>mcMMO #331</fullDisplayName><id>331</id><inProgress>false</inProgress><keepLog>false</keepLog><number>331</number><queueId>203</queueId><result>SUCCESS</result><timestamp>1783582450968</timestamp><url>https://popicraft.net/jenkins/job/mcMMO/331/</url><builtOn>Builder</builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/test/java/com/gmail/nossr50/util/blockmeta/BitSetChunkStoreTest.java</affectedPath><affectedPath>Changelog.txt</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/util/blockmeta/BitSetChunkStore.java</affectedPath><commitId>3d05c0b9f521d48225809317dd338cd98c81ec4f</commitId><timestamp>1783503186000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>Fix placed-block data loss when world height limits shrink
</comment><date>2026-07-08 02:33:06 -0700</date><id>3d05c0b9f521d48225809317dd338cd98c81ec4f</id><msg>Fix placed-block data loss when world height limits shrink</msg><path><editType>edit</editType><file>src/test/java/com/gmail/nossr50/util/blockmeta/BitSetChunkStoreTest.java</file></path><path><editType>edit</editType><file>Changelog.txt</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/util/blockmeta/BitSetChunkStore.java</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/main/java/com/gmail/nossr50/util/blockmeta/HashChunkManager.java</affectedPath><affectedPath>Changelog.txt</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/util/blockmeta/BitSetChunkStore.java</affectedPath><commitId>9acf67b6e2aad3a2d99a0830c2abe76aa1106065</commitId><timestamp>1783503327000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>Warn instead of silently resetting unreadable placed-block chunk data
</comment><date>2026-07-08 02:35:27 -0700</date><id>9acf67b6e2aad3a2d99a0830c2abe76aa1106065</id><msg>Warn instead of silently resetting unreadable placed-block chunk data</msg><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/util/blockmeta/BitSetChunkStore.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/util/blockmeta/HashChunkManager.java</file></path><path><editType>edit</editType><file>Changelog.txt</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/test/java/com/gmail/nossr50/util/random/ProbabilityUtilTest.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/util/random/ProbabilityUtil.java</affectedPath><affectedPath>Changelog.txt</affectedPath><commitId>8ec5ef3285021e5f8d7edc1d584e6de6d91a42fd</commitId><timestamp>1783539562000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>Fix SubSkillEvent result modifier shrinking skill chances 100-fold
</comment><date>2026-07-08 12:39:22 -0700</date><id>8ec5ef3285021e5f8d7edc1d584e6de6d91a42fd</id><msg>Fix SubSkillEvent result modifier shrinking skill chances 100-fold</msg><path><editType>edit</editType><file>Changelog.txt</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/util/random/ProbabilityUtil.java</file></path><path><editType>edit</editType><file>src/test/java/com/gmail/nossr50/util/random/ProbabilityUtilTest.java</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/test/java/com/gmail/nossr50/util/random/ProbabilityUtilTest.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/util/random/ProbabilityUtil.java</affectedPath><affectedPath>Changelog.txt</affectedPath><commitId>d083d933ca1b0cfe2e102c07a6ca496d3a6c99c3</commitId><timestamp>1783539638000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>Apply attack strength to skill RNG rolls for players without Lucky
</comment><date>2026-07-08 12:40:38 -0700</date><id>d083d933ca1b0cfe2e102c07a6ca496d3a6c99c3</id><msg>Apply attack strength to skill RNG rolls for players without Lucky</msg><path><editType>edit</editType><file>Changelog.txt</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/util/random/ProbabilityUtil.java</file></path><path><editType>edit</editType><file>src/test/java/com/gmail/nossr50/util/random/ProbabilityUtilTest.java</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/main/java/com/gmail/nossr50/util/EventUtils.java</affectedPath><affectedPath>Changelog.txt</affectedPath><affectedPath>src/test/java/com/gmail/nossr50/util/EventUtilsTest.java</affectedPath><commitId>4460e076a7d729c6fb5c9dcc075f111319d7c567</commitId><timestamp>1783540036000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>Fix cancelled level change events corrupting levels and crashing on unloaded players
</comment><date>2026-07-08 12:47:16 -0700</date><id>4460e076a7d729c6fb5c9dcc075f111319d7c567</id><msg>Fix cancelled level change events corrupting levels and crashing on unloaded players</msg><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/util/EventUtils.java</file></path><path><editType>add</editType><file>src/test/java/com/gmail/nossr50/util/EventUtilsTest.java</file></path><path><editType>edit</editType><file>Changelog.txt</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/main/java/com/gmail/nossr50/util/PotionUtil.java</affectedPath><affectedPath>Changelog.txt</affectedPath><affectedPath>src/test/java/com/gmail/nossr50/util/PotionUtilTest.java</affectedPath><commitId>41731c867d72b17ff931c3d81d264f59d1ece3dc</commitId><timestamp>1783540245000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>Fix legacy potion name conversion corrupting modern REGENERATION names
</comment><date>2026-07-08 12:50:45 -0700</date><id>41731c867d72b17ff931c3d81d264f59d1ece3dc</id><msg>Fix legacy potion name conversion corrupting modern REGENERATION names</msg><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/util/PotionUtil.java</file></path><path><editType>edit</editType><file>Changelog.txt</file></path><path><editType>edit</editType><file>src/test/java/com/gmail/nossr50/util/PotionUtilTest.java</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/test/java/com/gmail/nossr50/listeners/EntityListenerTest.java</affectedPath><affectedPath>Changelog.txt</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/listeners/EntityListener.java</affectedPath><commitId>4871b36b6a7d6e81c2d7825285b4010f8976ec49</commitId><timestamp>1783540551000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>Flag jockey riders with the same XP tracking as their spawned mount
</comment><date>2026-07-08 12:55:51 -0700</date><id>4871b36b6a7d6e81c2d7825285b4010f8976ec49</id><msg>Flag jockey riders with the same XP tracking as their spawned mount</msg><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/listeners/EntityListener.java</file></path><path><editType>add</editType><file>src/test/java/com/gmail/nossr50/listeners/EntityListenerTest.java</file></path><path><editType>edit</editType><file>Changelog.txt</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>Changelog.txt</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/listeners/EntityListener.java</affectedPath><commitId>99a6211c01e16126b2585805967bedd5d25b366f</commitId><timestamp>1783540821000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>Fix splash potions skipping saturation when other custom effects come first
</comment><date>2026-07-08 13:00:21 -0700</date><id>99a6211c01e16126b2585805967bedd5d25b366f</id><msg>Fix splash potions skipping saturation when other custom effects come first</msg><path><editType>edit</editType><file>Changelog.txt</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/listeners/EntityListener.java</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/main/java/com/gmail/nossr50/listeners/SelfListener.java</affectedPath><affectedPath>Changelog.txt</affectedPath><affectedPath>src/test/java/com/gmail/nossr50/listeners/SelfListenerTest.java</affectedPath><commitId>dae8f37cf5ab00e4a187aebd489a088b836cad25</commitId><timestamp>1783541115000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>Stop processing XP gains after WorldGuard denies them
</comment><date>2026-07-08 13:05:15 -0700</date><id>dae8f37cf5ab00e4a187aebd489a088b836cad25</id><msg>Stop processing XP gains after WorldGuard denies them</msg><path><editType>edit</editType><file>Changelog.txt</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/listeners/SelfListener.java</file></path><path><editType>add</editType><file>src/test/java/com/gmail/nossr50/listeners/SelfListenerTest.java</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/main/java/com/gmail/nossr50/listeners/PlayerListener.java</affectedPath><affectedPath>src/test/java/com/gmail/nossr50/listeners/PlayerListenerQuitCleanupTest.java</affectedPath><affectedPath>Changelog.txt</affectedPath><commitId>07347d227824496c7499f1f9311319e0b137eb4c</commitId><timestamp>1783541290000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>Clean up fishing hand tracking when players quit
</comment><date>2026-07-08 13:08:10 -0700</date><id>07347d227824496c7499f1f9311319e0b137eb4c</id><msg>Clean up fishing hand tracking when players quit</msg><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/listeners/PlayerListener.java</file></path><path><editType>add</editType><file>src/test/java/com/gmail/nossr50/listeners/PlayerListenerQuitCleanupTest.java</file></path><path><editType>edit</editType><file>Changelog.txt</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/test/java/com/gmail/nossr50/listeners/EntityListenerTest.java</affectedPath><affectedPath>Changelog.txt</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/listeners/EntityListener.java</affectedPath><commitId>df03caceaa36cfce6697af77d04449d33b700611</commitId><timestamp>1783541384000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>Ignore non-player owners in EntityTameEvent handling
</comment><date>2026-07-08 13:09:44 -0700</date><id>df03caceaa36cfce6697af77d04449d33b700611</id><msg>Ignore non-player owners in EntityTameEvent handling</msg><path><editType>edit</editType><file>Changelog.txt</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/listeners/EntityListener.java</file></path><path><editType>edit</editType><file>src/test/java/com/gmail/nossr50/listeners/EntityListenerTest.java</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/test/java/com/gmail/nossr50/listeners/EntityListenerTest.java</affectedPath><affectedPath>Changelog.txt</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/listeners/EntityListener.java</affectedPath><commitId>84ac9d1f8fcc8793aaf22da580b9047835cd0a9f</commitId><timestamp>1783541692000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>Untrack Call of the Wild summons when they die
</comment><date>2026-07-08 13:14:52 -0700</date><id>84ac9d1f8fcc8793aaf22da580b9047835cd0a9f</id><msg>Untrack Call of the Wild summons when they die</msg><path><editType>edit</editType><file>Changelog.txt</file></path><path><editType>edit</editType><file>src/test/java/com/gmail/nossr50/listeners/EntityListenerTest.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/listeners/EntityListener.java</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/main/java/com/gmail/nossr50/util/TransientEntityTracker.java</affectedPath><affectedPath>Changelog.txt</affectedPath><commitId>b862e449e08d4d154df15d0cf341312642b32f13</commitId><timestamp>1783541706000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>Tidy TransientEntityTracker internals
</comment><date>2026-07-08 13:15:06 -0700</date><id>b862e449e08d4d154df15d0cf341312642b32f13</id><msg>Tidy TransientEntityTracker internals</msg><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/util/TransientEntityTracker.java</file></path><path><editType>edit</editType><file>Changelog.txt</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/test/java/com/gmail/nossr50/util/ChimaeraWingTest.java</affectedPath><affectedPath>Changelog.txt</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/util/ChimaeraWing.java</affectedPath><commitId>08cb7872ca9ce28f552df9e337cc0607a5cbd845</commitId><timestamp>1783541847000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>Fix Chimaera Wing underground penalty crashing for low-health players
</comment><date>2026-07-08 13:17:27 -0700</date><id>08cb7872ca9ce28f552df9e337cc0607a5cbd845</id><msg>Fix Chimaera Wing underground penalty crashing for low-health players</msg><path><editType>edit</editType><file>Changelog.txt</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/util/ChimaeraWing.java</file></path><path><editType>add</editType><file>src/test/java/com/gmail/nossr50/util/ChimaeraWingTest.java</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/main/java/com/gmail/nossr50/util/sounds/SoundRegistryUtils.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/util/sounds/SoundManager.java</affectedPath><affectedPath>Changelog.txt</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/util/sounds/SoundType.java</affectedPath><affectedPath>src/test/java/com/gmail/nossr50/util/sounds/SoundManagerTest.java</affectedPath><commitId>63d486d81aae2bfcfe21cb1b063fa6cd56101098</commitId><timestamp>1783542399000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>Fix sound registry resolution and Cripple sound fallback
</comment><date>2026-07-08 13:26:39 -0700</date><id>63d486d81aae2bfcfe21cb1b063fa6cd56101098</id><msg>Fix sound registry resolution and Cripple sound fallback</msg><path><editType>edit</editType><file>Changelog.txt</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/util/sounds/SoundType.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/util/sounds/SoundRegistryUtils.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/util/sounds/SoundManager.java</file></path><path><editType>add</editType><file>src/test/java/com/gmail/nossr50/util/sounds/SoundManagerTest.java</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/test/java/com/gmail/nossr50/util/platform/MinecraftGameVersionTest.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/util/platform/MajorMinorPatchVersion.java</affectedPath><affectedPath>Changelog.txt</affectedPath><commitId>be18bbe830dcc01fee58ee15ae53573608ed7fff</commitId><timestamp>1783542511000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>Fix patch version strings printing object references
</comment><date>2026-07-08 13:28:31 -0700</date><id>be18bbe830dcc01fee58ee15ae53573608ed7fff</id><msg>Fix patch version strings printing object references</msg><path><editType>edit</editType><file>src/test/java/com/gmail/nossr50/util/platform/MinecraftGameVersionTest.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/util/platform/MajorMinorPatchVersion.java</file></path><path><editType>edit</editType><file>Changelog.txt</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/main/java/com/gmail/nossr50/util/adapter/BiomeAdapter.java</affectedPath><affectedPath>src/test/java/com/gmail/nossr50/util/adapter/BiomeAdapterTest.java</affectedPath><affectedPath>Changelog.txt</affectedPath><commitId>af18395d74def6663836d736366a2847d161e09c</commitId><timestamp>1783562457000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>Harden cold biome resolution against missing biomes
</comment><date>2026-07-08 19:00:57 -0700</date><id>af18395d74def6663836d736366a2847d161e09c</id><msg>Harden cold biome resolution against missing biomes</msg><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/util/adapter/BiomeAdapter.java</file></path><path><editType>add</editType><file>src/test/java/com/gmail/nossr50/util/adapter/BiomeAdapterTest.java</file></path><path><editType>edit</editType><file>Changelog.txt</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/main/java/com/gmail/nossr50/util/commands/CommandUtils.java</affectedPath><affectedPath>Changelog.txt</affectedPath><affectedPath>src/test/java/com/gmail/nossr50/util/commands/CommandUtilsTest.java</affectedPath><commitId>07de5c4ef8b20bfa41c4742250a1af5fbff7a00b</commitId><timestamp>1783562613000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>Fix console tab-completion for player names in mcMMO commands
</comment><date>2026-07-08 19:03:33 -0700</date><id>07de5c4ef8b20bfa41c4742250a1af5fbff7a00b</id><msg>Fix console tab-completion for player names in mcMMO commands</msg><path><editType>add</editType><file>src/test/java/com/gmail/nossr50/util/commands/CommandUtilsTest.java</file></path><path><editType>edit</editType><file>Changelog.txt</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/util/commands/CommandUtils.java</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>Changelog.txt</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/util/MobHealthbarUtils.java</affectedPath><affectedPath>src/test/java/com/gmail/nossr50/util/MobHealthbarUtilsTest.java</affectedPath><commitId>ce3b46d88f21e1e3762796cbf12c23605cfd7b77</commitId><timestamp>1783562790000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>Skip healthbar name changes when the display type is disabled
</comment><date>2026-07-08 19:06:30 -0700</date><id>ce3b46d88f21e1e3762796cbf12c23605cfd7b77</id><msg>Skip healthbar name changes when the display type is disabled</msg><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/util/MobHealthbarUtils.java</file></path><path><editType>edit</editType><file>src/test/java/com/gmail/nossr50/util/MobHealthbarUtilsTest.java</file></path><path><editType>edit</editType><file>Changelog.txt</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>Changelog.txt</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/util/player/UserManager.java</affectedPath><commitId>d5dac2d8de742910b51e13178ced453626b536cc</commitId><timestamp>1783562893000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>Make shutdown save tracking thread-safe for Folia
</comment><date>2026-07-08 19:08:13 -0700</date><id>d5dac2d8de742910b51e13178ced453626b536cc</id><msg>Make shutdown save tracking thread-safe for Folia</msg><path><editType>edit</editType><file>Changelog.txt</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/util/player/UserManager.java</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/test/java/com/gmail/nossr50/util/text/TextUtilsTest.java</affectedPath><affectedPath>Changelog.txt</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/util/text/TextUtils.java</affectedPath><commitId>d66ad98698abba20d0390492589d29f43d164701</commitId><timestamp>1783563185000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>Fix component grouping to honor the requested group size
</comment><date>2026-07-08 19:13:05 -0700</date><id>d66ad98698abba20d0390492589d29f43d164701</id><msg>Fix component grouping to honor the requested group size</msg><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/util/text/TextUtils.java</file></path><path><editType>edit</editType><file>Changelog.txt</file></path><path><editType>edit</editType><file>src/test/java/com/gmail/nossr50/util/text/TextUtilsTest.java</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/test/java/com/gmail/nossr50/util/LogFilterTest.java</affectedPath><affectedPath>Changelog.txt</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/util/LogFilter.java</affectedPath><commitId>2e4141e29f7650aa2b7c30b387b5f080d1084109</commitId><timestamp>1783563284000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>Fix log filter hiding normal messages and crashing on null messages
</comment><date>2026-07-08 19:14:44 -0700</date><id>2e4141e29f7650aa2b7c30b387b5f080d1084109</id><msg>Fix log filter hiding normal messages and crashing on null messages</msg><path><editType>edit</editType><file>Changelog.txt</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/util/LogFilter.java</file></path><path><editType>add</editType><file>src/test/java/com/gmail/nossr50/util/LogFilterTest.java</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/main/java/com/gmail/nossr50/util/random/ProbabilityUtil.java</affectedPath><affectedPath>Changelog.txt</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/util/text/StringUtils.java</affectedPath><commitId>e68ef41d22e7733366cf3dce8063e97c3087b37f</commitId><timestamp>1783563386000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>Use thread-local DecimalFormats for skill display formatting
</comment><date>2026-07-08 19:16:26 -0700</date><id>e68ef41d22e7733366cf3dce8063e97c3087b37f</id><msg>Use thread-local DecimalFormats for skill display formatting</msg><path><editType>edit</editType><file>Changelog.txt</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/util/random/ProbabilityUtil.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/util/text/StringUtils.java</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>Changelog.txt</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/util/upgrade/UpgradeManager.java</affectedPath><commitId>65e6f40069c6fe0b220650e6c0ea7ca8158a07e1</commitId><timestamp>1783564342000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>Log upgrade tracking save failures through the plugin logger
</comment><date>2026-07-08 19:32:22 -0700</date><id>65e6f40069c6fe0b220650e6c0ea7ca8158a07e1</id><msg>Log upgrade tracking save failures through the plugin logger</msg><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/util/upgrade/UpgradeManager.java</file></path><path><editType>edit</editType><file>Changelog.txt</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/main/java/com/gmail/nossr50/util/sounds/SoundRegistryUtils.java</affectedPath><commitId>8f1aae11ebc1a6a4bbc7041c385f83795b887229</commitId><timestamp>1783564532000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>Fall back to legacy sound lookup when the registry class fails to initialize
</comment><date>2026-07-08 19:35:32 -0700</date><id>8f1aae11ebc1a6a4bbc7041c385f83795b887229</id><msg>Fall back to legacy sound lookup when the registry class fails to initialize</msg><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/util/sounds/SoundRegistryUtils.java</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/test/java/com/gmail/nossr50/util/skills/RankUtilsTest.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/util/skills/RankUtils.java</affectedPath><affectedPath>Changelog.txt</affectedPath><commitId>c7118fa6f9639d4a203c682f06a0b915d6b634f2</commitId><timestamp>1783565022000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>Cache subskill unlock levels instead of re-reading rank config per check
</comment><date>2026-07-08 19:43:42 -0700</date><id>c7118fa6f9639d4a203c682f06a0b915d6b634f2</id><msg>Cache subskill unlock levels instead of re-reading rank config per check</msg><path><editType>add</editType><file>src/test/java/com/gmail/nossr50/util/skills/RankUtilsTest.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/util/skills/RankUtils.java</file></path><path><editType>edit</editType><file>Changelog.txt</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/main/java/com/gmail/nossr50/datatypes/skills/SubSkillType.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/util/Permissions.java</affectedPath><affectedPath>Changelog.txt</affectedPath><affectedPath>src/test/java/com/gmail/nossr50/util/PermissionsNodeFormatTest.java</affectedPath><commitId>93e56505f3cf1a6c79564a89e3b8c7885ea883ec</commitId><timestamp>1783565307000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>Precompute permission node names for frequent checks
</comment><date>2026-07-08 19:48:27 -0700</date><id>93e56505f3cf1a6c79564a89e3b8c7885ea883ec</id><msg>Precompute permission node names for frequent checks</msg><path><editType>edit</editType><file>Changelog.txt</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/datatypes/skills/SubSkillType.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/util/Permissions.java</file></path><path><editType>add</editType><file>src/test/java/com/gmail/nossr50/util/PermissionsNodeFormatTest.java</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/main/java/com/gmail/nossr50/util/MobMetadataUtils.java</affectedPath><affectedPath>Changelog.txt</affectedPath><commitId>6bd8a519d5cf63b91b6e2383754552e96370cfc4</commitId><timestamp>1783565438000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>Read persistent mob flag config once instead of per check
</comment><date>2026-07-08 19:50:38 -0700</date><id>6bd8a519d5cf63b91b6e2383754552e96370cfc4</id><msg>Read persistent mob flag config once instead of per check</msg><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/util/MobMetadataUtils.java</file></path><path><editType>edit</editType><file>Changelog.txt</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>Changelog.txt</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/config/experience/ExperienceConfig.java</affectedPath><commitId>2ee06f48e61e614d8aaf03ca849f6c47040deca9</commitId><timestamp>1783565656000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>Snapshot hot experience.yml settings instead of re-parsing per event
</comment><date>2026-07-08 19:54:16 -0700</date><id>2ee06f48e61e614d8aaf03ca849f6c47040deca9</id><msg>Snapshot hot experience.yml settings instead of re-parsing per event</msg><path><editType>edit</editType><file>Changelog.txt</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/config/experience/ExperienceConfig.java</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/main/java/com/gmail/nossr50/config/GeneralConfig.java</affectedPath><affectedPath>Changelog.txt</affectedPath><commitId>81359ffee9fe7e3b59bd2374c3c7ce5c2d4a989f</commitId><timestamp>1783565812000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>Snapshot hot config.yml settings instead of re-parsing per event
</comment><date>2026-07-08 19:56:52 -0700</date><id>81359ffee9fe7e3b59bd2374c3c7ce5c2d4a989f</id><msg>Snapshot hot config.yml settings instead of re-parsing per event</msg><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/config/GeneralConfig.java</file></path><path><editType>edit</editType><file>Changelog.txt</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>Changelog.txt</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/listeners/EntityListener.java</affectedPath><commitId>90a59838dc4ebbaa8306910d7259d26b780cff8c</commitId><timestamp>1783566040000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>Reorder combat damage gates cheapest-first and drop duplicate checks
</comment><date>2026-07-08 20:00:40 -0700</date><id>90a59838dc4ebbaa8306910d7259d26b780cff8c</id><msg>Reorder combat damage gates cheapest-first and drop duplicate checks</msg><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/listeners/EntityListener.java</file></path><path><editType>edit</editType><file>Changelog.txt</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/main/java/com/gmail/nossr50/listeners/BlockListener.java</affectedPath><affectedPath>Changelog.txt</affectedPath><commitId>02e6711a1f7c98e84a18069efba6237d350840ae</commitId><timestamp>1783566210000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>Exit block drop handling early when no mcMMO metadata is attached
</comment><date>2026-07-08 20:03:30 -0700</date><id>02e6711a1f7c98e84a18069efba6237d350840ae</id><msg>Exit block drop handling early when no mcMMO metadata is attached</msg><path><editType>edit</editType><file>Changelog.txt</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/listeners/BlockListener.java</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/main/java/com/gmail/nossr50/listeners/BlockListener.java</affectedPath><affectedPath>Changelog.txt</affectedPath><commitId>e4308015d5d6d253f885afa074e0b719aabad15f</commitId><timestamp>1783566290000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>Skip fake block damage events before world and region checks
</comment><date>2026-07-08 20:04:50 -0700</date><id>e4308015d5d6d253f885afa074e0b719aabad15f</id><msg>Skip fake block damage events before world and region checks</msg><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/listeners/BlockListener.java</file></path><path><editType>edit</editType><file>Changelog.txt</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/main/java/com/gmail/nossr50/listeners/BlockListener.java</affectedPath><affectedPath>Changelog.txt</affectedPath><commitId>5ebd538ea81045bc64c93730b8bd474d304e4744</commitId><timestamp>1783566415000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>Trim block place and break handlers of redundant snapshots and loops
</comment><date>2026-07-08 20:06:55 -0700</date><id>5ebd538ea81045bc64c93730b8bd474d304e4744</id><msg>Trim block place and break handlers of redundant snapshots and loops</msg><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/listeners/BlockListener.java</file></path><path><editType>edit</editType><file>Changelog.txt</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/main/java/com/gmail/nossr50/listeners/BlockListener.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/listeners/InventoryListener.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/listeners/ChunkListener.java</affectedPath><affectedPath>Changelog.txt</affectedPath><commitId>5c6559d5a0b9422d6a81c89c9eca8883f116ecda</commitId><timestamp>1783566527000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>Fetch chunk entities once on unload and use single brewing stand map lookups
</comment><date>2026-07-08 20:08:47 -0700</date><id>5c6559d5a0b9422d6a81c89c9eca8883f116ecda</id><msg>Fetch chunk entities once on unload and use single brewing stand map lookups</msg><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/listeners/BlockListener.java</file></path><path><editType>edit</editType><file>Changelog.txt</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/listeners/ChunkListener.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/listeners/InventoryListener.java</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/main/java/com/gmail/nossr50/util/player/NotificationManager.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/listeners/SelfListener.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/listeners/PlayerListener.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/listeners/InventoryListener.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/listeners/EntityListener.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/util/skills/CombatUtils.java</affectedPath><affectedPath>Changelog.txt</affectedPath><commitId>4a643dcc81c5612e0fdeb4a2d2674f945d8634c9</commitId><timestamp>1783567326000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>Resolve McMMOPlayer once per event across hot listener paths

Event handlers that null-checked UserManager.getPlayer and then called
it again (sometimes several times) now resolve the McMMOPlayer a single
time and reuse it. Also hoists the NPC-interaction and attacker lookups
out of the applyAbilityAoE loop and gives NotificationManager a
single-lookup notification eligibility check.
</comment><date>2026-07-08 20:22:06 -0700</date><id>4a643dcc81c5612e0fdeb4a2d2674f945d8634c9</id><msg>Resolve McMMOPlayer once per event across hot listener paths</msg><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/listeners/SelfListener.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/listeners/PlayerListener.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/listeners/EntityListener.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/util/player/NotificationManager.java</file></path><path><editType>edit</editType><file>Changelog.txt</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/util/skills/CombatUtils.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/listeners/InventoryListener.java</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/main/java/com/gmail/nossr50/listeners/InventoryListener.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/util/ItemUtils.java</affectedPath><affectedPath>src/test/java/com/gmail/nossr50/util/ItemUtilsTest.java</affectedPath><affectedPath>Changelog.txt</affectedPath><commitId>b495114f99cb212ccb07f1ba18d86c54f72c56be</commitId><timestamp>1783567923000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>Trim repeated work from hot ItemUtils checks

Enchantment presence checks now use ItemStack#containsEnchantment
instead of cloning ItemMeta twice per check, enchantment-by-name
lookups are remembered in a map instead of scanning the registry every
call, isSmelted gains a Material overload so furnace extraction stops
allocating a throwaway ItemStack, Chimaera Wing checks fetch ItemMeta
once, and getRandomEnchantment picks by index instead of shuffling the
treasure book's shared enchantment list on every enchanted-book catch.
</comment><date>2026-07-08 20:32:03 -0700</date><id>b495114f99cb212ccb07f1ba18d86c54f72c56be</id><msg>Trim repeated work from hot ItemUtils checks</msg><path><editType>edit</editType><file>Changelog.txt</file></path><path><editType>edit</editType><file>src/test/java/com/gmail/nossr50/util/ItemUtilsTest.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/util/ItemUtils.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/listeners/InventoryListener.java</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/main/java/com/gmail/nossr50/util/BlockUtils.java</affectedPath><affectedPath>Changelog.txt</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/listeners/EntityListener.java</affectedPath><commitId>7e9dd2a844f4044d42ff37cda2fc427362fef40c</commitId><timestamp>1783568107000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>Stop rebuilding block lookup data on hot BlockUtils paths

isPartOfTree reads the block type once instead of snapshotting the
BlockState (it runs on every block place and axe-readying raycast),
getTransparentBlocks returns a set built once at class load instead of
scanning every Material per call, and onEntityChangeBlock reuses the
snapshot it already took instead of capturing a second one.
</comment><date>2026-07-08 20:35:07 -0700</date><id>7e9dd2a844f4044d42ff37cda2fc427362fef40c</id><msg>Stop rebuilding block lookup data on hot BlockUtils paths</msg><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/listeners/EntityListener.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/util/BlockUtils.java</file></path><path><editType>edit</editType><file>Changelog.txt</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/main/java/com/gmail/nossr50/util/blockmeta/HashChunkManager.java</affectedPath><affectedPath>Changelog.txt</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/util/blockmeta/BitSetChunkStore.java</affectedPath><commitId>348ef94d34712459c8c31105db8128faff2999f4</commitId><timestamp>1783568715000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>Lighten placed-block tracking lookups and chunk store memory

HashChunkManager coordinate keys become a record so map lookups on
every block check stop boxing through Objects.hash, and
BitSetChunkStore lets its BitSet grow on demand instead of
pre-allocating the full world height for every chunk, most of which
track few or no blocks.
</comment><date>2026-07-08 20:45:15 -0700</date><id>348ef94d34712459c8c31105db8128faff2999f4</id><msg>Lighten placed-block tracking lookups and chunk store memory</msg><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/util/blockmeta/HashChunkManager.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/util/blockmeta/BitSetChunkStore.java</file></path><path><editType>edit</editType><file>Changelog.txt</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/main/java/com/gmail/nossr50/util/experience/FormulaManager.java</affectedPath><affectedPath>Changelog.txt</affectedPath><commitId>a1f43be3c1a2958063681ddaa7e994eceaa870d7</commitId><timestamp>1783568732000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>Reduce map traffic in FormulaManager level lookups

XP-to-next-level caches now use computeIfAbsent instead of a
containsKey/put/get triple per lookup, and calculateXPNeeded falls back
to the linear formula without recursing when handed an invalid formula
type.
</comment><date>2026-07-08 20:45:32 -0700</date><id>a1f43be3c1a2958063681ddaa7e994eceaa870d7</id><msg>Reduce map traffic in FormulaManager level lookups</msg><path><editType>edit</editType><file>Changelog.txt</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/util/experience/FormulaManager.java</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>Changelog.txt</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/util/ContainerMetadataUtils.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/util/ItemMetadataUtils.java</affectedPath><commitId>594b8ab40f22bb2367d9afbeae6ac2aa943fb3a7</commitId><timestamp>1783568749000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>Read container and item metadata once per operation

Container ownership processing resolves the current owner a single
time instead of re-reading persistent data (and re-resolving the
OfflinePlayer) for the ownership check, the change, and the debug
message. ItemMetadataUtils methods fetch ItemMeta and the persistent
data value once each, and removing a super ability boost reuses one
meta copy and one Efficiency enchantment lookup.
</comment><date>2026-07-08 20:45:49 -0700</date><id>594b8ab40f22bb2367d9afbeae6ac2aa943fb3a7</id><msg>Read container and item metadata once per operation</msg><path><editType>edit</editType><file>Changelog.txt</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/util/ContainerMetadataUtils.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/util/ItemMetadataUtils.java</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/main/java/com/gmail/nossr50/listeners/InventoryListener.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/locale/LocaleLoader.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/listeners/PlayerListener.java</affectedPath><affectedPath>Changelog.txt</affectedPath><commitId>1a1bffd0c9720c9923c0d09b01d31ffbf30279ae</commitId><timestamp>1783568773000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>Cut per-event work in click, fishing, and command handlers

Inventory clicks return before resolving player data unless the
inventory is a furnace or brewing stand, the fishing catch handler
reads the caught item type and the boosted XP value once, and
localized skill command aliases are looked up from a map built once
per locale generation instead of localizing every skill name on every
command. LocaleLoader gains a generation counter so the alias map
rebuilds after /mcmmoreloadlocale.
</comment><date>2026-07-08 20:46:13 -0700</date><id>1a1bffd0c9720c9923c0d09b01d31ffbf30279ae</id><msg>Cut per-event work in click, fishing, and command handlers</msg><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/listeners/PlayerListener.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/locale/LocaleLoader.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/listeners/InventoryListener.java</file></path><path><editType>edit</editType><file>Changelog.txt</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/main/java/com/gmail/nossr50/datatypes/skills/SubSkillType.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/config/AdvancedConfig.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/mcMMO.java</affectedPath><affectedPath>Changelog.txt</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/config/experience/ExperienceConfig.java</affectedPath><commitId>6d440410796466dd86ade6516f0c96727ab7b769</commitId><timestamp>1783569139000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>Snapshot per-roll and per-event config reads

Skill chance rolls hit AdvancedConfig getMaximumProbability and
getMaxBonusLevel on every RNG check, rebuilding the advanced.yml key
string each time; the addresses are now memoized on SubSkillType like
the permission nodes, and the values live in EnumMaps reset by
loadKeys(). useAttackCooldown, the Archery force multiplier, and the
per-event ExploitFix toggles in experience.yml get the same one-read
treatment. The retro mode flag is now stored before AdvancedConfig
loads since its level scaling reads that flag while validating.
</comment><date>2026-07-08 20:52:19 -0700</date><id>6d440410796466dd86ade6516f0c96727ab7b769</id><msg>Snapshot per-roll and per-event config reads</msg><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/config/AdvancedConfig.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/config/experience/ExperienceConfig.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/datatypes/skills/SubSkillType.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/mcMMO.java</file></path><path><editType>edit</editType><file>Changelog.txt</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/main/java/com/gmail/nossr50/util/nms/NMSVersion.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/util/ModManager.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/util/nms/NMSConstants.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/util/scoreboards/ObjectiveType.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/util/skills/SkillActivationType.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/util/FixSpellingNetheriteUtil.java</affectedPath><affectedPath>Changelog.txt</affectedPath><commitId>97ba6dbe814b021749895ce0a11e5816b23c202d</commitId><timestamp>1783569356000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>Drop ModManager and deprecate unused public classes

ModManager has been a fully commented-out file with zero references
for years, so it is deleted outright. NMSConstants, NMSVersion,
FixSpellingNetheriteUtil, SkillActivationType, and ObjectiveType have
no internal references but are public, so they follow the
deprecate-first policy and are annotated forRemoval instead of
deleted.
</comment><date>2026-07-08 20:55:56 -0700</date><id>97ba6dbe814b021749895ce0a11e5816b23c202d</id><msg>Drop ModManager and deprecate unused public classes</msg><path><editType>delete</editType><file>src/main/java/com/gmail/nossr50/util/ModManager.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/util/nms/NMSVersion.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/util/nms/NMSConstants.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/util/scoreboards/ObjectiveType.java</file></path><path><editType>edit</editType><file>Changelog.txt</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/util/FixSpellingNetheriteUtil.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/util/skills/SkillActivationType.java</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/main/java/com/gmail/nossr50/util/PotionUtil.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/util/BlockUtils.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/util/skills/ParticleEffectUtils.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/util/ItemUtils.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/listeners/BlockListener.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/util/Misc.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/listeners/EntityListener.java</affectedPath><affectedPath>Changelog.txt</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/listeners/PlayerListener.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/util/skills/PerksUtils.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/listeners/InventoryListener.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/util/skills/SkillTools.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/util/skills/SkillUtils.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/util/player/PlayerLevelUtils.java</affectedPath><commitId>804bc9a257ed577f27f10bcb8c7dac07d71e1a06</commitId><timestamp>1783569985000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>Clear out dead code and deprecate orphaned public members

Deletes zero-API-surface dead code: the commented-out Flux Mining,
custom-damage-metadata, item-share, firework shower, and 2014-era Misc
blocks, PlayerLevelUtils commented constructor, the unused private
SpawnOrbTask and hasHeadRoom helpers, an unused local in
getParticleLocation, and the onCraftItem handler whose body had no
remaining effect.

Public members with no remaining callers follow the deprecate-first
policy instead: playAbilityDisabledEffect (now a no-op),
SkillUtils.calculateLengthDisplayValues, both handleLuckyPerks
overloads, getModName, getKeyGetKey, convertPotionConfigName,
FORMATTED_SUBSKILL_NAMES, the size-limited spawnItemsFromCollection,
and the unused ItemUtils enchantment-check overloads.
</comment><date>2026-07-08 21:06:25 -0700</date><id>804bc9a257ed577f27f10bcb8c7dac07d71e1a06</id><msg>Clear out dead code and deprecate orphaned public members</msg><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/listeners/BlockListener.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/util/skills/SkillUtils.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/util/PotionUtil.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/util/skills/ParticleEffectUtils.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/util/skills/SkillTools.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/listeners/EntityListener.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/util/player/PlayerLevelUtils.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/util/skills/PerksUtils.java</file></path><path><editType>edit</editType><file>Changelog.txt</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/listeners/PlayerListener.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/listeners/InventoryListener.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/util/BlockUtils.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/util/ItemUtils.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/util/Misc.java</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/main/java/com/gmail/nossr50/listeners/PlayerListener.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/listeners/BlockListener.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/skills/fishing/FishingManager.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/util/EventUtils.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/skills/herbalism/HerbalismManager.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/util/skills/CombatUtils.java</affectedPath><affectedPath>Changelog.txt</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/skills/mining/MiningManager.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/runnables/skills/AbilityDisableTask.java</affectedPath><commitId>8521f9369418ae31a831c918b1bfd4bb6b2206cf</commitId><timestamp>1783570334000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>Finish the deprecation sweep for existing forRemoval batches

The simulateBlockBreak overloads whose javadoc claimed deprecation
without the annotation now carry a real @Deprecated(forRemoval), and
all internal callers pass FakeBlockBreakEventType.FAKE explicitly.
AbilityDisableTask calls the McMMOPlayer overload of
callAbilityDeactivateEvent instead of the deprecated Player one it
already had the McMMOPlayer for, and CombatUtils loses a duplicate
MobHealthbarUtils import.
</comment><date>2026-07-08 21:12:14 -0700</date><id>8521f9369418ae31a831c918b1bfd4bb6b2206cf</id><msg>Finish the deprecation sweep for existing forRemoval batches</msg><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/util/skills/CombatUtils.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/util/EventUtils.java</file></path><path><editType>edit</editType><file>Changelog.txt</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/skills/herbalism/HerbalismManager.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/main/java/com/gmail/nossr50/listeners/BlockListener.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/listeners/PlayerListener.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/runnables/skills/AbilityDisableTask.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/skills/fishing/FishingManager.java</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>Changelog.txt</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/util/MaterialMapStore.java</affectedPath><commitId>7ce3de3a32ece4ee691b4fa8accdbd793df0ab87</commitId><timestamp>1783570544000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>Fix Green Terra and Green Thumb ignoring dirt paths

The mossy whitelist still listed grass_path, which stopped existing
when Minecraft 1.17 renamed it to dirt_path, so the dirt path
conversion that Herbalism.convertGreenTerraBlocks already supports
could never trigger.
</comment><date>2026-07-08 21:15:44 -0700</date><id>7ce3de3a32ece4ee691b4fa8accdbd793df0ab87</id><msg>Fix Green Terra and Green Thumb ignoring dirt paths</msg><path><editType>edit</editType><file>Changelog.txt</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/util/MaterialMapStore.java</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>Changelog.txt</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/util/MaterialMapStore.java</affectedPath><commitId>a26bc85b412a810d4904f18f346cc41f21df47c0</commitId><timestamp>1783570623000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>Fix Super Breaker ignoring the modern copper block family

The pickaxe block whitelist listed the cut copper slabs and stairs
under their pre-1.17-release snapshot names (lightly_weathered_*,
semi_weathered_*), which were renamed to exposed/weathered/oxidized in
21w05a and have never matched since. The whitelist now carries the
current names for the copper block, cut copper, slab, and stair
families including waxed variants.
</comment><date>2026-07-08 21:17:03 -0700</date><id>a26bc85b412a810d4904f18f346cc41f21df47c0</id><msg>Fix Super Breaker ignoring the modern copper block family</msg><path><editType>edit</editType><file>Changelog.txt</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/util/MaterialMapStore.java</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/main/java/com/gmail/nossr50/util/ItemUtils.java</affectedPath><affectedPath>Changelog.txt</affectedPath><commitId>2fd3e61bac31cbfc5d28ec04ac5df084efa7ac7a</commitId><timestamp>1783570695000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>Add mangrove and cherry logs to the woodcutting drop list

isWoodcuttingDrop categorizes drops for party item sharing but never
learned the mangrove and cherry logs; the stripped mangrove log was
present while its unstripped form was not. Item sharing is currently
disabled at the pickup handler, so this is parity work for when it
returns rather than a player-visible fix.
</comment><date>2026-07-08 21:18:15 -0700</date><id>2fd3e61bac31cbfc5d28ec04ac5df084efa7ac7a</id><msg>Add mangrove and cherry logs to the woodcutting drop list</msg><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/util/ItemUtils.java</file></path><path><editType>edit</editType><file>Changelog.txt</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>Changelog.txt</affectedPath><affectedPath>src/test/java/com/gmail/nossr50/util/MaterialMapStoreTest.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/util/MaterialMapStore.java</affectedPath><commitId>fdfc70de9631158892007ece2ec847ba7cc1b063</commitId><timestamp>1783571054000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>Cull material names that never match and test the registers

twisted_vines_plant was a misspelling of twisting_vines_plant, so
twisting vines never got multi-block plant handling; the name is
corrected. Entries that cannot match any block or item in either
edition are removed: the pre-1.13 wood_/gold_ tool and armor names
(their wooden_/golden_ forms stay), copper_blocks, petrified_oak_stairs,
smooth_stone_stairs, and the cut sandstone stair variants that never
existed.

Bedrock-style identifiers stay on purpose for Bukkit-API servers with
Bedrock naming. A new MaterialMapStoreTest reflects over every register
and fails on any name that neither resolves to a real Material nor sits
on the documented Bedrock-alias or newer-than-test-API allowlists, so
future typos and stale names surface immediately.
</comment><date>2026-07-08 21:24:14 -0700</date><id>fdfc70de9631158892007ece2ec847ba7cc1b063</id><msg>Cull material names that never match and test the registers</msg><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/util/MaterialMapStore.java</file></path><path><editType>edit</editType><file>Changelog.txt</file></path><path><editType>add</editType><file>src/test/java/com/gmail/nossr50/util/MaterialMapStoreTest.java</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>Changelog.txt</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/util/MaterialMapStore.java</affectedPath><commitId>50d99fdc6b1bec4fa59bc0d2239d6c57ff95bc6a</commitId><timestamp>1783571115000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>Guard MaterialMapStore set getters

getNetheriteArmor hands out a copy instead of the live register so
callers cannot corrupt it, and getNetheriteTools, which nothing calls,
is deprecated for removal.
</comment><date>2026-07-08 21:25:15 -0700</date><id>50d99fdc6b1bec4fa59bc0d2239d6c57ff95bc6a</id><msg>Guard MaterialMapStore set getters</msg><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/util/MaterialMapStore.java</file></path><path><editType>edit</editType><file>Changelog.txt</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/main/java/com/gmail/nossr50/util/PotionEffectUtil.java</affectedPath><affectedPath>src/test/java/com/gmail/nossr50/util/PotionEffectUtilTest.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/util/EnchantmentMapper.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/listeners/EntityListener.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/listeners/PlayerListener.java</affectedPath><affectedPath>Changelog.txt</affectedPath><commitId>ccbd598b6fc69280d7648682ed1fb408fc03aea3</commitId><timestamp>1783571452000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>Drop compatibility shims obsoleted by the 1.20.5 floor

PotionEffectUtil returns the HASTE and NAUSEA constants directly
instead of reflecting over legacy field names (its skipped tautological
tests are removed), EnchantmentMapper resolves each enchantment with a
single registry lookup through a shared helper instead of per-
enchantment legacy alias loops, the glow berries food case joins the
Farmers Diet switch it was special-cased around, the bone meal crop
check becomes an EnumSet and drops nether wart block (bone meal cannot
be used on it, and the old case let it clear placed-block tracking),
and armor stand detection compares EntityType instead of strings.
Mannequin stays string-matched since the entity type is newer than the
oldest supported API.
</comment><date>2026-07-08 21:30:52 -0700</date><id>ccbd598b6fc69280d7648682ed1fb408fc03aea3</id><msg>Drop compatibility shims obsoleted by the 1.20.5 floor</msg><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/listeners/EntityListener.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/util/EnchantmentMapper.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/listeners/PlayerListener.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/util/PotionEffectUtil.java</file></path><path><editType>edit</editType><file>Changelog.txt</file></path><path><editType>delete</editType><file>src/test/java/com/gmail/nossr50/util/PotionEffectUtilTest.java</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/main/java/com/gmail/nossr50/listeners/BlockListener.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/listeners/PlayerListener.java</affectedPath><affectedPath>Changelog.txt</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/listeners/ListenerGuards.java</affectedPath><commitId>af1d82e5e5da8a5fdfd0278dde07e7c1527b3dbb</commitId><timestamp>1783571835000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>Introduce a shared listener guard preamble

ListenerGuards.resolveEligiblePlayer runs the standard handler gates in
cheapest-first order (world blacklist, WorldGuard main flag, player
data key, loaded profile) and hands back the McMMOPlayer or null.
Adopted by the block damage handlers, both fishing handlers, and the
item pickup handler, whose preambles matched it verbatim; handlers
with side effects in their gates keep their own logic.
</comment><date>2026-07-08 21:37:15 -0700</date><id>af1d82e5e5da8a5fdfd0278dde07e7c1527b3dbb</id><msg>Introduce a shared listener guard preamble</msg><path><editType>edit</editType><file>Changelog.txt</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/listeners/BlockListener.java</file></path><path><editType>add</editType><file>src/main/java/com/gmail/nossr50/listeners/ListenerGuards.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/listeners/PlayerListener.java</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/main/java/com/gmail/nossr50/listeners/BlockListener.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/util/skills/CombatUtils.java</affectedPath><affectedPath>Changelog.txt</affectedPath><affectedPath>src/test/java/com/gmail/nossr50/util/skills/CombatUtilsTest.java</affectedPath><commitId>52b1197dae5adfb1c45a05523196d42ba0ed4ebf</commitId><timestamp>1783572670000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>Restructure melee combat dispatch and combat XP calculation

resolveMeleeSkill resolves which skill claims a hit in the historical
predicate order and processMeleeCombat dispatches on the result,
replacing six copies of the trigger-toggle/permission/process pattern.
The spear branch no longer falls through into the sword branch thanks
to the resolver being first-match-wins; new parameterized tests lock
the routing. processCombatXP splits into isPvpXpIneligible,
calculatePvpBaseXP, and calculatePveBaseXP helpers.

The ability preparation branches in BlockListener drop their outer
Permissions checks; checkAbilityActivation performs the same check
before activating, so the outer copies only duplicated work and one
of them (Berserk) sat at the wrong precedence level inside the FISTS
condition.
</comment><date>2026-07-08 21:51:10 -0700</date><id>52b1197dae5adfb1c45a05523196d42ba0ed4ebf</id><msg>Restructure melee combat dispatch and combat XP calculation</msg><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/listeners/BlockListener.java</file></path><path><editType>edit</editType><file>Changelog.txt</file></path><path><editType>edit</editType><file>src/test/java/com/gmail/nossr50/util/skills/CombatUtilsTest.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/util/skills/CombatUtils.java</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/main/java/com/gmail/nossr50/util/EventUtils.java</affectedPath><affectedPath>Changelog.txt</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/util/HardcoreManager.java</affectedPath><commitId>5e368956eceadc8e3319208657184cf8206b7c33</commitId><timestamp>1783572885000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>Deduplicate event firing and hardcore penalty skeletons

EventUtils gains a generic callEvent helper that fires an event
through the plugin manager and returns it; the nineteen hand-rolled
dispatch lines now go through it. HardcoreManager resolves each
McMMOPlayer once, shares a putNoChange helper for the four zero-fill
branches, and the two is-enabled-for-any-skill loops collapse into one
predicate-based helper.
</comment><date>2026-07-08 21:54:45 -0700</date><id>5e368956eceadc8e3319208657184cf8206b7c33</id><msg>Deduplicate event firing and hardcore penalty skeletons</msg><path><editType>edit</editType><file>Changelog.txt</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/util/HardcoreManager.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/util/EventUtils.java</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>Changelog.txt</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/util/skills/PerksUtils.java</affectedPath><commitId>7fd07597c9ed10ac971748164216ec97f126511a</commitId><timestamp>1783573037000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>Consolidate the XP perk tiers into an ordered table

handleXpPerks resolves the fixed multiplier tiers through a
record-backed list checked strongest-first instead of an eight-branch
if chain; the custom boost keeps its special handling and every
permission node stays exactly as it was.
</comment><date>2026-07-08 21:57:17 -0700</date><id>7fd07597c9ed10ac971748164216ec97f126511a</id><msg>Consolidate the XP perk tiers into an ordered table</msg><path><editType>edit</editType><file>Changelog.txt</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/util/skills/PerksUtils.java</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/main/java/com/gmail/nossr50/util/player/NotificationManager.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/util/skills/SkillUtils.java</affectedPath><affectedPath>Changelog.txt</affectedPath><commitId>85aa264ca1ea3393b488e0ddf12f75b6bac590b1</commitId><timestamp>1783573246000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>Deduplicate milestone broadcasts in NotificationManager

processLevelUpBroadcasting and processPowerLevelUpBroadcasting shared
their audience/hover/send body almost line for line; both now collapse
their guards into a single early return and delegate to a shared
broadcastMilestone helper. sendNearbyPlayersInformation is deprecated
since it never messaged nearby players despite the name (its one
internal caller now calls sendPlayerInformation directly), and the
misleading could-cache TODO on the per-player broadcast predicate is
gone.
</comment><date>2026-07-08 22:00:46 -0700</date><id>85aa264ca1ea3393b488e0ddf12f75b6bac590b1</id><msg>Deduplicate milestone broadcasts in NotificationManager</msg><path><editType>edit</editType><file>Changelog.txt</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/util/player/NotificationManager.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/util/skills/SkillUtils.java</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/main/java/com/gmail/nossr50/util/scoreboards/ScoreboardWrapper.java</affectedPath><affectedPath>src/test/java/com/gmail/nossr50/util/scoreboards/ScoreboardManagerTest.java</affectedPath><affectedPath>Changelog.txt</affectedPath><affectedPath>src/test/java/com/gmail/nossr50/util/scoreboards/ScoreboardWrapperStatsPowerLevelTest.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/util/scoreboards/ScoreboardManager.java</affectedPath><commitId>db55ce3fb863a1ec4fe84e9336fab5053888510f</commitId><timestamp>1783574094000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>Build scoreboard labels at init time instead of in a static initializer
</comment><date>2026-07-08 22:14:54 -0700</date><id>db55ce3fb863a1ec4fe84e9336fab5053888510f</id><msg>Build scoreboard labels at init time instead of in a static initializer</msg><path><editType>edit</editType><file>Changelog.txt</file></path><path><editType>edit</editType><file>src/test/java/com/gmail/nossr50/util/scoreboards/ScoreboardManagerTest.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/util/scoreboards/ScoreboardWrapper.java</file></path><path><editType>edit</editType><file>src/test/java/com/gmail/nossr50/util/scoreboards/ScoreboardWrapperStatsPowerLevelTest.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/util/scoreboards/ScoreboardManager.java</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>Changelog.txt</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/util/scoreboards/ScoreboardManager.java</affectedPath><commitId>f6b43a6f8b54dac6d9f130e729376ad6e0027c6e</commitId><timestamp>1783574170000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>Stop scoreboard teardown paths from constructing backends
</comment><date>2026-07-08 22:16:10 -0700</date><id>f6b43a6f8b54dac6d9f130e729376ad6e0027c6e</id><msg>Stop scoreboard teardown paths from constructing backends</msg><path><editType>edit</editType><file>Changelog.txt</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/util/scoreboards/ScoreboardManager.java</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/test/java/com/gmail/nossr50/util/scoreboards/ScoreboardManagerTest.java</affectedPath><affectedPath>Changelog.txt</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/util/scoreboards/ScoreboardManager.java</affectedPath><commitId>9b335606aa90595a33f71a92339c8f3ec4976d8e</commitId><timestamp>1783574259000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>Fix handleLevelUp operator precedence scheduling redraws for hidden boards
</comment><date>2026-07-08 22:17:39 -0700</date><id>9b335606aa90595a33f71a92339c8f3ec4976d8e</id><msg>Fix handleLevelUp operator precedence scheduling redraws for hidden boards</msg><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/util/scoreboards/ScoreboardManager.java</file></path><path><editType>edit</editType><file>src/test/java/com/gmail/nossr50/util/scoreboards/ScoreboardManagerTest.java</file></path><path><editType>edit</editType><file>Changelog.txt</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/main/java/com/gmail/nossr50/config/GeneralConfig.java</affectedPath><affectedPath>src/test/java/com/gmail/nossr50/util/scoreboards/ScoreboardManagerTest.java</affectedPath><affectedPath>src/main/resources/config.yml</affectedPath><affectedPath>Changelog.txt</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/util/scoreboards/ScoreboardManager.java</affectedPath><commitId>9f123b485772a7f8f2c5ca5be30f96d140fd7c99</commitId><timestamp>1783574426000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>Deprecate the never-working level-up scoreboard feature and its config keys
</comment><date>2026-07-08 22:20:26 -0700</date><id>9f123b485772a7f8f2c5ca5be30f96d140fd7c99</id><msg>Deprecate the never-working level-up scoreboard feature and its config keys</msg><path><editType>edit</editType><file>Changelog.txt</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/config/GeneralConfig.java</file></path><path><editType>edit</editType><file>src/main/resources/config.yml</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/util/scoreboards/ScoreboardManager.java</file></path><path><editType>edit</editType><file>src/test/java/com/gmail/nossr50/util/scoreboards/ScoreboardManagerTest.java</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>Changelog.txt</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/util/scoreboards/ScoreboardManager.java</affectedPath><commitId>bdcdea731b351eb9ffdf12e67193bc6bb4ae48c3</commitId><timestamp>1783574552000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>Consolidate scoreboard enable/show methods behind a single helper
</comment><date>2026-07-08 22:22:32 -0700</date><id>bdcdea731b351eb9ffdf12e67193bc6bb4ae48c3</id><msg>Consolidate scoreboard enable/show methods behind a single helper</msg><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/util/scoreboards/ScoreboardManager.java</file></path><path><editType>edit</editType><file>Changelog.txt</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>Changelog.txt</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/util/scoreboards/ScoreboardWrapper.java</affectedPath><commitId>c2889784a369db8a0e289b2837f53c7adc2bae33</commitId><timestamp>1783574641000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>Deduplicate scoreboard show logic and drop unreachable stats branch
</comment><date>2026-07-08 22:24:01 -0700</date><id>c2889784a369db8a0e289b2837f53c7adc2bae33</id><msg>Deduplicate scoreboard show logic and drop unreachable stats branch</msg><path><editType>edit</editType><file>Changelog.txt</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/util/scoreboards/ScoreboardWrapper.java</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>Changelog.txt</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/util/scoreboards/ScoreboardWrapper.java</affectedPath><commitId>e459890547c754d8f9a0d19be9c55ff848ff8877</commitId><timestamp>1783574719000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>Consolidate scoreboard task cancellation and make close-out exception-safe
</comment><date>2026-07-08 22:25:19 -0700</date><id>e459890547c754d8f9a0d19be9c55ff848ff8877</id><msg>Consolidate scoreboard task cancellation and make close-out exception-safe</msg><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/util/scoreboards/ScoreboardWrapper.java</file></path><path><editType>edit</editType><file>Changelog.txt</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/main/java/com/gmail/nossr50/util/scoreboards/backend/BukkitScoreboardBackend.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/util/scoreboards/backend/BukkitPlayerBoard.java</affectedPath><affectedPath>Changelog.txt</affectedPath><commitId>f84d0ac37a68a5a289722938e8d82373a92fcc52</commitId><timestamp>1783574783000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>Share the power level objective name across Bukkit scoreboard classes
</comment><date>2026-07-08 22:26:23 -0700</date><id>f84d0ac37a68a5a289722938e8d82373a92fcc52</id><msg>Share the power level objective name across Bukkit scoreboard classes</msg><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/util/scoreboards/backend/BukkitScoreboardBackend.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/util/scoreboards/backend/BukkitPlayerBoard.java</file></path><path><editType>edit</editType><file>Changelog.txt</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/main/java/com/gmail/nossr50/util/experience/ExperienceBarManager.java</affectedPath><affectedPath>Changelog.txt</affectedPath><commitId>f8b6b92a6c06e8ab49dba0fe1ff259a75c798d86</commitId><timestamp>1783574871000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>Remove cancelled XP bar hide tasks from the pending-task map
</comment><date>2026-07-08 22:27:51 -0700</date><id>f8b6b92a6c06e8ab49dba0fe1ff259a75c798d86</id><msg>Remove cancelled XP bar hide tasks from the pending-task map</msg><path><editType>edit</editType><file>Changelog.txt</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/util/experience/ExperienceBarManager.java</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/main/java/com/gmail/nossr50/util/experience/ExperienceBarManager.java</affectedPath><affectedPath>src/test/java/com/gmail/nossr50/util/experience/ExperienceBarManagerTest.java</affectedPath><affectedPath>Changelog.txt</affectedPath><commitId>9f106b85230a1828fe9e127a63d5b1d2d4b82f90</commitId><timestamp>1783575043000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>Silence per-skill chat spam when disabling all XP bars at once
</comment><date>2026-07-08 22:30:43 -0700</date><id>9f106b85230a1828fe9e127a63d5b1d2d4b82f90</id><msg>Silence per-skill chat spam when disabling all XP bars at once</msg><path><editType>edit</editType><file>Changelog.txt</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/util/experience/ExperienceBarManager.java</file></path><path><editType>add</editType><file>src/test/java/com/gmail/nossr50/util/experience/ExperienceBarManagerTest.java</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/main/java/com/gmail/nossr50/config/GeneralConfig.java</affectedPath><affectedPath>src/main/resources/config.yml</affectedPath><affectedPath>Changelog.txt</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/util/scoreboards/ScoreboardManager.java</affectedPath><commitId>65d0f340ae4f5cbf56530bf948ce2fbd6675233f</commitId><timestamp>1783575162000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>Remove the dead LevelUp_Board and LevelUp_Time keys from config.yml
</comment><date>2026-07-08 22:32:42 -0700</date><id>65d0f340ae4f5cbf56530bf948ce2fbd6675233f</id><msg>Remove the dead LevelUp_Board and LevelUp_Time keys from config.yml</msg><path><editType>edit</editType><file>src/main/resources/config.yml</file></path><path><editType>edit</editType><file>Changelog.txt</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/config/GeneralConfig.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/util/scoreboards/ScoreboardManager.java</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>Changelog.txt</affectedPath><affectedPath>src/test/java/com/gmail/nossr50/util/blockmeta/UserBlockTrackerTest.java</affectedPath><commitId>10db2062d0d06085ec6c0f0b209c7471835d3a6b</commitId><timestamp>1783575668000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>Add placed-block round-trip and region segment growth tests
</comment><date>2026-07-08 22:41:08 -0700</date><id>10db2062d0d06085ec6c0f0b209c7471835d3a6b</id><msg>Add placed-block round-trip and region segment growth tests</msg><path><editType>edit</editType><file>Changelog.txt</file></path><path><editType>edit</editType><file>src/test/java/com/gmail/nossr50/util/blockmeta/UserBlockTrackerTest.java</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/test/java/com/gmail/nossr50/util/blockmeta/UserBlockTrackerTest.java</affectedPath><affectedPath>Changelog.txt</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/util/blockmeta/McMMOSimpleRegionFile.java</affectedPath><commitId>e5db22e7ccbb11c3c2326f185befcbf3b9541aa0</commitId><timestamp>1783575835000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>Harden region file opening against corrupt headers and handle leaks
</comment><date>2026-07-08 22:43:55 -0700</date><id>e5db22e7ccbb11c3c2326f185befcbf3b9541aa0</id><msg>Harden region file opening against corrupt headers and handle leaks</msg><path><editType>edit</editType><file>src/test/java/com/gmail/nossr50/util/blockmeta/UserBlockTrackerTest.java</file></path><path><editType>edit</editType><file>Changelog.txt</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/util/blockmeta/McMMOSimpleRegionFile.java</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/main/java/com/gmail/nossr50/util/blockmeta/HashChunkManager.java</affectedPath><affectedPath>Changelog.txt</affectedPath><commitId>fadf9701c995916f315c1bd4c7d4043e6bafaeb5</commitId><timestamp>1783575938000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>Log-and-degrade placed-block save failures at the manager boundary
</comment><date>2026-07-08 22:45:38 -0700</date><id>fadf9701c995916f315c1bd4c7d4043e6bafaeb5</id><msg>Log-and-degrade placed-block save failures at the manager boundary</msg><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/util/blockmeta/HashChunkManager.java</file></path><path><editType>edit</editType><file>Changelog.txt</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/main/java/com/gmail/nossr50/util/blockmeta/McMMORegionBackupStore.java</affectedPath><affectedPath>src/test/java/com/gmail/nossr50/util/blockmeta/McMMORegionBackupStoreTest.java</affectedPath><affectedPath>src/test/java/com/gmail/nossr50/util/blockmeta/McMMORegionBackupStoreStressTest.java</affectedPath><affectedPath>Changelog.txt</affectedPath><commitId>332ae33d6f3c8d2ba7e1c8211e31a3285b8cc5ae</commitId><timestamp>1783576220000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>Polish backup store logging, clock threading, and merge resource handling
</comment><date>2026-07-08 22:50:20 -0700</date><id>332ae33d6f3c8d2ba7e1c8211e31a3285b8cc5ae</id><msg>Polish backup store logging, clock threading, and merge resource handling</msg><path><editType>edit</editType><file>Changelog.txt</file></path><path><editType>edit</editType><file>src/test/java/com/gmail/nossr50/util/blockmeta/McMMORegionBackupStoreTest.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/util/blockmeta/McMMORegionBackupStore.java</file></path><path><editType>edit</editType><file>src/test/java/com/gmail/nossr50/util/blockmeta/McMMORegionBackupStoreStressTest.java</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/main/java/com/gmail/nossr50/util/commands/CommandRegistrationManager.java</affectedPath><affectedPath>Changelog.txt</affectedPath><commitId>90f5bc55a02d56893d02cc9078ab353003a819c0</commitId><timestamp>1783576586000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>Make command registration data-driven with a single wiring path
</comment><date>2026-07-08 22:56:26 -0700</date><id>90f5bc55a02d56893d02cc9078ab353003a819c0</id><msg>Make command registration data-driven with a single wiring path</msg><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/util/commands/CommandRegistrationManager.java</file></path><path><editType>edit</editType><file>Changelog.txt</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/main/resources/plugin.yml</affectedPath><affectedPath>Changelog.txt</affectedPath><affectedPath>src/test/java/com/gmail/nossr50/util/commands/CommandRegistrationManagerTest.java</affectedPath><commitId>b99c27ac94fba5c1870433f86da1e25dafed20b9</commitId><timestamp>1783576691000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>Remove the dead mmocompat command and add registration coverage test
</comment><date>2026-07-08 22:58:11 -0700</date><id>b99c27ac94fba5c1870433f86da1e25dafed20b9</id><msg>Remove the dead mmocompat command and add registration coverage test</msg><path><editType>edit</editType><file>src/main/resources/plugin.yml</file></path><path><editType>add</editType><file>src/test/java/com/gmail/nossr50/util/commands/CommandRegistrationManagerTest.java</file></path><path><editType>edit</editType><file>Changelog.txt</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/main/java/com/gmail/nossr50/util/text/McMMOMessageType.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/util/text/StringUtils.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/util/text/TextComponentFactory.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/util/text/ConfigStringUtils.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/util/Motd.java</affectedPath><affectedPath>Changelog.txt</affectedPath><commitId>1f0be8d8359d4ab22bb7318182b71450ba2b92e5</commitId><timestamp>1783577008000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>Consolidate text formatting helpers and refresh MOTD strings per display
</comment><date>2026-07-08 23:03:28 -0700</date><id>1f0be8d8359d4ab22bb7318182b71450ba2b92e5</id><msg>Consolidate text formatting helpers and refresh MOTD strings per display</msg><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/util/text/StringUtils.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/util/text/ConfigStringUtils.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/util/Motd.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/util/text/McMMOMessageType.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/util/text/TextComponentFactory.java</file></path><path><editType>edit</editType><file>Changelog.txt</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/main/java/com/gmail/nossr50/util/sounds/SoundManager.java</affectedPath><affectedPath>Changelog.txt</affectedPath><commitId>d2a76396d71539e831fa21fada5f864fee21c82c</commitId><timestamp>1783577111000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>Funnel sound send methods through one shared core
</comment><date>2026-07-08 23:05:11 -0700</date><id>d2a76396d71539e831fa21fada5f864fee21c82c</id><msg>Funnel sound send methods through one shared core</msg><path><editType>edit</editType><file>Changelog.txt</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/util/sounds/SoundManager.java</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/main/java/com/gmail/nossr50/mcMMO.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/listeners/InteractionManager.java</affectedPath><affectedPath>Changelog.txt</affectedPath><commitId>e93c7ecf603bd55e84e8e30fe5fb04fd77bae496</commitId><timestamp>1783577285000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>Guard subskill registration against duplicates and drop lazy map init
</comment><date>2026-07-08 23:08:05 -0700</date><id>e93c7ecf603bd55e84e8e30fe5fb04fd77bae496</id><msg>Guard subskill registration against duplicates and drop lazy map init</msg><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/mcMMO.java</file></path><path><editType>edit</editType><file>Changelog.txt</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/listeners/InteractionManager.java</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/main/java/com/gmail/nossr50/util/skills/SkillTools.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/util/MaterialMapStore.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/util/skills/SkillUtils.java</affectedPath><affectedPath>Changelog.txt</affectedPath><commitId>47219f88bca1cd6358faf605ac9008f9e2f91e2b</commitId><timestamp>1783577516000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>Dedupe subskill checks, freeze subskill sets, accept English skill names on any locale
</comment><date>2026-07-08 23:11:56 -0700</date><id>47219f88bca1cd6358faf605ac9008f9e2f91e2b</id><msg>Dedupe subskill checks, freeze subskill sets, accept English skill names on any locale</msg><path><editType>edit</editType><file>Changelog.txt</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/util/skills/SkillTools.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/util/skills/SkillUtils.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/util/MaterialMapStore.java</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/main/java/com/gmail/nossr50/mcMMO.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/util/MetadataConstants.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/listeners/EntityListener.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/util/skills/CombatUtils.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/util/AttributeMapper.java</affectedPath><affectedPath>Changelog.txt</affectedPath><commitId>6db314f3216b327a656a2e26003b069748cfd2ba</commitId><timestamp>1783577731000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>Trim mob metadata cleanup keys, lazy metadata flag value, fix attribute constants
</comment><date>2026-07-08 23:15:31 -0700</date><id>6db314f3216b327a656a2e26003b069748cfd2ba</id><msg>Trim mob metadata cleanup keys, lazy metadata flag value, fix attribute constants</msg><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/util/skills/CombatUtils.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/listeners/EntityListener.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/util/MetadataConstants.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/mcMMO.java</file></path><path><editType>edit</editType><file>Changelog.txt</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/util/AttributeMapper.java</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/main/java/com/gmail/nossr50/util/adapter/BiomeAdapter.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/util/ReflectionUtils.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/util/sounds/SoundManager.java</affectedPath><affectedPath>Changelog.txt</affectedPath><commitId>1450f3afce4665ffe961e86b401b5d1563eba5ca</commitId><timestamp>1783577896000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>Share a graceful reflective valueOf helper across version shims
</comment><date>2026-07-08 23:18:16 -0700</date><id>1450f3afce4665ffe961e86b401b5d1563eba5ca</id><msg>Share a graceful reflective valueOf helper across version shims</msg><path><editType>add</editType><file>src/main/java/com/gmail/nossr50/util/ReflectionUtils.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/util/sounds/SoundManager.java</file></path><path><editType>edit</editType><file>Changelog.txt</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/util/adapter/BiomeAdapter.java</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/main/java/com/gmail/nossr50/listeners/InventoryListener.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/util/ItemUtils.java</affectedPath><affectedPath>Changelog.txt</affectedPath><commitId>beec5a48a4c1395d0bff85b8313d6114196d2c48</commitId><timestamp>1783578040000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>Flatten furnace fuel handler, dedupe item spawn methods, trim vector copies
</comment><date>2026-07-08 23:20:40 -0700</date><id>beec5a48a4c1395d0bff85b8313d6114196d2c48</id><msg>Flatten furnace fuel handler, dedupe item spawn methods, trim vector copies</msg><path><editType>edit</editType><file>Changelog.txt</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/listeners/InventoryListener.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/util/ItemUtils.java</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/test/java/com/gmail/nossr50/listeners/EntityListenerTest.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/listeners/FriendlyFire.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/listeners/EntityListener.java</affectedPath><affectedPath>src/test/java/com/gmail/nossr50/listeners/FriendlyFireTest.java</affectedPath><affectedPath>Changelog.txt</affectedPath><commitId>6f6fb56b45555d05789f7222f69926f4fde4878c</commitId><timestamp>1783578455000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>Extract pure friendly-fire resolver and stop cancelling combust for unloaded data
</comment><date>2026-07-08 23:27:35 -0700</date><id>6f6fb56b45555d05789f7222f69926f4fde4878c</id><msg>Extract pure friendly-fire resolver and stop cancelling combust for unloaded data</msg><path><editType>add</editType><file>src/main/java/com/gmail/nossr50/listeners/FriendlyFire.java</file></path><path><editType>add</editType><file>src/test/java/com/gmail/nossr50/listeners/FriendlyFireTest.java</file></path><path><editType>edit</editType><file>Changelog.txt</file></path><path><editType>edit</editType><file>src/test/java/com/gmail/nossr50/listeners/EntityListenerTest.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/listeners/EntityListener.java</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/test/java/com/gmail/nossr50/listeners/DietFoodsTest.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/listeners/DietFoods.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/listeners/EntityListener.java</affectedPath><affectedPath>Changelog.txt</affectedPath><commitId>48b5e12014e2a16b3ffe55582124ad2b4fd1d1ff</commitId><timestamp>1783578601000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>Extract diet food mapping and eaten-hand resolution from the food listener
</comment><date>2026-07-08 23:30:01 -0700</date><id>48b5e12014e2a16b3ffe55582124ad2b4fd1d1ff</id><msg>Extract diet food mapping and eaten-hand resolution from the food listener</msg><path><editType>add</editType><file>src/main/java/com/gmail/nossr50/listeners/DietFoods.java</file></path><path><editType>add</editType><file>src/test/java/com/gmail/nossr50/listeners/DietFoodsTest.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/listeners/EntityListener.java</file></path><path><editType>edit</editType><file>Changelog.txt</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/main/java/com/gmail/nossr50/skills/mining/BlastMining.java</affectedPath><affectedPath>src/test/java/com/gmail/nossr50/skills/mining/BlastMiningTest.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/listeners/EntityListener.java</affectedPath><affectedPath>Changelog.txt</affectedPath><commitId>861843093834e336243333eb6bcb184220e16206</commitId><timestamp>1783578755000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>Extract tracked-TNT owner resolution with tests
</comment><date>2026-07-08 23:32:35 -0700</date><id>861843093834e336243333eb6bcb184220e16206</id><msg>Extract tracked-TNT owner resolution with tests</msg><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/skills/mining/BlastMining.java</file></path><path><editType>add</editType><file>src/test/java/com/gmail/nossr50/skills/mining/BlastMiningTest.java</file></path><path><editType>edit</editType><file>Changelog.txt</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/listeners/EntityListener.java</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/test/java/com/gmail/nossr50/listeners/DiminishedReturnsTest.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/listeners/DiminishedReturns.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/listeners/SelfListener.java</affectedPath><affectedPath>Changelog.txt</affectedPath><commitId>024ffd3654429d376ab259cb92ca714df1c85d8a</commitId><timestamp>1783578908000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>Extract diminished-returns XP math into a tested pure formula
</comment><date>2026-07-08 23:35:08 -0700</date><id>024ffd3654429d376ab259cb92ca714df1c85d8a</id><msg>Extract diminished-returns XP math into a tested pure formula</msg><path><editType>add</editType><file>src/main/java/com/gmail/nossr50/listeners/DiminishedReturns.java</file></path><path><editType>edit</editType><file>Changelog.txt</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/listeners/SelfListener.java</file></path><path><editType>add</editType><file>src/test/java/com/gmail/nossr50/listeners/DiminishedReturnsTest.java</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/main/java/com/gmail/nossr50/listeners/BlockListener.java</affectedPath><affectedPath>src/test/java/com/gmail/nossr50/listeners/BonusDropsTest.java</affectedPath><affectedPath>Changelog.txt</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/listeners/BonusDrops.java</affectedPath><commitId>030dc36c812dd36027801f56a6ecf41e62f359f0</commitId><timestamp>1783579053000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>Extract bonus-drop trust analysis into a tested helper
</comment><date>2026-07-08 23:37:33 -0700</date><id>030dc36c812dd36027801f56a6ecf41e62f359f0</id><msg>Extract bonus-drop trust analysis into a tested helper</msg><path><editType>edit</editType><file>Changelog.txt</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/listeners/BlockListener.java</file></path><path><editType>add</editType><file>src/test/java/com/gmail/nossr50/listeners/BonusDropsTest.java</file></path><path><editType>add</editType><file>src/main/java/com/gmail/nossr50/listeners/BonusDrops.java</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/main/java/com/gmail/nossr50/listeners/AnvilInteraction.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/listeners/PlayerListener.java</affectedPath><affectedPath>src/test/java/com/gmail/nossr50/listeners/AnvilInteractionTest.java</affectedPath><affectedPath>Changelog.txt</affectedPath><commitId>606ba580c2ecd23d3ab5764560202a2dbc627f51</commitId><timestamp>1783579210000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>Extract repair/salvage anvil decision ladder into a tested resolver
</comment><date>2026-07-08 23:40:10 -0700</date><id>606ba580c2ecd23d3ab5764560202a2dbc627f51</id><msg>Extract repair/salvage anvil decision ladder into a tested resolver</msg><path><editType>add</editType><file>src/test/java/com/gmail/nossr50/listeners/AnvilInteractionTest.java</file></path><path><editType>edit</editType><file>Changelog.txt</file></path><path><editType>add</editType><file>src/main/java/com/gmail/nossr50/listeners/AnvilInteraction.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/listeners/PlayerListener.java</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/main/java/com/gmail/nossr50/listeners/BlockListener.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/listeners/EntityListener.java</affectedPath><affectedPath>src/test/java/com/gmail/nossr50/listeners/PlayerListenerSalvageInteractTest.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/listeners/PlayerListener.java</affectedPath><affectedPath>Changelog.txt</affectedPath><commitId>648a2603ad20f217833e6dc0f2d6514bb7219fed</commitId><timestamp>1783579874000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>Stop mutating fishing, interact, and block damage events at MONITOR priority
</comment><date>2026-07-08 23:51:14 -0700</date><id>648a2603ad20f217833e6dc0f2d6514bb7219fed</id><msg>Stop mutating fishing, interact, and block damage events at MONITOR priority</msg><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/listeners/BlockListener.java</file></path><path><editType>edit</editType><file>Changelog.txt</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/listeners/EntityListener.java</file></path><path><editType>edit</editType><file>src/test/java/com/gmail/nossr50/listeners/PlayerListenerSalvageInteractTest.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/listeners/PlayerListener.java</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/main/java/com/gmail/nossr50/util/PotionUtil.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/skills/swords/SwordsManager.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/datatypes/player/McMMOPlayer.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/util/MaterialMapStore.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/util/skills/ParticleEffectUtils.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/skills/maces/MacesManager.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/skills/spears/SpearsManager.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/util/skills/SkillActivationType.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/skills/unarmed/UnarmedManager.java</affectedPath><affectedPath>pom.xml</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/util/skills/PerksUtils.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/config/GeneralConfig.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/util/random/ProbabilityUtil.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/util/FixSpellingNetheriteUtil.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/util/EventUtils.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/util/player/NotificationManager.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/config/AdvancedConfig.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/util/nms/NMSVersion.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/util/ItemUtils.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/util/Motd.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/skills/axes/AxesManager.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/util/scoreboards/ObjectiveType.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/util/Misc.java</affectedPath><affectedPath>Changelog.txt</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/util/MetadataConstants.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/util/scoreboards/ScoreboardManager.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/util/nms/NMSConstants.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/listeners/InteractionManager.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/util/skills/SkillTools.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/util/skills/SkillUtils.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/util/skills/CombatUtils.java</affectedPath><commitId>807cab15b74c079240fca440fe1b757edc72e8dc</commitId><timestamp>1783581479000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>Bump version to 2.3.000-SNAPSHOT
</comment><date>2026-07-09 00:17:59 -0700</date><id>807cab15b74c079240fca440fe1b757edc72e8dc</id><msg>Bump version to 2.3.000-SNAPSHOT</msg><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/util/scoreboards/ScoreboardManager.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/config/GeneralConfig.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/skills/spears/SpearsManager.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/util/skills/ParticleEffectUtils.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/util/player/NotificationManager.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/util/EventUtils.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/util/FixSpellingNetheriteUtil.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/util/scoreboards/ObjectiveType.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/util/Motd.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/skills/unarmed/UnarmedManager.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/util/skills/SkillActivationType.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/listeners/InteractionManager.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/skills/maces/MacesManager.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/util/random/ProbabilityUtil.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/util/MetadataConstants.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/util/MaterialMapStore.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/util/Misc.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/util/nms/NMSConstants.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/util/PotionUtil.java</file></path><path><editType>edit</editType><file>pom.xml</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/util/skills/PerksUtils.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/skills/swords/SwordsManager.java</file></path><path><editType>edit</editType><file>Changelog.txt</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/util/skills/SkillUtils.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/util/skills/SkillTools.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/datatypes/player/McMMOPlayer.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/util/ItemUtils.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/skills/axes/AxesManager.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/config/AdvancedConfig.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/util/nms/NMSVersion.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/util/skills/CombatUtils.java</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>Changelog.txt</affectedPath><commitId>9b76ac274d13f7165fb0dff410ed7144a4a4be11</commitId><timestamp>1783582276000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>Condense the 2.3.000 changelog
</comment><date>2026-07-09 00:31:16 -0700</date><id>9b76ac274d13f7165fb0dff410ed7144a4a4be11</id><msg>Condense the 2.3.000 changelog</msg><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></culprit></build><build _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>330</buildNumber><marked><SHA1>bc1bcb89cf4ae8b92655c579ab6ce7446df538fb</SHA1><branch><SHA1>bc1bcb89cf4ae8b92655c579ab6ce7446df538fb</SHA1><name>refs/remotes/origin/master</name></branch></marked><revision><SHA1>bc1bcb89cf4ae8b92655c579ab6ce7446df538fb</SHA1><branch><SHA1>bc1bcb89cf4ae8b92655c579ab6ce7446df538fb</SHA1><name>refs/remotes/origin/master</name></branch></revision></refsremotesoriginmaster></buildsByBranchName><lastBuiltRevision><SHA1>bc1bcb89cf4ae8b92655c579ab6ce7446df538fb</SHA1><branch><SHA1>bc1bcb89cf4ae8b92655c579ab6ce7446df538fb</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><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>#330</displayName><duration>70482</duration><estimatedDuration>66335</estimatedDuration><fullDisplayName>mcMMO #330</fullDisplayName><id>330</id><inProgress>false</inProgress><keepLog>false</keepLog><number>330</number><queueId>200</queueId><result>SUCCESS</result><timestamp>1783470850964</timestamp><url>https://popicraft.net/jenkins/job/mcMMO/330/</url><builtOn>Builder</builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/main/java/com/gmail/nossr50/skills/swords/SwordsManager.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/datatypes/player/McMMOPlayer.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/skills/axes/AxesManager.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/skills/maces/MacesManager.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/skills/spears/SpearsManager.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/skills/unarmed/UnarmedManager.java</affectedPath><affectedPath>src/test/java/com/gmail/nossr50/skills/axes/AxesManagerTest.java</affectedPath><affectedPath>src/test/java/com/gmail/nossr50/skills/swords/SwordsManagerTest.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/util/skills/CombatUtils.java</affectedPath><affectedPath>Changelog.txt</affectedPath><affectedPath>src/test/java/com/gmail/nossr50/skills/unarmed/UnarmedManagerTest.java</affectedPath><commitId>88f062789a52633f3e84ac97558b657649e10cfa</commitId><timestamp>1783458987000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>Fix combat effects reading stale attack cooldown on Paper 26.1.2+

Paper 26.1.2 resets the attack strength ticker before
EntityDamageByEntityEvent fires, so Player.getAttackCooldown() reads
~0.1 during damage processing. 2.2.053 fixed the damage bonus scaling
in CombatUtils, but everything that still read the cooldown through
McMMOPlayer#getAttackStrength() stayed broken:

- Berserk's +50% bonus went negative, reducing a 9.0 damage punch to
  ~1.35 instead of boosting it to 13.5
- Skull Splitter AoE damage was cut to ~10%
- On-hit odds for Disarm, Rupture (also via Serrated Strikes), Cripple,
  Momentum, Critical Strikes, Armor Impact, and Greater Impact were cut
  to ~10%

These now take the attack strength scale that CombatUtils back-derives
from the damage event. The old signatures and
McMMOPlayer#getAttackStrength are deprecated.
</comment><date>2026-07-07 14:16:27 -0700</date><id>88f062789a52633f3e84ac97558b657649e10cfa</id><msg>Fix combat effects reading stale attack cooldown on Paper 26.1.2+</msg><path><editType>edit</editType><file>Changelog.txt</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/skills/swords/SwordsManager.java</file></path><path><editType>add</editType><file>src/test/java/com/gmail/nossr50/skills/swords/SwordsManagerTest.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/util/skills/CombatUtils.java</file></path><path><editType>add</editType><file>src/test/java/com/gmail/nossr50/skills/unarmed/UnarmedManagerTest.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/skills/spears/SpearsManager.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/skills/axes/AxesManager.java</file></path><path><editType>add</editType><file>src/test/java/com/gmail/nossr50/skills/axes/AxesManagerTest.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/skills/unarmed/UnarmedManager.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/datatypes/player/McMMOPlayer.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/skills/maces/MacesManager.java</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/main/java/com/gmail/nossr50/config/AdvancedConfig.java</affectedPath><affectedPath>src/main/resources/advanced.yml</affectedPath><affectedPath>Changelog.txt</affectedPath><commitId>fbab8db85b03ee1fe607ed51557c9670b3d94d5e</commitId><timestamp>1783459219000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>Make action bar unlock messages a deliberate opt-in

Routing skill rank unlock messages to the action bar is now controlled
by a new Feedback.ActionBarNotifications.SubSkillUnlocked.UseActionBar
key in advanced.yml, defaulting to false.

The previous approach honored the existing SubSkillUnlocked.Enabled
key, but configs from older versions already contain 'Enabled: true'
from back when the setting had no effect, so updating would have
silently moved unlock messages to the action bar on those servers. The
Enabled key is now ignored for this section; unlock messages stay in
chat unless an admin explicitly sets UseActionBar to true.
</comment><date>2026-07-07 14:20:19 -0700</date><id>fbab8db85b03ee1fe607ed51557c9670b3d94d5e</id><msg>Make action bar unlock messages a deliberate opt-in</msg><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/config/AdvancedConfig.java</file></path><path><editType>edit</editType><file>Changelog.txt</file></path><path><editType>edit</editType><file>src/main/resources/advanced.yml</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/main/java/com/gmail/nossr50/config/AdvancedConfig.java</affectedPath><affectedPath>src/main/resources/advanced.yml</affectedPath><affectedPath>Changelog.txt</affectedPath><commitId>bc1bcb89cf4ae8b92655c579ab6ce7446df538fb</commitId><timestamp>1783470440000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>Rename SubSkillUnlocked opt-in key to SendToActionBar

SendToActionBar matches the naming of the sibling
SendCopyOfMessageToChat key; UseActionBar matched nothing else in
advanced.yml. The key is unreleased so no migration is needed.
</comment><date>2026-07-07 17:27:20 -0700</date><id>bc1bcb89cf4ae8b92655c579ab6ce7446df538fb</id><msg>Rename SubSkillUnlocked opt-in key to SendToActionBar</msg><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/config/AdvancedConfig.java</file></path><path><editType>edit</editType><file>Changelog.txt</file></path><path><editType>edit</editType><file>src/main/resources/advanced.yml</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></culprit></build><build _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>329</buildNumber><marked><SHA1>023ef41ec6675dfc1eca2e102009e355bf233f04</SHA1><branch><SHA1>023ef41ec6675dfc1eca2e102009e355bf233f04</SHA1><name>refs/remotes/origin/master</name></branch></marked><revision><SHA1>023ef41ec6675dfc1eca2e102009e355bf233f04</SHA1><branch><SHA1>023ef41ec6675dfc1eca2e102009e355bf233f04</SHA1><name>refs/remotes/origin/master</name></branch></revision></refsremotesoriginmaster></buildsByBranchName><lastBuiltRevision><SHA1>023ef41ec6675dfc1eca2e102009e355bf233f04</SHA1><branch><SHA1>023ef41ec6675dfc1eca2e102009e355bf233f04</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><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>#329</displayName><duration>53645</duration><estimatedDuration>66335</estimatedDuration><fullDisplayName>mcMMO #329</fullDisplayName><id>329</id><inProgress>false</inProgress><keepLog>false</keepLog><number>329</number><queueId>199</queueId><result>SUCCESS</result><timestamp>1783410549513</timestamp><url>https://popicraft.net/jenkins/job/mcMMO/329/</url><builtOn>Builder</builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>Changelog.txt</affectedPath><commitId>3bf79bfd9633b7482815421931445dbff1642981</commitId><timestamp>1783409096000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>Update changelog
</comment><date>2026-07-07 00:24:56 -0700</date><id>3bf79bfd9633b7482815421931445dbff1642981</id><msg>Update changelog</msg><path><editType>edit</editType><file>Changelog.txt</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>Changelog.txt</affectedPath><commitId>50c5f670554747a33b0bb7bf27c9a3b396c2d7b7</commitId><timestamp>1783409750000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>Update changelog
</comment><date>2026-07-07 00:35:50 -0700</date><id>50c5f670554747a33b0bb7bf27c9a3b396c2d7b7</id><msg>Update changelog</msg><path><editType>edit</editType><file>Changelog.txt</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>Changelog.txt</affectedPath><commitId>023ef41ec6675dfc1eca2e102009e355bf233f04</commitId><timestamp>1783409891000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>Update changelog
</comment><date>2026-07-07 00:38:11 -0700</date><id>023ef41ec6675dfc1eca2e102009e355bf233f04</id><msg>Update changelog</msg><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></culprit></build><build _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>328</buildNumber><marked><SHA1>9fe5731a229f180386880ad1fbc289808650b558</SHA1><branch><SHA1>9fe5731a229f180386880ad1fbc289808650b558</SHA1><name>refs/remotes/origin/master</name></branch></marked><revision><SHA1>9fe5731a229f180386880ad1fbc289808650b558</SHA1><branch><SHA1>9fe5731a229f180386880ad1fbc289808650b558</SHA1><name>refs/remotes/origin/master</name></branch></revision></refsremotesoriginmaster></buildsByBranchName><lastBuiltRevision><SHA1>9fe5731a229f180386880ad1fbc289808650b558</SHA1><branch><SHA1>9fe5731a229f180386880ad1fbc289808650b558</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><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>#328</displayName><duration>53553</duration><estimatedDuration>66335</estimatedDuration><fullDisplayName>mcMMO #328</fullDisplayName><id>328</id><inProgress>false</inProgress><keepLog>false</keepLog><number>328</number><queueId>198</queueId><result>SUCCESS</result><timestamp>1783409649554</timestamp><url>https://popicraft.net/jenkins/job/mcMMO/328/</url><builtOn>Builder</builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/test/java/com/gmail/nossr50/skills/salvage/SalvageTest.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/skills/salvage/Salvage.java</affectedPath><commitId>fc4fcddd3cd0d6961a5a80ca852b4827a184a1a1</commitId><timestamp>1783397859000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>Fix Salvage yielding nothing for damaged items with low max quantity

Salvage.calculateSalvageableAmount floored the salvageable amount to
zero for any damaged item when the configured maximum quantity was 1,
so such items could only be salvaged at full durability. Damaged items
now salvage at least one material unless fully broken.

Fixes #4760
</comment><date>2026-07-06 21:17:39 -0700</date><id>fc4fcddd3cd0d6961a5a80ca852b4827a184a1a1</id><msg>Fix Salvage yielding nothing for damaged items with low max quantity</msg><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/skills/salvage/Salvage.java</file></path><path><editType>add</editType><file>src/test/java/com/gmail/nossr50/skills/salvage/SalvageTest.java</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/main/resources/locale/locale_en_US.properties</affectedPath><affectedPath>src/main/resources/skillranks.yml</affectedPath><commitId>ea309678096dbee0c83c0aa3539dd65743544a95</commitId><timestamp>1783397859000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>Fix wrong unlock levels in Leaf Blower and Catalysis guide text

Also removes the unused Leaf Blower Rank_2 and Rank_3 entries from
skillranks.yml; the subskill only defines a single rank.

Fixes #4847
</comment><date>2026-07-06 21:17:39 -0700</date><id>ea309678096dbee0c83c0aa3539dd65743544a95</id><msg>Fix wrong unlock levels in Leaf Blower and Catalysis guide text</msg><path><editType>edit</editType><file>src/main/resources/skillranks.yml</file></path><path><editType>edit</editType><file>src/main/resources/locale/locale_en_US.properties</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/test/java/com/gmail/nossr50/util/scoreboards/ScoreboardManagerTest.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/util/scoreboards/ScoreboardManager.java</affectedPath><commitId>b14183fea45e2ad3c2fec0a770a1dc586c662855</commitId><timestamp>1783397878000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>Fix skill scoreboards not updating for child skills

XP and level events only fire for parent skills, so a kept Salvage or
Smelting sidebar never matched the event skill and never refreshed
until the command was run again. Boards displaying a child skill now
refresh when one of its parent skills changes.

Fixes #5184
</comment><date>2026-07-06 21:17:58 -0700</date><id>b14183fea45e2ad3c2fec0a770a1dc586c662855</id><msg>Fix skill scoreboards not updating for child skills</msg><path><editType>add</editType><file>src/test/java/com/gmail/nossr50/util/scoreboards/ScoreboardManagerTest.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/util/scoreboards/ScoreboardManager.java</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/test/java/com/gmail/nossr50/util/scoreboards/PowerLevelTagUpdaterTest.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/util/scoreboards/PowerLevelTagUpdater.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/util/scoreboards/backend/BukkitScoreboardBackend.java</affectedPath><affectedPath>src/test/java/com/gmail/nossr50/util/scoreboards/backend/BukkitScoreboardBackendTest.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/util/scoreboards/ScoreboardManager.java</affectedPath><commitId>df1570de49b72e7b700f717f608e4190f2867b86</commitId><timestamp>1783397878000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>Fix power level tags dropping updates and leftover objectives

The power level heartbeat cleared all pending refreshes even when a
player's profile had not loaded yet, leaving their below-name tag at 0
until the next level-up. Pending names now stay queued until they can
be resolved. Also removes a persisted mcmmo_pwrlvl objective left in
world scoreboard data by older versions when the packet or noop
backend is active, which otherwise kept rendering stale tags.

Fixes #5003
</comment><date>2026-07-06 21:17:58 -0700</date><id>df1570de49b72e7b700f717f608e4190f2867b86</id><msg>Fix power level tags dropping updates and leftover objectives</msg><path><editType>add</editType><file>src/test/java/com/gmail/nossr50/util/scoreboards/PowerLevelTagUpdaterTest.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/util/scoreboards/ScoreboardManager.java</file></path><path><editType>add</editType><file>src/main/java/com/gmail/nossr50/util/scoreboards/PowerLevelTagUpdater.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/util/scoreboards/backend/BukkitScoreboardBackend.java</file></path><path><editType>add</editType><file>src/test/java/com/gmail/nossr50/util/scoreboards/backend/BukkitScoreboardBackendTest.java</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/test/java/com/gmail/nossr50/listeners/PlayerListenerCommandAliasTest.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/listeners/PlayerListener.java</affectedPath><commitId>5a6692a026fa3e3b8e4dd1152ed95dda6ad1d5a1</commitId><timestamp>1783397901000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>Fix localized skill commands being blocked by command whitelist plugins

The locale alias rewrite ran at LOWEST priority, tying with command
whitelist plugins listening on the same event, so which name they saw
depended on plugin load order. The rewrite now runs at LOW priority and
ignores cancelled events, letting whitelist plugins deterministically
see the command exactly as the player typed it.

Fixes #5250
</comment><date>2026-07-06 21:18:21 -0700</date><id>5a6692a026fa3e3b8e4dd1152ed95dda6ad1d5a1</id><msg>Fix localized skill commands being blocked by command whitelist plugins</msg><path><editType>add</editType><file>src/test/java/com/gmail/nossr50/listeners/PlayerListenerCommandAliasTest.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/listeners/PlayerListener.java</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/main/java/com/gmail/nossr50/skills/salvage/SalvageManager.java</affectedPath><affectedPath>src/test/java/com/gmail/nossr50/skills/salvage/SalvageManagerTest.java</affectedPath><affectedPath>src/test/java/com/gmail/nossr50/listeners/PlayerListenerSalvageInteractTest.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/listeners/PlayerListener.java</affectedPath><affectedPath>src/test/java/com/gmail/nossr50/skills/repair/RepairManagerTest.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/skills/repair/RepairManager.java</affectedPath><commitId>a6079cf951b37081a91326c47442e9365211b0b6</commitId><timestamp>1783397902000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>Fix salvage and repair confirmations acting on the wrong item

The confirmation window was time based only, so armor swapped into the
hand by a mis-click could be salvaged with no new prompt, including
worn armor via the vanilla quick-swap. Confirmations are now bound to
the prompted item and re-prompt when the held item changes. Also denies
item use while a confirmation is pending, closing the path where the
follow-up use-item interact event equipped the armor instead when the
server's re-raytrace missed the anvil.

Fixes #5268
Fixes #4896
</comment><date>2026-07-06 21:18:22 -0700</date><id>a6079cf951b37081a91326c47442e9365211b0b6</id><msg>Fix salvage and repair confirmations acting on the wrong item</msg><path><editType>edit</editType><file>src/test/java/com/gmail/nossr50/skills/repair/RepairManagerTest.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/listeners/PlayerListener.java</file></path><path><editType>add</editType><file>src/test/java/com/gmail/nossr50/listeners/PlayerListenerSalvageInteractTest.java</file></path><path><editType>edit</editType><file>src/test/java/com/gmail/nossr50/skills/salvage/SalvageManagerTest.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/skills/salvage/SalvageManager.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/skills/repair/RepairManager.java</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/main/java/com/gmail/nossr50/util/scoreboards/ScoreboardWrapper.java</affectedPath><affectedPath>src/test/java/com/gmail/nossr50/util/scoreboards/ScoreboardWrapperStatsPowerLevelTest.java</affectedPath><commitId>29a65b9fb7b201d0caa112dd3846e5e8ea545d6e</commitId><timestamp>1783397902000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>Fix stats scoreboard power level counting permission-hidden skills

The stats sidebar summed every skill into its power level line while
hiding rows for skills the player lacked permission for, disagreeing
with chat stats and the power level cap, which both use the
permission-aware total.

Fixes #3790
</comment><date>2026-07-06 21:18:22 -0700</date><id>29a65b9fb7b201d0caa112dd3846e5e8ea545d6e</id><msg>Fix stats scoreboard power level counting permission-hidden skills</msg><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/util/scoreboards/ScoreboardWrapper.java</file></path><path><editType>add</editType><file>src/test/java/com/gmail/nossr50/util/scoreboards/ScoreboardWrapperStatsPowerLevelTest.java</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/main/java/com/gmail/nossr50/database/SQLDatabaseManager.java</affectedPath><affectedPath>src/test/java/com/gmail/nossr50/database/SQLDatabaseManagerTest.java</affectedPath><commitId>d0ad3ad67515426da787c1fdc4bde3114e859813</commitId><timestamp>1783397902000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>Fix database purge never removing inactive users

The SQL purge compared a seconds-based last login delta against a
milliseconds cutoff, requiring roughly 83 years of inactivity per
configured month. The flatfile purge had an inverted check that only
removed users with an unknown last login while keeping genuinely
inactive ones.

Fixes #4251
</comment><date>2026-07-06 21:18:22 -0700</date><id>d0ad3ad67515426da787c1fdc4bde3114e859813</id><msg>Fix database purge never removing inactive users</msg><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/database/FlatFileDatabaseManager.java</file></path><path><editType>edit</editType><file>src/test/java/com/gmail/nossr50/database/FlatFileDatabaseManagerTest.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/database/SQLDatabaseManager.java</file></path><path><editType>edit</editType><file>src/test/java/com/gmail/nossr50/database/SQLDatabaseManagerTest.java</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/test/java/com/gmail/nossr50/util/random/ProbabilityUtilTest.java</affectedPath><affectedPath>src/test/java/com/gmail/nossr50/util/player/UserManagerTest.java</affectedPath><affectedPath>src/test/java/com/gmail/nossr50/util/text/TextComponentFactoryTest.java</affectedPath><commitId>d171e20b7c0af2689aea34e3e164d532dd9f790c</commitId><timestamp>1783397902000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>Add regression tests for previously fixed defects

Covers the UserManager shutdown null guard (#4131), legacy color codes
leaking into level-up notification components (#5125), the Green Thumb
probability guarantee at max bonus level (#4365), and dynamic subskill
chance caps for the levels reported against Dodge (#5210).
</comment><date>2026-07-06 21:18:22 -0700</date><id>d171e20b7c0af2689aea34e3e164d532dd9f790c</id><msg>Add regression tests for previously fixed defects</msg><path><editType>edit</editType><file>src/test/java/com/gmail/nossr50/util/random/ProbabilityUtilTest.java</file></path><path><editType>edit</editType><file>src/test/java/com/gmail/nossr50/util/text/TextComponentFactoryTest.java</file></path><path><editType>add</editType><file>src/test/java/com/gmail/nossr50/util/player/UserManagerTest.java</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>Changelog.txt</affectedPath><commitId>9044066e4fd7a3da549ef52a9d28ca2b1dd5656d</commitId><timestamp>1783397999000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>Update changelog
</comment><date>2026-07-06 21:19:59 -0700</date><id>9044066e4fd7a3da549ef52a9d28ca2b1dd5656d</id><msg>Update changelog</msg><path><editType>edit</editType><file>Changelog.txt</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/main/java/com/gmail/nossr50/config/AdvancedConfig.java</affectedPath><affectedPath>src/main/resources/advanced.yml</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>9e29417042a8d8bf9798134830342bcaaaf3ded8</commitId><timestamp>1783399261000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>Add config option to limit Blast Mining remote detonation distance

Server admins can now set Skills.Mining.BlastMining.RemoteDetonationDistance
in advanced.yml to control how far away players can remotely detonate TNT.
Defaults to 100, matching the previous hardcoded limit, and is added to
existing advanced.yml files automatically on startup. Values below 1 fail
config validation.

Fixes #4330
</comment><date>2026-07-06 21:41:01 -0700</date><id>9e29417042a8d8bf9798134830342bcaaaf3ded8</id><msg>Add config option to limit Blast Mining remote detonation distance</msg><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/config/AdvancedConfig.java</file></path><path><editType>edit</editType><file>src/main/resources/advanced.yml</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/skills/mining/MiningManager.java</file></path><path><editType>add</editType><file>src/test/java/com/gmail/nossr50/skills/mining/MiningManagerTest.java</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/main/resources/plugin.yml</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/commands/player/InspectCommand.java</affectedPath><affectedPath>src/test/java/com/gmail/nossr50/MMOTestEnvironment.java</affectedPath><affectedPath>src/test/java/com/gmail/nossr50/commands/player/InspectCommandTest.java</affectedPath><commitId>13e1dcb9d6eca7b97f4c64f4a436740473a19d11</commitId><timestamp>1783399414000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>Make /inspect on offline players respect inspect permissions

Inspecting an offline player previously skipped the permission checks
that gate inspecting distant online players. /inspect now requires
mcmmo.commands.inspect.far (default: op) to view players who are
offline, and vanished players hidden from the sender are gated the same
way so they stay indistinguishable from offline players. Grant
mcmmo.commands.inspect.far to any ranks that should keep inspecting
offline players.

Fixes #4399
</comment><date>2026-07-06 21:43:34 -0700</date><id>13e1dcb9d6eca7b97f4c64f4a436740473a19d11</id><msg>Make /inspect on offline players respect inspect permissions</msg><path><editType>edit</editType><file>src/main/resources/plugin.yml</file></path><path><editType>edit</editType><file>src/test/java/com/gmail/nossr50/MMOTestEnvironment.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/commands/player/InspectCommand.java</file></path><path><editType>add</editType><file>src/test/java/com/gmail/nossr50/commands/player/InspectCommandTest.java</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/main/java/com/gmail/nossr50/util/player/NotificationManager.java</affectedPath><affectedPath>src/main/resources/advanced.yml</affectedPath><affectedPath>src/test/java/com/gmail/nossr50/util/player/NotificationManagerTest.java</affectedPath><commitId>8dc2c7e4a87710cbbbc307d03d54062a3a17e27b</commitId><timestamp>1783399435000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>Fix ActionBarNotifications.SubSkillUnlocked settings being ignored

Skill rank unlock messages were always sent to chat, ignoring the
Feedback.ActionBarNotifications.SubSkillUnlocked settings in
advanced.yml. Unlock notifications now use the same routing as other
notification types: setting
Feedback.ActionBarNotifications.SubSkillUnlocked.Enabled to true sends
them to the action bar, and
Feedback.ActionBarNotifications.SubSkillUnlocked.SendCopyOfMessageToChat
controls whether the chat still receives a copy. The shipped default for
Enabled is now false so unlock messages stay in chat out of the box.
These notifications also fire McMMOPlayerNotificationEvent, matching the
other notification types.

Fixes #4091
</comment><date>2026-07-06 21:43:55 -0700</date><id>8dc2c7e4a87710cbbbc307d03d54062a3a17e27b</id><msg>Fix ActionBarNotifications.SubSkillUnlocked settings being ignored</msg><path><editType>edit</editType><file>src/main/resources/advanced.yml</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/util/player/NotificationManager.java</file></path><path><editType>add</editType><file>src/test/java/com/gmail/nossr50/util/player/NotificationManagerTest.java</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/main/java/com/gmail/nossr50/util/commands/CommandRegistrationManager.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/datatypes/player/McMMOPlayer.java</affectedPath><affectedPath>src/main/resources/locale/locale_en_US.properties</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/party/PartyManager.java</affectedPath><affectedPath>src/main/resources/plugin.yml</affectedPath><affectedPath>src/test/java/com/gmail/nossr50/datatypes/player/McMMOPlayerLevelUpSoundTest.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/commands/McLevelUpSoundCommand.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/datatypes/party/Party.java</affectedPath><commitId>c3018f1be5b8caa23c3d693685b3854433b05d1b</commitId><timestamp>1783399697000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>Add /mclevelupsound to toggle the level-up sound per player

Players can now silence the mcMMO level-up sound for themselves with
/mclevelupsound (alias /levelupsound) without touching notifications
or the server-wide General.LevelUp_Sounds config setting. The toggle
also mutes the party level-up sound for that player.

Permission node: mcmmo.commands.mclevelupsound (granted by
mcmmo.commands.defaults). Like /mcnotify, the preference is
per-session and resets to on at login.

Fixes #5307
</comment><date>2026-07-06 21:48:17 -0700</date><id>c3018f1be5b8caa23c3d693685b3854433b05d1b</id><msg>Add /mclevelupsound to toggle the level-up sound per player</msg><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/util/commands/CommandRegistrationManager.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/datatypes/player/McMMOPlayer.java</file></path><path><editType>add</editType><file>src/test/java/com/gmail/nossr50/datatypes/player/McMMOPlayerLevelUpSoundTest.java</file></path><path><editType>edit</editType><file>src/main/resources/locale/locale_en_US.properties</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/datatypes/party/Party.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/party/PartyManager.java</file></path><path><editType>edit</editType><file>src/main/resources/plugin.yml</file></path><path><editType>add</editType><file>src/main/java/com/gmail/nossr50/commands/McLevelUpSoundCommand.java</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/main/resources/locale/locale_en_US.properties</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/commands/XprateCommand.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/util/commands/CommandUtils.java</affectedPath><affectedPath>src/test/java/com/gmail/nossr50/commands/XprateCommandTest.java</affectedPath><commitId>31902ccd1e5be8bbe00cefb3e6b8654fcbb9601a</commitId><timestamp>1783399928000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>Allow decimal values in /xprate

The XP rate argument now accepts positive decimal numbers such as 1.5
instead of integers only. Zero, negative, and non-finite rates are
rejected, and an invalid rate no longer toggles the XP event state.
Whole-number rates still display without a trailing .0 in broadcasts
and admin notifications.

Fixes #3390
</comment><date>2026-07-06 21:52:08 -0700</date><id>31902ccd1e5be8bbe00cefb3e6b8654fcbb9601a</id><msg>Allow decimal values in /xprate</msg><path><editType>add</editType><file>src/test/java/com/gmail/nossr50/commands/XprateCommandTest.java</file></path><path><editType>edit</editType><file>src/main/resources/locale/locale_en_US.properties</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/util/commands/CommandUtils.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/commands/XprateCommand.java</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/main/resources/plugin.yml</affectedPath><affectedPath>src/main/resources/locale/locale_en_US.properties</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/util/commands/CommandRegistrationManager.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/util/Permissions.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/commands/XprateCommand.java</affectedPath><affectedPath>src/test/java/com/gmail/nossr50/commands/XprateCommandTest.java</affectedPath><commitId>35adf1110a8f818f6ab8626128decb20864d6c80</commitId><timestamp>1783399928000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>Show the current XP rate with /xprate

Running /xprate with no arguments now tells the sender the current
global XP rate. Access is controlled by the new permission node
mcmmo.commands.xprate.show, granted to players by default through
mcmmo.commands.defaults since the rate is already broadcast publicly
when events start and shown on login.

Fixes #4602
</comment><date>2026-07-06 21:52:08 -0700</date><id>35adf1110a8f818f6ab8626128decb20864d6c80</id><msg>Show the current XP rate with /xprate</msg><path><editType>edit</editType><file>src/main/resources/plugin.yml</file></path><path><editType>edit</editType><file>src/main/resources/locale/locale_en_US.properties</file></path><path><editType>edit</editType><file>src/test/java/com/gmail/nossr50/commands/XprateCommandTest.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/util/Permissions.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/commands/XprateCommand.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/util/commands/CommandRegistrationManager.java</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>Changelog.txt</affectedPath><commitId>93b005500fe88d648cb9a1b0fe6a1c2fb12e59fd</commitId><timestamp>1783400030000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>Update changelog
</comment><date>2026-07-06 21:53:50 -0700</date><id>93b005500fe88d648cb9a1b0fe6a1c2fb12e59fd</id><msg>Update changelog</msg><path><editType>edit</editType><file>Changelog.txt</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/main/java/com/gmail/nossr50/commands/XprateCommand.java</affectedPath><affectedPath>src/test/java/com/gmail/nossr50/commands/XprateCommandTest.java</affectedPath><commitId>bc023b15ef65ba7651943d2d0f0f2a1a98d2f098</commitId><timestamp>1783404622000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>Fix /xprate rate display using a shared DecimalFormat across threads

The formatted XP rate came from a single static DecimalFormat, which is
not thread safe. Regionized servers like Folia execute player commands
on multiple region threads, and every player can run /xprate to view
the rate, so simultaneous use could garble the broadcast or displayed
rate. The format is now created per call, matching how locale strings
already build a fresh MessageFormat per message.
</comment><date>2026-07-06 23:10:22 -0700</date><id>bc023b15ef65ba7651943d2d0f0f2a1a98d2f098</id><msg>Fix /xprate rate display using a shared DecimalFormat across threads</msg><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/commands/XprateCommand.java</file></path><path><editType>edit</editType><file>src/test/java/com/gmail/nossr50/commands/XprateCommandTest.java</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/main/resources/plugin.yml</affectedPath><affectedPath>src/main/resources/locale/locale_en_US.properties</affectedPath><commitId>3c6ab95d01e9a0e9a1059b6a5d11c37770b953fc</commitId><timestamp>1783404741000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>Mention viewing the current rate in the /xprate command descriptions

The /xprate description in plugin.yml and the
Commands.Description.xprate locale entry only mentioned modifying the
rate, but the command now also shows the current XP rate when run with
no arguments.
</comment><date>2026-07-06 23:12:21 -0700</date><id>3c6ab95d01e9a0e9a1059b6a5d11c37770b953fc</id><msg>Mention viewing the current rate in the /xprate command descriptions</msg><path><editType>edit</editType><file>src/main/resources/plugin.yml</file></path><path><editType>edit</editType><file>src/main/resources/locale/locale_en_US.properties</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>Changelog.txt</affectedPath><commitId>9aa347b58d56652798be2f5c28cc429f3ff4442c</commitId><timestamp>1783404741000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>Correct 2.2.055 changelog entries

The Salvage note used wooden tools as an example of items that salvage
into a single material, but most wooden tools return more than one
material in the default salvage.vanilla.yml; wooden shovels are the
accurate example. Also moves the skillranks.yml removal line ahead of
the locale entries to match the usual entry ordering, and documents the
updated /xprate locale entries, the rank unlock notifications now
firing McMMOPlayerNotificationEvent, and the new regression tests.
</comment><date>2026-07-06 23:12:21 -0700</date><id>9aa347b58d56652798be2f5c28cc429f3ff4442c</id><msg>Correct 2.2.055 changelog entries</msg><path><editType>edit</editType><file>Changelog.txt</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/main/java/com/gmail/nossr50/util/scoreboards/PowerLevelTagUpdater.java</affectedPath><affectedPath>src/test/java/com/gmail/nossr50/util/scoreboards/PowerLevelTagUpdaterTest.java</affectedPath><commitId>295647a85e5f9252d93c04ef2833074bd9cf08a3</commitId><timestamp>1783404871000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>Fix power level tag re-marks being lost during a heartbeat write

The heartbeat removed a pending name after resolving and writing it, so
a level-up that re-marked the same player mid-write was erased along
with the processed entry, leaving the below-name tag stale until the
player's next level-up. Names are now removed before resolving so a
concurrent re-mark always survives to the next pass.
</comment><date>2026-07-06 23:14:31 -0700</date><id>295647a85e5f9252d93c04ef2833074bd9cf08a3</id><msg>Fix power level tag re-marks being lost during a heartbeat write</msg><path><editType>edit</editType><file>src/test/java/com/gmail/nossr50/util/scoreboards/PowerLevelTagUpdaterTest.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/util/scoreboards/PowerLevelTagUpdater.java</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/test/java/com/gmail/nossr50/util/scoreboards/ScoreboardManagerTest.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/util/scoreboards/ScoreboardManager.java</affectedPath><commitId>1f28520b892cdc7273d8887ae46299094d415209</commitId><timestamp>1783404871000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>Fix inspect stats boards never refreshing on the watched player's level up

The otherboard scan in handleLevelUp found stats boards inspecting the
leveling player but then checked and refreshed the leveling player's
own board instead of the matching one, so an inspect board kept showing
stale levels until re-run while the watched player's board could be
redrawn spuriously. The scan now refreshes the board it matched.
</comment><date>2026-07-06 23:14:31 -0700</date><id>1f28520b892cdc7273d8887ae46299094d415209</id><msg>Fix inspect stats boards never refreshing on the watched player's level up</msg><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/util/scoreboards/ScoreboardManager.java</file></path><path><editType>edit</editType><file>src/test/java/com/gmail/nossr50/util/scoreboards/ScoreboardManagerTest.java</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/main/java/com/gmail/nossr50/util/scoreboards/ScoreboardWrapper.java</affectedPath><affectedPath>src/test/java/com/gmail/nossr50/util/scoreboards/ScoreboardWrapperStatsPowerLevelTest.java</affectedPath><commitId>c41387bb8fdd55c4804962e2d120b05df32978e8</commitId><timestamp>1783404871000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>Fix stats scoreboard power level line vanishing for full-permission players

The stats sidebar appended the power level line after sorting the skill
rows, so once 15 or more skill rows were shown (a player permitted all
17 skills) the line cap truncated it away entirely. The line now takes
part in the sort; the sum is never smaller than any single row, so it
ranks first and always survives truncation, matching the old
score-sorted Bukkit board where the highest score displayed on top.
</comment><date>2026-07-06 23:14:31 -0700</date><id>c41387bb8fdd55c4804962e2d120b05df32978e8</id><msg>Fix stats scoreboard power level line vanishing for full-permission players</msg><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/util/scoreboards/ScoreboardWrapper.java</file></path><path><editType>edit</editType><file>src/test/java/com/gmail/nossr50/util/scoreboards/ScoreboardWrapperStatsPowerLevelTest.java</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/main/java/com/gmail/nossr50/listeners/PlayerListener.java</affectedPath><affectedPath>src/test/java/com/gmail/nossr50/listeners/PlayerListenerSalvageInteractTest.java</affectedPath><commitId>95babed7bb3140658a4bddf813cb7ad567ef3c88</commitId><timestamp>1783405137000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>Fix anvil confirmation item-use denial never applying to right-click air

The deny guard ran inside onPlayerInteractLowest, which is registered
with ignoreCancelled. A PlayerInteractEvent with no clicked block
reports itself as cancelled from the moment it is constructed, so the
follow-up use-item interaction that equips armor mid-confirmation never
reached the guard. Clicking the anvil could also override the denial,
because the use-item allowance for anvil blocks is applied after it.

The guard now runs in its own handler at LOW priority without ignoring
cancelled events, so it sees right-click-air interactions and takes
precedence over the anvil use-item allowance. The listener tests now
dispatch through the interact handlers honoring their real EventHandler
settings, which is what exposed the dead path.
</comment><date>2026-07-06 23:18:57 -0700</date><id>95babed7bb3140658a4bddf813cb7ad567ef3c88</id><msg>Fix anvil confirmation item-use denial never applying to right-click air</msg><path><editType>edit</editType><file>src/test/java/com/gmail/nossr50/listeners/PlayerListenerSalvageInteractTest.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/listeners/PlayerListener.java</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/main/java/com/gmail/nossr50/skills/repair/RepairManager.java</affectedPath><affectedPath>src/test/java/com/gmail/nossr50/skills/repair/RepairManagerTest.java</affectedPath><commitId>53b16a5a0e67c5cfe274df04d28a565407e4891f</commitId><timestamp>1783405137000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>Fix repair confirmations re-prompting after every partial repair

Repair confirmations are bound to the prompted item, but a repair
changes the item's damage, so the pending confirmation stopped matching
as soon as the repair completed. Partial repairs are the norm, so
continuing to repair the same item re-prompted after every repair
instead of only when the held item actually changed.

A matching confirmation is now rebound to the item's repaired state, so
repairing the same item within the confirmation window keeps going
without new prompts. This also keeps the use-item denial covering the
just-repaired item, which unlike salvage stays in the player's hand.
</comment><date>2026-07-06 23:18:57 -0700</date><id>53b16a5a0e67c5cfe274df04d28a565407e4891f</id><msg>Fix repair confirmations re-prompting after every partial repair</msg><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/skills/repair/RepairManager.java</file></path><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/main/java/com/gmail/nossr50/database/FlatFileDatabaseManager.java</affectedPath><affectedPath>src/test/java/com/gmail/nossr50/database/FlatFileDatabaseManagerTest.java</affectedPath><commitId>3885c1c07f2177a58c1c35cd2d4924ced4a93867</commitId><timestamp>1783405243000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>Fix database purge deleting flatfile users with unreadable last login

An unparseable last-login value was treated as a real timestamp of 0,
so the user looked ancient and was removed even though their last login
could not be determined. Unreadable values are now treated like an
unknown last login: the purge tries to recover a real timestamp from
the server's offline player data and keeps the user otherwise.
</comment><date>2026-07-06 23:20:43 -0700</date><id>3885c1c07f2177a58c1c35cd2d4924ced4a93867</id><msg>Fix database purge deleting flatfile users with unreadable last login</msg><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/database/FlatFileDatabaseManager.java</file></path><path><editType>edit</editType><file>src/test/java/com/gmail/nossr50/database/FlatFileDatabaseManagerTest.java</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/main/java/com/gmail/nossr50/database/FlatFileDatabaseManager.java</affectedPath><affectedPath>src/test/java/com/gmail/nossr50/database/FlatFileDatabaseManagerTest.java</affectedPath><commitId>8e2a45dced709f7f110076528ec0e92f488ce04a</commitId><timestamp>1783405243000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>Fix powerless user purge deleting comments from the flatfile database

Purging powerless users treated every line in mcmmo.users as a user,
so the generated comment header had no skill data, counted as a
powerless user, and was removed while inflating the purged total.
Comments and empty lines are now preserved like the other file
rewrites.
</comment><date>2026-07-06 23:20:43 -0700</date><id>8e2a45dced709f7f110076528ec0e92f488ce04a</id><msg>Fix powerless user purge deleting comments from the flatfile database</msg><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/database/FlatFileDatabaseManager.java</file></path><path><editType>edit</editType><file>src/test/java/com/gmail/nossr50/database/FlatFileDatabaseManagerTest.java</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>Changelog.txt</affectedPath><commitId>9fe5731a229f180386880ad1fbc289808650b558</commitId><timestamp>1783405342000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>Update changelog
</comment><date>2026-07-06 23:22:22 -0700</date><id>9fe5731a229f180386880ad1fbc289808650b558</id><msg>Update changelog</msg><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></culprit></build><build _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>327</buildNumber><marked><SHA1>2699d54c51ddb36ed117cb8f895acc735ec257e8</SHA1><branch><SHA1>2699d54c51ddb36ed117cb8f895acc735ec257e8</SHA1><name>refs/remotes/origin/master</name></branch></marked><revision><SHA1>2699d54c51ddb36ed117cb8f895acc735ec257e8</SHA1><branch><SHA1>2699d54c51ddb36ed117cb8f895acc735ec257e8</SHA1><name>refs/remotes/origin/master</name></branch></revision></refsremotesoriginmaster></buildsByBranchName><lastBuiltRevision><SHA1>2699d54c51ddb36ed117cb8f895acc735ec257e8</SHA1><branch><SHA1>2699d54c51ddb36ed117cb8f895acc735ec257e8</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><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>#327</displayName><duration>62720</duration><estimatedDuration>66335</estimatedDuration><fullDisplayName>mcMMO #327</fullDisplayName><id>327</id><inProgress>false</inProgress><keepLog>false</keepLog><number>327</number><queueId>196</queueId><result>SUCCESS</result><timestamp>1783391647640</timestamp><url>https://popicraft.net/jenkins/job/mcMMO/327/</url><builtOn>Builder</builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/main/java/com/gmail/nossr50/runnables/MobDodgeMetaCleanup.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/util/MetadataConstants.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/skills/acrobatics/AcrobaticsManager.java</affectedPath><affectedPath>src/test/java/com/gmail/nossr50/skills/acrobatics/AcrobaticsTest.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/skills/acrobatics/DodgeXpTracker.java</affectedPath><affectedPath>src/main/resources/experience.yml</affectedPath><affectedPath>src/test/java/com/gmail/nossr50/skills/acrobatics/DodgeXpTrackerTest.java</affectedPath><affectedPath>Changelog.txt</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/config/experience/ExperienceConfig.java</affectedPath><commitId>e535d04bd95b31a2890807b95cb7a9a6977a2883</commitId><timestamp>1783366133000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>Fix Dodge exploit prevention never limiting XP per mob

Dodge XP rewards are now tracked per mob without entity metadata, and the
limit has its own ExploitFix.AcrobaticsDodgeXpFarming setting in experience.yml.

Fixes #5308
</comment><date>2026-07-06 12:28:53 -0700</date><id>e535d04bd95b31a2890807b95cb7a9a6977a2883</id><msg>Fix Dodge exploit prevention never limiting XP per mob</msg><path><editType>edit</editType><file>src/test/java/com/gmail/nossr50/skills/acrobatics/AcrobaticsTest.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/util/MetadataConstants.java</file></path><path><editType>add</editType><file>src/main/java/com/gmail/nossr50/skills/acrobatics/DodgeXpTracker.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/skills/acrobatics/AcrobaticsManager.java</file></path><path><editType>edit</editType><file>Changelog.txt</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/config/experience/ExperienceConfig.java</file></path><path><editType>delete</editType><file>src/main/java/com/gmail/nossr50/runnables/MobDodgeMetaCleanup.java</file></path><path><editType>edit</editType><file>src/main/resources/experience.yml</file></path><path><editType>add</editType><file>src/test/java/com/gmail/nossr50/skills/acrobatics/DodgeXpTrackerTest.java</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>Changelog.txt</affectedPath><affectedPath>src/test/java/com/gmail/nossr50/config/experience/ExperienceConfigTest.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/config/experience/ExperienceConfig.java</affectedPath><commitId>2699d54c51ddb36ed117cb8f895acc735ec257e8</commitId><timestamp>1783366652000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>Fix ExploitFix.Combat.XPCeiling.Damage_Limit being ignored

The combat XP damage ceiling read a config key that never shipped in
experience.yml, so the ceiling was always the hardcoded default of 100.
It now reads the Damage_Limit key that experience.yml actually contains.

Fixes #5309
</comment><date>2026-07-06 12:37:32 -0700</date><id>2699d54c51ddb36ed117cb8f895acc735ec257e8</id><msg>Fix ExploitFix.Combat.XPCeiling.Damage_Limit being ignored</msg><path><editType>add</editType><file>src/test/java/com/gmail/nossr50/config/experience/ExperienceConfigTest.java</file></path><path><editType>edit</editType><file>Changelog.txt</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/config/experience/ExperienceConfig.java</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></culprit></build><build _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>326</buildNumber><marked><SHA1>9717fd8c49b028603d4e96f9f115f6264bdbb6c5</SHA1><branch><SHA1>9717fd8c49b028603d4e96f9f115f6264bdbb6c5</SHA1><name>refs/remotes/origin/master</name></branch></marked><revision><SHA1>9717fd8c49b028603d4e96f9f115f6264bdbb6c5</SHA1><branch><SHA1>9717fd8c49b028603d4e96f9f115f6264bdbb6c5</SHA1><name>refs/remotes/origin/master</name></branch></revision></refsremotesoriginmaster></buildsByBranchName><lastBuiltRevision><SHA1>9717fd8c49b028603d4e96f9f115f6264bdbb6c5</SHA1><branch><SHA1>9717fd8c49b028603d4e96f9f115f6264bdbb6c5</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><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>#326</displayName><duration>62399</duration><estimatedDuration>66335</estimatedDuration><fullDisplayName>mcMMO #326</fullDisplayName><id>326</id><inProgress>false</inProgress><keepLog>false</keepLog><number>326</number><queueId>194</queueId><result>SUCCESS</result><timestamp>1783279148966</timestamp><url>https://popicraft.net/jenkins/job/mcMMO/326/</url><builtOn>Builder</builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/main/java/com/gmail/nossr50/util/scoreboards/backend/ScoreboardBackendType.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/util/scoreboards/backend/PacketScoreboardBackend.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/util/scoreboards/backend/BukkitScoreboardBackend.java</affectedPath><affectedPath>src/main/resources/plugin.yml</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/events/scoreboard/McMMOScoreboardObjectiveEvent.java</affectedPath><affectedPath>pom.xml</affectedPath><affectedPath>Changelog.txt</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/util/scoreboards/backend/NoopPlayerBoard.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/util/scoreboards/backend/SidebarLine.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/util/scoreboards/backend/BukkitPlayerBoard.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/util/scoreboards/backend/PlayerBoard.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/mcMMO.java</affectedPath><affectedPath>src/test/java/com/gmail/nossr50/util/scoreboards/backend/NoopScoreboardBackendTest.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/util/scoreboards/ScoreboardWrapper.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/util/scoreboards/ScoreboardManager.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/util/scoreboards/backend/ScoreboardBackendSelector.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/util/scoreboards/backend/NoopScoreboardBackend.java</affectedPath><affectedPath>src/test/java/com/gmail/nossr50/util/scoreboards/backend/ScoreboardBackendSelectorTest.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/util/scoreboards/backend/PacketPlayerBoard.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/util/scoreboards/backend/ScoreboardBackend.java</affectedPath><commitId>f1ee7c7ea8c220e3d0af190f60e2b51f54a8efa4</commitId><timestamp>1783278648000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/github</absoluteUrl><fullName>github</fullName></author><authorEmail>noreply@github.com</authorEmail><comment>Refactor scoreboards to packet-based impl for Folia/Canvas compatibility (#5298)

Co-authored-by: nossr50 &lt;nossr50@gmail.com&gt;
</comment><date>2026-07-05 12:10:48 -0700</date><id>f1ee7c7ea8c220e3d0af190f60e2b51f54a8efa4</id><msg>Refactor scoreboards to packet-based impl for Folia/Canvas compatibility (#5298)</msg><path><editType>add</editType><file>src/main/java/com/gmail/nossr50/util/scoreboards/backend/ScoreboardBackendSelector.java</file></path><path><editType>add</editType><file>src/test/java/com/gmail/nossr50/util/scoreboards/backend/NoopScoreboardBackendTest.java</file></path><path><editType>add</editType><file>src/main/java/com/gmail/nossr50/util/scoreboards/backend/ScoreboardBackend.java</file></path><path><editType>edit</editType><file>Changelog.txt</file></path><path><editType>add</editType><file>src/main/java/com/gmail/nossr50/util/scoreboards/backend/NoopScoreboardBackend.java</file></path><path><editType>edit</editType><file>pom.xml</file></path><path><editType>edit</editType><file>src/main/resources/plugin.yml</file></path><path><editType>add</editType><file>src/main/java/com/gmail/nossr50/util/scoreboards/backend/NoopPlayerBoard.java</file></path><path><editType>add</editType><file>src/main/java/com/gmail/nossr50/util/scoreboards/backend/ScoreboardBackendType.java</file></path><path><editType>add</editType><file>src/main/java/com/gmail/nossr50/util/scoreboards/backend/SidebarLine.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/util/scoreboards/ScoreboardWrapper.java</file></path><path><editType>add</editType><file>src/main/java/com/gmail/nossr50/util/scoreboards/backend/BukkitScoreboardBackend.java</file></path><path><editType>add</editType><file>src/main/java/com/gmail/nossr50/util/scoreboards/backend/PlayerBoard.java</file></path><path><editType>add</editType><file>src/main/java/com/gmail/nossr50/util/scoreboards/backend/BukkitPlayerBoard.java</file></path><path><editType>add</editType><file>src/main/java/com/gmail/nossr50/util/scoreboards/backend/PacketPlayerBoard.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/util/scoreboards/ScoreboardManager.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/mcMMO.java</file></path><path><editType>add</editType><file>src/test/java/com/gmail/nossr50/util/scoreboards/backend/ScoreboardBackendSelectorTest.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/events/scoreboard/McMMOScoreboardObjectiveEvent.java</file></path><path><editType>add</editType><file>src/main/java/com/gmail/nossr50/util/scoreboards/backend/PacketScoreboardBackend.java</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>Changelog.txt</affectedPath><commitId>9717fd8c49b028603d4e96f9f115f6264bdbb6c5</commitId><timestamp>1783278813000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>thanks albert4719
</comment><date>2026-07-05 12:13:33 -0700</date><id>9717fd8c49b028603d4e96f9f115f6264bdbb6c5</id><msg>thanks albert4719</msg><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></culprit><culprit><absoluteUrl>https://popicraft.net/jenkins/user/github</absoluteUrl><fullName>github</fullName></culprit></build><build _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>325</buildNumber><marked><SHA1>141e22c479b4219b26de1179c1330c2e4cf081c7</SHA1><branch><SHA1>141e22c479b4219b26de1179c1330c2e4cf081c7</SHA1><name>refs/remotes/origin/master</name></branch></marked><revision><SHA1>141e22c479b4219b26de1179c1330c2e4cf081c7</SHA1><branch><SHA1>141e22c479b4219b26de1179c1330c2e4cf081c7</SHA1><name>refs/remotes/origin/master</name></branch></revision></refsremotesoriginmaster></buildsByBranchName><lastBuiltRevision><SHA1>141e22c479b4219b26de1179c1330c2e4cf081c7</SHA1><branch><SHA1>141e22c479b4219b26de1179c1330c2e4cf081c7</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><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>#325</displayName><duration>49553</duration><estimatedDuration>66335</estimatedDuration><fullDisplayName>mcMMO #325</fullDisplayName><id>325</id><inProgress>false</inProgress><keepLog>false</keepLog><number>325</number><queueId>193</queueId><result>SUCCESS</result><timestamp>1783239549062</timestamp><url>https://popicraft.net/jenkins/job/mcMMO/325/</url><builtOn>Builder</builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/main/java/com/gmail/nossr50/datatypes/player/McMMOPlayer.java</affectedPath><commitId>7ed504a8ac885fa6238ff4f31536e033826e6e4c</commitId><timestamp>1783238809000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>Skip power level permission checks when the cap is out of reach
</comment><date>2026-07-05 01:06:49 -0700</date><id>7ed504a8ac885fa6238ff4f31536e033826e6e4c</id><msg>Skip power level permission checks when the cap is out of reach</msg><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/datatypes/player/McMMOPlayer.java</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/test/java/com/gmail/nossr50/datatypes/player/McMMOPlayerPowerLevelCapTest.java</affectedPath><affectedPath>Changelog.txt</affectedPath><commitId>141e22c479b4219b26de1179c1330c2e4cf081c7</commitId><timestamp>1783239525000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>Add unit tests for power level cap and skill level cap checks
</comment><date>2026-07-05 01:18:45 -0700</date><id>141e22c479b4219b26de1179c1330c2e4cf081c7</id><msg>Add unit tests for power level cap and skill level cap checks</msg><path><editType>add</editType><file>src/test/java/com/gmail/nossr50/datatypes/player/McMMOPlayerPowerLevelCapTest.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></culprit></build><build _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>324</buildNumber><marked><SHA1>d7bd2bdf58df61ac9441660612c51be60b6ac02d</SHA1><branch><SHA1>d7bd2bdf58df61ac9441660612c51be60b6ac02d</SHA1><name>refs/remotes/origin/master</name></branch></marked><revision><SHA1>d7bd2bdf58df61ac9441660612c51be60b6ac02d</SHA1><branch><SHA1>d7bd2bdf58df61ac9441660612c51be60b6ac02d</SHA1><name>refs/remotes/origin/master</name></branch></revision></refsremotesoriginmaster></buildsByBranchName><lastBuiltRevision><SHA1>d7bd2bdf58df61ac9441660612c51be60b6ac02d</SHA1><branch><SHA1>d7bd2bdf58df61ac9441660612c51be60b6ac02d</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><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>#324</displayName><duration>46166</duration><estimatedDuration>66335</estimatedDuration><fullDisplayName>mcMMO #324</fullDisplayName><id>324</id><inProgress>false</inProgress><keepLog>false</keepLog><number>324</number><queueId>192</queueId><result>SUCCESS</result><timestamp>1783235949035</timestamp><url>https://popicraft.net/jenkins/job/mcMMO/324/</url><builtOn>Builder</builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/main/java/com/gmail/nossr50/config/GeneralConfig.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/util/Permissions.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/datatypes/player/McMMOPlayer.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/util/skills/PerksUtils.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/config/experience/ExperienceConfig.java</affectedPath><commitId>1ff106c38281ebd7cf8b3392d9d5798068810509</commitId><timestamp>1783235300000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>Reduce repeated permission and config lookups when gaining XP
</comment><date>2026-07-05 00:08:20 -0700</date><id>1ff106c38281ebd7cf8b3392d9d5798068810509</id><msg>Reduce repeated permission and config lookups when gaining XP</msg><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/util/skills/PerksUtils.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/util/Permissions.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/config/experience/ExperienceConfig.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/config/GeneralConfig.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/datatypes/player/McMMOPlayer.java</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/main/java/com/gmail/nossr50/util/ItemUtils.java</affectedPath><commitId>fc62a6236f1f3ecf74b5f66a31c079a96efc8613</commitId><timestamp>1783235313000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>Stop scanning the full recipe list on every furnace extraction
</comment><date>2026-07-05 00:08:33 -0700</date><id>fc62a6236f1f3ecf74b5f66a31c079a96efc8613</id><msg>Stop scanning the full recipe list on every furnace extraction</msg><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/util/ItemUtils.java</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>Changelog.txt</affectedPath><commitId>d7bd2bdf58df61ac9441660612c51be60b6ac02d</commitId><timestamp>1783235313000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>Add 2.2.055 changelog entries for XP and furnace extraction performance
</comment><date>2026-07-05 00:08:33 -0700</date><id>d7bd2bdf58df61ac9441660612c51be60b6ac02d</id><msg>Add 2.2.055 changelog entries for XP and furnace extraction performance</msg><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></culprit></build><build _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>323</buildNumber><marked><SHA1>2d5be6d51c01d2990d667f3260e0d40c79e08d16</SHA1><branch><SHA1>2d5be6d51c01d2990d667f3260e0d40c79e08d16</SHA1><name>refs/remotes/origin/master</name></branch></marked><revision><SHA1>2d5be6d51c01d2990d667f3260e0d40c79e08d16</SHA1><branch><SHA1>2d5be6d51c01d2990d667f3260e0d40c79e08d16</SHA1><name>refs/remotes/origin/master</name></branch></revision></refsremotesoriginmaster></buildsByBranchName><lastBuiltRevision><SHA1>2d5be6d51c01d2990d667f3260e0d40c79e08d16</SHA1><branch><SHA1>2d5be6d51c01d2990d667f3260e0d40c79e08d16</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><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>#323</displayName><duration>47288</duration><estimatedDuration>66335</estimatedDuration><fullDisplayName>mcMMO #323</fullDisplayName><id>323</id><inProgress>false</inProgress><keepLog>false</keepLog><number>323</number><queueId>191</queueId><result>SUCCESS</result><timestamp>1783233248933</timestamp><url>https://popicraft.net/jenkins/job/mcMMO/323/</url><builtOn>Builder</builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/main/resources/plugin.yml</affectedPath><commitId>8b953a5455179b113c6178841188f0acbcc1b992</commitId><timestamp>1783232854000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>Fix 25percentboost XP perk permissions not being registered Fixes #5121
</comment><date>2026-07-04 23:27:34 -0700</date><id>8b953a5455179b113c6178841188f0acbcc1b992</id><msg>Fix 25percentboost XP perk permissions not being registered Fixes #5121</msg><path><editType>edit</editType><file>src/main/resources/plugin.yml</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/main/java/com/gmail/nossr50/util/skills/ParticleEffectUtils.java</affectedPath><commitId>2bd33eef4ac6273c2e55d86f35ee58a9fc3b7d83</commitId><timestamp>1783232854000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>Fix Cripple playing an extra anvil sound that ignored sounds.yml Fixes #5091
</comment><date>2026-07-04 23:27:34 -0700</date><id>2bd33eef4ac6273c2e55d86f35ee58a9fc3b7d83</id><msg>Fix Cripple playing an extra anvil sound that ignored sounds.yml Fixes #5091</msg><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/util/skills/ParticleEffectUtils.java</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/test/java/com/gmail/nossr50/util/skills/SkillUtilsTest.java</affectedPath><affectedPath>src/test/java/com/gmail/nossr50/skills/woodcutting/WoodcuttingTest.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/util/skills/SkillUtils.java</affectedPath><affectedPath>src/test/java/com/gmail/nossr50/util/ItemUtilsTest.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/skills/woodcutting/WoodcuttingManager.java</affectedPath><commitId>bc2bd41389c2e51e7da7e38a367012dff68a4fa4</commitId><timestamp>1783232855000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>Use the max_damage component for super ability durability Fixes #5182

Ability durability now treats the item's max_damage component as the
single source of maximum durability instead of consulting the repair
config, and Tree Feller respects damage modified by other plugins
during PlayerItemDamageEvent.
</comment><date>2026-07-04 23:27:35 -0700</date><id>bc2bd41389c2e51e7da7e38a367012dff68a4fa4</id><msg>Use the max_damage component for super ability durability Fixes #5182</msg><path><editType>add</editType><file>src/test/java/com/gmail/nossr50/util/skills/SkillUtilsTest.java</file></path><path><editType>edit</editType><file>src/test/java/com/gmail/nossr50/skills/woodcutting/WoodcuttingTest.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/skills/woodcutting/WoodcuttingManager.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/util/skills/SkillUtils.java</file></path><path><editType>edit</editType><file>src/test/java/com/gmail/nossr50/util/ItemUtilsTest.java</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>Changelog.txt</affectedPath><commitId>2d5be6d51c01d2990d667f3260e0d40c79e08d16</commitId><timestamp>1783232855000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>Add 2.2.055 changelog entries for permission, Cripple sound, and durability fixes
</comment><date>2026-07-04 23:27:35 -0700</date><id>2d5be6d51c01d2990d667f3260e0d40c79e08d16</id><msg>Add 2.2.055 changelog entries for permission, Cripple sound, and durability fixes</msg><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></culprit></build><build _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>322</buildNumber><marked><SHA1>8e5806ad69cfc9929244d7aa691f446b0b22a222</SHA1><branch><SHA1>8e5806ad69cfc9929244d7aa691f446b0b22a222</SHA1><name>refs/remotes/origin/master</name></branch></marked><revision><SHA1>8e5806ad69cfc9929244d7aa691f446b0b22a222</SHA1><branch><SHA1>8e5806ad69cfc9929244d7aa691f446b0b22a222</SHA1><name>refs/remotes/origin/master</name></branch></revision></refsremotesoriginmaster></buildsByBranchName><lastBuiltRevision><SHA1>8e5806ad69cfc9929244d7aa691f446b0b22a222</SHA1><branch><SHA1>8e5806ad69cfc9929244d7aa691f446b0b22a222</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><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>#322</displayName><duration>58121</duration><estimatedDuration>66335</estimatedDuration><fullDisplayName>mcMMO #322</fullDisplayName><id>322</id><inProgress>false</inProgress><keepLog>false</keepLog><number>322</number><queueId>189</queueId><result>SUCCESS</result><timestamp>1783215248750</timestamp><url>https://popicraft.net/jenkins/job/mcMMO/322/</url><builtOn>Builder</builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/main/resources/experience.yml</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/util/MaterialMapStore.java</affectedPath><affectedPath>Changelog.txt</affectedPath><affectedPath>src/main/resources/treasures.yml</affectedPath><commitId>b06f074141513cd47e09bbcae76b780e6fc90667</commitId><timestamp>1783199204000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>Add mcMMO compatibility for Minecraft 26.2 Chaos Cubed

Add experience.yml XP for the new Chaos Cubed content: Mining XP for the Cinnabar and Sulfur block sets, Potent Sulfur, and Sulfur Spike; a Combat XP multiplier for the Sulfur Cube; and a Herbalism XP value for Golden Dandelion. Register the new pickaxe-mined blocks in MaterialMapStore, and add the 'Bounce' music disc as a very rare Excavation treasure in treasures.yml.
</comment><date>2026-07-04 14:06:44 -0700</date><id>b06f074141513cd47e09bbcae76b780e6fc90667</id><msg>Add mcMMO compatibility for Minecraft 26.2 Chaos Cubed</msg><path><editType>edit</editType><file>src/main/resources/experience.yml</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/util/MaterialMapStore.java</file></path><path><editType>edit</editType><file>Changelog.txt</file></path><path><editType>edit</editType><file>src/main/resources/treasures.yml</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/test/java/com/gmail/nossr50/config/treasure/TreasureLoadTallyTest.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/config/treasure/TreasureConfig.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/config/treasure/TreasureLoadTally.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/config/treasure/FishingTreasureConfig.java</affectedPath><affectedPath>src/test/java/com/gmail/nossr50/config/treasure/FishingTreasureConfigTest.java</affectedPath><affectedPath>Changelog.txt</affectedPath><affectedPath>src/test/java/com/gmail/nossr50/config/treasure/TreasureConfigTest.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/config/treasure/TreasureLoadResult.java</affectedPath><commitId>c4d8eaca7719093520d69f3af4156703d0bd8f0e</commitId><timestamp>1783200563000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>Harden treasure config loading against invalid entries

Rework TreasureConfig and FishingTreasureConfig so a single unrecognized or misconfigured entry can never fail server startup. Each entry is classified as loaded, incompatible (material absent in this Minecraft version), or invalid (misconfigured), skipped when unusable, and summarized per section. Unknown materials are skipped quietly; invalid entries are logged with their config key. Fishing drop-rate validation is now non-fatal. Add unit tests covering entry classification and drop-rate validation.
</comment><date>2026-07-04 14:29:23 -0700</date><id>c4d8eaca7719093520d69f3af4156703d0bd8f0e</id><msg>Harden treasure config loading against invalid entries</msg><path><editType>add</editType><file>src/test/java/com/gmail/nossr50/config/treasure/TreasureLoadTallyTest.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/config/treasure/FishingTreasureConfig.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/config/treasure/TreasureConfig.java</file></path><path><editType>edit</editType><file>src/test/java/com/gmail/nossr50/config/treasure/FishingTreasureConfigTest.java</file></path><path><editType>add</editType><file>src/main/java/com/gmail/nossr50/config/treasure/TreasureLoadTally.java</file></path><path><editType>edit</editType><file>Changelog.txt</file></path><path><editType>add</editType><file>src/test/java/com/gmail/nossr50/config/treasure/TreasureConfigTest.java</file></path><path><editType>add</editType><file>src/main/java/com/gmail/nossr50/config/treasure/TreasureLoadResult.java</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>.gitignore</affectedPath><commitId>e781152ebdbc8f70414e52c305aaba2b6321be76</commitId><timestamp>1783209042000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>add .claude to git ignore
</comment><date>2026-07-04 16:50:42 -0700</date><id>e781152ebdbc8f70414e52c305aaba2b6321be76</id><msg>add .claude to git ignore</msg><path><editType>edit</editType><file>.gitignore</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/main/java/com/gmail/nossr50/config/treasure/TreasureConfig.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/datatypes/treasure/Rarity.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/config/treasure/FishingTreasureConfig.java</affectedPath><affectedPath>src/test/java/com/gmail/nossr50/config/treasure/FishingTreasureConfigTest.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/config/treasure/TreasureEntryLoader.java</affectedPath><affectedPath>src/test/java/com/gmail/nossr50/util/PotionUtilTest.java</affectedPath><affectedPath>Changelog.txt</affectedPath><affectedPath>src/test/java/com/gmail/nossr50/config/treasure/TreasureConfigTest.java</affectedPath><commitId>5d2498c8547657cdaaa7325a94768fcb7fe45464</commitId><timestamp>1783213095000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>Fix treasure potion variants and tighten treasure entry validation

Fix the swapped upgraded/extended arguments when matching potion types
for treasures, so Extended/Upgraded potion data resolves to the correct
potion variant. Classify malformed |data key suffixes and unrecognized
Rarity values as invalid (skipped with a warning naming the entry)
instead of throwing or silently misloading into the COMMON pool. Treat
potion types from newer Minecraft versions as incompatible and skip
them quietly at debug level, matching how unknown materials are
handled. Raise misconfigured-treasure logging back to warning level and
consolidate the loading logic duplicated between TreasureConfig and
FishingTreasureConfig into a shared TreasureEntryLoader. Add unit tests
for the new classification paths.
</comment><date>2026-07-04 17:58:15 -0700</date><id>5d2498c8547657cdaaa7325a94768fcb7fe45464</id><msg>Fix treasure potion variants and tighten treasure entry validation</msg><path><editType>edit</editType><file>src/test/java/com/gmail/nossr50/util/PotionUtilTest.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/datatypes/treasure/Rarity.java</file></path><path><editType>edit</editType><file>Changelog.txt</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/config/treasure/TreasureConfig.java</file></path><path><editType>add</editType><file>src/main/java/com/gmail/nossr50/config/treasure/TreasureEntryLoader.java</file></path><path><editType>edit</editType><file>src/test/java/com/gmail/nossr50/config/treasure/FishingTreasureConfigTest.java</file></path><path><editType>edit</editType><file>src/test/java/com/gmail/nossr50/config/treasure/TreasureConfigTest.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/config/treasure/FishingTreasureConfig.java</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/main/resources/treasures.yml</affectedPath><commitId>2174cfd9220214cb529256eac46448b3d68ab5bd</commitId><timestamp>1783213450000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>make bounce a bit more rare
</comment><date>2026-07-04 18:04:10 -0700</date><id>2174cfd9220214cb529256eac46448b3d68ab5bd</id><msg>make bounce a bit more rare</msg><path><editType>edit</editType><file>src/main/resources/treasures.yml</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>Changelog.txt</affectedPath><commitId>a263b0f129c47ad846a7e3be4310bcdd2e374b41</commitId><timestamp>1783214444000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>Improve readability of 2.2.054 changelog entries
</comment><date>2026-07-04 18:20:44 -0700</date><id>a263b0f129c47ad846a7e3be4310bcdd2e374b41</id><msg>Improve readability of 2.2.054 changelog entries</msg><path><editType>edit</editType><file>Changelog.txt</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>pom.xml</affectedPath><commitId>73a84b91e12577547513c9d001ad70f4ab092bce</commitId><timestamp>1783214508000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>2.2.054
</comment><date>2026-07-04 18:21:48 -0700</date><id>73a84b91e12577547513c9d001ad70f4ab092bce</id><msg>2.2.054</msg><path><editType>edit</editType><file>pom.xml</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>pom.xml</affectedPath><affectedPath>Changelog.txt</affectedPath><commitId>8e5806ad69cfc9929244d7aa691f446b0b22a222</commitId><timestamp>1783214995000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>2.2.055 dev versions
</comment><date>2026-07-04 18:29:55 -0700</date><id>8e5806ad69cfc9929244d7aa691f446b0b22a222</id><msg>2.2.055 dev versions</msg><path><editType>edit</editType><file>Changelog.txt</file></path><path><editType>edit</editType><file>pom.xml</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></culprit></build><build _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>321</buildNumber><marked><SHA1>fbd69718ffb8236af71840606767b268c30fed59</SHA1><branch><SHA1>fbd69718ffb8236af71840606767b268c30fed59</SHA1><name>refs/remotes/origin/master</name></branch></marked><revision><SHA1>fbd69718ffb8236af71840606767b268c30fed59</SHA1><branch><SHA1>fbd69718ffb8236af71840606767b268c30fed59</SHA1><name>refs/remotes/origin/master</name></branch></revision></refsremotesoriginmaster></buildsByBranchName><lastBuiltRevision><SHA1>fbd69718ffb8236af71840606767b268c30fed59</SHA1><branch><SHA1>fbd69718ffb8236af71840606767b268c30fed59</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><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>#321</displayName><duration>62720</duration><estimatedDuration>66335</estimatedDuration><fullDisplayName>mcMMO #321</fullDisplayName><id>321</id><inProgress>false</inProgress><keepLog>false</keepLog><number>321</number><queueId>176</queueId><result>SUCCESS</result><timestamp>1782176642563</timestamp><url>https://popicraft.net/jenkins/job/mcMMO/321/</url><builtOn>Builder</builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>Changelog.txt</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/util/MaterialMapStore.java</affectedPath><commitId>fbd69718ffb8236af71840606767b268c30fed59</commitId><timestamp>1782175880000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>fix deepslate blocks not activating super breaker
</comment><date>2026-06-22 17:51:20 -0700</date><id>fbd69718ffb8236af71840606767b268c30fed59</id><msg>fix deepslate blocks not activating super breaker</msg><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/util/MaterialMapStore.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></culprit></build><build _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>320</buildNumber><marked><SHA1>52b5e8c477899f943a76a5e67a5ef0ed744982dd</SHA1><branch><SHA1>52b5e8c477899f943a76a5e67a5ef0ed744982dd</SHA1><name>refs/remotes/origin/master</name></branch></marked><revision><SHA1>52b5e8c477899f943a76a5e67a5ef0ed744982dd</SHA1><branch><SHA1>52b5e8c477899f943a76a5e67a5ef0ed744982dd</SHA1><name>refs/remotes/origin/master</name></branch></revision></refsremotesoriginmaster></buildsByBranchName><lastBuiltRevision><SHA1>52b5e8c477899f943a76a5e67a5ef0ed744982dd</SHA1><branch><SHA1>52b5e8c477899f943a76a5e67a5ef0ed744982dd</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><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>#320</displayName><duration>46755</duration><estimatedDuration>66335</estimatedDuration><fullDisplayName>mcMMO #320</fullDisplayName><id>320</id><inProgress>false</inProgress><keepLog>false</keepLog><number>320</number><queueId>174</queueId><result>SUCCESS</result><timestamp>1782070444299</timestamp><url>https://popicraft.net/jenkins/job/mcMMO/320/</url><builtOn>Builder</builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>Changelog.txt</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/util/MaterialMapStore.java</affectedPath><commitId>52b5e8c477899f943a76a5e67a5ef0ed744982dd</commitId><timestamp>1782069955000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>Fix Tree Feller readying on wood stripping

Fixes #5293
</comment><date>2026-06-21 12:25:55 -0700</date><id>52b5e8c477899f943a76a5e67a5ef0ed744982dd</id><msg>Fix Tree Feller readying on wood stripping</msg><path><editType>edit</editType><file>Changelog.txt</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/util/MaterialMapStore.java</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></culprit></build><build _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>319</buildNumber><marked><SHA1>cb34715c05a6439702483a7dc8480c8d745f7524</SHA1><branch><SHA1>cb34715c05a6439702483a7dc8480c8d745f7524</SHA1><name>refs/remotes/origin/master</name></branch></marked><revision><SHA1>cb34715c05a6439702483a7dc8480c8d745f7524</SHA1><branch><SHA1>cb34715c05a6439702483a7dc8480c8d745f7524</SHA1><name>refs/remotes/origin/master</name></branch></revision></refsremotesoriginmaster></buildsByBranchName><lastBuiltRevision><SHA1>cb34715c05a6439702483a7dc8480c8d745f7524</SHA1><branch><SHA1>cb34715c05a6439702483a7dc8480c8d745f7524</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><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>#319</displayName><duration>56709</duration><estimatedDuration>66335</estimatedDuration><fullDisplayName>mcMMO #319</fullDisplayName><id>319</id><inProgress>false</inProgress><keepLog>false</keepLog><number>319</number><queueId>173</queueId><result>SUCCESS</result><timestamp>1782068644107</timestamp><url>https://popicraft.net/jenkins/job/mcMMO/319/</url><builtOn>Builder</builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>pom.xml</affectedPath><commitId>cfdb1d3499e2ecc544669f2d725208ddaada7d22</commitId><timestamp>1782066297000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>dev builds for 2.2.054
</comment><date>2026-06-21 11:24:57 -0700</date><id>cfdb1d3499e2ecc544669f2d725208ddaada7d22</id><msg>dev builds for 2.2.054</msg><path><editType>edit</editType><file>pom.xml</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/test/java/com/gmail/nossr50/skills/taming/TamingManagerTest.java</affectedPath><affectedPath>Changelog.txt</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/skills/taming/TamingManager.java</affectedPath><commitId>cb34715c05a6439702483a7dc8480c8d745f7524</commitId><timestamp>1782068447000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>Fix Folia taming wolf assist region lookup

Fixes #5302
</comment><date>2026-06-21 12:00:47 -0700</date><id>cb34715c05a6439702483a7dc8480c8d745f7524</id><msg>Fix Folia taming wolf assist region lookup</msg><path><editType>edit</editType><file>Changelog.txt</file></path><path><editType>add</editType><file>src/test/java/com/gmail/nossr50/skills/taming/TamingManagerTest.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/skills/taming/TamingManager.java</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></culprit></build><build _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>318</buildNumber><marked><SHA1>4b0068a7f754a412901199af4f6a04d8fc128af4</SHA1><branch><SHA1>4b0068a7f754a412901199af4f6a04d8fc128af4</SHA1><name>refs/remotes/origin/master</name></branch></marked><revision><SHA1>4b0068a7f754a412901199af4f6a04d8fc128af4</SHA1><branch><SHA1>4b0068a7f754a412901199af4f6a04d8fc128af4</SHA1><name>refs/remotes/origin/master</name></branch></revision></refsremotesoriginmaster></buildsByBranchName><lastBuiltRevision><SHA1>4b0068a7f754a412901199af4f6a04d8fc128af4</SHA1><branch><SHA1>4b0068a7f754a412901199af4f6a04d8fc128af4</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><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>#318</displayName><duration>59679</duration><estimatedDuration>66335</estimatedDuration><fullDisplayName>mcMMO #318</fullDisplayName><id>318</id><inProgress>false</inProgress><keepLog>false</keepLog><number>318</number><queueId>156</queueId><result>SUCCESS</result><timestamp>1780686216403</timestamp><url>https://popicraft.net/jenkins/job/mcMMO/318/</url><builtOn>Builder</builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>pom.xml</affectedPath><commitId>0dac1427bdaf52c93119bb3d15741bd867a63360</commitId><timestamp>1780355064000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>2.2.053
</comment><date>2026-06-01 16:04:24 -0700</date><id>0dac1427bdaf52c93119bb3d15741bd867a63360</id><msg>2.2.053</msg><path><editType>edit</editType><file>pom.xml</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/main/java/com/gmail/nossr50/chat/mailer/AbstractChatMailer.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/util/text/TextUtils.java</affectedPath><affectedPath>src/test/java/com/gmail/nossr50/util/text/TextUtilsTest.java</affectedPath><affectedPath>Changelog.txt</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/chat/mailer/PartyChatMailer.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/chat/mailer/AdminChatMailer.java</affectedPath><commitId>c09a013cc137e63f4ee9783afce0d749324be99c</commitId><timestamp>1780685438000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>Chat colors properly use permissions now Fixes #5296
</comment><date>2026-06-05 11:50:38 -0700</date><id>c09a013cc137e63f4ee9783afce0d749324be99c</id><msg>Chat colors properly use permissions now Fixes #5296</msg><path><editType>edit</editType><file>src/test/java/com/gmail/nossr50/util/text/TextUtilsTest.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/chat/mailer/AbstractChatMailer.java</file></path><path><editType>edit</editType><file>Changelog.txt</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/chat/mailer/PartyChatMailer.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/chat/mailer/AdminChatMailer.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/util/text/TextUtils.java</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/main/java/com/gmail/nossr50/datatypes/player/PlayerProfile.java</affectedPath><affectedPath>Changelog.txt</affectedPath><affectedPath>src/test/java/com/gmail/nossr50/datatypes/experience/DiminishedReturnsCacheTest.java</affectedPath><commitId>4b0068a7f754a412901199af4f6a04d8fc128af4</commitId><timestamp>1780685438000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>Fix DR cache wiring for loaded profiles
</comment><date>2026-06-05 11:50:38 -0700</date><id>4b0068a7f754a412901199af4f6a04d8fc128af4</id><msg>Fix DR cache wiring for loaded profiles</msg><path><editType>edit</editType><file>src/test/java/com/gmail/nossr50/datatypes/experience/DiminishedReturnsCacheTest.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/datatypes/player/PlayerProfile.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></culprit></build><build _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>317</buildNumber><marked><SHA1>ff2b335af417164e67770eddcc1afd17c419b99b</SHA1><branch><SHA1>ff2b335af417164e67770eddcc1afd17c419b99b</SHA1><name>refs/remotes/origin/master</name></branch></marked><revision><SHA1>ff2b335af417164e67770eddcc1afd17c419b99b</SHA1><branch><SHA1>ff2b335af417164e67770eddcc1afd17c419b99b</SHA1><name>refs/remotes/origin/master</name></branch></revision></refsremotesoriginmaster></buildsByBranchName><lastBuiltRevision><SHA1>ff2b335af417164e67770eddcc1afd17c419b99b</SHA1><branch><SHA1>ff2b335af417164e67770eddcc1afd17c419b99b</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><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>#317</displayName><duration>58479</duration><estimatedDuration>66335</estimatedDuration><fullDisplayName>mcMMO #317</fullDisplayName><id>317</id><inProgress>false</inProgress><keepLog>false</keepLog><number>317</number><queueId>151</queueId><result>SUCCESS</result><timestamp>1780355015318</timestamp><url>https://popicraft.net/jenkins/job/mcMMO/317/</url><builtOn>Builder</builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>Changelog.txt</affectedPath><commitId>dcf0526ac83fc45e07077c9849a5af8591d8ce1b</commitId><timestamp>1780247177000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>update changelog
</comment><date>2026-05-31 10:06:17 -0700</date><id>dcf0526ac83fc45e07077c9849a5af8591d8ce1b</id><msg>update changelog</msg><path><editType>edit</editType><file>Changelog.txt</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/main/java/com/gmail/nossr50/config/WorldBlacklist.java</affectedPath><affectedPath>src/test/java/com/gmail/nossr50/config/WorldBlacklistTest.java</affectedPath><commitId>30c7126986c16e9c1ad8be4a5660a7e6ba11a032</commitId><timestamp>1780292419000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>Fix WorldBlacklist startup null-pointer path

Initialize blacklist eagerly and guard isWorldBlacklisted for null world / null-or-empty blacklist so enable/disable world loops cannot throw during early plugin lifecycle.

Add WorldBlacklistTest coverage for null blacklist field, null world, case-insensitive match, and non-match behavior.
</comment><date>2026-05-31 22:40:19 -0700</date><id>30c7126986c16e9c1ad8be4a5660a7e6ba11a032</id><msg>Fix WorldBlacklist startup null-pointer path</msg><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/config/WorldBlacklist.java</file></path><path><editType>add</editType><file>src/test/java/com/gmail/nossr50/config/WorldBlacklistTest.java</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/test/java/com/gmail/nossr50/database/FlatFileDatabaseManagerTest.java</affectedPath><affectedPath>src/test/java/com/gmail/nossr50/database/SQLDatabaseManagerTest.java</affectedPath><commitId>ae76eed87be5fb77b01cdb779ce426ac653812fa</commitId><timestamp>1780292423000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>Stabilize database manager tests via ExperienceConfig mocking

Mock ExperienceConfig.getInstance() in FlatFileDatabaseManagerTest and SQLDatabaseManagerTest with diminished returns disabled so test setup does not depend on global singleton state.

Close static mocks in tearDown to avoid leakage across test classes.
</comment><date>2026-05-31 22:40:23 -0700</date><id>ae76eed87be5fb77b01cdb779ce426ac653812fa</id><msg>Stabilize database manager tests via ExperienceConfig mocking</msg><path><editType>edit</editType><file>src/test/java/com/gmail/nossr50/database/FlatFileDatabaseManagerTest.java</file></path><path><editType>edit</editType><file>src/test/java/com/gmail/nossr50/database/SQLDatabaseManagerTest.java</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/main/java/com/gmail/nossr50/listeners/WorldListener.java</affectedPath><affectedPath>src/test/java/com/gmail/nossr50/util/blockmeta/McMMORegionBackupStoreTest.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/util/blockmeta/HashChunkManager.java</affectedPath><affectedPath>src/test/java/com/gmail/nossr50/util/blockmeta/McMMORegionBackupStoreStressTest.java</affectedPath><affectedPath>pom.xml</affectedPath><affectedPath>Changelog.txt</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/util/blockmeta/BitSetChunkStore.java</affectedPath><affectedPath>Jenkinsfile</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/util/blockmeta/McMMORegionBackupStore.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/mcMMO.java</affectedPath><affectedPath>.github/workflows/maven.yml</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/config/GeneralConfig.java</affectedPath><affectedPath>src/test/java/com/gmail/nossr50/McMMOTimingFormatTest.java</affectedPath><affectedPath>src/main/resources/config.yml</affectedPath><commitId>ff2b335af417164e67770eddcc1afd17c419b99b</commitId><timestamp>1780354575000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>Handle Paper world-layout migration for region data
Fixes #5290
</comment><date>2026-06-01 15:56:15 -0700</date><id>ff2b335af417164e67770eddcc1afd17c419b99b</id><msg>Handle Paper world-layout migration for region data</msg><path><editType>edit</editType><file>.github/workflows/maven.yml</file></path><path><editType>edit</editType><file>Jenkinsfile</file></path><path><editType>edit</editType><file>Changelog.txt</file></path><path><editType>add</editType><file>src/test/java/com/gmail/nossr50/McMMOTimingFormatTest.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/mcMMO.java</file></path><path><editType>add</editType><file>src/main/java/com/gmail/nossr50/util/blockmeta/McMMORegionBackupStore.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/config/GeneralConfig.java</file></path><path><editType>add</editType><file>src/test/java/com/gmail/nossr50/util/blockmeta/McMMORegionBackupStoreStressTest.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/util/blockmeta/HashChunkManager.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/util/blockmeta/BitSetChunkStore.java</file></path><path><editType>edit</editType><file>pom.xml</file></path><path><editType>edit</editType><file>src/main/resources/config.yml</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/listeners/WorldListener.java</file></path><path><editType>add</editType><file>src/test/java/com/gmail/nossr50/util/blockmeta/McMMORegionBackupStoreTest.java</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></culprit><culprit><absoluteUrl>https://popicraft.net/jenkins/user/github</absoluteUrl><fullName>github</fullName></culprit></build><build _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>316</buildNumber><marked><SHA1>75c6c39d207d46934b9325e3c777c8249d5f7433</SHA1><branch><SHA1>75c6c39d207d46934b9325e3c777c8249d5f7433</SHA1><name>refs/remotes/origin/master</name></branch></marked><revision><SHA1>75c6c39d207d46934b9325e3c777c8249d5f7433</SHA1><branch><SHA1>75c6c39d207d46934b9325e3c777c8249d5f7433</SHA1><name>refs/remotes/origin/master</name></branch></revision></refsremotesoriginmaster></buildsByBranchName><lastBuiltRevision><SHA1>75c6c39d207d46934b9325e3c777c8249d5f7433</SHA1><branch><SHA1>75c6c39d207d46934b9325e3c777c8249d5f7433</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>#316</displayName><duration>41651</duration><estimatedDuration>66335</estimatedDuration><fullDisplayName>mcMMO #316</fullDisplayName><id>316</id><inProgress>false</inProgress><keepLog>false</keepLog><number>316</number><queueId>149</queueId><result>FAILURE</result><timestamp>1780250613603</timestamp><url>https://popicraft.net/jenkins/job/mcMMO/316/</url><builtOn>Builder</builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/main/java/com/gmail/nossr50/listeners/EntityListener.java</affectedPath><commitId>21bc081518bbad8cf107f0698b320bf9a44bd108</commitId><timestamp>1780250222000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/github</absoluteUrl><fullName>github</fullName></author><authorEmail>noreply@github.com</authorEmail><comment>Fix entities keeping their health bars after unload (#5295)
</comment><date>2026-05-31 10:57:02 -0700</date><id>21bc081518bbad8cf107f0698b320bf9a44bd108</id><msg>Fix entities keeping their health bars after unload (#5295)</msg><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/listeners/EntityListener.java</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/main/java/com/gmail/nossr50/listeners/EntityListener.java</affectedPath><commitId>95a87afdb4838093de5d8e185889face415e0a2f</commitId><timestamp>1780250258000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/github</absoluteUrl><fullName>github</fullName></author><authorEmail>noreply@github.com</authorEmail><comment>Fix traveling block metadata leaking on folia (#5294)
</comment><date>2026-05-31 10:57:38 -0700</date><id>95a87afdb4838093de5d8e185889face415e0a2f</id><msg>Fix traveling block metadata leaking on folia (#5294)</msg><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/listeners/EntityListener.java</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/main/java/com/gmail/nossr50/config/GeneralConfig.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/skills/fishing/FishingManager.java</affectedPath><affectedPath>src/main/resources/config.yml</affectedPath><commitId>75c6c39d207d46934b9325e3c777c8249d5f7433</commitId><timestamp>1780250290000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/github</absoluteUrl><fullName>github</fullName></author><authorEmail>noreply@github.com</authorEmail><comment>Add option to toggle receiving conflicting enchants from magic hunter (#5282)
</comment><date>2026-05-31 10:58:10 -0700</date><id>75c6c39d207d46934b9325e3c777c8249d5f7433</id><msg>Add option to toggle receiving conflicting enchants from magic hunter (#5282)</msg><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/config/GeneralConfig.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/skills/fishing/FishingManager.java</file></path><path><editType>edit</editType><file>src/main/resources/config.yml</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></culprit><culprit><absoluteUrl>https://popicraft.net/jenkins/user/github</absoluteUrl><fullName>github</fullName></culprit></build><build _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>315</buildNumber><marked><SHA1>2ec35ed0ccaf797a613d963f9cdc490cd05f403d</SHA1><branch><SHA1>2ec35ed0ccaf797a613d963f9cdc490cd05f403d</SHA1><name>refs/remotes/origin/master</name></branch></marked><revision><SHA1>2ec35ed0ccaf797a613d963f9cdc490cd05f403d</SHA1><branch><SHA1>2ec35ed0ccaf797a613d963f9cdc490cd05f403d</SHA1><name>refs/remotes/origin/master</name></branch></revision></refsremotesoriginmaster></buildsByBranchName><lastBuiltRevision><SHA1>2ec35ed0ccaf797a613d963f9cdc490cd05f403d</SHA1><branch><SHA1>2ec35ed0ccaf797a613d963f9cdc490cd05f403d</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>#315</displayName><duration>38915</duration><estimatedDuration>66335</estimatedDuration><fullDisplayName>mcMMO #315</fullDisplayName><id>315</id><inProgress>false</inProgress><keepLog>false</keepLog><number>315</number><queueId>148</queueId><result>FAILURE</result><timestamp>1780207533858</timestamp><url>https://popicraft.net/jenkins/job/mcMMO/315/</url><builtOn>Builder</builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/test/java/com/gmail/nossr50/MMOTestEnvironment.java</affectedPath><affectedPath>src/test/java/com/gmail/nossr50/database/FlatFileDatabaseManagerTest.java</affectedPath><affectedPath>.gitignore</affectedPath><affectedPath>src/test/java/com/gmail/nossr50/database/SQLDatabaseManagerTest.java</affectedPath><commitId>2ec35ed0ccaf797a613d963f9cdc490cd05f403d</commitId><timestamp>1780207117000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>Fix test environment writing config files to project root

BukkitConfig calls mcMMO.p.getDataFolder() in its constructor to
determine where to write config files. When tests mock mcMMO.p but
don't stub getDataFolder(), it returns null, which Java resolves to
the current working directory (the project root), causing files like
experience.yml to be created there.

Fix by stubbing mcMMO.p.getDataFolder() with a fresh temporary
directory in every test setup that mocks mcMMO.p:
- MMOTestEnvironment.mockBaseEnvironment(): creates testDataFolder
  in temp and deletes it in cleanUpStaticMocks()
- SQLDatabaseManagerTest.setUpAll(): same pattern, cleaned in tearDownAll()
- FlatFileDatabaseManagerTest.initBeforeAll(): same pattern, cleaned
  in the new tearDownAll() method

Also remove the .gitignore band-aid entries that were added to paper
over the symptom.
</comment><date>2026-05-30 22:58:37 -0700</date><id>2ec35ed0ccaf797a613d963f9cdc490cd05f403d</id><msg>Fix test environment writing config files to project root</msg><path><editType>edit</editType><file>src/test/java/com/gmail/nossr50/MMOTestEnvironment.java</file></path><path><editType>edit</editType><file>src/test/java/com/gmail/nossr50/database/SQLDatabaseManagerTest.java</file></path><path><editType>edit</editType><file>.gitignore</file></path><path><editType>edit</editType><file>src/test/java/com/gmail/nossr50/database/FlatFileDatabaseManagerTest.java</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></culprit><culprit><absoluteUrl>https://popicraft.net/jenkins/user/github</absoluteUrl><fullName>github</fullName></culprit></build><build _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>314</buildNumber><marked><SHA1>3a69634a3392781d22b3fcb63ef223b9d139c3df</SHA1><branch><SHA1>3a69634a3392781d22b3fcb63ef223b9d139c3df</SHA1><name>refs/remotes/origin/master</name></branch></marked><revision><SHA1>3a69634a3392781d22b3fcb63ef223b9d139c3df</SHA1><branch><SHA1>3a69634a3392781d22b3fcb63ef223b9d139c3df</SHA1><name>refs/remotes/origin/master</name></branch></revision></refsremotesoriginmaster></buildsByBranchName><lastBuiltRevision><SHA1>3a69634a3392781d22b3fcb63ef223b9d139c3df</SHA1><branch><SHA1>3a69634a3392781d22b3fcb63ef223b9d139c3df</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>#314</displayName><duration>49668</duration><estimatedDuration>66335</estimatedDuration><fullDisplayName>mcMMO #314</fullDisplayName><id>314</id><inProgress>false</inProgress><keepLog>false</keepLog><number>314</number><queueId>146</queueId><result>FAILURE</result><timestamp>1780202913343</timestamp><url>https://popicraft.net/jenkins/job/mcMMO/314/</url><builtOn>Builder</builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/main/java/com/gmail/nossr50/util/AttributeMapper.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/util/skills/CombatUtils.java</affectedPath><affectedPath>Changelog.txt</affectedPath><affectedPath>src/test/java/com/gmail/nossr50/util/skills/CombatUtilsTest.java</affectedPath><commitId>8e1b6deaa5a81fabe92b362e8ef58adfe8e354f8</commitId><timestamp>1780200740000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>Fix melee attack strength scale after Paper fixed attack cooldown bug in 26.1.2

Paper 26.1.2 fixed a bug where the player attack cooldown ticker was not
resetting at the correct point during melee hits. mcMMO relied on the old
(incorrect) order, reading the cooldown during the damage event, which
always returned near-zero after Paper's fix. Attack strength scale is
now back-derived from the raw event damage divided by the player's
GENERIC_ATTACK_DAMAGE attribute value and clamped to [0.0, 1.0].

AttributeMapper now survives test environments where Bukkit registries
are absent (catch Throwable in the registry reflection path).

Fixes #5287.
</comment><date>2026-05-30 21:12:20 -0700</date><id>8e1b6deaa5a81fabe92b362e8ef58adfe8e354f8</id><msg>Fix melee attack strength scale after Paper fixed attack cooldown bug in 26.1.2</msg><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/util/AttributeMapper.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/util/skills/CombatUtils.java</file></path><path><editType>edit</editType><file>Changelog.txt</file></path><path><editType>edit</editType><file>src/test/java/com/gmail/nossr50/util/skills/CombatUtilsTest.java</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/main/java/com/gmail/nossr50/datatypes/player/PlayerProfile.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/runnables/player/ClearRegisteredXPGainTask.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/datatypes/experience/SkillXpGain.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/datatypes/experience/DiminishedReturnsCache.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/datatypes/experience/DiminishedReturnsState.java</affectedPath><affectedPath>src/test/java/com/gmail/nossr50/datatypes/experience/DiminishedReturnsCacheTest.java</affectedPath><commitId>3fb13694441fa58f02f464cebf02cc9c40b10d5d</commitId><timestamp>1780200750000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>Refactor diminished returns tracking into DiminishedReturnsCache/State

Extracts per-player DR data out of PlayerProfile into two new classes:
- DiminishedReturnsState: thread-safe XP gain queue and rolling totals
- DiminishedReturnsCache: UUID-keyed server-side cache that keeps DR
  state alive across disconnect/reconnect to prevent window bypass

Fixes a bug where evictExpired() would remove fresh states that had
never registered any XP, orphaning the PlayerProfile reference and
allowing reconnects to bypass the DR window.

DR tracking is now skipped entirely (no state mutation) when the
diminished returns config option is disabled.

Fixes #3475. Fixes #3814.
</comment><date>2026-05-30 21:12:30 -0700</date><id>3fb13694441fa58f02f464cebf02cc9c40b10d5d</id><msg>Refactor diminished returns tracking into DiminishedReturnsCache/State</msg><path><editType>add</editType><file>src/test/java/com/gmail/nossr50/datatypes/experience/DiminishedReturnsCacheTest.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/datatypes/player/PlayerProfile.java</file></path><path><editType>add</editType><file>src/main/java/com/gmail/nossr50/datatypes/experience/DiminishedReturnsState.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/datatypes/experience/SkillXpGain.java</file></path><path><editType>add</editType><file>src/main/java/com/gmail/nossr50/datatypes/experience/DiminishedReturnsCache.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/runnables/player/ClearRegisteredXPGainTask.java</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/test/java/com/gmail/nossr50/database/FlatFileDatabaseManagerTest.java</affectedPath><affectedPath>.gitignore</affectedPath><affectedPath>src/test/java/com/gmail/nossr50/skills/tridents/TridentsTest.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/config/treasure/FishingTreasureConfig.java</affectedPath><commitId>3a69634a3392781d22b3fcb63ef223b9d139c3df</commitId><timestamp>1780202550000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>Fix pre-existing test failures and improve Docker test skip mechanism

- FishingTreasureConfig.fixMooshroomEntityId was a public static method that
  called mcMMO.p.getLogger() directly, causing NPE when tests invoked it without
  a live plugin instance. Add a private static Logger field and use it in the
  static method instead.
- TridentsTest.impaleDamageBonusShouldMatchRankOneBaseDamage had a stale expected
  value (1.0) left over from before commit 71868d9d fixed the Impale formula to
  use rank * multiplier. The correct expectation for rank 1 is
  base + 1 * multiplier = 1.5. Rename the test to match the new semantic.
- Add @Tag(docker) to FlatFileDatabaseManagerTest so the existing
  skip-docker-tests Maven profile (-DskipDockerTests=true) excludes it alongside
  SQLDatabaseManagerTest.
- Add generated config file names (experience.yml, config.yml, etc.) to
  .gitignore to prevent accidental staging when tests run without a properly
  mocked getDataFolder().
</comment><date>2026-05-30 21:42:30 -0700</date><id>3a69634a3392781d22b3fcb63ef223b9d139c3df</id><msg>Fix pre-existing test failures and improve Docker test skip mechanism</msg><path><editType>edit</editType><file>src/test/java/com/gmail/nossr50/database/FlatFileDatabaseManagerTest.java</file></path><path><editType>edit</editType><file>.gitignore</file></path><path><editType>edit</editType><file>src/test/java/com/gmail/nossr50/skills/tridents/TridentsTest.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/config/treasure/FishingTreasureConfig.java</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></culprit><culprit><absoluteUrl>https://popicraft.net/jenkins/user/github</absoluteUrl><fullName>github</fullName></culprit></build><build _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>313</buildNumber><marked><SHA1>71868d9d2e87230ea0f8b8628edbf8ff869e0155</SHA1><branch><SHA1>71868d9d2e87230ea0f8b8628edbf8ff869e0155</SHA1><name>refs/remotes/origin/master</name></branch></marked><revision><SHA1>71868d9d2e87230ea0f8b8628edbf8ff869e0155</SHA1><branch><SHA1>71868d9d2e87230ea0f8b8628edbf8ff869e0155</SHA1><name>refs/remotes/origin/master</name></branch></revision></refsremotesoriginmaster></buildsByBranchName><lastBuiltRevision><SHA1>71868d9d2e87230ea0f8b8628edbf8ff869e0155</SHA1><branch><SHA1>71868d9d2e87230ea0f8b8628edbf8ff869e0155</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>#313</displayName><duration>52913</duration><estimatedDuration>66335</estimatedDuration><fullDisplayName>mcMMO #313</fullDisplayName><id>313</id><inProgress>false</inProgress><keepLog>false</keepLog><number>313</number><queueId>140</queueId><result>FAILURE</result><timestamp>1779729511157</timestamp><url>https://popicraft.net/jenkins/job/mcMMO/313/</url><builtOn>Builder</builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/test/java/com/gmail/nossr50/skills/woodcutting/WoodcuttingTest.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/skills/woodcutting/WoodcuttingManager.java</affectedPath><affectedPath>Changelog.txt</affectedPath><commitId>8ff047d5a1a77f0f58c391ac41e9920f0e2b7199</commitId><timestamp>1779728779000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>Fix KnockOnWood XP orbs never spawning on nether tree cap blocks during Tree Feller

Nether_Wart_Block and Warped_Wart_Block both have woodcutting XP in
experience.yml AND are in the treeFellerDestructibleWhiteList. The
drop routing in dropTreeFellerLootFromBlocks used an if/else-if
structure, so blocks with woodcutting XP always took the first branch
and never reached the else-if where the KnockOnWood orb logic lived.

Fix: extract the orb spawning block into a standalone if-check that
runs after the drop routing, so it fires for any isNonWoodPartOfTree
block regardless of whether it also has woodcutting XP.

Fixes #5288
</comment><date>2026-05-25 10:06:19 -0700</date><id>8ff047d5a1a77f0f58c391ac41e9920f0e2b7199</id><msg>Fix KnockOnWood XP orbs never spawning on nether tree cap blocks during Tree Feller</msg><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/skills/woodcutting/WoodcuttingManager.java</file></path><path><editType>edit</editType><file>src/test/java/com/gmail/nossr50/skills/woodcutting/WoodcuttingTest.java</file></path><path><editType>edit</editType><file>Changelog.txt</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/test/java/com/gmail/nossr50/skills/woodcutting/WoodcuttingTest.java</affectedPath><affectedPath>Changelog.txt</affectedPath><commitId>c838a69e7eafd6a20dd218f02fbef956abce66df</commitId><timestamp>1779729157000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>Rename underscore test method names to camelCase in WoodcuttingTest; clean up 2.2.053 changelog entries
</comment><date>2026-05-25 10:12:37 -0700</date><id>c838a69e7eafd6a20dd218f02fbef956abce66df</id><msg>Rename underscore test method names to camelCase in WoodcuttingTest; clean up 2.2.053 changelog entries</msg><path><editType>edit</editType><file>src/test/java/com/gmail/nossr50/skills/woodcutting/WoodcuttingTest.java</file></path><path><editType>edit</editType><file>Changelog.txt</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/test/java/com/gmail/nossr50/skills/tridents/TridentsTest.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/skills/tridents/TridentsManager.java</affectedPath><commitId>71868d9d2e87230ea0f8b8628edbf8ff869e0155</commitId><timestamp>1779729282000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>Fix Impale damage formula: use rank * multiplier instead of (rank - 1) * multiplier
</comment><date>2026-05-25 10:14:42 -0700</date><id>71868d9d2e87230ea0f8b8628edbf8ff869e0155</id><msg>Fix Impale damage formula: use rank * multiplier instead of (rank - 1) * multiplier</msg><path><editType>edit</editType><file>src/test/java/com/gmail/nossr50/skills/tridents/TridentsTest.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/skills/tridents/TridentsManager.java</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></culprit><culprit><absoluteUrl>https://popicraft.net/jenkins/user/github</absoluteUrl><fullName>github</fullName></culprit></build><build _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>312</buildNumber><marked><SHA1>e6c28b6fc8468adee1ff4cf6c4970547d72ba7d2</SHA1><branch><SHA1>e6c28b6fc8468adee1ff4cf6c4970547d72ba7d2</SHA1><name>refs/remotes/origin/master</name></branch></marked><revision><SHA1>e6c28b6fc8468adee1ff4cf6c4970547d72ba7d2</SHA1><branch><SHA1>e6c28b6fc8468adee1ff4cf6c4970547d72ba7d2</SHA1><name>refs/remotes/origin/master</name></branch></revision></refsremotesoriginmaster></buildsByBranchName><lastBuiltRevision><SHA1>e6c28b6fc8468adee1ff4cf6c4970547d72ba7d2</SHA1><branch><SHA1>e6c28b6fc8468adee1ff4cf6c4970547d72ba7d2</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>#312</displayName><duration>38817</duration><estimatedDuration>66335</estimatedDuration><fullDisplayName>mcMMO #312</fullDisplayName><id>312</id><inProgress>false</inProgress><keepLog>false</keepLog><number>312</number><queueId>128</queueId><result>FAILURE</result><timestamp>1778794409118</timestamp><url>https://popicraft.net/jenkins/job/mcMMO/312/</url><builtOn>Builder</builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><kind>git</kind></changeSet><culprit><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></culprit><culprit><absoluteUrl>https://popicraft.net/jenkins/user/github</absoluteUrl><fullName>github</fullName></culprit></build><build _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>311</buildNumber><marked><SHA1>9a0a2f0a47bfd77c506325a9b7b7fc2a71dbb4e2</SHA1><branch><SHA1>9a0a2f0a47bfd77c506325a9b7b7fc2a71dbb4e2</SHA1><name>refs/remotes/origin/master</name></branch></marked><revision><SHA1>9a0a2f0a47bfd77c506325a9b7b7fc2a71dbb4e2</SHA1><branch><SHA1>9a0a2f0a47bfd77c506325a9b7b7fc2a71dbb4e2</SHA1><name>refs/remotes/origin/master</name></branch></revision></refsremotesoriginmaster></buildsByBranchName><lastBuiltRevision><SHA1>9a0a2f0a47bfd77c506325a9b7b7fc2a71dbb4e2</SHA1><branch><SHA1>9a0a2f0a47bfd77c506325a9b7b7fc2a71dbb4e2</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>#311</displayName><duration>40617</duration><estimatedDuration>66335</estimatedDuration><fullDisplayName>mcMMO #311</fullDisplayName><id>311</id><inProgress>false</inProgress><keepLog>false</keepLog><number>311</number><queueId>127</queueId><result>FAILURE</result><timestamp>1778792608982</timestamp><url>https://popicraft.net/jenkins/job/mcMMO/311/</url><builtOn>Builder</builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>pom.xml</affectedPath><commitId>9a0a2f0a47bfd77c506325a9b7b7fc2a71dbb4e2</commitId><timestamp>1778792049000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>back to snapshots
</comment><date>2026-05-14 13:54:09 -0700</date><id>9a0a2f0a47bfd77c506325a9b7b7fc2a71dbb4e2</id><msg>back to snapshots</msg><path><editType>edit</editType><file>pom.xml</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></culprit><culprit><absoluteUrl>https://popicraft.net/jenkins/user/github</absoluteUrl><fullName>github</fullName></culprit></build><build _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>310</buildNumber><marked><SHA1>4703746dff0cbc247953422220a385244a41d016</SHA1><branch><SHA1>4703746dff0cbc247953422220a385244a41d016</SHA1><name>refs/remotes/origin/master</name></branch></marked><revision><SHA1>4703746dff0cbc247953422220a385244a41d016</SHA1><branch><SHA1>4703746dff0cbc247953422220a385244a41d016</SHA1><name>refs/remotes/origin/master</name></branch></revision></refsremotesoriginmaster></buildsByBranchName><lastBuiltRevision><SHA1>4703746dff0cbc247953422220a385244a41d016</SHA1><branch><SHA1>4703746dff0cbc247953422220a385244a41d016</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>#310</displayName><duration>37833</duration><estimatedDuration>66335</estimatedDuration><fullDisplayName>mcMMO #310</fullDisplayName><id>310</id><inProgress>false</inProgress><keepLog>false</keepLog><number>310</number><queueId>126</queueId><result>FAILURE</result><timestamp>1778791708913</timestamp><url>https://popicraft.net/jenkins/job/mcMMO/310/</url><builtOn>Builder</builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/test/java/com/gmail/nossr50/config/treasure/FishingTreasureConfigTest.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/datatypes/database/UpgradeType.java</affectedPath><affectedPath>src/main/resources/fishing_treasures.yml</affectedPath><affectedPath>Changelog.txt</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/config/treasure/FishingTreasureConfig.java</affectedPath><commitId>4098e415e36bdc27e522437ac3d11f8f620a6615</commitId><timestamp>1778791202000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>use correct cow name for shake
fixes #5284
</comment><date>2026-05-14 13:40:02 -0700</date><id>4098e415e36bdc27e522437ac3d11f8f620a6615</id><msg>use correct cow name for shake</msg><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/config/treasure/FishingTreasureConfig.java</file></path><path><editType>edit</editType><file>src/main/resources/fishing_treasures.yml</file></path><path><editType>edit</editType><file>Changelog.txt</file></path><path><editType>add</editType><file>src/test/java/com/gmail/nossr50/config/treasure/FishingTreasureConfigTest.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/datatypes/database/UpgradeType.java</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>pom.xml</affectedPath><commitId>4703746dff0cbc247953422220a385244a41d016</commitId><timestamp>1778791236000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>2.2.052
</comment><date>2026-05-14 13:40:36 -0700</date><id>4703746dff0cbc247953422220a385244a41d016</id><msg>2.2.052</msg><path><editType>edit</editType><file>pom.xml</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></culprit><culprit><absoluteUrl>https://popicraft.net/jenkins/user/github</absoluteUrl><fullName>github</fullName></culprit></build><build _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>309</buildNumber><marked><SHA1>8352b3a006bf47c66e786c72870918cefff6e28f</SHA1><branch><SHA1>8352b3a006bf47c66e786c72870918cefff6e28f</SHA1><name>refs/remotes/origin/master</name></branch></marked><revision><SHA1>8352b3a006bf47c66e786c72870918cefff6e28f</SHA1><branch><SHA1>8352b3a006bf47c66e786c72870918cefff6e28f</SHA1><name>refs/remotes/origin/master</name></branch></revision></refsremotesoriginmaster></buildsByBranchName><lastBuiltRevision><SHA1>8352b3a006bf47c66e786c72870918cefff6e28f</SHA1><branch><SHA1>8352b3a006bf47c66e786c72870918cefff6e28f</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>#309</displayName><duration>39459</duration><estimatedDuration>66335</estimatedDuration><fullDisplayName>mcMMO #309</fullDisplayName><id>309</id><inProgress>false</inProgress><keepLog>false</keepLog><number>309</number><queueId>124</queueId><result>FAILURE</result><timestamp>1778720608250</timestamp><url>https://popicraft.net/jenkins/job/mcMMO/309/</url><builtOn>Builder</builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/main/java/com/gmail/nossr50/listeners/BlockListener.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/util/BlockUtils.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/util/MetadataConstants.java</affectedPath><commitId>8352b3a006bf47c66e786c72870918cefff6e28f</commitId><timestamp>1778720384000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>use metadata
</comment><date>2026-05-13 17:59:44 -0700</date><id>8352b3a006bf47c66e786c72870918cefff6e28f</id><msg>use metadata</msg><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/util/BlockUtils.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/util/MetadataConstants.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/listeners/BlockListener.java</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></culprit><culprit><absoluteUrl>https://popicraft.net/jenkins/user/github</absoluteUrl><fullName>github</fullName></culprit></build><build _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>308</buildNumber><marked><SHA1>47cebf2cc2830eac69af3e4e5cd0d20cf9d81c4e</SHA1><branch><SHA1>47cebf2cc2830eac69af3e4e5cd0d20cf9d81c4e</SHA1><name>refs/remotes/origin/master</name></branch></marked><revision><SHA1>47cebf2cc2830eac69af3e4e5cd0d20cf9d81c4e</SHA1><branch><SHA1>47cebf2cc2830eac69af3e4e5cd0d20cf9d81c4e</SHA1><name>refs/remotes/origin/master</name></branch></revision></refsremotesoriginmaster></buildsByBranchName><lastBuiltRevision><SHA1>47cebf2cc2830eac69af3e4e5cd0d20cf9d81c4e</SHA1><branch><SHA1>47cebf2cc2830eac69af3e4e5cd0d20cf9d81c4e</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>#308</displayName><duration>55965</duration><estimatedDuration>66335</estimatedDuration><fullDisplayName>mcMMO #308</fullDisplayName><id>308</id><inProgress>false</inProgress><keepLog>false</keepLog><number>308</number><queueId>123</queueId><result>FAILURE</result><timestamp>1778718808092</timestamp><url>https://popicraft.net/jenkins/job/mcMMO/308/</url><builtOn>Builder</builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/main/java/com/gmail/nossr50/listeners/BlockListener.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/skills/excavation/ExcavationManager.java</affectedPath><affectedPath>src/test/java/com/gmail/nossr50/skills/excavation/ExcavationTest.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/skills/excavation/Excavation.java</affectedPath><commitId>47cebf2cc2830eac69af3e4e5cd0d20cf9d81c4e</commitId><timestamp>1778718209000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>Fix excavation treasure drops broken by BlockDropItemEvent refactor

block.getType() returns AIR by the time BlockDropItemEvent fires because
the block is removed before the event is dispatched. Capture the pre-break
material from event.getBlockState().getType() and thread it through to
affectedByGigaDrillBreaker and rollAndCollectTreasureDrops so treasure
lookups use the correct material instead of AIR.
</comment><date>2026-05-13 17:23:29 -0700</date><id>47cebf2cc2830eac69af3e4e5cd0d20cf9d81c4e</id><msg>Fix excavation treasure drops broken by BlockDropItemEvent refactor</msg><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/skills/excavation/Excavation.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/listeners/BlockListener.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/skills/excavation/ExcavationManager.java</file></path><path><editType>edit</editType><file>src/test/java/com/gmail/nossr50/skills/excavation/ExcavationTest.java</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></culprit><culprit><absoluteUrl>https://popicraft.net/jenkins/user/github</absoluteUrl><fullName>github</fullName></culprit></build><build _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>307</buildNumber><marked><SHA1>eaf8bffb63be6c9b2cac625d6a8202fcff8ef125</SHA1><branch><SHA1>eaf8bffb63be6c9b2cac625d6a8202fcff8ef125</SHA1><name>refs/remotes/origin/master</name></branch></marked><revision><SHA1>eaf8bffb63be6c9b2cac625d6a8202fcff8ef125</SHA1><branch><SHA1>eaf8bffb63be6c9b2cac625d6a8202fcff8ef125</SHA1><name>refs/remotes/origin/master</name></branch></revision></refsremotesoriginmaster></buildsByBranchName><lastBuiltRevision><SHA1>eaf8bffb63be6c9b2cac625d6a8202fcff8ef125</SHA1><branch><SHA1>eaf8bffb63be6c9b2cac625d6a8202fcff8ef125</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>#307</displayName><duration>51446</duration><estimatedDuration>66335</estimatedDuration><fullDisplayName>mcMMO #307</fullDisplayName><id>307</id><inProgress>false</inProgress><keepLog>false</keepLog><number>307</number><queueId>120</queueId><result>FAILURE</result><timestamp>1778553224938</timestamp><url>https://popicraft.net/jenkins/job/mcMMO/307/</url><builtOn>Builder</builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/main/java/com/gmail/nossr50/util/MaterialMapStore.java</affectedPath><commitId>c457d3a180256c51f9f81652ecfb06bf8d6ce620</commitId><timestamp>1778549067000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>Fix block cracker whitelist missing 4 crackable block types

deepslate_bricks, deepslate_tiles, polished_blackstone_bricks, and
nether_bricks were handled in blockCrackerCheck() but were absent from
fillBlockCrackerWhiteList(). The listener gates on affectedByBlockCracker()
which reads the whitelist, so those blocks could never be cracked.
</comment><date>2026-05-11 18:24:27 -0700</date><id>c457d3a180256c51f9f81652ecfb06bf8d6ce620</id><msg>Fix block cracker whitelist missing 4 crackable block types</msg><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/util/MaterialMapStore.java</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>Changelog.txt</affectedPath><commitId>807b3e29993108b8f3270fff5130f15219216720</commitId><timestamp>1778549067000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>Update Changelog.txt for block cracker whitelist fix
</comment><date>2026-05-11 18:24:27 -0700</date><id>807b3e29993108b8f3270fff5130f15219216720</id><msg>Update Changelog.txt for block cracker whitelist fix</msg><path><editType>edit</editType><file>Changelog.txt</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/main/java/com/gmail/nossr50/skills/herbalism/HerbalismManager.java</affectedPath><affectedPath>Changelog.txt</affectedPath><commitId>eaf8bffb63be6c9b2cac625d6a8202fcff8ef125</commitId><timestamp>1778550518000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>Wire up Verdant Bounty triple drop passive for Herbalism
</comment><date>2026-05-11 18:48:38 -0700</date><id>eaf8bffb63be6c9b2cac625d6a8202fcff8ef125</id><msg>Wire up Verdant Bounty triple drop passive for Herbalism</msg><path><editType>edit</editType><file>Changelog.txt</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/skills/herbalism/HerbalismManager.java</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></culprit><culprit><absoluteUrl>https://popicraft.net/jenkins/user/github</absoluteUrl><fullName>github</fullName></culprit></build><build _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>306</buildNumber><marked><SHA1>366a512b5fa83c69bcbcee51852f9dcd42976abc</SHA1><branch><SHA1>366a512b5fa83c69bcbcee51852f9dcd42976abc</SHA1><name>refs/remotes/origin/master</name></branch></marked><revision><SHA1>366a512b5fa83c69bcbcee51852f9dcd42976abc</SHA1><branch><SHA1>366a512b5fa83c69bcbcee51852f9dcd42976abc</SHA1><name>refs/remotes/origin/master</name></branch></revision></refsremotesoriginmaster></buildsByBranchName><lastBuiltRevision><SHA1>366a512b5fa83c69bcbcee51852f9dcd42976abc</SHA1><branch><SHA1>366a512b5fa83c69bcbcee51852f9dcd42976abc</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>#306</displayName><duration>49603</duration><estimatedDuration>66335</estimatedDuration><fullDisplayName>mcMMO #306</fullDisplayName><id>306</id><inProgress>false</inProgress><keepLog>false</keepLog><number>306</number><queueId>119</queueId><result>FAILURE</result><timestamp>1778527126663</timestamp><url>https://popicraft.net/jenkins/job/mcMMO/306/</url><builtOn>Builder</builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/main/java/com/gmail/nossr50/config/skills/alchemy/PotionConfig.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/datatypes/database/UpgradeType.java</affectedPath><affectedPath>Changelog.txt</affectedPath><affectedPath>src/test/java/com/gmail/nossr50/config/skills/alchemy/PotionConfigTest.java</affectedPath><commitId>366a512b5fa83c69bcbcee51852f9dcd42976abc</commitId><timestamp>1778526855000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>Fix incorrect Tricky Trials potion durations via UpgradeManager migration

Warriorrrr's commit (fb6aebcaa) corrected the default potions.yml shipped
with the plugin (splash: 2500-&gt;3600, lingering: 3000-&gt;900), but existing
server installs still had the old incorrect values.

This adds a one-time UpgradeManager migration (FIX_TRICKY_TRIALS_SPLASH_POTION_DURATIONS)
that auto-patches existing potions.yml on first server startup after updating.
The migration only corrects exact-match bad values; user-customized durations
are intentionally left untouched. Absent potion keys are silently skipped.

- Add UpgradeType.FIX_TRICKY_TRIALS_SPLASH_POTION_DURATIONS
- Implement PotionConfig.fixTrickyTrialsPotionDurations() + patchTrickyTrialsDurations()
- Gate migration in PotionConfig.loadPotions() via shouldUpgrade()
- Add 13 unit tests covering all migration paths in PotionConfigTest
</comment><date>2026-05-11 12:14:15 -0700</date><id>366a512b5fa83c69bcbcee51852f9dcd42976abc</id><msg>Fix incorrect Tricky Trials potion durations via UpgradeManager migration</msg><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/config/skills/alchemy/PotionConfig.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/datatypes/database/UpgradeType.java</file></path><path><editType>edit</editType><file>Changelog.txt</file></path><path><editType>edit</editType><file>src/test/java/com/gmail/nossr50/config/skills/alchemy/PotionConfigTest.java</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></culprit><culprit><absoluteUrl>https://popicraft.net/jenkins/user/github</absoluteUrl><fullName>github</fullName></culprit></build><build _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>305</buildNumber><marked><SHA1>a79cf7d4506c0cbfb112a7ff1605e4b724b66453</SHA1><branch><SHA1>a79cf7d4506c0cbfb112a7ff1605e4b724b66453</SHA1><name>refs/remotes/origin/master</name></branch></marked><revision><SHA1>a79cf7d4506c0cbfb112a7ff1605e4b724b66453</SHA1><branch><SHA1>a79cf7d4506c0cbfb112a7ff1605e4b724b66453</SHA1><name>refs/remotes/origin/master</name></branch></revision></refsremotesoriginmaster></buildsByBranchName><lastBuiltRevision><SHA1>a79cf7d4506c0cbfb112a7ff1605e4b724b66453</SHA1><branch><SHA1>a79cf7d4506c0cbfb112a7ff1605e4b724b66453</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>#305</displayName><duration>49604</duration><estimatedDuration>66335</estimatedDuration><fullDisplayName>mcMMO #305</fullDisplayName><id>305</id><inProgress>false</inProgress><keepLog>false</keepLog><number>305</number><queueId>117</queueId><result>FAILURE</result><timestamp>1778451547108</timestamp><url>https://popicraft.net/jenkins/job/mcMMO/305/</url><builtOn>Builder</builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/main/resources/plugin.yml</affectedPath><affectedPath>Changelog.txt</affectedPath><commitId>ef6ddf03319d7a27258cd29e6c23fcf52aee6622</commitId><timestamp>1778271082000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>Bump api-version in plugin.yml from 1.13 to 1.20.5
</comment><date>2026-05-08 13:11:22 -0700</date><id>ef6ddf03319d7a27258cd29e6c23fcf52aee6622</id><msg>Bump api-version in plugin.yml from 1.13 to 1.20.5</msg><path><editType>edit</editType><file>Changelog.txt</file></path><path><editType>edit</editType><file>src/main/resources/plugin.yml</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>Jenkinsfile</affectedPath><commitId>a79cf7d4506c0cbfb112a7ff1605e4b724b66453</commitId><timestamp>1778451328000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>don't run tests redundantly during nexus deployment
</comment><date>2026-05-10 15:15:28 -0700</date><id>a79cf7d4506c0cbfb112a7ff1605e4b724b66453</id><msg>don't run tests redundantly during nexus deployment</msg><path><editType>edit</editType><file>Jenkinsfile</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></culprit><culprit><absoluteUrl>https://popicraft.net/jenkins/user/github</absoluteUrl><fullName>github</fullName></culprit></build><build _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>304</buildNumber><marked><SHA1>11225a2f55412618512c1ee0a0d87ba895060e08</SHA1><branch><SHA1>11225a2f55412618512c1ee0a0d87ba895060e08</SHA1><name>refs/remotes/origin/master</name></branch></marked><revision><SHA1>11225a2f55412618512c1ee0a0d87ba895060e08</SHA1><branch><SHA1>11225a2f55412618512c1ee0a0d87ba895060e08</SHA1><name>refs/remotes/origin/master</name></branch></revision></refsremotesoriginmaster></buildsByBranchName><lastBuiltRevision><SHA1>11225a2f55412618512c1ee0a0d87ba895060e08</SHA1><branch><SHA1>11225a2f55412618512c1ee0a0d87ba895060e08</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>#304</displayName><duration>48447</duration><estimatedDuration>66335</estimatedDuration><fullDisplayName>mcMMO #304</fullDisplayName><id>304</id><inProgress>false</inProgress><keepLog>false</keepLog><number>304</number><queueId>113</queueId><result>FAILURE</result><timestamp>1778209445918</timestamp><url>https://popicraft.net/jenkins/job/mcMMO/304/</url><builtOn>Builder</builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>pom.xml</affectedPath><affectedPath>src/test/java/com/gmail/nossr50/database/SQLDatabaseManagerTest.java</affectedPath><commitId>397d6de36ce0f9578612a6a1aa98039dcfb0257b</commitId><timestamp>1778118362000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>Add -DskipDockerTests=true flag to skip Testcontainers SQL tests
</comment><date>2026-05-06 18:46:02 -0700</date><id>397d6de36ce0f9578612a6a1aa98039dcfb0257b</id><msg>Add -DskipDockerTests=true flag to skip Testcontainers SQL tests</msg><path><editType>edit</editType><file>pom.xml</file></path><path><editType>edit</editType><file>src/test/java/com/gmail/nossr50/database/SQLDatabaseManagerTest.java</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/main/java/com/gmail/nossr50/skills/excavation/ExcavationManager.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/listeners/BlockListener.java</affectedPath><affectedPath>src/test/java/com/gmail/nossr50/skills/excavation/ExcavationTest.java</affectedPath><affectedPath>src/test/java/com/gmail/nossr50/skills/woodcutting/WoodcuttingTest.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/skills/woodcutting/WoodcuttingManager.java</affectedPath><affectedPath>Changelog.txt</affectedPath><commitId>ce021dbe129c912820f28649d6c4050ed80abe13</commitId><timestamp>1778206892000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>Fix Woodcutting/Excavation bonus drops bypassing BlockDropItemEvent

Woodcutting (Harvest Lumber, Clean Cuts) and Excavation treasure drops
previously spawned items directly via world.dropItem(), bypassing
BlockDropItemEvent entirely. This made them invisible to Telekinesis-style
enchant plugins (ExcellentEnchants, EcoEnchants, etc.).

Woodcutting fix: processBonusDropCheck() now calls BlockUtils.markDropsAsBonus()
for normal breaks, routing bonus drops through the existing BlockDropItemEvent
metadata pipeline. Tree Feller retains the direct-spawn path since it sets
blocks to AIR without firing BlockDropItemEvent.

Excavation fix: treasure rolls are now performed inside onBlockDropItemEvent()
via ExcavationManager.rollAndCollectTreasureDrops(). The returned ItemStacks
are spawned and injected into event.getItems(), exposing them to the full
Bukkit event pipeline. GigaDrillBreaker's 3x roll count is preserved. The
old processExcavationBonusesOnBlock(treasure, location) path is kept as a
deprecated fallback for external API callers.
</comment><date>2026-05-07 19:21:32 -0700</date><id>ce021dbe129c912820f28649d6c4050ed80abe13</id><msg>Fix Woodcutting/Excavation bonus drops bypassing BlockDropItemEvent</msg><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/skills/excavation/ExcavationManager.java</file></path><path><editType>edit</editType><file>src/test/java/com/gmail/nossr50/skills/woodcutting/WoodcuttingTest.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/skills/woodcutting/WoodcuttingManager.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/listeners/BlockListener.java</file></path><path><editType>edit</editType><file>Changelog.txt</file></path><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/util/platform/MinecraftGameVersionTest.java</affectedPath><affectedPath>Changelog.txt</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/util/MinecraftGameVersionFactory.java</affectedPath><commitId>11225a2f55412618512c1ee0a0d87ba895060e08</commitId><timestamp>1778209298000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>Fix Minecraft version detection failing on Spigot servers

The old regex required a trailing [-_] after the version digits, which worked
for getBukkitVersion() strings (e.g. '1.21.4-R0.1-SNAPSHOT') but silently
failed on Spigot's Bukkit.getVersion() format ('git-Spigot-12345-abcdef
(MC: 1.21.4)') since '1.21.4)' has no trailing dash or underscore. Version
resolved to 0.0.0, causing Tricky Trials potions (isAtLeast 1.21.0 check)
to be incorrectly skipped on every Spigot server.

MinecraftGameVersionFactory now uses two patterns:
- Primary: extracts from the '(MC: X.Y.Z)' segment that CraftBukkit always
  embeds in Bukkit.getVersion() — handles Spigot, old Paper, and Paper 26+
- Fallback: original regex for strings without '(MC: ...)' such as
  getBukkitVersion()-style strings

Tests updated with @Nested classes covering both paths, including explicit
Spigot format cases and Paper 26+ versioning (26.1.2-60-b4682bf format).
</comment><date>2026-05-07 20:01:38 -0700</date><id>11225a2f55412618512c1ee0a0d87ba895060e08</id><msg>Fix Minecraft version detection failing on Spigot servers</msg><path><editType>edit</editType><file>Changelog.txt</file></path><path><editType>edit</editType><file>src/test/java/com/gmail/nossr50/util/platform/MinecraftGameVersionTest.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/util/MinecraftGameVersionFactory.java</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></culprit><culprit><absoluteUrl>https://popicraft.net/jenkins/user/github</absoluteUrl><fullName>github</fullName></culprit></build><build _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>303</buildNumber><marked><SHA1>b32c64b5ac9c954a6760026b5c578c351844f3b6</SHA1><branch><SHA1>b32c64b5ac9c954a6760026b5c578c351844f3b6</SHA1><name>refs/remotes/origin/master</name></branch></marked><revision><SHA1>b32c64b5ac9c954a6760026b5c578c351844f3b6</SHA1><branch><SHA1>b32c64b5ac9c954a6760026b5c578c351844f3b6</SHA1><name>refs/remotes/origin/master</name></branch></revision></refsremotesoriginmaster></buildsByBranchName><lastBuiltRevision><SHA1>b32c64b5ac9c954a6760026b5c578c351844f3b6</SHA1><branch><SHA1>b32c64b5ac9c954a6760026b5c578c351844f3b6</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>#303</displayName><duration>52619</duration><estimatedDuration>66335</estimatedDuration><fullDisplayName>mcMMO #303</fullDisplayName><id>303</id><inProgress>false</inProgress><keepLog>false</keepLog><number>303</number><queueId>111</queueId><result>FAILURE</result><timestamp>1778118544643</timestamp><url>https://popicraft.net/jenkins/job/mcMMO/303/</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/subskills/interfaces/SubSkill.java</affectedPath><affectedPath>src/test/java/com/gmail/nossr50/skills/acrobatics/AcrobaticsTest.java</affectedPath><affectedPath>src/main/resources/advanced.yml</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/datatypes/skills/subskills/acrobatics/Roll.java</affectedPath><affectedPath>Changelog.txt</affectedPath><commitId>451ec158a5d1fc018069b86283b2760f423cbe30</commitId><timestamp>1777867454000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>Add missing key for graceful roll and some unit test coverage
</comment><date>2026-05-03 21:04:14 -0700</date><id>451ec158a5d1fc018069b86283b2760f423cbe30</id><msg>Add missing key for graceful roll and some unit test coverage</msg><path><editType>edit</editType><file>src/main/resources/advanced.yml</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/datatypes/skills/subskills/acrobatics/Roll.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/datatypes/skills/subskills/interfaces/SubSkill.java</file></path><path><editType>edit</editType><file>src/test/java/com/gmail/nossr50/skills/acrobatics/AcrobaticsTest.java</file></path><path><editType>edit</editType><file>Changelog.txt</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/main/resources/locale/locale_zh_TW.properties</affectedPath><affectedPath>src/main/resources/locale/locale_pt_BR.properties</affectedPath><affectedPath>src/main/resources/locale/locale_ja_JP.properties</affectedPath><affectedPath>src/test/java/com/gmail/nossr50/util/text/TextComponentFactoryTest.java</affectedPath><affectedPath>src/main/resources/locale/locale_fr.properties</affectedPath><affectedPath>src/main/resources/locale/locale_pl.properties</affectedPath><affectedPath>src/main/resources/locale/locale_en_US.properties</affectedPath><affectedPath>src/main/resources/locale/locale_hu_HU.properties</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/datatypes/json/McMMOWebLinks.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/locale/LocaleLoader.java</affectedPath><affectedPath>src/main/resources/locale/locale_es.properties</affectedPath><affectedPath>src/test/java/com/gmail/nossr50/locale/LocaleLoaderTest.java</affectedPath><affectedPath>Changelog.txt</affectedPath><affectedPath>src/main/resources/locale/locale_it.properties</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/util/text/TextUtils.java</affectedPath><affectedPath>src/main/resources/locale/locale_de.properties</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/util/text/TextComponentFactory.java</affectedPath><affectedPath>src/main/resources/locale/locale_lt_LT.properties</affectedPath><affectedPath>src/main/resources/locale/locale_ru.properties</affectedPath><affectedPath>src/main/resources/locale/locale_zh_CN.properties</affectedPath><affectedPath>src/main/resources/locale/locale_ko.properties</affectedPath><commitId>1c88d3619f524a39109d86707a3b4eaf532c7b25</commitId><timestamp>1778117642000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>Add color support for JSON components

Fixes #5179 Fixes #5218
</comment><date>2026-05-06 18:34:02 -0700</date><id>1c88d3619f524a39109d86707a3b4eaf532c7b25</id><msg>Add color support for JSON components</msg><path><editType>edit</editType><file>src/main/resources/locale/locale_es.properties</file></path><path><editType>edit</editType><file>src/main/resources/locale/locale_it.properties</file></path><path><editType>edit</editType><file>Changelog.txt</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/util/text/TextUtils.java</file></path><path><editType>edit</editType><file>src/main/resources/locale/locale_ko.properties</file></path><path><editType>edit</editType><file>src/main/resources/locale/locale_pl.properties</file></path><path><editType>edit</editType><file>src/main/resources/locale/locale_en_US.properties</file></path><path><editType>edit</editType><file>src/main/resources/locale/locale_pt_BR.properties</file></path><path><editType>edit</editType><file>src/test/java/com/gmail/nossr50/locale/LocaleLoaderTest.java</file></path><path><editType>edit</editType><file>src/main/resources/locale/locale_lt_LT.properties</file></path><path><editType>edit</editType><file>src/main/resources/locale/locale_de.properties</file></path><path><editType>edit</editType><file>src/main/resources/locale/locale_fr.properties</file></path><path><editType>edit</editType><file>src/main/resources/locale/locale_zh_TW.properties</file></path><path><editType>edit</editType><file>src/main/resources/locale/locale_hu_HU.properties</file></path><path><editType>edit</editType><file>src/main/resources/locale/locale_ru.properties</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/util/text/TextComponentFactory.java</file></path><path><editType>add</editType><file>src/test/java/com/gmail/nossr50/util/text/TextComponentFactoryTest.java</file></path><path><editType>edit</editType><file>src/main/resources/locale/locale_ja_JP.properties</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/datatypes/json/McMMOWebLinks.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/locale/LocaleLoader.java</file></path><path><editType>edit</editType><file>src/main/resources/locale/locale_zh_CN.properties</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/main/resources/locale/locale_zh_TW.properties</affectedPath><affectedPath>src/main/resources/locale/locale_pt_BR.properties</affectedPath><affectedPath>src/main/resources/locale/locale_ja_JP.properties</affectedPath><affectedPath>src/main/resources/locale/locale_fr.properties</affectedPath><affectedPath>src/main/resources/locale/locale_pl.properties</affectedPath><affectedPath>src/main/resources/locale/locale_en_US.properties</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/datatypes/json/McMMOWebLinks.java</affectedPath><affectedPath>src/main/resources/locale/locale_hu_HU.properties</affectedPath><affectedPath>src/main/resources/locale/locale_es.properties</affectedPath><affectedPath>Changelog.txt</affectedPath><affectedPath>src/main/resources/locale/locale_it.properties</affectedPath><affectedPath>src/main/resources/locale/locale_de.properties</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/util/text/TextComponentFactory.java</affectedPath><affectedPath>src/main/resources/locale/locale_ru.properties</affectedPath><affectedPath>src/main/resources/locale/locale_lt_LT.properties</affectedPath><affectedPath>src/main/resources/locale/locale_zh_CN.properties</affectedPath><affectedPath>src/main/resources/locale/locale_ko.properties</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/datatypes/json/McMMOUrl.java</affectedPath><commitId>d4da897a344e155d595fd66e63eb96b3a58913c7</commitId><timestamp>1778117943000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>Remove Patreon and language links from URL bar
</comment><date>2026-05-06 18:39:03 -0700</date><id>d4da897a344e155d595fd66e63eb96b3a58913c7</id><msg>Remove Patreon and language links from URL bar</msg><path><editType>edit</editType><file>src/main/resources/locale/locale_pt_BR.properties</file></path><path><editType>edit</editType><file>src/main/resources/locale/locale_ru.properties</file></path><path><editType>edit</editType><file>Changelog.txt</file></path><path><editType>edit</editType><file>src/main/resources/locale/locale_es.properties</file></path><path><editType>edit</editType><file>src/main/resources/locale/locale_de.properties</file></path><path><editType>edit</editType><file>src/main/resources/locale/locale_zh_TW.properties</file></path><path><editType>edit</editType><file>src/main/resources/locale/locale_fr.properties</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/datatypes/json/McMMOUrl.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/util/text/TextComponentFactory.java</file></path><path><editType>edit</editType><file>src/main/resources/locale/locale_en_US.properties</file></path><path><editType>edit</editType><file>src/main/resources/locale/locale_it.properties</file></path><path><editType>edit</editType><file>src/main/resources/locale/locale_ko.properties</file></path><path><editType>edit</editType><file>src/main/resources/locale/locale_zh_CN.properties</file></path><path><editType>edit</editType><file>src/main/resources/locale/locale_pl.properties</file></path><path><editType>edit</editType><file>src/main/resources/locale/locale_ja_JP.properties</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/datatypes/json/McMMOWebLinks.java</file></path><path><editType>edit</editType><file>src/main/resources/locale/locale_lt_LT.properties</file></path><path><editType>edit</editType><file>src/main/resources/locale/locale_hu_HU.properties</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>Changelog.txt</affectedPath><commitId>b32c64b5ac9c954a6760026b5c578c351844f3b6</commitId><timestamp>1778118207000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>Reorder changelog entry for URL bar removal
</comment><date>2026-05-06 18:43:27 -0700</date><id>b32c64b5ac9c954a6760026b5c578c351844f3b6</id><msg>Reorder changelog entry for URL bar removal</msg><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></culprit><culprit><absoluteUrl>https://popicraft.net/jenkins/user/github</absoluteUrl><fullName>github</fullName></culprit></build><build _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>302</buildNumber><marked><SHA1>dbae9c6bb8270908fa1ae2a98a0793542e4d81da</SHA1><branch><SHA1>dbae9c6bb8270908fa1ae2a98a0793542e4d81da</SHA1><name>refs/remotes/origin/master</name></branch></marked><revision><SHA1>dbae9c6bb8270908fa1ae2a98a0793542e4d81da</SHA1><branch><SHA1>dbae9c6bb8270908fa1ae2a98a0793542e4d81da</SHA1><name>refs/remotes/origin/master</name></branch></revision></refsremotesoriginmaster></buildsByBranchName><lastBuiltRevision><SHA1>dbae9c6bb8270908fa1ae2a98a0793542e4d81da</SHA1><branch><SHA1>dbae9c6bb8270908fa1ae2a98a0793542e4d81da</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>#302</displayName><duration>52523</duration><estimatedDuration>66335</estimatedDuration><fullDisplayName>mcMMO #302</fullDisplayName><id>302</id><inProgress>false</inProgress><keepLog>false</keepLog><number>302</number><queueId>107</queueId><result>FAILURE</result><timestamp>1777858443071</timestamp><url>https://popicraft.net/jenkins/job/mcMMO/302/</url><builtOn>Builder</builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/main/java/com/gmail/nossr50/datatypes/meta/OldName.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/listeners/EntityListener.java</affectedPath><affectedPath>src/test/java/com/gmail/nossr50/util/MobHealthbarUtilsTest.java</affectedPath><affectedPath>src/test/java/com/gmail/nossr50/util/skills/CombatUtilsTest.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/util/TransientMetadataTools.java</affectedPath><affectedPath>Changelog.txt</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/util/MetadataConstants.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/listeners/PlayerListener.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/datatypes/meta/HealthbarSnapshot.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/runnables/MobHealthDisplayUpdaterTask.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/config/GeneralConfig.java</affectedPath><affectedPath>src/test/java/com/gmail/nossr50/runnables/MobHealthDisplayUpdaterTaskTest.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/util/skills/CombatUtils.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/util/MobHealthbarUtils.java</affectedPath><commitId>dbae9c6bb8270908fa1ae2a98a0793542e4d81da</commitId><timestamp>1777857481000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>Fixed a bunch of mob health display bugs

Fixes #5240 Fixes #5127 Fixes #3780 Fixes #5255
</comment><date>2026-05-03 18:18:01 -0700</date><id>dbae9c6bb8270908fa1ae2a98a0793542e4d81da</id><msg>Fixed a bunch of mob health display bugs</msg><path><editType>add</editType><file>src/test/java/com/gmail/nossr50/util/skills/CombatUtilsTest.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/runnables/MobHealthDisplayUpdaterTask.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/util/TransientMetadataTools.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/util/skills/CombatUtils.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/listeners/EntityListener.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/util/MetadataConstants.java</file></path><path><editType>add</editType><file>src/test/java/com/gmail/nossr50/util/MobHealthbarUtilsTest.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/listeners/PlayerListener.java</file></path><path><editType>add</editType><file>src/main/java/com/gmail/nossr50/datatypes/meta/HealthbarSnapshot.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/config/GeneralConfig.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/util/MobHealthbarUtils.java</file></path><path><editType>add</editType><file>src/test/java/com/gmail/nossr50/runnables/MobHealthDisplayUpdaterTaskTest.java</file></path><path><editType>edit</editType><file>Changelog.txt</file></path><path><editType>delete</editType><file>src/main/java/com/gmail/nossr50/datatypes/meta/OldName.java</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></culprit><culprit><absoluteUrl>https://popicraft.net/jenkins/user/github</absoluteUrl><fullName>github</fullName></culprit></build><build _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>301</buildNumber><marked><SHA1>bd7ac8c655135e60f22a9d1dfcba816d5bce7035</SHA1><branch><SHA1>bd7ac8c655135e60f22a9d1dfcba816d5bce7035</SHA1><name>refs/remotes/origin/master</name></branch></marked><revision><SHA1>bd7ac8c655135e60f22a9d1dfcba816d5bce7035</SHA1><branch><SHA1>bd7ac8c655135e60f22a9d1dfcba816d5bce7035</SHA1><name>refs/remotes/origin/master</name></branch></revision></refsremotesoriginmaster></buildsByBranchName><lastBuiltRevision><SHA1>bd7ac8c655135e60f22a9d1dfcba816d5bce7035</SHA1><branch><SHA1>bd7ac8c655135e60f22a9d1dfcba816d5bce7035</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>#301</displayName><duration>36715</duration><estimatedDuration>66335</estimatedDuration><fullDisplayName>mcMMO #301</fullDisplayName><id>301</id><inProgress>false</inProgress><keepLog>false</keepLog><number>301</number><queueId>106</queueId><result>FAILURE</result><timestamp>1777847645355</timestamp><url>https://popicraft.net/jenkins/job/mcMMO/301/</url><builtOn>Builder</builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/main/java/com/gmail/nossr50/config/AdvancedConfig.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/skills/smelting/SmeltingManager.java</affectedPath><affectedPath>Changelog.txt</affectedPath><affectedPath>src/test/java/com/gmail/nossr50/skills/smelting/SmeltingManagerTest.java</affectedPath><commitId>bd7ac8c655135e60f22a9d1dfcba816d5bce7035</commitId><timestamp>1777847195000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>fix smelting config bug Fixes #5140
</comment><date>2026-05-03 15:26:35 -0700</date><id>bd7ac8c655135e60f22a9d1dfcba816d5bce7035</id><msg>fix smelting config bug Fixes #5140</msg><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/config/AdvancedConfig.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/skills/smelting/SmeltingManager.java</file></path><path><editType>edit</editType><file>Changelog.txt</file></path><path><editType>add</editType><file>src/test/java/com/gmail/nossr50/skills/smelting/SmeltingManagerTest.java</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></culprit><culprit><absoluteUrl>https://popicraft.net/jenkins/user/github</absoluteUrl><fullName>github</fullName></culprit></build><build _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>300</buildNumber><marked><SHA1>22b044ce063158fbb55249ea679ba278b8ced97f</SHA1><branch><SHA1>22b044ce063158fbb55249ea679ba278b8ced97f</SHA1><name>refs/remotes/origin/master</name></branch></marked><revision><SHA1>22b044ce063158fbb55249ea679ba278b8ced97f</SHA1><branch><SHA1>22b044ce063158fbb55249ea679ba278b8ced97f</SHA1><name>refs/remotes/origin/master</name></branch></revision></refsremotesoriginmaster></buildsByBranchName><lastBuiltRevision><SHA1>22b044ce063158fbb55249ea679ba278b8ced97f</SHA1><branch><SHA1>22b044ce063158fbb55249ea679ba278b8ced97f</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>#300</displayName><duration>36581</duration><estimatedDuration>66335</estimatedDuration><fullDisplayName>mcMMO #300</fullDisplayName><id>300</id><inProgress>false</inProgress><keepLog>false</keepLog><number>300</number><queueId>105</queueId><result>FAILURE</result><timestamp>1777846745343</timestamp><url>https://popicraft.net/jenkins/job/mcMMO/300/</url><builtOn>Builder</builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/main/java/com/gmail/nossr50/skills/salvage/SalvageManager.java</affectedPath><commitId>22b044ce063158fbb55249ea679ba278b8ced97f</commitId><timestamp>1777845781000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>avoid visual desync for salvage Fixes #5252
</comment><date>2026-05-03 15:03:01 -0700</date><id>22b044ce063158fbb55249ea679ba278b8ced97f</id><msg>avoid visual desync for salvage Fixes #5252</msg><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/skills/salvage/SalvageManager.java</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></culprit><culprit><absoluteUrl>https://popicraft.net/jenkins/user/github</absoluteUrl><fullName>github</fullName></culprit></build><build _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>299</buildNumber><marked><SHA1>bff2e079e8270e1513961fc7ad703dca37bd3725</SHA1><branch><SHA1>bff2e079e8270e1513961fc7ad703dca37bd3725</SHA1><name>refs/remotes/origin/master</name></branch></marked><revision><SHA1>bff2e079e8270e1513961fc7ad703dca37bd3725</SHA1><branch><SHA1>bff2e079e8270e1513961fc7ad703dca37bd3725</SHA1><name>refs/remotes/origin/master</name></branch></revision></refsremotesoriginmaster></buildsByBranchName><lastBuiltRevision><SHA1>bff2e079e8270e1513961fc7ad703dca37bd3725</SHA1><branch><SHA1>bff2e079e8270e1513961fc7ad703dca37bd3725</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>#299</displayName><duration>35854</duration><estimatedDuration>66335</estimatedDuration><fullDisplayName>mcMMO #299</fullDisplayName><id>299</id><inProgress>false</inProgress><keepLog>false</keepLog><number>299</number><queueId>104</queueId><result>FAILURE</result><timestamp>1777840445113</timestamp><url>https://popicraft.net/jenkins/job/mcMMO/299/</url><builtOn>Builder</builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>Changelog.txt</affectedPath><commitId>bff2e079e8270e1513961fc7ad703dca37bd3725</commitId><timestamp>1777839800000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>update changelog
</comment><date>2026-05-03 13:23:20 -0700</date><id>bff2e079e8270e1513961fc7ad703dca37bd3725</id><msg>update changelog</msg><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></culprit><culprit><absoluteUrl>https://popicraft.net/jenkins/user/github</absoluteUrl><fullName>github</fullName></culprit></build><build _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>298</buildNumber><marked><SHA1>8f411f901c817116174600ecb2041cff789895d5</SHA1><branch><SHA1>8f411f901c817116174600ecb2041cff789895d5</SHA1><name>refs/remotes/origin/master</name></branch></marked><revision><SHA1>8f411f901c817116174600ecb2041cff789895d5</SHA1><branch><SHA1>8f411f901c817116174600ecb2041cff789895d5</SHA1><name>refs/remotes/origin/master</name></branch></revision></refsremotesoriginmaster></buildsByBranchName><lastBuiltRevision><SHA1>8f411f901c817116174600ecb2041cff789895d5</SHA1><branch><SHA1>8f411f901c817116174600ecb2041cff789895d5</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>#298</displayName><duration>39761</duration><estimatedDuration>66335</estimatedDuration><fullDisplayName>mcMMO #298</fullDisplayName><id>298</id><inProgress>false</inProgress><keepLog>false</keepLog><number>298</number><queueId>103</queueId><result>FAILURE</result><timestamp>1777839545606</timestamp><url>https://popicraft.net/jenkins/job/mcMMO/298/</url><builtOn>Builder</builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/main/resources/locale/locale_zh_CN.properties</affectedPath><commitId>8f411f901c817116174600ecb2041cff789895d5</commitId><timestamp>1777839441000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/github</absoluteUrl><fullName>github</fullName></author><authorEmail>noreply@github.com</authorEmail><comment>Update Simplfied Chinese translation (#5274)
</comment><date>2026-05-03 13:17:21 -0700</date><id>8f411f901c817116174600ecb2041cff789895d5</id><msg>Update Simplfied Chinese translation (#5274)</msg><path><editType>edit</editType><file>src/main/resources/locale/locale_zh_CN.properties</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></culprit><culprit><absoluteUrl>https://popicraft.net/jenkins/user/github</absoluteUrl><fullName>github</fullName></culprit></build><build _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>297</buildNumber><marked><SHA1>fb6aebcaae6c3d03eef6bbb6d3341d8a9310c959</SHA1><branch><SHA1>fb6aebcaae6c3d03eef6bbb6d3341d8a9310c959</SHA1><name>refs/remotes/origin/master</name></branch></marked><revision><SHA1>fb6aebcaae6c3d03eef6bbb6d3341d8a9310c959</SHA1><branch><SHA1>fb6aebcaae6c3d03eef6bbb6d3341d8a9310c959</SHA1><name>refs/remotes/origin/master</name></branch></revision></refsremotesoriginmaster></buildsByBranchName><lastBuiltRevision><SHA1>fb6aebcaae6c3d03eef6bbb6d3341d8a9310c959</SHA1><branch><SHA1>fb6aebcaae6c3d03eef6bbb6d3341d8a9310c959</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>#297</displayName><duration>49532</duration><estimatedDuration>66335</estimatedDuration><fullDisplayName>mcMMO #297</fullDisplayName><id>297</id><inProgress>false</inProgress><keepLog>false</keepLog><number>297</number><queueId>101</queueId><result>FAILURE</result><timestamp>1777770244994</timestamp><url>https://popicraft.net/jenkins/job/mcMMO/297/</url><builtOn>Builder</builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/main/resources/potions.yml</affectedPath><commitId>fb6aebcaae6c3d03eef6bbb6d3341d8a9310c959</commitId><timestamp>1777769338000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/github</absoluteUrl><fullName>github</fullName></author><authorEmail>noreply@github.com</authorEmail><comment>Fix potion lengths being shorter/longer for newer potion types (#5277)
</comment><date>2026-05-02 17:48:58 -0700</date><id>fb6aebcaae6c3d03eef6bbb6d3341d8a9310c959</id><msg>Fix potion lengths being shorter/longer for newer potion types (#5277)</msg><path><editType>edit</editType><file>src/main/resources/potions.yml</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></culprit><culprit><absoluteUrl>https://popicraft.net/jenkins/user/github</absoluteUrl><fullName>github</fullName></culprit></build><build _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>296</buildNumber><marked><SHA1>f6cc7c5a5e172efa6893f6102d363bcc37394f36</SHA1><branch><SHA1>f6cc7c5a5e172efa6893f6102d363bcc37394f36</SHA1><name>refs/remotes/origin/master</name></branch></marked><revision><SHA1>f6cc7c5a5e172efa6893f6102d363bcc37394f36</SHA1><branch><SHA1>f6cc7c5a5e172efa6893f6102d363bcc37394f36</SHA1><name>refs/remotes/origin/master</name></branch></revision></refsremotesoriginmaster></buildsByBranchName><lastBuiltRevision><SHA1>f6cc7c5a5e172efa6893f6102d363bcc37394f36</SHA1><branch><SHA1>f6cc7c5a5e172efa6893f6102d363bcc37394f36</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>#296</displayName><duration>36157</duration><estimatedDuration>66335</estimatedDuration><fullDisplayName>mcMMO #296</fullDisplayName><id>296</id><inProgress>false</inProgress><keepLog>false</keepLog><number>296</number><queueId>96</queueId><result>FAILURE</result><timestamp>1777410243250</timestamp><url>https://popicraft.net/jenkins/job/mcMMO/296/</url><builtOn>Builder</builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/main/java/com/gmail/nossr50/skills/fishing/FishingManager.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/listeners/PlayerListener.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/util/EventUtils.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/events/fake/FakePlayerFishEvent.java</affectedPath><affectedPath>Changelog.txt</affectedPath><commitId>f6cc7c5a5e172efa6893f6102d363bcc37394f36</commitId><timestamp>1777409695000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>Fishing updated to work with offhand and not just main hand only
May address #5226
</comment><date>2026-04-28 13:54:55 -0700</date><id>f6cc7c5a5e172efa6893f6102d363bcc37394f36</id><msg>Fishing updated to work with offhand and not just main hand only</msg><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/events/fake/FakePlayerFishEvent.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/listeners/PlayerListener.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/util/EventUtils.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/skills/fishing/FishingManager.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></culprit><culprit><absoluteUrl>https://popicraft.net/jenkins/user/github</absoluteUrl><fullName>github</fullName></culprit></build><build _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>295</buildNumber><marked><SHA1>8602f4797e2b10298e70215bc948751ff0819ef2</SHA1><branch><SHA1>8602f4797e2b10298e70215bc948751ff0819ef2</SHA1><name>refs/remotes/origin/master</name></branch></marked><revision><SHA1>8602f4797e2b10298e70215bc948751ff0819ef2</SHA1><branch><SHA1>8602f4797e2b10298e70215bc948751ff0819ef2</SHA1><name>refs/remotes/origin/master</name></branch></revision></refsremotesoriginmaster></buildsByBranchName><lastBuiltRevision><SHA1>8602f4797e2b10298e70215bc948751ff0819ef2</SHA1><branch><SHA1>8602f4797e2b10298e70215bc948751ff0819ef2</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>#295</displayName><duration>37657</duration><estimatedDuration>66335</estimatedDuration><fullDisplayName>mcMMO #295</fullDisplayName><id>295</id><inProgress>false</inProgress><keepLog>false</keepLog><number>295</number><queueId>95</queueId><result>FAILURE</result><timestamp>1777408443801</timestamp><url>https://popicraft.net/jenkins/job/mcMMO/295/</url><builtOn>Builder</builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/main/java/com/gmail/nossr50/util/MetadataConstants.java</affectedPath><affectedPath>Changelog.txt</affectedPath><commitId>cc70269cadbb76db2f40a37e6c6ec2317ddbc942</commitId><timestamp>1777407483000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>update changelog
</comment><date>2026-04-28 13:18:03 -0700</date><id>cc70269cadbb76db2f40a37e6c6ec2317ddbc942</id><msg>update changelog</msg><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/util/MetadataConstants.java</file></path><path><editType>edit</editType><file>Changelog.txt</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/main/java/com/gmail/nossr50/skills/fishing/FishingManager.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/listeners/EntityListener.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/util/ItemUtils.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/util/skills/SkillUtils.java</affectedPath><affectedPath>Changelog.txt</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/skills/repair/RepairManager.java</affectedPath><commitId>8602f4797e2b10298e70215bc948751ff0819ef2</commitId><timestamp>1777407675000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>Use modern APIs for durability handling
May address #5167
</comment><date>2026-04-28 13:21:15 -0700</date><id>8602f4797e2b10298e70215bc948751ff0819ef2</id><msg>Use modern APIs for durability handling</msg><path><editType>edit</editType><file>Changelog.txt</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/skills/repair/RepairManager.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/util/skills/SkillUtils.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/listeners/EntityListener.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/skills/fishing/FishingManager.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/util/ItemUtils.java</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></culprit><culprit><absoluteUrl>https://popicraft.net/jenkins/user/github</absoluteUrl><fullName>github</fullName></culprit></build><build _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>294</buildNumber><marked><SHA1>98ea089a3e3bfcc7458e2483a758f8f44a6c8e62</SHA1><branch><SHA1>98ea089a3e3bfcc7458e2483a758f8f44a6c8e62</SHA1><name>refs/remotes/origin/master</name></branch></marked><revision><SHA1>98ea089a3e3bfcc7458e2483a758f8f44a6c8e62</SHA1><branch><SHA1>98ea089a3e3bfcc7458e2483a758f8f44a6c8e62</SHA1><name>refs/remotes/origin/master</name></branch></revision></refsremotesoriginmaster></buildsByBranchName><lastBuiltRevision><SHA1>98ea089a3e3bfcc7458e2483a758f8f44a6c8e62</SHA1><branch><SHA1>98ea089a3e3bfcc7458e2483a758f8f44a6c8e62</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>#294</displayName><duration>46597</duration><estimatedDuration>66335</estimatedDuration><fullDisplayName>mcMMO #294</fullDisplayName><id>294</id><inProgress>false</inProgress><keepLog>false</keepLog><number>294</number><queueId>93</queueId><result>FAILURE</result><timestamp>1777349943563</timestamp><url>https://popicraft.net/jenkins/job/mcMMO/294/</url><builtOn>Builder</builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/main/java/com/gmail/nossr50/util/MetadataConstants.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/listeners/EntityListener.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/util/skills/ProjectileUtils.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/skills/crossbows/CrossbowsManager.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/util/skills/CombatUtils.java</affectedPath><commitId>e070d527ae527c76a1d52ecc1c6d3796f23b35fc</commitId><timestamp>1777331601000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>use official API for crossbow detection instead of our metadata
</comment><date>2026-04-27 16:13:21 -0700</date><id>e070d527ae527c76a1d52ecc1c6d3796f23b35fc</id><msg>use official API for crossbow detection instead of our metadata</msg><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/skills/crossbows/CrossbowsManager.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/util/MetadataConstants.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/util/skills/CombatUtils.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/util/skills/ProjectileUtils.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/listeners/EntityListener.java</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/main/java/com/gmail/nossr50/util/MetadataConstants.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/skills/crossbows/Crossbows.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/listeners/EntityListener.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/skills/crossbows/CrossbowsManager.java</affectedPath><affectedPath>Changelog.txt</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/worldguard/WorldGuardManager.java</affectedPath><commitId>98ea089a3e3bfcc7458e2483a758f8f44a6c8e62</commitId><timestamp>1777349511000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>fix WG crossbow interaction Fixes #5074
</comment><date>2026-04-27 21:11:51 -0700</date><id>98ea089a3e3bfcc7458e2483a758f8f44a6c8e62</id><msg>fix WG crossbow interaction Fixes #5074</msg><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/skills/crossbows/Crossbows.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/listeners/EntityListener.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/util/MetadataConstants.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/worldguard/WorldGuardManager.java</file></path><path><editType>edit</editType><file>Changelog.txt</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/skills/crossbows/CrossbowsManager.java</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></culprit><culprit><absoluteUrl>https://popicraft.net/jenkins/user/github</absoluteUrl><fullName>github</fullName></culprit></build><build _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>293</buildNumber><marked><SHA1>a5236446b42e48d0515ee79816cff88103d92489</SHA1><branch><SHA1>a5236446b42e48d0515ee79816cff88103d92489</SHA1><name>refs/remotes/origin/master</name></branch></marked><revision><SHA1>a5236446b42e48d0515ee79816cff88103d92489</SHA1><branch><SHA1>a5236446b42e48d0515ee79816cff88103d92489</SHA1><name>refs/remotes/origin/master</name></branch></revision></refsremotesoriginmaster></buildsByBranchName><lastBuiltRevision><SHA1>a5236446b42e48d0515ee79816cff88103d92489</SHA1><branch><SHA1>a5236446b42e48d0515ee79816cff88103d92489</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>#293</displayName><duration>37017</duration><estimatedDuration>66335</estimatedDuration><fullDisplayName>mcMMO #293</fullDisplayName><id>293</id><inProgress>false</inProgress><keepLog>false</keepLog><number>293</number><queueId>92</queueId><result>FAILURE</result><timestamp>1777331043264</timestamp><url>https://popicraft.net/jenkins/job/mcMMO/293/</url><builtOn>Builder</builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/main/java/com/gmail/nossr50/skills/herbalism/HerbalismManager.java</affectedPath><affectedPath>src/test/java/com/gmail/nossr50/skills/herbalism/HerbalismManagerTest.java</affectedPath><affectedPath>Changelog.txt</affectedPath><commitId>a5236446b42e48d0515ee79816cff88103d92489</commitId><timestamp>1777330791000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>Change mcMMO behavior around immature crop drops Fixes #5234
</comment><date>2026-04-27 15:59:51 -0700</date><id>a5236446b42e48d0515ee79816cff88103d92489</id><msg>Change mcMMO behavior around immature crop drops Fixes #5234</msg><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><path><editType>edit</editType><file>src/test/java/com/gmail/nossr50/skills/herbalism/HerbalismManagerTest.java</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></culprit><culprit><absoluteUrl>https://popicraft.net/jenkins/user/github</absoluteUrl><fullName>github</fullName></culprit></build><build _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>292</buildNumber><marked><SHA1>e51d72e5fd9bce90d350a3eb47555aa9636ab764</SHA1><branch><SHA1>e51d72e5fd9bce90d350a3eb47555aa9636ab764</SHA1><name>refs/remotes/origin/master</name></branch></marked><revision><SHA1>e51d72e5fd9bce90d350a3eb47555aa9636ab764</SHA1><branch><SHA1>e51d72e5fd9bce90d350a3eb47555aa9636ab764</SHA1><name>refs/remotes/origin/master</name></branch></revision></refsremotesoriginmaster></buildsByBranchName><lastBuiltRevision><SHA1>e51d72e5fd9bce90d350a3eb47555aa9636ab764</SHA1><branch><SHA1>e51d72e5fd9bce90d350a3eb47555aa9636ab764</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>#292</displayName><duration>36070</duration><estimatedDuration>66335</estimatedDuration><fullDisplayName>mcMMO #292</fullDisplayName><id>292</id><inProgress>false</inProgress><keepLog>false</keepLog><number>292</number><queueId>91</queueId><result>FAILURE</result><timestamp>1777326543439</timestamp><url>https://popicraft.net/jenkins/job/mcMMO/292/</url><builtOn>Builder</builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/main/java/com/gmail/nossr50/util/ItemUtils.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/skills/herbalism/HerbalismManager.java</affectedPath><affectedPath>src/test/java/com/gmail/nossr50/skills/herbalism/HerbalismManagerTest.java</affectedPath><affectedPath>src/test/java/com/gmail/nossr50/util/ItemUtilsTest.java</affectedPath><affectedPath>Changelog.txt</affectedPath><commitId>e51d72e5fd9bce90d350a3eb47555aa9636ab764</commitId><timestamp>1777326182000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>Fix bug with replanting Fixes #5253
</comment><date>2026-04-27 14:43:02 -0700</date><id>e51d72e5fd9bce90d350a3eb47555aa9636ab764</id><msg>Fix bug with replanting Fixes #5253</msg><path><editType>add</editType><file>src/test/java/com/gmail/nossr50/util/ItemUtilsTest.java</file></path><path><editType>edit</editType><file>Changelog.txt</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/util/ItemUtils.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/skills/herbalism/HerbalismManager.java</file></path><path><editType>add</editType><file>src/test/java/com/gmail/nossr50/skills/herbalism/HerbalismManagerTest.java</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></culprit><culprit><absoluteUrl>https://popicraft.net/jenkins/user/github</absoluteUrl><fullName>github</fullName></culprit></build><build _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>291</buildNumber><marked><SHA1>6cb8daf25440db238c77160302b650ab43cba5d1</SHA1><branch><SHA1>6cb8daf25440db238c77160302b650ab43cba5d1</SHA1><name>refs/remotes/origin/master</name></branch></marked><revision><SHA1>6cb8daf25440db238c77160302b650ab43cba5d1</SHA1><branch><SHA1>6cb8daf25440db238c77160302b650ab43cba5d1</SHA1><name>refs/remotes/origin/master</name></branch></revision></refsremotesoriginmaster></buildsByBranchName><lastBuiltRevision><SHA1>6cb8daf25440db238c77160302b650ab43cba5d1</SHA1><branch><SHA1>6cb8daf25440db238c77160302b650ab43cba5d1</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>#291</displayName><duration>49172</duration><estimatedDuration>66335</estimatedDuration><fullDisplayName>mcMMO #291</fullDisplayName><id>291</id><inProgress>false</inProgress><keepLog>false</keepLog><number>291</number><queueId>90</queueId><result>FAILURE</result><timestamp>1777323843421</timestamp><url>https://popicraft.net/jenkins/job/mcMMO/291/</url><builtOn>Builder</builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/main/java/com/gmail/nossr50/config/AdvancedConfig.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/util/BlockUtils.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/listeners/BlockListener.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/skills/salvage/SalvageManager.java</affectedPath><affectedPath>src/test/java/com/gmail/nossr50/skills/salvage/SalvageManagerTest.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/skills/repair/ArcaneForging.java</affectedPath><affectedPath>src/main/resources/advanced.yml</affectedPath><affectedPath>Changelog.txt</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/skills/repair/Repair.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/skills/salvage/Salvage.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/listeners/PlayerListener.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/commands/skills/RepairCommand.java</affectedPath><affectedPath>src/test/java/com/gmail/nossr50/skills/repair/RepairManagerTest.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/commands/skills/SalvageCommand.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/config/GeneralConfig.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/skills/repair/RepairManager.java</affectedPath><commitId>6cb8daf25440db238c77160302b650ab43cba5d1</commitId><timestamp>1777323089000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>Add more granular control for enchantments Fixes #5245
</comment><date>2026-04-27 13:51:29 -0700</date><id>6cb8daf25440db238c77160302b650ab43cba5d1</id><msg>Add more granular control for enchantments Fixes #5245</msg><path><editType>add</editType><file>src/test/java/com/gmail/nossr50/skills/repair/RepairManagerTest.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/config/AdvancedConfig.java</file></path><path><editType>edit</editType><file>src/main/resources/advanced.yml</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/skills/repair/RepairManager.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/skills/salvage/Salvage.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/config/GeneralConfig.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/skills/repair/ArcaneForging.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/util/BlockUtils.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/listeners/BlockListener.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/commands/skills/SalvageCommand.java</file></path><path><editType>add</editType><file>src/test/java/com/gmail/nossr50/skills/salvage/SalvageManagerTest.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/skills/repair/Repair.java</file></path><path><editType>edit</editType><file>Changelog.txt</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/skills/salvage/SalvageManager.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/listeners/PlayerListener.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/commands/skills/RepairCommand.java</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></culprit><culprit><absoluteUrl>https://popicraft.net/jenkins/user/github</absoluteUrl><fullName>github</fullName></culprit></build><build _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>290</buildNumber><marked><SHA1>91d01c7e9e4c99692ec3c11270756919df452f83</SHA1><branch><SHA1>91d01c7e9e4c99692ec3c11270756919df452f83</SHA1><name>refs/remotes/origin/master</name></branch></marked><revision><SHA1>91d01c7e9e4c99692ec3c11270756919df452f83</SHA1><branch><SHA1>91d01c7e9e4c99692ec3c11270756919df452f83</SHA1><name>refs/remotes/origin/master</name></branch></revision></refsremotesoriginmaster></buildsByBranchName><lastBuiltRevision><SHA1>91d01c7e9e4c99692ec3c11270756919df452f83</SHA1><branch><SHA1>91d01c7e9e4c99692ec3c11270756919df452f83</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>#290</displayName><duration>51980</duration><estimatedDuration>66335</estimatedDuration><fullDisplayName>mcMMO #290</fullDisplayName><id>290</id><inProgress>false</inProgress><keepLog>false</keepLog><number>290</number><queueId>88</queueId><result>FAILURE</result><timestamp>1777237441225</timestamp><url>https://popicraft.net/jenkins/job/mcMMO/290/</url><builtOn>Builder</builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>pom.xml</affectedPath><commitId>0ca12d2c35c1bc4a62849e55c8dab8c6b30bd0d8</commitId><timestamp>1776635511000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>2.2.051
</comment><date>2026-04-19 14:51:51 -0700</date><id>0ca12d2c35c1bc4a62849e55c8dab8c6b30bd0d8</id><msg>2.2.051</msg><path><editType>edit</editType><file>pom.xml</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/main/java/com/gmail/nossr50/config/AdvancedConfig.java</affectedPath><affectedPath>src/test/java/com/gmail/nossr50/skills/maces/MacesTest.java</affectedPath><affectedPath>src/test/java/com/gmail/nossr50/skills/tridents/TridentsTest.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/skills/maces/MacesManager.java</affectedPath><affectedPath>pom.xml</affectedPath><affectedPath>src/main/resources/advanced.yml</affectedPath><affectedPath>Changelog.txt</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/skills/tridents/TridentsManager.java</affectedPath><commitId>91d01c7e9e4c99692ec3c11270756919df452f83</commitId><timestamp>1777236739000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>Expand config surface for newer skills Fixes #5275
</comment><date>2026-04-26 13:52:19 -0700</date><id>91d01c7e9e4c99692ec3c11270756919df452f83</id><msg>Expand config surface for newer skills Fixes #5275</msg><path><editType>edit</editType><file>pom.xml</file></path><path><editType>add</editType><file>src/test/java/com/gmail/nossr50/skills/maces/MacesTest.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/skills/tridents/TridentsManager.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/skills/maces/MacesManager.java</file></path><path><editType>edit</editType><file>Changelog.txt</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/config/AdvancedConfig.java</file></path><path><editType>edit</editType><file>src/main/resources/advanced.yml</file></path><path><editType>edit</editType><file>src/test/java/com/gmail/nossr50/skills/tridents/TridentsTest.java</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></culprit><culprit><absoluteUrl>https://popicraft.net/jenkins/user/github</absoluteUrl><fullName>github</fullName></culprit></build><build _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>289</buildNumber><marked><SHA1>fada487ac31768263a60948918eca8c4ac7d0703</SHA1><branch><SHA1>fada487ac31768263a60948918eca8c4ac7d0703</SHA1><name>refs/remotes/origin/master</name></branch></marked><revision><SHA1>fada487ac31768263a60948918eca8c4ac7d0703</SHA1><branch><SHA1>fada487ac31768263a60948918eca8c4ac7d0703</SHA1><name>refs/remotes/origin/master</name></branch></revision></refsremotesoriginmaster></buildsByBranchName><lastBuiltRevision><SHA1>fada487ac31768263a60948918eca8c4ac7d0703</SHA1><branch><SHA1>fada487ac31768263a60948918eca8c4ac7d0703</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>#289</displayName><duration>36529</duration><estimatedDuration>66335</estimatedDuration><fullDisplayName>mcMMO #289</fullDisplayName><id>289</id><inProgress>false</inProgress><keepLog>false</keepLog><number>289</number><queueId>80</queueId><result>FAILURE</result><timestamp>1776636240957</timestamp><url>https://popicraft.net/jenkins/job/mcMMO/289/</url><builtOn>Builder</builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/main/java/com/gmail/nossr50/util/PaperUtil.java</affectedPath><affectedPath>Changelog.txt</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/skills/archery/ArcheryManager.java</affectedPath><commitId>fada487ac31768263a60948918eca8c4ac7d0703</commitId><timestamp>1776635445000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>Fix Daze teleporting players after a world change or death Fixes #5191
</comment><date>2026-04-19 14:50:45 -0700</date><id>fada487ac31768263a60948918eca8c4ac7d0703</id><msg>Fix Daze teleporting players after a world change or death Fixes #5191</msg><path><editType>edit</editType><file>Changelog.txt</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/skills/archery/ArcheryManager.java</file></path><path><editType>add</editType><file>src/main/java/com/gmail/nossr50/util/PaperUtil.java</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></culprit><culprit><absoluteUrl>https://popicraft.net/jenkins/user/github</absoluteUrl><fullName>github</fullName></culprit></build><build _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>288</buildNumber><marked><SHA1>627fdc454b01e2152033eae77e669a2f1f1e457f</SHA1><branch><SHA1>627fdc454b01e2152033eae77e669a2f1f1e457f</SHA1><name>refs/remotes/origin/master</name></branch></marked><revision><SHA1>627fdc454b01e2152033eae77e669a2f1f1e457f</SHA1><branch><SHA1>627fdc454b01e2152033eae77e669a2f1f1e457f</SHA1><name>refs/remotes/origin/master</name></branch></revision></refsremotesoriginmaster></buildsByBranchName><lastBuiltRevision><SHA1>627fdc454b01e2152033eae77e669a2f1f1e457f</SHA1><branch><SHA1>627fdc454b01e2152033eae77e669a2f1f1e457f</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>#288</displayName><duration>47291</duration><estimatedDuration>66335</estimatedDuration><fullDisplayName>mcMMO #288</fullDisplayName><id>288</id><inProgress>false</inProgress><keepLog>false</keepLog><number>288</number><queueId>79</queueId><result>FAILURE</result><timestamp>1776632640881</timestamp><url>https://popicraft.net/jenkins/job/mcMMO/288/</url><builtOn>Builder</builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/main/java/com/gmail/nossr50/skills/crossbows/CrossbowsManager.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/util/skills/ArrowItemStackHandler.java</affectedPath><commitId>6b476abed3c5fe62ba35994be1edeecda7b7d56a</commitId><timestamp>1776632132000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>Use the solution from PR #5272 instead of the complicated one I pushed out earlier

Co-authored-by: flyncodes &lt;84115766+flyncodes@users.noreply.github.com&gt;
</comment><date>2026-04-19 13:55:32 -0700</date><id>6b476abed3c5fe62ba35994be1edeecda7b7d56a</id><msg>Use the solution from PR #5272 instead of the complicated one I pushed out earlier</msg><path><editType>delete</editType><file>src/main/java/com/gmail/nossr50/util/skills/ArrowItemStackHandler.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/skills/crossbows/CrossbowsManager.java</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>Changelog.txt</affectedPath><commitId>0cccaea3e76c42b3046f14e9df37581e8d302860</commitId><timestamp>1776632213000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>update changelog
</comment><date>2026-04-19 13:56:53 -0700</date><id>0cccaea3e76c42b3046f14e9df37581e8d302860</id><msg>update changelog</msg><path><editType>edit</editType><file>Changelog.txt</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/main/java/com/gmail/nossr50/runnables/items/ChimaeraWingWarmup.java</affectedPath><commitId>ae1a72c9a16bba9264d41c286cd665c33307e363</commitId><timestamp>1776632398000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/github</absoluteUrl><fullName>github</fullName></author><authorEmail>noreply@github.com</authorEmail><comment>Fix stacked Chimaera Wing item loss (#5265)
</comment><date>2026-04-19 13:59:58 -0700</date><id>ae1a72c9a16bba9264d41c286cd665c33307e363</id><msg>Fix stacked Chimaera Wing item loss (#5265)</msg><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/runnables/items/ChimaeraWingWarmup.java</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>Changelog.txt</affectedPath><commitId>017a1cd2586aeb844aee900aa417c8fbcc995a94</commitId><timestamp>1776632465000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>update changelog
</comment><date>2026-04-19 14:01:05 -0700</date><id>017a1cd2586aeb844aee900aa417c8fbcc995a94</id><msg>update changelog</msg><path><editType>edit</editType><file>Changelog.txt</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>pom.xml</affectedPath><commitId>2e62f51f71f7949fe52b138ee9c0e1edfddd1b8f</commitId><timestamp>1776632489000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/github</absoluteUrl><fullName>github</fullName></author><authorEmail>noreply@github.com</authorEmail><comment>Bump org.apache.logging.log4j:log4j-core from 2.25.2 to 2.25.4 (#5270)

Bumps org.apache.logging.log4j:log4j-core from 2.25.2 to 2.25.4.

---
updated-dependencies:
- dependency-name: org.apache.logging.log4j:log4j-core
  dependency-version: 2.25.4
  dependency-type: direct:development
...

Signed-off-by: dependabot[bot] &lt;support@github.com&gt;
Co-authored-by: dependabot[bot] &lt;49699333+dependabot[bot]@users.noreply.github.com&gt;
</comment><date>2026-04-19 14:01:29 -0700</date><id>2e62f51f71f7949fe52b138ee9c0e1edfddd1b8f</id><msg>Bump org.apache.logging.log4j:log4j-core from 2.25.2 to 2.25.4 (#5270)</msg><path><editType>edit</editType><file>pom.xml</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></culprit><culprit><absoluteUrl>https://popicraft.net/jenkins/user/github</absoluteUrl><fullName>github</fullName></culprit></build><build _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>287</buildNumber><marked><SHA1>6047a12ef4f74bcdbe96e06c46af20802fa4b164</SHA1><branch><SHA1>6047a12ef4f74bcdbe96e06c46af20802fa4b164</SHA1><name>refs/remotes/origin/master</name></branch></marked><revision><SHA1>6047a12ef4f74bcdbe96e06c46af20802fa4b164</SHA1><branch><SHA1>6047a12ef4f74bcdbe96e06c46af20802fa4b164</SHA1><name>refs/remotes/origin/master</name></branch></revision></refsremotesoriginmaster></buildsByBranchName><lastBuiltRevision><SHA1>6047a12ef4f74bcdbe96e06c46af20802fa4b164</SHA1><branch><SHA1>6047a12ef4f74bcdbe96e06c46af20802fa4b164</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>#287</displayName><duration>47679</duration><estimatedDuration>66335</estimatedDuration><fullDisplayName>mcMMO #287</fullDisplayName><id>287</id><inProgress>false</inProgress><keepLog>false</keepLog><number>287</number><queueId>78</queueId><result>FAILURE</result><timestamp>1776631741186</timestamp><url>https://popicraft.net/jenkins/job/mcMMO/287/</url><builtOn>Builder</builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>pom.xml</affectedPath><affectedPath>Changelog.txt</affectedPath><commitId>7afbed36db440c9aac43d2f8d939d58d800705df</commitId><timestamp>1775507571000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>2.2.050
</comment><date>2026-04-06 13:32:51 -0700</date><id>7afbed36db440c9aac43d2f8d939d58d800705df</id><msg>2.2.050</msg><path><editType>edit</editType><file>Changelog.txt</file></path><path><editType>edit</editType><file>pom.xml</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>pom.xml</affectedPath><commitId>687fe9d91410e77317edb9a5de95020c7d066222</commitId><timestamp>1776622381000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>back to dev snapshots
</comment><date>2026-04-19 11:13:01 -0700</date><id>687fe9d91410e77317edb9a5de95020c7d066222</id><msg>back to dev snapshots</msg><path><editType>edit</editType><file>pom.xml</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>.gitignore</affectedPath><commitId>0013468cebc4ead57b7af8bc064e0ce5a75ae028</commitId><timestamp>1776628022000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>ignore html
</comment><date>2026-04-19 12:47:02 -0700</date><id>0013468cebc4ead57b7af8bc064e0ce5a75ae028</id><msg>ignore html</msg><path><editType>edit</editType><file>.gitignore</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>.gitignore</affectedPath><commitId>4cb65a39cb960be4ea1676c9d69928a2fb85f9e5</commitId><timestamp>1776628151000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>ignore md
</comment><date>2026-04-19 12:49:11 -0700</date><id>4cb65a39cb960be4ea1676c9d69928a2fb85f9e5</id><msg>ignore md</msg><path><editType>edit</editType><file>.gitignore</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>Changelog_2.1.0.md</affectedPath><commitId>4d653535c6188324999c7c9e88006617d89e0282</commitId><timestamp>1776630637000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>Delete quite outdated changelog file
</comment><date>2026-04-19 13:30:37 -0700</date><id>4d653535c6188324999c7c9e88006617d89e0282</id><msg>Delete quite outdated changelog file</msg><path><editType>delete</editType><file>Changelog_2.1.0.md</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/main/java/com/gmail/nossr50/skills/crossbows/CrossbowsManager.java</affectedPath><affectedPath>pom.xml</affectedPath><affectedPath>Changelog.txt</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/util/skills/ArrowItemStackHandler.java</affectedPath><commitId>ebd2f902b660601c42c26cc305eaf3d83ee5eed9</commitId><timestamp>1776630831000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>Bounced arrows no longer have super long durations Fixes #5246 Fixes #5243
</comment><date>2026-04-19 13:33:51 -0700</date><id>ebd2f902b660601c42c26cc305eaf3d83ee5eed9</id><msg>Bounced arrows no longer have super long durations Fixes #5246 Fixes #5243</msg><path><editType>edit</editType><file>Changelog.txt</file></path><path><editType>add</editType><file>src/main/java/com/gmail/nossr50/util/skills/ArrowItemStackHandler.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/skills/crossbows/CrossbowsManager.java</file></path><path><editType>edit</editType><file>pom.xml</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>Changelog.txt</affectedPath><affectedPath>src/main/resources/experience.yml</affectedPath><commitId>6047a12ef4f74bcdbe96e06c46af20802fa4b164</commitId><timestamp>1776630882000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>Nerf Glow Lichen XP a bit
</comment><date>2026-04-19 13:34:42 -0700</date><id>6047a12ef4f74bcdbe96e06c46af20802fa4b164</id><msg>Nerf Glow Lichen XP a bit</msg><path><editType>edit</editType><file>Changelog.txt</file></path><path><editType>edit</editType><file>src/main/resources/experience.yml</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></culprit><culprit><absoluteUrl>https://popicraft.net/jenkins/user/github</absoluteUrl><fullName>github</fullName></culprit></build><build _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>286</buildNumber><marked><SHA1>01a92f2f5a2c4f0e39d121aa2b5207f958d50601</SHA1><branch><SHA1>01a92f2f5a2c4f0e39d121aa2b5207f958d50601</SHA1><name>refs/remotes/origin/master</name></branch></marked><revision><SHA1>01a92f2f5a2c4f0e39d121aa2b5207f958d50601</SHA1><branch><SHA1>01a92f2f5a2c4f0e39d121aa2b5207f958d50601</SHA1><name>refs/remotes/origin/master</name></branch></revision></refsremotesoriginmaster></buildsByBranchName><lastBuiltRevision><SHA1>01a92f2f5a2c4f0e39d121aa2b5207f958d50601</SHA1><branch><SHA1>01a92f2f5a2c4f0e39d121aa2b5207f958d50601</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>#286</displayName><duration>36666</duration><estimatedDuration>66335</estimatedDuration><fullDisplayName>mcMMO #286</fullDisplayName><id>286</id><inProgress>false</inProgress><keepLog>false</keepLog><number>286</number><queueId>41</queueId><result>FAILURE</result><timestamp>1773529430610</timestamp><url>https://popicraft.net/jenkins/job/mcMMO/286/</url><builtOn>Builder</builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>AGENTS.md</affectedPath><commitId>01a92f2f5a2c4f0e39d121aa2b5207f958d50601</commitId><timestamp>1773528791000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>add AGENTS.md (not sure how useful it will be, but copilot suggested it)
</comment><date>2026-03-14 15:53:11 -0700</date><id>01a92f2f5a2c4f0e39d121aa2b5207f958d50601</id><msg>add AGENTS.md (not sure how useful it will be, but copilot suggested it)</msg><path><editType>add</editType><file>AGENTS.md</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></culprit><culprit><absoluteUrl>https://popicraft.net/jenkins/user/github</absoluteUrl><fullName>github</fullName></culprit></build><build _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>285</buildNumber><marked><SHA1>fb38002682d7c5095af180825720022694a25a82</SHA1><branch><SHA1>fb38002682d7c5095af180825720022694a25a82</SHA1><name>refs/remotes/origin/master</name></branch></marked><revision><SHA1>fb38002682d7c5095af180825720022694a25a82</SHA1><branch><SHA1>fb38002682d7c5095af180825720022694a25a82</SHA1><name>refs/remotes/origin/master</name></branch></revision></refsremotesoriginmaster></buildsByBranchName><lastBuiltRevision><SHA1>fb38002682d7c5095af180825720022694a25a82</SHA1><branch><SHA1>fb38002682d7c5095af180825720022694a25a82</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>#285</displayName><duration>46743</duration><estimatedDuration>66335</estimatedDuration><fullDisplayName>mcMMO #285</fullDisplayName><id>285</id><inProgress>false</inProgress><keepLog>false</keepLog><number>285</number><queueId>40</queueId><result>FAILURE</result><timestamp>1773523130535</timestamp><url>https://popicraft.net/jenkins/job/mcMMO/285/</url><builtOn>Builder</builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/main/java/com/gmail/nossr50/database/SQLDatabaseManager.java</affectedPath><commitId>fb38002682d7c5095af180825720022694a25a82</commitId><timestamp>1773523013000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/github</absoluteUrl><fullName>github</fullName></author><authorEmail>noreply@github.com</authorEmail><comment>Fix weak warning when sql max idle connections is less than 10 (#5267)
</comment><date>2026-03-14 14:16:53 -0700</date><id>fb38002682d7c5095af180825720022694a25a82</id><msg>Fix weak warning when sql max idle connections is less than 10 (#5267)</msg><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/database/SQLDatabaseManager.java</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></culprit><culprit><absoluteUrl>https://popicraft.net/jenkins/user/github</absoluteUrl><fullName>github</fullName></culprit></build><build _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>284</buildNumber><marked><SHA1>13a1e418b3898dc8bdfca0156fd9bc7a8a09f013</SHA1><branch><SHA1>13a1e418b3898dc8bdfca0156fd9bc7a8a09f013</SHA1><name>refs/remotes/origin/master</name></branch></marked><revision><SHA1>13a1e418b3898dc8bdfca0156fd9bc7a8a09f013</SHA1><branch><SHA1>13a1e418b3898dc8bdfca0156fd9bc7a8a09f013</SHA1><name>refs/remotes/origin/master</name></branch></revision></refsremotesoriginmaster></buildsByBranchName><lastBuiltRevision><SHA1>13a1e418b3898dc8bdfca0156fd9bc7a8a09f013</SHA1><branch><SHA1>13a1e418b3898dc8bdfca0156fd9bc7a8a09f013</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>#284</displayName><duration>49627</duration><estimatedDuration>66335</estimatedDuration><fullDisplayName>mcMMO #284</fullDisplayName><id>284</id><inProgress>false</inProgress><keepLog>false</keepLog><number>284</number><queueId>34</queueId><result>FAILURE</result><timestamp>1773082128454</timestamp><url>https://popicraft.net/jenkins/job/mcMMO/284/</url><builtOn>Builder</builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/test/java/com/gmail/nossr50/skills/fishing/FishingTest.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/skills/fishing/FishingManager.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/util/MetadataConstants.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/listeners/PlayerListener.java</affectedPath><commitId>13a1e418b3898dc8bdfca0156fd9bc7a8a09f013</commitId><timestamp>1773081507000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/github</absoluteUrl><fullName>github</fullName></author><authorEmail>noreply@github.com</authorEmail><comment>Fix FishingManager#isFishingTooOften implementation (#5261)

* Fix FishingManager#isFishingTooOften implementation

* Add an additional false case to tests

* Reduce diff
</comment><date>2026-03-09 11:38:27 -0700</date><id>13a1e418b3898dc8bdfca0156fd9bc7a8a09f013</id><msg>Fix FishingManager#isFishingTooOften implementation (#5261)</msg><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/skills/fishing/FishingManager.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/util/MetadataConstants.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/listeners/PlayerListener.java</file></path><path><editType>add</editType><file>src/test/java/com/gmail/nossr50/skills/fishing/FishingTest.java</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></culprit><culprit><absoluteUrl>https://popicraft.net/jenkins/user/github</absoluteUrl><fullName>github</fullName></culprit></build><build _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>283</buildNumber><marked><SHA1>be613bc9b63cb01e03b098045cfba5fb04e04023</SHA1><branch><SHA1>be613bc9b63cb01e03b098045cfba5fb04e04023</SHA1><name>refs/remotes/origin/master</name></branch></marked><revision><SHA1>be613bc9b63cb01e03b098045cfba5fb04e04023</SHA1><branch><SHA1>be613bc9b63cb01e03b098045cfba5fb04e04023</SHA1><name>refs/remotes/origin/master</name></branch></revision></refsremotesoriginmaster></buildsByBranchName><lastBuiltRevision><SHA1>be613bc9b63cb01e03b098045cfba5fb04e04023</SHA1><branch><SHA1>be613bc9b63cb01e03b098045cfba5fb04e04023</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>#283</displayName><duration>48449</duration><estimatedDuration>66335</estimatedDuration><fullDisplayName>mcMMO #283</fullDisplayName><id>283</id><inProgress>false</inProgress><keepLog>false</keepLog><number>283</number><queueId>9</queueId><result>FAILURE</result><timestamp>1771017522260</timestamp><url>https://popicraft.net/jenkins/job/mcMMO/283/</url><builtOn>Builder</builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/main/java/com/gmail/nossr50/skills/archery/Archery.java</affectedPath><commitId>be613bc9b63cb01e03b098045cfba5fb04e04023</commitId><timestamp>1771017294000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/github</absoluteUrl><fullName>github</fullName></author><authorEmail>noreply@github.com</authorEmail><comment>Fix archery entity tracking failing often on Folia (#5260)

</comment><date>2026-02-13 13:14:54 -0800</date><id>be613bc9b63cb01e03b098045cfba5fb04e04023</id><msg>Fix archery entity tracking failing often on Folia (#5260)</msg><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/skills/archery/Archery.java</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></culprit><culprit><absoluteUrl>https://popicraft.net/jenkins/user/github</absoluteUrl><fullName>github</fullName></culprit></build><build _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>282</buildNumber><marked><SHA1>99c2ec295929ec5e140272e5d57066d0eb199542</SHA1><branch><SHA1>99c2ec295929ec5e140272e5d57066d0eb199542</SHA1><name>refs/remotes/origin/master</name></branch></marked><revision><SHA1>99c2ec295929ec5e140272e5d57066d0eb199542</SHA1><branch><SHA1>99c2ec295929ec5e140272e5d57066d0eb199542</SHA1><name>refs/remotes/origin/master</name></branch></revision></refsremotesoriginmaster></buildsByBranchName><lastBuiltRevision><SHA1>99c2ec295929ec5e140272e5d57066d0eb199542</SHA1><branch><SHA1>99c2ec295929ec5e140272e5d57066d0eb199542</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>#282</displayName><duration>58990</duration><estimatedDuration>66335</estimatedDuration><fullDisplayName>mcMMO #282</fullDisplayName><id>282</id><inProgress>false</inProgress><keepLog>false</keepLog><number>282</number><queueId>2</queueId><result>FAILURE</result><timestamp>1770519822739</timestamp><url>https://popicraft.net/jenkins/job/mcMMO/282/</url><builtOn>Builder</builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/main/java/com/gmail/nossr50/util/MaterialMapStore.java</affectedPath><commitId>db985bcc529298e5259c05a5ce5413cd04111c3c</commitId><timestamp>1770344862000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/github</absoluteUrl><fullName>github</fullName></author><authorEmail>noreply@github.com</authorEmail><comment>Add spears to `fill&lt;Material&gt;ToolsWhiteList()` methods (#5254)

These methods fill the matching `&lt;material&gt;Tools` HashSets. Adding
corresponding spear items will allow the `is&lt;Material&gt;Tool()` methods
to return `true` if checking a spear of the matching material. This is
to support the Repair and Salvage configurations pulling the
appropriate repair/salvage material type if one is not specified in the
plugin's configuration files.
</comment><date>2026-02-05 18:27:42 -0800</date><id>db985bcc529298e5259c05a5ce5413cd04111c3c</id><msg>Add spears to `fill&lt;Material&gt;ToolsWhiteList()` methods (#5254)</msg><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/util/MaterialMapStore.java</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/main/java/com/gmail/nossr50/util/PotionUtil.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/commands/admin/CompatibilityCommand.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/util/compat/layers/attackcooldown/PlayerAttackCooldownMethods.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/datatypes/player/McMMOPlayer.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/util/PotionCompatibilityType.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/util/compat/layers/attackcooldown/PlayerAttackCooldownToolLayer.java</affectedPath><affectedPath>src/test/java/com/gmail/nossr50/util/skills/SkillToolsTest.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/util/compat/layers/bungee/BungeeLegacySerializerCompatibilityLayer.java</affectedPath><affectedPath>src/test/java/com/gmail/nossr50/util/platform/MinecraftGameVersionTest.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/util/platform/PlatformBuilder.java</affectedPath><affectedPath>pom.xml</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/util/platform/BukkitPlatform.java</affectedPath><affectedPath>src/test/java/com/gmail/nossr50/util/PotionEffectUtilTest.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/util/platform/AbstractPlatform.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/util/MinecraftGameVersionFactory.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/util/text/TextComponentFactory.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/util/platform/Platform.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/util/compat/CompatibilityManager.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/util/compat/layers/AbstractCompatibilityLayer.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/util/compat/CompatibilityType.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/util/compat/layers/AbstractNMSCompatibilityLayer.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/util/compat/layers/bungee/BungeeModernSerializerCompatibilityLayer.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/util/compat/layers/attackcooldown/DummyPlayerAttackCooldownToolLayer.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/config/skills/alchemy/PotionConfig.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/util/compat/layers/skills/MasterAnglerCompatibilityLayer.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/commands/player/McTopCommand.java</affectedPath><affectedPath>src/test/java/com/gmail/nossr50/util/PotionUtilTest.java</affectedPath><affectedPath>src/test/java/com/gmail/nossr50/database/SQLDatabaseManagerTest.java</affectedPath><affectedPath>Changelog.txt</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/util/commands/CommandRegistrationManager.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/mcMMO.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/datatypes/skills/alchemy/AlchemyPotion.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/util/text/TextUtils.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/util/compat/CompatibilityLayer.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/listeners/PlayerListener.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/util/platform/PlatformManager.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/util/compat/layers/bungee/AbstractBungeeSerializerCompatibilityLayer.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/skills/fishing/FishingManager.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/runnables/commands/McRankCommandDisplayTask.java</affectedPath><affectedPath>src/test/java/com/gmail/nossr50/MMOTestEnvironment.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/util/skills/SkillTools.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/commands/skills/FishingCommand.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/database/SQLDatabaseManager.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/util/compat/layers/skills/AbstractMasterAnglerCompatibility.java</affectedPath><commitId>c94f10568d23c6a3dd39ade4eb8c171c8d198a9f</commitId><timestamp>1770504865000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>refactor a bunch of unused, outdated, or unnecessary tech debt for compatibility for older versions that are no longer supported or were never supported
</comment><date>2026-02-07 14:54:25 -0800</date><id>c94f10568d23c6a3dd39ade4eb8c171c8d198a9f</id><msg>refactor a bunch of unused, outdated, or unnecessary tech debt for compatibility for older versions that are no longer supported or were never supported</msg><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/commands/player/McTopCommand.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/database/SQLDatabaseManager.java</file></path><path><editType>delete</editType><file>src/main/java/com/gmail/nossr50/util/PotionCompatibilityType.java</file></path><path><editType>delete</editType><file>src/main/java/com/gmail/nossr50/util/compat/layers/AbstractNMSCompatibilityLayer.java</file></path><path><editType>edit</editType><file>src/test/java/com/gmail/nossr50/util/PotionUtilTest.java</file></path><path><editType>edit</editType><file>src/test/java/com/gmail/nossr50/util/platform/MinecraftGameVersionTest.java</file></path><path><editType>delete</editType><file>src/main/java/com/gmail/nossr50/util/platform/Platform.java</file></path><path><editType>delete</editType><file>src/main/java/com/gmail/nossr50/util/compat/layers/attackcooldown/PlayerAttackCooldownMethods.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/util/commands/CommandRegistrationManager.java</file></path><path><editType>delete</editType><file>src/main/java/com/gmail/nossr50/util/compat/CompatibilityType.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/config/skills/alchemy/PotionConfig.java</file></path><path><editType>delete</editType><file>src/main/java/com/gmail/nossr50/util/platform/PlatformManager.java</file></path><path><editType>edit</editType><file>src/test/java/com/gmail/nossr50/database/SQLDatabaseManagerTest.java</file></path><path><editType>add</editType><file>src/main/java/com/gmail/nossr50/util/MinecraftGameVersionFactory.java</file></path><path><editType>delete</editType><file>src/main/java/com/gmail/nossr50/util/platform/PlatformBuilder.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/util/PotionUtil.java</file></path><path><editType>delete</editType><file>src/main/java/com/gmail/nossr50/util/platform/BukkitPlatform.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/commands/skills/FishingCommand.java</file></path><path><editType>delete</editType><file>src/main/java/com/gmail/nossr50/util/compat/layers/bungee/AbstractBungeeSerializerCompatibilityLayer.java</file></path><path><editType>delete</editType><file>src/main/java/com/gmail/nossr50/util/compat/layers/bungee/BungeeLegacySerializerCompatibilityLayer.java</file></path><path><editType>edit</editType><file>src/test/java/com/gmail/nossr50/util/PotionEffectUtilTest.java</file></path><path><editType>edit</editType><file>src/test/java/com/gmail/nossr50/MMOTestEnvironment.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/mcMMO.java</file></path><path><editType>edit</editType><file>pom.xml</file></path><path><editType>delete</editType><file>src/main/java/com/gmail/nossr50/util/compat/layers/skills/AbstractMasterAnglerCompatibility.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/datatypes/player/McMMOPlayer.java</file></path><path><editType>delete</editType><file>src/main/java/com/gmail/nossr50/util/compat/layers/attackcooldown/PlayerAttackCooldownToolLayer.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/skills/fishing/FishingManager.java</file></path><path><editType>delete</editType><file>src/main/java/com/gmail/nossr50/util/compat/layers/bungee/BungeeModernSerializerCompatibilityLayer.java</file></path><path><editType>delete</editType><file>src/main/java/com/gmail/nossr50/util/compat/CompatibilityManager.java</file></path><path><editType>delete</editType><file>src/main/java/com/gmail/nossr50/util/compat/layers/attackcooldown/DummyPlayerAttackCooldownToolLayer.java</file></path><path><editType>edit</editType><file>src/test/java/com/gmail/nossr50/util/skills/SkillToolsTest.java</file></path><path><editType>delete</editType><file>src/main/java/com/gmail/nossr50/util/compat/layers/skills/MasterAnglerCompatibilityLayer.java</file></path><path><editType>delete</editType><file>src/main/java/com/gmail/nossr50/commands/admin/CompatibilityCommand.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/listeners/PlayerListener.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/runnables/commands/McRankCommandDisplayTask.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/util/text/TextUtils.java</file></path><path><editType>edit</editType><file>Changelog.txt</file></path><path><editType>delete</editType><file>src/main/java/com/gmail/nossr50/util/compat/CompatibilityLayer.java</file></path><path><editType>delete</editType><file>src/main/java/com/gmail/nossr50/util/platform/AbstractPlatform.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/util/skills/SkillTools.java</file></path><path><editType>delete</editType><file>src/main/java/com/gmail/nossr50/util/compat/layers/AbstractCompatibilityLayer.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/util/text/TextComponentFactory.java</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/main/java/com/gmail/nossr50/commands/skills/SpearsCommand.java</affectedPath><commitId>33597e1db100052a0baa5fe84fd3a34d762164d8</commitId><timestamp>1770504898000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/github</absoluteUrl><fullName>github</fullName></author><authorEmail>noreply@github.com</authorEmail><comment>Set max display of spear master to two decimals (#5258)

* Fixed NPE when party creation doesn't use password.  Solves bug reported here: https://discord.com/channels/526933440214597677/526938425161416727/1213131451235827753

Signed-off-by: Momshroom &lt;Momshroom@gmail.com&gt;

* Actually don't reduce sapling drop if KnockOnWood unlocked. (Prior fix didn't)

Signed-off-by: Momshroom &lt;Momshroom@gmail.com&gt;

* removed unnecessary getPlayer() calls.
clarified comment
clarified location variable name

Signed-off-by: Momshroom &lt;Momshroom@gmail.com&gt;

* made new method more generic.
Removed no longer needed dropString variable

Signed-off-by: Momshroom &lt;Momshroom@gmail.com&gt;

* Added new potions to alchemy. Borrowed some config info from here: https://discord.com/channels/526933440214597677/547110990278426629/1291771464726478869

Signed-off-by: Momshroom &lt;Momshroom@gmail.com&gt;

* Revert regression.  Fixes salvage permissions by material type

* Format Spear Mastery to 2 decimal places in /spears output, fixing floating point issue causing long output

---------

Signed-off-by: Momshroom &lt;Momshroom@gmail.com&gt;
</comment><date>2026-02-07 14:54:58 -0800</date><id>33597e1db100052a0baa5fe84fd3a34d762164d8</id><msg>Set max display of spear master to two decimals (#5258)</msg><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/commands/skills/SpearsCommand.java</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/main/java/com/gmail/nossr50/util/skills/SkillUtils.java</affectedPath><commitId>a6e12c4cc12cbc1e1522649790571f8a492e3c81</commitId><timestamp>1770504961000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/github</absoluteUrl><fullName>github</fullName></author><authorEmail>noreply@github.com</authorEmail><comment>Replace use of getIngredientList/Map (#5257)

</comment><date>2026-02-07 14:56:01 -0800</date><id>a6e12c4cc12cbc1e1522649790571f8a492e3c81</id><msg>Replace use of getIngredientList/Map (#5257)</msg><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/util/skills/SkillUtils.java</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>pom.xml</affectedPath><commitId>0e0e2efb6db1b1f3a706057332808bc7f222b747</commitId><timestamp>1770505058000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/github</absoluteUrl><fullName>github</fullName></author><authorEmail>noreply@github.com</authorEmail><comment>Bump org.assertj:assertj-core from 3.25.3 to 3.27.7 (#5259)

Bumps [org.assertj:assertj-core](https://github.com/assertj/assertj) from 3.25.3 to 3.27.7.
- [Release notes](https://github.com/assertj/assertj/releases)
- [Commits](https://github.com/assertj/assertj/compare/assertj-build-3.25.3...assertj-build-3.27.7)

---
updated-dependencies:
- dependency-name: org.assertj:assertj-core
  dependency-version: 3.27.7
  dependency-type: direct:development
...

Signed-off-by: dependabot[bot] &lt;support@github.com&gt;
Co-authored-by: dependabot[bot] &lt;49699333+dependabot[bot]@users.noreply.github.com&gt;
</comment><date>2026-02-07 14:57:38 -0800</date><id>0e0e2efb6db1b1f3a706057332808bc7f222b747</id><msg>Bump org.assertj:assertj-core from 3.25.3 to 3.27.7 (#5259)</msg><path><editType>edit</editType><file>pom.xml</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>Changelog.txt</affectedPath><commitId>3a7d605450a166e283ba79d85138144a422ed8b4</commitId><timestamp>1770505119000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>changelog update
</comment><date>2026-02-07 14:58:39 -0800</date><id>3a7d605450a166e283ba79d85138144a422ed8b4</id><msg>changelog update</msg><path><editType>edit</editType><file>Changelog.txt</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>Changelog.txt</affectedPath><commitId>99c2ec295929ec5e140272e5d57066d0eb199542</commitId><timestamp>1770505327000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>changelog update again
</comment><date>2026-02-07 15:02:07 -0800</date><id>99c2ec295929ec5e140272e5d57066d0eb199542</id><msg>changelog update again</msg><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></culprit><culprit><absoluteUrl>https://popicraft.net/jenkins/user/github</absoluteUrl><fullName>github</fullName></culprit></build><build _class='hudson.model.FreeStyleBuild'><action _class='hudson.model.CauseAction'><cause _class='hudson.model.Cause$UserIdCause'><shortDescription>Started by user Logan</shortDescription><userId>popcorn9499</userId><userName>Logan</userName></cause></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><refsremotesoriginmaster _class='hudson.plugins.git.util.Build'><buildNumber>281</buildNumber><marked><SHA1>1b8897b8abb203bbe1444cb20d1b64cd2db662b2</SHA1><branch><SHA1>1b8897b8abb203bbe1444cb20d1b64cd2db662b2</SHA1><name>refs/remotes/origin/master</name></branch></marked><revision><SHA1>1b8897b8abb203bbe1444cb20d1b64cd2db662b2</SHA1><branch><SHA1>1b8897b8abb203bbe1444cb20d1b64cd2db662b2</SHA1><name>refs/remotes/origin/master</name></branch></revision></refsremotesoriginmaster></buildsByBranchName><lastBuiltRevision><SHA1>1b8897b8abb203bbe1444cb20d1b64cd2db662b2</SHA1><branch><SHA1>1b8897b8abb203bbe1444cb20d1b64cd2db662b2</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>#281</displayName><duration>195494</duration><estimatedDuration>66335</estimatedDuration><fullDisplayName>mcMMO #281</fullDisplayName><id>281</id><inProgress>false</inProgress><keepLog>false</keepLog><number>281</number><queueId>30</queueId><result>FAILURE</result><timestamp>1770005343132</timestamp><url>https://popicraft.net/jenkins/job/mcMMO/281/</url><builtOn>Builder</builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><kind>git</kind></changeSet><culprit><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></culprit><culprit><absoluteUrl>https://popicraft.net/jenkins/user/github</absoluteUrl><fullName>github</fullName></culprit></build><build _class='hudson.model.FreeStyleBuild'><action _class='hudson.model.CauseAction'><cause _class='hudson.model.Cause$UserIdCause'><shortDescription>Started by user Logan</shortDescription><userId>popcorn9499</userId><userName>Logan</userName></cause></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><refsremotesoriginmaster _class='hudson.plugins.git.util.Build'><buildNumber>280</buildNumber><marked><SHA1>1b8897b8abb203bbe1444cb20d1b64cd2db662b2</SHA1><branch><SHA1>1b8897b8abb203bbe1444cb20d1b64cd2db662b2</SHA1><name>refs/remotes/origin/master</name></branch></marked><revision><SHA1>1b8897b8abb203bbe1444cb20d1b64cd2db662b2</SHA1><branch><SHA1>1b8897b8abb203bbe1444cb20d1b64cd2db662b2</SHA1><name>refs/remotes/origin/master</name></branch></revision></refsremotesoriginmaster></buildsByBranchName><lastBuiltRevision><SHA1>1b8897b8abb203bbe1444cb20d1b64cd2db662b2</SHA1><branch><SHA1>1b8897b8abb203bbe1444cb20d1b64cd2db662b2</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>#280</displayName><duration>248738</duration><estimatedDuration>66335</estimatedDuration><fullDisplayName>mcMMO #280</fullDisplayName><id>280</id><inProgress>false</inProgress><keepLog>false</keepLog><number>280</number><queueId>29</queueId><result>FAILURE</result><timestamp>1770003902986</timestamp><url>https://popicraft.net/jenkins/job/mcMMO/280/</url><builtOn>Builder</builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><kind>git</kind></changeSet><culprit><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></culprit><culprit><absoluteUrl>https://popicraft.net/jenkins/user/github</absoluteUrl><fullName>github</fullName></culprit></build><build _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>279</buildNumber><marked><SHA1>1b8897b8abb203bbe1444cb20d1b64cd2db662b2</SHA1><branch><SHA1>1b8897b8abb203bbe1444cb20d1b64cd2db662b2</SHA1><name>refs/remotes/origin/master</name></branch></marked><revision><SHA1>1b8897b8abb203bbe1444cb20d1b64cd2db662b2</SHA1><branch><SHA1>1b8897b8abb203bbe1444cb20d1b64cd2db662b2</SHA1><name>refs/remotes/origin/master</name></branch></revision></refsremotesoriginmaster></buildsByBranchName><lastBuiltRevision><SHA1>1b8897b8abb203bbe1444cb20d1b64cd2db662b2</SHA1><branch><SHA1>1b8897b8abb203bbe1444cb20d1b64cd2db662b2</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>#279</displayName><duration>39268</duration><estimatedDuration>66335</estimatedDuration><fullDisplayName>mcMMO #279</fullDisplayName><id>279</id><inProgress>false</inProgress><keepLog>false</keepLog><number>279</number><queueId>27</queueId><result>FAILURE</result><timestamp>1769888942479</timestamp><url>https://popicraft.net/jenkins/job/mcMMO/279/</url><builtOn>Builder</builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/main/java/com/gmail/nossr50/util/platform/PlatformBuilder.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/mcMMO.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/util/platform/PlatformManager.java</affectedPath><commitId>1b8897b8abb203bbe1444cb20d1b64cd2db662b2</commitId><timestamp>1769888411000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>version is outdated errors tweaked a bit
</comment><date>2026-01-31 11:40:11 -0800</date><id>1b8897b8abb203bbe1444cb20d1b64cd2db662b2</id><msg>version is outdated errors tweaked a bit</msg><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/util/platform/PlatformBuilder.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/util/platform/PlatformManager.java</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></culprit><culprit><absoluteUrl>https://popicraft.net/jenkins/user/github</absoluteUrl><fullName>github</fullName></culprit></build><build _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>278</buildNumber><marked><SHA1>95026e60168a03b52918ef4541acf9aaf8a7afa6</SHA1><branch><SHA1>95026e60168a03b52918ef4541acf9aaf8a7afa6</SHA1><name>refs/remotes/origin/master</name></branch></marked><revision><SHA1>95026e60168a03b52918ef4541acf9aaf8a7afa6</SHA1><branch><SHA1>95026e60168a03b52918ef4541acf9aaf8a7afa6</SHA1><name>refs/remotes/origin/master</name></branch></revision></refsremotesoriginmaster></buildsByBranchName><lastBuiltRevision><SHA1>95026e60168a03b52918ef4541acf9aaf8a7afa6</SHA1><branch><SHA1>95026e60168a03b52918ef4541acf9aaf8a7afa6</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>#278</displayName><duration>49366</duration><estimatedDuration>66335</estimatedDuration><fullDisplayName>mcMMO #278</fullDisplayName><id>278</id><inProgress>false</inProgress><keepLog>false</keepLog><number>278</number><queueId>26</queueId><result>FAILURE</result><timestamp>1769888042396</timestamp><url>https://popicraft.net/jenkins/job/mcMMO/278/</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>pom.xml</affectedPath><commitId>7738c45b72f46484c48621be688d0b0c8c822c7d</commitId><timestamp>1769887176000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>minimum MC version is now 1.20.4
</comment><date>2026-01-31 11:19:36 -0800</date><id>7738c45b72f46484c48621be688d0b0c8c822c7d</id><msg>minimum MC version is now 1.20.4</msg><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/mcMMO.java</file></path><path><editType>edit</editType><file>pom.xml</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/main/java/com/gmail/nossr50/datatypes/player/McMMOPlayer.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/listeners/PlayerListener.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/util/skills/CombatUtils.java</affectedPath><affectedPath>Changelog.txt</affectedPath><commitId>95026e60168a03b52918ef4541acf9aaf8a7afa6</commitId><timestamp>1769887235000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>improved spears dmg detection and fixed more errors with Excellent Enchants
</comment><date>2026-01-31 11:20:35 -0800</date><id>95026e60168a03b52918ef4541acf9aaf8a7afa6</id><msg>improved spears dmg detection and fixed more errors with Excellent Enchants</msg><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/listeners/PlayerListener.java</file></path><path><editType>edit</editType><file>Changelog.txt</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/datatypes/player/McMMOPlayer.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/util/skills/CombatUtils.java</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></culprit><culprit><absoluteUrl>https://popicraft.net/jenkins/user/github</absoluteUrl><fullName>github</fullName></culprit></build><build _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>277</buildNumber><marked><SHA1>080d407c142595941aed4f6d76b864e4a968b6be</SHA1><branch><SHA1>080d407c142595941aed4f6d76b864e4a968b6be</SHA1><name>refs/remotes/origin/master</name></branch></marked><revision><SHA1>080d407c142595941aed4f6d76b864e4a968b6be</SHA1><branch><SHA1>080d407c142595941aed4f6d76b864e4a968b6be</SHA1><name>refs/remotes/origin/master</name></branch></revision></refsremotesoriginmaster></buildsByBranchName><lastBuiltRevision><SHA1>080d407c142595941aed4f6d76b864e4a968b6be</SHA1><branch><SHA1>080d407c142595941aed4f6d76b864e4a968b6be</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>#277</displayName><duration>80219</duration><estimatedDuration>66335</estimatedDuration><fullDisplayName>mcMMO #277</fullDisplayName><id>277</id><inProgress>false</inProgress><keepLog>false</keepLog><number>277</number><queueId>21</queueId><result>FAILURE</result><timestamp>1769548740550</timestamp><url>https://popicraft.net/jenkins/job/mcMMO/277/</url><builtOn>Builder</builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/main/java/com/gmail/nossr50/listeners/BlockListener.java</affectedPath><affectedPath>Changelog.txt</affectedPath><commitId>080d407c142595941aed4f6d76b864e4a968b6be</commitId><timestamp>1769547830000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>another fix for compatibility with Excellent Enchants
</comment><date>2026-01-27 13:03:50 -0800</date><id>080d407c142595941aed4f6d76b864e4a968b6be</id><msg>another fix for compatibility with Excellent Enchants</msg><path><editType>edit</editType><file>Changelog.txt</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/listeners/BlockListener.java</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></culprit><culprit><absoluteUrl>https://popicraft.net/jenkins/user/github</absoluteUrl><fullName>github</fullName></culprit></build><build _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>276</buildNumber><marked><SHA1>8f8d7756ca12a2470f407457f9dd5735c6f44e4f</SHA1><branch><SHA1>8f8d7756ca12a2470f407457f9dd5735c6f44e4f</SHA1><name>refs/remotes/origin/master</name></branch></marked><revision><SHA1>8f8d7756ca12a2470f407457f9dd5735c6f44e4f</SHA1><branch><SHA1>8f8d7756ca12a2470f407457f9dd5735c6f44e4f</SHA1><name>refs/remotes/origin/master</name></branch></revision></refsremotesoriginmaster></buildsByBranchName><lastBuiltRevision><SHA1>8f8d7756ca12a2470f407457f9dd5735c6f44e4f</SHA1><branch><SHA1>8f8d7756ca12a2470f407457f9dd5735c6f44e4f</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>#276</displayName><duration>39069</duration><estimatedDuration>66335</estimatedDuration><fullDisplayName>mcMMO #276</fullDisplayName><id>276</id><inProgress>false</inProgress><keepLog>false</keepLog><number>276</number><queueId>19</queueId><result>FAILURE</result><timestamp>1769456941916</timestamp><url>https://popicraft.net/jenkins/job/mcMMO/276/</url><builtOn>Builder</builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>pom.xml</affectedPath><commitId>8f8d7756ca12a2470f407457f9dd5735c6f44e4f</commitId><timestamp>1769456383000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>back to dev versions
</comment><date>2026-01-26 11:39:43 -0800</date><id>8f8d7756ca12a2470f407457f9dd5735c6f44e4f</id><msg>back to dev versions</msg><path><editType>edit</editType><file>pom.xml</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></culprit><culprit><absoluteUrl>https://popicraft.net/jenkins/user/github</absoluteUrl><fullName>github</fullName></culprit></build><build _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>275</buildNumber><marked><SHA1>e24b5b0b757e9d673c51aac0cff7849ab551e969</SHA1><branch><SHA1>e24b5b0b757e9d673c51aac0cff7849ab551e969</SHA1><name>refs/remotes/origin/master</name></branch></marked><revision><SHA1>e24b5b0b757e9d673c51aac0cff7849ab551e969</SHA1><branch><SHA1>e24b5b0b757e9d673c51aac0cff7849ab551e969</SHA1><name>refs/remotes/origin/master</name></branch></revision></refsremotesoriginmaster></buildsByBranchName><lastBuiltRevision><SHA1>e24b5b0b757e9d673c51aac0cff7849ab551e969</SHA1><branch><SHA1>e24b5b0b757e9d673c51aac0cff7849ab551e969</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>#275</displayName><duration>53264</duration><estimatedDuration>66335</estimatedDuration><fullDisplayName>mcMMO #275</fullDisplayName><id>275</id><inProgress>false</inProgress><keepLog>false</keepLog><number>275</number><queueId>18</queueId><result>FAILURE</result><timestamp>1769456041820</timestamp><url>https://popicraft.net/jenkins/job/mcMMO/275/</url><builtOn>Builder</builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/main/java/com/gmail/nossr50/listeners/BlockListener.java</affectedPath><affectedPath>Changelog.txt</affectedPath><commitId>8ac3198386a4f5f4ad0ebc809cd0908fa9b437d2</commitId><timestamp>1769455425000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>improved compatibility with Excellent Enchants
</comment><date>2026-01-26 11:23:45 -0800</date><id>8ac3198386a4f5f4ad0ebc809cd0908fa9b437d2</id><msg>improved compatibility with Excellent Enchants</msg><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/listeners/BlockListener.java</file></path><path><editType>edit</editType><file>Changelog.txt</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/main/java/com/gmail/nossr50/listeners/BlockListener.java</affectedPath><affectedPath>pom.xml</affectedPath><affectedPath>Changelog.txt</affectedPath><commitId>e24b5b0b757e9d673c51aac0cff7849ab551e969</commitId><timestamp>1769455991000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>2.2.049
</comment><date>2026-01-26 11:33:11 -0800</date><id>e24b5b0b757e9d673c51aac0cff7849ab551e969</id><msg>2.2.049</msg><path><editType>edit</editType><file>Changelog.txt</file></path><path><editType>edit</editType><file>pom.xml</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/listeners/BlockListener.java</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></culprit><culprit><absoluteUrl>https://popicraft.net/jenkins/user/github</absoluteUrl><fullName>github</fullName></culprit></build><build _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>274</buildNumber><marked><SHA1>4c33f764042124c79bc73413ba981c62afb2e0bd</SHA1><branch><SHA1>4c33f764042124c79bc73413ba981c62afb2e0bd</SHA1><name>refs/remotes/origin/master</name></branch></marked><revision><SHA1>4c33f764042124c79bc73413ba981c62afb2e0bd</SHA1><branch><SHA1>4c33f764042124c79bc73413ba981c62afb2e0bd</SHA1><name>refs/remotes/origin/master</name></branch></revision></refsremotesoriginmaster></buildsByBranchName><lastBuiltRevision><SHA1>4c33f764042124c79bc73413ba981c62afb2e0bd</SHA1><branch><SHA1>4c33f764042124c79bc73413ba981c62afb2e0bd</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>#274</displayName><duration>40070</duration><estimatedDuration>66335</estimatedDuration><fullDisplayName>mcMMO #274</fullDisplayName><id>274</id><inProgress>false</inProgress><keepLog>false</keepLog><number>274</number><queueId>16</queueId><result>FAILURE</result><timestamp>1769373239212</timestamp><url>https://popicraft.net/jenkins/job/mcMMO/274/</url><builtOn>Builder</builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>Changelog.txt</affectedPath><commitId>4c33f764042124c79bc73413ba981c62afb2e0bd</commitId><timestamp>1769372565000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>update changelog
</comment><date>2026-01-25 12:22:45 -0800</date><id>4c33f764042124c79bc73413ba981c62afb2e0bd</id><msg>update changelog</msg><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></culprit><culprit><absoluteUrl>https://popicraft.net/jenkins/user/github</absoluteUrl><fullName>github</fullName></culprit></build><build _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>273</buildNumber><marked><SHA1>77dac78bec137849cfc575d3eb0fedcd502cfe22</SHA1><branch><SHA1>77dac78bec137849cfc575d3eb0fedcd502cfe22</SHA1><name>refs/remotes/origin/master</name></branch></marked><revision><SHA1>77dac78bec137849cfc575d3eb0fedcd502cfe22</SHA1><branch><SHA1>77dac78bec137849cfc575d3eb0fedcd502cfe22</SHA1><name>refs/remotes/origin/master</name></branch></revision></refsremotesoriginmaster></buildsByBranchName><lastBuiltRevision><SHA1>77dac78bec137849cfc575d3eb0fedcd502cfe22</SHA1><branch><SHA1>77dac78bec137849cfc575d3eb0fedcd502cfe22</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>#273</displayName><duration>50347</duration><estimatedDuration>66335</estimatedDuration><fullDisplayName>mcMMO #273</fullDisplayName><id>273</id><inProgress>false</inProgress><keepLog>false</keepLog><number>273</number><queueId>15</queueId><result>FAILURE</result><timestamp>1769369641798</timestamp><url>https://popicraft.net/jenkins/job/mcMMO/273/</url><builtOn>Builder</builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/main/java/com/gmail/nossr50/skills/taming/TamingManager.java</affectedPath><commitId>77dac78bec137849cfc575d3eb0fedcd502cfe22</commitId><timestamp>1769368951000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/github</absoluteUrl><fullName>github</fullName></author><authorEmail>noreply@github.com</authorEmail><comment>Fix leftover sync tp in taming subskill (#5248)

</comment><date>2026-01-25 11:22:31 -0800</date><id>77dac78bec137849cfc575d3eb0fedcd502cfe22</id><msg>Fix leftover sync tp in taming subskill (#5248)</msg><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/skills/taming/TamingManager.java</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></culprit><culprit><absoluteUrl>https://popicraft.net/jenkins/user/github</absoluteUrl><fullName>github</fullName></culprit></build><build _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>272</buildNumber><marked><SHA1>9c9e5313ca9daf5f50fc55c13b43cc852542c794</SHA1><branch><SHA1>9c9e5313ca9daf5f50fc55c13b43cc852542c794</SHA1><name>refs/remotes/origin/master</name></branch></marked><revision><SHA1>9c9e5313ca9daf5f50fc55c13b43cc852542c794</SHA1><branch><SHA1>9c9e5313ca9daf5f50fc55c13b43cc852542c794</SHA1><name>refs/remotes/origin/master</name></branch></revision></refsremotesoriginmaster></buildsByBranchName><lastBuiltRevision><SHA1>9c9e5313ca9daf5f50fc55c13b43cc852542c794</SHA1><branch><SHA1>9c9e5313ca9daf5f50fc55c13b43cc852542c794</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>#272</displayName><duration>41753</duration><estimatedDuration>66335</estimatedDuration><fullDisplayName>mcMMO #272</fullDisplayName><id>272</id><inProgress>false</inProgress><keepLog>false</keepLog><number>272</number><queueId>6</queueId><result>FAILURE</result><timestamp>1768686543736</timestamp><url>https://popicraft.net/jenkins/job/mcMMO/272/</url><builtOn>Builder</builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/main/java/com/gmail/nossr50/listeners/BlockListener.java</affectedPath><affectedPath>Changelog.txt</affectedPath><commitId>9c9e5313ca9daf5f50fc55c13b43cc852542c794</commitId><timestamp>1768685909000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>prevent item stack size from going outside normal bounds
</comment><date>2026-01-17 13:38:29 -0800</date><id>9c9e5313ca9daf5f50fc55c13b43cc852542c794</id><msg>prevent item stack size from going outside normal bounds</msg><path><editType>edit</editType><file>Changelog.txt</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/listeners/BlockListener.java</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></culprit><culprit><absoluteUrl>https://popicraft.net/jenkins/user/github</absoluteUrl><fullName>github</fullName></culprit></build><build _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>271</buildNumber><marked><SHA1>db5654dbe65e0d327103fe1a0137c109c3976e6f</SHA1><branch><SHA1>db5654dbe65e0d327103fe1a0137c109c3976e6f</SHA1><name>refs/remotes/origin/master</name></branch></marked><revision><SHA1>db5654dbe65e0d327103fe1a0137c109c3976e6f</SHA1><branch><SHA1>db5654dbe65e0d327103fe1a0137c109c3976e6f</SHA1><name>refs/remotes/origin/master</name></branch></revision></refsremotesoriginmaster></buildsByBranchName><lastBuiltRevision><SHA1>db5654dbe65e0d327103fe1a0137c109c3976e6f</SHA1><branch><SHA1>db5654dbe65e0d327103fe1a0137c109c3976e6f</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>#271</displayName><duration>42078</duration><estimatedDuration>66335</estimatedDuration><fullDisplayName>mcMMO #271</fullDisplayName><id>271</id><inProgress>false</inProgress><keepLog>false</keepLog><number>271</number><queueId>5</queueId><result>FAILURE</result><timestamp>1768685643637</timestamp><url>https://popicraft.net/jenkins/job/mcMMO/271/</url><builtOn>Builder</builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/main/java/com/gmail/nossr50/datatypes/player/McMMOPlayer.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/listeners/PlayerListener.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/util/skills/CombatUtils.java</affectedPath><affectedPath>Changelog.txt</affectedPath><commitId>5a9390f88f738d9b3fabac2e549638661de8807c</commitId><timestamp>1768685234000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>allow combat abilities to activate with spear in off-hand
</comment><date>2026-01-17 13:27:14 -0800</date><id>5a9390f88f738d9b3fabac2e549638661de8807c</id><msg>allow combat abilities to activate with spear in off-hand</msg><path><editType>edit</editType><file>Changelog.txt</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/listeners/PlayerListener.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/datatypes/player/McMMOPlayer.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/util/skills/CombatUtils.java</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>Changelog.txt</affectedPath><commitId>c14b82fff179af4a4a8feb33afdbbe54f7ac8533</commitId><timestamp>1768685465000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>updated notes
</comment><date>2026-01-17 13:31:05 -0800</date><id>c14b82fff179af4a4a8feb33afdbbe54f7ac8533</id><msg>updated notes</msg><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></culprit><culprit><absoluteUrl>https://popicraft.net/jenkins/user/github</absoluteUrl><fullName>github</fullName></culprit></build><build _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>270</buildNumber><marked><SHA1>4a890a28a16a72cb7cc3e2c1f0a5f6187c5d1c7f</SHA1><branch><SHA1>4a890a28a16a72cb7cc3e2c1f0a5f6187c5d1c7f</SHA1><name>refs/remotes/origin/master</name></branch></marked><revision><SHA1>4a890a28a16a72cb7cc3e2c1f0a5f6187c5d1c7f</SHA1><branch><SHA1>4a890a28a16a72cb7cc3e2c1f0a5f6187c5d1c7f</SHA1><name>refs/remotes/origin/master</name></branch></revision></refsremotesoriginmaster></buildsByBranchName><lastBuiltRevision><SHA1>4a890a28a16a72cb7cc3e2c1f0a5f6187c5d1c7f</SHA1><branch><SHA1>4a890a28a16a72cb7cc3e2c1f0a5f6187c5d1c7f</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>#270</displayName><duration>42784</duration><estimatedDuration>66335</estimatedDuration><fullDisplayName>mcMMO #270</fullDisplayName><id>270</id><inProgress>false</inProgress><keepLog>false</keepLog><number>270</number><queueId>4</queueId><result>FAILURE</result><timestamp>1768683843444</timestamp><url>https://popicraft.net/jenkins/job/mcMMO/270/</url><builtOn>Builder</builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/main/java/com/gmail/nossr50/skills/herbalism/HerbalismManager.java</affectedPath><affectedPath>src/main/resources/config.yml</affectedPath><commitId>4a890a28a16a72cb7cc3e2c1f0a5f6187c5d1c7f</commitId><timestamp>1768683099000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/github</absoluteUrl><fullName>github</fullName></author><authorEmail>noreply@github.com</authorEmail><comment>Add support for sweet berry bush harvesting and replanting (#5238)

* Add support for sweet berry bush harvesting and replanting

* Accidentally left my test code for torchflower replanting.
</comment><date>2026-01-17 12:51:39 -0800</date><id>4a890a28a16a72cb7cc3e2c1f0a5f6187c5d1c7f</id><msg>Add support for sweet berry bush harvesting and replanting (#5238)</msg><path><editType>edit</editType><file>src/main/resources/config.yml</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/skills/herbalism/HerbalismManager.java</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></culprit><culprit><absoluteUrl>https://popicraft.net/jenkins/user/github</absoluteUrl><fullName>github</fullName></culprit></build><build _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>269</buildNumber><marked><SHA1>8b7cffbe4914c354b25b8108d048f887d2a9397c</SHA1><branch><SHA1>8b7cffbe4914c354b25b8108d048f887d2a9397c</SHA1><name>refs/remotes/origin/master</name></branch></marked><revision><SHA1>8b7cffbe4914c354b25b8108d048f887d2a9397c</SHA1><branch><SHA1>8b7cffbe4914c354b25b8108d048f887d2a9397c</SHA1><name>refs/remotes/origin/master</name></branch></revision></refsremotesoriginmaster></buildsByBranchName><lastBuiltRevision><SHA1>8b7cffbe4914c354b25b8108d048f887d2a9397c</SHA1><branch><SHA1>8b7cffbe4914c354b25b8108d048f887d2a9397c</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>#269</displayName><duration>117319</duration><estimatedDuration>66335</estimatedDuration><fullDisplayName>mcMMO #269</fullDisplayName><id>269</id><inProgress>false</inProgress><keepLog>false</keepLog><number>269</number><queueId>3</queueId><result>FAILURE</result><timestamp>1768682943345</timestamp><url>https://popicraft.net/jenkins/job/mcMMO/269/</url><builtOn>Builder</builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>pom.xml</affectedPath><commitId>8b7cffbe4914c354b25b8108d048f887d2a9397c</commitId><timestamp>1768682308000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/github</absoluteUrl><fullName>github</fullName></author><authorEmail>noreply@github.com</authorEmail><comment>Bump mockito version to fix compiling on java 25 (#5247)

</comment><date>2026-01-17 12:38:28 -0800</date><id>8b7cffbe4914c354b25b8108d048f887d2a9397c</id><msg>Bump mockito version to fix compiling on java 25 (#5247)</msg><path><editType>edit</editType><file>pom.xml</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></culprit><culprit><absoluteUrl>https://popicraft.net/jenkins/user/github</absoluteUrl><fullName>github</fullName></culprit></build><build _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>268</buildNumber><marked><SHA1>921fa713b86d3147fdd88d91d29068e5d01a4f25</SHA1><branch><SHA1>921fa713b86d3147fdd88d91d29068e5d01a4f25</SHA1><name>refs/remotes/origin/master</name></branch></marked><revision><SHA1>921fa713b86d3147fdd88d91d29068e5d01a4f25</SHA1><branch><SHA1>921fa713b86d3147fdd88d91d29068e5d01a4f25</SHA1><name>refs/remotes/origin/master</name></branch></revision></refsremotesoriginmaster></buildsByBranchName><lastBuiltRevision><SHA1>921fa713b86d3147fdd88d91d29068e5d01a4f25</SHA1><branch><SHA1>921fa713b86d3147fdd88d91d29068e5d01a4f25</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>#268</displayName><duration>47644</duration><estimatedDuration>66335</estimatedDuration><fullDisplayName>mcMMO #268</fullDisplayName><id>268</id><inProgress>false</inProgress><keepLog>false</keepLog><number>268</number><queueId>9</queueId><result>FAILURE</result><timestamp>1767134914087</timestamp><url>https://popicraft.net/jenkins/job/mcMMO/268/</url><builtOn>Builder</builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/main/resources/experience.yml</affectedPath><commitId>ebe49154b4c5cc70418e451c92f481a1b65dd548</commitId><timestamp>1767134815000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/github</absoluteUrl><fullName>github</fullName></author><authorEmail>noreply@github.com</authorEmail><comment>Fix copper XP in experience.yml (#5242)

This should fix that Copper does not gives xp.
</comment><date>2025-12-30 14:46:55 -0800</date><id>ebe49154b4c5cc70418e451c92f481a1b65dd548</id><msg>Fix copper XP in experience.yml (#5242)</msg><path><editType>edit</editType><file>src/main/resources/experience.yml</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>pom.xml</affectedPath><commitId>921fa713b86d3147fdd88d91d29068e5d01a4f25</commitId><timestamp>1767134845000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>back to dev builds
</comment><date>2025-12-30 14:47:25 -0800</date><id>921fa713b86d3147fdd88d91d29068e5d01a4f25</id><msg>back to dev builds</msg><path><editType>edit</editType><file>pom.xml</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></culprit><culprit><absoluteUrl>https://popicraft.net/jenkins/user/github</absoluteUrl><fullName>github</fullName></culprit></build><build _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>267</buildNumber><marked><SHA1>1036aabc326f9bcdea8dd1b8ba97594b0b828f90</SHA1><branch><SHA1>1036aabc326f9bcdea8dd1b8ba97594b0b828f90</SHA1><name>refs/remotes/origin/master</name></branch></marked><revision><SHA1>1036aabc326f9bcdea8dd1b8ba97594b0b828f90</SHA1><branch><SHA1>1036aabc326f9bcdea8dd1b8ba97594b0b828f90</SHA1><name>refs/remotes/origin/master</name></branch></revision></refsremotesoriginmaster></buildsByBranchName><lastBuiltRevision><SHA1>1036aabc326f9bcdea8dd1b8ba97594b0b828f90</SHA1><branch><SHA1>1036aabc326f9bcdea8dd1b8ba97594b0b828f90</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>#267</displayName><duration>37201</duration><estimatedDuration>66335</estimatedDuration><fullDisplayName>mcMMO #267</fullDisplayName><id>267</id><inProgress>false</inProgress><keepLog>false</keepLog><number>267</number><queueId>23</queueId><result>FAILURE</result><timestamp>1765759712431</timestamp><url>https://popicraft.net/jenkins/job/mcMMO/267/</url><builtOn>Builder</builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><kind>git</kind></changeSet><culprit><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></culprit><culprit><absoluteUrl>https://popicraft.net/jenkins/user/github</absoluteUrl><fullName>github</fullName></culprit></build><build _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>266</buildNumber><marked><SHA1>b0622dcdf2b2ca1694afd5c960be9aecd1387cf3</SHA1><branch><SHA1>b0622dcdf2b2ca1694afd5c960be9aecd1387cf3</SHA1><name>refs/remotes/origin/master</name></branch></marked><revision><SHA1>b0622dcdf2b2ca1694afd5c960be9aecd1387cf3</SHA1><branch><SHA1>b0622dcdf2b2ca1694afd5c960be9aecd1387cf3</SHA1><name>refs/remotes/origin/master</name></branch></revision></refsremotesoriginmaster></buildsByBranchName><lastBuiltRevision><SHA1>b0622dcdf2b2ca1694afd5c960be9aecd1387cf3</SHA1><branch><SHA1>b0622dcdf2b2ca1694afd5c960be9aecd1387cf3</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>#266</displayName><duration>54633</duration><estimatedDuration>66335</estimatedDuration><fullDisplayName>mcMMO #266</fullDisplayName><id>266</id><inProgress>false</inProgress><keepLog>false</keepLog><number>266</number><queueId>22</queueId><result>FAILURE</result><timestamp>1765758812988</timestamp><url>https://popicraft.net/jenkins/job/mcMMO/266/</url><builtOn>Builder</builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>pom.xml</affectedPath><affectedPath>Changelog.txt</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/datatypes/player/McMMOPlayer.java</affectedPath><commitId>b0622dcdf2b2ca1694afd5c960be9aecd1387cf3</commitId><timestamp>1765758471000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>2.2.048 hotfix for spear manager exception Fixes #5237
</comment><date>2025-12-14 16:27:51 -0800</date><id>b0622dcdf2b2ca1694afd5c960be9aecd1387cf3</id><msg>2.2.048 hotfix for spear manager exception Fixes #5237</msg><path><editType>edit</editType><file>Changelog.txt</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/datatypes/player/McMMOPlayer.java</file></path><path><editType>edit</editType><file>pom.xml</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></culprit><culprit><absoluteUrl>https://popicraft.net/jenkins/user/github</absoluteUrl><fullName>github</fullName></culprit></build><build _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>265</buildNumber><marked><SHA1>e2f18a9e8962508ed974b3ebcc4fc2c6435a2f2d</SHA1><branch><SHA1>e2f18a9e8962508ed974b3ebcc4fc2c6435a2f2d</SHA1><name>refs/remotes/origin/master</name></branch></marked><revision><SHA1>e2f18a9e8962508ed974b3ebcc4fc2c6435a2f2d</SHA1><branch><SHA1>e2f18a9e8962508ed974b3ebcc4fc2c6435a2f2d</SHA1><name>refs/remotes/origin/master</name></branch></revision></refsremotesoriginmaster></buildsByBranchName><lastBuiltRevision><SHA1>e2f18a9e8962508ed974b3ebcc4fc2c6435a2f2d</SHA1><branch><SHA1>e2f18a9e8962508ed974b3ebcc4fc2c6435a2f2d</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>#265</displayName><duration>34493</duration><estimatedDuration>66335</estimatedDuration><fullDisplayName>mcMMO #265</fullDisplayName><id>265</id><inProgress>false</inProgress><keepLog>false</keepLog><number>265</number><queueId>21</queueId><result>FAILURE</result><timestamp>1765752512443</timestamp><url>https://popicraft.net/jenkins/job/mcMMO/265/</url><builtOn>Builder</builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>pom.xml</affectedPath><commitId>cc1a58119288f9519e0c28661b35e700bab302e1</commitId><timestamp>1765751378000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>back to developer snapshots
</comment><date>2025-12-14 14:29:38 -0800</date><id>cc1a58119288f9519e0c28661b35e700bab302e1</id><msg>back to developer snapshots</msg><path><editType>edit</editType><file>pom.xml</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/main/java/com/gmail/nossr50/util/skills/CombatUtils.java</affectedPath><affectedPath>Changelog.txt</affectedPath><commitId>694de2ff5f1274745a73c88193d2590ab5f536a8</commitId><timestamp>1765751801000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>fix overlooked spears interaction with other melee skills
</comment><date>2025-12-14 14:36:41 -0800</date><id>694de2ff5f1274745a73c88193d2590ab5f536a8</id><msg>fix overlooked spears interaction with other melee skills</msg><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/util/skills/CombatUtils.java</file></path><path><editType>edit</editType><file>Changelog.txt</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>pom.xml</affectedPath><affectedPath>Changelog.txt</affectedPath><commitId>e2f18a9e8962508ed974b3ebcc4fc2c6435a2f2d</commitId><timestamp>1765752179000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>2.2.047 hotfix for spears combat offhand oddities
</comment><date>2025-12-14 14:42:59 -0800</date><id>e2f18a9e8962508ed974b3ebcc4fc2c6435a2f2d</id><msg>2.2.047 hotfix for spears combat offhand oddities</msg><path><editType>edit</editType><file>Changelog.txt</file></path><path><editType>edit</editType><file>pom.xml</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></culprit><culprit><absoluteUrl>https://popicraft.net/jenkins/user/github</absoluteUrl><fullName>github</fullName></culprit></build><build _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>264</buildNumber><marked><SHA1>b15365e9788e385af13e3f36d7c3976d90cb9100</SHA1><branch><SHA1>b15365e9788e385af13e3f36d7c3976d90cb9100</SHA1><name>refs/remotes/origin/master</name></branch></marked><revision><SHA1>b15365e9788e385af13e3f36d7c3976d90cb9100</SHA1><branch><SHA1>b15365e9788e385af13e3f36d7c3976d90cb9100</SHA1><name>refs/remotes/origin/master</name></branch></revision></refsremotesoriginmaster></buildsByBranchName><lastBuiltRevision><SHA1>b15365e9788e385af13e3f36d7c3976d90cb9100</SHA1><branch><SHA1>b15365e9788e385af13e3f36d7c3976d90cb9100</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>#264</displayName><duration>84870</duration><estimatedDuration>66335</estimatedDuration><fullDisplayName>mcMMO #264</fullDisplayName><id>264</id><inProgress>false</inProgress><keepLog>false</keepLog><number>264</number><queueId>20</queueId><result>FAILURE</result><timestamp>1765751612467</timestamp><url>https://popicraft.net/jenkins/job/mcMMO/264/</url><builtOn>Builder</builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/main/java/com/gmail/nossr50/commands/skills/WoodcuttingCommand.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/skills/spears/SpearsManager.java</affectedPath><affectedPath>src/test/java/com/gmail/nossr50/util/skills/SkillToolsTest.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/commands/skills/AxesCommand.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/datatypes/player/PlayerProfile.java</affectedPath><affectedPath>src/main/resources/locale/locale_en_US.properties</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/commands/skills/SmeltingCommand.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/util/text/TextComponentFactory.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/commands/skills/SpearsCommand.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/config/GeneralConfig.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/datatypes/database/UpgradeType.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/datatypes/skills/PrimarySkillType.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/datatypes/skills/SubSkillType.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/config/AdvancedConfig.java</affectedPath><affectedPath>src/test/java/com/gmail/nossr50/database/FlatFileDatabaseManagerTest.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/database/FlatFileDataProcessor.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/util/ItemUtils.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/commands/skills/ExcavationCommand.java</affectedPath><affectedPath>src/main/resources/salvage.vanilla.yml</affectedPath><affectedPath>src/test/resources/healthydb.users</affectedPath><affectedPath>Changelog.txt</affectedPath><affectedPath>src/test/java/com/gmail/nossr50/database/SQLDatabaseManagerTest.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/database/flatfile/FlatFileDataUtil.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/util/commands/CommandRegistrationManager.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/listeners/PlayerListener.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/database/DatabaseManagerFactory.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/commands/skills/ArcheryCommand.java</affectedPath><affectedPath>src/main/resources/experience.yml</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/util/skills/SkillTools.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/commands/skills/SwordsCommand.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/util/skills/CombatUtils.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/datatypes/player/McMMOPlayer.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/util/MaterialMapStore.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/database/FlatFileDatabaseManager.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/commands/skills/MacesCommand.java</affectedPath><affectedPath>src/main/resources/plugin.yml</affectedPath><affectedPath>pom.xml</affectedPath><affectedPath>src/main/resources/skillranks.yml</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/commands/skills/AlchemyCommand.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/commands/skills/UnarmedCommand.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/commands/skills/SalvageCommand.java</affectedPath><affectedPath>src/main/resources/config.yml</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/commands/skills/HerbalismCommand.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/commands/skills/TridentsCommand.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/commands/skills/TamingCommand.java</affectedPath><affectedPath>src/main/resources/advanced.yml</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/commands/skills/RepairCommand.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/commands/skills/AcrobaticsCommand.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/commands/skills/CrossbowsCommand.java</affectedPath><affectedPath>src/main/resources/repair.vanilla.yml</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/datatypes/skills/SuperAbilityType.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/commands/skills/FishingCommand.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/database/SQLDatabaseManager.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/commands/skills/MiningCommand.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/util/LogUtils.java</affectedPath><commitId>b15365e9788e385af13e3f36d7c3976d90cb9100</commitId><timestamp>1765751005000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/github</absoluteUrl><fullName>github</fullName></author><authorEmail>noreply@github.com</authorEmail><comment>Spears update (#5236)

Spears update
</comment><date>2025-12-14 14:23:25 -0800</date><id>b15365e9788e385af13e3f36d7c3976d90cb9100</id><msg>Spears update (#5236)</msg><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/commands/skills/UnarmedCommand.java</file></path><path><editType>edit</editType><file>src/test/resources/healthydb.users</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/database/DatabaseManagerFactory.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/util/commands/CommandRegistrationManager.java</file></path><path><editType>add</editType><file>src/main/java/com/gmail/nossr50/skills/spears/SpearsManager.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/commands/skills/SwordsCommand.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/datatypes/skills/SuperAbilityType.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/commands/skills/HerbalismCommand.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/commands/skills/WoodcuttingCommand.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><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/commands/skills/ExcavationCommand.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/util/MaterialMapStore.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/commands/skills/SalvageCommand.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/commands/skills/MiningCommand.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/util/skills/CombatUtils.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/datatypes/database/UpgradeType.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/database/SQLDatabaseManager.java</file></path><path><editType>edit</editType><file>src/main/resources/repair.vanilla.yml</file></path><path><editType>edit</editType><file>src/main/resources/skillranks.yml</file></path><path><editType>edit</editType><file>pom.xml</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/datatypes/player/McMMOPlayer.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/util/ItemUtils.java</file></path><path><editType>add</editType><file>src/test/java/com/gmail/nossr50/util/skills/SkillToolsTest.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/commands/skills/AlchemyCommand.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/database/FlatFileDatabaseManager.java</file></path><path><editType>edit</editType><file>src/main/resources/advanced.yml</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/commands/skills/FishingCommand.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/commands/skills/RepairCommand.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/commands/skills/SmeltingCommand.java</file></path><path><editType>add</editType><file>src/main/java/com/gmail/nossr50/commands/skills/SpearsCommand.java</file></path><path><editType>edit</editType><file>src/test/java/com/gmail/nossr50/database/SQLDatabaseManagerTest.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/config/AdvancedConfig.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/datatypes/player/PlayerProfile.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/commands/skills/ArcheryCommand.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/util/text/TextComponentFactory.java</file></path><path><editType>edit</editType><file>src/main/resources/plugin.yml</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/config/GeneralConfig.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/commands/skills/AcrobaticsCommand.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/database/flatfile/FlatFileDataUtil.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/commands/skills/CrossbowsCommand.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/commands/skills/TamingCommand.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/listeners/PlayerListener.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/util/LogUtils.java</file></path><path><editType>edit</editType><file>src/main/resources/locale/locale_en_US.properties</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/commands/skills/TridentsCommand.java</file></path><path><editType>edit</editType><file>src/main/resources/salvage.vanilla.yml</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/datatypes/skills/PrimarySkillType.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/commands/skills/AxesCommand.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/commands/skills/MacesCommand.java</file></path><path><editType>edit</editType><file>src/main/resources/experience.yml</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/util/skills/SkillTools.java</file></path><path><editType>edit</editType><file>src/main/resources/config.yml</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/database/FlatFileDataProcessor.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/datatypes/skills/SubSkillType.java</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://popicraft.net/jenkins/user/github</absoluteUrl><fullName>github</fullName></culprit></build><build _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>263</buildNumber><marked><SHA1>a907bfd6241dbd30ade5e9dec5de58c8ea19e7a6</SHA1><branch><SHA1>a907bfd6241dbd30ade5e9dec5de58c8ea19e7a6</SHA1><name>refs/remotes/origin/master</name></branch></marked><revision><SHA1>a907bfd6241dbd30ade5e9dec5de58c8ea19e7a6</SHA1><branch><SHA1>a907bfd6241dbd30ade5e9dec5de58c8ea19e7a6</SHA1><name>refs/remotes/origin/master</name></branch></revision></refsremotesoriginmaster></buildsByBranchName><lastBuiltRevision><SHA1>a907bfd6241dbd30ade5e9dec5de58c8ea19e7a6</SHA1><branch><SHA1>a907bfd6241dbd30ade5e9dec5de58c8ea19e7a6</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><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>#263</displayName><duration>43041</duration><estimatedDuration>66335</estimatedDuration><fullDisplayName>mcMMO #263</fullDisplayName><id>263</id><inProgress>false</inProgress><keepLog>false</keepLog><number>263</number><queueId>19</queueId><result>SUCCESS</result><timestamp>1765748012137</timestamp><url>https://popicraft.net/jenkins/job/mcMMO/263/</url><builtOn>Builder</builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>Jenkinsfile</affectedPath><commitId>257292b6cc9ff120779f30bba968943fbbdf62c5</commitId><timestamp>1765747881000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>test number who knows
</comment><date>2025-12-14 13:31:21 -0800</date><id>257292b6cc9ff120779f30bba968943fbbdf62c5</id><msg>test number who knows</msg><path><editType>edit</editType><file>Jenkinsfile</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>Jenkinsfile</affectedPath><commitId>a907bfd6241dbd30ade5e9dec5de58c8ea19e7a6</commitId><timestamp>1765747956000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>oops
</comment><date>2025-12-14 13:32:36 -0800</date><id>a907bfd6241dbd30ade5e9dec5de58c8ea19e7a6</id><msg>oops</msg><path><editType>edit</editType><file>Jenkinsfile</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></culprit></build><build _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>262</buildNumber><marked><SHA1>2f452afdc7ce01f3ddedeecb1a5061985ff2443d</SHA1><branch><SHA1>2f452afdc7ce01f3ddedeecb1a5061985ff2443d</SHA1><name>refs/remotes/origin/master</name></branch></marked><revision><SHA1>2f452afdc7ce01f3ddedeecb1a5061985ff2443d</SHA1><branch><SHA1>2f452afdc7ce01f3ddedeecb1a5061985ff2443d</SHA1><name>refs/remotes/origin/master</name></branch></revision></refsremotesoriginmaster></buildsByBranchName><lastBuiltRevision><SHA1>2f452afdc7ce01f3ddedeecb1a5061985ff2443d</SHA1><branch><SHA1>2f452afdc7ce01f3ddedeecb1a5061985ff2443d</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><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>#262</displayName><duration>50918</duration><estimatedDuration>66335</estimatedDuration><fullDisplayName>mcMMO #262</fullDisplayName><id>262</id><inProgress>false</inProgress><keepLog>false</keepLog><number>262</number><queueId>18</queueId><result>SUCCESS</result><timestamp>1765747112058</timestamp><url>https://popicraft.net/jenkins/job/mcMMO/262/</url><builtOn>Builder</builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>Jenkinsfile</affectedPath><commitId>6b6263d0b352e7757cd4f647ce5d1bbfe03d5dc4</commitId><timestamp>1765746231000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>Add deploy to Nexus stage
</comment><date>2025-12-14 13:03:51 -0800</date><id>6b6263d0b352e7757cd4f647ce5d1bbfe03d5dc4</id><msg>Add deploy to Nexus stage</msg><path><editType>edit</editType><file>Jenkinsfile</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>Jenkinsfile</affectedPath><commitId>fc62946e272dc53dfcf02e2b5bce7777f2cc2d3e</commitId><timestamp>1765746431000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>Try this instead...
</comment><date>2025-12-14 13:07:11 -0800</date><id>fc62946e272dc53dfcf02e2b5bce7777f2cc2d3e</id><msg>Try this instead...</msg><path><editType>edit</editType><file>Jenkinsfile</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>Jenkinsfile</affectedPath><commitId>283c6d97719eee3dcf6bf49e9e5e2babd037e494</commitId><timestamp>1765746521000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>Technically we don't need this
</comment><date>2025-12-14 13:08:41 -0800</date><id>283c6d97719eee3dcf6bf49e9e5e2babd037e494</id><msg>Technically we don't need this</msg><path><editType>edit</editType><file>Jenkinsfile</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>Jenkinsfile</affectedPath><commitId>2f452afdc7ce01f3ddedeecb1a5061985ff2443d</commitId><timestamp>1765747079000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>try this instead part 3
</comment><date>2025-12-14 13:17:59 -0800</date><id>2f452afdc7ce01f3ddedeecb1a5061985ff2443d</id><msg>try this instead part 3</msg><path><editType>edit</editType><file>Jenkinsfile</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></culprit></build><build _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>261</buildNumber><marked><SHA1>f9acdeaf14fb580f20f9bdb32e72f8bbc20a06f5</SHA1><branch><SHA1>f9acdeaf14fb580f20f9bdb32e72f8bbc20a06f5</SHA1><name>refs/remotes/origin/master</name></branch></marked><revision><SHA1>f9acdeaf14fb580f20f9bdb32e72f8bbc20a06f5</SHA1><branch><SHA1>f9acdeaf14fb580f20f9bdb32e72f8bbc20a06f5</SHA1><name>refs/remotes/origin/master</name></branch></revision></refsremotesoriginmaster></buildsByBranchName><lastBuiltRevision><SHA1>f9acdeaf14fb580f20f9bdb32e72f8bbc20a06f5</SHA1><branch><SHA1>f9acdeaf14fb580f20f9bdb32e72f8bbc20a06f5</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><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>#261</displayName><duration>45301</duration><estimatedDuration>66335</estimatedDuration><fullDisplayName>mcMMO #261</fullDisplayName><id>261</id><inProgress>false</inProgress><keepLog>false</keepLog><number>261</number><queueId>16</queueId><result>SUCCESS</result><timestamp>1765672410149</timestamp><url>https://popicraft.net/jenkins/job/mcMMO/261/</url><builtOn>Builder</builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>Jenkinsfile</affectedPath><commitId>03bea40ad4527239bfbac7f6e62f6208032d2303</commitId><timestamp>1765671694000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>fix jenkins script
</comment><date>2025-12-13 16:21:34 -0800</date><id>03bea40ad4527239bfbac7f6e62f6208032d2303</id><msg>fix jenkins script</msg><path><editType>edit</editType><file>Jenkinsfile</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></culprit></build><build _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>260</buildNumber><marked><SHA1>401edf0bc9ecd3fb3f3e99fe1d510764155c6c4b</SHA1><branch><SHA1>401edf0bc9ecd3fb3f3e99fe1d510764155c6c4b</SHA1><name>refs/remotes/origin/master</name></branch></marked><revision><SHA1>401edf0bc9ecd3fb3f3e99fe1d510764155c6c4b</SHA1><branch><SHA1>401edf0bc9ecd3fb3f3e99fe1d510764155c6c4b</SHA1><name>refs/remotes/origin/master</name></branch></revision></refsremotesoriginmaster></buildsByBranchName><lastBuiltRevision><SHA1>401edf0bc9ecd3fb3f3e99fe1d510764155c6c4b</SHA1><branch><SHA1>401edf0bc9ecd3fb3f3e99fe1d510764155c6c4b</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><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>#260</displayName><duration>43118</duration><estimatedDuration>66335</estimatedDuration><fullDisplayName>mcMMO #260</fullDisplayName><id>260</id><inProgress>false</inProgress><keepLog>false</keepLog><number>260</number><queueId>15</queueId><result>SUCCESS</result><timestamp>1765671510065</timestamp><url>https://popicraft.net/jenkins/job/mcMMO/260/</url><builtOn>Builder</builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>Jenkinsfile</affectedPath><commitId>085197abc07d65d51d244de03985b73dbe350356</commitId><timestamp>1765670616000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>let's try a Jenkinsfile
</comment><date>2025-12-13 16:03:36 -0800</date><id>085197abc07d65d51d244de03985b73dbe350356</id><msg>let's try a Jenkinsfile</msg><path><editType>add</editType><file>Jenkinsfile</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>Jenkinsfile</affectedPath><commitId>401edf0bc9ecd3fb3f3e99fe1d510764155c6c4b</commitId><timestamp>1765671058000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>no mvn wrapper
</comment><date>2025-12-13 16:10:58 -0800</date><id>401edf0bc9ecd3fb3f3e99fe1d510764155c6c4b</id><msg>no mvn wrapper</msg><path><editType>edit</editType><file>Jenkinsfile</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></culprit></build><build _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>259</buildNumber><marked><SHA1>98eb7063613e4a55810c840da11d5276825a8edd</SHA1><branch><SHA1>98eb7063613e4a55810c840da11d5276825a8edd</SHA1><name>refs/remotes/origin/master</name></branch></marked><revision><SHA1>98eb7063613e4a55810c840da11d5276825a8edd</SHA1><branch><SHA1>98eb7063613e4a55810c840da11d5276825a8edd</SHA1><name>refs/remotes/origin/master</name></branch></revision></refsremotesoriginmaster></buildsByBranchName><lastBuiltRevision><SHA1>98eb7063613e4a55810c840da11d5276825a8edd</SHA1><branch><SHA1>98eb7063613e4a55810c840da11d5276825a8edd</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><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>#259</displayName><duration>53834</duration><estimatedDuration>66335</estimatedDuration><fullDisplayName>mcMMO #259</fullDisplayName><id>259</id><inProgress>false</inProgress><keepLog>false</keepLog><number>259</number><queueId>14</queueId><result>SUCCESS</result><timestamp>1765670612736</timestamp><url>https://popicraft.net/jenkins/job/mcMMO/259/</url><builtOn>Builder</builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>README.md</affectedPath><commitId>98eb7063613e4a55810c840da11d5276825a8edd</commitId><timestamp>1765670249000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>test
</comment><date>2025-12-13 15:57:29 -0800</date><id>98eb7063613e4a55810c840da11d5276825a8edd</id><msg>test</msg><path><editType>edit</editType><file>README.md</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></culprit></build><build _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>258</buildNumber><marked><SHA1>09dfe4fd11998a6759a7ccf5a10256294348614b</SHA1><branch><SHA1>09dfe4fd11998a6759a7ccf5a10256294348614b</SHA1><name>refs/remotes/origin/master</name></branch></marked><revision><SHA1>09dfe4fd11998a6759a7ccf5a10256294348614b</SHA1><branch><SHA1>09dfe4fd11998a6759a7ccf5a10256294348614b</SHA1><name>refs/remotes/origin/master</name></branch></revision></refsremotesoriginmaster></buildsByBranchName><lastBuiltRevision><SHA1>09dfe4fd11998a6759a7ccf5a10256294348614b</SHA1><branch><SHA1>09dfe4fd11998a6759a7ccf5a10256294348614b</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><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>#258</displayName><duration>53810</duration><estimatedDuration>66335</estimatedDuration><fullDisplayName>mcMMO #258</fullDisplayName><id>258</id><inProgress>false</inProgress><keepLog>false</keepLog><number>258</number><queueId>13</queueId><result>SUCCESS</result><timestamp>1765656212256</timestamp><url>https://popicraft.net/jenkins/job/mcMMO/258/</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/api/AbilityAPI.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/util/text/TextUtils.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/skills/acrobatics/AcrobaticsManager.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/skills/fishing/FishingManager.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/skills/SkillManager.java</affectedPath><affectedPath>pom.xml</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/datatypes/experience/XPGainSource.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/skills/mining/MiningManager.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/skills/repair/RepairManager.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/runnables/skills/AbilityDisableTask.java</affectedPath><commitId>1b49eb11b81507633fdf6e3e23106d8b67424b12</commitId><timestamp>1762713281000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>Spring-cleaning round 1: remove some more deprecated API invocations
</comment><date>2025-11-09 10:34:41 -0800</date><id>1b49eb11b81507633fdf6e3e23106d8b67424b12</id><msg>Spring-cleaning round 1: remove some more deprecated API invocations</msg><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/repair/RepairManager.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/skills/fishing/FishingManager.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/skills/acrobatics/AcrobaticsManager.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/runnables/skills/AbilityDisableTask.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/datatypes/experience/XPGainSource.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/skills/SkillManager.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/util/text/TextUtils.java</file></path><path><editType>edit</editType><file>pom.xml</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/api/AbilityAPI.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/skills/mining/MiningManager.java</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></culprit></build><build _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>257</buildNumber><marked><SHA1>ced4ed2fd017f16273fcbf741128ce873dd712a6</SHA1><branch><SHA1>ced4ed2fd017f16273fcbf741128ce873dd712a6</SHA1><name>refs/remotes/origin/master</name></branch></marked><revision><SHA1>ced4ed2fd017f16273fcbf741128ce873dd712a6</SHA1><branch><SHA1>ced4ed2fd017f16273fcbf741128ce873dd712a6</SHA1><name>refs/remotes/origin/master</name></branch></revision></refsremotesoriginmaster></buildsByBranchName><lastBuiltRevision><SHA1>ced4ed2fd017f16273fcbf741128ce873dd712a6</SHA1><branch><SHA1>ced4ed2fd017f16273fcbf741128ce873dd712a6</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><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>#257</displayName><duration>73044</duration><estimatedDuration>66335</estimatedDuration><fullDisplayName>mcMMO #257</fullDisplayName><id>257</id><inProgress>false</inProgress><keepLog>false</keepLog><number>257</number><queueId>7</queueId><result>SUCCESS</result><timestamp>1765226909445</timestamp><url>https://popicraft.net/jenkins/job/mcMMO/257/</url><builtOn>Builder</builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/main/java/com/gmail/nossr50/util/skills/CombatUtils.java</affectedPath><commitId>fae55c1edf2beaf29341d2d94a3c033c3c2a3ad0</commitId><timestamp>1765226049000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/github</absoluteUrl><fullName>github</fullName></author><authorEmail>noreply@github.com</authorEmail><comment>Fix self damage awarding skill xp (#5233)

</comment><date>2025-12-08 12:34:09 -0800</date><id>fae55c1edf2beaf29341d2d94a3c033c3c2a3ad0</id><msg>Fix self damage awarding skill xp (#5233)</msg><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/util/skills/CombatUtils.java</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>pom.xml</affectedPath><commitId>5c283fedb36a4a8d12c3ca100d8cc7c3d7b7d042</commitId><timestamp>1765226093000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/github</absoluteUrl><fullName>github</fullName></author><authorEmail>noreply@github.com</authorEmail><comment>Change Protocollib's repo to use new namespace &amp; group id (#5232)

</comment><date>2025-12-08 12:34:53 -0800</date><id>5c283fedb36a4a8d12c3ca100d8cc7c3d7b7d042</id><msg>Change Protocollib's repo to use new namespace &amp; group id (#5232)</msg><path><editType>edit</editType><file>pom.xml</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/main/java/com/gmail/nossr50/skills/fishing/FishingManager.java</affectedPath><commitId>ced4ed2fd017f16273fcbf741128ce873dd712a6</commitId><timestamp>1765226156000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/github</absoluteUrl><fullName>github</fullName></author><authorEmail>noreply@github.com</authorEmail><comment>[Fix] isMagicHunterEnabled method doesn't considered the MagicHunter's permission (#5231)

</comment><date>2025-12-08 12:35:56 -0800</date><id>ced4ed2fd017f16273fcbf741128ce873dd712a6</id><msg>[Fix] isMagicHunterEnabled method doesn't considered the MagicHunter's permission (#5231)</msg><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/skills/fishing/FishingManager.java</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://popicraft.net/jenkins/user/github</absoluteUrl><fullName>github</fullName></culprit></build><build _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>256</buildNumber><marked><SHA1>d800aa9316cce673c4e9ee6605d311f43ac07094</SHA1><branch><SHA1>d800aa9316cce673c4e9ee6605d311f43ac07094</SHA1><name>refs/remotes/origin/master</name></branch></marked><revision><SHA1>d800aa9316cce673c4e9ee6605d311f43ac07094</SHA1><branch><SHA1>d800aa9316cce673c4e9ee6605d311f43ac07094</SHA1><name>refs/remotes/origin/master</name></branch></revision></refsremotesoriginmaster></buildsByBranchName><lastBuiltRevision><SHA1>d800aa9316cce673c4e9ee6605d311f43ac07094</SHA1><branch><SHA1>d800aa9316cce673c4e9ee6605d311f43ac07094</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><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>#256</displayName><duration>56823</duration><estimatedDuration>66335</estimatedDuration><fullDisplayName>mcMMO #256</fullDisplayName><id>256</id><inProgress>false</inProgress><keepLog>false</keepLog><number>256</number><queueId>26</queueId><result>SUCCESS</result><timestamp>1764539301804</timestamp><url>https://popicraft.net/jenkins/job/mcMMO/256/</url><builtOn>Builder</builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/main/resources/locale/locale_it.properties</affectedPath><commitId>d800aa9316cce673c4e9ee6605d311f43ac07094</commitId><timestamp>1764538669000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/github</absoluteUrl><fullName>github</fullName></author><authorEmail>noreply@github.com</authorEmail><comment>Update Italian Translation (#5230)

</comment><date>2025-11-30 13:37:49 -0800</date><id>d800aa9316cce673c4e9ee6605d311f43ac07094</id><msg>Update Italian Translation (#5230)</msg><path><editType>edit</editType><file>src/main/resources/locale/locale_it.properties</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://popicraft.net/jenkins/user/github</absoluteUrl><fullName>github</fullName></culprit></build><build _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>255</buildNumber><marked><SHA1>3533c50489d0519f76cbcd99764056833c998ea2</SHA1><branch><SHA1>3533c50489d0519f76cbcd99764056833c998ea2</SHA1><name>refs/remotes/origin/master</name></branch></marked><revision><SHA1>3533c50489d0519f76cbcd99764056833c998ea2</SHA1><branch><SHA1>3533c50489d0519f76cbcd99764056833c998ea2</SHA1><name>refs/remotes/origin/master</name></branch></revision></refsremotesoriginmaster></buildsByBranchName><lastBuiltRevision><SHA1>3533c50489d0519f76cbcd99764056833c998ea2</SHA1><branch><SHA1>3533c50489d0519f76cbcd99764056833c998ea2</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><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>#255</displayName><duration>60309</duration><estimatedDuration>66335</estimatedDuration><fullDisplayName>mcMMO #255</fullDisplayName><id>255</id><inProgress>false</inProgress><keepLog>false</keepLog><number>255</number><queueId>8</queueId><result>SUCCESS</result><timestamp>1763028680807</timestamp><url>https://popicraft.net/jenkins/job/mcMMO/255/</url><builtOn>Builder</builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/main/java/com/gmail/nossr50/config/skills/salvage/SalvageConfig.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/util/ItemUtils.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/config/skills/repair/RepairConfig.java</affectedPath><affectedPath>pom.xml</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/datatypes/skills/MaterialType.java</affectedPath><affectedPath>Changelog.txt</affectedPath><commitId>80a61d2d89570766c71a33088cd2f608a4fa224d</commitId><timestamp>1762115125000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>2.2.044 Fix copper repair and salvage
</comment><date>2025-11-02 12:25:25 -0800</date><id>80a61d2d89570766c71a33088cd2f608a4fa224d</id><msg>2.2.044 Fix copper repair and salvage</msg><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/util/ItemUtils.java</file></path><path><editType>edit</editType><file>Changelog.txt</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/config/skills/repair/RepairConfig.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/config/skills/salvage/SalvageConfig.java</file></path><path><editType>edit</editType><file>pom.xml</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/datatypes/skills/MaterialType.java</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>pom.xml</affectedPath><commitId>ec6dce0cb2efd404dd992b18aaafe916764d35b2</commitId><timestamp>1762115455000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>back to snapshots
</comment><date>2025-11-02 12:30:55 -0800</date><id>ec6dce0cb2efd404dd992b18aaafe916764d35b2</id><msg>back to snapshots</msg><path><editType>edit</editType><file>pom.xml</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/main/java/com/gmail/nossr50/skills/herbalism/HerbalismManager.java</affectedPath><affectedPath>Changelog.txt</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/runnables/skills/DelayedCropReplant.java</affectedPath><commitId>9f5994596a7b0eedba921dab57c7b01705aab114</commitId><timestamp>1762637273000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>Fixed ageable cast class exception Fixes #5224
Fixed Herbalism not replanting certain crops
</comment><date>2025-11-08 13:27:53 -0800</date><id>9f5994596a7b0eedba921dab57c7b01705aab114</id><msg>Fixed ageable cast class exception Fixes #5224</msg><path><editType>edit</editType><file>Changelog.txt</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/skills/herbalism/HerbalismManager.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/runnables/skills/DelayedCropReplant.java</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/main/java/com/gmail/nossr50/config/skills/salvage/SalvageConfig.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/config/skills/salvage/SalvageConfigManager.java</affectedPath><affectedPath>Changelog.txt</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/config/skills/repair/RepairConfigManager.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/config/BukkitConfig.java</affectedPath><commitId>c96cb95443e322b69c51589bd0732c5d5784f2b9</commitId><timestamp>1762638005000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>Fixed bug where salvage and repair configs would re-add any deleted entry that existed in the default config Fixes #5223
</comment><date>2025-11-08 13:40:05 -0800</date><id>c96cb95443e322b69c51589bd0732c5d5784f2b9</id><msg>Fixed bug where salvage and repair configs would re-add any deleted entry that existed in the default config Fixes #5223</msg><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/config/skills/repair/RepairConfigManager.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/config/skills/salvage/SalvageConfigManager.java</file></path><path><editType>edit</editType><file>Changelog.txt</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/config/BukkitConfig.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/config/skills/salvage/SalvageConfig.java</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/main/resources/plugin.yml</affectedPath><affectedPath>Changelog.txt</affectedPath><commitId>1f123a4eb23b1b7892c33eebc80384d339778007</commitId><timestamp>1762638275000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>Add missing permission nodes for copper repair and salvage Fixes #5225
</comment><date>2025-11-08 13:44:35 -0800</date><id>1f123a4eb23b1b7892c33eebc80384d339778007</id><msg>Add missing permission nodes for copper repair and salvage Fixes #5225</msg><path><editType>edit</editType><file>Changelog.txt</file></path><path><editType>edit</editType><file>src/main/resources/plugin.yml</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>pom.xml</affectedPath><affectedPath>Changelog.txt</affectedPath><commitId>59093c5f22718fc1a59c65e26ab9a47d4dd39bae</commitId><timestamp>1762638599000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>2.2.045
</comment><date>2025-11-08 13:49:59 -0800</date><id>59093c5f22718fc1a59c65e26ab9a47d4dd39bae</id><msg>2.2.045</msg><path><editType>edit</editType><file>pom.xml</file></path><path><editType>edit</editType><file>Changelog.txt</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>pom.xml</affectedPath><affectedPath>Changelog.txt</affectedPath><commitId>2a8be52be54e974b14f544e526665a4c9cca0cc3</commitId><timestamp>1762639034000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>back to snapshots
</comment><date>2025-11-08 13:57:14 -0800</date><id>2a8be52be54e974b14f544e526665a4c9cca0cc3</id><msg>back to snapshots</msg><path><editType>edit</editType><file>pom.xml</file></path><path><editType>edit</editType><file>Changelog.txt</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/main/java/com/gmail/nossr50/listeners/PlayerListener.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/runnables/player/PlayerUpdateInventoryTask.java</affectedPath><affectedPath>src/test/java/com/gmail/nossr50/events/items/McMMOModifyBlockDropItemEventTest.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/listeners/InventoryListener.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/party/ShareHandler.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/runnables/skills/AlchemyBrewTask.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/skills/fishing/FishingManager.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/skills/unarmed/Unarmed.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/skills/unarmed/UnarmedManager.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/skills/herbalism/HerbalismManager.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/skills/alchemy/AlchemyPotionBrewer.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/skills/taming/TamingManager.java</affectedPath><commitId>3533c50489d0519f76cbcd99764056833c998ea2</commitId><timestamp>1762711048000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>Spring-cleaning round 1: remove deprecated Player.updateInventory
</comment><date>2025-11-09 09:57:28 -0800</date><id>3533c50489d0519f76cbcd99764056833c998ea2</id><msg>Spring-cleaning round 1: remove deprecated Player.updateInventory</msg><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/party/ShareHandler.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/skills/herbalism/HerbalismManager.java</file></path><path><editType>delete</editType><file>src/main/java/com/gmail/nossr50/runnables/player/PlayerUpdateInventoryTask.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/listeners/InventoryListener.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/listeners/PlayerListener.java</file></path><path><editType>edit</editType><file>src/test/java/com/gmail/nossr50/events/items/McMMOModifyBlockDropItemEventTest.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/runnables/skills/AlchemyBrewTask.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/skills/unarmed/UnarmedManager.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/skills/fishing/FishingManager.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/skills/taming/TamingManager.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/skills/alchemy/AlchemyPotionBrewer.java</file></path><path><editType>delete</editType><file>src/main/java/com/gmail/nossr50/skills/unarmed/Unarmed.java</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></culprit></build><build _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>254</buildNumber><marked><SHA1>f71fe0de704bf90e20b50d575714f6df737b0d6e</SHA1><branch><SHA1>f71fe0de704bf90e20b50d575714f6df737b0d6e</SHA1><name>refs/remotes/origin/master</name></branch></marked><revision><SHA1>f71fe0de704bf90e20b50d575714f6df737b0d6e</SHA1><branch><SHA1>f71fe0de704bf90e20b50d575714f6df737b0d6e</SHA1><name>refs/remotes/origin/master</name></branch></revision></refsremotesoriginmaster></buildsByBranchName><lastBuiltRevision><SHA1>f71fe0de704bf90e20b50d575714f6df737b0d6e</SHA1><branch><SHA1>f71fe0de704bf90e20b50d575714f6df737b0d6e</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><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>#254</displayName><duration>42853</duration><estimatedDuration>66335</estimatedDuration><fullDisplayName>mcMMO #254</fullDisplayName><id>254</id><inProgress>false</inProgress><keepLog>false</keepLog><number>254</number><queueId>5</queueId><result>SUCCESS</result><timestamp>1759698220493</timestamp><url>https://popicraft.net/jenkins/job/mcMMO/254/</url><builtOn>Builder</builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>pom.xml</affectedPath><affectedPath>Changelog.txt</affectedPath><commitId>f71fe0de704bf90e20b50d575714f6df737b0d6e</commitId><timestamp>1759697704000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>snapshots here we go
</comment><date>2025-10-05 13:55:04 -0700</date><id>f71fe0de704bf90e20b50d575714f6df737b0d6e</id><msg>snapshots here we go</msg><path><editType>edit</editType><file>pom.xml</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></culprit></build><color>blue</color><firstBuild _class='hudson.model.FreeStyleBuild'><action _class='hudson.model.CauseAction'><cause _class='hudson.model.Cause$UserIdCause'><shortDescription>Started by user Logan</shortDescription><userId>popcorn9499</userId><userName>Logan</userName></cause></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><refsremotesoriginmaster _class='hudson.plugins.git.util.Build'><buildNumber>1</buildNumber><marked><SHA1>9ab4584dfe9f0f5cfafcc82bd85d9ba707f9f38f</SHA1><branch><SHA1>9ab4584dfe9f0f5cfafcc82bd85d9ba707f9f38f</SHA1><name>refs/remotes/origin/master</name></branch></marked><revision><SHA1>9ab4584dfe9f0f5cfafcc82bd85d9ba707f9f38f</SHA1><branch><SHA1>9ab4584dfe9f0f5cfafcc82bd85d9ba707f9f38f</SHA1><name>refs/remotes/origin/master</name></branch></revision></refsremotesoriginmaster></buildsByBranchName><lastBuiltRevision><SHA1>9ab4584dfe9f0f5cfafcc82bd85d9ba707f9f38f</SHA1><branch><SHA1>9ab4584dfe9f0f5cfafcc82bd85d9ba707f9f38f</SHA1><name>refs/remotes/origin/master</name></branch></lastBuiltRevision><remoteUrl>https://github.com/mcMMO-Dev/mcMMO.git</remoteUrl><scmName></scmName></action><action _class='hudson.plugins.git.GitTagAction'></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><artifact><displayPath>mcMMO.jar</displayPath><fileName>mcMMO.jar</fileName><relativePath>mcMMO/target/mcMMO.jar</relativePath></artifact><artifact><displayPath>original-mcMMO.jar</displayPath><fileName>original-mcMMO.jar</fileName><relativePath>mcMMO/target/original-mcMMO.jar</relativePath></artifact><building>false</building><displayName>#1</displayName><duration>60537</duration><estimatedDuration>66335</estimatedDuration><fullDisplayName>mcMMO #1</fullDisplayName><id>1</id><inProgress>false</inProgress><keepLog>false</keepLog><number>1</number><queueId>10902</queueId><result>SUCCESS</result><timestamp>1637859208457</timestamp><url>https://popicraft.net/jenkins/job/mcMMO/1/</url><builtOn>Builder</builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><kind>git</kind></changeSet></firstBuild><healthReport><description>Build stability: No recent builds failed.</description><iconClassName>icon-health-80plus</iconClassName><iconUrl>health-80plus.png</iconUrl><score>100</score></healthReport><inQueue>false</inQueue><keepDependencies>false</keepDependencies><lastBuild _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>353</buildNumber><marked><SHA1>ad8444c2f394ee97c510acdfc7b23623885b071c</SHA1><branch><SHA1>ad8444c2f394ee97c510acdfc7b23623885b071c</SHA1><name>refs/remotes/origin/master</name></branch></marked><revision><SHA1>ad8444c2f394ee97c510acdfc7b23623885b071c</SHA1><branch><SHA1>ad8444c2f394ee97c510acdfc7b23623885b071c</SHA1><name>refs/remotes/origin/master</name></branch></revision></refsremotesoriginmaster></buildsByBranchName><lastBuiltRevision><SHA1>ad8444c2f394ee97c510acdfc7b23623885b071c</SHA1><branch><SHA1>ad8444c2f394ee97c510acdfc7b23623885b071c</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><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>#353</displayName><duration>61920</duration><estimatedDuration>66335</estimatedDuration><fullDisplayName>mcMMO #353</fullDisplayName><id>353</id><inProgress>false</inProgress><keepLog>false</keepLog><number>353</number><queueId>246</queueId><result>SUCCESS</result><timestamp>1785454432280</timestamp><url>https://popicraft.net/jenkins/job/mcMMO/353/</url><builtOn>Builder</builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>Changelog.txt</affectedPath><commitId>ad8444c2f394ee97c510acdfc7b23623885b071c</commitId><timestamp>1785453680000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>Update changelog
</comment><date>2026-07-30 16:21:20 -0700</date><id>ad8444c2f394ee97c510acdfc7b23623885b071c</id><msg>Update changelog</msg><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></culprit></lastBuild><lastCompletedBuild _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>353</buildNumber><marked><SHA1>ad8444c2f394ee97c510acdfc7b23623885b071c</SHA1><branch><SHA1>ad8444c2f394ee97c510acdfc7b23623885b071c</SHA1><name>refs/remotes/origin/master</name></branch></marked><revision><SHA1>ad8444c2f394ee97c510acdfc7b23623885b071c</SHA1><branch><SHA1>ad8444c2f394ee97c510acdfc7b23623885b071c</SHA1><name>refs/remotes/origin/master</name></branch></revision></refsremotesoriginmaster></buildsByBranchName><lastBuiltRevision><SHA1>ad8444c2f394ee97c510acdfc7b23623885b071c</SHA1><branch><SHA1>ad8444c2f394ee97c510acdfc7b23623885b071c</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><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>#353</displayName><duration>61920</duration><estimatedDuration>66335</estimatedDuration><fullDisplayName>mcMMO #353</fullDisplayName><id>353</id><inProgress>false</inProgress><keepLog>false</keepLog><number>353</number><queueId>246</queueId><result>SUCCESS</result><timestamp>1785454432280</timestamp><url>https://popicraft.net/jenkins/job/mcMMO/353/</url><builtOn>Builder</builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>Changelog.txt</affectedPath><commitId>ad8444c2f394ee97c510acdfc7b23623885b071c</commitId><timestamp>1785453680000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>Update changelog
</comment><date>2026-07-30 16:21:20 -0700</date><id>ad8444c2f394ee97c510acdfc7b23623885b071c</id><msg>Update changelog</msg><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></culprit></lastCompletedBuild><lastFailedBuild _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>343</buildNumber><marked><SHA1>0d7e08f00bfff4790a205caf1d14eb36286c24c8</SHA1><branch><SHA1>0d7e08f00bfff4790a205caf1d14eb36286c24c8</SHA1><name>refs/remotes/origin/master</name></branch></marked><revision><SHA1>0d7e08f00bfff4790a205caf1d14eb36286c24c8</SHA1><branch><SHA1>0d7e08f00bfff4790a205caf1d14eb36286c24c8</SHA1><name>refs/remotes/origin/master</name></branch></revision></refsremotesoriginmaster></buildsByBranchName><lastBuiltRevision><SHA1>0d7e08f00bfff4790a205caf1d14eb36286c24c8</SHA1><branch><SHA1>0d7e08f00bfff4790a205caf1d14eb36286c24c8</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>#343</displayName><duration>50574</duration><estimatedDuration>66335</estimatedDuration><fullDisplayName>mcMMO #343</fullDisplayName><id>343</id><inProgress>false</inProgress><keepLog>false</keepLog><number>343</number><queueId>216</queueId><result>FAILURE</result><timestamp>1783741749806</timestamp><url>https://popicraft.net/jenkins/job/mcMMO/343/</url><builtOn>Builder</builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/test/java/com/gmail/nossr50/TestRegistryBootstrap.java</affectedPath><commitId>0d7e08f00bfff4790a205caf1d14eb36286c24c8</commitId><timestamp>1783741267000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>Fix registry bootstrap stubbing failing under CI test ordering

The per-type registry mock minted its lookups through a when() stub
registered inside the Bukkit.getRegistry interception, which runs in
the middle of Registry class initialization. Mockito stubbing state
is thread-local and unreliable while an intercepted invocation is
being answered: on the CI runner the stub silently failed to bind,
lookups returned null, and PotionEffectType class init failed with
"No PotionEffectType found for minecraft:speed", poisoning the class
for the JVM and erroring 108 tests. Locally a different test order
made another class perform the first bootstrap, where the nested
stubbing happened to bind.

The minting now lives in the mock's default answer, baked in at
creation with no stubbing machinery involved, and also covers
getOrThrow for newer API versions. Explicit per-key when() stubs from
test bodies still override the default answer.
</comment><date>2026-07-10 20:41:07 -0700</date><id>0d7e08f00bfff4790a205caf1d14eb36286c24c8</id><msg>Fix registry bootstrap stubbing failing under CI test ordering</msg><path><editType>edit</editType><file>src/test/java/com/gmail/nossr50/TestRegistryBootstrap.java</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></culprit></lastFailedBuild><lastStableBuild _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>353</buildNumber><marked><SHA1>ad8444c2f394ee97c510acdfc7b23623885b071c</SHA1><branch><SHA1>ad8444c2f394ee97c510acdfc7b23623885b071c</SHA1><name>refs/remotes/origin/master</name></branch></marked><revision><SHA1>ad8444c2f394ee97c510acdfc7b23623885b071c</SHA1><branch><SHA1>ad8444c2f394ee97c510acdfc7b23623885b071c</SHA1><name>refs/remotes/origin/master</name></branch></revision></refsremotesoriginmaster></buildsByBranchName><lastBuiltRevision><SHA1>ad8444c2f394ee97c510acdfc7b23623885b071c</SHA1><branch><SHA1>ad8444c2f394ee97c510acdfc7b23623885b071c</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><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>#353</displayName><duration>61920</duration><estimatedDuration>66335</estimatedDuration><fullDisplayName>mcMMO #353</fullDisplayName><id>353</id><inProgress>false</inProgress><keepLog>false</keepLog><number>353</number><queueId>246</queueId><result>SUCCESS</result><timestamp>1785454432280</timestamp><url>https://popicraft.net/jenkins/job/mcMMO/353/</url><builtOn>Builder</builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>Changelog.txt</affectedPath><commitId>ad8444c2f394ee97c510acdfc7b23623885b071c</commitId><timestamp>1785453680000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>Update changelog
</comment><date>2026-07-30 16:21:20 -0700</date><id>ad8444c2f394ee97c510acdfc7b23623885b071c</id><msg>Update changelog</msg><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></culprit></lastStableBuild><lastSuccessfulBuild _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>353</buildNumber><marked><SHA1>ad8444c2f394ee97c510acdfc7b23623885b071c</SHA1><branch><SHA1>ad8444c2f394ee97c510acdfc7b23623885b071c</SHA1><name>refs/remotes/origin/master</name></branch></marked><revision><SHA1>ad8444c2f394ee97c510acdfc7b23623885b071c</SHA1><branch><SHA1>ad8444c2f394ee97c510acdfc7b23623885b071c</SHA1><name>refs/remotes/origin/master</name></branch></revision></refsremotesoriginmaster></buildsByBranchName><lastBuiltRevision><SHA1>ad8444c2f394ee97c510acdfc7b23623885b071c</SHA1><branch><SHA1>ad8444c2f394ee97c510acdfc7b23623885b071c</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><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>#353</displayName><duration>61920</duration><estimatedDuration>66335</estimatedDuration><fullDisplayName>mcMMO #353</fullDisplayName><id>353</id><inProgress>false</inProgress><keepLog>false</keepLog><number>353</number><queueId>246</queueId><result>SUCCESS</result><timestamp>1785454432280</timestamp><url>https://popicraft.net/jenkins/job/mcMMO/353/</url><builtOn>Builder</builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>Changelog.txt</affectedPath><commitId>ad8444c2f394ee97c510acdfc7b23623885b071c</commitId><timestamp>1785453680000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>Update changelog
</comment><date>2026-07-30 16:21:20 -0700</date><id>ad8444c2f394ee97c510acdfc7b23623885b071c</id><msg>Update changelog</msg><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></culprit></lastSuccessfulBuild><lastUnsuccessfulBuild _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>343</buildNumber><marked><SHA1>0d7e08f00bfff4790a205caf1d14eb36286c24c8</SHA1><branch><SHA1>0d7e08f00bfff4790a205caf1d14eb36286c24c8</SHA1><name>refs/remotes/origin/master</name></branch></marked><revision><SHA1>0d7e08f00bfff4790a205caf1d14eb36286c24c8</SHA1><branch><SHA1>0d7e08f00bfff4790a205caf1d14eb36286c24c8</SHA1><name>refs/remotes/origin/master</name></branch></revision></refsremotesoriginmaster></buildsByBranchName><lastBuiltRevision><SHA1>0d7e08f00bfff4790a205caf1d14eb36286c24c8</SHA1><branch><SHA1>0d7e08f00bfff4790a205caf1d14eb36286c24c8</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>#343</displayName><duration>50574</duration><estimatedDuration>66335</estimatedDuration><fullDisplayName>mcMMO #343</fullDisplayName><id>343</id><inProgress>false</inProgress><keepLog>false</keepLog><number>343</number><queueId>216</queueId><result>FAILURE</result><timestamp>1783741749806</timestamp><url>https://popicraft.net/jenkins/job/mcMMO/343/</url><builtOn>Builder</builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/test/java/com/gmail/nossr50/TestRegistryBootstrap.java</affectedPath><commitId>0d7e08f00bfff4790a205caf1d14eb36286c24c8</commitId><timestamp>1783741267000</timestamp><author><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></author><authorEmail>nossr50@gmail.com</authorEmail><comment>Fix registry bootstrap stubbing failing under CI test ordering

The per-type registry mock minted its lookups through a when() stub
registered inside the Bukkit.getRegistry interception, which runs in
the middle of Registry class initialization. Mockito stubbing state
is thread-local and unreliable while an intercepted invocation is
being answered: on the CI runner the stub silently failed to bind,
lookups returned null, and PotionEffectType class init failed with
"No PotionEffectType found for minecraft:speed", poisoning the class
for the JVM and erroring 108 tests. Locally a different test order
made another class perform the first bootstrap, where the nested
stubbing happened to bind.

The minting now lives in the mock's default answer, baked in at
creation with no stubbing machinery involved, and also covers
getOrThrow for newer API versions. Explicit per-key when() stubs from
test bodies still override the default answer.
</comment><date>2026-07-10 20:41:07 -0700</date><id>0d7e08f00bfff4790a205caf1d14eb36286c24c8</id><msg>Fix registry bootstrap stubbing failing under CI test ordering</msg><path><editType>edit</editType><file>src/test/java/com/gmail/nossr50/TestRegistryBootstrap.java</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://popicraft.net/jenkins/user/nossr50</absoluteUrl><fullName>nossr50</fullName></culprit></lastUnsuccessfulBuild><nextBuildNumber>354</nextBuildNumber><property _class='com.coravy.hudson.plugins.github.GithubProjectProperty'></property><concurrentBuild>false</concurrentBuild><disabled>false</disabled><scm _class='hudson.plugins.git.GitSCM'><browser _class='hudson.plugins.git.browser.GithubWeb'></browser><type>hudson.plugins.git.GitSCM</type><branche></branche><mergeOptions><fastForwardMode>--ff</fastForwardMode><mergeStrategy>default</mergeStrategy></mergeOptions><userRemoteConfig></userRemoteConfig></scm></freeStyleProject>