diff --git a/platforms/mixin-lifecycle/src/main/java/com/dfsek/terra/lifecycle/mixin/lifecycle/RegistryLoaderMixin.java b/platforms/mixin-lifecycle/src/main/java/com/dfsek/terra/lifecycle/mixin/lifecycle/RegistryLoaderMixin.java index cb33c527a..98f601b83 100644 --- a/platforms/mixin-lifecycle/src/main/java/com/dfsek/terra/lifecycle/mixin/lifecycle/RegistryLoaderMixin.java +++ b/platforms/mixin-lifecycle/src/main/java/com/dfsek/terra/lifecycle/mixin/lifecycle/RegistryLoaderMixin.java @@ -15,7 +15,10 @@ import net.minecraft.world.dimension.DimensionType; import net.minecraft.world.gen.WorldPreset; import net.minecraft.world.gen.chunk.ChunkGeneratorSettings; import org.checkerframework.checker.units.qual.C; +import org.slf4j.Logger; +import org.spongepowered.asm.mixin.Final; import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Shadow; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.Redirect; @@ -29,6 +32,10 @@ import com.dfsek.terra.lifecycle.util.LifecycleUtil; @Mixin(RegistryLoader.class) public class RegistryLoaderMixin { + @Shadow + @Final + private static Logger LOGGER; + @Redirect( method = "load(Lnet/minecraft/resource/ResourceManager;Lnet/minecraft/registry/DynamicRegistryManager;Ljava/util/List;)" + "Lnet/minecraft/registry/DynamicRegistryManager$Immutable;", @@ -39,23 +46,26 @@ public class RegistryLoaderMixin { ) ) private static void grabManager(List, Object>> instance, Consumer, Object>> consumer) { - instance.forEach(mutableRegistryObjectPair -> { - System.out.println(mutableRegistryObjectPair.getFirst()); - System.out.println(mutableRegistryObjectPair.getFirst().size()); - }); - extractRegistry(instance, RegistryKeys.BIOME).ifPresent(biomes -> { // this redirect triggers twice, second time only with dimension registry. dont try extraction second time - MutableRegistry dimensionTypes = extractRegistry(instance, RegistryKeys.DIMENSION_TYPE).orElseThrow(); - MutableRegistry worldPresets = extractRegistry(instance, RegistryKeys.WORLD_PRESET).orElseThrow(); - MutableRegistry chunkGeneratorSettings = extractRegistry(instance, RegistryKeys.CHUNK_GENERATOR_SETTINGS).orElseThrow(); - - LifecyclePlatform.setRegistries(biomes, dimensionTypes, chunkGeneratorSettings); - LifecycleUtil.initialize(biomes, worldPresets); - }); + instance.forEach(mutableRegistryObjectPair -> LOGGER.debug("{}: {} entries", + mutableRegistryObjectPair.getFirst().toString(), + mutableRegistryObjectPair.getFirst().size()) + ); + extractRegistry(instance, RegistryKeys.BIOME).ifPresent( + biomes -> { // this redirect triggers twice, second time only with dimension registry. don't try extraction second time + MutableRegistry dimensionTypes = extractRegistry(instance, RegistryKeys.DIMENSION_TYPE).orElseThrow(); + MutableRegistry worldPresets = extractRegistry(instance, RegistryKeys.WORLD_PRESET).orElseThrow(); + MutableRegistry chunkGeneratorSettings = extractRegistry(instance, + RegistryKeys.CHUNK_GENERATOR_SETTINGS).orElseThrow(); + + LifecyclePlatform.setRegistries(biomes, dimensionTypes, chunkGeneratorSettings); + LifecycleUtil.initialize(biomes, worldPresets); + }); instance.forEach(consumer); } @SuppressWarnings("unchecked") - private static Optional> extractRegistry(List, Object>> instance, RegistryKey> key) { + private static Optional> extractRegistry(List, Object>> instance, + RegistryKey> key) { List> matches = instance .stream() .map(Pair::getFirst)