Unable to use non-legacy Random Number Generator Algorithms
Open
Nobody has claimed this yet.
status: accepted
type: bug
- Dominant language
- Java
- Stars
- 12.7k
- Forks
- 3.5k
- Avg merge
- 3d 13h
- Merged PRs (30d)
- 11
Description
Expected behavior
- Using an RNG Algorithm like
Xoroshiro128PlusPlusworks fine
RandomGenerator rng = RandomGenerator.of("Xoroshiro128PlusPlus");
Bukkit.getLogger().info("Number: " + rng.nextInt());
Observed/Actual behavior
- Using an RNG Algorithm like
Xoroshiro128PlusPlusdoes not work - Only the Legacy Algorithms like
RandomandSplittableRandomwork
Steps/models to reproduce
- Create Basic Plugin
- Run Server
- See Error
[08:56:32 ERROR]: Error occurred while enabling TestRandom v1.0-SNAPSHOT (Is it up to date?)
java.lang.IllegalArgumentException: No implementation of the random number generator algorithm "Xoroshiro128PlusPlus" is available
at java.util.random.RandomGeneratorFactory.findProvider(RandomGeneratorFactory.java:226) ~[?:?]
at java.util.random.RandomGeneratorFactory.of(RandomGeneratorFactory.java:254) ~[?:?]
at java.util.random.RandomGenerator.of(RandomGenerator.java:123) ~[?:?]
at org.test.testrandom.TestRandomPlugin.onEnable(TestRandomPlugin.java:12) ~[TestRandom-1.0-SNAPSHOT.jar:?]
at org.bukkit.plugin.java.JavaPlugin.setEnabled(JavaPlugin.java:281) ~[paper-api-1.20.4-R0.1-SNAPSHOT.jar:?]
at io.papermc.paper.plugin.manager.PaperPluginInstanceManager.enablePlugin(PaperPluginInstanceManager.java:190) ~[paper-1.20.4.jar:git-Paper-370]
at io.papermc.paper.plugin.manager.PaperPluginManagerImpl.enablePlugin(PaperPluginManagerImpl.java:104) ~[paper-1.20.4.jar:git-Paper-370]
at org.bukkit.plugin.SimplePluginManager.enablePlugin(SimplePluginManager.java:507) ~[paper-api-1.20.4-R0.1-SNAPSHOT.jar:?]
at org.bukkit.craftbukkit.v1_20_R3.CraftServer.enablePlugin(CraftServer.java:637) ~[paper-1.20.4.jar:git-Paper-370]
at org.bukkit.craftbukkit.v1_20_R3.CraftServer.enablePlugins(CraftServer.java:548) ~[paper-1.20.4.jar:git-Paper-370]
at net.minecraft.server.MinecraftServer.loadWorld0(MinecraftServer.java:673) ~[paper-1.20.4.jar:git-Paper-370]
at net.minecraft.server.MinecraftServer.loadLevel(MinecraftServer.java:433) ~[paper-1.20.4.jar:git-Paper-370]
at net.minecraft.server.dedicated.DedicatedServer.initServer(DedicatedServer.java:308) ~[paper-1.20.4.jar:git-Paper-370]
at net.minecraft.server.MinecraftServer.runServer(MinecraftServer.java:1132) ~[paper-1.20.4.jar:git-Paper-370]
at net.minecraft.server.MinecraftServer.lambda$spin$0(MinecraftServer.java:321) ~[paper-1.20.4.jar:git-Paper-370]
at java.lang.Thread.run(Thread.java:840) ~[?:?]
[08:56:32 INFO]: [TestRandom] Disabling TestRandom v1.0-SNAPSHOT
Plugin and Datapack List
- The Test Plugin
Paper version
This server is running Paper version git-Paper-370 (MC: 1.20.4) (Implementing API version 1.20.4-R0.1-SNAPSHOT) (Git: 1fa48d1)
Other
- Tested with OpenJDK 21, OpenJDK 17 and Temurin 17 on Arch Linux and Temurin 17 on Windows 11
- Works fine on Fabric and in a Console Program
- https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/random/package-summary.html#algorithms
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start by reproducing the failure with the Java versions and Paper 1.20.4 build listed, then trace plugin startup from TestRandomPlugin.onEnable through JavaPlugin.setEnabled and PaperPluginInstanceManager.enablePlugin. Compare the Paper server behavior with the working Fabric and console cases; done means Xoroshiro128PlusPlus can be obtained and used from a plugin without the reported exception.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- java
- Domain
- backend
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 30/100