能否重现Minecraft 1.9版本前末地黑曜石尖刺的随机种子?
Minecraft 1.9前末地黑曜石尖刺的随机种子逆向问题
背景:1.9前末地尖刺的生成逻辑
在Minecraft 1.9版本发布前,末地由单块末地石浮空岛构成,黑曜石尖刺无规则散布在岛屿周边:
- 浮空岛由世界种子结合末地生物群系生成(对应代码文件
ChunkProviderEnd.java和BiomeEndGen.java) - 黑曜石尖刺则是新区块生成时随机创建,通过代码对含末地石的符合条件区块进行"填充"生成
反编译后的BiomeEndDecorator.java文件中,使用randomGenerator变量调用nextInt(int bound)生成0-15的随机值,通过以下公式计算尖刺的x、z坐标(代码中对应var2和var3):
x = this.chunk_X + this.randomGenerator.nextInt(16) + 8; z = this.chunk_Z + this.randomGenerator.nextInt(16) + 8;
其中chunk_X和chunk_Z是末地区域文件的区块坐标(已转换为世界坐标),另有变量负责计算黑曜石柱的高度与随机半径的圆环生成逻辑。randomGenerator在BiomeDecorator.java中声明:
protected Random randomGenerator;
现有尝试与困境
Java内置的随机算法本身可逆向破解,但实际获取尖刺生成的种子存在诸多问题:
- 尝试通过尖刺坐标反推初始随机值以获取种子,结果失败
- 设置固定种子可生成网格状尖刺,但调整生成概率后无法按特定顺序生成尖刺
WorldGenSpikes.java负责尖刺生成逻辑,即便用MCEdit预铺末地石,新加载区块仍会生成随机尖刺- 相同世界种子会生成完全一致的浮空岛,但黑曜石尖刺的生成结果完全不同;向未加载区块扩展末地石会生成新的随机尖刺,几乎无法完全复刻所有尖刺,最多只能复刻已加载过的尖刺
若要实现通过尖刺坐标反推初始随机值种子,并为所有世界设置该种子的函数,需修改游戏代码(生成末地时无法手动输入该种子)。目前已知部分基岩块坐标,但由于游戏允许在岛外生成尖刺且仅生成13个末影水晶,找到精确种子的概率几乎为0。
核心问题
考虑到每个尖刺生成都会使用新的随机值,是否存在合理算法,能够在符合黑曜石尖刺生成条件的新区块生成时,破解其随机种子?
补充说明
向未加载区块推送石头等方块时,末地中会生成主世界矿石,这些矿石基于主世界种子生成;推测末地原生矿石的生成逻辑同理,但矿石生成受种子直接影响,与尖刺的生成逻辑仅在"区块填充"的条件上类似,核心机制不同。
内容的提问来源于stack exchange,提问作者Alexito
相关产品推荐
相关产品推荐

