From 6fb15ca0c5c48c5d84710faf6be709e61ded44f7 Mon Sep 17 00:00:00 2001 From: Unknown Date: Thu, 30 Jan 2020 13:25:18 -0500 Subject: [PATCH] added random seed check --- .../seedcracker/magic/RandomSeed.java | 24 +++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 src/main/java/kaptainwutax/seedcracker/magic/RandomSeed.java diff --git a/src/main/java/kaptainwutax/seedcracker/magic/RandomSeed.java b/src/main/java/kaptainwutax/seedcracker/magic/RandomSeed.java new file mode 100644 index 0000000..242da76 --- /dev/null +++ b/src/main/java/kaptainwutax/seedcracker/magic/RandomSeed.java @@ -0,0 +1,24 @@ +package kaptainwutax.seedcracker.magic; + +import kaptainwutax.seedcracker.util.Rand; +import kaptainwutax.seedcracker.util.math.LCG; + +public class RandomSeed { + + private static final LCG INVERSE_LCG = Rand.JAVA_LCG.combine(-1); + + /** + * Source: https://twitter.com/Geosquare_/status/1169623192153010176 + * */ + public static boolean isRandomSeed(long worldSeed) { + long upperBits = worldSeed >>> 32; + long lowerBits = worldSeed & MagicMath.MASK_32; + + long a = (24667315 * upperBits + 18218081 * lowerBits + 67552711) >> 32; + long b = (-4824621 * upperBits + 7847617 * lowerBits + 7847617) >> 32; + long seed = INVERSE_LCG.nextSeed(7847617 * a - 18218081 * b); + return new Rand(seed, false).nextLong() == worldSeed; + } + + +}