From cfa432b7f141cec64d5a8ad5822bfb5b1263137c Mon Sep 17 00:00:00 2001 From: Hiiragi Russell Tsubasa <97942736+Hiiragi283@users.noreply.github.com> Date: Sun, 4 Oct 2026 22:09:31 +0900 Subject: [PATCH 1/9] =?UTF-8?q?build:=20=E4=BE=9D=E5=AD=98=E9=96=A2?= =?UTF-8?q?=E4=BF=82=E3=82=92=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- gradle/libs.versions.toml | 4 +- .../client/integration/jei/RagiumJeiPlugin.kt | 9 +- .../HTFluidToItemAndFluidRecipeCategory.kt | 51 ----------- .../HTItemToItemAndFluidRecipeCategory.kt | 51 ----------- .../jei/category/HTSingleRecipeCategory.kt | 4 +- .../HTSingleToItemAndFluidRecipeCategory.kt | 84 +++++++++++++++++++ 6 files changed, 92 insertions(+), 111 deletions(-) delete mode 100644 src/libClient/kotlin/hiiragi283/lib/integration/jei/category/HTFluidToItemAndFluidRecipeCategory.kt delete mode 100644 src/libClient/kotlin/hiiragi283/lib/integration/jei/category/HTItemToItemAndFluidRecipeCategory.kt create mode 100644 src/libClient/kotlin/hiiragi283/lib/integration/jei/category/HTSingleToItemAndFluidRecipeCategory.kt diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index a25fbfac8..486941050 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -1,8 +1,8 @@ [versions] minecraft = "26.1.2" -neo-moddev = "2.0.147" -neo-version = "26.1.2.112" +neo-moddev = "2.0.148" +neo-version = "26.1.2.114" kff-version = "6.3.0" kotlin = "2.4.0" diff --git a/src/client/kotlin/hiiragi283/ragium/client/integration/jei/RagiumJeiPlugin.kt b/src/client/kotlin/hiiragi283/ragium/client/integration/jei/RagiumJeiPlugin.kt index 0b8e9fdf0..7a8d421f0 100644 --- a/src/client/kotlin/hiiragi283/ragium/client/integration/jei/RagiumJeiPlugin.kt +++ b/src/client/kotlin/hiiragi283/ragium/client/integration/jei/RagiumJeiPlugin.kt @@ -3,12 +3,11 @@ package hiiragi283.ragium.client.integration.jei import hiiragi283.lib.HTPhysicalSideHelper import hiiragi283.lib.integration.jei.HTJeiPlugin import hiiragi283.lib.integration.jei.HTJeiRecipeHelper -import hiiragi283.lib.integration.jei.category.HTFluidToItemAndFluidRecipeCategory import hiiragi283.lib.integration.jei.category.HTItemAndFluidToFluidRecipeCategory import hiiragi283.lib.integration.jei.category.HTItemAndFluidToItemRecipeCategory import hiiragi283.lib.integration.jei.category.HTItemToDoubleItemRecipeCategory -import hiiragi283.lib.integration.jei.category.HTItemToItemAndFluidRecipeCategory import hiiragi283.lib.integration.jei.category.HTSingleRecipeCategory +import hiiragi283.lib.integration.jei.category.HTSingleToItemAndFluidRecipeCategory import hiiragi283.lib.integration.jei.category.HTTripleItemToRecipeCategory import hiiragi283.lib.integration.jei.ingredient.HTIngredientTypes import hiiragi283.lib.item.HTPotionBasedItem @@ -113,14 +112,14 @@ class RagiumJeiPlugin : HTJeiPlugin(RagiumAPI.MOD_ID) { HTSingleRecipeCategory.ItemToItem(guiHelper, RagiumJeiRecipeTypes.COMPRESSING), HTItemToDoubleItemRecipeCategory(guiHelper, RagiumJeiRecipeTypes.CRUSHING), HTItemToDoubleItemRecipeCategory(guiHelper, RagiumJeiRecipeTypes.CUTTING), - HTItemToItemAndFluidRecipeCategory(guiHelper, RagiumJeiRecipeTypes.DRAINING), + HTSingleToItemAndFluidRecipeCategory.ItemTo(guiHelper, RagiumJeiRecipeTypes.DRAINING), HTItemAndFluidToItemRecipeCategory(guiHelper, RagiumJeiRecipeTypes.FILLING), // Heat HTTripleItemToRecipeCategory.Basic(guiHelper, RagiumJeiRecipeTypes.ALLOYING), HTSingleRecipeCategory.FluidToItem(guiHelper, RagiumJeiRecipeTypes.FREEZING), HTSingleRecipeCategory.ItemToFluid(guiHelper, RagiumJeiRecipeTypes.MELTING), - HTItemToItemAndFluidRecipeCategory(guiHelper, RagiumJeiRecipeTypes.PYROLYZING), - HTFluidToItemAndFluidRecipeCategory(guiHelper, RagiumJeiRecipeTypes.REFINING), + HTSingleToItemAndFluidRecipeCategory.ItemTo(guiHelper, RagiumJeiRecipeTypes.PYROLYZING), + HTSingleToItemAndFluidRecipeCategory.FluidTo(guiHelper, RagiumJeiRecipeTypes.REFINING), // Chemical HTItemAndFluidToItemRecipeCategory(guiHelper, RagiumJeiRecipeTypes.BATHING), RTElectrolyzingRecipeCategory(guiHelper), diff --git a/src/libClient/kotlin/hiiragi283/lib/integration/jei/category/HTFluidToItemAndFluidRecipeCategory.kt b/src/libClient/kotlin/hiiragi283/lib/integration/jei/category/HTFluidToItemAndFluidRecipeCategory.kt deleted file mode 100644 index a3f1a0b00..000000000 --- a/src/libClient/kotlin/hiiragi283/lib/integration/jei/category/HTFluidToItemAndFluidRecipeCategory.kt +++ /dev/null @@ -1,51 +0,0 @@ -package hiiragi283.lib.integration.jei.category - -import hiiragi283.lib.gui.HTBackgroundType -import hiiragi283.lib.integration.jei.HTHolderJeiRecipeType -import hiiragi283.lib.integration.jei.add -import hiiragi283.lib.recipe.base.HTFluidToRecipe -import mezz.jei.api.gui.builder.IRecipeLayoutBuilder -import mezz.jei.api.gui.builder.IRecipeSlotBuilder -import mezz.jei.api.gui.widgets.IRecipeExtrasBuilder -import mezz.jei.api.helpers.IGuiHelper -import mezz.jei.api.recipe.IFocusGroup - -class HTFluidToItemAndFluidRecipeCategory( - guiHelper: IGuiHelper, - recipeType: HTHolderJeiRecipeType -) : HTHolderRecipeCategory( - guiHelper, - recipeType, - 18 * 6, - 18 * 1, - HTFluidToRecipe.BasicItemAndFluid.SIMPLE_CODEC -) { - override fun setupRecipe( - builder: IRecipeLayoutBuilder, - recipe: HTFluidToRecipe.BasicItemAndFluid, - focuses: IFocusGroup - ) { - // input - builder - .addInputSlot(getPosition(0), getPosition(0)) - .add(recipe.ingredient) - .setSlotBackground(HTBackgroundType.INPUT) - // output - val itemOutput: IRecipeSlotBuilder = builder - .addOutputSlot(getPosition(3), getPosition(0)) - .setSlotBackground(HTBackgroundType.OUTPUT) - val fluidOutput: IRecipeSlotBuilder = builder - .addOutputSlot(getPosition(5), getPosition(0)) - .setSlotBackground(HTBackgroundType.OUTPUT) - recipe.result.content.mapLeft(itemOutput::add).mapRight(fluidOutput::add) - } - - override fun setupRecipeExtras( - builder: IRecipeExtrasBuilder, - recipe: HTFluidToRecipe.BasicItemAndFluid, - focuses: IFocusGroup - ) { - builder.addRecipeArrow(recipe).setPosition(getPosition(1.25), getPosition(0)) - builder.addRecipePlus(getPosition(4)) - } -} diff --git a/src/libClient/kotlin/hiiragi283/lib/integration/jei/category/HTItemToItemAndFluidRecipeCategory.kt b/src/libClient/kotlin/hiiragi283/lib/integration/jei/category/HTItemToItemAndFluidRecipeCategory.kt deleted file mode 100644 index 9b413678e..000000000 --- a/src/libClient/kotlin/hiiragi283/lib/integration/jei/category/HTItemToItemAndFluidRecipeCategory.kt +++ /dev/null @@ -1,51 +0,0 @@ -package hiiragi283.lib.integration.jei.category - -import hiiragi283.lib.gui.HTBackgroundType -import hiiragi283.lib.integration.jei.HTHolderJeiRecipeType -import hiiragi283.lib.integration.jei.add -import hiiragi283.lib.recipe.base.HTItemToRecipe -import mezz.jei.api.gui.builder.IRecipeLayoutBuilder -import mezz.jei.api.gui.builder.IRecipeSlotBuilder -import mezz.jei.api.gui.widgets.IRecipeExtrasBuilder -import mezz.jei.api.helpers.IGuiHelper -import mezz.jei.api.recipe.IFocusGroup - -class HTItemToItemAndFluidRecipeCategory( - guiHelper: IGuiHelper, - recipeType: HTHolderJeiRecipeType -) : HTHolderRecipeCategory( - guiHelper, - recipeType, - 18 * 6, - 18 * 1, - HTItemToRecipe.BasicItemAndFluid.SIMPLE_CODEC -) { - override fun setupRecipe( - builder: IRecipeLayoutBuilder, - recipe: HTItemToRecipe.BasicItemAndFluid, - focuses: IFocusGroup - ) { - // input - builder - .addInputSlot(getPosition(0), getPosition(0)) - .add(recipe.ingredient) - .setSlotBackground(HTBackgroundType.INPUT) - // output - val itemOutput: IRecipeSlotBuilder = builder - .addOutputSlot(getPosition(3), getPosition(0)) - .setSlotBackground(HTBackgroundType.OUTPUT) - val fluidOutput: IRecipeSlotBuilder = builder - .addOutputSlot(getPosition(5), getPosition(0)) - .setSlotBackground(HTBackgroundType.OUTPUT) - recipe.result.content.mapLeft(itemOutput::add).mapRight(fluidOutput::add) - } - - override fun setupRecipeExtras( - builder: IRecipeExtrasBuilder, - recipe: HTItemToRecipe.BasicItemAndFluid, - focuses: IFocusGroup - ) { - builder.addRecipeArrow(recipe).setPosition(getPosition(1.25), getPosition(0)) - builder.addRecipePlus(getPosition(4)) - } -} diff --git a/src/libClient/kotlin/hiiragi283/lib/integration/jei/category/HTSingleRecipeCategory.kt b/src/libClient/kotlin/hiiragi283/lib/integration/jei/category/HTSingleRecipeCategory.kt index 72e3111ac..8b7d7f122 100644 --- a/src/libClient/kotlin/hiiragi283/lib/integration/jei/category/HTSingleRecipeCategory.kt +++ b/src/libClient/kotlin/hiiragi283/lib/integration/jei/category/HTSingleRecipeCategory.kt @@ -4,9 +4,9 @@ import com.mojang.serialization.MapCodec import hiiragi283.lib.gui.HTBackgroundType import hiiragi283.lib.integration.jei.HTHolderJeiRecipeType import hiiragi283.lib.integration.jei.add +import hiiragi283.lib.recipe.base.HTBasicSingleRecipe import hiiragi283.lib.recipe.base.HTFluidToRecipe import hiiragi283.lib.recipe.base.HTItemToRecipe -import hiiragi283.lib.recipe.base.HTProgressRecipe import mezz.jei.api.gui.builder.IRecipeLayoutBuilder import mezz.jei.api.gui.builder.IRecipeSlotBuilder import mezz.jei.api.gui.widgets.IRecipeExtrasBuilder @@ -17,7 +17,7 @@ import mezz.jei.api.recipe.IFocusGroup * @author Hiiragi Tsubasa * @since 26.1.6 */ -abstract class HTSingleRecipeCategory>( +abstract class HTSingleRecipeCategory>( guiHelper: IGuiHelper, recipeType: HTHolderJeiRecipeType, codec: MapCodec diff --git a/src/libClient/kotlin/hiiragi283/lib/integration/jei/category/HTSingleToItemAndFluidRecipeCategory.kt b/src/libClient/kotlin/hiiragi283/lib/integration/jei/category/HTSingleToItemAndFluidRecipeCategory.kt new file mode 100644 index 000000000..7d8b2f2b0 --- /dev/null +++ b/src/libClient/kotlin/hiiragi283/lib/integration/jei/category/HTSingleToItemAndFluidRecipeCategory.kt @@ -0,0 +1,84 @@ +package hiiragi283.lib.integration.jei.category + +import com.mojang.serialization.MapCodec +import hiiragi283.lib.gui.HTBackgroundType +import hiiragi283.lib.integration.jei.HTHolderJeiRecipeType +import hiiragi283.lib.integration.jei.add +import hiiragi283.lib.recipe.base.HTBasicSingleRecipe +import hiiragi283.lib.recipe.base.HTFluidToRecipe +import hiiragi283.lib.recipe.base.HTItemToRecipe +import hiiragi283.lib.recipe.result.HTItemOrFluidResult +import mezz.jei.api.gui.builder.IRecipeLayoutBuilder +import mezz.jei.api.gui.builder.IRecipeSlotBuilder +import mezz.jei.api.gui.widgets.IRecipeExtrasBuilder +import mezz.jei.api.helpers.IGuiHelper +import mezz.jei.api.recipe.IFocusGroup + +/** + * @author Hiiragi Tsubasa + * @since 26.1.8 + */ +abstract class HTSingleToItemAndFluidRecipeCategory>( + guiHelper: IGuiHelper, + recipeType: HTHolderJeiRecipeType, + codec: MapCodec +) : HTHolderRecipeCategory(guiHelper, recipeType, 18 * 6, 18 * 1, codec) { + override fun setupRecipe(builder: IRecipeLayoutBuilder, recipe: RECIPE, focuses: IFocusGroup) { + // input + setInput( + builder + .addInputSlot(getPosition(0), getPosition(0)) + .setSlotBackground(HTBackgroundType.INPUT), + recipe + ) + // outputs + val itemOutput: IRecipeSlotBuilder = builder + .addOutputSlot(getPosition(3), getPosition(0)) + .setSlotBackground(HTBackgroundType.OUTPUT) + val fluidOutput: IRecipeSlotBuilder = builder + .addOutputSlot(getPosition(5), getPosition(0)) + .setSlotBackground(HTBackgroundType.OUTPUT) + recipe.result.content.mapLeft(itemOutput::add).mapRight(fluidOutput::add) + } + + protected abstract fun setInput(builder: IRecipeSlotBuilder, recipe: RECIPE) + + override fun setupRecipeExtras(builder: IRecipeExtrasBuilder, recipe: RECIPE, focuses: IFocusGroup) { + builder.addRecipeArrow(recipe).setPosition(getPosition(1.25), getPosition(0)) + builder.addRecipePlus(getPosition(4)) + } + + // FluidTo // + + /** + * @author Hiiragi Tsubasa + * @since 26.1.8 + */ + class FluidTo(guiHelper: IGuiHelper, recipeType: HTHolderJeiRecipeType) : + HTSingleToItemAndFluidRecipeCategory( + guiHelper, + recipeType, + HTFluidToRecipe.BasicItemAndFluid.SIMPLE_CODEC + ) { + override fun setInput(builder: IRecipeSlotBuilder, recipe: HTFluidToRecipe.BasicItemAndFluid) { + builder.add(recipe.ingredient) + } + } + + // ItemTo // + + /** + * @author Hiiragi Tsubasa + * @since 26.1.8 + */ + class ItemTo(guiHelper: IGuiHelper, recipeType: HTHolderJeiRecipeType) : + HTSingleToItemAndFluidRecipeCategory( + guiHelper, + recipeType, + HTItemToRecipe.BasicItemAndFluid.SIMPLE_CODEC + ) { + override fun setInput(builder: IRecipeSlotBuilder, recipe: HTItemToRecipe.BasicItemAndFluid) { + builder.add(recipe.ingredient) + } + } +} From ee129a4352d99ff56aa99a082b1c1002dc4a8bf6 Mon Sep 17 00:00:00 2001 From: Hiiragi Russell Tsubasa <97942736+Hiiragi283@users.noreply.github.com> Date: Sun, 4 Oct 2026 23:19:26 +0900 Subject: [PATCH 2/9] =?UTF-8?q?feat:=20=E6=96=B0=E3=81=97=E3=81=84?= =?UTF-8?q?=E7=B4=A0=E6=9D=90=E3=80=8CCinnabar=20/=20=E8=BE=B0=E7=A0=82?= =?UTF-8?q?=E3=80=8D=E3=82=92=E8=BF=BD=E5=8A=A0=20feat:=20=E9=89=B1?= =?UTF-8?q?=E7=9F=B3=E5=87=A6=E7=90=86=E3=81=AE=E3=83=AC=E3=82=B7=E3=83=94?= =?UTF-8?q?=E3=82=92=E8=BF=BD=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../recipe/RagiumChemicalRecipeProvider.kt | 37 ---- .../data/recipe/RagiumCommonRecipeProvider.kt | 178 ++++++++++++++++++ .../recipe/RagiumMechanicalRecipeProvider.kt | 122 ------------ .../ragium/data/tag/RagiumItemTagsProvider.kt | 4 + .../assets/ragium/items/cinnabar_dust.json | 6 + .../resources/assets/ragium/lang/en_us.json | 1 + .../resources/assets/ragium/lang/ja_jp.json | 1 + .../ragium/models/item/cinnabar_dust.json | 6 + .../resources/data/c/tags/item/dusts.json | 1 + .../data/c/tags/item/dusts/cinnabar.json | 5 + .../ragium/recipe/alloying/coal_from_ore.json | 16 ++ .../alloying/copper_ingot_from_ore.json | 16 ++ .../recipe/alloying/diamond_from_ore.json | 16 ++ .../recipe/alloying/emerald_from_ore.json | 16 ++ .../recipe/alloying/gold_ingot_from_ore.json | 16 ++ .../recipe/alloying/iron_ingot_from_ore.json | 16 ++ .../alloying/lapis_lazuli_from_ore.json | 16 ++ .../recipe/alloying/niter_dust_from_ore.json | 16 ++ .../recipe/alloying/quartz_from_ore.json | 16 ++ .../recipe/alloying/redstone_from_ore.json | 16 ++ .../recipe/alloying/sulfur_dust_from_ore.json | 16 ++ .../recipe/crushing/coal_dust_from_ore.json | 14 +- .../crushing/copper_dust_from_raw_block.json | 21 +++ .../crushing/diamond_dust_from_ore.json | 14 +- .../crushing/gold_dust_from_raw_block.json | 21 +++ .../crushing/iron_dust_from_raw_block.json | 21 +++ .../recipe/crushing/lapis_dust_from_ore.json | 14 +- .../recipe/crushing/redstone_from_ore.json | 2 +- .../recipe/washing/copper_dust_from_raw.json | 16 -- .../recipe/washing/gold_dust_from_raw.json | 16 -- .../recipe/washing/iron_dust_from_raw.json | 16 -- .../ragium/tags/item/smelting_fluxes.json | 7 + .../resources/reports/ragium/registries.json | 1 + .../ragium/api/material/RagiumMaterial.kt | 12 +- .../hiiragi283/ragium/api/tag/RagiumTags.kt | 6 + .../ragium/textures/item/cinnabar_dust.png | Bin 0 -> 293 bytes 36 files changed, 489 insertions(+), 229 deletions(-) create mode 100644 src/generated/resources/assets/ragium/items/cinnabar_dust.json create mode 100644 src/generated/resources/assets/ragium/models/item/cinnabar_dust.json create mode 100644 src/generated/resources/data/c/tags/item/dusts/cinnabar.json create mode 100644 src/generated/resources/data/ragium/recipe/alloying/coal_from_ore.json create mode 100644 src/generated/resources/data/ragium/recipe/alloying/copper_ingot_from_ore.json create mode 100644 src/generated/resources/data/ragium/recipe/alloying/diamond_from_ore.json create mode 100644 src/generated/resources/data/ragium/recipe/alloying/emerald_from_ore.json create mode 100644 src/generated/resources/data/ragium/recipe/alloying/gold_ingot_from_ore.json create mode 100644 src/generated/resources/data/ragium/recipe/alloying/iron_ingot_from_ore.json create mode 100644 src/generated/resources/data/ragium/recipe/alloying/lapis_lazuli_from_ore.json create mode 100644 src/generated/resources/data/ragium/recipe/alloying/niter_dust_from_ore.json create mode 100644 src/generated/resources/data/ragium/recipe/alloying/quartz_from_ore.json create mode 100644 src/generated/resources/data/ragium/recipe/alloying/redstone_from_ore.json create mode 100644 src/generated/resources/data/ragium/recipe/alloying/sulfur_dust_from_ore.json create mode 100644 src/generated/resources/data/ragium/recipe/crushing/copper_dust_from_raw_block.json create mode 100644 src/generated/resources/data/ragium/recipe/crushing/gold_dust_from_raw_block.json create mode 100644 src/generated/resources/data/ragium/recipe/crushing/iron_dust_from_raw_block.json delete mode 100644 src/generated/resources/data/ragium/recipe/washing/copper_dust_from_raw.json delete mode 100644 src/generated/resources/data/ragium/recipe/washing/gold_dust_from_raw.json delete mode 100644 src/generated/resources/data/ragium/recipe/washing/iron_dust_from_raw.json create mode 100644 src/generated/resources/data/ragium/tags/item/smelting_fluxes.json create mode 100644 src/main/resources/assets/ragium/textures/item/cinnabar_dust.png diff --git a/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumChemicalRecipeProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumChemicalRecipeProvider.kt index 5af9d02f6..1d09be2bd 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumChemicalRecipeProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumChemicalRecipeProvider.kt @@ -134,43 +134,6 @@ class RagiumChemicalRecipeProvider(packOutput: PackOutput, future: CompletableFu } recipeId suffix "_from_debris" }.save(exporter) - // Raw XX -> XX Dust - RagiumRecipeBuilders.washing { - itemIngredient { +holderSet(CommonTagPrefixes.RAW_MATERIALS, RagiumMaterial.Metal.COPPER) } - fluidIngredient { - +holderSet(RagiumFluids.SULFURIC_ACID) - amount /= 4 - } - result { - +RagiumItems.getOrThrow(HTItemPart.DUST, RagiumMaterial.Metal.COPPER) - count = 2 - } - recipeId suffix "_from_raw" - }.save(exporter) - RagiumRecipeBuilders.washing { - itemIngredient { +holderSet(CommonTagPrefixes.RAW_MATERIALS, RagiumMaterial.Metal.IRON) } - fluidIngredient { - +holderSet(RagiumFluids.SULFURIC_ACID) - amount /= 4 - } - result { - +RagiumItems.getOrThrow(HTItemPart.DUST, RagiumMaterial.Metal.IRON) - count = 2 - } - recipeId suffix "_from_raw" - }.save(exporter) - RagiumRecipeBuilders.washing { - itemIngredient { +holderSet(CommonTagPrefixes.RAW_MATERIALS, RagiumMaterial.Metal.GOLD) } - fluidIngredient { - +holderSet(RagiumFluids.NITRIC_ACID) - amount /= 4 - } - result { - +RagiumItems.getOrThrow(HTItemPart.DUST, RagiumMaterial.Metal.GOLD) - count = 2 - } - recipeId suffix "_from_raw" - }.save(exporter) } override fun getName(): String = "Chemical Recipes" diff --git a/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumCommonRecipeProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumCommonRecipeProvider.kt index fa234aa16..95999b7e8 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumCommonRecipeProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumCommonRecipeProvider.kt @@ -1,5 +1,7 @@ package hiiragi283.ragium.data.recipe +import hiiragi283.lib.collection.buildTable +import hiiragi283.lib.collection.forEach import hiiragi283.lib.collection.nelOf import hiiragi283.lib.color.VanillaColoredCollections import hiiragi283.lib.data.recipe.HTRecipeProvider @@ -8,8 +10,10 @@ import hiiragi283.lib.data.recipe.builder.ingredient import hiiragi283.lib.data.recipe.builder.result import hiiragi283.lib.recipe.ingredient.HTMaterialTagsIngredient import hiiragi283.lib.registry.HTFluidContent +import hiiragi283.lib.registry.HTSimpleDeferredItem import hiiragi283.lib.tag.CommonTagPrefixes import hiiragi283.lib.tag.HTCommonTags +import hiiragi283.lib.tag.HTMaterialLike import hiiragi283.ragium.api.RagiumAPI import hiiragi283.ragium.api.data.recipe.builder.RagiumRecipeBuilders import hiiragi283.ragium.api.material.HTItemPart @@ -34,6 +38,7 @@ import java.util.concurrent.CompletableFuture class RagiumCommonRecipeProvider(packOutput: PackOutput, future: CompletableFuture) : HTRecipeProvider(packOutput, future, RagiumAPI.MOD_ID) { override fun exportValues() { + mechanical() heat() chemical() electronics() @@ -41,6 +46,179 @@ class RagiumCommonRecipeProvider(packOutput: PackOutput, future: CompletableFutu override fun getName(): String = "Common Recipes" + // Mechanical // + + private fun mechanical() { + ore() + rawMaterial() + } + + private fun ore() { + // Crushing + RagiumRecipeBuilders.crushing { + ingredient { +holderSet(CommonTagPrefixes.ORE, RagiumMaterial.Fuel.COAL) } + result { + +RagiumItems.getOrThrow(HTItemPart.DUST, RagiumMaterial.Fuel.COAL) + count = 2 + } + recipeId suffix "_from_ore" + }.save(exporter) + RagiumRecipeBuilders.crushing { + ingredient { +holderSet(CommonTagPrefixes.ORE, RagiumMaterial.Mineral.REDSTONE) } + result { + +Items.REDSTONE + count = 6 + } + result { + +RagiumItems.getOrThrow(HTItemPart.DUST, RagiumMaterial.Mineral.CINNABAR) + } + recipeId suffix "_from_ore" + }.save(exporter) + for (mineral: RagiumMaterial.Mineral in setOf(RagiumMaterial.Mineral.SULFUR, RagiumMaterial.Mineral.NITER)) { + // Crushing + RagiumRecipeBuilders.crushing { + ingredient { +holderSet(CommonTagPrefixes.ORE, mineral) } + result { + +RagiumItems.getOrThrow(HTItemPart.DUST, mineral) + count = 6 + } + recipeId suffix "_from_ore" + }.save(exporter) + // Alloyinh + RagiumRecipeBuilders.alloying { + ingredient { +holderSet(CommonTagPrefixes.ORE, mineral) } + extra { +holderSet(RagiumTags.Items.SMELTING_FLUXES) } + result { + +RagiumItems.getOrThrow(HTItemPart.DUST, mineral) + count = 9 + } + recipeId suffix "_from_ore" + }.save(exporter) + } + + RagiumRecipeBuilders.crushing { + ingredient { +holderSet(CommonTagPrefixes.ORE, RagiumMaterial.Gem.LAPIS) } + result { + +RagiumItems.getOrThrow(HTItemPart.DUST, RagiumMaterial.Gem.LAPIS) + count = 6 + } + result { +Items.PRISMARINE_SHARD } + recipeId suffix "_from_ore" + }.save(exporter) + RagiumRecipeBuilders.crushing { + ingredient { +holderSet(CommonTagPrefixes.ORE, RagiumMaterial.Gem.QUARTZ) } + result { + +RagiumItems.getOrThrow(HTItemPart.DUST, RagiumMaterial.Gem.QUARTZ) + count = 4 + } + result { + +Items.GOLD_NUGGET + } + recipeId suffix "_from_ore" + }.save(exporter) + RagiumRecipeBuilders.crushing { + ingredient { +holderSet(CommonTagPrefixes.ORE, RagiumMaterial.Gem.DIAMOND) } + result { + +RagiumItems.getOrThrow(HTItemPart.DUST, RagiumMaterial.Gem.DIAMOND) + count = 2 + } + result { +RagiumItems.getOrThrow(HTItemPart.DUST, RagiumMaterial.Chemicals.CARBON) } + recipeId suffix "_from_ore" + }.save(exporter) + RagiumRecipeBuilders.crushing { + ingredient { +holderSet(CommonTagPrefixes.ORE, RagiumMaterial.Gem.EMERALD) } + result { + +RagiumItems.getOrThrow(HTItemPart.DUST, RagiumMaterial.Gem.EMERALD) + count = 2 + } + recipeId suffix "_from_ore" + }.save(exporter) + + RagiumRecipeBuilders.crushing { + ingredient { +holderSet(CommonTagPrefixes.ORE, RagiumMaterial.Metal.COPPER) } + result { + +RagiumItems.getOrThrow(HTItemPart.DUST, RagiumMaterial.Metal.COPPER) + count = 3 + } + result { + +Items.GOLD_NUGGET + count = 3 + } + recipeId suffix "_from_ore" + }.save(exporter) + RagiumRecipeBuilders.crushing { + ingredient { +holderSet(CommonTagPrefixes.ORE, RagiumMaterial.Metal.IRON) } + result { + +RagiumItems.getOrThrow(HTItemPart.DUST, RagiumMaterial.Metal.IRON) + count = 2 + } + result { +Items.FLINT } + recipeId suffix "_from_ore" + }.save(exporter) + RagiumRecipeBuilders.crushing { + ingredient { +holderSet(CommonTagPrefixes.ORE, RagiumMaterial.Metal.GOLD) } + result { + +RagiumItems.getOrThrow(HTItemPart.DUST, RagiumMaterial.Metal.GOLD) + count = 2 + } + recipeId suffix "_from_ore" + }.save(exporter) + // Alloying + buildTable { + put(RagiumMaterial.Fuel.COAL, Items.COAL, 3) + put(RagiumMaterial.Mineral.REDSTONE, Items.REDSTONE, 9) + + put(RagiumMaterial.Gem.LAPIS, Items.LAPIS_LAZULI, 9) + put(RagiumMaterial.Gem.QUARTZ, Items.QUARTZ, 6) + put(RagiumMaterial.Gem.DIAMOND, Items.DIAMOND, 3) + put(RagiumMaterial.Gem.EMERALD, Items.EMERALD, 3) + + put(RagiumMaterial.Metal.COPPER, Items.COPPER_INGOT, 3) + put(RagiumMaterial.Metal.IRON, Items.IRON_INGOT, 3) + put(RagiumMaterial.Metal.GOLD, Items.GOLD_INGOT, 3) + }.forEach { (material: HTMaterialLike, result: Item, count: Int) -> + RagiumRecipeBuilders.alloying { + ingredient { +holderSet(CommonTagPrefixes.ORE, material) } + extra { +holderSet(RagiumTags.Items.SMELTING_FLUXES) } + result { + +result + this.count = count + } + recipeId suffix "_from_ore" + }.save(exporter) + } + } + + private fun rawMaterial() { + // Crushing + for (metal: RagiumMaterial.Metal in RagiumMaterial.Metal.entries) { + val dust: HTSimpleDeferredItem = RagiumItems.MATERIAL_ITEMS[HTItemPart.DUST, metal] ?: continue + // 3x Raw -> 4x Dust + RagiumRecipeBuilders.crushing { + ingredient { + +holderSet(CommonTagPrefixes.RAW_MATERIALS, metal) + count = 3 + } + result { + +dust + count = 4 + } + recipeId suffix "_from_raw" + condition { itemTagPresent(CommonTagPrefixes.RAW_MATERIALS, metal) } + }.save(exporter) + // 1x Raw Block -> 12x Dust + RagiumRecipeBuilders.crushing { + ingredient { +holderSet(CommonTagPrefixes.RAW_STORAGE_BLOCK, metal) } + result { + +dust + count = 12 + } + recipeId suffix "_from_raw_block" + condition { itemTagPresent(CommonTagPrefixes.RAW_STORAGE_BLOCK, metal) } + }.save(exporter) + } + } + // Heat // private fun heat() { diff --git a/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumMechanicalRecipeProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumMechanicalRecipeProvider.kt index 5dec41afc..ed365ae99 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumMechanicalRecipeProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumMechanicalRecipeProvider.kt @@ -419,7 +419,6 @@ class RagiumMechanicalRecipeProvider(packOutput: PackOutput, future: Completable private fun crushing() { crushMaterial() crushWood() - crushOre() dyes() // XX Block -> XX @@ -607,127 +606,6 @@ class RagiumMechanicalRecipeProvider(packOutput: PackOutput, future: Completable }.save(exporter) } - private fun crushOre() { - // XX Ore -> XX Dust - RagiumRecipeBuilders.crushing { - ingredient { +holderSet(CommonTagPrefixes.ORE, RagiumMaterial.Fuel.COAL) } - result { - +RagiumItems.getOrThrow(HTItemPart.DUST, RagiumMaterial.Fuel.COAL) - count = 2 - } - result { - +RagiumItems.getOrThrow(HTItemPart.TINY, RagiumMaterial.Fuel.COAL) - count = 3 - } - recipeId suffix "_from_ore" - }.save(exporter) - RagiumRecipeBuilders.crushing { - ingredient { +holderSet(CommonTagPrefixes.ORE, RagiumMaterial.Mineral.REDSTONE) } - result { - +Items.REDSTONE - count = 6 - } - result { - +RagiumItems.getOrThrow(HTItemPart.DUST, RagiumMaterial.Mineral.RAGINITE) - } - recipeId suffix "_from_ore" - }.save(exporter) - - RagiumRecipeBuilders.crushing { - ingredient { +holderSet(CommonTagPrefixes.ORE, RagiumMaterial.Gem.LAPIS) } - result { - +RagiumItems.getOrThrow(HTItemPart.DUST, RagiumMaterial.Gem.LAPIS) - count = 6 - } - recipeId suffix "_from_ore" - }.save(exporter) - RagiumRecipeBuilders.crushing { - ingredient { +holderSet(CommonTagPrefixes.ORE, RagiumMaterial.Gem.QUARTZ) } - result { - +RagiumItems.getOrThrow(HTItemPart.DUST, RagiumMaterial.Gem.QUARTZ) - count = 4 - } - result { - +Items.GOLD_NUGGET - } - recipeId suffix "_from_ore" - }.save(exporter) - RagiumRecipeBuilders.crushing { - ingredient { +holderSet(CommonTagPrefixes.ORE, RagiumMaterial.Gem.DIAMOND) } - result { - +RagiumItems.getOrThrow(HTItemPart.DUST, RagiumMaterial.Gem.DIAMOND) - count = 2 - } - recipeId suffix "_from_ore" - }.save(exporter) - RagiumRecipeBuilders.crushing { - ingredient { +holderSet(CommonTagPrefixes.ORE, RagiumMaterial.Gem.EMERALD) } - result { - +RagiumItems.getOrThrow(HTItemPart.DUST, RagiumMaterial.Gem.EMERALD) - count = 2 - } - recipeId suffix "_from_ore" - }.save(exporter) - - RagiumRecipeBuilders.crushing { - ingredient { +holderSet(CommonTagPrefixes.ORE, RagiumMaterial.Metal.COPPER) } - result { - +RagiumItems.getOrThrow(HTItemPart.DUST, RagiumMaterial.Metal.COPPER) - count = 3 - } - result { - +Items.GOLD_NUGGET - count = 3 - } - recipeId suffix "_from_ore" - }.save(exporter) - RagiumRecipeBuilders.crushing { - ingredient { +holderSet(CommonTagPrefixes.ORE, RagiumMaterial.Metal.IRON) } - result { - +RagiumItems.getOrThrow(HTItemPart.DUST, RagiumMaterial.Metal.IRON) - count = 2 - } - result { +Items.FLINT } - recipeId suffix "_from_ore" - }.save(exporter) - RagiumRecipeBuilders.crushing { - ingredient { +holderSet(CommonTagPrefixes.ORE, RagiumMaterial.Metal.GOLD) } - result { - +RagiumItems.getOrThrow(HTItemPart.DUST, RagiumMaterial.Metal.GOLD) - count = 2 - } - recipeId suffix "_from_ore" - }.save(exporter) - // Raw XX -> XX Dust - for (metal: RagiumMaterial.Metal in RagiumMaterial.Metal.entries) { - val dust: HTSimpleDeferredItem = RagiumItems.MATERIAL_ITEMS[HTItemPart.DUST, metal] ?: continue - RagiumRecipeBuilders.crushing { - ingredient { - +holderSet(CommonTagPrefixes.RAW_MATERIALS, metal) - count = 3 - } - result { - +dust - count = 4 - } - recipeId suffix "_from_raw" - condition { itemTagPresent(CommonTagPrefixes.RAW_MATERIALS, metal) } - }.save(exporter) - } - - // Ragium - for (mineral: RagiumMaterial.Mineral in setOf(RagiumMaterial.Mineral.SULFUR, RagiumMaterial.Mineral.NITER)) { - RagiumRecipeBuilders.crushing { - ingredient { +holderSet(CommonTagPrefixes.ORE, mineral) } - result { - +RagiumItems.getOrThrow(HTItemPart.DUST, mineral) - count = 6 - } - recipeId suffix "_from_ore" - }.save(exporter) - } - } - private fun dyes() { // Single val single = HTColoredCollection<(HTItemIngredientBuilder.() -> Unit)?>( diff --git a/src/data/kotlin/hiiragi283/ragium/data/tag/RagiumItemTagsProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/tag/RagiumItemTagsProvider.kt index 81530c05a..b5a4d63f2 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/tag/RagiumItemTagsProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/tag/RagiumItemTagsProvider.kt @@ -75,6 +75,10 @@ class RagiumItemTagsProvider(output: PackOutput, lookupProvider: CompletableFutu builder(RagiumTags.Items.COKES) .addTag(HTCommonTags.Items.COAL_COKE) .addTag(HTCommonTags.Items.PITCH_COKE) + builder(RagiumTags.Items.SMELTING_FLUXES) + .addTag(CommonTagPrefixes.DUST.itemTagKey(RagiumMaterial.Mineral.CINNABAR)) + .addTag(CommonTagPrefixes.DUST.itemTagKey(RagiumMaterial.Gem.FLUORITE)) + .addTag(CommonTagPrefixes.GEM.itemTagKey(RagiumMaterial.Gem.FLUORITE)) builder(RagiumTags.Items.SHOW_FLUID_TOOLTIPS) .add(RagiumBlocks.FLUID_OUTPUT_BUS) .apply { RagiumBlocks.TANKS.forEach { add(it) } } diff --git a/src/generated/resources/assets/ragium/items/cinnabar_dust.json b/src/generated/resources/assets/ragium/items/cinnabar_dust.json new file mode 100644 index 000000000..26be5b9dc --- /dev/null +++ b/src/generated/resources/assets/ragium/items/cinnabar_dust.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "ragium:item/cinnabar_dust" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/lang/en_us.json b/src/generated/resources/assets/ragium/lang/en_us.json index ec2ad3396..14309b03b 100644 --- a/src/generated/resources/assets/ragium/lang/en_us.json +++ b/src/generated/resources/assets/ragium/lang/en_us.json @@ -219,6 +219,7 @@ "item.ragium.charcoal_dust": "Charcoal Dust", "item.ragium.chemical_machine_parts": "Machine Parts (Chemical)", "item.ragium.chlorine_bucket": "Chlorine Bucket", + "item.ragium.cinnabar_dust": "Cinnabar Dust", "item.ragium.circuit_board": "Circuit Board", "item.ragium.coal_coke": "Coal Coke", "item.ragium.coal_dust": "Coal Dust", diff --git a/src/generated/resources/assets/ragium/lang/ja_jp.json b/src/generated/resources/assets/ragium/lang/ja_jp.json index 851b2f367..b05ec5774 100644 --- a/src/generated/resources/assets/ragium/lang/ja_jp.json +++ b/src/generated/resources/assets/ragium/lang/ja_jp.json @@ -219,6 +219,7 @@ "item.ragium.charcoal_dust": "木炭の粉", "item.ragium.chemical_machine_parts": "機械部品 (化学)", "item.ragium.chlorine_bucket": "塩素入りバケツ", + "item.ragium.cinnabar_dust": "辰砂の粉", "item.ragium.circuit_board": "回路基板", "item.ragium.coal_coke": "石炭コークス", "item.ragium.coal_dust": "石炭の粉", diff --git a/src/generated/resources/assets/ragium/models/item/cinnabar_dust.json b/src/generated/resources/assets/ragium/models/item/cinnabar_dust.json new file mode 100644 index 000000000..c784cd378 --- /dev/null +++ b/src/generated/resources/assets/ragium/models/item/cinnabar_dust.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "ragium:item/cinnabar_dust" + } +} \ No newline at end of file diff --git a/src/generated/resources/data/c/tags/item/dusts.json b/src/generated/resources/data/c/tags/item/dusts.json index f5010ba9a..f3ef3685b 100644 --- a/src/generated/resources/data/c/tags/item/dusts.json +++ b/src/generated/resources/data/c/tags/item/dusts.json @@ -6,6 +6,7 @@ "#c:dusts/borax", "#c:dusts/carbon", "#c:dusts/charcoal", + "#c:dusts/cinnabar", "#c:dusts/coal", "#c:dusts/copper", "#c:dusts/diamond", diff --git a/src/generated/resources/data/c/tags/item/dusts/cinnabar.json b/src/generated/resources/data/c/tags/item/dusts/cinnabar.json new file mode 100644 index 000000000..7fcb107e3 --- /dev/null +++ b/src/generated/resources/data/c/tags/item/dusts/cinnabar.json @@ -0,0 +1,5 @@ +{ + "values": [ + "ragium:cinnabar_dust" + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/alloying/coal_from_ore.json b/src/generated/resources/data/ragium/recipe/alloying/coal_from_ore.json new file mode 100644 index 000000000..4a0cfa65c --- /dev/null +++ b/src/generated/resources/data/ragium/recipe/alloying/coal_from_ore.json @@ -0,0 +1,16 @@ +{ + "type": "ragium:alloying", + "extra": { + "count": 1, + "items": "#ragium:smelting_fluxes" + }, + "ingredient": { + "count": 1, + "items": "#c:ores/coal" + }, + "result": { + "count": 3, + "id": "minecraft:coal" + }, + "time": 200 +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/alloying/copper_ingot_from_ore.json b/src/generated/resources/data/ragium/recipe/alloying/copper_ingot_from_ore.json new file mode 100644 index 000000000..99d4287e2 --- /dev/null +++ b/src/generated/resources/data/ragium/recipe/alloying/copper_ingot_from_ore.json @@ -0,0 +1,16 @@ +{ + "type": "ragium:alloying", + "extra": { + "count": 1, + "items": "#ragium:smelting_fluxes" + }, + "ingredient": { + "count": 1, + "items": "#c:ores/copper" + }, + "result": { + "count": 3, + "id": "minecraft:copper_ingot" + }, + "time": 200 +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/alloying/diamond_from_ore.json b/src/generated/resources/data/ragium/recipe/alloying/diamond_from_ore.json new file mode 100644 index 000000000..8ded540fd --- /dev/null +++ b/src/generated/resources/data/ragium/recipe/alloying/diamond_from_ore.json @@ -0,0 +1,16 @@ +{ + "type": "ragium:alloying", + "extra": { + "count": 1, + "items": "#ragium:smelting_fluxes" + }, + "ingredient": { + "count": 1, + "items": "#c:ores/diamond" + }, + "result": { + "count": 3, + "id": "minecraft:diamond" + }, + "time": 200 +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/alloying/emerald_from_ore.json b/src/generated/resources/data/ragium/recipe/alloying/emerald_from_ore.json new file mode 100644 index 000000000..9e719fb79 --- /dev/null +++ b/src/generated/resources/data/ragium/recipe/alloying/emerald_from_ore.json @@ -0,0 +1,16 @@ +{ + "type": "ragium:alloying", + "extra": { + "count": 1, + "items": "#ragium:smelting_fluxes" + }, + "ingredient": { + "count": 1, + "items": "#c:ores/emerald" + }, + "result": { + "count": 3, + "id": "minecraft:emerald" + }, + "time": 200 +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/alloying/gold_ingot_from_ore.json b/src/generated/resources/data/ragium/recipe/alloying/gold_ingot_from_ore.json new file mode 100644 index 000000000..95f17f2b7 --- /dev/null +++ b/src/generated/resources/data/ragium/recipe/alloying/gold_ingot_from_ore.json @@ -0,0 +1,16 @@ +{ + "type": "ragium:alloying", + "extra": { + "count": 1, + "items": "#ragium:smelting_fluxes" + }, + "ingredient": { + "count": 1, + "items": "#c:ores/gold" + }, + "result": { + "count": 3, + "id": "minecraft:gold_ingot" + }, + "time": 200 +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/alloying/iron_ingot_from_ore.json b/src/generated/resources/data/ragium/recipe/alloying/iron_ingot_from_ore.json new file mode 100644 index 000000000..537b210ec --- /dev/null +++ b/src/generated/resources/data/ragium/recipe/alloying/iron_ingot_from_ore.json @@ -0,0 +1,16 @@ +{ + "type": "ragium:alloying", + "extra": { + "count": 1, + "items": "#ragium:smelting_fluxes" + }, + "ingredient": { + "count": 1, + "items": "#c:ores/iron" + }, + "result": { + "count": 3, + "id": "minecraft:iron_ingot" + }, + "time": 200 +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/alloying/lapis_lazuli_from_ore.json b/src/generated/resources/data/ragium/recipe/alloying/lapis_lazuli_from_ore.json new file mode 100644 index 000000000..e52f144ee --- /dev/null +++ b/src/generated/resources/data/ragium/recipe/alloying/lapis_lazuli_from_ore.json @@ -0,0 +1,16 @@ +{ + "type": "ragium:alloying", + "extra": { + "count": 1, + "items": "#ragium:smelting_fluxes" + }, + "ingredient": { + "count": 1, + "items": "#c:ores/lapis" + }, + "result": { + "count": 9, + "id": "minecraft:lapis_lazuli" + }, + "time": 200 +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/alloying/niter_dust_from_ore.json b/src/generated/resources/data/ragium/recipe/alloying/niter_dust_from_ore.json new file mode 100644 index 000000000..5dec7b11d --- /dev/null +++ b/src/generated/resources/data/ragium/recipe/alloying/niter_dust_from_ore.json @@ -0,0 +1,16 @@ +{ + "type": "ragium:alloying", + "extra": { + "count": 1, + "items": "#ragium:smelting_fluxes" + }, + "ingredient": { + "count": 1, + "items": "#c:ores/niter" + }, + "result": { + "count": 9, + "id": "ragium:niter_dust" + }, + "time": 200 +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/alloying/quartz_from_ore.json b/src/generated/resources/data/ragium/recipe/alloying/quartz_from_ore.json new file mode 100644 index 000000000..0da38fb56 --- /dev/null +++ b/src/generated/resources/data/ragium/recipe/alloying/quartz_from_ore.json @@ -0,0 +1,16 @@ +{ + "type": "ragium:alloying", + "extra": { + "count": 1, + "items": "#ragium:smelting_fluxes" + }, + "ingredient": { + "count": 1, + "items": "#c:ores/quartz" + }, + "result": { + "count": 6, + "id": "minecraft:quartz" + }, + "time": 200 +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/alloying/redstone_from_ore.json b/src/generated/resources/data/ragium/recipe/alloying/redstone_from_ore.json new file mode 100644 index 000000000..4ff0b1d87 --- /dev/null +++ b/src/generated/resources/data/ragium/recipe/alloying/redstone_from_ore.json @@ -0,0 +1,16 @@ +{ + "type": "ragium:alloying", + "extra": { + "count": 1, + "items": "#ragium:smelting_fluxes" + }, + "ingredient": { + "count": 1, + "items": "#c:ores/redstone" + }, + "result": { + "count": 9, + "id": "minecraft:redstone" + }, + "time": 200 +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/alloying/sulfur_dust_from_ore.json b/src/generated/resources/data/ragium/recipe/alloying/sulfur_dust_from_ore.json new file mode 100644 index 000000000..8ce137822 --- /dev/null +++ b/src/generated/resources/data/ragium/recipe/alloying/sulfur_dust_from_ore.json @@ -0,0 +1,16 @@ +{ + "type": "ragium:alloying", + "extra": { + "count": 1, + "items": "#ragium:smelting_fluxes" + }, + "ingredient": { + "count": 1, + "items": "#c:ores/sulfur" + }, + "result": { + "count": 9, + "id": "ragium:sulfur_dust" + }, + "time": 200 +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/crushing/coal_dust_from_ore.json b/src/generated/resources/data/ragium/recipe/crushing/coal_dust_from_ore.json index 9cf8e481c..408d9817d 100644 --- a/src/generated/resources/data/ragium/recipe/crushing/coal_dust_from_ore.json +++ b/src/generated/resources/data/ragium/recipe/crushing/coal_dust_from_ore.json @@ -4,15 +4,9 @@ "count": 1, "items": "#c:ores/coal" }, - "results": [ - { - "count": 2, - "id": "ragium:coal_dust" - }, - { - "count": 3, - "id": "ragium:tiny_coal" - } - ], + "result": { + "count": 2, + "id": "ragium:coal_dust" + }, "time": 200 } \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/crushing/copper_dust_from_raw_block.json b/src/generated/resources/data/ragium/recipe/crushing/copper_dust_from_raw_block.json new file mode 100644 index 000000000..e3c057ba6 --- /dev/null +++ b/src/generated/resources/data/ragium/recipe/crushing/copper_dust_from_raw_block.json @@ -0,0 +1,21 @@ +{ + "neoforge:conditions": [ + { + "type": "neoforge:not", + "value": { + "type": "neoforge:tag_empty", + "tag": "c:storage_blocks/raw_copper" + } + } + ], + "type": "ragium:crushing", + "ingredient": { + "count": 1, + "items": "#c:storage_blocks/raw_copper" + }, + "result": { + "count": 12, + "id": "ragium:copper_dust" + }, + "time": 200 +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/crushing/diamond_dust_from_ore.json b/src/generated/resources/data/ragium/recipe/crushing/diamond_dust_from_ore.json index 6e7413a86..59695b44f 100644 --- a/src/generated/resources/data/ragium/recipe/crushing/diamond_dust_from_ore.json +++ b/src/generated/resources/data/ragium/recipe/crushing/diamond_dust_from_ore.json @@ -4,9 +4,15 @@ "count": 1, "items": "#c:ores/diamond" }, - "result": { - "count": 2, - "id": "ragium:diamond_dust" - }, + "results": [ + { + "count": 2, + "id": "ragium:diamond_dust" + }, + { + "count": 1, + "id": "ragium:carbon_dust" + } + ], "time": 200 } \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/crushing/gold_dust_from_raw_block.json b/src/generated/resources/data/ragium/recipe/crushing/gold_dust_from_raw_block.json new file mode 100644 index 000000000..32a4a8abc --- /dev/null +++ b/src/generated/resources/data/ragium/recipe/crushing/gold_dust_from_raw_block.json @@ -0,0 +1,21 @@ +{ + "neoforge:conditions": [ + { + "type": "neoforge:not", + "value": { + "type": "neoforge:tag_empty", + "tag": "c:storage_blocks/raw_gold" + } + } + ], + "type": "ragium:crushing", + "ingredient": { + "count": 1, + "items": "#c:storage_blocks/raw_gold" + }, + "result": { + "count": 12, + "id": "ragium:gold_dust" + }, + "time": 200 +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/crushing/iron_dust_from_raw_block.json b/src/generated/resources/data/ragium/recipe/crushing/iron_dust_from_raw_block.json new file mode 100644 index 000000000..e222276cd --- /dev/null +++ b/src/generated/resources/data/ragium/recipe/crushing/iron_dust_from_raw_block.json @@ -0,0 +1,21 @@ +{ + "neoforge:conditions": [ + { + "type": "neoforge:not", + "value": { + "type": "neoforge:tag_empty", + "tag": "c:storage_blocks/raw_iron" + } + } + ], + "type": "ragium:crushing", + "ingredient": { + "count": 1, + "items": "#c:storage_blocks/raw_iron" + }, + "result": { + "count": 12, + "id": "ragium:iron_dust" + }, + "time": 200 +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/crushing/lapis_dust_from_ore.json b/src/generated/resources/data/ragium/recipe/crushing/lapis_dust_from_ore.json index f9313ab6f..79c8b359c 100644 --- a/src/generated/resources/data/ragium/recipe/crushing/lapis_dust_from_ore.json +++ b/src/generated/resources/data/ragium/recipe/crushing/lapis_dust_from_ore.json @@ -4,9 +4,15 @@ "count": 1, "items": "#c:ores/lapis" }, - "result": { - "count": 6, - "id": "ragium:lapis_dust" - }, + "results": [ + { + "count": 6, + "id": "ragium:lapis_dust" + }, + { + "count": 1, + "id": "minecraft:prismarine_shard" + } + ], "time": 200 } \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/crushing/redstone_from_ore.json b/src/generated/resources/data/ragium/recipe/crushing/redstone_from_ore.json index f1adad2e2..695961758 100644 --- a/src/generated/resources/data/ragium/recipe/crushing/redstone_from_ore.json +++ b/src/generated/resources/data/ragium/recipe/crushing/redstone_from_ore.json @@ -11,7 +11,7 @@ }, { "count": 1, - "id": "ragium:raginite_dust" + "id": "ragium:cinnabar_dust" } ], "time": 200 diff --git a/src/generated/resources/data/ragium/recipe/washing/copper_dust_from_raw.json b/src/generated/resources/data/ragium/recipe/washing/copper_dust_from_raw.json deleted file mode 100644 index 38ff1558e..000000000 --- a/src/generated/resources/data/ragium/recipe/washing/copper_dust_from_raw.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "type": "ragium:washing", - "fluid_ingredient": { - "amount": 250, - "fluids": "#c:sulfuric_acid" - }, - "item_ingredient": { - "count": 1, - "items": "#c:raw_materials/copper" - }, - "result": { - "count": 2, - "id": "ragium:copper_dust" - }, - "time": 200 -} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/washing/gold_dust_from_raw.json b/src/generated/resources/data/ragium/recipe/washing/gold_dust_from_raw.json deleted file mode 100644 index 728d1f14b..000000000 --- a/src/generated/resources/data/ragium/recipe/washing/gold_dust_from_raw.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "type": "ragium:washing", - "fluid_ingredient": { - "amount": 250, - "fluids": "#c:nitric_acid" - }, - "item_ingredient": { - "count": 1, - "items": "#c:raw_materials/gold" - }, - "result": { - "count": 2, - "id": "ragium:gold_dust" - }, - "time": 200 -} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/washing/iron_dust_from_raw.json b/src/generated/resources/data/ragium/recipe/washing/iron_dust_from_raw.json deleted file mode 100644 index ff9a3337c..000000000 --- a/src/generated/resources/data/ragium/recipe/washing/iron_dust_from_raw.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "type": "ragium:washing", - "fluid_ingredient": { - "amount": 250, - "fluids": "#c:sulfuric_acid" - }, - "item_ingredient": { - "count": 1, - "items": "#c:raw_materials/iron" - }, - "result": { - "count": 2, - "id": "ragium:iron_dust" - }, - "time": 200 -} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/tags/item/smelting_fluxes.json b/src/generated/resources/data/ragium/tags/item/smelting_fluxes.json new file mode 100644 index 000000000..0e558bbcd --- /dev/null +++ b/src/generated/resources/data/ragium/tags/item/smelting_fluxes.json @@ -0,0 +1,7 @@ +{ + "values": [ + "#c:dusts/cinnabar", + "#c:dusts/fluorite", + "#c:gems/fluorite" + ] +} \ No newline at end of file diff --git a/src/generated/resources/reports/ragium/registries.json b/src/generated/resources/reports/ragium/registries.json index e18767388..37bbf053d 100644 --- a/src/generated/resources/reports/ragium/registries.json +++ b/src/generated/resources/reports/ragium/registries.json @@ -240,6 +240,7 @@ "chemical_machine_parts", "chemical_reactor", "chlorine_bucket", + "cinnabar_dust", "circuit_board", "coal_coke", "coal_coke_block", diff --git a/src/lib/kotlin/hiiragi283/ragium/api/material/RagiumMaterial.kt b/src/lib/kotlin/hiiragi283/ragium/api/material/RagiumMaterial.kt index 4befeeb7a..4a4b74e4c 100644 --- a/src/lib/kotlin/hiiragi283/ragium/api/material/RagiumMaterial.kt +++ b/src/lib/kotlin/hiiragi283/ragium/api/material/RagiumMaterial.kt @@ -69,21 +69,27 @@ sealed interface RagiumMaterial : GLOWSTONE("Glowstone", "グロウストーン"), // Common - SALT("Salt", "食塩", RagiumChemicals.SODIUM_CHLORIDE), - SULFUR("Sulfur", "硫黄", RagiumChemicals.SULFUR), - NITER("Niter", "硝石", RagiumChemicals.POTASSIUM_NITRATE), BORAX("Borax", "ホウ砂"), + SALT("Salt", "食塩", RagiumChemicals.SODIUM_CHLORIDE), /** * @since 26.1.7 */ BAUXITE("Bauxite", "ボーキサイト", RagiumChemicals.ALUMINUM_OXIDE), + SULFUR("Sulfur", "硫黄", RagiumChemicals.SULFUR), + NITER("Niter", "硝石", RagiumChemicals.POTASSIUM_NITRATE), + /** * @since 26.1.8 */ GYPSUM("Gypsum", "石膏", RagiumChemicals.CALCIUM_SULFATE), + /** + * @since 26.1.8 + */ + CINNABAR("Cinnabar", "辰砂"), + // Ragium RAGINITE("Raginite", "ラギナイト") ; diff --git a/src/lib/kotlin/hiiragi283/ragium/api/tag/RagiumTags.kt b/src/lib/kotlin/hiiragi283/ragium/api/tag/RagiumTags.kt index 6880e9da8..c3a284080 100644 --- a/src/lib/kotlin/hiiragi283/ragium/api/tag/RagiumTags.kt +++ b/src/lib/kotlin/hiiragi283/ragium/api/tag/RagiumTags.kt @@ -82,6 +82,12 @@ data object RagiumTags { @JvmField val SHOW_FLUID_TOOLTIPS: TagKey = create("show_fluid_tooltips") + /** + * @since 26.1.8 + */ + @JvmField + val SMELTING_FLUXES: TagKey = create("smelting_fluxes") + @JvmField val SOOTY_IRON_TOOL_MATERIALS: TagKey = create("sooty_iron_tool_materials") diff --git a/src/main/resources/assets/ragium/textures/item/cinnabar_dust.png b/src/main/resources/assets/ragium/textures/item/cinnabar_dust.png new file mode 100644 index 0000000000000000000000000000000000000000..ed830e7094b56733c5e8521d71bb268e25266fdf GIT binary patch literal 293 zcmV+=0owkFP)DL$-(xj|5!qC9%`myQ6Sgqi`o_lqa>$elvdzca z4uQE`c4}bFAeX3d{zY*KiWfkB200m|3&aM61Bn0a&@He*AOk_JKz23UfLq_089+{j z1sq5bOf$#@AU;Sl$ScSOpo9S^q(OlNaw<$S%OT_C^0oD0(k rmPZOe5Ff(;nDfx%y#Y-l!=M2Guf1$Xi?Bs300000NkvXXu0mjfZ9{Fu literal 0 HcmV?d00001 From ad090b425587a005edd4e8429a70307aba44652e Mon Sep 17 00:00:00 2001 From: Hiiragi Russell Tsubasa <97942736+Hiiragi283@users.noreply.github.com> Date: Mon, 5 Oct 2026 00:11:05 +0900 Subject: [PATCH 3/9] =?UTF-8?q?feat!:=20Freezing=20=E3=83=AC=E3=82=B7?= =?UTF-8?q?=E3=83=94=E3=81=AB=E8=A7=A6=E5=AA=92=E5=88=A4=E5=AE=9A=E3=82=92?= =?UTF-8?q?=E8=BF=BD=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../client/integration/jei/RagiumJeiPlugin.kt | 3 +- .../integration/jei/RagiumJeiRecipeTypes.kt | 3 +- .../jei/category/RTFreezingRecipeCategory.kt | 42 +++++++++++ .../data/recipe/RagiumCommonRecipeProvider.kt | 19 +++-- .../ragium/recipe/melting/molten_plastic.json | 12 ++++ .../builder/HTItemAndFluidToRecipeBuilder.kt | 3 +- .../lib/recipe/ingredient/HTItemCatalyst.kt | 51 ++++++++++++++ .../recipe/builder/RTFreezingRecipeBuilder.kt | 69 +++++++++++++++++++ .../recipe/builder/RagiumRecipeBuilders.kt | 8 +-- .../ragium/api/material/RagiumMaterial.kt | 2 +- .../ragium/api/recipe/RTFreezingRecipe.kt | 59 ++++++++++++++-- .../ragium/api/recipe/RagiumRecipeLookups.kt | 3 +- .../hiiragi283/ragium/common/RagiumCommon.kt | 1 - .../entity/machine/HTFreezerBlockEntity.kt | 41 +++++++---- 14 files changed, 277 insertions(+), 39 deletions(-) create mode 100644 src/client/kotlin/hiiragi283/ragium/client/integration/jei/category/RTFreezingRecipeCategory.kt create mode 100644 src/generated/resources/data/ragium/recipe/melting/molten_plastic.json create mode 100644 src/lib/kotlin/hiiragi283/lib/recipe/ingredient/HTItemCatalyst.kt create mode 100644 src/lib/kotlin/hiiragi283/ragium/api/data/recipe/builder/RTFreezingRecipeBuilder.kt diff --git a/src/client/kotlin/hiiragi283/ragium/client/integration/jei/RagiumJeiPlugin.kt b/src/client/kotlin/hiiragi283/ragium/client/integration/jei/RagiumJeiPlugin.kt index 7a8d421f0..107c07fc0 100644 --- a/src/client/kotlin/hiiragi283/ragium/client/integration/jei/RagiumJeiPlugin.kt +++ b/src/client/kotlin/hiiragi283/ragium/client/integration/jei/RagiumJeiPlugin.kt @@ -23,6 +23,7 @@ import hiiragi283.ragium.api.recipe.RagiumRecipeLookups import hiiragi283.ragium.client.gui.screen.HTWidgetContainerScreen import hiiragi283.ragium.client.integration.jei.category.RTElectrolyzingRecipeCategory import hiiragi283.ragium.client.integration.jei.category.RTEnchantingRecipeCategory +import hiiragi283.ragium.client.integration.jei.category.RTFreezingRecipeCategory import hiiragi283.ragium.client.integration.jei.category.RTReactingRecipeCategory import hiiragi283.ragium.client.integration.jei.category.RTResourceExtractingRecipeCategory import hiiragi283.ragium.client.integration.jei.category.RTWashingRecipeCategory @@ -116,7 +117,7 @@ class RagiumJeiPlugin : HTJeiPlugin(RagiumAPI.MOD_ID) { HTItemAndFluidToItemRecipeCategory(guiHelper, RagiumJeiRecipeTypes.FILLING), // Heat HTTripleItemToRecipeCategory.Basic(guiHelper, RagiumJeiRecipeTypes.ALLOYING), - HTSingleRecipeCategory.FluidToItem(guiHelper, RagiumJeiRecipeTypes.FREEZING), + RTFreezingRecipeCategory(guiHelper, RagiumJeiRecipeTypes.FREEZING), HTSingleRecipeCategory.ItemToFluid(guiHelper, RagiumJeiRecipeTypes.MELTING), HTSingleToItemAndFluidRecipeCategory.ItemTo(guiHelper, RagiumJeiRecipeTypes.PYROLYZING), HTSingleToItemAndFluidRecipeCategory.FluidTo(guiHelper, RagiumJeiRecipeTypes.REFINING), diff --git a/src/client/kotlin/hiiragi283/ragium/client/integration/jei/RagiumJeiRecipeTypes.kt b/src/client/kotlin/hiiragi283/ragium/client/integration/jei/RagiumJeiRecipeTypes.kt index c50c68a1e..afff0f273 100644 --- a/src/client/kotlin/hiiragi283/ragium/client/integration/jei/RagiumJeiRecipeTypes.kt +++ b/src/client/kotlin/hiiragi283/ragium/client/integration/jei/RagiumJeiRecipeTypes.kt @@ -10,6 +10,7 @@ import hiiragi283.lib.recipe.base.HTItemToRecipe import hiiragi283.lib.recipe.base.HTTripleItemToItemRecipe import hiiragi283.ragium.api.recipe.RTElectrolyzingRecipe import hiiragi283.ragium.api.recipe.RTEnchantingRecipe +import hiiragi283.ragium.api.recipe.RTFreezingRecipe import hiiragi283.ragium.api.recipe.RTReactingRecipe import hiiragi283.ragium.api.recipe.RTResourceExtractingRecipe import hiiragi283.ragium.api.recipe.RTWashingRecipe @@ -48,7 +49,7 @@ data object RagiumJeiRecipeTypes { HTJeiRecipeType(RagiumRecipeTypes.ALLOYING, RagiumBlocks.ALLOY_SMELTER) @JvmField - val FREEZING: HTHolderJeiRecipeType = + val FREEZING: HTHolderJeiRecipeType = HTJeiRecipeType(RagiumRecipeTypes.FREEZING, RagiumBlocks.FREEZER) @JvmField diff --git a/src/client/kotlin/hiiragi283/ragium/client/integration/jei/category/RTFreezingRecipeCategory.kt b/src/client/kotlin/hiiragi283/ragium/client/integration/jei/category/RTFreezingRecipeCategory.kt new file mode 100644 index 000000000..54348ab2e --- /dev/null +++ b/src/client/kotlin/hiiragi283/ragium/client/integration/jei/category/RTFreezingRecipeCategory.kt @@ -0,0 +1,42 @@ +package hiiragi283.ragium.client.integration.jei.category + +import hiiragi283.lib.gui.HTBackgroundType +import hiiragi283.lib.integration.jei.HTHolderJeiRecipeType +import hiiragi283.lib.integration.jei.add +import hiiragi283.lib.integration.jei.category.HTHolderRecipeCategory +import hiiragi283.ragium.api.recipe.RTFreezingRecipe +import mezz.jei.api.gui.builder.IRecipeLayoutBuilder +import mezz.jei.api.gui.widgets.IRecipeExtrasBuilder +import mezz.jei.api.helpers.IGuiHelper +import mezz.jei.api.recipe.IFocusGroup + +class RTFreezingRecipeCategory(guiHelper: IGuiHelper, recipeType: HTHolderJeiRecipeType) : + HTHolderRecipeCategory( + guiHelper, + recipeType, + 18 * 6, + 18 * 1, + RTFreezingRecipe.CODEC + ) { + override fun setupRecipe(builder: IRecipeLayoutBuilder, recipe: RTFreezingRecipe, focuses: IFocusGroup) { + // inputs + builder + .addInputSlot(getPosition(0), getPosition(0)) + .add(recipe.ingredient) + .setSlotBackground(HTBackgroundType.INPUT) + builder + .addInputSlot(getPosition(2), getPosition(0)) + .add(recipe.catalyst) + .setSlotBackground(HTBackgroundType.NONE) + // output + builder + .addOutputSlot(getPosition(5), getPosition(0)) + .add(recipe.result) + .setSlotBackground(HTBackgroundType.OUTPUT) + } + + override fun setupRecipeExtras(builder: IRecipeExtrasBuilder, recipe: RTFreezingRecipe, focuses: IFocusGroup) { + builder.addRecipePlus(getPosition(1)) + builder.addRecipeArrow(recipe).setPosition(getPosition(3.25), getPosition(0)) + } +} diff --git a/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumCommonRecipeProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumCommonRecipeProvider.kt index 95999b7e8..a649212be 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumCommonRecipeProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumCommonRecipeProvider.kt @@ -47,12 +47,12 @@ class RagiumCommonRecipeProvider(packOutput: PackOutput, future: CompletableFutu override fun getName(): String = "Common Recipes" // Mechanical // - + private fun mechanical() { ore() rawMaterial() } - + private fun ore() { // Crushing RagiumRecipeBuilders.crushing { @@ -84,7 +84,7 @@ class RagiumCommonRecipeProvider(packOutput: PackOutput, future: CompletableFutu } recipeId suffix "_from_ore" }.save(exporter) - // Alloyinh + // Alloying RagiumRecipeBuilders.alloying { ingredient { +holderSet(CommonTagPrefixes.ORE, mineral) } extra { +holderSet(RagiumTags.Items.SMELTING_FLUXES) } @@ -95,7 +95,7 @@ class RagiumCommonRecipeProvider(packOutput: PackOutput, future: CompletableFutu recipeId suffix "_from_ore" }.save(exporter) } - + RagiumRecipeBuilders.crushing { ingredient { +holderSet(CommonTagPrefixes.ORE, RagiumMaterial.Gem.LAPIS) } result { @@ -167,7 +167,7 @@ class RagiumCommonRecipeProvider(packOutput: PackOutput, future: CompletableFutu buildTable { put(RagiumMaterial.Fuel.COAL, Items.COAL, 3) put(RagiumMaterial.Mineral.REDSTONE, Items.REDSTONE, 9) - + put(RagiumMaterial.Gem.LAPIS, Items.LAPIS_LAZULI, 9) put(RagiumMaterial.Gem.QUARTZ, Items.QUARTZ, 6) put(RagiumMaterial.Gem.DIAMOND, Items.DIAMOND, 3) @@ -391,7 +391,14 @@ class RagiumCommonRecipeProvider(packOutput: PackOutput, future: CompletableFutu amount = 180 } }.save(exporter) - // Molten Plastic -> Plastic + // Molten Plastic <-> Plastic + RagiumRecipeBuilders.melting { + ingredient { +holderSet(HTCommonTags.Items.PLASTICS) } + result { + +RagiumFluids.MOLTEN_PLASTIC + amount = 90 + } + }.save(exporter) RagiumRecipeBuilders.freezing { ingredient { +holderSet(RagiumFluids.MOLTEN_PLASTIC) diff --git a/src/generated/resources/data/ragium/recipe/melting/molten_plastic.json b/src/generated/resources/data/ragium/recipe/melting/molten_plastic.json new file mode 100644 index 000000000..aef841a52 --- /dev/null +++ b/src/generated/resources/data/ragium/recipe/melting/molten_plastic.json @@ -0,0 +1,12 @@ +{ + "type": "ragium:melting", + "ingredient": { + "count": 1, + "items": "#c:plastics" + }, + "result": { + "amount": 90, + "id": "ragium:molten_plastic" + }, + "time": 200 +} \ No newline at end of file diff --git a/src/lib/kotlin/hiiragi283/lib/data/recipe/builder/HTItemAndFluidToRecipeBuilder.kt b/src/lib/kotlin/hiiragi283/lib/data/recipe/builder/HTItemAndFluidToRecipeBuilder.kt index f28ad7d2c..87e94a379 100644 --- a/src/lib/kotlin/hiiragi283/lib/data/recipe/builder/HTItemAndFluidToRecipeBuilder.kt +++ b/src/lib/kotlin/hiiragi283/lib/data/recipe/builder/HTItemAndFluidToRecipeBuilder.kt @@ -35,7 +35,6 @@ abstract class HTItemAndFluidToRecipeBuilder, out REC // Ingredient var itemIngredient: HTItemIngredient by HTDelegates.onceInitialize() - var fluidIngredient: HTFluidIngredient by HTDelegates.onceInitialize() operator fun HTItemIngredient.unaryPlus() { @@ -61,7 +60,7 @@ abstract class HTItemAndFluidToRecipeBuilder, out REC } // Result - @PublishedApi internal var result: RESULT by HTDelegates.onceInitialize() + var result: RESULT by HTDelegates.onceInitialize() operator fun RESULT.unaryPlus() { result = this diff --git a/src/lib/kotlin/hiiragi283/lib/recipe/ingredient/HTItemCatalyst.kt b/src/lib/kotlin/hiiragi283/lib/recipe/ingredient/HTItemCatalyst.kt new file mode 100644 index 000000000..8927ef272 --- /dev/null +++ b/src/lib/kotlin/hiiragi283/lib/recipe/ingredient/HTItemCatalyst.kt @@ -0,0 +1,51 @@ +package hiiragi283.lib.recipe.ingredient + +import com.mojang.serialization.MapCodec +import hiiragi283.lib.HTConstants +import hiiragi283.lib.util.fold +import net.minecraft.network.RegistryFriendlyByteBuf +import net.minecraft.network.codec.StreamCodec +import net.minecraft.util.context.ContextMap +import net.minecraft.world.item.Item +import net.minecraft.world.item.ItemInstance +import net.minecraft.world.item.ItemStack +import net.minecraft.world.item.crafting.Ingredient +import java.util.Optional +import kotlin.jvm.optionals.toList + +/** + * 消費されない[Item]向けの[HTIngredient]の実装クラスです。 + * + * @author Hiiragi Tsubasa + * @since 26.1.8 + */ +@JvmRecord +data class HTItemCatalyst(val content: Optional) : + HTIngredient, + HTStackPreview { + companion object { + @JvmField + val EMPTY = HTItemCatalyst(Optional.empty()) + + @JvmField + val CODEC: MapCodec = Ingredient.CODEC + .optionalFieldOf(HTConstants.CATALYST) + .xmap(::HTItemCatalyst, HTItemCatalyst::content) + + @JvmField + val STREAM_CODEC: StreamCodec = + Ingredient.OPTIONAL_CONTENTS_STREAM_CODEC.map(::HTItemCatalyst, HTItemCatalyst::content) + } + + constructor(ingredient: Ingredient) : this(Optional.of(ingredient)) + + override fun test(instance: ItemInstance): Boolean = testOnlyType(instance) + + override fun testOnlyType(instance: ItemInstance): Boolean = + content.fold({ HTIngredientHelper.isEmpty(instance) }, { it.test(HTIngredientHelper.unwrap(instance)) }) + + override fun getMatchingStack(instance: ItemInstance): ItemInstance = ItemStack.EMPTY + + override fun getPreviewStacks(contextMap: ContextMap): List = + content.toList().flatMap { it.display().resolveForStacks(contextMap) } +} diff --git a/src/lib/kotlin/hiiragi283/ragium/api/data/recipe/builder/RTFreezingRecipeBuilder.kt b/src/lib/kotlin/hiiragi283/ragium/api/data/recipe/builder/RTFreezingRecipeBuilder.kt new file mode 100644 index 000000000..d5bdbb83e --- /dev/null +++ b/src/lib/kotlin/hiiragi283/ragium/api/data/recipe/builder/RTFreezingRecipeBuilder.kt @@ -0,0 +1,69 @@ +@file:OptIn(ExperimentalContracts::class) + +package hiiragi283.ragium.api.data.recipe.builder + +import hiiragi283.lib.data.recipe.builder.HTProgressRecipeBuilder +import hiiragi283.lib.data.recipe.ingredient.HTFluidIngredientBuilder +import hiiragi283.lib.data.recipe.ingredient.IngredientBuilder +import hiiragi283.lib.data.recipe.result.HTItemResultBuilder +import hiiragi283.lib.recipe.ingredient.HTFluidIngredient +import hiiragi283.lib.recipe.ingredient.HTItemCatalyst +import hiiragi283.lib.recipe.result.HTItemResult +import hiiragi283.lib.util.HTDelegates +import hiiragi283.ragium.api.RagiumConstants +import hiiragi283.ragium.api.recipe.RTFreezingRecipe +import net.minecraft.resources.Identifier +import net.minecraft.world.item.crafting.Ingredient +import kotlin.contracts.ExperimentalContracts +import kotlin.contracts.InvocationKind +import kotlin.contracts.contract + +class RTFreezingRecipeBuilder : HTProgressRecipeBuilder(RagiumConstants.FREEZING) { + override fun getRecipeId(): Identifier? = result.getId() + + override fun createRecipe(): RTFreezingRecipe = RTFreezingRecipe(ingredient, catalyst, result, progressData) + + // Ingredient + var ingredient: HTFluidIngredient by HTDelegates.onceInitialize() + var catalyst: HTItemCatalyst by HTDelegates.onceInitialize(HTItemCatalyst::EMPTY) + + operator fun HTFluidIngredient.unaryPlus() { + ingredient = this + } + + operator fun HTItemCatalyst.unaryPlus() { + catalyst = this + } + + operator fun Ingredient.unaryPlus() { + +HTItemCatalyst(this) + } + + inline fun ingredient(builderAction: HTFluidIngredientBuilder.() -> Unit) { + contract { + callsInPlace(builderAction, InvocationKind.EXACTLY_ONCE) + } + +HTFluidIngredientBuilder.build(builderAction) + } + + inline fun catalyst(builderAction: IngredientBuilder.() -> Unit) { + contract { + callsInPlace(builderAction, InvocationKind.EXACTLY_ONCE) + } + +IngredientBuilder.build(builderAction) + } + + // Result + var result: HTItemResult by HTDelegates.onceInitialize() + + operator fun HTItemResult.unaryPlus() { + result = this + } + + inline fun result(builderAction: HTItemResultBuilder.() -> Unit) { + contract { + callsInPlace(builderAction, InvocationKind.EXACTLY_ONCE) + } + +HTItemResultBuilder.build(builderAction) + } +} diff --git a/src/lib/kotlin/hiiragi283/ragium/api/data/recipe/builder/RagiumRecipeBuilders.kt b/src/lib/kotlin/hiiragi283/ragium/api/data/recipe/builder/RagiumRecipeBuilders.kt index 01cd1c821..51988b000 100644 --- a/src/lib/kotlin/hiiragi283/ragium/api/data/recipe/builder/RagiumRecipeBuilders.kt +++ b/src/lib/kotlin/hiiragi283/ragium/api/data/recipe/builder/RagiumRecipeBuilders.kt @@ -4,7 +4,6 @@ package hiiragi283.ragium.api.data.recipe.builder import hiiragi283.lib.data.recipe.builder.HTFluidToDoubleFluidRecipeBuilder import hiiragi283.lib.data.recipe.builder.HTFluidToItemAndFluidRecipeBuilder -import hiiragi283.lib.data.recipe.builder.HTFluidToItemRecipeBuilder import hiiragi283.lib.data.recipe.builder.HTItemAndFluidToRecipeBuilder import hiiragi283.lib.data.recipe.builder.HTItemToDoubleItemRecipeBuilder import hiiragi283.lib.data.recipe.builder.HTItemToFluidRecipeBuilder @@ -24,7 +23,6 @@ import hiiragi283.ragium.api.recipe.RTCuttingRecipe import hiiragi283.ragium.api.recipe.RTDrainingRecipe import hiiragi283.ragium.api.recipe.RTEnchantingRecipe import hiiragi283.ragium.api.recipe.RTFillingRecipe -import hiiragi283.ragium.api.recipe.RTFreezingRecipe import hiiragi283.ragium.api.recipe.RTMeltingRecipe import hiiragi283.ragium.api.recipe.RTMixingRecipe import hiiragi283.ragium.api.recipe.RTPlantingRecipe @@ -113,13 +111,11 @@ data object RagiumRecipeBuilders { } @JvmStatic - inline fun freezing( - builderAction: HTFluidToItemRecipeBuilder.() -> Unit - ): HTFluidToItemRecipeBuilder { + inline fun freezing(builderAction: RTFreezingRecipeBuilder.() -> Unit): RTFreezingRecipeBuilder { contract { callsInPlace(builderAction, InvocationKind.EXACTLY_ONCE) } - return HTSingleRecipeBuilder(RagiumConstants.FREEZING, ::RTFreezingRecipe).apply(builderAction) + return RTFreezingRecipeBuilder().apply(builderAction) } @JvmStatic diff --git a/src/lib/kotlin/hiiragi283/ragium/api/material/RagiumMaterial.kt b/src/lib/kotlin/hiiragi283/ragium/api/material/RagiumMaterial.kt index 4a4b74e4c..6a6237f05 100644 --- a/src/lib/kotlin/hiiragi283/ragium/api/material/RagiumMaterial.kt +++ b/src/lib/kotlin/hiiragi283/ragium/api/material/RagiumMaterial.kt @@ -79,7 +79,7 @@ sealed interface RagiumMaterial : SULFUR("Sulfur", "硫黄", RagiumChemicals.SULFUR), NITER("Niter", "硝石", RagiumChemicals.POTASSIUM_NITRATE), - + /** * @since 26.1.8 */ diff --git a/src/lib/kotlin/hiiragi283/ragium/api/recipe/RTFreezingRecipe.kt b/src/lib/kotlin/hiiragi283/ragium/api/recipe/RTFreezingRecipe.kt index a83ddf3d9..a952b496a 100644 --- a/src/lib/kotlin/hiiragi283/ragium/api/recipe/RTFreezingRecipe.kt +++ b/src/lib/kotlin/hiiragi283/ragium/api/recipe/RTFreezingRecipe.kt @@ -1,23 +1,68 @@ package hiiragi283.ragium.api.recipe +import com.mojang.serialization.MapCodec +import hiiragi283.lib.HTConstants import hiiragi283.lib.recipe.HTSerializableRecipe -import hiiragi283.lib.recipe.base.HTFluidToRecipe +import hiiragi283.lib.recipe.base.HTItemAndFluidToItemRecipe import hiiragi283.lib.recipe.base.HTProgressData +import hiiragi283.lib.recipe.base.HTProgressRecipe import hiiragi283.lib.recipe.ingredient.HTFluidIngredient -import hiiragi283.lib.recipe.input.HTSingleFluidRecipeInput +import hiiragi283.lib.recipe.ingredient.HTItemCatalyst +import hiiragi283.lib.recipe.input.HTItemAndFluidRecipeInput import hiiragi283.lib.recipe.result.HTItemResult +import hiiragi283.lib.serialization.codec.HTCodecs +import net.minecraft.network.RegistryFriendlyByteBuf +import net.minecraft.network.codec.StreamCodec +import net.minecraft.world.item.ItemInstance +import net.minecraft.world.item.ItemStack import net.minecraft.world.item.crafting.RecipeSerializer import net.minecraft.world.item.crafting.RecipeType +import net.neoforged.neoforge.fluids.FluidInstance -class RTFreezingRecipe(ingredient: HTFluidIngredient, result: HTItemResult, progressData: HTProgressData) : - HTFluidToRecipe.BasicItem(ingredient, result, progressData), - HTSerializableRecipe { +class RTFreezingRecipe( + val ingredient: HTFluidIngredient, + val catalyst: HTItemCatalyst, + val result: HTItemResult, + override val progressData: HTProgressData +) : HTItemAndFluidToItemRecipe, + HTProgressRecipe.Simple, + HTSerializableRecipe { companion object { @JvmField - val SERIALIZER: RecipeSerializer = - RecipeSerializer(codec(::RTFreezingRecipe), streamCodec(::RTFreezingRecipe)) + val CODEC: MapCodec = HTCodecs.recordMap { instance -> + instance.group( + HTFluidIngredient.CODEC.fieldOf(HTConstants.INGREDIENT).forGetter(RTFreezingRecipe::ingredient), + HTItemCatalyst.CODEC.forGetter(RTFreezingRecipe::catalyst), + HTItemResult.CODEC.fieldOf(HTConstants.RESULT).forGetter(RTFreezingRecipe::result), + HTProgressData.CODEC.forGetter(RTFreezingRecipe::progressData) + ).apply(instance, ::RTFreezingRecipe) + } + + @JvmField + val STREAM_CODEC: StreamCodec = StreamCodec.composite( + HTFluidIngredient.STREAM_CODEC, + RTFreezingRecipe::ingredient, + HTItemCatalyst.STREAM_CODEC, + RTFreezingRecipe::catalyst, + HTItemResult.STREAM_CODEC, + RTFreezingRecipe::result, + HTProgressData.STREAM_CODEC, + RTFreezingRecipe::progressData, + ::RTFreezingRecipe + ) + + @JvmField + val SERIALIZER: RecipeSerializer = RecipeSerializer(CODEC, STREAM_CODEC) } + override fun test(first: ItemInstance, second: FluidInstance): Boolean = + catalyst.test(first) && ingredient.test(second) + + override fun apply(first: ItemInstance, second: FluidInstance): ItemStack = result.create() + + override fun getMatchingStack(first: ItemInstance, second: FluidInstance): Pair = + ItemStack.EMPTY to ingredient.getMatchingStack(second) + override fun getSerializer(): RecipeSerializer = RagiumRecipeSerializers.FREEZING override fun getType(): RecipeType = RagiumRecipeTypes.FREEZING diff --git a/src/lib/kotlin/hiiragi283/ragium/api/recipe/RagiumRecipeLookups.kt b/src/lib/kotlin/hiiragi283/ragium/api/recipe/RagiumRecipeLookups.kt index bed76220f..84e244607 100644 --- a/src/lib/kotlin/hiiragi283/ragium/api/recipe/RagiumRecipeLookups.kt +++ b/src/lib/kotlin/hiiragi283/ragium/api/recipe/RagiumRecipeLookups.kt @@ -2,7 +2,6 @@ package hiiragi283.ragium.api.recipe import hiiragi283.lib.recipe.base.HTFluidToDoubleFluidRecipe import hiiragi283.lib.recipe.base.HTFluidToItemAndFluidRecipe -import hiiragi283.lib.recipe.base.HTFluidToItemRecipe import hiiragi283.lib.recipe.base.HTItemAndFluidToFluidRecipe import hiiragi283.lib.recipe.base.HTItemAndFluidToItemRecipe import hiiragi283.lib.recipe.base.HTItemToDoubleItemRecipe @@ -58,7 +57,7 @@ data object RagiumRecipeLookups { val ALLOYING: HTCompoundRecipeLookup = create(RagiumConstants.ALLOYING) @JvmField - val FREEZING: HTCompoundRecipeLookup = create(RagiumConstants.FREEZING) + val FREEZING: HTRecipeLookup = create(RagiumRecipeTypes.FREEZING) @JvmField val MELTING: HTCompoundRecipeLookup = create(RagiumConstants.MELTING) diff --git a/src/main/kotlin/hiiragi283/ragium/common/RagiumCommon.kt b/src/main/kotlin/hiiragi283/ragium/common/RagiumCommon.kt index 18286f8d2..4ec05beb4 100644 --- a/src/main/kotlin/hiiragi283/ragium/common/RagiumCommon.kt +++ b/src/main/kotlin/hiiragi283/ragium/common/RagiumCommon.kt @@ -124,7 +124,6 @@ internal data object RagiumCommon { RagiumRecipeLookups.FILLING.fromRecipeType(RagiumRecipeTypes.FILLING, identity()) RagiumRecipeLookups.ALLOYING.fromRecipeType(RagiumRecipeTypes.ALLOYING, identity()) - RagiumRecipeLookups.FREEZING.fromRecipeType(RagiumRecipeTypes.FREEZING, identity()) RagiumRecipeLookups.MELTING.fromRecipeType(RagiumRecipeTypes.MELTING, identity()) RagiumRecipeLookups.PYROLYZING.fromRecipeType(RagiumRecipeTypes.PYROLYZING, identity()) RagiumRecipeLookups.REFINING.fromRecipeType(RagiumRecipeTypes.REFINING, identity()) diff --git a/src/main/kotlin/hiiragi283/ragium/common/block/entity/machine/HTFreezerBlockEntity.kt b/src/main/kotlin/hiiragi283/ragium/common/block/entity/machine/HTFreezerBlockEntity.kt index 302807466..8a7ce48f4 100644 --- a/src/main/kotlin/hiiragi283/ragium/common/block/entity/machine/HTFreezerBlockEntity.kt +++ b/src/main/kotlin/hiiragi283/ragium/common/block/entity/machine/HTFreezerBlockEntity.kt @@ -4,16 +4,17 @@ import hiiragi283.lib.HTConstants import hiiragi283.lib.gui.HTBackgroundType import hiiragi283.lib.gui.HTSlotHelper import hiiragi283.lib.gui.widget.HTWidgetHolder -import hiiragi283.lib.recipe.base.HTFluidToItemRecipe import hiiragi283.lib.recipe.handler.HTFluidInputTank +import hiiragi283.lib.recipe.handler.HTItemInputSlot import hiiragi283.lib.recipe.handler.HTOutputSlot import hiiragi283.lib.recipe.handler.HTOutputSlotHelper -import hiiragi283.lib.recipe.input.HTSingleFluidRecipeInput +import hiiragi283.lib.recipe.input.HTItemAndFluidRecipeInput import hiiragi283.lib.recipe.lookup.HTRecipeCache import hiiragi283.lib.transfer.item.HTBasicItemSlot import hiiragi283.lib.transfer.useTransaction import hiiragi283.ragium.api.RagiumConfig import hiiragi283.ragium.api.config.HTEnergyConfig +import hiiragi283.ragium.api.recipe.RTFreezingRecipe import hiiragi283.ragium.api.recipe.RagiumRecipeLookups import hiiragi283.ragium.common.block.entity.RagiumBlockEntityTypes import hiiragi283.ragium.common.gui.widget.HTFluidWidget @@ -34,7 +35,7 @@ import net.neoforged.neoforge.transfer.transaction.Transaction class HTFreezerBlockEntity(pos: BlockPos, state: BlockState) : HTProcessorBlockEntity.Energized(RagiumBlockEntityTypes.FREEZER.get(), pos, state) { - private val cache: HTRecipeCache = + private val cache: HTRecipeCache = HTRecipeCache(RagiumRecipeLookups.FREEZING) override fun writeValue(output: ValueOutput) { @@ -49,32 +50,37 @@ class HTFreezerBlockEntity(pos: BlockPos, state: BlockState) : override fun initializeVariables(listener: Runnable) { super.initializeVariables(listener) - recipeHandler = object : EnergizedHandler() { + recipeHandler = object : EnergizedHandler() { private val inputTank: HTFluidInputTank by lazy { HTFluidInputTank(this@HTFreezerBlockEntity.inputTank) } + private val catalystSlot: HTItemInputSlot by lazy { + HTItemInputSlot(this@HTFreezerBlockEntity.catalystSlot) + } private val outputSlot: HTOutputSlot by lazy { HTOutputSlotHelper.forItem(this@HTFreezerBlockEntity.outputSlot) } - override fun createInput(): HTSingleFluidRecipeInput = HTSingleFluidRecipeInput(inputTank.getStoredInput()) + override fun createInput(): HTItemAndFluidRecipeInput = + HTItemAndFluidRecipeInput(catalystSlot.getStoredInput(), inputTank.getStoredInput()) - override fun findRecipe(level: ServerLevel, input: HTSingleFluidRecipeInput): HTFluidToItemRecipe? = + override fun findRecipe(level: ServerLevel, input: HTItemAndFluidRecipeInput): RTFreezingRecipe? = cache.findFirstRecipe(input, level) override fun canComplete( - recipe: HTFluidToItemRecipe, - input: HTSingleFluidRecipeInput, + recipe: RTFreezingRecipe, + input: HTItemAndFluidRecipeInput, output: ItemStack ): Boolean = useTransaction { transaction: Transaction -> - val inputConsume: FluidInstance = recipe.getMatchingStack(input.fluid) + val (_, inputConsume: FluidInstance) = recipe.getMatchingStack(input.item, input.fluid) when { inputTank.use(inputConsume, transaction).failed -> false else -> outputSlot.take(output, transaction) == HTOutputSlot.TakeResult.FULL } } - override fun onComplete(recipe: HTFluidToItemRecipe, input: HTSingleFluidRecipeInput, output: ItemStack) { + override fun onComplete(recipe: RTFreezingRecipe, input: HTItemAndFluidRecipeInput, output: ItemStack) { useTransaction { transaction: Transaction -> - inputTank.use(recipe.getMatchingStack(input.fluid), transaction) + val (_, fluidInput: FluidInstance) = recipe.getMatchingStack(input.item, input.fluid) + inputTank.use(fluidInput, transaction) outputSlot.take(output, transaction) transaction.commit() } @@ -89,9 +95,11 @@ class HTFreezerBlockEntity(pos: BlockPos, state: BlockState) : inputTank = builder.addSlot(HTSlotInfo.INPUT, HTVariableFluidTank.input(getTankCapacity(), listener)) } + private lateinit var catalystSlot: HTBasicItemSlot private lateinit var outputSlot: HTBasicItemSlot override fun createItemSlots(builder: HTBasicItemSlotHolder.Builder, listener: Runnable) { + catalystSlot = builder.addSlot(HTSlotInfo.NONE, HTBasicItemSlot.input(listener)) outputSlot = builder.addSlot(HTSlotInfo.OUTPUT, HTBasicItemSlot.output(listener)) } @@ -109,10 +117,19 @@ class HTFreezerBlockEntity(pos: BlockPos, state: BlockState) : false ) widgetHolder.track(inputTank) + // catalyst + widgetHolder += HTItemWidget.Container( + catalystSlot, + 0, + HTSlotHelper.getSlotPosX(2.5), + HTSlotHelper.getSlotPosY(0.5), + HTBackgroundType.NONE + ) + widgetHolder.track(catalystSlot) // output widgetHolder += HTItemWidget.Container( outputSlot, - 0, + 1, HTSlotHelper.getSlotPosX(6), HTSlotHelper.getSlotPosY(1), HTBackgroundType.OUTPUT From 5dd29f4993e13f813bcacd9705408a9ec26d4b4a Mon Sep 17 00:00:00 2001 From: Hiiragi Russell Tsubasa <97942736+Hiiragi283@users.noreply.github.com> Date: Mon, 5 Oct 2026 00:28:04 +0900 Subject: [PATCH 4/9] =?UTF-8?q?feat:=20=E6=96=B0=E3=81=97=E3=81=84?= =?UTF-8?q?=E3=82=A2=E3=82=A4=E3=83=86=E3=83=A0=E3=80=8CXX=20Mold=20/=20XX?= =?UTF-8?q?=E3=81=AE=E9=8B=B3=E5=9E=8B=E3=80=8D=E3=82=92=E8=BF=BD=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../data/lang/RagiumEnglishLangProvider.kt | 4 ++ .../data/lang/RagiumJapaneseLangProvider.kt | 4 ++ .../data/recipe/RagiumCommonRecipeProvider.kt | 45 ++++++++++++------ .../data/recipe/RagiumHeatRecipeProvider.kt | 13 +++++ .../recipe/RagiumVanillaRecipeProvider.kt | 15 ++++++ .../ragium/data/tag/RagiumItemTagsProvider.kt | 1 + .../assets/ragium/items/ball_mold.json | 6 +++ .../assets/ragium/items/blank_mold.json | 6 +++ .../assets/ragium/items/block_mold.json | 6 +++ .../assets/ragium/items/plate_mold.json | 6 +++ .../resources/assets/ragium/lang/en_us.json | 4 ++ .../resources/assets/ragium/lang/ja_jp.json | 4 ++ .../assets/ragium/models/item/ball_mold.json | 6 +++ .../assets/ragium/models/item/blank_mold.json | 6 +++ .../assets/ragium/models/item/block_mold.json | 6 +++ .../assets/ragium/models/item/plate_mold.json | 6 +++ .../freezing/black_dye_from_liquid_dye.json | 1 + .../freezing/blue_dye_from_liquid_dye.json | 1 + .../freezing/brown_dye_from_liquid_dye.json | 1 + .../freezing/cyan_dye_from_liquid_dye.json | 1 + .../data/ragium/recipe/freezing/glass.json | 1 + .../ragium/recipe/freezing/glass_pane.json | 13 +++++ .../freezing/gray_dye_from_liquid_dye.json | 1 + .../freezing/green_dye_from_liquid_dye.json | 1 + .../ragium/recipe/freezing/honey_block.json | 1 + .../light_blue_dye_from_liquid_dye.json | 1 + .../light_gray_dye_from_liquid_dye.json | 1 + .../freezing/lime_dye_from_liquid_dye.json | 1 + .../freezing/magenta_dye_from_liquid_dye.json | 1 + .../data/ragium/recipe/freezing/obsidian.json | 1 + .../freezing/orange_dye_from_liquid_dye.json | 1 + .../freezing/pink_dye_from_liquid_dye.json | 1 + .../ragium/recipe/freezing/plastic_plate.json | 1 + .../freezing/purple_dye_from_liquid_dye.json | 1 + .../freezing/red_dye_from_liquid_dye.json | 1 + .../ragium/recipe/freezing/snow_block.json | 1 + .../data/ragium/recipe/freezing/snowball.json | 13 +++++ .../ragium/recipe/freezing/sticky_ball.json | 1 + .../recipe/freezing/synthetic_feather.json | 13 +++++ .../recipe/freezing/synthetic_fiber.json | 13 +++++ .../recipe/freezing/synthetic_leather.json | 13 +++++ .../freezing/white_dye_from_liquid_dye.json | 1 + .../freezing/yellow_dye_from_liquid_dye.json | 1 + .../data/ragium/recipe/shaped/blank_mold.json | 14 ++++++ .../ragium/recipe/stonecutting/ball_mold.json | 7 +++ .../recipe/stonecutting/blank_mold.json | 7 +++ .../recipe/stonecutting/block_mold.json | 7 +++ .../recipe/stonecutting/plate_mold.json | 7 +++ .../stonecutting/synthetic_feather.json | 7 --- .../recipe/stonecutting/synthetic_fiber.json | 7 --- .../stonecutting/synthetic_leather.json | 7 --- .../data/ragium/tags/item/molds.json | 8 ++++ .../resources/reports/ragium/registries.json | 4 ++ .../hiiragi283/ragium/api/tag/RagiumTags.kt | 6 +++ .../ragium/common/item/RagiumItems.kt | 14 ++++++ .../assets/ragium/textures/item/ball_mold.png | Bin 0 -> 258 bytes .../ragium/textures/item/blank_mold.png | Bin 0 -> 141 bytes .../ragium/textures/item/block_mold.png | Bin 0 -> 260 bytes .../ragium/textures/item/plate_mold.png | Bin 0 -> 246 bytes 59 files changed, 284 insertions(+), 36 deletions(-) create mode 100644 src/generated/resources/assets/ragium/items/ball_mold.json create mode 100644 src/generated/resources/assets/ragium/items/blank_mold.json create mode 100644 src/generated/resources/assets/ragium/items/block_mold.json create mode 100644 src/generated/resources/assets/ragium/items/plate_mold.json create mode 100644 src/generated/resources/assets/ragium/models/item/ball_mold.json create mode 100644 src/generated/resources/assets/ragium/models/item/blank_mold.json create mode 100644 src/generated/resources/assets/ragium/models/item/block_mold.json create mode 100644 src/generated/resources/assets/ragium/models/item/plate_mold.json create mode 100644 src/generated/resources/data/ragium/recipe/freezing/glass_pane.json create mode 100644 src/generated/resources/data/ragium/recipe/freezing/snowball.json create mode 100644 src/generated/resources/data/ragium/recipe/freezing/synthetic_feather.json create mode 100644 src/generated/resources/data/ragium/recipe/freezing/synthetic_fiber.json create mode 100644 src/generated/resources/data/ragium/recipe/freezing/synthetic_leather.json create mode 100644 src/generated/resources/data/ragium/recipe/shaped/blank_mold.json create mode 100644 src/generated/resources/data/ragium/recipe/stonecutting/ball_mold.json create mode 100644 src/generated/resources/data/ragium/recipe/stonecutting/blank_mold.json create mode 100644 src/generated/resources/data/ragium/recipe/stonecutting/block_mold.json create mode 100644 src/generated/resources/data/ragium/recipe/stonecutting/plate_mold.json delete mode 100644 src/generated/resources/data/ragium/recipe/stonecutting/synthetic_feather.json delete mode 100644 src/generated/resources/data/ragium/recipe/stonecutting/synthetic_fiber.json delete mode 100644 src/generated/resources/data/ragium/recipe/stonecutting/synthetic_leather.json create mode 100644 src/generated/resources/data/ragium/tags/item/molds.json create mode 100644 src/main/resources/assets/ragium/textures/item/ball_mold.png create mode 100644 src/main/resources/assets/ragium/textures/item/blank_mold.png create mode 100644 src/main/resources/assets/ragium/textures/item/block_mold.png create mode 100644 src/main/resources/assets/ragium/textures/item/plate_mold.png diff --git a/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumEnglishLangProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumEnglishLangProvider.kt index 32fb57f3a..05df3d815 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumEnglishLangProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumEnglishLangProvider.kt @@ -145,6 +145,10 @@ class RagiumEnglishLangProvider(output: PackOutput) : add(RagiumItems.WITHER_DOLL, "Wither Doll") add(RagiumItems.WITHER_STAR, "Wither Star") + add(RagiumItems.BLANK_MOLD, "Blank Mold") + add(RagiumItems.BALL_MOLD, "Ball Mold") + add(RagiumItems.BLOCK_MOLD, "Block Mold") + add(RagiumItems.PLATE_MOLD, "Plate Mold") add(RagiumItems.MEMORY_DISC, "Memory Disc") // Mob Effect diff --git a/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumJapaneseLangProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumJapaneseLangProvider.kt index 7e084e874..e8123567b 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumJapaneseLangProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumJapaneseLangProvider.kt @@ -141,6 +141,10 @@ class RagiumJapaneseLangProvider(output: PackOutput) : add(RagiumItems.WITHER_DOLL, "ウィザー人形") add(RagiumItems.WITHER_STAR, "ウィザースター") + add(RagiumItems.BLANK_MOLD, "空の鋳型") + add(RagiumItems.BALL_MOLD, "ボールの鋳型") + add(RagiumItems.BLOCK_MOLD, "ブロックの鋳型") + add(RagiumItems.PLATE_MOLD, "板の鋳型") add(RagiumItems.MEMORY_DISC, "メモリーディスク") // Mob Effect diff --git a/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumCommonRecipeProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumCommonRecipeProvider.kt index a649212be..3604521f1 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumCommonRecipeProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumCommonRecipeProvider.kt @@ -8,6 +8,7 @@ import hiiragi283.lib.data.recipe.HTRecipeProvider import hiiragi283.lib.data.recipe.builder.VanillaRecipeBuilders import hiiragi283.lib.data.recipe.builder.ingredient import hiiragi283.lib.data.recipe.builder.result +import hiiragi283.lib.recipe.ingredient.HTFluidIngredient import hiiragi283.lib.recipe.ingredient.HTMaterialTagsIngredient import hiiragi283.lib.registry.HTFluidContent import hiiragi283.lib.registry.HTSimpleDeferredItem @@ -33,6 +34,7 @@ import net.minecraft.world.item.Items import net.minecraft.world.item.crafting.Ingredient import net.neoforged.neoforge.common.Tags import net.neoforged.neoforge.common.crafting.DifferenceIngredient +import net.neoforged.neoforge.fluids.crafting.FluidIngredient import java.util.concurrent.CompletableFuture class RagiumCommonRecipeProvider(packOutput: PackOutput, future: CompletableFuture) : @@ -399,25 +401,28 @@ class RagiumCommonRecipeProvider(packOutput: PackOutput, future: CompletableFutu amount = 90 } }.save(exporter) + val moltenPlastic = HTFluidIngredient(FluidIngredient.of(holderSet(RagiumFluids.MOLTEN_PLASTIC)), 90) RagiumRecipeBuilders.freezing { - ingredient { - +holderSet(RagiumFluids.MOLTEN_PLASTIC) - amount = 90 - } + ingredient = moltenPlastic + catalyst { items { +RagiumItems.PLATE_MOLD } } result { +RagiumItems.PLASTIC_PLATE } }.save(exporter) - // Plastic -> Synthetic XX - listOf( - RagiumItems.SYNTHETIC_FEATHER, - RagiumItems.SYNTHETIC_FIBER, - RagiumItems.SYNTHETIC_LEATHER - ).forEach { - VanillaRecipeBuilders.stonecutting { - ingredient { +holderSet(HTCommonTags.Items.PLASTICS) } - result { +it } - }.save(exporter) - } + RagiumRecipeBuilders.freezing { + ingredient = moltenPlastic + catalyst { +holderSet(Tags.Items.FEATHERS) } + result { +RagiumItems.SYNTHETIC_FEATHER } + }.save(exporter) + RagiumRecipeBuilders.freezing { + ingredient = moltenPlastic + catalyst { +holderSet(Tags.Items.LEATHERS) } + result { +RagiumItems.SYNTHETIC_LEATHER } + }.save(exporter) + RagiumRecipeBuilders.freezing { + ingredient = moltenPlastic + catalyst { +holderSet(Tags.Items.STRINGS) } + result { +RagiumItems.SYNTHETIC_FIBER } + }.save(exporter) // Alcohol -> Aldehyde RagiumRecipeBuilders.refining { @@ -485,6 +490,7 @@ class RagiumCommonRecipeProvider(packOutput: PackOutput, future: CompletableFutu +holderSet(dyeContent) amount /= 4 } + catalyst { items { +RagiumItems.BALL_MOLD } } result { +VanillaColoredCollections.DYE[color] } recipeId suffix "_from_liquid_dye" }.save(exporter) @@ -733,8 +739,17 @@ class RagiumCommonRecipeProvider(packOutput: PackOutput, future: CompletableFutu // Molten Glass -> Glass RagiumRecipeBuilders.freezing { ingredient { +holderSet(RagiumFluids.MOLTEN_GLASS) } + catalyst { items { +RagiumItems.BLOCK_MOLD } } result { +Items.GLASS } }.save(exporter) + RagiumRecipeBuilders.freezing { + ingredient { + +holderSet(RagiumFluids.MOLTEN_GLASS) + amount = 375 + } + catalyst { items { +RagiumItems.PLATE_MOLD } } + result { +Items.GLASS_PANE } + }.save(exporter) // SiO2 + Sand -> Quartz Glass RagiumRecipeBuilders.alloying { ingredient { +dustOrGem(RagiumMaterial.Gem.QUARTZ) } diff --git a/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumHeatRecipeProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumHeatRecipeProvider.kt index 4fc9b8d55..4d4c04f5e 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumHeatRecipeProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumHeatRecipeProvider.kt @@ -112,19 +112,31 @@ class RagiumHeatRecipeProvider(packOutput: PackOutput, future: CompletableFuture } private fun freezing() { + // Water -> Snowball + RagiumRecipeBuilders.freezing { + ingredient { + +waterSet() + amount /= 4 + } + catalyst { items { +RagiumItems.BALL_MOLD } } + result { +Items.SNOWBALL } + }.save(exporter) // Water -> Snow Block RagiumRecipeBuilders.freezing { ingredient { +waterSet() } + catalyst { items { +RagiumItems.BLOCK_MOLD } } result { +Items.SNOW_BLOCK } }.save(exporter) // Lava -> Obsidian RagiumRecipeBuilders.freezing { ingredient { +lavaSet() } + catalyst { items { +RagiumItems.BLOCK_MOLD } } result { +Items.OBSIDIAN } }.save(exporter) // Honey RagiumRecipeBuilders.freezing { ingredient { +holderSet(RagiumFluids.HONEY) } + catalyst { items { +RagiumItems.BLOCK_MOLD } } result { +Items.HONEY_BLOCK } }.save(exporter) @@ -134,6 +146,7 @@ class RagiumHeatRecipeProvider(packOutput: PackOutput, future: CompletableFuture +holderSet(RagiumTags.Fluids.RESINS) amount /= 4 } + catalyst { items { +RagiumItems.BALL_MOLD } } result { +RagiumItems.STICKY_BALL } }.save(exporter) } diff --git a/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumVanillaRecipeProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumVanillaRecipeProvider.kt index dbf23f4ee..a287df98d 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumVanillaRecipeProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumVanillaRecipeProvider.kt @@ -19,6 +19,7 @@ import hiiragi283.ragium.api.material.HTItemPart import hiiragi283.ragium.api.material.HTStorageBlockPart import hiiragi283.ragium.api.material.RagiumMaterial import hiiragi283.ragium.api.tag.HTMachineType +import hiiragi283.ragium.api.tag.RagiumTags import hiiragi283.ragium.common.block.RagiumBlocks import hiiragi283.ragium.common.fluid.RagiumFluids import hiiragi283.ragium.common.item.RagiumItems @@ -112,6 +113,20 @@ class RagiumVanillaRecipeProvider(packOutput: PackOutput, future: CompletableFut result { +Items.NETHER_BRICKS } }.save(exporter) + // XX Mold + VanillaRecipeBuilders.shaped { + +"AA" + +"AA" + define('A') { +holderSet(CommonTagPrefixes.INGOT, RagiumMaterial.Alloy.SOOTY_IRON) } + result { +RagiumItems.BLANK_MOLD } + }.save(exporter) + for (mold: HTSimpleDeferredItem in RagiumItems.MOLDS) { + VanillaRecipeBuilders.stonecutting { + ingredient { +holderSet(RagiumTags.Items.MOLDS) } + result { +mold } + }.save(exporter) + } + // XX Tools registerTools(RagiumItems.SOOTY_IRON_TOOLS, RagiumToolMaterials.SOOTY_IRON) diff --git a/src/data/kotlin/hiiragi283/ragium/data/tag/RagiumItemTagsProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/tag/RagiumItemTagsProvider.kt index b5a4d63f2..913abcb50 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/tag/RagiumItemTagsProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/tag/RagiumItemTagsProvider.kt @@ -75,6 +75,7 @@ class RagiumItemTagsProvider(output: PackOutput, lookupProvider: CompletableFutu builder(RagiumTags.Items.COKES) .addTag(HTCommonTags.Items.COAL_COKE) .addTag(HTCommonTags.Items.PITCH_COKE) + RagiumItems.MOLDS.forEach(builder(RagiumTags.Items.MOLDS)::add) builder(RagiumTags.Items.SMELTING_FLUXES) .addTag(CommonTagPrefixes.DUST.itemTagKey(RagiumMaterial.Mineral.CINNABAR)) .addTag(CommonTagPrefixes.DUST.itemTagKey(RagiumMaterial.Gem.FLUORITE)) diff --git a/src/generated/resources/assets/ragium/items/ball_mold.json b/src/generated/resources/assets/ragium/items/ball_mold.json new file mode 100644 index 000000000..c6486b257 --- /dev/null +++ b/src/generated/resources/assets/ragium/items/ball_mold.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "ragium:item/ball_mold" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/items/blank_mold.json b/src/generated/resources/assets/ragium/items/blank_mold.json new file mode 100644 index 000000000..1209e4d97 --- /dev/null +++ b/src/generated/resources/assets/ragium/items/blank_mold.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "ragium:item/blank_mold" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/items/block_mold.json b/src/generated/resources/assets/ragium/items/block_mold.json new file mode 100644 index 000000000..5da7030c2 --- /dev/null +++ b/src/generated/resources/assets/ragium/items/block_mold.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "ragium:item/block_mold" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/items/plate_mold.json b/src/generated/resources/assets/ragium/items/plate_mold.json new file mode 100644 index 000000000..ddbbb8ccc --- /dev/null +++ b/src/generated/resources/assets/ragium/items/plate_mold.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "ragium:item/plate_mold" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/lang/en_us.json b/src/generated/resources/assets/ragium/lang/en_us.json index 14309b03b..8433c8c24 100644 --- a/src/generated/resources/assets/ragium/lang/en_us.json +++ b/src/generated/resources/assets/ragium/lang/en_us.json @@ -201,6 +201,7 @@ "item.ragium.anti_rust_oil_bucket": "Anti-rust Oil Bucket", "item.ragium.arcane_machine_parts": "Machine Parts (Arcane)", "item.ragium.aromatic_compound_bucket": "Aromatic Compound Bucket", + "item.ragium.ball_mold": "Ball Mold", "item.ragium.bamboo_charcoal": "Bamboo Charcoal", "item.ragium.bauxite_dust": "Bauxite Dust", "item.ragium.beeswax": "Beeswax", @@ -208,7 +209,9 @@ "item.ragium.black_dye_bucket": "Black Dye Bucket", "item.ragium.black_steel_ingot": "Black Steel Ingot", "item.ragium.black_steel_nugget": "Black Steel Nugget", + "item.ragium.blank_mold": "Blank Mold", "item.ragium.bleach_bucket": "Bleach Bucket", + "item.ragium.block_mold": "Block Mold", "item.ragium.blue_dye_bucket": "Blue Dye Bucket", "item.ragium.borax_dust": "Borax Dust", "item.ragium.brown_dye_bucket": "Brown Dye Bucket", @@ -287,6 +290,7 @@ "item.ragium.pink_dye_bucket": "Pink Dye Bucket", "item.ragium.pitch_coke": "Pitch Coke", "item.ragium.plastic_plate": "Plastic Plate", + "item.ragium.plate_mold": "Plate Mold", "item.ragium.potion_bucket": "%1$s Bucket", "item.ragium.prismarine_dust": "Prismarine Dust", "item.ragium.purple_dye_bucket": "Purple Dye Bucket", diff --git a/src/generated/resources/assets/ragium/lang/ja_jp.json b/src/generated/resources/assets/ragium/lang/ja_jp.json index b05ec5774..f54ead21d 100644 --- a/src/generated/resources/assets/ragium/lang/ja_jp.json +++ b/src/generated/resources/assets/ragium/lang/ja_jp.json @@ -201,6 +201,7 @@ "item.ragium.anti_rust_oil_bucket": "防錆油入りバケツ", "item.ragium.arcane_machine_parts": "機械部品 (神秘)", "item.ragium.aromatic_compound_bucket": "芳香族化合物入りバケツ", + "item.ragium.ball_mold": "ボールの鋳型", "item.ragium.bamboo_charcoal": "竹炭", "item.ragium.bauxite_dust": "ボーキサイトの粉", "item.ragium.beeswax": "密猟", @@ -208,7 +209,9 @@ "item.ragium.black_dye_bucket": "黒色の染料入りバケツ", "item.ragium.black_steel_ingot": "黒鋼インゴット", "item.ragium.black_steel_nugget": "黒鋼ナゲット", + "item.ragium.blank_mold": "空の鋳型", "item.ragium.bleach_bucket": "漂白剤入りバケツ", + "item.ragium.block_mold": "ブロックの鋳型", "item.ragium.blue_dye_bucket": "青色の染料入りバケツ", "item.ragium.borax_dust": "ホウ砂の粉", "item.ragium.brown_dye_bucket": "茶色の染料入りバケツ", @@ -287,6 +290,7 @@ "item.ragium.pink_dye_bucket": "桃色の染料入りバケツ", "item.ragium.pitch_coke": "ピッチコークス", "item.ragium.plastic_plate": "プラスチック板", + "item.ragium.plate_mold": "板の鋳型", "item.ragium.potion_bucket": "%1$s入りバケツ", "item.ragium.prismarine_dust": "プリズマリンの粉", "item.ragium.purple_dye_bucket": "紫色の染料入りバケツ", diff --git a/src/generated/resources/assets/ragium/models/item/ball_mold.json b/src/generated/resources/assets/ragium/models/item/ball_mold.json new file mode 100644 index 000000000..bacfa2ba0 --- /dev/null +++ b/src/generated/resources/assets/ragium/models/item/ball_mold.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "ragium:item/ball_mold" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/models/item/blank_mold.json b/src/generated/resources/assets/ragium/models/item/blank_mold.json new file mode 100644 index 000000000..2c6108bb9 --- /dev/null +++ b/src/generated/resources/assets/ragium/models/item/blank_mold.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "ragium:item/blank_mold" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/models/item/block_mold.json b/src/generated/resources/assets/ragium/models/item/block_mold.json new file mode 100644 index 000000000..226eeeaf3 --- /dev/null +++ b/src/generated/resources/assets/ragium/models/item/block_mold.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "ragium:item/block_mold" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/models/item/plate_mold.json b/src/generated/resources/assets/ragium/models/item/plate_mold.json new file mode 100644 index 000000000..f5cbe489a --- /dev/null +++ b/src/generated/resources/assets/ragium/models/item/plate_mold.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "ragium:item/plate_mold" + } +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/freezing/black_dye_from_liquid_dye.json b/src/generated/resources/data/ragium/recipe/freezing/black_dye_from_liquid_dye.json index 2c65e5212..3995a2cc4 100644 --- a/src/generated/resources/data/ragium/recipe/freezing/black_dye_from_liquid_dye.json +++ b/src/generated/resources/data/ragium/recipe/freezing/black_dye_from_liquid_dye.json @@ -1,5 +1,6 @@ { "type": "ragium:freezing", + "catalyst": "ragium:ball_mold", "ingredient": { "amount": 250, "fluids": "#c:dyes/black" diff --git a/src/generated/resources/data/ragium/recipe/freezing/blue_dye_from_liquid_dye.json b/src/generated/resources/data/ragium/recipe/freezing/blue_dye_from_liquid_dye.json index daaef74cd..6bb57dd33 100644 --- a/src/generated/resources/data/ragium/recipe/freezing/blue_dye_from_liquid_dye.json +++ b/src/generated/resources/data/ragium/recipe/freezing/blue_dye_from_liquid_dye.json @@ -1,5 +1,6 @@ { "type": "ragium:freezing", + "catalyst": "ragium:ball_mold", "ingredient": { "amount": 250, "fluids": "#c:dyes/blue" diff --git a/src/generated/resources/data/ragium/recipe/freezing/brown_dye_from_liquid_dye.json b/src/generated/resources/data/ragium/recipe/freezing/brown_dye_from_liquid_dye.json index 35969ceb3..ed2e084f5 100644 --- a/src/generated/resources/data/ragium/recipe/freezing/brown_dye_from_liquid_dye.json +++ b/src/generated/resources/data/ragium/recipe/freezing/brown_dye_from_liquid_dye.json @@ -1,5 +1,6 @@ { "type": "ragium:freezing", + "catalyst": "ragium:ball_mold", "ingredient": { "amount": 250, "fluids": "#c:dyes/brown" diff --git a/src/generated/resources/data/ragium/recipe/freezing/cyan_dye_from_liquid_dye.json b/src/generated/resources/data/ragium/recipe/freezing/cyan_dye_from_liquid_dye.json index 6e7c7cae9..84db60d03 100644 --- a/src/generated/resources/data/ragium/recipe/freezing/cyan_dye_from_liquid_dye.json +++ b/src/generated/resources/data/ragium/recipe/freezing/cyan_dye_from_liquid_dye.json @@ -1,5 +1,6 @@ { "type": "ragium:freezing", + "catalyst": "ragium:ball_mold", "ingredient": { "amount": 250, "fluids": "#c:dyes/cyan" diff --git a/src/generated/resources/data/ragium/recipe/freezing/glass.json b/src/generated/resources/data/ragium/recipe/freezing/glass.json index 9b07baf04..9c4090e99 100644 --- a/src/generated/resources/data/ragium/recipe/freezing/glass.json +++ b/src/generated/resources/data/ragium/recipe/freezing/glass.json @@ -1,5 +1,6 @@ { "type": "ragium:freezing", + "catalyst": "ragium:block_mold", "ingredient": { "amount": 1000, "fluids": "#c:molten_glass" diff --git a/src/generated/resources/data/ragium/recipe/freezing/glass_pane.json b/src/generated/resources/data/ragium/recipe/freezing/glass_pane.json new file mode 100644 index 000000000..002ad208e --- /dev/null +++ b/src/generated/resources/data/ragium/recipe/freezing/glass_pane.json @@ -0,0 +1,13 @@ +{ + "type": "ragium:freezing", + "catalyst": "ragium:plate_mold", + "ingredient": { + "amount": 375, + "fluids": "#c:molten_glass" + }, + "result": { + "count": 1, + "id": "minecraft:glass_pane" + }, + "time": 200 +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/freezing/gray_dye_from_liquid_dye.json b/src/generated/resources/data/ragium/recipe/freezing/gray_dye_from_liquid_dye.json index e165673cb..e62504e5b 100644 --- a/src/generated/resources/data/ragium/recipe/freezing/gray_dye_from_liquid_dye.json +++ b/src/generated/resources/data/ragium/recipe/freezing/gray_dye_from_liquid_dye.json @@ -1,5 +1,6 @@ { "type": "ragium:freezing", + "catalyst": "ragium:ball_mold", "ingredient": { "amount": 250, "fluids": "#c:dyes/gray" diff --git a/src/generated/resources/data/ragium/recipe/freezing/green_dye_from_liquid_dye.json b/src/generated/resources/data/ragium/recipe/freezing/green_dye_from_liquid_dye.json index 818112cb0..eb263b753 100644 --- a/src/generated/resources/data/ragium/recipe/freezing/green_dye_from_liquid_dye.json +++ b/src/generated/resources/data/ragium/recipe/freezing/green_dye_from_liquid_dye.json @@ -1,5 +1,6 @@ { "type": "ragium:freezing", + "catalyst": "ragium:ball_mold", "ingredient": { "amount": 250, "fluids": "#c:dyes/green" diff --git a/src/generated/resources/data/ragium/recipe/freezing/honey_block.json b/src/generated/resources/data/ragium/recipe/freezing/honey_block.json index e1ab8a9f9..473ad78fa 100644 --- a/src/generated/resources/data/ragium/recipe/freezing/honey_block.json +++ b/src/generated/resources/data/ragium/recipe/freezing/honey_block.json @@ -1,5 +1,6 @@ { "type": "ragium:freezing", + "catalyst": "ragium:block_mold", "ingredient": { "amount": 1000, "fluids": "#c:honey" diff --git a/src/generated/resources/data/ragium/recipe/freezing/light_blue_dye_from_liquid_dye.json b/src/generated/resources/data/ragium/recipe/freezing/light_blue_dye_from_liquid_dye.json index 3ab079fba..f289951dd 100644 --- a/src/generated/resources/data/ragium/recipe/freezing/light_blue_dye_from_liquid_dye.json +++ b/src/generated/resources/data/ragium/recipe/freezing/light_blue_dye_from_liquid_dye.json @@ -1,5 +1,6 @@ { "type": "ragium:freezing", + "catalyst": "ragium:ball_mold", "ingredient": { "amount": 250, "fluids": "#c:dyes/light_blue" diff --git a/src/generated/resources/data/ragium/recipe/freezing/light_gray_dye_from_liquid_dye.json b/src/generated/resources/data/ragium/recipe/freezing/light_gray_dye_from_liquid_dye.json index 98af8f55a..921145d46 100644 --- a/src/generated/resources/data/ragium/recipe/freezing/light_gray_dye_from_liquid_dye.json +++ b/src/generated/resources/data/ragium/recipe/freezing/light_gray_dye_from_liquid_dye.json @@ -1,5 +1,6 @@ { "type": "ragium:freezing", + "catalyst": "ragium:ball_mold", "ingredient": { "amount": 250, "fluids": "#c:dyes/light_gray" diff --git a/src/generated/resources/data/ragium/recipe/freezing/lime_dye_from_liquid_dye.json b/src/generated/resources/data/ragium/recipe/freezing/lime_dye_from_liquid_dye.json index b0b8af807..f20135354 100644 --- a/src/generated/resources/data/ragium/recipe/freezing/lime_dye_from_liquid_dye.json +++ b/src/generated/resources/data/ragium/recipe/freezing/lime_dye_from_liquid_dye.json @@ -1,5 +1,6 @@ { "type": "ragium:freezing", + "catalyst": "ragium:ball_mold", "ingredient": { "amount": 250, "fluids": "#c:dyes/lime" diff --git a/src/generated/resources/data/ragium/recipe/freezing/magenta_dye_from_liquid_dye.json b/src/generated/resources/data/ragium/recipe/freezing/magenta_dye_from_liquid_dye.json index 3dfb3a9ff..ee3fe28db 100644 --- a/src/generated/resources/data/ragium/recipe/freezing/magenta_dye_from_liquid_dye.json +++ b/src/generated/resources/data/ragium/recipe/freezing/magenta_dye_from_liquid_dye.json @@ -1,5 +1,6 @@ { "type": "ragium:freezing", + "catalyst": "ragium:ball_mold", "ingredient": { "amount": 250, "fluids": "#c:dyes/magenta" diff --git a/src/generated/resources/data/ragium/recipe/freezing/obsidian.json b/src/generated/resources/data/ragium/recipe/freezing/obsidian.json index 59f9099a2..345b1afcc 100644 --- a/src/generated/resources/data/ragium/recipe/freezing/obsidian.json +++ b/src/generated/resources/data/ragium/recipe/freezing/obsidian.json @@ -1,5 +1,6 @@ { "type": "ragium:freezing", + "catalyst": "ragium:block_mold", "ingredient": { "amount": 1000, "fluids": "#c:lava" diff --git a/src/generated/resources/data/ragium/recipe/freezing/orange_dye_from_liquid_dye.json b/src/generated/resources/data/ragium/recipe/freezing/orange_dye_from_liquid_dye.json index 178d17b54..65a877f9d 100644 --- a/src/generated/resources/data/ragium/recipe/freezing/orange_dye_from_liquid_dye.json +++ b/src/generated/resources/data/ragium/recipe/freezing/orange_dye_from_liquid_dye.json @@ -1,5 +1,6 @@ { "type": "ragium:freezing", + "catalyst": "ragium:ball_mold", "ingredient": { "amount": 250, "fluids": "#c:dyes/orange" diff --git a/src/generated/resources/data/ragium/recipe/freezing/pink_dye_from_liquid_dye.json b/src/generated/resources/data/ragium/recipe/freezing/pink_dye_from_liquid_dye.json index 4777263cb..09bf57d5a 100644 --- a/src/generated/resources/data/ragium/recipe/freezing/pink_dye_from_liquid_dye.json +++ b/src/generated/resources/data/ragium/recipe/freezing/pink_dye_from_liquid_dye.json @@ -1,5 +1,6 @@ { "type": "ragium:freezing", + "catalyst": "ragium:ball_mold", "ingredient": { "amount": 250, "fluids": "#c:dyes/pink" diff --git a/src/generated/resources/data/ragium/recipe/freezing/plastic_plate.json b/src/generated/resources/data/ragium/recipe/freezing/plastic_plate.json index 4b3ec7ed4..8f60ecb5a 100644 --- a/src/generated/resources/data/ragium/recipe/freezing/plastic_plate.json +++ b/src/generated/resources/data/ragium/recipe/freezing/plastic_plate.json @@ -1,5 +1,6 @@ { "type": "ragium:freezing", + "catalyst": "ragium:plate_mold", "ingredient": { "amount": 90, "fluids": "#c:molten_plastic" diff --git a/src/generated/resources/data/ragium/recipe/freezing/purple_dye_from_liquid_dye.json b/src/generated/resources/data/ragium/recipe/freezing/purple_dye_from_liquid_dye.json index fa5418935..409b44502 100644 --- a/src/generated/resources/data/ragium/recipe/freezing/purple_dye_from_liquid_dye.json +++ b/src/generated/resources/data/ragium/recipe/freezing/purple_dye_from_liquid_dye.json @@ -1,5 +1,6 @@ { "type": "ragium:freezing", + "catalyst": "ragium:ball_mold", "ingredient": { "amount": 250, "fluids": "#c:dyes/purple" diff --git a/src/generated/resources/data/ragium/recipe/freezing/red_dye_from_liquid_dye.json b/src/generated/resources/data/ragium/recipe/freezing/red_dye_from_liquid_dye.json index 58d817662..a17f34c15 100644 --- a/src/generated/resources/data/ragium/recipe/freezing/red_dye_from_liquid_dye.json +++ b/src/generated/resources/data/ragium/recipe/freezing/red_dye_from_liquid_dye.json @@ -1,5 +1,6 @@ { "type": "ragium:freezing", + "catalyst": "ragium:ball_mold", "ingredient": { "amount": 250, "fluids": "#c:dyes/red" diff --git a/src/generated/resources/data/ragium/recipe/freezing/snow_block.json b/src/generated/resources/data/ragium/recipe/freezing/snow_block.json index f1604191d..d66c10d33 100644 --- a/src/generated/resources/data/ragium/recipe/freezing/snow_block.json +++ b/src/generated/resources/data/ragium/recipe/freezing/snow_block.json @@ -1,5 +1,6 @@ { "type": "ragium:freezing", + "catalyst": "ragium:block_mold", "ingredient": { "amount": 1000, "fluids": "#c:water" diff --git a/src/generated/resources/data/ragium/recipe/freezing/snowball.json b/src/generated/resources/data/ragium/recipe/freezing/snowball.json new file mode 100644 index 000000000..092c11253 --- /dev/null +++ b/src/generated/resources/data/ragium/recipe/freezing/snowball.json @@ -0,0 +1,13 @@ +{ + "type": "ragium:freezing", + "catalyst": "ragium:ball_mold", + "ingredient": { + "amount": 250, + "fluids": "#c:water" + }, + "result": { + "count": 1, + "id": "minecraft:snowball" + }, + "time": 200 +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/freezing/sticky_ball.json b/src/generated/resources/data/ragium/recipe/freezing/sticky_ball.json index 97893ca52..fa837d4ee 100644 --- a/src/generated/resources/data/ragium/recipe/freezing/sticky_ball.json +++ b/src/generated/resources/data/ragium/recipe/freezing/sticky_ball.json @@ -1,5 +1,6 @@ { "type": "ragium:freezing", + "catalyst": "ragium:ball_mold", "ingredient": { "amount": 250, "fluids": "#ragium:resins" diff --git a/src/generated/resources/data/ragium/recipe/freezing/synthetic_feather.json b/src/generated/resources/data/ragium/recipe/freezing/synthetic_feather.json new file mode 100644 index 000000000..237e17d1f --- /dev/null +++ b/src/generated/resources/data/ragium/recipe/freezing/synthetic_feather.json @@ -0,0 +1,13 @@ +{ + "type": "ragium:freezing", + "catalyst": "#c:feathers", + "ingredient": { + "amount": 90, + "fluids": "#c:molten_plastic" + }, + "result": { + "count": 1, + "id": "ragium:synthetic_feather" + }, + "time": 200 +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/freezing/synthetic_fiber.json b/src/generated/resources/data/ragium/recipe/freezing/synthetic_fiber.json new file mode 100644 index 000000000..b522d48ab --- /dev/null +++ b/src/generated/resources/data/ragium/recipe/freezing/synthetic_fiber.json @@ -0,0 +1,13 @@ +{ + "type": "ragium:freezing", + "catalyst": "#c:strings", + "ingredient": { + "amount": 90, + "fluids": "#c:molten_plastic" + }, + "result": { + "count": 1, + "id": "ragium:synthetic_fiber" + }, + "time": 200 +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/freezing/synthetic_leather.json b/src/generated/resources/data/ragium/recipe/freezing/synthetic_leather.json new file mode 100644 index 000000000..4c05d43bb --- /dev/null +++ b/src/generated/resources/data/ragium/recipe/freezing/synthetic_leather.json @@ -0,0 +1,13 @@ +{ + "type": "ragium:freezing", + "catalyst": "#c:leathers", + "ingredient": { + "amount": 90, + "fluids": "#c:molten_plastic" + }, + "result": { + "count": 1, + "id": "ragium:synthetic_leather" + }, + "time": 200 +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/freezing/white_dye_from_liquid_dye.json b/src/generated/resources/data/ragium/recipe/freezing/white_dye_from_liquid_dye.json index a722967e5..9b08ae9cf 100644 --- a/src/generated/resources/data/ragium/recipe/freezing/white_dye_from_liquid_dye.json +++ b/src/generated/resources/data/ragium/recipe/freezing/white_dye_from_liquid_dye.json @@ -1,5 +1,6 @@ { "type": "ragium:freezing", + "catalyst": "ragium:ball_mold", "ingredient": { "amount": 250, "fluids": "#c:dyes/white" diff --git a/src/generated/resources/data/ragium/recipe/freezing/yellow_dye_from_liquid_dye.json b/src/generated/resources/data/ragium/recipe/freezing/yellow_dye_from_liquid_dye.json index ba8153097..3c0efa3e1 100644 --- a/src/generated/resources/data/ragium/recipe/freezing/yellow_dye_from_liquid_dye.json +++ b/src/generated/resources/data/ragium/recipe/freezing/yellow_dye_from_liquid_dye.json @@ -1,5 +1,6 @@ { "type": "ragium:freezing", + "catalyst": "ragium:ball_mold", "ingredient": { "amount": 250, "fluids": "#c:dyes/yellow" diff --git a/src/generated/resources/data/ragium/recipe/shaped/blank_mold.json b/src/generated/resources/data/ragium/recipe/shaped/blank_mold.json new file mode 100644 index 000000000..e5a42f672 --- /dev/null +++ b/src/generated/resources/data/ragium/recipe/shaped/blank_mold.json @@ -0,0 +1,14 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "misc", + "key": { + "A": "#c:ingots/sooty_iron" + }, + "pattern": [ + "AA", + "AA" + ], + "result": { + "id": "ragium:blank_mold" + } +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/stonecutting/ball_mold.json b/src/generated/resources/data/ragium/recipe/stonecutting/ball_mold.json new file mode 100644 index 000000000..4a6ae439b --- /dev/null +++ b/src/generated/resources/data/ragium/recipe/stonecutting/ball_mold.json @@ -0,0 +1,7 @@ +{ + "type": "minecraft:stonecutting", + "ingredient": "#ragium:molds", + "result": { + "id": "ragium:ball_mold" + } +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/stonecutting/blank_mold.json b/src/generated/resources/data/ragium/recipe/stonecutting/blank_mold.json new file mode 100644 index 000000000..59fcadcff --- /dev/null +++ b/src/generated/resources/data/ragium/recipe/stonecutting/blank_mold.json @@ -0,0 +1,7 @@ +{ + "type": "minecraft:stonecutting", + "ingredient": "#ragium:molds", + "result": { + "id": "ragium:blank_mold" + } +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/stonecutting/block_mold.json b/src/generated/resources/data/ragium/recipe/stonecutting/block_mold.json new file mode 100644 index 000000000..63287295b --- /dev/null +++ b/src/generated/resources/data/ragium/recipe/stonecutting/block_mold.json @@ -0,0 +1,7 @@ +{ + "type": "minecraft:stonecutting", + "ingredient": "#ragium:molds", + "result": { + "id": "ragium:block_mold" + } +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/stonecutting/plate_mold.json b/src/generated/resources/data/ragium/recipe/stonecutting/plate_mold.json new file mode 100644 index 000000000..888201e80 --- /dev/null +++ b/src/generated/resources/data/ragium/recipe/stonecutting/plate_mold.json @@ -0,0 +1,7 @@ +{ + "type": "minecraft:stonecutting", + "ingredient": "#ragium:molds", + "result": { + "id": "ragium:plate_mold" + } +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/stonecutting/synthetic_feather.json b/src/generated/resources/data/ragium/recipe/stonecutting/synthetic_feather.json deleted file mode 100644 index a03c8b09d..000000000 --- a/src/generated/resources/data/ragium/recipe/stonecutting/synthetic_feather.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "type": "minecraft:stonecutting", - "ingredient": "#c:plastics", - "result": { - "id": "ragium:synthetic_feather" - } -} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/stonecutting/synthetic_fiber.json b/src/generated/resources/data/ragium/recipe/stonecutting/synthetic_fiber.json deleted file mode 100644 index 2b754b7dd..000000000 --- a/src/generated/resources/data/ragium/recipe/stonecutting/synthetic_fiber.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "type": "minecraft:stonecutting", - "ingredient": "#c:plastics", - "result": { - "id": "ragium:synthetic_fiber" - } -} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/stonecutting/synthetic_leather.json b/src/generated/resources/data/ragium/recipe/stonecutting/synthetic_leather.json deleted file mode 100644 index 75e0bea94..000000000 --- a/src/generated/resources/data/ragium/recipe/stonecutting/synthetic_leather.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "type": "minecraft:stonecutting", - "ingredient": "#c:plastics", - "result": { - "id": "ragium:synthetic_leather" - } -} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/tags/item/molds.json b/src/generated/resources/data/ragium/tags/item/molds.json new file mode 100644 index 000000000..afd59a3a0 --- /dev/null +++ b/src/generated/resources/data/ragium/tags/item/molds.json @@ -0,0 +1,8 @@ +{ + "values": [ + "ragium:ball_mold", + "ragium:blank_mold", + "ragium:block_mold", + "ragium:plate_mold" + ] +} \ No newline at end of file diff --git a/src/generated/resources/reports/ragium/registries.json b/src/generated/resources/reports/ragium/registries.json index 37bbf053d..05c62a450 100644 --- a/src/generated/resources/reports/ragium/registries.json +++ b/src/generated/resources/reports/ragium/registries.json @@ -215,6 +215,7 @@ "arcane_machine_parts", "aromatic_compound_bucket", "assembler", + "ball_mold", "bamboo_charcoal", "bauxite_dust", "beeswax", @@ -224,7 +225,9 @@ "black_steel_block", "black_steel_ingot", "black_steel_nugget", + "blank_mold", "bleach_bucket", + "block_mold", "blue_dye_bucket", "borax_dust", "brewery", @@ -336,6 +339,7 @@ "pitch_coke_block", "planter", "plastic_plate", + "plate_mold", "potion_bucket", "potion_tank", "precision_assembler", diff --git a/src/lib/kotlin/hiiragi283/ragium/api/tag/RagiumTags.kt b/src/lib/kotlin/hiiragi283/ragium/api/tag/RagiumTags.kt index c3a284080..97e542fc4 100644 --- a/src/lib/kotlin/hiiragi283/ragium/api/tag/RagiumTags.kt +++ b/src/lib/kotlin/hiiragi283/ragium/api/tag/RagiumTags.kt @@ -76,6 +76,12 @@ data object RagiumTags { @JvmField val COKES: TagKey = create("cokes") + /** + * @since 26.1.8 + */ + @JvmField + val MOLDS: TagKey = create("molds") + /** * @since 26.1.7 */ diff --git a/src/main/kotlin/hiiragi283/ragium/common/item/RagiumItems.kt b/src/main/kotlin/hiiragi283/ragium/common/item/RagiumItems.kt index ba0377208..2678021ff 100644 --- a/src/main/kotlin/hiiragi283/ragium/common/item/RagiumItems.kt +++ b/src/main/kotlin/hiiragi283/ragium/common/item/RagiumItems.kt @@ -222,6 +222,20 @@ data object RagiumItems { // Mechanical // Heat + @JvmField + val BLANK_MOLD: HTSimpleDeferredItem = REGISTER.registerSimpleItem("blank_mold") { it.stacksTo(1) } + + @JvmField + val BALL_MOLD: HTSimpleDeferredItem = REGISTER.registerSimpleItem("ball_mold") { it.stacksTo(1) } + + @JvmField + val BLOCK_MOLD: HTSimpleDeferredItem = REGISTER.registerSimpleItem("block_mold") { it.stacksTo(1) } + + @JvmField + val PLATE_MOLD: HTSimpleDeferredItem = REGISTER.registerSimpleItem("plate_mold") { it.stacksTo(1) } + + @JvmField + val MOLDS: Set = setOf(BLANK_MOLD, BALL_MOLD, BLOCK_MOLD, PLATE_MOLD) // Chemical diff --git a/src/main/resources/assets/ragium/textures/item/ball_mold.png b/src/main/resources/assets/ragium/textures/item/ball_mold.png new file mode 100644 index 0000000000000000000000000000000000000000..88bc58e9403641ec94ed3d8ae5562dc26b4860c0 GIT binary patch literal 258 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`+dW+zLn`L1nY^E?*+Agf`J%~3 z7xpck+mdKI;Vst E06aHpV*mgE literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/ragium/textures/item/blank_mold.png b/src/main/resources/assets/ragium/textures/item/blank_mold.png new file mode 100644 index 0000000000000000000000000000000000000000..92e34a3e655810969adf28c8fe675a1c13c4b7df GIT binary patch literal 141 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|PM$7~Ar*7pOj^jxpulrLEzR(E z8_W6s>I|Ga6csdBtP@oxug;4#JnAFj!2a23WAw^X34MJZI@#rBuokVcS+V8(U490J l|Njjmc-erav4KouW;m@b#He~-$P*~S;OXk;vd$@?2>@)CDH#9& literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/ragium/textures/item/block_mold.png b/src/main/resources/assets/ragium/textures/item/block_mold.png new file mode 100644 index 0000000000000000000000000000000000000000..0da2f2847c5fc397a2cf212e75fb72ff4c1082de GIT binary patch literal 260 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`J3U<-Ln`LHne5Nqk!%Yhu}+`I4I zGr4FwKdU`!=8?UB-@yRi20?~r(i08*qU99><}?>EJ6L4ONSy4@QrmdT;nFIFlMze> zlXhr%-VV+4S@dVF%U8?4|AT;j`2YX^rn;LzPq2YJ!ORd}?R|}Lst^lMgu&C*&t;uc GLK6Vo;AvU_ literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/ragium/textures/item/plate_mold.png b/src/main/resources/assets/ragium/textures/item/plate_mold.png new file mode 100644 index 0000000000000000000000000000000000000000..e05f9e5767e8c06c3eb4c861b3f3d27d490e4313 GIT binary patch literal 246 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`t36#DLn`KMnQY6|>>$vpo~YIA zs^h%M#L`)z_S_u13BpepJRJlbx$CtYD-XR`^8CB z>A?T@{W+6Z>?t3CGi@q`UFBS7Ro6$4j#e&F2&LyHcoXM&iL(Mc# q^<)8E`~UyZhU8a31{=uP%nS!+`b#RN|CI%bFnGH9xvX Date: Mon, 5 Oct 2026 01:03:25 +0900 Subject: [PATCH 5/9] =?UTF-8?q?feat!:=20Mixing=20=E3=83=AC=E3=82=B7?= =?UTF-8?q?=E3=83=94=E3=82=82=E6=8B=A1=E5=BC=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../client/integration/jei/RagiumJeiPlugin.kt | 3 +- .../integration/jei/RagiumJeiRecipeTypes.kt | 3 +- .../jei/category/RTMixingRecipeCategory.kt | 51 ++++++ .../data/recipe/RagiumCommonRecipeProvider.kt | 28 +++- .../freezing/black_dye_from_liquid_dye.json | 2 +- .../freezing/blue_dye_from_liquid_dye.json | 2 +- .../freezing/brown_dye_from_liquid_dye.json | 2 +- .../freezing/cyan_dye_from_liquid_dye.json | 2 +- .../freezing/gray_dye_from_liquid_dye.json | 2 +- .../freezing/green_dye_from_liquid_dye.json | 2 +- .../light_blue_dye_from_liquid_dye.json | 2 +- .../light_gray_dye_from_liquid_dye.json | 2 +- .../freezing/lime_dye_from_liquid_dye.json | 2 +- .../freezing/magenta_dye_from_liquid_dye.json | 2 +- .../freezing/orange_dye_from_liquid_dye.json | 2 +- .../freezing/pink_dye_from_liquid_dye.json | 2 +- .../freezing/purple_dye_from_liquid_dye.json | 2 +- .../freezing/red_dye_from_liquid_dye.json | 2 +- .../freezing/white_dye_from_liquid_dye.json | 2 +- .../freezing/yellow_dye_from_liquid_dye.json | 2 +- .../ragium/recipe/mixing/anti_rust_oil.json | 8 +- .../ragium/recipe/mixing/black_concrete.json | 22 +++ .../data/ragium/recipe/mixing/black_dye.json | 10 +- .../ragium/recipe/mixing/blue_concrete.json | 22 +++ .../data/ragium/recipe/mixing/blue_dye.json | 10 +- .../ragium/recipe/mixing/brown_concrete.json | 22 +++ .../data/ragium/recipe/mixing/brown_dye.json | 10 +- .../ragium/recipe/mixing/cyan_concrete.json | 22 +++ .../data/ragium/recipe/mixing/cyan_dye.json | 10 +- .../ragium/recipe/mixing/fuel_from_tar.json | 8 +- .../ragium/recipe/mixing/gray_concrete.json | 22 +++ .../data/ragium/recipe/mixing/gray_dye.json | 10 +- .../ragium/recipe/mixing/green_concrete.json | 22 +++ .../data/ragium/recipe/mixing/green_dye.json | 10 +- .../recipe/mixing/hydrogen_chloride.json | 8 +- .../recipe/mixing/hydrogen_fluoride.json | 8 +- .../recipe/mixing/light_blue_concrete.json | 22 +++ .../ragium/recipe/mixing/light_blue_dye.json | 10 +- .../recipe/mixing/light_gray_concrete.json | 22 +++ .../ragium/recipe/mixing/light_gray_dye.json | 10 +- .../ragium/recipe/mixing/lime_concrete.json | 22 +++ .../data/ragium/recipe/mixing/lime_dye.json | 10 +- .../recipe/mixing/magenta_concrete.json | 22 +++ .../ragium/recipe/mixing/magenta_dye.json | 10 +- .../recipe/mixing/nitric_acid_from_niter.json | 8 +- .../ragium/recipe/mixing/orange_concrete.json | 22 +++ .../data/ragium/recipe/mixing/orange_dye.json | 10 +- .../ragium/recipe/mixing/pink_concrete.json | 22 +++ .../data/ragium/recipe/mixing/pink_dye.json | 10 +- .../ragium/recipe/mixing/purple_concrete.json | 22 +++ .../data/ragium/recipe/mixing/purple_dye.json | 10 +- .../ragium/recipe/mixing/red_concrete.json | 22 +++ .../data/ragium/recipe/mixing/red_dye.json | 10 +- .../ragium/recipe/mixing/white_concrete.json | 22 +++ .../data/ragium/recipe/mixing/white_dye.json | 10 +- .../ragium/recipe/mixing/yellow_concrete.json | 22 +++ .../data/ragium/recipe/mixing/yellow_dye.json | 10 +- .../builder/HTItemAndFluidToRecipeBuilder.kt | 2 +- .../HTTripleItemToItemRecipeBuilder.kt | 2 +- .../lib/recipe/base/HTRecipeFactories.kt | 10 ++ .../lib/recipe/base/HTRecipePredicates.kt | 9 ++ .../recipe/base/HTTripleItemToItemRecipe.kt | 8 +- .../recipe/builder/RTFreezingRecipeBuilder.kt | 20 +-- .../recipe/builder/RTMixingRecipeBuilder.kt | 89 +++++++++++ .../recipe/builder/RagiumRecipeBuilders.kt | 7 +- .../ragium/api/recipe/RTFreezingRecipe.kt | 3 +- .../ragium/api/recipe/RTMixingRecipe.kt | 151 ++++++++++++++++-- .../ragium/api/recipe/RagiumRecipeLookups.kt | 2 +- .../category/HTTripleItemToRecipeCategory.kt | 2 +- .../hiiragi283/ragium/common/RagiumCommon.kt | 1 - .../entity/machine/HTMixerBlockEntity.kt | 9 +- 71 files changed, 823 insertions(+), 161 deletions(-) create mode 100644 src/client/kotlin/hiiragi283/ragium/client/integration/jei/category/RTMixingRecipeCategory.kt create mode 100644 src/generated/resources/data/ragium/recipe/mixing/black_concrete.json create mode 100644 src/generated/resources/data/ragium/recipe/mixing/blue_concrete.json create mode 100644 src/generated/resources/data/ragium/recipe/mixing/brown_concrete.json create mode 100644 src/generated/resources/data/ragium/recipe/mixing/cyan_concrete.json create mode 100644 src/generated/resources/data/ragium/recipe/mixing/gray_concrete.json create mode 100644 src/generated/resources/data/ragium/recipe/mixing/green_concrete.json create mode 100644 src/generated/resources/data/ragium/recipe/mixing/light_blue_concrete.json create mode 100644 src/generated/resources/data/ragium/recipe/mixing/light_gray_concrete.json create mode 100644 src/generated/resources/data/ragium/recipe/mixing/lime_concrete.json create mode 100644 src/generated/resources/data/ragium/recipe/mixing/magenta_concrete.json create mode 100644 src/generated/resources/data/ragium/recipe/mixing/orange_concrete.json create mode 100644 src/generated/resources/data/ragium/recipe/mixing/pink_concrete.json create mode 100644 src/generated/resources/data/ragium/recipe/mixing/purple_concrete.json create mode 100644 src/generated/resources/data/ragium/recipe/mixing/red_concrete.json create mode 100644 src/generated/resources/data/ragium/recipe/mixing/white_concrete.json create mode 100644 src/generated/resources/data/ragium/recipe/mixing/yellow_concrete.json create mode 100644 src/lib/kotlin/hiiragi283/ragium/api/data/recipe/builder/RTMixingRecipeBuilder.kt diff --git a/src/client/kotlin/hiiragi283/ragium/client/integration/jei/RagiumJeiPlugin.kt b/src/client/kotlin/hiiragi283/ragium/client/integration/jei/RagiumJeiPlugin.kt index 107c07fc0..0cceb7024 100644 --- a/src/client/kotlin/hiiragi283/ragium/client/integration/jei/RagiumJeiPlugin.kt +++ b/src/client/kotlin/hiiragi283/ragium/client/integration/jei/RagiumJeiPlugin.kt @@ -24,6 +24,7 @@ import hiiragi283.ragium.client.gui.screen.HTWidgetContainerScreen import hiiragi283.ragium.client.integration.jei.category.RTElectrolyzingRecipeCategory import hiiragi283.ragium.client.integration.jei.category.RTEnchantingRecipeCategory import hiiragi283.ragium.client.integration.jei.category.RTFreezingRecipeCategory +import hiiragi283.ragium.client.integration.jei.category.RTMixingRecipeCategory import hiiragi283.ragium.client.integration.jei.category.RTReactingRecipeCategory import hiiragi283.ragium.client.integration.jei.category.RTResourceExtractingRecipeCategory import hiiragi283.ragium.client.integration.jei.category.RTWashingRecipeCategory @@ -124,7 +125,7 @@ class RagiumJeiPlugin : HTJeiPlugin(RagiumAPI.MOD_ID) { // Chemical HTItemAndFluidToItemRecipeCategory(guiHelper, RagiumJeiRecipeTypes.BATHING), RTElectrolyzingRecipeCategory(guiHelper), - HTItemAndFluidToFluidRecipeCategory(guiHelper, RagiumJeiRecipeTypes.MIXING), + RTMixingRecipeCategory(guiHelper), RTReactingRecipeCategory(guiHelper), RTWashingRecipeCategory(guiHelper), // Bio diff --git a/src/client/kotlin/hiiragi283/ragium/client/integration/jei/RagiumJeiRecipeTypes.kt b/src/client/kotlin/hiiragi283/ragium/client/integration/jei/RagiumJeiRecipeTypes.kt index afff0f273..a6760611e 100644 --- a/src/client/kotlin/hiiragi283/ragium/client/integration/jei/RagiumJeiRecipeTypes.kt +++ b/src/client/kotlin/hiiragi283/ragium/client/integration/jei/RagiumJeiRecipeTypes.kt @@ -11,6 +11,7 @@ import hiiragi283.lib.recipe.base.HTTripleItemToItemRecipe import hiiragi283.ragium.api.recipe.RTElectrolyzingRecipe import hiiragi283.ragium.api.recipe.RTEnchantingRecipe import hiiragi283.ragium.api.recipe.RTFreezingRecipe +import hiiragi283.ragium.api.recipe.RTMixingRecipe import hiiragi283.ragium.api.recipe.RTReactingRecipe import hiiragi283.ragium.api.recipe.RTResourceExtractingRecipe import hiiragi283.ragium.api.recipe.RTWashingRecipe @@ -74,7 +75,7 @@ data object RagiumJeiRecipeTypes { HTJeiRecipeType(RagiumRecipeTypes.CENTRIFUGING, RagiumBlocks.CHEMICAL_BATH) @JvmField - val MIXING: HTHolderJeiRecipeType = + val MIXING: HTHolderJeiRecipeType = HTJeiRecipeType(RagiumRecipeTypes.MIXING, RagiumBlocks.MIXER) @JvmField diff --git a/src/client/kotlin/hiiragi283/ragium/client/integration/jei/category/RTMixingRecipeCategory.kt b/src/client/kotlin/hiiragi283/ragium/client/integration/jei/category/RTMixingRecipeCategory.kt new file mode 100644 index 000000000..f738b11c6 --- /dev/null +++ b/src/client/kotlin/hiiragi283/ragium/client/integration/jei/category/RTMixingRecipeCategory.kt @@ -0,0 +1,51 @@ +package hiiragi283.ragium.client.integration.jei.category + +import hiiragi283.lib.gui.HTBackgroundType +import hiiragi283.lib.integration.jei.add +import hiiragi283.lib.integration.jei.category.HTHolderRecipeCategory +import hiiragi283.ragium.api.recipe.RTMixingRecipe +import hiiragi283.ragium.client.integration.jei.RagiumJeiRecipeTypes +import mezz.jei.api.gui.builder.IRecipeLayoutBuilder +import mezz.jei.api.gui.builder.IRecipeSlotBuilder +import mezz.jei.api.gui.widgets.IRecipeExtrasBuilder +import mezz.jei.api.helpers.IGuiHelper +import mezz.jei.api.recipe.IFocusGroup + +class RTMixingRecipeCategory(guiHelper: IGuiHelper) : + HTHolderRecipeCategory( + guiHelper, + RagiumJeiRecipeTypes.MIXING, + 18 * 9, + 18 * 1, + RTMixingRecipe.CODEC + ) { + override fun setupRecipe(builder: IRecipeLayoutBuilder, recipe: RTMixingRecipe, focuses: IFocusGroup) { + // inputs + builder + .addInputSlot(getPosition(0), getPosition(0)) + .add(recipe.fluidIngredient) + .setSlotBackground(HTBackgroundType.INPUT) + builder + .addInputSlot(getPosition(2), getPosition(0)) + .add(recipe.itemIngredients.head) + .setSlotBackground(HTBackgroundType.INPUT) + val secondInput: IRecipeSlotBuilder = builder + .addInputSlot(getPosition(3), getPosition(0)) + .setSlotBackground(HTBackgroundType.EXTRA_INPUT) + recipe.itemIngredients.getOrNull(1)?.let(secondInput::add) + // outputs + val itemOutput: IRecipeSlotBuilder = builder + .addOutputSlot(getPosition(6), getPosition(0)) + .setSlotBackground(HTBackgroundType.OUTPUT) + val fluidOutput: IRecipeSlotBuilder = builder + .addOutputSlot(getPosition(8), getPosition(0)) + .setSlotBackground(HTBackgroundType.OUTPUT) + recipe.result.content.mapLeft(itemOutput::add).mapRight(fluidOutput::add) + } + + override fun setupRecipeExtras(builder: IRecipeExtrasBuilder, recipe: RTMixingRecipe, focuses: IFocusGroup) { + builder.addRecipePlus(getPosition(1)) + builder.addRecipeArrow(recipe).setPosition(getPosition(4.25), getPosition(0)) + builder.addRecipePlus(getPosition(7)) + } +} diff --git a/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumCommonRecipeProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumCommonRecipeProvider.kt index 3604521f1..ee0cd2c57 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumCommonRecipeProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumCommonRecipeProvider.kt @@ -355,7 +355,7 @@ class RagiumCommonRecipeProvider(packOutput: PackOutput, future: CompletableFutu RagiumRecipeBuilders.mixing { itemIngredient { +holderSet(CommonTagPrefixes.DUST, RagiumMaterial.Mineral.REDSTONE) } fluidIngredient { +holderSet(RagiumFluids.NAPHTHA) } - result { +RagiumFluids.ANTI_RUST_OIL } + fluidResult { +RagiumFluids.ANTI_RUST_OIL } }.save(exporter) // Tar -> Aromatic Compound + Pitch Coke @@ -369,7 +369,7 @@ class RagiumCommonRecipeProvider(packOutput: PackOutput, future: CompletableFutu RagiumRecipeBuilders.mixing { itemIngredient { items { +RagiumItems.TAR } } fluidIngredient { +holderSet(RagiumFluids.HYDROGEN) } - result { + fluidResult { +RagiumFluids.FUEL amount = 500 } @@ -479,10 +479,11 @@ class RagiumCommonRecipeProvider(packOutput: PackOutput, future: CompletableFutu +waterSet() amount /= 4 } - result { + fluidResult { +dyeContent amount /= 4 } + time /= 2 }.save(exporter) // Liquid Dye -> Solid Dye RagiumRecipeBuilders.freezing { @@ -492,8 +493,23 @@ class RagiumCommonRecipeProvider(packOutput: PackOutput, future: CompletableFutu } catalyst { items { +RagiumItems.BALL_MOLD } } result { +VanillaColoredCollections.DYE[color] } + time /= 4 recipeId suffix "_from_liquid_dye" }.save(exporter) + // Sand + Gravel + Liquid Dye -> XX Concrete + RagiumRecipeBuilders.mixing { + itemIngredient { +holderSet(Tags.Items.SANDS) } + itemIngredient { +holderSet(Tags.Items.GRAVELS) } + fluidIngredient { + +holderSet(dyeContent) + amount /= 4 + } + itemResult { + +VanillaColoredCollections.CONCRETE[color] + count = 2 + } + time /= 2 + }.save(exporter) } // Lapis + Resin -> Blue Dye @@ -536,7 +552,7 @@ class RagiumCommonRecipeProvider(packOutput: PackOutput, future: CompletableFutu +holderSet(RagiumFluids.SULFURIC_ACID) amount /= 2 } - result { +RagiumFluids.NITRIC_ACID } + fluidResult { +RagiumFluids.NITRIC_ACID } recipeId suffix "_from_niter" }.save(exporter) } @@ -569,7 +585,7 @@ class RagiumCommonRecipeProvider(packOutput: PackOutput, future: CompletableFutu RagiumRecipeBuilders.mixing { itemIngredient { +dustOrGem(RagiumMaterial.Gem.FLUORITE) } fluidIngredient { +holderSet(RagiumFluids.SULFURIC_ACID) } - result { + fluidResult { +RagiumFluids.HYDROGEN_FLUORIDE amount *= 2 } @@ -818,7 +834,7 @@ class RagiumCommonRecipeProvider(packOutput: PackOutput, future: CompletableFutu +holderSet(RagiumFluids.SULFURIC_ACID) amount /= 2 } - result { +RagiumFluids.HYDROGEN_CHLORIDE } + fluidResult { +RagiumFluids.HYDROGEN_CHLORIDE } }.save(exporter) // 2x NaCl(aq) -> H2 + Cl2 + 2x NaOH(aq) diff --git a/src/generated/resources/data/ragium/recipe/freezing/black_dye_from_liquid_dye.json b/src/generated/resources/data/ragium/recipe/freezing/black_dye_from_liquid_dye.json index 3995a2cc4..bf9da432a 100644 --- a/src/generated/resources/data/ragium/recipe/freezing/black_dye_from_liquid_dye.json +++ b/src/generated/resources/data/ragium/recipe/freezing/black_dye_from_liquid_dye.json @@ -9,5 +9,5 @@ "count": 1, "id": "minecraft:black_dye" }, - "time": 200 + "time": 50 } \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/freezing/blue_dye_from_liquid_dye.json b/src/generated/resources/data/ragium/recipe/freezing/blue_dye_from_liquid_dye.json index 6bb57dd33..779e3eb15 100644 --- a/src/generated/resources/data/ragium/recipe/freezing/blue_dye_from_liquid_dye.json +++ b/src/generated/resources/data/ragium/recipe/freezing/blue_dye_from_liquid_dye.json @@ -9,5 +9,5 @@ "count": 1, "id": "minecraft:blue_dye" }, - "time": 200 + "time": 50 } \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/freezing/brown_dye_from_liquid_dye.json b/src/generated/resources/data/ragium/recipe/freezing/brown_dye_from_liquid_dye.json index ed2e084f5..65a990278 100644 --- a/src/generated/resources/data/ragium/recipe/freezing/brown_dye_from_liquid_dye.json +++ b/src/generated/resources/data/ragium/recipe/freezing/brown_dye_from_liquid_dye.json @@ -9,5 +9,5 @@ "count": 1, "id": "minecraft:brown_dye" }, - "time": 200 + "time": 50 } \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/freezing/cyan_dye_from_liquid_dye.json b/src/generated/resources/data/ragium/recipe/freezing/cyan_dye_from_liquid_dye.json index 84db60d03..bd1b63c98 100644 --- a/src/generated/resources/data/ragium/recipe/freezing/cyan_dye_from_liquid_dye.json +++ b/src/generated/resources/data/ragium/recipe/freezing/cyan_dye_from_liquid_dye.json @@ -9,5 +9,5 @@ "count": 1, "id": "minecraft:cyan_dye" }, - "time": 200 + "time": 50 } \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/freezing/gray_dye_from_liquid_dye.json b/src/generated/resources/data/ragium/recipe/freezing/gray_dye_from_liquid_dye.json index e62504e5b..b9958784e 100644 --- a/src/generated/resources/data/ragium/recipe/freezing/gray_dye_from_liquid_dye.json +++ b/src/generated/resources/data/ragium/recipe/freezing/gray_dye_from_liquid_dye.json @@ -9,5 +9,5 @@ "count": 1, "id": "minecraft:gray_dye" }, - "time": 200 + "time": 50 } \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/freezing/green_dye_from_liquid_dye.json b/src/generated/resources/data/ragium/recipe/freezing/green_dye_from_liquid_dye.json index eb263b753..85d998e2a 100644 --- a/src/generated/resources/data/ragium/recipe/freezing/green_dye_from_liquid_dye.json +++ b/src/generated/resources/data/ragium/recipe/freezing/green_dye_from_liquid_dye.json @@ -9,5 +9,5 @@ "count": 1, "id": "minecraft:green_dye" }, - "time": 200 + "time": 50 } \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/freezing/light_blue_dye_from_liquid_dye.json b/src/generated/resources/data/ragium/recipe/freezing/light_blue_dye_from_liquid_dye.json index f289951dd..2d8569e58 100644 --- a/src/generated/resources/data/ragium/recipe/freezing/light_blue_dye_from_liquid_dye.json +++ b/src/generated/resources/data/ragium/recipe/freezing/light_blue_dye_from_liquid_dye.json @@ -9,5 +9,5 @@ "count": 1, "id": "minecraft:light_blue_dye" }, - "time": 200 + "time": 50 } \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/freezing/light_gray_dye_from_liquid_dye.json b/src/generated/resources/data/ragium/recipe/freezing/light_gray_dye_from_liquid_dye.json index 921145d46..0cf8e1eb8 100644 --- a/src/generated/resources/data/ragium/recipe/freezing/light_gray_dye_from_liquid_dye.json +++ b/src/generated/resources/data/ragium/recipe/freezing/light_gray_dye_from_liquid_dye.json @@ -9,5 +9,5 @@ "count": 1, "id": "minecraft:light_gray_dye" }, - "time": 200 + "time": 50 } \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/freezing/lime_dye_from_liquid_dye.json b/src/generated/resources/data/ragium/recipe/freezing/lime_dye_from_liquid_dye.json index f20135354..e7c5befd6 100644 --- a/src/generated/resources/data/ragium/recipe/freezing/lime_dye_from_liquid_dye.json +++ b/src/generated/resources/data/ragium/recipe/freezing/lime_dye_from_liquid_dye.json @@ -9,5 +9,5 @@ "count": 1, "id": "minecraft:lime_dye" }, - "time": 200 + "time": 50 } \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/freezing/magenta_dye_from_liquid_dye.json b/src/generated/resources/data/ragium/recipe/freezing/magenta_dye_from_liquid_dye.json index ee3fe28db..398f93110 100644 --- a/src/generated/resources/data/ragium/recipe/freezing/magenta_dye_from_liquid_dye.json +++ b/src/generated/resources/data/ragium/recipe/freezing/magenta_dye_from_liquid_dye.json @@ -9,5 +9,5 @@ "count": 1, "id": "minecraft:magenta_dye" }, - "time": 200 + "time": 50 } \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/freezing/orange_dye_from_liquid_dye.json b/src/generated/resources/data/ragium/recipe/freezing/orange_dye_from_liquid_dye.json index 65a877f9d..3e1a00933 100644 --- a/src/generated/resources/data/ragium/recipe/freezing/orange_dye_from_liquid_dye.json +++ b/src/generated/resources/data/ragium/recipe/freezing/orange_dye_from_liquid_dye.json @@ -9,5 +9,5 @@ "count": 1, "id": "minecraft:orange_dye" }, - "time": 200 + "time": 50 } \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/freezing/pink_dye_from_liquid_dye.json b/src/generated/resources/data/ragium/recipe/freezing/pink_dye_from_liquid_dye.json index 09bf57d5a..44d7fe749 100644 --- a/src/generated/resources/data/ragium/recipe/freezing/pink_dye_from_liquid_dye.json +++ b/src/generated/resources/data/ragium/recipe/freezing/pink_dye_from_liquid_dye.json @@ -9,5 +9,5 @@ "count": 1, "id": "minecraft:pink_dye" }, - "time": 200 + "time": 50 } \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/freezing/purple_dye_from_liquid_dye.json b/src/generated/resources/data/ragium/recipe/freezing/purple_dye_from_liquid_dye.json index 409b44502..c248bc6ba 100644 --- a/src/generated/resources/data/ragium/recipe/freezing/purple_dye_from_liquid_dye.json +++ b/src/generated/resources/data/ragium/recipe/freezing/purple_dye_from_liquid_dye.json @@ -9,5 +9,5 @@ "count": 1, "id": "minecraft:purple_dye" }, - "time": 200 + "time": 50 } \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/freezing/red_dye_from_liquid_dye.json b/src/generated/resources/data/ragium/recipe/freezing/red_dye_from_liquid_dye.json index a17f34c15..152bcd9d7 100644 --- a/src/generated/resources/data/ragium/recipe/freezing/red_dye_from_liquid_dye.json +++ b/src/generated/resources/data/ragium/recipe/freezing/red_dye_from_liquid_dye.json @@ -9,5 +9,5 @@ "count": 1, "id": "minecraft:red_dye" }, - "time": 200 + "time": 50 } \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/freezing/white_dye_from_liquid_dye.json b/src/generated/resources/data/ragium/recipe/freezing/white_dye_from_liquid_dye.json index 9b08ae9cf..d852165a3 100644 --- a/src/generated/resources/data/ragium/recipe/freezing/white_dye_from_liquid_dye.json +++ b/src/generated/resources/data/ragium/recipe/freezing/white_dye_from_liquid_dye.json @@ -9,5 +9,5 @@ "count": 1, "id": "minecraft:white_dye" }, - "time": 200 + "time": 50 } \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/freezing/yellow_dye_from_liquid_dye.json b/src/generated/resources/data/ragium/recipe/freezing/yellow_dye_from_liquid_dye.json index 3c0efa3e1..650e5aa7d 100644 --- a/src/generated/resources/data/ragium/recipe/freezing/yellow_dye_from_liquid_dye.json +++ b/src/generated/resources/data/ragium/recipe/freezing/yellow_dye_from_liquid_dye.json @@ -9,5 +9,5 @@ "count": 1, "id": "minecraft:yellow_dye" }, - "time": 200 + "time": 50 } \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/mixing/anti_rust_oil.json b/src/generated/resources/data/ragium/recipe/mixing/anti_rust_oil.json index 82cdb60e4..a91492031 100644 --- a/src/generated/resources/data/ragium/recipe/mixing/anti_rust_oil.json +++ b/src/generated/resources/data/ragium/recipe/mixing/anti_rust_oil.json @@ -4,13 +4,13 @@ "amount": 1000, "fluids": "#c:naphtha" }, + "fluid_result": { + "amount": 1000, + "id": "ragium:anti_rust_oil" + }, "item_ingredient": { "count": 1, "items": "#c:dusts/redstone" }, - "result": { - "amount": 1000, - "id": "ragium:anti_rust_oil" - }, "time": 200 } \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/mixing/black_concrete.json b/src/generated/resources/data/ragium/recipe/mixing/black_concrete.json new file mode 100644 index 000000000..2759e4a94 --- /dev/null +++ b/src/generated/resources/data/ragium/recipe/mixing/black_concrete.json @@ -0,0 +1,22 @@ +{ + "type": "ragium:mixing", + "fluid_ingredient": { + "amount": 250, + "fluids": "#c:dyes/black" + }, + "item_ingredient": [ + { + "count": 1, + "items": "#c:sands" + }, + { + "count": 1, + "items": "#c:gravels" + } + ], + "item_result": { + "count": 2, + "id": "minecraft:black_concrete" + }, + "time": 100 +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/mixing/black_dye.json b/src/generated/resources/data/ragium/recipe/mixing/black_dye.json index 67e84e174..3f168170c 100644 --- a/src/generated/resources/data/ragium/recipe/mixing/black_dye.json +++ b/src/generated/resources/data/ragium/recipe/mixing/black_dye.json @@ -4,13 +4,13 @@ "amount": 250, "fluids": "#c:water" }, + "fluid_result": { + "amount": 250, + "id": "ragium:black_dye" + }, "item_ingredient": { "count": 1, "items": "#c:dyes/black" }, - "result": { - "amount": 250, - "id": "ragium:black_dye" - }, - "time": 200 + "time": 100 } \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/mixing/blue_concrete.json b/src/generated/resources/data/ragium/recipe/mixing/blue_concrete.json new file mode 100644 index 000000000..03c5e2248 --- /dev/null +++ b/src/generated/resources/data/ragium/recipe/mixing/blue_concrete.json @@ -0,0 +1,22 @@ +{ + "type": "ragium:mixing", + "fluid_ingredient": { + "amount": 250, + "fluids": "#c:dyes/blue" + }, + "item_ingredient": [ + { + "count": 1, + "items": "#c:sands" + }, + { + "count": 1, + "items": "#c:gravels" + } + ], + "item_result": { + "count": 2, + "id": "minecraft:blue_concrete" + }, + "time": 100 +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/mixing/blue_dye.json b/src/generated/resources/data/ragium/recipe/mixing/blue_dye.json index 8c0df6bbe..bb76e9d9c 100644 --- a/src/generated/resources/data/ragium/recipe/mixing/blue_dye.json +++ b/src/generated/resources/data/ragium/recipe/mixing/blue_dye.json @@ -4,13 +4,13 @@ "amount": 250, "fluids": "#c:water" }, + "fluid_result": { + "amount": 250, + "id": "ragium:blue_dye" + }, "item_ingredient": { "count": 1, "items": "#c:dyes/blue" }, - "result": { - "amount": 250, - "id": "ragium:blue_dye" - }, - "time": 200 + "time": 100 } \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/mixing/brown_concrete.json b/src/generated/resources/data/ragium/recipe/mixing/brown_concrete.json new file mode 100644 index 000000000..50dbe5668 --- /dev/null +++ b/src/generated/resources/data/ragium/recipe/mixing/brown_concrete.json @@ -0,0 +1,22 @@ +{ + "type": "ragium:mixing", + "fluid_ingredient": { + "amount": 250, + "fluids": "#c:dyes/brown" + }, + "item_ingredient": [ + { + "count": 1, + "items": "#c:sands" + }, + { + "count": 1, + "items": "#c:gravels" + } + ], + "item_result": { + "count": 2, + "id": "minecraft:brown_concrete" + }, + "time": 100 +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/mixing/brown_dye.json b/src/generated/resources/data/ragium/recipe/mixing/brown_dye.json index 606e7cd72..d232fdfd8 100644 --- a/src/generated/resources/data/ragium/recipe/mixing/brown_dye.json +++ b/src/generated/resources/data/ragium/recipe/mixing/brown_dye.json @@ -4,13 +4,13 @@ "amount": 250, "fluids": "#c:water" }, + "fluid_result": { + "amount": 250, + "id": "ragium:brown_dye" + }, "item_ingredient": { "count": 1, "items": "#c:dyes/brown" }, - "result": { - "amount": 250, - "id": "ragium:brown_dye" - }, - "time": 200 + "time": 100 } \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/mixing/cyan_concrete.json b/src/generated/resources/data/ragium/recipe/mixing/cyan_concrete.json new file mode 100644 index 000000000..d04f9ba48 --- /dev/null +++ b/src/generated/resources/data/ragium/recipe/mixing/cyan_concrete.json @@ -0,0 +1,22 @@ +{ + "type": "ragium:mixing", + "fluid_ingredient": { + "amount": 250, + "fluids": "#c:dyes/cyan" + }, + "item_ingredient": [ + { + "count": 1, + "items": "#c:sands" + }, + { + "count": 1, + "items": "#c:gravels" + } + ], + "item_result": { + "count": 2, + "id": "minecraft:cyan_concrete" + }, + "time": 100 +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/mixing/cyan_dye.json b/src/generated/resources/data/ragium/recipe/mixing/cyan_dye.json index 04e3d4c0d..0a086fb48 100644 --- a/src/generated/resources/data/ragium/recipe/mixing/cyan_dye.json +++ b/src/generated/resources/data/ragium/recipe/mixing/cyan_dye.json @@ -4,13 +4,13 @@ "amount": 250, "fluids": "#c:water" }, + "fluid_result": { + "amount": 250, + "id": "ragium:cyan_dye" + }, "item_ingredient": { "count": 1, "items": "#c:dyes/cyan" }, - "result": { - "amount": 250, - "id": "ragium:cyan_dye" - }, - "time": 200 + "time": 100 } \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/mixing/fuel_from_tar.json b/src/generated/resources/data/ragium/recipe/mixing/fuel_from_tar.json index 7cb546b6f..d002fe907 100644 --- a/src/generated/resources/data/ragium/recipe/mixing/fuel_from_tar.json +++ b/src/generated/resources/data/ragium/recipe/mixing/fuel_from_tar.json @@ -4,13 +4,13 @@ "amount": 1000, "fluids": "#c:hydrogen" }, + "fluid_result": { + "amount": 500, + "id": "ragium:fuel" + }, "item_ingredient": { "count": 1, "items": "ragium:tar" }, - "result": { - "amount": 500, - "id": "ragium:fuel" - }, "time": 200 } \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/mixing/gray_concrete.json b/src/generated/resources/data/ragium/recipe/mixing/gray_concrete.json new file mode 100644 index 000000000..2a734f15d --- /dev/null +++ b/src/generated/resources/data/ragium/recipe/mixing/gray_concrete.json @@ -0,0 +1,22 @@ +{ + "type": "ragium:mixing", + "fluid_ingredient": { + "amount": 250, + "fluids": "#c:dyes/gray" + }, + "item_ingredient": [ + { + "count": 1, + "items": "#c:sands" + }, + { + "count": 1, + "items": "#c:gravels" + } + ], + "item_result": { + "count": 2, + "id": "minecraft:gray_concrete" + }, + "time": 100 +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/mixing/gray_dye.json b/src/generated/resources/data/ragium/recipe/mixing/gray_dye.json index 8bced950b..ffe8e23e7 100644 --- a/src/generated/resources/data/ragium/recipe/mixing/gray_dye.json +++ b/src/generated/resources/data/ragium/recipe/mixing/gray_dye.json @@ -4,13 +4,13 @@ "amount": 250, "fluids": "#c:water" }, + "fluid_result": { + "amount": 250, + "id": "ragium:gray_dye" + }, "item_ingredient": { "count": 1, "items": "#c:dyes/gray" }, - "result": { - "amount": 250, - "id": "ragium:gray_dye" - }, - "time": 200 + "time": 100 } \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/mixing/green_concrete.json b/src/generated/resources/data/ragium/recipe/mixing/green_concrete.json new file mode 100644 index 000000000..d979fab0b --- /dev/null +++ b/src/generated/resources/data/ragium/recipe/mixing/green_concrete.json @@ -0,0 +1,22 @@ +{ + "type": "ragium:mixing", + "fluid_ingredient": { + "amount": 250, + "fluids": "#c:dyes/green" + }, + "item_ingredient": [ + { + "count": 1, + "items": "#c:sands" + }, + { + "count": 1, + "items": "#c:gravels" + } + ], + "item_result": { + "count": 2, + "id": "minecraft:green_concrete" + }, + "time": 100 +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/mixing/green_dye.json b/src/generated/resources/data/ragium/recipe/mixing/green_dye.json index 2221c135f..d9dbca08d 100644 --- a/src/generated/resources/data/ragium/recipe/mixing/green_dye.json +++ b/src/generated/resources/data/ragium/recipe/mixing/green_dye.json @@ -4,13 +4,13 @@ "amount": 250, "fluids": "#c:water" }, + "fluid_result": { + "amount": 250, + "id": "ragium:green_dye" + }, "item_ingredient": { "count": 1, "items": "#c:dyes/green" }, - "result": { - "amount": 250, - "id": "ragium:green_dye" - }, - "time": 200 + "time": 100 } \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/mixing/hydrogen_chloride.json b/src/generated/resources/data/ragium/recipe/mixing/hydrogen_chloride.json index 7544fadc2..80a32958d 100644 --- a/src/generated/resources/data/ragium/recipe/mixing/hydrogen_chloride.json +++ b/src/generated/resources/data/ragium/recipe/mixing/hydrogen_chloride.json @@ -4,13 +4,13 @@ "amount": 500, "fluids": "#c:sulfuric_acid" }, + "fluid_result": { + "amount": 1000, + "id": "ragium:hydrogen_chloride" + }, "item_ingredient": { "count": 1, "items": "#c:dusts/salt" }, - "result": { - "amount": 1000, - "id": "ragium:hydrogen_chloride" - }, "time": 200 } \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/mixing/hydrogen_fluoride.json b/src/generated/resources/data/ragium/recipe/mixing/hydrogen_fluoride.json index f76117949..39f9a4b8f 100644 --- a/src/generated/resources/data/ragium/recipe/mixing/hydrogen_fluoride.json +++ b/src/generated/resources/data/ragium/recipe/mixing/hydrogen_fluoride.json @@ -4,6 +4,10 @@ "amount": 1000, "fluids": "#c:sulfuric_acid" }, + "fluid_result": { + "amount": 2000, + "id": "ragium:hydrogen_fluoride" + }, "item_ingredient": { "count": 1, "items": { @@ -14,9 +18,5 @@ ] } }, - "result": { - "amount": 2000, - "id": "ragium:hydrogen_fluoride" - }, "time": 200 } \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/mixing/light_blue_concrete.json b/src/generated/resources/data/ragium/recipe/mixing/light_blue_concrete.json new file mode 100644 index 000000000..bf3587b3b --- /dev/null +++ b/src/generated/resources/data/ragium/recipe/mixing/light_blue_concrete.json @@ -0,0 +1,22 @@ +{ + "type": "ragium:mixing", + "fluid_ingredient": { + "amount": 250, + "fluids": "#c:dyes/light_blue" + }, + "item_ingredient": [ + { + "count": 1, + "items": "#c:sands" + }, + { + "count": 1, + "items": "#c:gravels" + } + ], + "item_result": { + "count": 2, + "id": "minecraft:light_blue_concrete" + }, + "time": 100 +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/mixing/light_blue_dye.json b/src/generated/resources/data/ragium/recipe/mixing/light_blue_dye.json index 6cbd2da9b..04d69f11c 100644 --- a/src/generated/resources/data/ragium/recipe/mixing/light_blue_dye.json +++ b/src/generated/resources/data/ragium/recipe/mixing/light_blue_dye.json @@ -4,13 +4,13 @@ "amount": 250, "fluids": "#c:water" }, + "fluid_result": { + "amount": 250, + "id": "ragium:light_blue_dye" + }, "item_ingredient": { "count": 1, "items": "#c:dyes/light_blue" }, - "result": { - "amount": 250, - "id": "ragium:light_blue_dye" - }, - "time": 200 + "time": 100 } \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/mixing/light_gray_concrete.json b/src/generated/resources/data/ragium/recipe/mixing/light_gray_concrete.json new file mode 100644 index 000000000..1fbab8c92 --- /dev/null +++ b/src/generated/resources/data/ragium/recipe/mixing/light_gray_concrete.json @@ -0,0 +1,22 @@ +{ + "type": "ragium:mixing", + "fluid_ingredient": { + "amount": 250, + "fluids": "#c:dyes/light_gray" + }, + "item_ingredient": [ + { + "count": 1, + "items": "#c:sands" + }, + { + "count": 1, + "items": "#c:gravels" + } + ], + "item_result": { + "count": 2, + "id": "minecraft:light_gray_concrete" + }, + "time": 100 +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/mixing/light_gray_dye.json b/src/generated/resources/data/ragium/recipe/mixing/light_gray_dye.json index a3915b720..67aca08ba 100644 --- a/src/generated/resources/data/ragium/recipe/mixing/light_gray_dye.json +++ b/src/generated/resources/data/ragium/recipe/mixing/light_gray_dye.json @@ -4,13 +4,13 @@ "amount": 250, "fluids": "#c:water" }, + "fluid_result": { + "amount": 250, + "id": "ragium:light_gray_dye" + }, "item_ingredient": { "count": 1, "items": "#c:dyes/light_gray" }, - "result": { - "amount": 250, - "id": "ragium:light_gray_dye" - }, - "time": 200 + "time": 100 } \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/mixing/lime_concrete.json b/src/generated/resources/data/ragium/recipe/mixing/lime_concrete.json new file mode 100644 index 000000000..d812c16e9 --- /dev/null +++ b/src/generated/resources/data/ragium/recipe/mixing/lime_concrete.json @@ -0,0 +1,22 @@ +{ + "type": "ragium:mixing", + "fluid_ingredient": { + "amount": 250, + "fluids": "#c:dyes/lime" + }, + "item_ingredient": [ + { + "count": 1, + "items": "#c:sands" + }, + { + "count": 1, + "items": "#c:gravels" + } + ], + "item_result": { + "count": 2, + "id": "minecraft:lime_concrete" + }, + "time": 100 +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/mixing/lime_dye.json b/src/generated/resources/data/ragium/recipe/mixing/lime_dye.json index 415216b9c..612d6442a 100644 --- a/src/generated/resources/data/ragium/recipe/mixing/lime_dye.json +++ b/src/generated/resources/data/ragium/recipe/mixing/lime_dye.json @@ -4,13 +4,13 @@ "amount": 250, "fluids": "#c:water" }, + "fluid_result": { + "amount": 250, + "id": "ragium:lime_dye" + }, "item_ingredient": { "count": 1, "items": "#c:dyes/lime" }, - "result": { - "amount": 250, - "id": "ragium:lime_dye" - }, - "time": 200 + "time": 100 } \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/mixing/magenta_concrete.json b/src/generated/resources/data/ragium/recipe/mixing/magenta_concrete.json new file mode 100644 index 000000000..4618ef3f9 --- /dev/null +++ b/src/generated/resources/data/ragium/recipe/mixing/magenta_concrete.json @@ -0,0 +1,22 @@ +{ + "type": "ragium:mixing", + "fluid_ingredient": { + "amount": 250, + "fluids": "#c:dyes/magenta" + }, + "item_ingredient": [ + { + "count": 1, + "items": "#c:sands" + }, + { + "count": 1, + "items": "#c:gravels" + } + ], + "item_result": { + "count": 2, + "id": "minecraft:magenta_concrete" + }, + "time": 100 +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/mixing/magenta_dye.json b/src/generated/resources/data/ragium/recipe/mixing/magenta_dye.json index c991e9518..c046916a4 100644 --- a/src/generated/resources/data/ragium/recipe/mixing/magenta_dye.json +++ b/src/generated/resources/data/ragium/recipe/mixing/magenta_dye.json @@ -4,13 +4,13 @@ "amount": 250, "fluids": "#c:water" }, + "fluid_result": { + "amount": 250, + "id": "ragium:magenta_dye" + }, "item_ingredient": { "count": 1, "items": "#c:dyes/magenta" }, - "result": { - "amount": 250, - "id": "ragium:magenta_dye" - }, - "time": 200 + "time": 100 } \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/mixing/nitric_acid_from_niter.json b/src/generated/resources/data/ragium/recipe/mixing/nitric_acid_from_niter.json index 7a0dc9724..aa0bf64a9 100644 --- a/src/generated/resources/data/ragium/recipe/mixing/nitric_acid_from_niter.json +++ b/src/generated/resources/data/ragium/recipe/mixing/nitric_acid_from_niter.json @@ -4,13 +4,13 @@ "amount": 500, "fluids": "#c:sulfuric_acid" }, + "fluid_result": { + "amount": 1000, + "id": "ragium:nitric_acid" + }, "item_ingredient": { "count": 1, "items": "#c:dusts/niter" }, - "result": { - "amount": 1000, - "id": "ragium:nitric_acid" - }, "time": 200 } \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/mixing/orange_concrete.json b/src/generated/resources/data/ragium/recipe/mixing/orange_concrete.json new file mode 100644 index 000000000..8cdbbeaad --- /dev/null +++ b/src/generated/resources/data/ragium/recipe/mixing/orange_concrete.json @@ -0,0 +1,22 @@ +{ + "type": "ragium:mixing", + "fluid_ingredient": { + "amount": 250, + "fluids": "#c:dyes/orange" + }, + "item_ingredient": [ + { + "count": 1, + "items": "#c:sands" + }, + { + "count": 1, + "items": "#c:gravels" + } + ], + "item_result": { + "count": 2, + "id": "minecraft:orange_concrete" + }, + "time": 100 +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/mixing/orange_dye.json b/src/generated/resources/data/ragium/recipe/mixing/orange_dye.json index fd82736aa..6892a84b4 100644 --- a/src/generated/resources/data/ragium/recipe/mixing/orange_dye.json +++ b/src/generated/resources/data/ragium/recipe/mixing/orange_dye.json @@ -4,13 +4,13 @@ "amount": 250, "fluids": "#c:water" }, + "fluid_result": { + "amount": 250, + "id": "ragium:orange_dye" + }, "item_ingredient": { "count": 1, "items": "#c:dyes/orange" }, - "result": { - "amount": 250, - "id": "ragium:orange_dye" - }, - "time": 200 + "time": 100 } \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/mixing/pink_concrete.json b/src/generated/resources/data/ragium/recipe/mixing/pink_concrete.json new file mode 100644 index 000000000..2b250906c --- /dev/null +++ b/src/generated/resources/data/ragium/recipe/mixing/pink_concrete.json @@ -0,0 +1,22 @@ +{ + "type": "ragium:mixing", + "fluid_ingredient": { + "amount": 250, + "fluids": "#c:dyes/pink" + }, + "item_ingredient": [ + { + "count": 1, + "items": "#c:sands" + }, + { + "count": 1, + "items": "#c:gravels" + } + ], + "item_result": { + "count": 2, + "id": "minecraft:pink_concrete" + }, + "time": 100 +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/mixing/pink_dye.json b/src/generated/resources/data/ragium/recipe/mixing/pink_dye.json index f3b5e826a..89e0b6dde 100644 --- a/src/generated/resources/data/ragium/recipe/mixing/pink_dye.json +++ b/src/generated/resources/data/ragium/recipe/mixing/pink_dye.json @@ -4,13 +4,13 @@ "amount": 250, "fluids": "#c:water" }, + "fluid_result": { + "amount": 250, + "id": "ragium:pink_dye" + }, "item_ingredient": { "count": 1, "items": "#c:dyes/pink" }, - "result": { - "amount": 250, - "id": "ragium:pink_dye" - }, - "time": 200 + "time": 100 } \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/mixing/purple_concrete.json b/src/generated/resources/data/ragium/recipe/mixing/purple_concrete.json new file mode 100644 index 000000000..667708c0f --- /dev/null +++ b/src/generated/resources/data/ragium/recipe/mixing/purple_concrete.json @@ -0,0 +1,22 @@ +{ + "type": "ragium:mixing", + "fluid_ingredient": { + "amount": 250, + "fluids": "#c:dyes/purple" + }, + "item_ingredient": [ + { + "count": 1, + "items": "#c:sands" + }, + { + "count": 1, + "items": "#c:gravels" + } + ], + "item_result": { + "count": 2, + "id": "minecraft:purple_concrete" + }, + "time": 100 +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/mixing/purple_dye.json b/src/generated/resources/data/ragium/recipe/mixing/purple_dye.json index 9903c02f6..50af06307 100644 --- a/src/generated/resources/data/ragium/recipe/mixing/purple_dye.json +++ b/src/generated/resources/data/ragium/recipe/mixing/purple_dye.json @@ -4,13 +4,13 @@ "amount": 250, "fluids": "#c:water" }, + "fluid_result": { + "amount": 250, + "id": "ragium:purple_dye" + }, "item_ingredient": { "count": 1, "items": "#c:dyes/purple" }, - "result": { - "amount": 250, - "id": "ragium:purple_dye" - }, - "time": 200 + "time": 100 } \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/mixing/red_concrete.json b/src/generated/resources/data/ragium/recipe/mixing/red_concrete.json new file mode 100644 index 000000000..33e826686 --- /dev/null +++ b/src/generated/resources/data/ragium/recipe/mixing/red_concrete.json @@ -0,0 +1,22 @@ +{ + "type": "ragium:mixing", + "fluid_ingredient": { + "amount": 250, + "fluids": "#c:dyes/red" + }, + "item_ingredient": [ + { + "count": 1, + "items": "#c:sands" + }, + { + "count": 1, + "items": "#c:gravels" + } + ], + "item_result": { + "count": 2, + "id": "minecraft:red_concrete" + }, + "time": 100 +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/mixing/red_dye.json b/src/generated/resources/data/ragium/recipe/mixing/red_dye.json index 0aafc5bbf..f622e4479 100644 --- a/src/generated/resources/data/ragium/recipe/mixing/red_dye.json +++ b/src/generated/resources/data/ragium/recipe/mixing/red_dye.json @@ -4,13 +4,13 @@ "amount": 250, "fluids": "#c:water" }, + "fluid_result": { + "amount": 250, + "id": "ragium:red_dye" + }, "item_ingredient": { "count": 1, "items": "#c:dyes/red" }, - "result": { - "amount": 250, - "id": "ragium:red_dye" - }, - "time": 200 + "time": 100 } \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/mixing/white_concrete.json b/src/generated/resources/data/ragium/recipe/mixing/white_concrete.json new file mode 100644 index 000000000..941802095 --- /dev/null +++ b/src/generated/resources/data/ragium/recipe/mixing/white_concrete.json @@ -0,0 +1,22 @@ +{ + "type": "ragium:mixing", + "fluid_ingredient": { + "amount": 250, + "fluids": "#c:dyes/white" + }, + "item_ingredient": [ + { + "count": 1, + "items": "#c:sands" + }, + { + "count": 1, + "items": "#c:gravels" + } + ], + "item_result": { + "count": 2, + "id": "minecraft:white_concrete" + }, + "time": 100 +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/mixing/white_dye.json b/src/generated/resources/data/ragium/recipe/mixing/white_dye.json index 9e56c0fab..c1dc0e268 100644 --- a/src/generated/resources/data/ragium/recipe/mixing/white_dye.json +++ b/src/generated/resources/data/ragium/recipe/mixing/white_dye.json @@ -4,13 +4,13 @@ "amount": 250, "fluids": "#c:water" }, + "fluid_result": { + "amount": 250, + "id": "ragium:white_dye" + }, "item_ingredient": { "count": 1, "items": "#c:dyes/white" }, - "result": { - "amount": 250, - "id": "ragium:white_dye" - }, - "time": 200 + "time": 100 } \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/mixing/yellow_concrete.json b/src/generated/resources/data/ragium/recipe/mixing/yellow_concrete.json new file mode 100644 index 000000000..e4886cbd3 --- /dev/null +++ b/src/generated/resources/data/ragium/recipe/mixing/yellow_concrete.json @@ -0,0 +1,22 @@ +{ + "type": "ragium:mixing", + "fluid_ingredient": { + "amount": 250, + "fluids": "#c:dyes/yellow" + }, + "item_ingredient": [ + { + "count": 1, + "items": "#c:sands" + }, + { + "count": 1, + "items": "#c:gravels" + } + ], + "item_result": { + "count": 2, + "id": "minecraft:yellow_concrete" + }, + "time": 100 +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/mixing/yellow_dye.json b/src/generated/resources/data/ragium/recipe/mixing/yellow_dye.json index 2ae1e070e..46eb467f6 100644 --- a/src/generated/resources/data/ragium/recipe/mixing/yellow_dye.json +++ b/src/generated/resources/data/ragium/recipe/mixing/yellow_dye.json @@ -4,13 +4,13 @@ "amount": 250, "fluids": "#c:water" }, + "fluid_result": { + "amount": 250, + "id": "ragium:yellow_dye" + }, "item_ingredient": { "count": 1, "items": "#c:dyes/yellow" }, - "result": { - "amount": 250, - "id": "ragium:yellow_dye" - }, - "time": 200 + "time": 100 } \ No newline at end of file diff --git a/src/lib/kotlin/hiiragi283/lib/data/recipe/builder/HTItemAndFluidToRecipeBuilder.kt b/src/lib/kotlin/hiiragi283/lib/data/recipe/builder/HTItemAndFluidToRecipeBuilder.kt index 87e94a379..b272bf8a5 100644 --- a/src/lib/kotlin/hiiragi283/lib/data/recipe/builder/HTItemAndFluidToRecipeBuilder.kt +++ b/src/lib/kotlin/hiiragi283/lib/data/recipe/builder/HTItemAndFluidToRecipeBuilder.kt @@ -33,7 +33,7 @@ abstract class HTItemAndFluidToRecipeBuilder, out REC final override fun createRecipe(): RECIPE = factory.create(itemIngredient, fluidIngredient, result, progressData) - // Ingredient + // Ingredients var itemIngredient: HTItemIngredient by HTDelegates.onceInitialize() var fluidIngredient: HTFluidIngredient by HTDelegates.onceInitialize() diff --git a/src/lib/kotlin/hiiragi283/lib/data/recipe/builder/HTTripleItemToItemRecipeBuilder.kt b/src/lib/kotlin/hiiragi283/lib/data/recipe/builder/HTTripleItemToItemRecipeBuilder.kt index a3b1ebf6b..d166a47dc 100644 --- a/src/lib/kotlin/hiiragi283/lib/data/recipe/builder/HTTripleItemToItemRecipeBuilder.kt +++ b/src/lib/kotlin/hiiragi283/lib/data/recipe/builder/HTTripleItemToItemRecipeBuilder.kt @@ -49,7 +49,7 @@ class HTTripleItemToItemRecipeBuilder>(prefix: String, pr } // Extras - @PublishedApi internal var extras: MutableList = ObjectArrayList() + @PublishedApi internal val extras: MutableList = ObjectArrayList() inline fun extra(builderAction: HTItemIngredientBuilder.() -> Unit) { contract { diff --git a/src/lib/kotlin/hiiragi283/lib/recipe/base/HTRecipeFactories.kt b/src/lib/kotlin/hiiragi283/lib/recipe/base/HTRecipeFactories.kt index 9a40fea32..e96da6015 100644 --- a/src/lib/kotlin/hiiragi283/lib/recipe/base/HTRecipeFactories.kt +++ b/src/lib/kotlin/hiiragi283/lib/recipe/base/HTRecipeFactories.kt @@ -108,6 +108,16 @@ data object HTRecipeFactories { fun getMatchingStack(first: INPUT_A, second: INPUT_B, third: INPUT_C): Triple } + /** + * 2種類のアイテムと1種類の液体から完成品を作る[TripleInput]の拡張インターフェースです。 + * @since 26.1.8 + */ + interface DoubleItemAndFluid : + TripleInput { + override fun produce(input: HTFluidRecipeInput): OUTPUT = + apply(input.getItemOrEmpty(0), input.getItemOrEmpty(1), input.getFluidOrEmpty(0)) + } + /** * 3種類のアイテムから完成品を作る[TripleInput]の拡張インターフェースです。 */ diff --git a/src/lib/kotlin/hiiragi283/lib/recipe/base/HTRecipePredicates.kt b/src/lib/kotlin/hiiragi283/lib/recipe/base/HTRecipePredicates.kt index 900374d29..eb1b2d3db 100644 --- a/src/lib/kotlin/hiiragi283/lib/recipe/base/HTRecipePredicates.kt +++ b/src/lib/kotlin/hiiragi283/lib/recipe/base/HTRecipePredicates.kt @@ -110,6 +110,15 @@ data object HTRecipePredicates { override fun test(first: INPUT_A, second: INPUT_B, third: INPUT_C): Boolean } + /** + * 2種類のアイテムと1種類の液体を判定する[TripleInput]の拡張インターフェースです。 + * @since 26.1.8 + */ + fun interface DoubleItemAndFluid : TripleInput { + override fun matches(input: HTFluidRecipeInput): Boolean = + test(input.getItemOrEmpty(0), input.getItemOrEmpty(1), input.getFluidOrEmpty(0)) + } + /** * 3種類のアイテムを判定する[TripleInput]の拡張インターフェースです。 */ diff --git a/src/lib/kotlin/hiiragi283/lib/recipe/base/HTTripleItemToItemRecipe.kt b/src/lib/kotlin/hiiragi283/lib/recipe/base/HTTripleItemToItemRecipe.kt index dd0489f74..1e8da1016 100644 --- a/src/lib/kotlin/hiiragi283/lib/recipe/base/HTTripleItemToItemRecipe.kt +++ b/src/lib/kotlin/hiiragi283/lib/recipe/base/HTTripleItemToItemRecipe.kt @@ -88,14 +88,12 @@ interface HTTripleItemToItemRecipe : } } - override fun test(first: ItemInstance, second: ItemInstance, third: ItemInstance): Boolean { - if (!ingredient.test(first)) return false - return when { + override fun test(first: ItemInstance, second: ItemInstance, third: ItemInstance): Boolean = + ingredient.test(first) && when { secondary.test(second) -> tertiary?.test(third) ?: true secondary.test(third) -> tertiary?.test(second) ?: true else -> false } - } override fun apply(first: ItemInstance, second: ItemInstance, third: ItemInstance): ItemStack = result.create() @@ -104,7 +102,7 @@ interface HTTripleItemToItemRecipe : second: ItemInstance, third: ItemInstance ): Triple { - val firstInput = ingredient.getMatchingStack(first) + val firstInput: ItemInstance = ingredient.getMatchingStack(first) return when { secondary.test(second) -> Triple( firstInput, diff --git a/src/lib/kotlin/hiiragi283/ragium/api/data/recipe/builder/RTFreezingRecipeBuilder.kt b/src/lib/kotlin/hiiragi283/ragium/api/data/recipe/builder/RTFreezingRecipeBuilder.kt index d5bdbb83e..bbf22464d 100644 --- a/src/lib/kotlin/hiiragi283/ragium/api/data/recipe/builder/RTFreezingRecipeBuilder.kt +++ b/src/lib/kotlin/hiiragi283/ragium/api/data/recipe/builder/RTFreezingRecipeBuilder.kt @@ -25,15 +25,6 @@ class RTFreezingRecipeBuilder : HTProgressRecipeBuilder(Ragium // Ingredient var ingredient: HTFluidIngredient by HTDelegates.onceInitialize() - var catalyst: HTItemCatalyst by HTDelegates.onceInitialize(HTItemCatalyst::EMPTY) - - operator fun HTFluidIngredient.unaryPlus() { - ingredient = this - } - - operator fun HTItemCatalyst.unaryPlus() { - catalyst = this - } operator fun Ingredient.unaryPlus() { +HTItemCatalyst(this) @@ -46,6 +37,17 @@ class RTFreezingRecipeBuilder : HTProgressRecipeBuilder(Ragium +HTFluidIngredientBuilder.build(builderAction) } + // Catalyst + var catalyst: HTItemCatalyst by HTDelegates.onceInitialize(HTItemCatalyst::EMPTY) + + operator fun HTFluidIngredient.unaryPlus() { + ingredient = this + } + + operator fun HTItemCatalyst.unaryPlus() { + catalyst = this + } + inline fun catalyst(builderAction: IngredientBuilder.() -> Unit) { contract { callsInPlace(builderAction, InvocationKind.EXACTLY_ONCE) diff --git a/src/lib/kotlin/hiiragi283/ragium/api/data/recipe/builder/RTMixingRecipeBuilder.kt b/src/lib/kotlin/hiiragi283/ragium/api/data/recipe/builder/RTMixingRecipeBuilder.kt new file mode 100644 index 000000000..85cfd2ec9 --- /dev/null +++ b/src/lib/kotlin/hiiragi283/ragium/api/data/recipe/builder/RTMixingRecipeBuilder.kt @@ -0,0 +1,89 @@ +@file:OptIn(ExperimentalContracts::class) + +package hiiragi283.ragium.api.data.recipe.builder + +import hiiragi283.lib.collection.toNel +import hiiragi283.lib.data.recipe.builder.HTProgressRecipeBuilder +import hiiragi283.lib.data.recipe.ingredient.HTFluidIngredientBuilder +import hiiragi283.lib.data.recipe.ingredient.HTItemIngredientBuilder +import hiiragi283.lib.data.recipe.result.HTFluidResultBuilder +import hiiragi283.lib.data.recipe.result.HTItemResultBuilder +import hiiragi283.lib.recipe.ingredient.HTFluidIngredient +import hiiragi283.lib.recipe.ingredient.HTItemIngredient +import hiiragi283.lib.recipe.result.HTFluidResult +import hiiragi283.lib.recipe.result.HTItemOrFluidResult +import hiiragi283.lib.recipe.result.HTItemResult +import hiiragi283.lib.util.HTDelegates +import hiiragi283.lib.util.Ior +import hiiragi283.ragium.api.RagiumConstants +import hiiragi283.ragium.api.recipe.RTMixingRecipe +import it.unimi.dsi.fastutil.objects.ObjectArrayList +import net.minecraft.resources.Identifier +import java.util.Optional +import kotlin.contracts.ExperimentalContracts +import kotlin.contracts.InvocationKind +import kotlin.contracts.contract + +class RTMixingRecipeBuilder : HTProgressRecipeBuilder(RagiumConstants.MIXING) { + override fun getRecipeId(): Identifier? = result.getId() + + override fun createRecipe(): RTMixingRecipe = + RTMixingRecipe(itemIngredients.toNel(), fluidIngredient, result, progressData) + + // Ingredients + private val itemIngredients: MutableList = ObjectArrayList() + var fluidIngredient: HTFluidIngredient by HTDelegates.onceInitialize() + + operator fun HTItemIngredient.unaryPlus() { + itemIngredients += this + } + + operator fun HTFluidIngredient.unaryPlus() { + fluidIngredient = this + } + + inline fun itemIngredient(builderAction: HTItemIngredientBuilder.() -> Unit) { + contract { + callsInPlace(builderAction, InvocationKind.EXACTLY_ONCE) + } + +HTItemIngredientBuilder.build(builderAction) + } + + inline fun fluidIngredient(builderAction: HTFluidIngredientBuilder.() -> Unit) { + contract { + callsInPlace(builderAction, InvocationKind.EXACTLY_ONCE) + } + +HTFluidIngredientBuilder.build(builderAction) + } + + // Results + var itemResult: Optional by HTDelegates.optionalInitialize() + + var fluidResult: Optional by HTDelegates.optionalInitialize() + + val result: HTItemOrFluidResult get() = Ior.fromNullable(itemResult, fluidResult) + .map(::HTItemOrFluidResult) + .orElseThrow { error("Either item or fluid result required") } + + operator fun HTItemResult.unaryPlus() { + itemResult = Optional.of(this) + } + + operator fun HTFluidResult.unaryPlus() { + fluidResult = Optional.of(this) + } + + inline fun itemResult(builderAction: HTItemResultBuilder.() -> Unit) { + contract { + callsInPlace(builderAction, InvocationKind.EXACTLY_ONCE) + } + +HTItemResultBuilder.build(builderAction) + } + + inline fun fluidResult(builderAction: HTFluidResultBuilder.() -> Unit) { + contract { + callsInPlace(builderAction, InvocationKind.EXACTLY_ONCE) + } + +HTFluidResultBuilder.build(builderAction) + } +} diff --git a/src/lib/kotlin/hiiragi283/ragium/api/data/recipe/builder/RagiumRecipeBuilders.kt b/src/lib/kotlin/hiiragi283/ragium/api/data/recipe/builder/RagiumRecipeBuilders.kt index 51988b000..4dcc71520 100644 --- a/src/lib/kotlin/hiiragi283/ragium/api/data/recipe/builder/RagiumRecipeBuilders.kt +++ b/src/lib/kotlin/hiiragi283/ragium/api/data/recipe/builder/RagiumRecipeBuilders.kt @@ -24,7 +24,6 @@ import hiiragi283.ragium.api.recipe.RTDrainingRecipe import hiiragi283.ragium.api.recipe.RTEnchantingRecipe import hiiragi283.ragium.api.recipe.RTFillingRecipe import hiiragi283.ragium.api.recipe.RTMeltingRecipe -import hiiragi283.ragium.api.recipe.RTMixingRecipe import hiiragi283.ragium.api.recipe.RTPlantingRecipe import hiiragi283.ragium.api.recipe.RTPyrolyzingRecipe import hiiragi283.ragium.api.recipe.RTRefiningRecipe @@ -171,13 +170,11 @@ data object RagiumRecipeBuilders { } @JvmStatic - inline fun mixing( - builderAction: HTItemAndFluidToRecipeBuilder.ToFluid.() -> Unit - ): HTItemAndFluidToRecipeBuilder.ToFluid { + inline fun mixing(builderAction: RTMixingRecipeBuilder.() -> Unit): RTMixingRecipeBuilder { contract { callsInPlace(builderAction, InvocationKind.EXACTLY_ONCE) } - return HTItemAndFluidToRecipeBuilder.ToFluid(RagiumConstants.MIXING, ::RTMixingRecipe).apply(builderAction) + return RTMixingRecipeBuilder().apply(builderAction) } @JvmStatic diff --git a/src/lib/kotlin/hiiragi283/ragium/api/recipe/RTFreezingRecipe.kt b/src/lib/kotlin/hiiragi283/ragium/api/recipe/RTFreezingRecipe.kt index a952b496a..25db1728d 100644 --- a/src/lib/kotlin/hiiragi283/ragium/api/recipe/RTFreezingRecipe.kt +++ b/src/lib/kotlin/hiiragi283/ragium/api/recipe/RTFreezingRecipe.kt @@ -19,7 +19,8 @@ import net.minecraft.world.item.crafting.RecipeSerializer import net.minecraft.world.item.crafting.RecipeType import net.neoforged.neoforge.fluids.FluidInstance -class RTFreezingRecipe( +@JvmRecord +data class RTFreezingRecipe( val ingredient: HTFluidIngredient, val catalyst: HTItemCatalyst, val result: HTItemResult, diff --git a/src/lib/kotlin/hiiragi283/ragium/api/recipe/RTMixingRecipe.kt b/src/lib/kotlin/hiiragi283/ragium/api/recipe/RTMixingRecipe.kt index ed86d8e48..e10337b8c 100644 --- a/src/lib/kotlin/hiiragi283/ragium/api/recipe/RTMixingRecipe.kt +++ b/src/lib/kotlin/hiiragi283/ragium/api/recipe/RTMixingRecipe.kt @@ -1,26 +1,155 @@ package hiiragi283.ragium.api.recipe +import com.mojang.serialization.MapCodec +import hiiragi283.lib.HTConstants +import hiiragi283.lib.collection.Nel import hiiragi283.lib.recipe.HTSerializableRecipe -import hiiragi283.lib.recipe.base.HTItemAndFluidToRecipe +import hiiragi283.lib.recipe.base.HTItemAndFluidToFluidRecipe +import hiiragi283.lib.recipe.base.HTItemAndFluidToItemRecipe import hiiragi283.lib.recipe.base.HTProgressData +import hiiragi283.lib.recipe.base.HTProgressRecipe +import hiiragi283.lib.recipe.base.HTRecipeFactories +import hiiragi283.lib.recipe.base.HTRecipePredicates import hiiragi283.lib.recipe.ingredient.HTFluidIngredient +import hiiragi283.lib.recipe.ingredient.HTIngredientHelper import hiiragi283.lib.recipe.ingredient.HTItemIngredient +import hiiragi283.lib.recipe.input.HTFluidRecipeInput import hiiragi283.lib.recipe.input.HTItemAndFluidRecipeInput -import hiiragi283.lib.recipe.result.HTFluidResult +import hiiragi283.lib.recipe.result.HTItemAndFluidStack +import hiiragi283.lib.recipe.result.HTItemOrFluidResult +import hiiragi283.lib.serialization.codec.HTCodecs +import hiiragi283.lib.serialization.codec.nelOrElement +import hiiragi283.lib.serialization.network.nelOf +import net.minecraft.network.RegistryFriendlyByteBuf +import net.minecraft.network.codec.StreamCodec +import net.minecraft.world.item.ItemInstance +import net.minecraft.world.item.ItemStack import net.minecraft.world.item.crafting.RecipeSerializer import net.minecraft.world.item.crafting.RecipeType +import net.neoforged.neoforge.fluids.FluidInstance +import net.neoforged.neoforge.fluids.FluidStack -class RTMixingRecipe( - itemIngredient: HTItemIngredient, - fluidIngredient: HTFluidIngredient, - result: HTFluidResult, - progressData: HTProgressData -) : HTItemAndFluidToRecipe.BasicFluid(itemIngredient, fluidIngredient, result, progressData), - HTSerializableRecipe { +@JvmRecord +data class RTMixingRecipe( + val itemIngredients: Nel, + val fluidIngredient: HTFluidIngredient, + val result: HTItemOrFluidResult, + override val progressData: HTProgressData +) : HTRecipePredicates.DoubleItemAndFluid, + HTRecipeFactories.DoubleItemAndFluid, + HTProgressRecipe.Simple, + HTSerializableRecipe { companion object { @JvmField - val SERIALIZER: RecipeSerializer = - RecipeSerializer(codec(::RTMixingRecipe), streamCodec(::RTMixingRecipe)) + val CODEC: MapCodec = HTCodecs.recordMap { instance -> + instance.group( + HTItemIngredient.CODEC + .nelOrElement(2) + .fieldOf(HTConstants.ITEM_INGREDIENT) + .forGetter(RTMixingRecipe::itemIngredients), + HTFluidIngredient.CODEC + .fieldOf(HTConstants.FLUID_INGREDIENT) + .forGetter(RTMixingRecipe::fluidIngredient), + HTItemOrFluidResult.CODEC.forGetter(RTMixingRecipe::result), + HTProgressData.CODEC.forGetter(RTMixingRecipe::progressData) + ).apply(instance, ::RTMixingRecipe) + } + + @JvmField + val STREAM_CODEC: StreamCodec = StreamCodec.composite( + HTItemIngredient.STREAM_CODEC.nelOf(), + RTMixingRecipe::itemIngredients, + HTFluidIngredient.STREAM_CODEC, + RTMixingRecipe::fluidIngredient, + HTItemOrFluidResult.STREAM_CODEC, + RTMixingRecipe::result, + HTProgressData.STREAM_CODEC, + RTMixingRecipe::progressData, + ::RTMixingRecipe + ) + + @JvmField + val SERIALIZER: RecipeSerializer = RecipeSerializer(CODEC, STREAM_CODEC) + } + + fun toItemAndFluidToFluid(): HTItemAndFluidToFluidRecipe? = when { + itemIngredients.size > 1 -> null + + !result.content.isRight() -> null + + else -> object : HTItemAndFluidToFluidRecipe { + override fun test(first: ItemInstance, second: FluidInstance): Boolean = + itemIngredients.head.test(first) && fluidIngredient.test(second) + + override fun apply(first: ItemInstance, second: FluidInstance): FluidStack = result.create().fluid + + override fun getMatchingStack( + first: ItemInstance, + second: FluidInstance + ): Pair = + itemIngredients.head.getMatchingStack(first) to fluidIngredient.getMatchingStack(second) + + override fun getProgressData(input: HTItemAndFluidRecipeInput): HTProgressData = progressData + } + } + + fun toItemAndFluidToItem(): HTItemAndFluidToItemRecipe? = when { + itemIngredients.size > 1 -> null + + !result.content.isLeft() -> null + + else -> object : HTItemAndFluidToItemRecipe { + override fun test(first: ItemInstance, second: FluidInstance): Boolean = + itemIngredients.head.test(first) && fluidIngredient.test(second) + + override fun apply(first: ItemInstance, second: FluidInstance): ItemStack = result.create().item + + override fun getMatchingStack( + first: ItemInstance, + second: FluidInstance + ): Pair = + itemIngredients.head.getMatchingStack(first) to fluidIngredient.getMatchingStack(second) + + override fun getProgressData(input: HTItemAndFluidRecipeInput): HTProgressData = progressData + } + } + + override fun test(first: ItemInstance, second: ItemInstance, third: FluidInstance): Boolean = when { + !fluidIngredient.test(third) -> false + + itemIngredients.head.test(first) -> + itemIngredients.getOrNull(1)?.test(second) ?: HTIngredientHelper.isEmpty(second) + + itemIngredients.head.test(second) -> + itemIngredients.getOrNull(1)?.test(first) ?: HTIngredientHelper.isEmpty(first) + + else -> false + } + + override fun apply(first: ItemInstance, second: ItemInstance, third: FluidInstance): HTItemAndFluidStack = + result.create() + + override fun getMatchingStack( + first: ItemInstance, + second: ItemInstance, + third: FluidInstance + ): Triple { + val fluid: FluidInstance = fluidIngredient.getMatchingStack(third) + return when { + itemIngredients.head.test(first) -> Triple( + itemIngredients.head.getMatchingStack(first), + itemIngredients.getOrNull(1)?.getMatchingStack(second) ?: ItemStack.EMPTY, + fluid + ) + + itemIngredients.head.test(second) -> Triple( + itemIngredients.head.getMatchingStack(second), + itemIngredients.getOrNull(1)?.getMatchingStack(first) ?: ItemStack.EMPTY, + fluid + ) + + else -> Triple(ItemStack.EMPTY, ItemStack.EMPTY, fluid) + } } override fun getSerializer(): RecipeSerializer = RagiumRecipeSerializers.MIXING diff --git a/src/lib/kotlin/hiiragi283/ragium/api/recipe/RagiumRecipeLookups.kt b/src/lib/kotlin/hiiragi283/ragium/api/recipe/RagiumRecipeLookups.kt index 84e244607..556283105 100644 --- a/src/lib/kotlin/hiiragi283/ragium/api/recipe/RagiumRecipeLookups.kt +++ b/src/lib/kotlin/hiiragi283/ragium/api/recipe/RagiumRecipeLookups.kt @@ -76,7 +76,7 @@ data object RagiumRecipeLookups { val CENTRIFUGING: HTCompoundRecipeLookup = create(RagiumConstants.CENTRIFUGING) @JvmField - val MIXING: HTCompoundRecipeLookup = create(RagiumConstants.MIXING) + val MIXING: HTRecipeLookup = create(RagiumRecipeTypes.MIXING) @JvmField val REACTING: HTCompoundRecipeLookup = create(RagiumConstants.REACTING) diff --git a/src/libClient/kotlin/hiiragi283/lib/integration/jei/category/HTTripleItemToRecipeCategory.kt b/src/libClient/kotlin/hiiragi283/lib/integration/jei/category/HTTripleItemToRecipeCategory.kt index 5a53d98d0..b950b48c4 100644 --- a/src/libClient/kotlin/hiiragi283/lib/integration/jei/category/HTTripleItemToRecipeCategory.kt +++ b/src/libClient/kotlin/hiiragi283/lib/integration/jei/category/HTTripleItemToRecipeCategory.kt @@ -22,7 +22,7 @@ abstract class HTTripleItemToRecipeCategory> codec: MapCodec ) : HTHolderRecipeCategory(guiHelper, recipeType, 18 * 7, 18 * 1, codec) { override fun setupRecipe(builder: IRecipeLayoutBuilder, recipe: RECIPE, focuses: IFocusGroup) { - // input + // inputs setPrimaryInput( builder .addInputSlot(getPosition(0), getPosition(0)) diff --git a/src/main/kotlin/hiiragi283/ragium/common/RagiumCommon.kt b/src/main/kotlin/hiiragi283/ragium/common/RagiumCommon.kt index 4ec05beb4..2859bec48 100644 --- a/src/main/kotlin/hiiragi283/ragium/common/RagiumCommon.kt +++ b/src/main/kotlin/hiiragi283/ragium/common/RagiumCommon.kt @@ -130,7 +130,6 @@ internal data object RagiumCommon { RagiumRecipeLookups.BATHING.fromRecipeType(RagiumRecipeTypes.BATHING, identity()) RagiumRecipeLookups.CENTRIFUGING.fromRecipeType(RagiumRecipeTypes.CENTRIFUGING, identity()) - RagiumRecipeLookups.MIXING.fromRecipeType(RagiumRecipeTypes.MIXING, identity()) RagiumRecipeLookups.REACTING.fromRecipeType(RagiumRecipeTypes.REACTING, identity()) RagiumRecipeLookups.BREWING.fromRecipeType(RagiumRecipeTypes.BREWING, identity()) diff --git a/src/main/kotlin/hiiragi283/ragium/common/block/entity/machine/HTMixerBlockEntity.kt b/src/main/kotlin/hiiragi283/ragium/common/block/entity/machine/HTMixerBlockEntity.kt index b5a6932b6..754e79345 100644 --- a/src/main/kotlin/hiiragi283/ragium/common/block/entity/machine/HTMixerBlockEntity.kt +++ b/src/main/kotlin/hiiragi283/ragium/common/block/entity/machine/HTMixerBlockEntity.kt @@ -1,8 +1,10 @@ package hiiragi283.ragium.common.block.entity.machine +import hiiragi283.lib.recipe.lookup.mapNotNull import hiiragi283.lib.sounds.HTSoundInstance import hiiragi283.ragium.api.RagiumConfig import hiiragi283.ragium.api.config.HTEnergyConfig +import hiiragi283.ragium.api.recipe.RTMixingRecipe import hiiragi283.ragium.api.recipe.RagiumRecipeLookups import hiiragi283.ragium.common.block.entity.RagiumBlockEntityTypes import hiiragi283.ragium.common.block.entity.machine.base.HTItemAndFluidToFluidBlockEntity @@ -11,7 +13,12 @@ import net.minecraft.sounds.SoundEvents import net.minecraft.world.level.block.state.BlockState class HTMixerBlockEntity(pos: BlockPos, state: BlockState) : - HTItemAndFluidToFluidBlockEntity(RagiumBlockEntityTypes.MIXER.get(), RagiumRecipeLookups.MIXING, pos, state) { + HTItemAndFluidToFluidBlockEntity( + RagiumBlockEntityTypes.MIXER.get(), + RagiumRecipeLookups.MIXING.mapNotNull(RTMixingRecipe::toItemAndFluidToFluid), + pos, + state + ) { override fun getCompletedSound(): HTSoundInstance = HTSoundInstance(SoundEvents.BUBBLE_COLUMN_WHIRLPOOL_INSIDE) override fun getConfig(): HTEnergyConfig = RagiumConfig.SERVER.machine.mixer From 0568a7cce962e2344f1079aa7795f1b1c613eaa1 Mon Sep 17 00:00:00 2001 From: Hiiragi Russell Tsubasa <97942736+Hiiragi283@users.noreply.github.com> Date: Mon, 5 Oct 2026 19:50:38 +0900 Subject: [PATCH 6/9] =?UTF-8?q?refactor!:=20JEI=E5=91=A8=E3=82=8A=E3=81=AE?= =?UTF-8?q?=E8=A8=AD=E8=A8=88=E3=82=92=E5=8D=98=E7=B4=94=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../client/integration/jei/RagiumJeiPlugin.kt | 83 +++++++++++++++---- .../integration/jei/RagiumJeiRecipeTypes.kt | 77 +++++++---------- .../category/RTElectrolyzingRecipeCategory.kt | 5 +- .../category/RTEnchantingRecipeCategory.kt | 5 +- .../jei/category/RTFreezingRecipeCategory.kt | 11 ++- .../jei/category/RTMixingRecipeCategory.kt | 5 +- .../jei/category/RTReactingRecipeCategory.kt | 5 +- .../RTResourceExtractingRecipeCategory.kt | 5 +- .../jei/category/RTWashingRecipeCategory.kt | 5 +- .../lib/integration/jei/HTJeiDrawables.kt | 39 +++++---- .../lib/integration/jei/HTJeiRecipeType.kt | 63 -------------- .../lib/integration/jei/JeiExtensions.kt | 46 ++++++---- .../jei/category/HTBasicRecipeCategory.kt | 34 ++++---- .../category/HTDoubleItemToRecipeCategory.kt | 28 ++++--- .../jei/category/HTHolderRecipeCategory.kt | 20 +++-- .../HTItemAndFluidToFluidRecipeCategory.kt | 13 +-- .../HTItemAndFluidToItemRecipeCategory.kt | 13 +-- .../HTItemToDoubleItemRecipeCategory.kt | 13 +-- .../jei/category/HTSingleRecipeCategory.kt | 72 ++++++++++------ .../HTSingleToItemAndFluidRecipeCategory.kt | 44 ++++++---- .../category/HTTripleItemToRecipeCategory.kt | 28 ++++--- 21 files changed, 343 insertions(+), 271 deletions(-) delete mode 100644 src/libClient/kotlin/hiiragi283/lib/integration/jei/HTJeiRecipeType.kt diff --git a/src/client/kotlin/hiiragi283/ragium/client/integration/jei/RagiumJeiPlugin.kt b/src/client/kotlin/hiiragi283/ragium/client/integration/jei/RagiumJeiPlugin.kt index 0cceb7024..e3d3ded45 100644 --- a/src/client/kotlin/hiiragi283/ragium/client/integration/jei/RagiumJeiPlugin.kt +++ b/src/client/kotlin/hiiragi283/ragium/client/integration/jei/RagiumJeiPlugin.kt @@ -1,6 +1,7 @@ package hiiragi283.ragium.client.integration.jei import hiiragi283.lib.HTPhysicalSideHelper +import hiiragi283.lib.integration.jei.HTJeiDrawables import hiiragi283.lib.integration.jei.HTJeiPlugin import hiiragi283.lib.integration.jei.HTJeiRecipeHelper import hiiragi283.lib.integration.jei.category.HTItemAndFluidToFluidRecipeCategory @@ -20,6 +21,7 @@ import hiiragi283.ragium.api.RagiumAPI import hiiragi283.ragium.api.data.RagiumDataComponents import hiiragi283.ragium.api.data.recipe.builder.RagiumRecipeBuilders import hiiragi283.ragium.api.recipe.RagiumRecipeLookups +import hiiragi283.ragium.api.recipe.RagiumRecipeTypes import hiiragi283.ragium.client.gui.screen.HTWidgetContainerScreen import hiiragi283.ragium.client.integration.jei.category.RTElectrolyzingRecipeCategory import hiiragi283.ragium.client.integration.jei.category.RTEnchantingRecipeCategory @@ -107,30 +109,83 @@ class RagiumJeiPlugin : HTJeiPlugin(RagiumAPI.MOD_ID) { override fun registerCategories(registration: IRecipeCategoryRegistration) { val guiHelper: IGuiHelper = registration.jeiHelpers.guiHelper + HTJeiDrawables.init(guiHelper) registration.addRecipeCategories( // Mechanical - HTTripleItemToRecipeCategory.Basic(guiHelper, RagiumJeiRecipeTypes.ASSEMBLING), - HTSingleRecipeCategory.ItemToItem(guiHelper, RagiumJeiRecipeTypes.COMPRESSING), - HTItemToDoubleItemRecipeCategory(guiHelper, RagiumJeiRecipeTypes.CRUSHING), - HTItemToDoubleItemRecipeCategory(guiHelper, RagiumJeiRecipeTypes.CUTTING), - HTSingleToItemAndFluidRecipeCategory.ItemTo(guiHelper, RagiumJeiRecipeTypes.DRAINING), - HTItemAndFluidToItemRecipeCategory(guiHelper, RagiumJeiRecipeTypes.FILLING), + HTTripleItemToRecipeCategory.Basic( + RagiumJeiRecipeTypes.ASSEMBLING, + RagiumRecipeTypes.ASSEMBLING, + guiHelper.createDrawableItemLike(RagiumBlocks.ASSEMBLER) + ), + HTSingleRecipeCategory.ItemToItem( + RagiumJeiRecipeTypes.COMPRESSING, + RagiumRecipeTypes.COMPRESSING, + guiHelper.createDrawableItemLike(RagiumBlocks.COMPRESSOR) + ), + HTItemToDoubleItemRecipeCategory( + RagiumJeiRecipeTypes.CRUSHING, + RagiumRecipeTypes.CRUSHING, + guiHelper.createDrawableItemLike(RagiumBlocks.CRUSHER) + ), + HTItemToDoubleItemRecipeCategory( + RagiumJeiRecipeTypes.CUTTING, + RagiumRecipeTypes.CUTTING, + guiHelper.createDrawableItemLike(RagiumBlocks.CUTTING_MACHINE) + ), + HTSingleToItemAndFluidRecipeCategory.ItemTo( + RagiumJeiRecipeTypes.DRAINING, + RagiumRecipeTypes.DRAINING, + guiHelper.createDrawableItemLike(RagiumBlocks.MACHINE_CASING) + ), + HTItemAndFluidToItemRecipeCategory( + RagiumJeiRecipeTypes.FILLING, + RagiumRecipeTypes.FILLING, + guiHelper.createDrawableItemLike(RagiumBlocks.MACHINE_CASING) + ), // Heat - HTTripleItemToRecipeCategory.Basic(guiHelper, RagiumJeiRecipeTypes.ALLOYING), - RTFreezingRecipeCategory(guiHelper, RagiumJeiRecipeTypes.FREEZING), - HTSingleRecipeCategory.ItemToFluid(guiHelper, RagiumJeiRecipeTypes.MELTING), - HTSingleToItemAndFluidRecipeCategory.ItemTo(guiHelper, RagiumJeiRecipeTypes.PYROLYZING), - HTSingleToItemAndFluidRecipeCategory.FluidTo(guiHelper, RagiumJeiRecipeTypes.REFINING), + HTTripleItemToRecipeCategory.Basic( + RagiumJeiRecipeTypes.ALLOYING, + RagiumRecipeTypes.ALLOYING, + guiHelper.createDrawableItemLike(RagiumBlocks.ALLOY_SMELTER) + ), + RTFreezingRecipeCategory(guiHelper), + HTSingleRecipeCategory.ItemToFluid( + RagiumJeiRecipeTypes.MELTING, + RagiumRecipeTypes.MELTING, + guiHelper.createDrawableItemLike(RagiumBlocks.MELTER) + ), + HTSingleToItemAndFluidRecipeCategory.ItemTo( + RagiumJeiRecipeTypes.PYROLYZING, + RagiumRecipeTypes.PYROLYZING, + guiHelper.createDrawableItemLike(RagiumBlocks.PYROLYZER) + ), + HTSingleToItemAndFluidRecipeCategory.FluidTo( + RagiumJeiRecipeTypes.REFINING, + RagiumRecipeTypes.REFINING, + guiHelper.createDrawableItemLike(RagiumBlocks.REFINERY) + ), // Chemical - HTItemAndFluidToItemRecipeCategory(guiHelper, RagiumJeiRecipeTypes.BATHING), + HTItemAndFluidToItemRecipeCategory( + RagiumJeiRecipeTypes.BATHING, + RagiumRecipeTypes.BATHING, + guiHelper.createDrawableItemLike(RagiumBlocks.CHEMICAL_BATH) + ), RTElectrolyzingRecipeCategory(guiHelper), RTMixingRecipeCategory(guiHelper), RTReactingRecipeCategory(guiHelper), RTWashingRecipeCategory(guiHelper), // Bio - HTItemAndFluidToFluidRecipeCategory(guiHelper, RagiumJeiRecipeTypes.BREWING), - HTItemToDoubleItemRecipeCategory(guiHelper, RagiumJeiRecipeTypes.PLANTING), + HTItemAndFluidToFluidRecipeCategory( + RagiumJeiRecipeTypes.BREWING, + RagiumRecipeTypes.BREWING, + guiHelper.createDrawableItemLike(RagiumBlocks.BREWERY) + ), + HTItemToDoubleItemRecipeCategory( + RagiumJeiRecipeTypes.PLANTING, + RagiumRecipeTypes.PLANTING, + guiHelper.createDrawableItemLike(RagiumBlocks.PLANTER) + ), // Electronics RTResourceExtractingRecipeCategory(guiHelper), // Arcane diff --git a/src/client/kotlin/hiiragi283/ragium/client/integration/jei/RagiumJeiRecipeTypes.kt b/src/client/kotlin/hiiragi283/ragium/client/integration/jei/RagiumJeiRecipeTypes.kt index a6760611e..a620e7afe 100644 --- a/src/client/kotlin/hiiragi283/ragium/client/integration/jei/RagiumJeiRecipeTypes.kt +++ b/src/client/kotlin/hiiragi283/ragium/client/integration/jei/RagiumJeiRecipeTypes.kt @@ -1,13 +1,16 @@ package hiiragi283.ragium.client.integration.jei -import hiiragi283.lib.integration.jei.HTHolderJeiRecipeType -import hiiragi283.lib.integration.jei.HTJeiRecipeType +import hiiragi283.lib.integration.jei.HTRecipeHolderType +import hiiragi283.lib.integration.jei.IRecipeType +import hiiragi283.lib.recipe.HTRecipeHolder import hiiragi283.lib.recipe.base.HTFluidToDoubleFluidRecipe import hiiragi283.lib.recipe.base.HTFluidToRecipe import hiiragi283.lib.recipe.base.HTItemAndFluidToRecipe import hiiragi283.lib.recipe.base.HTItemToDoubleItemRecipe import hiiragi283.lib.recipe.base.HTItemToRecipe import hiiragi283.lib.recipe.base.HTTripleItemToItemRecipe +import hiiragi283.ragium.api.RagiumAPI +import hiiragi283.ragium.api.RagiumConstants import hiiragi283.ragium.api.recipe.RTElectrolyzingRecipe import hiiragi283.ragium.api.recipe.RTEnchantingRecipe import hiiragi283.ragium.api.recipe.RTFreezingRecipe @@ -15,97 +18,79 @@ import hiiragi283.ragium.api.recipe.RTMixingRecipe import hiiragi283.ragium.api.recipe.RTReactingRecipe import hiiragi283.ragium.api.recipe.RTResourceExtractingRecipe import hiiragi283.ragium.api.recipe.RTWashingRecipe -import hiiragi283.ragium.api.recipe.RagiumRecipeTypes -import hiiragi283.ragium.common.block.RagiumBlocks data object RagiumJeiRecipeTypes { + @JvmStatic + private inline fun create(name: String): HTRecipeHolderType = + IRecipeType>(RagiumAPI.id(name)) + // Mechanical @JvmField - val ASSEMBLING: HTHolderJeiRecipeType = - HTJeiRecipeType(RagiumRecipeTypes.ASSEMBLING, RagiumBlocks.ASSEMBLER) + val ASSEMBLING: HTRecipeHolderType = create(RagiumConstants.ASSEMBLING) @JvmField - val COMPRESSING: HTHolderJeiRecipeType = - HTJeiRecipeType(RagiumRecipeTypes.COMPRESSING, RagiumBlocks.COMPRESSOR) + val COMPRESSING: HTRecipeHolderType = create(RagiumConstants.COMPRESSING) @JvmField - val CRUSHING: HTHolderJeiRecipeType = - HTJeiRecipeType(RagiumRecipeTypes.CRUSHING, RagiumBlocks.CRUSHER) + val CRUSHING: HTRecipeHolderType = create(RagiumConstants.CRUSHING) @JvmField - val CUTTING: HTHolderJeiRecipeType = - HTJeiRecipeType(RagiumRecipeTypes.CUTTING, RagiumBlocks.CUTTING_MACHINE) + val CUTTING: HTRecipeHolderType = create(RagiumConstants.CUTTING) @JvmField - val DRAINING: HTHolderJeiRecipeType = - HTJeiRecipeType(RagiumRecipeTypes.DRAINING, RagiumBlocks.MACHINE_CASING) + val DRAINING: HTRecipeHolderType = create(RagiumConstants.DRAINING) @JvmField - val FILLING: HTHolderJeiRecipeType = - HTJeiRecipeType(RagiumRecipeTypes.FILLING, RagiumBlocks.MACHINE_CASING) + val FILLING: HTRecipeHolderType = create(RagiumConstants.FILLING) // Heat @JvmField - val ALLOYING: HTHolderJeiRecipeType = - HTJeiRecipeType(RagiumRecipeTypes.ALLOYING, RagiumBlocks.ALLOY_SMELTER) + val ALLOYING: HTRecipeHolderType = create(RagiumConstants.ALLOYING) @JvmField - val FREEZING: HTHolderJeiRecipeType = - HTJeiRecipeType(RagiumRecipeTypes.FREEZING, RagiumBlocks.FREEZER) + val FREEZING: HTRecipeHolderType = create(RagiumConstants.FREEZING) @JvmField - val MELTING: HTHolderJeiRecipeType = - HTJeiRecipeType(RagiumRecipeTypes.MELTING, RagiumBlocks.MELTER) + val MELTING: HTRecipeHolderType = create(RagiumConstants.MELTING) @JvmField - val PYROLYZING: HTHolderJeiRecipeType = - HTJeiRecipeType(RagiumRecipeTypes.PYROLYZING, RagiumBlocks.PYROLYZER) + val PYROLYZING: HTRecipeHolderType = create(RagiumConstants.PYROLYZING) @JvmField - val REFINING: HTHolderJeiRecipeType = - HTJeiRecipeType(RagiumRecipeTypes.REFINING, RagiumBlocks.REFINERY) + val REFINING: HTRecipeHolderType = create(RagiumConstants.REFINING) // Chemical @JvmField - val BATHING: HTHolderJeiRecipeType = - HTJeiRecipeType(RagiumRecipeTypes.BATHING, RagiumBlocks.CHEMICAL_BATH) + val BATHING: HTRecipeHolderType = create(RagiumConstants.BATHING) @JvmField - val CENTRIFUGING: HTHolderJeiRecipeType = - HTJeiRecipeType(RagiumRecipeTypes.CENTRIFUGING, RagiumBlocks.CHEMICAL_BATH) + val CENTRIFUGING: HTRecipeHolderType = create(RagiumConstants.CENTRIFUGING) @JvmField - val MIXING: HTHolderJeiRecipeType = - HTJeiRecipeType(RagiumRecipeTypes.MIXING, RagiumBlocks.MIXER) + val MIXING: HTRecipeHolderType = create(RagiumConstants.MIXING) @JvmField - val REACTING: HTHolderJeiRecipeType = - HTJeiRecipeType(RagiumRecipeTypes.REACTING, RagiumBlocks.CHEMICAL_REACTOR) + val REACTING: HTRecipeHolderType = create(RagiumConstants.REACTING) @JvmField - val WASHING: HTHolderJeiRecipeType = - HTJeiRecipeType(RagiumRecipeTypes.WASHING, RagiumBlocks.MACHINE_CASING) + val WASHING: HTRecipeHolderType = create(RagiumConstants.WASHING) // Bio @JvmField - val BREWING: HTHolderJeiRecipeType = - HTJeiRecipeType(RagiumRecipeTypes.BREWING, RagiumBlocks.BREWERY) + val BREWING: HTRecipeHolderType = create(RagiumConstants.BREWING) @JvmField - val PLANTING: HTHolderJeiRecipeType = - HTJeiRecipeType(RagiumRecipeTypes.PLANTING, RagiumBlocks.PLANTER) + val PLANTING: HTRecipeHolderType = create(RagiumConstants.PLANTING) // Electronics @JvmField - val ELECTROLYZING: HTHolderJeiRecipeType = - HTJeiRecipeType(RagiumRecipeTypes.ELECTROLYZING, RagiumBlocks.ELECTROLYZER) + val ELECTROLYZING: HTRecipeHolderType = create(RagiumConstants.ELECTROLYZING) @JvmField - val RESOURCE_EXTRACTING: HTHolderJeiRecipeType = - HTJeiRecipeType(RagiumRecipeTypes.RESOURCE_EXTRACTING, RagiumBlocks.MACHINE_CASING) + val RESOURCE_EXTRACTING: HTRecipeHolderType = + create(RagiumConstants.RESOURCE_EXTRACTING) // Arcane @JvmField - val ENCHANTING: HTHolderJeiRecipeType = - HTJeiRecipeType(RagiumRecipeTypes.ENCHANTING, RagiumBlocks.ENCHANTER) + val ENCHANTING: HTRecipeHolderType = create(RagiumConstants.ENCHANTING) } diff --git a/src/client/kotlin/hiiragi283/ragium/client/integration/jei/category/RTElectrolyzingRecipeCategory.kt b/src/client/kotlin/hiiragi283/ragium/client/integration/jei/category/RTElectrolyzingRecipeCategory.kt index 1b2a91bd9..df218f782 100644 --- a/src/client/kotlin/hiiragi283/ragium/client/integration/jei/category/RTElectrolyzingRecipeCategory.kt +++ b/src/client/kotlin/hiiragi283/ragium/client/integration/jei/category/RTElectrolyzingRecipeCategory.kt @@ -5,7 +5,9 @@ import hiiragi283.lib.integration.jei.add import hiiragi283.lib.integration.jei.category.HTHolderRecipeCategory import hiiragi283.lib.recipe.result.HTFluidResult import hiiragi283.ragium.api.recipe.RTElectrolyzingRecipe +import hiiragi283.ragium.api.recipe.RagiumRecipeTypes import hiiragi283.ragium.client.integration.jei.RagiumJeiRecipeTypes +import hiiragi283.ragium.common.block.RagiumBlocks import mezz.jei.api.gui.builder.IRecipeLayoutBuilder import mezz.jei.api.gui.builder.IRecipeSlotBuilder import mezz.jei.api.gui.widgets.IRecipeExtrasBuilder @@ -14,8 +16,9 @@ import mezz.jei.api.recipe.IFocusGroup class RTElectrolyzingRecipeCategory(guiHelper: IGuiHelper) : HTHolderRecipeCategory( - guiHelper, RagiumJeiRecipeTypes.ELECTROLYZING, + RagiumRecipeTypes.ELECTROLYZING, + guiHelper.createDrawableItemLike(RagiumBlocks.ELECTROLYZER), 18 * 6, 18 * 1, RTElectrolyzingRecipe.CODEC diff --git a/src/client/kotlin/hiiragi283/ragium/client/integration/jei/category/RTEnchantingRecipeCategory.kt b/src/client/kotlin/hiiragi283/ragium/client/integration/jei/category/RTEnchantingRecipeCategory.kt index 5c79c56d4..86bf08fe6 100644 --- a/src/client/kotlin/hiiragi283/ragium/client/integration/jei/category/RTEnchantingRecipeCategory.kt +++ b/src/client/kotlin/hiiragi283/ragium/client/integration/jei/category/RTEnchantingRecipeCategory.kt @@ -3,14 +3,17 @@ package hiiragi283.ragium.client.integration.jei.category import hiiragi283.lib.integration.jei.add import hiiragi283.lib.integration.jei.category.HTDoubleItemToRecipeCategory import hiiragi283.ragium.api.recipe.RTEnchantingRecipe +import hiiragi283.ragium.api.recipe.RagiumRecipeTypes import hiiragi283.ragium.client.integration.jei.RagiumJeiRecipeTypes +import hiiragi283.ragium.common.block.RagiumBlocks import mezz.jei.api.gui.builder.IRecipeSlotBuilder import mezz.jei.api.helpers.IGuiHelper class RTEnchantingRecipeCategory(guiHelper: IGuiHelper) : HTDoubleItemToRecipeCategory( - guiHelper, RagiumJeiRecipeTypes.ENCHANTING, + RagiumRecipeTypes.ENCHANTING, + guiHelper.createDrawableItemLike(RagiumBlocks.ENCHANTER), RTEnchantingRecipe.CODEC ) { override fun setPrimaryInput(builder: IRecipeSlotBuilder, recipe: RTEnchantingRecipe) { diff --git a/src/client/kotlin/hiiragi283/ragium/client/integration/jei/category/RTFreezingRecipeCategory.kt b/src/client/kotlin/hiiragi283/ragium/client/integration/jei/category/RTFreezingRecipeCategory.kt index 54348ab2e..2d99d2db0 100644 --- a/src/client/kotlin/hiiragi283/ragium/client/integration/jei/category/RTFreezingRecipeCategory.kt +++ b/src/client/kotlin/hiiragi283/ragium/client/integration/jei/category/RTFreezingRecipeCategory.kt @@ -1,19 +1,22 @@ package hiiragi283.ragium.client.integration.jei.category import hiiragi283.lib.gui.HTBackgroundType -import hiiragi283.lib.integration.jei.HTHolderJeiRecipeType import hiiragi283.lib.integration.jei.add import hiiragi283.lib.integration.jei.category.HTHolderRecipeCategory import hiiragi283.ragium.api.recipe.RTFreezingRecipe +import hiiragi283.ragium.api.recipe.RagiumRecipeTypes +import hiiragi283.ragium.client.integration.jei.RagiumJeiRecipeTypes +import hiiragi283.ragium.common.block.RagiumBlocks import mezz.jei.api.gui.builder.IRecipeLayoutBuilder import mezz.jei.api.gui.widgets.IRecipeExtrasBuilder import mezz.jei.api.helpers.IGuiHelper import mezz.jei.api.recipe.IFocusGroup -class RTFreezingRecipeCategory(guiHelper: IGuiHelper, recipeType: HTHolderJeiRecipeType) : +class RTFreezingRecipeCategory(guiHelper: IGuiHelper) : HTHolderRecipeCategory( - guiHelper, - recipeType, + RagiumJeiRecipeTypes.FREEZING, + RagiumRecipeTypes.FREEZING, + guiHelper.createDrawableItemLike(RagiumBlocks.FREEZER), 18 * 6, 18 * 1, RTFreezingRecipe.CODEC diff --git a/src/client/kotlin/hiiragi283/ragium/client/integration/jei/category/RTMixingRecipeCategory.kt b/src/client/kotlin/hiiragi283/ragium/client/integration/jei/category/RTMixingRecipeCategory.kt index f738b11c6..82d5cadb5 100644 --- a/src/client/kotlin/hiiragi283/ragium/client/integration/jei/category/RTMixingRecipeCategory.kt +++ b/src/client/kotlin/hiiragi283/ragium/client/integration/jei/category/RTMixingRecipeCategory.kt @@ -4,7 +4,9 @@ import hiiragi283.lib.gui.HTBackgroundType import hiiragi283.lib.integration.jei.add import hiiragi283.lib.integration.jei.category.HTHolderRecipeCategory import hiiragi283.ragium.api.recipe.RTMixingRecipe +import hiiragi283.ragium.api.recipe.RagiumRecipeTypes import hiiragi283.ragium.client.integration.jei.RagiumJeiRecipeTypes +import hiiragi283.ragium.common.block.RagiumBlocks import mezz.jei.api.gui.builder.IRecipeLayoutBuilder import mezz.jei.api.gui.builder.IRecipeSlotBuilder import mezz.jei.api.gui.widgets.IRecipeExtrasBuilder @@ -13,8 +15,9 @@ import mezz.jei.api.recipe.IFocusGroup class RTMixingRecipeCategory(guiHelper: IGuiHelper) : HTHolderRecipeCategory( - guiHelper, RagiumJeiRecipeTypes.MIXING, + RagiumRecipeTypes.MIXING, + guiHelper.createDrawableItemLike(RagiumBlocks.MIXER), 18 * 9, 18 * 1, RTMixingRecipe.CODEC diff --git a/src/client/kotlin/hiiragi283/ragium/client/integration/jei/category/RTReactingRecipeCategory.kt b/src/client/kotlin/hiiragi283/ragium/client/integration/jei/category/RTReactingRecipeCategory.kt index b91f15c79..0bc7a5ad4 100644 --- a/src/client/kotlin/hiiragi283/ragium/client/integration/jei/category/RTReactingRecipeCategory.kt +++ b/src/client/kotlin/hiiragi283/ragium/client/integration/jei/category/RTReactingRecipeCategory.kt @@ -4,7 +4,9 @@ import hiiragi283.lib.gui.HTBackgroundType import hiiragi283.lib.integration.jei.add import hiiragi283.lib.integration.jei.category.HTHolderRecipeCategory import hiiragi283.ragium.api.recipe.RTReactingRecipe +import hiiragi283.ragium.api.recipe.RagiumRecipeTypes import hiiragi283.ragium.client.integration.jei.RagiumJeiRecipeTypes +import hiiragi283.ragium.common.block.RagiumBlocks import mezz.jei.api.gui.builder.IRecipeLayoutBuilder import mezz.jei.api.gui.builder.IRecipeSlotBuilder import mezz.jei.api.gui.widgets.IRecipeExtrasBuilder @@ -13,8 +15,9 @@ import mezz.jei.api.recipe.IFocusGroup class RTReactingRecipeCategory(guiHelper: IGuiHelper) : HTHolderRecipeCategory( - guiHelper, RagiumJeiRecipeTypes.REACTING, + RagiumRecipeTypes.REACTING, + guiHelper.createDrawableItemLike(RagiumBlocks.CHEMICAL_REACTOR), 18 * 8, 18 * 1, RTReactingRecipe.Basic.CODEC diff --git a/src/client/kotlin/hiiragi283/ragium/client/integration/jei/category/RTResourceExtractingRecipeCategory.kt b/src/client/kotlin/hiiragi283/ragium/client/integration/jei/category/RTResourceExtractingRecipeCategory.kt index 64ccdcd63..8c3eaf2ca 100644 --- a/src/client/kotlin/hiiragi283/ragium/client/integration/jei/category/RTResourceExtractingRecipeCategory.kt +++ b/src/client/kotlin/hiiragi283/ragium/client/integration/jei/category/RTResourceExtractingRecipeCategory.kt @@ -6,7 +6,9 @@ import hiiragi283.lib.integration.jei.category.HTHolderRecipeCategory import hiiragi283.lib.recipe.ingredient.HTBiomeCondition import hiiragi283.lib.recipe.ingredient.HTStackPreview import hiiragi283.ragium.api.recipe.RTResourceExtractingRecipe +import hiiragi283.ragium.api.recipe.RagiumRecipeTypes import hiiragi283.ragium.client.integration.jei.RagiumJeiRecipeTypes +import hiiragi283.ragium.common.block.RagiumBlocks import mezz.jei.api.gui.builder.IRecipeLayoutBuilder import mezz.jei.api.gui.widgets.IRecipeExtrasBuilder import mezz.jei.api.helpers.IGuiHelper @@ -23,8 +25,9 @@ import net.minecraft.world.level.biome.Biome class RTResourceExtractingRecipeCategory(guiHelper: IGuiHelper) : HTHolderRecipeCategory( - guiHelper, RagiumJeiRecipeTypes.RESOURCE_EXTRACTING, + RagiumRecipeTypes.RESOURCE_EXTRACTING, + guiHelper.createDrawableItemLike(RagiumBlocks.MACHINE_CASING), 18 * 4, 18 * 1, RTResourceExtractingRecipe.CODEC diff --git a/src/client/kotlin/hiiragi283/ragium/client/integration/jei/category/RTWashingRecipeCategory.kt b/src/client/kotlin/hiiragi283/ragium/client/integration/jei/category/RTWashingRecipeCategory.kt index bbf191ac6..d9fb6cf43 100644 --- a/src/client/kotlin/hiiragi283/ragium/client/integration/jei/category/RTWashingRecipeCategory.kt +++ b/src/client/kotlin/hiiragi283/ragium/client/integration/jei/category/RTWashingRecipeCategory.kt @@ -4,7 +4,9 @@ import hiiragi283.lib.gui.HTBackgroundType import hiiragi283.lib.integration.jei.add import hiiragi283.lib.integration.jei.category.HTHolderRecipeCategory import hiiragi283.ragium.api.recipe.RTWashingRecipe +import hiiragi283.ragium.api.recipe.RagiumRecipeTypes import hiiragi283.ragium.client.integration.jei.RagiumJeiRecipeTypes +import hiiragi283.ragium.common.block.RagiumBlocks import mezz.jei.api.gui.builder.IRecipeLayoutBuilder import mezz.jei.api.gui.builder.IRecipeSlotBuilder import mezz.jei.api.gui.widgets.IRecipeExtrasBuilder @@ -13,8 +15,9 @@ import mezz.jei.api.recipe.IFocusGroup class RTWashingRecipeCategory(guiHelper: IGuiHelper) : HTHolderRecipeCategory( - guiHelper, RagiumJeiRecipeTypes.WASHING, + RagiumRecipeTypes.WASHING, + guiHelper.createDrawableItemLike(RagiumBlocks.MACHINE_CASING), 18 * 8, 18 * 1, RTWashingRecipe.CODEC diff --git a/src/libClient/kotlin/hiiragi283/lib/integration/jei/HTJeiDrawables.kt b/src/libClient/kotlin/hiiragi283/lib/integration/jei/HTJeiDrawables.kt index 706ed014d..34f36f867 100644 --- a/src/libClient/kotlin/hiiragi283/lib/integration/jei/HTJeiDrawables.kt +++ b/src/libClient/kotlin/hiiragi283/lib/integration/jei/HTJeiDrawables.kt @@ -2,6 +2,7 @@ package hiiragi283.lib.integration.jei import hiiragi283.lib.collection.mutableEnumMapOf import hiiragi283.lib.gui.HTBackgroundType +import hiiragi283.lib.util.HTDelegates import mezz.jei.api.gui.drawable.IDrawable import mezz.jei.api.helpers.IGuiHelper @@ -10,34 +11,40 @@ import mezz.jei.api.helpers.IGuiHelper * @author Hiiragi Tsubasa * @since 26.1.0 */ -object HTJeiDrawables { +data object HTJeiDrawables { @JvmStatic - private val SLOTS: MutableMap = mutableEnumMapOf() + var slots: Map by HTDelegates.onceInitialize() + private set @JvmStatic - private val TANKS: MutableMap = mutableEnumMapOf() + var tanks: Map by HTDelegates.onceInitialize() + private set - /** - * スロットの背景スプライトを取得します。 - */ @JvmStatic - fun getSlot(type: HTBackgroundType, guiHelper: IGuiHelper): IDrawable = - SLOTS.computeIfAbsent(type) { typeIn: HTBackgroundType -> + fun init(guiHelper: IGuiHelper) { + slots = HTBackgroundType.entries.associateWithTo(mutableEnumMapOf()) { type: HTBackgroundType -> + guiHelper + .drawableBuilder(type.slotTexture, 0, 0, 18, 18) + .setTextureSize(18, 18) + .build() + } + tanks = HTBackgroundType.entries.associateWithTo(mutableEnumMapOf()) { type: HTBackgroundType -> guiHelper - .drawableBuilder(typeIn.slotTexture, 0, 0, 18, 18) + .drawableBuilder(type.tankTexture, 0, 0, 18, 18 * 3) .setTextureSize(18, 18) .build() } + } + + /** + * スロットの背景スプライトを取得します。 + */ + @JvmStatic + fun getSlot(type: HTBackgroundType): IDrawable = slots[type]!! /** * タンクの背景スプライトを取得します。 */ @JvmStatic - fun getTank(type: HTBackgroundType, guiHelper: IGuiHelper): IDrawable = - TANKS.computeIfAbsent(type) { typeIn: HTBackgroundType -> - guiHelper - .drawableBuilder(typeIn.tankTexture, 0, 0, 18, 18 * 3) - .setTextureSize(18, 18 * 3) - .build() - } + fun getTank(type: HTBackgroundType): IDrawable = tanks[type]!! } diff --git a/src/libClient/kotlin/hiiragi283/lib/integration/jei/HTJeiRecipeType.kt b/src/libClient/kotlin/hiiragi283/lib/integration/jei/HTJeiRecipeType.kt deleted file mode 100644 index 169ae3030..000000000 --- a/src/libClient/kotlin/hiiragi283/lib/integration/jei/HTJeiRecipeType.kt +++ /dev/null @@ -1,63 +0,0 @@ -package hiiragi283.lib.integration.jei - -import hiiragi283.lib.item.HTItemInstanceLike -import hiiragi283.lib.recipe.HTRecipeHolder -import hiiragi283.lib.text.HTHasText -import hiiragi283.lib.text.translatableText -import hiiragi283.lib.util.Either -import mezz.jei.api.recipe.types.IRecipeType -import net.minecraft.core.registries.BuiltInRegistries -import net.minecraft.resources.Identifier -import net.minecraft.world.item.ItemStack -import net.minecraft.world.item.crafting.RecipeType - -/** - * [HTRecipeHolder]向けの[HTJeiRecipeType]のエイリアスです。 - * @author Hiiragi Tsubasa - * @since 26.1.0 - */ -typealias HTHolderJeiRecipeType = HTJeiRecipeType> - -/** - * Hiiragi Seriesで使用される[IRecipeType]の実装クラスです。 - * @param T 対象のレシピのクラス - * @author Hiiragi Tsubasa - * @since 26.1.0 - */ -@Suppress("NonExtendableApiUsage") -class HTJeiRecipeType( - private val id: Identifier, - hasText: HTHasText, - val icon: Either, - private val recipeClass: Class -) : IRecipeType, - HTHasText by hasText { - override fun getUid(): Identifier = id - - override fun getRecipeClass(): Class = recipeClass - - override fun toString(): String = "HTJeiRecipeType(uid=$uid)" -} - -/** - * @author Hiiragi Tsubasa - * @since 26.1.0 - */ -inline fun HTJeiRecipeType( - id: Identifier, - hasText: HTHasText, - icon: Either -): HTJeiRecipeType = HTJeiRecipeType(id, hasText, icon, T::class.java) - -/** - * @author Hiiragi Tsubasa - * @since 26.1.8 - */ -inline fun HTJeiRecipeType(type: RecipeType<*>, icon: HTItemInstanceLike): HTJeiRecipeType { - val id: Identifier = BuiltInRegistries.RECIPE_TYPE.getKeyOrNull(type) ?: error("Unregistered recipe type: $type") - return HTJeiRecipeType( - id, - HTHasText { translatableText(id.toLanguageKey("recipe_type")) }, - Either.Right(icon.toStack()) - ) -} diff --git a/src/libClient/kotlin/hiiragi283/lib/integration/jei/JeiExtensions.kt b/src/libClient/kotlin/hiiragi283/lib/integration/jei/JeiExtensions.kt index 9d73e17be..66633ba72 100644 --- a/src/libClient/kotlin/hiiragi283/lib/integration/jei/JeiExtensions.kt +++ b/src/libClient/kotlin/hiiragi283/lib/integration/jei/JeiExtensions.kt @@ -1,74 +1,88 @@ package hiiragi283.lib.integration.jei +import hiiragi283.lib.recipe.HTRecipeHolder import hiiragi283.lib.recipe.ingredient.HTStackPreview import hiiragi283.lib.recipe.result.HTFluidResult import hiiragi283.lib.recipe.result.HTItemResult -import mezz.jei.api.gui.builder.IIngredientAcceptor +import mezz.jei.api.gui.builder.IRecipeSlotBuilder import mezz.jei.api.neoforge.NeoForgeTypes +import mezz.jei.api.recipe.types.IRecipeType +import net.minecraft.resources.Identifier import net.minecraft.world.item.ItemStack import net.neoforged.neoforge.fluids.FluidStack +// IRecipeType // + +/** + * @param T JEIに登録するレシピのクラス + * @author Hiiragi Tsubasa + * @since 26.1.8 + */ +typealias HTRecipeHolderType = IRecipeType> + +/** + * 新しい[IRecipeType]のインスタンスを作成します。 + * @param T JEIに登録するレシピのクラス + * @author Hiiragi Tsubasa + * @since 26.1.8 + */ +inline fun IRecipeType(id: Identifier): IRecipeType = IRecipeType.create(id, T::class.java) + // IIngredientAcceptor // // Fluid + /** * 液体を登録します。 - * @param T 液体の登録先 * @param stack 登録する液体 * @author Hiiragi Tsubasa * @since 26.1.0 */ -fun > T.add(stack: FluidStack): T = - this.add(stack.fluid, stack.amount.toLong(), stack.componentsPatch) +fun IRecipeSlotBuilder.add(stack: FluidStack): IRecipeSlotBuilder = this.add(NeoForgeTypes.FLUID_STACK, stack) /** * 液体を登録します。 - * @param T 液体の登録先 * @param stacks 登録する液体の一覧 * @author Hiiragi Tsubasa * @since 26.1.0 */ -fun > T.addFluidStacks(stacks: Iterable): T = +fun IRecipeSlotBuilder.addFluidStacks(stacks: Iterable): IRecipeSlotBuilder = this.addIngredients(NeoForgeTypes.FLUID_STACK, stacks.toList()) /** * 液体を登録します。 - * @param T 液体の登録先 * @param ingredient 登録する液体の一覧 * @author Hiiragi Tsubasa * @since 26.1.0 */ @JvmName("addFluids") -fun > T.add(ingredient: HTStackPreview): T = +fun IRecipeSlotBuilder.add(ingredient: HTStackPreview): IRecipeSlotBuilder = this.addFluidStacks(ingredient.getPreviewStacks(this.contextMap)) /** * 液体を登録します。 - * @param T 液体の登録先 * @param result 登録する液体 * @author Hiiragi Tsubasa * @since 26.1.0 */ -fun > T.add(result: HTFluidResult): T = this.add(result.create()) +fun IRecipeSlotBuilder.add(result: HTFluidResult): IRecipeSlotBuilder = this.add(result.create()) // Item /** * アイテムを登録します。 - * @param T アイテムの登録先 * @param ingredient 登録するアイテムの一覧 * @author Hiiragi Tsubasa - * @since 26.1.0 + * @since 26.1.8 */ @JvmName("addItems") -fun > T.add(ingredient: HTStackPreview): T = - this.addItemStacks(ingredient.getPreviewStacks(this.contextMap)) +fun IRecipeSlotBuilder.add(ingredient: HTStackPreview): IRecipeSlotBuilder = + addItemStacks(ingredient.getPreviewStacks(this.contextMap)) /** * アイテムを登録します。 - * @param T アイテムの登録先 * @param result 登録するアイテム * @author Hiiragi Tsubasa * @since 26.1.0 */ -fun > T.add(result: HTItemResult): T = this.add(result.create()) +fun IRecipeSlotBuilder.add(result: HTItemResult): IRecipeSlotBuilder = this.add(result.create()) diff --git a/src/libClient/kotlin/hiiragi283/lib/integration/jei/category/HTBasicRecipeCategory.kt b/src/libClient/kotlin/hiiragi283/lib/integration/jei/category/HTBasicRecipeCategory.kt index defa8cd86..3f3efbe7c 100644 --- a/src/libClient/kotlin/hiiragi283/lib/integration/jei/category/HTBasicRecipeCategory.kt +++ b/src/libClient/kotlin/hiiragi283/lib/integration/jei/category/HTBasicRecipeCategory.kt @@ -3,27 +3,27 @@ package hiiragi283.lib.integration.jei.category import com.mojang.serialization.Codec import hiiragi283.lib.gui.HTBackgroundType import hiiragi283.lib.integration.jei.HTJeiDrawables -import hiiragi283.lib.integration.jei.HTJeiRecipeType import hiiragi283.lib.integration.jei.ingredient.HTFluidSlotRenderer import hiiragi283.lib.recipe.base.HTProgressData import hiiragi283.lib.recipe.base.HTProgressRecipe +import hiiragi283.lib.registry.getKeyOrThrow +import hiiragi283.lib.resource.toLanguageKey import hiiragi283.lib.text.Text -import hiiragi283.lib.util.Either -import mezz.jei.api.constants.VanillaTypes +import hiiragi283.lib.text.translatableText import mezz.jei.api.gui.builder.IRecipeLayoutBuilder import mezz.jei.api.gui.builder.IRecipeSlotBuilder import mezz.jei.api.gui.drawable.IDrawable import mezz.jei.api.gui.widgets.IDrawableWidget import mezz.jei.api.gui.widgets.IRecipeExtrasBuilder import mezz.jei.api.helpers.ICodecHelper -import mezz.jei.api.helpers.IGuiHelper import mezz.jei.api.neoforge.NeoForgeTypes import mezz.jei.api.recipe.IFocusGroup import mezz.jei.api.recipe.IRecipeManager import mezz.jei.api.recipe.category.IRecipeCategory import mezz.jei.api.recipe.types.IRecipeType +import net.minecraft.core.registries.BuiltInRegistries import net.minecraft.resources.Identifier -import net.minecraft.world.item.ItemStack +import net.minecraft.world.item.crafting.RecipeType /** * Hiiragi Seriesで使用される[IRecipeCategory]の拡張クラスです。 @@ -33,26 +33,22 @@ import net.minecraft.world.item.ItemStack * @since 26.1.0 */ abstract class HTBasicRecipeCategory( - private val guiHelper: IGuiHelper, private val recipeType: IRecipeType, private val title: Text, private val icon: IDrawable, private val width: Int, private val height: Int ) : IRecipeCategory { - companion object { - @JvmStatic - protected fun createIcon(guiHelper: IGuiHelper, icon: Either): IDrawable = icon.fold( - { id: Identifier -> guiHelper.drawableBuilder(id, 0, 0, 18, 18).setTextureSize(18, 18).build() }, - { stack: ItemStack -> guiHelper.createDrawableIngredient(VanillaTypes.ITEM_STACK, stack) } - ) - } - - constructor(guiHelper: IGuiHelper, recipeType: HTJeiRecipeType, width: Int, height: Int) : this( - guiHelper, + constructor( + recipeType: IRecipeType, + recipeType1: RecipeType<*>, + icon: IDrawable, + width: Int, + height: Int + ) : this( recipeType, - recipeType.getText(), - createIcon(guiHelper, recipeType.icon), + translatableText(BuiltInRegistries.RECIPE_TYPE.wrapAsHolder(recipeType1).getKeyOrThrow().toLanguageKey()), + icon, width, height ) @@ -94,7 +90,7 @@ abstract class HTBasicRecipeCategory( // IRecipeSlotBuilder protected fun IRecipeSlotBuilder.setSlotBackground(type: HTBackgroundType): IRecipeSlotBuilder = this - .setBackground(HTJeiDrawables.getSlot(type, guiHelper), -1, -1) + .setBackground(HTJeiDrawables.getSlot(type), -1, -1) .setSlotName(type.name) .setCustomRenderer(NeoForgeTypes.FLUID_STACK, HTFluidSlotRenderer) diff --git a/src/libClient/kotlin/hiiragi283/lib/integration/jei/category/HTDoubleItemToRecipeCategory.kt b/src/libClient/kotlin/hiiragi283/lib/integration/jei/category/HTDoubleItemToRecipeCategory.kt index acec6253a..b046daf44 100644 --- a/src/libClient/kotlin/hiiragi283/lib/integration/jei/category/HTDoubleItemToRecipeCategory.kt +++ b/src/libClient/kotlin/hiiragi283/lib/integration/jei/category/HTDoubleItemToRecipeCategory.kt @@ -2,25 +2,27 @@ package hiiragi283.lib.integration.jei.category import com.mojang.serialization.MapCodec import hiiragi283.lib.gui.HTBackgroundType -import hiiragi283.lib.integration.jei.HTHolderJeiRecipeType +import hiiragi283.lib.integration.jei.HTRecipeHolderType import hiiragi283.lib.integration.jei.add import hiiragi283.lib.recipe.base.HTDoubleItemToItemRecipe import hiiragi283.lib.recipe.base.HTProgressRecipe import mezz.jei.api.gui.builder.IRecipeLayoutBuilder import mezz.jei.api.gui.builder.IRecipeSlotBuilder +import mezz.jei.api.gui.drawable.IDrawable import mezz.jei.api.gui.widgets.IRecipeExtrasBuilder -import mezz.jei.api.helpers.IGuiHelper import mezz.jei.api.recipe.IFocusGroup +import net.minecraft.world.item.crafting.RecipeType /** * @author Hiiragi Tsubasa * @since 26.1.6 */ abstract class HTDoubleItemToRecipeCategory>( - guiHelper: IGuiHelper, - recipeType: HTHolderJeiRecipeType, + recipeType: HTRecipeHolderType, + recipeType1: RecipeType<*>, + icon: IDrawable, codec: MapCodec -) : HTHolderRecipeCategory(guiHelper, recipeType, 18 * 6, 18 * 1, codec) { +) : HTHolderRecipeCategory(recipeType, recipeType1, icon, 18 * 6, 18 * 1, codec) { override fun setupRecipe(builder: IRecipeLayoutBuilder, recipe: RECIPE, focuses: IFocusGroup) { // input setPrimaryInput( @@ -57,12 +59,16 @@ abstract class HTDoubleItemToRecipeCategory> // Basic // - class Basic(guiHelper: IGuiHelper, recipeType: HTHolderJeiRecipeType) : - HTDoubleItemToRecipeCategory( - guiHelper, - recipeType, - HTDoubleItemToItemRecipe.Basic.SIMPLE_CODEC - ) { + class Basic( + recipeType: HTRecipeHolderType, + recipeType1: RecipeType<*>, + icon: IDrawable + ) : HTDoubleItemToRecipeCategory( + recipeType, + recipeType1, + icon, + HTDoubleItemToItemRecipe.Basic.SIMPLE_CODEC + ) { override fun setPrimaryInput(builder: IRecipeSlotBuilder, recipe: HTDoubleItemToItemRecipe.Basic) { builder.add(recipe.primary) } diff --git a/src/libClient/kotlin/hiiragi283/lib/integration/jei/category/HTHolderRecipeCategory.kt b/src/libClient/kotlin/hiiragi283/lib/integration/jei/category/HTHolderRecipeCategory.kt index f991bd7e7..1cde0dd9c 100644 --- a/src/libClient/kotlin/hiiragi283/lib/integration/jei/category/HTHolderRecipeCategory.kt +++ b/src/libClient/kotlin/hiiragi283/lib/integration/jei/category/HTHolderRecipeCategory.kt @@ -2,15 +2,16 @@ package hiiragi283.lib.integration.jei.category import com.mojang.serialization.Codec import com.mojang.serialization.MapCodec -import hiiragi283.lib.integration.jei.HTHolderJeiRecipeType +import hiiragi283.lib.integration.jei.HTRecipeHolderType import hiiragi283.lib.recipe.HTRecipeHolder import mezz.jei.api.gui.builder.IRecipeLayoutBuilder +import mezz.jei.api.gui.drawable.IDrawable import mezz.jei.api.gui.widgets.IRecipeExtrasBuilder import mezz.jei.api.helpers.ICodecHelper -import mezz.jei.api.helpers.IGuiHelper import mezz.jei.api.recipe.IFocusGroup import mezz.jei.api.recipe.IRecipeManager import net.minecraft.resources.Identifier +import net.minecraft.world.item.crafting.RecipeType /** * [HTRecipeHolder]に基づいた[HTBasicRecipeCategory]の拡張クラスです。 @@ -18,21 +19,24 @@ import net.minecraft.resources.Identifier * @since 26.1.0 */ abstract class HTHolderRecipeCategory( - guiHelper: IGuiHelper, - recipeType: HTHolderJeiRecipeType, + recipeType: HTRecipeHolderType, + recipeType1: RecipeType<*>, + icon: IDrawable, width: Int, height: Int, private val codec: Codec> -) : HTBasicRecipeCategory>(guiHelper, recipeType, width, height) { +) : HTBasicRecipeCategory>(recipeType, recipeType1, icon, width, height) { constructor( - guiHelper: IGuiHelper, - recipeType: HTHolderJeiRecipeType, + recipeType: HTRecipeHolderType, + recipeType1: RecipeType<*>, + icon: IDrawable, width: Int, height: Int, codec: MapCodec ) : this( - guiHelper, recipeType, + recipeType1, + icon, width, height, HTRecipeHolder.codec(codec) diff --git a/src/libClient/kotlin/hiiragi283/lib/integration/jei/category/HTItemAndFluidToFluidRecipeCategory.kt b/src/libClient/kotlin/hiiragi283/lib/integration/jei/category/HTItemAndFluidToFluidRecipeCategory.kt index 85f68b30e..aa69a4c13 100644 --- a/src/libClient/kotlin/hiiragi283/lib/integration/jei/category/HTItemAndFluidToFluidRecipeCategory.kt +++ b/src/libClient/kotlin/hiiragi283/lib/integration/jei/category/HTItemAndFluidToFluidRecipeCategory.kt @@ -1,20 +1,23 @@ package hiiragi283.lib.integration.jei.category import hiiragi283.lib.gui.HTBackgroundType -import hiiragi283.lib.integration.jei.HTHolderJeiRecipeType +import hiiragi283.lib.integration.jei.HTRecipeHolderType import hiiragi283.lib.integration.jei.add import hiiragi283.lib.recipe.base.HTItemAndFluidToRecipe import mezz.jei.api.gui.builder.IRecipeLayoutBuilder +import mezz.jei.api.gui.drawable.IDrawable import mezz.jei.api.gui.widgets.IRecipeExtrasBuilder -import mezz.jei.api.helpers.IGuiHelper import mezz.jei.api.recipe.IFocusGroup +import net.minecraft.world.item.crafting.RecipeType class HTItemAndFluidToFluidRecipeCategory( - guiHelper: IGuiHelper, - recipeType: HTHolderJeiRecipeType + recipeType: HTRecipeHolderType, + recipeType1: RecipeType<*>, + icon: IDrawable ) : HTHolderRecipeCategory( - guiHelper, recipeType, + recipeType1, + icon, 18 * 6, 18 * 1, HTItemAndFluidToRecipe.BasicFluid.SIMPLE_CODEC diff --git a/src/libClient/kotlin/hiiragi283/lib/integration/jei/category/HTItemAndFluidToItemRecipeCategory.kt b/src/libClient/kotlin/hiiragi283/lib/integration/jei/category/HTItemAndFluidToItemRecipeCategory.kt index 297c56d54..524845291 100644 --- a/src/libClient/kotlin/hiiragi283/lib/integration/jei/category/HTItemAndFluidToItemRecipeCategory.kt +++ b/src/libClient/kotlin/hiiragi283/lib/integration/jei/category/HTItemAndFluidToItemRecipeCategory.kt @@ -1,20 +1,23 @@ package hiiragi283.lib.integration.jei.category import hiiragi283.lib.gui.HTBackgroundType -import hiiragi283.lib.integration.jei.HTHolderJeiRecipeType +import hiiragi283.lib.integration.jei.HTRecipeHolderType import hiiragi283.lib.integration.jei.add import hiiragi283.lib.recipe.base.HTItemAndFluidToRecipe import mezz.jei.api.gui.builder.IRecipeLayoutBuilder +import mezz.jei.api.gui.drawable.IDrawable import mezz.jei.api.gui.widgets.IRecipeExtrasBuilder -import mezz.jei.api.helpers.IGuiHelper import mezz.jei.api.recipe.IFocusGroup +import net.minecraft.world.item.crafting.RecipeType class HTItemAndFluidToItemRecipeCategory( - guiHelper: IGuiHelper, - recipeType: HTHolderJeiRecipeType + recipeType: HTRecipeHolderType, + recipeType1: RecipeType<*>, + icon: IDrawable ) : HTHolderRecipeCategory( - guiHelper, recipeType, + recipeType1, + icon, 18 * 6, 18 * 1, HTItemAndFluidToRecipe.BasicItem.SIMPLE_CODEC diff --git a/src/libClient/kotlin/hiiragi283/lib/integration/jei/category/HTItemToDoubleItemRecipeCategory.kt b/src/libClient/kotlin/hiiragi283/lib/integration/jei/category/HTItemToDoubleItemRecipeCategory.kt index 8ca08995c..52fc1766b 100644 --- a/src/libClient/kotlin/hiiragi283/lib/integration/jei/category/HTItemToDoubleItemRecipeCategory.kt +++ b/src/libClient/kotlin/hiiragi283/lib/integration/jei/category/HTItemToDoubleItemRecipeCategory.kt @@ -1,21 +1,24 @@ package hiiragi283.lib.integration.jei.category import hiiragi283.lib.gui.HTBackgroundType -import hiiragi283.lib.integration.jei.HTHolderJeiRecipeType +import hiiragi283.lib.integration.jei.HTRecipeHolderType import hiiragi283.lib.integration.jei.add import hiiragi283.lib.recipe.base.HTItemToDoubleItemRecipe import mezz.jei.api.gui.builder.IRecipeLayoutBuilder import mezz.jei.api.gui.builder.IRecipeSlotBuilder +import mezz.jei.api.gui.drawable.IDrawable import mezz.jei.api.gui.widgets.IRecipeExtrasBuilder -import mezz.jei.api.helpers.IGuiHelper import mezz.jei.api.recipe.IFocusGroup +import net.minecraft.world.item.crafting.RecipeType class HTItemToDoubleItemRecipeCategory( - guiHelper: IGuiHelper, - recipeType: HTHolderJeiRecipeType + recipeType: HTRecipeHolderType, + recipeType1: RecipeType<*>, + icon: IDrawable ) : HTHolderRecipeCategory( - guiHelper, recipeType, + recipeType1, + icon, 18 * 6, 18 * 1, HTItemToDoubleItemRecipe.Basic.SIMPLE_CODEC diff --git a/src/libClient/kotlin/hiiragi283/lib/integration/jei/category/HTSingleRecipeCategory.kt b/src/libClient/kotlin/hiiragi283/lib/integration/jei/category/HTSingleRecipeCategory.kt index 8b7d7f122..f043dfc21 100644 --- a/src/libClient/kotlin/hiiragi283/lib/integration/jei/category/HTSingleRecipeCategory.kt +++ b/src/libClient/kotlin/hiiragi283/lib/integration/jei/category/HTSingleRecipeCategory.kt @@ -2,26 +2,28 @@ package hiiragi283.lib.integration.jei.category import com.mojang.serialization.MapCodec import hiiragi283.lib.gui.HTBackgroundType -import hiiragi283.lib.integration.jei.HTHolderJeiRecipeType +import hiiragi283.lib.integration.jei.HTRecipeHolderType import hiiragi283.lib.integration.jei.add import hiiragi283.lib.recipe.base.HTBasicSingleRecipe import hiiragi283.lib.recipe.base.HTFluidToRecipe import hiiragi283.lib.recipe.base.HTItemToRecipe import mezz.jei.api.gui.builder.IRecipeLayoutBuilder import mezz.jei.api.gui.builder.IRecipeSlotBuilder +import mezz.jei.api.gui.drawable.IDrawable import mezz.jei.api.gui.widgets.IRecipeExtrasBuilder -import mezz.jei.api.helpers.IGuiHelper import mezz.jei.api.recipe.IFocusGroup +import net.minecraft.world.item.crafting.RecipeType /** * @author Hiiragi Tsubasa * @since 26.1.6 */ abstract class HTSingleRecipeCategory>( - guiHelper: IGuiHelper, - recipeType: HTHolderJeiRecipeType, + recipeType: HTRecipeHolderType, + recipeType1: RecipeType<*>, + icon: IDrawable, codec: MapCodec -) : HTHolderRecipeCategory(guiHelper, recipeType, 18 * 4, 18 * 1, codec) { +) : HTHolderRecipeCategory(recipeType, recipeType1, icon, 18 * 4, 18 * 1, codec) { override fun setupRecipe(builder: IRecipeLayoutBuilder, recipe: RECIPE, focuses: IFocusGroup) { // input setInput( @@ -53,12 +55,16 @@ abstract class HTSingleRecipeCategory>( * @author Hiiragi Tsubasa * @since 26.1.6 */ - class FluidToFluid(guiHelper: IGuiHelper, recipeType: HTHolderJeiRecipeType) : - HTSingleRecipeCategory( - guiHelper, - recipeType, - HTFluidToRecipe.BasicFluid.SIMPLE_CODEC - ) { + class FluidToFluid( + recipeType: HTRecipeHolderType, + recipeType1: RecipeType<*>, + icon: IDrawable + ) : HTSingleRecipeCategory( + recipeType, + recipeType1, + icon, + HTFluidToRecipe.BasicFluid.SIMPLE_CODEC + ) { override fun setInput(builder: IRecipeSlotBuilder, recipe: HTFluidToRecipe.BasicFluid) { builder.add(recipe.ingredient) } @@ -74,12 +80,16 @@ abstract class HTSingleRecipeCategory>( * @author Hiiragi Tsubasa * @since 26.1.6 */ - class FluidToItem(guiHelper: IGuiHelper, recipeType: HTHolderJeiRecipeType) : - HTSingleRecipeCategory( - guiHelper, - recipeType, - HTFluidToRecipe.BasicItem.SIMPLE_CODEC - ) { + class FluidToItem( + recipeType: HTRecipeHolderType, + recipeType1: RecipeType<*>, + icon: IDrawable + ) : HTSingleRecipeCategory( + recipeType, + recipeType1, + icon, + HTFluidToRecipe.BasicItem.SIMPLE_CODEC + ) { override fun setInput(builder: IRecipeSlotBuilder, recipe: HTFluidToRecipe.BasicItem) { builder.add(recipe.ingredient) } @@ -95,12 +105,16 @@ abstract class HTSingleRecipeCategory>( * @author Hiiragi Tsubasa * @since 26.1.6 */ - class ItemToFluid(guiHelper: IGuiHelper, recipeType: HTHolderJeiRecipeType) : - HTSingleRecipeCategory( - guiHelper, - recipeType, - HTItemToRecipe.BasicFluid.SIMPLE_CODEC - ) { + class ItemToFluid( + recipeType: HTRecipeHolderType, + recipeType1: RecipeType<*>, + icon: IDrawable + ) : HTSingleRecipeCategory( + recipeType, + recipeType1, + icon, + HTItemToRecipe.BasicFluid.SIMPLE_CODEC + ) { override fun setInput(builder: IRecipeSlotBuilder, recipe: HTItemToRecipe.BasicFluid) { builder.add(recipe.ingredient) } @@ -116,8 +130,16 @@ abstract class HTSingleRecipeCategory>( * @author Hiiragi Tsubasa * @since 26.1.6 */ - class ItemToItem(guiHelper: IGuiHelper, recipeType: HTHolderJeiRecipeType) : - HTSingleRecipeCategory(guiHelper, recipeType, HTItemToRecipe.BasicItem.SIMPLE_CODEC) { + class ItemToItem( + recipeType: HTRecipeHolderType, + recipeType1: RecipeType<*>, + icon: IDrawable + ) : HTSingleRecipeCategory( + recipeType, + recipeType1, + icon, + HTItemToRecipe.BasicItem.SIMPLE_CODEC + ) { override fun setInput(builder: IRecipeSlotBuilder, recipe: HTItemToRecipe.BasicItem) { builder.add(recipe.ingredient) } diff --git a/src/libClient/kotlin/hiiragi283/lib/integration/jei/category/HTSingleToItemAndFluidRecipeCategory.kt b/src/libClient/kotlin/hiiragi283/lib/integration/jei/category/HTSingleToItemAndFluidRecipeCategory.kt index 7d8b2f2b0..9faea0bf2 100644 --- a/src/libClient/kotlin/hiiragi283/lib/integration/jei/category/HTSingleToItemAndFluidRecipeCategory.kt +++ b/src/libClient/kotlin/hiiragi283/lib/integration/jei/category/HTSingleToItemAndFluidRecipeCategory.kt @@ -2,7 +2,7 @@ package hiiragi283.lib.integration.jei.category import com.mojang.serialization.MapCodec import hiiragi283.lib.gui.HTBackgroundType -import hiiragi283.lib.integration.jei.HTHolderJeiRecipeType +import hiiragi283.lib.integration.jei.HTRecipeHolderType import hiiragi283.lib.integration.jei.add import hiiragi283.lib.recipe.base.HTBasicSingleRecipe import hiiragi283.lib.recipe.base.HTFluidToRecipe @@ -10,19 +10,21 @@ import hiiragi283.lib.recipe.base.HTItemToRecipe import hiiragi283.lib.recipe.result.HTItemOrFluidResult import mezz.jei.api.gui.builder.IRecipeLayoutBuilder import mezz.jei.api.gui.builder.IRecipeSlotBuilder +import mezz.jei.api.gui.drawable.IDrawable import mezz.jei.api.gui.widgets.IRecipeExtrasBuilder -import mezz.jei.api.helpers.IGuiHelper import mezz.jei.api.recipe.IFocusGroup +import net.minecraft.world.item.crafting.RecipeType /** * @author Hiiragi Tsubasa * @since 26.1.8 */ abstract class HTSingleToItemAndFluidRecipeCategory>( - guiHelper: IGuiHelper, - recipeType: HTHolderJeiRecipeType, + recipeType: HTRecipeHolderType, + recipeType1: RecipeType<*>, + icon: IDrawable, codec: MapCodec -) : HTHolderRecipeCategory(guiHelper, recipeType, 18 * 6, 18 * 1, codec) { +) : HTHolderRecipeCategory(recipeType, recipeType1, icon, 18 * 6, 18 * 1, codec) { override fun setupRecipe(builder: IRecipeLayoutBuilder, recipe: RECIPE, focuses: IFocusGroup) { // input setInput( @@ -54,12 +56,16 @@ abstract class HTSingleToItemAndFluidRecipeCategory) : - HTSingleToItemAndFluidRecipeCategory( - guiHelper, - recipeType, - HTFluidToRecipe.BasicItemAndFluid.SIMPLE_CODEC - ) { + class FluidTo( + recipeType: HTRecipeHolderType, + recipeType1: RecipeType<*>, + icon: IDrawable + ) : HTSingleToItemAndFluidRecipeCategory( + recipeType, + recipeType1, + icon, + HTFluidToRecipe.BasicItemAndFluid.SIMPLE_CODEC + ) { override fun setInput(builder: IRecipeSlotBuilder, recipe: HTFluidToRecipe.BasicItemAndFluid) { builder.add(recipe.ingredient) } @@ -71,12 +77,16 @@ abstract class HTSingleToItemAndFluidRecipeCategory) : - HTSingleToItemAndFluidRecipeCategory( - guiHelper, - recipeType, - HTItemToRecipe.BasicItemAndFluid.SIMPLE_CODEC - ) { + class ItemTo( + recipeType: HTRecipeHolderType, + recipeType1: RecipeType<*>, + icon: IDrawable + ) : HTSingleToItemAndFluidRecipeCategory( + recipeType, + recipeType1, + icon, + HTItemToRecipe.BasicItemAndFluid.SIMPLE_CODEC + ) { override fun setInput(builder: IRecipeSlotBuilder, recipe: HTItemToRecipe.BasicItemAndFluid) { builder.add(recipe.ingredient) } diff --git a/src/libClient/kotlin/hiiragi283/lib/integration/jei/category/HTTripleItemToRecipeCategory.kt b/src/libClient/kotlin/hiiragi283/lib/integration/jei/category/HTTripleItemToRecipeCategory.kt index b950b48c4..1d0c5e315 100644 --- a/src/libClient/kotlin/hiiragi283/lib/integration/jei/category/HTTripleItemToRecipeCategory.kt +++ b/src/libClient/kotlin/hiiragi283/lib/integration/jei/category/HTTripleItemToRecipeCategory.kt @@ -2,25 +2,27 @@ package hiiragi283.lib.integration.jei.category import com.mojang.serialization.MapCodec import hiiragi283.lib.gui.HTBackgroundType -import hiiragi283.lib.integration.jei.HTHolderJeiRecipeType +import hiiragi283.lib.integration.jei.HTRecipeHolderType import hiiragi283.lib.integration.jei.add import hiiragi283.lib.recipe.base.HTProgressRecipe import hiiragi283.lib.recipe.base.HTTripleItemToItemRecipe import mezz.jei.api.gui.builder.IRecipeLayoutBuilder import mezz.jei.api.gui.builder.IRecipeSlotBuilder +import mezz.jei.api.gui.drawable.IDrawable import mezz.jei.api.gui.widgets.IRecipeExtrasBuilder -import mezz.jei.api.helpers.IGuiHelper import mezz.jei.api.recipe.IFocusGroup +import net.minecraft.world.item.crafting.RecipeType /** * @author Hiiragi Tsubasa * @since 26.1.7 */ abstract class HTTripleItemToRecipeCategory>( - guiHelper: IGuiHelper, - recipeType: HTHolderJeiRecipeType, + recipeType: HTRecipeHolderType, + recipeType1: RecipeType<*>, + icon: IDrawable, codec: MapCodec -) : HTHolderRecipeCategory(guiHelper, recipeType, 18 * 7, 18 * 1, codec) { +) : HTHolderRecipeCategory(recipeType, recipeType1, icon, 18 * 7, 18 * 1, codec) { override fun setupRecipe(builder: IRecipeLayoutBuilder, recipe: RECIPE, focuses: IFocusGroup) { // inputs setPrimaryInput( @@ -65,12 +67,16 @@ abstract class HTTripleItemToRecipeCategory> // Basic // - class Basic(guiHelper: IGuiHelper, recipeType: HTHolderJeiRecipeType) : - HTTripleItemToRecipeCategory( - guiHelper, - recipeType, - HTTripleItemToItemRecipe.Basic.SIMPLE_CODEC - ) { + class Basic( + recipeType: HTRecipeHolderType, + recipeType1: RecipeType<*>, + icon: IDrawable + ) : HTTripleItemToRecipeCategory( + recipeType, + recipeType1, + icon, + HTTripleItemToItemRecipe.Basic.SIMPLE_CODEC + ) { override fun setPrimaryInput(builder: IRecipeSlotBuilder, recipe: HTTripleItemToItemRecipe.Basic) { builder.add(recipe.ingredient) } From a928fb2df4f0ee3b7f10ae9f5c46262fdc7e6235 Mon Sep 17 00:00:00 2001 From: Hiiragi Russell Tsubasa <97942736+Hiiragi283@users.noreply.github.com> Date: Tue, 6 Oct 2026 19:27:28 +0900 Subject: [PATCH 7/9] =?UTF-8?q?feat:=20=E3=83=90=E3=83=8B=E3=83=A9?= =?UTF-8?q?=E3=81=AE=E9=89=B1=E7=9F=B3=E3=81=8B=E3=82=89=E8=BF=BD=E5=8A=A0?= =?UTF-8?q?=E3=81=A7=E5=88=A5=E3=81=AE=E9=89=B1=E7=89=A9=E3=82=92=E3=83=89?= =?UTF-8?q?=E3=83=AD=E3=83=83=E3=83=97=E3=81=99=E3=82=8B=E3=82=88=E3=81=86?= =?UTF-8?q?=E3=81=AB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../hiiragi283/ragium/data/RagiumDataGen.kt | 3 +- .../data/loot/RagiumBlockLootTableProvider.kt | 67 +++-------- .../loot/RagiumGlobalLootModifierProvider.kt | 18 ++- .../loot/RagiumGlobalLootTableProvider.kt | 105 ++++++++++++------ .../data/loot/RagiumGlobalLootTables.kt | 35 ++++++ .../data/recipe/RagiumCommonRecipeProvider.kt | 31 +----- .../ragium/data/tag/RagiumItemTagsProvider.kt | 10 +- .../assets/ragium/items/cinnabar.json | 6 + .../resources/assets/ragium/lang/en_us.json | 1 + .../resources/assets/ragium/lang/ja_jp.json | 1 + .../assets/ragium/models/item/cinnabar.json | 6 + .../resources/data/c/tags/item/gems.json | 1 + .../data/c/tags/item/gems/cinnabar.json | 5 + .../tags/item/beacon_payment_items.json | 1 + .../modifiers/carbon_from_diamond_ores.json | 11 ++ .../cinnabar_from_redstone_ores.json | 11 ++ .../elder_heart.json} | 2 +- .../modifiers/fluorite_from_lapis_ores.json | 11 ++ .../modifiers/sulfur_from_coal_ores.json | 11 ++ .../trader_catalog.json} | 2 +- .../blocks/deepslate_niter_ore.json | 54 ++------- .../blocks/deepslate_sulfur_ore.json | 54 ++------- .../loot_table/blocks/nether_niter_ore.json | 54 ++------- .../loot_table/blocks/nether_sulfur_ore.json | 54 ++------- .../ragium/loot_table/blocks/niter_ore.json | 54 ++------- .../ragium/loot_table/blocks/sulfur_ore.json | 54 ++------- .../modifiers/carbon_from_diamond_ores.json | 23 ++++ .../cinnabar_from_redstone_ores.json | 23 ++++ .../elder_heart.json} | 2 +- .../modifiers/fluorite_from_lapis_ores.json | 23 ++++ .../modifiers/sulfur_from_coal_ores.json | 23 ++++ .../recipe/alloying/niter_dust_from_ore.json | 16 --- .../recipe/alloying/sulfur_dust_from_ore.json | 16 --- ...m_ore.json => cinnabar_dust_from_gem.json} | 6 +- .../recipe/crushing/lapis_dust_from_ore.json | 2 +- .../recipe/crushing/niter_dust_from_ore.json | 12 -- .../ragium/tags/item/smelting_fluxes.json | 1 + .../resources/reports/ragium/registries.json | 4 + .../data/loot/HTGlobalLootModifierProvider.kt | 11 ++ .../data/loot/builder/HTLootPoolBuilder.kt | 69 ++++++++++++ .../data/loot/builder/HTLootTableBuilder.kt | 72 ++++++++++++ .../predicates/HTBlockSetLootCondition.kt | 30 +++++ .../ragium/api/material/RagiumMaterial.kt | 10 +- .../kotlin/hiiragi283/ragium/common/Ragium.kt | 4 + .../ragium/common/item/RagiumItems.kt | 1 + .../assets/ragium/textures/item/cinnabar.png | Bin 0 -> 399 bytes 46 files changed, 551 insertions(+), 459 deletions(-) create mode 100644 src/data/kotlin/hiiragi283/ragium/data/loot/RagiumGlobalLootTables.kt create mode 100644 src/generated/resources/assets/ragium/items/cinnabar.json create mode 100644 src/generated/resources/assets/ragium/models/item/cinnabar.json create mode 100644 src/generated/resources/data/c/tags/item/gems/cinnabar.json create mode 100644 src/generated/resources/data/ragium/loot_modifiers/modifiers/carbon_from_diamond_ores.json create mode 100644 src/generated/resources/data/ragium/loot_modifiers/modifiers/cinnabar_from_redstone_ores.json rename src/generated/resources/data/ragium/loot_modifiers/{drop_elder_heart.json => modifiers/elder_heart.json} (81%) create mode 100644 src/generated/resources/data/ragium/loot_modifiers/modifiers/fluorite_from_lapis_ores.json create mode 100644 src/generated/resources/data/ragium/loot_modifiers/modifiers/sulfur_from_coal_ores.json rename src/generated/resources/data/ragium/loot_modifiers/{drop_trader_catalog.json => modifiers/trader_catalog.json} (81%) create mode 100644 src/generated/resources/data/ragium/loot_table/modifiers/carbon_from_diamond_ores.json create mode 100644 src/generated/resources/data/ragium/loot_table/modifiers/cinnabar_from_redstone_ores.json rename src/generated/resources/data/ragium/loot_table/{drop_elder_heart.json => modifiers/elder_heart.json} (91%) create mode 100644 src/generated/resources/data/ragium/loot_table/modifiers/fluorite_from_lapis_ores.json create mode 100644 src/generated/resources/data/ragium/loot_table/modifiers/sulfur_from_coal_ores.json delete mode 100644 src/generated/resources/data/ragium/recipe/alloying/niter_dust_from_ore.json delete mode 100644 src/generated/resources/data/ragium/recipe/alloying/sulfur_dust_from_ore.json rename src/generated/resources/data/ragium/recipe/crushing/{sulfur_dust_from_ore.json => cinnabar_dust_from_gem.json} (56%) delete mode 100644 src/generated/resources/data/ragium/recipe/crushing/niter_dust_from_ore.json create mode 100644 src/lib/kotlin/hiiragi283/lib/data/loot/builder/HTLootPoolBuilder.kt create mode 100644 src/lib/kotlin/hiiragi283/lib/data/loot/builder/HTLootTableBuilder.kt create mode 100644 src/lib/kotlin/hiiragi283/lib/data/loot/predicates/HTBlockSetLootCondition.kt create mode 100644 src/main/resources/assets/ragium/textures/item/cinnabar.png diff --git a/src/data/kotlin/hiiragi283/ragium/data/RagiumDataGen.kt b/src/data/kotlin/hiiragi283/ragium/data/RagiumDataGen.kt index 6854bc5ec..410cca932 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/RagiumDataGen.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/RagiumDataGen.kt @@ -52,7 +52,8 @@ data object RagiumDataGen { event.createLootTables( ::RagiumBlockLootTableProvider to LootContextParamSets.BLOCK, - RagiumGlobalLootTableProvider::EntityProvider to LootContextParamSets.ENTITY + RagiumGlobalLootTableProvider::ForBlock to LootContextParamSets.BLOCK, + RagiumGlobalLootTableProvider::ForEntity to LootContextParamSets.ENTITY ) event.createProvider(::RagiumGlobalLootModifierProvider) diff --git a/src/data/kotlin/hiiragi283/ragium/data/loot/RagiumBlockLootTableProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/loot/RagiumBlockLootTableProvider.kt index fce0d77b3..b53eb0c40 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/loot/RagiumBlockLootTableProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/loot/RagiumBlockLootTableProvider.kt @@ -1,39 +1,25 @@ package hiiragi283.ragium.data.loot import hiiragi283.lib.data.loot.HTBlockLootTableProvider +import hiiragi283.lib.data.loot.builder.HTLootTableBuilder import hiiragi283.lib.registry.HTSimpleDeferredBlockAndItem -import hiiragi283.lib.registry.HTSimpleDeferredItem import hiiragi283.ragium.api.RagiumAPI import hiiragi283.ragium.api.data.RagiumDataComponents -import hiiragi283.ragium.api.material.HTItemPart -import hiiragi283.ragium.api.material.HTOreBlockPart -import hiiragi283.ragium.api.material.RagiumMaterial import hiiragi283.ragium.common.block.RagiumBlocks -import hiiragi283.ragium.common.item.RagiumItems import net.minecraft.core.HolderLookup import net.minecraft.core.component.DataComponents import net.minecraft.world.level.block.Block -import net.minecraft.world.level.storage.loot.LootPool import net.minecraft.world.level.storage.loot.LootTable import net.minecraft.world.level.storage.loot.entries.LootItem -import net.minecraft.world.level.storage.loot.entries.LootPoolSingletonContainer -import net.minecraft.world.level.storage.loot.functions.ApplyBonusCount import net.minecraft.world.level.storage.loot.functions.CopyComponentsFunction -import net.minecraft.world.level.storage.loot.functions.SetItemCountFunction import net.minecraft.world.level.storage.loot.parameters.LootContextParams -import net.minecraft.world.level.storage.loot.providers.number.ConstantValue -import net.minecraft.world.level.storage.loot.providers.number.NumberProvider -import net.minecraft.world.level.storage.loot.providers.number.UniformGenerator +import net.minecraft.world.level.storage.loot.predicates.ExplosionCondition class RagiumBlockLootTableProvider(registries: HolderLookup.Provider) : HTBlockLootTableProvider(registries, RagiumAPI.MOD_ID, RagiumBlocks.REGISTER.asBlockSequence()) { override fun generate() { knownBlocks.forEach(::dropSelf) - // Material - registerOres(RagiumMaterial.Mineral.SULFUR, HTItemPart.DUST, UniformGenerator.between(2f, 5f)) - registerOres(RagiumMaterial.Mineral.NITER, HTItemPart.DUST, UniformGenerator.between(2f, 5f)) - RagiumBlocks.STORAGE_BLOCKS.values.forEach(::dropSelf) RagiumBlocks.ALL_DECORATIONS.forEach { add(it.slab, ::createSlabItemTable) } @@ -52,41 +38,24 @@ class RagiumBlockLootTableProvider(registries: HolderLookup.Provider) : } } - private fun registerOres(material: RagiumMaterial, rawPart: HTItemPart, countProvider: NumberProvider? = null) { - for (part: HTOreBlockPart in HTOreBlockPart.entries) { - val block: HTSimpleDeferredBlockAndItem = RagiumBlocks.MATERIAL_ORES[part, material] ?: continue - val drop: HTSimpleDeferredItem = RagiumItems.MATERIAL_ITEMS[rawPart, material] ?: continue - add(block) { block: Block -> - val builder: LootPoolSingletonContainer.Builder<*> = LootItem.lootTableItem(drop) - countProvider?.let(SetItemCountFunction::setCount)?.let(builder::apply) - builder.apply(ApplyBonusCount.addOreBonusCount(fortune)) - this.createSilkTouchDispatchTable(block, this.applyExplosionDecay(block, builder)) - } - } - } + private inline fun buildTable(builderAction: HTLootTableBuilder.() -> Unit): LootTable.Builder = + HTLootTableBuilder.build(builderAction) private inline fun copyComponent( block: Block, builderAction: CopyComponentsFunction.Builder.() -> Unit = {} - ): LootTable.Builder = LootTable - .lootTable() - .withPool( - applyExplosionCondition( - block, - LootPool - .lootPool() - .setRolls(ConstantValue.exactly(1f)) - .add( - LootItem - .lootTableItem(block) - .apply( - CopyComponentsFunction - .copyComponentsFromBlockEntity(LootContextParams.BLOCK_ENTITY) - .include(DataComponents.CUSTOM_NAME) - .include(RagiumDataComponents.OWNER_ID) - .apply(builderAction) - ) - ) - ) - ) + ): LootTable.Builder = buildTable { + pool { + +LootItem + .lootTableItem(block) + .apply( + CopyComponentsFunction + .copyComponentsFromBlockEntity(LootContextParams.BLOCK_ENTITY) + .include(DataComponents.CUSTOM_NAME) + .include(RagiumDataComponents.OWNER_ID) + .apply(builderAction) + ) + +ExplosionCondition.survivesExplosion() + } + } } diff --git a/src/data/kotlin/hiiragi283/ragium/data/loot/RagiumGlobalLootModifierProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/loot/RagiumGlobalLootModifierProvider.kt index b7187573c..7488b8efa 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/loot/RagiumGlobalLootModifierProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/loot/RagiumGlobalLootModifierProvider.kt @@ -1,18 +1,28 @@ package hiiragi283.ragium.data.loot import hiiragi283.lib.data.loot.HTGlobalLootModifierProvider +import hiiragi283.lib.data.loot.predicates.HTBlockSetLootCondition import hiiragi283.ragium.api.RagiumAPI import net.minecraft.core.HolderLookup import net.minecraft.data.PackOutput +import net.minecraft.tags.BlockTags +import net.minecraft.tags.TagKey import net.minecraft.world.entity.EntityType +import net.minecraft.world.level.block.Block +import net.minecraft.world.level.storage.loot.predicates.LootItemCondition import java.util.concurrent.CompletableFuture class RagiumGlobalLootModifierProvider(output: PackOutput, registries: CompletableFuture) : HTGlobalLootModifierProvider(output, registries, RagiumAPI.MOD_ID) { override fun start() { - // Drops Elder Heart from Elder Guardian - add(RagiumGlobalLootTableProvider.ELDER_HEART, condition(EntityType.ELDER_GUARDIAN)) - // Drops Trader Catalog from Wandering Trader - add(RagiumGlobalLootTableProvider.TRADER_CATALOG, condition(EntityType.WANDERING_TRADER)) + add(RagiumGlobalLootTables.SULFUR_FROM_COAL_ORES, block(BlockTags.COAL_ORES)) + add(RagiumGlobalLootTables.CINNABAR_FROM_REDSTONE_ORES, block(BlockTags.REDSTONE_ORES)) + add(RagiumGlobalLootTables.FLUORITE_FROM_LAPIS_ORES, block(BlockTags.LAPIS_ORES)) + add(RagiumGlobalLootTables.CARBON_FROM_DIAMOND_ORES, block(BlockTags.DIAMOND_ORES)) + + add(RagiumGlobalLootTables.ELDER_HEART, condition(EntityType.ELDER_GUARDIAN)) + add(RagiumGlobalLootTables.TRADER_CATALOG, condition(EntityType.WANDERING_TRADER)) } + + private fun block(tagKey: TagKey): LootItemCondition = HTBlockSetLootCondition(registries.getOrThrow(tagKey)) } diff --git a/src/data/kotlin/hiiragi283/ragium/data/loot/RagiumGlobalLootTableProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/loot/RagiumGlobalLootTableProvider.kt index e24611bfc..279a63243 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/loot/RagiumGlobalLootTableProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/loot/RagiumGlobalLootTableProvider.kt @@ -1,64 +1,99 @@ package hiiragi283.ragium.data.loot -import hiiragi283.lib.registry.createKey -import hiiragi283.ragium.api.RagiumAPI +import hiiragi283.lib.data.loot.builder.HTLootTableBuilder +import hiiragi283.ragium.api.material.HTItemPart +import hiiragi283.ragium.api.material.RagiumMaterial import hiiragi283.ragium.common.item.RagiumItems +import net.minecraft.core.Holder import net.minecraft.core.HolderLookup -import net.minecraft.core.registries.Registries import net.minecraft.data.loot.LootTableSubProvider -import net.minecraft.resources.Identifier import net.minecraft.resources.ResourceKey -import net.minecraft.world.level.storage.loot.LootPool +import net.minecraft.world.item.enchantment.Enchantment +import net.minecraft.world.item.enchantment.Enchantments import net.minecraft.world.level.storage.loot.LootTable import net.minecraft.world.level.storage.loot.entries.LootItem +import net.minecraft.world.level.storage.loot.entries.LootPoolSingletonContainer +import net.minecraft.world.level.storage.loot.functions.ApplyBonusCount import net.minecraft.world.level.storage.loot.functions.EnchantedCountIncreaseFunction import net.minecraft.world.level.storage.loot.providers.number.UniformGenerator import java.util.function.BiConsumer sealed class RagiumGlobalLootTableProvider(protected val provider: HolderLookup.Provider) : LootTableSubProvider { - companion object { - // entity - @JvmField - val ELDER_HEART: ResourceKey = create("elder_heart") + protected val fortune: Holder by lazy { provider.getOrThrow(Enchantments.FORTUNE) } - @JvmField - val TRADER_CATALOG: ResourceKey = create("trader_catalog") + protected inline fun buildTable(builderAction: HTLootTableBuilder.() -> Unit): LootTable.Builder = + HTLootTableBuilder.build(builderAction) - @JvmStatic - private fun create(path: String): ResourceKey = create(RagiumAPI.id(path)) + // ForBlock // - @JvmStatic - private fun create(id: Identifier): ResourceKey = - Registries.LOOT_TABLE.createKey(id.withPath { "drop_$it" }) + class ForBlock(provider: HolderLookup.Provider) : RagiumGlobalLootTableProvider(provider) { + override fun generate(output: BiConsumer, LootTable.Builder>) { + // Extra minerals from ores + output.accept( + RagiumGlobalLootTables.SULFUR_FROM_COAL_ORES, + buildTable { + pool { + +item(HTItemPart.DUST, RagiumMaterial.Mineral.SULFUR) + .apply(ApplyBonusCount.addOreBonusCount(fortune)) + } + } + ) + output.accept( + RagiumGlobalLootTables.CINNABAR_FROM_REDSTONE_ORES, + buildTable { + pool { + +item(HTItemPart.GEM, RagiumMaterial.Gem.CINNABAR) + .apply(ApplyBonusCount.addOreBonusCount(fortune)) + } + } + ) + output.accept( + RagiumGlobalLootTables.FLUORITE_FROM_LAPIS_ORES, + buildTable { + pool { + +item(HTItemPart.GEM, RagiumMaterial.Gem.FLUORITE) + .apply(ApplyBonusCount.addOreBonusCount(fortune)) + } + } + ) + output.accept( + RagiumGlobalLootTables.CARBON_FROM_DIAMOND_ORES, + buildTable { + pool { + +item(HTItemPart.DUST, RagiumMaterial.Chemicals.CARBON) + .apply(ApplyBonusCount.addOreBonusCount(fortune)) + } + } + ) + } + + private fun item(part: HTItemPart, material: RagiumMaterial): LootPoolSingletonContainer.Builder<*> = + LootItem.lootTableItem(RagiumItems.getOrThrow(part, material)) } - // EntityProvider // + // ForEntity // - class EntityProvider(provider: HolderLookup.Provider) : RagiumGlobalLootTableProvider(provider) { + class ForEntity(provider: HolderLookup.Provider) : RagiumGlobalLootTableProvider(provider) { override fun generate(output: BiConsumer, LootTable.Builder>) { // Drops Elder Heart from Elder Guardian output.accept( - ELDER_HEART, - LootTable - .lootTable() - .withPool( - LootPool - .lootPool() - .add( - LootItem - .lootTableItem(RagiumItems.ELDER_HEART) - .apply( - EnchantedCountIncreaseFunction.lootingMultiplier( - provider, - UniformGenerator.between(0f, 1f) - ) - ) + RagiumGlobalLootTables.ELDER_HEART, + buildTable { + pool { + +LootItem + .lootTableItem(RagiumItems.ELDER_HEART) + .apply( + EnchantedCountIncreaseFunction.lootingMultiplier( + provider, + UniformGenerator.between(0f, 1f) + ) ) - ) + } + } ) // Drops Trader Catalog from Wandering Trader /*output.accept( - TRADER_CATALOG, + RagiumGlobalLootTables.TRADER_CATALOG, LootTable .lootTable() .withPool( diff --git a/src/data/kotlin/hiiragi283/ragium/data/loot/RagiumGlobalLootTables.kt b/src/data/kotlin/hiiragi283/ragium/data/loot/RagiumGlobalLootTables.kt new file mode 100644 index 000000000..7e7120a53 --- /dev/null +++ b/src/data/kotlin/hiiragi283/ragium/data/loot/RagiumGlobalLootTables.kt @@ -0,0 +1,35 @@ +package hiiragi283.ragium.data.loot + +import hiiragi283.lib.registry.createKey +import hiiragi283.ragium.api.RagiumAPI +import net.minecraft.core.registries.Registries +import net.minecraft.resources.ResourceKey +import net.minecraft.world.level.storage.loot.LootTable + +data object RagiumGlobalLootTables { + @JvmStatic + private fun create(path: String): ResourceKey = + Registries.LOOT_TABLE.createKey(RagiumAPI.id("modifiers", path)) + + // Block // + + @JvmField + val SULFUR_FROM_COAL_ORES: ResourceKey = create("sulfur_from_coal_ores") + + @JvmField + val CINNABAR_FROM_REDSTONE_ORES: ResourceKey = create("cinnabar_from_redstone_ores") + + @JvmField + val FLUORITE_FROM_LAPIS_ORES: ResourceKey = create("fluorite_from_lapis_ores") + + @JvmField + val CARBON_FROM_DIAMOND_ORES: ResourceKey = create("carbon_from_diamond_ores") + + // Entity // + + @JvmField + val ELDER_HEART: ResourceKey = create("elder_heart") + + @JvmField + val TRADER_CATALOG: ResourceKey = create("trader_catalog") +} diff --git a/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumCommonRecipeProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumCommonRecipeProvider.kt index ee0cd2c57..cd6cf6785 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumCommonRecipeProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumCommonRecipeProvider.kt @@ -71,32 +71,9 @@ class RagiumCommonRecipeProvider(packOutput: PackOutput, future: CompletableFutu +Items.REDSTONE count = 6 } - result { - +RagiumItems.getOrThrow(HTItemPart.DUST, RagiumMaterial.Mineral.CINNABAR) - } + result { +RagiumItems.getOrThrow(HTItemPart.DUST, RagiumMaterial.Gem.CINNABAR) } recipeId suffix "_from_ore" }.save(exporter) - for (mineral: RagiumMaterial.Mineral in setOf(RagiumMaterial.Mineral.SULFUR, RagiumMaterial.Mineral.NITER)) { - // Crushing - RagiumRecipeBuilders.crushing { - ingredient { +holderSet(CommonTagPrefixes.ORE, mineral) } - result { - +RagiumItems.getOrThrow(HTItemPart.DUST, mineral) - count = 6 - } - recipeId suffix "_from_ore" - }.save(exporter) - // Alloying - RagiumRecipeBuilders.alloying { - ingredient { +holderSet(CommonTagPrefixes.ORE, mineral) } - extra { +holderSet(RagiumTags.Items.SMELTING_FLUXES) } - result { - +RagiumItems.getOrThrow(HTItemPart.DUST, mineral) - count = 9 - } - recipeId suffix "_from_ore" - }.save(exporter) - } RagiumRecipeBuilders.crushing { ingredient { +holderSet(CommonTagPrefixes.ORE, RagiumMaterial.Gem.LAPIS) } @@ -104,7 +81,7 @@ class RagiumCommonRecipeProvider(packOutput: PackOutput, future: CompletableFutu +RagiumItems.getOrThrow(HTItemPart.DUST, RagiumMaterial.Gem.LAPIS) count = 6 } - result { +Items.PRISMARINE_SHARD } + result { +RagiumItems.getOrThrow(HTItemPart.DUST, RagiumMaterial.Gem.FLUORITE) } recipeId suffix "_from_ore" }.save(exporter) RagiumRecipeBuilders.crushing { @@ -113,9 +90,7 @@ class RagiumCommonRecipeProvider(packOutput: PackOutput, future: CompletableFutu +RagiumItems.getOrThrow(HTItemPart.DUST, RagiumMaterial.Gem.QUARTZ) count = 4 } - result { - +Items.GOLD_NUGGET - } + result { +Items.GOLD_NUGGET } recipeId suffix "_from_ore" }.save(exporter) RagiumRecipeBuilders.crushing { diff --git a/src/data/kotlin/hiiragi283/ragium/data/tag/RagiumItemTagsProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/tag/RagiumItemTagsProvider.kt index 913abcb50..71f7ce1e6 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/tag/RagiumItemTagsProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/tag/RagiumItemTagsProvider.kt @@ -9,6 +9,7 @@ import hiiragi283.lib.resource.HTSimpleValueWithKey import hiiragi283.lib.resource.vanillaId import hiiragi283.lib.tag.CommonTagPrefixes import hiiragi283.lib.tag.HTCommonTags +import hiiragi283.lib.tag.HTTagPrefix import hiiragi283.ragium.api.RagiumAPI import hiiragi283.ragium.api.material.HTItemPart import hiiragi283.ragium.api.material.RagiumMaterial @@ -76,10 +77,11 @@ class RagiumItemTagsProvider(output: PackOutput, lookupProvider: CompletableFutu .addTag(HTCommonTags.Items.COAL_COKE) .addTag(HTCommonTags.Items.PITCH_COKE) RagiumItems.MOLDS.forEach(builder(RagiumTags.Items.MOLDS)::add) - builder(RagiumTags.Items.SMELTING_FLUXES) - .addTag(CommonTagPrefixes.DUST.itemTagKey(RagiumMaterial.Mineral.CINNABAR)) - .addTag(CommonTagPrefixes.DUST.itemTagKey(RagiumMaterial.Gem.FLUORITE)) - .addTag(CommonTagPrefixes.GEM.itemTagKey(RagiumMaterial.Gem.FLUORITE)) + for (gem: RagiumMaterial.Gem in setOf(RagiumMaterial.Gem.CINNABAR, RagiumMaterial.Gem.FLUORITE)) { + for (prefix: HTTagPrefix in setOf(CommonTagPrefixes.DUST, CommonTagPrefixes.GEM)) { + builder(RagiumTags.Items.SMELTING_FLUXES).addTag(prefix.itemTagKey(gem)) + } + } builder(RagiumTags.Items.SHOW_FLUID_TOOLTIPS) .add(RagiumBlocks.FLUID_OUTPUT_BUS) .apply { RagiumBlocks.TANKS.forEach { add(it) } } diff --git a/src/generated/resources/assets/ragium/items/cinnabar.json b/src/generated/resources/assets/ragium/items/cinnabar.json new file mode 100644 index 000000000..d5e8ac460 --- /dev/null +++ b/src/generated/resources/assets/ragium/items/cinnabar.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "ragium:item/cinnabar" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/lang/en_us.json b/src/generated/resources/assets/ragium/lang/en_us.json index 8433c8c24..a92c214b5 100644 --- a/src/generated/resources/assets/ragium/lang/en_us.json +++ b/src/generated/resources/assets/ragium/lang/en_us.json @@ -222,6 +222,7 @@ "item.ragium.charcoal_dust": "Charcoal Dust", "item.ragium.chemical_machine_parts": "Machine Parts (Chemical)", "item.ragium.chlorine_bucket": "Chlorine Bucket", + "item.ragium.cinnabar": "Cinnabar", "item.ragium.cinnabar_dust": "Cinnabar Dust", "item.ragium.circuit_board": "Circuit Board", "item.ragium.coal_coke": "Coal Coke", diff --git a/src/generated/resources/assets/ragium/lang/ja_jp.json b/src/generated/resources/assets/ragium/lang/ja_jp.json index f54ead21d..0814361a8 100644 --- a/src/generated/resources/assets/ragium/lang/ja_jp.json +++ b/src/generated/resources/assets/ragium/lang/ja_jp.json @@ -222,6 +222,7 @@ "item.ragium.charcoal_dust": "木炭の粉", "item.ragium.chemical_machine_parts": "機械部品 (化学)", "item.ragium.chlorine_bucket": "塩素入りバケツ", + "item.ragium.cinnabar": "辰砂", "item.ragium.cinnabar_dust": "辰砂の粉", "item.ragium.circuit_board": "回路基板", "item.ragium.coal_coke": "石炭コークス", diff --git a/src/generated/resources/assets/ragium/models/item/cinnabar.json b/src/generated/resources/assets/ragium/models/item/cinnabar.json new file mode 100644 index 000000000..bfc71375a --- /dev/null +++ b/src/generated/resources/assets/ragium/models/item/cinnabar.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "ragium:item/cinnabar" + } +} \ No newline at end of file diff --git a/src/generated/resources/data/c/tags/item/gems.json b/src/generated/resources/data/c/tags/item/gems.json index 413fe31ac..0280e5987 100644 --- a/src/generated/resources/data/c/tags/item/gems.json +++ b/src/generated/resources/data/c/tags/item/gems.json @@ -1,5 +1,6 @@ { "values": [ + "#c:gems/cinnabar", "#c:gems/echo", "#c:gems/fluorite" ] diff --git a/src/generated/resources/data/c/tags/item/gems/cinnabar.json b/src/generated/resources/data/c/tags/item/gems/cinnabar.json new file mode 100644 index 000000000..388a86106 --- /dev/null +++ b/src/generated/resources/data/c/tags/item/gems/cinnabar.json @@ -0,0 +1,5 @@ +{ + "values": [ + "ragium:cinnabar" + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/minecraft/tags/item/beacon_payment_items.json b/src/generated/resources/data/minecraft/tags/item/beacon_payment_items.json index 0b48dd775..3134d5e72 100644 --- a/src/generated/resources/data/minecraft/tags/item/beacon_payment_items.json +++ b/src/generated/resources/data/minecraft/tags/item/beacon_payment_items.json @@ -2,6 +2,7 @@ "values": [ "ragium:aluminum_ingot", "ragium:black_steel_ingot", + "ragium:cinnabar", "ragium:fluorite", "ragium:sooty_iron_ingot", "ragium:void_metal_ingot" diff --git a/src/generated/resources/data/ragium/loot_modifiers/modifiers/carbon_from_diamond_ores.json b/src/generated/resources/data/ragium/loot_modifiers/modifiers/carbon_from_diamond_ores.json new file mode 100644 index 000000000..bfb51cbc9 --- /dev/null +++ b/src/generated/resources/data/ragium/loot_modifiers/modifiers/carbon_from_diamond_ores.json @@ -0,0 +1,11 @@ +{ + "type": "neoforge:add_table", + "conditions": [ + { + "blocks": "#minecraft:diamond_ores", + "condition": "ragium:block_set" + } + ], + "priority": 0, + "table": "ragium:modifiers/carbon_from_diamond_ores" +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/loot_modifiers/modifiers/cinnabar_from_redstone_ores.json b/src/generated/resources/data/ragium/loot_modifiers/modifiers/cinnabar_from_redstone_ores.json new file mode 100644 index 000000000..d15249702 --- /dev/null +++ b/src/generated/resources/data/ragium/loot_modifiers/modifiers/cinnabar_from_redstone_ores.json @@ -0,0 +1,11 @@ +{ + "type": "neoforge:add_table", + "conditions": [ + { + "blocks": "#minecraft:redstone_ores", + "condition": "ragium:block_set" + } + ], + "priority": 0, + "table": "ragium:modifiers/cinnabar_from_redstone_ores" +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/loot_modifiers/drop_elder_heart.json b/src/generated/resources/data/ragium/loot_modifiers/modifiers/elder_heart.json similarity index 81% rename from src/generated/resources/data/ragium/loot_modifiers/drop_elder_heart.json rename to src/generated/resources/data/ragium/loot_modifiers/modifiers/elder_heart.json index 9b39da6b7..0a1955767 100644 --- a/src/generated/resources/data/ragium/loot_modifiers/drop_elder_heart.json +++ b/src/generated/resources/data/ragium/loot_modifiers/modifiers/elder_heart.json @@ -7,5 +7,5 @@ } ], "priority": 0, - "table": "ragium:drop_elder_heart" + "table": "ragium:modifiers/elder_heart" } \ No newline at end of file diff --git a/src/generated/resources/data/ragium/loot_modifiers/modifiers/fluorite_from_lapis_ores.json b/src/generated/resources/data/ragium/loot_modifiers/modifiers/fluorite_from_lapis_ores.json new file mode 100644 index 000000000..67a0a55a7 --- /dev/null +++ b/src/generated/resources/data/ragium/loot_modifiers/modifiers/fluorite_from_lapis_ores.json @@ -0,0 +1,11 @@ +{ + "type": "neoforge:add_table", + "conditions": [ + { + "blocks": "#minecraft:lapis_ores", + "condition": "ragium:block_set" + } + ], + "priority": 0, + "table": "ragium:modifiers/fluorite_from_lapis_ores" +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/loot_modifiers/modifiers/sulfur_from_coal_ores.json b/src/generated/resources/data/ragium/loot_modifiers/modifiers/sulfur_from_coal_ores.json new file mode 100644 index 000000000..52e803bc5 --- /dev/null +++ b/src/generated/resources/data/ragium/loot_modifiers/modifiers/sulfur_from_coal_ores.json @@ -0,0 +1,11 @@ +{ + "type": "neoforge:add_table", + "conditions": [ + { + "blocks": "#minecraft:coal_ores", + "condition": "ragium:block_set" + } + ], + "priority": 0, + "table": "ragium:modifiers/sulfur_from_coal_ores" +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/loot_modifiers/drop_trader_catalog.json b/src/generated/resources/data/ragium/loot_modifiers/modifiers/trader_catalog.json similarity index 81% rename from src/generated/resources/data/ragium/loot_modifiers/drop_trader_catalog.json rename to src/generated/resources/data/ragium/loot_modifiers/modifiers/trader_catalog.json index e1c1082b3..e350d47e6 100644 --- a/src/generated/resources/data/ragium/loot_modifiers/drop_trader_catalog.json +++ b/src/generated/resources/data/ragium/loot_modifiers/modifiers/trader_catalog.json @@ -7,5 +7,5 @@ } ], "priority": 0, - "table": "ragium:drop_trader_catalog" + "table": "ragium:modifiers/trader_catalog" } \ No newline at end of file diff --git a/src/generated/resources/data/ragium/loot_table/blocks/deepslate_niter_ore.json b/src/generated/resources/data/ragium/loot_table/blocks/deepslate_niter_ore.json index 5d37d92e2..e6693df83 100644 --- a/src/generated/resources/data/ragium/loot_table/blocks/deepslate_niter_ore.json +++ b/src/generated/resources/data/ragium/loot_table/blocks/deepslate_niter_ore.json @@ -3,55 +3,15 @@ "pools": [ { "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], "entries": [ { - "type": "minecraft:alternatives", - "children": [ - { - "type": "minecraft:item", - "conditions": [ - { - "condition": "minecraft:match_tool", - "predicate": { - "predicates": { - "minecraft:enchantments": [ - { - "enchantments": "minecraft:silk_touch", - "levels": { - "min": 1 - } - } - ] - } - } - } - ], - "name": "ragium:deepslate_niter_ore" - }, - { - "type": "minecraft:item", - "functions": [ - { - "add": false, - "count": { - "type": "minecraft:uniform", - "max": 5.0, - "min": 2.0 - }, - "function": "minecraft:set_count" - }, - { - "enchantment": "minecraft:fortune", - "formula": "minecraft:ore_drops", - "function": "minecraft:apply_bonus" - }, - { - "function": "minecraft:explosion_decay" - } - ], - "name": "ragium:niter_dust" - } - ] + "type": "minecraft:item", + "name": "ragium:deepslate_niter_ore" } ], "rolls": 1.0 diff --git a/src/generated/resources/data/ragium/loot_table/blocks/deepslate_sulfur_ore.json b/src/generated/resources/data/ragium/loot_table/blocks/deepslate_sulfur_ore.json index 3e8745874..5bd077b78 100644 --- a/src/generated/resources/data/ragium/loot_table/blocks/deepslate_sulfur_ore.json +++ b/src/generated/resources/data/ragium/loot_table/blocks/deepslate_sulfur_ore.json @@ -3,55 +3,15 @@ "pools": [ { "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], "entries": [ { - "type": "minecraft:alternatives", - "children": [ - { - "type": "minecraft:item", - "conditions": [ - { - "condition": "minecraft:match_tool", - "predicate": { - "predicates": { - "minecraft:enchantments": [ - { - "enchantments": "minecraft:silk_touch", - "levels": { - "min": 1 - } - } - ] - } - } - } - ], - "name": "ragium:deepslate_sulfur_ore" - }, - { - "type": "minecraft:item", - "functions": [ - { - "add": false, - "count": { - "type": "minecraft:uniform", - "max": 5.0, - "min": 2.0 - }, - "function": "minecraft:set_count" - }, - { - "enchantment": "minecraft:fortune", - "formula": "minecraft:ore_drops", - "function": "minecraft:apply_bonus" - }, - { - "function": "minecraft:explosion_decay" - } - ], - "name": "ragium:sulfur_dust" - } - ] + "type": "minecraft:item", + "name": "ragium:deepslate_sulfur_ore" } ], "rolls": 1.0 diff --git a/src/generated/resources/data/ragium/loot_table/blocks/nether_niter_ore.json b/src/generated/resources/data/ragium/loot_table/blocks/nether_niter_ore.json index a197d2a7e..87bb245da 100644 --- a/src/generated/resources/data/ragium/loot_table/blocks/nether_niter_ore.json +++ b/src/generated/resources/data/ragium/loot_table/blocks/nether_niter_ore.json @@ -3,55 +3,15 @@ "pools": [ { "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], "entries": [ { - "type": "minecraft:alternatives", - "children": [ - { - "type": "minecraft:item", - "conditions": [ - { - "condition": "minecraft:match_tool", - "predicate": { - "predicates": { - "minecraft:enchantments": [ - { - "enchantments": "minecraft:silk_touch", - "levels": { - "min": 1 - } - } - ] - } - } - } - ], - "name": "ragium:nether_niter_ore" - }, - { - "type": "minecraft:item", - "functions": [ - { - "add": false, - "count": { - "type": "minecraft:uniform", - "max": 5.0, - "min": 2.0 - }, - "function": "minecraft:set_count" - }, - { - "enchantment": "minecraft:fortune", - "formula": "minecraft:ore_drops", - "function": "minecraft:apply_bonus" - }, - { - "function": "minecraft:explosion_decay" - } - ], - "name": "ragium:niter_dust" - } - ] + "type": "minecraft:item", + "name": "ragium:nether_niter_ore" } ], "rolls": 1.0 diff --git a/src/generated/resources/data/ragium/loot_table/blocks/nether_sulfur_ore.json b/src/generated/resources/data/ragium/loot_table/blocks/nether_sulfur_ore.json index 718f97957..b46709cb7 100644 --- a/src/generated/resources/data/ragium/loot_table/blocks/nether_sulfur_ore.json +++ b/src/generated/resources/data/ragium/loot_table/blocks/nether_sulfur_ore.json @@ -3,55 +3,15 @@ "pools": [ { "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], "entries": [ { - "type": "minecraft:alternatives", - "children": [ - { - "type": "minecraft:item", - "conditions": [ - { - "condition": "minecraft:match_tool", - "predicate": { - "predicates": { - "minecraft:enchantments": [ - { - "enchantments": "minecraft:silk_touch", - "levels": { - "min": 1 - } - } - ] - } - } - } - ], - "name": "ragium:nether_sulfur_ore" - }, - { - "type": "minecraft:item", - "functions": [ - { - "add": false, - "count": { - "type": "minecraft:uniform", - "max": 5.0, - "min": 2.0 - }, - "function": "minecraft:set_count" - }, - { - "enchantment": "minecraft:fortune", - "formula": "minecraft:ore_drops", - "function": "minecraft:apply_bonus" - }, - { - "function": "minecraft:explosion_decay" - } - ], - "name": "ragium:sulfur_dust" - } - ] + "type": "minecraft:item", + "name": "ragium:nether_sulfur_ore" } ], "rolls": 1.0 diff --git a/src/generated/resources/data/ragium/loot_table/blocks/niter_ore.json b/src/generated/resources/data/ragium/loot_table/blocks/niter_ore.json index fd6dedcc8..3dd1298c1 100644 --- a/src/generated/resources/data/ragium/loot_table/blocks/niter_ore.json +++ b/src/generated/resources/data/ragium/loot_table/blocks/niter_ore.json @@ -3,55 +3,15 @@ "pools": [ { "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], "entries": [ { - "type": "minecraft:alternatives", - "children": [ - { - "type": "minecraft:item", - "conditions": [ - { - "condition": "minecraft:match_tool", - "predicate": { - "predicates": { - "minecraft:enchantments": [ - { - "enchantments": "minecraft:silk_touch", - "levels": { - "min": 1 - } - } - ] - } - } - } - ], - "name": "ragium:niter_ore" - }, - { - "type": "minecraft:item", - "functions": [ - { - "add": false, - "count": { - "type": "minecraft:uniform", - "max": 5.0, - "min": 2.0 - }, - "function": "minecraft:set_count" - }, - { - "enchantment": "minecraft:fortune", - "formula": "minecraft:ore_drops", - "function": "minecraft:apply_bonus" - }, - { - "function": "minecraft:explosion_decay" - } - ], - "name": "ragium:niter_dust" - } - ] + "type": "minecraft:item", + "name": "ragium:niter_ore" } ], "rolls": 1.0 diff --git a/src/generated/resources/data/ragium/loot_table/blocks/sulfur_ore.json b/src/generated/resources/data/ragium/loot_table/blocks/sulfur_ore.json index 172485f04..0f5e9c791 100644 --- a/src/generated/resources/data/ragium/loot_table/blocks/sulfur_ore.json +++ b/src/generated/resources/data/ragium/loot_table/blocks/sulfur_ore.json @@ -3,55 +3,15 @@ "pools": [ { "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], "entries": [ { - "type": "minecraft:alternatives", - "children": [ - { - "type": "minecraft:item", - "conditions": [ - { - "condition": "minecraft:match_tool", - "predicate": { - "predicates": { - "minecraft:enchantments": [ - { - "enchantments": "minecraft:silk_touch", - "levels": { - "min": 1 - } - } - ] - } - } - } - ], - "name": "ragium:sulfur_ore" - }, - { - "type": "minecraft:item", - "functions": [ - { - "add": false, - "count": { - "type": "minecraft:uniform", - "max": 5.0, - "min": 2.0 - }, - "function": "minecraft:set_count" - }, - { - "enchantment": "minecraft:fortune", - "formula": "minecraft:ore_drops", - "function": "minecraft:apply_bonus" - }, - { - "function": "minecraft:explosion_decay" - } - ], - "name": "ragium:sulfur_dust" - } - ] + "type": "minecraft:item", + "name": "ragium:sulfur_ore" } ], "rolls": 1.0 diff --git a/src/generated/resources/data/ragium/loot_table/modifiers/carbon_from_diamond_ores.json b/src/generated/resources/data/ragium/loot_table/modifiers/carbon_from_diamond_ores.json new file mode 100644 index 000000000..d0a7ab0d9 --- /dev/null +++ b/src/generated/resources/data/ragium/loot_table/modifiers/carbon_from_diamond_ores.json @@ -0,0 +1,23 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "functions": [ + { + "enchantment": "minecraft:fortune", + "formula": "minecraft:ore_drops", + "function": "minecraft:apply_bonus" + } + ], + "name": "ragium:carbon_dust" + } + ], + "rolls": 1.0 + } + ], + "random_sequence": "ragium:modifiers/carbon_from_diamond_ores" +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/loot_table/modifiers/cinnabar_from_redstone_ores.json b/src/generated/resources/data/ragium/loot_table/modifiers/cinnabar_from_redstone_ores.json new file mode 100644 index 000000000..26b9971ba --- /dev/null +++ b/src/generated/resources/data/ragium/loot_table/modifiers/cinnabar_from_redstone_ores.json @@ -0,0 +1,23 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "functions": [ + { + "enchantment": "minecraft:fortune", + "formula": "minecraft:ore_drops", + "function": "minecraft:apply_bonus" + } + ], + "name": "ragium:cinnabar" + } + ], + "rolls": 1.0 + } + ], + "random_sequence": "ragium:modifiers/cinnabar_from_redstone_ores" +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/loot_table/drop_elder_heart.json b/src/generated/resources/data/ragium/loot_table/modifiers/elder_heart.json similarity index 91% rename from src/generated/resources/data/ragium/loot_table/drop_elder_heart.json rename to src/generated/resources/data/ragium/loot_table/modifiers/elder_heart.json index 26a5acce8..29114498e 100644 --- a/src/generated/resources/data/ragium/loot_table/drop_elder_heart.json +++ b/src/generated/resources/data/ragium/loot_table/modifiers/elder_heart.json @@ -23,5 +23,5 @@ "rolls": 1.0 } ], - "random_sequence": "ragium:drop_elder_heart" + "random_sequence": "ragium:modifiers/elder_heart" } \ No newline at end of file diff --git a/src/generated/resources/data/ragium/loot_table/modifiers/fluorite_from_lapis_ores.json b/src/generated/resources/data/ragium/loot_table/modifiers/fluorite_from_lapis_ores.json new file mode 100644 index 000000000..169ecf7c5 --- /dev/null +++ b/src/generated/resources/data/ragium/loot_table/modifiers/fluorite_from_lapis_ores.json @@ -0,0 +1,23 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "functions": [ + { + "enchantment": "minecraft:fortune", + "formula": "minecraft:ore_drops", + "function": "minecraft:apply_bonus" + } + ], + "name": "ragium:fluorite" + } + ], + "rolls": 1.0 + } + ], + "random_sequence": "ragium:modifiers/fluorite_from_lapis_ores" +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/loot_table/modifiers/sulfur_from_coal_ores.json b/src/generated/resources/data/ragium/loot_table/modifiers/sulfur_from_coal_ores.json new file mode 100644 index 000000000..95fdfe4b0 --- /dev/null +++ b/src/generated/resources/data/ragium/loot_table/modifiers/sulfur_from_coal_ores.json @@ -0,0 +1,23 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "functions": [ + { + "enchantment": "minecraft:fortune", + "formula": "minecraft:ore_drops", + "function": "minecraft:apply_bonus" + } + ], + "name": "ragium:sulfur_dust" + } + ], + "rolls": 1.0 + } + ], + "random_sequence": "ragium:modifiers/sulfur_from_coal_ores" +} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/alloying/niter_dust_from_ore.json b/src/generated/resources/data/ragium/recipe/alloying/niter_dust_from_ore.json deleted file mode 100644 index 5dec7b11d..000000000 --- a/src/generated/resources/data/ragium/recipe/alloying/niter_dust_from_ore.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "type": "ragium:alloying", - "extra": { - "count": 1, - "items": "#ragium:smelting_fluxes" - }, - "ingredient": { - "count": 1, - "items": "#c:ores/niter" - }, - "result": { - "count": 9, - "id": "ragium:niter_dust" - }, - "time": 200 -} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/alloying/sulfur_dust_from_ore.json b/src/generated/resources/data/ragium/recipe/alloying/sulfur_dust_from_ore.json deleted file mode 100644 index 8ce137822..000000000 --- a/src/generated/resources/data/ragium/recipe/alloying/sulfur_dust_from_ore.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "type": "ragium:alloying", - "extra": { - "count": 1, - "items": "#ragium:smelting_fluxes" - }, - "ingredient": { - "count": 1, - "items": "#c:ores/sulfur" - }, - "result": { - "count": 9, - "id": "ragium:sulfur_dust" - }, - "time": 200 -} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/crushing/sulfur_dust_from_ore.json b/src/generated/resources/data/ragium/recipe/crushing/cinnabar_dust_from_gem.json similarity index 56% rename from src/generated/resources/data/ragium/recipe/crushing/sulfur_dust_from_ore.json rename to src/generated/resources/data/ragium/recipe/crushing/cinnabar_dust_from_gem.json index 11e0ac6ba..ac5b1eb1c 100644 --- a/src/generated/resources/data/ragium/recipe/crushing/sulfur_dust_from_ore.json +++ b/src/generated/resources/data/ragium/recipe/crushing/cinnabar_dust_from_gem.json @@ -2,11 +2,11 @@ "type": "ragium:crushing", "ingredient": { "count": 1, - "items": "#c:ores/sulfur" + "items": "#c:gems/cinnabar" }, "result": { - "count": 6, - "id": "ragium:sulfur_dust" + "count": 1, + "id": "ragium:cinnabar_dust" }, "time": 200 } \ No newline at end of file diff --git a/src/generated/resources/data/ragium/recipe/crushing/lapis_dust_from_ore.json b/src/generated/resources/data/ragium/recipe/crushing/lapis_dust_from_ore.json index 79c8b359c..48aaf8aae 100644 --- a/src/generated/resources/data/ragium/recipe/crushing/lapis_dust_from_ore.json +++ b/src/generated/resources/data/ragium/recipe/crushing/lapis_dust_from_ore.json @@ -11,7 +11,7 @@ }, { "count": 1, - "id": "minecraft:prismarine_shard" + "id": "ragium:fluorite_dust" } ], "time": 200 diff --git a/src/generated/resources/data/ragium/recipe/crushing/niter_dust_from_ore.json b/src/generated/resources/data/ragium/recipe/crushing/niter_dust_from_ore.json deleted file mode 100644 index 4a59c0803..000000000 --- a/src/generated/resources/data/ragium/recipe/crushing/niter_dust_from_ore.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "type": "ragium:crushing", - "ingredient": { - "count": 1, - "items": "#c:ores/niter" - }, - "result": { - "count": 6, - "id": "ragium:niter_dust" - }, - "time": 200 -} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/tags/item/smelting_fluxes.json b/src/generated/resources/data/ragium/tags/item/smelting_fluxes.json index 0e558bbcd..bbcf8cdb6 100644 --- a/src/generated/resources/data/ragium/tags/item/smelting_fluxes.json +++ b/src/generated/resources/data/ragium/tags/item/smelting_fluxes.json @@ -2,6 +2,7 @@ "values": [ "#c:dusts/cinnabar", "#c:dusts/fluorite", + "#c:gems/cinnabar", "#c:gems/fluorite" ] } \ No newline at end of file diff --git a/src/generated/resources/reports/ragium/registries.json b/src/generated/resources/reports/ragium/registries.json index 05c62a450..946cce78d 100644 --- a/src/generated/resources/reports/ragium/registries.json +++ b/src/generated/resources/reports/ragium/registries.json @@ -243,6 +243,7 @@ "chemical_machine_parts", "chemical_reactor", "chlorine_bucket", + "cinnabar", "cinnabar_dust", "circuit_board", "coal_coke", @@ -400,6 +401,9 @@ "wood_tar_bucket", "yellow_dye_bucket" ], + "minecraft:loot_condition_type": [ + "block_set" + ], "minecraft:menu": [ "block" ], diff --git a/src/lib/kotlin/hiiragi283/lib/data/loot/HTGlobalLootModifierProvider.kt b/src/lib/kotlin/hiiragi283/lib/data/loot/HTGlobalLootModifierProvider.kt index c365c590a..cdc1f7731 100644 --- a/src/lib/kotlin/hiiragi283/lib/data/loot/HTGlobalLootModifierProvider.kt +++ b/src/lib/kotlin/hiiragi283/lib/data/loot/HTGlobalLootModifierProvider.kt @@ -29,6 +29,17 @@ abstract class HTGlobalLootModifierProvider( registries: CompletableFuture, modid: String ) : GlobalLootModifierProvider(output, registries, modid) { + /** + * GLMを追加します。 + * @param key 参照するルートテーブルの[ResourceKey] + * @param condition [key]のルートテーブルを適応するかどうかの条件 + * @param priority GLMの優先度 + * @since 26.1.8 + */ + protected fun add(key: ResourceKey, condition: LootItemCondition, priority: Int = 0) { + add(key.identifier().path, AddTableLootModifier(arrayOf(condition), priority, key)) + } + /** * GLMを追加します。 * @param key 参照するルートテーブルの[ResourceKey] diff --git a/src/lib/kotlin/hiiragi283/lib/data/loot/builder/HTLootPoolBuilder.kt b/src/lib/kotlin/hiiragi283/lib/data/loot/builder/HTLootPoolBuilder.kt new file mode 100644 index 000000000..63f818b09 --- /dev/null +++ b/src/lib/kotlin/hiiragi283/lib/data/loot/builder/HTLootPoolBuilder.kt @@ -0,0 +1,69 @@ +@file:OptIn(ExperimentalContracts::class) + +package hiiragi283.lib.data.loot.builder + +import hiiragi283.lib.util.HTBuilderMarker +import hiiragi283.lib.util.HTDelegates +import it.unimi.dsi.fastutil.objects.ObjectArrayList +import net.minecraft.world.level.storage.loot.LootPool +import net.minecraft.world.level.storage.loot.entries.LootPoolEntryContainer +import net.minecraft.world.level.storage.loot.functions.LootItemFunction +import net.minecraft.world.level.storage.loot.predicates.LootItemCondition +import net.minecraft.world.level.storage.loot.providers.number.ConstantValue +import net.minecraft.world.level.storage.loot.providers.number.NumberProvider +import kotlin.contracts.ExperimentalContracts +import kotlin.contracts.InvocationKind +import kotlin.contracts.contract + +/** + * @author Hiiragi Tsubasa + * @since 26.1.8 + * @see LootPool.Builder + */ +@HTBuilderMarker +class HTLootPoolBuilder { + companion object { + @JvmStatic + inline fun build(builderAction: HTLootPoolBuilder.() -> Unit): LootPool.Builder { + contract { + callsInPlace(builderAction, InvocationKind.EXACTLY_ONCE) + } + return HTLootPoolBuilder().apply(builderAction).build() + } + } + + // Rolls + var rolls: NumberProvider by HTDelegates.onceInitialize { ConstantValue.exactly(1f) } + var bonusRolls: NumberProvider by HTDelegates.onceInitialize { ConstantValue.exactly(0f) } + + // Entries + @PublishedApi internal val entries: MutableList> = ObjectArrayList() + + operator fun LootPoolEntryContainer.Builder<*>.unaryPlus() { + entries += this + } + + // Conditions + @PublishedApi internal val conditions: MutableList = ObjectArrayList() + + operator fun LootItemCondition.Builder.unaryPlus() { + conditions += this + } + + // Functions + @PublishedApi internal val functions: MutableList = ObjectArrayList() + + operator fun LootItemFunction.Builder.unaryPlus() { + functions += this + } + + fun build(): LootPool.Builder { + val builder: LootPool.Builder = LootPool.lootPool() + builder.setRolls(rolls) + builder.setBonusRolls(bonusRolls) + entries.forEach(builder::add) + conditions.forEach(builder::`when`) + functions.forEach(builder::apply) + return builder + } +} diff --git a/src/lib/kotlin/hiiragi283/lib/data/loot/builder/HTLootTableBuilder.kt b/src/lib/kotlin/hiiragi283/lib/data/loot/builder/HTLootTableBuilder.kt new file mode 100644 index 000000000..59eefe365 --- /dev/null +++ b/src/lib/kotlin/hiiragi283/lib/data/loot/builder/HTLootTableBuilder.kt @@ -0,0 +1,72 @@ +@file:OptIn(ExperimentalContracts::class) + +package hiiragi283.lib.data.loot.builder + +import hiiragi283.lib.data.ConditionBuilder +import hiiragi283.lib.util.HTBuilderMarker +import it.unimi.dsi.fastutil.objects.ObjectArrayList +import net.minecraft.world.level.storage.loot.LootPool +import net.minecraft.world.level.storage.loot.LootTable +import net.minecraft.world.level.storage.loot.functions.LootItemFunction +import net.neoforged.neoforge.common.conditions.ICondition +import kotlin.contracts.ExperimentalContracts +import kotlin.contracts.InvocationKind +import kotlin.contracts.contract + +/** + * @author Hiiragi Tsubasa + * @since 26.1.8 + * @see LootTable.Builder + */ +@HTBuilderMarker +class HTLootTableBuilder { + companion object { + @JvmStatic + inline fun build(builderAction: HTLootTableBuilder.() -> Unit): LootTable.Builder { + contract { + callsInPlace(builderAction, InvocationKind.EXACTLY_ONCE) + } + return HTLootTableBuilder().apply(builderAction).build() + } + } + + // Pools + @PublishedApi internal val pools: MutableList = ObjectArrayList() + + operator fun LootPool.Builder.unaryPlus() { + pools += this + } + + inline fun pool(builderAction: HTLootPoolBuilder.() -> Unit) { + contract { + callsInPlace(builderAction, InvocationKind.EXACTLY_ONCE) + } + +HTLootPoolBuilder.build(builderAction) + } + + // Functions + @PublishedApi internal val functions: MutableList = ObjectArrayList() + + operator fun LootItemFunction.Builder.unaryPlus() { + functions += this + } + + // Conditions + @PublishedApi + internal val conditions: MutableList = ObjectArrayList() + + inline fun condition(builderAction: ConditionBuilder.() -> Unit) { + contract { + callsInPlace(builderAction, InvocationKind.EXACTLY_ONCE) + } + ConditionBuilder(conditions).apply(builderAction) + } + + fun build(): LootTable.Builder { + val builder: LootTable.Builder = LootTable.lootTable() + pools.forEach(builder::withPool) + functions.forEach(builder::apply) + builder.withConditions(conditions) + return builder + } +} diff --git a/src/lib/kotlin/hiiragi283/lib/data/loot/predicates/HTBlockSetLootCondition.kt b/src/lib/kotlin/hiiragi283/lib/data/loot/predicates/HTBlockSetLootCondition.kt new file mode 100644 index 000000000..ed0f82dfe --- /dev/null +++ b/src/lib/kotlin/hiiragi283/lib/data/loot/predicates/HTBlockSetLootCondition.kt @@ -0,0 +1,30 @@ +package hiiragi283.lib.data.loot.predicates + +import com.mojang.serialization.MapCodec +import hiiragi283.lib.serialization.codec.HTCodecs +import net.minecraft.core.HolderSet +import net.minecraft.core.registries.Registries +import net.minecraft.world.level.block.Block +import net.minecraft.world.level.storage.loot.LootContext +import net.minecraft.world.level.storage.loot.parameters.LootContextParams +import net.minecraft.world.level.storage.loot.predicates.LootItemCondition + +/** + * [Block]の[HolderSet]に基づいて判定する[LootItemCondition]の実装クラスです。 + * @author Hiiragi Tsubasa + * @since 26.1.8 + */ +@JvmRecord +data class HTBlockSetLootCondition(val blocks: HolderSet) : LootItemCondition { + companion object { + @JvmField + val CODEC: MapCodec = HTCodecs.holderSet(Registries.BLOCK) + .fieldOf("blocks") + .xmap(::HTBlockSetLootCondition, HTBlockSetLootCondition::blocks) + } + + override fun codec(): MapCodec = CODEC + + override fun test(context: LootContext): Boolean = + context.getOptionalParameter(LootContextParams.BLOCK_STATE)?.`is`(blocks) ?: false +} diff --git a/src/lib/kotlin/hiiragi283/ragium/api/material/RagiumMaterial.kt b/src/lib/kotlin/hiiragi283/ragium/api/material/RagiumMaterial.kt index 6a6237f05..9d85042be 100644 --- a/src/lib/kotlin/hiiragi283/ragium/api/material/RagiumMaterial.kt +++ b/src/lib/kotlin/hiiragi283/ragium/api/material/RagiumMaterial.kt @@ -85,11 +85,6 @@ sealed interface RagiumMaterial : */ GYPSUM("Gypsum", "石膏", RagiumChemicals.CALCIUM_SULFATE), - /** - * @since 26.1.8 - */ - CINNABAR("Cinnabar", "辰砂"), - // Ragium RAGINITE("Raginite", "ラギナイト") ; @@ -161,6 +156,11 @@ sealed interface RagiumMaterial : // Common + /** + * @since 26.1.8 + */ + CINNABAR("Cinnabar", "辰砂"), + /** * @since 26.1.7 */ diff --git a/src/main/kotlin/hiiragi283/ragium/common/Ragium.kt b/src/main/kotlin/hiiragi283/ragium/common/Ragium.kt index 69e56a77e..20200d9fc 100644 --- a/src/main/kotlin/hiiragi283/ragium/common/Ragium.kt +++ b/src/main/kotlin/hiiragi283/ragium/common/Ragium.kt @@ -1,6 +1,7 @@ package hiiragi283.ragium.common import hiiragi283.lib.HTConstants +import hiiragi283.lib.data.loot.predicates.HTBlockSetLootCondition import hiiragi283.lib.gui.sync.HTFluidSyncPayload import hiiragi283.lib.gui.sync.HTIntSyncPayload import hiiragi283.lib.gui.sync.HTItemSyncPayload @@ -108,6 +109,9 @@ data object Ragium : HTCommonMod() { event.register(Registries.RECIPE_TYPE) { helper -> RagiumRecipeTypes.allTypes.forEach(helper::register) } + event.register(Registries.LOOT_CONDITION_TYPE) { helper -> + helper.register(RagiumAPI.id("block_set"), HTBlockSetLootCondition.CODEC) + } event.register(NeoForgeRegistries.Keys.INGREDIENT_TYPES) { helper -> helper.register(RagiumAPI.id("material_tags"), HTMaterialTagsIngredient.TYPE) diff --git a/src/main/kotlin/hiiragi283/ragium/common/item/RagiumItems.kt b/src/main/kotlin/hiiragi283/ragium/common/item/RagiumItems.kt index 2678021ff..5c6d2f65d 100644 --- a/src/main/kotlin/hiiragi283/ragium/common/item/RagiumItems.kt +++ b/src/main/kotlin/hiiragi283/ragium/common/item/RagiumItems.kt @@ -75,6 +75,7 @@ data object RagiumItems { putAll(RagiumMaterial.Gem.EMERALD, HTItemPart.DUST, HTItemPart.GEAR) putAll(RagiumMaterial.Gem.ECHO, HTItemPart.DUST) putAll(RagiumMaterial.Gem.PRISMARINE, HTItemPart.DUST) + putAll(RagiumMaterial.Gem.CINNABAR, HTItemPart.DUST, HTItemPart.GEM) putAll(RagiumMaterial.Gem.FLUORITE, HTItemPart.DUST, HTItemPart.GEM) // putAll(RagiumMaterial.Gem.CRYOLITE, HTItemPart.DUST, HTItemPart.GEM) // Metal diff --git a/src/main/resources/assets/ragium/textures/item/cinnabar.png b/src/main/resources/assets/ragium/textures/item/cinnabar.png new file mode 100644 index 0000000000000000000000000000000000000000..6600b777ecf82f6bfa4ea1db6a3321605aee5b3c GIT binary patch literal 399 zcmV;A0dW3_P)Ur|U*;PSjoF7oVds>=~371HK@wxIL=>GLaO1Ce|Ll6fr zGlr;Ileir+b)xUf8V(T7FC`w1Hrit*mFe-jAi#h)01HzXU)fYQ2DzDnDRRiXw@sG- zbbs4|*l5C>D+Ch#*A-%B60^qvg6u*ckC;55rO1E1u}>I*XCDGx+m`~k4@N68a!;U~ zm@mF-0_tgq0%-8^CQczTbu{_>6HCOE%0C?`jhh*I3MdX*nSNs`7#TT*CgSJx&GqQo zndvKl2@uH45hfmrku@i$&D0%$1+mn${!cLS1{l#kGoA#10uU1rjEEZjv~~dg223Wu t?$1{M00960$jrh100006Nkl Date: Tue, 6 Oct 2026 19:39:53 +0900 Subject: [PATCH 8/9] =?UTF-8?q?feat!:=20=E9=89=B1=E7=9F=B3=E7=94=9F?= =?UTF-8?q?=E6=88=90=E3=82=92=E5=89=8A=E9=99=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ragium/data/worldgen/RagiumWorldData.kt | 37 +++++-------------- .../biome_modifier/nether_ore/niter.json | 6 --- .../biome_modifier/nether_ore/sulfur.json | 6 --- .../neoforge/biome_modifier/ore/niter.json | 6 --- .../neoforge/biome_modifier/ore/sulfur.json | 6 --- .../configured_feature/ore/niter.json | 36 ------------------ .../configured_feature/ore/sulfur.json | 36 ------------------ .../placed_feature/nether_ore/niter.json | 27 -------------- .../placed_feature/nether_ore/sulfur.json | 27 -------------- .../worldgen/placed_feature/ore/niter.json | 27 -------------- .../worldgen/placed_feature/ore/sulfur.json | 27 -------------- .../resources/reports/ragium/registries.json | 16 ++------ 12 files changed, 13 insertions(+), 244 deletions(-) delete mode 100644 src/generated/resources/data/ragium/neoforge/biome_modifier/nether_ore/niter.json delete mode 100644 src/generated/resources/data/ragium/neoforge/biome_modifier/nether_ore/sulfur.json delete mode 100644 src/generated/resources/data/ragium/neoforge/biome_modifier/ore/niter.json delete mode 100644 src/generated/resources/data/ragium/neoforge/biome_modifier/ore/sulfur.json delete mode 100644 src/generated/resources/data/ragium/worldgen/configured_feature/ore/niter.json delete mode 100644 src/generated/resources/data/ragium/worldgen/configured_feature/ore/sulfur.json delete mode 100644 src/generated/resources/data/ragium/worldgen/placed_feature/nether_ore/niter.json delete mode 100644 src/generated/resources/data/ragium/worldgen/placed_feature/nether_ore/sulfur.json delete mode 100644 src/generated/resources/data/ragium/worldgen/placed_feature/ore/niter.json delete mode 100644 src/generated/resources/data/ragium/worldgen/placed_feature/ore/sulfur.json diff --git a/src/data/kotlin/hiiragi283/ragium/data/worldgen/RagiumWorldData.kt b/src/data/kotlin/hiiragi283/ragium/data/worldgen/RagiumWorldData.kt index fbb94c1bb..c0a0e3646 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/worldgen/RagiumWorldData.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/worldgen/RagiumWorldData.kt @@ -2,36 +2,23 @@ package hiiragi283.ragium.data.worldgen import hiiragi283.lib.data.worldgen.HTWorldGenData import hiiragi283.lib.data.worldgen.HTWorldGenHelper -import hiiragi283.lib.registry.HTSimpleDeferredBlockAndItem import hiiragi283.ragium.api.RagiumAPI -import hiiragi283.ragium.api.material.HTOreBlockPart -import hiiragi283.ragium.api.material.RagiumMaterial -import hiiragi283.ragium.common.block.RagiumBlocks import hiiragi283.ragium.common.fluid.RagiumFluids import net.minecraft.core.RegistrySetBuilder import net.minecraft.core.registries.Registries import net.minecraft.data.worldgen.BootstrapContext import net.minecraft.data.worldgen.placement.PlacementUtils import net.minecraft.tags.BiomeTags -import net.minecraft.tags.BlockTags import net.minecraft.world.level.block.Blocks -import net.minecraft.world.level.block.state.BlockState import net.minecraft.world.level.levelgen.GenerationStep -import net.minecraft.world.level.levelgen.VerticalAnchor import net.minecraft.world.level.levelgen.feature.ConfiguredFeature import net.minecraft.world.level.levelgen.feature.Feature import net.minecraft.world.level.levelgen.feature.LakeFeature -import net.minecraft.world.level.levelgen.feature.configurations.OreConfiguration import net.minecraft.world.level.levelgen.feature.stateproviders.BlockStateProvider import net.minecraft.world.level.levelgen.placement.BiomeFilter -import net.minecraft.world.level.levelgen.placement.CountPlacement -import net.minecraft.world.level.levelgen.placement.HeightRangePlacement import net.minecraft.world.level.levelgen.placement.InSquarePlacement import net.minecraft.world.level.levelgen.placement.PlacedFeature -import net.minecraft.world.level.levelgen.placement.PlacementModifier import net.minecraft.world.level.levelgen.placement.RarityFilter -import net.minecraft.world.level.levelgen.structure.templatesystem.TagMatchTest -import net.neoforged.neoforge.common.Tags import net.neoforged.neoforge.common.world.BiomeModifier import net.neoforged.neoforge.registries.NeoForgeRegistries @@ -41,17 +28,13 @@ data object RagiumWorldData { val CRUDE_OIL_LAKE = HTWorldGenData(RagiumAPI.id("lake", "crude_oil")) // Ore - @JvmField - val SULFUR_ORE = HTWorldGenData(RagiumAPI.id("ore", "sulfur")) + // val SULFUR_ORE = HTWorldGenData(RagiumAPI.id("ore", "sulfur")) - @JvmField - val NETHER_SULFUR_ORE = HTWorldGenData(SULFUR_ORE, RagiumAPI.id("nether_ore", "sulfur")) + // val NETHER_SULFUR_ORE = HTWorldGenData(SULFUR_ORE, RagiumAPI.id("nether_ore", "sulfur")) - @JvmField - val NITER_ORE = HTWorldGenData(RagiumAPI.id("ore", "niter")) + // val NITER_ORE = HTWorldGenData(RagiumAPI.id("ore", "niter")) - @JvmField - val NETHER_NITER_ORE = HTWorldGenData(NITER_ORE, RagiumAPI.id("nether_ore", "niter")) + // val NETHER_NITER_ORE = HTWorldGenData(NITER_ORE, RagiumAPI.id("nether_ore", "niter")) @Suppress("DEPRECATION") @JvmStatic @@ -71,7 +54,7 @@ data object RagiumWorldData { ) } // Ore - fun oreConfiguration(material: RagiumMaterial, size: Int): OreConfiguration = RagiumBlocks.MATERIAL_ORES + /*fun oreConfiguration(material: RagiumMaterial, size: Int): OreConfiguration = RagiumBlocks.MATERIAL_ORES .column(material) .map { (part: HTOreBlockPart, block: HTSimpleDeferredBlockAndItem) -> val state: BlockState = block.defaultState @@ -94,7 +77,7 @@ data object RagiumWorldData { NITER_ORE, Feature.ORE, oreConfiguration(RagiumMaterial.Mineral.NITER, 7) - ) + )*/ } .add(Registries.PLACED_FEATURE) { context: BootstrapContext -> // Lake @@ -109,7 +92,7 @@ data object RagiumWorldData { ) ) // Ore - fun commonOrePlacement(count: Int, range: PlacementModifier): List = listOf( + /*fun commonOrePlacement(count: Int, range: PlacementModifier): List = listOf( CountPlacement.of(count), InSquarePlacement.spread(), range, @@ -147,7 +130,7 @@ data object RagiumWorldData { 4, HeightRangePlacement.triangle(VerticalAnchor.bottom(), VerticalAnchor.top()) ) - ) + )*/ } .add(NeoForgeRegistries.Keys.BIOME_MODIFIERS) { context: BootstrapContext -> // Lake @@ -158,7 +141,7 @@ data object RagiumWorldData { GenerationStep.Decoration.LAKES ) // Ore - HTWorldGenHelper.register( + /*HTWorldGenHelper.register( context, SULFUR_ORE, BiomeTags.IS_OVERWORLD, @@ -181,7 +164,7 @@ data object RagiumWorldData { NETHER_NITER_ORE, BiomeTags.IS_NETHER, GenerationStep.Decoration.UNDERGROUND_ORES - ) + )*/ } } } diff --git a/src/generated/resources/data/ragium/neoforge/biome_modifier/nether_ore/niter.json b/src/generated/resources/data/ragium/neoforge/biome_modifier/nether_ore/niter.json deleted file mode 100644 index 213b2f101..000000000 --- a/src/generated/resources/data/ragium/neoforge/biome_modifier/nether_ore/niter.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "type": "neoforge:add_features", - "biomes": "#minecraft:is_nether", - "features": "ragium:nether_ore/niter", - "step": "underground_ores" -} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/neoforge/biome_modifier/nether_ore/sulfur.json b/src/generated/resources/data/ragium/neoforge/biome_modifier/nether_ore/sulfur.json deleted file mode 100644 index ad4df79a2..000000000 --- a/src/generated/resources/data/ragium/neoforge/biome_modifier/nether_ore/sulfur.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "type": "neoforge:add_features", - "biomes": "#minecraft:is_nether", - "features": "ragium:nether_ore/sulfur", - "step": "underground_ores" -} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/neoforge/biome_modifier/ore/niter.json b/src/generated/resources/data/ragium/neoforge/biome_modifier/ore/niter.json deleted file mode 100644 index e44843093..000000000 --- a/src/generated/resources/data/ragium/neoforge/biome_modifier/ore/niter.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "type": "neoforge:add_features", - "biomes": "#minecraft:is_overworld", - "features": "ragium:ore/niter", - "step": "underground_ores" -} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/neoforge/biome_modifier/ore/sulfur.json b/src/generated/resources/data/ragium/neoforge/biome_modifier/ore/sulfur.json deleted file mode 100644 index 415b90086..000000000 --- a/src/generated/resources/data/ragium/neoforge/biome_modifier/ore/sulfur.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "type": "neoforge:add_features", - "biomes": "#minecraft:is_overworld", - "features": "ragium:ore/sulfur", - "step": "underground_ores" -} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/worldgen/configured_feature/ore/niter.json b/src/generated/resources/data/ragium/worldgen/configured_feature/ore/niter.json deleted file mode 100644 index 4e7886c2f..000000000 --- a/src/generated/resources/data/ragium/worldgen/configured_feature/ore/niter.json +++ /dev/null @@ -1,36 +0,0 @@ -{ - "type": "minecraft:ore", - "config": { - "discard_chance_on_air_exposure": 0.0, - "size": 7, - "targets": [ - { - "state": { - "Name": "ragium:niter_ore" - }, - "target": { - "predicate_type": "minecraft:tag_match", - "tag": "minecraft:stone_ore_replaceables" - } - }, - { - "state": { - "Name": "ragium:deepslate_niter_ore" - }, - "target": { - "predicate_type": "minecraft:tag_match", - "tag": "minecraft:deepslate_ore_replaceables" - } - }, - { - "state": { - "Name": "ragium:nether_niter_ore" - }, - "target": { - "predicate_type": "minecraft:tag_match", - "tag": "c:netherracks" - } - } - ] - } -} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/worldgen/configured_feature/ore/sulfur.json b/src/generated/resources/data/ragium/worldgen/configured_feature/ore/sulfur.json deleted file mode 100644 index 5d2369155..000000000 --- a/src/generated/resources/data/ragium/worldgen/configured_feature/ore/sulfur.json +++ /dev/null @@ -1,36 +0,0 @@ -{ - "type": "minecraft:ore", - "config": { - "discard_chance_on_air_exposure": 0.0, - "size": 7, - "targets": [ - { - "state": { - "Name": "ragium:sulfur_ore" - }, - "target": { - "predicate_type": "minecraft:tag_match", - "tag": "minecraft:stone_ore_replaceables" - } - }, - { - "state": { - "Name": "ragium:deepslate_sulfur_ore" - }, - "target": { - "predicate_type": "minecraft:tag_match", - "tag": "minecraft:deepslate_ore_replaceables" - } - }, - { - "state": { - "Name": "ragium:nether_sulfur_ore" - }, - "target": { - "predicate_type": "minecraft:tag_match", - "tag": "c:netherracks" - } - } - ] - } -} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/worldgen/placed_feature/nether_ore/niter.json b/src/generated/resources/data/ragium/worldgen/placed_feature/nether_ore/niter.json deleted file mode 100644 index 4e83427cf..000000000 --- a/src/generated/resources/data/ragium/worldgen/placed_feature/nether_ore/niter.json +++ /dev/null @@ -1,27 +0,0 @@ -{ - "feature": "ragium:ore/niter", - "placement": [ - { - "type": "minecraft:count", - "count": 4 - }, - { - "type": "minecraft:in_square" - }, - { - "type": "minecraft:height_range", - "height": { - "type": "minecraft:trapezoid", - "max_inclusive": { - "below_top": 0 - }, - "min_inclusive": { - "above_bottom": 0 - } - } - }, - { - "type": "minecraft:biome" - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/worldgen/placed_feature/nether_ore/sulfur.json b/src/generated/resources/data/ragium/worldgen/placed_feature/nether_ore/sulfur.json deleted file mode 100644 index 2694d9bb4..000000000 --- a/src/generated/resources/data/ragium/worldgen/placed_feature/nether_ore/sulfur.json +++ /dev/null @@ -1,27 +0,0 @@ -{ - "feature": "ragium:ore/sulfur", - "placement": [ - { - "type": "minecraft:count", - "count": 4 - }, - { - "type": "minecraft:in_square" - }, - { - "type": "minecraft:height_range", - "height": { - "type": "minecraft:trapezoid", - "max_inclusive": { - "below_top": 0 - }, - "min_inclusive": { - "above_bottom": 0 - } - } - }, - { - "type": "minecraft:biome" - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/worldgen/placed_feature/ore/niter.json b/src/generated/resources/data/ragium/worldgen/placed_feature/ore/niter.json deleted file mode 100644 index b622cbbc6..000000000 --- a/src/generated/resources/data/ragium/worldgen/placed_feature/ore/niter.json +++ /dev/null @@ -1,27 +0,0 @@ -{ - "feature": "ragium:ore/niter", - "placement": [ - { - "type": "minecraft:count", - "count": 2 - }, - { - "type": "minecraft:in_square" - }, - { - "type": "minecraft:height_range", - "height": { - "type": "minecraft:trapezoid", - "max_inclusive": { - "absolute": 32 - }, - "min_inclusive": { - "above_bottom": 0 - } - } - }, - { - "type": "minecraft:biome" - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/ragium/worldgen/placed_feature/ore/sulfur.json b/src/generated/resources/data/ragium/worldgen/placed_feature/ore/sulfur.json deleted file mode 100644 index 807f6e8ab..000000000 --- a/src/generated/resources/data/ragium/worldgen/placed_feature/ore/sulfur.json +++ /dev/null @@ -1,27 +0,0 @@ -{ - "feature": "ragium:ore/sulfur", - "placement": [ - { - "type": "minecraft:count", - "count": 2 - }, - { - "type": "minecraft:in_square" - }, - { - "type": "minecraft:height_range", - "height": { - "type": "minecraft:trapezoid", - "max_inclusive": { - "absolute": 32 - }, - "min_inclusive": { - "above_bottom": 0 - } - } - }, - { - "type": "minecraft:biome" - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/reports/ragium/registries.json b/src/generated/resources/reports/ragium/registries.json index 946cce78d..5cd3e810b 100644 --- a/src/generated/resources/reports/ragium/registries.json +++ b/src/generated/resources/reports/ragium/registries.json @@ -466,23 +466,13 @@ "washing" ], "minecraft:worldgen/configured_feature": [ - "lake/crude_oil", - "ore/niter", - "ore/sulfur" + "lake/crude_oil" ], "minecraft:worldgen/placed_feature": [ - "lake/crude_oil", - "nether_ore/niter", - "nether_ore/sulfur", - "ore/niter", - "ore/sulfur" + "lake/crude_oil" ], "neoforge:biome_modifier": [ - "lake/crude_oil", - "nether_ore/niter", - "nether_ore/sulfur", - "ore/niter", - "ore/sulfur" + "lake/crude_oil" ], "neoforge:fluid_ingredient_type": [ "potion" From 50a03e2b432bd0d1322c04e447025a148d52ff13 Mon Sep 17 00:00:00 2001 From: Hiiragi Russell Tsubasa <97942736+Hiiragi283@users.noreply.github.com> Date: Tue, 6 Oct 2026 19:50:05 +0900 Subject: [PATCH 9/9] =?UTF-8?q?feat:=20=E4=B8=80=E9=83=A8=E3=81=AE?= =?UTF-8?q?=E3=82=A2=E3=82=A4=E3=83=86=E3=83=A0=E3=81=AB=E3=83=84=E3=83=BC?= =?UTF-8?q?=E3=83=AB=E3=83=81=E3=83=83=E3=83=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../hiiragi283/ragium/client/RagiumClient.kt | 7 +++ .../data/lang/RagiumEnglishLangProvider.kt | 5 ++ .../data/lang/RagiumJapaneseLangProvider.kt | 5 ++ .../resources/assets/ragium/lang/en_us.json | 6 ++- .../resources/assets/ragium/lang/ja_jp.json | 6 ++- .../ragium/api/data/RagiumDataComponents.kt | 20 +++++--- .../ragium/api/text/HTItemTooltip.kt | 46 +++++++++++++++++++ .../ragium/api/text/RagiumTranslation.kt | 5 ++ .../ragium/common/item/RagiumItems.kt | 21 ++++++++- 9 files changed, 112 insertions(+), 9 deletions(-) create mode 100644 src/lib/kotlin/hiiragi283/ragium/api/text/HTItemTooltip.kt diff --git a/src/client/kotlin/hiiragi283/ragium/client/RagiumClient.kt b/src/client/kotlin/hiiragi283/ragium/client/RagiumClient.kt index 05e92066a..de06d0cc7 100644 --- a/src/client/kotlin/hiiragi283/ragium/client/RagiumClient.kt +++ b/src/client/kotlin/hiiragi283/ragium/client/RagiumClient.kt @@ -13,6 +13,7 @@ import hiiragi283.lib.text.HTCommonTranslation import hiiragi283.lib.text.Text import hiiragi283.lib.transfer.fluid.HTFluidView import hiiragi283.ragium.api.RagiumAPI +import hiiragi283.ragium.api.data.RagiumDataComponents import hiiragi283.ragium.api.data.chemical.HTClientChemicalHelper import hiiragi283.ragium.api.tag.RagiumTags import hiiragi283.ragium.client.gui.screen.HTWidgetContainerScreen @@ -45,6 +46,7 @@ import net.neoforged.neoforge.client.event.RegisterClientTooltipComponentFactori import net.neoforged.neoforge.client.event.RegisterMenuScreensEvent import net.neoforged.neoforge.client.fluid.FluidTintSources import net.neoforged.neoforge.client.network.event.RegisterClientPayloadHandlersEvent +import net.neoforged.neoforge.common.tooltip.TooltipAppender import net.neoforged.neoforge.common.tooltip.TooltipLocation import net.neoforged.neoforge.event.RegisterTooltipAppendersEvent import net.neoforged.neoforge.fluids.FluidStack @@ -294,5 +296,10 @@ data object RagiumClient : HTClientMod() { ) { stack: ItemStack, _, _, _, _, builder: Consumer -> HTClientChemicalHelper.addToTooltip(stack, builder::accept) } + + event.registerAppender( + TooltipLocation.PRE_ITEM_INFO, + TooltipAppender.createComponentAppender(RagiumDataComponents.ITEM_TOOLTIP) + ) } } diff --git a/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumEnglishLangProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumEnglishLangProvider.kt index 05df3d815..582812156 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumEnglishLangProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumEnglishLangProvider.kt @@ -227,6 +227,11 @@ class RagiumEnglishLangProvider(output: PackOutput) : add(RagiumTranslation.CONFIG_ENERGY_CAPACITY, "Energy Capacity") add(RagiumTranslation.CONFIG_ENERGY_RATE, "Energy Rate") + add(RagiumTranslation.TOOLTIPS_SULFUR, "Dropped from Coal Ores") + add(RagiumTranslation.TOOLTIPS_CINNABAR, "Dropped from Redstone Ores") + add(RagiumTranslation.TOOLTIPS_FLUORITE, "Dropped from Lapis Lazuri Ores") + add(RagiumTranslation.TOOLTIPS_CARBON, "Dropped from Diamond Ores") + add(RagiumTranslation.TOOLTIPS_MEMORY_DISC_DATA, $$"Scanned Item: %1$s") addDataTranslations() diff --git a/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumJapaneseLangProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumJapaneseLangProvider.kt index e8123567b..71662c8c1 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumJapaneseLangProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumJapaneseLangProvider.kt @@ -223,6 +223,11 @@ class RagiumJapaneseLangProvider(output: PackOutput) : add(RagiumTranslation.CONFIG_ENERGY_CAPACITY, "エネルギー容量") add(RagiumTranslation.CONFIG_ENERGY_RATE, "エネルギー使用速度") + add(RagiumTranslation.TOOLTIPS_SULFUR, "石炭鉱石からドロップします") + add(RagiumTranslation.TOOLTIPS_CINNABAR, "レッドストーン鉱石からドロップします") + add(RagiumTranslation.TOOLTIPS_FLUORITE, "ラピスラズリ鉱石からドロップします") + add(RagiumTranslation.TOOLTIPS_CARBON, "ダイヤモンド鉱石からドロップします") + add(RagiumTranslation.TOOLTIPS_MEMORY_DISC_DATA, $$"スキャン済み: %1$s") addDataTranslations() diff --git a/src/generated/resources/assets/ragium/lang/en_us.json b/src/generated/resources/assets/ragium/lang/en_us.json index a92c214b5..c212da5f4 100644 --- a/src/generated/resources/assets/ragium/lang/en_us.json +++ b/src/generated/resources/assets/ragium/lang/en_us.json @@ -511,8 +511,12 @@ "tag.item.c.buckets.sulfuric_acid": "Sulfuric Acid Bucket", "tag.item.c.buckets.synthetic_resin": "Synthetic Resin Bucket", "tag.item.c.buckets.wood_tar": "Wood Tar Bucket", + "tooltip.ragium.carbon": "Dropped from Diamond Ores", + "tooltip.ragium.cinnabar": "Dropped from Redstone Ores", + "tooltip.ragium.fluorite": "Dropped from Lapis Lazuri Ores", "tooltip.ragium.intrinsic_enchantment": "Always has at least %1$s", "tooltip.ragium.memory_disc_data": "Scanned Item: %1$s", "tooltip.ragium.show_description": "Press Shift to show description", - "tooltip.ragium.show_details": "Press Ctrl to show details" + "tooltip.ragium.show_details": "Press Ctrl to show details", + "tooltip.ragium.sulfur": "Dropped from Coal Ores" } \ No newline at end of file diff --git a/src/generated/resources/assets/ragium/lang/ja_jp.json b/src/generated/resources/assets/ragium/lang/ja_jp.json index 0814361a8..04fdab9d9 100644 --- a/src/generated/resources/assets/ragium/lang/ja_jp.json +++ b/src/generated/resources/assets/ragium/lang/ja_jp.json @@ -511,8 +511,12 @@ "tag.item.c.buckets.sulfuric_acid": "硫酸入りバケツ", "tag.item.c.buckets.synthetic_resin": "合成樹脂入りバケツ", "tag.item.c.buckets.wood_tar": "木タール入りバケツ", + "tooltip.ragium.carbon": "ダイヤモンド鉱石からドロップします", + "tooltip.ragium.cinnabar": "レッドストーン鉱石からドロップします", + "tooltip.ragium.fluorite": "ラピスラズリ鉱石からドロップします", "tooltip.ragium.intrinsic_enchantment": "常に少なくとも%1$sがあります", "tooltip.ragium.memory_disc_data": "スキャン済み: %1$s", "tooltip.ragium.show_description": "シフトキーを押して説明を表示", - "tooltip.ragium.show_details": "シフトキーを押して詳細を表示" + "tooltip.ragium.show_details": "シフトキーを押して詳細を表示", + "tooltip.ragium.sulfur": "石炭鉱石からドロップします" } \ No newline at end of file diff --git a/src/lib/kotlin/hiiragi283/ragium/api/data/RagiumDataComponents.kt b/src/lib/kotlin/hiiragi283/ragium/api/data/RagiumDataComponents.kt index 02c84c37c..daa07702d 100644 --- a/src/lib/kotlin/hiiragi283/ragium/api/data/RagiumDataComponents.kt +++ b/src/lib/kotlin/hiiragi283/ragium/api/data/RagiumDataComponents.kt @@ -4,6 +4,7 @@ import hiiragi283.lib.data.DataComponentType import hiiragi283.lib.serialization.codec.HTCodecs import hiiragi283.lib.serialization.network.HTStreamCodecs import hiiragi283.ragium.api.data.chemical.HTChemical +import hiiragi283.ragium.api.text.HTItemTooltip import net.minecraft.core.Holder import net.minecraft.core.component.DataComponentType import net.minecraft.network.codec.ByteBufCodecs @@ -25,21 +26,28 @@ data object RagiumDataComponents { DataComponentType(HTChemical.HOLDER_CODEC, HTChemical.HOLDER_STREAM_CODEC) @JvmField - val ENERGY: DataComponentType = DataComponentType(HTCodecs.NON_NEGATIVE_INT, ByteBufCodecs.VAR_INT) + val ENERGY: DataComponentType = + DataComponentType(HTCodecs.NON_NEGATIVE_INT, ByteBufCodecs.VAR_INT) @JvmField val FLUID: DataComponentType = DataComponentType(SimpleFluidContent.CODEC, SimpleFluidContent.STREAM_CODEC) + /** + * @since 26.1.8 + */ + @JvmField + val ITEM_TOOLTIP: DataComponentType = + DataComponentType(HTItemTooltip.CODEC, HTItemTooltip.STREAM_CODEC) + @JvmField - val MEMORY_DISC_DATA: DataComponentType = DataComponentType( - ItemStackTemplate.CODEC, - ItemStackTemplate.STREAM_CODEC - ) + val MEMORY_DISC_DATA: DataComponentType = + DataComponentType(ItemStackTemplate.CODEC, ItemStackTemplate.STREAM_CODEC) /** * @since 26.1.7 */ @JvmField - val OWNER_ID: DataComponentType = DataComponentType(HTCodecs.UUID, HTStreamCodecs.UUID) + val OWNER_ID: DataComponentType = + DataComponentType(HTCodecs.UUID, HTStreamCodecs.UUID) } diff --git a/src/lib/kotlin/hiiragi283/ragium/api/text/HTItemTooltip.kt b/src/lib/kotlin/hiiragi283/ragium/api/text/HTItemTooltip.kt new file mode 100644 index 000000000..7fef081b8 --- /dev/null +++ b/src/lib/kotlin/hiiragi283/ragium/api/text/HTItemTooltip.kt @@ -0,0 +1,46 @@ +package hiiragi283.ragium.api.text + +import com.mojang.serialization.Codec +import hiiragi283.lib.text.HTHasTranslationKey +import hiiragi283.lib.text.HTTranslation +import io.netty.buffer.ByteBuf +import net.minecraft.ChatFormatting +import net.minecraft.core.component.DataComponentGetter +import net.minecraft.network.chat.Component +import net.minecraft.network.codec.ByteBufCodecs +import net.minecraft.network.codec.StreamCodec +import net.minecraft.world.item.Item +import net.minecraft.world.item.TooltipFlag +import net.minecraft.world.item.component.TooltipProvider +import java.util.function.Consumer + +/** + * 短い説明文を乗せるためのクラスです。 + * @author Hiiragi Tsubasa + * @since 26.1.8 + */ +@JvmRecord +data class HTItemTooltip(override val translationKey: String) : + HTTranslation, + TooltipProvider { + companion object { + @JvmField + val CODEC: Codec = Codec.STRING.xmap(::HTItemTooltip, HTItemTooltip::translationKey) + + @JvmField + val STREAM_CODEC: StreamCodec = + ByteBufCodecs.STRING_UTF8.map(::HTItemTooltip, HTItemTooltip::translationKey) + + @JvmStatic + fun wrap(delegate: HTHasTranslationKey): HTItemTooltip = HTItemTooltip(delegate.translationKey) + } + + override fun addToTooltip( + context: Item.TooltipContext, + consumer: Consumer, + flag: TooltipFlag, + components: DataComponentGetter + ) { + consumer.accept(this.translateColored(ChatFormatting.AQUA)) + } +} diff --git a/src/lib/kotlin/hiiragi283/ragium/api/text/RagiumTranslation.kt b/src/lib/kotlin/hiiragi283/ragium/api/text/RagiumTranslation.kt index 908a37648..4cc03e09d 100644 --- a/src/lib/kotlin/hiiragi283/ragium/api/text/RagiumTranslation.kt +++ b/src/lib/kotlin/hiiragi283/ragium/api/text/RagiumTranslation.kt @@ -18,6 +18,11 @@ enum class RagiumTranslation(type: String, vararg path: String) : HTTranslation CONFIG_ENERGY_RATE("config", "energy_rate"), // Tooltips + TOOLTIPS_SULFUR(HTConstants.TOOLTIP, "sulfur"), + TOOLTIPS_CINNABAR(HTConstants.TOOLTIP, "cinnabar"), + TOOLTIPS_FLUORITE(HTConstants.TOOLTIP, "fluorite"), + TOOLTIPS_CARBON(HTConstants.TOOLTIP, "carbon"), + TOOLTIPS_MEMORY_DISC_DATA(HTConstants.TOOLTIP, "memory_disc_data") ; diff --git a/src/main/kotlin/hiiragi283/ragium/common/item/RagiumItems.kt b/src/main/kotlin/hiiragi283/ragium/common/item/RagiumItems.kt index 5c6d2f65d..914ae15c8 100644 --- a/src/main/kotlin/hiiragi283/ragium/common/item/RagiumItems.kt +++ b/src/main/kotlin/hiiragi283/ragium/common/item/RagiumItems.kt @@ -9,12 +9,15 @@ import hiiragi283.lib.item.component.HTToolCollection import hiiragi283.lib.item.component.HTToolType import hiiragi283.lib.registry.HTDeferredItemRegister import hiiragi283.lib.registry.HTSimpleDeferredItem +import hiiragi283.lib.text.HTHasTranslationKey import hiiragi283.ragium.api.RagiumAPI import hiiragi283.ragium.api.data.RagiumDataComponents import hiiragi283.ragium.api.data.chemical.RagiumChemicals import hiiragi283.ragium.api.material.HTItemPart import hiiragi283.ragium.api.material.RagiumMaterial import hiiragi283.ragium.api.tag.HTMachineType +import hiiragi283.ragium.api.text.HTItemTooltip +import hiiragi283.ragium.api.text.RagiumTranslation import hiiragi283.ragium.common.fluid.RagiumFluids import hiiragi283.ragium.common.item.component.RagiumToolMaterials import net.minecraft.core.Holder @@ -273,12 +276,19 @@ data object RagiumItems { @JvmStatic private fun modifyDefaultComponents(event: ModifyDefaultComponentsEvent) { + fun set(item: ItemLike, type: DataComponentType, value: T) { + event.modify(item) { builder: DataComponentMap.Builder, provider: HolderLookup.Provider, _ -> + builder.set(type, value) + } + } + + // Chemical fun setHolder(item: ItemLike, type: DataComponentType>, key: ResourceKey) { event.modify(item) { builder: DataComponentMap.Builder, provider: HolderLookup.Provider, _ -> builder.set(type, provider.getOrThrow(key)) } } - // Chemical + setHolder(Items.COAL_BLOCK, RagiumDataComponents.CHEMICAL, RagiumChemicals.CARBON) setHolder(Items.COAL, RagiumDataComponents.CHEMICAL, RagiumChemicals.CARBON) setHolder(Items.CHARCOAL, RagiumDataComponents.CHEMICAL, RagiumChemicals.CARBON) @@ -309,5 +319,14 @@ data object RagiumItems { setHolder(Items.QUARTZ_BLOCK, RagiumDataComponents.CHEMICAL, RagiumChemicals.SILICON_DIOXIDE) setHolder(Items.QUARTZ, RagiumDataComponents.CHEMICAL, RagiumChemicals.SILICON_DIOXIDE) + // Tooltip + fun setTooltip(item: ItemLike, delegate: HTHasTranslationKey) { + set(item, RagiumDataComponents.ITEM_TOOLTIP, HTItemTooltip.wrap(delegate)) + } + + setTooltip(getOrThrow(HTItemPart.DUST, RagiumMaterial.Mineral.SULFUR), RagiumTranslation.TOOLTIPS_SULFUR) + setTooltip(getOrThrow(HTItemPart.GEM, RagiumMaterial.Gem.CINNABAR), RagiumTranslation.TOOLTIPS_CINNABAR) + setTooltip(getOrThrow(HTItemPart.GEM, RagiumMaterial.Gem.FLUORITE), RagiumTranslation.TOOLTIPS_FLUORITE) + setTooltip(getOrThrow(HTItemPart.DUST, RagiumMaterial.Chemicals.CARBON), RagiumTranslation.TOOLTIPS_CARBON) } }