Skip to content

Commit 70b9143

Browse files
committed
Fixed the Nether cavegen
1 parent a3aa033 commit 70b9143

3 files changed

Lines changed: 79 additions & 0 deletions

File tree

Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
package net.modificationstation.stationapi.mixin.flattening;
2+
3+
import net.minecraft.class_344;
4+
import net.modificationstation.stationapi.api.util.math.MathHelper;
5+
import net.modificationstation.stationapi.impl.world.CaveGenBaseImpl;
6+
import org.spongepowered.asm.mixin.Mixin;
7+
import org.spongepowered.asm.mixin.injection.At;
8+
import org.spongepowered.asm.mixin.injection.Constant;
9+
import org.spongepowered.asm.mixin.injection.ModifyConstant;
10+
import org.spongepowered.asm.mixin.injection.ModifyVariable;
11+
12+
@Mixin(class_344.class)
13+
abstract class NetherCaveGenMixin implements CaveGenBaseImpl {
14+
@ModifyConstant(
15+
method = "method_1146",
16+
constant = {
17+
@Constant(intValue = 1, ordinal = 8),
18+
@Constant(intValue = 1, ordinal = 9)
19+
}
20+
)
21+
private int stationapi_changeBottomYP1Cap(int constant) {
22+
return Math.max(stationapi_getWorld().getBottomY() + 1, constant);
23+
}
24+
25+
@ModifyConstant(
26+
method = "method_1146",
27+
constant = @Constant(intValue = 120)
28+
)
29+
private int stationapi_changeTopYM8Cap(int constant) {
30+
return Math.min(stationapi_getWorld().getTopY() - 8, constant);
31+
}
32+
33+
@ModifyConstant(
34+
method = "method_1146",
35+
constant = {
36+
@Constant(intValue = 128, ordinal = 0),
37+
@Constant(intValue = 128, ordinal = 2)
38+
}
39+
)
40+
private int stationapi_changeHeight(int constant) {
41+
return MathHelper.smallestEncompassingPowerOfTwo(stationapi_getWorld().getHeight());
42+
}
43+
44+
@ModifyVariable(
45+
method = "method_1146",
46+
at = @At(value = "STORE", ordinal = 0),
47+
index = 43
48+
)
49+
private int stationapi_adjustForCustomDepth1(int value) {
50+
return value - stationapi_getWorld().getBottomY();
51+
}
52+
53+
@ModifyVariable(
54+
method = "method_1146",
55+
at = @At(value = "STORE", ordinal = 0),
56+
index = 46
57+
)
58+
private int stationapi_adjustForCustomDepth2(int value) {
59+
return value - stationapi_getWorld().getBottomY();
60+
}
61+
}

station-flattening-v0/src/main/java/net/modificationstation/stationapi/mixin/flattening/NetherChunkGeneratorMixin.java

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,12 @@
11
package net.modificationstation.stationapi.mixin.flattening;
22

3+
import com.llamalad7.mixinextras.injector.wrapoperation.Operation;
4+
import com.llamalad7.mixinextras.injector.wrapoperation.WrapOperation;
5+
import net.minecraft.class_344;
36
import net.minecraft.class_359;
47
import net.minecraft.world.World;
58
import net.minecraft.world.chunk.Chunk;
9+
import net.modificationstation.stationapi.impl.world.CaveGenBaseImpl;
610
import net.modificationstation.stationapi.impl.world.chunk.FlattenedChunk;
711
import org.spongepowered.asm.mixin.Mixin;
812
import org.spongepowered.asm.mixin.injection.At;
@@ -13,6 +17,19 @@
1317

1418
@Mixin(class_359.class)
1519
class NetherChunkGeneratorMixin {
20+
@WrapOperation(
21+
method = "<init>",
22+
at = @At(
23+
value = "NEW",
24+
target = "()Lnet/minecraft/class_344;"
25+
)
26+
)
27+
private class_344 stationapi_setWorldForCaveGen(Operation<class_344> original, World world, long l) {
28+
final class_344 caveGen = original.call();
29+
((CaveGenBaseImpl) caveGen).stationapi_setWorld(world);
30+
return caveGen;
31+
}
32+
1633
@Redirect(
1734
method = "method_1806",
1835
at = @At(

station-flattening-v0/src/main/resources/station-flattening-v0.mixins.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
"ItemMixin",
2222
"ItemStackMixin",
2323
"MobSpawnerLogicMixin",
24+
"NetherCaveGenMixin",
2425
"NetherChunkGeneratorMixin",
2526
"OakTreeFeatureMixin",
2627
"OverworldChunkGeneratorMixin",

0 commit comments

Comments
 (0)