mirror of
https://github.com/PolyhedralDev/Terra.git
synced 2025-07-17 18:12:43 +00:00
Fixup
This commit is contained in:
parent
d48b610b39
commit
1912d8e34c
@ -2,30 +2,38 @@ package com.dfsek.terra.mod.mixin.generalize;
|
||||
|
||||
|
||||
import net.minecraft.registry.DynamicRegistryManager;
|
||||
import net.minecraft.registry.Registry;
|
||||
import net.minecraft.registry.RegistryKey;
|
||||
import net.minecraft.registry.RegistryKeys;
|
||||
import net.minecraft.registry.entry.RegistryEntry;
|
||||
import net.minecraft.server.MinecraftServer;
|
||||
import net.minecraft.server.WorldGenerationProgressListener;
|
||||
import net.minecraft.server.world.ServerWorld;
|
||||
import net.minecraft.util.math.random.RandomSequencesState;
|
||||
import net.minecraft.util.profiler.Profiler;
|
||||
import net.minecraft.village.raid.RaidManager;
|
||||
import net.minecraft.world.MutableWorldProperties;
|
||||
import net.minecraft.world.World;
|
||||
import net.minecraft.world.dimension.DimensionOptions;
|
||||
import net.minecraft.world.dimension.DimensionType;
|
||||
import net.minecraft.world.dimension.DimensionTypes;
|
||||
import net.minecraft.world.level.ServerWorldProperties;
|
||||
import net.minecraft.world.level.storage.LevelStorage;
|
||||
import net.minecraft.world.spawner.SpecialSpawner;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
import org.spongepowered.asm.mixin.Mixin;
|
||||
import org.spongepowered.asm.mixin.injection.At;
|
||||
import org.spongepowered.asm.mixin.injection.Redirect;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.concurrent.Executor;
|
||||
import java.util.function.Supplier;
|
||||
|
||||
|
||||
@Mixin(ServerWorld.class)
|
||||
public abstract class ServerWorldMixin extends World {
|
||||
protected ServerWorldMixin(MutableWorldProperties properties, RegistryKey<World> registryRef, DynamicRegistryManager registryManager,
|
||||
RegistryEntry<DimensionType> dimensionEntry, Supplier<Profiler> profiler, boolean isClient,
|
||||
boolean debugWorld, long biomeAccess, int maxChainedNeighborUpdates) {
|
||||
super(properties, registryRef, registryManager, dimensionEntry, profiler, isClient, debugWorld, biomeAccess,
|
||||
maxChainedNeighborUpdates);
|
||||
public ServerWorldMixin(MinecraftServer server, Executor workerExecutor, LevelStorage.Session session, ServerWorldProperties properties, RegistryKey<World> worldKey, DimensionOptions dimensionOptions, WorldGenerationProgressListener worldGenerationProgressListener, boolean debugWorld, long seed, List<SpecialSpawner> spawners, boolean shouldTickTime, @Nullable RandomSequencesState randomSequencesState) {
|
||||
super(properties, worldKey, server.getRegistryManager(), dimensionOptions.dimensionTypeEntry(), false, debugWorld, seed, server.getMaxChainedNeighborUpdates());
|
||||
}
|
||||
|
||||
@Redirect(method = "<init>",
|
||||
@ -45,7 +53,9 @@ public abstract class ServerWorldMixin extends World {
|
||||
public String nameForProxy(RegistryEntry<DimensionType> dimensionTypeEntry) {
|
||||
RegistryEntry<DimensionType> entry = dimensionTypeEntry;
|
||||
if(this.getRegistryKey() == World.END) {
|
||||
entry = getRegistryManager().get(RegistryKeys.DIMENSION_TYPE).getEntry(DimensionTypes.THE_NETHER).orElseThrow();
|
||||
Registry<DimensionType> dimensionTypeRegistry = getRegistryManager().getOrThrow(RegistryKeys.DIMENSION_TYPE);
|
||||
entry = dimensionTypeRegistry.getEntry(dimensionTypeRegistry.get(DimensionTypes.THE_NETHER));
|
||||
|
||||
}
|
||||
return RaidManager.nameFor(entry);
|
||||
}
|
||||
|
@ -71,7 +71,7 @@ public final class MinecraftUtil {
|
||||
}
|
||||
|
||||
public static void registerFlora(Registry<net.minecraft.world.biome.Biome> biomeRegistry) {
|
||||
|
||||
logger.info("Injecting flora into Terra biomes...");
|
||||
CommonPlatform.get().getConfigRegistry().forEach(pack -> { // Register all Terra biomes.
|
||||
PreLoadCompatibilityOptions compatibilityOptions = pack.getContext().get(PreLoadCompatibilityOptions.class);
|
||||
if(compatibilityOptions.isInjectFlora()) {
|
||||
@ -81,18 +81,16 @@ public final class MinecraftUtil {
|
||||
});
|
||||
}
|
||||
});
|
||||
logger.info("Injecting flora into Terra biomes...");
|
||||
|
||||
}
|
||||
|
||||
public static void registerFlora(com.dfsek.terra.api.world.biome.Biome biome, ConfigPack pack,
|
||||
com.dfsek.terra.api.registry.key.RegistryKey id,
|
||||
Registry<net.minecraft.world.biome.Biome> biomeRegistry) {
|
||||
RegistryKey<net.minecraft.world.biome.Biome> vanillaKey = ((ProtoPlatformBiome) biome.getPlatformBiome()).get(biomeRegistry);
|
||||
biomeRegistry.getOrEmpty(vanillaKey)
|
||||
biomeRegistry.getOptionalValue(vanillaKey)
|
||||
.ifPresentOrElse(vanillaBiome -> {
|
||||
Identifier terraBiomeIdentifier = Identifier.of("terra", MinecraftUtil.createBiomeID(pack, id));
|
||||
biomeRegistry.getOrEmpty(terraBiomeIdentifier).ifPresentOrElse(
|
||||
biomeRegistry.getOptionalValue(terraBiomeIdentifier).ifPresentOrElse(
|
||||
terraBiome -> {
|
||||
List<ConfiguredFeature<?, ?>> flowerFeatures = List.copyOf(
|
||||
vanillaBiome.getGenerationSettings()
|
||||
|
@ -146,15 +146,14 @@ public class PresetUtil {
|
||||
Registry<MultiNoiseBiomeSourceParameterList> multiNoiseBiomeSourceParameterLists,
|
||||
Registry<Biome> biomeRegistry, HashMap<RegistryKey<DimensionOptions>, DimensionOptions> map) {
|
||||
if(!map.containsKey(DimensionOptions.OVERWORLD)) {
|
||||
RegistryEntry<DimensionType> overworldDimensionType = dimensionTypeRegistry.getEntry(DimensionTypes.OVERWORLD).orElseThrow();
|
||||
RegistryEntry<DimensionType> overworldDimensionType = dimensionTypeRegistry.getEntry(dimensionTypeRegistry.get(DimensionTypes.OVERWORLD));
|
||||
|
||||
RegistryEntry.Reference<MultiNoiseBiomeSourceParameterList> overworldChunkBiomeReference =
|
||||
multiNoiseBiomeSourceParameterLists.getEntry(
|
||||
MultiNoiseBiomeSourceParameterLists.OVERWORLD).orElseThrow();
|
||||
RegistryEntry<MultiNoiseBiomeSourceParameterList> overworldChunkBiomeReference =
|
||||
multiNoiseBiomeSourceParameterLists.getEntry(multiNoiseBiomeSourceParameterLists.get(
|
||||
MultiNoiseBiomeSourceParameterLists.OVERWORLD));
|
||||
|
||||
RegistryEntry<ChunkGeneratorSettings> overworldChunkGeneratorSettings = chunkGeneratorSettingsRegistry.getEntry(
|
||||
ChunkGeneratorSettings.OVERWORLD)
|
||||
.orElseThrow();
|
||||
RegistryEntry<ChunkGeneratorSettings> overworldChunkGeneratorSettings = chunkGeneratorSettingsRegistry.getEntry(chunkGeneratorSettingsRegistry.get(
|
||||
ChunkGeneratorSettings.OVERWORLD));
|
||||
|
||||
|
||||
DimensionOptions overworldDimensionOptions = new DimensionOptions(overworldDimensionType,
|
||||
@ -162,31 +161,28 @@ public class PresetUtil {
|
||||
map.put(DimensionOptions.OVERWORLD, overworldDimensionOptions);
|
||||
}
|
||||
if(!map.containsKey(DimensionOptions.NETHER)) {
|
||||
RegistryEntry<DimensionType> netherDimensionType = dimensionTypeRegistry.getEntry(DimensionTypes.THE_NETHER).orElseThrow();
|
||||
RegistryEntry<DimensionType> netherDimensionType = dimensionTypeRegistry.getEntry(dimensionTypeRegistry.get(DimensionTypes.THE_NETHER));
|
||||
|
||||
RegistryEntry.Reference<MultiNoiseBiomeSourceParameterList> netherChunkBiomeReference =
|
||||
multiNoiseBiomeSourceParameterLists.getEntry(
|
||||
MultiNoiseBiomeSourceParameterLists.NETHER).orElseThrow();
|
||||
|
||||
RegistryEntry<ChunkGeneratorSettings> netherChunkGeneratorSettings = chunkGeneratorSettingsRegistry.getEntry(
|
||||
ChunkGeneratorSettings.NETHER)
|
||||
.orElseThrow();
|
||||
RegistryEntry<MultiNoiseBiomeSourceParameterList> netherChunkBiomeReference =
|
||||
multiNoiseBiomeSourceParameterLists.getEntry(multiNoiseBiomeSourceParameterLists.get(
|
||||
MultiNoiseBiomeSourceParameterLists.NETHER));
|
||||
|
||||
RegistryEntry<ChunkGeneratorSettings> netherChunkGeneratorSettings = chunkGeneratorSettingsRegistry.getEntry(chunkGeneratorSettingsRegistry.get(
|
||||
ChunkGeneratorSettings.NETHER));
|
||||
|
||||
DimensionOptions overworldDimensionOptions = new DimensionOptions(netherDimensionType,
|
||||
(new NoiseChunkGenerator(MultiNoiseBiomeSource.create(netherChunkBiomeReference), netherChunkGeneratorSettings)));
|
||||
map.put(DimensionOptions.NETHER, overworldDimensionOptions);
|
||||
}
|
||||
if(!map.containsKey(DimensionOptions.END)) {
|
||||
RegistryEntry<DimensionType> endDimensionType = dimensionTypeRegistry.getEntry(DimensionTypes.THE_END).orElseThrow();
|
||||
RegistryEntry<DimensionType> endDimensionType = dimensionTypeRegistry.getEntry(dimensionTypeRegistry.get(DimensionTypes.THE_END));
|
||||
|
||||
RegistryEntry<ChunkGeneratorSettings> endChunkGeneratorSettings = chunkGeneratorSettingsRegistry.getEntry(
|
||||
ChunkGeneratorSettings.END)
|
||||
.orElseThrow();
|
||||
RegistryEntry<ChunkGeneratorSettings> endChunkGeneratorSettings = chunkGeneratorSettingsRegistry.getEntry(chunkGeneratorSettingsRegistry.get(
|
||||
ChunkGeneratorSettings.END));
|
||||
|
||||
|
||||
DimensionOptions overworldDimensionOptions = new DimensionOptions(endDimensionType,
|
||||
(new NoiseChunkGenerator(TheEndBiomeSource.createVanilla(biomeRegistry.getReadOnlyWrapper()), endChunkGeneratorSettings)));
|
||||
(new NoiseChunkGenerator(TheEndBiomeSource.createVanilla(biomeRegistry), endChunkGeneratorSettings)));
|
||||
map.put(DimensionOptions.END, overworldDimensionOptions);
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user