passing it as a method reference complete defeats the point of the
method as it desugars to:
option("foo", () ->
{
Runnable unused = Runnables.doNothing();
});
When clicking the compass, the vanilla camera will jitter randomly
within 5 values. With "compassLookPreservePitch" enabled, spam clicking
the compass would cause your camera pitch to rise repeatedly by that
random jitter. This places the camera pitch restore callback after the
random jitter, to eliminate that discrepancy.
Previously this bound first a render buffer and then a texture to the aa fbo color attachment0, making the renderbuffer unused. Just remove the texture, causing the render buffer to be used.
Prior to this commit, ThreeStepCrypticClue simply returned a
concatenation of the active step locations without filtering the mapped
locations in any way. This could lead to NPEs in the plugin as some
cryptic clues have null locations for steps which have no specific
location or have a variable location. This commit addresses this by
making CrypticClue's location field `@Nullable`, filtering null
locations from ThreeStepCrypticClue's getLocations stream, and by adding
a test to ensure ThreeStepCrypticClue's getLocations method cannot yield
any null entries in its return value.
The config service rewrites . -> : and : -> . for storage since mongodb
does not support . in field names. This causes any keys set with : to
get changed after going to the config service and back.
Six hour notification could trigger incorrectly when the plugin was enabled if the player disabled -> logged out -> logged in -> enabled, since the notification timer was not reset.
BorderLayout does not guarantee equal sizing of its children, so having
a component centered between two components of unequal sizes will leave
it centered relative to their sizes, such as the following:
```
|-----BorderLayout-------------------------------------------|
||----WEST----||------CENTER------||----------EAST----------||
||------------||------------------||------------------------||
|------------------------------------------------------------|
```
Conversely, GridLayout uses fixed, equal-width columns for its children,
ensuring the center component will always occupy the center third of the
parent's dimensions.
P.S. This change causes labels to truncate earlier as they do not expand
beyond a third of the parent container's dimensions. Because the use
case for this component is with small labels, I do not anticipate this
will cause breakage.
Public chat is both replayed and also collapsed. Since replayed messages
don't send chat message events, all replayed messages would be filtered
due to the last message id not being updated for any of them. Instead,
set all stored messages ids to -1 on login, since the ids are
invalidated anyway, and then use it to not collapse replayed chat.