Skip to content

Commit 813d919

Browse files
committed
[KillTheRNG] Started adding MathRandomness
1 parent d833ed9 commit 813d919

File tree

6 files changed

+70
-1
lines changed

6 files changed

+70
-1
lines changed

src/main/java/com/minecrafttas/tasmod/TASmod.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
import com.minecrafttas.tasmod.commands.CommandTickrate;
2727
import com.minecrafttas.tasmod.handlers.PlayUntilHandler;
2828
import com.minecrafttas.tasmod.ktrng.GlobalRandomnessTimer;
29+
import com.minecrafttas.tasmod.ktrng.MathRandomness;
2930
import com.minecrafttas.tasmod.playback.PlaybackControllerServer;
3031
import com.minecrafttas.tasmod.playback.metadata.builtin.StartpositionMetadataExtension;
3132
import com.minecrafttas.tasmod.registries.TASmodAPIRegistry;
@@ -92,6 +93,8 @@ public class TASmod implements ModInitializer, EventServerStart, EventServerInit
9293

9394
public static KTRNGSeedStorage seedStorage = new KTRNGSeedStorage();
9495

96+
public static MathRandomness mathRandomness = new MathRandomness(0);
97+
9598
@Override
9699
public void onInitialize() {
97100

@@ -144,6 +147,7 @@ public void onInitialize() {
144147
public void onServerStart(MinecraftServer server) {
145148
globalRandomness = new GlobalRandomnessTimer();
146149
EventListenerRegistry.register(globalRandomness);
150+
mathRandomness = new MathRandomness();
147151
}
148152

149153
@Override
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
package com.minecrafttas.tasmod.ktrng;
2+
3+
import com.minecrafttas.tasmod.TASmod;
4+
5+
/**
6+
* <p>Randomness instance for hooking into {@link Math#random()}
7+
*
8+
* @author Scribble
9+
*/
10+
public class MathRandomness extends RandomBase {
11+
12+
public MathRandomness() {
13+
super(TASmod.globalRandomness.getCurrentSeed());
14+
}
15+
16+
public MathRandomness(long seed) {
17+
super(seed);
18+
}
19+
}
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
package com.minecrafttas.tasmod.mixin.killtherng.mathrand;
2+
3+
import org.spongepowered.asm.mixin.Mixin;
4+
import org.spongepowered.asm.mixin.injection.At;
5+
6+
import com.llamalad7.mixinextras.injector.wrapoperation.Operation;
7+
import com.llamalad7.mixinextras.injector.wrapoperation.WrapOperation;
8+
import com.minecrafttas.tasmod.TASmod;
9+
10+
import net.minecraft.entity.item.EntityItem;
11+
import net.minecraft.world.World;
12+
13+
@Mixin(EntityItem.class)
14+
public class MixinEntityItem {
15+
16+
@WrapOperation(method = "<init>", at = @At(value = "INVOKE", target = "Ljava/lang/Math;random()D"))
17+
private double wrap_entityItemInit(Operation<Double> original, World world, double d, double e, double f) {
18+
System.out.println("Test");
19+
return TASmod.mathRandomness.nextDouble();
20+
}
21+
}
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
package com.minecrafttas.tasmod.mixin.killtherng.mathrand;
2+
3+
import org.spongepowered.asm.mixin.Mixin;
4+
import org.spongepowered.asm.mixin.injection.At;
5+
6+
import com.llamalad7.mixinextras.injector.wrapoperation.Operation;
7+
import com.llamalad7.mixinextras.injector.wrapoperation.WrapOperation;
8+
import com.minecrafttas.tasmod.TASmod;
9+
10+
import net.minecraft.entity.EntityLivingBase;
11+
12+
@Mixin(EntityLivingBase.class)
13+
public class MixinEntityLivingBase {
14+
15+
@WrapOperation(method = "attackEntityFrom", at = @At(value = "INVOKE", target = "Ljava/lang/Math;random()D"))
16+
private double wrap_attackEntityFrom(Operation<Double> original) {
17+
return TASmod.mathRandomness.nextDouble();
18+
}
19+
}

src/main/java/com/minecrafttas/tasmod/savestates/storage/builtin/KTRNGSeedStorage.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,8 @@ public JsonObject onSavestate(MinecraftServer server, JsonObject dataToSave) {
5959

6060
dataToSave.add("worldRandom", worldRandomDataJson);
6161

62+
dataToSave.addProperty("mathRandom", Long.toString(TASmod.mathRandomness.getSeed()));
63+
6264
return dataToSave;
6365
}
6466

@@ -103,6 +105,8 @@ public void onLoadstateComplete(MinecraftServer server, JsonObject loadedData) {
103105
}
104106

105107
KTRNGWorldHandler.setWorldRandomnessMap(worldList);
108+
109+
TASmod.mathRandomness.setSeed(loadedData.get("mathRandom").getAsLong());
106110
}
107111

108112
@Override

src/main/resources/tasmod.mixin.json

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,9 @@
2424
"fixes.MixinDragonFightManager",
2525

2626
"killtherng.MixinEntity",
27-
"killtherng.MixinWorld"
27+
"killtherng.MixinWorld",
28+
"killtherng.mathrand.MixinEntityLivingBase",
29+
"killtherng.mathrand.MixinEntityItem"
2830

2931
],
3032
"client": [

0 commit comments

Comments
 (0)