<freeStyleBuild _class='hudson.model.FreeStyleBuild'><action _class='hudson.model.CauseAction'><cause _class='hudson.triggers.SCMTrigger$SCMTriggerCause'><shortDescription>Started by an SCM change</shortDescription></cause></action><action></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><refsremotesoriginmaster _class='hudson.plugins.git.util.Build'><buildNumber>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>135282</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/main/java/com/gmail/nossr50/util/blockmeta/BitSetChunkStore.java</file></path><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></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/HashChunkManager.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/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>src/test/java/com/gmail/nossr50/util/random/ProbabilityUtilTest.java</file></path><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></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>src/test/java/com/gmail/nossr50/util/random/ProbabilityUtilTest.java</file></path><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></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>add</editType><file>src/test/java/com/gmail/nossr50/util/EventUtilsTest.java</file></path><path><editType>edit</editType><file>Changelog.txt</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>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>Changelog.txt</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/util/PotionUtil.java</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>add</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><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>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/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>add</editType><file>src/test/java/com/gmail/nossr50/listeners/SelfListenerTest.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/listeners/SelfListener.java</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/main/java/com/gmail/nossr50/listeners/PlayerListener.java</affectedPath><affectedPath>Changelog.txt</affectedPath><affectedPath>src/test/java/com/gmail/nossr50/listeners/PlayerListenerQuitCleanupTest.java</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>Changelog.txt</file></path><path><editType>add</editType><file>src/test/java/com/gmail/nossr50/listeners/PlayerListenerQuitCleanupTest.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>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>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/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>src/test/java/com/gmail/nossr50/util/sounds/SoundManagerTest.java</affectedPath><affectedPath>Changelog.txt</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/util/sounds/SoundType.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>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><path><editType>edit</editType><file>Changelog.txt</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/SoundType.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>Changelog.txt</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/util/platform/MajorMinorPatchVersion.java</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>src/main/java/com/gmail/nossr50/util/commands/CommandUtils.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/MobHealthbarUtilsTest.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/util/MobHealthbarUtils.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>Changelog.txt</file></path><path><editType>edit</editType><file>src/test/java/com/gmail/nossr50/util/MobHealthbarUtilsTest.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/util/MobHealthbarUtils.java</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/main/java/com/gmail/nossr50/util/player/UserManager.java</affectedPath><affectedPath>Changelog.txt</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>src/main/java/com/gmail/nossr50/util/player/UserManager.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/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>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/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>add</editType><file>src/test/java/com/gmail/nossr50/util/LogFilterTest.java</file></path><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></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>src/main/java/com/gmail/nossr50/util/random/ProbabilityUtil.java</file></path><path><editType>edit</editType><file>Changelog.txt</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>Changelog.txt</affectedPath><affectedPath>src/test/java/com/gmail/nossr50/util/skills/RankUtilsTest.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/util/skills/RankUtils.java</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>edit</editType><file>Changelog.txt</file></path><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></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>src/test/java/com/gmail/nossr50/util/PermissionsNodeFormatTest.java</affectedPath><affectedPath>Changelog.txt</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>add</editType><file>src/test/java/com/gmail/nossr50/util/PermissionsNodeFormatTest.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/datatypes/skills/SubSkillType.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/MobMetadataUtils.java</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>Changelog.txt</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/util/MobMetadataUtils.java</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>Changelog.txt</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/config/GeneralConfig.java</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>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/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>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>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>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>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>src/main/java/com/gmail/nossr50/listeners/ChunkListener.java</file></path><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/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/InventoryListener.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><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/skills/CombatUtils.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/player/NotificationManager.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>src/main/java/com/gmail/nossr50/util/ItemUtils.java</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/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/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>Changelog.txt</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/EntityListener.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>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/BitSetChunkStore.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/HashChunkManager.java</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>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><path><editType>edit</editType><file>Changelog.txt</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>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/locale/LocaleLoader.java</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/mcMMO.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/config/AdvancedConfig.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/mcMMO.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>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/config/AdvancedConfig.java</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>edit</editType><file>src/main/java/com/gmail/nossr50/util/nms/NMSVersion.java</file></path><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/scoreboards/ObjectiveType.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/skills/SkillActivationType.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/util/FixSpellingNetheriteUtil.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>src/main/java/com/gmail/nossr50/util/BlockUtils.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/util/ItemUtils.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/util/skills/ParticleEffectUtils.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/util/Misc.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/listeners/PlayerListener.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/ItemUtils.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/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>Changelog.txt</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/BlockUtils.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/skills/PerksUtils.java</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/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/skills/herbalism/HerbalismManager.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/util/EventUtils.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>Changelog.txt</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/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/skills/herbalism/HerbalismManager.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/mining/MiningManager.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/runnables/skills/AbilityDisableTask.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>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>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>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/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>Changelog.txt</file></path><path><editType>add</editType><file>src/test/java/com/gmail/nossr50/util/MaterialMapStoreTest.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>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/test/java/com/gmail/nossr50/util/PotionEffectUtilTest.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/util/PotionEffectUtil.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>delete</editType><file>src/test/java/com/gmail/nossr50/util/PotionEffectUtilTest.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>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/EntityListener.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>src/main/java/com/gmail/nossr50/listeners/BlockListener.java</file></path><path><editType>edit</editType><file>Changelog.txt</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>src/test/java/com/gmail/nossr50/util/skills/CombatUtilsTest.java</affectedPath><affectedPath>Changelog.txt</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/util/skills/CombatUtils.java</file></path><path><editType>edit</editType><file>src/test/java/com/gmail/nossr50/util/skills/CombatUtilsTest.java</file></path><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/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>src/main/java/com/gmail/nossr50/util/EventUtils.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/util/HardcoreManager.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/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>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/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>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>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>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>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>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>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/ScoreboardManager.java</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/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><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></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>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>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>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>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>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><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/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>Changelog.txt</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/config/GeneralConfig.java</file></path><path><editType>edit</editType><file>src/main/resources/config.yml</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/main/java/com/gmail/nossr50/util/blockmeta/McMMOSimpleRegionFile.java</affectedPath><affectedPath>src/test/java/com/gmail/nossr50/util/blockmeta/UserBlockTrackerTest.java</affectedPath><affectedPath>Changelog.txt</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/main/java/com/gmail/nossr50/util/blockmeta/McMMOSimpleRegionFile.java</file></path><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></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>Changelog.txt</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/util/blockmeta/HashChunkManager.java</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/McMMORegionBackupStoreStressTest.java</affectedPath><affectedPath>src/test/java/com/gmail/nossr50/util/blockmeta/McMMORegionBackupStoreTest.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/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><path><editType>edit</editType><file>src/test/java/com/gmail/nossr50/util/blockmeta/McMMORegionBackupStoreTest.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>Changelog.txt</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>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>edit</editType><file>Changelog.txt</file></path><path><editType>add</editType><file>src/test/java/com/gmail/nossr50/util/commands/CommandRegistrationManagerTest.java</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/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/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/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>Changelog.txt</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/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>src/main/java/com/gmail/nossr50/util/skills/SkillTools.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/skills/SkillUtils.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/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/AttributeMapper.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/util/skills/CombatUtils.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/mcMMO.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><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/MetadataConstants.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/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>Changelog.txt</file></path><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/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>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><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>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>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><path><editType>add</editType><file>src/test/java/com/gmail/nossr50/listeners/FriendlyFireTest.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>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>add</editType><file>src/test/java/com/gmail/nossr50/listeners/DietFoodsTest.java</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>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>add</editType><file>src/test/java/com/gmail/nossr50/skills/mining/BlastMiningTest.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>edit</editType><file>src/main/java/com/gmail/nossr50/listeners/SelfListener.java</file></path><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>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>add</editType><file>src/main/java/com/gmail/nossr50/listeners/BonusDrops.java</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></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/main/java/com/gmail/nossr50/listeners/AnvilInteraction.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>add</editType><file>src/test/java/com/gmail/nossr50/listeners/AnvilInteractionTest.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>Changelog.txt</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/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/skills/swords/SwordsManager.java</affectedPath><affectedPath>src/main/java/com/gmail/nossr50/util/PotionUtil.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/skills/SkillTools.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/ItemUtils.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/util/Motd.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/MaterialMapStore.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/NMSConstants.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/util/player/NotificationManager.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/unarmed/UnarmedManager.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/listeners/InteractionManager.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/PerksUtils.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/SkillUtils.java</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/FixSpellingNetheriteUtil.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/EventUtils.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/skills/swords/SwordsManager.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/skills/SkillActivationType.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/nms/NMSVersion.java</file></path><path><editType>edit</editType><file>src/main/java/com/gmail/nossr50/util/random/ProbabilityUtil.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></freeStyleBuild>