diff --git a/.github/workflows/announce-latest-nightly.yml b/.github/workflows/announce-latest-nightly.yml index 914b478..b751670 100644 --- a/.github/workflows/announce-latest-nightly.yml +++ b/.github/workflows/announce-latest-nightly.yml @@ -94,7 +94,7 @@ jobs: with: webhook-url: ${{ secrets.DISCORD_NIGHTLY_WEBHOOK }} avatar-url: "https://compactmods.dev/personal-shrinking-device.png" - content: "**New Version Available: Simple Honey v${{ needs.get-package-info.outputs.version }}" + content: "**New Version Available: Simple Honey v${{ needs.get-package-info.outputs.version }}**" filename: ${{ fromJson(steps.info.outputs.latestJson)[0].name }} embed-title: "**Mod File Information**" embed-description: "Filename: ${{ fromJson(steps.info.outputs.latestJson)[0].name}}" diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 31f30a9..f2b8382 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -1,3 +1,3 @@ [versions] -parchmentMC = "1.21" -parchment = "2024.07.28" \ No newline at end of file +parchmentMC = "1.21.4" +parchment = "2025.02.16" \ No newline at end of file diff --git a/gradle/mojang.versions.toml b/gradle/mojang.versions.toml index 77d85a9..9812a16 100644 --- a/gradle/mojang.versions.toml +++ b/gradle/mojang.versions.toml @@ -1,7 +1,7 @@ [versions] -minecraft = "1.21.1" +minecraft = "1.21.4" [versions.minecraftRange] -require = "[1.21.1, 1.21.2)" -prefer = "1.21.1" +require = "[1.21.4, 1.21.5)" +prefer = "1.21.4" diff --git a/gradle/neoforged.versions.toml b/gradle/neoforged.versions.toml index 711c212..9268eb7 100644 --- a/gradle/neoforged.versions.toml +++ b/gradle/neoforged.versions.toml @@ -1,7 +1,7 @@ [versions] -neoforge = "21.1.122" +neoforge = "21.4.95-beta" mdg = "2.0.78" -neoforgeRange = { require = "[21.1.122,)", prefer = "21.1.122" } +neoforgeRange = { require = "[21.4.95-beta,)", prefer = "21.1.95-beta" } [libraries.testframework] module = "net.neoforged:testframework" diff --git a/neoforge/build.gradle.kts b/neoforge/build.gradle.kts index 678022c..d108ede 100644 --- a/neoforge/build.gradle.kts +++ b/neoforge/build.gradle.kts @@ -111,7 +111,7 @@ neoForge { } this.create("data") { - this.data() + this.clientData() this.gameDirectory.set(file("runs/data")) diff --git a/neoforge/src/main/java/dev/compactmods/simplehoney/SimpleHoney.java b/neoforge/src/main/java/dev/compactmods/simplehoney/SimpleHoney.java index 0c7e4c9..17bad20 100644 --- a/neoforge/src/main/java/dev/compactmods/simplehoney/SimpleHoney.java +++ b/neoforge/src/main/java/dev/compactmods/simplehoney/SimpleHoney.java @@ -3,6 +3,9 @@ import cpw.mods.modlauncher.Environment; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; +import net.minecraft.core.registries.BuiltInRegistries; +import net.minecraft.resources.ResourceKey; +import net.minecraft.resources.ResourceLocation; import net.minecraft.util.Tuple; import net.minecraft.world.entity.player.Player; import net.minecraft.world.food.FoodProperties; @@ -43,10 +46,14 @@ public class SimpleHoney { .saturationModifier(0.1f) .build(); + public static ResourceLocation HONEY_RL = ResourceLocation.fromNamespaceAndPath(MOD_ID, "honey_drop"); + public static final Item.Properties HONEY_DROP_ITEM_PROPS = new Item.Properties() - .food(HONEY_DROP_FOOD_PROPS); + .food(HONEY_DROP_FOOD_PROPS) + .setId(ResourceKey.create(BuiltInRegistries.ITEM.key(), HONEY_RL)); - public static final DeferredItem HONEY_DROP = ITEMS.register("honey_drop", () -> new Item(HONEY_DROP_ITEM_PROPS)); + public static final DeferredItem HONEY_DROP = ITEMS + .register("honey_drop", () -> new Item(HONEY_DROP_ITEM_PROPS)); public SimpleHoney(IEventBus modEventBus) { ITEMS.register(modEventBus); diff --git a/neoforge/src/main/java/dev/compactmods/simplehoney/datagen/DataGeneration.java b/neoforge/src/main/java/dev/compactmods/simplehoney/datagen/DataGeneration.java deleted file mode 100644 index be9f40f..0000000 --- a/neoforge/src/main/java/dev/compactmods/simplehoney/datagen/DataGeneration.java +++ /dev/null @@ -1,28 +0,0 @@ -package dev.compactmods.simplehoney.datagen; - -import dev.compactmods.simplehoney.SimpleHoney; -import dev.compactmods.simplehoney.datagen.lang.EnglishLangGenerator; -import net.neoforged.bus.api.SubscribeEvent; -import net.neoforged.fml.common.EventBusSubscriber; -import net.neoforged.neoforge.data.event.GatherDataEvent; - -@EventBusSubscriber(modid = SimpleHoney.MOD_ID, bus = EventBusSubscriber.Bus.MOD) -public class DataGeneration { - - @SubscribeEvent - public static void gatherData(GatherDataEvent event) { - final var fileHelper = event.getExistingFileHelper(); - final var generator = event.getGenerator(); - - final var packOut = generator.getPackOutput(); - - // Server - boolean server = event.includeServer(); - generator.addProvider(server, new RecipeGenerator(packOut, event.getLookupProvider())); - - // Client - boolean client = event.includeClient(); - generator.addProvider(client, new ItemModelGenerator(packOut, fileHelper)); - generator.addProvider(client, new EnglishLangGenerator(generator)); - } -} diff --git a/neoforge/src/main/java/dev/compactmods/simplehoney/datagen/ItemModelGenerator.java b/neoforge/src/main/java/dev/compactmods/simplehoney/datagen/ItemModelGenerator.java deleted file mode 100644 index fc66b52..0000000 --- a/neoforge/src/main/java/dev/compactmods/simplehoney/datagen/ItemModelGenerator.java +++ /dev/null @@ -1,33 +0,0 @@ -package dev.compactmods.simplehoney.datagen; - -import dev.compactmods.simplehoney.SimpleHoney; -import net.minecraft.core.registries.BuiltInRegistries; -import net.minecraft.data.PackOutput; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.world.item.Item; -import net.neoforged.neoforge.client.model.generators.ItemModelBuilder; -import net.neoforged.neoforge.client.model.generators.ItemModelProvider; -import net.neoforged.neoforge.common.data.ExistingFileHelper; - -import java.util.function.Supplier; - -public class ItemModelGenerator extends ItemModelProvider { - - public ItemModelGenerator(PackOutput packOutput, ExistingFileHelper existingFileHelper) { - super(packOutput, SimpleHoney.MOD_ID, existingFileHelper); - } - - @Override - protected void registerModels() { - basic(SimpleHoney.HONEY_DROP).texture("layer0", modLoc("item/honey_drop")); - } - - private ItemModelBuilder basic(ResourceLocation name) { - return withExistingParent(name.getPath(), mcLoc("item/generated")); - } - - private ItemModelBuilder basic(Supplier supplier) { - Item i = supplier.get(); - return basic(BuiltInRegistries.ITEM.getKey(i)); - } -} diff --git a/neoforge/src/main/java/dev/compactmods/simplehoney/datagen/RecipeGenerator.java b/neoforge/src/main/java/dev/compactmods/simplehoney/datagen/RecipeGenerator.java deleted file mode 100644 index 86feb2f..0000000 --- a/neoforge/src/main/java/dev/compactmods/simplehoney/datagen/RecipeGenerator.java +++ /dev/null @@ -1,35 +0,0 @@ -package dev.compactmods.simplehoney.datagen; - -import dev.compactmods.simplehoney.SimpleHoney; -import net.minecraft.core.HolderLookup; -import net.minecraft.data.PackOutput; -import net.minecraft.data.recipes.RecipeCategory; -import net.minecraft.data.recipes.RecipeOutput; -import net.minecraft.data.recipes.RecipeProvider; -import net.minecraft.data.recipes.ShapelessRecipeBuilder; -import net.minecraft.world.item.ItemStack; -import net.minecraft.world.item.Items; -import org.jetbrains.annotations.NotNull; - -import java.util.concurrent.CompletableFuture; - -public class RecipeGenerator extends RecipeProvider { - - public RecipeGenerator(PackOutput packOutput, CompletableFuture holder) { - super(packOutput, holder); - } - - @Override - protected void buildRecipes(@NotNull RecipeOutput recipeOutput) { - ShapelessRecipeBuilder.shapeless(RecipeCategory.FOOD, new ItemStack(Items.HONEY_BOTTLE)) - .requires(SimpleHoney.HONEY_DROP) - .requires(Items.GLASS_BOTTLE) - .unlockedBy("honey_drop", has(SimpleHoney.HONEY_DROP)) - .save(recipeOutput); - - ShapelessRecipeBuilder.shapeless(RecipeCategory.FOOD, new ItemStack(Items.HONEYCOMB)) - .requires(SimpleHoney.HONEY_DROP) - .unlockedBy("honey_drop", has(SimpleHoney.HONEY_DROP)) - .save(recipeOutput); - } -} diff --git a/neoforge/src/main/java/dev/compactmods/simplehoney/datagen/SHDataGeneration.java b/neoforge/src/main/java/dev/compactmods/simplehoney/datagen/SHDataGeneration.java new file mode 100644 index 0000000..9747f46 --- /dev/null +++ b/neoforge/src/main/java/dev/compactmods/simplehoney/datagen/SHDataGeneration.java @@ -0,0 +1,23 @@ +package dev.compactmods.simplehoney.datagen; + +import dev.compactmods.simplehoney.SimpleHoney; +import dev.compactmods.simplehoney.datagen.client.ItemAndBlockModels; +import dev.compactmods.simplehoney.datagen.client.lang.EnglishLangGenerator; +import dev.compactmods.simplehoney.datagen.server.SHRecipeProvider; +import net.neoforged.bus.api.SubscribeEvent; +import net.neoforged.fml.common.EventBusSubscriber; +import net.neoforged.neoforge.data.event.GatherDataEvent; + +@EventBusSubscriber(modid = SimpleHoney.MOD_ID, bus = EventBusSubscriber.Bus.MOD) +public class SHDataGeneration { + + @SubscribeEvent + public static void gatherData(GatherDataEvent.Client event) { + // Client + event.createProvider(ItemAndBlockModels::new); + event.createProvider(EnglishLangGenerator::new); + + // Server + event.createProvider(SHRecipeProvider.Runner::new); + } +} diff --git a/neoforge/src/main/java/dev/compactmods/simplehoney/datagen/client/ItemAndBlockModels.java b/neoforge/src/main/java/dev/compactmods/simplehoney/datagen/client/ItemAndBlockModels.java new file mode 100644 index 0000000..0640b5b --- /dev/null +++ b/neoforge/src/main/java/dev/compactmods/simplehoney/datagen/client/ItemAndBlockModels.java @@ -0,0 +1,20 @@ +package dev.compactmods.simplehoney.datagen.client; + +import dev.compactmods.simplehoney.SimpleHoney; +import net.minecraft.client.data.models.BlockModelGenerators; +import net.minecraft.client.data.models.ItemModelGenerators; +import net.minecraft.client.data.models.ModelProvider; +import net.minecraft.client.data.models.model.ModelTemplates; +import net.minecraft.data.PackOutput; + +public class ItemAndBlockModels extends ModelProvider { + + public ItemAndBlockModels(PackOutput output) { + super(output, SimpleHoney.MOD_ID); + } + + @Override + protected void registerModels(BlockModelGenerators blockModels, ItemModelGenerators itemModels) { + itemModels.generateFlatItem(SimpleHoney.HONEY_DROP.get(), ModelTemplates.FLAT_ITEM); + } +} diff --git a/neoforge/src/main/java/dev/compactmods/simplehoney/datagen/lang/EnglishLangGenerator.java b/neoforge/src/main/java/dev/compactmods/simplehoney/datagen/client/lang/EnglishLangGenerator.java similarity index 63% rename from neoforge/src/main/java/dev/compactmods/simplehoney/datagen/lang/EnglishLangGenerator.java rename to neoforge/src/main/java/dev/compactmods/simplehoney/datagen/client/lang/EnglishLangGenerator.java index 07bd3a8..1f0ecfb 100644 --- a/neoforge/src/main/java/dev/compactmods/simplehoney/datagen/lang/EnglishLangGenerator.java +++ b/neoforge/src/main/java/dev/compactmods/simplehoney/datagen/client/lang/EnglishLangGenerator.java @@ -1,13 +1,14 @@ -package dev.compactmods.simplehoney.datagen.lang; +package dev.compactmods.simplehoney.datagen.client.lang; import dev.compactmods.simplehoney.SimpleHoney; import net.minecraft.data.DataGenerator; +import net.minecraft.data.PackOutput; import net.neoforged.neoforge.common.data.LanguageProvider; public class EnglishLangGenerator extends LanguageProvider { - public EnglishLangGenerator(DataGenerator gen) { - super(gen.getPackOutput(), SimpleHoney.MOD_ID, "en_us"); + public EnglishLangGenerator(PackOutput output) { + super(output, SimpleHoney.MOD_ID, "en_us"); } @Override diff --git a/neoforge/src/main/java/dev/compactmods/simplehoney/datagen/server/SHRecipeProvider.java b/neoforge/src/main/java/dev/compactmods/simplehoney/datagen/server/SHRecipeProvider.java new file mode 100644 index 0000000..a90e262 --- /dev/null +++ b/neoforge/src/main/java/dev/compactmods/simplehoney/datagen/server/SHRecipeProvider.java @@ -0,0 +1,47 @@ +package dev.compactmods.simplehoney.datagen.server; + +import dev.compactmods.simplehoney.SimpleHoney; +import net.minecraft.core.HolderLookup; +import net.minecraft.data.PackOutput; +import net.minecraft.data.recipes.RecipeCategory; +import net.minecraft.data.recipes.RecipeOutput; +import net.minecraft.data.recipes.RecipeProvider; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.Items; + +import java.util.concurrent.CompletableFuture; + +public class SHRecipeProvider extends RecipeProvider { + + protected SHRecipeProvider(HolderLookup.Provider registries, RecipeOutput output) { + super(registries, output); + } + + @Override + protected void buildRecipes() { + shapeless(RecipeCategory.FOOD, new ItemStack(Items.HONEY_BOTTLE)) + .requires(SimpleHoney.HONEY_DROP) + .requires(Items.GLASS_BOTTLE) + .unlockedBy("honey_drop", has(SimpleHoney.HONEY_DROP)) + .save(this.output); + + shapeless(RecipeCategory.FOOD, new ItemStack(Items.HONEYCOMB)) + .requires(SimpleHoney.HONEY_DROP) + .unlockedBy("honey_drop", has(SimpleHoney.HONEY_DROP)) + .save(this.output); + } + + public static final class Runner extends RecipeProvider.Runner { + public Runner(PackOutput output, CompletableFuture lookupProvider) { + super(output, lookupProvider); + } + + protected RecipeProvider createRecipeProvider(HolderLookup.Provider lookupProvider, RecipeOutput output) { + return new SHRecipeProvider(lookupProvider, output); + } + + public String getName() { + return "NeoForge recipes"; + } + } +}