|
| 1 | +package com.cyao.mixin; |
| 2 | + |
| 3 | +import com.cyao.FlatMinecraft; |
| 4 | +import com.cyao.PaperWorldGenerator; |
| 5 | +import net.minecraft.registry.RegistryEntryLookup; |
| 6 | +import net.minecraft.registry.RegistryKeys; |
| 7 | +import net.minecraft.registry.RegistryKey; |
| 8 | +import net.minecraft.registry.entry.RegistryEntry; |
| 9 | +import net.minecraft.util.Identifier; |
| 10 | +import net.minecraft.world.biome.source.MultiNoiseBiomeSource; |
| 11 | +import net.minecraft.world.biome.source.MultiNoiseBiomeSourceParameterList; |
| 12 | +import net.minecraft.world.biome.source.MultiNoiseBiomeSourceParameterLists; |
| 13 | +import net.minecraft.world.dimension.DimensionOptions; |
| 14 | +import net.minecraft.world.gen.WorldPresets; |
| 15 | +import net.minecraft.world.gen.WorldPreset; |
| 16 | +import net.minecraft.world.gen.chunk.ChunkGenerator; |
| 17 | +import net.minecraft.world.gen.chunk.ChunkGeneratorSettings; |
| 18 | +import org.spongepowered.asm.mixin.Final; |
| 19 | +import org.spongepowered.asm.mixin.Mixin; |
| 20 | +import org.spongepowered.asm.mixin.Unique; |
| 21 | +import org.spongepowered.asm.mixin.Shadow; |
| 22 | +import org.spongepowered.asm.mixin.injection.At; |
| 23 | +import org.spongepowered.asm.mixin.injection.Inject; |
| 24 | +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; |
| 25 | + |
| 26 | +@Mixin(WorldPresets.Registrar.class) |
| 27 | +public abstract class WordPresetMixin { |
| 28 | + @Unique |
| 29 | + private static final RegistryKey<WorldPreset> PAPER_WORLD = RegistryKey.of(RegistryKeys.WORLD_PRESET, Identifier.of(FlatMinecraft.MOD_ID, "paper_world")); |
| 30 | + @Shadow protected abstract void register(RegistryKey<WorldPreset> key, DimensionOptions dimensionOptions); |
| 31 | + @Shadow protected abstract DimensionOptions createOverworldOptions(ChunkGenerator chunkGenerator); |
| 32 | + |
| 33 | + @Shadow @Final private RegistryEntryLookup<ChunkGeneratorSettings> chunkGeneratorSettingsLookup; |
| 34 | + |
| 35 | + @Shadow @Final private RegistryEntryLookup<MultiNoiseBiomeSourceParameterList> multiNoisePresetLookup; |
| 36 | + |
| 37 | + @Inject(method = "bootstrap()V", at = @At("RETURN"), remap = false) |
| 38 | + private void addPresets(CallbackInfo ci) { |
| 39 | + this.register(PAPER_WORLD, this.createOverworldOptions( |
| 40 | + new PaperWorldGenerator( |
| 41 | + MultiNoiseBiomeSource.create(this.multiNoisePresetLookup.getOrThrow(MultiNoiseBiomeSourceParameterLists.OVERWORLD)), |
| 42 | + this.chunkGeneratorSettingsLookup.getOrThrow(ChunkGeneratorSettings.OVERWORLD)) |
| 43 | + )); |
| 44 | + } |
| 45 | +} |
0 commit comments