mirror of
https://github.com/PolyhedralDev/Terra.git
synced 2025-07-02 16:05:29 +00:00
fix preset creation
This commit is contained in:
parent
6f2c01ceb3
commit
ca2fe27fb3
@ -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);
|
||||
}
|
@ -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;
|
||||
}
|
||||
}
|
@ -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.mixin.access.WorldPresetsRegistrarAccessor;
|
||||
import com.dfsek.terra.mod.mixin_ifaces.RegistrarInstance;
|
||||
|
||||
import net.minecraft.registry.DynamicRegistryManager;
|
||||
import net.minecraft.registry.Registries;
|
||||
import net.minecraft.registry.Registry;
|
||||
import net.minecraft.registry.RegistryEntryLookup;
|
||||
import net.minecraft.registry.RegistryKeys;
|
||||
import net.minecraft.registry.entry.RegistryEntry;
|
||||
import net.minecraft.util.Identifier;
|
||||
import net.minecraft.world.biome.Biome;
|
||||
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.dimension.DimensionOptions;
|
||||
import net.minecraft.world.dimension.DimensionType;
|
||||
import net.minecraft.world.dimension.DimensionTypes;
|
||||
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.ChunkGeneratorSettings;
|
||||
import net.minecraft.world.gen.chunk.NoiseChunkGenerator;
|
||||
@ -40,25 +47,7 @@ public class PresetUtil {
|
||||
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();
|
||||
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<ChunkGeneratorSettings> overworld = chunkGeneratorSettingsRegistry.getEntry(ChunkGeneratorSettings.OVERWORLD)
|
||||
.orElseThrow();
|
||||
|
||||
@ -71,13 +60,7 @@ public class PresetUtil {
|
||||
ChunkGenerator generator = new MinecraftChunkGeneratorWrapper(biomeSource, pack, overworld);
|
||||
|
||||
DimensionOptions dimensionOptions = new DimensionOptions(overworldDimensionType, generator);
|
||||
WorldPreset preset = new WorldPreset(
|
||||
Map.of(
|
||||
DimensionOptions.OVERWORLD, dimensionOptions,
|
||||
DimensionOptions.NETHER, netherDimensionOptions,
|
||||
DimensionOptions.END, endDimensionOptions
|
||||
)
|
||||
);
|
||||
WorldPreset preset = ((WorldPresetsRegistrarAccessor) RegistrarInstance.INSTANCE).callCreatePreset(dimensionOptions);
|
||||
LOGGER.info("Created world type \"{}\"", generatorID);
|
||||
return Pair.of(generatorID, preset);
|
||||
}
|
||||
|
@ -1,2 +1,3 @@
|
||||
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.StructureAccessorAccessor",
|
||||
"access.VillagerTypeAccessor",
|
||||
"access.WorldPresetsRegistrarAccessor",
|
||||
"fix.BeeMoveGoalsUnsynchronizedRandomAccessFix",
|
||||
"fix.NetherFossilOptimization",
|
||||
"implementations.compat.GenerationSettingsFloraFeaturesMixin",
|
||||
@ -36,7 +37,8 @@
|
||||
"implementations.terra.inventory.meta.ItemStackMetaMixin",
|
||||
"implementations.terra.world.ChunkRegionMixin",
|
||||
"implementations.terra.world.ServerWorldMixin",
|
||||
"lifecycle.DataPackContentsMixin"
|
||||
"lifecycle.DataPackContentsMixin",
|
||||
"lifecycle.WorldPresetsRegistrarMixin"
|
||||
],
|
||||
"client": [
|
||||
],
|
||||
|
Loading…
x
Reference in New Issue
Block a user