Skip to content

Commit c64ebf5

Browse files
committed
ChunkGenerator
1 parent ac1448c commit c64ebf5

File tree

8 files changed

+81
-75
lines changed

8 files changed

+81
-75
lines changed

src/main/java/com/cyao/FlatMinecraft.java

+7
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,9 @@
11
package com.cyao;
22

33
import net.fabricmc.api.ModInitializer;
4+
import net.minecraft.registry.Registries;
5+
import net.minecraft.registry.Registry;
6+
import net.minecraft.util.Identifier;
47
import org.slf4j.Logger;
58
import org.slf4j.LoggerFactory;
69

@@ -11,5 +14,9 @@ public class FlatMinecraft implements ModInitializer {
1114
@Override
1215
public void onInitialize() {
1316
LOGGER.info("Initializing mod");
17+
18+
Registry.register(Registries.CHUNK_GENERATOR,
19+
Identifier.of(MOD_ID, "paper_world"),
20+
PaperWorldGenerator.CODEC);
1421
}
1522
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
package com.cyao;
2+
3+
import net.minecraft.block.BlockState;
4+
import net.minecraft.block.Blocks;
5+
import net.minecraft.registry.entry.RegistryEntry;
6+
import net.minecraft.world.biome.source.BiomeSource;
7+
import net.minecraft.world.gen.chunk.ChunkGeneratorSettings;
8+
import net.minecraft.world.gen.chunk.NoiseChunkGenerator;
9+
10+
public class PaperWorldGenerator extends NoiseChunkGenerator {
11+
private static final BlockState AIR = Blocks.AIR.getDefaultState();
12+
13+
public PaperWorldGenerator(BiomeSource biomeSource, RegistryEntry<ChunkGeneratorSettings> settings) {
14+
super(biomeSource, settings);
15+
System.out.println("Hello Paper Chunk Generator!");
16+
}
17+
}

src/main/java/com/cyao/mixin/ChunkMixin.java

-73
This file was deleted.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
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+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
{
2+
"generator.flat-minecraft.paper_world": "Nothing but Void"
3+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
{
2+
"replace": false,
3+
"values": [
4+
"flat-minecraft:paper_world"
5+
]
6+
}

src/main/resources/flat-minecraft.accesswidener

+2-1
Original file line numberDiff line numberDiff line change
@@ -4,4 +4,5 @@ accessible method net/minecraft/world/gen/chunk/ChunkNoiseSampler createMul
44
accessible class net/minecraft/world/gen/densityfunction/DensityFunctionTypes$Beardifier
55
accessible method net/minecraft/world/gen/chunk/ChunkNoiseSampler getVerticalCellBlockCount ()I
66
accessible method net/minecraft/world/gen/chunk/ChunkNoiseSampler getHorizontalCellBlockCount ()I
7-
accessible method net/minecraft/world/gen/chunk/ChunkNoiseSampler sampleBlockState ()Lnet/minecraft/block/BlockState;
7+
accessible method net/minecraft/world/gen/chunk/ChunkNoiseSampler sampleBlockState ()Lnet/minecraft/block/BlockState;
8+
extendable class net/minecraft/world/gen/chunk/NoiseChunkGenerator

src/main/resources/flat-minecraft.mixins.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
"mixins": [
66
"CameraMixin",
77
"GameOptionsMixin",
8-
"ChunkMixin"
8+
"WordPresetMixin"
99
],
1010
"injectors": {
1111
"defaultRequire": 1

0 commit comments

Comments
 (0)