The previous implementation would not cache the result for Materials without a furnace result.
So it would always check all recepies before return null.
We now just populate the whole cache instead of populating each Material<->Result combination one-by-one.
We are already iterating all the recepies anyways and EpicFurnaces should be the only plugin to use this method.
So there's actually not even a memory-consumtion trade-off right now because over time it would be
like this anyway – Just with worse performance
XMaterial throws an Exception if provided with `null` or `""`.
We make sure that an empty Optional is returned instead. Mainly for backwards compatibility reasons.
Similar methods with different names existed before and are used in EpicFarming.
I decided on keeping them in here instead of moving them to the plugin.
I'm creating this release to push the GitHub Actions and Dependabot changes to the main branch.
Dependabot should find at least 2 outdated actions dependencies and create a PR for them.
Please check #47 for a list of *most* changes.
MockBukkit is not able to mock all of Bukkit's API
and broke with a change in PaperMC causing all our
current tests to fail. It is also version dependant.
But with Mockito you have to do everything manually right now.
No helping functionality (like creating a new mock player which automatically
will be returned in `Bukkit#getOnlinePlayers()`)
I took this opportunity to learn a bit about Mocking in Bukkit
and decided on Mockito.
It looks like we could easily write our own MockBukkit
alternative in the future.
I am not really happy how `Mockito#verify` works tho.
I find it annoying not to be able to directly assert
on the calls made to a method.
You have to create an InOrder instance first for the
mock and in the end verify with `Mockito#times(0)`/`Mockito#never()`
and `Mockito#any()` for each argument a method takes, to assert a total of n calls.
The method needs a `RandomSource` instead of a normal Java `Random`.
The method reference has been updated but updating
its usage has been forgotten.
Sadly I do not really know where to properly
get an `RandomSource` instance without instanciating it myself.
This also moves all the dependency declarations of the NMS modules
from the Core-Module to its own NMS-Module.
This module might get merged with the NMS-API module in the future.