Skip to content
This repository has been archived by the owner on Aug 27, 2024. It is now read-only.

Patch RNG reuse that could lead to coord exploit (Randar) #130

Closed
wants to merge 1 commit into from
Closed
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Leijurv <leijurv@gmail.com>
Date: Tue, 16 Apr 2024 19:43:08 -0700
Subject: [PATCH] Patch RNG reuse that could lead to coord exploit (Randar)

Credits: Leijurv (From https://github.com/spawnmason/randar-explanation/blob/master/media/0386-Patch-RNG-reuse-that-could-lead-to-coord-exploit-Ran.patch)

diff --git src/main/java/net/minecraft/server/World.java src/main/java/net/minecraft/server/World.java
index cc9f467cc85704d536545aa63985340013e63703..a6e97eb3b57e65abf4399acbec9393bcab1ee2b9 100644
--- src/main/java/net/minecraft/server/World.java
+++ src/main/java/net/minecraft/server/World.java
@@ -89,6 +89,9 @@ public abstract class World implements IBlockAccess {
protected float q;
private int M;
public final Random random = new Random();
+ // Dionysus start
+ private final Random separateRandOnlyForWorldGen = new Random();
+ // Dionysus end
public WorldProvider worldProvider;
protected NavigationListener t = new NavigationListener();
protected List<IWorldAccess> u;
@@ -3224,9 +3227,10 @@ public abstract class World implements IBlockAccess {

public Random a(int i, int j, int k) {
long l = (long) i * 341873128712L + (long) j * 132897987541L + this.getWorldData().getSeed() + (long) k;
-
- this.random.setSeed(l);
- return this.random;
+ // Dionysus start
+ this.separateRandOnlyForWorldGen.setSeed(l);
+ return this.separateRandOnlyForWorldGen;
+ // Dionysus end
}

public CrashReportSystemDetails a(CrashReport crashreport) {
Loading