From 12130a96027f6399b13163cea6414a19bf6d7db2 Mon Sep 17 00:00:00 2001 From: Jottyfan Date: Sat, 24 Jan 2026 15:15:48 +0100 Subject: [PATCH] ore generation --- .../java/de/jottyfan/minecraft/Gtamfmd.java | 2 ++ .../world/ModConfiguredFeatures.java | 21 +++++++++++++++ .../minecraft/world/ModPlacedFeatures.java | 20 ++++++++++++++ .../minecraft/world/gen/ModOreGeneration.java | 14 ++++++++++ .../configured_feature/ruby_ore_cf.json | 21 +++++++++++++++ .../worldgen/placed_feature/ruby_ore_pf.json | 27 +++++++++++++++++++ 6 files changed, 105 insertions(+) create mode 100644 src/main/java/de/jottyfan/minecraft/world/ModConfiguredFeatures.java create mode 100644 src/main/java/de/jottyfan/minecraft/world/ModPlacedFeatures.java create mode 100644 src/main/java/de/jottyfan/minecraft/world/gen/ModOreGeneration.java create mode 100644 src/main/resources/data/gtamfmd/worldgen/configured_feature/ruby_ore_cf.json create mode 100644 src/main/resources/data/gtamfmd/worldgen/placed_feature/ruby_ore_pf.json diff --git a/src/main/java/de/jottyfan/minecraft/Gtamfmd.java b/src/main/java/de/jottyfan/minecraft/Gtamfmd.java index f1b7fc5..b454014 100644 --- a/src/main/java/de/jottyfan/minecraft/Gtamfmd.java +++ b/src/main/java/de/jottyfan/minecraft/Gtamfmd.java @@ -7,6 +7,7 @@ import org.slf4j.LoggerFactory; import de.jottyfan.minecraft.block.ModBlocks; import de.jottyfan.minecraft.item.ModItems; +import de.jottyfan.minecraft.world.gen.ModOreGeneration; public class Gtamfmd implements ModInitializer { public static final String MOD_ID = "gtamfmd"; @@ -16,6 +17,7 @@ public class Gtamfmd implements ModInitializer { public void onInitialize() { ModItems.registerModItems(); ModBlocks.registerModBlocks(); + ModOreGeneration.generateOres(); } } diff --git a/src/main/java/de/jottyfan/minecraft/world/ModConfiguredFeatures.java b/src/main/java/de/jottyfan/minecraft/world/ModConfiguredFeatures.java new file mode 100644 index 0000000..832afc3 --- /dev/null +++ b/src/main/java/de/jottyfan/minecraft/world/ModConfiguredFeatures.java @@ -0,0 +1,21 @@ +package de.jottyfan.minecraft.world; + +import de.jottyfan.minecraft.Gtamfmd; +import net.minecraft.registry.RegistryKey; +import net.minecraft.registry.RegistryKeys; +import net.minecraft.util.Identifier; +import net.minecraft.world.gen.feature.ConfiguredFeature; + +/** + * + * @author jotty + * + */ +public class ModConfiguredFeatures { + public static final RegistryKey> RUBY_ORE_CF = registerKey("ruby_ore_cf"); + + private static RegistryKey> registerKey(String name) { + return RegistryKey.of(RegistryKeys.CONFIGURED_FEATURE, Identifier.of(Gtamfmd.MOD_ID, name)); + } + +} diff --git a/src/main/java/de/jottyfan/minecraft/world/ModPlacedFeatures.java b/src/main/java/de/jottyfan/minecraft/world/ModPlacedFeatures.java new file mode 100644 index 0000000..764693a --- /dev/null +++ b/src/main/java/de/jottyfan/minecraft/world/ModPlacedFeatures.java @@ -0,0 +1,20 @@ +package de.jottyfan.minecraft.world; + +import de.jottyfan.minecraft.Gtamfmd; +import net.minecraft.registry.RegistryKey; +import net.minecraft.registry.RegistryKeys; +import net.minecraft.util.Identifier; +import net.minecraft.world.gen.feature.PlacedFeature; + +/** + * + * @author jotty + * + */ +public class ModPlacedFeatures { + public static final RegistryKey RUBY_ORE_PF = registerKey("ruby_ore_pf"); + + private static RegistryKey registerKey(String name) { + return RegistryKey.of(RegistryKeys.PLACED_FEATURE, Identifier.of(Gtamfmd.MOD_ID, name)); + } +} diff --git a/src/main/java/de/jottyfan/minecraft/world/gen/ModOreGeneration.java b/src/main/java/de/jottyfan/minecraft/world/gen/ModOreGeneration.java new file mode 100644 index 0000000..2833032 --- /dev/null +++ b/src/main/java/de/jottyfan/minecraft/world/gen/ModOreGeneration.java @@ -0,0 +1,14 @@ +package de.jottyfan.minecraft.world.gen; + +import de.jottyfan.minecraft.world.ModPlacedFeatures; +import net.fabricmc.fabric.api.biome.v1.BiomeModifications; +import net.fabricmc.fabric.api.biome.v1.BiomeSelectors; +import net.minecraft.world.gen.GenerationStep; + +public class ModOreGeneration { + public static void generateOres() { + BiomeModifications.addFeature(BiomeSelectors.foundInOverworld(), + GenerationStep.Feature.UNDERGROUND_ORES, + ModPlacedFeatures.RUBY_ORE_PF); + } +} diff --git a/src/main/resources/data/gtamfmd/worldgen/configured_feature/ruby_ore_cf.json b/src/main/resources/data/gtamfmd/worldgen/configured_feature/ruby_ore_cf.json new file mode 100644 index 0000000..45b7c58 --- /dev/null +++ b/src/main/resources/data/gtamfmd/worldgen/configured_feature/ruby_ore_cf.json @@ -0,0 +1,21 @@ +{ "type": "minecraft:ore", + "config": { + "discard_chance_on_air_exposure": 0.0, + "size": 20, + "targets": [ + { + "state": { "Name": "gtamfmd:ruby_ore" }, + "target": { + "predicate_type": "minecraft:tag_match", + "tag": "minecraft:stone_ore_replaceables" + } + }, { + "state": { "Name": "gtamfmd:ruby_deepslate_ore" }, + "target": { + "predicate_type": "minecraft:tag_match", + "tag": "minecraft:deepslate_ore_replaceables" + } + } + ] + } +} \ No newline at end of file diff --git a/src/main/resources/data/gtamfmd/worldgen/placed_feature/ruby_ore_pf.json b/src/main/resources/data/gtamfmd/worldgen/placed_feature/ruby_ore_pf.json new file mode 100644 index 0000000..10fc89b --- /dev/null +++ b/src/main/resources/data/gtamfmd/worldgen/placed_feature/ruby_ore_pf.json @@ -0,0 +1,27 @@ +{ + "feature": "gtamfmd:ruby_ore_cf", + "placement": [ + { + "type": "minecraft:count", + "count": 16 + }, + { + "type": "minecraft:in_square" + }, + { + "type": "minecraft:height_range", + "height": { + "type": "minecraft:trapezoid", + "max_inclusive": { + "absolute": 80 + }, + "min_inclusive": { + "absolute": -80 + } + } + }, + { + "type": "minecraft:biome" + } + ] +} \ No newline at end of file