From 8b8aa33785390a89a4310c67acd846b6627eab07 Mon Sep 17 00:00:00 2001 From: IveBeenAlone Date: Sat, 1 Mar 2025 14:22:47 -0500 Subject: [PATCH] Test ver 1 --- resources/fabric.mod.json | 35 ---- resources/nethercraft-classic.mixins.json | 11 - .../ibatv/nethercraft/NethercraftClassic.java | 9 +- .../ibatv/nethercraft/block/ModBlocks.java | 40 ++++ .../datagen/ModBlockTagProvider.java | 28 +++ .../datagen/ModItemTagProvider.java | 27 +++ .../datagen/ModLootTableProvider.java | 51 +++++ .../nethercraft/datagen/ModModelProvider.java | 26 +++ .../datagen/ModRecipeProvider.java | 190 ++++++++++++++++++ .../ibatv/nethercraft/item/ModItemGroups.java | 31 +++ .../xyz/ibatv/nethercraft/item/ModItems.java | 34 ++++ 11 files changed, 435 insertions(+), 47 deletions(-) delete mode 100644 resources/fabric.mod.json delete mode 100644 resources/nethercraft-classic.mixins.json create mode 100644 src/main/java/xyz/ibatv/nethercraft/block/ModBlocks.java create mode 100644 src/main/java/xyz/ibatv/nethercraft/datagen/ModBlockTagProvider.java create mode 100644 src/main/java/xyz/ibatv/nethercraft/datagen/ModItemTagProvider.java create mode 100644 src/main/java/xyz/ibatv/nethercraft/datagen/ModLootTableProvider.java create mode 100644 src/main/java/xyz/ibatv/nethercraft/datagen/ModModelProvider.java create mode 100644 src/main/java/xyz/ibatv/nethercraft/datagen/ModRecipeProvider.java create mode 100644 src/main/java/xyz/ibatv/nethercraft/item/ModItemGroups.java create mode 100644 src/main/java/xyz/ibatv/nethercraft/item/ModItems.java diff --git a/resources/fabric.mod.json b/resources/fabric.mod.json deleted file mode 100644 index 76c12f7..0000000 --- a/resources/fabric.mod.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "schemaVersion": 1, - "id": "nethercraft-classic", - "version": "${version}", - "name": "Nethercraft Classic", - "description": "A classic beta mod originally by scokeev9. The mod makes the Nether survivable, adding things like food, trees, new ores, and mobs. As of the Nether Update, biomes are now included!", - "authors": [ - "scokeev9", - "IveBeenAlone" - ], - "contact": { - "homepage": "https://ibatv.xyz/", - "sources": "https://git.ibatv.xyz/IveBeenAlone/nethercraft-classic-fabric" - }, - "license": "CC0-1.0", - "icon": "assets/nethercraft-classic/icon.png", - "environment": "*", - "entrypoints": { - "main": [ - "xyz.ibatv.nethercraft.NethercraftClassic" - ], - "fabric-datagen": [ - "xyz.ibatv.nethercraft.NethercraftClassicDataGenerator" - ] - }, - "mixins": [ - "nethercraft-classic.mixins.json" - ], - "depends": { - "fabricloader": ">=0.16.10", - "minecraft": "~1.21.4", - "java": ">=21", - "fabric-api": "*" - } -} \ No newline at end of file diff --git a/resources/nethercraft-classic.mixins.json b/resources/nethercraft-classic.mixins.json deleted file mode 100644 index 438ecb1..0000000 --- a/resources/nethercraft-classic.mixins.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "required": true, - "package": "xyz.ibatv.nethercraft.mixin", - "compatibilityLevel": "JAVA_21", - "mixins": [ - "ExampleMixin" - ], - "injectors": { - "defaultRequire": 1 - } -} \ No newline at end of file diff --git a/src/main/java/xyz/ibatv/nethercraft/NethercraftClassic.java b/src/main/java/xyz/ibatv/nethercraft/NethercraftClassic.java index a2bdb94..fd56146 100644 --- a/src/main/java/xyz/ibatv/nethercraft/NethercraftClassic.java +++ b/src/main/java/xyz/ibatv/nethercraft/NethercraftClassic.java @@ -4,6 +4,7 @@ import net.fabricmc.api.ModInitializer; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import xyz.ibatv.nethercraft.block.ModBlocks; public class NethercraftClassic implements ModInitializer { public static final String MOD_ID = "nethercraft-classic"; @@ -14,11 +15,17 @@ public class NethercraftClassic implements ModInitializer { public static final Logger LOGGER = LoggerFactory.getLogger(MOD_ID); @Override + public void onInitialize() { // This code runs as soon as Minecraft is in a mod-load-ready state. // However, some things (like resources) may still be uninitialized. // Proceed with mild caution. - LOGGER.info("Hello Fabric world!"); + //LOGGER.info("Hello Fabric world!"); + + //ModItemGroups.registeritemGroups(); + + //ModItems.registerModItems(); + ModBlocks.registerModBlocks(); } } \ No newline at end of file diff --git a/src/main/java/xyz/ibatv/nethercraft/block/ModBlocks.java b/src/main/java/xyz/ibatv/nethercraft/block/ModBlocks.java new file mode 100644 index 0000000..7d037af --- /dev/null +++ b/src/main/java/xyz/ibatv/nethercraft/block/ModBlocks.java @@ -0,0 +1,40 @@ +package xyz.ibatv.nethercraft.block; + +import net.minecraft.block.AbstractBlock; +import net.minecraft.block.Block; +import net.minecraft.item.BlockItem; +import net.minecraft.item.Item; +import net.minecraft.registry.Registries; +import net.minecraft.registry.Registry; +import net.minecraft.sound.BlockSoundGroup; +import net.minecraft.util.Identifier; +import xyz.ibatv.nethercraft.NethercraftClassic; + +public class ModBlocks { + + public static final Block GLOWOOD_PLANKS = registerBlock("glowood_planks", + new Block(AbstractBlock.Settings.create().strength(4f).requiresTool().sounds(BlockSoundGroup.WOOD))); + + private static Block registerBlockWithoutBlockItem(String name, Block block){ + return Registry.register(Registries.BLOCK, Identifier.of(NethercraftClassic.MOD_ID, name), block); + } + + private static Block registerBlock(String name, Block block){ + registerBlockItem(name, block); + return Registry.register(Registries.BLOCK, Identifier.of(NethercraftClassic.MOD_ID, name), block); + } + + private static void registerBlockItem(String name, Block block){ + Registry.register(Registries.ITEM, Identifier.of(NethercraftClassic.MOD_ID, name), + new BlockItem(block, new Item.Settings())); + } + + public static void registerModBlocks(){ + NethercraftClassic.LOGGER.info("Registering Mod blocks for " + NethercraftClassic.MOD_ID); + + //ItemGroupEvents.modifyEntriesEvent(ItemGroups.BUILDING_BLOCKS).register(entries -> { + // entries.add(ModBlocks.PROSPERITY_GEMSTONE_BLOCK); + // entries.add(ModBlocks.PROSPERITY_INGOT_BLOCK); + //}); + } +} diff --git a/src/main/java/xyz/ibatv/nethercraft/datagen/ModBlockTagProvider.java b/src/main/java/xyz/ibatv/nethercraft/datagen/ModBlockTagProvider.java new file mode 100644 index 0000000..3b10fa1 --- /dev/null +++ b/src/main/java/xyz/ibatv/nethercraft/datagen/ModBlockTagProvider.java @@ -0,0 +1,28 @@ +package xyz.ibatv.nethercraft.datagen; + +import net.fabricmc.fabric.api.datagen.v1.FabricDataOutput; +import net.fabricmc.fabric.api.datagen.v1.provider.FabricTagProvider; +import net.minecraft.registry.RegistryWrapper; +import net.minecraft.registry.tag.BlockTags; +import xyz.ibatv.nethercraft.block.ModBlocks; + +import java.util.concurrent.CompletableFuture; + +public class ModBlockTagProvider extends FabricTagProvider.BlockTagProvider { + public ModBlockTagProvider(FabricDataOutput output, CompletableFuture registriesFuture) { + super(output, registriesFuture); + } + + @Override + protected void configure(RegistryWrapper.WrapperLookup wrapperLookup) { + getOrCreateTagBuilder(BlockTags.AXE_MINEABLE) + .add(ModBlocks.GLOWOOD_PLANKS); + + //getOrCreateTagBuilder(BlockTags.NEEDS_STONE_TOOL) + // .add(ModBlocks.INFUSION_ALTAR) + + + //getOrCreateTagBuilder(BlockTags.NEEDS_IRON_TOOL) + // .add(ModBlocks.PROSPERITY_GEMSTONE_BLOCK) + } +} diff --git a/src/main/java/xyz/ibatv/nethercraft/datagen/ModItemTagProvider.java b/src/main/java/xyz/ibatv/nethercraft/datagen/ModItemTagProvider.java new file mode 100644 index 0000000..cb557c4 --- /dev/null +++ b/src/main/java/xyz/ibatv/nethercraft/datagen/ModItemTagProvider.java @@ -0,0 +1,27 @@ +package xyz.ibatv.nethercraft.datagen; + + +import net.fabricmc.fabric.api.datagen.v1.FabricDataOutput; +import net.fabricmc.fabric.api.datagen.v1.provider.FabricTagProvider; +import xyz.ibatv.nethercraft.item.ModItems; +//import xyz.ibatv.nethercraft.util.ModTags; +import net.minecraft.item.Items; +import net.minecraft.registry.RegistryWrapper; + +import java.util.concurrent.CompletableFuture; + +public class ModItemTagProvider extends FabricTagProvider.ItemTagProvider { + public ModItemTagProvider(FabricDataOutput output, CompletableFuture completableFuture) { + super(output, completableFuture); + } + + @Override + protected void configure(RegistryWrapper.WrapperLookup wrapperLookup) { + //getOrCreateTagBuilder(ModTags.Items.TRANSFORMABLE_ITEMS) + // .add(ModItems.PINK_GARNET) + // .add(ModItems.RAW_PINK_GARNET) + // .add(Items.COAL) + // .add(Items.STICK) + // .add(Items.APPLE); + } +} diff --git a/src/main/java/xyz/ibatv/nethercraft/datagen/ModLootTableProvider.java b/src/main/java/xyz/ibatv/nethercraft/datagen/ModLootTableProvider.java new file mode 100644 index 0000000..31c1e46 --- /dev/null +++ b/src/main/java/xyz/ibatv/nethercraft/datagen/ModLootTableProvider.java @@ -0,0 +1,51 @@ +package xyz.ibatv.nethercraft.datagen; + +import net.fabricmc.fabric.api.datagen.v1.FabricDataOutput; +import net.fabricmc.fabric.api.datagen.v1.provider.FabricBlockLootTableProvider; +import net.minecraft.block.Block; +import net.minecraft.enchantment.Enchantment; +import net.minecraft.enchantment.Enchantments; +import net.minecraft.item.Item; +import net.minecraft.item.Items; +import net.minecraft.loot.LootTable; +import net.minecraft.loot.condition.BlockStatePropertyLootCondition; +import net.minecraft.loot.entry.ItemEntry; +import net.minecraft.loot.entry.LeafEntry; +import net.minecraft.loot.entry.LootPoolEntry; +import net.minecraft.loot.function.ApplyBonusLootFunction; +import net.minecraft.loot.function.SetCountLootFunction; +import net.minecraft.loot.provider.number.UniformLootNumberProvider; +import net.minecraft.predicate.StatePredicate; +import net.minecraft.registry.RegistryKeys; +import net.minecraft.registry.RegistryWrapper; +import xyz.ibatv.nethercraft.block.ModBlocks; +import xyz.ibatv.nethercraft.item.ModItems; + +import java.util.concurrent.CompletableFuture; + +public class ModLootTableProvider extends FabricBlockLootTableProvider { + public ModLootTableProvider(FabricDataOutput dataOutput, CompletableFuture registryLookup) { + super(dataOutput, registryLookup); + } + + @Override + public void generate() { + addDrop(ModBlocks.GLOWOOD_PLANKS); + + //addDrop(ModBlocks.PROSPERITY_ORE, multipleOreDrops(ModBlocks.PROSPERITY_ORE, ModItems.PROSPERITY_SHARD, 1, 4)); + //addDrop(ModBlocks.INFERIUM_ORE, multipleOreDrops(ModBlocks.INFERIUM_ORE, ModItems.INFERIUM_ESSENCE, 2, 4)); + + + //BlockStatePropertyLootCondition.Builder builder2 = BlockStatePropertyLootCondition.builder(ModBlocks.COAL_CROP) + // .properties(StatePredicate.Builder.create().exactMatch(CoalCropBlock.AGE, CoalCropBlock.MAX_AGE)); + //this.addDrop(ModBlocks.COAL_CROP, this.cropDrops(ModBlocks.COAL_CROP, ModItems.COAL_ESSENCE, ModItems.COAL_CROP_SEEDS, builder2)); + + } + public LootTable.Builder multipleOreDrops(Block drop, Item item, float minDrops, float maxDrops) { + RegistryWrapper.Impl impl = this.registryLookup.getWrapperOrThrow(RegistryKeys.ENCHANTMENT); + return this.dropsWithSilkTouch(drop, this.applyExplosionDecay(drop, ((LeafEntry.Builder) + ItemEntry.builder(item).apply(SetCountLootFunction.builder(UniformLootNumberProvider.create(minDrops, maxDrops)))) + .apply(ApplyBonusLootFunction.oreDrops(impl.getOrThrow(Enchantments.FORTUNE))))); + } + +} diff --git a/src/main/java/xyz/ibatv/nethercraft/datagen/ModModelProvider.java b/src/main/java/xyz/ibatv/nethercraft/datagen/ModModelProvider.java new file mode 100644 index 0000000..92eeed8 --- /dev/null +++ b/src/main/java/xyz/ibatv/nethercraft/datagen/ModModelProvider.java @@ -0,0 +1,26 @@ +package xyz.ibatv.nethercraft.datagen; + +import net.fabricmc.fabric.api.datagen.v1.FabricDataOutput; +import net.fabricmc.fabric.api.datagen.v1.provider.FabricModelProvider; +import net.minecraft.data.client.BlockStateModelGenerator; +import net.minecraft.data.client.ItemModelGenerator; +import net.minecraft.data.client.Models; +import xyz.ibatv.nethercraft.block.ModBlocks; +import xyz.ibatv.nethercraft.item.ModItems; + +public class ModModelProvider extends FabricModelProvider { + public ModModelProvider(FabricDataOutput output) { + super(output); + } + + @Override + public void generateBlockStateModels(BlockStateModelGenerator blockStateModelGenerator) { + blockStateModelGenerator.registerSimpleCubeAll(ModBlocks.GLOWOOD_PLANKS); + + } + + @Override + public void generateItemModels(ItemModelGenerator itemModelGenerator) { + //itemModelGenerator.register(ModItems.PROSPERITY_SHARD, Models.GENERATED); + } +} diff --git a/src/main/java/xyz/ibatv/nethercraft/datagen/ModRecipeProvider.java b/src/main/java/xyz/ibatv/nethercraft/datagen/ModRecipeProvider.java new file mode 100644 index 0000000..fe59367 --- /dev/null +++ b/src/main/java/xyz/ibatv/nethercraft/datagen/ModRecipeProvider.java @@ -0,0 +1,190 @@ +package xyz.ibatv.nethercraft.datagen; + +import net.fabricmc.fabric.api.datagen.v1.FabricDataOutput; +import net.fabricmc.fabric.api.datagen.v1.provider.FabricRecipeProvider; +import net.fabricmc.fabric.api.tag.convention.v2.ConventionalItemTags; +import net.minecraft.data.server.recipe.RecipeExporter; +import net.minecraft.data.server.recipe.ShapedRecipeJsonBuilder; +import net.minecraft.recipe.book.RecipeCategory; +import net.minecraft.registry.RegistryWrapper; +import net.minecraft.registry.tag.ItemTags; +import net.minecraft.util.Identifier; +import xyz.ibatv.nethercraft.NethercraftClassic; +import xyz.ibatv.nethercraft.block.ModBlocks; +import xyz.ibatv.nethercraft.item.ModItems; + +import java.util.concurrent.CompletableFuture; + +public class ModRecipeProvider extends FabricRecipeProvider { + public ModRecipeProvider(FabricDataOutput output, CompletableFuture registriesFuture) { + super(output, registriesFuture); + } + + @Override + public void generate(RecipeExporter recipeExporter) { + /*offerReversibleCompactingRecipes(recipeExporter, RecipeCategory.BUILDING_BLOCKS, ModItems.PROSPERITY_SHARD, RecipeCategory.BUILDING_BLOCKS, ModBlocks.PROSPERITY_GEMSTONE_BLOCK); + offerReversibleCompactingRecipes(recipeExporter, RecipeCategory.BUILDING_BLOCKS, ModItems.PROSPERITY_INGOT, RecipeCategory.BUILDING_BLOCKS, ModBlocks.PROSPERITY_INGOT_BLOCK); + + + ShapedRecipeJsonBuilder.create(RecipeCategory.MISC, ModItems.PROSPERITY_INGOT) + .pattern(" S ") + .pattern("SIS") + .pattern(" S ") + .input('S', ModItems.PROSPERITY_SHARD) + .input('I', ConventionalItemTags.IRON_INGOTS) + .criterion(hasItem(ModItems.PROSPERITY_SHARD), conditionsFromItem(ModItems.PROSPERITY_SHARD)) + .offerTo(recipeExporter, Identifier.of(MysticalAgricultureFabric.MOD_ID, "prosperity_shards_to_ingot")); + + + ShapedRecipeJsonBuilder.create(RecipeCategory.MISC, ModItems.PRUDENTIUM_ESSENCE, 16) + .pattern(" S ") + .pattern("SIS") + .pattern(" S ") + .input('S', ModItems.INFERIUM_ESSENCE) + .input('I', ModItems.INFUSION_CRYSTAL) + .criterion(hasItem(ModItems.INFUSION_CRYSTAL), conditionsFromItem(ModItems.INFUSION_CRYSTAL)) + .offerTo(recipeExporter, Identifier.of(MysticalAgricultureFabric.MOD_ID, "prudentium_essence_recipe")); + + + ShapedRecipeJsonBuilder.create(RecipeCategory.MISC, ModItems.PROSPERITY_SEED_BASE) + .pattern(" S ") + .pattern("SWS") + .pattern(" S ") + .input('S', ModItems.PROSPERITY_SHARD) + .input('W', ModItems.PLACEHOLDER) + //replace 'ModID:placeholder' with 'minecraft:wheat_seeds' after data gen + .criterion(hasItem(ModItems.PROSPERITY_SHARD), conditionsFromItem(ModItems.PROSPERITY_SHARD)) + .offerTo(recipeExporter, Identifier.of(MysticalAgricultureFabric.MOD_ID, "prosperity_seed_base_recipe")); + + + ShapedRecipeJsonBuilder.create(RecipeCategory.MISC, ModItems.INFERIUM_CROP_SEEDS) + .pattern(" I ") + .pattern("IBI") + .pattern(" I ") + .input('I', ModItems.INFERIUM_ESSENCE) + .input('B', ModItems.PROSPERITY_SEED_BASE) + .criterion(hasItem(ModItems.PROSPERITY_SEED_BASE), conditionsFromItem(ModItems.PROSPERITY_SEED_BASE)) + .offerTo(recipeExporter, Identifier.of(MysticalAgricultureFabric.MOD_ID, "t1_seed_base_recipe")); + + // + // COAL ORE + // + + ShapedRecipeJsonBuilder.create(RecipeCategory.MISC, ModItems.COAL_CROP_SEEDS) + .pattern("CIC") + .pattern("ITI") + .pattern("CIC") + .input('I', ModItems.PRUDENTIUM_ESSENCE) + .input('T', ModItems.PROSPERITY_SEED_BASE) + .input('C', ModItems.PLACEHOLDER) + // Replace 'ModId:PLACEHOLDER' with 'minecraft:coal' after data gen + .criterion(hasItem(ModItems.PROSPERITY_SEED_BASE), conditionsFromItem(ModItems.PROSPERITY_SEED_BASE)) + .offerTo(recipeExporter, Identifier.of(MysticalAgricultureFabric.MOD_ID, "coal_seeds_recipe")); + + ShapedRecipeJsonBuilder.create(RecipeCategory.MISC, ModItems.PLACEHOLDER, 12) + // why the FUCK does coal not exist??? Most useless fucking thing possible. + // Replace 'ModId:PLACEHOLDER' with 'minecraft:coal' after data gen + .pattern("CCC") + .pattern("C C") + .pattern("CCC") + .input('C', ModItems.COAL_ESSENCE) + .criterion(hasItem(ModItems.COAL_ESSENCE), conditionsFromItem(ModItems.COAL_ESSENCE)) + .offerTo(recipeExporter, Identifier.of(MysticalAgricultureFabric.MOD_ID, "coal_essence_to_coal")); + + // + // COPPER ORE + // + + ShapedRecipeJsonBuilder.create(RecipeCategory.MISC, ModItems.COPPER_CROP_SEEDS) + .pattern("CIC") + .pattern("ITI") + .pattern("CIC") + .input('I', ModItems.INFERIUM_ESSENCE) + .input('T', ModItems.PROSPERITY_SEED_BASE) + .input('C', ConventionalItemTags.COPPER_INGOTS) + .criterion(hasItem(ModItems.PROSPERITY_SEED_BASE), conditionsFromItem(ModItems.PROSPERITY_SEED_BASE)) + .offerTo(recipeExporter, Identifier.of(MysticalAgricultureFabric.MOD_ID, "copper_seeds_recipe")); + + ShapedRecipeJsonBuilder.create(RecipeCategory.MISC, ModItems.PLACEHOLDER, 12) + // why the FUCK does copper ingot not exist??? Most useless fucking thing possible. + // Replace 'ModId:PLACEHOLDER' with 'minecraft:copper_ingot' after data gen + .pattern("CCC") + .pattern("C C") + .pattern("CCC") + .input('C', ModItems.COPPER_ESSENCE) + .criterion(hasItem(ModItems.COPPER_ESSENCE), conditionsFromItem(ModItems.COPPER_ESSENCE)) + .offerTo(recipeExporter, Identifier.of(MysticalAgricultureFabric.MOD_ID, "copper_essence_to_ingot")); + + // + // IRON ORE + // + + ShapedRecipeJsonBuilder.create(RecipeCategory.MISC, ModItems.IRON_CROP_SEEDS) + .pattern("CIC") + .pattern("ITI") + .pattern("CIC") + .input('I', ModItems.INFERIUM_ESSENCE) + .input('T', ModItems.PROSPERITY_SEED_BASE) + .input('C', ConventionalItemTags.IRON_INGOTS) + .criterion(hasItem(ModItems.PROSPERITY_SEED_BASE), conditionsFromItem(ModItems.PROSPERITY_SEED_BASE)) + .offerTo(recipeExporter, Identifier.of(MysticalAgricultureFabric.MOD_ID, "iron_seeds_recipe")); + + ShapedRecipeJsonBuilder.create(RecipeCategory.MISC, ModItems.PLACEHOLDER, 12) + // why the FUCK does iron ingot not exist??? Most useless fucking thing possible. + // Replace 'ModId:PLACEHOLDER' with 'minecraft:iron_ingot' after data gen + .pattern("CCC") + .pattern("C C") + .pattern("CCC") + .input('C', ModItems.IRON_ESSENCE) + .criterion(hasItem(ModItems.IRON_ESSENCE), conditionsFromItem(ModItems.IRON_ESSENCE)) + .offerTo(recipeExporter, Identifier.of(MysticalAgricultureFabric.MOD_ID, "iron_essence_to_ingot")); + + // + // GOLD ORE + // + + ShapedRecipeJsonBuilder.create(RecipeCategory.MISC, ModItems.GOLD_CROP_SEEDS) + .pattern("CIC") + .pattern("ITI") + .pattern("CIC") + .input('I', ModItems.INFERIUM_ESSENCE) + .input('T', ModItems.PROSPERITY_SEED_BASE) + .input('C', ConventionalItemTags.GOLD_INGOTS) + .criterion(hasItem(ModItems.PROSPERITY_SEED_BASE), conditionsFromItem(ModItems.PROSPERITY_SEED_BASE)) + .offerTo(recipeExporter, Identifier.of(MysticalAgricultureFabric.MOD_ID, "gold_seeds_recipe")); + + ShapedRecipeJsonBuilder.create(RecipeCategory.MISC, ModItems.PLACEHOLDER, 12) + // why the FUCK does gold ingot not exist??? Most useless fucking thing possible. + // Replace 'ModId:PLACEHOLDER' with 'minecraft:gold_ingot' after data gen + .pattern("CCC") + .pattern("C C") + .pattern("CCC") + .input('C', ModItems.GOLD_ESSENCE) + .criterion(hasItem(ModItems.GOLD_ESSENCE), conditionsFromItem(ModItems.GOLD_ESSENCE)) + .offerTo(recipeExporter, Identifier.of(MysticalAgricultureFabric.MOD_ID, "gold_essence_to_ingot")); + + // + // DIAMOND ORE + // + + ShapedRecipeJsonBuilder.create(RecipeCategory.MISC, ModItems.DIAMOND_CROP_SEEDS) + .pattern("CIC") + .pattern("ITI") + .pattern("CIC") + .input('I', ModItems.INFERIUM_ESSENCE) + .input('T', ModItems.PROSPERITY_SEED_BASE) + .input('C', ConventionalItemTags.DIAMOND_GEMS) + .criterion(hasItem(ModItems.PROSPERITY_SEED_BASE), conditionsFromItem(ModItems.PROSPERITY_SEED_BASE)) + .offerTo(recipeExporter, Identifier.of(MysticalAgricultureFabric.MOD_ID, "diamond_seeds_recipe")); + + ShapedRecipeJsonBuilder.create(RecipeCategory.MISC, ModItems.PLACEHOLDER, 12) + // why the FUCK does DIAMONDS not exist??? Most useless fucking thing possible. + // Replace 'ModId:PLACEHOLDER' with 'minecraft:diamond' after data gen + .pattern("CCC") + .pattern("C C") + .pattern("CCC") + .input('C', ModItems.DIAMOND_ESSENCE) + .criterion(hasItem(ModItems.DIAMOND_ESSENCE), conditionsFromItem(ModItems.DIAMOND_ESSENCE)) + .offerTo(recipeExporter, Identifier.of(MysticalAgricultureFabric.MOD_ID, "diamond_essence_to_gem"));*/ + } +} diff --git a/src/main/java/xyz/ibatv/nethercraft/item/ModItemGroups.java b/src/main/java/xyz/ibatv/nethercraft/item/ModItemGroups.java new file mode 100644 index 0000000..b5f0a86 --- /dev/null +++ b/src/main/java/xyz/ibatv/nethercraft/item/ModItemGroups.java @@ -0,0 +1,31 @@ +package xyz.ibatv.nethercraft.item; + +import net.fabricmc.fabric.api.itemgroup.v1.FabricItemGroup; +import net.minecraft.item.ItemGroup; +import net.minecraft.item.ItemStack; +import net.minecraft.registry.Registries; +import net.minecraft.registry.Registry; +import net.minecraft.text.Text; +import net.minecraft.util.Identifier; +import xyz.ibatv.nethercraft.block.ModBlocks; +import xyz.ibatv.nethercraft.item.ModItems; +import xyz.ibatv.nethercraft.NethercraftClassic; + +public class ModItemGroups { + public static final ItemGroup MYSTICAL_AGRICULTURE_FABRIC = Registry.register(Registries.ITEM_GROUP, + Identifier.of(NethercraftClassic.MOD_ID, "mystical_agriculture_fabric"), + FabricItemGroup.builder().icon(() -> new ItemStack(ModBlocks.GLOWOOD_PLANKS)) + .displayName(Text.translatable("itemgroup.MysticalAgricultureFabric.mystical_agriculture_fabric")) + .entries((displayContext, entries) -> { + //Blocks + entries.add(ModBlocks.GLOWOOD_PLANKS); + //Items + entries.add(ModItems.NETHERSTICK); + }).build()); + + + + public static void registeritemGroups(){ + NethercraftClassic.LOGGER.info("Registering Item Groups for " + NethercraftClassic.MOD_ID); + } +} diff --git a/src/main/java/xyz/ibatv/nethercraft/item/ModItems.java b/src/main/java/xyz/ibatv/nethercraft/item/ModItems.java new file mode 100644 index 0000000..24ffbbc --- /dev/null +++ b/src/main/java/xyz/ibatv/nethercraft/item/ModItems.java @@ -0,0 +1,34 @@ +package xyz.ibatv.nethercraft.item; + +import net.fabricmc.fabric.api.itemgroup.v1.ItemGroupEvents; +import net.minecraft.item.AliasedBlockItem; +import net.minecraft.item.Item; +import net.minecraft.item.ItemGroups; +import net.minecraft.registry.Registries; +import net.minecraft.registry.Registry; +import net.minecraft.util.Identifier; +import xyz.ibatv.nethercraft.NethercraftClassic; +import xyz.ibatv.nethercraft.block.ModBlocks; + +public class ModItems { + public static final Item NETHERSTICK = registerItem("netherstick", new Item(new Item.Settings())); + + + public static final Item PLACEHOLDER = registerItem("placeholder", new Item(new Item.Settings())); + //Placeholder for recipes when ConventionalItemTags.* doesn't actually have an item because fuck you. + + + //public static final Item COAL_CROP_SEEDS = registerItem("coal_crop_seeds", + // new AliasedBlockItem(ModBlocks.COAL_CROP, new Item.Settings())); + + + + + private static Item registerItem(String name, Item item) { + return Registry.register(Registries.ITEM, Identifier.of(NethercraftClassic.MOD_ID, name), item); + } + + public static void registerModItems() { + NethercraftClassic.LOGGER.info("Registering Mod Items for " + NethercraftClassic.MOD_ID); + } +} \ No newline at end of file