and only triggers when the playlist items in question originate from web.
This is why it is bad to have interface implementations throw outside of maybe mock implementations for tests. CreateInstance() is a scourge elsewhere in general, we need way less of it in the codebase (because while convenient, it's also problematic to implement in online contexts, and also expensive because reflection).
Regressed in https://github.com/ppy/osu/pull/28399.
To reproduce, enter a playlist that has an item with a rate-changing mod (rather than create it yourself).
This is happening because
APIRuleset
hasCreateInstance()
unimplemented:https://github.com/ppy/osu/blob/b4cefe0cc2fda0ab4b5af6138ee158bd32262f9a/osu.Game/Online/API/Requests/Responses/APIBeatmap.cs#L159
and only triggers when the playlist items in question originate from web.
This is why it is bad to have interface implementations throw outside of maybe mock implementations for tests.
CreateInstance()
is a scourge elsewhere in general, we need way less of it in the codebase (because while convenient, it's also problematic to implement in online contexts, and also expensive because reflection).