diff --git a/build.gradle b/build.gradle index 9a112dc..9edf2c1 100644 --- a/build.gradle +++ b/build.gradle @@ -94,8 +94,25 @@ neoForge { // Include resources generated by data generators. sourceSets.main.resources { srcDir 'src/generated/resources' } +repositories { + maven { // For ImGuiMC + url = "https://maven.ryanhcode.dev/releases" + name = "RyanHCode Maven" + } + maven { // For Veil + name = 'BlameJared Maven (CrT / Bookshelf)' + url = 'https://maven.blamejared.com' + } +} dependencies { + + implementation("foundry.veil:veil-neoforge-${project.minecraft_version}:${project.veil_version}") { + exclude group: "maven.modrinth" + exclude group: "me.fallenbreath" + } + implementation("foundry.imguimc:imguimc-neoforge-${project.minecraft_version}:${project.imguimc_version}") + // Example mod dependency with JEI // The JEI API is declared for compile time use, while the full JEI artifact is used at runtime // compileOnly "mezz.jei:jei-${mc_version}-common-api:${jei_version}" diff --git a/gradle.properties b/gradle.properties index a7de65f..d2f0f07 100644 --- a/gradle.properties +++ b/gradle.properties @@ -38,3 +38,6 @@ mod_group_id=ovh.glitchlabs mod_authors= # The description of the mod. This is a simple multiline text string that is used for display purposes in the mod list. mod_description= + +veil_version=4.5.2 +imguimc_version=2.0.5 diff --git a/src/generated/resources/.cache/103d9f3f36b01595f1aa5172191e60eff02e6924 b/src/generated/resources/.cache/103d9f3f36b01595f1aa5172191e60eff02e6924 new file mode 100644 index 0000000..efa9f9e --- /dev/null +++ b/src/generated/resources/.cache/103d9f3f36b01595f1aa5172191e60eff02e6924 @@ -0,0 +1 @@ +// 1.21.1 2026-10-16T12:47:44.582744189 Registries diff --git a/src/generated/resources/.cache/1056f1584225f799d0fcbc4e64aab7e531afe1a6 b/src/generated/resources/.cache/1056f1584225f799d0fcbc4e64aab7e531afe1a6 new file mode 100644 index 0000000..2c92094 --- /dev/null +++ b/src/generated/resources/.cache/1056f1584225f799d0fcbc4e64aab7e531afe1a6 @@ -0,0 +1,2 @@ +// 1.21.1 2026-10-16T12:47:44.583189104 Tags for minecraft:item mod id ichori +35133e95f1c8fdd7a1c21afcc231fc0bffefb9a8 data/c/tags/item/foods.json diff --git a/src/generated/resources/.cache/3dde5a5e0e8dac7251d2bb76f81252fe4f9cf366 b/src/generated/resources/.cache/3dde5a5e0e8dac7251d2bb76f81252fe4f9cf366 new file mode 100644 index 0000000..e51edb0 --- /dev/null +++ b/src/generated/resources/.cache/3dde5a5e0e8dac7251d2bb76f81252fe4f9cf366 @@ -0,0 +1,2 @@ +// 1.21.1 2026-10-16T12:47:44.582965674 Tags for minecraft:block mod id ichori +35133e95f1c8fdd7a1c21afcc231fc0bffefb9a8 data/minecraft/tags/block/mineable/pickaxe.json diff --git a/src/generated/resources/.cache/400b19a18f16f3d3fdf6ea18a8b40f6761b7a871 b/src/generated/resources/.cache/400b19a18f16f3d3fdf6ea18a8b40f6761b7a871 new file mode 100644 index 0000000..886d0dc --- /dev/null +++ b/src/generated/resources/.cache/400b19a18f16f3d3fdf6ea18a8b40f6761b7a871 @@ -0,0 +1,2 @@ +// 1.21.1 2026-10-16T12:47:44.582288393 Languages: en_us for mod: ichori +5fbe0d5f50f86e79824a0a050bd84d984933d48e assets/ichori/lang/en_us.json diff --git a/src/generated/resources/.cache/59eb3dbb5f86130e09b3c62d89b9525ee01cf52d b/src/generated/resources/.cache/59eb3dbb5f86130e09b3c62d89b9525ee01cf52d new file mode 100644 index 0000000..f31e906 --- /dev/null +++ b/src/generated/resources/.cache/59eb3dbb5f86130e09b3c62d89b9525ee01cf52d @@ -0,0 +1 @@ +// 1.21.1 2026-10-16T12:47:44.582476236 Loot Tables diff --git a/src/generated/resources/.cache/5e0d3297a6115240f463832174b73fdacea9840e b/src/generated/resources/.cache/5e0d3297a6115240f463832174b73fdacea9840e new file mode 100644 index 0000000..c9a6160 --- /dev/null +++ b/src/generated/resources/.cache/5e0d3297a6115240f463832174b73fdacea9840e @@ -0,0 +1 @@ +// 1.21.1 2026-10-16T12:47:44.583089988 Block States: ichori diff --git a/src/generated/resources/.cache/9b880295f71a0e6aa23e96d38002ee07e356516d b/src/generated/resources/.cache/9b880295f71a0e6aa23e96d38002ee07e356516d new file mode 100644 index 0000000..ca59d0b --- /dev/null +++ b/src/generated/resources/.cache/9b880295f71a0e6aa23e96d38002ee07e356516d @@ -0,0 +1,2 @@ +// 1.21.1 2026-10-16T12:48:59.62422735 Item Models: ichori +be44db6dcd5cd06217ef4e7a8025a21185ac48ac assets/ichori/models/item/test_spawn_light.json diff --git a/src/generated/resources/.cache/9fb1092f32d4fcbf9e061ffd718d4ec689c6c95e b/src/generated/resources/.cache/9fb1092f32d4fcbf9e061ffd718d4ec689c6c95e new file mode 100644 index 0000000..62f19ff --- /dev/null +++ b/src/generated/resources/.cache/9fb1092f32d4fcbf9e061ffd718d4ec689c6c95e @@ -0,0 +1 @@ +// 1.21.1 2026-10-16T12:47:44.582636587 Recipes diff --git a/src/generated/resources/.cache/e0d3d0b8d9c807675613821fa865a35f707cd83f b/src/generated/resources/.cache/e0d3d0b8d9c807675613821fa865a35f707cd83f new file mode 100644 index 0000000..8d187fd --- /dev/null +++ b/src/generated/resources/.cache/e0d3d0b8d9c807675613821fa865a35f707cd83f @@ -0,0 +1,2 @@ +// 1.21.1 2026-10-16T12:47:44.58149816 Data Maps +813fb735bf77d930c172d32fd84a5f09a09bb4a8 data/neoforge/data_maps/item/furnace_fuels.json diff --git a/src/generated/resources/assets/ichori/lang/en_us.json b/src/generated/resources/assets/ichori/lang/en_us.json new file mode 100644 index 0000000..9c97a20 --- /dev/null +++ b/src/generated/resources/assets/ichori/lang/en_us.json @@ -0,0 +1,3 @@ +{ + "creativetab.icgori.ichori": "Ichori" +} \ No newline at end of file diff --git a/src/generated/resources/assets/ichori/models/item/test_spawn_light.json b/src/generated/resources/assets/ichori/models/item/test_spawn_light.json new file mode 100644 index 0000000..5a63746 --- /dev/null +++ b/src/generated/resources/assets/ichori/models/item/test_spawn_light.json @@ -0,0 +1,3 @@ +{ + "parent": "minecraft:item/stick" +} \ No newline at end of file diff --git a/src/generated/resources/data/c/tags/item/foods.json b/src/generated/resources/data/c/tags/item/foods.json new file mode 100644 index 0000000..f72d209 --- /dev/null +++ b/src/generated/resources/data/c/tags/item/foods.json @@ -0,0 +1,3 @@ +{ + "values": [] +} \ 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 new file mode 100644 index 0000000..f72d209 --- /dev/null +++ b/src/generated/resources/data/minecraft/tags/block/mineable/pickaxe.json @@ -0,0 +1,3 @@ +{ + "values": [] +} \ No newline at end of file diff --git a/src/generated/resources/data/neoforge/data_maps/item/furnace_fuels.json b/src/generated/resources/data/neoforge/data_maps/item/furnace_fuels.json new file mode 100644 index 0000000..96100ce --- /dev/null +++ b/src/generated/resources/data/neoforge/data_maps/item/furnace_fuels.json @@ -0,0 +1,3 @@ +{ + "values": {} +} \ 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 new file mode 100644 index 0000000..bbea834 --- /dev/null +++ b/src/main/java/ovh/glitchlabs/ichori/Block/ModBlocks.java @@ -0,0 +1,31 @@ +package ovh.glitchlabs.ichori.Block; + +import net.minecraft.world.item.BlockItem; +import net.minecraft.world.item.Item; +import net.minecraft.world.level.block.Block; +import net.neoforged.bus.api.IEventBus; +import net.neoforged.neoforge.registries.DeferredBlock; +import net.neoforged.neoforge.registries.DeferredRegister; +import ovh.glitchlabs.ichori.Ichori; +import ovh.glitchlabs.ichori.Item.ModItems; + +import java.util.function.Supplier; + +public class ModBlocks { + public static final DeferredRegister.Blocks BLOCKS = + DeferredRegister.createBlocks(Ichori.MODID); + + private static DeferredBlock registerBlock(String name, Supplier block) { + DeferredBlock toReturn = BLOCKS.register(name, block); + registerBlockItem(name, toReturn); + return toReturn; + } + + private static void registerBlockItem(String name, DeferredBlock block) { + ModItems.ITEMS.register(name, () -> new BlockItem(block.get(), new Item.Properties())); + } + + public static void register(IEventBus eventBus) { + BLOCKS.register(eventBus); + } +} diff --git a/src/main/java/ovh/glitchlabs/ichori/Ichori.java b/src/main/java/ovh/glitchlabs/ichori/Ichori.java index 3f1772c..2bdea60 100644 --- a/src/main/java/ovh/glitchlabs/ichori/Ichori.java +++ b/src/main/java/ovh/glitchlabs/ichori/Ichori.java @@ -31,6 +31,9 @@ import net.neoforged.neoforge.registries.DeferredHolder; import net.neoforged.neoforge.registries.DeferredItem; import net.neoforged.neoforge.registries.DeferredRegister; import org.slf4j.Logger; +import ovh.glitchlabs.ichori.Block.ModBlocks; +import ovh.glitchlabs.ichori.Item.ModCreativeModeTabs; +import ovh.glitchlabs.ichori.Item.ModItems; // The value here should match an entry in the META-INF/neoforge.mods.toml file @Mod(Ichori.MODID) @@ -49,8 +52,10 @@ public class Ichori { // Do not add this line if there are no @SubscribeEvent-annotated functions in this class, like onServerStarting() below. NeoForge.EVENT_BUS.register(this); - // Register the item to a creative tab - modEventBus.addListener(this::addCreative); + ModItems.register(modEventBus); + ModBlocks.register(modEventBus); + + ModCreativeModeTabs.register(modEventBus); // Register our mod's ModConfigSpec so that FML can create and load the config file for us modContainer.registerConfig(ModConfig.Type.COMMON, Config.SPEC); @@ -61,11 +66,6 @@ public class Ichori { LOGGER.info("HELLO FROM COMMON SETUP"); } - // Add the example block item to the building blocks tab - private void addCreative(BuildCreativeModeTabContentsEvent event) { - if (event.getTabKey() == CreativeModeTabs.BUILDING_BLOCKS) event.accept(EXAMPLE_BLOCK_ITEM); - } - // You can use SubscribeEvent and let the Event Bus discover methods to call @SubscribeEvent public void onServerStarting(ServerStartingEvent event) { diff --git a/src/main/java/ovh/glitchlabs/ichori/Item/ModCreativeModeTabs.java b/src/main/java/ovh/glitchlabs/ichori/Item/ModCreativeModeTabs.java new file mode 100644 index 0000000..e44bcb4 --- /dev/null +++ b/src/main/java/ovh/glitchlabs/ichori/Item/ModCreativeModeTabs.java @@ -0,0 +1,30 @@ +package ovh.glitchlabs.ichori.Item; + +import net.minecraft.core.registries.Registries; +import net.minecraft.network.chat.Component; +import net.minecraft.world.item.CreativeModeTab; +import net.minecraft.world.item.ItemStack; +import net.neoforged.bus.api.IEventBus; +import net.neoforged.neoforge.registries.DeferredItem; +import net.neoforged.neoforge.registries.DeferredRegister; +import ovh.glitchlabs.ichori.Ichori; + +import java.awt.*; +import java.util.function.Supplier; + +public class ModCreativeModeTabs { + public static final DeferredRegister CREATIVE_MODE_TAB = + DeferredRegister.create(Registries.CREATIVE_MODE_TAB, Ichori.MODID); + + public static final Supplier ICHORI_TAB = CREATIVE_MODE_TAB.register("ichori_tab", + () -> CreativeModeTab.builder().icon(() -> new ItemStack(ModItems.TEST_Spawn_LIGHT.get())) + .title(Component.translatable("creativetab.ichori.ichori")) + .displayItems(((itemDisplayParameters, output) -> { + output.accept(ModItems.TEST_Spawn_LIGHT); + })).build()); + + public static void register(IEventBus eventBus) { + CREATIVE_MODE_TAB.register(eventBus); + } + +} diff --git a/src/main/java/ovh/glitchlabs/ichori/Item/ModItems.java b/src/main/java/ovh/glitchlabs/ichori/Item/ModItems.java new file mode 100644 index 0000000..c5b06a9 --- /dev/null +++ b/src/main/java/ovh/glitchlabs/ichori/Item/ModItems.java @@ -0,0 +1,23 @@ +package ovh.glitchlabs.ichori.Item; + +import net.minecraft.world.item.Item; +import net.neoforged.bus.api.IEventBus; +import net.neoforged.neoforge.registries.DeferredItem; +import net.neoforged.neoforge.registries.DeferredRegister; +import ovh.glitchlabs.ichori.Ichori; +import ovh.glitchlabs.ichori.Item.custom.test_spawn_light; + +public class ModItems { + public static final DeferredRegister.Items ITEMS = DeferredRegister.createItems(Ichori.MODID); + + public static final DeferredItem TEST_Spawn_LIGHT = ITEMS.register("test_spawn_light", + () -> new test_spawn_light(new Item.Properties())); + + + + + + public static void register(IEventBus eventBus) { + ITEMS.register(eventBus); + } +} diff --git a/src/main/java/ovh/glitchlabs/ichori/Item/custom/test_spawn_light.java b/src/main/java/ovh/glitchlabs/ichori/Item/custom/test_spawn_light.java new file mode 100644 index 0000000..4d3d72a --- /dev/null +++ b/src/main/java/ovh/glitchlabs/ichori/Item/custom/test_spawn_light.java @@ -0,0 +1,39 @@ +package ovh.glitchlabs.ichori.Item.custom; + +import foundry.veil.api.client.color.Color; +import foundry.veil.api.client.render.VeilRenderSystem; +import foundry.veil.api.client.render.light.data.PointLightData; +import net.minecraft.core.BlockPos; +import net.minecraft.world.InteractionHand; +import net.minecraft.world.InteractionResultHolder; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.item.Item; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.level.Level; + +public class test_spawn_light extends Item { + + public test_spawn_light(Properties properties) { + super(properties); + } + + @Override + public InteractionResultHolder use(Level level, Player player, InteractionHand hand) { + ItemStack stack = player.getItemInHand(hand); + + if (level.isClientSide) { + BlockPos blockPos = player.blockPosition(); + + PointLightData data = new PointLightData(); + data.setPosition(blockPos.getX() + 0.5, blockPos.getY() + 0.5, blockPos.getZ() + 0.5); + data.setRadius(6.0f); + data.setBrightness(7.0f); + data.setColor(137,39,39); + data.setInscatteringStrength(4.0f); + + VeilRenderSystem.renderer().getLightRenderer().addLight(data); + } + + return InteractionResultHolder.sidedSuccess(stack, level.isClientSide()); + } +} \ No newline at end of file diff --git a/src/main/java/ovh/glitchlabs/ichori/datagen/DataGenerators.java b/src/main/java/ovh/glitchlabs/ichori/datagen/DataGenerators.java new file mode 100644 index 0000000..2f9fc3a --- /dev/null +++ b/src/main/java/ovh/glitchlabs/ichori/datagen/DataGenerators.java @@ -0,0 +1,45 @@ +package ovh.glitchlabs.ichori.datagen; + +import net.minecraft.core.HolderLookup; +import net.minecraft.data.DataGenerator; +import net.minecraft.data.PackOutput; +import net.minecraft.data.loot.LootTableProvider; +import net.minecraft.world.level.storage.loot.parameters.LootContextParamSets; +import net.neoforged.bus.api.SubscribeEvent; +import net.neoforged.fml.common.EventBusSubscriber; +import net.neoforged.neoforge.common.data.BlockTagsProvider; +import net.neoforged.neoforge.common.data.ExistingFileHelper; +import net.neoforged.neoforge.data.event.GatherDataEvent; +import ovh.glitchlabs.ichori.Ichori; + +import java.util.Collections; +import java.util.List; +import java.util.concurrent.CompletableFuture; + +@EventBusSubscriber(modid = Ichori.MODID, bus = EventBusSubscriber.Bus.MOD) +public class DataGenerators { + @SubscribeEvent + public static void gatherData(GatherDataEvent event) { + DataGenerator generator = event.getGenerator(); + PackOutput packOutput = generator.getPackOutput(); + ExistingFileHelper existingFileHelper = event.getExistingFileHelper(); + CompletableFuture lookupProvider = event.getLookupProvider(); + + generator.addProvider(event.includeServer(), new LootTableProvider(packOutput, Collections.emptySet(), + List.of(new LootTableProvider.SubProviderEntry(ModBlockLootTableProvider::new, LootContextParamSets.BLOCK)), lookupProvider)); + generator.addProvider(event.includeServer(), new ModRecipeProvider(packOutput, lookupProvider)); + + BlockTagsProvider blockTagsProvider = new ModBlockTagProvider(packOutput, lookupProvider, existingFileHelper); + generator.addProvider(event.includeServer(), blockTagsProvider); + generator.addProvider(event.includeServer(), new ModItemTagProvider(packOutput, lookupProvider, blockTagsProvider.contentsGetter(), existingFileHelper)); + + generator.addProvider(event.includeServer(), new ModDataMapProvider(packOutput, lookupProvider)); + generator.addProvider(event.includeServer(), new ModDatapackProvider(packOutput, lookupProvider)); + + + generator.addProvider(event.includeClient(), new ModItemModelProvider(packOutput, existingFileHelper)); + generator.addProvider(event.includeClient(), new ModBlockStateProvider(packOutput, existingFileHelper)); + + generator.addProvider(event.includeClient(), new ModLanguageProvider(packOutput)); + } +} diff --git a/src/main/java/ovh/glitchlabs/ichori/datagen/ModBlockLootTableProvider.java b/src/main/java/ovh/glitchlabs/ichori/datagen/ModBlockLootTableProvider.java new file mode 100644 index 0000000..07436a5 --- /dev/null +++ b/src/main/java/ovh/glitchlabs/ichori/datagen/ModBlockLootTableProvider.java @@ -0,0 +1,55 @@ +package ovh.glitchlabs.ichori.datagen; + +import net.minecraft.core.Holder; +import net.minecraft.core.HolderLookup; +import net.minecraft.core.registries.Registries; +import net.minecraft.data.loot.BlockLootSubProvider; +import net.minecraft.world.flag.FeatureFlags; +import net.minecraft.world.item.Item; +import net.minecraft.world.item.enchantment.Enchantment; +import net.minecraft.world.item.enchantment.Enchantments; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.storage.loot.LootTable; +import net.minecraft.world.level.storage.loot.entries.LootItem; +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 java.util.Set; + +public class ModBlockLootTableProvider extends BlockLootSubProvider { + protected ModBlockLootTableProvider(HolderLookup.Provider registries) { + super(Set.of(), FeatureFlags.REGISTRY.allFlags(), registries); + } + + @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)); + + + */ + } + + + + protected LootTable.Builder createMultipleOreDrops(Block pBlock, Item item, float minDrops, float maxDrops) { + HolderLookup.RegistryLookup registrylookup = this.registries.lookupOrThrow(Registries.ENCHANTMENT); + return this.createSilkTouchDispatchTable(pBlock, + this.applyExplosionDecay(pBlock, LootItem.lootTableItem(item) + .apply(SetItemCountFunction.setCount(UniformGenerator.between(minDrops, maxDrops))) + .apply(ApplyBonusCount.addOreBonusCount(registrylookup.getOrThrow(Enchantments.FORTUNE))))); + } + + @Override + protected Iterable getKnownBlocks() { + return ModBlocks.BLOCKS.getEntries().stream().map(Holder::value)::iterator; + } +} \ No newline at end of file diff --git a/src/main/java/ovh/glitchlabs/ichori/datagen/ModBlockStateProvider.java b/src/main/java/ovh/glitchlabs/ichori/datagen/ModBlockStateProvider.java new file mode 100644 index 0000000..b3126a9 --- /dev/null +++ b/src/main/java/ovh/glitchlabs/ichori/datagen/ModBlockStateProvider.java @@ -0,0 +1,23 @@ +package ovh.glitchlabs.ichori.datagen; + +import net.minecraft.data.PackOutput; +import net.neoforged.neoforge.client.model.generators.BlockStateProvider; +import net.neoforged.neoforge.common.data.ExistingFileHelper; +import net.neoforged.neoforge.registries.DeferredBlock; +import ovh.glitchlabs.ichori.Ichori; + +public class ModBlockStateProvider extends BlockStateProvider { + public ModBlockStateProvider(PackOutput output, ExistingFileHelper exFileHelper) { + super(output, Ichori.MODID, exFileHelper); + } + + @Override + protected void registerStatesAndModels() { +// blockWithItem(ModBlocks.BISMUTH_BLOCK); + + } + + private void blockWithItem(DeferredBlock deferredBlock) { + simpleBlockWithItem(deferredBlock.get(), cubeAll(deferredBlock.get())); + } +} \ No newline at end of file diff --git a/src/main/java/ovh/glitchlabs/ichori/datagen/ModBlockTagProvider.java b/src/main/java/ovh/glitchlabs/ichori/datagen/ModBlockTagProvider.java new file mode 100644 index 0000000..41c595d --- /dev/null +++ b/src/main/java/ovh/glitchlabs/ichori/datagen/ModBlockTagProvider.java @@ -0,0 +1,25 @@ +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.data.BlockTagsProvider; +import net.neoforged.neoforge.common.data.ExistingFileHelper; +import org.jetbrains.annotations.Nullable; +import ovh.glitchlabs.ichori.Ichori; + +import java.util.concurrent.CompletableFuture; + +public class ModBlockTagProvider extends BlockTagsProvider { + public ModBlockTagProvider(PackOutput output, CompletableFuture lookupProvider, @Nullable ExistingFileHelper existingFileHelper) { + super(output, lookupProvider, Ichori.MODID, existingFileHelper); + } + + @Override + protected void addTags(HolderLookup.Provider provider) { + tag(BlockTags.MINEABLE_WITH_PICKAXE) + + ; + + } +} \ No newline at end of file diff --git a/src/main/java/ovh/glitchlabs/ichori/datagen/ModDataMapProvider.java b/src/main/java/ovh/glitchlabs/ichori/datagen/ModDataMapProvider.java new file mode 100644 index 0000000..6647a44 --- /dev/null +++ b/src/main/java/ovh/glitchlabs/ichori/datagen/ModDataMapProvider.java @@ -0,0 +1,22 @@ +package ovh.glitchlabs.ichori.datagen; + +import net.minecraft.core.HolderLookup; +import net.minecraft.data.PackOutput; +import net.neoforged.neoforge.common.data.DataMapProvider; +import net.neoforged.neoforge.registries.datamaps.builtin.FurnaceFuel; +import net.neoforged.neoforge.registries.datamaps.builtin.NeoForgeDataMaps; + +import java.util.concurrent.CompletableFuture; + +public class ModDataMapProvider extends DataMapProvider { + protected ModDataMapProvider(PackOutput packOutput, CompletableFuture lookupProvider) { + super(packOutput, lookupProvider); + } + + @Override + protected void gather() { + this.builder(NeoForgeDataMaps.FURNACE_FUELS) + //.add(ModItems.STARLIGHT_ASHES.getId(), new FurnaceFuel(1200), false) + ; + } +} \ No newline at end of file diff --git a/src/main/java/ovh/glitchlabs/ichori/datagen/ModDatapackProvider.java b/src/main/java/ovh/glitchlabs/ichori/datagen/ModDatapackProvider.java new file mode 100644 index 0000000..308d6a1 --- /dev/null +++ b/src/main/java/ovh/glitchlabs/ichori/datagen/ModDatapackProvider.java @@ -0,0 +1,28 @@ +package ovh.glitchlabs.ichori.datagen; + +import net.minecraft.core.HolderLookup; +import net.minecraft.core.RegistrySetBuilder; +import net.minecraft.core.registries.Registries; +import net.minecraft.data.PackOutput; +import net.neoforged.neoforge.common.data.DatapackBuiltinEntriesProvider; +import net.neoforged.neoforge.registries.NeoForgeRegistries; +import ovh.glitchlabs.ichori.Ichori; + + +import java.util.Set; +import java.util.concurrent.CompletableFuture; + +public class ModDatapackProvider extends DatapackBuiltinEntriesProvider { + public static final RegistrySetBuilder BUILDER = new RegistrySetBuilder() + //.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) + ; + + public ModDatapackProvider(PackOutput output, CompletableFuture registries) { + super(output, registries, BUILDER, Set.of(Ichori.MODID)); + } +} \ No newline at end of file diff --git a/src/main/java/ovh/glitchlabs/ichori/datagen/ModItemModelProvider.java b/src/main/java/ovh/glitchlabs/ichori/datagen/ModItemModelProvider.java new file mode 100644 index 0000000..8388814 --- /dev/null +++ b/src/main/java/ovh/glitchlabs/ichori/datagen/ModItemModelProvider.java @@ -0,0 +1,22 @@ +package ovh.glitchlabs.ichori.datagen; + +import net.minecraft.data.PackOutput; +import net.neoforged.neoforge.client.model.generators.ItemModelProvider; +import net.neoforged.neoforge.common.data.ExistingFileHelper; +import ovh.glitchlabs.ichori.Ichori; +import ovh.glitchlabs.ichori.Item.ModItems; + +public class ModItemModelProvider extends ItemModelProvider { + public ModItemModelProvider(PackOutput output, ExistingFileHelper existingFileHelper) { + super(output, Ichori.MODID, existingFileHelper); + } + + + + @Override + protected void registerModels() { + + withExistingParent(ModItems.TEST_Spawn_LIGHT.getId().getPath(), mcLoc("item/stick")); + + } +} diff --git a/src/main/java/ovh/glitchlabs/ichori/datagen/ModItemTagProvider.java b/src/main/java/ovh/glitchlabs/ichori/datagen/ModItemTagProvider.java new file mode 100644 index 0000000..c32f2df --- /dev/null +++ b/src/main/java/ovh/glitchlabs/ichori/datagen/ModItemTagProvider.java @@ -0,0 +1,27 @@ +package ovh.glitchlabs.ichori.datagen; + +import net.minecraft.core.HolderLookup; +import net.minecraft.data.PackOutput; +import net.minecraft.data.tags.ItemTagsProvider; +import net.minecraft.world.item.Items; +import net.minecraft.world.level.block.Block; +import net.neoforged.fml.common.Mod; +import net.neoforged.neoforge.common.Tags; +import net.neoforged.neoforge.common.data.ExistingFileHelper; +import org.jetbrains.annotations.Nullable; +import ovh.glitchlabs.ichori.Ichori; +import java.util.concurrent.CompletableFuture; + +public class ModItemTagProvider extends ItemTagsProvider { + public ModItemTagProvider(PackOutput output, CompletableFuture lookupProvider, + CompletableFuture> blockTags, @Nullable ExistingFileHelper existingFileHelper) { + super(output, lookupProvider, blockTags, Ichori.MODID, existingFileHelper); + } + + @Override + protected void addTags(HolderLookup.Provider provider) { + tag(Tags.Items.FOODS) + ; + + } +} diff --git a/src/main/java/ovh/glitchlabs/ichori/datagen/ModLanguageProvider.java b/src/main/java/ovh/glitchlabs/ichori/datagen/ModLanguageProvider.java new file mode 100644 index 0000000..f0160e3 --- /dev/null +++ b/src/main/java/ovh/glitchlabs/ichori/datagen/ModLanguageProvider.java @@ -0,0 +1,18 @@ +package ovh.glitchlabs.ichori.datagen; + +import net.minecraft.data.PackOutput; +import net.neoforged.neoforge.common.data.LanguageProvider; +import ovh.glitchlabs.ichori.Ichori; + +public class ModLanguageProvider extends LanguageProvider { + + public ModLanguageProvider(PackOutput output) { + super(output, Ichori.MODID, "en_us"); + } + + @Override + protected void addTranslations() { + add("creativetab.icgori.ichori", "Ichori"); + + } +} diff --git a/src/main/java/ovh/glitchlabs/ichori/datagen/ModRecipeProvider.java b/src/main/java/ovh/glitchlabs/ichori/datagen/ModRecipeProvider.java new file mode 100644 index 0000000..553a3b5 --- /dev/null +++ b/src/main/java/ovh/glitchlabs/ichori/datagen/ModRecipeProvider.java @@ -0,0 +1,62 @@ +package ovh.glitchlabs.ichori.datagen; + +import net.minecraft.core.HolderLookup; +import net.minecraft.data.PackOutput; +import net.minecraft.data.recipes.*; +import net.minecraft.world.item.crafting.*; +import net.minecraft.world.level.ItemLike; +import net.neoforged.neoforge.common.conditions.IConditionBuilder; +import ovh.glitchlabs.ichori.Ichori; + +import java.util.List; +import java.util.concurrent.CompletableFuture; + +public class ModRecipeProvider extends RecipeProvider implements IConditionBuilder { + public ModRecipeProvider(PackOutput output, CompletableFuture registries) { + super(output, registries); + } + + @Override + protected void buildRecipes(RecipeOutput recipeOutput) { + + /* + List BISMUTH_SMELTABLES = List.of(ModItems.RAW_BISMUTH, + ModBlocks.BISMUTH_ORE, ModBlocks.BISMUTH_DEEPSLATE_ORE); + + ShapedRecipeBuilder.shaped(RecipeCategory.MISC, ModBlocks.BISMUTH_BLOCK.get()) + .pattern("BBB") + .pattern("BBB") + .pattern("BBB") + .define('B', ModItems.BISMUTH.get()) + .unlockedBy("has_bismuth", has(ModItems.BISMUTH)).save(recipeOutput); + + ShapelessRecipeBuilder.shapeless(RecipeCategory.MISC, ModItems.BISMUTH.get(), 9) + .requires(ModBlocks.BISMUTH_BLOCK) + .unlockedBy("has_bismuth_block", has(ModBlocks.BISMUTH_BLOCK)).save(recipeOutput); + + oreSmelting(recipeOutput, BISMUTH_SMELTABLES, RecipeCategory.MISC, ModItems.BISMUTH.get(), 0.25f, 200, "bismuth"); + + + */ + } + + protected static void oreSmelting(RecipeOutput recipeOutput, List pIngredients, RecipeCategory pCategory, ItemLike pResult, + float pExperience, int pCookingTIme, String pGroup) { + oreCooking(recipeOutput, RecipeSerializer.SMELTING_RECIPE, SmeltingRecipe::new, pIngredients, pCategory, pResult, + pExperience, pCookingTIme, pGroup, "_from_smelting"); + } + + protected static void oreBlasting(RecipeOutput recipeOutput, List pIngredients, RecipeCategory pCategory, ItemLike pResult, + float pExperience, int pCookingTime, String pGroup) { + oreCooking(recipeOutput, RecipeSerializer.BLASTING_RECIPE, BlastingRecipe::new, pIngredients, pCategory, pResult, + pExperience, pCookingTime, pGroup, "_from_blasting"); + } + + protected static void oreCooking(RecipeOutput recipeOutput, RecipeSerializer pCookingSerializer, AbstractCookingRecipe.Factory factory, + List pIngredients, RecipeCategory pCategory, ItemLike pResult, float pExperience, int pCookingTime, String pGroup, String pRecipeName) { + for(ItemLike itemlike : pIngredients) { + SimpleCookingRecipeBuilder.generic(Ingredient.of(itemlike), pCategory, pResult, pExperience, pCookingTime, pCookingSerializer, factory).group(pGroup).unlockedBy(getHasName(itemlike), has(itemlike)) + .save(recipeOutput, Ichori.MODID + ":" + getItemName(pResult) + pRecipeName + "_" + getItemName(itemlike)); + } + } +} \ No newline at end of file