[add] Datagen
[add] veil light test [add] setup for future Blocks/Items/etc
This commit is contained in:
@@ -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}"
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
// 1.21.1 2026-10-16T12:47:44.582744189 Registries
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -0,0 +1 @@
|
||||
// 1.21.1 2026-10-16T12:47:44.582476236 Loot Tables
|
||||
@@ -0,0 +1 @@
|
||||
// 1.21.1 2026-10-16T12:47:44.583089988 Block States: ichori
|
||||
@@ -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
|
||||
@@ -0,0 +1 @@
|
||||
// 1.21.1 2026-10-16T12:47:44.582636587 Recipes
|
||||
@@ -0,0 +1,2 @@
|
||||
// 1.21.1 2026-10-16T12:47:44.58149816 Data Maps
|
||||
813fb735bf77d930c172d32fd84a5f09a09bb4a8 data/neoforge/data_maps/item/furnace_fuels.json
|
||||
@@ -0,0 +1,3 @@
|
||||
{
|
||||
"creativetab.icgori.ichori": "Ichori"
|
||||
}
|
||||
@@ -0,0 +1,3 @@
|
||||
{
|
||||
"parent": "minecraft:item/stick"
|
||||
}
|
||||
@@ -0,0 +1,3 @@
|
||||
{
|
||||
"values": []
|
||||
}
|
||||
@@ -0,0 +1,3 @@
|
||||
{
|
||||
"values": []
|
||||
}
|
||||
@@ -0,0 +1,3 @@
|
||||
{
|
||||
"values": {}
|
||||
}
|
||||
@@ -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 <T extends Block>DeferredBlock<T> registerBlock(String name, Supplier<T> block) {
|
||||
DeferredBlock<T> toReturn = BLOCKS.register(name, block);
|
||||
registerBlockItem(name, toReturn);
|
||||
return toReturn;
|
||||
}
|
||||
|
||||
private static <T extends Block> void registerBlockItem(String name, DeferredBlock<T> block) {
|
||||
ModItems.ITEMS.register(name, () -> new BlockItem(block.get(), new Item.Properties()));
|
||||
}
|
||||
|
||||
public static void register(IEventBus eventBus) {
|
||||
BLOCKS.register(eventBus);
|
||||
}
|
||||
}
|
||||
@@ -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) {
|
||||
|
||||
@@ -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<CreativeModeTab> CREATIVE_MODE_TAB =
|
||||
DeferredRegister.create(Registries.CREATIVE_MODE_TAB, Ichori.MODID);
|
||||
|
||||
public static final Supplier<CreativeModeTab> 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);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -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<Item> TEST_Spawn_LIGHT = ITEMS.register("test_spawn_light",
|
||||
() -> new test_spawn_light(new Item.Properties()));
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
public static void register(IEventBus eventBus) {
|
||||
ITEMS.register(eventBus);
|
||||
}
|
||||
}
|
||||
@@ -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<ItemStack> 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());
|
||||
}
|
||||
}
|
||||
@@ -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<HolderLookup.Provider> 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));
|
||||
}
|
||||
}
|
||||
@@ -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<Enchantment> 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<Block> getKnownBlocks() {
|
||||
return ModBlocks.BLOCKS.getEntries().stream().map(Holder::value)::iterator;
|
||||
}
|
||||
}
|
||||
@@ -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()));
|
||||
}
|
||||
}
|
||||
@@ -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<HolderLookup.Provider> lookupProvider, @Nullable ExistingFileHelper existingFileHelper) {
|
||||
super(output, lookupProvider, Ichori.MODID, existingFileHelper);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void addTags(HolderLookup.Provider provider) {
|
||||
tag(BlockTags.MINEABLE_WITH_PICKAXE)
|
||||
|
||||
;
|
||||
|
||||
}
|
||||
}
|
||||
@@ -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<HolderLookup.Provider> lookupProvider) {
|
||||
super(packOutput, lookupProvider);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void gather() {
|
||||
this.builder(NeoForgeDataMaps.FURNACE_FUELS)
|
||||
//.add(ModItems.STARLIGHT_ASHES.getId(), new FurnaceFuel(1200), false)
|
||||
;
|
||||
}
|
||||
}
|
||||
@@ -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<HolderLookup.Provider> registries) {
|
||||
super(output, registries, BUILDER, Set.of(Ichori.MODID));
|
||||
}
|
||||
}
|
||||
@@ -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"));
|
||||
|
||||
}
|
||||
}
|
||||
@@ -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<HolderLookup.Provider> lookupProvider,
|
||||
CompletableFuture<TagLookup<Block>> blockTags, @Nullable ExistingFileHelper existingFileHelper) {
|
||||
super(output, lookupProvider, blockTags, Ichori.MODID, existingFileHelper);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void addTags(HolderLookup.Provider provider) {
|
||||
tag(Tags.Items.FOODS)
|
||||
;
|
||||
|
||||
}
|
||||
}
|
||||
@@ -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");
|
||||
|
||||
}
|
||||
}
|
||||
@@ -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<HolderLookup.Provider> registries) {
|
||||
super(output, registries);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void buildRecipes(RecipeOutput recipeOutput) {
|
||||
|
||||
/*
|
||||
List<ItemLike> 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<ItemLike> 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<ItemLike> 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 <T extends AbstractCookingRecipe> void oreCooking(RecipeOutput recipeOutput, RecipeSerializer<T> pCookingSerializer, AbstractCookingRecipe.Factory<T> factory,
|
||||
List<ItemLike> 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));
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user