fnseedc icon indicating copy to clipboard operation
fnseedc copied to clipboard

Collection of resources for Minecraft Seedcracking

ifdef::env-github[] :tip-caption: :bulb: :note-caption: :information_source: :important-caption: :heavy_exclamation_mark: :caution-caption: :fire: :warning-caption: :warning: endif::[] :toc: :toc-placement!:

= Collection of resources for Minecraft Seedcracking Scene


.Table of Contents

toc::[]


=== Write-ups

  • https://docs.google.com/document/d/1stTJAjLmCXtqctdFOpuv4lylegcmfO8mFrptFtwqb78/edit[Solid Talk on reversal of Math.random (in-game, infact) and how it is done , Context: Mess Detection by EarthComputer] ☆☆☆☆☆

  • https://cdn.discordapp.com/attachments/584121781355282454/860046443292262421/Reverse-engineering_Minecraft_RNG_to_get_world_records.pptx[Powerpoint Presentation by jurrejelle on Reverse Engineering Minecraft RNG] ☆☆☆☆☆

  • https://gist.github.com/EDDxample/38a9acddcd29f15af034fd91da93b8fa[On Lattice Basics by EDDxample] ☆☆☆☆☆

  • https://anonymfile.com/R2Dx/maze-3000-writeuppdf.url[MAZE 3000 CTF Write-up which has some relevant info on lcg and a concise example of latticg] || https://github.com/hube12/MAZE_3000[Link to the CTF itself] ☆☆☆☆☆

  • https://gist.github.com/hube12/368e7331e497b17e092e8ca4ba206b3c[Writeup on Java Random LCG in context of Minecraft by Neil (hube12) himself , also goes a bit into seedcracking methodology] ☆☆☆☆☆

  • https://docs.google.com/document/d/17qdpv4aI-cByMk0x3vFiiWvAWddxyTZ3tk-ZEOqw1Is/edit[Mess Detector Article Script - Has a bit of relevant info] ☆☆☆☆☆

  • https://franklinta.com/2014/08/31/predicting-the-next-math-random-in-java/[Predicting Math.Random() case but provides easy to understand info on LCGs in general]

  • https://www.pcg-random.org/predictability.html[On Predictability of LCG's and hints of further advancements on how to handle particular cases]

  • https://crypto.stackexchange.com/questions/2086/predicting-values-from-a-linear-congruential-generator[General talk on LCG state prediction]

  • https://en.wikipedia.org/wiki/Linear_congruential_generator[Generic Wikipedia Article]

  • https://web.archive.org/web/20181222235217/https://tailcall.net/blog/cracking-randomness-lcgs/[Weird Article]

  • https://kaptainwutax.seedfinding.com/docs/[KaptainWutax's docs (Coming Soon™)]

  • https://imgur.com/a/eWn481F[YES]


☆☆☆☆☆ articles are written by known minecraft seedcrackers (EarthComputer, Neil etc) and are in reference to Minecraft


= Videos

.https://github.com/mjtb49[Matthew Bolan]

  • https://www.youtube.com/watch?v=XVrR1WImOh8[Minecraft Seedfinding Ep. 1 - Linear Congruential Generators]
  • https://www.youtube.com/watch?v=mc9w2iD3Gzs[Minecraft Seedfinding Ep. 2 Pt.1 - A General Seedfinding Problem]
  • https://www.youtube.com/watch?v=gsaV9gcLntM[Minecraft Seedfinding Ep. 2 Pt. 2 - Lattices and Linear Programming]
  • https://www.youtube.com/watch?v=8CKh4x4iK38&t=522s[Dungeon Seed Cracking Thing]

.https://github.com/hube12[Neil: Tutorial Series]

  • https://www.youtube.com/watch?v=-EOpr1pJqQc[Episode 0: Setting up your environment]
  • https://www.youtube.com/watch?v=ZlNPYo84Zd0[Episode 1: Making a structure finder]
  • https://www.youtube.com/watch?v=p123ZhSMrwg[Episode 0bis: Libraries explanations]

.https://www.youtube.com/channel/UCYf1CYZAV8zkOBgIPnm_uHg[Jurre Groenendijk]

  • https://www.youtube.com/watch?v=9xFoDOtoeTc[Getting started with Java SeedFinding - Feature Utils]

.https://github.com/hube12[Neil]

  • https://www.youtube.com/watch?v=esbxCDHvjvo[ Seedfinding tutorial part 0: Structures and LCG]
  • https://www.youtube.com/watch?v=OvSUkr6Icfo&t=1006s[ Seedfinding tutorial part 1: Biome Generation and shortcutting]
  • https://www.youtube.com/watch?v=IN8hgb8E_80[ Seedfinding tutorial part 2: Terrain Gen and Noises]
  • https://www.youtube.com/watch?v=EQSzSN-uklY[Seedfinding tutorial part 3: Recursion, Mineshaft, Stronghold and Fortress]
  • https://www.youtube.com/watch?v=sRwz-wEq9YI[Seedfinding tutorial part 4: Latticg]

.https://www.youtube.com/c/LiveOverflow[LiveOverflow]

  • https://youtu.be/gSxcDYCK_lY?t=727[They Cracked My Server!]

.https://www.youtube.com/channel/UCf1D7KpwQVHiXvNeyfkCGqA[crackedmagnet]

  • https://www.youtube.com/watch?v=BFHvvZxZVdE[How I Find Seeds]

.https://www.youtube.com/user/Panda4994[Panda4994]

  • https://www.youtube.com/watch?v=OLS7CCgNcuY[Seeds & Generation: Ways to enter a Seed]

.https://www.youtube.com/channel/UCpl_Hvlao2DOUH2Z6PxhiiA[L64]

  • https://www.youtube.com/watch?v=97OdqeiUfHw[Fast Seed Finding and the SciCraftSeedFinder]

.https://www.youtube.com/channel/UCx9W2ZQpyDnkzxZIRRON-Yg[Steven Schaefer]

  • https://www.youtube.com/watch?v=U8MI2a_BHHo[LLL Algorithm]

.https://www.youtube.com/channel/UCYO_jab_esuFRV4b17AJtAw[3Blue1Brown]

  • https://www.youtube.com/watch?v=kjBOesZCoqc&list=PL0-GT3co4r2y2YErbmuJw2L5tW4Ew2O5B[IMPORTANT: Essence of Linear Algebra series]

.https://www.youtube.com/channel/UC8Wrbf2aJkX63pu2bG5QiFg[Alan Zucconi]

  • https://youtu.be/YyVAaJqYAfE[Minecraft WORLD GENERATION Explained💎⛏️]

= PDF / Articles

== WorldGen Specifics

  • https://gist.github.com/XI64/0480256ed2836e4d301210899551c659[World Generation Overview written by TelepathicGrunt]
  • Vizard Mod in #Tools section
  • https://github.com/hube12/genlayer[Layer Generation python raw code by hube12 ??>]
  • The https://youtu.be/YyVAaJqYAfE[Alan Zucconi video] provides a decent top level overview of the process.
  • https://www.redblobgames.com/maps/terrain-from-noise/[Redblobgames on terrain from noise] and https://towardsdatascience.com/replicating-minecraft-world-generation-in-python-1b491bc9b9a4[Replicating Minecraft World Generation in Python] - While not for minecraft specifically, they do explain a few related concepts very well.

Because of the mojank code quality , there are hardly any relevant articles available for WorldGen, the current best way is to read Minecraft code (considered not read friendly) , if not then the libraries :-> specifically : KaptainWutax's libraries, neil's libraries and cubiomes (In general , code that can mimic world generatiom)

== Modular Arithmetic

  • https://www.math.upenn.edu/~mlazar/math170/notes06-2.pdf[Notes on modular Arithmetic]

  • https://davidaltizio.web.illinois.edu/ModularArithmetic.pdf[More notes ]

  • https://people.cs.clemson.edu/~goddard/texts/discreteMath/C2.pdf[Class Notes on Modular Arithmetic]

  • https://sites.millersville.edu/bikenaga/abstract-algebra-1/modular-arithmetic/modular-arithmetic.pdf[Basics of Modular Arithmetic]

  • https://courses.cs.washington.edu/courses/cse311/15au/documents/ModularEquivalences.pdf[Modular Equivalences]

  • https://crypto.stackexchange.com/questions/47493/how-to-determine-the-multiplicative-inverse-modulo-64-or-other-power-of-two[How to determine the multiplicative inverse modulo 64 (or other power of two)?]

  • NERD : https://wstein.org/ent/ent.pdf[Elementary Number Theory: Primes, Congruences, and Secrets by William Stein]

  • NERD : https://www.math.wustl.edu/~matkerr/NTCbook.pdf[Lecture Notes in Number Theory and Cryptography by Matt Kerr]


The NERD documents are long and are only recommended if you want to start from the basics, especially the William Stein notes are by far better to start with. Pick any one of the top 4 modular arithmetic notes if confused. Then for the follow up read the modular equivalences article.


== Hensel Lifting

  • https://www.khanacademy.org/computing/computer-science/cryptography/modern-crypt/v/discrete-logarithm-problem[Khan Academy video on Discrete Log Problem - Excellent to get a feel of what it is about ; Think of the clock values to be seeds]
  • https://brilliant.org/wiki/hensels-lemma/[THEORY: Hensel's Lemma by brilliant.org]
  • NERD : https://www.csa.iisc.ac.in/~chandan/courses/CNT/notes/lec12.pdf[THEORY: IISC notes - Highly Recommended especially the excercise !]
  • IMPORTANT: https://marc-b-reynolds.github.io/math/2017/09/18/ModInverse.html[computing the multiplicative inverse - Practical stuff however check the below link below for an apt implementation]
  • https://gist.github.com/XI64/ea63f7d7cd8a3a2c9cb4b4c3c3809d8a[Gist on the said computational method presented above and how it is used]
  • https://github.com/mjtb49/LattiCG/blob/5695b82174dc4b22b3ffb216851eae762c2c8289/src/main/java/com/seedfinding/latticg/util/Mth.java#L22[Practical Implementation of the mod inversion demonstrated above]
  • https://github.com/mjtb49/BoundNextIntSkips[Practical application of Discrete Log Problem in context of Minecraft - Matthew Bolan's BoundIntSkips]
  • https://github.com/KaptainWutax/MonkeyBot/blob/be36f0b5f35302fe130b8de285e5fed0401840d2/src/main/java/kaptainwutax/monkey/utility/math/DiscreteLog.java#L56[Cleaner implementation of where the discrete log problem shows up]
  • https://github.com/mjtb49/ChunkRandomReversal/blob/00baa8ab732ded31c462ef120f1868720c9c6332/src/main/java/mjtb49/hashreversals/CarverReverser.java#L12[Hensel Lift in ChunkRandomReversal]
  • https://github.com/hube12/lifting[lifting by hube12 - Decorator Lifting example by Neil(hube12)]
  • https://math.stackexchange.com/questions/2008585/computing-the-distance-between-two-linear-congruential-generator-states/2355634[Distance from zero : Where the discrete log problem shows up!]

[NOTE]

Use cases -> (Discrete log problem : find number of calls between two seeds) AND (Mod Inversion : Find inverses speedily)

== Bit Stuff

  • [IMPORTANT] https://en.wikipedia.org/wiki/Bit_numbering[Generic Wikipedia Page on Bit Numbering]
  • https://stackoverflow.com/questions/141525/what-are-bitwise-shift-bit-shift-operators-and-how-do-they-work[Understanding what >> , >>> and << are , read I and III answer]
  • https://stackoverflow.com/questions/17256644/how-does-the-bitwise-and-work-in-java[How AND works]
  • https://web.cse.ohio-state.edu/~reeves.92/CSE2421au12/SlidesDay18.pdf[General Notes on bit operations]
  • https://en.wikipedia.org/wiki/Bitwise_operation#Mathematical_equivalents[Generic Wiki Page -> Opens at Mathematical Equivalents]
  • https://stackoverflow.com/questions/14279866/what-is-inverse-function-to-xor[Inverse of XORs]
  • https://graphics.stanford.edu/~seander/bithacks.html#RoundUpPowerOf2[Bit Twindling Hacks]
  • https://stackoverflow.com/questions/52222292/concatenate-binary-representation-of-two-ints/52222489[Concatenate binary representation - Shows up in some code pieces, handy to know]

== Matrices

  • http://studybyyourself.com/seminar/linear-algebra/course/?lang=en[Sqaure One Matrices - Recommended though assumes you have seen 3blue1brown series]
  • https://kel.bz/post/lattices/[Lattices in a friendly manner]
  • https://kel.bz/post/lll/[LLL with contrast to Gaussian reduction as well as Extended Euclid's Algorithm and others - also hands on so easy to read]

== RNGs

  • https://www.redhat.com/en/blog/understanding-random-number-generators-and-their-limitations-linux[What are RNGs - RedHat article]
  • https://www.win.tue.nl/~marko/2WB05/lecture5.pdf[TUE Lecture Slides on RNG]
  • https://www.math.arizona.edu/~tgk/mc/book_chap3.pdf[Extra Info on RNGs]

== Relevant Papers

  • https://anonymousfiles.io/DgwwuVyO/[Tables of linear congruential generators of different sizes and good lattice structure by Pierre L’ecuyer]
  • https://www.math.uni-frankfurt.de/~dmst/teaching/WS2014/Vorlesung/Alex.May.pdf[New RSA Vulnerabilities Using Lattice Reduction Methods by Alexander May]
  • http://www.crypto-uni.lu/jscoron/publications/bivariate.pdf[Finding Small Roots of Bivariate Integer Polynomial Equations Revisited by Jean-Se´bastien Coron]
  • https://www2.eecs.berkeley.edu/Pubs/TechRpts/1984/CSD-84-186.pdf[Discrete Logarithms and factoring by Eric Bach]
  • https://www.iacr.org/archive/asiacrypt2011/70730001/70730001.pdf[BKZ 2.0: Better Lattice Security Estimates by Yuanmi Chen and Phong Q. Nguyen]
  • https://www.newton.ac.uk/files/seminar/20140509093009501-202978.pdf[Presentation - The BKZ algorithm by Joop van de Pol]
    • https://hal.archives-ouvertes.fr/hal-02700791/document[Practical seed-recovery for the PCG Pseudo-Random Number Generator] Irrelevant
  • https://d-nb.info/1169615635/34[Lattice Basis Reduction: Improved Practical Algorithms and Solving Subset Sum Problems.by C. P. Schnorr & M. Euchner]
  • https://www.emsec.ruhr-uni-bochum.de/media/crypto/attachments/files/2011/03/DA_Bartkewitz.pdf[Lattice Basis Reduction Algorithms and their Efficient Implementation on Parallel Systems by Timo Bartkewitz]
  • https://www.cecm.sfu.ca/CAG/papers/issac19.pdf[Linear Hensel Lifting for ℤ(x,y) and ℤ(x) with Cubic Cost by Micheal Monagan]

CAUTION: [Credits : https://github.com/mjtb49[Matthew Bolan] and https://github.com/hube12[Neil] on Monkeys Discord]

These are all the papers (except 1) that was referenced ; which is useful and which isn't is upto the reader. These are only mentioned here as quick references if something is needed asap


= Tools

== Structure Tools

  • https://github.com/hube12/vizard[vizard by Neil(hube12) - Tool to visualize structure generation in Minecraft]
  • https://github.com/burgerguy/StructureFinder[Structure Finder - Structure Logger by Burger Guy]

== World Veiwers & Utilities

  • https://github.com/KaptainWutax/MineMap[MineMap by KaptainWutax - amidst but really better ] || https://github.com/hube12/MineMap/releases/latest[Minemap Download]
  • https://github.com/xpple/SeedMapper[SeedMapper by xpple - Do various things with the world seed.]
  • https://github.com/polymetric/MCTerrainRenderer[MCTerrainRenderer by <Polymetric, Neil> - Terrain viewer utility to quickly see seeds and skip for testing]
  • https://github.com/19MisterX98/DiamondSim[DiamondSim by 19MisterX98 - Diamond and Ancient Debris Finder] || https://www.youtube.com/watch?v=O7nQP5VW3RM[Showcase video]
  • https://github.com/Gaider10/CrossroadFinder[CrossroadFinder by Gaider10 - Find crossroad formations on a set seed]

== Seed Crackers

  • https://github.com/jellejurre/GPULootSeedFinder[GPULootSeedFinder by jellejurre - Generate loot seeds on the GPU]
  • https://github.com/WearBlackAllDay/SeedCandy[SeedCandy by WearBlackAllDay - GUI program to crack seeds]
  • https://github.com/Cubitect/cubiomes-viewer[Cubiomes-Viewer by Cubitect - Qt based map viewer and seed finder leveraging on Cubiomes lib]
  • https://github.com/Zodsmar/SeedSearcherStandaloneTool[SeedSearcherStandaloneTool(SASSA) by ZodSmar - All in one utility for general seed searching for specific features]
  • https://github.com/19MisterX98/SeedcrackerX[SeedcrackerX by 19MisterX98 - In-game seed cracking mod for all versions with GUI and other utils] || https://www.youtube.com/watch?v=8ytfZ2MXosY[How to use it] || https://www.youtube.com/watch?v=HKjwgofhKs4[SeedCrackerX's features demo]
  • https://github.com/Gaider10/PigSpawnerFinder[PigSpawnerFinder by Gaider10 - Find seeds with pig spawners]
  • https://github.com/KaptainWutax/SeedCracker[SeedCracker by KaptainWutax - in-game seed cracking mod for 1.16]
  • https://github.com/MCRcortex/TreeCracker[TreeCracker(MSCT) by MCRCortex - Seed Cracker based on Trees]
  • https://github.com/polymetric/treecrackerPOS[treecrackerPOS by Polymetric - Tree based minecraft seed cracker]
  • https://github.com/YanWQ-monad/MinecraftSeedReverse[MinecraftSeedReverse by YanWQ-monad - <Note: This is a largely unknown tool with no proper demos/tests available, you are on your own and the QnA is the way to get support.> Find a seed by the positions of the structures and biome information]

== Read MC Code

  • https://github.com/hube12/DecompilerMC[DecompilerMC by Neil - Automated tool to grab Mojang Mappings and map the client/Server jar for Minecraft] || The Code generated will be under src folder.
  • https://fabricmc.net/wiki/tutorial:setup[FrabricMC - Primarily a mod development environment, but also since you run genSources, you can view the source freely. Uses Yarn mappings] || https://www.youtube.com/watch?v=x7cPbAFv19E[Setup Video by Technovision] || The code for minecraft should be in external libraries and can be searched by pressing LShift twice and pressing Alt + N . Now you can search whatever you want !
  • https://github.com/Hexeption/MCP-Reborn[MCP-Reborn by Hexeption - Forge Modding Environment , but also allows browsing code classes , uses own maps or allows to use Mojang Mappings. Code generated by MCP-Reborn (default) is not shareable]

== Neil(hube12's) Tools

  • https://github.com/hube12/SSG[SSG by Neil - 12 eye seeds searcher]
  • https://seedfinding.com/shadow_seed/[Seedfinding.com by Neil - Gateway Locations and Shadow Seed finder]

== Misc

  • https://panda4994.github.io/seedinfo/seedinfo.html[SeedInfo by Panda4994 - Seed analysis tool]
  • https://github.com/jellejurre/seed-checker[seed-cheecker by jellejurre - Generate minecraft terrain 'accurately' and performs checks on it]
  • https://github.com/DaMatrix/TerrainFinder[bedrock coordinate locator by DaMatrix]
  • https://github.com/KaptainWutax/Kaktoos[Kaktoos by KaptainWutax - CUDA program to find tallest cactii]
  • https://github.com/jaquadro/NBTExplorer[NBTExplorer by jaquadro - NBT data source viewer]
  • https://github.com/Earthcomputer/SecureSeed[SecureSeed by EarthComputer - Anti Seed Tamper Tech ]

TIP: Minecraft@Home's #project-resources channel also houses some tools used in famous porjects (pack.png , herobrine seed etc)


= Libraries

== KaptainWutax's Libraries

  • https://github.com/KaptainWutax/SeedUtils[SeedUtils by KaptainWutax - lib for seed utility helper funcs]
  • https://github.com/KaptainWutax/FeatureUtils[FeatureUtils by KaptainWutax - lib for "access to minecraft features"]
  • https://github.com/KaptainWutax/BiomeUtils[BiomeUtils by KaptainWutax - lib for "biome generation replication"]
  • https://github.com/KaptainWutax/NoiseUtils[NoiseUtils by KaptainWutax - lib for noise simulation]
  • https://github.com/KaptainWutax/TerrainUtils[TerrainUtils by KaptainWutax - lib for terrain sim]
  • https://github.com/KaptainWutax/MathUtils[MathUtils by KaptainWutax - lib for "maths utilities specific to lcg shortcutting and Minecraft world gen"]

== Lattice-Tech and Seed-Tools

  • https://github.com/hube12/latticg_rs[LattiCG_rs by Neil - LattiCG written in Rust]
  • https://github.com/mjtb49/LattiCG[LattiCG by <mjtb49,KaptainWutax,Riley,Neil etc> - JavaRandom Internal Seed reversal with LLL alg and B&B alg] || https://github.com/hube12/latticg_example[Latticg_example by Neil(hube12)]
  • https://github.com/rayferric/regen[Regen by Rayferric - lcg reverser]
  • https://github.com/Earthcomputer/libseedfinding[libseedfinding by EarthComputer - C++ seed finding utilities]
  • https://github.com/mjtb49/ChunkRandomReversal[ChunkRandomReversal by mjtb49 - A collection of algorithms to reverse using partial information various hashes used by Minecraft to seed its ChunkRandom PRNG]

== Cubiomes

  • https://github.com/Cubitect/cubiomes[Cubiomes by Cubitect - C Library to mimic terrain generation]
  • https://github.com/jan-leila/js-cubiome[js-cubiome by jan-leila - Javascript bindings for Cubiomes]
  • https://github.com/4gboframram/Pyubiomes[Pyubiomes by 4gboframram - A wip easy-to-use Python wrapper for the most important utilities in Cubiomes (and soon to be more)]

== Neil(hube12's) Libraries

  • https://github.com/SeedFinding/minecraft_end_generation_rs[minecraft_end_generation_rs by Neil - lib for end generation, part of the SeedFinding factory]
  • https://github.com/SeedFinding/minecraft_nether_generation_rs[minecraft_nether_generation_rs by Neil - lib for nether generation, part of the SeedFinding factory]
  • https://github.com/SeedFinding/noise_rs[noise_rs by Neil - lib for noise replication, part of SeedFinding factory]
  • https://github.com/SeedFinding/java_random_rs[java_random_rs by Neil - lib for java random utils, part of SeedFinding Factory]
  • https://github.com/SeedFinding/MCBiomes[MCBiomes by Neil - <Probably> code to mimic biome generation <!not confirmed>]

TIP: https://github.com/KaptainWutax/SEED[SEED by KaptainWutax - general index for all the "x"Utils library mentioned above; basically use FeatureUtils, BiomeUtils, SeedUtils, MathUtils freely with just this import] || https://github.com/hube12/SEED[SEED fork by Neil - Rolling release of SEED with more forefront features and bug fixes, preferably use this]

TIP: https://github.com/SeedFinding[SeedFinding by Neil - lib written in rust for various minecraft generators etc]

Old or deprecated tools aren't listed but a full tool listing can be found all-tools.adoc(TBD)


= Books

  • Integers, Polynomials, and Rings : A Course in Algebra by Ronald S. Irving
  • A course in computational algebraic number theory by Henri Cohen
  • Lattice Basis Reduction: An Introduction to the LLL Algorithm and Its Applications by Murray R Bremner
  • Donald Knuth, The Art of Computer Programming, Volume 2, Section 3.2.1

= Discords

  • https://discord.gg/7P3nqzZ[Monkeys]
  • https://discord.gg/xArErFf[Minecraft@Home]
  • https://discord.gg/tDPvR9c[Minecraft Seedrunning's #seed-research channel]
  • https://discord.gg/BuBGds9[Minecraft WorldGen]
  • https://discord.gg/mn47bWvFjf[Neil's Projects]
  • https://discord.gg/QhsjCeuUm9[Matthew's Projects]
  • https://discord.com/invite/cnyhqaW[/r/MinecraftSeeds subreddit-official server]

= Salts

  • https://gist.github.com/hube12/574512a3c4df2be8ba6c08e7298caedd[1.13]
  • https://gist.github.com/hube12/394ddf11b3cdcc9504270777565446e4[1.14]
  • https://gist.github.com/hube12/821b66615a97a7130ef804603d68bec8[1.13]
  • https://gist.github.com/hube12/b65500cd234ce2a3983b62b3903c183d[1.16]
  • https://gist.github.com/hube12/5066fbcd8565648dd68113a9b065514b[1.17]

[NOTE]

No copyright infringement intended.