diff --git a/src/main/java/ovh/glitchlabs/masterwild/Masterwild.java b/src/main/java/ovh/glitchlabs/masterwild/Masterwild.java index 2fc1865..4c0c015 100644 --- a/src/main/java/ovh/glitchlabs/masterwild/Masterwild.java +++ b/src/main/java/ovh/glitchlabs/masterwild/Masterwild.java @@ -58,7 +58,7 @@ public class Masterwild { // You can use SubscribeEvent and let the Event Bus discover methods to call @SubscribeEvent public void onServerStarting(ServerStartingEvent event) { - LOGGER.info("yipi you installed MasterWild :3"); + LOGGER.info("[SERVER] yipi you installed MasterWild :3"); } // You can use EventBusSubscriber to automatically register all static methods in the class annotated with @SubscribeEvent @@ -66,7 +66,7 @@ public class Masterwild { public static class ClientModEvents { @SubscribeEvent public static void onClientSetup(FMLClientSetupEvent event) { - LOGGER.info("yipi you installed MasterWild :3"); + LOGGER.info("[CLIENT] yipi you installed MasterWild :3"); EntityRenderers.register(ModEntities.PINGUIN.get(), PinguinRenderer::new); EntityRenderers.register(ModEntities.FIREFLY.get(), FireflyRenderer::new); diff --git a/src/main/java/ovh/glitchlabs/masterwild/datagen/DataGenerators.java b/src/main/java/ovh/glitchlabs/masterwild/datagen/DataGenerators.java new file mode 100644 index 0000000..e60bc41 --- /dev/null +++ b/src/main/java/ovh/glitchlabs/masterwild/datagen/DataGenerators.java @@ -0,0 +1,42 @@ +package ovh.glitchlabs.masterwild.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.masterwild.Masterwild; + +import java.util.Collections; +import java.util.List; +import java.util.concurrent.CompletableFuture; + +@EventBusSubscriber(modid = Masterwild.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.includeClient(), new ModItemModelProvider(packOutput, existingFileHelper)); + generator.addProvider(event.includeClient(), new ModBlockStateProvider(packOutput, existingFileHelper)); + } +} \ No newline at end of file diff --git a/src/main/java/ovh/glitchlabs/masterwild/datagen/ModBlockLootTableProvider.java b/src/main/java/ovh/glitchlabs/masterwild/datagen/ModBlockLootTableProvider.java new file mode 100644 index 0000000..de0264a --- /dev/null +++ b/src/main/java/ovh/glitchlabs/masterwild/datagen/ModBlockLootTableProvider.java @@ -0,0 +1,56 @@ +package ovh.glitchlabs.masterwild.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.masterwild.Block.ModBlocks; +import ovh.glitchlabs.masterwild.Item.ModItems; + +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/masterwild/datagen/ModBlockStateProvider.java b/src/main/java/ovh/glitchlabs/masterwild/datagen/ModBlockStateProvider.java new file mode 100644 index 0000000..8a65929 --- /dev/null +++ b/src/main/java/ovh/glitchlabs/masterwild/datagen/ModBlockStateProvider.java @@ -0,0 +1,24 @@ +package ovh.glitchlabs.masterwild.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.masterwild.Block.ModBlocks; +import ovh.glitchlabs.masterwild.Masterwild; + +public class ModBlockStateProvider extends BlockStateProvider { + public ModBlockStateProvider(PackOutput output, ExistingFileHelper exFileHelper) { + super(output, Masterwild.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/masterwild/datagen/ModBlockTagProvider.java b/src/main/java/ovh/glitchlabs/masterwild/datagen/ModBlockTagProvider.java new file mode 100644 index 0000000..f4cccfd --- /dev/null +++ b/src/main/java/ovh/glitchlabs/masterwild/datagen/ModBlockTagProvider.java @@ -0,0 +1,26 @@ +package ovh.glitchlabs.masterwild.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.masterwild.Block.ModBlocks; +import ovh.glitchlabs.masterwild.Masterwild; + +import java.util.concurrent.CompletableFuture; + +public class ModBlockTagProvider extends BlockTagsProvider { + public ModBlockTagProvider(PackOutput output, CompletableFuture lookupProvider, @Nullable ExistingFileHelper existingFileHelper) { + super(output, lookupProvider, Masterwild.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/masterwild/datagen/ModDataMapProvider.java b/src/main/java/ovh/glitchlabs/masterwild/datagen/ModDataMapProvider.java new file mode 100644 index 0000000..5aa97f6 --- /dev/null +++ b/src/main/java/ovh/glitchlabs/masterwild/datagen/ModDataMapProvider.java @@ -0,0 +1,23 @@ +package ovh.glitchlabs.masterwild.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 ovh.glitchlabs.masterwild.Item.ModItems; + +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/masterwild/datagen/ModItemModelProvider.java b/src/main/java/ovh/glitchlabs/masterwild/datagen/ModItemModelProvider.java new file mode 100644 index 0000000..3f8fea9 --- /dev/null +++ b/src/main/java/ovh/glitchlabs/masterwild/datagen/ModItemModelProvider.java @@ -0,0 +1,18 @@ +package ovh.glitchlabs.masterwild.datagen; + +import net.minecraft.data.PackOutput; +import net.neoforged.neoforge.client.model.generators.ItemModelProvider; +import net.neoforged.neoforge.common.data.ExistingFileHelper; +import ovh.glitchlabs.masterwild.Item.ModItems; +import ovh.glitchlabs.masterwild.Masterwild; + +public class ModItemModelProvider extends ItemModelProvider { + public ModItemModelProvider(PackOutput output, ExistingFileHelper existingFileHelper) { + super(output, Masterwild.MODID, existingFileHelper); + } + + @Override + protected void registerModels() { + //basicItem(ModItems.BISMUTH.get()); + } +} \ No newline at end of file diff --git a/src/main/java/ovh/glitchlabs/masterwild/datagen/ModItemTagProvider.java b/src/main/java/ovh/glitchlabs/masterwild/datagen/ModItemTagProvider.java new file mode 100644 index 0000000..3c116df --- /dev/null +++ b/src/main/java/ovh/glitchlabs/masterwild/datagen/ModItemTagProvider.java @@ -0,0 +1,26 @@ +package ovh.glitchlabs.masterwild.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.neoforge.common.data.ExistingFileHelper; +import org.jetbrains.annotations.Nullable; +import ovh.glitchlabs.masterwild.Item.ModItems; +import ovh.glitchlabs.masterwild.Masterwild; + +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, Masterwild.MODID, existingFileHelper); + } + + @Override + protected void addTags(HolderLookup.Provider provider) { + //tag(ModTags.Items.TRANSFORMABLE_ITEMS); + + } +} \ No newline at end of file diff --git a/src/main/java/ovh/glitchlabs/masterwild/datagen/ModRecipeProvider.java b/src/main/java/ovh/glitchlabs/masterwild/datagen/ModRecipeProvider.java new file mode 100644 index 0000000..cbbad9c --- /dev/null +++ b/src/main/java/ovh/glitchlabs/masterwild/datagen/ModRecipeProvider.java @@ -0,0 +1,64 @@ +package ovh.glitchlabs.masterwild.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.masterwild.Block.ModBlocks; +import ovh.glitchlabs.masterwild.Item.ModItems; +import ovh.glitchlabs.masterwild.Masterwild; + +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, Masterwild.MODID + ":" + getItemName(pResult) + pRecipeName + "_" + getItemName(itemlike)); + } + } +} \ No newline at end of file