55import com .llamalad7 .mixinextras .sugar .ref .LocalRef ;
66import net .minecraft .core .BlockPos ;
77import net .minecraft .core .Holder ;
8- import net .minecraft .core .Registry ;
98import net .minecraft .world .level .biome .Biome ;
109import net .minecraft .world .level .biome .BiomeManager ;
1110import net .minecraft .world .level .chunk .BlockColumn ;
1615import net .minecraft .world .level .levelgen .SurfaceSystem ;
1716import net .minecraft .world .level .levelgen .WorldGenerationContext ;
1817import org .embeddedt .modernfix .world .gen .ChunkBiomeLookup ;
19- import org .embeddedt .modernfix .world .gen .ExtendedSurfaceContext ;
2018import org .embeddedt .modernfix .world .gen .PrefetchingBlockColumn ;
2119import org .spongepowered .asm .mixin .Mixin ;
2220import org .spongepowered .asm .mixin .injection .At ;
2523import org .spongepowered .asm .mixin .injection .Redirect ;
2624import org .spongepowered .asm .mixin .injection .callback .CallbackInfo ;
2725
26+ import java .util .Set ;
2827import java .util .function .Function ;
2928
3029@ Mixin (value = SurfaceSystem .class , priority = 2000 )
3130public class SurfaceSystemMixin {
3231 private static final ThreadLocal <ChunkBiomeLookup > MFIX_LOOKUP_CACHE = ThreadLocal .withInitial (ChunkBiomeLookup ::new );
3332 private static final ThreadLocal <PrefetchingBlockColumn > MFIX_BLOCK_COLUMN = new ThreadLocal <>();
3433
35- @ ModifyArg (method = "buildSurface" , at = @ At (value = "INVOKE" , target = "Lnet/minecraft/world/level/levelgen/SurfaceRules$Context;<init>(Lnet/minecraft/world/level/levelgen/SurfaceSystem;Lnet/minecraft/world/level/levelgen/RandomState;Lnet/minecraft/world/level/chunk/ChunkAccess;Lnet/minecraft/world/level/levelgen/NoiseChunk;Ljava/util/function/Function;Lnet/minecraft/core/Registry;Lnet/minecraft/ world/level/levelgen/WorldGenerationContext;)V" ), index = 4 )
34+ @ ModifyArg (method = "buildSurface" , at = @ At (value = "INVOKE" , target = "Lnet/minecraft/world/level/levelgen/SurfaceRules$Context;<init>(Lnet/minecraft/world/level/levelgen/SurfaceSystem;Lnet/minecraft/world/level/levelgen/RandomState;Lnet/minecraft/world/level/chunk/ChunkAccess;Lnet/minecraft/world/level/levelgen/NoiseChunk;Ljava/util/function/Function;Lnet/minecraft/world/level/levelgen/WorldGenerationContext;Ljava/util/Set ;)V" ), index = 4 )
3635 private Function <BlockPos , Holder <Biome >> useFasterLookup (Function <BlockPos , Holder <Biome >> biomeGetter ,
3736 @ Local (ordinal = 0 , argsOnly = true ) BiomeManager manager ,
3837 @ Local (ordinal = 0 , argsOnly = true ) ChunkAccess chunk ,
@@ -44,13 +43,8 @@ private Function<BlockPos, Holder<Biome>> useFasterLookup(Function<BlockPos, Hol
4443 return lookup ;
4544 }
4645
47- @ Inject (method = "buildSurface" , at = @ At (value = "INVOKE" , target = "Lnet/minecraft/world/level/levelgen/SurfaceRules$RuleSource;apply(Ljava/lang/Object;)Ljava/lang/Object;" , ordinal = 0 ))
48- private void injectBiomesOnContext (CallbackInfo ci , @ Local (ordinal = 0 ) SurfaceRules .Context surfacerules$context ) {
49- ((ExtendedSurfaceContext )(Object ) surfacerules$context ).mfix$applyPossibleBiomes ();
50- }
51-
5246 @ Inject (method = "buildSurface" , at = @ At ("TAIL" ))
53- private void finishAndDisposeLookups (RandomState randomState , BiomeManager biomeManager , Registry < Biome > biomes , boolean p_224652_ , WorldGenerationContext context , ChunkAccess chunk , NoiseChunk noiseChunk , SurfaceRules .RuleSource ruleSource , CallbackInfo ci ) {
47+ private void finishAndDisposeLookups (RandomState randomState , BiomeManager biomeManager , boolean p_224652_ , WorldGenerationContext context , ChunkAccess chunk , NoiseChunk noiseChunk , SurfaceRules .RuleSource ruleSource , Set < Holder < Biome >> possibleBiomes , CallbackInfo ci ) {
5448 MFIX_LOOKUP_CACHE .get ().dispose ();
5549 var column = MFIX_BLOCK_COLUMN .get ();
5650 if (column != null ) {
@@ -63,7 +57,7 @@ private Holder<Biome> useFasterLookup(BiomeManager instance, BlockPos pos, @Shar
6357 return lookupRef .get ().apply (pos );
6458 }
6559
66- @ Inject (method = "buildSurface" , at = @ At (value = "INVOKE" , target = "Lnet/minecraft/world/level/levelgen/SurfaceRules$Context;<init>(Lnet/minecraft/world/level/levelgen/SurfaceSystem;Lnet/minecraft/world/level/levelgen/RandomState;Lnet/minecraft/world/level/chunk/ChunkAccess;Lnet/minecraft/world/level/levelgen/NoiseChunk;Ljava/util/function/Function;Lnet/minecraft/core/Registry;Lnet/minecraft/ world/level/levelgen/WorldGenerationContext;)V" ))
60+ @ Inject (method = "buildSurface" , at = @ At (value = "INVOKE" , target = "Lnet/minecraft/world/level/levelgen/SurfaceRules$Context;<init>(Lnet/minecraft/world/level/levelgen/SurfaceSystem;Lnet/minecraft/world/level/levelgen/RandomState;Lnet/minecraft/world/level/chunk/ChunkAccess;Lnet/minecraft/world/level/levelgen/NoiseChunk;Ljava/util/function/Function;Lnet/minecraft/world/level/levelgen/WorldGenerationContext;Ljava/util/Set ;)V" ))
6761 private void captureRealBlockColumn (CallbackInfo ci , @ Local (ordinal = 0 ) LocalRef <BlockColumn > column ,
6862 @ Local (ordinal = 0 , argsOnly = true ) ChunkAccess chunk ,
6963 @ Share ("prefetchColumn" ) LocalRef <PrefetchingBlockColumn > prefetchRef ) {
@@ -77,8 +71,8 @@ private void captureRealBlockColumn(CallbackInfo ci, @Local(ordinal = 0) LocalRe
7771 }
7872
7973 @ Inject (method = "buildSurface" , at = @ At (value = "INVOKE" , target = "Lnet/minecraft/core/BlockPos$MutableBlockPos;setZ(I)Lnet/minecraft/core/BlockPos$MutableBlockPos;" , ordinal = 0 , shift = At .Shift .AFTER ))
80- private void prefetchBlockArray (RandomState randomState , BiomeManager biomeManager , Registry < Biome > biomes , boolean p_224652_ ,
81- WorldGenerationContext context , ChunkAccess chunk , NoiseChunk noiseChunk , SurfaceRules .RuleSource ruleSource , CallbackInfo ci ,
74+ private void prefetchBlockArray (RandomState randomState , BiomeManager biomeManager , boolean p_224652_ ,
75+ WorldGenerationContext context , ChunkAccess chunk , NoiseChunk noiseChunk , SurfaceRules .RuleSource ruleSource , Set < Holder < Biome >> possibleBiomes , CallbackInfo ci ,
8276 @ Local (ordinal = 0 ) BlockColumn column ,
8377 @ Local (ordinal = 0 ) BlockPos .MutableBlockPos cursor ) {
8478 ((PrefetchingBlockColumn )column ).prefetch (chunk , cursor .getX () & 15 , cursor .getZ () & 15 );
0 commit comments