mirror of
https://github.com/PolyhedralDev/Terra.git
synced 2026-06-17 14:21:08 +00:00
fix preset creation
This commit is contained in:
+13
@@ -0,0 +1,13 @@
|
|||||||
|
package com.dfsek.terra.mod.mixin.access;
|
||||||
|
|
||||||
|
import net.minecraft.world.dimension.DimensionOptions;
|
||||||
|
import net.minecraft.world.gen.WorldPreset;
|
||||||
|
import org.spongepowered.asm.mixin.Mixin;
|
||||||
|
import org.spongepowered.asm.mixin.gen.Invoker;
|
||||||
|
|
||||||
|
|
||||||
|
@Mixin(targets = "net.minecraft.world.gen.WorldPresets$Registrar")
|
||||||
|
public interface WorldPresetsRegistrarAccessor {
|
||||||
|
@Invoker("createPreset")
|
||||||
|
WorldPreset callCreatePreset(DimensionOptions dimensionOptions);
|
||||||
|
}
|
||||||
+23
@@ -0,0 +1,23 @@
|
|||||||
|
package com.dfsek.terra.mod.mixin.lifecycle;
|
||||||
|
|
||||||
|
import com.dfsek.terra.mod.mixin_ifaces.FloraFeatureHolder;
|
||||||
|
import com.dfsek.terra.mod.mixin_ifaces.RegistrarInstance;
|
||||||
|
|
||||||
|
import net.minecraft.registry.Registerable;
|
||||||
|
import net.minecraft.world.gen.WorldPreset;
|
||||||
|
import net.minecraft.world.gen.WorldPresets;
|
||||||
|
import org.spongepowered.asm.mixin.Implements;
|
||||||
|
import org.spongepowered.asm.mixin.Interface;
|
||||||
|
import org.spongepowered.asm.mixin.Mixin;
|
||||||
|
import org.spongepowered.asm.mixin.injection.At;
|
||||||
|
import org.spongepowered.asm.mixin.injection.Inject;
|
||||||
|
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
||||||
|
|
||||||
|
|
||||||
|
@Mixin(WorldPresets.Registrar.class)
|
||||||
|
public class WorldPresetsRegistrarMixin {
|
||||||
|
@Inject(at = @At("RETURN"), method = "<init>")
|
||||||
|
public void injectConstructor(Registerable<WorldPreset> presetRegisterable, CallbackInfo ci) {
|
||||||
|
RegistrarInstance.INSTANCE = (WorldPresets.Registrar) (Object) this;
|
||||||
|
}
|
||||||
|
}
|
||||||
+8
@@ -0,0 +1,8 @@
|
|||||||
|
package com.dfsek.terra.mod.mixin_ifaces;
|
||||||
|
|
||||||
|
import net.minecraft.world.gen.WorldPresets;
|
||||||
|
|
||||||
|
|
||||||
|
public class RegistrarInstance {
|
||||||
|
public static WorldPresets.Registrar INSTANCE;
|
||||||
|
}
|
||||||
@@ -2,19 +2,26 @@ package com.dfsek.terra.mod.util;
|
|||||||
|
|
||||||
import com.dfsek.terra.mod.ModPlatform;
|
import com.dfsek.terra.mod.ModPlatform;
|
||||||
|
|
||||||
|
import com.dfsek.terra.mod.mixin.access.WorldPresetsRegistrarAccessor;
|
||||||
|
import com.dfsek.terra.mod.mixin_ifaces.RegistrarInstance;
|
||||||
|
|
||||||
import net.minecraft.registry.DynamicRegistryManager;
|
import net.minecraft.registry.DynamicRegistryManager;
|
||||||
import net.minecraft.registry.Registries;
|
import net.minecraft.registry.Registries;
|
||||||
import net.minecraft.registry.Registry;
|
import net.minecraft.registry.Registry;
|
||||||
|
import net.minecraft.registry.RegistryEntryLookup;
|
||||||
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.util.Identifier;
|
import net.minecraft.util.Identifier;
|
||||||
import net.minecraft.world.biome.Biome;
|
import net.minecraft.world.biome.Biome;
|
||||||
import net.minecraft.world.biome.source.MultiNoiseBiomeSource;
|
import net.minecraft.world.biome.source.MultiNoiseBiomeSource;
|
||||||
|
import net.minecraft.world.biome.source.MultiNoiseBiomeSourceParameterList;
|
||||||
|
import net.minecraft.world.biome.source.MultiNoiseBiomeSourceParameterLists;
|
||||||
import net.minecraft.world.biome.source.TheEndBiomeSource;
|
import net.minecraft.world.biome.source.TheEndBiomeSource;
|
||||||
import net.minecraft.world.dimension.DimensionOptions;
|
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.gen.WorldPreset;
|
import net.minecraft.world.gen.WorldPreset;
|
||||||
|
import net.minecraft.world.gen.WorldPresets;
|
||||||
import net.minecraft.world.gen.chunk.ChunkGenerator;
|
import net.minecraft.world.gen.chunk.ChunkGenerator;
|
||||||
import net.minecraft.world.gen.chunk.ChunkGeneratorSettings;
|
import net.minecraft.world.gen.chunk.ChunkGeneratorSettings;
|
||||||
import net.minecraft.world.gen.chunk.NoiseChunkGenerator;
|
import net.minecraft.world.gen.chunk.NoiseChunkGenerator;
|
||||||
@@ -40,25 +47,7 @@ public class PresetUtil {
|
|||||||
Registry<DimensionType> dimensionTypeRegistry = platform.dimensionTypeRegistry();
|
Registry<DimensionType> dimensionTypeRegistry = platform.dimensionTypeRegistry();
|
||||||
Registry<ChunkGeneratorSettings> chunkGeneratorSettingsRegistry = platform.chunkGeneratorSettingsRegistry();
|
Registry<ChunkGeneratorSettings> chunkGeneratorSettingsRegistry = platform.chunkGeneratorSettingsRegistry();
|
||||||
|
|
||||||
RegistryEntry<DimensionType> theNetherDimensionType = dimensionTypeRegistry.getEntry(DimensionTypes.THE_NETHER).orElseThrow();
|
|
||||||
RegistryEntry<ChunkGeneratorSettings>
|
|
||||||
netherChunkGeneratorSettings = chunkGeneratorSettingsRegistry.getEntry(ChunkGeneratorSettings.NETHER).orElseThrow();
|
|
||||||
DimensionOptions netherDimensionOptions = new DimensionOptions(theNetherDimensionType,
|
|
||||||
new NoiseChunkGenerator(
|
|
||||||
MultiNoiseBiomeSource.Preset.NETHER.getBiomeSource(
|
|
||||||
platform.biomeRegistry().getReadOnlyWrapper()),
|
|
||||||
netherChunkGeneratorSettings));
|
|
||||||
RegistryEntry<DimensionType> theEndDimensionType = dimensionTypeRegistry.getEntry(DimensionTypes.THE_END).orElseThrow();
|
|
||||||
RegistryEntry<ChunkGeneratorSettings> endChunkGeneratorSettings = chunkGeneratorSettingsRegistry.getEntry(
|
|
||||||
ChunkGeneratorSettings.END).orElseThrow();
|
|
||||||
DimensionOptions endDimensionOptions = new DimensionOptions(theEndDimensionType,
|
|
||||||
new NoiseChunkGenerator(
|
|
||||||
TheEndBiomeSource.createVanilla(
|
|
||||||
platform.biomeRegistry().getReadOnlyWrapper()),
|
|
||||||
endChunkGeneratorSettings));
|
|
||||||
|
|
||||||
RegistryEntry<DimensionType> overworldDimensionType = dimensionTypeRegistry.getEntry(DimensionTypes.OVERWORLD).orElseThrow();
|
RegistryEntry<DimensionType> overworldDimensionType = dimensionTypeRegistry.getEntry(DimensionTypes.OVERWORLD).orElseThrow();
|
||||||
|
|
||||||
RegistryEntry<ChunkGeneratorSettings> overworld = chunkGeneratorSettingsRegistry.getEntry(ChunkGeneratorSettings.OVERWORLD)
|
RegistryEntry<ChunkGeneratorSettings> overworld = chunkGeneratorSettingsRegistry.getEntry(ChunkGeneratorSettings.OVERWORLD)
|
||||||
.orElseThrow();
|
.orElseThrow();
|
||||||
|
|
||||||
@@ -71,13 +60,7 @@ public class PresetUtil {
|
|||||||
ChunkGenerator generator = new MinecraftChunkGeneratorWrapper(biomeSource, pack, overworld);
|
ChunkGenerator generator = new MinecraftChunkGeneratorWrapper(biomeSource, pack, overworld);
|
||||||
|
|
||||||
DimensionOptions dimensionOptions = new DimensionOptions(overworldDimensionType, generator);
|
DimensionOptions dimensionOptions = new DimensionOptions(overworldDimensionType, generator);
|
||||||
WorldPreset preset = new WorldPreset(
|
WorldPreset preset = ((WorldPresetsRegistrarAccessor) RegistrarInstance.INSTANCE).callCreatePreset(dimensionOptions);
|
||||||
Map.of(
|
|
||||||
DimensionOptions.OVERWORLD, dimensionOptions,
|
|
||||||
DimensionOptions.NETHER, netherDimensionOptions,
|
|
||||||
DimensionOptions.END, endDimensionOptions
|
|
||||||
)
|
|
||||||
);
|
|
||||||
LOGGER.info("Created world type \"{}\"", generatorID);
|
LOGGER.info("Created world type \"{}\"", generatorID);
|
||||||
return Pair.of(generatorID, preset);
|
return Pair.of(generatorID, preset);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,2 +1,3 @@
|
|||||||
accessWidener v1 named
|
accessWidener v1 named
|
||||||
accessible class net/minecraft/world/biome/Biome$Weather
|
accessible class net/minecraft/world/biome/Biome$Weather
|
||||||
|
accessible class net/minecraft/world/gen/WorldPresets$Registrar
|
||||||
|
|||||||
@@ -9,6 +9,7 @@
|
|||||||
"access.StateAccessor",
|
"access.StateAccessor",
|
||||||
"access.StructureAccessorAccessor",
|
"access.StructureAccessorAccessor",
|
||||||
"access.VillagerTypeAccessor",
|
"access.VillagerTypeAccessor",
|
||||||
|
"access.WorldPresetsRegistrarAccessor",
|
||||||
"fix.BeeMoveGoalsUnsynchronizedRandomAccessFix",
|
"fix.BeeMoveGoalsUnsynchronizedRandomAccessFix",
|
||||||
"fix.NetherFossilOptimization",
|
"fix.NetherFossilOptimization",
|
||||||
"implementations.compat.GenerationSettingsFloraFeaturesMixin",
|
"implementations.compat.GenerationSettingsFloraFeaturesMixin",
|
||||||
@@ -36,7 +37,8 @@
|
|||||||
"implementations.terra.inventory.meta.ItemStackMetaMixin",
|
"implementations.terra.inventory.meta.ItemStackMetaMixin",
|
||||||
"implementations.terra.world.ChunkRegionMixin",
|
"implementations.terra.world.ChunkRegionMixin",
|
||||||
"implementations.terra.world.ServerWorldMixin",
|
"implementations.terra.world.ServerWorldMixin",
|
||||||
"lifecycle.DataPackContentsMixin"
|
"lifecycle.DataPackContentsMixin",
|
||||||
|
"lifecycle.WorldPresetsRegistrarMixin"
|
||||||
],
|
],
|
||||||
"client": [
|
"client": [
|
||||||
],
|
],
|
||||||
|
|||||||
Reference in New Issue
Block a user