Skip to content

Changes

Started 8 hr 15 min ago
Took 2 min 50 sec on Builder

Summary

  1. Fix Herbalism double drops not working on beetroots (commit: 5a1a61c) (details)
  2. Fix error when a pet owned by a non-player deals damage (commit: 808bc55) (details)
  3. Fix error when non-players click or drag in furnace and brewing inventories (commit: cc7442b) (details)
  4. Fix localized skill commands rewriting arguments that repeat the skill name (commit: 7f3f5b4) (details)
  5. Fix error when a plugin-fired fish catch carries a non-item entity (commit: 4d2b088) (details)
  6. Fix splash saturation potions losing particle and icon visibility (commit: 81f5c55) (details)
  7. Clean up listener debug reporting and stale comments (commit: 1cad900) (details)
  8. Move buff-stripping inventory handlers off MONITOR priority (commit: 8fa27d3) (details)
  9. Add WorldListener coverage for growth eligibility and unload flushes (commit: effda0d) (details)
  10. Fix error when adding levels to a child skill through the API (commit: 7ea3d91) (details)
  11. Fix error reading XP requirements for offline players with the cumulative curve (commit: e76d62c) (details)
  12. Clean up McMMOPlayer XP gain and logout paths (commit: 49ff833) (details)
  13. Add PlayerProfile coverage for save retries and child-skill data handling (commit: cdc0f61) (details)
  14. Fix error when another plugin reads raw XP for a child skill (commit: 43a5f94) (details)
  15. Fix player data changes made during an in-flight save being lost (commit: b249b4d) (details)
  16. Deprecate the misspelled PlayerProfile Chimaera Wing cooldown getter (commit: ce2ae27) (details)
  17. Stop console spam when other plugins check skill names through the API (commit: 2b85a6f) (details)
  18. Make the -s flag on XP commands silence the sender confirmation too (commit: bb6a395) (details)
  19. Route McMMOPlayer addXp and addLevels through level up processing (commit: df4cdce) (details)
Commit 5a1a61caa94dc9aa4446a955e0e8c904efc1e76a by nossr50
Fix Herbalism double drops not working on beetroots

At BlockDropItemEvent time the broken block already reads as AIR, so
deciding the beetroot drop tolerance from the live block type never
matched BEETROOTS and the two legitimate beetroot drop materials
tripped the tile-entity dupe heuristic. Read the type from the event's
captured pre-break BlockState instead.
(commit: 5a1a61c)
The file was modifiedsrc/main/java/com/gmail/nossr50/listeners/BlockListener.java (diff)
The file was modifiedChangelog.txt (diff)
The file was addedsrc/test/java/com/gmail/nossr50/listeners/BlockListenerBonusDropsTest.java
Commit 808bc5577be1a2c70328742570c7c04c1d9e66c3 by nossr50
Fix error when a pet owned by a non-player deals damage

Tameable owners resolved in the damage handler are AnimalTamers and
not necessarily players; the unchecked OfflinePlayer cast crashed the
handler for plugin-provided owners. The tame handler fixed the same
bug class earlier; this brings the damage path in line.
(commit: 808bc55)
The file was modifiedsrc/test/java/com/gmail/nossr50/listeners/EntityListenerTest.java (diff)
The file was modifiedsrc/main/java/com/gmail/nossr50/listeners/EntityListener.java (diff)
The file was modifiedChangelog.txt (diff)
Commit cc7442bbcc595472e468dbcaf2d6552609fe7302 by nossr50
Fix error when non-players click or drag in furnace and brewing inventories

InventoryClickEvent and InventoryDragEvent report the viewer as a
HumanEntity, and plugins can open container inventories for
human-shaped entities that are not players. The click and drag
handlers cast the viewer to Player unchecked and crashed on such
viewers; they now ignore non-player viewers.
(commit: cc7442b)
The file was modifiedChangelog.txt (diff)
The file was addedsrc/test/java/com/gmail/nossr50/listeners/InventoryListenerClickTest.java
The file was modifiedsrc/main/java/com/gmail/nossr50/listeners/InventoryListener.java (diff)
Commit 7f3f5b41bc61ace7361929bbc338d45d725b8b60 by nossr50
Fix localized skill commands rewriting arguments that repeat the skill name

The alias rewrite replaced every occurrence of the alias text in the
command message, so arguments that repeated the alias (player names,
search terms) were rewritten along with the command token. Only the
leading command token is rewritten now.
(commit: 7f3f5b4)
The file was modifiedChangelog.txt (diff)
The file was modifiedsrc/main/java/com/gmail/nossr50/listeners/PlayerListener.java (diff)
The file was modifiedsrc/test/java/com/gmail/nossr50/listeners/PlayerListenerCommandAliasTest.java (diff)
Commit 4d2b088f4a4efe8316c2d7718378ede358d040e4 by nossr50
Fix error when a plugin-fired fish catch carries a non-item entity

CAUGHT_FISH normally carries an Item, but the event does not enforce
the caught entity's type; the HIGH-priority handler cast it unchecked
and crashed on plugin-fired events with other entity types.
(commit: 4d2b088)
The file was modifiedsrc/test/java/com/gmail/nossr50/listeners/PlayerListenerFishingTest.java (diff)
The file was modifiedChangelog.txt (diff)
The file was modifiedsrc/main/java/com/gmail/nossr50/listeners/PlayerListener.java (diff)
Commit 81f5c55ca02d8c9d3c11bcf6b0f35bd5dea58672 by nossr50
Fix splash saturation potions losing particle and icon visibility

The saturation splash workaround re-added the effect with the short
PotionEffect constructor, which resets particle and icon visibility to
the defaults; custom potions brewed to hide their particles started
showing them after the splash.
(commit: 81f5c55)
The file was modifiedChangelog.txt (diff)
The file was modifiedsrc/main/java/com/gmail/nossr50/listeners/EntityListener.java (diff)
The file was modifiedsrc/test/java/com/gmail/nossr50/listeners/EntityListenerTest.java (diff)
Commit 1cad900859c47d0f8c1522d60f642164dfcfabba by nossr50
Clean up listener debug reporting and stale comments

Extract the duplicated PvP combat debug report in EntityListener into
a shared helper, correct the entity explode handler name, and fix two
comments that no longer matched the code (traveling-block cleanup
timer cadence, piston retract direction).
(commit: 1cad900)
The file was modifiedsrc/main/java/com/gmail/nossr50/listeners/BlockListener.java (diff)
The file was modifiedsrc/main/java/com/gmail/nossr50/listeners/EntityListener.java (diff)
Commit 8fa27d38cc80ca3414915477dcd47e70d5416faf by nossr50
Move buff-stripping inventory handlers off MONITOR priority

The inventory click and open handlers strip ability buffs from item
stacks, which mutates item state; the MONITOR contract forbids that.
They now run at HIGHEST like the other mutating handlers moved during
the listener priority cleanup.
(commit: 8fa27d3)
The file was modifiedChangelog.txt (diff)
The file was modifiedsrc/main/java/com/gmail/nossr50/listeners/InventoryListener.java (diff)
Commit effda0dd6f8025bba8a67cb74fa74723385b090a by nossr50
Add WorldListener coverage for growth eligibility and unload flushes
(commit: effda0d)
The file was addedsrc/test/java/com/gmail/nossr50/listeners/WorldListenerTest.java
Commit 7ea3d91ff368a556f0e05c85db46f3a81157ae70 by nossr50
Fix error when adding levels to a child skill through the API

Child skills have no level entry of their own, so the read-then-modify
in PlayerProfile#addLevels crashed on the missing entry before the
child guard in modifySkill could run. Added levels now split evenly
across the child's parent skills, matching how child skill XP and the
offline ExperienceAPI level variants already behave. The addlevels
command rejects child skills up front, so only API callers were
affected.
(commit: 7ea3d91)
The file was modifiedChangelog.txt (diff)
The file was addedsrc/test/java/com/gmail/nossr50/datatypes/player/PlayerProfileTest.java
The file was modifiedsrc/main/java/com/gmail/nossr50/datatypes/player/PlayerProfile.java (diff)
Commit e76d62cb5a8f78c7c4951f123cb936e03e561d4c by nossr50
Fix error reading XP requirements for offline players with the cumulative curve

With 'Experience_Formula.Cumulative_Curve' enabled, PlayerProfile
resolved the power level through UserManager, which has no entry for
offline-loaded profiles (offline /inspect, ExperienceAPI offline
lookups) and crashed. The profile's own level sum now stands in when
no online player is found; permission-aware filtering is impossible
offline anyway. Also corrects the stale getLastLogin javadoc.
(commit: e76d62c)
The file was modifiedsrc/test/java/com/gmail/nossr50/datatypes/player/PlayerProfileTest.java (diff)
The file was modifiedsrc/main/java/com/gmail/nossr50/datatypes/player/PlayerProfile.java (diff)
The file was modifiedChangelog.txt (diff)
Commit 49ff833b9c475cbd3cd6d8ee6a77ac7cc278648c by nossr50
Clean up McMMOPlayer XP gain and logout paths

Compute the modified XP once in beginUnsharedXpGain instead of running
the permission-heavy perk modifier twice per gain (which also sent the
XP perk debug report to debug-mode players twice), and reuse the local
player reference in logout instead of re-reading a field that is never
null.
(commit: 49ff833)
The file was modifiedsrc/main/java/com/gmail/nossr50/datatypes/player/McMMOPlayer.java (diff)
Commit cdc0f61d89a8338cae8bd7702a03123907a1e239 by nossr50
Add PlayerProfile coverage for save retries and child-skill data handling
(commit: cdc0f61)
The file was modifiedsrc/test/java/com/gmail/nossr50/datatypes/player/PlayerProfileTest.java (diff)
Commit 43a5f944b494fa9f7809b7731ebdd665e53fca9b by nossr50
Fix error when another plugin reads raw XP for a child skill

Child skills store no XP entry of their own, so the raw XP read
crashed on the missing entry. Zero is returned instead, matching
getSkillXpLevel. In-repo callers filter child skills first; only
plugins calling the profile API directly were affected.
(commit: 43a5f94)
The file was modifiedChangelog.txt (diff)
The file was modifiedsrc/test/java/com/gmail/nossr50/datatypes/player/PlayerProfileTest.java (diff)
The file was modifiedsrc/main/java/com/gmail/nossr50/datatypes/player/PlayerProfile.java (diff)
Commit b249b4dfcb9b92074c71d06afc42042402bda0fa by nossr50
Fix player data changes made during an in-flight save being lost

The dirty flag was overwritten unconditionally once the database
returned, so a change that landed while the async save was writing its
copy was marked clean and skipped by later saves until the next
unrelated change. The flag is now cleared before the copy is taken and
only restored on failure, so concurrent changes re-mark the profile
dirty and the next save picks them up. Answers the old TODO about
synchronizing the copy: value races during the copy self-heal through
the dirty flag, so no lock is needed.
(commit: b249b4d)
The file was modifiedChangelog.txt (diff)
The file was modifiedsrc/main/java/com/gmail/nossr50/datatypes/player/PlayerProfile.java (diff)
The file was modifiedsrc/test/java/com/gmail/nossr50/datatypes/player/PlayerProfileTest.java (diff)
Commit ce2ae27ae198588b42ef5f42c5e9fd3b3d96fca4 by nossr50
Deprecate the misspelled PlayerProfile Chimaera Wing cooldown getter

getChimaerWingDATS is missing a letter; getChimaeraWingDATS replaces
it and the old name delegates until removal.
(commit: ce2ae27)
The file was modifiedChangelog.txt (diff)
The file was modifiedsrc/main/java/com/gmail/nossr50/datatypes/player/McMMOPlayer.java (diff)
The file was modifiedsrc/main/java/com/gmail/nossr50/datatypes/player/PlayerProfile.java (diff)
Commit 2b85a6fc726b00f53c0814fa289cdb0707cba6ef by nossr50
Stop console spam when other plugins check skill names through the API

Unmatched skill name lookups logged an 'Invalid mcMMO skill' warning on
every call, so plugins validating names through ExperienceAPI flooded the
console. The message is now debug output shown only with Verbose_Logging.
(commit: 2b85a6f)
The file was modifiedsrc/main/java/com/gmail/nossr50/util/skills/SkillTools.java (diff)
The file was modifiedsrc/test/java/com/gmail/nossr50/util/skills/SkillToolsTest.java (diff)
The file was modifiedChangelog.txt (diff)
Commit bb6a395fc67638db93cffa4b056270eaf7cbcda9 by nossr50
Make the -s flag on XP commands silence the sender confirmation too

/addxp, /addlevels, and /mmoedit echoed 'has been modified' back to the
sender even with -s, flooding the log for plugins that award XP by
dispatching these commands from console.
(commit: bb6a395)
The file was modifiedsrc/main/java/com/gmail/nossr50/commands/experience/ExperienceCommand.java (diff)
The file was addedsrc/test/java/com/gmail/nossr50/commands/experience/AddxpCommandTest.java
The file was modifiedChangelog.txt (diff)
Commit df4cdce38ca8641eb3add62c2ab973f9ad0e253a by nossr50
Route McMMOPlayer addXp and addLevels through level up processing

Both wrote raw values into the profile, so plugins using them left
skills over their XP threshold with no level ups, events, or XP bar
updates. addXp now runs the normal XP gain path with the amount
unmodified, and addLevels fires the level change events like the
addlevels command. Internal callers that revert cancelled events or
apply vampirism gains keep raw writes via the profile.
(commit: df4cdce)
The file was modifiedsrc/main/java/com/gmail/nossr50/util/EventUtils.java (diff)
The file was modifiedChangelog.txt (diff)
The file was modifiedsrc/main/java/com/gmail/nossr50/datatypes/player/McMMOPlayer.java (diff)
The file was addedsrc/test/java/com/gmail/nossr50/datatypes/player/McMMOPlayerAddXpAndLevelsTest.java