mirror of
https://github.com/PolyhedralDev/Terra.git
synced 2025-07-18 02:22:32 +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.DynamicRegistryManager;
|
||||||
|
import net.minecraft.registry.Registry;
|
||||||
import net.minecraft.registry.RegistryKey;
|
import net.minecraft.registry.RegistryKey;
|
||||||
import net.minecraft.registry.RegistryKeys;
|
import net.minecraft.registry.RegistryKeys;
|
||||||
import net.minecraft.registry.entry.RegistryEntry;
|
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.server.world.ServerWorld;
|
||||||
|
import net.minecraft.util.math.random.RandomSequencesState;
|
||||||
import net.minecraft.util.profiler.Profiler;
|
import net.minecraft.util.profiler.Profiler;
|
||||||
import net.minecraft.village.raid.RaidManager;
|
import net.minecraft.village.raid.RaidManager;
|
||||||
import net.minecraft.world.MutableWorldProperties;
|
import net.minecraft.world.MutableWorldProperties;
|
||||||
import net.minecraft.world.World;
|
import net.minecraft.world.World;
|
||||||
|
import net.minecraft.world.dimension.DimensionOptions;
|
||||||
import net.minecraft.world.dimension.DimensionType;
|
import net.minecraft.world.dimension.DimensionType;
|
||||||
import net.minecraft.world.dimension.DimensionTypes;
|
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.Mixin;
|
||||||
import org.spongepowered.asm.mixin.injection.At;
|
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.concurrent.Executor;
|
||||||
import java.util.function.Supplier;
|
import java.util.function.Supplier;
|
||||||
|
|
||||||
|
|
||||||
@Mixin(ServerWorld.class)
|
@Mixin(ServerWorld.class)
|
||||||
public abstract class ServerWorldMixin extends World {
|
public abstract class ServerWorldMixin extends World {
|
||||||
protected ServerWorldMixin(MutableWorldProperties properties, RegistryKey<World> registryRef, DynamicRegistryManager registryManager,
|
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) {
|
||||||
RegistryEntry<DimensionType> dimensionEntry, Supplier<Profiler> profiler, boolean isClient,
|
super(properties, worldKey, server.getRegistryManager(), dimensionOptions.dimensionTypeEntry(), false, debugWorld, seed, server.getMaxChainedNeighborUpdates());
|
||||||
boolean debugWorld, long biomeAccess, int maxChainedNeighborUpdates) {
|
|
||||||
super(properties, registryRef, registryManager, dimensionEntry, profiler, isClient, debugWorld, biomeAccess,
|
|
||||||
maxChainedNeighborUpdates);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Redirect(method = "<init>",
|
@Redirect(method = "<init>",
|
||||||
@ -45,7 +53,9 @@ public abstract class ServerWorldMixin extends World {
|
|||||||
public String nameForProxy(RegistryEntry<DimensionType> dimensionTypeEntry) {
|
public String nameForProxy(RegistryEntry<DimensionType> dimensionTypeEntry) {
|
||||||
RegistryEntry<DimensionType> entry = dimensionTypeEntry;
|
RegistryEntry<DimensionType> entry = dimensionTypeEntry;
|
||||||
if(this.getRegistryKey() == World.END) {
|
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);
|
return RaidManager.nameFor(entry);
|
||||||
}
|
}
|
||||||
|
@ -71,7 +71,7 @@ public final class MinecraftUtil {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static void registerFlora(Registry<net.minecraft.world.biome.Biome> biomeRegistry) {
|
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.
|
CommonPlatform.get().getConfigRegistry().forEach(pack -> { // Register all Terra biomes.
|
||||||
PreLoadCompatibilityOptions compatibilityOptions = pack.getContext().get(PreLoadCompatibilityOptions.class);
|
PreLoadCompatibilityOptions compatibilityOptions = pack.getContext().get(PreLoadCompatibilityOptions.class);
|
||||||
if(compatibilityOptions.isInjectFlora()) {
|
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,
|
public static void registerFlora(com.dfsek.terra.api.world.biome.Biome biome, ConfigPack pack,
|
||||||
com.dfsek.terra.api.registry.key.RegistryKey id,
|
com.dfsek.terra.api.registry.key.RegistryKey id,
|
||||||
Registry<net.minecraft.world.biome.Biome> biomeRegistry) {
|
Registry<net.minecraft.world.biome.Biome> biomeRegistry) {
|
||||||
RegistryKey<net.minecraft.world.biome.Biome> vanillaKey = ((ProtoPlatformBiome) biome.getPlatformBiome()).get(biomeRegistry);
|
RegistryKey<net.minecraft.world.biome.Biome> vanillaKey = ((ProtoPlatformBiome) biome.getPlatformBiome()).get(biomeRegistry);
|
||||||
biomeRegistry.getOrEmpty(vanillaKey)
|
biomeRegistry.getOptionalValue(vanillaKey)
|
||||||
.ifPresentOrElse(vanillaBiome -> {
|
.ifPresentOrElse(vanillaBiome -> {
|
||||||
Identifier terraBiomeIdentifier = Identifier.of("terra", MinecraftUtil.createBiomeID(pack, id));
|
Identifier terraBiomeIdentifier = Identifier.of("terra", MinecraftUtil.createBiomeID(pack, id));
|
||||||
biomeRegistry.getOrEmpty(terraBiomeIdentifier).ifPresentOrElse(
|
biomeRegistry.getOptionalValue(terraBiomeIdentifier).ifPresentOrElse(
|
||||||
terraBiome -> {
|
terraBiome -> {
|
||||||
List<ConfiguredFeature<?, ?>> flowerFeatures = List.copyOf(
|
List<ConfiguredFeature<?, ?>> flowerFeatures = List.copyOf(
|
||||||
vanillaBiome.getGenerationSettings()
|
vanillaBiome.getGenerationSettings()
|
||||||
|
@ -146,15 +146,14 @@ public class PresetUtil {
|
|||||||
Registry<MultiNoiseBiomeSourceParameterList> multiNoiseBiomeSourceParameterLists,
|
Registry<MultiNoiseBiomeSourceParameterList> multiNoiseBiomeSourceParameterLists,
|
||||||
Registry<Biome> biomeRegistry, HashMap<RegistryKey<DimensionOptions>, DimensionOptions> map) {
|
Registry<Biome> biomeRegistry, HashMap<RegistryKey<DimensionOptions>, DimensionOptions> map) {
|
||||||
if(!map.containsKey(DimensionOptions.OVERWORLD)) {
|
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 =
|
RegistryEntry<MultiNoiseBiomeSourceParameterList> overworldChunkBiomeReference =
|
||||||
multiNoiseBiomeSourceParameterLists.getEntry(
|
multiNoiseBiomeSourceParameterLists.getEntry(multiNoiseBiomeSourceParameterLists.get(
|
||||||
MultiNoiseBiomeSourceParameterLists.OVERWORLD).orElseThrow();
|
MultiNoiseBiomeSourceParameterLists.OVERWORLD));
|
||||||
|
|
||||||
RegistryEntry<ChunkGeneratorSettings> overworldChunkGeneratorSettings = chunkGeneratorSettingsRegistry.getEntry(
|
RegistryEntry<ChunkGeneratorSettings> overworldChunkGeneratorSettings = chunkGeneratorSettingsRegistry.getEntry(chunkGeneratorSettingsRegistry.get(
|
||||||
ChunkGeneratorSettings.OVERWORLD)
|
ChunkGeneratorSettings.OVERWORLD));
|
||||||
.orElseThrow();
|
|
||||||
|
|
||||||
|
|
||||||
DimensionOptions overworldDimensionOptions = new DimensionOptions(overworldDimensionType,
|
DimensionOptions overworldDimensionOptions = new DimensionOptions(overworldDimensionType,
|
||||||
@ -162,31 +161,28 @@ public class PresetUtil {
|
|||||||
map.put(DimensionOptions.OVERWORLD, overworldDimensionOptions);
|
map.put(DimensionOptions.OVERWORLD, overworldDimensionOptions);
|
||||||
}
|
}
|
||||||
if(!map.containsKey(DimensionOptions.NETHER)) {
|
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 =
|
RegistryEntry<MultiNoiseBiomeSourceParameterList> netherChunkBiomeReference =
|
||||||
multiNoiseBiomeSourceParameterLists.getEntry(
|
multiNoiseBiomeSourceParameterLists.getEntry(multiNoiseBiomeSourceParameterLists.get(
|
||||||
MultiNoiseBiomeSourceParameterLists.NETHER).orElseThrow();
|
MultiNoiseBiomeSourceParameterLists.NETHER));
|
||||||
|
|
||||||
RegistryEntry<ChunkGeneratorSettings> netherChunkGeneratorSettings = chunkGeneratorSettingsRegistry.getEntry(
|
|
||||||
ChunkGeneratorSettings.NETHER)
|
|
||||||
.orElseThrow();
|
|
||||||
|
|
||||||
|
RegistryEntry<ChunkGeneratorSettings> netherChunkGeneratorSettings = chunkGeneratorSettingsRegistry.getEntry(chunkGeneratorSettingsRegistry.get(
|
||||||
|
ChunkGeneratorSettings.NETHER));
|
||||||
|
|
||||||
DimensionOptions overworldDimensionOptions = new DimensionOptions(netherDimensionType,
|
DimensionOptions overworldDimensionOptions = new DimensionOptions(netherDimensionType,
|
||||||
(new NoiseChunkGenerator(MultiNoiseBiomeSource.create(netherChunkBiomeReference), netherChunkGeneratorSettings)));
|
(new NoiseChunkGenerator(MultiNoiseBiomeSource.create(netherChunkBiomeReference), netherChunkGeneratorSettings)));
|
||||||
map.put(DimensionOptions.NETHER, overworldDimensionOptions);
|
map.put(DimensionOptions.NETHER, overworldDimensionOptions);
|
||||||
}
|
}
|
||||||
if(!map.containsKey(DimensionOptions.END)) {
|
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(
|
RegistryEntry<ChunkGeneratorSettings> endChunkGeneratorSettings = chunkGeneratorSettingsRegistry.getEntry(chunkGeneratorSettingsRegistry.get(
|
||||||
ChunkGeneratorSettings.END)
|
ChunkGeneratorSettings.END));
|
||||||
.orElseThrow();
|
|
||||||
|
|
||||||
|
|
||||||
DimensionOptions overworldDimensionOptions = new DimensionOptions(endDimensionType,
|
DimensionOptions overworldDimensionOptions = new DimensionOptions(endDimensionType,
|
||||||
(new NoiseChunkGenerator(TheEndBiomeSource.createVanilla(biomeRegistry.getReadOnlyWrapper()), endChunkGeneratorSettings)));
|
(new NoiseChunkGenerator(TheEndBiomeSource.createVanilla(biomeRegistry), endChunkGeneratorSettings)));
|
||||||
map.put(DimensionOptions.END, overworldDimensionOptions);
|
map.put(DimensionOptions.END, overworldDimensionOptions);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user