diff --git a/src/generated/resources/.cache/103d9f3f36b01595f1aa5172191e60eff02e6924 b/src/generated/resources/.cache/103d9f3f36b01595f1aa5172191e60eff02e6924 index efa9f9e..6536c9a 100644 --- a/src/generated/resources/.cache/103d9f3f36b01595f1aa5172191e60eff02e6924 +++ b/src/generated/resources/.cache/103d9f3f36b01595f1aa5172191e60eff02e6924 @@ -1 +1,4 @@ -// 1.21.1 2026-10-16T12:47:44.582744189 Registries +// 1.21.1 2026-10-16T17:32:07.979256216 Registries +700b25a72289a4bcd855011fdf11ca063d5e8f5c data/ichori/neoforge/biome_modifier/add_crystallized_titan_blood_ore.json +ce067366bedbf6197b732a591f2d718d11f54526 data/ichori/worldgen/configured_feature/crystallized_titan_blood_ore.json +3a6627a2e1be97d203e3566e0003da62e79815e2 data/ichori/worldgen/placed_feature/crystallized_titan_blood_ore_placed.json diff --git a/src/generated/resources/.cache/3dde5a5e0e8dac7251d2bb76f81252fe4f9cf366 b/src/generated/resources/.cache/3dde5a5e0e8dac7251d2bb76f81252fe4f9cf366 index e51edb0..8d82f9f 100644 --- a/src/generated/resources/.cache/3dde5a5e0e8dac7251d2bb76f81252fe4f9cf366 +++ b/src/generated/resources/.cache/3dde5a5e0e8dac7251d2bb76f81252fe4f9cf366 @@ -1,2 +1,4 @@ -// 1.21.1 2026-10-16T12:47:44.582965674 Tags for minecraft:block mod id ichori -35133e95f1c8fdd7a1c21afcc231fc0bffefb9a8 data/minecraft/tags/block/mineable/pickaxe.json +// 1.21.1 2026-10-16T17:37:22.059655057 Tags for minecraft:block mod id ichori +d708ebc10f30234260a2976f762f93856c5243b1 data/c/tags/block/ores.json +d708ebc10f30234260a2976f762f93856c5243b1 data/minecraft/tags/block/mineable/pickaxe.json +d708ebc10f30234260a2976f762f93856c5243b1 data/minecraft/tags/block/needs_iron_tool.json diff --git a/src/generated/resources/.cache/400b19a18f16f3d3fdf6ea18a8b40f6761b7a871 b/src/generated/resources/.cache/400b19a18f16f3d3fdf6ea18a8b40f6761b7a871 index 886d0dc..3fb4fe2 100644 --- a/src/generated/resources/.cache/400b19a18f16f3d3fdf6ea18a8b40f6761b7a871 +++ b/src/generated/resources/.cache/400b19a18f16f3d3fdf6ea18a8b40f6761b7a871 @@ -1,2 +1,2 @@ -// 1.21.1 2026-10-16T12:47:44.582288393 Languages: en_us for mod: ichori -5fbe0d5f50f86e79824a0a050bd84d984933d48e assets/ichori/lang/en_us.json +// 1.21.1 2026-10-16T17:24:15.602414658 Languages: en_us for mod: ichori +8ef90bc1d96569bc9f92d2c7f353bec776dc940e assets/ichori/lang/en_us.json diff --git a/src/generated/resources/.cache/59eb3dbb5f86130e09b3c62d89b9525ee01cf52d b/src/generated/resources/.cache/59eb3dbb5f86130e09b3c62d89b9525ee01cf52d index f31e906..0834b96 100644 --- a/src/generated/resources/.cache/59eb3dbb5f86130e09b3c62d89b9525ee01cf52d +++ b/src/generated/resources/.cache/59eb3dbb5f86130e09b3c62d89b9525ee01cf52d @@ -1 +1,3 @@ -// 1.21.1 2026-10-16T12:47:44.582476236 Loot Tables +// 1.21.1 2026-10-16T17:16:18.405679243 Loot Tables +1f490228eed4f1cff55ed6c7efe519127e1122c3 data/ichori/loot_table/blocks/crystallized_titan_blood_ore.json +eb924473a46fcd5d5ea51cb29442d20385b5137f data/ichori/loot_table/blocks/magic_tourch.json diff --git a/src/generated/resources/.cache/5e0d3297a6115240f463832174b73fdacea9840e b/src/generated/resources/.cache/5e0d3297a6115240f463832174b73fdacea9840e index c9a6160..b6718c3 100644 --- a/src/generated/resources/.cache/5e0d3297a6115240f463832174b73fdacea9840e +++ b/src/generated/resources/.cache/5e0d3297a6115240f463832174b73fdacea9840e @@ -1 +1,4 @@ -// 1.21.1 2026-10-16T12:47:44.583089988 Block States: ichori +// 1.21.1 2026-10-16T17:16:18.407224089 Block States: ichori +caf011e7ed138275ef84daabc43e99da203e1007 assets/ichori/blockstates/crystallized_titan_blood_ore.json +d7682b2247f899ca2a3ed52e644ac65ea2190aa9 assets/ichori/models/block/crystallized_titan_blood_ore.json +5cdc6847ed525dc5bae1cf984da11828d6eab0f5 assets/ichori/models/item/crystallized_titan_blood_ore.json diff --git a/src/generated/resources/.cache/9b880295f71a0e6aa23e96d38002ee07e356516d b/src/generated/resources/.cache/9b880295f71a0e6aa23e96d38002ee07e356516d index cb1bcc4..8057631 100644 --- a/src/generated/resources/.cache/9b880295f71a0e6aa23e96d38002ee07e356516d +++ b/src/generated/resources/.cache/9b880295f71a0e6aa23e96d38002ee07e356516d @@ -1,3 +1,4 @@ -// 1.21.1 2026-10-16T15:55:28.827063419 Item Models: ichori +// 1.21.1 2026-10-16T17:16:18.406820354 Item Models: ichori +ce7dbebc585f4127dbb6cf62fd98de5b7a115756 assets/ichori/models/item/crystallized_titan_blood.json be44db6dcd5cd06217ef4e7a8025a21185ac48ac assets/ichori/models/item/test_spawn_light.json be44db6dcd5cd06217ef4e7a8025a21185ac48ac assets/ichori/models/item/test_spawn_magic_tourch.json diff --git a/src/generated/resources/assets/ichori/blockstates/crystallized_titan_blood_ore.json b/src/generated/resources/assets/ichori/blockstates/crystallized_titan_blood_ore.json new file mode 100644 index 0000000..8af539b --- /dev/null +++ b/src/generated/resources/assets/ichori/blockstates/crystallized_titan_blood_ore.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "ichori:block/crystallized_titan_blood_ore" + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/ichori/lang/en_us.json b/src/generated/resources/assets/ichori/lang/en_us.json index 9c97a20..f3bda9b 100644 --- a/src/generated/resources/assets/ichori/lang/en_us.json +++ b/src/generated/resources/assets/ichori/lang/en_us.json @@ -1,3 +1,5 @@ { - "creativetab.icgori.ichori": "Ichori" + "block.ichori.crystallized_titan_blood_ore": "Crystallized Titan Blood Ore", + "creativetab.icgori.ichori": "Ichori", + "item.ichori.crystallized_titan_blood": "Crystallized Titan Blood" } \ No newline at end of file diff --git a/src/generated/resources/assets/ichori/models/block/crystallized_titan_blood_ore.json b/src/generated/resources/assets/ichori/models/block/crystallized_titan_blood_ore.json new file mode 100644 index 0000000..d71818e --- /dev/null +++ b/src/generated/resources/assets/ichori/models/block/crystallized_titan_blood_ore.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/cube_all", + "textures": { + "all": "ichori:block/crystallized_titan_blood_ore" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/ichori/models/item/crystallized_titan_blood.json b/src/generated/resources/assets/ichori/models/item/crystallized_titan_blood.json new file mode 100644 index 0000000..dd6e48a --- /dev/null +++ b/src/generated/resources/assets/ichori/models/item/crystallized_titan_blood.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "ichori:item/crystallized_titan_blood" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/ichori/models/item/crystallized_titan_blood_ore.json b/src/generated/resources/assets/ichori/models/item/crystallized_titan_blood_ore.json new file mode 100644 index 0000000..060de7f --- /dev/null +++ b/src/generated/resources/assets/ichori/models/item/crystallized_titan_blood_ore.json @@ -0,0 +1,3 @@ +{ + "parent": "ichori:block/crystallized_titan_blood_ore" +} \ No newline at end of file diff --git a/src/generated/resources/data/c/tags/block/ores.json b/src/generated/resources/data/c/tags/block/ores.json new file mode 100644 index 0000000..cafcb48 --- /dev/null +++ b/src/generated/resources/data/c/tags/block/ores.json @@ -0,0 +1,5 @@ +{ + "values": [ + "ichori:crystallized_titan_blood_ore" + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/ichori/loot_table/blocks/crystallized_titan_blood_ore.json b/src/generated/resources/data/ichori/loot_table/blocks/crystallized_titan_blood_ore.json new file mode 100644 index 0000000..53cf50a --- /dev/null +++ b/src/generated/resources/data/ichori/loot_table/blocks/crystallized_titan_blood_ore.json @@ -0,0 +1,61 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:alternatives", + "children": [ + { + "type": "minecraft:item", + "conditions": [ + { + "condition": "minecraft:match_tool", + "predicate": { + "predicates": { + "minecraft:enchantments": [ + { + "enchantments": "minecraft:silk_touch", + "levels": { + "min": 1 + } + } + ] + } + } + } + ], + "name": "ichori:crystallized_titan_blood_ore" + }, + { + "type": "minecraft:item", + "functions": [ + { + "add": false, + "count": { + "type": "minecraft:uniform", + "max": 5.0, + "min": 2.0 + }, + "function": "minecraft:set_count" + }, + { + "enchantment": "minecraft:fortune", + "formula": "minecraft:ore_drops", + "function": "minecraft:apply_bonus" + }, + { + "function": "minecraft:explosion_decay" + } + ], + "name": "ichori:crystallized_titan_blood" + } + ] + } + ], + "rolls": 1.0 + } + ], + "random_sequence": "ichori:blocks/crystallized_titan_blood_ore" +} \ No newline at end of file diff --git a/src/generated/resources/data/ichori/loot_table/blocks/magic_tourch.json b/src/generated/resources/data/ichori/loot_table/blocks/magic_tourch.json new file mode 100644 index 0000000..2367818 --- /dev/null +++ b/src/generated/resources/data/ichori/loot_table/blocks/magic_tourch.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "ichori:magic_tourch" + } + ], + "rolls": 1.0 + } + ], + "random_sequence": "ichori:blocks/magic_tourch" +} \ No newline at end of file diff --git a/src/generated/resources/data/ichori/neoforge/biome_modifier/add_crystallized_titan_blood_ore.json b/src/generated/resources/data/ichori/neoforge/biome_modifier/add_crystallized_titan_blood_ore.json new file mode 100644 index 0000000..f5c7903 --- /dev/null +++ b/src/generated/resources/data/ichori/neoforge/biome_modifier/add_crystallized_titan_blood_ore.json @@ -0,0 +1,6 @@ +{ + "type": "neoforge:add_features", + "biomes": "#minecraft:is_overworld", + "features": "ichori:crystallized_titan_blood_ore_placed", + "step": "underground_ores" +} \ No newline at end of file diff --git a/src/generated/resources/data/ichori/worldgen/configured_feature/crystallized_titan_blood_ore.json b/src/generated/resources/data/ichori/worldgen/configured_feature/crystallized_titan_blood_ore.json new file mode 100644 index 0000000..03df090 --- /dev/null +++ b/src/generated/resources/data/ichori/worldgen/configured_feature/crystallized_titan_blood_ore.json @@ -0,0 +1,18 @@ +{ + "type": "minecraft:ore", + "config": { + "discard_chance_on_air_exposure": 0.0, + "size": 9, + "targets": [ + { + "state": { + "Name": "ichori:crystallized_titan_blood_ore" + }, + "target": { + "predicate_type": "minecraft:tag_match", + "tag": "minecraft:deepslate_ore_replaceables" + } + } + ] + } +} \ No newline at end of file diff --git a/src/generated/resources/data/ichori/worldgen/placed_feature/crystallized_titan_blood_ore_placed.json b/src/generated/resources/data/ichori/worldgen/placed_feature/crystallized_titan_blood_ore_placed.json new file mode 100644 index 0000000..f936224 --- /dev/null +++ b/src/generated/resources/data/ichori/worldgen/placed_feature/crystallized_titan_blood_ore_placed.json @@ -0,0 +1,27 @@ +{ + "feature": "ichori:crystallized_titan_blood_ore", + "placement": [ + { + "type": "minecraft:rarity_filter", + "chance": 2 + }, + { + "type": "minecraft:in_square" + }, + { + "type": "minecraft:height_range", + "height": { + "type": "minecraft:trapezoid", + "max_inclusive": { + "absolute": -30 + }, + "min_inclusive": { + "absolute": -64 + } + } + }, + { + "type": "minecraft:biome" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/minecraft/tags/block/mineable/pickaxe.json b/src/generated/resources/data/minecraft/tags/block/mineable/pickaxe.json index f72d209..cafcb48 100644 --- a/src/generated/resources/data/minecraft/tags/block/mineable/pickaxe.json +++ b/src/generated/resources/data/minecraft/tags/block/mineable/pickaxe.json @@ -1,3 +1,5 @@ { - "values": [] + "values": [ + "ichori:crystallized_titan_blood_ore" + ] } \ No newline at end of file diff --git a/src/generated/resources/data/minecraft/tags/block/needs_iron_tool.json b/src/generated/resources/data/minecraft/tags/block/needs_iron_tool.json new file mode 100644 index 0000000..cafcb48 --- /dev/null +++ b/src/generated/resources/data/minecraft/tags/block/needs_iron_tool.json @@ -0,0 +1,5 @@ +{ + "values": [ + "ichori:crystallized_titan_blood_ore" + ] +} \ No newline at end of file diff --git a/src/main/java/ovh/glitchlabs/ichori/Block/ModBlocks.java b/src/main/java/ovh/glitchlabs/ichori/Block/ModBlocks.java index 70ae682..7f1fcd1 100644 --- a/src/main/java/ovh/glitchlabs/ichori/Block/ModBlocks.java +++ b/src/main/java/ovh/glitchlabs/ichori/Block/ModBlocks.java @@ -1,8 +1,10 @@ package ovh.glitchlabs.ichori.Block; +import net.minecraft.util.valueproviders.UniformInt; import net.minecraft.world.item.BlockItem; import net.minecraft.world.item.Item; import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.DropExperienceBlock; import net.minecraft.world.level.block.SoundType; import net.minecraft.world.level.block.state.BlockBehaviour; import net.minecraft.world.level.material.PushReaction; @@ -19,7 +21,11 @@ public class ModBlocks { public static final DeferredRegister.Blocks BLOCKS = DeferredRegister.createBlocks(Ichori.MODID); - + public static final DeferredBlock CRYSTALLIZED_TITAN_BLOOD_ORE = registerBlock("crystallized_titan_blood_ore", + () -> new DropExperienceBlock(UniformInt.of(2, 4), + BlockBehaviour.Properties.of() + .strength(4f) + .requiresCorrectToolForDrops())); diff --git a/src/main/java/ovh/glitchlabs/ichori/Item/ModCreativeModeTabs.java b/src/main/java/ovh/glitchlabs/ichori/Item/ModCreativeModeTabs.java index ff1b4c3..b9888a2 100644 --- a/src/main/java/ovh/glitchlabs/ichori/Item/ModCreativeModeTabs.java +++ b/src/main/java/ovh/glitchlabs/ichori/Item/ModCreativeModeTabs.java @@ -21,6 +21,11 @@ public class ModCreativeModeTabs { () -> CreativeModeTab.builder().icon(() -> new ItemStack(ModItems.TEST_Spawn_LIGHT.get())) .title(Component.translatable("creativetab.ichori.ichori")) .displayItems(((itemDisplayParameters, output) -> { + output.accept(ModItems.CRYSTALLIZED_TITAN_BLOOD); + output.accept(ModBlocks.CRYSTALLIZED_TITAN_BLOOD_ORE); + + + //TEST output.accept(ModItems.TEST_Spawn_LIGHT); output.accept(ModItems.TEST_Spawn_MAGIC_TOURCH); diff --git a/src/main/java/ovh/glitchlabs/ichori/Item/ModItems.java b/src/main/java/ovh/glitchlabs/ichori/Item/ModItems.java index 82c55cd..77ac637 100644 --- a/src/main/java/ovh/glitchlabs/ichori/Item/ModItems.java +++ b/src/main/java/ovh/glitchlabs/ichori/Item/ModItems.java @@ -11,6 +11,13 @@ import ovh.glitchlabs.ichori.Item.custom.test_spawn_magic_tourch; public class ModItems { public static final DeferredRegister.Items ITEMS = DeferredRegister.createItems(Ichori.MODID); + public static final DeferredItem CRYSTALLIZED_TITAN_BLOOD = ITEMS.register("crystallized_titan_blood", + () -> new Item(new Item.Properties())); + + + + //test + public static final DeferredItem TEST_Spawn_LIGHT = ITEMS.register("test_spawn_light", () -> new test_spawn_light(new Item.Properties())); diff --git a/src/main/java/ovh/glitchlabs/ichori/datagen/ModBlockLootTableProvider.java b/src/main/java/ovh/glitchlabs/ichori/datagen/ModBlockLootTableProvider.java index 07436a5..e4dd50b 100644 --- a/src/main/java/ovh/glitchlabs/ichori/datagen/ModBlockLootTableProvider.java +++ b/src/main/java/ovh/glitchlabs/ichori/datagen/ModBlockLootTableProvider.java @@ -15,6 +15,7 @@ import net.minecraft.world.level.storage.loot.functions.ApplyBonusCount; import net.minecraft.world.level.storage.loot.functions.SetItemCountFunction; import net.minecraft.world.level.storage.loot.providers.number.UniformGenerator; import ovh.glitchlabs.ichori.Block.ModBlocks; +import ovh.glitchlabs.ichori.Item.ModItems; import java.util.Set; @@ -25,17 +26,13 @@ public class ModBlockLootTableProvider extends BlockLootSubProvider { @Override protected void generate() { - /* - dropSelf(ModBlocks.BISMUTH_BLOCK.get()); - // dropSelf(ModBlocks.MAGIC_BLOCK.get()); - - add(ModBlocks.BISMUTH_ORE.get(), - block -> createOreDrop(ModBlocks.BISMUTH_ORE.get(), ModItems.RAW_BISMUTH.get())); - add(ModBlocks.BISMUTH_DEEPSLATE_ORE.get(), - block -> createMultipleOreDrops(ModBlocks.BISMUTH_DEEPSLATE_ORE.get(), ModItems.RAW_BISMUTH.get(), 2, 5)); - */ + add(ModBlocks.CRYSTALLIZED_TITAN_BLOOD_ORE.get(), + block -> createMultipleOreDrops(ModBlocks.CRYSTALLIZED_TITAN_BLOOD_ORE.get(), ModItems.CRYSTALLIZED_TITAN_BLOOD.get(), 2, 5)); + + //TEST + dropSelf(ModBlocks.MAGIC_TOURCH.get()); } diff --git a/src/main/java/ovh/glitchlabs/ichori/datagen/ModBlockStateProvider.java b/src/main/java/ovh/glitchlabs/ichori/datagen/ModBlockStateProvider.java index 9fcccfa..cc1f387 100644 --- a/src/main/java/ovh/glitchlabs/ichori/datagen/ModBlockStateProvider.java +++ b/src/main/java/ovh/glitchlabs/ichori/datagen/ModBlockStateProvider.java @@ -14,7 +14,7 @@ public class ModBlockStateProvider extends BlockStateProvider { @Override protected void registerStatesAndModels() { -// blockWithItem(ModBlocks.BISMUTH_BLOCK); + blockWithItem(ModBlocks.CRYSTALLIZED_TITAN_BLOOD_ORE); } diff --git a/src/main/java/ovh/glitchlabs/ichori/datagen/ModBlockTagProvider.java b/src/main/java/ovh/glitchlabs/ichori/datagen/ModBlockTagProvider.java index 41c595d..a3ee025 100644 --- a/src/main/java/ovh/glitchlabs/ichori/datagen/ModBlockTagProvider.java +++ b/src/main/java/ovh/glitchlabs/ichori/datagen/ModBlockTagProvider.java @@ -3,9 +3,11 @@ package ovh.glitchlabs.ichori.datagen; import net.minecraft.core.HolderLookup; import net.minecraft.data.PackOutput; import net.minecraft.tags.BlockTags; +import net.neoforged.neoforge.common.Tags; import net.neoforged.neoforge.common.data.BlockTagsProvider; import net.neoforged.neoforge.common.data.ExistingFileHelper; import org.jetbrains.annotations.Nullable; +import ovh.glitchlabs.ichori.Block.ModBlocks; import ovh.glitchlabs.ichori.Ichori; import java.util.concurrent.CompletableFuture; @@ -18,7 +20,15 @@ public class ModBlockTagProvider extends BlockTagsProvider { @Override protected void addTags(HolderLookup.Provider provider) { tag(BlockTags.MINEABLE_WITH_PICKAXE) + .add(ModBlocks.CRYSTALLIZED_TITAN_BLOOD_ORE.get()) + ; + tag(BlockTags.NEEDS_IRON_TOOL) + .add(ModBlocks.CRYSTALLIZED_TITAN_BLOOD_ORE.get()) + ; + + tag(Tags.Blocks.ORES) + .add(ModBlocks.CRYSTALLIZED_TITAN_BLOOD_ORE.get()) ; } diff --git a/src/main/java/ovh/glitchlabs/ichori/datagen/ModDatapackProvider.java b/src/main/java/ovh/glitchlabs/ichori/datagen/ModDatapackProvider.java index 308d6a1..395f668 100644 --- a/src/main/java/ovh/glitchlabs/ichori/datagen/ModDatapackProvider.java +++ b/src/main/java/ovh/glitchlabs/ichori/datagen/ModDatapackProvider.java @@ -7,6 +7,9 @@ import net.minecraft.data.PackOutput; import net.neoforged.neoforge.common.data.DatapackBuiltinEntriesProvider; import net.neoforged.neoforge.registries.NeoForgeRegistries; import ovh.glitchlabs.ichori.Ichori; +import ovh.glitchlabs.ichori.worldgen.ModBiomeModifiers; +import ovh.glitchlabs.ichori.worldgen.ModConfiguredFeatures; +import ovh.glitchlabs.ichori.worldgen.ModPlacedFeatures; import java.util.Set; @@ -17,9 +20,9 @@ public class ModDatapackProvider extends DatapackBuiltinEntriesProvider { //.add(Registries.TRIM_MATERIAL, ModTrimMaterials::bootstrap) //.add(Registries.TRIM_PATTERN, ModTrimPatterns::bootstrap) //.add(Registries.ENCHANTMENT, ModEnchantments::bootstrap) - //.add(Registries.CONFIGURED_FEATURE, ModConfiguredFeatures::bootstrap) - //.add(Registries.PLACED_FEATURE, ModPlacedFeatures::bootstrap) - //.add(NeoForgeRegistries.Keys.BIOME_MODIFIERS, ModBiomeModifiers::bootstrap) + .add(Registries.CONFIGURED_FEATURE, ModConfiguredFeatures::bootstrap) + .add(Registries.PLACED_FEATURE, ModPlacedFeatures::bootstrap) + .add(NeoForgeRegistries.Keys.BIOME_MODIFIERS, ModBiomeModifiers::bootstrap) ; public ModDatapackProvider(PackOutput output, CompletableFuture registries) { diff --git a/src/main/java/ovh/glitchlabs/ichori/datagen/ModItemModelProvider.java b/src/main/java/ovh/glitchlabs/ichori/datagen/ModItemModelProvider.java index e722095..ad1798a 100644 --- a/src/main/java/ovh/glitchlabs/ichori/datagen/ModItemModelProvider.java +++ b/src/main/java/ovh/glitchlabs/ichori/datagen/ModItemModelProvider.java @@ -15,6 +15,7 @@ public class ModItemModelProvider extends ItemModelProvider { @Override protected void registerModels() { + basicItem(ModItems.CRYSTALLIZED_TITAN_BLOOD.get()); withExistingParent(ModItems.TEST_Spawn_LIGHT.getId().getPath(), mcLoc("item/stick")); withExistingParent(ModItems.TEST_Spawn_MAGIC_TOURCH.getId().getPath(), mcLoc("item/stick")); diff --git a/src/main/java/ovh/glitchlabs/ichori/datagen/ModLanguageProvider.java b/src/main/java/ovh/glitchlabs/ichori/datagen/ModLanguageProvider.java index f0160e3..76bf0d1 100644 --- a/src/main/java/ovh/glitchlabs/ichori/datagen/ModLanguageProvider.java +++ b/src/main/java/ovh/glitchlabs/ichori/datagen/ModLanguageProvider.java @@ -2,7 +2,9 @@ package ovh.glitchlabs.ichori.datagen; import net.minecraft.data.PackOutput; import net.neoforged.neoforge.common.data.LanguageProvider; +import ovh.glitchlabs.ichori.Block.ModBlocks; import ovh.glitchlabs.ichori.Ichori; +import ovh.glitchlabs.ichori.Item.ModItems; public class ModLanguageProvider extends LanguageProvider { @@ -12,6 +14,9 @@ public class ModLanguageProvider extends LanguageProvider { @Override protected void addTranslations() { + add(ModItems.CRYSTALLIZED_TITAN_BLOOD.get(), "Crystallized Titan Blood"); + add(ModBlocks.CRYSTALLIZED_TITAN_BLOOD_ORE.get(), "Crystallized Titan Blood Ore"); + add("creativetab.icgori.ichori", "Ichori"); } diff --git a/src/main/java/ovh/glitchlabs/ichori/worldgen/ModBiomeModifiers.java b/src/main/java/ovh/glitchlabs/ichori/worldgen/ModBiomeModifiers.java new file mode 100644 index 0000000..42ac478 --- /dev/null +++ b/src/main/java/ovh/glitchlabs/ichori/worldgen/ModBiomeModifiers.java @@ -0,0 +1,38 @@ +package ovh.glitchlabs.ichori.worldgen; + +import net.minecraft.core.HolderSet; +import net.minecraft.core.registries.Registries; +import net.minecraft.data.worldgen.BootstrapContext; +import net.minecraft.resources.ResourceKey; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.tags.BiomeTags; +import net.minecraft.world.level.levelgen.GenerationStep; +import net.neoforged.neoforge.common.world.BiomeModifier; +import net.neoforged.neoforge.common.world.BiomeModifiers; +import net.neoforged.neoforge.registries.NeoForgeRegistries; +import ovh.glitchlabs.ichori.Ichori; + +public class ModBiomeModifiers { + public static final ResourceKey ADD_CRYSTALLIZED_TITAN_BLOOD_ORE = registerKey("add_crystallized_titan_blood_ore"); + + public static void bootstrap(BootstrapContext context) { + var placedFeatures = context.lookup(Registries.PLACED_FEATURE); + var biomes = context.lookup(Registries.BIOME); + + context.register(ADD_CRYSTALLIZED_TITAN_BLOOD_ORE, new BiomeModifiers.AddFeaturesBiomeModifier( + biomes.getOrThrow(BiomeTags.IS_OVERWORLD), + HolderSet.direct(placedFeatures.getOrThrow(ModPlacedFeatures.CRYSTALLIZED_TITAN_BLOOD_ORE_PLACED_KEY)), + GenerationStep.Decoration.UNDERGROUND_ORES)); + + // Example for individual Biomes! + // context.register(ADD_CRYSTALLIZED_TITAN_BLOOD_ORE, new BiomeModifiers.AddFeaturesBiomeModifier( + // HolderSet.direct(biomes.getOrThrow(Biomes.PLAINS), biomes.getOrThrow(Biomes.SAVANNA)), + // HolderSet.direct(placedFeatures.getOrThrow(ModPlacedFeatures.CRYSTALLIZED_TITAN_BLOOD_ORE_PLACED_KEY)), + // GenerationStep.Decoration.UNDERGROUND_ORES)); + + } + + private static ResourceKey registerKey(String name) { + return ResourceKey.create(NeoForgeRegistries.Keys.BIOME_MODIFIERS, ResourceLocation.fromNamespaceAndPath(Ichori.MODID, name)); + } +} diff --git a/src/main/java/ovh/glitchlabs/ichori/worldgen/ModConfiguredFeatures.java b/src/main/java/ovh/glitchlabs/ichori/worldgen/ModConfiguredFeatures.java new file mode 100644 index 0000000..c4989a8 --- /dev/null +++ b/src/main/java/ovh/glitchlabs/ichori/worldgen/ModConfiguredFeatures.java @@ -0,0 +1,45 @@ +package ovh.glitchlabs.ichori.worldgen; + +import net.minecraft.core.registries.Registries; +import net.minecraft.data.worldgen.BootstrapContext; +import net.minecraft.resources.ResourceKey; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.tags.BlockTags; +import net.minecraft.world.level.block.Blocks; +import net.minecraft.world.level.levelgen.feature.ConfiguredFeature; +import net.minecraft.world.level.levelgen.feature.Feature; +import net.minecraft.world.level.levelgen.feature.configurations.FeatureConfiguration; +import net.minecraft.world.level.levelgen.feature.configurations.OreConfiguration; +import net.minecraft.world.level.levelgen.structure.templatesystem.BlockMatchTest; +import net.minecraft.world.level.levelgen.structure.templatesystem.RuleTest; +import net.minecraft.world.level.levelgen.structure.templatesystem.TagMatchTest; +import ovh.glitchlabs.ichori.Block.ModBlocks; +import ovh.glitchlabs.ichori.Ichori; + +import java.util.List; + +public class ModConfiguredFeatures { + public static final ResourceKey> OVERWORLD_CRYSTALLIZED_TITAN_BLOOD_ORE_KEY = registerKey("crystallized_titan_blood_ore"); + + + public static void bootstrap(BootstrapContext> context) { + RuleTest stoneReplaceables = new TagMatchTest(BlockTags.STONE_ORE_REPLACEABLES); + RuleTest deepslateReplaceables = new TagMatchTest(BlockTags.DEEPSLATE_ORE_REPLACEABLES); + RuleTest netherrackReplaceables = new BlockMatchTest(Blocks.NETHERRACK); + RuleTest endReplaceables = new BlockMatchTest(Blocks.END_STONE); + + List overworldBismuthOres = List.of( + OreConfiguration.target(deepslateReplaceables, ModBlocks.CRYSTALLIZED_TITAN_BLOOD_ORE.get().defaultBlockState())); + + register(context, OVERWORLD_CRYSTALLIZED_TITAN_BLOOD_ORE_KEY, Feature.ORE, new OreConfiguration(overworldBismuthOres, 9)); + } + + public static ResourceKey> registerKey(String name) { + return ResourceKey.create(Registries.CONFIGURED_FEATURE, ResourceLocation.fromNamespaceAndPath(Ichori.MODID, name)); + } + + private static > void register(BootstrapContext> context, + ResourceKey> key, F feature, FC configuration) { + context.register(key, new ConfiguredFeature<>(feature, configuration)); + } +} \ No newline at end of file diff --git a/src/main/java/ovh/glitchlabs/ichori/worldgen/ModOrePlacement.java b/src/main/java/ovh/glitchlabs/ichori/worldgen/ModOrePlacement.java new file mode 100644 index 0000000..7174eb0 --- /dev/null +++ b/src/main/java/ovh/glitchlabs/ichori/worldgen/ModOrePlacement.java @@ -0,0 +1,19 @@ +package ovh.glitchlabs.ichori.worldgen; + +import net.minecraft.world.level.levelgen.placement.*; + +import java.util.List; + +public class ModOrePlacement { + public static List orePlacement(PlacementModifier pCountPlacement, PlacementModifier pHeightRange) { + return List.of(pCountPlacement, InSquarePlacement.spread(), pHeightRange, BiomeFilter.biome()); + } + + public static List commonOrePlacement(int pCount, PlacementModifier pHeightRange) { + return orePlacement(CountPlacement.of(pCount), pHeightRange); + } + + public static List rareOrePlacement(int pChance, PlacementModifier pHeightRange) { + return orePlacement(RarityFilter.onAverageOnceEvery(pChance), pHeightRange); + } +} \ No newline at end of file diff --git a/src/main/java/ovh/glitchlabs/ichori/worldgen/ModPlacedFeatures.java b/src/main/java/ovh/glitchlabs/ichori/worldgen/ModPlacedFeatures.java new file mode 100644 index 0000000..80c0adb --- /dev/null +++ b/src/main/java/ovh/glitchlabs/ichori/worldgen/ModPlacedFeatures.java @@ -0,0 +1,36 @@ +package ovh.glitchlabs.ichori.worldgen; + +import net.minecraft.core.Holder; +import net.minecraft.core.registries.Registries; +import net.minecraft.data.worldgen.BootstrapContext; +import net.minecraft.resources.ResourceKey; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.level.levelgen.VerticalAnchor; +import net.minecraft.world.level.levelgen.feature.ConfiguredFeature; +import net.minecraft.world.level.levelgen.placement.HeightRangePlacement; +import net.minecraft.world.level.levelgen.placement.PlacedFeature; +import net.minecraft.world.level.levelgen.placement.PlacementModifier; +import ovh.glitchlabs.ichori.Ichori; + +import java.util.List; + +public class ModPlacedFeatures { + public static final ResourceKey CRYSTALLIZED_TITAN_BLOOD_ORE_PLACED_KEY = registerKey("crystallized_titan_blood_ore_placed"); + + + public static void bootstrap(BootstrapContext context) { + var configuredFeatures = context.lookup(Registries.CONFIGURED_FEATURE); + + register(context, CRYSTALLIZED_TITAN_BLOOD_ORE_PLACED_KEY, configuredFeatures.getOrThrow(ModConfiguredFeatures.OVERWORLD_CRYSTALLIZED_TITAN_BLOOD_ORE_KEY), + ModOrePlacement.rareOrePlacement(2, HeightRangePlacement.triangle(VerticalAnchor.absolute(-64), VerticalAnchor.absolute(-30)))); + } + + private static ResourceKey registerKey(String name) { + return ResourceKey.create(Registries.PLACED_FEATURE, ResourceLocation.fromNamespaceAndPath(Ichori.MODID, name)); + } + + private static void register(BootstrapContext context, ResourceKey key, Holder> configuration, + List modifiers) { + context.register(key, new PlacedFeature(configuration, List.copyOf(modifiers))); + } +} \ No newline at end of file diff --git a/src/main/resources/assets/ichori/textures/block/crystallized_titan_blood_ore.png b/src/main/resources/assets/ichori/textures/block/crystallized_titan_blood_ore.png new file mode 100644 index 0000000..36be812 Binary files /dev/null and b/src/main/resources/assets/ichori/textures/block/crystallized_titan_blood_ore.png differ diff --git a/src/main/resources/assets/ichori/textures/item/crystallized_titan_blood.png b/src/main/resources/assets/ichori/textures/item/crystallized_titan_blood.png new file mode 100644 index 0000000..382d481 Binary files /dev/null and b/src/main/resources/assets/ichori/textures/item/crystallized_titan_blood.png differ