mirror of
https://github.com/PolyhedralDev/Terra.git
synced 2025-07-01 23:47:50 +00:00
1.19.3 launch and enter world
This commit is contained in:
parent
66465f27ff
commit
ee336b01a6
@ -3,6 +3,7 @@ package com.dfsek.terra.mod.util;
|
||||
import com.dfsek.terra.mod.ModPlatform;
|
||||
|
||||
import net.minecraft.registry.DynamicRegistryManager;
|
||||
import net.minecraft.registry.Registries;
|
||||
import net.minecraft.registry.Registry;
|
||||
import net.minecraft.registry.RegistryKeys;
|
||||
import net.minecraft.registry.entry.RegistryEntry;
|
||||
@ -38,7 +39,7 @@ public class PresetUtil {
|
||||
public static Pair<Identifier, WorldPreset> createDefault(ConfigPack pack, ModPlatform platform) {
|
||||
Registry<DimensionType> dimensionTypeRegistry = platform.dimensionTypeRegistry();
|
||||
Registry<ChunkGeneratorSettings> chunkGeneratorSettingsRegistry = platform.chunkGeneratorSettingsRegistry();
|
||||
|
||||
|
||||
RegistryEntry<DimensionType> theNetherDimensionType = dimensionTypeRegistry.getEntry(DimensionTypes.THE_NETHER).orElseThrow();
|
||||
RegistryEntry<ChunkGeneratorSettings>
|
||||
netherChunkGeneratorSettings = chunkGeneratorSettingsRegistry.getEntry(ChunkGeneratorSettings.NETHER).orElseThrow();
|
||||
|
@ -6,6 +6,8 @@ import com.dfsek.terra.lifecycle.util.RegistryHack;
|
||||
|
||||
import com.mojang.datafixers.util.Pair;
|
||||
import net.minecraft.registry.MutableRegistry;
|
||||
import net.minecraft.registry.Registry;
|
||||
import net.minecraft.registry.RegistryKey;
|
||||
import net.minecraft.registry.RegistryKeys;
|
||||
import net.minecraft.registry.RegistryLoader;
|
||||
import net.minecraft.world.biome.Biome;
|
||||
@ -18,6 +20,7 @@ import org.spongepowered.asm.mixin.injection.At;
|
||||
import org.spongepowered.asm.mixin.injection.Redirect;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
import java.util.function.Consumer;
|
||||
|
||||
import com.dfsek.terra.lifecycle.util.LifecycleUtil;
|
||||
@ -36,18 +39,35 @@ public class RegistryLoaderMixin {
|
||||
)
|
||||
)
|
||||
private static void grabManager(List<Pair<MutableRegistry<?>, Object>> instance, Consumer<Pair<MutableRegistry<?>, Object>> consumer) {
|
||||
|
||||
//LifecyclePlatform.setRegistries(biomeMutableRegistry, dimensionTypeMutableRegistry, chunkGeneratorSettingsMutableRegistry);
|
||||
//LifecycleUtil.initialize(biomeMutableRegistry, worldPresetMutableRegistry);
|
||||
instance.forEach(mutableRegistryObjectPair -> {
|
||||
System.out.println(mutableRegistryObjectPair.getFirst());
|
||||
System.out.println(mutableRegistryObjectPair.getFirst().size());
|
||||
if(mutableRegistryObjectPair.getFirst().getKey().equals(RegistryKeys.BIOME)) {
|
||||
((RegistryHack) mutableRegistryObjectPair.getFirst()).terra_bind();
|
||||
System.out.println("BIOMES: " + mutableRegistryObjectPair.getFirst().stream().toList());
|
||||
}
|
||||
//System.out.println(mutableRegistryObjectPair.getFirst().stream().toList());
|
||||
});
|
||||
extractRegistry(instance, RegistryKeys.BIOME).ifPresent(biomes -> { // this redirect triggers twice, second time only with dimension registry. dont try extraction second time
|
||||
MutableRegistry<DimensionType> dimensionTypes = extractRegistry(instance, RegistryKeys.DIMENSION_TYPE).orElseThrow();
|
||||
MutableRegistry<WorldPreset> worldPresets = extractRegistry(instance, RegistryKeys.WORLD_PRESET).orElseThrow();
|
||||
MutableRegistry<ChunkGeneratorSettings> chunkGeneratorSettings = extractRegistry(instance, RegistryKeys.CHUNK_GENERATOR_SETTINGS).orElseThrow();
|
||||
|
||||
LifecyclePlatform.setRegistries(biomes, dimensionTypes, chunkGeneratorSettings);
|
||||
LifecycleUtil.initialize(biomes, worldPresets);
|
||||
});
|
||||
instance.forEach(consumer);
|
||||
}
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
private static <T> Optional<MutableRegistry<T>> extractRegistry(List<Pair<MutableRegistry<?>, Object>> instance, RegistryKey<Registry<T>> key) {
|
||||
List<? extends MutableRegistry<?>> matches = instance
|
||||
.stream()
|
||||
.map(Pair::getFirst)
|
||||
.filter(r -> r.getKey().equals(key))
|
||||
.toList();
|
||||
if(matches.size() > 1) {
|
||||
throw new IllegalStateException("Illegal number of registries returned: " + matches);
|
||||
} else if(matches.isEmpty()) {
|
||||
return Optional.empty();
|
||||
}
|
||||
MutableRegistry<T> registry = (MutableRegistry<T>) matches.get(0);
|
||||
((RegistryHack) registry).terra_bind();
|
||||
return Optional.of(registry);
|
||||
}
|
||||
}
|
||||
|
@ -36,7 +36,6 @@ public final class BiomeUtil {
|
||||
pack.getCheckedRegistry(Biome.class)
|
||||
.forEach((id, biome) -> registerBiome(biome, pack, id, biomeRegistry));
|
||||
});
|
||||
MinecraftUtil.registerFlora(biomeRegistry);
|
||||
logger.info("Terra biomes registered.");
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user