diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index a25fbfac8f..486941050d 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/RagiumClient.kt b/src/client/kotlin/hiiragi283/ragium/client/RagiumClient.kt index 05e92066a0..de06d0cc7e 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/client/kotlin/hiiragi283/ragium/client/integration/jei/RagiumJeiPlugin.kt b/src/client/kotlin/hiiragi283/ragium/client/integration/jei/RagiumJeiPlugin.kt index 0b8e9fdf04..e3d3ded450 100644 --- a/src/client/kotlin/hiiragi283/ragium/client/integration/jei/RagiumJeiPlugin.kt +++ b/src/client/kotlin/hiiragi283/ragium/client/integration/jei/RagiumJeiPlugin.kt @@ -1,14 +1,14 @@ 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.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 @@ -21,9 +21,12 @@ 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 +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 @@ -106,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), - HTItemToItemAndFluidRecipeCategory(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), - HTSingleRecipeCategory.FluidToItem(guiHelper, RagiumJeiRecipeTypes.FREEZING), - HTSingleRecipeCategory.ItemToFluid(guiHelper, RagiumJeiRecipeTypes.MELTING), - HTItemToItemAndFluidRecipeCategory(guiHelper, RagiumJeiRecipeTypes.PYROLYZING), - HTFluidToItemAndFluidRecipeCategory(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), - HTItemAndFluidToFluidRecipeCategory(guiHelper, RagiumJeiRecipeTypes.MIXING), + 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 c50c68a1e0..a620e7afe6 100644 --- a/src/client/kotlin/hiiragi283/ragium/client/integration/jei/RagiumJeiRecipeTypes.kt +++ b/src/client/kotlin/hiiragi283/ragium/client/integration/jei/RagiumJeiRecipeTypes.kt @@ -1,109 +1,96 @@ 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 +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 1b2a91bd9d..df218f7827 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 5c79c56d4f..86bf08fe68 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 new file mode 100644 index 0000000000..2d99d2db0e --- /dev/null +++ b/src/client/kotlin/hiiragi283/ragium/client/integration/jei/category/RTFreezingRecipeCategory.kt @@ -0,0 +1,45 @@ +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.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) : + HTHolderRecipeCategory( + RagiumJeiRecipeTypes.FREEZING, + RagiumRecipeTypes.FREEZING, + guiHelper.createDrawableItemLike(RagiumBlocks.FREEZER), + 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/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 0000000000..82d5cadb57 --- /dev/null +++ b/src/client/kotlin/hiiragi283/ragium/client/integration/jei/category/RTMixingRecipeCategory.kt @@ -0,0 +1,54 @@ +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.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 +import mezz.jei.api.helpers.IGuiHelper +import mezz.jei.api.recipe.IFocusGroup + +class RTMixingRecipeCategory(guiHelper: IGuiHelper) : + HTHolderRecipeCategory( + RagiumJeiRecipeTypes.MIXING, + RagiumRecipeTypes.MIXING, + guiHelper.createDrawableItemLike(RagiumBlocks.MIXER), + 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/client/kotlin/hiiragi283/ragium/client/integration/jei/category/RTReactingRecipeCategory.kt b/src/client/kotlin/hiiragi283/ragium/client/integration/jei/category/RTReactingRecipeCategory.kt index b91f15c794..0bc7a5ad42 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 64ccdcd631..8c3eaf2ca6 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 bbf191ac66..d9fb6cf431 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/data/kotlin/hiiragi283/ragium/data/RagiumDataGen.kt b/src/data/kotlin/hiiragi283/ragium/data/RagiumDataGen.kt index 6854bc5ec6..410cca932d 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/lang/RagiumEnglishLangProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/lang/RagiumEnglishLangProvider.kt index 32fb57f3a7..582812156f 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 @@ -223,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 7e084e874d..71662c8c1e 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 @@ -219,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/data/kotlin/hiiragi283/ragium/data/loot/RagiumBlockLootTableProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/loot/RagiumBlockLootTableProvider.kt index fce0d77b3d..b53eb0c402 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 b7187573c0..7488b8efa5 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 e24611bfc8..279a63243e 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 0000000000..7e7120a539 --- /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/RagiumChemicalRecipeProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumChemicalRecipeProvider.kt index 5af9d02f6d..1d09be2bd7 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 fa234aa167..cd6cf67850 100644 --- a/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumCommonRecipeProvider.kt +++ b/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumCommonRecipeProvider.kt @@ -1,15 +1,20 @@ 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 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 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 @@ -29,11 +34,13 @@ 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) : HTRecipeProvider(packOutput, future, RagiumAPI.MOD_ID) { override fun exportValues() { + mechanical() heat() chemical() electronics() @@ -41,6 +48,154 @@ 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.Gem.CINNABAR) } + 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 { +RagiumItems.getOrThrow(HTItemPart.DUST, RagiumMaterial.Gem.FLUORITE) } + 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() { @@ -175,7 +330,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 @@ -189,7 +344,7 @@ class RagiumCommonRecipeProvider(packOutput: PackOutput, future: CompletableFutu RagiumRecipeBuilders.mixing { itemIngredient { items { +RagiumItems.TAR } } fluidIngredient { +holderSet(RagiumFluids.HYDROGEN) } - result { + fluidResult { +RagiumFluids.FUEL amount = 500 } @@ -213,26 +368,36 @@ class RagiumCommonRecipeProvider(packOutput: PackOutput, future: CompletableFutu amount = 180 } }.save(exporter) - // Molten Plastic -> Plastic - RagiumRecipeBuilders.freezing { - ingredient { - +holderSet(RagiumFluids.MOLTEN_PLASTIC) + // Molten Plastic <-> Plastic + RagiumRecipeBuilders.melting { + ingredient { +holderSet(HTCommonTags.Items.PLASTICS) } + result { + +RagiumFluids.MOLTEN_PLASTIC amount = 90 } + }.save(exporter) + val moltenPlastic = HTFluidIngredient(FluidIngredient.of(holderSet(RagiumFluids.MOLTEN_PLASTIC)), 90) + RagiumRecipeBuilders.freezing { + 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 { @@ -289,10 +454,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 { @@ -300,9 +466,25 @@ class RagiumCommonRecipeProvider(packOutput: PackOutput, future: CompletableFutu +holderSet(dyeContent) amount /= 4 } + 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 @@ -345,7 +527,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) } @@ -378,7 +560,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 } @@ -548,8 +730,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) } @@ -618,7 +809,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/data/kotlin/hiiragi283/ragium/data/recipe/RagiumHeatRecipeProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumHeatRecipeProvider.kt index 4fc9b8d556..4d4c04f5ee 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/RagiumMechanicalRecipeProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumMechanicalRecipeProvider.kt index 5dec41afc1..ed365ae993 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/recipe/RagiumVanillaRecipeProvider.kt b/src/data/kotlin/hiiragi283/ragium/data/recipe/RagiumVanillaRecipeProvider.kt index dbf23f4eee..a287df98d2 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 81530c05ae..71f7ce1e63 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 @@ -75,6 +76,12 @@ 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) + 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/data/kotlin/hiiragi283/ragium/data/worldgen/RagiumWorldData.kt b/src/data/kotlin/hiiragi283/ragium/data/worldgen/RagiumWorldData.kt index fbb94c1bb6..c0a0e36463 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/assets/ragium/items/ball_mold.json b/src/generated/resources/assets/ragium/items/ball_mold.json new file mode 100644 index 0000000000..c6486b257b --- /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 0000000000..1209e4d97f --- /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 0000000000..5da7030c2a --- /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/cinnabar.json b/src/generated/resources/assets/ragium/items/cinnabar.json new file mode 100644 index 0000000000..d5e8ac460b --- /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/items/cinnabar_dust.json b/src/generated/resources/assets/ragium/items/cinnabar_dust.json new file mode 100644 index 0000000000..26be5b9dcf --- /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/items/plate_mold.json b/src/generated/resources/assets/ragium/items/plate_mold.json new file mode 100644 index 0000000000..ddbbb8ccc3 --- /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 ec2ad33968..c212da5f46 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", @@ -219,6 +222,8 @@ "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", "item.ragium.coal_dust": "Coal Dust", @@ -286,6 +291,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", @@ -505,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 851b2f367b..04fdab9d9f 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": "茶色の染料入りバケツ", @@ -219,6 +222,8 @@ "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": "石炭コークス", "item.ragium.coal_dust": "石炭の粉", @@ -286,6 +291,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": "紫色の染料入りバケツ", @@ -505,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/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 0000000000..bacfa2ba0e --- /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 0000000000..2c6108bb94 --- /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 0000000000..226eeeaf34 --- /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/cinnabar.json b/src/generated/resources/assets/ragium/models/item/cinnabar.json new file mode 100644 index 0000000000..bfc71375a0 --- /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/assets/ragium/models/item/cinnabar_dust.json b/src/generated/resources/assets/ragium/models/item/cinnabar_dust.json new file mode 100644 index 0000000000..c784cd3786 --- /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/assets/ragium/models/item/plate_mold.json b/src/generated/resources/assets/ragium/models/item/plate_mold.json new file mode 100644 index 0000000000..f5cbe489a9 --- /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/c/tags/item/dusts.json b/src/generated/resources/data/c/tags/item/dusts.json index f5010ba9a9..f3ef3685bd 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 0000000000..7fcb107e31 --- /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/c/tags/item/gems.json b/src/generated/resources/data/c/tags/item/gems.json index 413fe31acd..0280e59875 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 0000000000..388a861069 --- /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 0b48dd7751..3134d5e72b 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 0000000000..bfb51cbc9e --- /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 0000000000..d15249702f --- /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 9b39da6b74..0a19557675 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 0000000000..67a0a55a79 --- /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 0000000000..52e803bc53 --- /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 e1c1082b37..e350d47e6f 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 5d37d92e20..e6693df832 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 3e87458748..5bd077b783 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 a197d2a7ee..87bb245daa 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 718f97957e..b46709cb7b 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 fd6dedcc8c..3dd1298c1c 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 172485f042..0f5e9c791d 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 0000000000..d0a7ab0d99 --- /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 0000000000..26b9971ba0 --- /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 26a5acce8a..29114498e9 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 0000000000..169ecf7c54 --- /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 0000000000..95fdfe4b01 --- /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/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 213b2f1013..0000000000 --- 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 ad4df79a21..0000000000 --- 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 e44843093c..0000000000 --- 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 415b90086d..0000000000 --- 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/recipe/alloying/coal_from_ore.json b/src/generated/resources/data/ragium/recipe/alloying/coal_from_ore.json new file mode 100644 index 0000000000..4a0cfa65cc --- /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 0000000000..99d4287e2d --- /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 0000000000..8ded540fd8 --- /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 0000000000..9e719fb795 --- /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 0000000000..95f17f2b78 --- /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 0000000000..537b210ecd --- /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 0000000000..e52f144ee0 --- /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/quartz_from_ore.json b/src/generated/resources/data/ragium/recipe/alloying/quartz_from_ore.json new file mode 100644 index 0000000000..0da38fb56a --- /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 0000000000..4ff0b1d876 --- /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/crushing/niter_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/niter_dust_from_ore.json rename to src/generated/resources/data/ragium/recipe/crushing/cinnabar_dust_from_gem.json index 4a59c0803e..ac5b1eb1cf 100644 --- a/src/generated/resources/data/ragium/recipe/crushing/niter_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/niter" + "items": "#c:gems/cinnabar" }, "result": { - "count": 6, - "id": "ragium:niter_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/coal_dust_from_ore.json b/src/generated/resources/data/ragium/recipe/crushing/coal_dust_from_ore.json index 9cf8e481c5..408d9817d1 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 0000000000..e3c057ba6d --- /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 6e7413a863..59695b44f4 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 0000000000..32a4a8abcf --- /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 0000000000..e222276cde --- /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 f9313ab6fa..48aaf8aaed 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": "ragium:fluorite_dust" + } + ], "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 f1adad2e24..695961758b 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/crushing/sulfur_dust_from_ore.json b/src/generated/resources/data/ragium/recipe/crushing/sulfur_dust_from_ore.json deleted file mode 100644 index 11e0ac6ba9..0000000000 --- a/src/generated/resources/data/ragium/recipe/crushing/sulfur_dust_from_ore.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "type": "ragium:crushing", - "ingredient": { - "count": 1, - "items": "#c:ores/sulfur" - }, - "result": { - "count": 6, - "id": "ragium:sulfur_dust" - }, - "time": 200 -} \ 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 2c65e52129..bf9da432ae 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" @@ -8,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 daaef74cd1..779e3eb15c 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" @@ -8,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 35969ceb34..65a9902784 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" @@ -8,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 6e7c7cae95..bd1b63c989 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" @@ -8,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/glass.json b/src/generated/resources/data/ragium/recipe/freezing/glass.json index 9b07baf044..9c4090e994 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 0000000000..002ad208eb --- /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 e165673cbd..b9958784e7 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" @@ -8,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 818112cb04..85d998e2a8 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" @@ -8,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/honey_block.json b/src/generated/resources/data/ragium/recipe/freezing/honey_block.json index e1ab8a9f99..473ad78fa4 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 3ab079fba4..2d8569e582 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" @@ -8,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 98af8f55ae..0cf8e1eb85 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" @@ -8,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 b0b8af807b..e7c5befd65 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" @@ -8,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 3dfb3a9fff..398f931104 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" @@ -8,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/obsidian.json b/src/generated/resources/data/ragium/recipe/freezing/obsidian.json index 59f9099a2a..345b1afcc7 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 178d17b54f..3e1a00933e 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" @@ -8,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 4777263cb9..44d7fe749e 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" @@ -8,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/plastic_plate.json b/src/generated/resources/data/ragium/recipe/freezing/plastic_plate.json index 4b3ec7ed4c..8f60ecb5ae 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 fa5418935a..c248bc6baa 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" @@ -8,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 58d8176623..152bcd9d76 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" @@ -8,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/snow_block.json b/src/generated/resources/data/ragium/recipe/freezing/snow_block.json index f1604191d3..d66c10d335 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 0000000000..092c112530 --- /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 97893ca52a..fa837d4ee9 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 0000000000..237e17d1fa --- /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 0000000000..b522d48abc --- /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 0000000000..4c05d43bba --- /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 a722967e51..d852165a35 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" @@ -8,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 ba81530973..650e5aa7da 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" @@ -8,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/melting/molten_plastic.json b/src/generated/resources/data/ragium/recipe/melting/molten_plastic.json new file mode 100644 index 0000000000..aef841a520 --- /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/generated/resources/data/ragium/recipe/mixing/anti_rust_oil.json b/src/generated/resources/data/ragium/recipe/mixing/anti_rust_oil.json index 82cdb60e44..a914920317 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 0000000000..2759e4a94f --- /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 67e84e1740..3f168170c3 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 0000000000..03c5e2248f --- /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 8c0df6bbe7..bb76e9d9c7 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 0000000000..50dbe56688 --- /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 606e7cd722..d232fdfd8a 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 0000000000..d04f9ba48d --- /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 04e3d4c0d7..0a086fb486 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 7cb546b6f7..d002fe9075 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 0000000000..2a734f15dc --- /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 8bced950bc..ffe8e23e71 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 0000000000..d979fab0b3 --- /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 2221c135fd..d9dbca08da 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 7544fadc28..80a32958d0 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 f761179495..39f9a4b8fb 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 0000000000..bf3587b3b0 --- /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 6cbd2da9b1..04d69f11c2 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 0000000000..1fbab8c92e --- /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 a3915b7201..67aca08ba5 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 0000000000..d812c16e98 --- /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 415216b9cb..612d6442a6 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 0000000000..4618ef3f90 --- /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 c991e95185..c046916a4d 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 7a0dc9724f..aa0bf64a95 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 0000000000..8cdbbeaade --- /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 fd82736aa9..6892a84b4a 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 0000000000..2b250906ce --- /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 f3b5e826a1..89e0b6dde2 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 0000000000..667708c0f5 --- /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 9903c02f6d..50af063076 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 0000000000..33e826686c --- /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 0aafc5bbf7..f622e4479e 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 0000000000..941802095a --- /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 9e56c0fab3..c1dc0e268a 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 0000000000..e4886cbd34 --- /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 2ae1e070ec..46eb467f6d 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/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 0000000000..e5a42f6724 --- /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 0000000000..4a6ae439bd --- /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 0000000000..59fcadcffb --- /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 0000000000..63287295bd --- /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 0000000000..888201e804 --- /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 a03c8b09d4..0000000000 --- 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 2b754b7dd2..0000000000 --- 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 75e0bea94f..0000000000 --- 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/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 38ff1558e3..0000000000 --- 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 728d1f14be..0000000000 --- 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 ff9a3337c3..0000000000 --- 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/molds.json b/src/generated/resources/data/ragium/tags/item/molds.json new file mode 100644 index 0000000000..afd59a3a08 --- /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/data/ragium/tags/item/smelting_fluxes.json b/src/generated/resources/data/ragium/tags/item/smelting_fluxes.json new file mode 100644 index 0000000000..bbcf8cdb61 --- /dev/null +++ b/src/generated/resources/data/ragium/tags/item/smelting_fluxes.json @@ -0,0 +1,8 @@ +{ + "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/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 4e7886c2f7..0000000000 --- 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 5d2369155a..0000000000 --- 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 4e83427cfa..0000000000 --- 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 2694d9bb42..0000000000 --- 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 b622cbbc67..0000000000 --- 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 807f6e8ab5..0000000000 --- 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 e187673884..5cd3e810bc 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", @@ -240,6 +243,8 @@ "chemical_machine_parts", "chemical_reactor", "chlorine_bucket", + "cinnabar", + "cinnabar_dust", "circuit_board", "coal_coke", "coal_coke_block", @@ -335,6 +340,7 @@ "pitch_coke_block", "planter", "plastic_plate", + "plate_mold", "potion_bucket", "potion_tank", "precision_assembler", @@ -395,6 +401,9 @@ "wood_tar_bucket", "yellow_dye_bucket" ], + "minecraft:loot_condition_type": [ + "block_set" + ], "minecraft:menu": [ "block" ], @@ -457,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" diff --git a/src/lib/kotlin/hiiragi283/lib/data/loot/HTGlobalLootModifierProvider.kt b/src/lib/kotlin/hiiragi283/lib/data/loot/HTGlobalLootModifierProvider.kt index c365c590a8..cdc1f77317 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 0000000000..63f818b096 --- /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 0000000000..59eefe3656 --- /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 0000000000..ed0f82dfec --- /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/lib/data/recipe/builder/HTItemAndFluidToRecipeBuilder.kt b/src/lib/kotlin/hiiragi283/lib/data/recipe/builder/HTItemAndFluidToRecipeBuilder.kt index f28ad7d2c0..b272bf8a5c 100644 --- a/src/lib/kotlin/hiiragi283/lib/data/recipe/builder/HTItemAndFluidToRecipeBuilder.kt +++ b/src/lib/kotlin/hiiragi283/lib/data/recipe/builder/HTItemAndFluidToRecipeBuilder.kt @@ -33,9 +33,8 @@ 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() 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/data/recipe/builder/HTTripleItemToItemRecipeBuilder.kt b/src/lib/kotlin/hiiragi283/lib/data/recipe/builder/HTTripleItemToItemRecipeBuilder.kt index a3b1ebf6bf..d166a47dc2 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 9a40fea329..e96da6015d 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 900374d298..eb1b2d3db1 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 dd0489f74f..1e8da1016f 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/lib/recipe/ingredient/HTItemCatalyst.kt b/src/lib/kotlin/hiiragi283/lib/recipe/ingredient/HTItemCatalyst.kt new file mode 100644 index 0000000000..8927ef272f --- /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/RagiumDataComponents.kt b/src/lib/kotlin/hiiragi283/ragium/api/data/RagiumDataComponents.kt index 02c84c37c5..daa07702d3 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/data/recipe/builder/RTFreezingRecipeBuilder.kt b/src/lib/kotlin/hiiragi283/ragium/api/data/recipe/builder/RTFreezingRecipeBuilder.kt new file mode 100644 index 0000000000..bbf22464d5 --- /dev/null +++ b/src/lib/kotlin/hiiragi283/ragium/api/data/recipe/builder/RTFreezingRecipeBuilder.kt @@ -0,0 +1,71 @@ +@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() + + operator fun Ingredient.unaryPlus() { + +HTItemCatalyst(this) + } + + inline fun ingredient(builderAction: HTFluidIngredientBuilder.() -> Unit) { + contract { + callsInPlace(builderAction, InvocationKind.EXACTLY_ONCE) + } + +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) + } + +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/RTMixingRecipeBuilder.kt b/src/lib/kotlin/hiiragi283/ragium/api/data/recipe/builder/RTMixingRecipeBuilder.kt new file mode 100644 index 0000000000..85cfd2ec97 --- /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 01cd1c8211..4dcc715204 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,9 +23,7 @@ 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 import hiiragi283.ragium.api.recipe.RTPyrolyzingRecipe import hiiragi283.ragium.api.recipe.RTRefiningRecipe @@ -113,13 +110,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 @@ -175,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/material/RagiumMaterial.kt b/src/lib/kotlin/hiiragi283/ragium/api/material/RagiumMaterial.kt index 4befeeb7ae..9d85042be1 100644 --- a/src/lib/kotlin/hiiragi283/ragium/api/material/RagiumMaterial.kt +++ b/src/lib/kotlin/hiiragi283/ragium/api/material/RagiumMaterial.kt @@ -69,16 +69,17 @@ 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 */ @@ -155,6 +156,11 @@ sealed interface RagiumMaterial : // Common + /** + * @since 26.1.8 + */ + CINNABAR("Cinnabar", "辰砂"), + /** * @since 26.1.7 */ diff --git a/src/lib/kotlin/hiiragi283/ragium/api/recipe/RTFreezingRecipe.kt b/src/lib/kotlin/hiiragi283/ragium/api/recipe/RTFreezingRecipe.kt index a83ddf3d9f..25db1728d5 100644 --- a/src/lib/kotlin/hiiragi283/ragium/api/recipe/RTFreezingRecipe.kt +++ b/src/lib/kotlin/hiiragi283/ragium/api/recipe/RTFreezingRecipe.kt @@ -1,23 +1,69 @@ 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 { +@JvmRecord +data 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/RTMixingRecipe.kt b/src/lib/kotlin/hiiragi283/ragium/api/recipe/RTMixingRecipe.kt index ed86d8e48e..e10337b8c6 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 bed76220f8..5562831054 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) @@ -77,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/lib/kotlin/hiiragi283/ragium/api/tag/RagiumTags.kt b/src/lib/kotlin/hiiragi283/ragium/api/tag/RagiumTags.kt index 6880e9da87..97e542fc49 100644 --- a/src/lib/kotlin/hiiragi283/ragium/api/tag/RagiumTags.kt +++ b/src/lib/kotlin/hiiragi283/ragium/api/tag/RagiumTags.kt @@ -76,12 +76,24 @@ data object RagiumTags { @JvmField val COKES: TagKey = create("cokes") + /** + * @since 26.1.8 + */ + @JvmField + val MOLDS: TagKey = create("molds") + /** * @since 26.1.7 */ @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/lib/kotlin/hiiragi283/ragium/api/text/HTItemTooltip.kt b/src/lib/kotlin/hiiragi283/ragium/api/text/HTItemTooltip.kt new file mode 100644 index 0000000000..7fef081b89 --- /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 908a37648b..4cc03e09df 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/libClient/kotlin/hiiragi283/lib/integration/jei/HTJeiDrawables.kt b/src/libClient/kotlin/hiiragi283/lib/integration/jei/HTJeiDrawables.kt index 706ed014dd..34f36f8671 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 169ae3030a..0000000000 --- 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 9d73e17be1..66633ba725 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 defa8cd861..3f3efbe7c3 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 acec6253ab..b046daf447 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/HTFluidToItemAndFluidRecipeCategory.kt b/src/libClient/kotlin/hiiragi283/lib/integration/jei/category/HTFluidToItemAndFluidRecipeCategory.kt deleted file mode 100644 index a3f1a0b005..0000000000 --- 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/HTHolderRecipeCategory.kt b/src/libClient/kotlin/hiiragi283/lib/integration/jei/category/HTHolderRecipeCategory.kt index f991bd7e76..1cde0dd9c6 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 85f68b30e1..aa69a4c132 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 297c56d54a..5248452919 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 8ca08995c9..52fc1766b9 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/HTItemToItemAndFluidRecipeCategory.kt b/src/libClient/kotlin/hiiragi283/lib/integration/jei/category/HTItemToItemAndFluidRecipeCategory.kt deleted file mode 100644 index 9b413678e6..0000000000 --- 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 72e3111ac7..f043dfc21c 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 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 HTSingleRecipeCategory>( - guiHelper: IGuiHelper, - recipeType: HTHolderJeiRecipeType, +abstract class HTSingleRecipeCategory>( + 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 new file mode 100644 index 0000000000..9faea0bf2d --- /dev/null +++ b/src/libClient/kotlin/hiiragi283/lib/integration/jei/category/HTSingleToItemAndFluidRecipeCategory.kt @@ -0,0 +1,94 @@ +package hiiragi283.lib.integration.jei.category + +import com.mojang.serialization.MapCodec +import hiiragi283.lib.gui.HTBackgroundType +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 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.recipe.IFocusGroup +import net.minecraft.world.item.crafting.RecipeType + +/** + * @author Hiiragi Tsubasa + * @since 26.1.8 + */ +abstract class HTSingleToItemAndFluidRecipeCategory>( + recipeType: HTRecipeHolderType, + recipeType1: RecipeType<*>, + icon: IDrawable, + codec: MapCodec +) : HTHolderRecipeCategory(recipeType, recipeType1, icon, 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( + 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) + } + } + + // ItemTo // + + /** + * @author Hiiragi Tsubasa + * @since 26.1.8 + */ + 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 5a53d98d0d..1d0c5e315d 100644 --- a/src/libClient/kotlin/hiiragi283/lib/integration/jei/category/HTTripleItemToRecipeCategory.kt +++ b/src/libClient/kotlin/hiiragi283/lib/integration/jei/category/HTTripleItemToRecipeCategory.kt @@ -2,27 +2,29 @@ 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) { - // input + // inputs setPrimaryInput( builder .addInputSlot(getPosition(0), getPosition(0)) @@ -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) } diff --git a/src/main/kotlin/hiiragi283/ragium/common/Ragium.kt b/src/main/kotlin/hiiragi283/ragium/common/Ragium.kt index 69e56a77eb..20200d9fc8 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/RagiumCommon.kt b/src/main/kotlin/hiiragi283/ragium/common/RagiumCommon.kt index 18286f8d28..2859bec48e 100644 --- a/src/main/kotlin/hiiragi283/ragium/common/RagiumCommon.kt +++ b/src/main/kotlin/hiiragi283/ragium/common/RagiumCommon.kt @@ -124,14 +124,12 @@ 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()) 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/HTFreezerBlockEntity.kt b/src/main/kotlin/hiiragi283/ragium/common/block/entity/machine/HTFreezerBlockEntity.kt index 3028074667..8a7ce48f4c 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 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 b5a6932b61..754e793451 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 diff --git a/src/main/kotlin/hiiragi283/ragium/common/item/RagiumItems.kt b/src/main/kotlin/hiiragi283/ragium/common/item/RagiumItems.kt index ba0377208a..914ae15c81 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 @@ -75,6 +78,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 @@ -222,6 +226,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 @@ -258,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) @@ -294,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) } } 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 0000000000..88bc58e940 Binary files /dev/null and b/src/main/resources/assets/ragium/textures/item/ball_mold.png differ 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 0000000000..92e34a3e65 Binary files /dev/null and b/src/main/resources/assets/ragium/textures/item/blank_mold.png differ 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 0000000000..0da2f2847c Binary files /dev/null and b/src/main/resources/assets/ragium/textures/item/block_mold.png differ 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 0000000000..6600b777ec Binary files /dev/null and b/src/main/resources/assets/ragium/textures/item/cinnabar.png differ 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 0000000000..ed830e7094 Binary files /dev/null and b/src/main/resources/assets/ragium/textures/item/cinnabar_dust.png differ 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 0000000000..e05f9e5767 Binary files /dev/null and b/src/main/resources/assets/ragium/textures/item/plate_mold.png differ