Commit Graph

7315 Commits

Author SHA1 Message Date
aaec3dcbfe refactor: replace Rupture's Bukkit metadata with an owned registry (#5332) 2026-08-16 23:28:29 -07:00
ad8444c2f3 Update changelog 2026-07-30 16:21:20 -07:00
68c5908341 Speed up locale color formatting and skill name matching (#5330)
addColors applied 44 regex replaceAll calls per localized string even though every pattern is a literal quote; plain String.replace does the same substitutions without compiling a pattern per call. matchSkill now caches successful name lookups keyed by lowercased input, invalidated via the locale generation counter, so repeated lookups skip the per-skill localized name scans.
2026-07-30 16:17:23 -07:00
25d7c94881 Update changelog 2026-07-23 11:48:49 -07:00
7cf0584dd7 Update changelog 2026-07-23 11:48:40 -07:00
8102f5ad41 Update changelog 2026-07-23 11:48:40 -07:00
c9a608e188 Remove unused Fishing.Exhausting locale entry 2026-07-23 11:48:40 -07:00
17fa9b6ca2 Remove unused Particles settings from config.yml 2026-07-23 11:48:40 -07:00
4d45eedbff Add Player_Tamed XP multiplier to experience.yml 2026-07-23 11:48:40 -07:00
ba323541bf Remove inert Tree Feller ranks and the orphan Fishing Mastery block from skillranks.yml 2026-07-23 11:48:40 -07:00
203613dc6f Remove unused hidden.yml options 2026-07-23 11:48:40 -07:00
900beb21c7 Remove dead Blast Mining settings and deprecate their accessors 2026-07-23 11:48:40 -07:00
2c957d59ba Remove dead Serrated Strikes and Rupture settings from advanced.yml 2026-07-23 11:48:39 -07:00
ef8f57b56e Accept MaterialType in repair and salvage configs and update repair.vanilla.yml 2026-07-23 11:48:39 -07:00
bd6a04d288 Remove sound types that never played 2026-07-23 11:48:39 -07:00
8e8f8cfc1b Fix Rupture never playing its bleed sound 2026-07-23 11:48:39 -07:00
e69de798cb Fix Tridents and Maces Limit Break checking unregistered permission nodes 2026-07-23 11:48:39 -07:00
7f9f7229a1 Fix Graceful Roll using the normal Roll damage threshold 2026-07-23 11:48:39 -07:00
04bd480661 Fix exploited endermen giving full combat XP 2026-07-23 11:48:39 -07:00
5230292a80 Add test coverage for denying per-skill xprate changes without permission 2026-07-23 11:48:39 -07:00
0e5ebe8b72 Fix possible structure grow CME (#5326) 2026-07-23 11:48:35 -07:00
e4631c2d6d Workaround possible race condition in TamingManager (#5327)
* Workaround possible race condition in TamingManager

* Fix tests
2026-07-23 11:45:13 -07:00
1ae0816c9b 2.3.001 snapshot time 2026-07-11 16:31:31 -07:00
2b855372a2 2.3.000 2026-07-11 16:09:33 -07:00
35ec12e447 Update changelog 2026-07-11 15:52:46 -07:00
0c8337ba93 Add PlaceholderAPI placeholders for localized skill names 2026-07-11 15:52:46 -07:00
8fa961000e Remove the Hylian Luck message and dead locale entries from shipped locales 2026-07-11 15:52:46 -07:00
b3e818f78a Show the capitalized Overhaul.Name skill names in player messages
SkillTools.getLocalizedSkillName now reads the Overhaul.Name locale
entries; the all-caps SkillName values move behind the new
SkillTools.getHeaderBannerSkillName, which stylized headers,
scoreboards, and skill command matching keep using.
2026-07-11 15:52:29 -07:00
610445ef99 Resolve PlaceholderAPI placeholders in level up commands 2026-07-11 15:52:11 -07:00
9cae4d9de7 Fix XP command tab completion suggesting skill names for the value argument 2026-07-11 15:52:11 -07:00
d305d5254a Announce region backups before the per-world backup log lines 2026-07-11 15:52:11 -07:00
6ac5834fb7 Tell players which Salvage requirements they are missing at the salvage anvil 2026-07-11 15:51:47 -07:00
615e5c8cae Stream skill rank unlock notifications one at a time per player 2026-07-11 15:51:46 -07:00
f7bad80ff6 Only play the unlock sound once for batched rank unlock notifications
Mass level changes like /mmoedit all queue dozens of staggered unlock
notifications, each of which played the unlock sound. A per player
quiet window anchored on the last notification now lets the first
sound through and keeps the rest of the stream silent; the messages
themselves are unchanged. External callers of the existing
NotificationManager method keep the always-play behavior through a
new overload.
2026-07-11 12:08:05 -07:00
0f931539b3 Add support for running commands when players level up (#4916)
Server owners can configure commands in the new level_up_commands.yml file with skill level or power level triggers, and other plugins can register commands or callbacks through LevelUpCommandAPI.
2026-07-11 00:40:10 -07:00
df4cdce38c 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.
2026-07-11 00:09:49 -07:00
bb6a395fc6 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.
2026-07-11 00:09:20 -07:00
2b85a6fc72 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.
2026-07-10 23:48:01 -07:00
ce2ae27ae1 Deprecate the misspelled PlayerProfile Chimaera Wing cooldown getter
getChimaerWingDATS is missing a letter; getChimaeraWingDATS replaces
it and the old name delegates until removal.
2026-07-10 23:27:29 -07:00
b249b4dfcb 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.
2026-07-10 23:26:53 -07:00
43a5f944b4 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.
2026-07-10 23:25:58 -07:00
cdc0f61d89 Add PlayerProfile coverage for save retries and child-skill data handling 2026-07-10 23:12:34 -07:00
49ff833b9c 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.
2026-07-10 23:09:14 -07:00
e76d62cb5a 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.
2026-07-10 23:07:16 -07:00
7ea3d91ff3 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.
2026-07-10 23:06:08 -07:00
effda0dd6f Add WorldListener coverage for growth eligibility and unload flushes 2026-07-10 22:56:59 -07:00
8fa27d38cc 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.
2026-07-10 22:53:12 -07:00
1cad900859 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).
2026-07-10 22:52:03 -07:00
81f5c55ca0 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.
2026-07-10 22:50:04 -07:00
4d2b088f4a 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.
2026-07-10 22:48:01 -07:00