mirror of
https://github.com/PolyhedralDev/Terra.git
synced 2025-07-04 00:45:57 +00:00
1.19.3 launch and enter world
This commit is contained in:
parent
57bb6bca94
commit
ba2f24f1f5
@ -3,6 +3,7 @@ package com.dfsek.terra.mod.util;
|
|||||||
import com.dfsek.terra.mod.ModPlatform;
|
import com.dfsek.terra.mod.ModPlatform;
|
||||||
|
|
||||||
import net.minecraft.registry.DynamicRegistryManager;
|
import net.minecraft.registry.DynamicRegistryManager;
|
||||||
|
import net.minecraft.registry.Registries;
|
||||||
import net.minecraft.registry.Registry;
|
import net.minecraft.registry.Registry;
|
||||||
import net.minecraft.registry.RegistryKeys;
|
import net.minecraft.registry.RegistryKeys;
|
||||||
import net.minecraft.registry.entry.RegistryEntry;
|
import net.minecraft.registry.entry.RegistryEntry;
|
||||||
|
@ -6,6 +6,8 @@ import com.dfsek.terra.lifecycle.util.RegistryHack;
|
|||||||
|
|
||||||
import com.mojang.datafixers.util.Pair;
|
import com.mojang.datafixers.util.Pair;
|
||||||
import net.minecraft.registry.MutableRegistry;
|
import net.minecraft.registry.MutableRegistry;
|
||||||
|
import net.minecraft.registry.Registry;
|
||||||
|
import net.minecraft.registry.RegistryKey;
|
||||||
import net.minecraft.registry.RegistryKeys;
|
import net.minecraft.registry.RegistryKeys;
|
||||||
import net.minecraft.registry.RegistryLoader;
|
import net.minecraft.registry.RegistryLoader;
|
||||||
import net.minecraft.world.biome.Biome;
|
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 org.spongepowered.asm.mixin.injection.Redirect;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Optional;
|
||||||
import java.util.function.Consumer;
|
import java.util.function.Consumer;
|
||||||
|
|
||||||
import com.dfsek.terra.lifecycle.util.LifecycleUtil;
|
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) {
|
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 -> {
|
instance.forEach(mutableRegistryObjectPair -> {
|
||||||
System.out.println(mutableRegistryObjectPair.getFirst());
|
System.out.println(mutableRegistryObjectPair.getFirst());
|
||||||
System.out.println(mutableRegistryObjectPair.getFirst().size());
|
System.out.println(mutableRegistryObjectPair.getFirst().size());
|
||||||
if(mutableRegistryObjectPair.getFirst().getKey().equals(RegistryKeys.BIOME)) {
|
});
|
||||||
((RegistryHack) mutableRegistryObjectPair.getFirst()).terra_bind();
|
extractRegistry(instance, RegistryKeys.BIOME).ifPresent(biomes -> { // this redirect triggers twice, second time only with dimension registry. dont try extraction second time
|
||||||
System.out.println("BIOMES: " + mutableRegistryObjectPair.getFirst().stream().toList());
|
MutableRegistry<DimensionType> dimensionTypes = extractRegistry(instance, RegistryKeys.DIMENSION_TYPE).orElseThrow();
|
||||||
}
|
MutableRegistry<WorldPreset> worldPresets = extractRegistry(instance, RegistryKeys.WORLD_PRESET).orElseThrow();
|
||||||
//System.out.println(mutableRegistryObjectPair.getFirst().stream().toList());
|
MutableRegistry<ChunkGeneratorSettings> chunkGeneratorSettings = extractRegistry(instance, RegistryKeys.CHUNK_GENERATOR_SETTINGS).orElseThrow();
|
||||||
|
|
||||||
|
LifecyclePlatform.setRegistries(biomes, dimensionTypes, chunkGeneratorSettings);
|
||||||
|
LifecycleUtil.initialize(biomes, worldPresets);
|
||||||
});
|
});
|
||||||
instance.forEach(consumer);
|
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)
|
pack.getCheckedRegistry(Biome.class)
|
||||||
.forEach((id, biome) -> registerBiome(biome, pack, id, biomeRegistry));
|
.forEach((id, biome) -> registerBiome(biome, pack, id, biomeRegistry));
|
||||||
});
|
});
|
||||||
MinecraftUtil.registerFlora(biomeRegistry);
|
|
||||||
logger.info("Terra biomes registered.");
|
logger.info("Terra biomes registered.");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user